mapa-library-ui 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/fesm2022/mapa-library-ui-src-lib-components-benchmarking.mjs +6 -6
  2. package/fesm2022/mapa-library-ui-src-lib-components-breadcrumb.mjs +3 -3
  3. package/fesm2022/mapa-library-ui-src-lib-components-button-icon.mjs +3 -3
  4. package/fesm2022/mapa-library-ui-src-lib-components-button.mjs +3 -3
  5. package/fesm2022/mapa-library-ui-src-lib-components-capability.mjs +72 -72
  6. package/fesm2022/mapa-library-ui-src-lib-components-chart.mjs +24 -24
  7. package/fesm2022/mapa-library-ui-src-lib-components-checkbox.mjs +3 -3
  8. package/fesm2022/mapa-library-ui-src-lib-components-datepicker-range.mjs +6 -6
  9. package/fesm2022/mapa-library-ui-src-lib-components-datepicker.mjs +12 -12
  10. package/fesm2022/mapa-library-ui-src-lib-components-dialog.mjs +16 -16
  11. package/fesm2022/mapa-library-ui-src-lib-components-dialog.mjs.map +1 -1
  12. package/fesm2022/mapa-library-ui-src-lib-components-dropdown-tree.mjs +24 -24
  13. package/fesm2022/mapa-library-ui-src-lib-components-dropdown.mjs +21 -21
  14. package/fesm2022/mapa-library-ui-src-lib-components-empty.mjs +9 -9
  15. package/fesm2022/mapa-library-ui-src-lib-components-filters.mjs +36 -36
  16. package/fesm2022/mapa-library-ui-src-lib-components-form.mjs +48 -48
  17. package/fesm2022/mapa-library-ui-src-lib-components-group-report.mjs +3 -3
  18. package/fesm2022/mapa-library-ui-src-lib-components-icon.mjs +3 -3
  19. package/fesm2022/mapa-library-ui-src-lib-components-input.mjs +18 -18
  20. package/fesm2022/mapa-library-ui-src-lib-components-menu.mjs +3 -3
  21. package/fesm2022/mapa-library-ui-src-lib-components-nav-list.mjs +3 -3
  22. package/fesm2022/mapa-library-ui-src-lib-components-radio-button.mjs +3 -3
  23. package/fesm2022/mapa-library-ui-src-lib-components-report-item.mjs +3 -3
  24. package/fesm2022/mapa-library-ui-src-lib-components-scale-parameterization.mjs +69 -69
  25. package/fesm2022/mapa-library-ui-src-lib-components-scale.mjs +66 -66
  26. package/fesm2022/mapa-library-ui-src-lib-components-slide-toggle.mjs +3 -3
  27. package/fesm2022/mapa-library-ui-src-lib-components-svg-icon.mjs +9 -9
  28. package/fesm2022/mapa-library-ui-src-lib-components-table.mjs +26 -26
  29. package/fesm2022/mapa-library-ui-src-lib-components-table.mjs.map +1 -1
  30. package/fesm2022/mapa-library-ui-src-lib-components-tag.mjs +3 -3
  31. package/fesm2022/mapa-library-ui-src-lib-components-textarea.mjs +12 -12
  32. package/fesm2022/mapa-library-ui-src-lib-components-tooltip.mjs +6 -6
  33. package/fesm2022/mapa-library-ui-src-lib-components-warning.mjs +3 -3
  34. package/fesm2022/mapa-library-ui-src-lib-core-guards-authorize-guard.mjs +3 -3
  35. package/fesm2022/mapa-library-ui-src-lib-core-services.mjs +3 -3
  36. package/fesm2022/mapa-library-ui.mjs +168 -168
  37. package/fesm2022/mapa-library-ui.mjs.map +1 -1
  38. package/mapa-library-ui-1.1.4.tgz +0 -0
  39. package/package.json +1 -1
  40. package/mapa-library-ui-1.1.3.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mapa-library-ui.mjs","sources":["../../../projects/mapa-library-ui/src/lib/core/elements/element-base.ts","../../../projects/mapa-library-ui/src/lib/core/elements/dropdown.ts","../../../projects/mapa-library-ui/src/lib/core/elements/dropdown-tree.ts","../../../projects/mapa-library-ui/src/lib/core/elements/datepicker.ts","../../../projects/mapa-library-ui/src/lib/core/elements/datepicker-range.ts","../../../projects/mapa-library-ui/src/lib/core/elements/input-text.ts","../../../projects/mapa-library-ui/src/lib/core/elements/radio-button.ts","../../../projects/mapa-library-ui/src/lib/core/elements/slide-toggle.ts","../../../projects/mapa-library-ui/src/lib/core/elements/textarea.ts","../../../projects/mapa-library-ui/src/lib/core/directives/mat-input-autosize.directive.ts","../../../projects/mapa-library-ui/src/lib/core/directives/custom-paginator.directive.ts","../../../projects/mapa-library-ui/src/lib/core/i18n/mapa-ui-texts.ts","../../../projects/mapa-library-ui/src/lib/core/services/mapa-i18n.service.ts","../../../projects/mapa-library-ui/src/lib/core/services/validation-message-resolver.service.ts","../../../projects/mapa-library-ui/src/lib/core/components/form-errors/form-errors.component.ts","../../../projects/mapa-library-ui/src/lib/core/components/form-errors/form-errors.component.html","../../../projects/mapa-library-ui/src/lib/core/services/html-sanitizer.service.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/safe-html.pipe.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/estados.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/utils.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/inscricaoestadual.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/placa.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/create.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/rg.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_mask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_create.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_validate.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/validate.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/createNumberMask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/mask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/index.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/name.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/saude.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/cpf.ts","../../../projects/mapa-library-ui/src/lib/components/benchmarking/src/benchmark-indicator/benchmark-indicator.component.ts","../../../projects/mapa-library-ui/src/lib/components/benchmarking/src/benchmark-indicator/benchmark-indicator.component.html","../../../projects/mapa-library-ui/src/lib/components/benchmarking/src/benchmark-chart.component.ts","../../../projects/mapa-library-ui/src/lib/components/benchmarking/src/benchmark-chart.component.html","../../../projects/mapa-library-ui/src/lib/components/breadcrumb/src/breadcrumb.component.ts","../../../projects/mapa-library-ui/src/lib/components/breadcrumb/src/breadcrumb.component.html","../../../projects/mapa-library-ui/src/lib/components/breadcrumb/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/button/src/button.component.ts","../../../projects/mapa-library-ui/src/lib/components/button/src/button.component.html","../../../projects/mapa-library-ui/src/lib/components/button/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/button-icon/src/button-icon.component.ts","../../../projects/mapa-library-ui/src/lib/components/button-icon/src/button-icon.component.html","../../../projects/mapa-library-ui/src/lib/components/button-icon/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/essentials/functions/indicator-helpers.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/essentials/consts/capability-classification.const.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/essentials/services/capability-classification.service.ts","../../../projects/mapa-library-ui/src/lib/components/tag/src/tag.component.ts","../../../projects/mapa-library-ui/src/lib/components/tag/src/tag.component.html","../../../projects/mapa-library-ui/src/lib/components/tag/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/tooltip/src/tooltip.enums.ts","../../../projects/mapa-library-ui/src/lib/components/tooltip/src/tooltip.component.ts","../../../projects/mapa-library-ui/src/lib/components/tooltip/src/tooltip.component.html","../../../projects/mapa-library-ui/src/lib/components/tooltip/src/tooltip.directive.ts","../../../projects/mapa-library-ui/src/lib/components/tooltip/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-dot/capability-dot.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-dot/capability-dot.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-expand/capability-expand.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-expand/capability-expand.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator/capability-indicator.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator/capability-indicator.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-interval/capability-interval.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-interval/capability-interval.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-interval-bar/capability-interval-bar.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-interval-bar/capability-interval-bar.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-indicator/capability-comparative-indicator.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-indicator/capability-comparative-indicator.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-chart/capability-comparative-chart.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-chart/capability-comparative-chart.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-header/capability-comparative-header.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-header/capability-comparative-header.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative/capability-comparative.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative/capability-comparative.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-detail/capability-detail.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-detail/capability-detail.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator-list/capability-indicator-list.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator-list/capability-indicator-list.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator-chart/capability-indicator-chart.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator-chart/capability-indicator-chart.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown/src/dropdown.component.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown/src/dropdown.component.html","../../../projects/mapa-library-ui/src/lib/components/dropdown/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/chart/src/chart.component.ts","../../../projects/mapa-library-ui/src/lib/components/chart/src/chart.component.html","../../../projects/mapa-library-ui/src/lib/components/chart/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/checkbox/src/checkbox.component.ts","../../../projects/mapa-library-ui/src/lib/components/checkbox/src/checkbox.component.html","../../../projects/mapa-library-ui/src/lib/components/checkbox/public-api.ts","../../../projects/mapa-library-ui/src/lib/core/utils/date.util.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker/src/datepicker.component.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker/src/datepicker.component.html","../../../projects/mapa-library-ui/src/lib/components/datepicker/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker-range/src/datepicker-range.component.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker-range/src/datepicker-range.component.html","../../../projects/mapa-library-ui/src/lib/components/datepicker-range/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/dialog/src/dialog.component.ts","../../../projects/mapa-library-ui/src/lib/components/dialog/src/dialog.component.html","../../../projects/mapa-library-ui/src/lib/components/dialog/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/src/dropdown.component.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/src/dropdown.component.html","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/empty/src/empty.component.ts","../../../projects/mapa-library-ui/src/lib/components/empty/src/empty.component.html","../../../projects/mapa-library-ui/src/lib/components/empty/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/input/src/input.component.ts","../../../projects/mapa-library-ui/src/lib/components/input/src/input.component.html","../../../projects/mapa-library-ui/src/lib/components/input/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/filters/src/filters.component.ts","../../../projects/mapa-library-ui/src/lib/components/filters/src/filters.component.html","../../../projects/mapa-library-ui/src/lib/components/filters/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/radio-button/src/radio-button.component.ts","../../../projects/mapa-library-ui/src/lib/components/radio-button/src/radio-button.component.html","../../../projects/mapa-library-ui/src/lib/components/radio-button/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/src/slide-toggle.component.ts","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/src/slide-toggle.component.html","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/textarea/src/textarea.component.ts","../../../projects/mapa-library-ui/src/lib/components/textarea/src/textarea.component.html","../../../projects/mapa-library-ui/src/lib/components/textarea/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/form/src/form.component.ts","../../../projects/mapa-library-ui/src/lib/components/form/src/form.component.html","../../../projects/mapa-library-ui/src/lib/components/form/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/group-report/src/group-report.component.ts","../../../projects/mapa-library-ui/src/lib/components/group-report/src/group-report.component.html","../../../projects/mapa-library-ui/src/lib/components/icon/src/icon.component.ts","../../../projects/mapa-library-ui/src/lib/components/icon/src/icon.component.html","../../../projects/mapa-library-ui/src/lib/components/icon/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/menu/src/menu.component.ts","../../../projects/mapa-library-ui/src/lib/components/menu/src/menu.component.html","../../../projects/mapa-library-ui/src/lib/components/menu/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/nav-list/src/nav-list.component.ts","../../../projects/mapa-library-ui/src/lib/components/nav-list/src/nav-list.component.html","../../../projects/mapa-library-ui/src/lib/components/nav-list/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/report-item/src/report-item.component.ts","../../../projects/mapa-library-ui/src/lib/components/report-item/src/report-item.component.html","../../../projects/mapa-library-ui/src/lib/components/report-item/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/scale/src/progressbar/progressbar.component.ts","../../../projects/mapa-library-ui/src/lib/components/scale/src/progressbar/progressbar.component.html","../../../projects/mapa-library-ui/src/lib/components/scale/src/scale.component.ts","../../../projects/mapa-library-ui/src/lib/components/scale/src/scale.component.html","../../../projects/mapa-library-ui/src/lib/components/scale/src/details/details.component.ts","../../../projects/mapa-library-ui/src/lib/components/scale/src/details/details.component.html","../../../projects/mapa-library-ui/src/lib/components/scale/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/svg-icon/src/svg-icon.component.ts","../../../projects/mapa-library-ui/src/lib/components/svg-icon/src/svg-icon.component.html","../../../projects/mapa-library-ui/src/lib/components/svg-icon/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/paginator_customization.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/table.component.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/table.component.html","../../../projects/mapa-library-ui/src/lib/components/table/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/warning/src/warning.component.ts","../../../projects/mapa-library-ui/src/lib/components/warning/src/warning.component.html","../../../projects/mapa-library-ui/src/lib/components/warning/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/scale-parameterization/src/scale-parameterization.component.ts","../../../projects/mapa-library-ui/src/lib/components/scale-parameterization/src/scale-parameterization.component.html","../../../projects/mapa-library-ui/src/public-api.ts","../../../projects/mapa-library-ui/src/mapa-library-ui.ts"],"sourcesContent":["import { EventEmitter } from \"@angular/core\";\nimport { ElementGroup } from \"../interfaces/element-group.interface\";\nimport { ElementOption, ElementTreeNode } from \"../interfaces/element-option.interface\";\nimport { ActionButton } from \"./action-button\";\nimport { ElementSearch } from \"./element-search\";\nimport { Errors } from \"./errors\";\nexport interface Status {\n label: string;\n}\n\nexport class ElementBase {\n value: string;\n key: string;\n label: string;\n required: boolean;\n order: number;\n controlType: string;\n type: string;\n placeholder?: string;\n readonly: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options: ElementOption[] | ElementGroup[];\n tree: ElementTreeNode[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength!: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n minDate?: string | Date | null;\n maxDate?: string | Date | null;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n openedChange?: EventEmitter<boolean>;\n\n constructor(\n options: {\n value?: string;\n key?: string;\n label?: string;\n required?: boolean;\n order?: number;\n controlType?: string;\n type?: string;\n placeholder?: string;\n readonly?: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options?: ElementOption[] | ElementGroup[];\n tree?: ElementTreeNode[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength?: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n minDate?: string | Date | null;\n maxDate?: string | Date | null;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n openedChange?: EventEmitter<boolean>;\n } = {}\n ) {\n this.value = options.value || \"\";\n this.key = options.key || \"\";\n this.label = options.label || \"\";\n this.required = !!options.required;\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType || \"\";\n this.type = options.type || \"\";\n this.placeholder = options.placeholder || \"\";\n this.readonly = options.readonly || false;\n this.hint = options.hint || \"\";\n this.prefix = options.prefix || \"\";\n this.suffix = options.suffix || \"\";\n this.autosize = options.autosize || false;\n this.autosizeMinWidth = options.autosizeMinWidth || \"212px\";\n this.autosizeMaxWidth = options.autosizeMaxWidth || \"400px\";\n this.autosizeMinRow = options.autosizeMinRow || 2;\n this.autosizeMaxRow = options.autosizeMaxRow || 5;\n this.options = options.options || [];\n this.tree = options.tree || [];\n this.multiple = options.multiple || false;\n this.search = options.search || undefined;\n this.maxLength = options.maxLength || null;\n this.errors = options.errors || undefined;\n this.actionButton = options.actionButton || undefined;\n this.mask = options.mask || undefined;\n this.autocomplete = options.autocomplete || \"\";\n this.clearValue =\n options.clearValue !== undefined ? options.clearValue : true;\n this.minDate = options.minDate || undefined;\n this.maxDate = options.maxDate || undefined;\n this.status = options.status || undefined;\n this.checkParent = options.checkParent || false;\n this.checkChildren = options.checkChildren || false;\n this.openedChange = options.openedChange || undefined;\n }\n}\n","import { ElementBase } from './element-base';\n\nexport class Dropdown extends ElementBase {\n override controlType = 'dropdown';\n}\n","import { ElementBase } from './element-base';\n\nexport class DropdownTree extends ElementBase {\n override controlType = 'dropdown-tree';\n}\n","import { ElementBase } from './element-base';\n\nexport class Datepicker extends ElementBase {\n override controlType = 'datepicker';\n}\n","import { ElementBase } from './element-base';\n\nexport class DatepickerRange extends ElementBase {\n override controlType = 'datepicker-range';\n}\n","import { ElementBase } from './element-base';\n\nexport class InputText extends ElementBase {\n override controlType = 'input';\n}\n","import { ElementBase } from './element-base';\n\nexport class RadioButton extends ElementBase {\n override controlType = 'radio-button';\n}\n","import { ElementBase } from './element-base';\n\nexport class SlideToggle extends ElementBase {\n override controlType = 'slide-toggle';\n}\n","import { ElementBase } from './element-base';\n\nexport class Textarea extends ElementBase {\n override controlType = 'textarea';\n}\n","/*\n* Originally from: https://github.com/anotherkitten/mat-input-autosize\n* @author: Ellie Larson (anotherkitten)\n*/\n\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n Input,\n Optional,\n Self,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgModel } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { fromEvent } from 'rxjs';\n\n@Directive({\n selector: '[matInputAutosize]',\n standalone: true,\n})\nexport class MatInputAutosizeDirective implements AfterViewInit {\n inputElement: HTMLInputElement;\n hiddenText!: Text;\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() matInputAutosizeMaxWidth?: string | null;\n @Input() matInputAutosizeMinWidth = '120px';\n @Input() matInputAutosizeFontStyle?: string | null;\n\n constructor(\n el: ElementRef<HTMLInputElement>,\n @Self() private childMatInput: MatInput,\n @Optional() @Self() private childNgModel: NgModel\n ) {\n this.inputElement = el.nativeElement;\n }\n\n ngAfterViewInit(): void {\n this.checkErrors();\n this.overwriteParentWidth();\n this.createHiddenTextContainer();\n this.setOwnStyles();\n this.subscribeToChanges();\n }\n\n checkErrors(): void {\n if (!(this.inputElement instanceof HTMLInputElement)) {\n throw new Error('matInputAutosize directive must be on an input element');\n }\n\n if (!this.childMatInput) {\n throw new Error(\n 'Element with matInputAutosize directive must also have the matInput directive'\n );\n }\n }\n\n overwriteParentWidth(): void {\n Object.assign((this.inputElement.parentNode as HTMLElement).style, {\n width: '100%',\n });\n }\n\n createHiddenTextContainer(): void {\n const textContainer = document.createElement('div');\n Object.assign(textContainer.style, {\n display: 'inline-block',\n 'max-width': this.matInputAutosizeMaxWidth || null,\n 'min-width': this.matInputAutosizeMinWidth,\n font: this.matInputAutosizeFontStyle || null,\n visibility: 'hidden',\n 'white-space': 'pre',\n });\n this.inputElement.parentNode?.appendChild(textContainer);\n\n this.hiddenText = document.createTextNode(' ');\n textContainer.appendChild(this.hiddenText);\n }\n\n setOwnStyles(): void {\n Object.assign(this.inputElement.style, {\n position: 'absolute',\n left: '0',\n });\n }\n\n subscribeToChanges(): void {\n if (this.childNgModel) {\n this.childNgModel.control.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => this.changeHiddenText(value));\n return;\n }\n\n fromEvent(this.inputElement, 'input')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeHiddenText(this.inputElement.value));\n }\n\n changeHiddenText = (newValue: unknown): void => {\n if (this.hiddenText) {\n this.hiddenText.data = `${newValue ?? ''} `;\n }\n };\n}\n\n","import {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Renderer2,\n SimpleChanges,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatPaginator } from \"@angular/material/paginator\";\nimport { map, startWith } from \"rxjs/operators\";\n\n@Directive({\n selector: \"[appBubblePagination]\",\n standalone: true,\n})\nexport class BubblePaginationDirective\n implements AfterViewInit, OnChanges\n{\n @Output() pageIndexChangeEmitter: EventEmitter<number> = new EventEmitter<number>();\n @Input() showFirstButton = true;\n @Input() showLastButton = true;\n @Input() renderButtonsNumber = 2;\n @Input() appCustomLength: number = 0;\n @Input() hideDefaultArrows = false;\n @Input() bubblePageIndex = 0;\n private dotsEndRef!: HTMLElement;\n private dotsStartRef!: HTMLElement;\n private bubbleContainerRef!: HTMLElement;\n private buttonsRef: HTMLElement[] = [];\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly matPag: MatPaginator,\n private elementRef: ElementRef,\n private ren: Renderer2\n ) {}\n\n ngAfterViewInit(): void {\n this.styleDefaultPagination();\n this.createBubbleDivRef();\n this.renderButtons();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.bubbleContainerRef) {\n return;\n }\n\n if (\n (!changes?.[\"appCustomLength\"]?.firstChange && changes?.[\"appCustomLength\"]) ||\n (!changes?.[\"bubblePageIndex\"]?.firstChange && changes?.[\"bubblePageIndex\"])\n ) {\n this.rebuildButtons();\n }\n }\n\n private renderButtons(): void {\n this.rebuildButtons();\n\n this.matPag.page\n .pipe(\n map((e) => [e.previousPageIndex ?? 0, e.pageIndex] as const),\n startWith([this.getActivePageIndex(), this.getActivePageIndex()] as const),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(([prev, curr]) => {\n this.updateButtonsOnPageEvent(prev, curr);\n });\n }\n\n private changeActiveButtonStyles(previousIndex: number, newIndex: number) {\n if (!this.buttonsRef.length) {\n return;\n }\n\n const previouslyActive = this.buttonsRef[previousIndex];\n const currentActive = this.buttonsRef[newIndex];\n\n try {\n this.ren.removeClass(previouslyActive, \"g-bubble__active\");\n this.ren.addClass(currentActive, \"g-bubble__active\");\n } catch {}\n\n this.buttonsRef.forEach((button) =>\n this.ren.setStyle(button, \"display\", \"none\")\n );\n\n const renderElements = this.renderButtonsNumber;\n const endDots = newIndex < this.buttonsRef.length - renderElements - 1;\n const startDots = newIndex - renderElements > 0;\n\n const firstButton = this.buttonsRef[0];\n const lastButton = this.buttonsRef[this.buttonsRef.length - 1];\n\n try {\n if (this.showLastButton) {\n this.ren.setStyle(this.dotsEndRef, \"display\", endDots ? \"block\" : \"none\");\n this.ren.setStyle(lastButton, \"display\", endDots ? \"flex\" : \"none\");\n }\n } catch {}\n\n try {\n if (this.showFirstButton) {\n this.ren.setStyle(\n this.dotsStartRef,\n \"display\",\n startDots ? \"block\" : \"none\"\n );\n this.ren.setStyle(firstButton, \"display\", startDots ? \"flex\" : \"none\");\n }\n } catch {}\n\n const startingIndex = startDots ? newIndex - renderElements : 0;\n const endingIndex = endDots\n ? newIndex + renderElements\n : this.buttonsRef.length - 1;\n\n for (let i = startingIndex; i <= endingIndex; i++) {\n const button = this.buttonsRef[i];\n this.ren.setStyle(button, \"display\", \"flex\");\n }\n }\n\n private styleDefaultPagination() {\n const nativeElement = this.elementRef.nativeElement;\n const previousButton = nativeElement.querySelector(\n \".mat-mdc-paginator-navigation-previous\"\n );\n const nextButtonDefault = nativeElement.querySelector(\n \".mat-mdc-paginator-navigation-next\"\n );\n\n if (this.hideDefaultArrows) {\n this.ren.setStyle(previousButton, \"display\", \"none\");\n this.ren.setStyle(nextButtonDefault, \"display\", \"none\");\n }\n }\n\n private createBubbleDivRef(): void {\n const actionContainer = this.elementRef.nativeElement.querySelector(\n \"div.mat-mdc-paginator-range-actions\"\n );\n const nextButtonDefault = this.elementRef.nativeElement.querySelector(\n \"button.mat-mdc-paginator-navigation-next\"\n );\n const pageRange = this.elementRef.nativeElement.querySelector(\n \"div.mat-mdc-paginator-range-label\"\n );\n\n this.bubbleContainerRef = this.ren.createElement(\"div\") as HTMLElement;\n this.ren.addClass(this.bubbleContainerRef, \"g-bubble-container\");\n if (actionContainer) {\n this.ren.addClass(actionContainer, \"custom-paginator-container\");\n }\n if (pageRange) {\n this.ren.addClass(pageRange, \"custom-paginator-counter\");\n }\n\n if (actionContainer) {\n this.ren.insertBefore(\n actionContainer,\n this.bubbleContainerRef,\n nextButtonDefault\n );\n }\n }\n\n private buildButtons(neededButtons: number): void {\n if (neededButtons <= 1) {\n return;\n }\n\n this.buttonsRef = [this.createButton(0)];\n this.dotsStartRef = this.createDotsElement();\n\n for (let index = 1; index < neededButtons - 1; index++) {\n this.buttonsRef = [...this.buttonsRef, this.createButton(index)];\n }\n\n this.dotsEndRef = this.createDotsElement();\n\n this.buttonsRef = [\n ...this.buttonsRef,\n this.createButton(neededButtons - 1),\n ];\n }\n\n private removeButtons(): void {\n if (!this.bubbleContainerRef) {\n return;\n }\n\n while (this.bubbleContainerRef.firstChild) {\n this.ren.removeChild(this.bubbleContainerRef, this.bubbleContainerRef.firstChild);\n }\n this.buttonsRef = [];\n }\n\n private createButton(i: number): HTMLElement {\n const bubbleButton = this.ren.createElement(\"div\");\n const text = this.ren.createText(String(i + 1));\n\n this.ren.addClass(bubbleButton, \"g-bubble\");\n this.ren.setStyle(bubbleButton, \"margin-right\", \"8px\");\n this.ren.appendChild(bubbleButton, text);\n\n this.ren.listen(bubbleButton, \"click\", () => {\n this.switchPage(i);\n });\n\n this.ren.appendChild(this.bubbleContainerRef, bubbleButton);\n this.ren.setStyle(bubbleButton, \"display\", \"none\");\n\n return bubbleButton;\n }\n\n private createDotsElement(): HTMLElement {\n const dotsEl = this.ren.createElement(\"span\");\n const dotsText = this.ren.createText(\"...\");\n\n this.ren.setStyle(dotsEl, \"font-size\", \"18px\");\n this.ren.setStyle(dotsEl, \"margin-right\", \"8px\");\n this.ren.setStyle(dotsEl, \"padding-top\", \"6px\");\n this.ren.setStyle(dotsEl, \"color\", \"#919191\");\n\n this.ren.appendChild(dotsEl, dotsText);\n this.ren.appendChild(this.bubbleContainerRef, dotsEl);\n this.ren.setStyle(dotsEl, \"display\", \"none\");\n\n return dotsEl;\n }\n\n private switchPage(i: number): void {\n const previousPageIndex = this.matPag.pageIndex;\n this.matPag.pageIndex = i;\n this.matPag.page.emit({\n previousPageIndex,\n pageIndex: i,\n pageSize: this.matPag.pageSize,\n length: this.matPag.length,\n });\n\n this.pageIndexChangeEmitter.emit(i);\n }\n\n private updateButtonsOnPageEvent(previousIndex: number, newIndex: number): void {\n const neededButtons = this.getNeededButtons();\n if (neededButtons === this.buttonsRef.length) {\n this.changeActiveButtonStyles(previousIndex, newIndex);\n return;\n }\n\n this.rebuildButtons();\n }\n\n private rebuildButtons(): void {\n const neededButtons = this.getNeededButtons();\n const activePageIndex = Math.min(this.getActivePageIndex(), Math.max(neededButtons - 1, 0));\n\n this.removeButtons();\n this.matPag.pageIndex = activePageIndex;\n\n if (neededButtons <= 1) {\n return;\n }\n\n this.buildButtons(neededButtons);\n this.changeActiveButtonStyles(activePageIndex, activePageIndex);\n }\n\n private getNeededButtons(): number {\n return Math.ceil(this.appCustomLength / this.matPag.pageSize);\n }\n\n private getActivePageIndex(): number {\n return Math.max(this.bubblePageIndex, this.matPag.pageIndex, 0);\n }\n}\n\n","import { InjectionToken, Provider } from \"@angular/core\";\n\nexport interface ValidationMessageContext {\n actualLength?: number;\n max?: number;\n min?: number;\n requiredLength?: number;\n}\n\nexport type ValidationTextResolver =\n | string\n | ((context?: ValidationMessageContext) => string);\n\nexport interface MapaUiTexts {\n common: {\n selectAll: string;\n };\n filters: {\n clear: string;\n submit: string;\n };\n datepicker: {\n startDatePlaceholder: string;\n endDatePlaceholder: string;\n };\n capability: {\n groupAverageTitle: string;\n individualAverageTitle: string;\n conceptTitle: string;\n resultTitle: string;\n positiveIndicatorsTitle: string;\n negativeIndicatorsTitle: string;\n riskIndicatorsTitle: string;\n precipitationRiskTitle: string;\n negligenceRiskTitle: string;\n negativeDirectionLabel: string;\n positiveDirectionLabel: string;\n };\n paginator: {\n itemsPerPage: string;\n nextPage: string;\n previousPage: string;\n rangeLabel: (page: number, pageSize: number, length: number) => string;\n showingRangeLabel: (\n page: number,\n pageSize: number,\n length: number\n ) => string;\n };\n table: {\n emptyTitle: string;\n emptySubtitle: string;\n };\n validation: {\n cnpj: ValidationTextResolver;\n cpf: ValidationTextResolver;\n email: ValidationTextResolver;\n max: ValidationTextResolver;\n maxLength: ValidationTextResolver;\n min: ValidationTextResolver;\n minLength: ValidationTextResolver;\n pattern: ValidationTextResolver;\n required: ValidationTextResolver;\n };\n}\n\nexport type PartialMapaUiTexts = Partial<{\n [K in keyof MapaUiTexts]: Partial<MapaUiTexts[K]>;\n}>;\n\nexport const MAPA_UI_TEXTS = new InjectionToken<PartialMapaUiTexts>(\n \"MAPA_UI_TEXTS\"\n);\n\nexport const MAPA_UI_DEFAULT_TEXTS: MapaUiTexts = {\n common: {\n selectAll: \"Selecionar todos\",\n },\n filters: {\n clear: \"Limpar filtros\",\n submit: \"Filtrar\",\n },\n datepicker: {\n startDatePlaceholder: \"Data inicial\",\n endDatePlaceholder: \"Data final\",\n },\n capability: {\n groupAverageTitle: \"Média geral do grupo\",\n individualAverageTitle: \"Média geral do indivíduo\",\n conceptTitle: \"Conceito\",\n resultTitle: \"Resultado\",\n positiveIndicatorsTitle: \"Indicadores positivos\",\n negativeIndicatorsTitle: \"Indicadores negativos\",\n riskIndicatorsTitle: \"Indicadores de risco\",\n precipitationRiskTitle: \"Risco de acidente por precipitação\",\n negligenceRiskTitle: \"Risco de acidente por negligência\",\n negativeDirectionLabel: \"Direção Negativa |\",\n positiveDirectionLabel: \"Direção Positiva |\",\n },\n paginator: {\n itemsPerPage: \"Itens por página\",\n nextPage: \"Próxima página\",\n previousPage: \"Página anterior\",\n rangeLabel: (page: number, pageSize: number, length: number) => {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${length}`;\n },\n showingRangeLabel: (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return \"Mostrando 0 - 0 de 0 item\";\n }\n\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n const itemLabel = length === 1 ? \"item\" : \"itens\";\n\n return `Mostrando ${startIndex + 1} - ${endIndex} de ${length} ${itemLabel}`;\n },\n },\n table: {\n emptyTitle: \"Nao foram encontrados resultados\",\n emptySubtitle: \"\",\n },\n validation: {\n cnpj: \"CNPJ inválido\",\n cpf: \"CPF inválido\",\n email: \"E-mail inválido\",\n max: (context?: ValidationMessageContext) =>\n `O valor máximo permitido é ${context?.max ?? \"\"}`.trim(),\n maxLength: (context?: ValidationMessageContext) =>\n `O máximo permitido é ${context?.requiredLength ?? \"\"} caracteres`.trim(),\n min: (context?: ValidationMessageContext) =>\n `O valor minimo permitido é ${context?.min ?? \"\"}`.trim(),\n minLength: (context?: ValidationMessageContext) =>\n `O mínimo permitido é ${context?.requiredLength ?? \"\"} caracteres`.trim(),\n pattern: \"Formato inválido\",\n required: \"Campo obrigatório\",\n },\n};\n\nexport function mergeMapaUiTexts(\n customTexts?: PartialMapaUiTexts | null\n): MapaUiTexts {\n return {\n common: {\n ...MAPA_UI_DEFAULT_TEXTS.common,\n ...(customTexts?.common ?? {}),\n },\n filters: {\n ...MAPA_UI_DEFAULT_TEXTS.filters,\n ...(customTexts?.filters ?? {}),\n },\n datepicker: {\n ...MAPA_UI_DEFAULT_TEXTS.datepicker,\n ...(customTexts?.datepicker ?? {}),\n },\n capability: {\n ...MAPA_UI_DEFAULT_TEXTS.capability,\n ...(customTexts?.capability ?? {}),\n },\n paginator: {\n ...MAPA_UI_DEFAULT_TEXTS.paginator,\n ...(customTexts?.paginator ?? {}),\n },\n table: {\n ...MAPA_UI_DEFAULT_TEXTS.table,\n ...(customTexts?.table ?? {}),\n },\n validation: {\n ...MAPA_UI_DEFAULT_TEXTS.validation,\n ...(customTexts?.validation ?? {}),\n },\n };\n}\n\nexport function provideMapaUiTexts(texts: PartialMapaUiTexts): Provider {\n return {\n provide: MAPA_UI_TEXTS,\n useValue: texts,\n };\n}\n","import { Inject, Injectable, Injector, Optional, inject, signal } from \"@angular/core\";\nimport { toObservable } from \"@angular/core/rxjs-interop\";\nimport {\n MAPA_UI_TEXTS,\n MapaUiTexts,\n PartialMapaUiTexts,\n ValidationMessageContext,\n ValidationTextResolver,\n mergeMapaUiTexts,\n} from \"../i18n/mapa-ui-texts\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class MapaI18nService {\n private readonly injector = inject(Injector);\n private readonly textsState = signal<MapaUiTexts>(mergeMapaUiTexts());\n\n readonly textsSignal = this.textsState.asReadonly();\n readonly texts$ = toObservable(this.textsSignal, { injector: this.injector });\n\n constructor(\n @Optional() @Inject(MAPA_UI_TEXTS) customTexts: PartialMapaUiTexts | null\n ) {\n if (customTexts) {\n this.textsState.set(mergeMapaUiTexts(customTexts));\n }\n }\n\n get texts(): MapaUiTexts {\n return this.textsState();\n }\n\n setTexts(texts: PartialMapaUiTexts): void {\n this.textsState.set(mergeMapaUiTexts(texts));\n }\n\n resolveValidationText(\n key: keyof MapaUiTexts[\"validation\"],\n context?: ValidationMessageContext\n ): string {\n return this.resolveText(this.texts.validation[key], context);\n }\n\n private resolveText(\n value: ValidationTextResolver,\n context?: ValidationMessageContext\n ): string {\n return typeof value === \"function\" ? value(context) : value;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AbstractControl, ValidationErrors } from \"@angular/forms\";\nimport { Errors } from \"../elements/errors\";\nimport { MapaI18nService } from \"./mapa-i18n.service\";\n\ntype ValidationKey =\n | \"required\"\n | \"minlength\"\n | \"maxlength\"\n | \"cpf\"\n | \"cnpj\"\n | \"email\"\n | \"pattern\"\n | \"min\"\n | \"max\";\n\ntype ErrorOverrides = Errors & {\n maxlength?: string;\n minlength?: string;\n};\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ValidationMessageResolverService {\n private readonly errorOrder: ValidationKey[] = [\n \"required\",\n \"minlength\",\n \"maxlength\",\n \"cpf\",\n \"cnpj\",\n \"email\",\n \"pattern\",\n \"min\",\n \"max\",\n ];\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n resolveFirstError(\n control?: AbstractControl | null,\n errors?: Errors\n ): string | null {\n const validationErrors = control?.errors;\n\n if (!validationErrors) {\n return null;\n }\n\n const firstErrorKey = this.errorOrder.find((key) => control?.hasError(key));\n\n if (!firstErrorKey) {\n return null;\n }\n\n return this.resolveErrorMessage(firstErrorKey, validationErrors, errors);\n }\n\n private resolveErrorMessage(\n errorKey: ValidationKey,\n validationErrors: ValidationErrors,\n errors?: Errors\n ): string {\n const errorOverrides = errors as ErrorOverrides | undefined;\n const customMessage = this.getCustomMessage(errorKey, errorOverrides);\n\n if (customMessage) {\n return customMessage;\n }\n\n const errorValue = validationErrors[errorKey];\n\n switch (errorKey) {\n case \"minlength\":\n return this.i18n.resolveValidationText(\"minLength\", errorValue);\n case \"maxlength\":\n return this.i18n.resolveValidationText(\"maxLength\", errorValue);\n case \"min\":\n return this.i18n.resolveValidationText(\"min\", errorValue);\n case \"max\":\n return this.i18n.resolveValidationText(\"max\", errorValue);\n default:\n return this.i18n.resolveValidationText(errorKey);\n }\n }\n\n private getCustomMessage(\n errorKey: ValidationKey,\n errors?: ErrorOverrides\n ): string | undefined {\n if (!errors) {\n return undefined;\n }\n\n switch (errorKey) {\n case \"minlength\":\n return errors.minLength ?? errors.minlength;\n case \"maxlength\":\n return errors.maxLength ?? errors.maxlength;\n default:\n return errors[errorKey];\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { Errors } from \"../../elements/errors\";\nimport { ValidationMessageResolverService } from \"../../services/validation-message-resolver.service\";\n\n@Component({\n selector: \"mapa-form-errors\",\n imports: [CommonModule, MatFormFieldModule],\n templateUrl: \"./form-errors.component.html\"\n})\nexport class MapaFormErrorsComponent {\n @Input() control?: AbstractControl | null;\n @Input() errors?: Errors;\n\n constructor(\n private readonly validationMessageResolver: ValidationMessageResolverService\n ) {}\n\n get message(): string | null {\n return this.validationMessageResolver.resolveFirstError(\n this.control,\n this.errors\n );\n }\n}\n","<span *ngIf=\"message\">\n {{ message }}\n</span>\n","import { Injectable, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nexport function sanitizeHtmlContent(\n sanitizer: DomSanitizer,\n value?: string | null\n): string {\n return sanitizer.sanitize(SecurityContext.HTML, value ?? \"\") ?? \"\";\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class HtmlSanitizerService {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n sanitize(value?: string | null): string {\n return sanitizeHtmlContent(this.sanitizer, value);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { HtmlSanitizerService } from \"../services/html-sanitizer.service\";\n\n@Pipe({\n name: \"safeHtml\",\n standalone: true,\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private readonly htmlSanitizer: HtmlSanitizerService) {}\n\n transform(value?: string | null): string {\n return this.htmlSanitizer.sanitize(value);\n }\n}\n","export const ESTADOS_SIGLA: any = ['ac', 'al', 'am', 'ap', 'ba', 'ce', 'df', 'es', 'go', 'ma',\n 'mg', 'ms', 'mt', 'pa', 'pb', 'pe', 'pi', 'pr', 'rj', 'rn', 'ro', 'rr', 'rs',\n 'sc', 'se', 'sp', 'to'\n];\n\n\nexport type EstadosType = 'ac'| 'al'| 'am'| 'ap'| 'ba'| 'ce'| 'df'| 'es'| 'go'| 'ma'|\n'mg'| 'ms'| 'mt'| 'pa'| 'pb'| 'pe'| 'pi'| 'pr'| 'rj'| 'rn'| 'ro'| 'rr'| 'rs'|\n'sc'| 'se'| 'sp'| 'to';\n\n\nexport const ESTADOS = [\n { name: 'Acre', shortname: 'AC', slug: 'acre' },\n { name: 'Alagoas', shortname: 'AL', slug: 'alagoas' },\n { name: 'Amapá', shortname: 'AP', slug: 'amapa' },\n { name: 'Amazonas', shortname: 'AM', slug: 'amazonas' },\n { name: 'Bahia', shortname: 'BA', slug: 'bahia' },\n { name: 'Ceará', shortname: 'CE', slug: 'ceara' },\n { name: 'Distrito Federal', shortname: 'DF', slug: 'distrito-federal' },\n { name: 'Espírito Santo', shortname: 'ES', slug: 'espirito-santo' },\n { name: 'Goiás', shortname: 'GO', slug: 'goias' },\n { name: 'Maranhão', shortname: 'MA', slug: 'maranhao' },\n { name: 'Mato Grosso', shortname: 'MT', slug: 'mato-grosso' },\n { name: 'Mato Grosso do Sul', shortname: 'MS', slug: 'mato-grosso-do-sul' },\n { name: 'Minas Gerais', shortname: 'MG', slug: 'minas-gerais' },\n { name: 'Pará', shortname: 'PA', slug: 'para' },\n { name: 'Paraíba', shortname: 'PB', slug: 'paraiba' },\n { name: 'Paraná', shortname: 'PR', slug: 'parana' },\n { name: 'Pernambuco', shortname: 'PE', slug: 'pernambuco' },\n { name: 'Piauí', shortname: 'PI', slug: 'piaui' },\n { name: 'Rio de Janeiro', shortname: 'RJ', slug: 'rio-de-janeiro' },\n { name: 'Rio Grande do Norte', shortname: 'RN', slug: 'rio-grande-do-norte' },\n { name: 'Rio Grande do Sul', shortname: 'RS', slug: 'rio-grande-do-sul' },\n { name: 'Rondônia', shortname: 'RO', slug: 'rondonia' },\n { name: 'Roraima', shortname: 'RR', slug: 'roraima' },\n { name: 'Santa Catarina', shortname: 'SC', slug: 'santa-catarina' },\n { name: 'São Paulo', shortname: 'SP', slug: 'sao-paulo' },\n { name: 'Sergipe', shortname: 'SE', slug: 'sergipe' },\n { name: 'Tocantins', shortname: 'TO', slug: 'tocantins' }\n]","import { ESTADOS_SIGLA } from './estados';\nimport { BigObject } from './interfaces';\n\nexport function isPresent(obj: any): boolean {\n return obj !== undefined && obj !== null;\n}\n\nexport function isArray(value: any) {\n return (Array.isArray && Array.isArray(value)) || value instanceof Array\n}\n\nexport function isString(value: any) {\n return typeof value === 'string' || value instanceof String\n}\n\nexport function isNumber(value: any) {\n return typeof value === 'number' && !isNaN(value); // && value.length === undefined\n}\n\nexport function isNil(value: any) {\n return typeof value === 'undefined' || value === null\n}\n\n\n\n\nconst strCaretTrap = '[]'\nexport function processCaretTraps(mask: any) {\n const indexes = []\n\n let indexOfCaretTrap: number\n while (indexOfCaretTrap = mask.indexOf(strCaretTrap), indexOfCaretTrap !== -1) { // eslint-disable-line\n indexes.push(indexOfCaretTrap)\n\n mask.splice(indexOfCaretTrap, 1)\n }\n\n return { maskWithoutCaretTraps: mask, indexes }\n}\n\nexport const modulo11 = (value: string) => {\n let mults: any = []\n let weightVal = 2\n for (let i = 0; i < value.length; i++) {\n // mults = [weightVal, ...mults]\n mults.push(weightVal)\n weightVal++\n if (weightVal > 9) weightVal = 2\n }\n\n mults = mults.reverse()\n\n let sum = 0\n for (let i = 0; i < value.length; i++) {\n sum += parseInt(value[i]) * mults[i]\n }\n const digit = (sum *10) % 11\n return digit\n}\n\nexport const modulo11Custom = (string: string, size: number, maxMult = string.length, by10 = true) => {\n if (!by10) size = 1\n for (let n = 1; n <= size; n++) {\n let soma = 0\n let mult = 2\n for (let i = string.length - 1; i >= 0; i--) {\n soma += (mult * parseInt(string.charAt(i)))\n mult++\n if (mult > maxMult) mult = 2\n }\n let dig\n if (by10) {\n dig = ((soma * 10) % 11) % 10;\n } else {\n dig = soma % 11;\n if (dig == 10) dig = 0;\n }\n string += dig;\n }\n return string.substr(string.length - size, size);\n}\n\n\nexport const modulo11a = (string: string, size: number, mod: number) => {\n let soma = 0;\n for (let i = 1; i <= size; i++) {\n // tslint:disable-next-line:radix\n soma = soma + parseInt(string.substring(i - 1, i)) * (mod - i);\n }\n let resto = (soma * 10) % 11;\n\n if ((resto === 10) || (resto === 11)) {\n resto = 0;\n }\n return resto;\n}\n\n/**\n * \n * @param input \n * ^ - Match line start\n (\\d) - match first digit and capture it in back reference #1 i.e. \\1\n (?!..) is a negative lookahead\n (?!\\1+$) means disallow the match if first digit is followed by same digit (captured group) till end.\n \\d{11}$ match next 11 digit followed by line end\n */\nexport function allNumbersAreSame(inputValue: string) {\n const input: string | void = getAllDigits(inputValue);\n if (typeof input === 'string') {\n const reg = new RegExp('^(\\\\d)(?!\\\\1+$)\\\\d{' + ((<string>input).length - 1) + '}$');\n return reg.test(input);\n }\n return false;\n}\n\nexport function getAllDigits(input: string) {\n if (!input.match) {\n input = input.toString();\n }\n const match = input.match(/\\d/g);\n if (match) {\n return match.join(\"\");\n }\n return '';\n}\n\nexport function getAllWords(input: string) {\n const match = input.match(/\\w/g);\n if (match) {\n return match.join(\"\");\n }\n return '';\n}\n\nexport function currencyToNumber(input: string | number) {\n if (typeof input === 'number') {\n return input;\n }\n input = input.replace(/ /g, '');\n if (input.indexOf('$') !== -1) {\n const vals = input.split('$');\n input = vals[1];\n }\n\n // Keeping just numbers . and ,\n input = input.replace(/[^0-9.,]+/, '');\n\n // eua format\n if (input.indexOf('.') === (input.length - 1) - 2) {\n input = input.replace(/\\,/g, '')\n }\n // br format\n else {\n input = input.replace(/\\./g, '').replace(',', '.');\n }\n\n return parseFloat(input);\n}\n\nexport function numberToCurrency(value: number) {\n return ' R$ ' + value.toFixed(2).replace('.', ',') + ' ';\n};\n\nexport function slugify(value: string) {\n\n return value.toString().toLowerCase()\n .replace(/[àÀáÁâÂãäÄÅåª]+/g, 'a') // Special Characters #1\n .replace(/[èÈéÉêÊëË]+/g, 'e') \t// Special Characters #2\n .replace(/[ìÌíÍîÎïÏ]+/g, 'i') \t// Special Characters #3\n .replace(/[òÒóÓôÔõÕöÖº]+/g, 'o') \t// Special Characters #4\n .replace(/[ùÙúÚûÛüÜ]+/g, 'u') \t// Special Characters #5\n .replace(/[ýÝÿŸ]+/g, 'y') \t\t// Special Characters #6\n .replace(/[ñÑ]+/g, 'n') \t\t\t// Special Characters #7\n .replace(/[çÇ]+/g, 'c') \t\t\t// Special Characters #8\n .replace(/[ß]+/g, 'ss') \t\t\t// Special Characters #9\n .replace(/[Ææ]+/g, 'ae') \t\t\t// Special Characters #10\n .replace(/[Øøœ]+/g, 'oe') \t\t// Special Characters #11\n .replace(/[%]+/g, 'pct') \t\t\t// Special Characters #12\n .replace(/\\s+/g, '-') \t\t// Replace spaces with -\n .replace(/[^\\w\\-]+/g, '') \t\t// Remove all non-word chars\n .replace(/\\-\\-+/g, '-') \t\t// Replace multiple - with single -\n .replace(/^-+/, '') \t\t// Trim - from start of text\n .replace(/-+$/, ''); \t\t// Trim - from end of text\n\n};\n/**\n * \n * @param string ex. 12345\n * @param size 11\n * @param fill 0\n * \n * Returns: 00000012345\n */\nexport function fillString(string: string, size: number, fill: string) {\n if (string.length < size) {\n const dif = size - string.length;\n for (let i = 0; i < dif; i++) {\n string = fill + string\n }\n }\n return string;\n}\n\n\nexport function randArray(array: string | any[]) {\n const index = randomNumber(0, array.length);\n return array[index];\n}\n\n\nexport function rand(length: number, ...ranges: any[]) {\n var str = \"\"; // the string (initialized to \"\")\n while (length--) { // repeat this length of times\n var ind = Math.floor(Math.random() * ranges.length); // get a random range from the ranges object\n var min = ranges[ind][0].charCodeAt(0), // get the minimum char code allowed for this range\n max = ranges[ind][1].charCodeAt(0); // get the maximum char code allowed for this range\n var c = Math.floor(Math.random() * (max - min + 1)) + min; // get a random char code between min and max\n str += String.fromCharCode(c); // convert it back into a character and append it to the string str\n }\n return str; // return str\n}\n\nexport function randomNumber(begin: number, end: number) {\n const dif = end - begin;\n const number = Math.floor(Math.random() * dif) + begin;\n return number;\n}\n\n\nexport function randomLetter(size = 1, onlyCapitals = false) {\n var text = \"\";\n let possible: any = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n if (onlyCapitals == false) {\n possible += \"abcdefghijklmnopqrstuvwxyz\";\n }\n possible = possible.split('');\n for (let i = 0; i < size; i++) {\n const pos = Math.floor(Math.random() * possible.length);\n text += possible[pos];\n }\n return text;\n}\n\n\nexport function randomLetterOrNumber(size = 1, onlyCapitals = false) {\n var text = \"\";\n let possible: any = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n if (onlyCapitals == false) {\n possible += \"abcdefghijklmnopqrstuvwxyz0123456789\";\n }\n possible = possible.split('');\n for (let i = 0; i < size; i++) {\n const pos = Math.floor(Math.random() * possible.length);\n text += possible[pos];\n }\n return text;\n}\n\nexport const randomEstadoSigla = () => {\n const total = ESTADOS_SIGLA.length;\n return ESTADOS_SIGLA[Math.floor(Math.random() * total)];\n}\n\nexport const CORES = [\"AMARELO\", \"AZUL\", \"BEGE\", \"BRANCA\", \"CINZA\", \"DOURADA\", \"GRENA\", \"LARANJA\", \"MARROM\", \"PRATA\",\n \"PRETA\", \"ROSA\", \"ROXA\", \"VERDE\", \"VERMELHA\", \"FANTASIA\"];\n\n\nexport function getSpecialProperty<TModel, TKey extends keyof TModel>(\n model: TModel,\n key: TKey\n) {\n return model[key];\n}\n\n/**\n * \n */\nexport const makeGenericFaker = (val: any, options: BigObject<Function> | null = null) => {\n return () => {\n if (!val.textMask || !val.textMask.map) {\n return '';\n }\n const newData = val.textMask.map((c: string | any[], index: number) => {\n if (options && options[index]) {\n return options[index]();\n }\n c = c.toString();\n if (c === /\\d/.toString()) {\n return Math.floor(Math.random() * 10).toString()\n } else if (c === /[A-Za-z]/.toString()) {\n return randomLetter(1).toString();\n } else if (c === /\\w/.toString()) {\n return randomLetterOrNumber(1).toString();\n } else if (c.indexOf('/[') === 0) { // /[1-9]/ ou /[5-9]/\n c = c.replace('/[', '').replace(']/', '');\n\n if (c.indexOf('-') > 0) {\n c = c.split('-');\n if (parseInt(c[1])) {\n const mult = c[1] - c[0];\n const plus = parseInt(c[0]);\n return (Math.floor(Math.random() * mult) + plus).toString();\n } else {\n return rand(1, [c[0], c[1]]);\n }\n } else if (c.indexOf('|') > 0) {\n c = c.split('|');\n const index = Math.floor(Math.random() * c.length);\n return c[index];\n }\n\n } else {\n return c;\n }\n });\n return newData.join('');\n };\n}\n\nconst utilsBr = {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty\n}\n\nexport default utilsBr;","import { allNumbersAreSame } from './utils';\nimport { BigObject, MaskType } from './interfaces';\n\n/**\n * BASED ON https://github.com/gammasoft/ie/\n */\n\n\nexport const generateInscricaoEstadual: BigObject<Function> = {\n ac: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n if (naoComecaCom(valor, '01')) {\n return false;\n }\n\n const base = primeiros(valor, 11);\n\n const primeiroDigito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n const segundoDigito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiroDigito));\n\n return base + primeiroDigito + segundoDigito;\n },\n\n am: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n al: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '24')) {\n return false;\n }\n\n // FORMAÇÃO: 24XNNNNND, sendo:\n // 24 – Código do Estado\n // X – Tipo de empresa (0-Normal, 3-Produtor Rural, 5-Substituta, 7- Micro-Empresa Ambulante, 8-Micro-Empresa)\n // NNNNN – Número da empresa\n // D – Dígito de verificação calculado pelo Módulo11, pêsos 2 à 9 da direita para a esquerda, exceto D\n // Exemplo: Número 2 4 0 0 0 0 0 4 D\n // 2 4 X N N N N N D\n // Fonte: http://www.sintegra.gov.br/Cad_Estados/cad_AL.html\n\n const base: any = primeiros(valor);\n\n // Pesos 9 8 7 6 5 4 3 2\n // SOMA = (2 * 4) + (3 * 0) + (4 * 0) + (5 * 0) + (6 * 0) + (7 * 0) + (8 * 4) + (9 * 2) = 58\n const soma = base.split('').reduce((acc: number, v: string, i: number) => {\n return acc + (9 - i) * Number(v)\n }, 0)\n // PRODUTO = 58 * 10 = 580\n const produto = soma * 10\n // RESTO = 580 – INTEIRO(580 / 11)*11 = 580 – (52*11) = 8\n const resto = produto - Math.floor(produto / 11) * 11\n // DÍGITO = 8 - Caso RESTO seja igual a 10 o DÍGITO será 0 (zero)\n const digito = resto === 10 ? 0 : resto\n return base + digito;\n },\n\n ap: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '03')) {\n return false;\n }\n\n const base: any = primeiros(valor);\n\n let p: number, d: number;\n\n if (entre(base, 3000001, 3017000)) {\n p = 5;\n d = 0;\n } else if (entre(base, 3017001, 3019022)) {\n p = 9;\n d = 1;\n } else {\n p = 0;\n d = 0;\n }\n\n const resto = mod(p + base, [2, 3, 4, 5, 6, 7, 8, 9, 1]);\n\n let digito: number;\n if (resto === 1) {\n digito = 0;\n } else if (resto === 0) {\n digito = d;\n } else {\n digito = 11 - resto;\n }\n\n return base + digito;\n },\n\n ba: function (valor: any) {\n if (tamanhoNaoE(valor, 8) && tamanhoNaoE(valor)) {\n return false;\n }\n\n const base: any = primeiros(valor, valor.length - 2);\n let primeiroDigito: number, segundoDigito: number;\n\n const segundoMultiplicador = serie(2, 7);\n const primeiroMultiplicador = serie(2, 8);\n\n let primeiroResto: number, segundoResto: number;\n let digitoComparacao = valor.substring(0, 1);\n\n if (tamanhoE(valor, 9)) {\n segundoMultiplicador.push(8);\n primeiroMultiplicador.push(9);\n digitoComparacao = valor.substring(1, 2);\n }\n\n if ('0123458'.split('').indexOf(digitoComparacao) !== -1) {\n segundoResto = mod(base, segundoMultiplicador, 10);\n segundoDigito = segundoResto === 0 ? 0 : 10 - segundoResto;\n\n primeiroResto = mod(base + segundoDigito, primeiroMultiplicador, 10);\n primeiroDigito = primeiroResto === 0 ? 0 : 10 - primeiroResto;\n } else {\n segundoResto = mod(base, segundoMultiplicador);\n segundoDigito = substracaoPor11SeMaiorQue2CasoContrario0(segundoResto);\n\n primeiroResto = mod(base + segundoDigito, primeiroMultiplicador);\n primeiroDigito = substracaoPor11SeMaiorQue2CasoContrario0(primeiroResto);\n }\n\n return base + primeiroDigito + segundoDigito;\n },\n\n ce: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n return calculoTrivialGenerate(valor);\n },\n\n df: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n if (naoComecaCom(valor, '07') && naoComecaCom(valor, '08')) {\n return false;\n }\n const base: any = primeiros(valor, 11);\n\n const primeiro = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n const segundo = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiro));\n return base + primeiro + segundo;\n },\n\n es: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n go: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n // Verifica os digitos iniciais do estado\n // Fonte: https://appasp.economia.go.gov.br/Legislacao/arquivos/Secretario/IN/IN_1535_2022.htm\n\n if (['10', '11', '15', '20'].indexOf(valor.substring(0, 2)) === -1) {\n return false;\n }\n\n const base: any = primeiros(valor);\n\n if (base === '11094402') {\n return valor.substr(8) === '1' || valor.substr(8) === '0';\n }\n\n const resto = mod(base);\n let digito: number;\n\n if (resto === 0) {\n digito = 0;\n } else if (resto === 1) {\n if (entre(base, 10103105, 10119997)) {\n digito = 1;\n } else {\n digito = 0;\n }\n } else {\n digito = 11 - resto;\n }\n\n return base + digito;\n },\n ma: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '12')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n mg: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n const base = primeiros(valor, 11);\n\n const baseComZero = valor.substring(0, 3) + '0' + valor.substring(3, 11);\n\n let i = 0;\n const produtorioLiteral = baseComZero.split('').reduceRight(function (anterior, atual) {\n if (i > [2, 1].length - 1) {\n i = 0;\n }\n\n return ([2, 1][i++] * parseInt(atual, 10)).toString() + anterior.toString();\n }, '').split('').reduce(function (anterior, atual) {\n return anterior + parseInt(atual, 10);\n }, 0);\n\n let primeiro: any = ((Math.floor(produtorioLiteral / 10) + 1) * 10) - produtorioLiteral;\n if (primeiro === 10) {\n primeiro = 0;\n }\n\n const segundo = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiro, serie(2, 11)));\n\n return base + primeiro + segundo;\n },\n\n ms: function (valor: any) {\n if (naoComecaCom(valor, '28')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n mt: function (valor: any) {\n if (tamanhoNaoE(valor, 11) && tamanhoNaoE(valor)) {\n return false;\n }\n\n const base = tamanhoE(valor, 11) ? valor.substring(0, 10) : primeiros(valor);\n return calculoTrivialGenerate(valor, base, true);\n },\n pa: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '15') && naoComecaCom(valor, '75')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n pb: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n pe: function (valor: any) {\n const base: any = valor.substring(0, valor.length - 2);\n\n const restoPrimeiro = mod(base);\n const primeiro = 11 - restoPrimeiro >= 10 ? 0 : 11 - restoPrimeiro;\n\n const restoSegundo = mod(base + primeiro);\n const segundo = 11 - restoSegundo >= 10 ? 0 : 11 - restoSegundo;\n\n return base + primeiro + segundo;\n },\n\n pi: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n\n pr: function (valor: any) {\n if (tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n const base = primeiros(valor);\n\n const restoPrimeiro = mod(base, serie(2, 7));\n const primeiro = 11 - restoPrimeiro >= 10 ? 0 : 11 - restoPrimeiro;\n\n const restoSegundo = mod(base + primeiro, serie(2, 7));\n const segundo = 11 - restoSegundo >= 10 ? 0 : 11 - restoSegundo;\n\n return base + primeiro + segundo;\n },\n rj: function (valor: any) {\n if (tamanhoNaoE(valor, 8)) {\n return false;\n }\n\n const base = primeiros(valor, 7);\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base, serie(2, 7)));\n\n return base + digito;\n },\n\n rn: function (valor: any) {\n if (tamanhoNaoE(valor) && tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n if (naoComecaCom(valor, '20')) {\n return false;\n }\n\n const base = valor.substring(0, valor.length - 1);\n\n const multiplicadores = serie(2, 9);\n if (tamanhoE(valor, 10)) {\n multiplicadores.push(10);\n }\n\n const resto = (mod(base, multiplicadores) * 10) % 11;\n const digito = resto === 10 ? 0 : resto;\n\n return base + digito;\n },\n ro: function (valor: any) {\n let base: any, digito: number, resultadoMod: number;\n\n if (tamanhoE(valor, 9)) {\n base = valor.substring(3, 8);\n digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return valor === valor.substring(0, 3) + base + digito;\n } else if (tamanhoE(valor, 14)) {\n base = primeiros(valor, 13);\n resultadoMod = mod(base);\n digito = resultadoMod <= 1 ? 1 : 11 - resultadoMod;\n\n return base + digito;\n } else {\n return false;\n }\n },\n rr: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '24')) {\n return false;\n }\n\n const base = primeiros(valor);\n const digito = mod(base, [8, 7, 6, 5, 4, 3, 2, 1], 9);\n\n return base + digito;\n },\n\n rs: function (valor: any) {\n if (tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n const base = primeiros(valor, 9);\n return calculoTrivialGenerate(valor, base, true);\n },\n\n sc: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n\n se: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n sp: function (valor: any) {\n valor = valor.toUpperCase();\n\n let segundaBase: string;\n\n if (valor.substr(0, 1) === 'P') {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n const base = valor.substring(1, 9);\n segundaBase = valor.substring(10, 13);\n const resto = mod(base, [10, 8, 7, 6, 5, 4, 3, 1]).toString();\n const digito = resto.length > 1 ? resto[1] : resto[0];\n\n return 'P' + base + digito + segundaBase;\n } else {\n if (tamanhoNaoE(valor, 12)) {\n return false;\n }\n\n const primeiraBase = primeiros(valor);\n segundaBase = valor.substring(9, 11);\n\n const primeiroResto = mod(primeiraBase, [10, 8, 7, 6, 5, 4, 3, 1]).toString();\n const primeiro = primeiroResto.length > 1 ? primeiroResto[1] : primeiroResto[0];\n\n const segundoResto = mod(primeiraBase + primeiro + segundaBase, serie(2, 10)).toString();\n const segundo = segundoResto.length > 1 ? segundoResto[1] : segundoResto[0];\n\n return primeiraBase + primeiro + segundaBase + segundo;\n }\n },\n\n to: function (valor: any) {\n if (tamanhoNaoE(valor) && tamanhoNaoE(valor, 11)) {\n return false;\n }\n\n let base: any;\n\n if (tamanhoE(valor, 11)) {\n if (['01', '02', '03', '99'].indexOf(valor.substring(2, 4)) === -1) {\n return false;\n }\n\n base = valor.substring(0, 2) + valor.substring(4, 10);\n } else {\n base = primeiros(valor);\n }\n\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return valor.substring(0, valor.length - 1) + digito;\n },\n};\n\n\n\n\nconst funcoes: BigObject<Function> = {\n ac: function (valor: any) {\n return valor === generateInscricaoEstadual['ac'](valor);\n },\n\n am: function (valor: any) {\n return valor === generateInscricaoEstadual['am'](valor);\n },\n\n al: function (valor: any) {\n return valor === generateInscricaoEstadual['al'](valor);\n },\n\n ap: function (valor: any) {\n return valor === generateInscricaoEstadual['ap'](valor);\n },\n\n ba: function (valor: any) {\n return valor === generateInscricaoEstadual['ba'](valor);\n },\n\n ce: function (valor: any) {\n return valor === generateInscricaoEstadual['ce'](valor);\n },\n\n df: function (valor: any) {\n return valor === generateInscricaoEstadual['df'](valor);\n },\n\n es: function (valor: any) {\n return valor === generateInscricaoEstadual['es'](valor);\n },\n go: function (valor: any) {\n return valor === generateInscricaoEstadual['go'](valor);\n },\n ma: function (valor: any) {\n return valor === generateInscricaoEstadual['ma'](valor);\n },\n\n mg: function (valor: any) {\n return valor === generateInscricaoEstadual['mg'](valor);\n },\n\n ms: function (valor: any) {\n return valor === generateInscricaoEstadual['ms'](valor);\n },\n mt: function (valor: any) {\n return valor === generateInscricaoEstadual['mt'](valor);\n },\n pa: function (valor: any) {\n return valor === generateInscricaoEstadual['pa'](valor);\n },\n\n pb: function (valor: any) {\n return valor === generateInscricaoEstadual['pb'](valor);\n },\n\n pe: function (valor: any) {\n return valor === generateInscricaoEstadual['pe'](valor);\n },\n\n pi: function (valor: any) {\n return valor === generateInscricaoEstadual['pi'](valor);\n },\n\n pr: function (valor: any) {\n return valor === generateInscricaoEstadual['pr'](valor);\n },\n rj: function (valor: any) {\n return valor === generateInscricaoEstadual['rj'](valor);\n },\n\n rn: function (valor: any) {\n return valor === generateInscricaoEstadual['rn'](valor);\n },\n ro: function (valor: any) {\n return valor === generateInscricaoEstadual['ro'](valor);\n },\n rr: function (valor: any) {\n return valor === generateInscricaoEstadual['rr'](valor);\n },\n\n rs: function (valor: any) {\n return valor === generateInscricaoEstadual['rs'](valor);\n },\n\n sc: function (valor: any) {\n return valor === generateInscricaoEstadual['sc'](valor);\n },\n\n se: function (valor: any) {\n return valor === generateInscricaoEstadual['se'](valor);\n },\n\n sp: function (valor: string | boolean) {\n return valor === generateInscricaoEstadual['sp'](valor);\n },\n\n to: function (valor: any) {\n return valor === generateInscricaoEstadual['to'](valor);\n },\n};\n\n\n\n\nexport function validate_inscricaoestadual(ie: string | Array<string>, estado: any) {\n if (eIndefinido(estado) || estado === null) {\n estado = '';\n }\n\n estado = estado.toLowerCase();\n\n if (estado !== '' && !(estado in funcoes)) {\n return new Error('estado não é válido');\n }\n\n if (eIndefinido(ie)) {\n return new Error('ie deve ser fornecida');\n }\n\n if (Array.isArray(ie)) {\n let retorno = true;\n ie.forEach(function (i) {\n if (!validate_inscricaoestadual(i, estado)) {\n retorno = false;\n }\n });\n return retorno;\n }\n\n if (typeof ie !== 'string') {\n return new Error('ie deve ser string ou array de strings');\n }\n\n if (!allNumbersAreSame(ie)) {\n return new Error('ie com todos dígitos iguais');\n }\n\n if (ie.match(/^ISENTO$/i)) {\n return true;\n }\n\n ie = ie.replace(/[\\.|\\-|\\/|\\s]/g, '');\n\n if (estado === '') {\n if (lookup(ie)) {\n return true;\n } else {\n return false;\n }\n }\n\n if (/^\\d+$/.test(ie) || estado === 'sp' || funcoes[estado]) {\n return funcoes[estado](ie);\n }\n\n\n return false;\n}\n\nexport const MASKSIE: BigObject<MaskType> = {\n ac: {\n text: '01.004.823/001-12',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n al: {\n text: '240000048',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n am: {\n text: '04.145.871-0',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n ap: {\n text: '240000048',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n ba: {\n text: '1234567-48',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numberLength = getSizeNumbers(userInput);\n if (!userInput || numberLength > 8) {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n }\n }\n },\n ce: {\n text: '06.000001-5',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n df: {\n text: '06 000001 123-55',\n textMask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n es: {\n text: '082.560.67-6',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n go: {\n text: '06.000.001-5',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n ma: {\n text: '12.104.376-2',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n mg: {\n text: '001.819.263/0048',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n ms: {\n text: '001819263',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n mt: {\n text: '0018192630-1',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pa: {\n text: '06-000001-5',\n textMask: [/\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pb: {\n text: '06000001-5',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pe: {\n text: '0192310-24',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n pi: {\n text: '19.301.656-7',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pr: {\n text: '19301656-78',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n rj: {\n text: '20.040.04-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n rn: {\n text: '20.040.040-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numberLength = getSizeNumbers(userInput);\n\n if (!userInput || numberLength > 9) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n },\n ro: {\n text: '101.62521-3',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n rr: {\n text: '24006628-1',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n rs: {\n text: '024/0440013',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n sc: {\n text: '271.234.563',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n se: {\n text: '27123456-3',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n sp: {\n text: '114.814.878.119',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n to: {\n text: '11 81 4878119',\n textMask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n};\n\nfunction getSizeNumbers(userInput: string) {\n const numbers: any = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n return numberLength\n}\n\nfunction eIndefinido(objeto: any) {\n return typeof objeto === typeof undefined;\n}\n\nfunction tamanhoNaoE(string: { length: number; }, tamanho = 9) {\n if (eIndefinido(tamanho)) {\n tamanho = 9;\n }\n\n return string.length !== tamanho;\n}\n\nfunction tamanhoE(string: any[], tamanho: number) {\n return !tamanhoNaoE(string, tamanho);\n}\n\nfunction serie(de: number, ate: number) {\n const resultado = [];\n\n while (de <= ate) {\n resultado.push(de++);\n }\n\n return resultado;\n}\n\nfunction primeiros(string: any, quantidade = 8) {\n if (eIndefinido(quantidade)) {\n quantidade = 8;\n }\n\n return string.substring(0, quantidade);\n}\n\nfunction substracaoPor11SeMaiorQue2CasoContrario0(valor: number) {\n return valor < 2 ? 0 : 11 - valor;\n}\n\nfunction mod(valor: string, multiplicadores = serie(2, 9), divisor = 11) {\n if (eIndefinido(divisor)) {\n divisor = 11;\n }\n\n if (eIndefinido(multiplicadores)) {\n multiplicadores = serie(2, 9);\n }\n\n let i = 0;\n\n return valor.split('').reduceRight(function (anterior: number, atual: string) {\n if (i > multiplicadores.length - 1) {\n i = 0;\n }\n\n return (multiplicadores[i++] * parseInt(atual, 10)) + anterior;\n }, 0) % divisor;\n}\n\nfunction calculoTrivialGenerate(valor: any, base: any = null, validarTamanho = false) {\n if (!validarTamanho && tamanhoNaoE(valor)) {\n return false;\n }\n if (eIndefinido(base)) {\n base = primeiros(valor);\n }\n if (!base) {\n base = primeiros(valor);\n }\n\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return base + digito;\n}\n\nfunction naoComecaCom(string: any, valor: string) {\n return string.substring(0, valor.length) !== valor;\n}\n\nfunction entre(valor: string | number, limiteInferior: number, limiteSuperior: number) {\n if (typeof valor === 'string') {\n valor = parseInt(valor, 10);\n }\n\n return valor >= limiteInferior && valor <= limiteSuperior;\n}\n\n\nfunction lookup(ie: any) {\n const resultado = [];\n\n for (const estado in funcoes) {\n if (funcoes[estado](ie)) {\n resultado.push(estado);\n }\n }\n\n if (tamanhoE(resultado, 0)) {\n return false;\n } else {\n return resultado;\n }\n}\n\n","\n\nexport const PLACAS_RANGE = [\n ['AAA0001', 'BEZ9999', 'PR', '02/1990'],\n ['BFA0001', 'GKI9999', 'SP', '10/1991'],\n ['GKJ0001', 'HOK9999', 'MG', '09/1991'],\n ['HOL0001', 'HQE9999', 'MA', '01/1992'],\n ['HQF0001', 'HTW9999', 'MS', '03/1992'],\n ['HTX0001', 'HZA9999', 'CE', '10/1992'],\n ['HZB0001', 'IAP9999', 'SE', '09/1993'],\n ['IAQ0001', 'JDO9999', 'RS', '03/1992'],\n ['JDP0001', 'JKR9999', 'DF', '04/1994'],\n ['JKS0001', 'JSZ9999', 'BA', '08/1993'],\n ['JTA0001', 'JWE9999', 'PA', '07/1993'],\n ['JWF0001', 'JXY9999', 'AM', '09/1993'],\n ['JXZ0001', 'KAU9999', 'MT', '09/1993'],\n ['KAV0001', 'KFC9999', 'GO', '05/1994'],\n ['KFD0001', 'KME9999', 'PE', '08/1994'],\n ['KMF0001', 'LVE9999', 'RJ', '05/1994'],\n ['LVF0001', 'LWQ9999', 'PI', '04/1996'],\n ['LWR0001', 'MMM9999', 'SC', '06/1996'],\n ['MMN0001', 'MOW9999', 'PB', '07/1996'],\n ['MOX0001', 'MTZ9999', 'ES', '12/1995'],\n ['MUA0001', 'MVK9999', 'AL', '08/1996'],\n ['MVL0001', 'MXG9999', 'TO', '11/1996'],\n ['MXH0001', 'MZM9999', 'RN', '06/1998'],\n ['MZN0001', 'NAG9999', 'AC', '06/1998'],\n ['NAH0001', 'NBA9999', 'RR', '07/1998'],\n ['NBB0001', 'NEH9999', 'RO', '07/1998'],\n ['NEI0001', 'NFB9999', 'AP', '09/1998'],\n ['NFC0001', 'NGZ9999', 'GO', '08/2003'],\n ['NHA0001', 'NHT9999', 'MA', '12/2006'],\n ['NHU0001', 'NIX9999', 'PI', '05/2007'],\n ['NIY0001', 'NJW9999', 'MT', '10/2007'],\n ['NJX0001', 'NLU9999', 'GO', '11/2007'],\n ['NLV0001', 'NMO9999', 'AL', '01/2008'],\n ['NMP0001', 'NNI9999', 'MA', '05/2008'],\n ['NNJ0001', 'NOH9999', 'RN', '07/2008'],\n ['NOI0001', 'NPB9999', 'AM', '07/2008'],\n ['NPC0001', 'NPQ9999', 'MT', '09/2008'],\n ['NPR0001', 'NQK9999', 'PB', '11/2008'],\n ['NQL0001', 'NRE9999', 'CE', '12/2008'],\n ['NRF0001', 'NSD9999', 'MS', '11/2009'],\n ['NSE0001', 'NTC9999', 'PA', '11/2009'],\n ['NTD0001', 'NTW9999', 'BA', '02/2010'],\n ['NTX0001', 'NUG9999', 'MT', '03/2010'],\n ['NUH0001', 'NUL9999', 'RR', '06/2010'],\n ['NUM0001', 'NVF9999', 'CE', '06/2010'],\n ['NVG0001', 'NVN9999', 'SE', '03/2010'],\n ['NVO0001', 'NWR9999', 'GO', '03/2010'],\n ['NWS0001', 'NXQ9999', 'MA', '07/2010'],\n ['NXR0001', 'NXT9999', 'AC', '05/2011'],\n ['NXU0001', 'NXW9999', 'PE', '07/2010'],\n ['NXX0001', 'NYG9999', 'MG', '10/2011'],\n ['NYH0001', 'NZZ9999', 'BA', '10/2010'],\n ['OAA0001', 'OAO9999', 'AM', '12/2010'],\n ['OAP0001', 'OBS9999', 'MT', '05/2011'],\n ['OBT0001', 'OCA9999', 'PA', '07/2011'],\n ['OCB0001', 'OCU9999', 'CE', '02/2011'],\n ['OCV0001', 'ODT9999', 'ES', '05/2011'],\n ['ODU0001', 'OEI9999', 'PI', '09/2011'],\n ['OEJ0001', 'OES9999', 'SE', '08/2011'],\n ['OET0001', 'OFH9999', 'PB', '04/2011'],\n ['OFI0001', 'OFW9999', 'PA', '03/2011'],\n ['OFX0001', 'OGG9999', 'PB', '06/2011'],\n ['OGH0001', 'OHA9999', 'GO', '04/2011'],\n ['OHB0001', 'OHK9999', 'AL', '09/2011'],\n ['OHL0001', 'OHW9999', 'RO', '11/2011'],\n ['OHX0001', 'OIQ9999', 'CE', '12/2011'],\n ['OIR0001', 'OJQ9999', 'MA', '01/2012'],\n ['OJR0001', 'OKC9999', 'RN', '04/2012'],\n ['OKD0001', 'OKH9999', 'SC', '02/2014'],\n ['OKI0001', 'OLG9999', 'BA', '10/2011'],\n ['OLH0001', 'OLN9999', 'TO', '02/2012'],\n ['OLO0001', 'OMH9999', 'MG', '03/2012'],\n ['OMI0001', 'OOF9999', 'GO', '04/2012'],\n ['OOG0001', 'OOU9999', 'MS', '02/2012'],\n ['OOV0001', 'ORC9999', 'MG', '06/2012'],\n ['ORD0001', 'ORM9999', 'AL', '01/2012'],\n ['ORN0001', 'OSV9999', 'CE', '07/2012'],\n ['OSW0001', 'OTZ9999', 'PA', '08/2012'],\n ['OUA0001', 'OUE9999', 'PI', '11/2012'],\n ['OUF0001', 'OVD9999', 'BA', '12/2012'],\n ['OVE0001', 'OVF9999', 'ES', '12/2012'],\n ['OVG0001', 'OVG9999', 'AC', '05/2013'],\n ['OVH0001', 'OVL9999', 'ES', '07/2013'],\n ['OVM0001', 'OVV9999', 'DF', '11/2013'],\n ['OVW0001', 'OVY9999', 'PI', '10/2013'],\n ['OVZ0001', 'OWG9999', 'RN', '06/2013'],\n ['OWH0001', 'OXK9999', 'MG', '10/2013'],\n ['OXL0001', 'OXL9999', 'RO', '11/2013'],\n ['OXM0001', 'OXM9999', 'AM', '11/2013'],\n ['OXN0001', 'OXN9999', 'AL', '11/2013'],\n ['OXO0001', 'OXO9999', 'PB', '11/2013'],\n ['OXP0001', 'OXP9999', 'AC', '12/2013'],\n ['OXQ0001', 'OXZ9999', 'MA', '04/2014'],\n ['OYA0001', 'OYC9999', 'TO', '11/2013'],\n ['OYD0001', 'OYK9999', 'ES', '12/2013'],\n ['OYL0001', 'OYZ9999', 'PE', '02/2014'],\n ['OZA0001', 'OZA9999', 'CE', '01/2014'],\n ['OZB0001', 'OZB9999', 'SE', '01/2014'],\n ['OZC0001', 'OZV9999', 'BA', '03/2014'],\n ['OZW0001', 'PBZ9999', 'DF', '05/2014'],\n ['PCA0001', 'PED9999', 'PE', '12/2014'],\n ['PEE0001', 'PFQ9999', 'PE', '09/2010'],\n ['PFR0001', 'PGK9999', 'PE', '07/2012'],\n ['PGL0001', 'PGU9999', 'PE', '10/2013'],\n ['PGV0001', 'PGZ9999', 'PE', '12/2014'],\n ['PHA0001', 'PHZ9999', 'AM', '06/2014'],\n ['PIA0001', 'PIZ9999', 'PI', '06/2014'],\n ['PJA0001', 'PLZ9999', 'BA', '10/2014'],\n ['PMA0001', 'POZ9999', 'CE', '06/2014'],\n ['PPA0001', 'PPZ9999', 'ES', '08/2014'],\n ['PQA0001', 'PRZ9999', 'GO', '03/2015'],\n ['PSA0001', 'PTZ9999', 'MA', '12/2014'],\n ['PUA0001', 'PZZ9999', 'MG', '05/2014'],\n ['QAA0001', 'QAZ9999', 'MS', '12/2014'],\n ['QBA0001', 'QCZ9999', 'MT', '05/2014'],\n ['QDA0001', 'QEZ9999', 'PA', '10/2014'],\n ['QFA0001', 'QFZ9999', 'PB', '05/2014'],\n ['QGA0001', 'QGZ9999', 'RN', '09/2014'],\n ['QHA0001', 'QJZ9999', 'SC', '05/2014'],\n ['QKA0001', 'QKM9999', 'TO', '11/2014'],\n ['QKN0001', 'QKZ9999', 'SE', '06/2014'],\n ['QLA0001', 'QLM9999', 'AL', '09/2015'],\n ['QLN0001', 'QLT9999', 'AP', '01/2015'],\n ['QLU0001', 'QLZ9999', 'AC', '08/2014'],\n ['QMA0001', 'QMP9999', 'SE', '03/2017'],\n ['QMQ0001', 'QQZ9999', 'MG', '07/2017'],\n ['QRA0001', 'QRA9999', 'RO', '11/2017'],\n ['QRB0001', 'QRZ9999', 'ES', '05/2018'],\n ['QSA0001', 'QSZ9999', 'PB', '04/2018'],\n ['QTA0001', 'QTB9999', 'RO', '08/2018'],\n ['QTC0001', 'RIN9999', 'BR', '00/0000'],\n ['RIO0001', 'RIO9999', 'RJ', '09/2018'],\n ['RLA0001', 'SAU9999', 'BR', '00/0000'],\n ['SAV0001', 'SAV9999', 'SP', '09/2009'],\n];\n\nexport const PLACAS_INVALID = { start: 'SAW0001', end: 'ZZZ9999' } // || Sequências ainda não definidas\n\nexport function validate_placa(placa: string | number, incluiMercosul?: boolean) {\n const placaClean = placa.toString()\n .replace(/-/g, '')\n .replace(/ /g, '')\n .toUpperCase();\n const regex = {\n legadoBR: /^[A-Z]{3}[0-9]{4}$/,\n mercosulBR: /^[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}$/,\n mercosulAR: /^[A-Z]{2}[0-9]{3}[A-Z]{2}$|^[A-Z]{1}[0-9]{3}[A-Z]{3}$/,\n mercosulBO: /^[A-Z]{2}[0-9]{5}$/,\n mercosulPY: /^[A-Z]{4}[0-9]{3}$|^[0-9]{3}[A-Z]{4}$/,\n mercosulUY: /^[A-Z]{3}[0-9]{4}$/,\n }\n const isLegadoBRInvalid =\n placaClean >= PLACAS_INVALID.start && placaClean <= PLACAS_INVALID.end;\n if ((regex.legadoBR.test(placaClean) && !isLegadoBRInvalid)\n || (regex.mercosulBR.test(placaClean))\n || (incluiMercosul && (\n (regex.mercosulAR.test(placaClean))\n || (regex.mercosulBO.test(placaClean))\n || (regex.mercosulPY.test(placaClean))\n || (regex.mercosulUY.test(placaClean))\n ))) {\n return true;\n }\n return false;\n}\n","import { ESTADOS_SIGLA } from './estados';\nimport { getAllDigits, fillString, modulo11Custom } from './utils';\n\n/**\n * \n * @param uf - UF do número da guia. Ex: 35(SP), 81(PE)\n * @param ano - ANO do número da guia. Ex: 2018, 2019\n * @param tipo - TIPO da guia. Aih = 1, APAC = 2\n */\nexport function create_aih(value: string | number | any[]) {\n value = getAllDigits(value.toString());\n if (value.length > 12) {\n value = value.toString().substr(0, value.length - 1);\n }\n const cod = parseInt(value);\n const calc = Math.ceil(cod - (cod / 11));\n const digito = calc.toString().substr(-1);\n return digito;\n}\n\nexport function create_certidao(value: string) {\n\n if (value.length > 30) {\n value = value.substring(0, value.length - 2);\n }\n let b1 = parseInt(value.slice(29));\n let b2 = parseInt(value.slice(28, 29));\n let b3 = parseInt(value.slice(27, 28));\n let b4 = parseInt(value.slice(26, 27));\n let b5 = parseInt(value.slice(25, 26));\n let b6 = parseInt(value.slice(24, 25));\n let b7 = parseInt(value.slice(23, 24));\n let b8 = parseInt(value.slice(22, 23));\n let b9 = parseInt(value.slice(21, 22));\n let b10 = parseInt(value.slice(20, 21));\n let b11 = parseInt(value.slice(19, 20));\n let b12 = parseInt(value.slice(18, 19));\n let b13 = parseInt(value.slice(17, 18));\n let b14 = parseInt(value.slice(16, 17));\n let b15 = parseInt(value.slice(15, 16));\n let b16 = parseInt(value.slice(14, 15));\n let b17 = parseInt(value.slice(13, 14));\n let b18 = parseInt(value.slice(12, 13));\n let b19 = parseInt(value.slice(11, 12));\n let b20 = parseInt(value.slice(10, 11));\n let b21 = parseInt(value.slice(9, 10));\n let b22 = parseInt(value.slice(8, 9));\n let b23 = parseInt(value.slice(7, 8));\n let b24 = parseInt(value.slice(6, 7));\n let b25 = parseInt(value.slice(5, 6));\n let b26 = parseInt(value.slice(4, 5));\n let b27 = parseInt(value.slice(3, 4));\n let b28 = parseInt(value.slice(2, 3));\n let b29 = parseInt(value.slice(1, 2));\n let b30 = parseInt(value.slice(0, 1));\n\n let certPriDig = (b1 * 9 + b2 * 8 + b3 * 7 + b4 * 6 + b5 * 5 + b6 * 4 + b7 * 3 + b8 * 2 + b9 * 1 + b10 * 0 + b11 * 10 + b12 * 9 + b13 * 8 + b14 * 7 + b15 * 6 + b16 * 5 + b17 * 4 + b18 * 3 + b19 * 2 + b20 * 1 + b21 * 0 + b22 * 10 + b23 * 9 + b24 * 8 + b25 * 7 + b26 * 6 + b27 * 5 + b28 * 4 + b29 * 3 + b30 * 2) % 11;\n if (certPriDig == 10) { certPriDig = 1; }\n let certSegDig = (certPriDig * 9 + b1 * 8 + b2 * 7 + b3 * 6 + b4 * 5 + b5 * 4 + b6 * 3 + b7 * 2 + b8 * 1 + b9 * 0 + b10 * 10 + b11 * 9 + b12 * 8 + b13 * 7 + b14 * 6 + b15 * 5 + b16 * 4 + b17 * 3 + b18 * 2 + b19 * 1 + b20 * 0 + b21 * 10 + b22 * 9 + b23 * 8 + b24 * 7 + b25 * 6 + b26 * 5 + b27 * 4 + b28 * 3 + b29 * 2 + b30 * 1) % 11;\n if (certSegDig == 10) { certSegDig = 1; }\n let certDV: any = certPriDig * 10 + certSegDig;\n if (certDV == 0) { certDV = \"00\"; }\n if (certDV > 0 && certDV < 10) { certDV = \"0\" + certDV; }\n\n return certDV.toString();\n}\n\nexport function create_cnhespelho(value: string) {\n let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 8, false);\n return v1\n}\n\nexport function create_renachestadual(value: string) {\n\n const state = value.substr(0, 2).toLowerCase()\n if (!ESTADOS_SIGLA.includes(state)) {\n return false\n }\n\n let digits = value.substr(2)\n digits = digits.replace(/[^\\d]/g, '');\n if (digits.length !== 9) {\n return false;\n }\n\n let v1 = modulo11Custom(digits.substr(0, digits.length - 1), 1, 11);\n return '' + v1\n}\n\n/**\n * \n * @param value \n * @returns \n */\nexport function create_renachseguranca(value: string) {\n value = value.replace(/[^\\d]+/g, '');\n if (value.length !== 11) {\n return false;\n }\n\n let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 11);\n return \"\" + v1;\n}\n\n/**\n * Dígito verificador da CNH não é mais o módulo 11 conforme últimas resoluções\n * @param value \n * @returns \n */\nexport function create_cnh(value: string) {\n value = value.replace(/[^\\d]+/g, '');\n\n if (value.length != 11 || value === '0') {\n return false;\n }\n // let v1 = modulo11Custom(value.substr(0, value.length - 2), 2);\n // if (v1 === '10') v1 = '00'\n let v1 = value.substr(-2)\n return v1;\n}\n\nexport function create_cnpj(cnpj: string) {\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n\n if (cnpj === '') {\n return false;\n }\n\n if (cnpj.length !== 14) {\n return false;\n }\n\n // Elimina CNPJs invalidos conhecidos\n if (cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999') {\n return false;\n }\n\n // Valida DVs\n let tamanho: number = cnpj.length - 2\n let numeros: any = cnpj.substring(0, tamanho);\n let soma: any = 0;\n let pos = tamanho - 7;\n for (let i = tamanho; i >= 1; i--) {\n soma += numeros.charAt(tamanho - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n\n }\n const resultados = [0, 0];\n resultados[0] = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n tamanho = tamanho + 1;\n numeros = cnpj.substring(0, tamanho);\n soma = 0;\n pos = tamanho - 7;\n for (let i = tamanho; i >= 1; i--) {\n soma += numeros.charAt(tamanho - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n resultados[1] = soma % 11 < 2 ? 0 : 11 - soma % 11;\n return resultados;\n}\n\nexport function create_cns(number: string) {\n number = getAllDigits(number);\n let somaInicial = 0;\n for (let i = 0; i < number.length - 1; i++) {\n somaInicial += parseInt(number[i]) * (15 - i);\n }\n let soma = somaInicial;\n let rest = 0;\n while (soma % 11 !== 0) {\n rest++;\n soma = somaInicial + (rest * 1)\n }\n return number.substr(-2, 1) + rest;\n}\n\nexport function create_cpf(strCPF: string) {\n strCPF = strCPF.replace(/[^\\d]+/g, '');\n if (strCPF === '00000000000') {\n return false;\n }\n\n // const r1 = modulo11(strCPF.substr(0, strCPF.length - 2))\n // const r2 = modulo11(strCPF.substr(0, strCPF.length - 2) + '' + r1)\n // const restos = [\n // r1, r2\n // ];\n\n const restoscustom = modulo11Custom(strCPF.substr(0, strCPF.length - 2), 2, 12);\n return restoscustom\n}\n\nexport function create_cartaocredito(number: string) {\n\n // if (number.length > 18) { alert(\"Erro. A rotina não abrange cartões\\ncom mais de 18 dígitos (fora o DV).\\nIntroduza 18 dígitos, no máximo.\"); }\n\n number = \"00000000000000000\" + number;\n number = number.slice(number.length - 18);\n\n let b1 = parseInt(number.slice(17));\n let b2 = parseInt(number.slice(16, 17));\n let b3 = parseInt(number.slice(15, 16));\n let b4 = parseInt(number.slice(14, 15));\n let b5 = parseInt(number.slice(13, 14));\n let b6 = parseInt(number.slice(12, 13));\n let b7 = parseInt(number.slice(11, 12));\n let b8 = parseInt(number.slice(10, 11));\n let b9 = parseInt(number.slice(9, 10));\n let b10 = parseInt(number.slice(8, 9));\n let b11 = parseInt(number.slice(7, 8));\n let b12 = parseInt(number.slice(6, 7));\n let b13 = parseInt(number.slice(5, 6));\n let b14 = parseInt(number.slice(4, 5));\n let b15 = parseInt(number.slice(3, 4));\n let b16 = parseInt(number.slice(2, 3));\n let b17 = parseInt(number.slice(1, 2));\n let b18 = parseInt(number.slice(0, 1));\n\n\n let ci17 = b1 * 2; if (ci17 > 9) { ci17 = ci17 - 9; }\n let ci1516 = b3 * 2; if (ci1516 > 9) { ci1516 = ci1516 - 9; }\n let ci1314 = b5 * 2; if (ci1314 > 9) { ci1314 = ci1314 - 9; }\n let ci1112 = b7 * 2; if (ci1112 > 9) { ci1112 = ci1112 - 9; }\n let ci910 = b9 * 2; if (ci910 > 9) { ci910 = ci910 - 9; }\n let ci78 = b11 * 2; if (ci78 > 9) { ci78 = ci78 - 9; }\n let ci56 = b13 * 2; if (ci56 > 9) { ci56 = ci56 - 9; }\n let ci34 = b15 * 2; if (ci34 > 9) { ci34 = ci34 - 9; }\n let ci12 = b17 * 2; if (ci12 > 9) { ci12 = ci12 - 9; }\n let ci1617 = b2;\n let ci1415 = b4;\n let ci1213 = b6;\n let ci1011 = b8;\n let ci89 = b10;\n let ci67 = b12;\n let ci45 = b14;\n let ci23 = b16;\n let ci01 = b18;\n\n let ccredDig = (ci1617 + ci1415 + ci1213 + ci1011 + ci89 + ci67 + ci45 + ci23 + ci01 + ci17 + ci1516 + ci1314 + ci1112 + ci910 + ci78 + ci56 + ci34 + ci12) % 10;\n ccredDig = 10 - ccredDig; if (ccredDig == 10) { ccredDig = 0; }\n\n return ccredDig;\n}\n\nexport function create_ect(number: string) {\n number = getAllDigits(number);\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let regEctDig = (b1 * 7 + b2 * 9 + b3 * 5 + b4 * 3 + b5 * 2 + b6 * 4 + b7 * 6 + b8 * 8) % 11;\n regEctDig = 11 - regEctDig;\n if (regEctDig == 11) { regEctDig = 5; }\n if (regEctDig == 10) { regEctDig = 0; }\n return regEctDig;\n}\n\nexport function create_pispasep(number: string) {\n\n number = getAllDigits(number);\n let nis = fillString(number, 11, '0');\n\n let d;\n let p = 2, c = 9;\n for (d = 0; c >= 0; c--, (p < 9) ? p++ : p = 2) {\n d += parseInt(nis[c]) * p;\n }\n\n const digit = (((10 * d) % 11) % 10);\n return digit;\n}\n\nexport function create_renavam(renavam: string) {\n let dig1 = 0;\n while (renavam.length < 11) {\n renavam = '0' + renavam;\n }\n\n dig1 = (renavam.charCodeAt(0) - 48) * 3 + (renavam.charCodeAt(1) - 48) * 2 + (renavam.charCodeAt(2) - 48) * 9 + (renavam.charCodeAt(3) - 48) * 8 +\n (renavam.charCodeAt(4) - 48) * 7 + (renavam.charCodeAt(5) - 48) * 6 + (renavam.charCodeAt(6) - 48) * 5 +\n (renavam.charCodeAt(7) - 48) * 4 + (renavam.charCodeAt(8) - 48) * 3 + (renavam.charCodeAt(9) - 48) * 2;\n dig1 = dig1 * 10;\n let resto = (dig1 % 11);\n if (resto === 10) {\n return 0;\n } else {\n return resto;\n }\n}\n\n\n\n/**\n * \n * Font: http://ghiorzi.org/index.htm\n * @param number \n */\nexport function create_processo(number: string) {\n number = getAllDigits(number);\n number = \"00000000000000000\" + number;\n number = number.slice(number.length - 18);\n\n let b1 = parseInt(number.slice(0, 1)) * 10000000000;\n let b2 = parseInt(number.slice(1, 2)) * 1000000000;\n let b3 = parseInt(number.slice(2, 3)) * 100000000;\n let b4 = parseInt(number.slice(3, 4)) * 10000000;\n let b5 = parseInt(number.slice(4, 5)) * 1000000;\n let b6 = parseInt(number.slice(5, 6)) * 100000;\n let b7 = parseInt(number.slice(6, 7)) * 10000;\n let b8 = parseInt(number.slice(7, 8)) * 1000;\n let b9 = parseInt(number.slice(8, 9)) * 100;\n let b10 = parseInt(number.slice(9, 10)) * 10;\n let b11 = parseInt(number.slice(10, 11));\n\n const proc1a11 = b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + b10 + b11;\n const resto1 = proc1a11 % 97;\n\n let b12 = parseInt(number.slice(11, 12)) * 1000000;\n let b13 = parseInt(number.slice(12, 13)) * 100000;\n let b14 = parseInt(number.slice(13, 14)) * 10000;\n let b15 = parseInt(number.slice(14, 15)) * 1000;\n let b16 = parseInt(number.slice(15, 16)) * 100;\n let b17 = parseInt(number.slice(16, 17)) * 10;\n let b18 = parseInt(number.slice(17));\n\n const proc12a18 = b12 + b13 + b14 + b15 + b16 + b17 + b18;\n const resto2 = (resto1 * 10000000 * 100 + proc12a18 * 100) % 97;\n\n let procJudDV: any = 98 - resto2;\n\n if (procJudDV < 10) {\n procJudDV = \"0\" + procJudDV;\n }\n\n let procJudCompl = b1 / 10000 + b2 / 10000 + b3 / 10000 + b4 / 10000 + b5 / 10000 + b6 / 10000 + b7 / 10000 + \"-\" + procJudDV + \".\" + b8 / 1000 + b9 / 100 + b10 / 10 + b11 + \".\" + b12 / 1000000 + \".\" + b13 / 100000 + b14 / 10000 + \".\" + b15 / 1000 + b16 / 100 + b17 / 10 + b18;\n\n procJudCompl = \"000000\" + procJudCompl;\n const result = procJudCompl.slice(procJudCompl.length - 25);\n return result;\n}\n\n\nexport function create_titulo_atual(titulo: string) {\n const tit = titulo;\n let dig1 = 0;\n let dig2 = 0;\n const tam = tit.length;\n const estado = tit.substr(tam - 4, 2);\n titulo = tit.substr(0, tam - 2);\n titulo = '000000000000' + titulo;\n titulo = titulo.substr(titulo.length - 11, titulo.length - 1);\n const exce = (estado === '01') || (estado === '02');\n dig1 = (titulo.charCodeAt(0) - 48) * 2 + (titulo.charCodeAt(1) - 48) * 9 + (titulo.charCodeAt(2) - 48) * 8 +\n (titulo.charCodeAt(3) - 48) * 7 + (titulo.charCodeAt(4) - 48) * 6 + (titulo.charCodeAt(5) - 48) * 5 +\n (titulo.charCodeAt(6) - 48) * 4 + (titulo.charCodeAt(7) - 48) * 3 + (titulo.charCodeAt(8) - 48) * 2;\n let resto = (dig1 % 11);\n if (resto === 0) {\n if (exce) {\n dig1 = 1;\n } else {\n dig1 = 0;\n }\n } else {\n if (resto === 1) {\n dig1 = 0;\n } else {\n dig1 = 11 - resto;\n }\n }\n dig2 = (titulo.charCodeAt(9) - 48) * 4 + (titulo.charCodeAt(10) - 48) * 3 + dig1 * 2;\n resto = (dig2 % 11);\n if (resto === 0) {\n if (exce) {\n dig2 = 1;\n } else {\n dig2 = 0;\n }\n } else {\n if (resto === 1) {\n dig2 = 0;\n } else {\n dig2 = 11 - resto;\n }\n }\n return dig1.toString() + dig2.toString();\n}\n\nexport function create_titulo(titNum: string) {\n titNum = getAllDigits(titNum);\n\n if (titNum.length > 11) {\n titNum = titNum.substr(0, 11);\n }\n\n titNum = \"00000000\" + titNum;\n titNum = titNum.slice(titNum.length - 11);\n\n let a1 = parseInt(titNum.slice(10));\n let a2 = parseInt(titNum.slice(9, 10));\n let a3 = parseInt(titNum.slice(8, 9));\n let a4 = parseInt(titNum.slice(7, 8));\n let a5 = parseInt(titNum.slice(6, 7));\n let a6 = parseInt(titNum.slice(5, 6));\n let a7 = parseInt(titNum.slice(4, 5));\n let a8 = parseInt(titNum.slice(3, 4));\n let a9 = parseInt(titNum.slice(2, 3));\n let a10 = parseInt(titNum.slice(1, 2));\n let a11 = parseInt(titNum.slice(0, 1));\n\n if (a2 * 10 + a1 == 0 || a2 * 10 + a1 > 28) {\n throw new Error(\"Esse nº é suspeito, porque a identificação da \\nUF (últimos 2 dígitos) deve estar entre 01 e 28.\");\n }\n\n let titExcecao1 = 0;\n let titExcecao2 = 0;\n\n let titPriDig = (a3 * 9 + a4 * 8 + a5 * 7 + a6 * 6 + a7 * 5 + a8 * 4 + a9 * 3 + a10 * 2 + a11 * 9) % 11;\n if (titPriDig == 0) { titExcecao1 = 1; }\n if (titPriDig == 10) { titPriDig = 0; }\n if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao1 == 1)) { titPriDig = 1; }\n\n let titSegDig = (titPriDig * 9 + a1 * 8 + a2 * 7) % 11;\n if (titSegDig == 0) { titExcecao2 = 1; }\n if (titSegDig == 10) { titSegDig = 0; }\n if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao2 == 1)) { titSegDig = 1; }\n\n let titDV: any = titPriDig * 10 + titSegDig;\n if (titDV == 0) { titDV = \"00\"; }\n if (titDV > 0 && titDV < 10) { titDV = \"0\" + titDV; }\n\n return titDV.toString();\n}","import { BigObject } from './interfaces';\n\nexport function rg_sp(number: string) {\n // if(number.length>8){alert(\"Erro. Não existe RG SP\\ncom mais de 8 dígitos.\");}\n\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let cispDig: any = (b1 * 2 + b2 * 3 + b3 * 4 + b4 * 5 + b5 * 6 + b6 * 7 + b7 * 8 + b8 * 9) % 11;\n if (cispDig == 10) {\n cispDig = \"X\";\n }\n\n return cispDig;\n}\n\nexport function rg_rj(number: string) {\n\n\n // if(number.length>8){alert(\"Erro. Não existe RG-RJ/MaSP-MG\\ncom mais de 8 dígitos.\");}\n\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let ci7 = b1 * 2; if (ci7 > 9) { ci7 = ci7 - 9; }\n let ci56 = b3 * 2; if (ci56 > 9) { ci56 = ci56 - 9; }\n let ci34 = b5 * 2; if (ci34 > 9) { ci34 = ci34 - 9; }\n let ci12 = b7 * 2; if (ci12 > 9) { ci12 = ci12 - 9; }\n let ci67 = b2;\n let ci45 = b4;\n let ci23 = b6;\n let ci01 = b8;\n\n let cirjDig = (ci7 + ci56 + ci34 + ci12 + ci67 + ci45 + ci23 + ci01) % 10;\n cirjDig = 10 - cirjDig; if (cirjDig == 10) { cirjDig = 0; }\n\n return cirjDig;\n}\n\nconst RG: BigObject<Function> = {\n sp: rg_sp,\n rj: rg_rj\n}\n\nexport default RG;\n","import { BigObject, MaskType } from './interfaces';\n\nexport const IPTUMASKS: BigObject<BigObject<MaskType>> = {\n 'minas-gerais': {\n 'belo-horizonte': {\n text: '000.000.000.000.0', //123.456.789.012.3\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/]\n },\n 'contagem': {\n text: '20.040.040-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers: any = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n\n if (!userInput || numberLength > 9) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n }\n },\n 'sao-paulo': {\n 'sao-paulo': {\n text: '00000000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n }\n },\n 'parana': {\n 'curitiba': {\n text: '00000000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n }\n }\n};\n","import { getAllDigits, makeGenericFaker } from './utils';\nimport { IPTUMASKS } from './iptu_mask';\nimport { BigObject } from './interfaces';\n\nexport function create_iptu_ctba(number: string) {\n number = getAllDigits(number);\n let a1 = parseInt(number.slice(10));\n let a2 = parseInt(number.slice(9, 10));\n let a3 = parseInt(number.slice(8, 9));\n let a4 = parseInt(number.slice(7, 8));\n let a5 = parseInt(number.slice(6, 7));\n let a6 = parseInt(number.slice(5, 6));\n let a7 = parseInt(number.slice(4, 5));\n let a8 = parseInt(number.slice(3, 4));\n let a9 = parseInt(number.slice(2, 3));\n let a10 = parseInt(number.slice(1, 2));\n let a11 = parseInt(number.slice(0, 1));\n\n let iptuctbaDV = 10 - ((a1 * 2 + a2 * 3 + a3 * 4 + a4 * 7 + a5 * 8 + a6 * 9 + a7 * 2 + a8 * 3 + a9 * 4 + a10 * 7 + a11 * 8) % 10);\n if (iptuctbaDV == 10) { iptuctbaDV = 0; }\n return iptuctbaDV;\n}\n\nexport function create_iptu_sp(number: string) {\n let a1 = parseInt(number.slice(9));\n let a2 = parseInt(number.slice(8, 9));\n let a3 = parseInt(number.slice(7, 8));\n let a4 = parseInt(number.slice(6, 7));\n let a5 = parseInt(number.slice(5, 6));\n let a6 = parseInt(number.slice(4, 5));\n let a7 = parseInt(number.slice(3, 4));\n let a8 = parseInt(number.slice(2, 3));\n let a9 = parseInt(number.slice(1, 2));\n let a10 = parseInt(number.slice(0, 1));\n\n let iptuspDV = (a1 * 9 + a2 * 8 + a3 * 7 + a4 * 6 + a5 * 5 + a6 * 4 + a7 * 3 + a8 * 2 + a9 + a10 * 10) % 11;\n if (iptuspDV == 10) { iptuspDV = 1; }\n return iptuspDV;\n}\n\n\nexport const faker_iptu = (estado: string | number, cidade: string | number) => {\n if (!IPTUMASKS[estado] || !IPTUMASKS[estado][cidade]) {\n return;\n }\n let iptu = makeGenericFaker(IPTUMASKS[estado][cidade])();\n if (IPTUCREATE[estado] && IPTUCREATE[estado][cidade]) {\n const dv = IPTUCREATE[estado][cidade](iptu);\n const values = iptu.split('');\n values[values.length - 1] = dv;\n iptu = values.join('');\n }\n return iptu;\n}\n\nexport const IPTUCREATE: BigObject<BigObject<Function>> = {\n 'sao-paulo': {\n 'sao-paulo': create_iptu_sp,\n },\n 'parana': {\n 'curitiba': create_iptu_ctba\n }\n}","import { getAllDigits } from './utils';\nimport { IPTUCREATE } from './iptu_create';\nimport { BigObject } from './interfaces';\n\nconst validateRemoveDigito = (number: string | any[], max: number) => {\n number = getAllDigits(number.toString());\n if (number.length > max) {\n return false;\n } else if (number.length === max) {\n number = number.slice(0, -1)\n }\n return number;\n}\n\nexport function validate_iptu_ctba(value: string | any[]) {\n let number = validateRemoveDigito(value, 12);\n if (!number) {\n return false;\n }\n\n const dv = IPTUCREATE['parana']['curitiba'](number);\n return parseInt(value[value.length - 1]) === dv;\n}\n\n/**\n * Índice Cadastral, ou inscrição imobiliária, é o número de identificação do imóvel no cadastro da Prefeitura de Contagem. \n * O índice é composto por 12 (doze) ou 13 (treze) números, sendo: 2 (dois) para a zona fiscal; \n * 3 (três) ou 4 (quatro) para a quadra fiscal; 4 (quatro) para o lote fiscal; e 3 (três) para a unidade.\n */\nexport function validate_iptu_contagem(number: any) {\n number = validateRemoveDigito(number, 12);\n if (!number) {\n return false;\n }\n return true;\n}\n\nexport function validate_iptu_sp(value: string | any[]) {\n let number = validateRemoveDigito(value, 12);\n if (!number) {\n return false;\n }\n const dv = IPTUCREATE['sao-paulo']['sao-paulo'](number);\n return parseInt(value[value.length - 1]) === dv;\n}\n\n// export function validate_iptu(iptu: string) {\n// let iptuClean = iptu.replace(/\\./g, '');\n// iptuClean = iptuClean.replace(/-/g, '');\n// const exp = /[a-z]{2}\\-\\d{2}\\.\\d{3}\\.\\d{3}/;\n// const expClean = /[a-z]{2}\\d{8}/;\n// const state = iptu.substr(0, 2).toUpperCase();\n\n// if (!exp.test(iptu) && !expClean.test(iptuClean) && !(state in CEPRange)) {\n// return false;\n// }\n// if (IPTU[state]) {\n// const validateState = IPTU[state];\n// return validateState(iptu);\n// }\n// return true;\n// }\n\nexport const IPTUVALIDATE: BigObject<BigObject<Function>> = {\n 'sao-paulo': {\n 'sao-paulo': validate_iptu_sp,\n },\n 'minas-gerais': {\n 'contagem': validate_iptu_contagem,\n },\n 'parana': {\n 'curitiba': validate_iptu_ctba\n }\n}","import { IPTUVALIDATE } from './iptu_validate';\nimport { IPTUMASKS } from './iptu_mask';\nimport { getAllDigits } from './utils';\nimport { IPTUCREATE } from './iptu_create';\n\nexport const create_iptu = (number: string, estado: string | number, cidade: string | number) => {\n if (!IPTUCREATE[estado] || !IPTUCREATE[estado][cidade]) {\n return true;\n }\n number = getAllDigits(number);\n return IPTUCREATE[estado][cidade](number);\n};\n\nexport const mask_iptu = (number: string, estado: string, cidade: string) => {\n if (!IPTUMASKS[estado] || !IPTUMASKS[estado][cidade]) {\n return number;\n }\n return IPTUMASKS[estado][cidade];\n};\nexport const validate_iptu = (number: string, estado: string | number, cidade: string | number) => {\n if (!IPTUVALIDATE[estado] || !IPTUVALIDATE[estado][cidade]) {\n return true;\n }\n number = getAllDigits(number);\n return IPTUVALIDATE[estado][cidade](number);\n};","import { getAllDigits, fillString, getAllWords } from './utils';\nimport { BigObject } from './interfaces';\nimport { validate_inscricaoestadual } from './inscricaoestadual';\nimport { validate_placa } from './placa';\nimport {\n create_cnpj, create_cpf,\n create_renavam, create_ect, create_processo, create_titulo_atual, create_cnh, create_certidao, create_aih, create_pispasep, create_cnhespelho, create_renachestadual, create_renachseguranca\n} from './create';\nimport RG from './rg';\nimport { validate_iptu } from './iptu';\nimport { ESTADOS_SIGLA } from './estados';\n\n\nexport function validate_aih(aih: string) {\n const aihClean = aih.replace(/[^\\d]+/g, '');\n const dvOriginal = aihClean.substr(-1);\n const dv = create_aih(aihClean);\n return dvOriginal === dv;\n}\n\nexport function validate_celular(cel: any) {\n let celClean = cel.replace(/[^\\d]+/g, '');\n celClean = celClean.replace(/_/g, '');\n if (celClean.length !== 11) {\n return false;\n }\n if (celClean[0] == 0 || celClean[2] < 5) {\n return false;\n }\n return true;\n}\n\nexport const CEPRange: BigObject<RegExp> = {\n 'SP': /^([1][0-9]{3}|[01][0-9]{4})[0-9]{3}$/g,\n 'RJ': /^[2][0-8][0-9]{3}[0-9]{3}$/g,\n 'MS': /^[7][9][0-9]{3}[0-9]{3}$/g,\n 'MG': /^[3][0-9]{4}[0-9]{3}$/g,\n 'MT': /^[7][8][8][0-9]{2}[0-9]{3}$/g,\n 'AC': /^[6][9]{2}[0-9]{2}[0-9]{3}$/g,\n 'AL': /^[5][7][0-9]{3}[0-9]{3}$/g,\n 'AM': /^[6][9][0-8][0-9]{2}[0-9]{3}$/g,\n 'AP': /^[6][89][9][0-9]{2}[0-9]{3}$/g,\n 'BA': /^[4][0-8][0-9]{3}[0-9]{3}$/g,\n 'CE': /^[6][0-3][0-9]{3}[0-9]{3}$/g,\n 'DF': /^[7][0-3][0-6][0-9]{2}[0-9]{3}$/g,\n 'ES': /^[2][9][0-9]{3}[0-9]{3}$/g,\n 'GO': /^[7][3-6][7-9][0-9]{2}[0-9]{3}$/g,\n 'MA': /^[6][5][0-9]{3}[0-9]{3}$/g,\n 'PA': /^[6][6-8][0-8][0-9]{2}[0-9]{3}$/g,\n 'PB': /^[5][8][0-9]{3}[0-9]{3}$/g,\n 'PE': /^[5][0-6][0-9]{2}[0-9]{3}$/g,\n 'PI': /^[6][4][0-9]{3}[0-9]{3}$/g,\n 'PR': /^[8][0-7][0-9]{3}[0-9]{3}$/g,\n 'RN': /^[5][9][0-9]{3}[0-9]{3}$/g,\n 'RO': /^[7][8][9][0-9]{2}[0-9]{3}$/g,\n 'RR': /^[6][9][3][0-9]{2}[0-9]{3}$/g,\n 'RS': /^[9][0-9]{4}[0-9]{3}$/g,\n 'SC': /^[8][89][0-9]{3}[0-9]{3}$/g,\n 'SE': /^[4][9][0-9]{3}[0-9]{3}$/g,\n 'TO': /^[7][7][0-9]{3}[0-9]{3}$/g,\n}\n\nexport function validate_cep(cep: string) {\n const cepClean = cep.replace(/[^\\d]+/g, '');\n const exp = /\\d{2}\\.\\d{3}\\-\\d{3}/;\n if (!exp.test(cep) && cepClean.length !== 8) {\n return false;\n }\n return true;\n}\n\n\nexport function cep_ranges(cep: string | number) {\n cep = (cep.toString()).replace(/[^\\d]+/g, '');\n cep = parseInt(cep, 10);\n const cepString: string = cep.toString();\n let found: any;\n for (let estado in CEPRange) {\n const v = CEPRange[estado];\n const r = new RegExp(v).test(cepString);\n if (r) {\n found = r;\n return true;\n }\n }\n\n if (!found) {\n return false;\n }\n return true;\n}\n\n\n\n\nexport function validate_certidao(value: string) {\n let certidao = getAllDigits(value);\n\n const format = /[0-9]{32}/;\n if (!format.test(certidao)) {\n return false;\n }\n\n let dvOriginal = certidao.substr(-2);\n const dv = create_certidao(certidao);\n\n return dv === dvOriginal;\n}\n\n\n/**\n * \n * @param chassi \n */\nexport function validate_chassi(chassi: string) {\n\n // 1 - Possuir o número \"0\" (ZERO) como 1º dígito.\n const zeroNoPrimeiroDigito = /^0/;\n if (zeroNoPrimeiroDigito.test(chassi)) {\n return false;\n }\n\n // 2 - Possuir espaço no chassi\n chassi = getAllWords(chassi); // espacoNoChassi\n\n // 3 - Se, a partir do 4º dígito, houver uma repetição consecutiva, por mais de seis vezes, do mesmo dígito \n // (alfabético ou numérico). Exemplos: 9BW11111119452687 e 9BWZZZ5268AAAAAAA.\n const repeticaoMaisDe6Vezes = /^.{4,}([0-9A-Z])\\1{5,}/\n if (repeticaoMaisDe6Vezes.test(chassi)) {\n return false;\n }\n\n // 4 - Apresente os caracteres \"i\", \"I\", \"o\", \"O\", \"q\", \"Q\".\n const caracteresiIoOqQ = /[iIoOqQ]/;\n if (caracteresiIoOqQ.test(chassi)) {\n return false;\n }\n\n // 5 - Os quatro últimos caracteres devem ser obrigatoriamente numéricos\n const ultimos4Numericos = /[0-9]{4}$/;\n if (!ultimos4Numericos.test(chassi)) {\n return false;\n }\n\n // 6 - Se possuir número de dígitos diferente de 17 (alfanuméricos). \n if (chassi.length > 17) {\n return false;\n }\n\n return true;\n}\n\nfunction validate_cnae(number: any) {\n if (!number) return true;\n return false\n}\n\n/**\n * \n * II - Número do Espelho da CNH - segundo número de identificação nacional, \n * que será formado por 9 (nove) caracteres mais 1 (um) dígito verificador de segurança, \n * autorizado e controlado pelo DENATRAN, e identificará cada espelho de CNH expedida.\n * https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-denatran/resolucoes-contran\n * https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * 598: https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao59820162.pdf\n * @param value \n */\nexport function validate_cnhespelho(value: string) {\n value = value.replace(/[^\\d]/g, '')\n if (value.length !== 10) {\n return false\n }\n\n let check = create_cnhespelho(value)\n if (check === '0' || check === '1') check = '0'\n return value.substr(-1) == check\n}\n\n/**\n * \n * III – Número do formulário RENACH - número de identificação\n* estadual, documento de coleta de dados do candidato/condutor gerado a cada serviço,\n* composto, obrigatoriamente, por 11 (onze) caracteres, sendo as duas primeiras\n* posições formadas pela sigla da Unidade de Federação expedidora, facultada a\n* utilização da última posição como dígito verificador de segurança.\n* a) O número do formulário RENACH identificará a Unidade da\n* Federação onde o condutor foi habilitado ou realizou alterações de dados no seu\n* cadastro pela última vez.\n* b) O Formulário RENACH que dá origem às informações na\n* BINCO e autorização para a impressão da CNH deverá ficar arquivado em seg\n* 598 - https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao59820162.pdf\n* 718 - https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7182017.pdf\n* @param value \n */\nexport function validate_renachestadual(value: string) {\n const state = value.substr(0, 2).toLowerCase()\n if (!ESTADOS_SIGLA.includes(state)) {\n return false\n }\n\n let digits = value.substr(2)\n digits = digits.replace(/[^\\d]/g, '');\n if (digits.length !== 9) {\n return false;\n }\n let check = create_renachestadual(value)\n if (check === '0' || check === '1') check = '0'\n return value.substr(-1) == check;\n}\n\nexport function validate_renachseguranca(value: string) {\n value = value.replace(/[^\\d]/g, '');\n\n if (value.length !== 11) {\n return false;\n }\n\n let check = create_renachseguranca(value)\n return value.substr(-1) == check;\n}\n\n/**\n * BINCO\n * I – o primeiro número de identificação nacional – Registro Nacional, \n * será gerado pelo sistema informatizado da Base Índice Nacional de Condutores – \n * BINCO, composto de 9 (nove) caracteres mais 2 (dois) dígitos verificadores de \n * segurança, sendo único para cada condutor e o acompanhará durante toda a \n * sua existência como condutor, não sendo permitida a sua reutilização para \n * outro condutor.\n * @param value \n * @returns \n */\nexport function validate_cnh(value: string) {\n value = value.toString().replace(/[^\\d]/g, '');\n if (value.length !== 11) {\n return false;\n }\n let check = create_cnh(value);\n return value.substr(-2) == check;\n}\n\nexport function validate_cnpj(cnpj: any) {\n // Valida se tem apenas número, - ou .\n let precisaFicarVazio = cnpj.replace(/^[0-9./-]*$/gm, '')\n if (precisaFicarVazio != '')\n return false\n\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n let tamanho = cnpj.length - 2\n const digitos = cnpj.substring(tamanho);\n const resultados = create_cnpj(cnpj);\n if (!resultados ||\n resultados[0] !== parseInt(digitos.charAt(0), 10) ||\n resultados[1] !== parseInt(digitos.charAt(1), 10)\n ) {\n return false\n }\n\n return true;\n}\n\nfunction validate_contabanco(number: any) {\n if (!number) return false\n return true;\n}\n\n/**\n * Referencia: http://www.receita.fazenda.gov.br/aplicacoes/atcta/funcoes.js\n * @param strCPF \n * @returns \n */\nexport function validate_cpf(strCPF: any) {\n // Valida se tem apenas número, - ou .\n let precisaFicarVazio = strCPF.replace(/^[0-9.-]*$/gm, '')\n if (precisaFicarVazio != '')\n return false\n\n strCPF = strCPF.replace(/[^\\d]+/g, '');\n if (strCPF.length !== 11) {\n return false;\n }\n\n //verifica se todos os numeros sao iguais\n const expIguais = /^(?!.*(\\d)\\1{10}).*$/;\n if (!strCPF.match(expIguais)) {\n return false;\n }\n\n // valida digito verificados\n const restos = create_cpf(strCPF);\n if (!restos || restos != strCPF.substr(-2)) {\n return false;\n }\n return true;\n}\n\nfunction validate_cpfcnpj(number: any) {\n return validate_cpf(number) || validate_cnpj(number);\n}\n\nexport function validate_cns(value: string) {\n const cns = getAllDigits(value);\n const definitivo = /[1-2][0-9]{10}00[0-1][0-9]/; // começam com 1 ou 2\n const provisorio = /[7-9][0-9]{14}/; // começam com 7,8 ou 9\n if (!definitivo.test(cns) && !provisorio.test(cns)) {\n return false;\n }\n\n let soma = 0;\n for (let i = 0; i < cns.length; i++) {\n soma += parseInt(cns[i]) * (15 - i);\n }\n\n return soma % 11 == 0;\n}\n\n\nexport function validate_cartaocredito(input: string | number) {\n let value: string;\n if (typeof input == 'string') {\n value = getAllDigits(input);\n } else {\n value = input.toString();\n }\n\n const number = value.slice(0, 16);\n const mes = parseInt(value.slice(16, 18));\n const ano = parseInt(value.slice(18, 20));\n const cvv = value.slice(20, 23);\n\n const d = new Date();\n const anoAtual = (d.getFullYear() - 2000);\n if (ano && ano < anoAtual) {\n return false;\n }\n if (mes && mes < d.getMonth() + 1 && ano === anoAtual) {\n return false;\n }\n\n if (cvv) {\n const validcvv = validate_cvv(cvv);\n if (validcvv.isValid === false) {\n return false;\n }\n }\n\n let found;\n Object.keys(creditCardValidator).forEach(key => {\n if (creditCardValidator[key].test(number)) {\n found = key;\n }\n });\n return !!found;\n\n}\n\nfunction validate_cvv(value: string | any[], maxLength: any = 3) {\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n\n if (typeof value !== 'string') {\n return { isValid: false, isPotentiallyValid: false };\n }\n if (!/^\\d*$/.test(value)) {\n return { isValid: false, isPotentiallyValid: false };\n }\n\n var i = 0;\n const max = value.length;\n for (; i < maxLength.length; i++) {\n if (max === maxLength[i]) {\n return { isValid: true, isPotentiallyValid: true };\n }\n }\n\n if (value.length < Math.min.apply(null, maxLength)) {\n return { isValid: false, isPotentiallyValid: true };\n }\n\n var maximum = maxLength;\n var i = 0;\n\n for (; i < maxLength.length; i++) {\n maximum = maxLength[i] > maximum ? maxLength[i] : maximum;\n }\n\n if (value.length > maximum) {\n return { isValid: false, isPotentiallyValid: false };\n }\n\n return { isValid: true, isPotentiallyValid: true };\n}\n\n\n/**\n * A hash of valid CC abbreviations and regular expressions\n mc: Mastercard\n ec: Eurocard\n vi: Visa\n ax: American Express\n dc: Diners Club\n bl: Carte Blanch\n di: Discover\n jcb: JCB\n er: Enroute\n*/\nexport const creditCardValidator: BigObject<RegExp> = {\n 'mc': /5[1-5][0-9]{14}/,\n 'ec': /5[1-5][0-9]{14}/,\n 'vi': /4(?:[0-9]{12}|[0-9]{15})/,\n 'ax': /3[47][0-9]{13}/,\n 'dc': /3(?:0[0-5][0-9]{11}|[68][0-9]{12})/,\n 'bl': /3(?:0[0-5][0-9]{11}|[68][0-9]{12})/,\n 'di': /6011[0-9]{12}/,\n 'jcb': /(?:3[0-9]{15}|(2131|1800)[0-9]{11})/,\n 'er': /2(?:014|149)[0-9]{11}/\n};\n\n\nexport function validate_currency(currency: string | number) {\n if (typeof currency === 'number') {\n return true;\n }\n const regex = /^(R\\$|R\\$ )?(-)?(?!0(\\.)?00)\\d{1,3}((\\.)?\\d{3})*(,\\d\\d)?$/g;\n return regex.test(currency);\n}\n\n\nfunction validate_data(value: string | null) {\n if (!value) {\n return false;\n }\n const values = value.split('/');\n if (values.length !== 3) {\n return false;\n }\n const testData: Date = new Date(values[1] + '/' + values[0] + '/' + values[2])\n if (!testData.getTime()) {\n return false;\n }\n // if (parseInt(values[0]) > 31 || parseInt(values[1]) > 12 || parseInt(values[2]) < 1000) return false;\n return true;\n}\n\n\nfunction validate_date(value: string | null) {\n if (!value || value.length < 10) {\n return false;\n }\n const testData: Date = new Date(value)\n if (!testData.getTime()) {\n return false;\n }\n return true;\n}\n\nexport function validate_datetime(time: string | number, options: any = {}) {\n if (!time) {\n return false;\n }\n time = time.toString();\n const values = time.split(' ');\n if (validate_date(values[0]) && validate_time(values[1], options)) {\n return true;\n }\n return false;\n}\n\n\nexport function validate_datahora(time: string | number, options: any = {}) {\n if (!time) {\n return false;\n }\n time = time.toString();\n const values = time.split(' ');\n if (validate_data(values[0]) && validate_time(values[1], options)) {\n return true;\n }\n return false;\n}\n\nexport function validate_ect(number: string) {\n number = getAllDigits(number);\n if (number.length > 9) {\n return false\n }\n\n const nodigit = number.substr(0, number.length - 1);\n const dg = create_ect(nodigit);\n\n if (parseInt(number[number.length - 1]) === dg) {\n return true;\n }\n return false;\n}\n\nfunction validate_email(email: any) {\n var re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return re.test(String(email).toLowerCase())\n}\n\nfunction validate_endereco(number: any) {\n if (!number) return false\n return true\n}\n\nexport function validate_number(number: string) {\n if (number.split(',').length > 2) {\n return false\n }\n const regexDecimal = /^\\d+(?:\\.\\d{0,2})$/;\n const regex = /^[0-9]{0,10}[,]{1,1}[0-9]{0,4}/;\n const regexNumero = /^[0-9]{0,10}/;\n return regexDecimal.test(number) || regex.test(number) || regexNumero.test(number);\n}\n\n\nexport function validate_porcentagem(porcentagem: string) {\n porcentagem = porcentagem.split('%')[0];\n return validate_number(porcentagem);\n}\n\n\nexport function validate_processo(processo: any) {\n let processoClean = processo.replace(/\\./g, '');\n processoClean = processoClean.replace(/\\-/g, '');\n // const exp = /\\d{7}\\-\\d{2}\\.\\d{4}\\.\\w{3}\\.\\d{4}/;\n // const expClean = /\\d{13}\\w{3}\\d{4}/;\n // if (!exp.test(processo) && !expClean.test(processoClean)) {\n // return false;\n // }\n let processoValidado = create_processo(processo);\n if (parseInt(processoClean) !== parseInt(getAllDigits(processoValidado))) {\n return false;\n }\n return true;\n}\n\n\nexport function validate_pispasep(number: string) {\n number = getAllDigits(number);\n let nis = fillString(number, 11, '0');\n const regex = /\\d{11}/; // /^\\d{3}\\.\\d{5}\\.\\d{2}\\-\\d{1}$/;\n if (!regex.test(nis)) {\n return false;\n }\n\n const digit = create_pispasep(number);\n return nis[10].toString() == digit.toString();\n}\n\n\nexport function validate_renavam(renavam: any) {\n let renavamClean = renavam.replace(/\\./g, '');\n renavamClean = renavamClean.replace(/\\-/g, '');\n const dv = create_renavam(renavam);\n const tam = renavam.length;\n const digitos = renavam.substr(tam - 1, 1);\n if (digitos.charCodeAt(0) - 48 === dv) {\n return true;\n } else {\n return false;\n }\n}\n\n\n\nexport function validate_rg(rg: string) {\n let rgClean = rg.replace(/\\./g, '');\n rgClean = rgClean.replace(/-/g, '');\n const exp = /[a-z]{2}\\-\\d{2}\\.\\d{3}\\.\\d{3}/;\n const expClean = /[a-z]{2}\\d{8}/;\n const state = rg.substr(0, 2).toUpperCase();\n\n if (!exp.test(rg) && !expClean.test(rgClean) && !(state in CEPRange)) {\n return false;\n }\n const validateState = RG[state];\n if (validateState) {\n return validateState(rg);\n }\n return true;\n}\n\nfunction validate_senha(value: string, options: any = {}) {\n let finalregex = '^';\n // ^\tThe password string will start this way\n // (?=.*[a-z])\tThe string must contain at least 1 lowercase alphabetical character\n if (options.lowercase !== false) {\n finalregex = finalregex + '(?=.*[a-z])';\n }\n // (?=.*[A-Z])\tThe string must contain at least 1 uppercase alphabetical character\n if (options.uppercase !== false) {\n finalregex = finalregex + '(?=.*[A-Z])';\n }\n // (?=.*[0-9])\tThe string must contain at least 1 numeric character\n if (options.numeric !== false) {\n finalregex = finalregex + '(?=.*[0-9])';\n }\n // (?=.*[!@#\\$%\\^&\\*])\tThe string must contain at least one special character, but we are escaping reserved RegEx characters to avoid conflict\n if (options.numeric !== false) {\n finalregex = finalregex + '(?=.*[!@#\\\\$%\\\\^&\\\\*])';\n }\n // (?=.{8,})\tThe string must be eight characters or longer\n if (!options.size) {\n options.size = 8;\n }\n\n finalregex = finalregex + `(?=.{${options.size},})`;\n\n const regex = new RegExp(finalregex);\n return regex.test(value);\n}\n\n\nfunction validate_site(value: any) {\n var re = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&=]*)/g;\n return re.test(String(value).toLowerCase());\n}\n\nexport function validate_sped(sped: string) {\n if (!sped) return false\n return true\n}\n\nexport function validate_telefone(tel: any) {\n const telClean = tel.replace(/[^\\d]+/g, '');\n tel = tel.replace(/_/g, '');\n if (!(telClean.length === 10 || telClean.length === 11)) {\n return false;\n }\n if (telClean[0] == 0 || telClean[2] == 0) {\n return false;\n }\n return true;\n}\n\nexport function validate_time(time: string | number, options: any = {}) {\n const value = time.toString();\n if (options.diario) {\n const expression = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/;\n return expression.test(value);\n } else {\n const expression = /^([0-9]?[0-9]):([0-5][0-9])(:[0-5][0-9])?$/;\n return expression.test(value);\n }\n\n}\n\nexport function validate_titulo(titulo: any) {\n if (!titulo) {\n return false;\n }\n const tituloClean = titulo.replace(/\\./g, '');\n const exp = /\\d{4}\\.\\d{4}\\.\\d{4}/;\n const expClean = /\\d{4}\\d{4}\\d{4}/;\n if (!exp.test(tituloClean) && !expClean.test(tituloClean)) {\n return false;\n }\n\n const tam = tituloClean.length;\n\n let dig;\n try {\n dig = create_titulo_atual(tituloClean);\n // const noDv = tituloClean.substr(0, tam - 2);\n // dig = create_titulo(noDv);\n } catch (e) {\n return false;\n }\n\n const digitos = tituloClean.substr(tam - 2, 2);\n if (digitos === dig) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction validate_username(value: any) {\n var re = /^[a-z0-9_-]{3,16}$/igm;\n return re.test(String(value).toLowerCase());\n}\n\nexport const validateBr: BigObject<Function> = {\n aih: validate_aih,\n cartaocredito: validate_cartaocredito,\n celular: validate_celular,\n cep: validate_cep,\n certidao: validate_certidao,\n chassi: validate_chassi,\n cnae: validate_cnae,\n cnh: validate_cnh,\n cnhespelho: validate_cnhespelho,\n renachestadual: validate_renachestadual,\n renachseguranca: validate_renachseguranca,\n cnpj: validate_cnpj,\n cns: validate_cns,\n contabanco: validate_contabanco,\n cpf: validate_cpf,\n cpfcnpj: validate_cpfcnpj,\n currency: validate_currency,\n data: validate_data,\n date: validate_date,\n datetime: validate_datetime,\n datahora: validate_datahora,\n ect: validate_ect,\n email: validate_email,\n endereco: validate_endereco,\n inscricaoestadual: validate_inscricaoestadual,\n iptu: validate_iptu,\n number: validate_number,\n porcentagem: validate_porcentagem,\n pispasep: validate_pispasep,\n placa: validate_placa,\n processo: validate_processo,\n renavam: validate_renavam,\n rg: validate_rg,\n senha: validate_senha,\n site: validate_site,\n sped: validate_sped,\n telefone: validate_telefone,\n time: validate_time,\n titulo: validate_titulo,\n username: validate_username\n};\n","const dollarSign = \"$\";\nconst emptyString = \"\";\nconst comma = \",\";\nconst period = \".\";\nconst minus = \"-\";\nconst minusRegExp = /-/;\nconst nonDigitsRegExp = /\\D+/g;\nconst number = \"number\";\nconst digitRegExp = /\\d/;\nconst caretTrap = \"[]\";\n\nexport default function createNumberMask({\n prefix = dollarSign,\n suffix = emptyString,\n includeThousandsSeparator = true,\n thousandsSeparatorSymbol = comma,\n allowDecimal = false,\n decimalSymbol = period,\n decimalLimit = 2,\n requireDecimal = false,\n allowNegative = false,\n allowLeadingZeroes = false,\n integerLimit = null,\n} = {}) {\n const prefixLength = (prefix && prefix.length) || 0;\n const suffixLength = (suffix && suffix.length) || 0;\n const thousandsSeparatorSymbolLength =\n (thousandsSeparatorSymbol && thousandsSeparatorSymbol.length) || 0;\n\n function numberMask(rawValue = emptyString) {\n const rawValueLength = rawValue.length;\n\n if (\n rawValue === emptyString ||\n (rawValue[0] === prefix[0] && rawValueLength === 1)\n ) {\n return prefix\n .split(emptyString)\n .concat([\"\" + digitRegExp])\n .concat(suffix.split(emptyString));\n } else if (rawValue === decimalSymbol && allowDecimal) {\n return prefix\n .split(emptyString)\n .concat([\"0\", decimalSymbol, \"\" + digitRegExp])\n .concat(suffix.split(emptyString));\n }\n\n const isNegative = rawValue[0] === minus && allowNegative;\n //If negative remove \"-\" sign\n if (isNegative) {\n rawValue = rawValue.toString().substr(1);\n }\n\n const indexOfLastDecimal = rawValue.lastIndexOf(decimalSymbol);\n const hasDecimal = indexOfLastDecimal !== -1;\n\n let integer;\n let fraction;\n let mask;\n\n // remove the suffix\n if (rawValue.slice(suffixLength * -1) === suffix) {\n rawValue = rawValue.slice(0, suffixLength * -1);\n }\n\n if (hasDecimal && (allowDecimal || requireDecimal)) {\n integer = rawValue.slice(\n rawValue.slice(0, prefixLength) === prefix ? prefixLength : 0,\n indexOfLastDecimal\n );\n\n fraction = rawValue.slice(indexOfLastDecimal + 1, rawValueLength);\n fraction = convertToMask(fraction.replace(nonDigitsRegExp, emptyString));\n } else {\n if (rawValue.slice(0, prefixLength) === prefix) {\n integer = rawValue.slice(prefixLength);\n } else {\n integer = rawValue;\n }\n }\n\n if (integerLimit && typeof integerLimit === number) {\n const thousandsSeparatorRegex =\n thousandsSeparatorSymbol === \".\"\n ? \"[.]\"\n : `${thousandsSeparatorSymbol}`;\n const numberOfThousandSeparators = (\n integer.match(new RegExp(thousandsSeparatorRegex, \"g\")) || []\n ).length;\n\n integer = integer.slice(\n 0,\n integerLimit +\n numberOfThousandSeparators * thousandsSeparatorSymbolLength\n );\n }\n\n integer = integer.replace(nonDigitsRegExp, emptyString);\n\n if (!allowLeadingZeroes) {\n integer = integer.replace(/^0+(0$|[^0])/, \"$1\");\n }\n\n integer = includeThousandsSeparator\n ? addThousandsSeparator(integer, thousandsSeparatorSymbol)\n : integer;\n\n mask = convertToMask(integer);\n\n if ((hasDecimal && allowDecimal) || requireDecimal === true) {\n if (rawValue[indexOfLastDecimal - 1] !== decimalSymbol) {\n mask.push(caretTrap);\n }\n\n mask.push(decimalSymbol, caretTrap);\n\n if (fraction) {\n if (typeof decimalLimit === number) {\n fraction = fraction.slice(0, decimalLimit);\n }\n\n mask = mask.concat(fraction);\n }\n\n if (\n requireDecimal === true &&\n rawValue[indexOfLastDecimal - 1] === decimalSymbol\n ) {\n mask.push(digitRegExp);\n }\n }\n\n if (prefixLength > 0) {\n mask = prefix.split(emptyString).concat(\"\" + mask);\n }\n\n if (isNegative) {\n // If user is entering a negative number, add a mask placeholder spot to attract the caret to it.\n if (mask.length === prefixLength) {\n mask.push(digitRegExp);\n }\n\n mask = [minusRegExp].concat(new RegExp(\"\" + mask));\n }\n\n if (suffix.length > 0) {\n mask = mask.concat(suffix.split(emptyString));\n }\n\n return mask;\n }\n\n //numberMask.instanceOf = \"createNumberMask\";\n\n return numberMask;\n}\n\nfunction convertToMask(strNumber: string) {\n return strNumber\n .split(emptyString)\n .map((char: string) => (digitRegExp.test(char) ? digitRegExp : char));\n}\n\nfunction addThousandsSeparator(n: string, thousandsSeparatorSymbol: string) {\n return n.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparatorSymbol);\n}\n","import { isArray, processCaretTraps } from './utils';\nimport { BigObject, MaskType } from './interfaces';\nexport { MASKSIE } from './inscricaoestadual';\nimport createNumberMask from './createNumberMask';\nimport { mask_iptu } from './iptu';\nimport { MASKSIE } from './inscricaoestadual';\n\nconst maskNumber: any = {\n decimalLimit: 2,\n thousandsSeparatorSymbol: '.',\n decimalSymbol: ',',\n allowDecimal: true,\n integerLimit: 17,\n prefix: '',\n suffix: ''\n}\n\nexport const MASKS: BigObject<MaskType> = {\n aih: {\n text: '000000000000-0', // 351923414312-8\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n cartaocredito: {\n text: '0000 0000 0000 0000 00/00 000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, '0', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, '/', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/]\n },\n celular: {\n text: '(00) 00000-0000',\n textMask: ['(', /[1-9]/, /\\d/, ')', ' ', /[5-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\n },\n cep: {\n text: '00.000-000',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/]\n },\n // certidao Certidões de Nascimento, Casamento ou Óbito \n certidao: {\n text: '000000.00.00.0000.0.00000.000.0000000-00', // 104539.01.55.2013.1.00012.021.0000123-21\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '.', /\\d/, /\\d/, '.',\n /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.',\n /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n chassi: {\n text: 'AAA AAAAAA AA AA0000', // 9BW ZZZ377 VT 004251\n textMask: [/[1-9]/, /\\w/, /\\w/, ' ', /\\w/, /\\w/, /\\w/, /\\w/, /\\w/, /\\w/, ' ', /\\w/, /\\w/, ' ', /\\w/, /\\w/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cid: {\n textMask: false\n },\n cnae: {\n text: '0000-0/00', // 6821-8/01\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, '/', /\\d/, /\\d/]\n },\n cnh: {\n text: '000000000-00', // 123456789-1\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n renachseguranca: {\n text: '00000000000', // 51474546854\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n renachestadual: {\n text: 'AA000000000', // MG597812560\n textMask: [/[A-S]/, /[A-Z]/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cnhespelho: {\n text: '0000000000', // 123456789-1\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cnpj: {\n text: '00.000.000/0000-00',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n cns: {\n text: '000 0000 0000 00-00',\n textMask: [/[1|2|7|8|9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n contabanco: {\n text: '000 00000-0 00000-0',\n textMask: [/\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-',\n /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n cpf: {\n text: '000.000.000-00',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n cpfcnpj: {\n text: '00.000.000/0000-00',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength > 12) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n }\n }\n },\n currency: {\n text: '0.000,00',\n textMask: createNumberMask({\n ...maskNumber,\n prefix: 'R$ ',\n allowNegative: true\n })\n },\n data: {\n text: '00/00/0000',\n textMask: [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n date: {\n text: '00/00/0000',\n textMask: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n datetime: {\n text: '00/00/0000 00:00',\n textMask: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n datahora: {\n text: '00/00/0000 00:00',\n textMask: [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n ect: {\n text: '00000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n endereco: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n iptu: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n number: {\n text: '0.000,00',\n textMask: createNumberMask(maskNumber)\n },\n porcentagem: {\n text: '00,00%',\n textMask: createNumberMask({\n ...maskNumber,\n suffix: '%'\n })\n },\n pispasep: {\n text: '000.00000.00-0',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n placa: {\n text: 'AAA-0000',\n textMask: [/[A-S]/, /[A-Z]/, /[A-Z]/, '-', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n processo: {\n text: '0000000-00.0000.AAA.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[A-Za-z]/, /[A-Za-z]/, /[A-Za-z]/, '.', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n renavam: {\n text: '0000000000-00',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength < 9) {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n },\n rg: {\n text: 'AA-00.000.000',\n textMask: [/[A-Za-z]/, /[A-Za-z]/, '-', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n sped: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n telefone: {\n text: '(00) 00000-0000',\n textMask: ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength > 10) {\n return ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\n } else {\n return ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\n }\n }\n },\n time: {\n text: '00:00',\n textMask: [/\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n titulo: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n utils: {\n numberToString: (n: number) => {\n if (!n || typeof n === 'string') {\n return n;\n }\n return (n.toString()).replace('.', ',');\n },\n textMask: false\n }\n}\n\n\nconst makeGeneric = (key: string) => {\n return (value: string) => {\n if (!value) {\n return '';\n }\n let mask = MASKS[key].textMask\n let textMaskFunction = MASKS[key].textMaskFunction\n if (typeof textMaskFunction === 'function') {\n mask = textMaskFunction(value);\n }\n\n\n return conformToMask(\n value,\n mask,\n { guide: false }\n ).conformedValue;\n }\n}\n\nexport const maskBr = {\n aih: makeGeneric('aih'),\n celular: makeGeneric('celular'),\n cep: makeGeneric('cep'),\n certidao: makeGeneric('certidao'),\n chassi: makeGeneric('chassi'),\n cnae: makeGeneric('cnae'),\n cnh: makeGeneric('cnh'),\n renachseguranca: makeGeneric('renachseguranca'),\n renachestadual: makeGeneric('renachestadual'),\n cnhespelho: makeGeneric('cnhespelho'),\n cnpj: makeGeneric('cnpj'),\n cns: makeGeneric('cns'),\n contabanco: makeGeneric('contabanco'),\n cpf: makeGeneric('cpf'),\n cpfcnpj: makeGeneric('cpfcnpj'),\n cartaocredito: makeGeneric('cartaocredito'),\n currency: (currencyValueInput: string | number, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['currency'], currencyValueInput, decimalsFormat);\n },\n data: makeGeneric('data'),\n date: makeGeneric('date'),\n datetime: makeGeneric('datetime'),\n datahora: makeGeneric('datahora'),\n ect: makeGeneric('ect'),\n endereco: makeGeneric('endereco'),\n inscricaoestadual: (inscricaoestadualValue: string, estado: string) => {\n const ie = MASKSIE;\n const ieState = ie[estado]\n\n if (!inscricaoestadualValue || !estado || !ieState ||\n !ieState.textMask) {\n return '';\n }\n\n let mask = ieState.textMask;\n let textMaskFunction = ieState.textMaskFunction\n if (typeof textMaskFunction === 'function') {\n mask = textMaskFunction(inscricaoestadualValue);\n }\n\n return conformToMask(\n inscricaoestadualValue,\n mask,\n { guide: false }\n ).conformedValue;\n },\n iptu: (iptuValue: string, estado: string, cidade: string) => {\n const mask = mask_iptu(iptuValue, estado, cidade);\n if (!mask || typeof mask === 'string') {\n return '';\n }\n return conformToMask(\n iptuValue,\n mask.textMask,\n { guide: false }\n ).conformedValue;\n },\n number: (numberValue: any, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['number'], numberValue, decimalsFormat);\n },\n porcentagem: (porcentagemValue: string, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['porcentagem'], porcentagemValue, decimalsFormat);\n },\n pispasep: makeGeneric('pispasep'),\n placa: makeGeneric('placa'),\n processo: makeGeneric('processo'),\n renavam: makeGeneric('renavam'),\n rg: makeGeneric('rg'),\n sped: makeGeneric('sped'),\n telefone: makeGeneric('telefone'),\n time: (value: string | Date) => {\n if (value instanceof Date) {\n value = value.toTimeString().split(' ')[0]\n }\n return makeGeneric('time')(value)\n },\n titulo: makeGeneric('titulo')\n};\n\n\n\n/**\n * FROM TEXT-MASK\n */\nexport const placeholderChar = '_'\nexport const strFunction = 'function'\n\nconst defaultPlaceholderChar = placeholderChar;\nconst emptyArray: any = []\nconst emptyString = ''\n\nexport function conformToMask(inputValue: String | Date = emptyString, mask = emptyArray, config: any = {}) {\n let rawValue = inputValue.toString();\n if (typeof inputValue === 'number') {\n rawValue = (<number>inputValue).toString();\n }\n if (inputValue instanceof Date) {\n rawValue = (<Date>inputValue).toLocaleString(\"pt-br\")\n }\n\n if (!isArray(mask)) {\n // If someone passes a function as the mask property, we should call the\n // function to get the mask array - Normally this is handled by the\n // `createTextMaskInputElement:update` function - this allows mask functions\n // to be used directly with `conformToMask`\n\n if (typeof mask === strFunction) {\n // call the mask function to get the mask array\n mask = mask(inputValue, config)\n\n // mask functions can setup caret traps to have some control over how the caret moves. We need to process\n // the mask for any caret traps. `processCaretTraps` will remove the caret traps from the mask\n mask = processCaretTraps(mask).maskWithoutCaretTraps\n } else {\n throw new Error(\n 'Text-mask:conformToMask; The mask property must be an array.'\n )\n }\n }\n\n // These configurations tell us how to conform the mask\n\n const guide = config.guide || true;\n const previousConformedValue = config.previousConformedValue || emptyString;\n const placeholder = convertMaskToPlaceholder(mask, placeholderChar);\n const currentCaretPosition = config.currentCaretPosition;\n const keepCharPositions = config.keepCharPositions;\n\n // The configs below indicate that the user wants the algorithm to work in *no guide* mode\n const suppressGuide = guide === false && previousConformedValue !== undefined\n\n // Calculate lengths once for performance\n const rawValueLength = rawValue.length\n const previousConformedValueLength = previousConformedValue.length\n const placeholderLength = placeholder.length\n const maskLength = mask.length\n\n // This tells us the number of edited characters and the direction in which they were edited (+/-)\n const editDistance = rawValueLength - previousConformedValueLength\n\n // In *no guide* mode, we need to know if the user is trying to add a character or not\n const isAddition = editDistance > 0\n\n // Tells us the index of the first change. For (438) 394-4938 to (38) 394-4938, that would be 1\n const indexOfFirstChange = currentCaretPosition + (isAddition ? -editDistance : 0)\n\n // We're also gonna need the index of last change, which we can derive as follows...\n const indexOfLastChange = indexOfFirstChange + Math.abs(editDistance)\n\n // If `conformToMask` is configured to keep character positions, that is, for mask 111, previous value\n // _2_ and raw value 3_2_, the new conformed value should be 32_, not 3_2 (default behavior). That's in the case of\n // addition. And in the case of deletion, previous value _23, raw value _3, the new conformed string should be\n // __3, not _3_ (default behavior)\n //\n // The next block of logic handles keeping character positions for the case of deletion. (Keeping\n // character positions for the case of addition is further down since it is handled differently.)\n // To do this, we want to compensate for all characters that were deleted\n if (keepCharPositions === true && !isAddition) {\n // We will be storing the new placeholder characters in this variable.\n let compensatingPlaceholderChars = emptyString\n\n // For every character that was deleted from a placeholder position, we add a placeholder char\n for (let i = indexOfFirstChange; i < indexOfLastChange; i++) {\n if (placeholder[i] === placeholderChar) {\n compensatingPlaceholderChars += placeholderChar\n }\n }\n\n // Now we trick our algorithm by modifying the raw value to make it contain additional placeholder characters\n // That way when the we start laying the characters again on the mask, it will keep the non-deleted characters\n // in their positions.\n rawValue = (\n rawValue.slice(0, indexOfFirstChange) +\n compensatingPlaceholderChars +\n rawValue.slice(indexOfFirstChange, rawValueLength)\n )\n }\n\n // Convert `rawValue` string to an array, and mark characters based on whether they are newly added or have\n // existed in the previous conformed value. Identifying new and old characters is needed for `conformToMask`\n // to work if it is configured to keep character positions.\n const rawValueArr = rawValue\n .split(emptyString)\n .map((char, i) => ({ char, isNew: i >= indexOfFirstChange && i < indexOfLastChange }))\n\n // The loop below removes masking characters from user input. For example, for mask\n // `00 (111)`, the placeholder would be `00 (___)`. If user input is `00 (234)`, the loop below\n // would remove all characters but `234` from the `rawValueArr`. The rest of the algorithm\n // then would lay `234` on top of the available placeholder positions in the mask.\n for (let i = rawValueLength - 1; i >= 0; i--) {\n const { char } = rawValueArr[i]\n\n if (char !== placeholderChar) {\n const shouldOffset = i >= indexOfFirstChange && previousConformedValueLength === maskLength\n\n if (char === placeholder[(shouldOffset) ? i - editDistance : i]) {\n rawValueArr.splice(i, 1)\n }\n }\n }\n\n // This is the variable that we will be filling with characters as we figure them out\n // in the algorithm below\n let conformedValue = emptyString\n let someCharsRejected = false\n\n // Ok, so first we loop through the placeholder looking for placeholder characters to fill up.\n placeholderLoop: for (let i = 0; i < placeholderLength; i++) {\n const charInPlaceholder = placeholder[i]\n\n // We see one. Let's find out what we can put in it.\n if (charInPlaceholder === placeholderChar) {\n // But before that, do we actually have any user characters that need a place?\n if (rawValueArr.length > 0) {\n // We will keep chipping away at user input until either we run out of characters\n // or we find at least one character that we can map.\n while (rawValueArr.length > 0) {\n // Let's retrieve the first user character in the queue of characters we have left\n const shift = rawValueArr.shift();\n let rawValueChar: string = '', isNew: boolean = false;\n if (shift) {\n rawValueChar = shift.char;\n isNew = shift.isNew;\n }\n\n // If the character we got from the user input is a placeholder character (which happens\n // regularly because user input could be something like (540) 90_-____, which includes\n // a bunch of `_` which are placeholder characters) and we are not in *no guide* mode,\n // then we map this placeholder character to the current spot in the placeholder\n if (rawValueChar === placeholderChar && suppressGuide !== true) {\n conformedValue += placeholderChar\n\n // And we go to find the next placeholder character that needs filling\n continue placeholderLoop\n\n // Else if, the character we got from the user input is not a placeholder, let's see\n // if the current position in the mask can accept it.\n } else if (mask[i].test(rawValueChar)) {\n // we map the character differently based on whether we are keeping character positions or not.\n // If any of the conditions below are met, we simply map the raw value character to the\n // placeholder position.\n if (\n keepCharPositions !== true ||\n isNew === false ||\n previousConformedValue === emptyString ||\n guide === false ||\n !isAddition\n ) {\n conformedValue += rawValueChar\n } else {\n // We enter this block of code if we are trying to keep character positions and none of the conditions\n // above is met. In this case, we need to see if there's an available spot for the raw value character\n // to be mapped to. If we couldn't find a spot, we will discard the character.\n //\n // For example, for mask `1111`, previous conformed value `_2__`, raw value `942_2__`. We can map the\n // `9`, to the first available placeholder position, but then, there are no more spots available for the\n // `4` and `2`. So, we discard them and end up with a conformed value of `92__`.\n const rawValueArrLength = rawValueArr.length\n let indexOfNextAvailablePlaceholderChar = null\n\n // Let's loop through the remaining raw value characters. We are looking for either a suitable spot, ie,\n // a placeholder character or a non-suitable spot, ie, a non-placeholder character that is not new.\n // If we see a suitable spot first, we store its position and exit the loop. If we see a non-suitable\n // spot first, we exit the loop and our `indexOfNextAvailablePlaceholderChar` will stay as `null`.\n for (let i = 0; i < rawValueArrLength; i++) {\n const charData = rawValueArr[i]\n\n if (charData.char !== placeholderChar && charData.isNew === false) {\n break\n }\n\n if (charData.char === placeholderChar) {\n indexOfNextAvailablePlaceholderChar = i\n break\n }\n }\n\n // If `indexOfNextAvailablePlaceholderChar` is not `null`, that means the character is not blocked.\n // We can map it. And to keep the character positions, we remove the placeholder character\n // from the remaining characters\n if (indexOfNextAvailablePlaceholderChar !== null) {\n conformedValue += rawValueChar\n rawValueArr.splice(indexOfNextAvailablePlaceholderChar, 1)\n\n // If `indexOfNextAvailablePlaceholderChar` is `null`, that means the character is blocked. We have to\n // discard it.\n } else {\n i--\n }\n }\n\n // Since we've mapped this placeholder position. We move on to the next one.\n continue placeholderLoop\n } else {\n someCharsRejected = true\n }\n }\n }\n\n // We reach this point when we've mapped all the user input characters to placeholder\n // positions in the mask. In *guide* mode, we append the left over characters in the\n // placeholder to the `conformedString`, but in *no guide* mode, we don't wanna do that.\n //\n // That is, for mask `(111)` and user input `2`, we want to return `(2`, not `(2__)`.\n if (suppressGuide === false) {\n conformedValue += placeholder.substr(i, placeholderLength)\n }\n\n // And we break\n break\n\n // Else, the charInPlaceholder is not a placeholderChar. That is, we cannot fill it\n // with user input. So we just map it to the final output\n } else {\n conformedValue += charInPlaceholder\n }\n }\n\n // The following logic is needed to deal with the case of deletion in *no guide* mode.\n //\n // Consider the silly mask `(111) /// 1`. What if user tries to delete the last placeholder\n // position? Something like `(589) /// `. We want to conform that to `(589`. Not `(589) /// `.\n // That's why the logic below finds the last filled placeholder character, and removes everything\n // from that point on.\n if (suppressGuide && isAddition === false) {\n let indexOfLastFilledPlaceholderChar = null\n\n // Find the last filled placeholder position and substring from there\n for (let i = 0; i < conformedValue.length; i++) {\n if (placeholder[i] === placeholderChar) {\n indexOfLastFilledPlaceholderChar = i\n }\n }\n\n if (indexOfLastFilledPlaceholderChar !== null) {\n // We substring from the beginning until the position after the last filled placeholder char.\n conformedValue = conformedValue.substr(0, indexOfLastFilledPlaceholderChar + 1)\n } else {\n // If we couldn't find `indexOfLastFilledPlaceholderChar` that means the user deleted\n // the first character in the mask. So we return an empty string.\n conformedValue = emptyString\n }\n }\n\n return { conformedValue, meta: { someCharsRejected } }\n}\n\n\nexport function convertMaskToPlaceholder(mask = emptyArray, placeholderChar = defaultPlaceholderChar) {\n if (!isArray(mask)) {\n throw new Error(\n 'Text-mask:convertMaskToPlaceholder; The mask property must be an array.'\n )\n }\n\n if (mask.indexOf(placeholderChar) !== -1) {\n throw new Error(\n 'Placeholder character must not be used as part of the mask. Please specify a character ' +\n 'that is not present in your mask as your placeholder character.\\n\\n' +\n `The placeholder character that was received is: ${JSON.stringify(placeholderChar)}\\n\\n` +\n `The mask that was received is: ${JSON.stringify(mask)}`\n )\n }\n\n return mask.map((char: any) => {\n return (char instanceof RegExp) ? placeholderChar : char\n }).join('')\n}\n\n/**\n * Due to a bug on textmask, the requireDecimal its not working, so this function solves this problem\n * @param maskType \n * @param numberValue \n * @param decimalsFormat \n * @returns \n */\nfunction formatNumber(maskType: any, numberValue: any, decimalsFormat: number = 2) {\n if (!numberValue && numberValue !== 0) {\n return '';\n }\n\n if (!numberValue.split) {\n numberValue += '';\n numberValue = numberValue.replace('.', ',');\n }\n\n const vals = numberValue.split(',');\n\n if (!maskType.textMask || typeof maskType.textMask !== 'function') {\n return '';\n }\n\n const mask = maskType.textMask(vals[0]);\n\n let decimals = ''\n if (decimalsFormat == undefined) {\n decimals = vals.length > 1 ? ',' + vals[1] : '';\n } else {\n decimals = vals.length > 1 ? (vals[1] < 10 ? vals[1].toString() + '0' : vals[1].toString()) : '00';\n if (decimals.length > decimalsFormat) {\n decimals = decimals.substring(0, decimalsFormat);\n }\n }\n\n let conformedValue = conformToMask(\n numberValue,\n mask,\n { guide: false }\n ).conformedValue\n\n\n let suffix = ''\n if (conformedValue.indexOf('%') >= 0) {\n conformedValue = conformedValue.replace('%', '')\n suffix = '%'\n }\n return conformedValue + (decimalsFormat > 0 ? ',' + decimals : '') + suffix;\n}","import {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n modulo11,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty\n} from './utils';\nexport { validateBr } from './validate';\nimport * as mask from './mask';\nimport { MASKS, MASKSIE } from './mask';\nimport { PLACAS_RANGE } from './placa';\nimport { ESTADOS } from './estados';\nimport { BigObject } from './interfaces';\n\nexport const utilsBr = {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n modulo11,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty,\n MASKS,\n MASKSIE,\n PLACAS_RANGE,\n ESTADOS\n};\n\nexport const maskBr: BigObject<Function> = mask.maskBr;","export const LOCALIZACAO_RUAS = ['Dois', 'Um', 'Principal', 'São José', 'Onze', 'São Paulo', 'Doze', 'Treze',\n 'Santo Antônio', 'Brasil', 'A', 'São Pedro', 'Quinze', 'São João',\n 'Quatorze', 'São Francisco', 'Sete de Setembro', 'Dezesseis', 'Quinze de Novembro',\n 'Tiradentes', 'Dezessete', 'Vinte', 'Bahia', 'Amazonas', 'Dezoito', 'São Sebastião', 'Paraná', 'Bela Vista', 'Santa Luzia', 'São Jorge',\n 'Castro Alves', 'Duque de Caxias', 'Projetada', 'Rui Barbosa', 'Santa Catarina', 'Minas Gerais', 'Santos Dumont',\n 'Espírito Santo', 'Vinte e Um', 'Vinte e Dois', 'da Paz', 'Treze de Maio', 'Rio de Janeiro',\n 'Goiás', 'Ceará', 'Belo Horizonte', 'das Flores', 'Sergipe', 'Vitória', 'José Bonifácio',\n 'Pernambuco', 'Piauí', 'Vinte e Três', 'Mato Grosso', 'Santa Maria', 'Dom Pedro II',\n 'Primeiro de Maio', 'Pará', 'Maranhão', 'Alagoas', 'Boa Vista', 'São Luiz', 'Vinte e Quatro', 'Paraíba', 'Santa Rita'];\n\nexport const LOCALIZACAO_LOGRADOUROS = ['Avenida', 'Rua', 'Marginal'];\n\nexport const LOCALIZACAO_COMPLEMENTOS = [`Apartamento`, 'Aeroporto', 'Anexo', `Andar`, `Bloco`, `Conjunto`, 'Cobertura', `Casa`,\n 'Fazenda', 'Fundos', 'Galeria', `Galpão`, `Lote`, `Loja`, `Portão`, `Quadra`, `Sala`, `Sobreloja`, 'Subsolo', 'Terreo'];\n\nexport const LOCALIZACAO_BAIRROS = ['Centro', 'Bela Vista', 'São José', 'Santo Antônio', 'São Francisco', 'Vila Nova',\n 'Boa Vista', 'Industrial', 'São Cristóvão', 'Planalto'];\n\nexport const LOCALIZACAO_ESTADOS = [\n { \"nome\": \"Acre\", \"uf\": \"AC\" },\n { \"nome\": \"Alagoas\", \"uf\": \"AL\" },\n { \"nome\": \"Amapá\", \"uf\": \"AP\" },\n { \"nome\": \"Amazonas\", \"uf\": \"AM\" },\n { \"nome\": \"Bahia\", \"uf\": \"BA\" },\n { \"nome\": \"Ceará\", \"uf\": \"CE\" },\n { \"nome\": \"Distrito Federal\", \"uf\": \"DF\" },\n { \"nome\": \"Espírito Santo\", \"uf\": \"ES\" },\n { \"nome\": \"Goiás\", \"uf\": \"GO\" },\n { \"nome\": \"Maranhão\", \"uf\": \"MA\" },\n { \"nome\": \"Mato Grosso\", \"uf\": \"MT\" },\n { \"nome\": \"Mato Grosso do Sul\", \"uf\": \"MS\" },\n { \"nome\": \"Minas Gerais\", \"uf\": \"MG\" },\n { \"nome\": \"Pará\", \"uf\": \"PA\" },\n { \"nome\": \"Paraíba\", \"uf\": \"PB\" },\n { \"nome\": \"Paraná\", \"uf\": \"PR\" },\n { \"nome\": \"Pernambuco\", \"uf\": \"PE\" },\n { \"nome\": \"Piauí\", \"uf\": \"PI\" },\n { \"nome\": \"Rio de Janeiro\", \"uf\": \"RJ\" },\n { \"nome\": \"Rio Grande do Norte\", \"uf\": \"RN\" },\n { \"nome\": \"Rio Grande do Sul\", \"uf\": \"RS\" },\n { \"nome\": \"Rondônia\", \"uf\": \"RO\" },\n { \"nome\": \"Roraima\", \"uf\": \"RR\" },\n { \"nome\": \"Santa Catarina\", \"uf\": \"SC\" },\n { \"nome\": \"São Paulo\", \"uf\": \"SP\" },\n { \"nome\": \"Sergipe\", \"uf\": \"SE\" },\n { \"nome\": \"Tocantins\", \"uf\": \"TO\" }\n];\nexport const LOCALIZACAO_CIDADES = [\n ['São Paulo', 'São Paulo'],\n ['Rio de Janeiro', 'Rio de Janeiro'],\n ['Brasília', 'Distrito Federal'],\n ['Salvador', 'Bahia'],\n ['Fortaleza', 'Ceará'],\n ['Belo Horizonte', 'Minas Gerais'],\n ['Manaus', 'Amazonas'],\n ['Curitiba', 'Paraná'],\n ['Recife', 'Pernambuco'],\n ['Goiânia', 'Goiás'],\n ['Belém', 'Pará'],\n ['Porto Alegre', 'Rio Grande do Sul'],\n ['Guarulhos', 'São Paulo'],\n ['Campinas', 'São Paulo'],\n ['São Luís', 'Maranhão'],\n ['São Gonçalo', 'Rio de Janeiro'],\n ['Maceió', 'Alagoas'],\n ['Duque de Caxias', 'Rio de Janeiro'],\n ['Cuiabá', 'Mato Grosso'],\n ['Campo Grande', 'Mato Grosso do Sul'],\n ['Natal', 'Rio Grande do Norte'],\n ['Teresina', 'Piauí'],\n ['São Bernardo do Campo', 'São Paulo'],\n ['Nova Iguaçu', 'Rio de Janeiro'],\n ['João Pessoa', 'Paraíba'],\n ['São José dos Campos', 'São Paulo'],\n ['Santo André', 'São Paulo'],\n ['Ribeirão Preto', 'São Paulo'],\n ['Jaboatão dos Guararapes', 'Pernambuco'],\n ['Osasco', 'São Paulo'],\n ['Uberlândia', 'Minas Gerais'],\n ['Sorocaba', 'São Paulo'],\n ['Contagem', 'Minas Gerais'],\n ['Aracaju', 'Sergipe'],\n ['Feira de Santana', 'Bahia'],\n ['Cuiabá', 'Mato Grosso'],\n ['Joinville', 'Santa Catarina'],\n ['Aparecida de Goiânia', 'Goiás'],\n ['Londrina', 'Paraná'],\n ['Juiz de Fora', 'Minas Gerais'],\n ['Ananindeua', 'Pará'],\n ['Porto Velho', 'Rondônia'],\n ['Serra', 'Espírito Santo'],\n ['Niterói', 'Rio de Janeiro'],\n ['Belford Roxo', 'Rio de Janeiro'],\n ['Caxias do Sul', 'Rio Grande do Sul'],\n ['Campos dos Goytacazes Campos dos Goytacazes', 'Rio de Janeiro'],\n ['Macapá', 'Amapá'],\n ['Florianópolis', 'Santa Catarina'],\n ['Vila Velha', 'Espírito Santo'],\n ['Mauá', 'São Paulo'],\n ['São João de Meriti', 'Rio de Janeiro'],\n ['São José do Rio Preto', 'São Paulo'],\n ['Mogi das Cruzes', 'São Paulo'],\n ['Betim', 'Minas Gerais'],\n ['Santos', 'São Paulo'],\n ['Diadema', 'São Paulo'],\n ['Maringá', 'Paraná'],\n ['Jundiaí', 'São Paulo'],\n ['Campina Grande', 'Paraíba'],\n ['Montes Claros', 'Minas Gerais'],\n ['Rio Branco', 'Acre'],\n ['Piracicaba', 'São Paulo'],\n ['Carapicuíba', 'São Paulo'],\n ['Boa Vista', 'Roraima'],\n ['Olinda', 'Pernambuco'],\n ['Anápolis', 'Goiás'],\n ['Cariacica', 'Espírito Santo'],\n ['Bauru', 'São Paulo'],\n ['Itaquaquecetuba', 'São Paulo'],\n ['São Vicente', 'São Paulo'],\n ['Vitória', 'Espírito Santo'],\n ['Caucaia', 'Ceará'],\n ['Caruaru', 'Pernambuco'],\n ['Blumenau', 'Santa Catarina'],\n ['Franca', 'São Paulo'],\n ['Ponta Grossa', 'Paraná'],\n ['Petrolina', 'Pernambuco'],\n ['Canoas', 'Rio Grande do Sul'],\n ['Pelotas', 'Rio Grande do Sul'],\n ['Vitória da Conquista', 'Bahia'],\n ['Ribeirão das Neves', 'Minas Gerais'],\n ['Uberaba', 'Minas Gerais'],\n ['Paulista', 'Pernambuco'],\n ['Cascavel', 'Paraná'],\n ['Praia Grande', 'São Paulo'],\n ['São José dos Pinhais', 'Paraná'],\n ['Guarujá', 'São Paulo'],\n ['Taubaté', 'São Paulo'],\n ['Petrópolis', 'Rio de Janeiro'],\n ['Limeira', 'São Paulo'],\n ['Santarém', 'Pará'],\n ['Camaçari', 'Bahia'],\n ['Palmas', 'Tocantins'],\n ['Suzano', 'São Paulo'],\n ['Mossoró', 'Rio Grande do Norte'],\n ['Taboão da Serra', 'São Paulo'],\n ['Várzea Grande', 'Mato Grosso'],\n ['Sumaré', 'São Paulo'],\n ['Santa Maria', 'Rio Grande do Sul'],\n ['Gravataí', 'Rio Grande do Sul'],\n ['Governador Valadares', 'Minas Gerais'],\n ['Marabá', 'Pará'],\n ['Juazeiro do Norte', 'Ceará'],\n ['Barueri', 'São Paulo'],\n ['Embu das Artes', 'São Paulo'],\n ['Volta Redonda', 'Rio de Janeiro'],\n ['Ipatinga', 'Minas Gerais'],\n ['Parnamirim', 'Rio Grande do Norte'],\n ['Imperatriz', 'Maranhão'],\n ['Foz do Iguaçu', 'Paraná'],\n ['Macaé', 'Rio de Janeiro'],\n ['Viamão', 'Rio Grande do Sul'],\n ['São Carlos', 'São Paulo'],\n ['Indaiatuba', 'São Paulo'],\n ['Cotia', 'São Paulo'],\n ['Novo Hamburgo', 'Rio Grande do Sul'],\n ['São José', 'Santa Catarina'],\n ['Magé', 'Rio de Janeiro'],\n ['Colombo', 'Paraná'],\n ['Itaboraí', 'Rio de Janeiro'],\n ['Sete Lagoas', 'Minas Gerais'],\n ['Americana', 'São Paulo'],\n ['Marília', 'São Paulo'],\n ['Divinópolis', 'Minas Gerais'],\n ['Itapevi', 'São Paulo'],\n ['São Leopoldo', 'Rio Grande do Sul'],\n ['Araraquara', 'São Paulo'],\n ['Rio Verde', 'Goiás'],\n ['Jacareí', 'São Paulo'],\n ['Rondonópolis', 'Mato Grosso'],\n ['Arapiraca', 'Alagoas'],\n ['Hortolândia', 'São Paulo'],\n ['Presidente Prudente', 'São Paulo'],\n ['Maracanaú', 'Ceará'],\n ['Dourados', 'Mato Grosso do Sul'],\n ['Chapecó Chapecó', 'Santa Catarina'],\n ['Cabo Frio', 'Rio de Janeiro'],\n ['Itajaí', 'Santa Catarina'],\n ['Santa Luzia', 'Minas Gerais'],\n ['Juazeiro', 'Bahia'],\n ['Criciúma', 'Santa Catarina'],\n ['Itabuna', 'Bahia'],\n ['Águas Lindas de Goiás', 'Goiás'],\n ['Rio Grande', 'Rio Grande do Sul'],\n ['Alvorada', 'Rio Grande do Sul'],\n ['Cachoeiro de Itapemirim', 'Espírito Santo'],\n ['Sobral', 'Ceará'],\n ['Luziânia', 'Goiás'],\n ['Parauapebas', 'Pará'],\n ['Cabo de Santo Agostinho', 'Pernambuco'],\n ['Rio Claro', 'São Paulo'],\n ['Angra dos Reis', 'Rio de Janeiro'],\n ['Passo Fundo', 'Rio Grande do Sul'],\n ['Castanhal', 'Pará'],\n ['Lauro de Freitas', 'Bahia'],\n ['Araçatuba', 'São Paulo'],\n ['Ferraz de Vasconcelos', 'São Paulo'],\n ['Santa Bárbara do Oeste', 'São Paulo'],\n ['Nova Friburgo', 'Rio de Janeiro'],\n ['Barra Mansa', 'Rio de Janeiro'],\n ['Nossa Senhora do Socorro', 'Sergipe'],\n ['Teresópolis', 'Rio de Janeiro'],\n ['Guarapuava', 'Paraná'],\n ['Araguaína', 'Tocantins'],\n ['Ibirité', 'Minas Gerais'],\n ['Jaraguá do Sul', 'Santa Catarina'],\n ['São José de Ribamar', 'Maranhão'],\n ['Mesquita', 'Rio de Janeiro'],\n ['Francisco Morato', 'São Paulo'],\n ['Itapecerica da Serra', 'São Paulo'],\n ['Itu', 'São Paulo'],\n ['Linhares', 'Espírito Santo'],\n ['Palhoça', 'Santa Catarina'],\n ['Timon', 'Maranhão'],\n ['Bragança Paulista', 'São Paulo'],\n ['Valparaíso de Goiás', 'Goiás'],\n ['Pindamonhangaba', 'São Paulo'],\n ['Poços de Caldas', 'Minas Gerais'],\n ['Caxias', 'Maranhão'],\n ['Itapetininga', 'São Paulo'],\n ['Nilópolis', 'Rio de Janeiro'],\n ['Ilhéus', 'Bahia'],\n ['Maricá', 'Rio de Janeiro'],\n ['São Caetano do Sul', 'São Paulo'],\n ['Teixeira de Freitas', 'Bahia'],\n ['Camaragibe', 'Pernambuco'],\n ['Abaetetuba', 'Pará'],\n ['Lages', 'Santa Catarina'],\n ['Jequié', 'Bahia'],\n ['Barreiras', 'Bahia'],\n ['Paranaguá', 'Paraná'],\n ['Franco da Rocha', 'São Paulo'],\n ['Parnaíba', 'Piauí'],\n ['Patos de Minas', 'Minas Gerais'],\n ['Mogi Guaçu', 'São Paulo'],\n ['Alagoinhas', 'Bahia'],\n ['Pouso Alegre', 'Minas Gerais'],\n ['Rio das Ostras', 'Rio de Janeiro'],\n ['Queimados', 'Rio de Janeiro'],\n ['Jaú', 'São Paulo'],\n ['Porto Seguro', 'Bahia'],\n ['Botucatu', 'São Paulo'],\n ['Araucária', 'Paraná'],\n ['Sinop', 'Mato Grosso'],\n ['Atibaia', 'São Paulo'],\n ['Balneário Camboriú', 'Santa Catarina'],\n ['Sapucaia do Sul', 'Rio Grande do Sul'],\n ['Toledo', 'Paraná'],\n ['Teófilo Otoni', 'Minas Gerais'],\n ['Garanhuns', 'Pernambuco'],\n ['Santana de Parnaíba', 'São Paulo'],\n ['Vitória de Santo Antão', 'Pernambuco'],\n ['Cametá', 'Pará'],\n ['Barbacena', 'Minas Gerais'],\n ['Santa Rita', 'Paraíba'],\n ['Sabará', 'Minas Gerais'],\n ['Varginha', 'Minas Gerais'],\n ['Apucarana', 'Paraná'],\n ['Brusque', 'Santa Catarina'],\n ['Simões Filho', 'Bahia'],\n ['Araras', 'São Paulo'],\n ['Itaguaí', 'Rio de Janeiro'],\n ['Araruama', 'Rio de Janeiro'],\n ['Pinhais', 'Paraná'],\n ['Crato', 'Ceará'],\n ['Campo Largo', 'Paraná'],\n ['Marituba', 'Pará'],\n ['Resende', 'Rio de Janeiro'],\n ['Cubatão', 'São Paulo'],\n ['São Mateus', 'Espírito Santo'],\n ['Santa Cruz do Sul', 'Rio Grande do Sul'],\n ['Cachoeirinha', 'Rio Grande do Sul'],\n ['Itapipoca', 'Ceará'],\n ['Valinhos', 'São Paulo'],\n ['Maranguape', 'Ceará'],\n ['Ji-Paraná', 'Rondônia'],\n ['Conselheiro Lafaiete', 'Minas Gerais'],\n ['São Félix do Xingu', 'Pará'],\n ['Bragança', 'Pará'],\n ['Vespasiano', 'Minas Gerais'],\n ['Trindade', 'Goiás'],\n ['Uruguaiana', 'Rio Grande do Sul'],\n ['Sertãozinho', 'São Paulo'],\n ['Jandira', 'São Paulo'],\n ['Guarapari', 'Espírito Santo'],\n ['Barcarena', 'Pará'],\n ['Birigui', 'São Paulo'],\n ['Ribeirão Pires', 'São Paulo'],\n ['Arapongas', 'Paraná'],\n ['Codó', 'Maranhão'],\n ['Colatina', 'Espírito Santo'],\n ['Votorantim', 'São Paulo'],\n ['Paço do Lumiar', 'Maranhão'],\n ['Barretos', 'São Paulo'],\n ['Catanduva', 'São Paulo'],\n ['Várzea Paulista', 'São Paulo'],\n ['Guaratinguetá', 'São Paulo'],\n ['Tatuí', 'São Paulo'],\n ['Formosa', 'Goiás'],\n ['Caraguatatuba', 'São Paulo'],\n ['Três Lagoas', 'Mato Grosso do Sul'],\n ['Santana', 'Amapá'],\n ['Bagé', 'Rio Grande do Sul'],\n ['Itatiba', 'São Paulo'],\n ['Bento Gonçalves', 'Rio Grande do Sul'],\n ['Itabira', 'Minas Gerais'],\n ['Salto', 'São Paulo'],\n ['Almirante Tamandaré', 'Paraná'],\n ['Paulo Afonso', 'Bahia'],\n ['Poá', 'São Paulo'],\n ['Araguari', 'Minas Gerais'],\n ['Igarassu', 'Pernambuco'],\n ['Novo Gama', 'Goiás'],\n ['Ubá', 'Minas Gerais'],\n ['Senador Canedo', 'Goiás'],\n ['Passos', 'Minas Gerais'],\n ['Altamira', 'Pará'],\n ['Parintins', 'Amazonas'],\n ['Tucuruí', 'Pará'],\n ['Ourinhos', 'São Paulo'],\n ['Eunápolis', 'Bahia'],\n ['São Lourenço da Mata', 'Pernambuco'],\n ['Paragominas', 'Pará'],\n ['Piraquara', 'Paraná'],\n ['Açailândia', 'Maranhão'],\n ['Umuarama', 'Paraná'],\n ['Corumbá', 'Mato Grosso do Sul'],\n ['Coronel Fabriciano', 'Minas Gerais'],\n ['Paulínia', 'São Paulo'],\n ['Catalão', 'Goiás'],\n ['Muriaé', 'Minas Gerais'],\n ['Santa Cruz do Capibaribe', 'Pernambuco'],\n ['Ariquemes', 'Rondônia'],\n ['Patos', 'Paraíba'],\n ['Cambé', 'Paraná'],\n ['Tailândia', 'Pará'],\n ['Araxá', 'Minas Gerais'],\n ['Erechim', 'Rio Grande do Sul'],\n ['Tubarão', 'Santa Catarina'],\n ['Bacabal', 'Maranhão'],\n ['Japeri', 'Rio de Janeiro'],\n ['Itumbiara', 'Goiás'],\n ['Ituiutaba', 'Minas Gerais'],\n ['São Pedro da Aldeia', 'Rio de Janeiro'],\n ['Lagarto', 'Sergipe'],\n ['Assis', 'São Paulo'],\n ['Lavras', 'Minas Gerais'],\n ['Tangará da Serra', 'Mato Grosso'],\n ['Leme', 'São Paulo'],\n ['Itaperuna', 'Rio de Janeiro'],\n ['Breves', 'Pará'],\n ['Nova Serrana', 'Minas Gerais'],\n ['Iguatu', 'Ceará'],\n ['São Gonçalo do Amarante', 'Rio Grande do Norte'],\n ['Itanhaém', 'São Paulo'],\n ['Santo Antônio de Jesus', 'Bahia'],\n ['Caieiras', 'São Paulo'],\n ['Itacoatiara', 'Amazonas'],\n ['Itaituba', 'Pará'],\n ['Aracruz', 'Espírito Santo'],\n ['Jataí', 'Goiás'],\n ['Barra do Piraí', 'Rio de Janeiro'],\n ['Fazenda Rio Grande', 'Paraná'],\n ['Mairiporã', 'São Paulo']\n];","\nexport const AIH_ESTADOS = {\n 'AC': '12', 'AL': '27', 'AP': '16', 'AM': '13', 'BA': '29', 'CE': '23', 'DF': '53',\n 'ES': '32', 'GO': '52', 'MA': '21', 'MT': '51', 'MS': '50', 'MG': '31', 'PA': '15',\n 'PB': '25', 'PR': '41', 'PE': '26', 'PI': '22', 'RJ': '33', 'RN': '24', 'RS': '43',\n 'RO': '11', 'RR': '14', 'SC': '42', 'SP': '35', 'SE': '28', 'TO': '17'\n};\nexport const AIH_TIPOS = {\n '1': 'AIH Normal',\n '2': 'APACs',\n '3': 'Códigos de procedimentos específicos da CNRAC',\n '4': 'APACs da CNRAC',\n '5': 'Procedimentos de longa permanência na AIH'\n};\n\nexport const CID_NAME = {\n 'A00-B99': 'Algumas doenças infecciosas e parasitárias',\n 'C00-D48': 'Neoplasmas (tumores)',\n 'D50-D89': 'Doenças do sangue e dos órgãos hematopoéticos e alguns transtornos imunitários',\n 'E00-E90': 'Doenças endócrinas, nutricionais e metabólicas',\n 'F00-F99': 'Transtornos mentais e comportamentais',\n 'G00-G99': 'Doenças do sistema nervoso',\n 'H00-H59': 'Doenças do olho e anexos',\n 'H60-H95': 'Doenças do ouvido e da apófise mastoide',\n 'I00-I99': 'Doenças do aparelho circulatório',\n 'J00-J99': 'Doenças do aparelho respiratório',\n 'K00-K93': 'Doenças do aparelho digestivo',\n 'L00-L99': 'Doenças da pele e do tecido subcutâneo',\n 'M00-M99': 'Doenças do sistema osteomuscular e do tecido conjuntivo',\n 'N00-N99': 'Doenças do aparelho geniturinário',\n 'O00-O99': 'Gravidez, parto e puerpério',\n 'P00-P96': 'Algumas afecções originadas no período perinatal',\n 'Q00-Q99': 'Malformações congênitas, deformidades e anomalias cromossômicas',\n 'R00-R99': 'Sintomas, sinais e achados anormais de exames clínicos e de laboratório, não classificados em outra parte',\n 'S00-T98': 'Lesões, envenenamentos e algumas outras conseqüências de causas externas',\n 'V01-Y98': 'Causas externas de morbidade e de mortalidade',\n 'Z00-Z99': 'Fatores que influenciam o estado de saúde e o contato com os serviços de saúde',\n 'U00-U99': 'Códigos para propósitos especiais',\n}\n\nexport const CID_REGEX = {\n 'A00-B99': /[A|B][0-9][0-9]/g,\n 'C00-D48': /[C0-90-9|[D0-90-9]/g,\n 'D50-D89': /[A|B][0-9][0-9]/g,\n 'E00-E90': /[A|B][0-9][0-9]/g,\n 'F00-F99': /[A|B][0-9][0-9]/g,\n 'G00-G99': /[A|B][0-9][0-9]/g,\n 'H00-H59': /[A|B][0-9][0-9]/g,\n 'H60-H95': /[A|B][0-9][0-9]/g,\n 'I00-I99': /[A|B][0-9][0-9]/g,\n 'J00-J99': /[A|B][0-9][0-9]/g,\n 'K00-K93': /[A|B][0-9][0-9]/g,\n 'L00-L99': /[A|B][0-9][0-9]/g,\n 'M00-M99': /[A|B][0-9][0-9]/g,\n 'N00-N99': /[A|B][0-9][0-9]/g,\n 'O00-O99': /[A|B][0-9][0-9]/g,\n 'P00-P96': /[A|B][0-9][0-9]/g,\n 'Q00-Q99': /[A|B][0-9][0-9]/g,\n 'R00-R99': /[A|B][0-9][0-9]/g,\n 'S00-T98': /[A|B][0-9][0-9]/g,\n 'V01-Y98': /[A|B][0-9][0-9]/g,\n 'Z00-Z99': /[A|B][0-9][0-9]/g,\n 'U00-U99': /[A|B][0-9][0-9]/g,\n}\n\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { maskBr } from \"./../js-brasil\";\n\n@Pipe({\n name: \"cpf\",\n standalone: true,\n})\nexport class CPFPipe implements PipeTransform {\n transform(cpfValue: string | number | null | undefined): string {\n return maskBr['cpf'](cpfValue ?? \"\");\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { BenchmarkingChart } from \"../benchmarking.interface\";\n\n@Component({\n selector: \"mapa-benchmark-indicator\",\n templateUrl: \"./benchmark-indicator.component.html\",\n styleUrls: [\n \"./benchmark-indicator.component.scss\",\n \"./../styles/benchmark.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n standalone: true,\n})\nexport class MapaBenchmarkIndicatorComponent {\n @Input() item!: BenchmarkingChart;\n}\n","<div\n class=\"indicator\"\n [style.backgroundColor]=\"item.classificationColor\"\n>\n <div class=\"indicator__markers\">\n @for (mark of item.marks ?? []; track mark.name + '-' + mark.value) {\n <div\n class=\"indicator__marker--arrow\"\n [ngStyle]=\"{\n left: mark.value + '%',\n borderTopColor: mark.color\n }\"\n [title]=\"mark.name + ' (' + mark.value + '%)'\"\n ></div>\n }\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { MapaBenchmarkIndicatorComponent } from \"./benchmark-indicator/benchmark-indicator.component\";\nimport { BenchmarkingChart } from \"./benchmarking.interface\";\n\n@Component({\n selector: \"mapa-benchmark-chart\",\n templateUrl: \"./benchmark-chart.component.html\",\n styleUrls: [\n \"./benchmark-chart.component.scss\",\n \"./styles/benchmark.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, MapaBenchmarkIndicatorComponent],\n standalone: true,\n})\nexport class MapaBenchmarkChartComponent {\n @Input() data!: BenchmarkingChart[];\n public scaleLabels: number[] = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];\n\n constructor() {}\n\n public setUnlabeledItem(item: BenchmarkingChart): BenchmarkingChart {\n return {\n ...item,\n classificationId: item.classificationId,\n classificationColor: item.classificationColor,\n interval: item.interval,\n }\n }\n\n public getWidth(item: BenchmarkingChart): string {\n const minWidth = 0;\n const interval = (item.interval || 0);\n if (interval < 10) return minWidth + 'px';\n return interval + '%';\n }\n}\n","<table class=\"indicator-chart\">\n <thead>\n <tr class=\"indicator-chart__head\">\n <th class=\"indicator-chart__column--description\"></th>\n <th class=\"indicator-chart__column indicator-chart__column--right\">\n <div class=\"indicator-chart__scale\">\n @for (label of scaleLabels; track label) {\n <span>{{ label }}</span>\n }\n </div>\n </th>\n </tr>\n </thead>\n <tbody>\n @for (item of data; track item) {\n <tr>\n <td class=\"indicator-chart__column--description\">{{ item.name }}</td>\n <td class=\"indicator-chart__column indicator-chart__column--right\">\n <div class=\"indicator-chart__column--positive\">\n <div class=\"indicator-chart__column-background\">\n <mapa-benchmark-indicator\n [item]=\"setUnlabeledItem(item)\"\n [style.width]=\"getWidth(item)\"\n ></mapa-benchmark-indicator>\n </div>\n </div>\n </td>\n <td class=\"indicator-chart__column--classification\">\n {{ item.interval }} %\n </td>\n </tr>\n }\n </tbody>\n</table>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { RouterModule } from \"@angular/router\";\nimport { Breadpiece } from \"../../../core/interfaces/bread-piece.interface\";\n\n@Component({\n selector: \"mapa-breadcrumb\",\n templateUrl: \"./breadcrumb.component.html\",\n styleUrl: \"./breadcrumb.component.scss\",\n imports: [CommonModule, RouterModule],\n standalone: true,\n})\nexport class MapaBreadcrumbComponent {\n @Input() items!: Breadpiece[];\n}\n\n","<section class=\"mapa-breadcrumb\" *ngIf=\"items && items.length > 0\">\n <span class=\"mapa-breadcrumb__item\" *ngFor=\"let item of items; let i = index\">\n <a *ngIf=\"item.url; else common\" [href]=\"item.url\" [routerLink]=\"item.url\"\n >{{ item.title }}</a\n >\n <ng-template #common>\n <span\n class=\"mapa-breadcrumb__item\"\n [class.mapa-breadcrumb__item--highlight]=\"items.length === i + 1\"\n >\n {{ item.title }}</span\n >\n </ng-template>\n <span class=\"mapa-breadcrumb__item--next\" *ngIf=\"i < items.length - 1\"\n >></span\n >\n </span>\n</section>\n","/*\n * Public API Surface of mapa-library-ui breadcrumb\n */\n\nexport * from './src/breadcrumb.component';\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'mapa-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n standalone: true\n})\nexport class ButtonComponent {\n @Input() color: 'primary' | 'accent' | 'basic' | null | undefined;\n @Input() disabled!: boolean;\n @Output() clicked: EventEmitter<void> = new EventEmitter<void>();\n\n onClick(): void {\n this.clicked.emit();\n }\n}\n","<button\n class=\"mapa-button\"\n (click)=\"onClick()\"\n [class.primary]=\"color === 'primary'\"\n [class.accent]=\"color === 'accent'\"\n [class.basic]=\"color === 'basic'\"\n [disabled]=\"disabled\"\n>\n <ng-content></ng-content>\n</button> ","/*\n * Public API Surface of mapa-library-ui button\n */\n\nexport * from './src/button.component';\n","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\nimport { ButtonIcon } from \"../../../core/interfaces/button-icon.interface\";\n\n@Component({\n selector: \"mapa-button-icon\",\n templateUrl: \"./button-icon.component.html\",\n styleUrl: \"./button-icon.component.scss\",\n imports: [CommonModule],\n standalone: true\n})\nexport class ButtonIconComponent implements OnInit, OnChanges {\n @Input() data!: ButtonIcon;\n @Output() clicked: EventEmitter<ButtonIcon> = new EventEmitter<ButtonIcon>();\n imgBase64!: SafeResourceUrl;\n\n onClick(data: ButtonIcon): void {\n this.clicked.emit(data);\n }\n\n constructor(private sanitizer: DomSanitizer) {}\n \n ngOnInit(): void {\n this.updateIcon();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"data\"]) {\n this.updateIcon();\n }\n }\n\n private updateIcon(): void {\n if (this.data.icon) {\n this.imgBase64 = this.sanitizer.bypassSecurityTrustResourceUrl(\n `data:image/svg+xml;base64,${this.data.icon}`\n );\n }\n }\n}\n\n","<div class=\"button-icon\" id=\"componentes\" *ngIf=\"data\">\n <div class=\"button-icon__icon\">\n <img *ngIf=\"imgBase64\" [src]=\"imgBase64\" />\n </div>\n <div class=\"button-icon__title\">\n {{ data.description }}\n </div>\n <div class=\"button-icon__preview\" (click)=\"onClick(data)\">\n Preview\n </div>\n</div>\n","/*\n * Public API Surface of mapa-library-ui button-icon\n */\n\nexport * from './src/button-icon.component';\n","import { CapabilityItem } from \"../interfaces/capability-item.interface\";\nimport { Indicators } from \"../interfaces/indicators.interface\";\n\nexport interface DetailedIndicatorItem {\n name: string;\n concept: string;\n interval: number;\n classificationId?: number;\n classificationName?: string;\n classificationColor?: string;\n}\n\nexport interface DetailedIndicatorSection {\n title: string;\n items: DetailedIndicatorItem[];\n}\n\nexport interface IndicatorCollections {\n all: CapabilityItem[];\n positive: CapabilityItem[];\n negative: CapabilityItem[];\n precipitation: CapabilityItem[];\n negligence: CapabilityItem[];\n}\n\nexport interface IndicatorCollectionOptions {\n includeDirectionSign?: boolean;\n}\n\nexport function normalizeText(value?: string | null): string {\n return (value || \"\").replace(/\\s+/g, \" \").trim();\n}\n\nexport function normalizeLookup(value?: string | null): string {\n return normalizeText(value)\n .toLocaleLowerCase()\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\");\n}\n\nexport function buildIndicatorCollections(\n indicators: Indicators[],\n options: IndicatorCollectionOptions = {},\n): IndicatorCollections {\n const collections: IndicatorCollections = {\n all: [],\n positive: [],\n negative: [],\n precipitation: [],\n negligence: [],\n };\n\n indicators.forEach((group) => {\n const normalizedCompetenceName = normalizeLookup(group.competenceName);\n const isPrecipitationRisk = normalizedCompetenceName.includes(\"precipita\");\n const isNegligenceRisk = normalizedCompetenceName.includes(\"neglig\");\n const isNegativeGroup = normalizedCompetenceName.includes(\"negativ\");\n\n group.indicators.forEach((indicator) => {\n const item = buildIndicatorItem(indicator, {\n includeDirectionSign: options.includeDirectionSign,\n risk: isPrecipitationRisk || isNegligenceRisk,\n precipitation: isPrecipitationRisk,\n negligence: isNegligenceRisk,\n });\n\n collections.all.push(item);\n\n if (isPrecipitationRisk) {\n collections.precipitation.push(item);\n return;\n }\n\n if (isNegligenceRisk) {\n collections.negligence.push(item);\n return;\n }\n\n if (isNegativeIndicator(item.direction, isNegativeGroup)) {\n collections.negative.push(item);\n return;\n }\n\n collections.positive.push(item);\n });\n });\n\n return collections;\n}\n\nexport function buildDetailedIndicatorSections(\n indicators: Indicators[],\n): DetailedIndicatorSection[] {\n return indicators\n .map((group) => ({\n title: normalizeText(group.competenceName),\n items: group.indicators\n .map((indicator) => ({\n name: normalizeText(indicator.indicatorName || indicator.name),\n concept: normalizeText(indicator.indicatorConcept || indicator.concept),\n interval: indicator.interval || 0,\n classificationId:\n indicator.classification?.classificationId || indicator.classificationId,\n classificationName:\n indicator.classification?.classificationName || indicator.classificationName,\n classificationColor:\n indicator.classification?.classificationColor || indicator.classificationColor,\n }))\n .filter((item) => !!item.name),\n }))\n .filter((section) => section.items.length > 0);\n}\n\nfunction buildIndicatorItem(\n indicator: CapabilityItem,\n options: {\n includeDirectionSign?: boolean;\n risk: boolean;\n precipitation: boolean;\n negligence: boolean;\n },\n): CapabilityItem {\n const directionPrefix = getDirectionPrefix(\n indicator.direction,\n options.includeDirectionSign,\n );\n const name = normalizeText(indicator.indicatorName || indicator.name);\n\n return {\n ...indicator,\n name: directionPrefix ? `${directionPrefix} ${name}` : name,\n classificationId:\n indicator.classificationId || indicator.classification?.classificationId,\n classificationName:\n indicator.classificationName || indicator.classification?.classificationName,\n classificationColor:\n indicator.classificationColor || indicator.classification?.classificationColor,\n classificationBg:\n indicator.classificationBg || indicator.classification?.classificationBg,\n risk: options.risk,\n precipitation: options.precipitation,\n negligence: options.negligence,\n };\n}\n\nfunction getDirectionPrefix(\n direction?: string | null,\n includeDirectionSign?: boolean,\n): string {\n if (!includeDirectionSign) {\n return \"\";\n }\n\n return isNegativeIndicator(direction) ? \"\\u2193\" : \"\\u2191\";\n}\n\nfunction isNegativeIndicator(direction?: string | null, fallback = false): boolean {\n if (!direction) {\n return fallback;\n }\n\n return normalizeLookup(direction).includes(\"negativ\");\n}\n","import { CapabilityClassification } from \"../interfaces/capability-classification.interface\";\n\nexport const CAPABILITY_CLASSIFICATION: CapabilityClassification[] = [\n {\n id: 1,\n name: \"Destaque\",\n color: \"#96f2ee\",\n positive: true,\n },\n {\n id: 2,\n name: \"Satisfatório\",\n color: \"#68ceee\",\n positive: true,\n },\n {\n id: 3,\n name: \"Adequado\",\n color: \"#2d9ced\",\n positive: true,\n },\n {\n id: 4,\n name: \"A desenvolver\",\n color: \"#0e6ece\",\n positive: true,\n },\n {\n id: 5,\n name: \"Crítico baixo\",\n color: \"#073e92\",\n positive: true,\n },\n {\n id: 6,\n name: \"Merece atenção baixo\",\n color: \"#f56580\",\n positive: false,\n },\n {\n id: 7,\n name: \"Adequado\",\n color: \"#f598a7\",\n positive: false,\n },\n {\n id: 8,\n name: \"Merece atenção alto\",\n color: \"#f4284e\",\n positive: false,\n },\n {\n id: 9,\n name: \"Crítico alto\",\n color: \"#c11c2f\",\n positive: false,\n },\n];\n","import { Injectable } from \"@angular/core\";\n\nimport { CapabilityItem } from \"../interfaces/capability-item.interface\";\nimport { CapabilityClassification } from \"../interfaces/capability-classification.interface\";\n\nimport { CAPABILITY_CLASSIFICATION } from \"../consts/capability-classification.const\";\n\n@Injectable()\nexport class CapabilityClassificationService {\n getByItem(item: CapabilityItem): CapabilityClassification {\n return (\n CAPABILITY_CLASSIFICATION.find(\n (classification: any) => classification.id === item.classificationId\n ) || CAPABILITY_CLASSIFICATION[0]\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from \"@angular/core\";\n\nexport interface Tag {\n bgColor?: string | null | undefined;\n color?: \"highlight\" | \"selected\" | string | null | undefined;\n size?: \"small\" | string | null | undefined;\n fontSize?: string | null | undefined;\n}\n\n@Component({\n selector: \"mapa-tag\",\n templateUrl: \"./tag.component.html\",\n styleUrl: \"./tag.component.scss\",\n standalone: true,\n imports: [CommonModule],\n})\nexport class TagComponent {\n @Input() tag: Tag | undefined;\n}\n","<div\n *ngIf=\"tag\"\n class=\"mapa-tag\"\n [class.mapa-tag--small]=\"tag.size === 'small' && !tag.fontSize\"\n [class.mapa-tag--highlight]=\"tag.color === 'highlight'\"\n [class.mapa-tag--selected]=\"tag.color === 'selected'\"\n [class.mapa-tag--default-bg]=\"!tag.bgColor\"\n [class.mapa-tag--bg]=\"tag.bgColor\"\n [style.backgroundColor]=\"tag.bgColor\"\n [style.padding-left]=\"tag.fontSize\"\n [style.border-radius]=\"tag.fontSize\"\n [style.fontSize]=\"tag.fontSize\"\n>\n <ng-content></ng-content>\n</div>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/tag.component';\n","export enum TooltipPosition {\n ABOVE = 'above',\n BELOW = 'below',\n LEFT = 'left',\n RIGHT = 'right',\n DYNAMIC = 'dynamic',\n DEFAULT = 'below'\n}\n\nexport enum TooltipTheme {\n DARK = 'dark',\n LIGHT = 'light',\n DEFAULT = 'light'\n}","import { CommonModule } from \"@angular/common\";\nimport { Component, TemplateRef } from \"@angular/core\";\nimport { TooltipPosition, TooltipTheme } from \"./tooltip.enums\";\n\n@Component({\n selector: \"lib-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrl: \"./tooltip.component.scss\",\n imports: [CommonModule],\n standalone: true,\n})\nexport class MapaTooltipComponent {\n tooltip!: TemplateRef<unknown>;\n\n position: TooltipPosition = TooltipPosition.DEFAULT;\n theme: TooltipTheme = TooltipTheme.DEFAULT;\n visible = false;\n left = 0;\n top = 0;\n}\n","<div\n class=\"tooltip\"\n [ngClass]=\"['tooltip--'+position, 'tooltip--'+theme]\"\n [class.tooltip--visible]=\"visible\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n>\n <ng-template [ngTemplateOutlet]=\"tooltip\"></ng-template>\n</div>\n","import {\n ApplicationRef,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n EnvironmentInjector,\n HostListener,\n Input,\n TemplateRef,\n createComponent,\n inject,\n} from \"@angular/core\";\nimport { MapaTooltipComponent } from \"./tooltip.component\";\nimport { TooltipPosition, TooltipTheme } from \"./tooltip.enums\";\n\n@Directive({\n selector: \"[tooltip]\",\n standalone: true,\n})\nexport class MapaTooltipDirective {\n @Input() tooltip!: TemplateRef<unknown>;\n @Input() position: TooltipPosition = TooltipPosition.DEFAULT;\n @Input() theme: TooltipTheme = TooltipTheme.DEFAULT;\n @Input() showDelay = 0;\n @Input() hideDelay = 0;\n\n private componentRef: ComponentRef<MapaTooltipComponent> | null = null;\n private showTimeout?: number;\n private hideTimeout?: number;\n private touchTimeout?: number;\n private readonly destroyRef = inject(DestroyRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly appRef: ApplicationRef\n ) {\n this.destroyRef.onDestroy(() => this.destroy());\n }\n\n @HostListener(\"mouseenter\")\n onMouseEnter(): void {\n this.initializeTooltip();\n }\n\n @HostListener(\"mouseleave\")\n onMouseLeave(): void {\n this.setHideTooltipTimeout();\n }\n\n @HostListener(\"mousemove\", [\"$event\"])\n onMouseMove($event: MouseEvent): void {\n if (\n this.componentRef !== null &&\n this.position === TooltipPosition.DYNAMIC\n ) {\n this.componentRef.instance.left = $event.clientX;\n this.componentRef.instance.top = $event.clientY;\n this.componentRef.instance.tooltip = this.tooltip;\n }\n }\n\n @HostListener(\"touchstart\", [\"$event\"])\n onTouchStart($event: TouchEvent): void {\n $event.preventDefault();\n window.clearTimeout(this.touchTimeout);\n this.touchTimeout = window.setTimeout(\n this.initializeTooltip.bind(this),\n 500\n );\n }\n\n @HostListener(\"touchend\")\n onTouchEnd(): void {\n window.clearTimeout(this.touchTimeout);\n this.setHideTooltipTimeout();\n }\n\n private initializeTooltip() {\n if (this.componentRef === null) {\n window.clearTimeout(this.hideTimeout);\n this.componentRef = createComponent(MapaTooltipComponent, {\n environmentInjector: this.environmentInjector,\n });\n\n this.appRef.attachView(this.componentRef.hostView);\n\n this.setTooltipComponentProperties();\n\n document.body.appendChild(this.componentRef.location.nativeElement);\n this.showTimeout = window.setTimeout(\n this.showTooltip.bind(this),\n this.showDelay\n );\n }\n }\n\n private setTooltipComponentProperties() {\n if (this.componentRef !== null) {\n this.componentRef.instance.tooltip = this.tooltip;\n this.componentRef.instance.position = this.position;\n this.componentRef.instance.theme = this.theme;\n\n const {\n left,\n right,\n top,\n bottom,\n } = this.elementRef.nativeElement.getBoundingClientRect();\n\n switch (this.position) {\n case TooltipPosition.BELOW: {\n this.componentRef.instance.left = Math.round(\n (right - left) / 2 + left\n );\n this.componentRef.instance.top = Math.round(bottom);\n break;\n }\n case TooltipPosition.ABOVE: {\n this.componentRef.instance.left = Math.round(\n (right - left) / 2 + left\n );\n this.componentRef.instance.top = Math.round(top);\n break;\n }\n case TooltipPosition.RIGHT: {\n this.componentRef.instance.left = Math.round(right);\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\n break;\n }\n case TooltipPosition.LEFT: {\n this.componentRef.instance.left = Math.round(left);\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\n break;\n }\n default: {\n break;\n }\n }\n }\n }\n\n private showTooltip() {\n if (this.componentRef !== null) {\n this.componentRef.instance.visible = true;\n }\n }\n\n private setHideTooltipTimeout() {\n this.hideTimeout = window.setTimeout(\n this.destroy.bind(this),\n this.hideDelay\n );\n }\n\n destroy(): void {\n window.clearTimeout(this.showTimeout);\n window.clearTimeout(this.hideTimeout);\n window.clearTimeout(this.touchTimeout);\n\n if (this.componentRef !== null) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n}\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/tooltip.directive';\nexport * from './src/tooltip.component';\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { TagComponent } from \"../../../tag/public-api\";\nimport { MapaTooltipDirective } from \"../../../tooltip/public-api\";\n\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\nimport { CapabilityClassificationService } from \"../essentials/services/capability-classification.service\";\n\n@Component({\n selector: \"mapa-capability-dot\",\n templateUrl: \"./capability-dot.component.html\",\n styleUrls: [\n \"./capability-dot.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule, TagComponent, MapaTooltipDirective],\n providers: [CapabilityClassificationService],\n standalone: true\n})\nexport class MapaCapabilityDotComponent {\n @Input() type!: string;\n @Input() item!: CapabilityItem;\n @Input() tooltip!: boolean;\n @Input() capability?: Capability;\n\n constructor(public classification: CapabilityClassificationService) {}\n\n createTag() {\n return {\n size: \"small\",\n \n }\n }\n}\n","<p\n *ngIf=\"!tooltip\"\n [class.dot]=\"type !== 'small'\"\n [class.small-dot]=\"type === 'small'\"\n [style.backgroundColor]=\"item.classificationColor\"\n></p>\n<div *ngIf=\"tooltip\" [tooltip]=\"tooltipTemplate\" class=\"tooltip-dot\">\n <p\n [class.dot]=\"type !== 'small'\"\n [class.small-dot]=\"type === 'small'\"\n [style.backgroundColor]=\"item.classificationColor\"\n ></p>\n</div>\n<ng-template #tooltipTemplate>\n <div class=\"tooltip-info\">\n <strong\n class=\"tooltip-info--direction\"\n *ngIf=\"!item.direction\"\n >↘︎</strong\n >\n <strong\n class=\"tooltip-info--direction\"\n *ngIf=\"item.direction\"\n >↗</strong\n >\n\n <h5>{{ item.name }}</h5>\n\n <mapa-tag [tag]=\"createTag()\">\n <p\n class=\"small-dot\"\n [style.backgroundColor]=\"item.classificationColor\"\n ></p>\n {{ item.classificationName }}\n </mapa-tag>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { TagComponent } from \"../../../tag/public-api\";\n\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { SafeHtmlPipe } from \"../../../../core/pipes/safe-html.pipe\";\nimport { MapaCapabilityDotComponent } from \"../capability-dot/capability-dot.component\";\nimport { CapabilityClassificationService } from \"../essentials/services/capability-classification.service\";\nimport { CapabilityItem } from \"../essentials/interfaces\";\nimport { MapaI18nService } from \"../../../../core/services/mapa-i18n.service\";\n\n@Component({\n selector: \"mapa-capability-expand\",\n templateUrl: \"./capability-expand.component.html\",\n styleUrl: \"./capability-expand.component.scss\",\n imports: [CommonModule, TagComponent, MapaCapabilityDotComponent, SafeHtmlPipe],\n providers: [CapabilityClassificationService],\n standalone: true\n})\nexport class MapaCapabilityExpandComponent {\n @Input() data!: Capability;\n \n constructor(\n public classification: CapabilityClassificationService,\n private readonly i18n: MapaI18nService\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get conceptTitle(): string {\n return this.texts.capability.conceptTitle;\n }\n\n get resultTitle(): string {\n return this.texts.capability.resultTitle;\n }\n\n get negativeDirectionLabel(): string {\n return this.texts.capability.negativeDirectionLabel;\n }\n\n get positiveDirectionLabel(): string {\n return this.texts.capability.positiveDirectionLabel;\n }\n \n createTag(item: CapabilityItem) {\n return {\n bgColor: item.classificationBg || \"\",\n fontSize: item.classificationFontSize || \"\",\n size: \"small\",\n }\n }\n}\n","<div\n class=\"capability__concept\"\n *ngIf=\"data.capabilityConcept?.concept || data.capabilityConcept?.result\"\n>\n <div\n class=\"capability__concept--content\"\n *ngIf=\"data.capabilityConcept?.concept\"\n >\n <div class=\"capability__concept--title\">{{ conceptTitle }}</div>\n <div class=\"capability__concept--text\">\n {{ data.capabilityConcept?.concept! }}\n </div>\n </div>\n <div\n class=\"capability__concept--content\"\n *ngIf=\"data.capabilityConcept?.result\"\n >\n <div class=\"capability__concept--title\">{{ resultTitle }}</div>\n <div class=\"capability__concept--text\">\n {{ data.capabilityConcept?.result! }}\n </div>\n </div>\n</div>\n<div class=\"capability__expanded\">\n <div *ngFor=\"let item of data.items\" class=\"capability__expanded--item\">\n <div class=\"name\">\n <div class=\"capability__expanded--name\">\n <span *ngIf=\"item.classificationColor\">\n <strong *ngIf=\"!classification.getByItem(item).positive\">&searr; </strong>\n <strong *ngIf=\"classification.getByItem(item).positive\">&nearr; </strong>\n </span>\n {{ item.name }}\n </div>\n <mapa-tag\n [tag]=\"createTag(item)\"\n class=\"capability__expanded--tag\"\n *ngIf=\"item.classificationId\"\n >\n <mapa-capability-dot\n [item]=\"item\"\n *ngIf=\"item.classificationColor\"\n ></mapa-capability-dot>\n {{ item.classificationName }}\n </mapa-tag>\n </div>\n\n <p class=\"capability__expanded--description\" *ngIf=\"item.description\">\n <strong\n *ngIf=\"item.classificationId && !item.classificationBg && !classification.getByItem(item).positive\"\n >{{ negativeDirectionLabel }}</strong>\n <strong\n *ngIf=\"item.classificationId && !item.classificationBg && classification.getByItem(item).positive\"\n >{{ positiveDirectionLabel }}</strong>\n <span [innerHTML]=\"item.description | safeHtml\"></span>\n </p>\n </div>\n</div>\n\n\n\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\n\n@Component({\n selector: \"mapa-capability-indicator\",\n templateUrl: \"./capability-indicator.component.html\",\n styleUrls: [\n \"./capability-indicator.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule],\n standalone: true\n})\nexport class MapaCapabilityIndicatorComponent {\n @Input() item!: CapabilityItem;\n}\n","<div\n class=\"indicator\"\n [style.backgroundColor]=\"item.classificationColor\"\n>\n <span *ngIf=\"item.name\">{{ item.name }}</span>\n <div class=\"indicator__classification\">\n {{ item.interval }}%\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input, OnChanges, OnInit, SimpleChanges } from \"@angular/core\";\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { Md5 } from \"ts-md5\";\n\n@Component({\n selector: \"mapa-capability-interval\",\n templateUrl: \"./capability-interval.component.html\",\n styleUrl: \"./capability-interval.component.scss\",\n imports: [CommonModule],\n standalone: true\n})\nexport class MapaCapabilityIntervalComponent implements OnInit, OnChanges {\n @Input() data!: Capability;\n @Input() showInterval!: boolean;\n public paintLinear!: string;\n\n public SVG = [\n { x: 0 , y: 0.710938, width: 16, height: 30 },\n { x: 22.5039, y: 0.710938, width: 16, height: 30 },\n { x: 45.0078, y: 0.710938, width: 16, height: 30 },\n { x: 66.9629, y: 0.710938, width: 16, height: 30 },\n { x: 88.917 , y: 0.710938, width: 16, height: 30 },\n { x: 110.872, y: 0.710938, width: 16, height: 30 },\n { x: 132.827, y: 0.710938, width: 16, height: 30 },\n { x: 154.782, y: 0.710938, width: 16, height: 30 },\n { x: 176.736, y: 0.710938, width: 16, height: 30 },\n { x: 199.24 , y: 0.710938, width: 16, height: 30 },\n ];\n\n public hasTransform = false;\n public indexTransform = 0;\n\n constructor() {}\n \n ngOnChanges(changes: SimpleChanges): void {\n const interval = this.data.interval || 0;\n this.hasTransform = interval % 10 > 0;\n this.indexTransform = (Math.floor(interval / 10) % 10);\n this.paintLinear = `linear_${ Md5.hashStr(`svg_${ interval }`) }`;\n }\n\n ngOnInit(): void {\n }\n\n public getWidth(index: number): number {\n if (!this.data) return 0;\n const interval = this.data.interval || 0;\n const intervalMod10 = Math.floor(interval / 10) % 10;\n return index < intervalMod10\n ? 100\n : index === intervalMod10\n ? (interval % 10) * 10\n : 0;\n }\n\n public getFill(i: number): string {\n const width = this.getWidth(i);\n if (width === 100) return \"#8C8F94\";\n return \"#DCDCDE\";\n }\n\n public getFillGradient(): string {\n return `url(#${ this.paintLinear })`;\n }\n\n public getTransform(i: number): string {\n const width = this.getWidth(i);\n if (width === 0 || width === 100) return \"\";\n return `rotate(-180 ${this.SVG[i].x} ${this.SVG[i].y})`;\n }\n\n public getStartOffset(): number {\n const interval = this.data.interval || 0;\n return Number(`0.${ interval % 10 }73005`);\n }\n\n public getStopOffset(): number {\n const interval = this.data.interval || 0;\n return Number(`0.${ interval % 10 }73105`);\n }\n\n public getGradientX(): number {\n return Math.floor(this.SVG[this.indexTransform].x);\n }\n\n public isSVG(): boolean {\n return !!this.data.classificationBg && this.data.classificationBg === \"SVG\";\n }\n}\n","<ul class=\"capability__interval\" *ngIf=\"isSVG(); else progressBar\">\n <li\n class=\"capability__interval--item\"\n *ngFor=\"let block of SVG; let i = index\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"30\"\n fill=\"none\"\n [class]=\"'svg_' + i + '_' + getWidth(i)\"\n >\n <defs *ngIf=\"hasTransform && i === indexTransform\">\n <linearGradient [attr.id]=\"paintLinear\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.offset]=\"getStartOffset()\" stop-color=\"#8C8F94\" />\n <stop [attr.offset]=\"getStopOffset()\" stop-color=\"#D9D9D9\" />\n </linearGradient>\n </defs>\n <rect\n rx=\"6\"\n x=\"0\"\n y=\"0.710938\"\n [attr.width]=\"SVG[i].width\"\n [attr.height]=\"SVG[i].height\"\n [attr.fill]=\"getFill(i)\"\n />\n <rect\n *ngIf=\"hasTransform && i === indexTransform\"\n rx=\"6\"\n x=\"0\"\n y=\"0.710938\"\n [attr.width]=\"SVG[i].width\"\n [attr.height]=\"SVG[i].height\"\n [attr.fill]=\"getFillGradient()\"\n />\n </svg>\n </li>\n <li class=\"capability__interval--interval\" *ngIf=\"showInterval\">\n {{ data.interval }}%\n </li>\n</ul>\n<ng-template #progressBar>\n <div class=\"capability__progress-bar\">\n <div class=\"capability__progress-bar--bg\">\n <div\n class=\"capability__progress-bar--filled\"\n [style.width.%]=\"data.interval\"\n ></div>\n </div>\n <div class=\"capability__interval--result\" *ngIf=\"showInterval\">\n {{data.interval}}%\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { MapaCapabilityIntervalComponent } from \"../capability-interval/capability-interval.component\";\n\n@Component({\n selector: \"mapa-capability-interval-bar\",\n templateUrl: \"./capability-interval-bar.component.html\",\n styleUrl: \"./capability-interval-bar.component.scss\",\n imports: [CommonModule, MapaCapabilityIntervalComponent],\n standalone: true\n})\nexport class MapaCapabilityIntervalBarComponent {\n @Input() data!: Capability;\n @Input() expanded?: boolean;\n @Input() showInterval!: boolean;\n @Output() clicked: EventEmitter<void> = new EventEmitter<void>();\n\n public isHovering = false;\n public isClicked = false;\n\n public isSVG(): boolean {\n return !!this.data.classificationBg && this.data.classificationBg === \"SVG\";\n }\n}\n","<section reusable-outlet class=\"capability-interval\">\n <section [class.capability-interval__bar]=\"isSVG()\">\n <mapa-capability-interval\n [data]=\"data\"\n [showInterval]=\"showInterval\"\n ></mapa-capability-interval>\n </section>\n</section>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { CapabilityItem } from \"../essentials/interfaces\";\n\n@Component({\n selector: \"mapa-capability-comparative-indicator\",\n templateUrl: \"./capability-comparative-indicator.component.html\",\n styleUrls: [\n \"./capability-comparative-indicator.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule],\n standalone: true\n})\nexport class MapaCapabilityComparativeIndicatorComponent {\n @Input() item!: CapabilityItem;\n @Input() fullWidth?: boolean;\n\n public getWidth(item: CapabilityItem): string {\n return 32 + (item.interval || 0) * 2 + \"px\";\n }\n}\n","<div\n class=\"comparative-indicator\"\n [style.width]=\"fullWidth ? '100%' : getWidth(item)\"\n>\n <div class=\"comparative-indicator__interval\">\n {{ item.interval }}%\n <span\n *ngIf=\"item.isIndividually\"\n class=\"comparative-indicator__individually\"\n >▼</span\n >\n </div>\n <div\n class=\"comparative-indicator__classification\"\n [style.backgroundColor]=\"item.classificationColor\"\n *ngIf=\"item.classificationColor\"\n ></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { CapabilityItem } from '../essentials/interfaces';\nimport { CapabilityComparative } from '../essentials/interfaces/capability-comparative.interface';\nimport { MapaCapabilityComparativeIndicatorComponent } from '../capability-comparative-indicator/capability-comparative-indicator.component';\n\n@Component({\n selector: 'mapa-capability-comparative-chart',\n templateUrl: './capability-comparative-chart.component.html',\n styleUrl: './capability-comparative-chart.component.scss',\n imports: [CommonModule, MapaCapabilityComparativeIndicatorComponent],\n standalone: true\n})\nexport class MapaCapabilityComparativeChartComponent {\n @Input() data!: CapabilityComparative;\n\n public setCleanItem(item: CapabilityItem): CapabilityItem {\n return {\n average: item.average,\n interval: item.interval,\n classificationId: item.classificationId,\n classificationColor: item.classificationColor,\n isIndividually: item.isIndividually,\n };\n }\n}\n","<table class=\"capability-comparative__chart\">\n <tr *ngFor=\"let indicator of data.indicators\">\n <th>\n <p>{{ indicator.name }}</p>\n </th>\n <td class=\"capability-comparative__chart--indicators\">\n <mapa-capability-comparative-indicator\n *ngFor=\"let item of indicator.items\"\n [item]=\"setCleanItem(item)\"\n [fullWidth]=\"true\"\n [style.width.%]=\"item.interval\"\n ></mapa-capability-comparative-indicator>\n </td>\n </tr>\n</table>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { CapabilityComparative } from '../essentials/interfaces/capability-comparative.interface';\nimport { Capability } from '../essentials/interfaces';\nimport { MapaI18nService } from '../../../../core/services/mapa-i18n.service';\nimport { MapaCapabilityIntervalComponent } from '../capability-interval/capability-interval.component';\n\n@Component({\n selector: 'mapa-capability-comparative-header',\n templateUrl: './capability-comparative-header.component.html',\n styleUrl: './capability-comparative-header.component.scss',\n imports: [CommonModule, MapaCapabilityIntervalComponent],\n standalone: true\n})\nexport class MapaCapabilityComparativeHeaderComponent {\n @Input() data!: CapabilityComparative;\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get groupAverageTitle(): string {\n return this.texts.capability.groupAverageTitle;\n }\n\n get individualAverageTitle(): string {\n return this.texts.capability.individualAverageTitle;\n }\n\n public getCapabilityData(item: number): Capability {\n return {\n interval: item,\n items: [],\n };\n }\n}\n","<section class=\"capability-comparative__header\">\n <h1>{{ data.name }}</h1>\n\n <section>\n <div class=\"capability-comparative__avg\">\n <div class=\"capability-comparative__avg--title\">{{ groupAverageTitle }}</div>\n <mapa-capability-interval\n [data]=\"getCapabilityData(data.groupAvg)\"\n [showInterval]=\"true\"\n ></mapa-capability-interval>\n </div>\n <div class=\"capability-comparative__avg\">\n <div class=\"capability-comparative__avg--title\">{{ individualAverageTitle }}</div>\n <mapa-capability-interval\n [data]=\"getCapabilityData(data.individualAvg)\"\n [showInterval]=\"true\"\n ></mapa-capability-interval>\n </div>\n </section>\n</section>\n\n\n","import { Component, Input } from \"@angular/core\";\n\nimport { CapabilityComparative } from \"../essentials/interfaces/capability-comparative.interface\";\nimport { MapaCapabilityComparativeChartComponent } from \"../capability-comparative-chart/capability-comparative-chart.component\";\nimport { MapaCapabilityComparativeHeaderComponent } from \"../capability-comparative-header/capability-comparative-header.component\";\n\n@Component({\n selector: \"mapa-capability-comparative\",\n templateUrl: \"./capability-comparative.component.html\",\n styleUrl: \"./capability-comparative.component.scss\",\n imports: [\n MapaCapabilityComparativeChartComponent,\n MapaCapabilityComparativeHeaderComponent,\n ],\n standalone: true\n})\nexport class MapaCapabilityComparativeComponent {\n @Input() data!: CapabilityComparative;\n}\n","<section class=\"capability-comparative\">\n <mapa-capability-comparative-header\n [data]=\"data\"\n ></mapa-capability-comparative-header>\n <mapa-capability-comparative-chart\n [data]=\"data\"\n ></mapa-capability-comparative-chart>\n</section>\n","import { CommonModule } from \"@angular/common\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n ViewChild,\n} from \"@angular/core\";\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { CapabilityClassificationService } from \"../../public-api\";\nimport { MatAccordion } from \"@angular/material/expansion\";\nimport { MatExpansionModule } from \"@angular/material/expansion\";\nimport { TagComponent } from \"../../../tag/public-api\";\nimport { MapaCapabilityDotComponent } from \"../capability-dot/capability-dot.component\";\nimport { MapaCapabilityExpandComponent } from \"../capability-expand/capability-expand.component\";\nimport { MapaCapabilityIntervalBarComponent } from \"../capability-interval-bar/capability-interval-bar.component\";\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\n\n@Component({\n selector: \"mapa-capability-detail\",\n templateUrl: \"./capability-detail.component.html\",\n styleUrls: [\n \"./capability-detail.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TagComponent,\n MatExpansionModule,\n MapaCapabilityDotComponent,\n MapaCapabilityIntervalBarComponent,\n MapaCapabilityExpandComponent,\n ],\n providers: [CapabilityClassificationService],\n standalone: true\n})\nexport class MapaCapabilityDetailComponent implements AfterViewInit, OnChanges, OnInit {\n @Input() data!: Capability[];\n @Input() showTags!: boolean;\n @Input() showProgressBar!: boolean;\n @Input() showInterval!: boolean;\n @Input() isExpanded!: boolean;\n\n @ViewChild(\"detailAccordion\") accordion!: MatAccordion;\n\n public expanded = new Set<number>();\n public showTagInterval = true;\n\n constructor(public classification: CapabilityClassificationService) {}\n\n ngOnInit(): void {\n this.syncExpandedState();\n }\n\n ngAfterViewInit(): void {\n this.syncExpandedState();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"data\"] || changes[\"isExpanded\"]) {\n this.syncExpandedState();\n }\n }\n\n private syncExpandedState(): void {\n if (this.isExpanded) {\n this.expanded = new Set(this.data.map((_, i) => i));\n this.accordion?.openAll();\n return;\n }\n\n this.expanded.clear();\n this.accordion?.closeAll();\n }\n\n sortItemsByinterval(items: CapabilityItem[] | undefined): CapabilityItem[] {\n return [...(items ?? [])].sort(\n (a, b) => (b.interval ?? 0) - (a.interval ?? 0),\n );\n }\n\n showMore(index: number): void {\n if (this.expanded.has(index)) {\n this.expanded.delete(index);\n } else {\n this.expanded.add(index);\n }\n }\n\n toggleAll(): void {\n if (this.expanded.size === this.data.length) {\n this.expanded.clear();\n this.accordion.closeAll();\n } else {\n this.expanded = new Set(this.data.map((_, i) => i));\n this.accordion.openAll();\n }\n }\n\n createTag(item: Capability) {\n return {\n bgColor: item.classificationBg || \"\",\n fontSize: item.classificationFontSize || \"\",\n size: \"small\",\n };\n }\n public isSVG(item: Capability): boolean {\n return !!item.classificationBg && item.classificationBg === \"SVG\";\n }\n}\n","<mat-accordion class=\"capability-detail\" #detailAccordion=\"matAccordion\" multi>\n @for (capability of data; track capability; let i = $index) {\n <mat-expansion-panel [expanded]=\"expanded.has(i)\">\n <mat-expansion-panel-header>\n <div class=\"capability__item--header\">\n <div class=\"capability__item--title-dots\">\n <div class=\"capability__item--title display-L\">\n {{ capability.name }}\n @if (showTags) {\n <span class=\"capability__item--title-tag\">\n <mapa-tag [tag]=\"createTag(capability)\">\n @if (capability.classificationColor) {\n <mapa-capability-dot\n [item]=\"capability\"\n [capability]=\"capability\"\n ></mapa-capability-dot>\n }\n {{ capability.classificationName }}\n </mapa-tag>\n </span>\n }\n </div>\n\n @if (isSVG(capability)) {\n <div class=\"capability__item--dots\">\n @for (item of sortItemsByinterval(capability.items); track item) {\n <mapa-capability-dot\n type=\"small\"\n [item]=\"item\"\n [capability]=\"capability\"\n [tooltip]=\"true\"\n ></mapa-capability-dot>\n }\n </div>\n }\n </div>\n\n <div [class.capability__item--interval]=\"showProgressBar\">\n <mapa-capability-interval-bar\n [data]=\"capability\"\n [expanded]=\"expanded.has(i)\"\n [showInterval]=\"showInterval\"\n (clicked)=\"showMore(i)\"\n ></mapa-capability-interval-bar>\n </div>\n </div>\n </mat-expansion-panel-header>\n <mapa-capability-expand [data]=\"capability\"></mapa-capability-expand>\n </mat-expansion-panel>\n }\n</mat-accordion>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input, OnChanges, OnInit, SimpleChanges } from \"@angular/core\";\n\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\nimport { MapaI18nService } from \"../../../../core/services/mapa-i18n.service\";\nimport { MapaCapabilityIndicatorComponent } from \"../capability-indicator/capability-indicator.component\";\n\n@Component({\n selector: \"mapa-capability-indicator-list\",\n templateUrl: \"./capability-indicator-list.component.html\",\n styleUrls: [\n \"./capability-indicator-list.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule, MapaCapabilityIndicatorComponent],\n standalone: true\n})\nexport class MapaCapabilityIndicatorListComponent implements OnInit, OnChanges {\n @Input() data!: CapabilityItem[];\n\n public dataPositive: CapabilityItem[] = [];\n public dataNegative: CapabilityItem[] = []; \n public dataRiskPrecipitation: CapabilityItem[] = []; \n public dataRiskNegligence: CapabilityItem[] = []; \n\n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get positiveIndicatorsTitle(): string {\n return this.texts.capability.positiveIndicatorsTitle;\n }\n\n get negativeIndicatorsTitle(): string {\n return this.texts.capability.negativeIndicatorsTitle;\n }\n\n get riskIndicatorsTitle(): string {\n return this.texts.capability.riskIndicatorsTitle;\n }\n\n get precipitationRiskTitle(): string {\n return this.texts.capability.precipitationRiskTitle;\n }\n\n get negligenceRiskTitle(): string {\n return this.texts.capability.negligenceRiskTitle;\n }\n\n ngOnInit(): void {\n this.buildIndicatorGroups();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"data\"]) {\n this.buildIndicatorGroups();\n }\n }\n\n private buildIndicatorGroups(): void {\n this.dataPositive = this.data.filter(\n (item: CapabilityItem) => item.direction === \"Positiva\" && !item.risk\n );\n this.dataNegative = this.data.filter(\n (item: CapabilityItem) => item.direction === \"Negativa\" && !item.risk\n );\n this.dataRiskPrecipitation = this.data.filter(\n (item: CapabilityItem) => item.risk === true && item.precipitation === true\n );\n this.dataRiskNegligence = this.data.filter(\n (item: CapabilityItem) => item.risk === true && item.negligence === true\n );\n }\n}\n","<section class=\"indicator-list\">\n <article class=\"indicator-list__column\">\n <h2>{{ positiveIndicatorsTitle }}</h2>\n <mapa-capability-indicator *ngFor=\"let item of dataPositive\" [item]=\"item\">\n </mapa-capability-indicator>\n </article>\n <article class=\"indicator-list__column\">\n <h2>{{ negativeIndicatorsTitle }}</h2>\n <mapa-capability-indicator *ngFor=\"let item of dataNegative\" [item]=\"item\">\n </mapa-capability-indicator>\n </article>\n <article\n class=\"indicator-list__column\"\n *ngIf=\"dataRiskPrecipitation.length > 0 || dataRiskNegligence.length > 0\"\n >\n <h2>{{ riskIndicatorsTitle }}</h2>\n <div *ngIf=\"dataRiskPrecipitation.length > 0\">\n <h3>{{ precipitationRiskTitle }}</h3>\n <mapa-capability-indicator\n *ngFor=\"let item of dataRiskPrecipitation\"\n [item]=\"item\"\n >\n </mapa-capability-indicator>\n </div>\n <div *ngIf=\"dataRiskNegligence.length > 0\">\n <h3>{{ negligenceRiskTitle }}</h3>\n <mapa-capability-indicator\n *ngFor=\"let item of dataRiskNegligence\"\n [item]=\"item\"\n >\n </mapa-capability-indicator>\n </div>\n </article>\n</section>\n\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\nimport { MapaCapabilityIndicatorComponent } from \"../capability-indicator/capability-indicator.component\";\nimport { CapabilityClassificationService } from \"../essentials/services/capability-classification.service\";\n\n@Component({\n selector: \"mapa-capability-indicator-chart\",\n templateUrl: \"./capability-indicator-chart.component.html\",\n styleUrls: [\n \"./capability-indicator-chart.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule, MapaCapabilityIndicatorComponent],\n providers: [CapabilityClassificationService],\n standalone: true\n})\nexport class MapaCapabilityIndicatorChartComponent {\n @Input() data!: CapabilityItem[];\n\n constructor(public classification: CapabilityClassificationService) {}\n\n public setUnlabeledItem(item: CapabilityItem): CapabilityItem {\n return {\n classificationId: item.classificationId,\n classificationColor: item.classificationColor,\n interval: item.interval,\n }\n }\n\n public getWidth(item: CapabilityItem): string {\n const minWidth = 42;\n const interval = (item.interval || 0);\n if (interval < 10) return minWidth + 'px';\n return interval + '%';\n }\n}\n","<table class=\"indicator-chart\">\n <tr *ngFor=\"let item of data\">\n <td class=\"indicator-chart__column--description\">{{ item.name }}</td>\n <td class=\"indicator-chart__column indicator-chart__column--left\">\n <div\n class=\"indicator-chart__column--negative\"\n *ngIf=\"item.direction === 'Negativa'\"\n >\n <mapa-capability-indicator\n [item]=\"setUnlabeledItem(item)\"\n [style.width]=\"getWidth(item)\"\n ></mapa-capability-indicator>\n </div>\n </td>\n <td class=\"indicator-chart__column indicator-chart__column--right\">\n <div\n class=\"indicator-chart__column--positive\"\n *ngIf=\"item.direction === 'Positiva'\"\n >\n <mapa-capability-indicator\n [item]=\"setUnlabeledItem(item)\"\n [style.width]=\"getWidth(item)\"\n ></mapa-capability-indicator>\n </div>\n </td>\n </tr>\n</table>\n","/*\n * Public API Surface of mapa-library-ui capability-detail\n */\n\nexport * from './src/essentials/interfaces';\nexport * from './src/essentials/functions';\nexport * from './src/essentials/services/capability-classification.service';\n\nexport * from './src/capability-dot/capability-dot.component';\nexport * from './src/capability-expand/capability-expand.component';\nexport * from './src/capability-indicator/capability-indicator.component';\nexport * from './src/capability-interval/capability-interval.component';\nexport * from './src/capability-interval-bar/capability-interval-bar.component';\n\nexport * from './src/capability-comparative/capability-comparative.component';\nexport * from './src/capability-comparative-chart/capability-comparative-chart.component';\nexport * from './src/capability-comparative-header/capability-comparative-header.component';\n\nexport * from './src/capability-detail/capability-detail.component';\n\nexport * from './src/capability-indicator-list/capability-indicator-list.component';\n\nexport * from './src/capability-indicator-chart/capability-indicator-chart.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormsModule, FormControl, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatCheckboxChange } from \"@angular/material/checkbox\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatSelect } from \"@angular/material/select\";\nimport { MAT_SELECT_CONFIG, MatSelectModule } from \"@angular/material/select\";\nimport { NgxMatSelectSearchModule } from \"ngx-mat-select-search\";\nimport { ReplaySubject } from \"rxjs\";\nimport { ButtonComponent } from \"../../button/public-api\";\nimport { Dropdown } from \"../../../core/elements/dropdown\";\nimport { MapaFormErrorsComponent } from \"../../../core/components/form-errors/form-errors.component\";\nimport { ElementGroup } from \"../../../core/interfaces/element-group.interface\";\nimport { ElementOption } from \"../../../core/interfaces/element-option.interface\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\n\n@Component({\n selector: \"mapa-dropdown\",\n templateUrl: \"./dropdown.component.html\",\n styleUrl: \"./dropdown.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n NgxMatSelectSearchModule,\n ButtonComponent,\n MapaFormErrorsComponent,\n SafeHtmlPipe,\n ],\n providers: [\n {\n provide: MAT_SELECT_CONFIG,\n useValue: { overlayPanelClass: \"mapa-overlay-dropdown\" },\n },\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: { appearance: \"outline\" },\n },\n ],\n standalone: true\n})\nexport class MapaDropdownComponent\n implements OnInit, OnChanges, AfterViewInit\n{\n @Input() formControl!: FormControl;\n @Input() formControlSearch!: FormControl;\n @Input() element!: Dropdown;\n @Input() border: \"soft\" | \"tag\" | \"highlight\" | null | undefined;\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild(\"dropdown\", { static: true }) dropdown!: MatSelect;\n\n public filteredOptions: ReplaySubject<ElementOption[]> = new ReplaySubject<\n ElementOption[]\n >(1);\n public filteredGroups: ReplaySubject<ElementGroup[]> = new ReplaySubject<\n ElementGroup[]\n >(1);\n protected filteredOptionsCache: ElementOption[] = [];\n protected filteredGroupCache: ElementGroup[] = [];\n private readonly destroyRef = inject(DestroyRef);\n\n isIndeterminate = false;\n isChecked = false;\n isOptionsGroup = false;\n\n constructor(\n private readonly i18n: MapaI18nService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get selectAllLabel(): string {\n return this.texts.common.selectAll;\n }\n\n get selectedOptions(): ElementOption[] {\n const value = this.formControl?.value;\n\n if (Array.isArray(value)) {\n return value.filter((option): option is ElementOption =>\n this.isElementOption(option)\n );\n }\n\n return this.isElementOption(value) ? [value] : [];\n }\n\n ngOnInit(): void {\n this.setOptions();\n\n this.element.search?.formControl?.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.filterOptions();\n this.setToggleAllCheckboxState();\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit(): void {\n Promise.resolve().then(() => this.cdr.detectChanges());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes[\"element\"]?.previousValue !== undefined &&\n changes[\"element\"].previousValue?.controlType === \"dropdown\" &&\n changes[\"element\"].previousValue?.options !==\n changes[\"element\"].currentValue?.options\n ) {\n this.element.options = changes[\"element\"].currentValue.options;\n this.setOptions();\n this.cdr.markForCheck();\n }\n }\n\n setOptions(): void {\n this.isOptionsGroup = this.isElementGroup(this.element.options[0]);\n\n if (this.isOptionsGroup) {\n this.filteredGroupCache = (this.element.options as ElementGroup[]).slice();\n this.filteredGroups.next(this.filteredGroupCache);\n this.cdr.markForCheck();\n return;\n }\n\n this.filteredOptionsCache = (this.element.options as ElementOption[]).slice();\n this.filteredOptions.next(this.filteredOptionsCache);\n this.cdr.markForCheck();\n }\n\n protected filterOptionsFromGroup(\n group: ElementGroup,\n value: string\n ): ElementOption[] {\n const filterValue = this.normalizeValue(value);\n\n return this.normalizeValue(group.label).includes(filterValue)\n ? group.options\n : group.options.filter((item) =>\n this.normalizeValue(item.value).includes(filterValue)\n );\n }\n\n protected filterOptions(): void {\n if (!this.element.options) {\n return;\n }\n\n const search = this.normalizeValue(this.element.search?.formControl?.value);\n\n if (this.isOptionsGroup) {\n const groups = this.element.options as ElementGroup[];\n this.filteredGroupCache = groups\n .map((group: ElementGroup) => ({\n label: group.label,\n options: this.filterOptionsFromGroup(group, search),\n }))\n .filter((group) => group.options.length > 0);\n this.filteredGroups.next(this.filteredGroupCache);\n return;\n }\n\n const options = this.element.options as ElementOption[];\n if (!search) {\n this.filteredOptionsCache = options.slice();\n this.filteredOptions.next(this.filteredOptionsCache);\n return;\n }\n\n this.filteredOptionsCache = options.filter((option: ElementOption) =>\n this.normalizeValue(option.value).includes(search)\n );\n this.filteredOptions.next(this.filteredOptionsCache);\n }\n\n normalizeValue(value?: string | null): string {\n return (value ?? \"\")\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase();\n }\n\n triggerOpenedChange(event: boolean): void {\n this.openedChange.emit(event);\n }\n\n protected setToggleAllCheckboxState(): void {\n const search = this.normalizeValue(this.element.search?.formControl?.value);\n\n if (!search) {\n this.isIndeterminate = false;\n this.isChecked = false;\n return;\n }\n\n const filteredLength = this.filteredOptionsCache.filter((option) =>\n this.normalizeValue(option.value).includes(search)\n ).length;\n\n this.isIndeterminate =\n filteredLength > 0 && filteredLength < this.filteredOptionsCache.length;\n this.isChecked =\n filteredLength > 0 && filteredLength === this.filteredOptionsCache.length;\n this.cdr.markForCheck();\n }\n\n toggleSelectAll(event: MatCheckboxChange): void {\n if (this.isOptionsGroup) {\n const groupOptions = this.filteredGroupCache.reduce(\n (accumulator: ElementOption[], group) => accumulator.concat(group.options),\n []\n );\n this.formControl?.patchValue(event.checked ? groupOptions : []);\n return;\n }\n\n this.formControl?.patchValue(event.checked ? this.filteredOptionsCache : []);\n }\n\n isElementGroup(object: ElementGroup | ElementOption): object is ElementGroup {\n return !!object && \"label\" in object && \"options\" in object;\n }\n\n isElementOption(object: unknown): object is ElementOption {\n return (\n !!object &&\n typeof object === \"object\" &&\n \"key\" in object &&\n \"value\" in object\n );\n }\n\n compareFn(c1: ElementOption | null, c2: ElementOption | null): boolean {\n return c1 && c2 ? c1.key === c2.key : c1 === c2;\n }\n\n hasValue(): boolean {\n const value = this.formControl?.value;\n return Array.isArray(value) ? value.length > 0 : this.isElementOption(value);\n }\n\n clearValue(event: MouseEvent): void {\n event.stopPropagation();\n this.formControl.setValue(null);\n this.cdr.markForCheck();\n }\n}\n","@if (element) {\n @if (element.label) {\n <label class=\"mapa-dropdown__label\">\n {{ element.label }}\n </label>\n }\n <div class=\"mapa-form--inline\">\n <mat-form-field\n appearance=\"outline\"\n class=\"mapa-dropdown\"\n [class.mapa-dropdown--highlight]=\"border === 'highlight'\"\n [class.mapa-dropdown--soft-border]=\"border === 'soft'\"\n [class.mapa-dropdown--tag]=\"border === 'tag'\"\n [class.mapa-dropdown--labeled]=\"!!element.label\"\n >\n <mat-select\n #dropdown\n ngDefaultControl\n [formControl]=\"formControl\"\n [multiple]=\"element.multiple\"\n [placeholder]=\"element.placeholder || ''\"\n [compareWith]=\"compareFn\"\n (openedChange)=\"triggerOpenedChange($event)\"\n >\n @if (element.search) {\n <mat-option class=\"mapa-dropdown__search\">\n @if (element.search.formControl) {\n <ngx-mat-select-search\n [showToggleAllCheckbox]=\"element.search.toggleAllCheckbox!\"\n [formControl]=\"element.search.formControl\"\n [placeholderLabel]=\"element.search.placeholder || ''\"\n i18n-placeholderLabel\n [noEntriesFoundLabel]=\"element.search.noEntriesFoundLabel || ''\"\n ></ngx-mat-select-search>\n }\n </mat-option>\n }\n @if (element.multiple) {\n <mat-option class=\"mapa-dropdown__option--select-all\">\n <mat-checkbox\n class=\"mat-option\"\n [indeterminate]=\"isIndeterminate\"\n [checked]=\"isChecked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectAll($event)\"\n >\n {{ selectAllLabel }}\n </mat-checkbox>\n </mat-option>\n }\n @if (isOptionsGroup) {\n @if (filteredGroups | async; as groups) {\n @for (group of groups; track group.label) {\n <mat-optgroup [label]=\"group.label\">\n @for (option of group.options; track option.key) {\n <mat-option\n [value]=\"option\"\n [ngClass]=\"[\n 'mapa-dropdown__option--children-level-' + option.childrenLevel,\n ]\"\n >\n <span [innerHTML]=\"option.value | safeHtml\"></span>\n </mat-option>\n }\n </mat-optgroup>\n }\n }\n } @else {\n @if (filteredOptions | async; as options) {\n @for (option of options; track option.key) {\n <mat-option\n [value]=\"option\"\n [ngClass]=\"[\n 'mapa-dropdown__option mapa-dropdown__option--children-level-' +\n option.childrenLevel,\n ]\"\n >\n <span\n class=\"mapa-dropdown__option-value\"\n [innerHTML]=\"option.value | safeHtml\"\n ></span>\n </mat-option>\n }\n }\n }\n\n @for (option of selectedOptions; track option.key) {\n <mat-option\n hidden\n [value]=\"option\"\n [ngClass]=\"[\n 'mapa-dropdown__option--children-level-' + option.childrenLevel,\n ]\"\n >\n <span [innerHTML]=\"option.value | safeHtml\"></span>\n </mat-option>\n }\n </mat-select>\n @if (element.hint) {\n <mat-hint>{{ element.hint }}</mat-hint>\n }\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n @if (hasValue() && !formControl.disabled && element.clearValue) {\n <mat-icon\n (click)=\"clearValue($event)\"\n class=\"mapa-input--close\"\n >close</mat-icon\n >\n }\n </mat-form-field>\n @if (element.actionButton) {\n <div class=\"mapa-form--action\">\n <mapa-button\n color=\"basic\"\n (click)=\"element.actionButton.action.emit(true)\"\n >\n {{ element.actionButton.label }}\n </mapa-button>\n </div>\n }\n </div>\n}\n","/*\n * Public API Surface of mapa-library-ui dropdown\n */\n\nexport * from './src/dropdown.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from \"@angular/core\";\nimport { NgApexchartsModule } from \"ng-apexcharts\";\nimport { MapaDropdownComponent } from \"../../dropdown/public-api\";\nimport { ChartOptions } from \"../../../core/interfaces/chart-options.interface\";\n\n@Component({\n selector: \"mapa-chart\",\n templateUrl: \"./chart.component.html\",\n styleUrl: \"./chart.component.scss\",\n imports: [CommonModule, NgApexchartsModule, MapaDropdownComponent],\n standalone: true,\n})\nexport class MapaChartComponent implements OnInit, OnChanges {\n @Input() options!: Partial<ChartOptions>;\n\n private colors = [\"#EA561D\", \"#6195FB\", \"#2ED47A\", \"#EEDB2A\"];\n public chartOptions!: Partial<ChartOptions>;\n\n constructor() {}\n\n ngOnInit(): void {\n this.generateChart();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"options\"]) {\n this.generateChart();\n }\n }\n\n private generateChart(): void {\n if (this.options) {\n this.chartOptions = {\n series: this.options.series,\n chart: {\n height: 500,\n width: \"100%\",\n type: this.options.chart?.type || \"radar\",\n events: {\n beforeMount: (chart) => {\n chart.windowResizeHandler();\n },\n },\n toolbar: {\n show: false,\n },\n },\n stroke: {\n width: 1,\n colors: this.colors,\n },\n fill: {\n opacity: 0.3,\n colors: this.colors,\n },\n markers: {\n size: 2,\n shape: \"circle\",\n colors: this.colors,\n strokeColors: this.colors,\n },\n xaxis: {\n categories: this.options.xaxis?.categories,\n labels: {\n style: {\n colors: new Array(this.options.xaxis?.categories.length).fill(\n \"#666666\"\n ),\n fontSize: \"12px\",\n fontFamily: \"Asap\",\n },\n },\n },\n yaxis: {\n labels: {\n style: {\n colors: \"#9B9B9B\",\n fontSize: \"12px\",\n fontFamily: \"Asap\",\n },\n },\n tickAmount: 10,\n min: 0,\n max: 100,\n },\n legend: {\n position: \"right\",\n horizontalAlign: \"center\",\n height: 500,\n fontSize: \"12px\",\n fontFamily: \"Asap\",\n offsetX: 30,\n markers: {\n fillColors: this.colors,\n },\n },\n responsive: [\n {\n breakpoint: 1300,\n options: {\n chart: {\n width: \"100%\",\n height: 550,\n },\n legend: {\n position: \"bottom\",\n horizontalAlign: \"center\",\n height: 100,\n },\n },\n },\n ],\n };\n }\n }\n}\n\n","<section>\n <div class=\"chart\" *ngIf=\"chartOptions\">\n <div class=\"chart__dropdown\" *ngIf=\"options.dropdown\">\n <mapa-dropdown\n [formControl]=\"options.dropdown.formControl\"\n [element]=\"options.dropdown.element\"\n ></mapa-dropdown>\n </div>\n <apx-chart\n [series]=\"chartOptions.series!\"\n [chart]=\"chartOptions.chart!\"\n [xaxis]=\"chartOptions.xaxis!\"\n [yaxis]=\"chartOptions.yaxis!\"\n [stroke]=\"chartOptions.stroke!\"\n [markers]=\"chartOptions.markers!\"\n [fill]=\"chartOptions.fill!\"\n [title]=\"chartOptions.title!\"\n [legend]=\"chartOptions.legend!\"\n [responsive]=\"chartOptions.responsive!\"width\n ></apx-chart>\n </div>\n</section>\n","/*\n * Public API Surface of mapa-library-ui chart\n */\n\nexport * from './src/chart.component';\n","import { Component, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'mapa-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n imports: [ReactiveFormsModule, MatCheckboxModule],\n standalone: true\n})\nexport class CheckboxComponent {\n @Input() color: 'primary' | 'basic' | null | undefined;\n @Input() formControl!: FormControl;\n}\n","<mat-checkbox\n [formControl]=\"formControl\"\n [class.primary]=\"color === 'primary'\"\n [class.basic]=\"color === 'basic'\"\n>\n</mat-checkbox>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/checkbox.component';\n","const DAY_MONTH_YEAR_PATTERN = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\n\nfunction isValidDate(date: Date): boolean {\n return !Number.isNaN(date.getTime());\n}\n\nexport function formatDateAsDayMonthYear(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const year = `${date.getFullYear()}`;\n\n return `${day}/${month}/${year}`;\n}\n\nexport function parseDateValue(value: unknown): Date | null {\n if (value instanceof Date) {\n return isValidDate(value) ? new Date(value.getTime()) : null;\n }\n\n if (typeof value === \"number\") {\n const parsedDate = new Date(value);\n return isValidDate(parsedDate) ? parsedDate : null;\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n const dayMonthYearMatch = DAY_MONTH_YEAR_PATTERN.exec(trimmedValue);\n if (dayMonthYearMatch) {\n const [, dayValue, monthValue, yearValue] = dayMonthYearMatch;\n const day = Number(dayValue);\n const month = Number(monthValue);\n const year = Number(yearValue);\n const parsedDate = new Date(year, month - 1, day);\n\n if (\n parsedDate.getFullYear() === year &&\n parsedDate.getMonth() === month - 1 &&\n parsedDate.getDate() === day\n ) {\n return parsedDate;\n }\n\n return null;\n }\n\n const parsedDate = new Date(trimmedValue);\n return isValidDate(parsedDate) ? parsedDate : null;\n}\n\nexport function isDateValue(value: unknown): boolean {\n return parseDateValue(value) !== null;\n}\n\nexport function getRelativeDateRange(daysBack: number): {\n startDate: Date;\n endDate: Date;\n} {\n const endDate = new Date();\n endDate.setHours(23, 59, 59, 999);\n\n const startDate = new Date();\n startDate.setHours(0, 0, 0, 0);\n startDate.setDate(startDate.getDate() - daysBack);\n\n return { startDate, endDate };\n}\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormControl, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { provideNativeDateAdapter } from \"@angular/material/core\";\nimport { MatDatepicker, MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { NgxMaskDirective, provideNgxMask } from \"ngx-mask\";\nimport { MapaFormErrorsComponent } from \"../../../core/components/form-errors/form-errors.component\";\nimport {\n formatDateAsDayMonthYear,\n parseDateValue,\n} from \"../../../core/utils/date.util\";\nimport { Datepicker } from \"../../../core/elements/datepicker\";\n\nexport const MAPA_DATEPICKER_FORMATS = {\n parse: {\n dateInput: \"DD/MM/YYYY\",\n },\n display: {\n dateInput: \"DD/MM/YYYY\",\n monthYearLabel: \"MMM YYYY\",\n dateA11yLabel: \"LL\",\n monthYearA11yLabel: \"MMMM YYYY\",\n },\n};\n\n@Component({\n selector: \"mapa-datepicker\",\n templateUrl: \"./datepicker.component.html\",\n styleUrl: \"./datepicker.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NgxMaskDirective,\n MatDatepickerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MapaFormErrorsComponent,\n ],\n providers: [\n provideNgxMask(),\n provideNativeDateAdapter(MAPA_DATEPICKER_FORMATS),\n ],\n standalone: true,\n})\nexport class MapaDatepicker implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() element!: Datepicker;\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly formDatepicker = new FormGroup({\n date: new FormControl<Date | null>(null),\n });\n\n formControl!: FormControl<string | null>;\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.formControl = this.formGroup.get(this.element.key) as FormControl<\n string | null\n >;\n\n this.syncDatepickerControl(this.formControl.value);\n\n this.formControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.syncDatepickerControl(value);\n });\n\n this.formDatepicker.controls.date.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.updateExternalControl(value);\n });\n }\n\n get minDate(): Date | null {\n return parseDateValue(this.element.minDate);\n }\n\n get maxDate(): Date | null {\n return parseDateValue(this.element.maxDate);\n }\n\n hasValue(): boolean {\n return !!this.formControl?.value;\n }\n\n cleanDatepicker(): void {\n this.formDatepicker.patchValue({ date: null }, { emitEvent: false });\n\n if (this.formControl.value === \"\") {\n return;\n }\n\n this.formControl.patchValue(\"\");\n this.cdr.markForCheck();\n }\n\n private syncDatepickerControl(value: unknown): void {\n const nextDate = parseDateValue(value);\n const currentDate = this.formDatepicker.controls.date.value;\n\n if (this.areDatesEqual(currentDate, nextDate)) {\n return;\n }\n\n this.formDatepicker.patchValue({ date: nextDate }, { emitEvent: false });\n this.cdr.markForCheck();\n }\n\n private updateExternalControl(value: Date | null): void {\n if (!value) {\n if (this.formControl.value !== \"\") {\n this.formControl.patchValue(\"\");\n this.cdr.markForCheck();\n }\n\n return;\n }\n\n const formattedDate = formatDateAsDayMonthYear(value);\n\n if (this.formControl.value === formattedDate) {\n return;\n }\n\n this.formControl.patchValue(formattedDate);\n this.cdr.markForCheck();\n }\n\n closePicker(picker: MatDatepicker<Date>): void {\n picker.close();\n }\n\n private areDatesEqual(first: Date | null, second: Date | null): boolean {\n if (first === second) {\n return true;\n }\n\n if (!first || !second) {\n return false;\n }\n\n return first.getTime() === second.getTime();\n }\n}\n","@if (element && formGroup) {\n <section class=\"mapa-datepicker\" [formGroup]=\"formGroup\">\n @if (element.label) {\n <label class=\"mapa-datepicker__label\">\n {{ element.label }}\n </label>\n }\n\n <section class=\"mapa-datepicker__field\" [formGroup]=\"formGroup\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n matInput\n [formControlName]=\"element.key\"\n [placeholder]=\"element.placeholder || element.label || ''\"\n [mask]=\"element.mask\"\n [readonly]=\"element.readonly\"\n />\n <mat-icon *ngIf=\"hasValue()\" matSuffix (click)=\"cleanDatepicker()\">close</mat-icon>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker touchUi=\"true\" #picker></mat-datepicker>\n @if (element.hint) {\n <mat-hint>{{ element.hint }}</mat-hint>\n }\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n </mat-form-field>\n </section>\n\n <section class=\"mapa-datepicker--hidden\">\n <mat-form-field [formGroup]=\"formDatepicker\">\n <input\n matInput\n formControlName=\"date\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [matDatepicker]=\"picker\"\n (dateChange)=\"closePicker(picker)\"\n />\n </mat-form-field>\n </section>\n </section>\n}\n","/*\n * Public API Surface of mapa-library-ui datepicker (single)\n */\n\nexport * from './src/datepicker.component';","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n} from \"@angular/forms\";\nimport { provideNativeDateAdapter } from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { NgxMaskDirective, provideNgxMask } from \"ngx-mask\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport {\n formatDateAsDayMonthYear,\n getRelativeDateRange,\n parseDateValue,\n} from \"../../../core/utils/date.util\";\nimport { DatepickerRange } from \"../../../core/elements/datepicker-range\";\n\nexport interface MapaDatepickerRangeControlValue {\n startDate: string | null;\n endDate: string | null;\n}\n\nexport type MapaDatepickerRangeFormGroup = FormGroup;\n\ntype MapaDatepickerInternalRangeValue = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\ntype MapaDatepickerInternalRangeFormGroup = FormGroup<{\n startDate: FormControl<MapaDatepickerInternalRangeValue[\"startDate\"]>;\n endDate: FormControl<MapaDatepickerInternalRangeValue[\"endDate\"]>;\n}>;\n\ntype MapaDatepickerRangeDisplayFormGroup = FormGroup<{\n startDate: FormControl<string | null>;\n endDate: FormControl<string | null>;\n}>;\n\nexport const MAPA_DATEPICKER_RANGE_FORMATS = {\n parse: {\n dateInput: \"DD/MM/YYYY\",\n },\n display: {\n dateInput: \"DD/MM/YYYY\",\n monthYearLabel: \"MMM YYYY\",\n dateA11yLabel: \"LL\",\n monthYearA11yLabel: \"MMMM YYYY\",\n },\n};\n\n@Component({\n selector: \"mapa-datepicker-range\",\n templateUrl: \"./datepicker-range.component.html\",\n styleUrl: \"./datepicker-range.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NgxMaskDirective,\n MatDatepickerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n ],\n providers: [\n provideNgxMask(),\n provideNativeDateAdapter(MAPA_DATEPICKER_RANGE_FORMATS),\n ],\n standalone: true,\n})\nexport class MapaDatepickerRange implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() element!: DatepickerRange;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly defaultDaysBack = 60;\n private readonly emptyValue: MapaDatepickerRangeControlValue = {\n startDate: null,\n endDate: null,\n };\n\n readonly formDatepicker: MapaDatepickerInternalRangeFormGroup = new FormGroup({\n startDate: new FormControl<Date | null>(null),\n endDate: new FormControl<Date | null>(null),\n });\n\n readonly formDisplay: MapaDatepickerRangeDisplayFormGroup = new FormGroup({\n startDate: new FormControl<string | null>(null),\n endDate: new FormControl<string | null>(null),\n });\n\n rangeControl!: FormControl<MapaDatepickerRangeControlValue | null>;\n\n constructor(\n private readonly i18n: MapaI18nService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n ngOnInit(): void {\n if (!this.element?.key) {\n throw new Error(\"mapa-datepicker-range requires element.key to resolve the target control.\");\n }\n\n this.rangeControl = this.formGroup.get(this.element.key) as FormControl<\n MapaDatepickerRangeControlValue | null\n >;\n\n if (!this.rangeControl) {\n throw new Error(\n `mapa-datepicker-range could not find control '${this.element.key}' in formGroup.`\n );\n }\n\n this.syncFromExternal(this.rangeControl.value);\n\n this.rangeControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.syncFromExternal(value);\n });\n\n this.formDisplay.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.updateExternalFromDisplay(value);\n });\n\n this.formDatepicker.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.updateExternalFromDatepicker(value);\n });\n }\n\n get startDatePlaceholder(): string {\n return this.texts.datepicker.startDatePlaceholder;\n }\n\n get endDatePlaceholder(): string {\n return this.texts.datepicker.endDatePlaceholder;\n }\n\n private syncFromExternal(value: MapaDatepickerRangeControlValue | null): void {\n const nextValue = value ?? this.emptyValue;\n const displayValue: MapaDatepickerRangeControlValue = {\n startDate: nextValue.startDate,\n endDate: nextValue.endDate,\n };\n const datepickerValue: MapaDatepickerInternalRangeValue = {\n startDate: parseDateValue(nextValue.startDate),\n endDate: parseDateValue(nextValue.endDate),\n };\n\n const currentDisplay = this.formDisplay.getRawValue();\n if (\n currentDisplay.startDate !== displayValue.startDate ||\n currentDisplay.endDate !== displayValue.endDate\n ) {\n this.formDisplay.patchValue(displayValue, { emitEvent: false });\n }\n\n const currentDatepicker = this.formDatepicker.getRawValue();\n if (\n !this.areDatesEqual(currentDatepicker.startDate, datepickerValue.startDate) ||\n !this.areDatesEqual(currentDatepicker.endDate, datepickerValue.endDate)\n ) {\n this.formDatepicker.patchValue(datepickerValue, { emitEvent: false });\n }\n\n this.cdr.markForCheck();\n }\n\n private updateExternalFromDisplay(\n value: Partial<MapaDatepickerRangeControlValue>\n ): void {\n const nextValue: MapaDatepickerRangeControlValue = {\n startDate: value.startDate ?? null,\n endDate: value.endDate ?? null,\n };\n\n this.patchExternalValue(nextValue);\n\n const nextDatepickerValue: MapaDatepickerInternalRangeValue = {\n startDate: parseDateValue(nextValue.startDate),\n endDate: parseDateValue(nextValue.endDate),\n };\n this.formDatepicker.patchValue(nextDatepickerValue, { emitEvent: false });\n this.cdr.markForCheck();\n }\n\n private updateExternalFromDatepicker(\n value: Partial<MapaDatepickerInternalRangeValue>\n ): void {\n if (!value.startDate || !value.endDate) {\n return;\n }\n\n const nextValue: MapaDatepickerRangeControlValue = {\n startDate: formatDateAsDayMonthYear(value.startDate),\n endDate: formatDateAsDayMonthYear(value.endDate),\n };\n\n this.patchExternalValue(nextValue);\n this.formDisplay.patchValue(nextValue, { emitEvent: false });\n this.cdr.markForCheck();\n }\n\n private patchExternalValue(nextValue: MapaDatepickerRangeControlValue): void {\n const currentValue = this.rangeControl.value;\n\n if (\n currentValue?.startDate === nextValue.startDate &&\n currentValue?.endDate === nextValue.endDate\n ) {\n return;\n }\n\n this.rangeControl.patchValue(nextValue);\n }\n\n private areDatesEqual(first: Date | null, second: Date | null): boolean {\n if (first === second) {\n return true;\n }\n\n if (!first || !second) {\n return false;\n }\n\n return first.getTime() === second.getTime();\n }\n\n cleanDatepicker() {\n const defaultRange = {\n startDate: null,\n endDate: null,\n };\n\n this.formDatepicker.patchValue(defaultRange, { emitEvent: false });\n this.formDisplay.patchValue(defaultRange, { emitEvent: false });\n this.patchExternalValue(defaultRange);\n this.cdr.markForCheck();\n }\n}\n\nexport type MapaDatepickerRangeComponent = MapaDatepickerRange;\n","@if (element.label) {\n <div class=\"mapa-datepicker-range__label\">\n {{ element.label }}\n </div>\n}\n<section class=\"mapa-datepicker-range\" [formGroup]=\"formDisplay\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"mapa-datepicker-range__start-date\"\n >\n <input\n matInput\n formControlName=\"startDate\"\n [placeholder]=\"startDatePlaceholder\"\n mask=\"00/00/0000\"\n />\n </mat-form-field>\n <div class=\"mapa-datepicker-range__divider\">&ndash;</div>\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"mapa-datepicker-range__end-date\"\n >\n <input\n matInput\n formControlName=\"endDate\"\n [placeholder]=\"endDatePlaceholder\"\n mask=\"00/00/0000\"\n />\n <mat-icon matSuffix (click)=\"cleanDatepicker()\">close</mat-icon>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker touchUi=\"true\" #picker></mat-date-range-picker>\n </mat-form-field>\n</section>\n<section class=\"mapa--hidden\">\n <mat-form-field [formGroup]=\"formDatepicker\">\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"startDate\" />\n <input matEndDate formControlName=\"endDate\" />\n </mat-date-range-input>\n </mat-form-field>\n</section>\n","/*\n * Public API Surface of mapa-library-ui datepicker-range\n */\n\nexport * from './src/datepicker-range.component';","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Inject, Input, Output } from \"@angular/core\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogConfig,\n MatDialogModule,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\nimport { ButtonComponent } from \"../../button/public-api\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\nimport { DialogData } from \"../../../core/interfaces/dialog-data.interface\";\n\n@Component({\n selector: \"mapa-dialog\",\n templateUrl: \"./dialog.component.html\",\n styleUrl: \"./dialog.component.scss\",\n imports: [\n CommonModule,\n MatDialogModule,\n MatIconModule,\n ButtonComponent,\n SafeHtmlPipe,\n ],\n standalone: true,\n})\nexport class MapaDialogComponent {\n @Input() isReportRegistration!: boolean;\n @Output() dataEmitter: EventEmitter<DialogData> = new EventEmitter<DialogData>();\n\n imgBase64!: SafeResourceUrl;\n isSave: boolean = false;\n dialogData!: DialogData;\n htmlDescription = \"\";\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef<MapaDialogComponent>,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit() {\n this.dialogData = this.data.dialogData;\n if (this.dialogData.imgBase64) {\n this.imgBase64 = this.sanitizer.bypassSecurityTrustResourceUrl(\n `data:image/jpg;base64,${this.dialogData.imgBase64}`\n );\n }\n if (this.dialogData.description) {\n this.htmlDescription = this.dialogData.description;\n }\n }\n\n close() {\n this.dialogRef.close(this.isSave);\n }\n\n save() {\n this.isSave = true;\n this.dialogRef.close(this.isSave);\n }\n\n emitData() {\n this.dataEmitter.emit(this.dialogData);\n }\n}\n\nexport function openDialog(dialog: MatDialog, dialogData: DialogData, config: MatDialogConfig = new MatDialogConfig()) {\n config.width = config.width || '787px';\n config.disableClose = true;\n config.autoFocus = true;\n config.panelClass = \"icon-outside\";\n config.data = {\n dialogData,\n };\n\n const dialogRef = dialog.open(MapaDialogComponent, config);\n\n return dialogRef.afterClosed();\n}\n\n","<div class=\"mapa-dialog\">\n <div class=\"dialog-icon\">\n <mat-icon (click)=\"close()\">close</mat-icon>\n </div> \n <mat-dialog-content>\n <img *ngIf=\"imgBase64\" [src]=\"imgBase64\" />\n <h2>\n {{ dialogData.title }}\n </h2>\n <p [innerHTML]=\"htmlDescription | safeHtml\"></p>\n </mat-dialog-content>\n <div *ngIf=\"dialogData.isReportRegistration\">\n <mapa-button color=\"accent\" (click)=\"emitData()\">\n {{ dialogData.button }}\n </mapa-button>\n </div>\n <mat-dialog-actions *ngIf=\"!dialogData.isReportRegistration\">\n <mapa-button color=\"basic\" (click)=\"close()\" *ngIf=\"dialogData.actions.close\">\n {{ dialogData.actions.close }}\n </mapa-button>\n <mapa-button color=\"primary\" (click)=\"save()\" *ngIf=\"dialogData.actions.save\">\n {{ dialogData.actions.save }}\n </mapa-button>\n </mat-dialog-actions>\n</div>\n\n","/*\n * Public API Surface of mapa-library-ui dialog\n */\n\nexport * from './src/dialog.component';\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Dropdown } from '../../../core/elements/dropdown';\nimport { DropdownTree } from '../../../core/elements/dropdown-tree';\nimport {\n ElementOption,\n ElementTreeNode,\n} from '../../../core/interfaces/element-option.interface';\nimport { MapaDropdownComponent } from '../../dropdown/public-api';\n\nexport interface DataNode extends ElementTreeNode {}\n\n@Component({\n selector: 'mapa-dropdown-tree',\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n imports: [CommonModule, MapaDropdownComponent],\n standalone: true\n})\nexport class MapaDropdownTreeComponent\n implements OnInit, OnChanges, AfterViewInit\n{\n @Input() formGroup!: FormGroup;\n @Input() element!: DropdownTree;\n elementOption!: Dropdown;\n formControl!: FormControl<unknown>;\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.syncElementOption();\n }\n\n ngAfterViewInit(): void {\n Promise.resolve().then(() => this.cdr.detectChanges());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element'] || changes['formGroup']) {\n this.syncElementOption();\n }\n }\n\n getFormControl(element: Dropdown): FormControl<unknown> {\n return this.formGroup.get(element.key) as FormControl<unknown>;\n }\n\n private syncElementOption(): void {\n if (!this.element || !this.formGroup) {\n return;\n }\n\n const options = this.formatTree(this.element.tree);\n\n this.elementOption = {\n ...this.element,\n options,\n };\n\n this.formControl = this.getFormControl(this.elementOption);\n }\n\n formatTree(\n tree: ElementTreeNode[],\n childrenLevel: number = 0\n ): ElementOption[] {\n const options: ElementOption[] = [];\n\n tree.map((item: ElementTreeNode) => {\n options.push({\n value: item.value,\n key: item.key,\n childrenLevel,\n });\n if (item.children) {\n options.push(\n ...this.formatTree(\n this.formatTreeChildren(item.children, childrenLevel + 1),\n childrenLevel + 1\n )\n );\n }\n });\n return options;\n }\n\n formatTreeChildren(\n children: ElementTreeNode[],\n childrenLevel: number\n ): ElementOption[] {\n const options: ElementOption[] = [];\n\n children.map((item) => {\n options.push({\n value: item.value,\n key: item.key,\n children: item.children,\n childrenLevel,\n });\n });\n\n return options;\n }\n\n triggerOpenedChange(event: boolean): void {\n this.openedChange.emit(event);\n }\n}\n\n","<section *ngIf=\"elementOption && formControl\">\n <mapa-dropdown\n [formControl]=\"formControl\"\n [element]=\"elementOption\"\n (openedChange)=\"triggerOpenedChange($event)\"\n ></mapa-dropdown>\n</section>\n","/*\n * Public API Surface of mapa-library-ui dropdown-tree\n */\n\nexport * from './src/dropdown.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\n\n@Component({\n selector: 'mapa-empty',\n templateUrl: './empty.component.html',\n styleUrl: './empty.component.scss',\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe],\n})\nexport class MapaEmptyStateComponent {\n @Input() title: string | null = null;\n @Input() subtitle: string | null = null;\n}\n","<div class=\"empty\">\n <svg\n width=\"284\"\n height=\"284\"\n viewBox=\"0 0 284 284\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <rect width=\"284\" height=\"284\" fill=\"url(#pattern0)\" />\n <defs>\n <pattern\n id=\"pattern0\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use xlink:href=\"#image0_861_11131\" transform=\"scale(0.00219298)\" />\n </pattern>\n <image\n id=\"image0_861_11131\"\n width=\"456\"\n height=\"456\"\n xlink:href=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n <h2 *ngIf=\"title\" [innerHTML]=\"title | safeHtml\"></h2>\n <h3 *ngIf=\"subtitle\" [innerHTML]=\"subtitle | safeHtml\"></h3>\n</div>\n\n","/*\n * Public API Surface of mapa-library-ui empty\n */\n\nexport * from './src/empty.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { ButtonComponent } from '../../button/public-api';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { MatInputAutosizeDirective } from '../../../core/directives/mat-input-autosize.directive';\nimport { InputText } from '../../../core/elements/input-text';\n\n@Component({\n selector: 'mapa-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgxMaskDirective,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n ButtonComponent,\n MatInputAutosizeDirective,\n MapaFormErrorsComponent,\n ],\n providers: [provideNgxMask()],\n standalone: true\n})\nexport class MapaInputComponent {\n @Input() formControl!: FormControl<unknown>;\n @Input() element!: InputText;\n @Input() type!: string;\n @Output() suffix: EventEmitter<void> = new EventEmitter<void>();\n\n hasValue(): boolean {\n return !!this.formControl.value;\n }\n\n clearValue(): void {\n this.formControl.setValue(null);\n }\n\n suffixEmit(): void {\n this.suffix.emit();\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-input__label\">\n {{ element.label }}\n</label>\n<div class=\"mapa-form--inline\">\n <mat-form-field\n class=\"mapa-input\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n >\n <mat-icon *ngIf=\"element.prefix\" class=\"mapa-input--prefix\" matPrefix>\n {{ element.prefix }}\n </mat-icon>\n <input\n *ngIf=\"element.autosize\"\n matInput\n matInputAutosize\n [matInputAutosizeMinWidth]=\"element.autosizeMinWidth!\"\n [matInputAutosizeMaxWidth]=\"element.autosizeMaxWidth!\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || element.label\"\n [maxlength]=\"element.maxLength\"\n (keydown.enter)=\"suffixEmit()\"\n [type]=\"type\"\n [mask]=\"element.mask\"\n thousandSeparator=\".\"\n decimalMarker=\",\"\n [autocomplete]=\"element.autocomplete\"\n [readOnly]=\"element.readonly\"\n />\n <input\n matInput\n *ngIf=\"!element.autosize\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || element.label\"\n [maxlength]=\"element.maxLength\"\n (keydown.enter)=\"suffixEmit()\"\n [type]=\"type\"\n [mask]=\"element.mask\"\n [autocomplete]=\"element.autocomplete\"\n [readOnly]=\"element.readonly\"\n />\n <mat-icon\n *ngIf=\"hasValue() && !formControl.disabled && element.clearValue\"\n (click)=\"clearValue()\"\n class=\"mapa-input--close\"\n matSuffix\n >close</mat-icon\n >\n <mat-icon\n *ngIf=\"element.suffix\"\n class=\"mapa-input--suffix\"\n matSuffix\n (click)=\"suffix.emit()\"\n >\n {{ element.suffix }}\n </mat-icon>\n <mat-hint *ngIf=\"element.hint\">{{ element.hint }}</mat-hint>\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n </mat-form-field>\n\n <div *ngIf=\"element.actionButton\" class=\"mapa-form--action\">\n <mapa-button\n color=\"basic\"\n (clicked)=\"element.actionButton.action.emit(true)\"\n >\n {{ element.actionButton.label }}\n </mapa-button>\n </div>\n</div>\n","/*\n * Public API Surface of mapa-library-ui input\n */\n\nexport * from './src/input.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { ButtonComponent } from '../../button/public-api';\nimport { CheckboxComponent } from '../../checkbox/public-api';\nimport { MapaDropdownComponent } from '../../dropdown/public-api';\nimport { MapaInputComponent } from '../../input/public-api';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\n\n@Component({\n selector: 'mapa-filters',\n templateUrl: './filters.component.html',\n styleUrl: './filters.component.scss',\n imports: [\n CommonModule,\n ButtonComponent,\n CheckboxComponent,\n MapaDropdownComponent,\n MapaInputComponent,\n ],\n standalone: true\n})\nexport class FiltersComponent {\n @Input() form!: FormGroup;\n @Input() elements!: ElementBase[];\n @Output() selectedValues = new EventEmitter<Record<string, unknown>>();\n \n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get clearFiltersLabel(): string {\n return this.texts.filters.clear;\n }\n\n get submitFiltersLabel(): string {\n return this.texts.filters.submit;\n }\n\n getFormControl(filterKey: string): FormControl<unknown> {\n return this.form.get(filterKey) as FormControl<unknown>;\n }\n\n clearFilters(): void {\n this.form.reset();\n }\n\n emitSelectedValues(): void {\n this.selectedValues.emit(this.form.getRawValue() as Record<string, unknown>);\n }\n}\n","<div class=\"filter\">\n <div *ngFor=\"let filter of elements\">\n <div *ngIf=\"filter.controlType === 'checkbox'\" class=\"filter__item--resizable\">\n <mapa-checkbox [formControl]=\"getFormControl(filter.key)\"></mapa-checkbox>\n </div>\n <div *ngIf=\"filter.controlType === 'dropdown'\" class=\"filter__item--resizable\">\n <mapa-dropdown\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-dropdown>\n </div>\n <div *ngIf=\"filter.controlType === 'input'\" class=\"filter__item\">\n <mapa-input\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-input>\n </div>\n </div>\n <div class=\"filter__item\">\n <mapa-button [color]=\"'basic'\" (clicked)=\"clearFilters()\">\n {{ clearFiltersLabel }}\n </mapa-button>\n <mapa-button\n [color]=\"'primary'\"\n [disabled]=\"!!form.invalid\"\n (clicked)=\"emitSelectedValues()\"\n >\n {{ submitFiltersLabel }}\n </mapa-button>\n </div>\n</div>\n\n","/*\n * Public API Surface of mapa-library-ui dropdown\n */\n\nexport * from './src/filters.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n\n@Component({\n selector: 'mapa-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrl: './radio-button.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MatRadioModule],\n standalone: true\n})\nexport class RadioButtonComponent implements OnInit, OnChanges {\n @Input() formControl!: FormControl;\n @Input() element!: ElementBase;\n \n @Output() optionSelected: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selectedOption!: ElementOption;\n options: ElementOption[] = [];\n\n ngOnInit(): void {\n this.options = this.element.options as ElementOption[];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element']) {\n this.options = (this.element?.options as ElementOption[]) ?? [];\n }\n }\n\n onChange(optionValue: ElementOption) {\n this.selectedOption = optionValue;\n this.optionSelected.emit(this.selectedOption);\n }\n}\n\n","<label *ngIf=\"element.label\" class=\"mapa-radio-button__label\">\n {{ element.label }}\n</label>\n<section class=\"mapa-radio-button\">\n <mat-radio-group [formControl]=\"formControl\" [value]=\"selectedOption\" (change)=\"onChange($event.value)\">\n <mat-radio-button\n *ngFor=\"let option of options\"\n [value]=\"option\"\n >\n {{ option.value }}\n </mat-radio-button>\n </mat-radio-group>\n</section>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/radio-button.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n\n@Component({\n selector: 'mapa-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrl: './slide-toggle.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MatSlideToggleModule],\n standalone: true\n})\nexport class SlideToggleComponent implements OnInit, OnChanges {\n @Input() formControl!: FormControl;\n @Input() element!: ElementBase;\n \n @Output() optionSelected: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selectedOption!: ElementOption;\n options: ElementOption[] = [];\n\n ngOnInit(): void {\n this.options = this.element.options as ElementOption[];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element']) {\n this.options = (this.element?.options as ElementOption[]) ?? [];\n }\n }\n\n onChange(optionValue: ElementOption) {\n this.selectedOption = optionValue;\n this.optionSelected.emit(this.selectedOption);\n }\n}\n\n","<label *ngIf=\"element.label\" class=\"mapa-slide-toggle__label\">\n {{ element.label }}\n</label>\n<section class=\"mapa-slide-toggle\">\n <mat-slide-toggle [formControl]=\"formControl\" color=\"primary\">\n {{ element.status ? ( formControl.value ? element.status[1].label :\n element.status[0].label ) :( formControl.value ? \"Ativo\" : \"Inativo\" ) }}\n </mat-slide-toggle>\n</section>\n","/*\n * Public API Surface of mapa-library-ui slide-toggle\n */\n\nexport * from './src/slide-toggle.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { FormsModule, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { Textarea } from '../../../core/elements/textarea';\n\n@Component({\n selector: 'mapa-textarea',\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MapaFormErrorsComponent,\n ],\n standalone: true\n})\nexport class MapaTextareaComponent {\n @Input() formControl!: FormControl;\n @Input() element!: Textarea;\n\n}\n\n","<label *ngIf=\"element.label\" class=\"mapa-textarea__label\">\n {{ element.label }}\n</label>\n<mat-form-field\n class=\"mapa-textarea\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <textarea\n *ngIf=\"element.autosize\"\n class=\"mapa-textarea__control mapa-textarea__control--autosize\"\n matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n [cdkAutosizeMinRows]=\"element.autosizeMinRow\"\n [cdkAutosizeMaxRows]=\"element.autosizeMaxRow\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || ''\"\n ></textarea>\n <textarea\n class=\"mapa-textarea__control mapa-textarea__control--manual\"\n matInput\n *ngIf=\"!element.autosize\"\n [maxlength]=\"element.maxLength\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || ''\"\n ></textarea>\n <mat-hint *ngIf=\"element.hint\">{{ element.hint }}</mat-hint>\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n</mat-form-field>\n","/*\n * Public API Surface of mapa-library-ui textarea\n */\n\nexport * from './src/textarea.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { ElementBase } from \"../../../core/elements/element-base\";\nimport { MapaDatepicker } from \"../../datepicker/public-api\";\nimport { MapaDatepickerRange } from \"../../datepicker-range/public-api\";\nimport { ElementOption } from \"../../../core/interfaces/element-option.interface\";\nimport { MapaDropdownComponent } from \"../../dropdown/public-api\";\nimport { MapaDropdownTreeComponent } from \"../../dropdown-tree/public-api\";\nimport { MapaInputComponent } from \"../../input/public-api\";\nimport { RadioButtonComponent } from \"../../radio-button/public-api\";\nimport { SlideToggleComponent } from \"../../slide-toggle/public-api\";\nimport { MapaTextareaComponent } from \"../../textarea/public-api\";\n\n\n@Component({\n selector: \"mapa-form\",\n templateUrl: \"./form.component.html\",\n styleUrl: \"./form.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n MapaDatepicker,\n MapaDatepickerRange,\n MapaInputComponent,\n MapaDropdownComponent,\n MapaDropdownTreeComponent,\n RadioButtonComponent,\n SlideToggleComponent,\n MapaTextareaComponent,\n ],\n standalone: true\n})\nexport class MapaFormComponent {\n @Input() formGroup!: FormGroup;\n @Input() elements: ElementBase[] = [];\n @Output() emitter: EventEmitter<ElementBase> = new EventEmitter<ElementBase>();\n \n getFormControl(element: ElementBase): FormControl<unknown> {\n return this.formGroup.get(element.key) as FormControl<unknown>;\n }\n\n onOptionSelected(optionValue: ElementOption): void {\n const radioControl = this.formGroup.get(\"radio\");\n if (radioControl) {\n radioControl.setValue(optionValue.key);\n }\n }\n\n emitSuffix(element: ElementBase): void {\n this.emitter.emit(element);\n }\n\n triggerOpenedChange(element: ElementBase, event: boolean): void {\n element.openedChange?.emit(event);\n } \n}\n\n","<section class=\"mapa-form\">\n @for (element of elements; track element.key) {\n <div class=\"mapa-form__element\">\n <div class=\"mapa-form__element--type\">\n @switch (element.controlType) {\n @case (\"input\") {\n <mapa-input\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (suffix)=\"emitSuffix(element)\"\n ></mapa-input>\n }\n @case (\"dropdown\") {\n <mapa-dropdown\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (openedChange)=\"triggerOpenedChange(element, $event)\"\n ></mapa-dropdown>\n }\n @case (\"dropdown-tree\") {\n <mapa-dropdown-tree\n [formGroup]=\"formGroup\"\n [element]=\"element\"\n ></mapa-dropdown-tree>\n }\n @case (\"datepicker\") {\n <mapa-datepicker\n [formGroup]=\"$any(formGroup)\"\n [element]=\"$any(element)\"\n ></mapa-datepicker>\n }\n @case (\"datepicker-range\") {\n <mapa-datepicker-range\n [formGroup]=\"$any(formGroup)\"\n [element]=\"$any(element)\"\n ></mapa-datepicker-range>\n }\n @case (\"radio-button\") {\n <mapa-radio-button\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (optionSelected)=\"onOptionSelected($event)\"\n ></mapa-radio-button>\n }\n @case (\"slide-toggle\") {\n <mapa-slide-toggle\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n ></mapa-slide-toggle>\n }\n @case (\"textarea\") {\n <mapa-textarea\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n ></mapa-textarea>\n }\n }\n </div>\n </div>\n }\n</section>\n","/*\n * Public API Surface of mapa-library-ui form\n */\n\nexport * from './src/form.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatSort, Sort } from \"@angular/material/sort\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableDataSource } from \"@angular/material/table\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { Classification } from \"../../../core/interfaces/classification.interface\";\nimport { TableColumn } from \"../../../core/interfaces/table-column.interface\";\nimport {\n Dimension,\n GroupReportDimensionCell,\n GroupReportItem,\n GroupReportRow,\n GroupReportRowValue,\n} from \"./group-report-interface\";\n\n@Component({\n selector: \"mapa-group-report\",\n templateUrl: \"./group-report.component.html\",\n styleUrls: [\n \"./group-report.component.scss\",\n \"./../../capability/styles/capability.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, MatIconModule, MatTableModule, MatSortModule],\n standalone: true,\n})\nexport class MapaGroupReportComponent implements OnChanges, AfterViewInit {\n @Input() groupReport: GroupReportItem[] = [];\n @Input() showGroupReportGeneral = false;\n @Output() onSortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n @ViewChild(MatSort) sort!: MatSort;\n\n dataSource: MatTableDataSource<GroupReportRow> =\n new MatTableDataSource<GroupReportRow>([]);\n displayedColumns: string[] = [];\n columns: TableColumn[] = [];\n data: GroupReportRow[] = [];\n\n ngAfterViewInit(): void {\n this.dataSource.sort = this.sort;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"groupReport\"] || changes[\"showGroupReportGeneral\"]) {\n this.refreshTableState();\n }\n }\n\n trackColumn(index: number, column: TableColumn): string {\n return `${index}:${column.key}`;\n }\n\n handleSortChange(sort: Sort): void {\n this.onSortChange.emit(sort);\n }\n\n getDimensionCell(\n row: GroupReportRow,\n key: string\n ): GroupReportDimensionCell | undefined {\n const cell = row[key];\n return this.isGroupReportDimensionCell(cell) ? cell : undefined;\n }\n\n getDimensionClassification(\n row: GroupReportRow,\n key: string\n ): Classification | undefined {\n return this.getDimensionCell(row, key)?.value?.classification;\n }\n\n getDimensionLabel(row: GroupReportRow, key: string): number | string {\n return this.getDimensionCell(row, key)?.value?.label ?? \"-\";\n }\n\n getGeneralValue(row: GroupReportRow): number | null {\n return typeof row.general === \"number\" ? row.general : null;\n }\n\n private refreshTableState(): void {\n this.columns = this.generateColumns();\n this.data = this.generateGroupData();\n this.displayedColumns = this.columns.map((column) => column.key);\n this.dataSource.data = this.data;\n this.dataSource.sortingDataAccessor = (\n row: GroupReportRow,\n columnKey: string\n ): string | number => this.getSortValue(row, columnKey);\n if (this.sort) {\n this.dataSource.sort = this.sort;\n }\n }\n\n private getSortValue(row: GroupReportRow, columnKey: string): string | number {\n const cell = row[columnKey];\n\n if (this.isGroupReportDimensionCell(cell)) {\n return cell.value?.classification?.classificationId ?? 0;\n }\n\n return typeof cell === \"number\" || typeof cell === \"string\" ? cell : \"\";\n }\n\n private isGroupReportDimensionCell(\n value: GroupReportRowValue\n ): value is GroupReportDimensionCell {\n return typeof value === \"object\" && value !== null && \"direction\" in value;\n }\n\n private generateColumns(): TableColumn[] {\n const columns: TableColumn[] = [{ key: \"name\", label: \"\", sort: false }];\n const existingKeys = new Set<string>([\"name\"]);\n\n if (this.showGroupReportGeneral) {\n columns.push({ key: \"general\", label: \"% Geral\", sort: false });\n existingKeys.add(\"general\");\n }\n\n this.groupReport.forEach((reportItem) => {\n reportItem.dimensions?.forEach((dimension) => {\n const key = this.getColumnKey(dimension.dimensionName);\n if (!existingKeys.has(key)) {\n columns.push({\n key,\n label: dimension.dimensionName,\n classification: dimension.classification,\n sort: true,\n });\n existingKeys.add(key);\n }\n });\n });\n\n return columns;\n }\n\n private generateGroupData(): GroupReportRow[] {\n return this.groupReport.map((item) => {\n const dataItem: GroupReportRow = {\n name: item.candidate.name,\n cpf: item.candidate.cpf,\n general: item.candidate.general,\n };\n\n item.dimensions?.forEach((dimension) => {\n dataItem[this.getColumnKey(dimension.dimensionName)] = {\n value: {\n label: this.getDimensionDisplayValue(dimension),\n classification: this.getDimensionClassificationFromDimension(dimension),\n },\n direction: dimension.direction,\n };\n });\n\n return dataItem;\n });\n }\n\n private getColumnKey(dimensionName: string): string {\n return dimensionName.toLowerCase();\n }\n\n private getDimensionDisplayValue(\n dimension: Dimension\n ): number | string | undefined {\n return (\n dimension.escoreT ??\n dimension.average ??\n dimension.percentil ??\n dimension.percentage ??\n dimension.count\n );\n }\n\n private getDimensionClassificationFromDimension(\n dimension: Dimension\n ): Classification | undefined {\n if (dimension.classification) {\n return dimension.classification;\n }\n\n if (\n dimension.classificationId === undefined &&\n !dimension.classificationName &&\n !dimension.classificationColor\n ) {\n return undefined;\n }\n\n return {\n classificationId: dimension.classificationId,\n classificationName: dimension.classificationName,\n classificationColor: dimension.classificationColor,\n };\n }\n}\n\n\n\n","<section class=\"mapa-group-report\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"handleSortChange($event)\"\n >\n @for (column of columns; track trackColumn($index, column)) {\n <ng-container [matColumnDef]=\"column.key\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!column.sort\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ column: column }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column.width\">\n <div\n class=\"mapa-group-report__column\"\n [class.mapa-group-report__column--center-cell]=\"column.align === 'center' || column.key !== 'name'\"\n >\n <div class=\"mapa-group-report__content\">\n @if (column.key === \"name\") {\n <div class=\"mapa-group-report__content--value\">\n <div class=\"mapa-group-report__content--title\">\n {{ row.name }}<br />\n </div>\n <div class=\"mapa-group-report__content--subtitle\">\n {{ row.cpf }}\n </div>\n </div>\n } @else if (column.key === \"general\") {\n <div class=\"general\">\n {{ getGeneralValue(row) | currency:'':'' }}%\n </div>\n } @else {\n <div class=\"mapa-group-report__hover\">\n <span class=\"mapa-group-report__hover--main\">\n <div\n class=\"mapa__tag--bg\"\n [class.mapa__tag--contrast]=\"getDimensionClassification(row, column.key)?.classificationId === 1\"\n [style.backgroundColor]=\"getDimensionClassification(row, column.key)?.classificationColor\"\n >\n {{\n getDimensionClassification(row, column.key)?.classificationName ||\n \"-\"\n }}\n </div>\n </span>\n <span class=\"mapa-group-report__hover--hidden\">\n {{ getDimensionLabel(row, column.key) }}\n </span>\n </div>\n }\n </div>\n </div>\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n\n<ng-template #tableHeader let-column=\"column\">\n <div class=\"mapa-group-report__header\">\n {{ column.label }}\n @if (column.sort) {\n <div>\n <mat-icon>filter_list</mat-icon>\n </div>\n }\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatIconRegistry } from \"@angular/material/icon\";\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'mapa-icon',\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss',\n standalone: true,\n imports: [CommonModule, MatIconModule],\n})\nexport class IconComponent {\n @Input() svg: string | null | undefined;\n\n constructor(\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer\n ) {}\n\n ngOnChanges(): void {\n this.registerCustomIcons(this.svg!);\n }\n\n registerCustomIcons(svg: string): void {\n this.matIconRegistry.addSvgIcon(\n svg,\n this.domSanitizer.bypassSecurityTrustResourceUrl(`../../../../assets/${svg}.svg`)\n );\n }\n}\n","<mat-icon *ngIf=\"svg\" [svgIcon]=\"svg\"></mat-icon>\n<mat-icon *ngIf=\"!svg\"><ng-content></ng-content></mat-icon>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/icon.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuTrigger } from \"@angular/material/menu\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport {\n MenuActionEvent,\n MenuActionItem,\n} from \"../../../core/interfaces/menu-action.interface\";\n\nexport interface MenuItem extends MenuActionItem {}\n\n@Component({\n selector: \"mapa-menu\",\n templateUrl: \"./menu.component.html\",\n styleUrl: \"./menu.component.scss\",\n imports: [CommonModule, MatIconModule, MatMenuModule],\n standalone: true\n})\nexport class MapaMenuComponent {\n @Input() items: MenuItem[] = [];\n @Input() data?: unknown;\n @Output() emitMenu: EventEmitter<MenuActionEvent<unknown>> =\n new EventEmitter<MenuActionEvent<unknown>>();\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n\n toggleMenu(): void {\n this.trigger.openMenu();\n }\n\n clickMenu(item: MenuItem): void {\n this.emitMenu.emit({ action: item.action, data: this.data });\n }\n}\n","<mat-menu #menu=\"matMenu\" class=\"mapa-menu\">\n <button\n *ngFor=\"let item of items\"\n mat-menu-item\n (click)=\"clickMenu(item)\"\n class=\"mapa-menu__item\"\n [class.mapa-menu__item--disabled]=\"item.disabled\"\n >\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n <span>{{item.text}}</span>\n </button>\n</mat-menu>\n\n<img\n class=\"outside-menu-icon\"\n src=\"assets/images/icons/ThreePoints.svg\"\n (click)=\"toggleMenu()\"\n [matMenuTriggerFor]=\"menu\"\n/>\n","/*\n * Public API Surface of mapa-library-ui menu\n */\n\nexport * from './src/menu.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n@Component({\n selector: 'mapa-nav-list',\n templateUrl: './nav-list.component.html',\n styleUrl: './nav-list.component.scss',\n standalone: true,\n imports: [CommonModule],\n})\nexport class MapaNavListComponent {\n @Input() options!: ElementOption[];\n @Input() label!: string;\n @Output() clicked: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selected!: ElementOption;\n\n emit(option: ElementOption): void {\n this.selected = option;\n this.clicked.emit(option);\n }\n}\n\n","<nav class=\"mapa-nav-list\">\n {{ label }}\n <ul>\n <li\n *ngFor=\"let option of options\"\n (click)=\"emit(option)\"\n [class.selected]=\"selected === option\"\n >\n <span>{{ option.value }}</span>\n </li>\n </ul>\n</nav>\n","/*\n * Public API Surface of mapa-library-ui nav-list\n */\n\nexport * from './src/nav-list.component';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n MenuActionEvent,\n MenuActionItem,\n} from '../../../core/interfaces/menu-action.interface';\n\nexport interface ReportItemMenuItem extends MenuActionItem {}\n\nexport interface ReportItem {\n id: string;\n icon: string;\n description: string;\n menu?: ReportItemMenuItem[];\n}\n\n@Component({\n selector: 'mapa-report-item',\n templateUrl: './report-item.component.html',\n styleUrl: './report-item.component.scss',\n imports: [CommonModule, MatIconModule, MatMenuModule],\n standalone: true\n})\nexport class ReportItemComponent implements OnChanges {\n @Input() itemData?: ReportItem | ReportItem[];\n @Input() menuItems: ReportItemMenuItem[] = [];\n @Output() clicked: EventEmitter<string> = new EventEmitter<string>();\n @Output() emitMenu: EventEmitter<MenuActionEvent<ReportItem>> =\n new EventEmitter<MenuActionEvent<ReportItem>>();\n\n id: string = '';\n description: string = '';\n icon: string = '';\n\n get item(): ReportItem | undefined {\n if (Array.isArray(this.itemData)) {\n return this.itemData[0];\n }\n\n return this.itemData;\n }\n\n get resolvedMenuItems(): ReportItemMenuItem[] {\n if (this.item?.menu && this.item.menu.length > 0) {\n return this.item.menu;\n }\n\n return this.menuItems;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['itemData']) {\n this.syncItemData();\n }\n }\n\n private syncItemData(): void {\n const data = this.item;\n\n if (!data) {\n return;\n }\n\n this.id = data.id;\n this.description = data.description;\n this.icon = data.icon;\n }\n\n onClick(action: string): void {\n const item = this.item;\n\n if (!item) {\n return;\n }\n\n this.emitMenu.emit({\n action,\n data: item,\n });\n this.clicked.emit(item.id);\n }\n}\n","<div class=\"report-item\">\n <div class=\"report-icon\">\n <mat-icon class=\"material-icons\">{{ icon }}</mat-icon>\n </div>\n <div class=\"report-text\">\n <h1>\n {{ description }}\n </h1>\n </div>\n <div class=\"report-button\">\n <div class=\"report-circle\" *ngIf=\"resolvedMenuItems.length > 0\">\n <mat-icon [matMenuTriggerFor]=\"menu\">more_vert</mat-icon>\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let item of resolvedMenuItems\"\n (click)=\"onClick(item.action)\"\n >\n <mat-icon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n <span>{{ item.text }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n</div>\n","/*\n * Public API Surface of mapa-library-ui report-item\n */\n\nexport * from './src/report-item.component';\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { ProgressBar } from \"../scale.interface\";\n\n@Component({\n selector: \"mapa-progressbar\",\n templateUrl: \"./progressbar.component.html\",\n styleUrl: \"./progressbar.component.scss\",\n imports: [CommonModule],\n standalone: true,\n})\nexport class MapaProgressbarComponent {\n @Input() data!: ProgressBar;\n @Input() showInterval: boolean = true;\n}\n","<div class=\"progress-bar\">\n <div class=\"progress-bar--bg\">\n <div\n class=\"progress-bar--filled\"\n [style.width.%]=\"data.interval\"\n [style.backgroundColor]=\"data.classification?.classificationColor\"\n ></div>\n </div>\n <div class=\"progress-bar--interval\" *ngIf=\"showInterval\">\n {{data.interval}}%\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { Dimension } from \"../../group-report/src/group-report-interface\";\nimport { Competence, ProgressBar, Scale } from \"./scale.interface\";\nimport { Capability, MapaCapabilityIntervalBarComponent } from \"../../capability/public-api\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport { MapaProgressbarComponent } from \"./progressbar/progressbar.component\";\n\n@Component({\n selector: \"mapa-scale\",\n templateUrl: \"./scale.component.html\",\n styleUrl: \"./scale.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n MapaCapabilityIntervalBarComponent,\n MapaProgressbarComponent,\n ],\n standalone: true,\n})\nexport class MapaScaleComponent {\n @Input() data!: Competence[];\n @Input() showProgressbar: boolean = true;\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get conceptTitle(): string {\n return this.texts.capability.conceptTitle;\n }\n\n getProgressbarData(scale: Scale): ProgressBar {\n return {\n interval: scale.interval,\n classification: scale.classification!,\n };\n }\n\n getIntervalbarData(scale: Scale): Capability {\n return {\n interval: scale.interval,\n classificationBg: scale.classification?.classificationBg,\n items: scale.dimensions!,\n };\n }\n\n isPositive(dimension: Dimension): boolean {\n return dimension.direction === \"Positiva\";\n }\n\n showSummarized(scale: Scale | undefined): boolean {\n return scale?.scaleConcept === undefined;\n }\n\n getCompetenceImg(competence: Competence): string {\n let img = \"\";\n if (competence.competenceName.includes(\"Gestão\")) {\n img = \"UsersThree\";\n }\n if (competence.competenceName.includes(\"Autogestão\")) {\n img = \"Brain\";\n }\n if (competence.competenceName.includes(\"Relacionamento\")) {\n img = \"Handshake\";\n }\n if (competence.competenceName.includes(\"Atividade\")) {\n img = \"ListCheck\";\n }\n if (competence.competenceName.includes(\"Corporais\")) {\n img = \"Warning\";\n }\n return `assets/images/icons/${img}.svg`;\n }\n}\n","@for (competence of data; track competence) {\n <section class=\"mapa__card competence\">\n <header class=\"competence__header\">\n <img [src]=\"getCompetenceImg(competence)\" />\n {{ competence.competenceName }}\n </header>\n <section\n class=\"scales\"\n [class.scales--full-sized]=\"!showSummarized(competence.scales[0])\"\n [class.scales--summarized]=\"showSummarized(competence.scales[0])\"\n >\n @for (scale of competence.scales; track scale) {\n <section class=\"mapa__card scale-details\">\n <section class=\"scale-details__top\">\n <header class=\"scale-details__header\">\n <div class=\"scale-details__header--title mapa--display-m\">\n {{ scale.scaleName }}\n @if (scale.classification) {\n <div\n class=\"mapa__tag--bg\"\n [style.backgroundColor]=\"scale.classification.classificationColor\"\n [class.mapa__tag--contrast]=\"scale.classification.classificationId === 1\"\n >\n <span class=\"mapa__tag--text\">\n {{ scale.classification.classificationName }}\n </span>\n </div>\n }\n </div>\n @if (showProgressbar) {\n <div class=\"scale__header--progressbar\">\n @if (!scale.classification?.classificationBg) {\n <mapa-progressbar\n [data]=\"getProgressbarData(scale)\"\n ></mapa-progressbar>\n } @else {\n <mapa-capability-interval-bar\n [data]=\"getIntervalbarData(scale)\"\n [showInterval]=\"true\"\n ></mapa-capability-interval-bar>\n }\n </div>\n }\n </header>\n @if (scale.scaleConcept) {\n <article class=\"scale-details__concept\">\n <strong>{{ conceptTitle }}:</strong> {{ scale.scaleConcept }}\n </article>\n }\n </section>\n <section\n class=\"scale-details__dimensions\"\n [class.dimension--full-sized]=\"!showSummarized(scale)\"\n [class.dimension--summarized]=\"showSummarized(scale)\"\n >\n @for (dimension of scale.dimensions; track dimension) {\n <article class=\"mapa__card--sm dimension\">\n <nav class=\"dimension__main\">\n <div class=\"dimension__title\">\n <div class=\"dimension__title--direction\">\n @if (isPositive(dimension)) {\n <span>&uarr;</span>\n } @else {\n <span>&darr;</span>\n }\n </div>\n <div class=\"dimension__title--label\">\n {{ dimension.dimensionName }}\n </div>\n </div>\n <div class=\"dimension--classification\">\n @if (dimension.classification) {\n <div\n class=\"mapa__tag--bg\"\n [style.backgroundColor]=\"dimension.classification.classificationColor\"\n [class.mapa__tag--contrast]=\"dimension.classification.classificationId === 1\"\n >\n <span class=\"mapa__tag--text\">\n {{ dimension.classification.classificationName }}\n </span>\n </div>\n }\n </div>\n </nav>\n @if (dimension.dimensionClassificationMessage) {\n <div class=\"dimension__concept\">\n {{ dimension.dimensionClassificationMessage }}\n </div>\n }\n </article>\n }\n </section>\n </section>\n }\n </section>\n </section>\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"mapa-details\",\n templateUrl: \"./details.component.html\",\n styleUrl: \"./details.component.scss\",\n standalone: true,\n})\nexport class MapaDetailsComponent {}\n","<ng-container></ng-container>\n","/*\n * Public API Surface of mapa-library-ui scale\n */\n\nexport * from './src/scale.component';\nexport * from './src/scale.interface';\nexport * from './src/progressbar/progressbar.component';\nexport * from './src/details/details.component';\n","import { HttpClient } from \"@angular/common/http\";\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, DestroyRef, Input, OnChanges, inject } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\n\n@Component({\n selector: \"mapa-svg-icon\",\n templateUrl: \"./svg-icon.component.html\",\n styleUrl: \"./svg-icon.component.scss\",\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe],\n})\nexport class MapaSvgIconComponent implements OnChanges {\n @Input() public name?: string;\n @Input() public color?: string;\n\n public svgIcon = \"\";\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private httpClient: HttpClient, private cdr: ChangeDetectorRef) {}\n\n public ngOnChanges(): void {\n if (!this.name) {\n this.svgIcon = \"\";\n return;\n }\n\n if (this.color) {\n this.httpClient\n .get(`images/icons/${this.name}.svg`, { responseType: 'text' })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: string) => {\n this.svgIcon = this.applyColor(value);\n this.cdr.markForCheck();\n });\n return;\n }\n\n this.svgIcon = `<img src=\"images/icons/${this.name}.svg\" alt=\"${this.name}\" />`;\n this.cdr.markForCheck();\n }\n private applyColor(value: string): string {\n if (!this.color) {\n return value;\n }\n\n return value\n .replaceAll('fill=\"#50575E\"', `fill=\"${this.color}\"`)\n .replaceAll('fill=\"#181818\"', `fill=\"${this.color}\"`)\n .replaceAll('fill=\"#7def7b\"', `fill=\"${this.color}\"`)\n .replaceAll('stroke=\"#50575E\"', `stroke=\"${this.color}\"`)\n .replaceAll('stroke=\"#181818\"', `stroke=\"${this.color}\"`)\n .replaceAll('stroke=\"#7def7b\"', `stroke=\"${this.color}\"`);\n }\n}\n\n","<span *ngIf=\"svgIcon\" class=\"mapa__svg-icon\" [innerHTML]=\"svgIcon | safeHtml\"></span>\n","/*\n * Public API Surface of mapa-library-ui svg-icon\n */\n\nexport * from './src/svg-icon.component';\n","import { Injector, effect } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\n\nexport function customPaginatorFactory(\n i18n: MapaI18nService,\n injector: Injector\n): MatPaginatorIntl {\n const customPaginatorIntl = new MatPaginatorIntl();\n\n effect(\n () => {\n const paginatorTexts = i18n.textsSignal().paginator;\n\n customPaginatorIntl.itemsPerPageLabel = paginatorTexts.itemsPerPage;\n customPaginatorIntl.nextPageLabel = paginatorTexts.nextPage;\n customPaginatorIntl.previousPageLabel = paginatorTexts.previousPage;\n customPaginatorIntl.getRangeLabel = paginatorTexts.showingRangeLabel;\n customPaginatorIntl.changes.next();\n },\n { injector }\n );\n\n return customPaginatorIntl;\n}\n","import { CommonModule } from \"@angular/common\";\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n Injector,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormControl } from \"@angular/forms\";\nimport {\n MatPaginator,\n MatPaginatorIntl,\n MatPaginatorModule,\n PageEvent,\n} from \"@angular/material/paginator\";\nimport { MatSort, Sort } from \"@angular/material/sort\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTable, MatTableDataSource } from \"@angular/material/table\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatMenuTrigger } from \"@angular/material/menu\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { RouterModule } from \"@angular/router\";\nimport { Subscription } from \"rxjs\";\n\nimport { MapaMenuComponent, MenuItem } from \"../../menu/public-api\";\nimport { MapaSvgIconComponent } from \"../../svg-icon/public-api\";\nimport { MapaEmptyStateComponent } from \"../../empty/public-api\";\nimport { BubblePaginationDirective } from \"../../../core/directives/custom-paginator.directive\";\nimport { MenuActionEvent } from \"../../../core/interfaces/menu-action.interface\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\nimport { RowClickEvent } from \"../../../core/interfaces/table-row-click-event.interface\";\nimport { TableColumn } from \"../../../core/interfaces/table-column.interface\";\nimport { TableEmptyState } from \"../../../core/interfaces/table-empty-state.interface\";\nimport {\n SelectedTableRow,\n TableRowData,\n} from \"../../../core/interfaces/table-row-data.interface\";\nimport { TableStatus } from \"../../../core/interfaces/table-status.interface\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport { isDateValue, parseDateValue } from \"../../../core/utils/date.util\";\nimport { customPaginatorFactory } from \"./paginator_customization\";\n\n@Component({\n selector: \"mapa-table\",\n templateUrl: \"./table.component.html\",\n styleUrls: [\n \"./table.component.scss\",\n \"./../../capability/styles/capability.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n RouterModule,\n MapaMenuComponent,\n MapaSvgIconComponent,\n MapaEmptyStateComponent,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n BubblePaginationDirective,\n SafeHtmlPipe,\n ],\n providers: [\n {\n provide: MatPaginatorIntl,\n useFactory: customPaginatorFactory,\n deps: [MapaI18nService, Injector],\n },\n ],\n standalone: true\n})\nexport class MapaTableComponent implements AfterViewInit, OnChanges {\n @Input() columns: TableColumn[] = [];\n @Input() data: TableRowData[] = [];\n @Input() pageIndex: number = 1;\n @Input() pageSize: number = 5;\n @Input() totalCount: number = 0;\n @Input() totalPages: number = 0;\n @Input() checkbox: boolean | undefined;\n @Input() selection: SelectionModel<TableRowData> | undefined;\n @Input() actions?: MenuItem[] | undefined;\n @Input() filterControl: FormControl<string | null> | undefined;\n @Input() menuItems: MenuItem[] = [];\n @Input() menu: boolean | undefined;\n @Input() showPaginator: boolean = true;\n @Input() status: TableStatus = { loading: false, finished: false };\n @Input() empty: TableEmptyState = { title: \"\", subtitle: null };\n @Input() paginatorShowFirstButton = true;\n @Input() paginatorShowLastButton = true;\n @Input() paginatorRenderButtonsNumber = 2;\n @Input() paginatorHideDefaultArrows = false;\n\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n @ViewChild(MatTable) table?: MatTable<TableRowData>;\n\n @Output() rowClick: EventEmitter<RowClickEvent> = new EventEmitter<RowClickEvent>();\n @Output() selectedRows: EventEmitter<SelectedTableRow[]> =\n new EventEmitter<SelectedTableRow[]>();\n @Output() onChangePage: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n @Output() onSortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n @ViewChild(MatPaginator, { read: true }) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n\n dataSource: MatTableDataSource<TableRowData> =\n new MatTableDataSource<TableRowData>([]);\n displayedColumns: string[] = [];\n currentSort: Sort | undefined;\n desktopTableVisible = true;\n private readonly destroyRef = inject(DestroyRef);\n private filterControlSubscription?: Subscription;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private readonly i18n: MapaI18nService\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get selectAllLabel(): string {\n return this.texts.common.selectAll;\n }\n\n get paginatorPageIndex(): number {\n return Math.max(this.pageIndex - 1, 0);\n }\n\n get shouldShowPaginator(): boolean {\n return this.showPaginator && this.totalPages > 1;\n }\n\n get resolvedEmptyTitle(): string {\n return this.empty.title || this.texts.table.emptyTitle;\n }\n\n get resolvedEmptySubtitle(): string | null {\n return this.empty.subtitle || this.texts.table.emptySubtitle || null;\n }\n\n get skeletonRows(): number[] {\n const rowsCount = Math.max(this.pageSize, 0);\n return Array.from({ length: rowsCount }, (_, index) => index);\n }\n\n ngAfterViewInit(): void {\n this.dataSource.sort = this.sort;\n this.cdr.markForCheck();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes[\"data\"] || changes[\"columns\"]) && this.dataSource) {\n if (changes[\"data\"]) {\n this.data = changes[\"data\"].currentValue;\n }\n if (changes[\"columns\"]) {\n this.columns = changes[\"columns\"].currentValue;\n }\n\n this.refreshTableState();\n if (changes[\"columns\"]) {\n this.rebuildDesktopTable();\n }\n this.cdr.markForCheck();\n }\n\n if (changes[\"filterControl\"] && this.filterControl) {\n this.setupFilter();\n }\n }\n\n private refreshTableState(): void {\n this.dataSource = new MatTableDataSource(this.data);\n this.dataSource.sort = this.sort;\n this.displayedColumns = this.columns.map((column) => column.key);\n if (this.filterControl) {\n this.setupFilter();\n this.dataSource.filter = `${this.filterControl.value ?? \"\"}`.trim().toLowerCase();\n }\n this.table?.renderRows();\n }\n\n private rebuildDesktopTable(): void {\n this.desktopTableVisible = false;\n this.cdr.detectChanges();\n this.desktopTableVisible = true;\n this.cdr.detectChanges();\n }\n\n trackColumn(index: number, column: TableColumn): string {\n return `${index}:${column.key}:${column.label}`;\n }\n\n getSkeletonColumnWidth(column: TableColumn): string {\n if (column.width) {\n return column.width;\n }\n\n if (!this.columns.length) {\n return \"100%\";\n }\n\n return `${100 / this.columns.length}%`;\n }\n\n setupFilter(): void {\n this.filterControlSubscription?.unsubscribe();\n\n if (!this.dataSource || !this.filterControl) {\n return;\n }\n\n this.filterControlSubscription = this.filterControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: string | null) => {\n this.dataSource.filter = (value ?? \"\").trim().toLowerCase();\n this.cdr.markForCheck();\n });\n\n this.dataSource.filterPredicate = (\n data: TableRowData,\n filter: string\n ): boolean => {\n const dataStr = Object.keys(data)\n .reduce((currentTerm, key) => {\n return `${currentTerm}${this.getFilterValue(data[key])} `;\n }, \"\")\n .trim()\n .toLowerCase();\n\n return dataStr.indexOf(filter) !== -1;\n };\n }\n\n isAllSelected(): boolean {\n if (this.selection) {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows;\n }\n return false;\n }\n\n toggleAllRows(): void {\n if (this.selection) {\n if (this.isAllSelected()) {\n this.selection.clear();\n this.getSelectedValues();\n } else {\n this.dataSource.data.forEach((row) => this.selection?.select(row));\n this.getSelectedValues();\n }\n }\n }\n\n checkboxLabel(row?: TableRowData): string {\n if (this.selection) {\n if (!row) {\n return `${this.isAllSelected() ? \"deselect\" : \"select\"} all`;\n }\n const rowPosition = typeof row.position === \"number\" ? row.position + 1 : 1;\n return `${this.selection.isSelected(row) ? \"deselect\" : \"select\"} row ${rowPosition}`;\n }\n return \"\";\n }\n\n sortData(column: TableColumn): void {\n if (column.sort) {\n const sort: Sort = { active: column.key, direction: \"asc\" };\n\n if (\n this.currentSort &&\n this.currentSort.active === column.key &&\n this.currentSort.direction === \"asc\"\n ) {\n sort.direction = \"desc\";\n }\n\n this.currentSort = sort;\n this.sortDataFunction(sort);\n }\n }\n\n sortDataFunction(sort: Sort): void {\n this.onSortChange.emit(sort);\n }\n\n emitRowClick(row: TableRowData, action: string): void {\n const rowData: RowClickEvent = { row, action };\n this.rowClick.emit(rowData);\n }\n\n toggleSelection(row: TableRowData): void {\n if (this.selection) {\n if (this.selection.isSelected(row)) {\n this.selection.deselect(row);\n } else {\n this.selection.select(row);\n }\n this.getSelectedValues();\n }\n }\n\n getSelectedValues(): void {\n if (this.selection) {\n const selectedRows: SelectedTableRow[] = this.selection.selected.map((row) => {\n return { row };\n });\n this.selectedRows.emit(selectedRows);\n }\n }\n\n generateColumns(): void {\n const columns: TableColumn[] = [{ key: \"name\", label: \"\", sort: false }];\n\n this.columns = columns;\n }\n\n columnExists(columns: TableColumn[], key: string): boolean {\n return columns.some((column) => column.key === key);\n }\n\n generateGroupData(): void {\n const result: TableRowData[] = [];\n\n this.data = result;\n }\n\n isBoolean(column: TableColumn, row: TableRowData): boolean {\n return typeof this.getColumnValue(row, column.key) === \"boolean\";\n }\n\n isMaskedData(column: TableColumn, row: TableRowData): boolean {\n return !!column.mask && isDateValue(this.getColumnValue(row, column.key));\n }\n\n getValueAsDate(column: TableColumn, row: TableRowData): Date {\n return parseDateValue(this.getColumnValue(row, column.key)) ?? new Date(\"\");\n }\n\n getCellClass(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return `classification`;\n } catch {\n return \"\";\n }\n }\n\n getCellBg(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return this.getRecordStringValue(\n this.getColumnRecord(row, column.key),\n \"classificationColor\"\n );\n } catch {\n return \"\";\n }\n }\n\n getCellTextColor(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return this.getRecordStringValue(\n this.getColumnRecord(row, column.key),\n \"classificationTextColor\"\n );\n } catch {\n return \"\";\n }\n }\n\n getValue(row: { value?: string | number | null }): string {\n try {\n if (row.value !== undefined && row.value !== null && row.value !== \"\") {\n return row.value + \"%\";\n }\n return \"-\";\n } catch {\n return \"-\";\n }\n }\n\n changePage(event: PageEvent): void {\n this.onChangePage.emit(event);\n }\n\n toggleMenu(): void {\n this.trigger.openMenu();\n }\n\n getBackgroundColor(column: TableColumn, row: TableRowData): string {\n return column.status?.color?.[this.getStatusIndex(row, column.key)] || \"\";\n }\n\n getTextColor(column: TableColumn, row: TableRowData): string {\n return column.status?.textColor?.[this.getStatusIndex(row, column.key)] || \"\";\n }\n\n hasCustomClass(column: TableColumn, row: TableRowData, key: string): boolean {\n if (\n column?.class ||\n row?.rowStyleClass ||\n this.hasCellStyleClass(row, key)\n ) {\n return true;\n }\n return false;\n }\n\n getCustomClass(column: TableColumn, row: TableRowData, key: string): string {\n if (this.hasCellStyleClass(row, key)) {\n return this.getCellStyleClass(row, column.key);\n } else if (column?.class) {\n return column.class;\n } else if (row?.rowStyleClass) {\n return row.rowStyleClass;\n }\n return \"\";\n }\n\n hasCellStyleClass(row: TableRowData, key: string): boolean {\n return row.styleClass?.key === key;\n }\n\n getCellStyleClass(row: TableRowData, key: string): string {\n return row.styleClass?.key === key ? row.styleClass?.class : \"\";\n }\n\n handleMenu(selected: MenuActionEvent<unknown>): void {\n if (this.isTableRowData(selected.data)) {\n this.emitRowClick(selected.data, selected.action);\n }\n }\n\n hasIndividualMenu(row: TableRowData | undefined): boolean {\n return this.getMenuItems(row).length > 0;\n }\n\n getMenuItems(row: TableRowData | undefined): MenuItem[] {\n return this.getMenuActionItems(row, \"menu\");\n }\n\n getActionItems(row: TableRowData | undefined): MenuItem[] {\n const rowActions = this.getMenuActionItems(row, \"actions\");\n return rowActions.length > 0 ? rowActions : (this.actions ?? []);\n }\n\n getStatusLabel(column: TableColumn, row: TableRowData): string {\n const labels = column.status?.label;\n\n if (!labels) {\n return \"-\";\n }\n\n const value = this.getColumnValue(row, column.key);\n\n if (typeof value === \"boolean\") {\n return labels[value ? 1 : 0] ?? \"-\";\n }\n\n if (typeof value === \"number\") {\n return labels[value] ?? \"-\";\n }\n\n if (typeof value === \"string\") {\n const numericIndex = Number(value);\n return Number.isNaN(numericIndex) ? labels[0] ?? \"-\" : labels[numericIndex] ?? \"-\";\n }\n\n return \"-\";\n }\n\n getCellContent(row: TableRowData, key: string): string {\n const value = this.getColumnValue(row, key);\n\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return `${value}`;\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n\n return \"\";\n }\n\n hasActionsColumn(): boolean {\n return this.columns.some((column) => column.key.includes('actions'));\n }\n\n hasMenuColumn(): boolean {\n return this.columns.some((column) => column.key.includes('menu'));\n }\n\n setSvgName(image: string): string {\n return image.split('/').pop()?.split('.')[0] || '';\n }\n\n private getColumnValue(row: TableRowData, key: string): unknown {\n return row[key];\n }\n\n private getColumnRecord(\n row: TableRowData,\n key: string\n ): Record<string, unknown> | undefined {\n const value = this.getColumnValue(row, key);\n\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n\n return value as Record<string, unknown>;\n }\n\n private getRecordStringValue(\n value: Record<string, unknown> | undefined,\n key: string\n ): string {\n const recordValue = value?.[key];\n return typeof recordValue === \"string\" ? recordValue : \"\";\n }\n\n private getStatusIndex(row: TableRowData, key: string): number {\n const value = this.getColumnValue(row, key);\n\n if (typeof value === \"boolean\") {\n return value ? 1 : 0;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n if (typeof value === \"string\") {\n const parsedValue = Number(value);\n return Number.isNaN(parsedValue) ? 0 : parsedValue;\n }\n\n return 0;\n }\n\n private getFilterValue(value: unknown): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return `${value}`.toLowerCase();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.getFilterValue(item)).join(\" \");\n }\n\n if (typeof value === \"object\") {\n return Object.values(value).map((item) => this.getFilterValue(item)).join(\" \");\n }\n\n return \"\";\n }\n\n private getMenuActionItems(\n row: TableRowData | undefined,\n key: \"actions\" | \"menu\"\n ): MenuItem[] {\n const value = row?.[key];\n\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter((item): item is MenuItem => this.isMenuItem(item));\n }\n\n private isMenuItem(value: unknown): value is MenuItem {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"action\" in value &&\n \"text\" in value\n );\n }\n\n private isTableRowData(value: unknown): value is TableRowData {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n }\n}\n","@if (status.loading) {\n <section class=\"mapa-table mapa-table__skeleton\" aria-hidden=\"true\">\n <div class=\"mapa-table__skeleton-content mapa__card mapa__card--show-on-desktop\">\n <div class=\"mapa-table__skeleton-header\">\n @for (column of columns; track trackColumn($index, column)) {\n <div\n class=\"mapa-table__skeleton-cell mapa-table__skeleton-cell--header\"\n [style.width]=\"getSkeletonColumnWidth(column)\"\n ></div>\n }\n </div>\n @for (rowIndex of skeletonRows; track rowIndex) {\n <div class=\"mapa-table__skeleton-row\">\n @for (column of columns; track trackColumn($index, column)) {\n <div\n class=\"mapa-table__skeleton-cell\"\n [style.width]=\"getSkeletonColumnWidth(column)\"\n ></div>\n }\n </div>\n }\n </div>\n </section>\n} @else if (dataSource.data.length > 0) {\n <section class=\"mapa-table\">\n <div class=\"mapa-table--show-on-mobile\">\n @if (checkbox) {\n <div class=\"mapa-table__select-all\">\n @if (selection) {\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n > {{ selectAllLabel }}</mat-checkbox>\n }\n </div>\n }\n @for (row of dataSource.data; track row) {\n <div>\n <div class=\"mapa-table__card mapa__card\">\n @for (column of columns; track trackColumn($index, column); let isFirst = $first) {\n <div [ngClass]=\"'mapa-table__card--column-' + column.key\">\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <strong\n class=\"mapa-table__card--header\"\n [class.mapa-table__checkbox--header]=\"isFirst && checkbox\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox: false }\"\n class=\"hidden\"\n ></div>\n </strong>\n }\n <div\n class=\"mapa-table__card--column\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n @if (column?.status?.color) {\n <div\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n } @else {\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n }\n </div>\n </div>\n } @else {\n @if (column.key === \"actions\" && actions) {\n <div>\n @for (item of getActionItems(row); track item) {\n @if (item.route) {\n <a [href]=\"item.route\" [routerLink]=\"item.route\">\n <button\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n </a>\n } @else {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n }\n }\n </div>\n }\n\n @if (column.key === \"menu\") {\n @if (hasIndividualMenu(row)) {\n <div class=\"mapa-table__column--menu\">\n @for (item of getMenuItems(row); track item) {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--menu-item\"\n [class.mapa-table__column--menu-item-disabled]=\"item.disabled\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n <span class=\"mapa-table__column--menu-item-text\">{{ item.text }}</span>\n </button>\n }\n </div>\n } @else {\n <div class=\"mapa-table__column--menu\">\n @for (item of menuItems; track item) {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--menu-item\"\n [class.mapa-table__column--menu-item-disabled]=\"item.disabled\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <mapa-svg-icon [name]=\"setSvgName(item.image)\"></mapa-svg-icon>\n }\n <span class=\"mapa-table__column--menu-item-text\">{{ item.text }}</span>\n </button>\n }\n </div>\n }\n }\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"mapa-table--show-on-desktop\">\n @if (desktopTableVisible) {\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"sortDataFunction($event)\"\n >\n @for (column of columns; track trackColumn($index, column); let isFirst = $first) {\n <ng-container [matColumnDef]=\"column.key\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(column.key !== 'actions' ? column.sort : null)\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column?.width\">\n <div\n class=\"mapa-table__column\"\n (click)=\"emitRowClick(row, '')\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n @if (column?.status?.color) {\n <div\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n } @else {\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n }\n </div>\n </div>\n } @else {\n @if (column.key === \"actions\" && actions) {\n <div class=\"mapa-table__column--actions\">\n @for (item of getActionItems(row); track item) {\n @if (item.route) {\n <a [href]=\"item.route\" [routerLink]=\"item.route\">\n <button\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n </a>\n } @else {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n }\n }\n </div>\n }\n @if (column.key === \"menu\") {\n <div class=\"mapa-table__column--menu\">\n @if (hasIndividualMenu(row)) {\n <mapa-menu\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n } @else if (menuItems.length > 0) {\n <mapa-menu\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n }\n </div>\n }\n }\n </div>\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"row-hover\"\n ></tr>\n </table>\n }\n </div>\n\n @if (shouldShowPaginator) {\n <section>\n <mat-paginator\n class=\"mapa-table__paginator\"\n appBubblePagination\n [appCustomLength]=\"totalCount\"\n [bubblePageIndex]=\"paginatorPageIndex\"\n [pageIndex]=\"paginatorPageIndex\"\n [showFirstButton]=\"paginatorShowFirstButton\"\n [showLastButton]=\"paginatorShowLastButton\"\n [renderButtonsNumber]=\"paginatorRenderButtonsNumber\"\n [hideDefaultArrows]=\"paginatorHideDefaultArrows\"\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\"\n (page)=\"changePage($event)\"\n ></mat-paginator>\n </section>\n }\n </section>\n} @else if (status.finished && dataSource.data.length === 0) {\n <section class=\"mapa-table\">\n <mapa-empty\n [title]=\"resolvedEmptyTitle\"\n [subtitle]=\"resolvedEmptySubtitle\"\n ></mapa-empty>\n </section>\n}\n\n<ng-template\n #tableHeader\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n>\n @if (isFirst && checkbox) {\n @if (selection) {\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n ></mat-checkbox>\n }\n }\n <div>\n <span [innerHTML]=\"column.label | safeHtml\"></span>\n </div>\n @if (column.key !== \"actions\" && column.key !== \"menu\" && column.sort) {\n <div class=\"mapa-table--show-on-desktop\">\n <mat-icon>filter_list</mat-icon>\n </div>\n }\n</ng-template>\n\n<ng-template\n #tableContent\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n let-row=\"row\"\n>\n @if (isFirst && checkbox) {\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection?.toggle(row) : null; getSelectedValues()\"\n [checked]=\"selection?.isSelected(row)\"\n color=\"primary\"\n class=\"mapa-table__checkbox\"\n >\n </mat-checkbox>\n }\n @if (isMaskedData(column, row)) {\n {{ getValueAsDate(column, row) | date: column.mask }}\n } @else if (column.status) {\n <span [innerHTML]=\"getStatusLabel(column, row) | safeHtml\"></span>\n } @else {\n <span [innerHTML]=\"getCellContent(row, column.key) | safeHtml\"></span>\n }\n</ng-template>\n","/*\n * Public API Surface of mapa-library-ui table\n */\n\nexport * from './src/paginator_customization';\nexport * from './src/table.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nexport interface LowReliabilityReport {\n instrument?: string;\n date?: string;\n isExpirationDate?: boolean;\n}\n\n@Component({\n selector: 'mapa-warning',\n templateUrl: './warning.component.html',\n styleUrl: './warning.component.scss',\n imports: [CommonModule],\n standalone: true\n})\nexport class MapaWarningComponent implements OnInit, OnChanges {\n @Input() lowReliabilityReports: LowReliabilityReport[] = [];\n showFirstLine: boolean = false;\n showSecondLine: boolean = false;\n expirationDateReports: string[] = [];\n nonExpirationDateReports: string[] = [];\n\n ngOnInit(): void {\n this.updateVisibilityFlags();\n this.generateReportArrays();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['lowReliabilityReports']) {\n this.updateVisibilityFlags();\n this.generateReportArrays();\n }\n }\n\n updateVisibilityFlags(): void {\n this.showFirstLine = this.lowReliabilityReports.some(\n (report) => !!report.instrument && !!report.date\n );\n this.showSecondLine = this.lowReliabilityReports.some(\n (report) => !!report.isExpirationDate\n );\n }\n\n generateReportArrays(): void {\n this.expirationDateReports = this.lowReliabilityReports\n .filter((report) => !!report.isExpirationDate)\n .map(\n (report, index, array) =>\n `${report.instrument ?? ''} - ${report.date ?? ''}${index < array.length - 1 ? ', ' : ''}`\n );\n\n this.nonExpirationDateReports = this.lowReliabilityReports\n .filter((report) => !report.isExpirationDate)\n .map(\n (report, index, array) =>\n `${report.instrument ?? ''} - ${report.date ?? ''}${index < array.length - 1 ? ', ' : ''}`\n );\n }\n}\n","<section class=\"warning\">\n <div class=\"warning__icon\">\n <img src=\"assets/images/icons/Warning.svg\" />\n </div>\n <article>\n <p *ngIf=\"showFirstLine\">\n Nível baixo de confiabilidade no(s) teste(s): \n <span *ngFor=\"let report of nonExpirationDateReports\">{{ report }}</span>.\n </p>\n <p *ngIf=\"showSecondLine\">\n O prazo de validade do(s) teste(s) está no limite: \n <span *ngFor=\"let report of expirationDateReports\">{{ report }}</span>.\n </p>\n </article>\n</section>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/warning.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewChild,\n} from \"@angular/core\";\nimport { MatAccordion, MatExpansionModule } from \"@angular/material/expansion\";\nimport { Dimension } from \"../../group-report/public-api\";\nimport {\n Competence,\n ProgressBar,\n Scale,\n} from \"./scale-parameterization.interface\";\nimport {\n Capability,\n MapaCapabilityDotComponent,\n MapaCapabilityIntervalBarComponent,\n} from \"../../capability/public-api\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport { MapaProgressbarComponent } from \"./progressbar/progressbar.component\";\n\n@Component({\n selector: \"mapa-scale-parameterization\",\n templateUrl: \"./scale-parameterization.component.html\",\n styleUrl: \"./scale-parameterization.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n MatExpansionModule,\n MapaCapabilityDotComponent,\n MapaCapabilityIntervalBarComponent,\n MapaProgressbarComponent,\n ],\n standalone: true,\n})\nexport class MapaScaleParameterizationComponent {\n @Input() data!: Competence[];\n @Input() showProgressbar: boolean = true;\n @Input() showInterval: boolean = true;\n @Input() showDots: boolean = true;\n\n @ViewChild(\"detailAccordion\") accordion!: MatAccordion;\n\n public expanded = new Set<number>();\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get conceptTitle(): string {\n return this.texts.capability.conceptTitle;\n }\n\n toggleAll(): void {\n if (this.expanded.size === this.data.length) {\n this.expanded.clear();\n this.accordion.closeAll();\n } else {\n this.expanded = new Set(this.data.map((_, i) => i));\n this.accordion.openAll();\n }\n }\n\n getProgressbarData(scale: Scale): ProgressBar {\n return {\n interval: scale.interval,\n classification: scale.classification!,\n };\n }\n\n getIntervalbarData(scale: Scale): Capability {\n return {\n interval: scale.interval,\n classificationBg: scale.classification?.classificationBg,\n items: scale.dimensions!,\n };\n }\n\n isPositive(dimension: Dimension): boolean {\n return dimension.direction === \"Positiva\";\n }\n\n showSummarized(scale: Scale | undefined): boolean {\n return scale?.scaleConcept === undefined;\n }\n\n showMore(index: number): void {\n if (this.expanded.has(index)) {\n this.expanded.delete(index);\n } else {\n this.expanded.add(index);\n }\n }\n\n getCompetenceImg(competence: Competence): string {\n let img = \"\";\n if (competence.competenceName.includes(\"Gestão\")) {\n img = \"UsersThree\";\n }\n if (competence.competenceName.includes(\"Autogestão\")) {\n img = \"Brain\";\n }\n if (competence.competenceName.includes(\"Relacionamento\")) {\n img = \"Handshake\";\n }\n if (competence.competenceName.includes(\"Atividade\")) {\n img = \"ListCheck\";\n }\n if (competence.competenceName.includes(\"Corporais\")) {\n img = \"Warning\";\n }\n\n if (img !== \"\") {\n return `assets/images/icons/${img}.svg`;\n }\n return \"\";\n }\n\n getDimensionsAsCapability(scale: Scale): Capability {\n return {\n name: scale.scaleName,\n items: scale.dimensions!.map((dimension) => ({\n name: dimension.dimensionName,\n interval: dimension.percentage,\n classificationId: dimension.classification?.classificationId,\n classificationName: dimension.classification?.classificationName,\n classificationColor: dimension.classification?.classificationColor,\n })),\n };\n }\n}\n","@for (competence of data; track competence) {\n <section class=\"mapa-scale-parameterization\">\n <section\n class=\"mapa-scale-parameterization-scales\"\n [class.scales--full-sized]=\"!showSummarized(competence.scales[0])\"\n [class.scales--summarized]=\"showSummarized(competence.scales[0])\"\n >\n <mat-accordion\n class=\"mapa-scale-parameterization-accordion\"\n #detailAccordion=\"matAccordion\"\n multi\n >\n @for (scale of competence.scales; track scale) {\n <mat-expansion-panel\n class=\"mapa__card mapa-scale-parameterization-details\"\n >\n <mat-expansion-panel-header\n class=\"mapa-scale-parameterization-details__top\"\n >\n <header class=\"mapa-scale-parameterization-details__header\">\n <div\n class=\"mapa-scale-parameterization-details__header--title mapa--display-m\"\n >\n <div\n class=\"mapa-scale-parameterization-details__header--title-text\"\n >\n {{ scale.scaleName }}\n @if (showDots) {\n @let dimensionsCapability = getDimensionsAsCapability(scale);\n <div\n class=\"mapa-scale-parameterization-details__dots\"\n >\n @for (item of dimensionsCapability.items; track item) {\n <mapa-capability-dot\n type=\"small\"\n [item]=\"item\"\n [capability]=\"dimensionsCapability\"\n [tooltip]=\"true\"\n ></mapa-capability-dot>\n }\n </div>\n }\n </div>\n\n @if (scale.classification) {\n <div\n class=\"mapa__tag--bg\"\n [style.backgroundColor]=\"scale.classification.classificationColor\"\n [class.mapa__tag--contrast]=\"scale.classification.classificationId === 1\"\n >\n <span class=\"mapa__tag--text\">\n {{ scale.classification.classificationName }}\n </span>\n </div>\n }\n </div>\n @if (showProgressbar) {\n <div class=\"scale__header--progressbar\">\n @if (!scale.classification?.classificationBg) {\n <mapa-progressbar\n [data]=\"getProgressbarData(scale)\"\n ></mapa-progressbar>\n } @else {\n <mapa-capability-interval-bar\n [data]=\"getIntervalbarData(scale)\"\n [showInterval]=\"true\"\n ></mapa-capability-interval-bar>\n }\n </div>\n }\n </header>\n </mat-expansion-panel-header>\n @if (scale.scaleConcept) {\n <article\n class=\"mapa-scale-parameterization-details__concept\"\n >\n <strong>{{ conceptTitle }}:</strong> {{ scale.scaleConcept }}\n </article>\n }\n <section\n class=\"mapa-scale-parameterization-details__dimensions\"\n [class.dimension--full-sized]=\"!showSummarized(scale)\"\n [class.dimension--summarized]=\"showSummarized(scale)\"\n >\n @for (dimension of scale.dimensions; track dimension) {\n <article class=\"mapa__card--sm dimension\">\n <nav class=\"dimension__main\">\n <div class=\"dimension__title\">\n <div class=\"dimension__title--direction\">\n @if (isPositive(dimension)) {\n <span>&uarr;</span>\n } @else {\n <span>&darr;</span>\n }\n </div>\n <div class=\"dimension__title--label\">\n {{ dimension.dimensionName }}\n </div>\n </div>\n <div class=\"dimension--classification\">\n @if (dimension.classification) {\n <div\n class=\"mapa__tag--bg\"\n [style.backgroundColor]=\"dimension.classification.classificationColor\"\n [class.mapa__tag--contrast]=\"dimension.classification.classificationId === 1\"\n >\n <span class=\"mapa__tag--text\">\n {{ dimension.classification.classificationName }}\n </span>\n </div>\n }\n </div>\n </nav>\n @if (dimension.dimensionClassificationMessage) {\n <div class=\"dimension__concept\">\n {{ dimension.dimensionClassificationMessage }}\n </div>\n }\n </article>\n }\n </section>\n </mat-expansion-panel>\n }\n </mat-accordion>\n </section>\n </section>\n}\n","/*\n * Public API Surface of mapa-library-ui\n */\n\nexport * from './lib/core/elements/element-search';\nexport * from './lib/core/elements/action-button';\nexport * from './lib/core/elements/element-base';\nexport * from './lib/core/elements/dropdown';\nexport * from './lib/core/elements/dropdown-tree';\nexport * from './lib/core/elements/datepicker';\nexport * from './lib/core/elements/datepicker-range';\nexport * from './lib/core/elements/input-text';\nexport * from './lib/core/elements/radio-button';\nexport * from './lib/core/elements/slide-toggle';\nexport * from './lib/core/elements/textarea';\nexport * from './lib/core/elements/errors';\n\nexport * from './lib/core/interfaces/button-icon.interface';\nexport * from './lib/core/interfaces/bread-piece.interface';\nexport * from './lib/core/interfaces/chart-options.interface';\nexport * from './lib/core/interfaces/classification.interface';\nexport * from './lib/core/interfaces/dialog-data.interface';\nexport * from './lib/core/interfaces/element-option.interface';\nexport * from './lib/core/interfaces/menu-action.interface';\nexport * from './lib/core/interfaces/table-column.interface';\nexport * from './lib/core/interfaces/table-empty-state.interface';\nexport * from './lib/core/interfaces/table-row-data.interface';\nexport * from './lib/core/interfaces/table-row-click-event.interface';\nexport * from './lib/core/interfaces/table-status.interface';\n\nexport * from './lib/core/directives/mat-input-autosize.directive';\nexport * from './lib/core/directives/custom-paginator.directive';\n\nexport * from './lib/core/components/form-errors/form-errors.component';\nexport * from './lib/core/i18n/mapa-ui-texts';\nexport * from './lib/core/pipes/safe-html.pipe';\nexport * from './lib/core/services/html-sanitizer.service';\nexport * from './lib/core/services/mapa-i18n.service';\nexport * from './lib/core/services/validation-message-resolver.service';\n\nexport * from './lib/core/pipes/cpf';\nexport * from './lib/core/js-brasil';\n\nexport * from './lib/components/benchmarking/src/benchmark-chart.component';\nexport * from './lib/components/benchmarking/src/benchmark-indicator/benchmark-indicator.component';\nexport {\n Benchmark,\n BenchmarkingChart,\n BenchmarkMark,\n EvaluationBenchmarkResult,\n Classification as BenchmarkingClassification,\n} from './lib/components/benchmarking/src/benchmarking.interface';\nexport * from './lib/components/breadcrumb/public-api';\nexport * from './lib/components/button/public-api';\nexport * from './lib/components/button-icon/public-api';\nexport * from './lib/components/capability/public-api';\nexport * from './lib/components/chart/public-api';\nexport * from './lib/components/checkbox/public-api';\nexport * from './lib/components/datepicker/public-api';\nexport * from './lib/components/datepicker-range/public-api';\nexport * from './lib/components/dialog/public-api';\nexport * from './lib/components/dropdown/public-api';\nexport * from './lib/components/dropdown-tree/public-api';\nexport * from './lib/components/empty/public-api';\nexport * from './lib/components/filters/public-api';\nexport * from './lib/components/form/public-api';\nexport * from './lib/components/group-report/src/group-report.component';\nexport {\n Candidate,\n GroupReportItem,\n Dimension as GroupReportDimension,\n} from './lib/components/group-report/src/group-report-interface';\nexport * from './lib/components/icon/public-api';\nexport * from './lib/components/input/public-api';\nexport * from './lib/components/menu/public-api';\nexport * from './lib/components/nav-list/public-api';\nexport * from './lib/components/radio-button/public-api';\nexport * from './lib/components/report-item/public-api';\nexport * from './lib/components/scale/public-api';\nexport * from './lib/components/slide-toggle/public-api';\nexport * from './lib/components/svg-icon/public-api';\nexport * from './lib/components/table/public-api';\nexport * from './lib/components/tag/public-api';\nexport * from './lib/components/textarea/public-api';\nexport * from './lib/components/tooltip/public-api';\nexport * from './lib/components/warning/public-api';\n\n// Export scale parameterization explicitly to avoid duplicate shared leaf exports.\nexport * from './lib/components/scale-parameterization/src/scale-parameterization.component';\nexport {\n Competence as ScaleParameterizationCompetence,\n Dimension as ScaleParameterizationDimension,\n ProgressBar as ScaleParameterizationProgressBar,\n Scale as ScaleParameterizationScale,\n} from './lib/components/scale-parameterization/src/scale-parameterization.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.MapaI18nService","i1.ValidationMessageResolverService","i1.HtmlSanitizerService","utilsBr","emptyString","maskBr","mask.maskBr","i2","i1.CapabilityClassificationService","i2.MapaI18nService","i3","i6","i4","i5","i7","i8","i9"],"mappings":"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C,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;;AAGlC,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAE;AAE5D,SAAU,cAAc,CAAC,KAAsB,EAAE,cAAwB,EAAA;AAC7E,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ;AAC9B,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE;AAChB,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE;AAChB,SAAA,WAAW,EAAE;AAChB,IAAA,MAAM,KAAK,GAAG;AACZ,QAAA,QAAQ,EAAE,oBAAoB;AAC9B,QAAA,UAAU,EAAE,oCAAoC;AAChD,QAAA,UAAU,EAAE,uDAAuD;AACnE,QAAA,UAAU,EAAE,oBAAoB;AAChC,QAAA,UAAU,EAAE,uCAAuC;AACnD,QAAA,UAAU,EAAE,oBAAoB;KACjC;AACD,IAAA,MAAM,iBAAiB,GACrB,UAAU,IAAI,cAAc,CAAC,KAAK,IAAI,UAAU,IAAI,cAAc,CAAC,GAAG;AACxE,IAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB;YACpD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AAClC,YAAC,cAAc,KAChB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AAClC,gBAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CACvC,CAAC,EAAE;AACJ,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,KAAK;AACd;;ACpKA;;;;;AAKG;AACG,SAAU,UAAU,CAAC,KAA8B,EAAA;IACvD,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACtC,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;AACrB,QAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACtD;AACA,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC3B,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;AACxC,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzC,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,eAAe,CAAC,KAAa,EAAA;AAE3C,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;AACrB,QAAA,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9C;IACA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAErC,IAAA,IAAI,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AAC1T,IAAA,IAAI,UAAU,IAAI,EAAE,EAAE;QAAE,UAAU,GAAG,CAAC;IAAE;AACxC,IAAA,IAAI,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AAC3U,IAAA,IAAI,UAAU,IAAI,EAAE,EAAE;QAAE,UAAU,GAAG,CAAC;IAAE;AACxC,IAAA,IAAI,MAAM,GAAQ,UAAU,GAAG,EAAE,GAAG,UAAU;AAC9C,IAAA,IAAI,MAAM,IAAI,CAAC,EAAE;QAAE,MAAM,GAAG,IAAI;IAAE;IAClC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,EAAE;AAAE,QAAA,MAAM,GAAG,GAAG,GAAG,MAAM;IAAE;AAExD,IAAA,OAAO,MAAM,CAAC,QAAQ,EAAE;AAC1B;AAEM,SAAU,iBAAiB,CAAC,KAAa,EAAA;IAC7C,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;AACvE,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,qBAAqB,CAAC,KAAa,EAAA;AAEjD,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;IAC9C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClC,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrC,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACnE,OAAO,EAAE,GAAG,EAAE;AAChB;AAEA;;;;AAIG;AACG,SAAU,sBAAsB,CAAC,KAAa,EAAA;IAClD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACpC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjE,OAAO,EAAE,GAAG,EAAE;AAChB;AAEA;;;;AAIG;AACG,SAAU,UAAU,CAAC,KAAa,EAAA;IACtC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAEpC,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE;AACvC,QAAA,OAAO,KAAK;IACd;;;IAGA,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,WAAW,CAAC,IAAY,EAAA;IACtC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AAElC,IAAA,IAAI,IAAI,KAAK,EAAE,EAAE;AACf,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;AACtB,QAAA,OAAO,KAAK;IACd;;IAGA,IAAI,IAAI,KAAK,gBAAgB;AAC3B,QAAA,IAAI,KAAK,gBAAgB;AACzB,QAAA,IAAI,KAAK,gBAAgB;AACzB,QAAA,IAAI,KAAK,gBAAgB;AACzB,QAAA,IAAI,KAAK,gBAAgB;AACzB,QAAA,IAAI,KAAK,gBAAgB;AACzB,QAAA,IAAI,KAAK,gBAAgB;AACzB,QAAA,IAAI,KAAK,gBAAgB;AACzB,QAAA,IAAI,KAAK,gBAAgB;QACzB,IAAI,KAAK,gBAAgB,EAAE;AAC3B,QAAA,OAAO,KAAK;IACd;;AAGA,IAAA,IAAI,OAAO,GAAW,IAAI,CAAC,MAAM,GAAG,CAAC;IACrC,IAAI,OAAO,GAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC;IAC7C,IAAI,IAAI,GAAQ,CAAC;AACjB,IAAA,IAAI,GAAG,GAAG,OAAO,GAAG,CAAC;AACrB,IAAA,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACjC,QAAA,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE;AAC3C,QAAA,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,GAAG,GAAG,CAAC;QACT;IAEF;AACA,IAAA,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACzB,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE;AAElD,IAAA,OAAO,GAAG,OAAO,GAAG,CAAC;IACrB,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC;IACpC,IAAI,GAAG,CAAC;AACR,IAAA,GAAG,GAAG,OAAO,GAAG,CAAC;AACjB,IAAA,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACjC,QAAA,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE;AAC3C,QAAA,IAAI,GAAG,GAAG,CAAC,EAAE;YACX,GAAG,GAAG,CAAC;QACT;IACF;IACA,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE;AAClD,IAAA,OAAO,UAAU;AACnB;AAEM,SAAU,UAAU,CAAC,MAAc,EAAA;AACvC,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAC7B,IAAI,WAAW,GAAG,CAAC;AACnB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAA,WAAW,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C;IACA,IAAI,IAAI,GAAG,WAAW;IACtB,IAAI,IAAI,GAAG,CAAC;AACZ,IAAA,OAAO,IAAI,GAAG,EAAE,KAAK,CAAC,EAAE;AACtB,QAAA,IAAI,EAAE;QACN,IAAI,GAAG,WAAW,IAAI,IAAI,GAAG,CAAC,CAAC;IACjC;IACA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;AACpC;AAEM,SAAU,UAAU,CAAC,MAAc,EAAA;IACvC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACtC,IAAA,IAAI,MAAM,KAAK,aAAa,EAAE;AAC5B,QAAA,OAAO,KAAK;IACd;;;;;;IAQA,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC/E,IAAA,OAAO,YAAY;AACrB;AAEM,SAAU,oBAAoB,CAAC,MAAc,EAAA;;AAIjD,IAAA,MAAM,GAAG,mBAAmB,GAAG,MAAM;IACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IAEzC,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAGtC,IAAA,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AAAE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC;IAAE;AACpD,IAAA,IAAI,MAAM,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AAAE,QAAA,MAAM,GAAG,MAAM,GAAG,CAAC;IAAE;AAC5D,IAAA,IAAI,MAAM,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AAAE,QAAA,MAAM,GAAG,MAAM,GAAG,CAAC;IAAE;AAC5D,IAAA,IAAI,MAAM,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AAAE,QAAA,MAAM,GAAG,MAAM,GAAG,CAAC;IAAE;AAC5D,IAAA,IAAI,KAAK,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AAAE,QAAA,KAAK,GAAG,KAAK,GAAG,CAAC;IAAE;AACxD,IAAA,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAAE,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AAAE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC;IAAE;AACrD,IAAA,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAAE,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AAAE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC;IAAE;AACrD,IAAA,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAAE,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AAAE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC;IAAE;AACrD,IAAA,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAAE,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AAAE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC;IAAE;IACrD,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,IAAI,GAAG,GAAG;IACd,IAAI,IAAI,GAAG,GAAG;IACd,IAAI,IAAI,GAAG,GAAG;IACd,IAAI,IAAI,GAAG,GAAG;IACd,IAAI,IAAI,GAAG,GAAG;AAEd,IAAA,IAAI,QAAQ,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE;AAChK,IAAA,QAAQ,GAAG,EAAE,GAAG,QAAQ;AAAE,IAAA,IAAI,QAAQ,IAAI,EAAE,EAAE;QAAE,QAAQ,GAAG,CAAC;IAAE;AAE9D,IAAA,OAAO,QAAQ;AACjB;AAEM,SAAU,UAAU,CAAC,MAAc,EAAA;AACvC,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,GAAG,SAAS,GAAG,MAAM;IAC3B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAExC,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAErC,IAAA,IAAI,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;AAC5F,IAAA,SAAS,GAAG,EAAE,GAAG,SAAS;AAC1B,IAAA,IAAI,SAAS,IAAI,EAAE,EAAE;QAAE,SAAS,GAAG,CAAC;IAAE;AACtC,IAAA,IAAI,SAAS,IAAI,EAAE,EAAE;QAAE,SAAS,GAAG,CAAC;IAAE;AACtC,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,eAAe,CAAC,MAAc,EAAA;AAE5C,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAC7B,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC;AAErC,IAAA,IAAI,CAAC;AACL,IAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;AAChB,IAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE;QAC9C,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3B;AAEA,IAAA,MAAM,KAAK,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACpC,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,cAAc,CAAC,OAAe,EAAA;IAC5C,IAAI,IAAI,GAAG,CAAC;AACZ,IAAA,OAAO,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE;AAC1B,QAAA,OAAO,GAAG,GAAG,GAAG,OAAO;IACzB;IAEA,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9I,QAAA,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACtG,QAAA,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACxG,IAAA,IAAI,GAAG,IAAI,GAAG,EAAE;AAChB,IAAA,IAAI,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;AACvB,IAAA,IAAI,KAAK,KAAK,EAAE,EAAE;AAChB,QAAA,OAAO,CAAC;IACV;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;AAIA;;;;AAIG;AACG,SAAU,eAAe,CAAC,MAAc,EAAA;AAC5C,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,GAAG,mBAAmB,GAAG,MAAM;IACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;AAEzC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW;AACnD,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU;AAClD,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS;AACjD,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ;AAChD,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO;AAC/C,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM;AAC9C,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK;AAC7C,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;AAC5C,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAC3C,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;AAC5C,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG;AACvE,IAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,EAAE;AAE5B,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO;AAClD,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM;AACjD,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK;AAChD,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI;AAC/C,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG;AAC9C,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;IAC7C,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEpC,IAAA,MAAM,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AACzD,IAAA,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,IAAI,EAAE;AAE/D,IAAA,IAAI,SAAS,GAAQ,EAAE,GAAG,MAAM;AAEhC,IAAA,IAAI,SAAS,GAAG,EAAE,EAAE;AAClB,QAAA,SAAS,GAAG,GAAG,GAAG,SAAS;IAC7B;AAEA,IAAA,IAAI,YAAY,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;AAEpR,IAAA,YAAY,GAAG,QAAQ,GAAG,YAAY;AACtC,IAAA,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;AAC3D,IAAA,OAAO,MAAM;AACf;AAGM,SAAU,mBAAmB,CAAC,MAAc,EAAA;IAChD,MAAM,GAAG,GAAG,MAAM;IAClB,IAAI,IAAI,GAAG,CAAC;IACZ,IAAI,IAAI,GAAG,CAAC;AACZ,IAAA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM;AACtB,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC/B,IAAA,MAAM,GAAG,cAAc,GAAG,MAAM;AAChC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7D,IAAA,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,MAAM,MAAM,KAAK,IAAI,CAAC;AACnD,IAAA,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACxG,QAAA,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACnG,QAAA,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACrG,IAAA,IAAI,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;AACvB,IAAA,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,IAAI,IAAI,EAAE;YACR,IAAI,GAAG,CAAC;QACV;aAAO;YACL,IAAI,GAAG,CAAC;QACV;IACF;SAAO;AACL,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,IAAI,GAAG,CAAC;QACV;aAAO;AACL,YAAA,IAAI,GAAG,EAAE,GAAG,KAAK;QACnB;IACF;AACA,IAAA,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AACpF,IAAA,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;AACnB,IAAA,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,IAAI,IAAI,EAAE;YACR,IAAI,GAAG,CAAC;QACV;aAAO;YACL,IAAI,GAAG,CAAC;QACV;IACF;SAAO;AACL,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,IAAI,GAAG,CAAC;QACV;aAAO;AACL,YAAA,IAAI,GAAG,EAAE,GAAG,KAAK;QACnB;IACF;IACA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC1C;AAEM,SAAU,aAAa,CAAC,MAAc,EAAA;AAC1C,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAE7B,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;QACtB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/B;AAEA,IAAA,MAAM,GAAG,UAAU,GAAG,MAAM;IAC5B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IAEzC,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtC,IAAA,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;AAC1C,QAAA,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC;IACrH;IAEA,IAAI,WAAW,GAAG,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC;AAEnB,IAAA,IAAI,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AACvG,IAAA,IAAI,SAAS,IAAI,CAAC,EAAE;QAAE,WAAW,GAAG,CAAC;IAAE;AACvC,IAAA,IAAI,SAAS,IAAI,EAAE,EAAE;QAAE,SAAS,GAAG,CAAC;IAAE;IACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE;QAAE,SAAS,GAAG,CAAC;IAAE;AAErF,IAAA,IAAI,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;AACtD,IAAA,IAAI,SAAS,IAAI,CAAC,EAAE;QAAE,WAAW,GAAG,CAAC;IAAE;AACvC,IAAA,IAAI,SAAS,IAAI,EAAE,EAAE;QAAE,SAAS,GAAG,CAAC;IAAE;IACtC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE;QAAE,SAAS,GAAG,CAAC;IAAE;AAErF,IAAA,IAAI,KAAK,GAAQ,SAAS,GAAG,EAAE,GAAG,SAAS;AAC3C,IAAA,IAAI,KAAK,IAAI,CAAC,EAAE;QAAE,KAAK,GAAG,IAAI;IAAE;IAChC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;AAAE,QAAA,KAAK,GAAG,GAAG,GAAG,KAAK;IAAE;AAEpD,IAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;AACzB;;ACncM,SAAU,KAAK,CAAC,MAAc,EAAA;;AAGlC,IAAA,MAAM,GAAG,SAAS,GAAG,MAAM;IAC3B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAExC,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAErC,IAAA,IAAI,OAAO,GAAQ,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;AAC/F,IAAA,IAAI,OAAO,IAAI,EAAE,EAAE;QACjB,OAAO,GAAG,GAAG;IACf;AAEA,IAAA,OAAO,OAAO;AAChB;AAEM,SAAU,KAAK,CAAC,MAAc,EAAA;;AAKlC,IAAA,MAAM,GAAG,SAAS,GAAG,MAAM;IAC3B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAExC,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAErC,IAAA,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,GAAG,GAAG,CAAC,EAAE;AAAE,QAAA,GAAG,GAAG,GAAG,GAAG,CAAC;IAAE;AAChD,IAAA,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AAAE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC;IAAE;AACpD,IAAA,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AAAE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC;IAAE;AACpD,IAAA,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC;AAAE,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AAAE,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC;IAAE;IACpD,IAAI,IAAI,GAAG,EAAE;IACb,IAAI,IAAI,GAAG,EAAE;IACb,IAAI,IAAI,GAAG,EAAE;IACb,IAAI,IAAI,GAAG,EAAE;IAEb,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE;AACzE,IAAA,OAAO,GAAG,EAAE,GAAG,OAAO;AAAE,IAAA,IAAI,OAAO,IAAI,EAAE,EAAE;QAAE,OAAO,GAAG,CAAC;IAAE;AAE1D,IAAA,OAAO,OAAO;AAChB;AAEA,MAAM,EAAE,GAAwB;AAC9B,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE;CACL;;AC1DM,MAAM,SAAS,GAAmC;AACvD,IAAA,cAAc,EAAE;AACd,QAAA,gBAAgB,EAAE;YAChB,IAAI,EAAE,mBAAmB;AACzB,YAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AAC5G,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AAC/E,YAAA,gBAAgB,EAAE,SAAS,IAAI,CAAC,SAAc,EAAA;gBAC5C,MAAM,OAAO,GAAQ,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC3C,IAAI,YAAY,GAAG,CAAC;gBACpB,IAAI,OAAO,EAAE;oBACX,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM;gBACxC;AAEA,gBAAA,IAAI,CAAC,SAAS,IAAI,YAAY,GAAG,CAAC,EAAE;oBAClC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;gBACpF;qBAAO;oBACL,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;gBAC9E;YACF;AACD;AACF,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AACvF;AACF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AACvF;AACF;;;ACjCG,SAAU,gBAAgB,CAAC,MAAc,EAAA;AAC7C,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtC,IAAI,UAAU,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AACjI,IAAA,IAAI,UAAU,IAAI,EAAE,EAAE;QAAE,UAAU,GAAG,CAAC;IAAE;AACxC,IAAA,OAAO,UAAU;AACnB;AAEM,SAAU,cAAc,CAAC,MAAc,EAAA;IAC3C,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtC,IAAA,IAAI,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE;AAC3G,IAAA,IAAI,QAAQ,IAAI,EAAE,EAAE;QAAE,QAAQ,GAAG,CAAC;IAAE;AACpC,IAAA,OAAO,QAAQ;AACjB;MAGa,UAAU,GAAG,CAAC,MAAuB,EAAE,MAAuB,KAAI;AAC7E,IAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE;QACpD;IACF;AACA,IAAA,IAAI,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACxD,IAAA,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE;AACpD,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;AAC9B,QAAA,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB;AACA,IAAA,OAAO,IAAI;AACb;AAEO,MAAM,UAAU,GAAmC;AACxD,IAAA,WAAW,EAAE;AACX,QAAA,WAAW,EAAE,cAAc;AAC5B,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE;AACb;;;ACzDH,MAAM,oBAAoB,GAAG,CAAC,MAAsB,EAAE,GAAW,KAAI;IACnE,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACxC,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AAAO,SAAA,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE;QAChC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B;AACA,IAAA,OAAO,MAAM;AACf,CAAC;AAEK,SAAU,kBAAkB,CAAC,KAAqB,EAAA;IACtD,IAAI,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;AACnD,IAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AACjD;AAEA;;;;AAIG;AACG,SAAU,sBAAsB,CAAC,MAAW,EAAA;AAChD,IAAA,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,gBAAgB,CAAC,KAAqB,EAAA;IACpD,IAAI,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,KAAK;IACd;AACA,IAAA,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;AACvD,IAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AACjD;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,MAAM,YAAY,GAAmC;AAC1D,IAAA,WAAW,EAAE;AACX,QAAA,WAAW,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,UAAU,EAAE,sBAAsB;AACnC,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE;AACb;;;ACnEI,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,MAAuB,EAAE,MAAuB,KAAI;AAC9F,IAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE;AACtD,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAC7B,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAC3C;AAEO,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,MAAc,KAAI;AAC1E,IAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE;AACpD,QAAA,OAAO,MAAM;IACf;AACA,IAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAClC;AACO,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,MAAuB,EAAE,MAAuB,KAAI;AAChG,IAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE;AAC1D,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAC7B,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAC7C;;ACZM,SAAU,YAAY,CAAC,GAAW,EAAA;IACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,IAAA,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC/B,OAAO,UAAU,KAAK,EAAE;AAC1B;AAEM,SAAU,gBAAgB,CAAC,GAAQ,EAAA;IACvC,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACrC,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE;AAC1B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACvC,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb;AAEO,MAAM,QAAQ,GAAsB;AACzC,IAAA,IAAI,EAAE,uCAAuC;AAC7C,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,IAAI,EAAE,8BAA8B;AACpC,IAAA,IAAI,EAAE,8BAA8B;AACpC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,gCAAgC;AACtC,IAAA,IAAI,EAAE,+BAA+B;AACrC,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,IAAI,EAAE,kCAAkC;AACxC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,kCAAkC;AACxC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,kCAAkC;AACxC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,6BAA6B;AACnC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,8BAA8B;AACpC,IAAA,IAAI,EAAE,8BAA8B;AACpC,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,IAAI,EAAE,4BAA4B;AAClC,IAAA,IAAI,EAAE,2BAA2B;AACjC,IAAA,IAAI,EAAE,2BAA2B;;AAG7B,SAAU,YAAY,CAAC,GAAW,EAAA;IACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,qBAAqB;AACjC,IAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb;AAGM,SAAU,UAAU,CAAC,GAAoB,EAAA;AAC7C,IAAA,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AAC7C,IAAA,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;AACvB,IAAA,MAAM,SAAS,GAAW,GAAG,CAAC,QAAQ,EAAE;AACxC,IAAA,IAAI,KAAU;AACd,IAAA,KAAK,IAAI,MAAM,IAAI,QAAQ,EAAE;AAC3B,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC1B,QAAA,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,EAAE;YACL,KAAK,GAAG,CAAC;AACT,YAAA,OAAO,IAAI;QACb;IACF;IAEA,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb;AAKM,SAAU,iBAAiB,CAAC,KAAa,EAAA;AAC7C,IAAA,IAAI,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;IAElC,MAAM,MAAM,GAAG,WAAW;IAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC1B,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,IAAA,MAAM,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC;IAEpC,OAAO,EAAE,KAAK,UAAU;AAC1B;AAGA;;;AAGG;AACG,SAAU,eAAe,CAAC,MAAc,EAAA;;IAG5C,MAAM,oBAAoB,GAAG,IAAI;AACjC,IAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,QAAA,OAAO,KAAK;IACd;;AAGA,IAAA,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;;;IAI7B,MAAM,qBAAqB,GAAG,wBAAwB;AACtD,IAAA,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACtC,QAAA,OAAO,KAAK;IACd;;IAGA,MAAM,gBAAgB,GAAG,UAAU;AACnC,IAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACjC,QAAA,OAAO,KAAK;IACd;;IAGA,MAAM,iBAAiB,GAAG,WAAW;IACrC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACnC,QAAA,OAAO,KAAK;IACd;;AAGA,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;AACtB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,aAAa,CAAC,MAAW,EAAA;AAChC,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;AACxB,IAAA,OAAO,KAAK;AACd;AAEA;;;;;;;;;AASG;AACG,SAAU,mBAAmB,CAAC,KAAa,EAAA;IAC/C,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACnC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;AACpC,IAAA,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;QAAE,KAAK,GAAG,GAAG;IAC/C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;AAClC;AAEA;;;;;;;;;;;;;;;AAeG;AACG,SAAU,uBAAuB,CAAC,KAAa,EAAA;AACnD,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;IAC9C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClC,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrC,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACxC,IAAA,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;QAAE,KAAK,GAAG,GAAG;IAC/C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;AAClC;AAEM,SAAU,wBAAwB,CAAC,KAAa,EAAA;IACpD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AAEnC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC;IACzC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;AAClC;AAEA;;;;;;;;;;AAUG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;AACxC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC9C,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;AAClC;AAEM,SAAU,aAAa,CAAC,IAAS,EAAA;;IAErC,IAAI,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;IACzD,IAAI,iBAAiB,IAAI,EAAE;AACzB,QAAA,OAAO,KAAK;IAEd,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AAClC,IAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACvC,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;AACpC,IAAA,IAAI,CAAC,UAAU;AACb,QAAA,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACjD,QAAA,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EACjD;AACA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,mBAAmB,CAAC,MAAW,EAAA;AACtC,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK;AACzB,IAAA,OAAO,IAAI;AACb;AAEA;;;;AAIG;AACG,SAAU,YAAY,CAAC,MAAW,EAAA;;IAEtC,IAAI,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;IAC1D,IAAI,iBAAiB,IAAI,EAAE;AACzB,QAAA,OAAO,KAAK;IAEd,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACtC,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE;AACxB,QAAA,OAAO,KAAK;IACd;;IAGA,MAAM,SAAS,GAAG,sBAAsB;IACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAC5B,QAAA,OAAO,KAAK;IACd;;AAGA,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AACjC,IAAA,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,gBAAgB,CAAC,MAAW,EAAA;IACnC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;AACtD;AAEM,SAAU,YAAY,CAAC,KAAa,EAAA;AACxC,IAAA,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC;AAC/B,IAAA,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAChD,IAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC;AACpC,IAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAClD,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,IAAI,GAAG,CAAC;AACZ,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,QAAA,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrC;AAEA,IAAA,OAAO,IAAI,GAAG,EAAE,IAAI,CAAC;AACvB;AAGM,SAAU,sBAAsB,CAAC,KAAsB,EAAA;AAC3D,IAAA,IAAI,KAAa;AACjB,IAAA,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;AAC5B,QAAA,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IAC7B;SAAO;AACL,QAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;IAC1B;IAEA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACjC,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACzC,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAE/B,IAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;IACpB,MAAM,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;AACzC,IAAA,IAAI,GAAG,IAAI,GAAG,GAAG,QAAQ,EAAE;AACzB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,GAAG,KAAK,QAAQ,EAAE;AACrD,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,GAAG,EAAE;AACP,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC;AAClC,QAAA,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,EAAE;AAC9B,YAAA,OAAO,KAAK;QACd;IACF;AAEA,IAAA,IAAI,KAAK;IACT,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;QAC7C,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACzC,KAAK,GAAG,GAAG;QACb;AACF,IAAA,CAAC,CAAC;IACF,OAAO,CAAC,CAAC,KAAK;AAEhB;AAEA,SAAS,YAAY,CAAC,KAAqB,EAAE,YAAiB,CAAC,EAAA;AAC7D,IAAA,SAAS,GAAG,SAAS,YAAY,KAAK,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC;AAEhE,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE;IACtD;IACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE;IACtD;IAEA,IAAI,CAAC,GAAG,CAAC;AACT,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM;IACxB,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,QAAA,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;YACxB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE;QACpD;IACF;AAEA,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;QAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE;IACrD;IAEA,IAAI,OAAO,GAAG,SAAS;IACvB,IAAI,CAAC,GAAG,CAAC;IAET,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,QAAA,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO;IAC3D;AAEA,IAAA,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,EAAE;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE;IACtD;IAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE;AACpD;AAGA;;;;;;;;;;;AAWE;AACK,MAAM,mBAAmB,GAAsB;AACpD,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,0BAA0B;AAChC,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,IAAI,EAAE,oCAAoC;AAC1C,IAAA,IAAI,EAAE,oCAAoC;AAC1C,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,KAAK,EAAE,qCAAqC;AAC5C,IAAA,IAAI,EAAE;;AAIF,SAAU,iBAAiB,CAAC,QAAyB,EAAA;AACzD,IAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,QAAA,OAAO,IAAI;IACb;IACA,MAAM,KAAK,GAAG,4DAA4D;AAC1E,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B;AAGA,SAAS,aAAa,CAAC,KAAoB,EAAA;IACzC,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,KAAK;IACd;IACA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;IACA,MAAM,QAAQ,GAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9E,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;;AAEA,IAAA,OAAO,IAAI;AACb;AAGA,SAAS,aAAa,CAAC,KAAoB,EAAA;IACzC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;AAC/B,QAAA,OAAO,KAAK;IACd;AACA,IAAA,MAAM,QAAQ,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC;AACtC,IAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE;AACvB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb;SAEgB,iBAAiB,CAAC,IAAqB,EAAE,UAAe,EAAE,EAAA;IACxE,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAA,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;AACjE,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,KAAK;AACd;SAGgB,iBAAiB,CAAC,IAAqB,EAAE,UAAe,EAAE,EAAA;IACxE,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAA,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;AACjE,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,YAAY,CAAC,MAAc,EAAA;AACzC,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAC7B,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,IAAA,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC;AAE9B,IAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AAC9C,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,cAAc,CAAC,KAAU,EAAA;IAChC,IAAI,EAAE,GAAG,4BAA4B;AACrC,IAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C;AAEA,SAAS,iBAAiB,CAAC,MAAW,EAAA;AACpC,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK;AACzB,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,eAAe,CAAC,MAAc,EAAA;IAC5C,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAA,OAAO,KAAK;IACd;IACA,MAAM,YAAY,GAAG,oBAAoB;IACzC,MAAM,KAAK,GAAG,gCAAgC;IAC9C,MAAM,WAAW,GAAG,cAAc;IAClC,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACpF;AAGM,SAAU,oBAAoB,CAAC,WAAmB,EAAA;IACtD,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvC,IAAA,OAAO,eAAe,CAAC,WAAW,CAAC;AACrC;AAGM,SAAU,iBAAiB,CAAC,QAAa,EAAA;IAC7C,IAAI,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC/C,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;;;;;;AAMhD,IAAA,IAAI,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC;AAChD,IAAA,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,EAAE;AACxE,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb;AAGM,SAAU,iBAAiB,CAAC,MAAc,EAAA;AAC9C,IAAA,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAC7B,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC;AACrC,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACpB,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC;AACrC,IAAA,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC/C;AAGM,SAAU,gBAAgB,CAAC,OAAY,EAAA;IAC3C,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC7C,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC9C,IAAA,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC;AAClC,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM;AAC1B,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;AACrC,QAAA,OAAO,IAAI;IACb;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;AAIM,SAAU,WAAW,CAAC,EAAU,EAAA;IACpC,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,+BAA+B;IAC3C,MAAM,QAAQ,GAAG,eAAe;AAChC,IAAA,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;IAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,CAAC,EAAE;AACpE,QAAA,OAAO,KAAK;IACd;AACA,IAAA,MAAM,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC;IAC/B,IAAI,aAAa,EAAE;AACjB,QAAA,OAAO,aAAa,CAAC,EAAE,CAAC;IAC1B;AACA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,cAAc,CAAC,KAAa,EAAE,UAAe,EAAE,EAAA;IACtD,IAAI,UAAU,GAAG,GAAG;;;AAGpB,IAAA,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE;AAC/B,QAAA,UAAU,GAAG,UAAU,GAAG,aAAa;IACzC;;AAEA,IAAA,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE;AAC/B,QAAA,UAAU,GAAG,UAAU,GAAG,aAAa;IACzC;;AAEA,IAAA,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AAC7B,QAAA,UAAU,GAAG,UAAU,GAAG,aAAa;IACzC;;AAEA,IAAA,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AAC7B,QAAA,UAAU,GAAG,UAAU,GAAG,wBAAwB;IACpD;;AAEA,IAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,QAAA,OAAO,CAAC,IAAI,GAAG,CAAC;IAClB;IAEA,UAAU,GAAG,UAAU,GAAG,CAAA,KAAA,EAAQ,OAAO,CAAC,IAAI,KAAK;AAEnD,IAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC;AACpC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B;AAGA,SAAS,aAAa,CAAC,KAAU,EAAA;IAC/B,IAAI,EAAE,GAAG,kGAAkG;AAC3G,IAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C;AAEM,SAAU,aAAa,CAAC,IAAY,EAAA;AACxC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,KAAK;AACvB,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,iBAAiB,CAAC,GAAQ,EAAA;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAC3C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AAC3B,IAAA,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE;AACvD,QAAA,OAAO,KAAK;IACd;AACA,IAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACxC,QAAA,OAAO,KAAK;IACd;AACA,IAAA,OAAO,IAAI;AACb;SAEgB,aAAa,CAAC,IAAqB,EAAE,UAAe,EAAE,EAAA;AACpE,IAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,IAAA,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,MAAM,UAAU,GAAG,mDAAmD;AACtE,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;SAAO;QACL,MAAM,UAAU,GAAG,4CAA4C;AAC/D,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;AAEF;AAEM,SAAU,eAAe,CAAC,MAAW,EAAA;IACzC,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,KAAK;IACd;IACA,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,qBAAqB;IACjC,MAAM,QAAQ,GAAG,iBAAiB;AAClC,IAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACzD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM;AAE9B,IAAA,IAAI,GAAG;AACP,IAAA,IAAI;AACF,QAAA,GAAG,GAAG,mBAAmB,CAAC,WAAW,CAAC;;;IAGxC;IAAE,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9C,IAAA,IAAI,OAAO,KAAK,GAAG,EAAE;AACnB,QAAA,OAAO,IAAI;IACb;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;AAEA,SAAS,iBAAiB,CAAC,KAAU,EAAA;IACnC,IAAI,EAAE,GAAG,uBAAuB;AAChC,IAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C;AAEO,MAAM,UAAU,GAAwB;AAC7C,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,aAAa,EAAE,sBAAsB;AACrC,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,cAAc,EAAE,uBAAuB;AACvC,IAAA,eAAe,EAAE,wBAAwB;AACzC,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,iBAAiB,EAAE,0BAA0B;AAC7C,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,EAAE,EAAE,WAAW;AACf,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,QAAQ,EAAE;;;ACntBZ,MAAM,UAAU,GAAG,GAAG;AACtB,MAAMC,aAAW,GAAG,EAAE;AACtB,MAAM,KAAK,GAAG,GAAG;AACjB,MAAM,MAAM,GAAG,GAAG;AAClB,MAAM,KAAK,GAAG,GAAG;AACjB,MAAM,WAAW,GAAG,GAAG;AACvB,MAAM,eAAe,GAAG,MAAM;AAC9B,MAAM,MAAM,GAAG,QAAQ;AACvB,MAAM,WAAW,GAAG,IAAI;AACxB,MAAM,SAAS,GAAG,IAAI;AAER,SAAU,gBAAgB,CAAC,EACvC,MAAM,GAAG,UAAU,EACnB,MAAM,GAAGA,aAAW,EACpB,yBAAyB,GAAG,IAAI,EAChC,wBAAwB,GAAG,KAAK,EAChC,YAAY,GAAG,KAAK,EACpB,aAAa,GAAG,MAAM,EACtB,YAAY,GAAG,CAAC,EAChB,cAAc,GAAG,KAAK,EACtB,aAAa,GAAG,KAAK,EACrB,kBAAkB,GAAG,KAAK,EAC1B,YAAY,GAAG,IAAI,GACpB,GAAG,EAAE,EAAA;IACJ,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;IACnD,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;IACnD,MAAM,8BAA8B,GAClC,CAAC,wBAAwB,IAAI,wBAAwB,CAAC,MAAM,KAAK,CAAC;AAEpE,IAAA,SAAS,UAAU,CAAC,QAAQ,GAAGA,aAAW,EAAA;AACxC,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM;QAEtC,IACE,QAAQ,KAAKA,aAAW;AACxB,aAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,cAAc,KAAK,CAAC,CAAC,EACnD;AACA,YAAA,OAAO;iBACJ,KAAK,CAACA,aAAW;AACjB,iBAAA,MAAM,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC;iBACzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAACA,aAAW,CAAC,CAAC;QACtC;AAAO,aAAA,IAAI,QAAQ,KAAK,aAAa,IAAI,YAAY,EAAE;AACrD,YAAA,OAAO;iBACJ,KAAK,CAACA,aAAW;iBACjB,MAAM,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,GAAG,WAAW,CAAC;iBAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAACA,aAAW,CAAC,CAAC;QACtC;QAEA,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,aAAa;;QAEzD,IAAI,UAAU,EAAE;YACd,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C;QAEA,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;AAC9D,QAAA,MAAM,UAAU,GAAG,kBAAkB,KAAK,CAAC,CAAC;AAE5C,QAAA,IAAI,OAAO;AACX,QAAA,IAAI,QAAQ;AACZ,QAAA,IAAI,IAAI;;AAGR,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AAChD,YAAA,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACjD;QAEA,IAAI,UAAU,KAAK,YAAY,IAAI,cAAc,CAAC,EAAE;YAClD,OAAO,GAAG,QAAQ,CAAC,KAAK,CACtB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,MAAM,GAAG,YAAY,GAAG,CAAC,EAC7D,kBAAkB,CACnB;YAED,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,cAAc,CAAC;AACjE,YAAA,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAEA,aAAW,CAAC,CAAC;QAC1E;aAAO;YACL,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,MAAM,EAAE;AAC9C,gBAAA,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;YACxC;iBAAO;gBACL,OAAO,GAAG,QAAQ;YACpB;QACF;AAEA,QAAA,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,MAAM,EAAE;AAClD,YAAA,MAAM,uBAAuB,GAC3B,wBAAwB,KAAK;AAC3B,kBAAE;AACF,kBAAE,CAAA,EAAG,wBAAwB,CAAA,CAAE;YACnC,MAAM,0BAA0B,GAAG,CACjC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAC7D,MAAM;AAER,YAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CACrB,CAAC,EACD,YAAY;gBACV,0BAA0B,GAAG,8BAA8B,CAC9D;QACH;QAEA,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAEA,aAAW,CAAC;QAEvD,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;QACjD;AAEA,QAAA,OAAO,GAAG;AACR,cAAE,qBAAqB,CAAC,OAAO,EAAE,wBAAwB;cACvD,OAAO;AAEX,QAAA,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC;QAE7B,IAAI,CAAC,UAAU,IAAI,YAAY,KAAK,cAAc,KAAK,IAAI,EAAE;YAC3D,IAAI,QAAQ,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK,aAAa,EAAE;AACtD,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACtB;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;YAEnC,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,OAAO,YAAY,KAAK,MAAM,EAAE;oBAClC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;gBAC5C;AAEA,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC9B;YAEA,IACE,cAAc,KAAK,IAAI;gBACvB,QAAQ,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK,aAAa,EAClD;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACxB;QACF;AAEA,QAAA,IAAI,YAAY,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,GAAG,MAAM,CAAC,KAAK,CAACA,aAAW,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;QACpD;QAEA,IAAI,UAAU,EAAE;;AAEd,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE;AAChC,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACxB;AAEA,YAAA,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACpD;AAEA,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAACA,aAAW,CAAC,CAAC;QAC/C;AAEA,QAAA,OAAO,IAAI;IACb;;AAIA,IAAA,OAAO,UAAU;AACnB;AAEA,SAAS,aAAa,CAAC,SAAiB,EAAA;AACtC,IAAA,OAAO;SACJ,KAAK,CAACA,aAAW;SACjB,GAAG,CAAC,CAAC,IAAY,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC;AACzE;AAEA,SAAS,qBAAqB,CAAC,CAAS,EAAE,wBAAgC,EAAA;IACxE,OAAO,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;AACrE;;AC9JA,MAAM,UAAU,GAAQ;AACtB,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,wBAAwB,EAAE,GAAG;AAC7B,IAAA,aAAa,EAAE,GAAG;AAClB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,MAAM,EAAE;CACT;AAEM,MAAM,KAAK,GAAwB;AACxC,IAAA,GAAG,EAAE;QACH,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AAC7F,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,IAAI,EAAE,+BAA+B;QACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAClL,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACvG,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACpE,KAAA;;AAED,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,0CAA0C;QAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;YAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;YACzE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;AACnF,KAAA;AACD,IAAA,MAAM,EAAE;QACN,IAAI,EAAE,sBAAsB;AAC5B,QAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAClI,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,QAAQ,EAAE;AACX,KAAA;AACD,IAAA,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;AAC9D,KAAA;AACD,IAAA,GAAG,EAAE;QACH,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;AACjF,KAAA;AACD,IAAA,eAAe,EAAE;QACf,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAC5E,KAAA;AACD,IAAA,cAAc,EAAE;QACd,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAClF,KAAA;AACD,IAAA,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACtE,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;AAClH,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,QAAQ,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;AACjI,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;AACjE,YAAA,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AACrD,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;AAC3F,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,oBAAoB;AAC1B,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;AAClH,QAAA,gBAAgB,EAAE,SAAS,IAAI,CAAC,SAAc,EAAA;YAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YACtC,IAAI,YAAY,GAAG,CAAC;YACpB,IAAI,OAAO,EAAE;gBACX,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM;YACxC;AACA,YAAA,IAAI,CAAC,SAAS,IAAI,YAAY,GAAG,EAAE,EAAE;AACnC,gBAAA,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;YACjH;iBAAO;AACL,gBAAA,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;YAC1F;QACF;AACD,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,gBAAgB,CAAC;AACzB,YAAA,GAAG,UAAU;AACb,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,aAAa,EAAE;SAChB;AACF,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;AACtF,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;AACtF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI;AAC3H,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,kBAAkB;AACxB,QAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI;AAC3H,KAAA;AACD,IAAA,GAAG,EAAE;AACH,QAAA,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AACrE,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;AAClG,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;AAClG,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,QAAQ,EAAE,gBAAgB,CAAC,UAAU;AACtC,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,gBAAgB,CAAC;AACzB,YAAA,GAAG,UAAU;AACb,YAAA,MAAM,EAAE;SACT;AACF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AAC3F,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAClE,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACxK,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AACjF,QAAA,gBAAgB,EAAE,SAAS,IAAI,CAAC,SAAc,EAAA;YAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YACtC,IAAI,YAAY,GAAG,CAAC;YACpB,IAAI,OAAO,EAAE;gBACX,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM;YACxC;AACA,YAAA,IAAI,CAAC,SAAS,IAAI,YAAY,GAAG,CAAC,EAAE;gBAClC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YACpE;iBAAO;gBACL,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAChF;QACF;AACD,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACjG,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;AAClG,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACtG,QAAA,gBAAgB,EAAE,SAAS,IAAI,CAAC,SAAc,EAAA;YAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YACtC,IAAI,YAAY,GAAG,CAAC;YACpB,IAAI,OAAO,EAAE;gBACX,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM;YACxC;AACA,YAAA,IAAI,CAAC,SAAS,IAAI,YAAY,GAAG,EAAE,EAAE;AACnC,gBAAA,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YACrG;iBAAO;AACL,gBAAA,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC/F;QACF;AACD,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI;AAC1C,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;AAClG,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,cAAc,EAAE,CAAC,CAAS,KAAI;YAC5B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC/B,gBAAA,OAAO,CAAC;YACV;AACA,YAAA,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;QACzC,CAAC;AACD,QAAA,QAAQ,EAAE;AACX;CACF;AAGD,MAAM,WAAW,GAAG,CAAC,GAAW,KAAI;IAClC,OAAO,CAAC,KAAa,KAAI;QACvB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;QACX;QACA,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ;QAC9B,IAAI,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,gBAAgB;AAClD,QAAA,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE;AAC1C,YAAA,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;QAChC;AAGA,QAAA,OAAO,aAAa,CAClB,KAAK,EACL,IAAI,EACJ,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC,cAAc;AAClB,IAAA,CAAC;AACH,CAAC;AAEM,MAAMC,QAAM,GAAG;AACpB,IAAA,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;AACvB,IAAA,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC;AAC/B,IAAA,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;AACvB,IAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;AACjC,IAAA,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC;AAC7B,IAAA,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;AACzB,IAAA,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;AACvB,IAAA,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC;AAC/C,IAAA,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC;AAC7C,IAAA,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC;AACrC,IAAA,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;AACzB,IAAA,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;AACvB,IAAA,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC;AACrC,IAAA,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;AACvB,IAAA,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC;AAC/B,IAAA,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC;AAC3C,IAAA,QAAQ,EAAE,CAAC,kBAAmC,EAAE,cAAA,GAAyB,CAAC,KAAI;QAC5E,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,kBAAkB,EAAE,cAAc,CAAC;IAC5E,CAAC;AACD,IAAA,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;AACzB,IAAA,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;AACzB,IAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;AACjC,IAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;AACjC,IAAA,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;AACvB,IAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;AACjC,IAAA,iBAAiB,EAAE,CAAC,sBAA8B,EAAE,MAAc,KAAI;QACpE,MAAM,EAAE,GAAG,OAAO;AAClB,QAAA,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC;AAE1B,QAAA,IAAI,CAAC,sBAAsB,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;AAChD,YAAA,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ;AAC3B,QAAA,IAAI,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;AAC/C,QAAA,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE;AAC1C,YAAA,IAAI,GAAG,gBAAgB,CAAC,sBAAsB,CAAC;QACjD;AAEA,QAAA,OAAO,aAAa,CAClB,sBAAsB,EACtB,IAAI,EACJ,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC,cAAc;IAClB,CAAC;IACD,IAAI,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAc,KAAI;QAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,aAAa,CAClB,SAAS,EACT,IAAI,CAAC,QAAQ,EACb,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC,cAAc;IAClB,CAAC;AACD,IAAA,MAAM,EAAE,CAAC,WAAgB,EAAE,cAAA,GAAyB,CAAC,KAAI;QACvD,OAAO,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC;IACnE,CAAC;AACD,IAAA,WAAW,EAAE,CAAC,gBAAwB,EAAE,cAAA,GAAyB,CAAC,KAAI;QACpE,OAAO,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,cAAc,CAAC;IAC7E,CAAC;AACD,IAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;AACjC,IAAA,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC;AAC3B,IAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;AACjC,IAAA,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC;AAC/B,IAAA,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC;AACrB,IAAA,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;AACzB,IAAA,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;AACjC,IAAA,IAAI,EAAE,CAAC,KAAoB,KAAI;AAC7B,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5C;AACA,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;IACnC,CAAC;AACD,IAAA,MAAM,EAAE,WAAW,CAAC,QAAQ;CAC7B;AAID;;AAEG;AACI,MAAM,eAAe,GAAG,GAAG;AAC3B,MAAM,WAAW,GAAG,UAAU;AAErC,MAAM,sBAAsB,GAAG,eAAe;AAC9C,MAAM,UAAU,GAAQ,EAAE;AAC1B,MAAM,WAAW,GAAG,EAAE;AAEhB,SAAU,aAAa,CAAC,UAAA,GAA4B,WAAW,EAAE,IAAI,GAAG,UAAU,EAAE,MAAA,GAAc,EAAE,EAAA;AACxG,IAAA,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE;AACpC,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,QAAA,QAAQ,GAAY,UAAW,CAAC,QAAQ,EAAE;IAC5C;AACA,IAAA,IAAI,UAAU,YAAY,IAAI,EAAE;AAC9B,QAAA,QAAQ,GAAU,UAAW,CAAC,cAAc,CAAC,OAAO,CAAC;IACvD;AAEA,IAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;;;;AAMlB,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;;AAE/B,YAAA,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;;;AAI/B,YAAA,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,qBAAqB;QACtD;aAAO;AACL,YAAA,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D;QACH;IACF;;AAIA,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI;AAClC,IAAA,MAAM,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,IAAI,WAAW;IAC3E,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,EAAE,eAAe,CAAC;AACnE,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB;AACxD,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB;;IAGlD,MAAM,aAAa,GAAG,KAAK,KAAK,KAAK,IAAI,sBAAsB,KAAK,SAAS;;AAG7E,IAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM;AACtC,IAAA,MAAM,4BAA4B,GAAG,sBAAsB,CAAC,MAAM;AAClE,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM;AAC5C,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;;AAG9B,IAAA,MAAM,YAAY,GAAG,cAAc,GAAG,4BAA4B;;AAGlE,IAAA,MAAM,UAAU,GAAG,YAAY,GAAG,CAAC;;AAGnC,IAAA,MAAM,kBAAkB,GAAG,oBAAoB,IAAI,UAAU,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC;;IAGlF,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;;;;;;;;;AAUrE,IAAA,IAAI,iBAAiB,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;;QAE7C,IAAI,4BAA4B,GAAG,WAAW;;AAG9C,QAAA,KAAK,IAAI,CAAC,GAAG,kBAAkB,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE;AAC3D,YAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE;gBACtC,4BAA4B,IAAI,eAAe;YACjD;QACF;;;;QAKA,QAAQ,IACN,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;YACrC,4BAA4B;YAC5B,QAAQ,CAAC,KAAK,CAAC,kBAAkB,EAAE,cAAc,CAAC,CACnD;IACH;;;;IAKA,MAAM,WAAW,GAAG;SACjB,KAAK,CAAC,WAAW;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,kBAAkB,IAAI,CAAC,GAAG,iBAAiB,EAAE,CAAC,CAAC;;;;;AAMxF,IAAA,KAAK,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;AAE/B,QAAA,IAAI,IAAI,KAAK,eAAe,EAAE;YAC5B,MAAM,YAAY,GAAG,CAAC,IAAI,kBAAkB,IAAI,4BAA4B,KAAK,UAAU;AAE3F,YAAA,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC,YAAY,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,EAAE;AAC/D,gBAAA,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1B;QACF;IACF;;;IAIA,IAAI,cAAc,GAAG,WAAW;IAChC,IAAI,iBAAiB,GAAG,KAAK;;AAG7B,IAAA,eAAe,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE;AAC3D,QAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC;;AAGxC,QAAA,IAAI,iBAAiB,KAAK,eAAe,EAAE;;AAEzC,YAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;;;AAG1B,gBAAA,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE7B,oBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE;AACjC,oBAAA,IAAI,YAAY,GAAW,EAAE,EAAE,KAAK,GAAY,KAAK;oBACrD,IAAI,KAAK,EAAE;AACT,wBAAA,YAAY,GAAG,KAAK,CAAC,IAAI;AACzB,wBAAA,KAAK,GAAG,KAAK,CAAC,KAAK;oBACrB;;;;;oBAMA,IAAI,YAAY,KAAK,eAAe,IAAI,aAAa,KAAK,IAAI,EAAE;wBAC9D,cAAc,IAAI,eAAe;;AAGjC,wBAAA,SAAS,eAAe;;;oBAI1B;yBAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;;;;wBAIrC,IACE,iBAAiB,KAAK,IAAI;AAC1B,4BAAA,KAAK,KAAK,KAAK;AACf,4BAAA,sBAAsB,KAAK,WAAW;AACtC,4BAAA,KAAK,KAAK,KAAK;4BACf,CAAC,UAAU,EACX;4BACA,cAAc,IAAI,YAAY;wBAChC;6BAAO;;;;;;;;AAQL,4BAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM;4BAC5C,IAAI,mCAAmC,GAAG,IAAI;;;;;AAM9C,4BAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE;AAC1C,gCAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;AAE/B,gCAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE;oCACjE;gCACF;AAEA,gCAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE;oCACrC,mCAAmC,GAAG,CAAC;oCACvC;gCACF;4BACF;;;;AAKA,4BAAA,IAAI,mCAAmC,KAAK,IAAI,EAAE;gCAChD,cAAc,IAAI,YAAY;AAC9B,gCAAA,WAAW,CAAC,MAAM,CAAC,mCAAmC,EAAE,CAAC,CAAC;;;4BAI5D;iCAAO;AACL,gCAAA,CAAC,EAAE;4BACL;wBACF;;AAGA,wBAAA,SAAS,eAAe;oBAC1B;yBAAO;wBACL,iBAAiB,GAAG,IAAI;oBAC1B;gBACF;YACF;;;;;;AAOA,YAAA,IAAI,aAAa,KAAK,KAAK,EAAE;gBAC3B,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC;YAC5D;;YAGA;;;QAIF;aAAO;YACL,cAAc,IAAI,iBAAiB;QACrC;IACF;;;;;;;AAQA,IAAA,IAAI,aAAa,IAAI,UAAU,KAAK,KAAK,EAAE;QACzC,IAAI,gCAAgC,GAAG,IAAI;;AAG3C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE;gBACtC,gCAAgC,GAAG,CAAC;YACtC;QACF;AAEA,QAAA,IAAI,gCAAgC,KAAK,IAAI,EAAE;;YAE7C,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,gCAAgC,GAAG,CAAC,CAAC;QACjF;aAAO;;;YAGL,cAAc,GAAG,WAAW;QAC9B;IACF;IAEA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE;AACxD;AAGM,SAAU,wBAAwB,CAAC,IAAI,GAAG,UAAU,EAAE,eAAe,GAAG,sBAAsB,EAAA;AAClG,IAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAClB,QAAA,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E;IACH;IAEA,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QACxC,MAAM,IAAI,KAAK,CACb,yFAAyF;YACzF,qEAAqE;AACrE,YAAA,CAAA,gDAAA,EAAmD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA,IAAA,CAAM;YACxF,CAAA,+BAAA,EAAkC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CACzD;IACH;AAEA,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;AAC5B,QAAA,OAAO,CAAC,IAAI,YAAY,MAAM,IAAI,eAAe,GAAG,IAAI;AAC1D,IAAA,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACb;AAEA;;;;;;AAMG;AACH,SAAS,YAAY,CAAC,QAAa,EAAE,WAAgB,EAAE,iBAAyB,CAAC,EAAA;AAC/E,IAAA,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,CAAC,EAAE;AACrC,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QACtB,WAAW,IAAI,EAAE;QACjB,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IAC7C;IAEA,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AAEnC,IAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE;AACjE,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvC,IAAI,QAAQ,GAAG,EAAE;AACjB,IAAA,IAAI,cAAc,IAAI,SAAS,EAAE;AAC/B,QAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;IACjD;SAAO;AACL,QAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI;AAClG,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc,EAAE;YACpC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;QAClD;IACF;AAEA,IAAA,IAAI,cAAc,GAAG,aAAa,CAChC,WAAW,EACX,IAAI,EACJ,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC,cAAc;IAGhB,IAAI,MAAM,GAAG,EAAE;IACf,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACpC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG;IACd;AACA,IAAA,OAAO,cAAc,IAAI,cAAc,GAAG,CAAC,GAAG,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC,GAAG,MAAM;AAC7E;;ACrnBO,MAAM,OAAO,GAAG;IACrB,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,iBAAiB;IACjB,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,QAAQ;IACR,gBAAgB;IAChB,OAAO;IACP,UAAU;IACV,SAAS;IACT,IAAI;IACJ,YAAY;IACZ,YAAY;IACZ,oBAAoB;IACpB,kBAAkB;IAClB,KAAK;IACL,OAAO;IACP,YAAY;IACZ;;AAGK,MAAM,MAAM,GAAwBC;;ACxDpC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO;IAC1G,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU;AACjE,IAAA,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB;AAClF,IAAA,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW;IACvI,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe;IAChH,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB;IAC3F,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB;IACxF,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc;AACnF,IAAA,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY;AAEhH,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU;AAE7D,MAAM,wBAAwB,GAAG,CAAC,CAAA,WAAA,CAAa,EAAE,WAAW,EAAE,OAAO,EAAE,CAAA,KAAA,CAAO,EAAE,CAAA,KAAA,CAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA,IAAA,CAAM;IAC7H,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA,MAAA,CAAQ,EAAE,CAAA,IAAA,CAAM,EAAE,CAAA,IAAA,CAAM,EAAE,QAAQ,EAAE,CAAA,MAAA,CAAQ,EAAE,CAAA,IAAA,CAAM,EAAE,CAAA,SAAA,CAAW,EAAE,SAAS,EAAE,QAAQ;AAEjH,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW;AACnH,IAAA,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU;AAEjD,MAAM,mBAAmB,GAAG;AACjC,IAAA,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9B,IAAA,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,IAAA,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/B,IAAA,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;AAClC,IAAA,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/B,IAAA,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/B,IAAA,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;AAC1C,IAAA,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE;AACxC,IAAA,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/B,IAAA,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;AAClC,IAAA,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;AACrC,IAAA,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;AACtC,IAAA,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9B,IAAA,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,IAAA,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AAChC,IAAA,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;AACpC,IAAA,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/B,IAAA,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE;AACxC,IAAA,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7C,IAAA,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE;AAC3C,IAAA,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;AAClC,IAAA,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,IAAA,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE;AACxC,IAAA,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AACnC,IAAA,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,IAAA,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI;;AAE5B,MAAM,mBAAmB,GAAG;IACjC,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAChC,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAClC,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtB,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,QAAQ,EAAE,YAAY,CAAC;IACxB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,OAAO,EAAE,MAAM,CAAC;IACjB,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACrC,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,UAAU,EAAE,UAAU,CAAC;IACxB,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACjC,CAAC,QAAQ,EAAE,SAAS,CAAC;IACrB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,cAAc,EAAE,oBAAoB,CAAC;IACtC,CAAC,OAAO,EAAE,qBAAqB,CAAC;IAChC,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,uBAAuB,EAAE,WAAW,CAAC;IACtC,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACjC,CAAC,aAAa,EAAE,SAAS,CAAC;IAC1B,CAAC,qBAAqB,EAAE,WAAW,CAAC;IACpC,CAAC,aAAa,EAAE,WAAW,CAAC;IAC5B,CAAC,gBAAgB,EAAE,WAAW,CAAC;IAC/B,CAAC,yBAAyB,EAAE,YAAY,CAAC;IACzC,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,UAAU,EAAE,cAAc,CAAC;IAC5B,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,QAAQ,EAAE,aAAa,CAAC;IACzB,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,aAAa,EAAE,UAAU,CAAC;IAC3B,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAC3B,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAClC,CAAC,eAAe,EAAE,mBAAmB,CAAC;IACtC,CAAC,6CAA6C,EAAE,gBAAgB,CAAC;IACjE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,CAAC,eAAe,EAAE,gBAAgB,CAAC;IACnC,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAChC,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;IACxC,CAAC,uBAAuB,EAAE,WAAW,CAAC;IACtC,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAChC,CAAC,OAAO,EAAE,cAAc,CAAC;IACzB,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,SAAS,EAAE,QAAQ,CAAC;IACrB,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,gBAAgB,EAAE,SAAS,CAAC;IAC7B,CAAC,eAAe,EAAE,cAAc,CAAC;IACjC,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,aAAa,EAAE,WAAW,CAAC;IAC5B,CAAC,WAAW,EAAE,SAAS,CAAC;IACxB,CAAC,QAAQ,EAAE,YAAY,CAAC;IACxB,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAChC,CAAC,aAAa,EAAE,WAAW,CAAC;IAC5B,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,SAAS,EAAE,YAAY,CAAC;IACzB,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC1B,CAAC,WAAW,EAAE,YAAY,CAAC;IAC3B,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAC/B,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAChC,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,oBAAoB,EAAE,cAAc,CAAC;IACtC,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,cAAc,EAAE,WAAW,CAAC;IAC7B,CAAC,sBAAsB,EAAE,QAAQ,CAAC;IAClC,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAChC,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,UAAU,EAAE,MAAM,CAAC;IACpB,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAClC,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAChC,CAAC,eAAe,EAAE,aAAa,CAAC;IAChC,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACpC,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACjC,CAAC,sBAAsB,EAAE,cAAc,CAAC;IACxC,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,mBAAmB,EAAE,OAAO,CAAC;IAC9B,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,gBAAgB,EAAE,WAAW,CAAC;IAC/B,CAAC,eAAe,EAAE,gBAAgB,CAAC;IACnC,CAAC,UAAU,EAAE,cAAc,CAAC;IAC5B,CAAC,YAAY,EAAE,qBAAqB,CAAC;IACrC,CAAC,YAAY,EAAE,UAAU,CAAC;IAC1B,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC3B,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAC3B,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAC/B,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,eAAe,EAAE,mBAAmB,CAAC;IACtC,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAC1B,CAAC,SAAS,EAAE,QAAQ,CAAC;IACrB,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,aAAa,EAAE,cAAc,CAAC;IAC/B,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,aAAa,EAAE,cAAc,CAAC;IAC/B,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACrC,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,cAAc,EAAE,aAAa,CAAC;IAC/B,CAAC,WAAW,EAAE,SAAS,CAAC;IACxB,CAAC,aAAa,EAAE,WAAW,CAAC;IAC5B,CAAC,qBAAqB,EAAE,WAAW,CAAC;IACpC,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAClC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IACrC,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAC5B,CAAC,aAAa,EAAE,cAAc,CAAC;IAC/B,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAClC,CAAC,YAAY,EAAE,mBAAmB,CAAC;IACnC,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACjC,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAC7C,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,aAAa,EAAE,MAAM,CAAC;IACvB,CAAC,yBAAyB,EAAE,YAAY,CAAC;IACzC,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACpC,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,uBAAuB,EAAE,WAAW,CAAC;IACtC,CAAC,wBAAwB,EAAE,WAAW,CAAC;IACvC,CAAC,eAAe,EAAE,gBAAgB,CAAC;IACnC,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACjC,CAAC,0BAA0B,EAAE,SAAS,CAAC;IACvC,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACjC,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,qBAAqB,EAAE,UAAU,CAAC;IACnC,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,kBAAkB,EAAE,WAAW,CAAC;IACjC,CAAC,sBAAsB,EAAE,WAAW,CAAC;IACrC,CAAC,KAAK,EAAE,WAAW,CAAC;IACpB,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,OAAO,EAAE,UAAU,CAAC;IACrB,CAAC,mBAAmB,EAAE,WAAW,CAAC;IAClC,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAChC,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAChC,CAAC,iBAAiB,EAAE,cAAc,CAAC;IACnC,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtB,CAAC,cAAc,EAAE,WAAW,CAAC;IAC7B,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAC5B,CAAC,oBAAoB,EAAE,WAAW,CAAC;IACnC,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAChC,CAAC,YAAY,EAAE,YAAY,CAAC;IAC5B,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAC3B,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAChC,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAClC,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,KAAK,EAAE,WAAW,CAAC;IACpB,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,OAAO,EAAE,aAAa,CAAC;IACxB,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;IACxC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACxC,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,eAAe,EAAE,cAAc,CAAC;IACjC,CAAC,WAAW,EAAE,YAAY,CAAC;IAC3B,CAAC,qBAAqB,EAAE,WAAW,CAAC;IACpC,CAAC,wBAAwB,EAAE,YAAY,CAAC;IACxC,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,WAAW,EAAE,cAAc,CAAC;IAC7B,CAAC,YAAY,EAAE,SAAS,CAAC;IACzB,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,UAAU,EAAE,cAAc,CAAC;IAC5B,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,QAAQ,EAAE,WAAW,CAAC;IACvB,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,SAAS,EAAE,QAAQ,CAAC;IACrB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,aAAa,EAAE,QAAQ,CAAC;IACzB,CAAC,UAAU,EAAE,MAAM,CAAC;IACpB,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAChC,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAC1C,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACrC,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,CAAC,WAAW,EAAE,UAAU,CAAC;IACzB,CAAC,sBAAsB,EAAE,cAAc,CAAC;IACxC,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAC9B,CAAC,UAAU,EAAE,MAAM,CAAC;IACpB,CAAC,YAAY,EAAE,cAAc,CAAC;IAC9B,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,YAAY,EAAE,mBAAmB,CAAC;IACnC,CAAC,aAAa,EAAE,WAAW,CAAC;IAC5B,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,gBAAgB,EAAE,WAAW,CAAC;IAC/B,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,MAAM,EAAE,UAAU,CAAC;IACpB,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAC9B,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAChC,CAAC,eAAe,EAAE,WAAW,CAAC;IAC9B,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,eAAe,EAAE,WAAW,CAAC;IAC9B,CAAC,aAAa,EAAE,oBAAoB,CAAC;IACrC,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAC7B,CAAC,SAAS,EAAE,WAAW,CAAC;IACxB,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACxC,CAAC,SAAS,EAAE,cAAc,CAAC;IAC3B,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,qBAAqB,EAAE,QAAQ,CAAC;IACjC,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,KAAK,EAAE,WAAW,CAAC;IACpB,CAAC,UAAU,EAAE,cAAc,CAAC;IAC5B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,KAAK,EAAE,cAAc,CAAC;IACvB,CAAC,gBAAgB,EAAE,OAAO,CAAC;IAC3B,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,UAAU,EAAE,MAAM,CAAC;IACpB,CAAC,WAAW,EAAE,UAAU,CAAC;IACzB,CAAC,SAAS,EAAE,MAAM,CAAC;IACnB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,sBAAsB,EAAE,YAAY,CAAC;IACtC,CAAC,aAAa,EAAE,MAAM,CAAC;IACvB,CAAC,WAAW,EAAE,QAAQ,CAAC;IACvB,CAAC,YAAY,EAAE,UAAU,CAAC;IAC1B,CAAC,UAAU,EAAE,QAAQ,CAAC;IACtB,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACjC,CAAC,oBAAoB,EAAE,cAAc,CAAC;IACtC,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpB,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,0BAA0B,EAAE,YAAY,CAAC;IAC1C,CAAC,WAAW,EAAE,UAAU,CAAC;IACzB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,OAAO,EAAE,cAAc,CAAC;IACzB,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAChC,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,SAAS,EAAE,UAAU,CAAC;IACvB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAC5B,CAAC,WAAW,EAAE,OAAO,CAAC;IACtB,CAAC,WAAW,EAAE,cAAc,CAAC;IAC7B,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IACzC,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1B,CAAC,kBAAkB,EAAE,aAAa,CAAC;IACnC,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAC/B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClB,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,QAAQ,EAAE,OAAO,CAAC;IACnB,CAAC,yBAAyB,EAAE,qBAAqB,CAAC;IAClD,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,wBAAwB,EAAE,OAAO,CAAC;IACnC,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,aAAa,EAAE,UAAU,CAAC;IAC3B,CAAC,UAAU,EAAE,MAAM,CAAC;IACpB,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC7B,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACpC,CAAC,oBAAoB,EAAE,QAAQ,CAAC;IAChC,CAAC,WAAW,EAAE,WAAW;;;ACnXpB,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAClF,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;;AAE7D,MAAM,SAAS,GAAG;AACvB,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,GAAG,EAAE,+CAA+C;AACpD,IAAA,GAAG,EAAE,gBAAgB;AACrB,IAAA,GAAG,EAAE;;AAGA,MAAM,QAAQ,GAAG;AACtB,IAAA,SAAS,EAAE,4CAA4C;AACvD,IAAA,SAAS,EAAE,sBAAsB;AACjC,IAAA,SAAS,EAAE,gFAAgF;AAC3F,IAAA,SAAS,EAAE,gDAAgD;AAC3D,IAAA,SAAS,EAAE,uCAAuC;AAClD,IAAA,SAAS,EAAE,4BAA4B;AACvC,IAAA,SAAS,EAAE,0BAA0B;AACrC,IAAA,SAAS,EAAE,yCAAyC;AACpD,IAAA,SAAS,EAAE,kCAAkC;AAC7C,IAAA,SAAS,EAAE,kCAAkC;AAC7C,IAAA,SAAS,EAAE,+BAA+B;AAC1C,IAAA,SAAS,EAAE,wCAAwC;AACnD,IAAA,SAAS,EAAE,yDAAyD;AACpE,IAAA,SAAS,EAAE,mCAAmC;AAC9C,IAAA,SAAS,EAAE,6BAA6B;AACxC,IAAA,SAAS,EAAE,kDAAkD;AAC7D,IAAA,SAAS,EAAE,iEAAiE;AAC5E,IAAA,SAAS,EAAE,2GAA2G;AACtH,IAAA,SAAS,EAAE,0EAA0E;AACrF,IAAA,SAAS,EAAE,+CAA+C;AAC1D,IAAA,SAAS,EAAE,gFAAgF;AAC3F,IAAA,SAAS,EAAE,mCAAmC;;AAGzC,MAAM,SAAS,GAAG;AACvB,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,SAAS,EAAE,kBAAkB;;;MCvDlB,OAAO,CAAA;AAClB,IAAA,SAAS,CAAC,QAA4C,EAAA;QACpD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC;+GAHW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAJnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCSY,+BAA+B,CAAA;+GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf5C,kdAiBA,EAAA,MAAA,EAAA,CAAA,qdAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGX,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAX3C,SAAS;+BACE,0BAA0B,EAAA,eAAA,EAMnB,uBAAuB,CAAC,MAAM,WACtC,CAAC,YAAY,CAAC,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EAAA,kdAAA,EAAA,MAAA,EAAA,CAAA,qdAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGf;;;MEAU,2BAA2B,CAAA;AAItC,IAAA,WAAA,GAAA;QAFO,IAAA,CAAA,WAAW,GAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAE5D;AAER,IAAA,gBAAgB,CAAC,IAAuB,EAAA;QAC7C,OAAO;AACL,YAAA,GAAG,IAAI;YACP,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;IACH;AAEO,IAAA,QAAQ,CAAC,IAAuB,EAAA;QACrC,MAAM,QAAQ,GAAG,CAAC;QAClB,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,GAAG,EAAE;YAAE,OAAO,QAAQ,GAAG,IAAI;QACzC,OAAO,QAAQ,GAAG,GAAG;IACvB;+GApBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBxC,wpCAkCA,EAAA,MAAA,EAAA,CAAA,g+EAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBY,YAAY,+BAAE,+BAA+B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAG5C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAXvC,SAAS;+BACE,sBAAsB,EAAA,eAAA,EAMf,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,+BAA+B,CAAC,EAAA,UAAA,EAC5C,IAAI,EAAA,QAAA,EAAA,wpCAAA,EAAA,MAAA,EAAA,CAAA,g+EAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGf;;;MELU,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZpC,4nBAkBA,EAAA,MAAA,EAAA,CAAA,2YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,YAAY,mQAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGzB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAGlB,CAAC,YAAY,EAAE,YAAY,CAAC,cACzB,IAAI,EAAA,QAAA,EAAA,4nBAAA,EAAA,MAAA,EAAA,CAAA,2YAAA,CAAA,EAAA;;sBAGf;;;AEbH;;AAEG;;MCMU,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,OAAO,GAAuB,IAAI,YAAY,EAAQ;AAKjE,IAAA;IAHC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;+GAPW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,0JCR5B,8PASW,EAAA,MAAA,EAAA,CAAA,6nBAAA,CAAA,EAAA,CAAA,CAAA;;4FDDE,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,IAAI,EAAA,QAAA,EAAA,8PAAA,EAAA,MAAA,EAAA,CAAA,6nBAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;;AEXH;;AAEG;;MCUU,mBAAmB,CAAA;AAK9B,IAAA,OAAO,CAAC,IAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;AAEA,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;AAPnB,QAAA,IAAA,CAAA,OAAO,GAA6B,IAAI,YAAY,EAAc;IAO9B;IAE9C,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAC5D,CAAA,0BAAA,EAA6B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE,CAC9C;QACH;IACF;+GA3BW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZhC,kVAWA,EAAA,MAAA,EAAA,CAAA,iuBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAGnB,CAAC,YAAY,CAAC,cACX,IAAI,EAAA,QAAA,EAAA,kVAAA,EAAA,MAAA,EAAA,CAAA,iuBAAA,CAAA,EAAA;;sBAGjB;;sBACA;;;AEdH;;AAEG;;AC2BG,SAAU,aAAa,CAAC,KAAqB,EAAA;AACjD,IAAA,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;AAClD;AAEM,SAAU,eAAe,CAAC,KAAqB,EAAA;IACnD,OAAO,aAAa,CAAC,KAAK;AACvB,SAAA,iBAAiB;SACjB,SAAS,CAAC,KAAK;AACf,SAAA,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;AACpC;SAEgB,yBAAyB,CACvC,UAAwB,EACxB,UAAsC,EAAE,EAAA;AAExC,IAAA,MAAM,WAAW,GAAyB;AACxC,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,UAAU,EAAE,EAAE;KACf;AAED,IAAA,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;QAC3B,MAAM,wBAAwB,GAAG,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC;QACtE,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1E,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpE,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC;QAEpE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AACrC,YAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,EAAE;gBACzC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;gBAClD,IAAI,EAAE,mBAAmB,IAAI,gBAAgB;AAC7C,gBAAA,aAAa,EAAE,mBAAmB;AAClC,gBAAA,UAAU,EAAE,gBAAgB;AAC7B,aAAA,CAAC;AAEF,YAAA,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAE1B,IAAI,mBAAmB,EAAE;AACvB,gBAAA,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpC;YACF;YAEA,IAAI,gBAAgB,EAAE;AACpB,gBAAA,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjC;YACF;YAEA,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE;AACxD,gBAAA,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC/B;YACF;AAEA,YAAA,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,WAAW;AACpB;AAEM,SAAU,8BAA8B,CAC5C,UAAwB,EAAA;AAExB,IAAA,OAAO;AACJ,SAAA,GAAG,CAAC,CAAC,KAAK,MAAM;AACf,QAAA,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;QAC1C,KAAK,EAAE,KAAK,CAAC;AACV,aAAA,GAAG,CAAC,CAAC,SAAS,MAAM;YACnB,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,IAAI,CAAC;YAC9D,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,OAAO,CAAC;AACvE,YAAA,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,CAAC;YACjC,gBAAgB,EACd,SAAS,CAAC,cAAc,EAAE,gBAAgB,IAAI,SAAS,CAAC,gBAAgB;YAC1E,kBAAkB,EAChB,SAAS,CAAC,cAAc,EAAE,kBAAkB,IAAI,SAAS,CAAC,kBAAkB;YAC9E,mBAAmB,EACjB,SAAS,CAAC,cAAc,EAAE,mBAAmB,IAAI,SAAS,CAAC,mBAAmB;AACjF,SAAA,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,KAAA,CAAC;AACD,SAAA,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD;AAEA,SAAS,kBAAkB,CACzB,SAAyB,EACzB,OAKC,EAAA;AAED,IAAA,MAAM,eAAe,GAAG,kBAAkB,CACxC,SAAS,CAAC,SAAS,EACnB,OAAO,CAAC,oBAAoB,CAC7B;AACD,IAAA,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,IAAI,CAAC;IAErE,OAAO;AACL,QAAA,GAAG,SAAS;AACZ,QAAA,IAAI,EAAE,eAAe,GAAG,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI;QAC3D,gBAAgB,EACd,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,cAAc,EAAE,gBAAgB;QAC1E,kBAAkB,EAChB,SAAS,CAAC,kBAAkB,IAAI,SAAS,CAAC,cAAc,EAAE,kBAAkB;QAC9E,mBAAmB,EACjB,SAAS,CAAC,mBAAmB,IAAI,SAAS,CAAC,cAAc,EAAE,mBAAmB;QAChF,gBAAgB,EACd,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,cAAc,EAAE,gBAAgB;QAC1E,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B;AACH;AAEA,SAAS,kBAAkB,CACzB,SAAyB,EACzB,oBAA8B,EAAA;IAE9B,IAAI,CAAC,oBAAoB,EAAE;AACzB,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,mBAAmB,CAAC,SAAS,CAAC,GAAG,QAAQ,GAAG,QAAQ;AAC7D;AAEA,SAAS,mBAAmB,CAAC,SAAyB,EAAE,QAAQ,GAAG,KAAK,EAAA;IACtE,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,QAAQ;IACjB;IAEA,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvD;;AChKO,MAAM,yBAAyB,GAA+B;AACnE,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,qBAAqB;AAC3B,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;CACF;;MCjDY,+BAA+B,CAAA;AAC1C,IAAA,SAAS,CAAC,IAAoB,EAAA;QAC5B,QACE,yBAAyB,CAAC,IAAI,CAC5B,CAAC,cAAmB,KAAK,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC,gBAAgB,CACrE,IAAI,yBAAyB,CAAC,CAAC,CAAC;IAErC;+GAPW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA/B,+BAA+B,EAAA,CAAA,CAAA;;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C;;;MCUY,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBzB,ghBAeA,EAAA,MAAA,EAAA,CAAA,soBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEb,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EAGR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,ghBAAA,EAAA,MAAA,EAAA,CAAA,soBAAA,CAAA,EAAA;;sBAGxB;;;AElBH;;AAEG;;ACFH,IAAY,eAOX;AAPD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,OAAiB;AACnB,CAAC,EAPW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;AAS3B,IAAY,YAIX;AAJD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,OAAiB;AACnB,CAAC,EAJW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;MCEX,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAUE,QAAA,IAAA,CAAA,QAAQ,GAAoB,eAAe,CAAC,OAAO;AACnD,QAAA,IAAA,CAAA,KAAK,GAAiB,YAAY,CAAC,OAAO;QAC1C,IAAA,CAAA,OAAO,GAAG,KAAK;QACf,IAAA,CAAA,IAAI,GAAG,CAAC;QACR,IAAA,CAAA,GAAG,GAAG,CAAC;AACR,IAAA;+GARY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXjC,uQASA,EAAA,MAAA,EAAA,CAAA,u7CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EAGd,CAAC,YAAY,CAAC,cACX,IAAI,EAAA,QAAA,EAAA,uQAAA,EAAA,MAAA,EAAA,CAAA,u7CAAA,CAAA,EAAA;;;MEWL,oBAAoB,CAAA;IAc/B,WAAA,CACmB,UAAmC,EACnC,MAAsB,EAAA;QADtB,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,MAAM,GAAN,MAAM;AAdhB,QAAA,IAAA,CAAA,QAAQ,GAAoB,eAAe,CAAC,OAAO;AACnD,QAAA,IAAA,CAAA,KAAK,GAAiB,YAAY,CAAC,OAAO;QAC1C,IAAA,CAAA,SAAS,GAAG,CAAC;QACb,IAAA,CAAA,SAAS,GAAG,CAAC;QAEd,IAAA,CAAA,YAAY,GAA8C,IAAI;AAIrD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAMhE,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACjD;IAGA,YAAY,GAAA;QACV,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAGA,YAAY,GAAA;QACV,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAGA,IAAA,WAAW,CAAC,MAAkB,EAAA;AAC5B,QAAA,IACE,IAAI,CAAC,YAAY,KAAK,IAAI;AAC1B,YAAA,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,OAAO,EACzC;YACA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO;YAChD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO;YAC/C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;QACnD;IACF;AAGA,IAAA,YAAY,CAAC,MAAkB,EAAA;QAC7B,MAAM,CAAC,cAAc,EAAE;AACvB,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EACjC,GAAG,CACJ;IACH;IAGA,UAAU,GAAA;AACR,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AAC9B,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,YAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,oBAAoB,EAAE;gBACxD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAC9C,aAAA,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAElD,IAAI,CAAC,6BAA6B,EAAE;AAEpC,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3B,IAAI,CAAC,SAAS,CACf;QACH;IACF;IAEQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;YACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;YACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAE7C,YAAA,MAAM,EACJ,IAAI,EACJ,KAAK,EACL,GAAG,EACH,MAAM,GACP,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAEzD,YAAA,QAAQ,IAAI,CAAC,QAAQ;AACnB,gBAAA,KAAK,eAAe,CAAC,KAAK,EAAE;oBAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAC1C,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAC1B;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBACnD;gBACF;AACA,gBAAA,KAAK,eAAe,CAAC,KAAK,EAAE;oBAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAC1C,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAC1B;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBAChD;gBACF;AACA,gBAAA,KAAK,eAAe,CAAC,KAAK,EAAE;AAC1B,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC;oBACrE;gBACF;AACA,gBAAA,KAAK,eAAe,CAAC,IAAI,EAAE;AACzB,oBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAClD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC;oBACrE;gBACF;gBACA,SAAS;oBACP;gBACF;;QAEJ;IACF;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI;QAC3C;IACF;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,SAAS,CACf;IACH;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AAEtC,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAClD,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;IACF;+GAlJW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAEE;;sBACA;;sBACA;;sBACA;;sBACA;;sBAgBA,YAAY;uBAAC,YAAY;;sBAKzB,YAAY;uBAAC,YAAY;;sBAKzB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBAYpC,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;;sBAUrC,YAAY;uBAAC,UAAU;;;ACzE1B;;AAEG;;MCkBU,0BAA0B,CAAA;AAMrC,IAAA,WAAA,CAAmB,cAA+C,EAAA;QAA/C,IAAA,CAAA,cAAc,GAAd,cAAc;IAAoC;IAErE,SAAS,GAAA;QACP,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;SAEd;IACH;+GAbW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAS,+BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAHxB,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBhD,k9BAqCA,EAAA,MAAA,EAAA,CAAA,+kBAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,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,EAAE,YAAY,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIjD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EAMtB,CAAC,YAAY,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAA,SAAA,EAChD,CAAC,+BAA+B,CAAC,cAChC,IAAI,EAAA,QAAA,EAAA,k9BAAA,EAAA,MAAA,EAAA,CAAA,+kBAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;sBACA;;;MELU,6BAA6B,CAAA;IAGxC,WAAA,CACS,cAA+C,EACrC,IAAqB,EAAA;QAD/B,IAAA,CAAA,cAAc,GAAd,cAAc;QACJ,IAAA,CAAA,IAAI,GAAJ,IAAI;IACpB;AAEH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY;IAC3C;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW;IAC1C;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB;IACrD;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB;IACrD;AAEA,IAAA,SAAS,CAAC,IAAoB,EAAA;QAC5B,OAAO;AACL,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE;AACpC,YAAA,QAAQ,EAAE,IAAI,CAAC,sBAAsB,IAAI,EAAE;AAC3C,YAAA,IAAI,EAAE,OAAO;SACd;IACH;+GAlCW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,+BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAH3B,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBhD,mhEA4DA,EAAA,MAAA,EAAA,CAAA,u/CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7Cc,YAAY,EAAA,EAAA,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,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,EAAE,YAAY,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,0BAA0B,8GAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIrE,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EAGzB,CAAC,YAAY,EAAE,YAAY,EAAE,0BAA0B,EAAE,YAAY,CAAC,EAAA,SAAA,EACpE,CAAC,+BAA+B,CAAC,cAChC,IAAI,EAAA,QAAA,EAAA,mhEAAA,EAAA,MAAA,EAAA,CAAA,u/CAAA,CAAA,EAAA;;sBAGjB;;;MENU,gCAAgC,CAAA;+GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd7C,uOASA,EAAA,MAAA,EAAA,CAAA,qKAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGb,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAV5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAM5B,CAAC,YAAY,CAAC,cACX,IAAI,EAAA,QAAA,EAAA,uOAAA,EAAA,MAAA,EAAA,CAAA,qKAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGjB;;;MEHU,+BAA+B,CAAA;AAqB1C,IAAA,WAAA,GAAA;AAhBO,QAAA,IAAA,CAAA,GAAG,GAAG;AACX,YAAA,EAAE,CAAC,EAAE,CAAC,EAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,CAAC,EAAE,MAAM,EAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SACnD;QAEM,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,cAAc,GAAG,CAAC;IAEV;AAEf,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,QAAQ,GAAG,EAAE,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAA,OAAA,EAAW,GAAG,CAAC,OAAO,CAAC,CAAA,IAAA,EAAQ,QAAS,CAAA,CAAE,CAAE,EAAE;IACnE;IAEA,QAAQ,GAAA;IACR;AAEO,IAAA,QAAQ,CAAC,KAAa,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE;QACpD,OAAO,KAAK,GAAG;AACb,cAAE;cACA,KAAK,KAAK;AACZ,kBAAE,CAAC,QAAQ,GAAG,EAAE,IAAI;kBAClB,CAAC;IACP;AAEO,IAAA,OAAO,CAAC,CAAS,EAAA;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,GAAG;AAAE,YAAA,OAAO,SAAS;AACnC,QAAA,OAAO,SAAS;IAClB;IAEO,eAAe,GAAA;AACpB,QAAA,OAAO,CAAA,KAAA,EAAS,IAAI,CAAC,WAAY,GAAG;IACtC;AAEO,IAAA,YAAY,CAAC,CAAS,EAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG;AAAE,YAAA,OAAO,EAAE;AAC3C,QAAA,OAAO,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IACzD;IAEO,cAAc,GAAA;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;QACxC,OAAO,MAAM,CAAC,CAAA,EAAA,EAAM,QAAQ,GAAG,EAAG,CAAA,KAAA,CAAO,CAAC;IAC5C;IAEO,aAAa,GAAA;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;QACxC,OAAO,MAAM,CAAC,CAAA,EAAA,EAAM,QAAQ,GAAG,EAAG,CAAA,KAAA,CAAO,CAAC;IAC5C;IAEO,YAAY,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACpD;IAEO,KAAK,GAAA;AACV,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,KAAK;IAC7E;+GA5EW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ5C,gpDAsDA,EAAA,MAAA,EAAA,CAAA,skCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7Cc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,CAAA,EAAA,CAAA,CAAA;;4FAGb,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,OAAA,EAG3B,CAAC,YAAY,CAAC,cACX,IAAI,EAAA,QAAA,EAAA,gpDAAA,EAAA,MAAA,EAAA,CAAA,skCAAA,CAAA,EAAA;;sBAGjB;;sBACA;;;MEFU,kCAAkC,CAAA;AAP/C,IAAA,WAAA,GAAA;AAWY,QAAA,IAAA,CAAA,OAAO,GAAuB,IAAI,YAAY,EAAQ;QAEzD,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,SAAS,GAAG,KAAK;AAKzB,IAAA;IAHQ,KAAK,GAAA;AACV,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,KAAK;IAC7E;+GAXW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ/C,8QAQA,EAAA,MAAA,EAAA,CAAA,mxBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCc,YAAY,+BAAE,+BAA+B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAG9C,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,WAG/B,CAAC,YAAY,EAAE,+BAA+B,CAAC,cAC5C,IAAI,EAAA,QAAA,EAAA,8QAAA,EAAA,MAAA,EAAA,CAAA,mxBAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;sBACA;;;MEFU,2CAA2C,CAAA;AAI/C,IAAA,QAAQ,CAAC,IAAoB,EAAA;AAClC,QAAA,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;IAC7C;+GANW,2CAA2C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3C,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdxD,ifAkBA,EAAA,MAAA,EAAA,CAAA,sbAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPc,YAAY,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,CAAA,EAAA,CAAA,CAAA;;4FAGb,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAVvD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAAA,OAAA,EAMxC,CAAC,YAAY,CAAC,cACX,IAAI,EAAA,QAAA,EAAA,ifAAA,EAAA,MAAA,EAAA,CAAA,sbAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGjB;;sBACA;;;MEHU,uCAAuC,CAAA;AAG3C,IAAA,YAAY,CAAC,IAAoB,EAAA;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC;IACH;+GAXW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbpD,0fAeA,EAAA,MAAA,EAAA,CAAA,2nBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLc,YAAY,8JAAE,2CAA2C,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAG1D,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAPnD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,WAGpC,CAAC,YAAY,EAAE,2CAA2C,CAAC,cACxD,IAAI,EAAA,QAAA,EAAA,0fAAA,EAAA,MAAA,EAAA,CAAA,2nBAAA,CAAA,EAAA;;sBAGjB;;;MEAU,wCAAwC,CAAA;AAGnD,IAAA,WAAA,CAA6B,IAAqB,EAAA;QAArB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAoB;AAErD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB;IAChD;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB;IACrD;AAEO,IAAA,iBAAiB,CAAC,IAAY,EAAA;QACnC,OAAO;AACL,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,EAAE;SACV;IACH;+GAtBW,wCAAwC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wCAAwC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdrD,uuBAsBA,EAAA,MAAA,EAAA,CAAA,itBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDXc,YAAY,+BAAE,+BAA+B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAG9C,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAPpD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,WAGrC,CAAC,YAAY,EAAE,+BAA+B,CAAC,cAC5C,IAAI,EAAA,QAAA,EAAA,uuBAAA,EAAA,MAAA,EAAA,CAAA,itBAAA,CAAA,EAAA;;sBAGjB;;;MECU,kCAAkC,CAAA;+GAAlC,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB/C,oQAQA,EAAA,MAAA,EAAA,CAAA,wRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGM,uCAAuC,gGACvC,wCAAwC,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIjC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAV9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAG9B;wBACP,uCAAuC;wBACvC,wCAAwC;AACzC,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,oQAAA,EAAA,MAAA,EAAA,CAAA,wRAAA,CAAA,EAAA;;sBAGjB;;;MEuBU,6BAA6B,CAAA;AAYxC,IAAA,WAAA,CAAmB,cAA+C,EAAA;QAA/C,IAAA,CAAA,cAAc,GAAd,cAAc;AAH1B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAU;QAC5B,IAAA,CAAA,eAAe,GAAG,IAAI;IAEwC;IAErE,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YAC5C,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE;IAC5B;AAEA,IAAA,mBAAmB,CAAC,KAAmC,EAAA;AACrD,QAAA,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAChD;IACH;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;QAC3B;aAAO;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QAC1B;IACF;AAEA,IAAA,SAAS,CAAC,IAAgB,EAAA;QACxB,OAAO;AACL,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE;AACpC,YAAA,QAAQ,EAAE,IAAI,CAAC,sBAAsB,IAAI,EAAE;AAC3C,YAAA,IAAI,EAAE,OAAO;SACd;IACH;AACO,IAAA,KAAK,CAAC,IAAgB,EAAA;QAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;IACnE;+GAxEW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,+BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,iNAH3B,CAAC,+BAA+B,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrChD,ihEAmDA,EAAA,MAAA,EAAA,CAAA,4sEAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,YAAY,qEACZ,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,kCAAkC,6IAClC,6BAA6B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKtB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAnBzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,eAAA,EAMjB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,YAAY;wBACZ,kBAAkB;wBAClB,0BAA0B;wBAC1B,kCAAkC;wBAClC,6BAA6B;AAC9B,qBAAA,EAAA,SAAA,EACU,CAAC,+BAA+B,CAAC,EAAA,UAAA,EAChC,IAAI,EAAA,QAAA,EAAA,ihEAAA,EAAA,MAAA,EAAA,CAAA,4sEAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,iBAAiB;;;ME9BjB,oCAAoC,CAAA;AAQ/C,IAAA,WAAA,CAA6B,IAAqB,EAAA;QAArB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAL1B,IAAA,CAAA,YAAY,GAAqB,EAAE;QACnC,IAAA,CAAA,YAAY,GAAqB,EAAE;QACnC,IAAA,CAAA,qBAAqB,GAAqB,EAAE;QAC5C,IAAA,CAAA,kBAAkB,GAAqB,EAAE;IAEK;AAErD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB;IACtD;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB;IACtD;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB;IAClD;AAEA,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB;IACrD;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,mBAAmB;IAClD;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAClC,CAAC,IAAoB,KAAK,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CACtE;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAClC,CAAC,IAAoB,KAAK,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CACtE;QACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAC3C,CAAC,IAAoB,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAC5E;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CACxC,CAAC,IAAoB,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CACzE;IACH;+GAzDW,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBjD,isCAmCA,EAAA,MAAA,EAAA,CAAA,yeAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBc,YAAY,oQAAE,gCAAgC,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAG/C,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAVhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,WAMjC,CAAC,YAAY,EAAE,gCAAgC,CAAC,cAC7C,IAAI,EAAA,QAAA,EAAA,isCAAA,EAAA,MAAA,EAAA,CAAA,yeAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGjB;;;MEDU,qCAAqC,CAAA;AAGhD,IAAA,WAAA,CAAmB,cAA+C,EAAA;QAA/C,IAAA,CAAA,cAAc,GAAd,cAAc;IAAoC;AAE9D,IAAA,gBAAgB,CAAC,IAAoB,EAAA;QAC1C,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;IACH;AAEO,IAAA,QAAQ,CAAC,IAAoB,EAAA;QAClC,MAAM,QAAQ,GAAG,EAAE;QACnB,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,GAAG,EAAE;YAAE,OAAO,QAAQ,GAAG,IAAI;QACzC,OAAO,QAAQ,GAAG,GAAG;IACvB;+GAlBW,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,+BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArC,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAHnC,CAAC,+BAA+B,CAAC,0BCdhD,86BA2BA,EAAA,MAAA,EAAA,CAAA,u1CAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,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,EAAE,gCAAgC,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAI/C,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAXjD,SAAS;+BACI,iCAAiC,EAAA,OAAA,EAMlC,CAAC,YAAY,EAAE,gCAAgC,CAAC,EAAA,SAAA,EAC9C,CAAC,+BAA+B,CAAC,EAAA,UAAA,EAChC,IAAI,EAAA,QAAA,EAAA,86BAAA,EAAA,MAAA,EAAA,CAAA,u1CAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGjB;;;AElBH;;AAEG;;MC8DU,qBAAqB,CAAA;IAyBhC,WAAA,CACmB,IAAqB,EACrB,GAAsB,EAAA;QADtB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,GAAG,GAAH,GAAG;AApBZ,QAAA,IAAA,CAAA,YAAY,GAA0B,IAAI,YAAY,EAAW;AAIpE,QAAA,IAAA,CAAA,eAAe,GAAmC,IAAI,aAAa,CAExE,CAAC,CAAC;AACG,QAAA,IAAA,CAAA,cAAc,GAAkC,IAAI,aAAa,CAEtE,CAAC,CAAC;QACM,IAAA,CAAA,oBAAoB,GAAoB,EAAE;QAC1C,IAAA,CAAA,kBAAkB,GAAmB,EAAE;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEhD,IAAA,CAAA,eAAe,GAAG,KAAK;QACvB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,cAAc,GAAG,KAAK;IAKnB;AAEH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;IACpC;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK;AAErC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAC7B;QACH;AAEA,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;IACnD;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;AAEjB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE;AAC/B,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,yBAAyB,EAAE;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IACE,OAAO,CAAC,SAAS,CAAC,EAAE,aAAa,KAAK,SAAS;YAC/C,OAAO,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,WAAW,KAAK,UAAU;AAC5D,YAAA,OAAO,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,OAAO;gBACvC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,OAAO,EAC1C;AACA,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,OAAO;YAC9D,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAElE,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,kBAAkB,GAAI,IAAI,CAAC,OAAO,CAAC,OAA0B,CAAC,KAAK,EAAE;YAC1E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACjD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;QAEA,IAAI,CAAC,oBAAoB,GAAI,IAAI,CAAC,OAAO,CAAC,OAA2B,CAAC,KAAK,EAAE;QAC7E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;AACpD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEU,sBAAsB,CAC9B,KAAmB,EACnB,KAAa,EAAA;QAEb,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAE9C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW;cACxD,KAAK,CAAC;cACN,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CACtD;IACP;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACzB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;AAE3E,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAyB;YACrD,IAAI,CAAC,kBAAkB,GAAG;AACvB,iBAAA,GAAG,CAAC,CAAC,KAAmB,MAAM;gBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC;AACpD,aAAA,CAAC;AACD,iBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACjD;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAA0B;QACvD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,KAAK,EAAE;YAC3C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACpD;QACF;QAEA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAqB,KAC/D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnD;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACtD;AAEA,IAAA,cAAc,CAAC,KAAqB,EAAA;AAClC,QAAA,OAAO,CAAC,KAAK,IAAI,EAAE;aAChB,SAAS,CAAC,KAAK;AACf,aAAA,OAAO,CAAC,kBAAkB,EAAE,EAAE;AAC9B,aAAA,WAAW,EAAE;IAClB;AAEA,IAAA,mBAAmB,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;IAEU,yBAAyB,GAAA;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;QAE3E,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YACtB;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,MAAM,KAC7D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnD,CAAC,MAAM;AAER,QAAA,IAAI,CAAC,eAAe;YAClB,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM;AACzE,QAAA,IAAI,CAAC,SAAS;YACZ,cAAc,GAAG,CAAC,IAAI,cAAc,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM;AAC3E,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,eAAe,CAAC,KAAwB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CACjD,CAAC,WAA4B,EAAE,KAAK,KAAK,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAC1E,EAAE,CACH;AACD,YAAA,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;YAC/D;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IAC9E;AAEA,IAAA,cAAc,CAAC,MAAoC,EAAA;QACjD,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM;IAC7D;AAEA,IAAA,eAAe,CAAC,MAAe,EAAA;QAC7B,QACE,CAAC,CAAC,MAAM;YACR,OAAO,MAAM,KAAK,QAAQ;AAC1B,YAAA,KAAK,IAAI,MAAM;YACf,OAAO,IAAI,MAAM;IAErB;IAEA,SAAS,CAAC,EAAwB,EAAE,EAAwB,EAAA;AAC1D,QAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE;IACjD;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IAC9E;AAEA,IAAA,UAAU,CAAC,KAAiB,EAAA;QAC1B,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;+GAjNW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAZnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,uBAAuB,EAAE;AACzD,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,8BAA8B;AACvC,gBAAA,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;AACpC,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7DL,4yIA+HA,4oSDvFM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,UAAA,EAAA,IAAA,EACnB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,kBAAkB,8ZAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,wBAAwB,6oBACxB,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACvB,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAcL,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA9BjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,iBAAiB;wBACjB,kBAAkB;wBAClB,aAAa;wBACb,eAAe;wBACf,wBAAwB;wBACxB,eAAe;wBACf,uBAAuB;wBACvB,YAAY;qBACb,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,EAAE,iBAAiB,EAAE,uBAAuB,EAAE;AACzD,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,8BAA8B;AACvC,4BAAA,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;AACpC,yBAAA;AACF,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,4yIAAA,EAAA,MAAA,EAAA,CAAA,qlSAAA,CAAA,EAAA;;sBAKjB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AEzEzC;;AAEG;;MCiBU,kBAAkB,CAAA;AAM7B,IAAA,WAAA,GAAA;QAHQ,IAAA,CAAA,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IAG9C;IAEf,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE,GAAG;AACX,oBAAA,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO;AACzC,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,CAAC,KAAK,KAAI;4BACrB,KAAK,CAAC,mBAAmB,EAAE;wBAC7B,CAAC;AACF,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,OAAO,EAAE,GAAG;oBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,YAAY,EAAE,IAAI,CAAC,MAAM;AAC1B,iBAAA;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU;AAC1C,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE;AACL,4BAAA,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAC3D,SAAS,CACV;AACD,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,UAAU,EAAE,MAAM;AACnB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE;AACL,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,UAAU,EAAE,MAAM;AACnB,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,GAAG,EAAE,GAAG;AACT,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,eAAe,EAAE,QAAQ;AACzB,oBAAA,MAAM,EAAE,GAAG;AACX,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE;wBACP,UAAU,EAAE,IAAI,CAAC,MAAM;AACxB,qBAAA;AACF,iBAAA;AACD,gBAAA,UAAU,EAAE;AACV,oBAAA;AACE,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,OAAO,EAAE;AACP,4BAAA,KAAK,EAAE;AACL,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,MAAM,EAAE,GAAG;AACZ,6BAAA;AACD,4BAAA,MAAM,EAAE;AACN,gCAAA,QAAQ,EAAE,QAAQ;AAClB,gCAAA,eAAe,EAAE,QAAQ;AACzB,gCAAA,MAAM,EAAE,GAAG;AACZ,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;aACF;QACH;IACF;+GAtGW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2HCnB/B,svBAsBA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,+ZAAE,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGtD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACE,YAAY,EAAA,OAAA,EAGb,CAAC,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,EAAA,UAAA,EACtD,IAAI,EAAA,QAAA,EAAA,svBAAA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA;;sBAGf;;;AEpBH;;AAEG;;MCSU,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX9B,wJAMA,EAAA,MAAA,EAAA,CAAA,wtBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEc,mBAAmB,yTAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGvC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAGhB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,cACrC,IAAI,EAAA,QAAA,EAAA,wJAAA,EAAA,MAAA,EAAA,CAAA,wtBAAA,CAAA,EAAA;;sBAGjB;;sBACA;;;AEbH;;AAEG;;ACFH,MAAM,sBAAsB,GAAG,6BAA6B;AAE5D,SAAS,WAAW,CAAC,IAAU,EAAA;IAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACtC;AAEM,SAAU,wBAAwB,CAAC,IAAU,EAAA;AACjD,IAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAChD,IAAA,MAAM,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACvD,MAAM,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,EAAE;AAEpC,IAAA,OAAO,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,IAAI,EAAE;AAClC;AAEM,SAAU,cAAc,CAAC,KAAc,EAAA;AAC3C,IAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,QAAA,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;IAC9D;AAEA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI;IACpD;AAEA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE;IACjC,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC;IACnE,IAAI,iBAAiB,EAAE;QACrB,MAAM,GAAG,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,iBAAiB;AAC7D,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;AAC9B,QAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;AAEjD,QAAA,IACE,UAAU,CAAC,WAAW,EAAE,KAAK,IAAI;AACjC,YAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,KAAK,GAAG,CAAC;AACnC,YAAA,UAAU,CAAC,OAAO,EAAE,KAAK,GAAG,EAC5B;AACA,YAAA,OAAO,UAAU;QACnB;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;AACzC,IAAA,OAAO,WAAW,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI;AACpD;AAEM,SAAU,WAAW,CAAC,KAAc,EAAA;AACxC,IAAA,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI;AACvC;AAEM,SAAU,oBAAoB,CAAC,QAAgB,EAAA;AAInD,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE;IAC1B,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAEjC,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE;IAC5B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;AAEjD,IAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;AAC/B;;AC/CO,MAAM,uBAAuB,GAAG;AACrC,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,YAAY;AACxB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;;MAwBU,cAAc,CAAA;AAYzB,IAAA,WAAA,CAA6B,GAAsB,EAAA;QAAtB,IAAA,CAAA,GAAG,GAAH,GAAG;AARf,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEvC,IAAA,CAAA,cAAc,GAAG,IAAI,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AACzC,SAAA,CAAC;IAIoD;IAEtD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAErD;QAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAElD,IAAI,CAAC,WAAW,CAAC;AACd,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACnC,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/B,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACnC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7C;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7C;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK;IAClC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAEpE,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,EAAE;YACjC;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,qBAAqB,CAAC,KAAc,EAAA;AAC1C,QAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;QAE3D,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;YAC7C;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,qBAAqB,CAAC,KAAkB,EAAA;QAC9C,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,EAAE;AACjC,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB;YAEA;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC;QAErD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,aAAa,EAAE;YAC5C;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC;AAC1C,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,WAAW,CAAC,MAA2B,EAAA;QACrC,MAAM,CAAC,KAAK,EAAE;IAChB;IAEQ,aAAa,CAAC,KAAkB,EAAE,MAAmB,EAAA;AAC3D,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,OAAO,EAAE;IAC7C;+GAvGW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EANd;AACT,YAAA,cAAc,EAAE;YAChB,wBAAwB,CAAC,uBAAuB,CAAC;AAClD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDH,wiDA8CA,EAAA,MAAA,EAAA,CAAA,woBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,o2BACnB,gBAAgB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,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,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,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,UAAA,EAAA,IAAA,EACb,cAAc,kYACd,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQd,cAAc,EAAA,UAAA,EAAA,CAAA;kBArB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,gBAAgB;wBAChB,mBAAmB;wBACnB,kBAAkB;wBAClB,aAAa;wBACb,cAAc;wBACd,uBAAuB;qBACxB,EAAA,SAAA,EACU;AACT,wBAAA,cAAc,EAAE;wBAChB,wBAAwB,CAAC,uBAAuB,CAAC;AAClD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,wiDAAA,EAAA,MAAA,EAAA,CAAA,woBAAA,CAAA,EAAA;;sBAGf;;sBACA;;;AE5DH;;AAEG;;ACkDI,MAAM,6BAA6B,GAAG;AAC3C,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,YAAY;AACxB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;;MAuBU,mBAAmB,CAAA;IAuB9B,WAAA,CACmB,IAAqB,EACrB,GAAsB,EAAA;QADtB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,GAAG,GAAH,GAAG;AArBL,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,eAAe,GAAG,EAAE;AACpB,QAAA,IAAA,CAAA,UAAU,GAAoC;AAC7D,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;SACd;QAEQ,IAAA,CAAA,cAAc,GAAyC,IAAI,SAAS,CAAC;AAC5E,YAAA,SAAS,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AAC7C,YAAA,OAAO,EAAE,IAAI,WAAW,CAAc,IAAI,CAAC;AAC5C,SAAA,CAAC;QAEO,IAAA,CAAA,WAAW,GAAwC,IAAI,SAAS,CAAC;AACxE,YAAA,SAAS,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC;AAC/C,YAAA,OAAO,EAAE,IAAI,WAAW,CAAgB,IAAI,CAAC;AAC9C,SAAA,CAAC;IAOC;AAEH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC;QAC9F;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAEtD;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,MAAM,IAAI,KAAK,CACb,CAAA,8CAAA,EAAiD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA,eAAA,CAAiB,CACnF;QACH;QAEA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAE9C,IAAI,CAAC,YAAY,CAAC;AACf,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9B,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,WAAW,CAAC;AACd,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;AACvC,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,cAAc,CAAC;AACjB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;AAC1C,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB;IACnD;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB;IACjD;AAEQ,IAAA,gBAAgB,CAAC,KAA6C,EAAA;AACpE,QAAA,MAAM,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC,UAAU;AAC1C,QAAA,MAAM,YAAY,GAAoC;YACpD,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B;AACD,QAAA,MAAM,eAAe,GAAqC;AACxD,YAAA,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC;AAC9C,YAAA,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;SAC3C;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AACrD,QAAA,IACE,cAAc,CAAC,SAAS,KAAK,YAAY,CAAC,SAAS;AACnD,YAAA,cAAc,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO,EAC/C;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACjE;QAEA,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AAC3D,QAAA,IACE,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC;AAC3E,YAAA,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EACvE;AACA,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACvE;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,yBAAyB,CAC/B,KAA+C,EAAA;AAE/C,QAAA,MAAM,SAAS,GAAoC;AACjD,YAAA,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;AAClC,YAAA,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;SAC/B;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;AAElC,QAAA,MAAM,mBAAmB,GAAqC;AAC5D,YAAA,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC;AAC9C,YAAA,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;SAC3C;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,4BAA4B,CAClC,KAAgD,EAAA;QAEhD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACtC;QACF;AAEA,QAAA,MAAM,SAAS,GAAoC;AACjD,YAAA,SAAS,EAAE,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC;AACpD,YAAA,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAAC;SACjD;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,kBAAkB,CAAC,SAA0C,EAAA;AACnE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AAE5C,QAAA,IACE,YAAY,EAAE,SAAS,KAAK,SAAS,CAAC,SAAS;AAC/C,YAAA,YAAY,EAAE,OAAO,KAAK,SAAS,CAAC,OAAO,EAC3C;YACA;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC;IACzC;IAEQ,aAAa,CAAC,KAAkB,EAAE,MAAmB,EAAA;AAC3D,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,OAAO,EAAE;IAC7C;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;SACd;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAClE,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;AACrC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;+GAhLW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EANnB;AACT,YAAA,cAAc,EAAE;YAChB,wBAAwB,CAAC,6BAA6B,CAAC;AACxD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjFH,u3CA2CA,EAAA,MAAA,EAAA,CAAA,guFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED2BI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,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,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,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,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,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,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,qLACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,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,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQL,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,gBAAgB;wBAChB,mBAAmB;wBACnB,kBAAkB;wBAClB,aAAa;wBACb,cAAc;qBACf,EAAA,SAAA,EACU;AACT,wBAAA,cAAc,EAAE;wBAChB,wBAAwB,CAAC,6BAA6B,CAAC;AACxD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,u3CAAA,EAAA,MAAA,EAAA,CAAA,guFAAA,CAAA,EAAA;;sBAGf;;sBACA;;;AEtFH;;AAEG;;MC0BU,mBAAmB,CAAA;AAS9B,IAAA,WAAA,CACkC,IAAS,EACjC,SAA4C,EAC5C,SAAuB,EAAA;QAFC,IAAA,CAAA,IAAI,GAAJ,IAAI;QAC5B,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,SAAS,GAAT,SAAS;AAVT,QAAA,IAAA,CAAA,WAAW,GAA6B,IAAI,YAAY,EAAc;QAGhF,IAAA,CAAA,MAAM,GAAY,KAAK;QAEvB,IAAA,CAAA,eAAe,GAAG,EAAE;IAMjB;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAC5D,CAAA,sBAAA,EAAyB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAA,CAAE,CACrD;QACH;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW;QACpD;IACF;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACnC;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;QAClB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACnC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACxC;AAtCW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAUpB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAVd,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BhC,s4BA0BA,EAAA,MAAA,EAAA,CAAA,owBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,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,EACb,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EAGd;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,YAAY;AACb,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,s4BAAA,EAAA,MAAA,EAAA,CAAA,owBAAA,CAAA,EAAA;;0BAYb,MAAM;2BAAC,eAAe;;sBATxB;;sBACA;;AAuCG,SAAU,UAAU,CAAC,MAAiB,EAAE,UAAsB,EAAE,MAAA,GAA0B,IAAI,eAAe,EAAE,EAAA;IACnH,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO;AACtC,IAAA,MAAM,CAAC,YAAY,GAAG,IAAI;AAC1B,IAAA,MAAM,CAAC,SAAS,GAAG,IAAI;AACvB,IAAA,MAAM,CAAC,UAAU,GAAG,cAAc;IAClC,MAAM,CAAC,IAAI,GAAG;QACZ,UAAU;KACX;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;AAE1D,IAAA,OAAO,SAAS,CAAC,WAAW,EAAE;AAChC;;AEjFA;;AAEG;;MC4BU,yBAAyB,CAAA;AASpC,IAAA,WAAA,CAA6B,GAAsB,EAAA;QAAtB,IAAA,CAAA,GAAG,GAAH,GAAG;AAFtB,QAAA,IAAA,CAAA,YAAY,GAA0B,IAAI,YAAY,EAAW;IAErB;IAEtD,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9C,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;AAEA,IAAA,cAAc,CAAC,OAAiB,EAAA;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAyB;IAChE;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpC;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAElD,IAAI,CAAC,aAAa,GAAG;YACnB,GAAG,IAAI,CAAC,OAAO;YACf,OAAO;SACR;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;IAC5D;AAEA,IAAA,UAAU,CACR,IAAuB,EACvB,aAAA,GAAwB,CAAC,EAAA;QAEzB,MAAM,OAAO,GAAoB,EAAE;AAEnC,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,IAAqB,KAAI;YACjC,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,aAAa;AACd,aAAA,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,CAAC,UAAU,CAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,CAAC,CAAC,EACzD,aAAa,GAAG,CAAC,CAClB,CACF;YACH;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;IAChB;IAEA,kBAAkB,CAChB,QAA2B,EAC3B,aAAqB,EAAA;QAErB,MAAM,OAAO,GAAoB,EAAE;AAEnC,QAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACpB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa;AACd,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,mBAAmB,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;+GAxFW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BtC,+NAOA,EAAA,MAAA,EAAA,CAAA,y7SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDoBc,YAAY,qIAAE,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGpC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WAGrB,CAAC,YAAY,EAAE,qBAAqB,CAAC,cAClC,IAAI,EAAA,QAAA,EAAA,+NAAA,EAAA,MAAA,EAAA,CAAA,y7SAAA,CAAA,EAAA;;sBAKjB;;sBACA;;sBAGA;;;AErCH;;AAEG;;MCSU,uBAAuB,CAAA;AAPpC,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,KAAK,GAAkB,IAAI;QAC3B,IAAA,CAAA,QAAQ,GAAkB,IAAI;AACxC,IAAA;+GAHY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXpC,sk0DA+BA,EAAA,MAAA,EAAA,CAAA,6YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBc,YAAY,gIAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE3B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAGV,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,sk0DAAA,EAAA,MAAA,EAAA,CAAA,6YAAA,CAAA,EAAA;;sBAGtC;;sBACA;;;AEbH;;AAEG;;MC8BU,kBAAkB,CAAA;AAnB/B,IAAA,WAAA,GAAA;AAuBY,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ;AAahE,IAAA;IAXC,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK;IACjC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;+GAhBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAHhB,CAAC,cAAc,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BjC,6sEA0EA,EAAA,MAAA,EAAA,CAAA,m3CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxDM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,kNACnB,gBAAgB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,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,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,IAAA,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,UAAA,EAAA,IAAA,EACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,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,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnB9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EAGb;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,kBAAkB;wBAClB,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,yBAAyB;wBACzB,uBAAuB;AACxB,qBAAA,EAAA,SAAA,EACU,CAAC,cAAc,EAAE,CAAC,cACjB,IAAI,EAAA,QAAA,EAAA,6sEAAA,EAAA,MAAA,EAAA,CAAA,m3CAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;sBACA;;;AEpCH;;AAEG;;MCsBU,gBAAgB,CAAA;AAK3B,IAAA,WAAA,CAA6B,IAAqB,EAAA;QAArB,IAAA,CAAA,IAAI,GAAJ,IAAI;AAFvB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAA2B;IAEjB;AAErD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;IACjC;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;IAClC;AAEA,IAAA,cAAc,CAAC,SAAiB,EAAA;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAyB;IACzD;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACnB;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAA6B,CAAC;IAC9E;+GA7BW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB7B,wiCAgCA,EAAA,MAAA,EAAA,CAAA,qPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,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,EACZ,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EAGf;wBACP,YAAY;wBACZ,eAAe;wBACf,iBAAiB;wBACjB,qBAAqB;wBACrB,kBAAkB;AACnB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,wiCAAA,EAAA,MAAA,EAAA,CAAA,qPAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;;AE3BH;;AAEG;;MCaU,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAWY,QAAA,IAAA,CAAA,cAAc,GAAgC,IAAI,YAAY,EAAiB;QAGzF,IAAA,CAAA,OAAO,GAAoB,EAAE;AAgB9B,IAAA;IAdC,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAA0B;IACxD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,OAAO,EAAE,OAA2B,IAAI,EAAE;QACjE;IACF;AAEA,IAAA,QAAQ,CAAC,WAA0B,EAAA;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,WAAW;QACjC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/C;+GAtBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,6MCfjC,ubAaA,EAAA,MAAA,EAAA,CAAA,uoDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,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,UAAA,EAAA,IAAA,EAAE,mBAAmB,yTAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,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,EAAAA,IAAA,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,CAAA,EAAA,CAAA,CAAA;;4FAGlD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACI,mBAAmB,EAAA,OAAA,EAGpB,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC,EAAA,UAAA,EAChD,IAAI,EAAA,QAAA,EAAA,ubAAA,EAAA,MAAA,EAAA,CAAA,uoDAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBAEA;;;AEnBH;;AAEG;;MCaU,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAWY,QAAA,IAAA,CAAA,cAAc,GAAgC,IAAI,YAAY,EAAiB;QAGzF,IAAA,CAAA,OAAO,GAAoB,EAAE;AAgB9B,IAAA;IAdC,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAA0B;IACxD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,OAAO,EAAE,OAA2B,IAAI,EAAE;QACjE;IACF;AAEA,IAAA,QAAQ,CAAC,WAA0B,EAAA;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,WAAW;QACjC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/C;+GAtBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,6MCfjC,mZASA,EAAA,MAAA,EAAA,CAAA,+YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,yTAAE,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGxD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;+BACI,mBAAmB,EAAA,OAAA,EAGpB,CAAC,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,EAAA,UAAA,EACtD,IAAI,EAAA,QAAA,EAAA,mZAAA,EAAA,MAAA,EAAA,CAAA,+YAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBAEA;;;AEnBH;;AAEG;;MCoBU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBlC,glCAmCA,EAAA,MAAA,EAAA,CAAA,+hDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,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,UAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,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,imBACd,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIhB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAGhB;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,uBAAuB;AACxB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,glCAAA,EAAA,MAAA,EAAA,CAAA,+hDAAA,CAAA,EAAA;;sBAGjB;;sBACA;;;AExBH;;AAEG;;MCqCU,iBAAiB,CAAA;AAlB9B,IAAA,WAAA,GAAA;QAoBW,IAAA,CAAA,QAAQ,GAAkB,EAAE;AAC3B,QAAA,IAAA,CAAA,OAAO,GAA8B,IAAI,YAAY,EAAe;AAoB/E,IAAA;AAlBC,IAAA,cAAc,CAAC,OAAoB,EAAA;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAyB;IAChE;AAEA,IAAA,gBAAgB,CAAC,WAA0B,EAAA;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;QAChD,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;QACxC;IACF;AAEA,IAAA,UAAU,CAAC,OAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;IAEA,mBAAmB,CAAC,OAAoB,EAAE,KAAc,EAAA;AACtD,QAAA,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC;IACnC;+GAtBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,gKCvC9B,miEA6DA,EAAA,MAAA,EAAA,CAAA,+uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlCM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,cAAc,8FACd,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,qBAAqB,wJACrB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,oBAAoB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,oBAAoB,+HACpB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAId,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,eAAA,EAGJ,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,cAAc;wBACd,mBAAmB;wBACnB,kBAAkB;wBAClB,qBAAqB;wBACrB,yBAAyB;wBACzB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;AACtB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,miEAAA,EAAA,MAAA,EAAA,CAAA,+uBAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;;AE1CH;;AAEG;;MCoCU,wBAAwB,CAAA;AAXrC,IAAA,WAAA,GAAA;QAYW,IAAA,CAAA,WAAW,GAAsB,EAAE;QACnC,IAAA,CAAA,sBAAsB,GAAG,KAAK;AAC7B,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ;AAIrE,QAAA,IAAA,CAAA,UAAU,GACR,IAAI,kBAAkB,CAAiB,EAAE,CAAC;QAC5C,IAAA,CAAA,gBAAgB,GAAa,EAAE;QAC/B,IAAA,CAAA,OAAO,GAAkB,EAAE;QAC3B,IAAA,CAAA,IAAI,GAAqB,EAAE;AA+J5B,IAAA;IA7JC,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IAClC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,wBAAwB,CAAC,EAAE;YAC/D,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,WAAW,CAAC,KAAa,EAAE,MAAmB,EAAA;AAC5C,QAAA,OAAO,GAAG,KAAK,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,EAAE;IACjC;AAEA,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;IAEA,gBAAgB,CACd,GAAmB,EACnB,GAAW,EAAA;AAEX,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS;IACjE;IAEA,0BAA0B,CACxB,GAAmB,EACnB,GAAW,EAAA;AAEX,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc;IAC/D;IAEA,iBAAiB,CAAC,GAAmB,EAAE,GAAW,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG;IAC7D;AAEA,IAAA,eAAe,CAAC,GAAmB,EAAA;AACjC,QAAA,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI;IAC7D;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACrC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACpC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC;QAChE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAChC,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,CACpC,GAAmB,EACnB,SAAiB,KACG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC;AACvD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAClC;IACF;IAEQ,YAAY,CAAC,GAAmB,EAAE,SAAiB,EAAA;AACzD,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,gBAAgB,IAAI,CAAC;QAC1D;AAEA,QAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,EAAE;IACzE;AAEQ,IAAA,0BAA0B,CAChC,KAA0B,EAAA;AAE1B,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,WAAW,IAAI,KAAK;IAC5E;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,OAAO,GAAkB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACxE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,CAAC,CAAC;AAE9C,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC/D,YAAA,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;QAC7B;QAEA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;YACtC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS,KAAI;gBAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC1B,OAAO,CAAC,IAAI,CAAC;wBACX,GAAG;wBACH,KAAK,EAAE,SAAS,CAAC,aAAa;wBAC9B,cAAc,EAAE,SAAS,CAAC,cAAc;AACxC,wBAAA,IAAI,EAAE,IAAI;AACX,qBAAA,CAAC;AACF,oBAAA,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;gBACvB;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IAChB;IAEQ,iBAAiB,GAAA;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AACnC,YAAA,MAAM,QAAQ,GAAmB;AAC/B,gBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;AACzB,gBAAA,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG;AACvB,gBAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;aAChC;YAED,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,SAAS,KAAI;gBACrC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,GAAG;AACrD,oBAAA,KAAK,EAAE;AACL,wBAAA,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;AAC/C,wBAAA,cAAc,EAAE,IAAI,CAAC,uCAAuC,CAAC,SAAS,CAAC;AACxE,qBAAA;oBACD,SAAS,EAAE,SAAS,CAAC,SAAS;iBAC/B;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,YAAY,CAAC,aAAqB,EAAA;AACxC,QAAA,OAAO,aAAa,CAAC,WAAW,EAAE;IACpC;AAEQ,IAAA,wBAAwB,CAC9B,SAAoB,EAAA;QAEpB,QACE,SAAS,CAAC,OAAO;AACjB,YAAA,SAAS,CAAC,OAAO;AACjB,YAAA,SAAS,CAAC,SAAS;AACnB,YAAA,SAAS,CAAC,UAAU;YACpB,SAAS,CAAC,KAAK;IAEnB;AAEQ,IAAA,uCAAuC,CAC7C,SAAoB,EAAA;AAEpB,QAAA,IAAI,SAAS,CAAC,cAAc,EAAE;YAC5B,OAAO,SAAS,CAAC,cAAc;QACjC;AAEA,QAAA,IACE,SAAS,CAAC,gBAAgB,KAAK,SAAS;YACxC,CAAC,SAAS,CAAC,kBAAkB;AAC7B,YAAA,CAAC,SAAS,CAAC,mBAAmB,EAC9B;AACA,YAAA,OAAO,SAAS;QAClB;QAEA,OAAO;YACL,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;YAC5C,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;YAChD,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;SACnD;IACH;+GAzKW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKxB,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CpB,g3FA+EA,EAAA,MAAA,EAAA,CAAA,uyKAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5CY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,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,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGzD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,eAAA,EAMZ,uBAAuB,CAAC,MAAM,WACtC,CAAC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC,cACzD,IAAI,EAAA,QAAA,EAAA,g3FAAA,EAAA,MAAA,EAAA,CAAA,uyKAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGf;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,OAAO;;;ME9BP,aAAa,CAAA;IAGxB,WAAA,CACU,eAAgC,EAChC,YAA0B,EAAA;QAD1B,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,YAAY,GAAZ,YAAY;IACnB;IAEH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAI,CAAC;IACrC;AAEA,IAAA,mBAAmB,CAAC,GAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAC7B,GAAG,EACH,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,CAAA,mBAAA,EAAsB,GAAG,CAAA,IAAA,CAAM,CAAC,CAClF;IACH;+GAjBW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1B,wHAEA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSc,YAAY,oIAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,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,CAAA,EAAA,CAAA,CAAA;;4FAE5B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,wHAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA;;sBAGvC;;;AEdH;;AAEG;;MCuBU,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,KAAK,GAAe,EAAE;AAErB,QAAA,IAAA,CAAA,QAAQ,GAChB,IAAI,YAAY,EAA4B;AAU/C,IAAA;IAPC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB;AAEA,IAAA,SAAS,CAAC,IAAc,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9D;+GAbW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKjB,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B3B,qjBAoBA,sYDEc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,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,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAG3C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACI,WAAW,EAAA,OAAA,EAGZ,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,EAAA,UAAA,EACzC,IAAI,EAAA,QAAA,EAAA,qjBAAA,EAAA,MAAA,EAAA,CAAA,+UAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,cAAc;;;AE9B3B;;AAEG;;MCSU,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,OAAO,GAAgC,IAAI,YAAY,EAAiB;AAQnF,IAAA;AAJC,IAAA,IAAI,CAAC,MAAqB,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B;+GAVW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXjC,mQAYA,EAAA,MAAA,EAAA,CAAA,4eAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,UAAA,EAGb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,mQAAA,EAAA,MAAA,EAAA,CAAA,4eAAA,CAAA,EAAA;;sBAGxB;;sBACA;;sBACA;;;AEdH;;AAEG;;MC8BU,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;QASW,IAAA,CAAA,SAAS,GAAyB,EAAE;AACnC,QAAA,IAAA,CAAA,OAAO,GAAyB,IAAI,YAAY,EAAU;AAC1D,QAAA,IAAA,CAAA,QAAQ,GAChB,IAAI,YAAY,EAA+B;QAEjD,IAAA,CAAA,EAAE,GAAW,EAAE;QACf,IAAA,CAAA,WAAW,GAAW,EAAE;QACxB,IAAA,CAAA,IAAI,GAAW,EAAE;AAiDlB,IAAA;AA/CC,IAAA,IAAI,IAAI,GAAA;QACN,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzB;QAEA,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;QACvB;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;QAEtB,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IACvB;AAEA,IAAA,OAAO,CAAC,MAAc,EAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;QAEtB,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,MAAM;AACN,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5B;+GAzDW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,kNChChC,izBA0BA,EAAA,MAAA,EAAA,CAAA,mmCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,UAAA,EAAA,IAAA,EAAE,aAAa,qLAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAG3C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACI,kBAAkB,EAAA,OAAA,EAGnB,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,CAAC,EAAA,UAAA,EACzC,IAAI,EAAA,QAAA,EAAA,izBAAA,EAAA,MAAA,EAAA,CAAA,mmCAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;sBACA;;;AEpCH;;AAEG;;MCSU,wBAAwB,CAAA;AAPrC,IAAA,WAAA,GAAA;QASW,IAAA,CAAA,YAAY,GAAY,IAAI;AACtC,IAAA;+GAHY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXrC,2WAYA,EAAA,MAAA,EAAA,CAAA,4eAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDJY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGX,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAGnB,CAAC,YAAY,CAAC,cACX,IAAI,EAAA,QAAA,EAAA,2WAAA,EAAA,MAAA,EAAA,CAAA,4eAAA,CAAA,EAAA;;sBAGf;;sBACA;;;MEOU,kBAAkB,CAAA;AAI7B,IAAA,WAAA,CAA6B,IAAqB,EAAA;QAArB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAFxB,IAAA,CAAA,eAAe,GAAY,IAAI;IAEa;AAErD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY;IAC3C;AAEA,IAAA,kBAAkB,CAAC,KAAY,EAAA;QAC7B,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,cAAc,EAAE,KAAK,CAAC,cAAe;SACtC;IACH;AAEA,IAAA,kBAAkB,CAAC,KAAY,EAAA;QAC7B,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACxB,YAAA,gBAAgB,EAAE,KAAK,CAAC,cAAc,EAAE,gBAAgB;YACxD,KAAK,EAAE,KAAK,CAAC,UAAW;SACzB;IACH;AAEA,IAAA,UAAU,CAAC,SAAoB,EAAA;AAC7B,QAAA,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU;IAC3C;AAEA,IAAA,cAAc,CAAC,KAAwB,EAAA;AACrC,QAAA,OAAO,KAAK,EAAE,YAAY,KAAK,SAAS;IAC1C;AAEA,IAAA,gBAAgB,CAAC,UAAsB,EAAA;QACrC,IAAI,GAAG,GAAG,EAAE;QACZ,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAChD,GAAG,GAAG,YAAY;QACpB;QACA,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACpD,GAAG,GAAG,OAAO;QACf;QACA,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YACxD,GAAG,GAAG,WAAW;QACnB;QACA,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACnD,GAAG,GAAG,WAAW;QACnB;QACA,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACnD,GAAG,GAAG,SAAS;QACjB;QACA,OAAO,CAAA,oBAAA,EAAuB,GAAG,CAAA,IAAA,CAAM;IACzC;+GAvDW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,oICpB/B,mjIAiGA,EAAA,MAAA,EAAA,CAAA,+7EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnFI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,kCAAkC,6IAClC,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,kCAAkC;wBAClC,wBAAwB;AACzB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,mjIAAA,EAAA,MAAA,EAAA,CAAA,+7EAAA,CAAA,EAAA;;sBAGf;;sBACA;;;MEdU,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wECRjC,iCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,IAAI,EAAA,QAAA,EAAA,iCAAA,EAAA;;;AENlB;;AAEG;;MCWU,oBAAoB,CAAA;IAO/B,WAAA,CAAoB,UAAsB,EAAU,GAAsB,EAAA;QAAtD,IAAA,CAAA,UAAU,GAAV,UAAU;QAAsB,IAAA,CAAA,GAAG,GAAH,GAAG;QAHhD,IAAA,CAAA,OAAO,GAAG,EAAE;AACF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAE6B;IAEtE,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC;AACF,iBAAA,GAAG,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,IAAI,CAAA,IAAA,CAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;AAC7D,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,iBAAA,SAAS,CAAC,CAAC,KAAa,KAAI;gBAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACrC,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,YAAA,CAAC,CAAC;YACJ;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,GAAG,CAAA,uBAAA,EAA0B,IAAI,CAAC,IAAI,CAAA,WAAA,EAAc,IAAI,CAAC,IAAI,CAAA,IAAA,CAAM;AAC/E,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AACQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO;aACJ,UAAU,CAAC,gBAAgB,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,KAAK,GAAG;aACnD,UAAU,CAAC,gBAAgB,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,KAAK,GAAG;aACnD,UAAU,CAAC,gBAAgB,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,KAAK,GAAG;aACnD,UAAU,CAAC,kBAAkB,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,GAAG;aACvD,UAAU,CAAC,kBAAkB,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,GAAG;aACvD,UAAU,CAAC,kBAAkB,EAAE,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC;IAC7D;+GAzCW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjC,+FACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDUc,YAAY,gIAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE3B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAGb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,+FAAA,EAAA;;sBAGtC;;sBACA;;;AEfH;;AAEG;;ACEG,SAAU,sBAAsB,CACpC,IAAqB,EACrB,QAAkB,EAAA;AAElB,IAAA,MAAM,mBAAmB,GAAG,IAAI,gBAAgB,EAAE;IAElD,MAAM,CACJ,MAAK;QACH,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;AAEnD,QAAA,mBAAmB,CAAC,iBAAiB,GAAG,cAAc,CAAC,YAAY;AACnE,QAAA,mBAAmB,CAAC,aAAa,GAAG,cAAc,CAAC,QAAQ;AAC3D,QAAA,mBAAmB,CAAC,iBAAiB,GAAG,cAAc,CAAC,YAAY;AACnE,QAAA,mBAAmB,CAAC,aAAa,GAAG,cAAc,CAAC,iBAAiB;AACpE,QAAA,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE;AACpC,IAAA,CAAC,EACD,EAAE,QAAQ,EAAE,CACb;AAED,IAAA,OAAO,mBAAmB;AAC5B;;MC8Da,kBAAkB,CAAA;IAyC7B,WAAA,CACU,GAAsB,EACb,IAAqB,EAAA;QAD9B,IAAA,CAAA,GAAG,GAAH,GAAG;QACM,IAAA,CAAA,IAAI,GAAJ,IAAI;QA1Cd,IAAA,CAAA,OAAO,GAAkB,EAAE;QAC3B,IAAA,CAAA,IAAI,GAAmB,EAAE;QACzB,IAAA,CAAA,SAAS,GAAW,CAAC;QACrB,IAAA,CAAA,QAAQ,GAAW,CAAC;QACpB,IAAA,CAAA,UAAU,GAAW,CAAC;QACtB,IAAA,CAAA,UAAU,GAAW,CAAC;QAKtB,IAAA,CAAA,SAAS,GAAe,EAAE;QAE1B,IAAA,CAAA,aAAa,GAAY,IAAI;QAC7B,IAAA,CAAA,MAAM,GAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;QACzD,IAAA,CAAA,KAAK,GAAoB,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;QACtD,IAAA,CAAA,wBAAwB,GAAG,IAAI;QAC/B,IAAA,CAAA,uBAAuB,GAAG,IAAI;QAC9B,IAAA,CAAA,4BAA4B,GAAG,CAAC;QAChC,IAAA,CAAA,0BAA0B,GAAG,KAAK;AAKjC,QAAA,IAAA,CAAA,QAAQ,GAAgC,IAAI,YAAY,EAAiB;AACzE,QAAA,IAAA,CAAA,YAAY,GACpB,IAAI,YAAY,EAAsB;AAC9B,QAAA,IAAA,CAAA,YAAY,GAA4B,IAAI,YAAY,EAAa;AACrE,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ;AAKrE,QAAA,IAAA,CAAA,UAAU,GACR,IAAI,kBAAkB,CAAe,EAAE,CAAC;QAC1C,IAAA,CAAA,gBAAgB,GAAa,EAAE;QAE/B,IAAA,CAAA,mBAAmB,GAAG,IAAI;AACT,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAM7C;AAEH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;IACpC;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;IACxC;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;IAClD;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU;IACxD;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI;IACtE;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5C,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC;IAC/D;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AAC9D,YAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;gBACnB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY;YAC1C;AACA,YAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY;YAChD;YAEA,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,mBAAmB,EAAE;YAC5B;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;QAEA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YAClD,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACnF;AACA,QAAA,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE;IAC1B;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEA,WAAW,CAAC,KAAa,EAAE,MAAmB,EAAA;QAC5C,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAA,CAAE;IACjD;AAEA,IAAA,sBAAsB,CAAC,MAAmB,EAAA;AACxC,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE;YAChB,OAAO,MAAM,CAAC,KAAK;QACrB;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACxB,YAAA,OAAO,MAAM;QACf;QAEA,OAAO,CAAA,EAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,CAAA,CAAG;IACxC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE;QAE7C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3C;QACF;AAEA,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,aAAa,CAAC;AACjD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;AAC3D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,CAChC,IAAkB,EAClB,MAAc,KACH;AACX,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI;AAC7B,iBAAA,MAAM,CAAC,CAAC,WAAW,EAAE,GAAG,KAAI;AAC3B,gBAAA,OAAO,CAAA,EAAG,WAAW,CAAA,EAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;YAC3D,CAAC,EAAE,EAAE;AACJ,iBAAA,IAAI;AACJ,iBAAA,WAAW,EAAE;YAEhB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,CAAC;IACH;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM;YAC3C,OAAO,WAAW,KAAK,OAAO;QAChC;AACA,QAAA,OAAO,KAAK;IACd;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;gBACtB,IAAI,CAAC,iBAAiB,EAAE;YAC1B;iBAAO;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClE,IAAI,CAAC,iBAAiB,EAAE;YAC1B;QACF;IACF;AAEA,IAAA,aAAa,CAAC,GAAkB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,OAAO,CAAA,EAAG,IAAI,CAAC,aAAa,EAAE,GAAG,UAAU,GAAG,QAAQ,MAAM;YAC9D;YACA,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC;YAC3E,OAAO,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,QAAQ,CAAA,KAAA,EAAQ,WAAW,EAAE;QACvF;AACA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,QAAQ,CAAC,MAAmB,EAAA;AAC1B,QAAA,IAAI,MAAM,CAAC,IAAI,EAAE;AACf,YAAA,MAAM,IAAI,GAAS,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE;YAE3D,IACE,IAAI,CAAC,WAAW;AAChB,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG;AACtC,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,KAAK,KAAK,EACpC;AACA,gBAAA,IAAI,CAAC,SAAS,GAAG,MAAM;YACzB;AAEA,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7B;IACF;AAEA,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;IAEA,YAAY,CAAC,GAAiB,EAAE,MAAc,EAAA;AAC5C,QAAA,MAAM,OAAO,GAAkB,EAAE,GAAG,EAAE,MAAM,EAAE;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B;AAEA,IAAA,eAAe,CAAC,GAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC9B;iBAAO;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;YAC5B;YACA,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,MAAM,YAAY,GAAuB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBAC3E,OAAO,EAAE,GAAG,EAAE;AAChB,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;QACtC;IACF;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAkB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAExE,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;IAEA,YAAY,CAAC,OAAsB,EAAE,GAAW,EAAA;AAC9C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC;IACrD;IAEA,iBAAiB,GAAA;QACf,MAAM,MAAM,GAAmB,EAAE;AAEjC,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM;IACpB;IAEA,SAAS,CAAC,MAAmB,EAAE,GAAiB,EAAA;AAC9C,QAAA,OAAO,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;IAClE;IAEA,YAAY,CAAC,MAAmB,EAAE,GAAiB,EAAA;AACjD,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3E;IAEA,cAAc,CAAC,MAAmB,EAAE,GAAiB,EAAA;AACnD,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;IAC7E;IAEA,YAAY,CAAC,MAAmB,EAAE,GAAiB,EAAA;AACjD,QAAA,IACE,MAAM,CAAC,GAAG,KAAK,MAAM;YACrB,MAAM,CAAC,GAAG,KAAK,KAAK;AACpB,YAAA,MAAM,CAAC,GAAG,KAAK,SAAS,EACxB;AACA,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI;AACF,YAAA,OAAO,gBAAgB;QACzB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,EAAE;QACX;IACF;IAEA,SAAS,CAAC,MAAmB,EAAE,GAAiB,EAAA;AAC9C,QAAA,IACE,MAAM,CAAC,GAAG,KAAK,MAAM;YACrB,MAAM,CAAC,GAAG,KAAK,KAAK;AACpB,YAAA,MAAM,CAAC,GAAG,KAAK,SAAS,EACxB;AACA,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAC9B,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EACrC,qBAAqB,CACtB;QACH;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,EAAE;QACX;IACF;IAEA,gBAAgB,CAAC,MAAmB,EAAE,GAAiB,EAAA;AACrD,QAAA,IACE,MAAM,CAAC,GAAG,KAAK,MAAM;YACrB,MAAM,CAAC,GAAG,KAAK,KAAK;AACpB,YAAA,MAAM,CAAC,GAAG,KAAK,SAAS,EACxB;AACA,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAC9B,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EACrC,yBAAyB,CAC1B;QACH;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,EAAE;QACX;IACF;AAEA,IAAA,QAAQ,CAAC,GAAuC,EAAA;AAC9C,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,EAAE,EAAE;AACrE,gBAAA,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG;YACxB;AACA,YAAA,OAAO,GAAG;QACZ;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,GAAG;QACZ;IACF;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB;IAEA,kBAAkB,CAAC,MAAmB,EAAE,GAAiB,EAAA;QACvD,OAAO,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC3E;IAEA,YAAY,CAAC,MAAmB,EAAE,GAAiB,EAAA;QACjD,OAAO,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IAC/E;AAEA,IAAA,cAAc,CAAC,MAAmB,EAAE,GAAiB,EAAE,GAAW,EAAA;QAChE,IACE,MAAM,EAAE,KAAK;AACb,YAAA,GAAG,EAAE,aAAa;YAClB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAChC;AACA,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,cAAc,CAAC,MAAmB,EAAE,GAAiB,EAAE,GAAW,EAAA;QAChE,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;QAChD;AAAO,aAAA,IAAI,MAAM,EAAE,KAAK,EAAE;YACxB,OAAO,MAAM,CAAC,KAAK;QACrB;AAAO,aAAA,IAAI,GAAG,EAAE,aAAa,EAAE;YAC7B,OAAO,GAAG,CAAC,aAAa;QAC1B;AACA,QAAA,OAAO,EAAE;IACX;IAEA,iBAAiB,CAAC,GAAiB,EAAE,GAAW,EAAA;AAC9C,QAAA,OAAO,GAAG,CAAC,UAAU,EAAE,GAAG,KAAK,GAAG;IACpC;IAEA,iBAAiB,CAAC,GAAiB,EAAE,GAAW,EAAA;AAC9C,QAAA,OAAO,GAAG,CAAC,UAAU,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE;IACjE;AAEA,IAAA,UAAU,CAAC,QAAkC,EAAA;QAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QACnD;IACF;AAEA,IAAA,iBAAiB,CAAC,GAA6B,EAAA;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;IAC1C;AAEA,IAAA,YAAY,CAAC,GAA6B,EAAA;QACxC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC;IAC7C;AAEA,IAAA,cAAc,CAAC,GAA6B,EAAA;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC;AAC1D,QAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAClE;IAEA,cAAc,CAAC,MAAmB,EAAE,GAAiB,EAAA;AACnD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK;QAEnC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,GAAG;QACZ;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;AAElD,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG;QACrC;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG;QAC7B;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG;QACpF;AAEA,QAAA,OAAO,GAAG;IACZ;IAEA,cAAc,CAAC,GAAiB,EAAE,GAAW,EAAA;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;QAE3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,OAAO,EAAE;QACX;QAEA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC1D,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE;QACnB;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC9B,OAAO,KAAK,GAAG,MAAM,GAAG,OAAO;QACjC;AAEA,QAAA,OAAO,EAAE;IACX;IAEA,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtE;IAEA,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnE;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IACpD;IAEQ,cAAc,CAAC,GAAiB,EAAE,GAAW,EAAA;AACnD,QAAA,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB;IAEQ,eAAe,CACrB,GAAiB,EACjB,GAAW,EAAA;QAEX,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;AAE3C,QAAA,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/D,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,OAAO,KAAgC;IACzC;IAEQ,oBAAoB,CAC1B,KAA0C,EAC1C,GAAW,EAAA;AAEX,QAAA,MAAM,WAAW,GAAG,KAAK,GAAG,GAAG,CAAC;AAChC,QAAA,OAAO,OAAO,WAAW,KAAK,QAAQ,GAAG,WAAW,GAAG,EAAE;IAC3D;IAEQ,cAAc,CAAC,GAAiB,EAAE,GAAW,EAAA;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;AAE3C,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;YAC9B,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC;QACtB;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW;QACpD;AAEA,QAAA,OAAO,CAAC;IACV;AAEQ,IAAA,cAAc,CAAC,KAAc,EAAA;QACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,OAAO,EAAE;QACX;QAEA,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,QAAQ;AACzB,YAAA,OAAO,KAAK,KAAK,SAAS,EAC1B;AACA,YAAA,OAAO,GAAG,KAAK,CAAA,CAAE,CAAC,WAAW,EAAE;QACjC;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACjE;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAChF;AAEA,QAAA,OAAO,EAAE;IACX;IAEQ,kBAAkB,CACxB,GAA6B,EAC7B,GAAuB,EAAA;AAEvB,QAAA,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;QAExB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAuB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxE;AAEQ,IAAA,UAAU,CAAC,KAAc,EAAA;QAC/B,QACE,CAAC,CAAC,KAAK;YACP,OAAO,KAAK,KAAK,QAAQ;AACzB,YAAA,QAAQ,IAAI,KAAK;YACjB,MAAM,IAAI,KAAK;IAEnB;AAEQ,IAAA,cAAc,CAAC,KAAc,EAAA;AACnC,QAAA,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACtE;+GAhiBW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAThB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,UAAU,EAAE,sBAAsB;AAClC,gBAAA,IAAI,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC;AAClC,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAwBQ,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACd,QAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQR,YAAY,2BAAU,IAAI,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC1B,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrHpB,u+jBA4ZA,EAAA,MAAA,EAAA,CAAA,u8TAAA,EAAA,yyCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7VM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,YAAY,kRACZ,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,iBAAiB,mbACjB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,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,UAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,yBAAyB,wRACzB,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAWL,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhC9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,eAAA,EAML,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,YAAY;wBACZ,iBAAiB;wBACjB,oBAAoB;wBACpB,uBAAuB;wBACvB,eAAe;wBACf,iBAAiB;wBACjB,aAAa;wBACb,kBAAkB;wBAClB,aAAa;wBACb,cAAc;wBACd,yBAAyB;wBACzB,YAAY;qBACb,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,UAAU,EAAE,sBAAsB;AAClC,4BAAA,IAAI,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC;AAClC,yBAAA;AACF,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,u+jBAAA,EAAA,MAAA,EAAA,CAAA,u8TAAA,EAAA,yyCAAA,CAAA,EAAA;;sBAGjB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,cAAc;;sBACxB,SAAS;uBAAC,QAAQ;;sBAElB;;sBACA;;sBAEA;;sBACA;;sBAEA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;;sBACtC,SAAS;uBAAC,OAAO;;;AErHpB;;AAEG;;MCcU,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,qBAAqB,GAA2B,EAAE;QAC3D,IAAA,CAAA,aAAa,GAAY,KAAK;QAC9B,IAAA,CAAA,cAAc,GAAY,KAAK;QAC/B,IAAA,CAAA,qBAAqB,GAAa,EAAE;QACpC,IAAA,CAAA,wBAAwB,GAAa,EAAE;AAsCxC,IAAA;IApCC,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,uBAAuB,CAAC,EAAE;YACpC,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAClD,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CACjD;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CACnD,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB,CACtC;IACH;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aAC/B,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB;AAC5C,aAAA,GAAG,CACF,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,KACnB,CAAA,EAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAA,GAAA,EAAM,MAAM,CAAC,IAAI,IAAI,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAA,CAAE,CAC7F;AAEH,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;aAClC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,gBAAgB;AAC3C,aAAA,GAAG,CACF,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,KACnB,CAAA,EAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAA,GAAA,EAAM,MAAM,CAAC,IAAI,IAAI,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAA,CAAE,CAC7F;IACL;+GA1CW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBjC,6hBAeA,EAAA,MAAA,EAAA,CAAA,gZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,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,CAAA,EAAA,CAAA,CAAA;;4FAGb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EAGf,CAAC,YAAY,CAAC,cACX,IAAI,EAAA,QAAA,EAAA,6hBAAA,EAAA,MAAA,EAAA,CAAA,gZAAA,CAAA,EAAA;;sBAGjB;;;AEjBH;;AAEG;;MCkCU,kCAAkC,CAAA;AAU7C,IAAA,WAAA,CAA6B,IAAqB,EAAA;QAArB,IAAA,CAAA,IAAI,GAAJ,IAAI;QARxB,IAAA,CAAA,eAAe,GAAY,IAAI;QAC/B,IAAA,CAAA,YAAY,GAAY,IAAI;QAC5B,IAAA,CAAA,QAAQ,GAAY,IAAI;AAI1B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAU;IAEkB;AAErD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IAChC;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY;IAC3C;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;QAC3B;aAAO;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QAC1B;IACF;AAEA,IAAA,kBAAkB,CAAC,KAAY,EAAA;QAC7B,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,cAAc,EAAE,KAAK,CAAC,cAAe;SACtC;IACH;AAEA,IAAA,kBAAkB,CAAC,KAAY,EAAA;QAC7B,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACxB,YAAA,gBAAgB,EAAE,KAAK,CAAC,cAAc,EAAE,gBAAgB;YACxD,KAAK,EAAE,KAAK,CAAC,UAAW;SACzB;IACH;AAEA,IAAA,UAAU,CAAC,SAAoB,EAAA;AAC7B,QAAA,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU;IAC3C;AAEA,IAAA,cAAc,CAAC,KAAwB,EAAA;AACrC,QAAA,OAAO,KAAK,EAAE,YAAY,KAAK,SAAS;IAC1C;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,gBAAgB,CAAC,UAAsB,EAAA;QACrC,IAAI,GAAG,GAAG,EAAE;QACZ,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAChD,GAAG,GAAG,YAAY;QACpB;QACA,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACpD,GAAG,GAAG,OAAO;QACf;QACA,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;YACxD,GAAG,GAAG,WAAW;QACnB;QACA,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACnD,GAAG,GAAG,WAAW;QACnB;QACA,IAAI,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACnD,GAAG,GAAG,SAAS;QACjB;AAEA,QAAA,IAAI,GAAG,KAAK,EAAE,EAAE;YACd,OAAO,CAAA,oBAAA,EAAuB,GAAG,CAAA,IAAA,CAAM;QACzC;AACA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,yBAAyB,CAAC,KAAY,EAAA;QACpC,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,SAAS;AACrB,YAAA,KAAK,EAAE,KAAK,CAAC,UAAW,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM;gBAC3C,IAAI,EAAE,SAAS,CAAC,aAAa;gBAC7B,QAAQ,EAAE,SAAS,CAAC,UAAU;AAC9B,gBAAA,gBAAgB,EAAE,SAAS,CAAC,cAAc,EAAE,gBAAgB;AAC5D,gBAAA,kBAAkB,EAAE,SAAS,CAAC,cAAc,EAAE,kBAAkB;AAChE,gBAAA,mBAAmB,EAAE,SAAS,CAAC,cAAc,EAAE,mBAAmB;AACnE,aAAA,CAAC,CAAC;SACJ;IACH;+GAhGW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpC/C,i7KA+HA,EAAA,MAAA,EAAA,CAAA,+nKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnGI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,kCAAkC,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIf,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAd9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,eAAA,EAGtB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,0BAA0B;wBAC1B,kCAAkC;wBAClC,wBAAwB;AACzB,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,QAAA,EAAA,i7KAAA,EAAA,MAAA,EAAA,CAAA,+nKAAA,CAAA,EAAA;;sBAGf;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,iBAAiB;;;AE1C9B;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"mapa-library-ui.mjs","sources":["../../../projects/mapa-library-ui/src/lib/core/elements/element-base.ts","../../../projects/mapa-library-ui/src/lib/core/elements/dropdown.ts","../../../projects/mapa-library-ui/src/lib/core/elements/dropdown-tree.ts","../../../projects/mapa-library-ui/src/lib/core/elements/datepicker.ts","../../../projects/mapa-library-ui/src/lib/core/elements/datepicker-range.ts","../../../projects/mapa-library-ui/src/lib/core/elements/input-text.ts","../../../projects/mapa-library-ui/src/lib/core/elements/radio-button.ts","../../../projects/mapa-library-ui/src/lib/core/elements/slide-toggle.ts","../../../projects/mapa-library-ui/src/lib/core/elements/textarea.ts","../../../projects/mapa-library-ui/src/lib/core/directives/mat-input-autosize.directive.ts","../../../projects/mapa-library-ui/src/lib/core/directives/custom-paginator.directive.ts","../../../projects/mapa-library-ui/src/lib/core/i18n/mapa-ui-texts.ts","../../../projects/mapa-library-ui/src/lib/core/services/mapa-i18n.service.ts","../../../projects/mapa-library-ui/src/lib/core/services/validation-message-resolver.service.ts","../../../projects/mapa-library-ui/src/lib/core/components/form-errors/form-errors.component.ts","../../../projects/mapa-library-ui/src/lib/core/components/form-errors/form-errors.component.html","../../../projects/mapa-library-ui/src/lib/core/services/html-sanitizer.service.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/safe-html.pipe.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/estados.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/utils.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/inscricaoestadual.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/placa.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/create.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/rg.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_mask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_create.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_validate.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/validate.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/createNumberMask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/mask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/index.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/name.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/saude.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/cpf.ts","../../../projects/mapa-library-ui/src/lib/components/benchmarking/src/benchmark-indicator/benchmark-indicator.component.ts","../../../projects/mapa-library-ui/src/lib/components/benchmarking/src/benchmark-indicator/benchmark-indicator.component.html","../../../projects/mapa-library-ui/src/lib/components/benchmarking/src/benchmark-chart.component.ts","../../../projects/mapa-library-ui/src/lib/components/benchmarking/src/benchmark-chart.component.html","../../../projects/mapa-library-ui/src/lib/components/breadcrumb/src/breadcrumb.component.ts","../../../projects/mapa-library-ui/src/lib/components/breadcrumb/src/breadcrumb.component.html","../../../projects/mapa-library-ui/src/lib/components/breadcrumb/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/button/src/button.component.ts","../../../projects/mapa-library-ui/src/lib/components/button/src/button.component.html","../../../projects/mapa-library-ui/src/lib/components/button/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/button-icon/src/button-icon.component.ts","../../../projects/mapa-library-ui/src/lib/components/button-icon/src/button-icon.component.html","../../../projects/mapa-library-ui/src/lib/components/button-icon/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/essentials/functions/indicator-helpers.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/essentials/consts/capability-classification.const.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/essentials/services/capability-classification.service.ts","../../../projects/mapa-library-ui/src/lib/components/tag/src/tag.component.ts","../../../projects/mapa-library-ui/src/lib/components/tag/src/tag.component.html","../../../projects/mapa-library-ui/src/lib/components/tag/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/tooltip/src/tooltip.enums.ts","../../../projects/mapa-library-ui/src/lib/components/tooltip/src/tooltip.component.ts","../../../projects/mapa-library-ui/src/lib/components/tooltip/src/tooltip.component.html","../../../projects/mapa-library-ui/src/lib/components/tooltip/src/tooltip.directive.ts","../../../projects/mapa-library-ui/src/lib/components/tooltip/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-dot/capability-dot.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-dot/capability-dot.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-expand/capability-expand.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-expand/capability-expand.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator/capability-indicator.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator/capability-indicator.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-interval/capability-interval.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-interval/capability-interval.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-interval-bar/capability-interval-bar.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-interval-bar/capability-interval-bar.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-indicator/capability-comparative-indicator.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-indicator/capability-comparative-indicator.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-chart/capability-comparative-chart.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-chart/capability-comparative-chart.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-header/capability-comparative-header.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative-header/capability-comparative-header.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative/capability-comparative.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-comparative/capability-comparative.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-detail/capability-detail.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-detail/capability-detail.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator-list/capability-indicator-list.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator-list/capability-indicator-list.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator-chart/capability-indicator-chart.component.ts","../../../projects/mapa-library-ui/src/lib/components/capability/src/capability-indicator-chart/capability-indicator-chart.component.html","../../../projects/mapa-library-ui/src/lib/components/capability/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown/src/dropdown.component.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown/src/dropdown.component.html","../../../projects/mapa-library-ui/src/lib/components/dropdown/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/chart/src/chart.component.ts","../../../projects/mapa-library-ui/src/lib/components/chart/src/chart.component.html","../../../projects/mapa-library-ui/src/lib/components/chart/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/checkbox/src/checkbox.component.ts","../../../projects/mapa-library-ui/src/lib/components/checkbox/src/checkbox.component.html","../../../projects/mapa-library-ui/src/lib/components/checkbox/public-api.ts","../../../projects/mapa-library-ui/src/lib/core/utils/date.util.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker/src/datepicker.component.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker/src/datepicker.component.html","../../../projects/mapa-library-ui/src/lib/components/datepicker/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker-range/src/datepicker-range.component.ts","../../../projects/mapa-library-ui/src/lib/components/datepicker-range/src/datepicker-range.component.html","../../../projects/mapa-library-ui/src/lib/components/datepicker-range/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/dialog/src/dialog.component.ts","../../../projects/mapa-library-ui/src/lib/components/dialog/src/dialog.component.html","../../../projects/mapa-library-ui/src/lib/components/dialog/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/src/dropdown.component.ts","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/src/dropdown.component.html","../../../projects/mapa-library-ui/src/lib/components/dropdown-tree/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/empty/src/empty.component.ts","../../../projects/mapa-library-ui/src/lib/components/empty/src/empty.component.html","../../../projects/mapa-library-ui/src/lib/components/empty/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/input/src/input.component.ts","../../../projects/mapa-library-ui/src/lib/components/input/src/input.component.html","../../../projects/mapa-library-ui/src/lib/components/input/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/filters/src/filters.component.ts","../../../projects/mapa-library-ui/src/lib/components/filters/src/filters.component.html","../../../projects/mapa-library-ui/src/lib/components/filters/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/radio-button/src/radio-button.component.ts","../../../projects/mapa-library-ui/src/lib/components/radio-button/src/radio-button.component.html","../../../projects/mapa-library-ui/src/lib/components/radio-button/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/src/slide-toggle.component.ts","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/src/slide-toggle.component.html","../../../projects/mapa-library-ui/src/lib/components/slide-toggle/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/textarea/src/textarea.component.ts","../../../projects/mapa-library-ui/src/lib/components/textarea/src/textarea.component.html","../../../projects/mapa-library-ui/src/lib/components/textarea/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/form/src/form.component.ts","../../../projects/mapa-library-ui/src/lib/components/form/src/form.component.html","../../../projects/mapa-library-ui/src/lib/components/form/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/group-report/src/group-report.component.ts","../../../projects/mapa-library-ui/src/lib/components/group-report/src/group-report.component.html","../../../projects/mapa-library-ui/src/lib/components/icon/src/icon.component.ts","../../../projects/mapa-library-ui/src/lib/components/icon/src/icon.component.html","../../../projects/mapa-library-ui/src/lib/components/icon/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/menu/src/menu.component.ts","../../../projects/mapa-library-ui/src/lib/components/menu/src/menu.component.html","../../../projects/mapa-library-ui/src/lib/components/menu/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/nav-list/src/nav-list.component.ts","../../../projects/mapa-library-ui/src/lib/components/nav-list/src/nav-list.component.html","../../../projects/mapa-library-ui/src/lib/components/nav-list/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/report-item/src/report-item.component.ts","../../../projects/mapa-library-ui/src/lib/components/report-item/src/report-item.component.html","../../../projects/mapa-library-ui/src/lib/components/report-item/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/scale/src/progressbar/progressbar.component.ts","../../../projects/mapa-library-ui/src/lib/components/scale/src/progressbar/progressbar.component.html","../../../projects/mapa-library-ui/src/lib/components/scale/src/scale.component.ts","../../../projects/mapa-library-ui/src/lib/components/scale/src/scale.component.html","../../../projects/mapa-library-ui/src/lib/components/scale/src/details/details.component.ts","../../../projects/mapa-library-ui/src/lib/components/scale/src/details/details.component.html","../../../projects/mapa-library-ui/src/lib/components/scale/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/svg-icon/src/svg-icon.component.ts","../../../projects/mapa-library-ui/src/lib/components/svg-icon/src/svg-icon.component.html","../../../projects/mapa-library-ui/src/lib/components/svg-icon/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/paginator_customization.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/table.component.ts","../../../projects/mapa-library-ui/src/lib/components/table/src/table.component.html","../../../projects/mapa-library-ui/src/lib/components/table/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/warning/src/warning.component.ts","../../../projects/mapa-library-ui/src/lib/components/warning/src/warning.component.html","../../../projects/mapa-library-ui/src/lib/components/warning/public-api.ts","../../../projects/mapa-library-ui/src/lib/components/scale-parameterization/src/scale-parameterization.component.ts","../../../projects/mapa-library-ui/src/lib/components/scale-parameterization/src/scale-parameterization.component.html","../../../projects/mapa-library-ui/src/public-api.ts","../../../projects/mapa-library-ui/src/mapa-library-ui.ts"],"sourcesContent":["import { EventEmitter } from \"@angular/core\";\nimport { ElementGroup } from \"../interfaces/element-group.interface\";\nimport { ElementOption, ElementTreeNode } from \"../interfaces/element-option.interface\";\nimport { ActionButton } from \"./action-button\";\nimport { ElementSearch } from \"./element-search\";\nimport { Errors } from \"./errors\";\nexport interface Status {\n label: string;\n}\n\nexport class ElementBase {\n value: string;\n key: string;\n label: string;\n required: boolean;\n order: number;\n controlType: string;\n type: string;\n placeholder?: string;\n readonly: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options: ElementOption[] | ElementGroup[];\n tree: ElementTreeNode[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength!: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n minDate?: string | Date | null;\n maxDate?: string | Date | null;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n openedChange?: EventEmitter<boolean>;\n\n constructor(\n options: {\n value?: string;\n key?: string;\n label?: string;\n required?: boolean;\n order?: number;\n controlType?: string;\n type?: string;\n placeholder?: string;\n readonly?: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options?: ElementOption[] | ElementGroup[];\n tree?: ElementTreeNode[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength?: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n minDate?: string | Date | null;\n maxDate?: string | Date | null;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n openedChange?: EventEmitter<boolean>;\n } = {}\n ) {\n this.value = options.value || \"\";\n this.key = options.key || \"\";\n this.label = options.label || \"\";\n this.required = !!options.required;\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType || \"\";\n this.type = options.type || \"\";\n this.placeholder = options.placeholder || \"\";\n this.readonly = options.readonly || false;\n this.hint = options.hint || \"\";\n this.prefix = options.prefix || \"\";\n this.suffix = options.suffix || \"\";\n this.autosize = options.autosize || false;\n this.autosizeMinWidth = options.autosizeMinWidth || \"212px\";\n this.autosizeMaxWidth = options.autosizeMaxWidth || \"400px\";\n this.autosizeMinRow = options.autosizeMinRow || 2;\n this.autosizeMaxRow = options.autosizeMaxRow || 5;\n this.options = options.options || [];\n this.tree = options.tree || [];\n this.multiple = options.multiple || false;\n this.search = options.search || undefined;\n this.maxLength = options.maxLength || null;\n this.errors = options.errors || undefined;\n this.actionButton = options.actionButton || undefined;\n this.mask = options.mask || undefined;\n this.autocomplete = options.autocomplete || \"\";\n this.clearValue =\n options.clearValue !== undefined ? options.clearValue : true;\n this.minDate = options.minDate || undefined;\n this.maxDate = options.maxDate || undefined;\n this.status = options.status || undefined;\n this.checkParent = options.checkParent || false;\n this.checkChildren = options.checkChildren || false;\n this.openedChange = options.openedChange || undefined;\n }\n}\n","import { ElementBase } from './element-base';\n\nexport class Dropdown extends ElementBase {\n override controlType = 'dropdown';\n}\n","import { ElementBase } from './element-base';\n\nexport class DropdownTree extends ElementBase {\n override controlType = 'dropdown-tree';\n}\n","import { ElementBase } from './element-base';\n\nexport class Datepicker extends ElementBase {\n override controlType = 'datepicker';\n}\n","import { ElementBase } from './element-base';\n\nexport class DatepickerRange extends ElementBase {\n override controlType = 'datepicker-range';\n}\n","import { ElementBase } from './element-base';\n\nexport class InputText extends ElementBase {\n override controlType = 'input';\n}\n","import { ElementBase } from './element-base';\n\nexport class RadioButton extends ElementBase {\n override controlType = 'radio-button';\n}\n","import { ElementBase } from './element-base';\n\nexport class SlideToggle extends ElementBase {\n override controlType = 'slide-toggle';\n}\n","import { ElementBase } from './element-base';\n\nexport class Textarea extends ElementBase {\n override controlType = 'textarea';\n}\n","/*\n* Originally from: https://github.com/anotherkitten/mat-input-autosize\n* @author: Ellie Larson (anotherkitten)\n*/\n\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n Input,\n Optional,\n Self,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgModel } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { fromEvent } from 'rxjs';\n\n@Directive({\n selector: '[matInputAutosize]',\n standalone: true,\n})\nexport class MatInputAutosizeDirective implements AfterViewInit {\n inputElement: HTMLInputElement;\n hiddenText!: Text;\n private readonly destroyRef = inject(DestroyRef);\n\n @Input() matInputAutosizeMaxWidth?: string | null;\n @Input() matInputAutosizeMinWidth = '120px';\n @Input() matInputAutosizeFontStyle?: string | null;\n\n constructor(\n el: ElementRef<HTMLInputElement>,\n @Self() private childMatInput: MatInput,\n @Optional() @Self() private childNgModel: NgModel\n ) {\n this.inputElement = el.nativeElement;\n }\n\n ngAfterViewInit(): void {\n this.checkErrors();\n this.overwriteParentWidth();\n this.createHiddenTextContainer();\n this.setOwnStyles();\n this.subscribeToChanges();\n }\n\n checkErrors(): void {\n if (!(this.inputElement instanceof HTMLInputElement)) {\n throw new Error('matInputAutosize directive must be on an input element');\n }\n\n if (!this.childMatInput) {\n throw new Error(\n 'Element with matInputAutosize directive must also have the matInput directive'\n );\n }\n }\n\n overwriteParentWidth(): void {\n Object.assign((this.inputElement.parentNode as HTMLElement).style, {\n width: '100%',\n });\n }\n\n createHiddenTextContainer(): void {\n const textContainer = document.createElement('div');\n Object.assign(textContainer.style, {\n display: 'inline-block',\n 'max-width': this.matInputAutosizeMaxWidth || null,\n 'min-width': this.matInputAutosizeMinWidth,\n font: this.matInputAutosizeFontStyle || null,\n visibility: 'hidden',\n 'white-space': 'pre',\n });\n this.inputElement.parentNode?.appendChild(textContainer);\n\n this.hiddenText = document.createTextNode(' ');\n textContainer.appendChild(this.hiddenText);\n }\n\n setOwnStyles(): void {\n Object.assign(this.inputElement.style, {\n position: 'absolute',\n left: '0',\n });\n }\n\n subscribeToChanges(): void {\n if (this.childNgModel) {\n this.childNgModel.control.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => this.changeHiddenText(value));\n return;\n }\n\n fromEvent(this.inputElement, 'input')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeHiddenText(this.inputElement.value));\n }\n\n changeHiddenText = (newValue: unknown): void => {\n if (this.hiddenText) {\n this.hiddenText.data = `${newValue ?? ''} `;\n }\n };\n}\n\n","import {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Renderer2,\n SimpleChanges,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatPaginator } from \"@angular/material/paginator\";\nimport { map, startWith } from \"rxjs/operators\";\n\n@Directive({\n selector: \"[appBubblePagination]\",\n standalone: true,\n})\nexport class BubblePaginationDirective\n implements AfterViewInit, OnChanges\n{\n @Output() pageIndexChangeEmitter: EventEmitter<number> = new EventEmitter<number>();\n @Input() showFirstButton = true;\n @Input() showLastButton = true;\n @Input() renderButtonsNumber = 2;\n @Input() appCustomLength: number = 0;\n @Input() hideDefaultArrows = false;\n @Input() bubblePageIndex = 0;\n private dotsEndRef!: HTMLElement;\n private dotsStartRef!: HTMLElement;\n private bubbleContainerRef!: HTMLElement;\n private buttonsRef: HTMLElement[] = [];\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly matPag: MatPaginator,\n private elementRef: ElementRef,\n private ren: Renderer2\n ) {}\n\n ngAfterViewInit(): void {\n this.styleDefaultPagination();\n this.createBubbleDivRef();\n this.renderButtons();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.bubbleContainerRef) {\n return;\n }\n\n if (\n (!changes?.[\"appCustomLength\"]?.firstChange && changes?.[\"appCustomLength\"]) ||\n (!changes?.[\"bubblePageIndex\"]?.firstChange && changes?.[\"bubblePageIndex\"])\n ) {\n this.rebuildButtons();\n }\n }\n\n private renderButtons(): void {\n this.rebuildButtons();\n\n this.matPag.page\n .pipe(\n map((e) => [e.previousPageIndex ?? 0, e.pageIndex] as const),\n startWith([this.getActivePageIndex(), this.getActivePageIndex()] as const),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(([prev, curr]) => {\n this.updateButtonsOnPageEvent(prev, curr);\n });\n }\n\n private changeActiveButtonStyles(previousIndex: number, newIndex: number) {\n if (!this.buttonsRef.length) {\n return;\n }\n\n const previouslyActive = this.buttonsRef[previousIndex];\n const currentActive = this.buttonsRef[newIndex];\n\n try {\n this.ren.removeClass(previouslyActive, \"g-bubble__active\");\n this.ren.addClass(currentActive, \"g-bubble__active\");\n } catch {}\n\n this.buttonsRef.forEach((button) =>\n this.ren.setStyle(button, \"display\", \"none\")\n );\n\n const renderElements = this.renderButtonsNumber;\n const endDots = newIndex < this.buttonsRef.length - renderElements - 1;\n const startDots = newIndex - renderElements > 0;\n\n const firstButton = this.buttonsRef[0];\n const lastButton = this.buttonsRef[this.buttonsRef.length - 1];\n\n try {\n if (this.showLastButton) {\n this.ren.setStyle(this.dotsEndRef, \"display\", endDots ? \"block\" : \"none\");\n this.ren.setStyle(lastButton, \"display\", endDots ? \"flex\" : \"none\");\n }\n } catch {}\n\n try {\n if (this.showFirstButton) {\n this.ren.setStyle(\n this.dotsStartRef,\n \"display\",\n startDots ? \"block\" : \"none\"\n );\n this.ren.setStyle(firstButton, \"display\", startDots ? \"flex\" : \"none\");\n }\n } catch {}\n\n const startingIndex = startDots ? newIndex - renderElements : 0;\n const endingIndex = endDots\n ? newIndex + renderElements\n : this.buttonsRef.length - 1;\n\n for (let i = startingIndex; i <= endingIndex; i++) {\n const button = this.buttonsRef[i];\n this.ren.setStyle(button, \"display\", \"flex\");\n }\n }\n\n private styleDefaultPagination() {\n const nativeElement = this.elementRef.nativeElement;\n const previousButton = nativeElement.querySelector(\n \".mat-mdc-paginator-navigation-previous\"\n );\n const nextButtonDefault = nativeElement.querySelector(\n \".mat-mdc-paginator-navigation-next\"\n );\n\n if (this.hideDefaultArrows) {\n this.ren.setStyle(previousButton, \"display\", \"none\");\n this.ren.setStyle(nextButtonDefault, \"display\", \"none\");\n }\n }\n\n private createBubbleDivRef(): void {\n const actionContainer = this.elementRef.nativeElement.querySelector(\n \"div.mat-mdc-paginator-range-actions\"\n );\n const nextButtonDefault = this.elementRef.nativeElement.querySelector(\n \"button.mat-mdc-paginator-navigation-next\"\n );\n const pageRange = this.elementRef.nativeElement.querySelector(\n \"div.mat-mdc-paginator-range-label\"\n );\n\n this.bubbleContainerRef = this.ren.createElement(\"div\") as HTMLElement;\n this.ren.addClass(this.bubbleContainerRef, \"g-bubble-container\");\n if (actionContainer) {\n this.ren.addClass(actionContainer, \"custom-paginator-container\");\n }\n if (pageRange) {\n this.ren.addClass(pageRange, \"custom-paginator-counter\");\n }\n\n if (actionContainer) {\n this.ren.insertBefore(\n actionContainer,\n this.bubbleContainerRef,\n nextButtonDefault\n );\n }\n }\n\n private buildButtons(neededButtons: number): void {\n if (neededButtons <= 1) {\n return;\n }\n\n this.buttonsRef = [this.createButton(0)];\n this.dotsStartRef = this.createDotsElement();\n\n for (let index = 1; index < neededButtons - 1; index++) {\n this.buttonsRef = [...this.buttonsRef, this.createButton(index)];\n }\n\n this.dotsEndRef = this.createDotsElement();\n\n this.buttonsRef = [\n ...this.buttonsRef,\n this.createButton(neededButtons - 1),\n ];\n }\n\n private removeButtons(): void {\n if (!this.bubbleContainerRef) {\n return;\n }\n\n while (this.bubbleContainerRef.firstChild) {\n this.ren.removeChild(this.bubbleContainerRef, this.bubbleContainerRef.firstChild);\n }\n this.buttonsRef = [];\n }\n\n private createButton(i: number): HTMLElement {\n const bubbleButton = this.ren.createElement(\"div\");\n const text = this.ren.createText(String(i + 1));\n\n this.ren.addClass(bubbleButton, \"g-bubble\");\n this.ren.setStyle(bubbleButton, \"margin-right\", \"8px\");\n this.ren.appendChild(bubbleButton, text);\n\n this.ren.listen(bubbleButton, \"click\", () => {\n this.switchPage(i);\n });\n\n this.ren.appendChild(this.bubbleContainerRef, bubbleButton);\n this.ren.setStyle(bubbleButton, \"display\", \"none\");\n\n return bubbleButton;\n }\n\n private createDotsElement(): HTMLElement {\n const dotsEl = this.ren.createElement(\"span\");\n const dotsText = this.ren.createText(\"...\");\n\n this.ren.setStyle(dotsEl, \"font-size\", \"18px\");\n this.ren.setStyle(dotsEl, \"margin-right\", \"8px\");\n this.ren.setStyle(dotsEl, \"padding-top\", \"6px\");\n this.ren.setStyle(dotsEl, \"color\", \"#919191\");\n\n this.ren.appendChild(dotsEl, dotsText);\n this.ren.appendChild(this.bubbleContainerRef, dotsEl);\n this.ren.setStyle(dotsEl, \"display\", \"none\");\n\n return dotsEl;\n }\n\n private switchPage(i: number): void {\n const previousPageIndex = this.matPag.pageIndex;\n this.matPag.pageIndex = i;\n this.matPag.page.emit({\n previousPageIndex,\n pageIndex: i,\n pageSize: this.matPag.pageSize,\n length: this.matPag.length,\n });\n\n this.pageIndexChangeEmitter.emit(i);\n }\n\n private updateButtonsOnPageEvent(previousIndex: number, newIndex: number): void {\n const neededButtons = this.getNeededButtons();\n if (neededButtons === this.buttonsRef.length) {\n this.changeActiveButtonStyles(previousIndex, newIndex);\n return;\n }\n\n this.rebuildButtons();\n }\n\n private rebuildButtons(): void {\n const neededButtons = this.getNeededButtons();\n const activePageIndex = Math.min(this.getActivePageIndex(), Math.max(neededButtons - 1, 0));\n\n this.removeButtons();\n this.matPag.pageIndex = activePageIndex;\n\n if (neededButtons <= 1) {\n return;\n }\n\n this.buildButtons(neededButtons);\n this.changeActiveButtonStyles(activePageIndex, activePageIndex);\n }\n\n private getNeededButtons(): number {\n return Math.ceil(this.appCustomLength / this.matPag.pageSize);\n }\n\n private getActivePageIndex(): number {\n return Math.max(this.bubblePageIndex, this.matPag.pageIndex, 0);\n }\n}\n\n","import { InjectionToken, Provider } from \"@angular/core\";\n\nexport interface ValidationMessageContext {\n actualLength?: number;\n max?: number;\n min?: number;\n requiredLength?: number;\n}\n\nexport type ValidationTextResolver =\n | string\n | ((context?: ValidationMessageContext) => string);\n\nexport interface MapaUiTexts {\n common: {\n selectAll: string;\n };\n filters: {\n clear: string;\n submit: string;\n };\n datepicker: {\n startDatePlaceholder: string;\n endDatePlaceholder: string;\n };\n capability: {\n groupAverageTitle: string;\n individualAverageTitle: string;\n conceptTitle: string;\n resultTitle: string;\n positiveIndicatorsTitle: string;\n negativeIndicatorsTitle: string;\n riskIndicatorsTitle: string;\n precipitationRiskTitle: string;\n negligenceRiskTitle: string;\n negativeDirectionLabel: string;\n positiveDirectionLabel: string;\n };\n paginator: {\n itemsPerPage: string;\n nextPage: string;\n previousPage: string;\n rangeLabel: (page: number, pageSize: number, length: number) => string;\n showingRangeLabel: (\n page: number,\n pageSize: number,\n length: number\n ) => string;\n };\n table: {\n emptyTitle: string;\n emptySubtitle: string;\n };\n validation: {\n cnpj: ValidationTextResolver;\n cpf: ValidationTextResolver;\n email: ValidationTextResolver;\n max: ValidationTextResolver;\n maxLength: ValidationTextResolver;\n min: ValidationTextResolver;\n minLength: ValidationTextResolver;\n pattern: ValidationTextResolver;\n required: ValidationTextResolver;\n };\n}\n\nexport type PartialMapaUiTexts = Partial<{\n [K in keyof MapaUiTexts]: Partial<MapaUiTexts[K]>;\n}>;\n\nexport const MAPA_UI_TEXTS = new InjectionToken<PartialMapaUiTexts>(\n \"MAPA_UI_TEXTS\"\n);\n\nexport const MAPA_UI_DEFAULT_TEXTS: MapaUiTexts = {\n common: {\n selectAll: \"Selecionar todos\",\n },\n filters: {\n clear: \"Limpar filtros\",\n submit: \"Filtrar\",\n },\n datepicker: {\n startDatePlaceholder: \"Data inicial\",\n endDatePlaceholder: \"Data final\",\n },\n capability: {\n groupAverageTitle: \"Média geral do grupo\",\n individualAverageTitle: \"Média geral do indivíduo\",\n conceptTitle: \"Conceito\",\n resultTitle: \"Resultado\",\n positiveIndicatorsTitle: \"Indicadores positivos\",\n negativeIndicatorsTitle: \"Indicadores negativos\",\n riskIndicatorsTitle: \"Indicadores de risco\",\n precipitationRiskTitle: \"Risco de acidente por precipitação\",\n negligenceRiskTitle: \"Risco de acidente por negligência\",\n negativeDirectionLabel: \"Direção Negativa |\",\n positiveDirectionLabel: \"Direção Positiva |\",\n },\n paginator: {\n itemsPerPage: \"Itens por página\",\n nextPage: \"Próxima página\",\n previousPage: \"Página anterior\",\n rangeLabel: (page: number, pageSize: number, length: number) => {\n if (length === 0 || pageSize === 0) {\n return `0 de ${length}`;\n }\n\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n\n return `${startIndex + 1} - ${endIndex} de ${length}`;\n },\n showingRangeLabel: (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return \"Mostrando 0 - 0 de 0 item\";\n }\n\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n const itemLabel = length === 1 ? \"item\" : \"itens\";\n\n return `Mostrando ${startIndex + 1} - ${endIndex} de ${length} ${itemLabel}`;\n },\n },\n table: {\n emptyTitle: \"Nao foram encontrados resultados\",\n emptySubtitle: \"\",\n },\n validation: {\n cnpj: \"CNPJ inválido\",\n cpf: \"CPF inválido\",\n email: \"E-mail inválido\",\n max: (context?: ValidationMessageContext) =>\n `O valor máximo permitido é ${context?.max ?? \"\"}`.trim(),\n maxLength: (context?: ValidationMessageContext) =>\n `O máximo permitido é ${context?.requiredLength ?? \"\"} caracteres`.trim(),\n min: (context?: ValidationMessageContext) =>\n `O valor minimo permitido é ${context?.min ?? \"\"}`.trim(),\n minLength: (context?: ValidationMessageContext) =>\n `O mínimo permitido é ${context?.requiredLength ?? \"\"} caracteres`.trim(),\n pattern: \"Formato inválido\",\n required: \"Campo obrigatório\",\n },\n};\n\nexport function mergeMapaUiTexts(\n customTexts?: PartialMapaUiTexts | null\n): MapaUiTexts {\n return {\n common: {\n ...MAPA_UI_DEFAULT_TEXTS.common,\n ...(customTexts?.common ?? {}),\n },\n filters: {\n ...MAPA_UI_DEFAULT_TEXTS.filters,\n ...(customTexts?.filters ?? {}),\n },\n datepicker: {\n ...MAPA_UI_DEFAULT_TEXTS.datepicker,\n ...(customTexts?.datepicker ?? {}),\n },\n capability: {\n ...MAPA_UI_DEFAULT_TEXTS.capability,\n ...(customTexts?.capability ?? {}),\n },\n paginator: {\n ...MAPA_UI_DEFAULT_TEXTS.paginator,\n ...(customTexts?.paginator ?? {}),\n },\n table: {\n ...MAPA_UI_DEFAULT_TEXTS.table,\n ...(customTexts?.table ?? {}),\n },\n validation: {\n ...MAPA_UI_DEFAULT_TEXTS.validation,\n ...(customTexts?.validation ?? {}),\n },\n };\n}\n\nexport function provideMapaUiTexts(texts: PartialMapaUiTexts): Provider {\n return {\n provide: MAPA_UI_TEXTS,\n useValue: texts,\n };\n}\n","import { Inject, Injectable, Injector, Optional, inject, signal } from \"@angular/core\";\nimport { toObservable } from \"@angular/core/rxjs-interop\";\nimport {\n MAPA_UI_TEXTS,\n MapaUiTexts,\n PartialMapaUiTexts,\n ValidationMessageContext,\n ValidationTextResolver,\n mergeMapaUiTexts,\n} from \"../i18n/mapa-ui-texts\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class MapaI18nService {\n private readonly injector = inject(Injector);\n private readonly textsState = signal<MapaUiTexts>(mergeMapaUiTexts());\n\n readonly textsSignal = this.textsState.asReadonly();\n readonly texts$ = toObservable(this.textsSignal, { injector: this.injector });\n\n constructor(\n @Optional() @Inject(MAPA_UI_TEXTS) customTexts: PartialMapaUiTexts | null\n ) {\n if (customTexts) {\n this.textsState.set(mergeMapaUiTexts(customTexts));\n }\n }\n\n get texts(): MapaUiTexts {\n return this.textsState();\n }\n\n setTexts(texts: PartialMapaUiTexts): void {\n this.textsState.set(mergeMapaUiTexts(texts));\n }\n\n resolveValidationText(\n key: keyof MapaUiTexts[\"validation\"],\n context?: ValidationMessageContext\n ): string {\n return this.resolveText(this.texts.validation[key], context);\n }\n\n private resolveText(\n value: ValidationTextResolver,\n context?: ValidationMessageContext\n ): string {\n return typeof value === \"function\" ? value(context) : value;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AbstractControl, ValidationErrors } from \"@angular/forms\";\nimport { Errors } from \"../elements/errors\";\nimport { MapaI18nService } from \"./mapa-i18n.service\";\n\ntype ValidationKey =\n | \"required\"\n | \"minlength\"\n | \"maxlength\"\n | \"cpf\"\n | \"cnpj\"\n | \"email\"\n | \"pattern\"\n | \"min\"\n | \"max\";\n\ntype ErrorOverrides = Errors & {\n maxlength?: string;\n minlength?: string;\n};\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ValidationMessageResolverService {\n private readonly errorOrder: ValidationKey[] = [\n \"required\",\n \"minlength\",\n \"maxlength\",\n \"cpf\",\n \"cnpj\",\n \"email\",\n \"pattern\",\n \"min\",\n \"max\",\n ];\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n resolveFirstError(\n control?: AbstractControl | null,\n errors?: Errors\n ): string | null {\n const validationErrors = control?.errors;\n\n if (!validationErrors) {\n return null;\n }\n\n const firstErrorKey = this.errorOrder.find((key) => control?.hasError(key));\n\n if (!firstErrorKey) {\n return null;\n }\n\n return this.resolveErrorMessage(firstErrorKey, validationErrors, errors);\n }\n\n private resolveErrorMessage(\n errorKey: ValidationKey,\n validationErrors: ValidationErrors,\n errors?: Errors\n ): string {\n const errorOverrides = errors as ErrorOverrides | undefined;\n const customMessage = this.getCustomMessage(errorKey, errorOverrides);\n\n if (customMessage) {\n return customMessage;\n }\n\n const errorValue = validationErrors[errorKey];\n\n switch (errorKey) {\n case \"minlength\":\n return this.i18n.resolveValidationText(\"minLength\", errorValue);\n case \"maxlength\":\n return this.i18n.resolveValidationText(\"maxLength\", errorValue);\n case \"min\":\n return this.i18n.resolveValidationText(\"min\", errorValue);\n case \"max\":\n return this.i18n.resolveValidationText(\"max\", errorValue);\n default:\n return this.i18n.resolveValidationText(errorKey);\n }\n }\n\n private getCustomMessage(\n errorKey: ValidationKey,\n errors?: ErrorOverrides\n ): string | undefined {\n if (!errors) {\n return undefined;\n }\n\n switch (errorKey) {\n case \"minlength\":\n return errors.minLength ?? errors.minlength;\n case \"maxlength\":\n return errors.maxLength ?? errors.maxlength;\n default:\n return errors[errorKey];\n }\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { Errors } from \"../../elements/errors\";\nimport { ValidationMessageResolverService } from \"../../services/validation-message-resolver.service\";\n\n@Component({\n selector: \"mapa-form-errors\",\n imports: [CommonModule, MatFormFieldModule],\n templateUrl: \"./form-errors.component.html\"\n})\nexport class MapaFormErrorsComponent {\n @Input() control?: AbstractControl | null;\n @Input() errors?: Errors;\n\n constructor(\n private readonly validationMessageResolver: ValidationMessageResolverService\n ) {}\n\n get message(): string | null {\n return this.validationMessageResolver.resolveFirstError(\n this.control,\n this.errors\n );\n }\n}\n","<span *ngIf=\"message\">\n {{ message }}\n</span>\n","import { Injectable, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nexport function sanitizeHtmlContent(\n sanitizer: DomSanitizer,\n value?: string | null\n): string {\n return sanitizer.sanitize(SecurityContext.HTML, value ?? \"\") ?? \"\";\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class HtmlSanitizerService {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n sanitize(value?: string | null): string {\n return sanitizeHtmlContent(this.sanitizer, value);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { HtmlSanitizerService } from \"../services/html-sanitizer.service\";\n\n@Pipe({\n name: \"safeHtml\",\n standalone: true,\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private readonly htmlSanitizer: HtmlSanitizerService) {}\n\n transform(value?: string | null): string {\n return this.htmlSanitizer.sanitize(value);\n }\n}\n","export const ESTADOS_SIGLA: any = ['ac', 'al', 'am', 'ap', 'ba', 'ce', 'df', 'es', 'go', 'ma',\n 'mg', 'ms', 'mt', 'pa', 'pb', 'pe', 'pi', 'pr', 'rj', 'rn', 'ro', 'rr', 'rs',\n 'sc', 'se', 'sp', 'to'\n];\n\n\nexport type EstadosType = 'ac'| 'al'| 'am'| 'ap'| 'ba'| 'ce'| 'df'| 'es'| 'go'| 'ma'|\n'mg'| 'ms'| 'mt'| 'pa'| 'pb'| 'pe'| 'pi'| 'pr'| 'rj'| 'rn'| 'ro'| 'rr'| 'rs'|\n'sc'| 'se'| 'sp'| 'to';\n\n\nexport const ESTADOS = [\n { name: 'Acre', shortname: 'AC', slug: 'acre' },\n { name: 'Alagoas', shortname: 'AL', slug: 'alagoas' },\n { name: 'Amapá', shortname: 'AP', slug: 'amapa' },\n { name: 'Amazonas', shortname: 'AM', slug: 'amazonas' },\n { name: 'Bahia', shortname: 'BA', slug: 'bahia' },\n { name: 'Ceará', shortname: 'CE', slug: 'ceara' },\n { name: 'Distrito Federal', shortname: 'DF', slug: 'distrito-federal' },\n { name: 'Espírito Santo', shortname: 'ES', slug: 'espirito-santo' },\n { name: 'Goiás', shortname: 'GO', slug: 'goias' },\n { name: 'Maranhão', shortname: 'MA', slug: 'maranhao' },\n { name: 'Mato Grosso', shortname: 'MT', slug: 'mato-grosso' },\n { name: 'Mato Grosso do Sul', shortname: 'MS', slug: 'mato-grosso-do-sul' },\n { name: 'Minas Gerais', shortname: 'MG', slug: 'minas-gerais' },\n { name: 'Pará', shortname: 'PA', slug: 'para' },\n { name: 'Paraíba', shortname: 'PB', slug: 'paraiba' },\n { name: 'Paraná', shortname: 'PR', slug: 'parana' },\n { name: 'Pernambuco', shortname: 'PE', slug: 'pernambuco' },\n { name: 'Piauí', shortname: 'PI', slug: 'piaui' },\n { name: 'Rio de Janeiro', shortname: 'RJ', slug: 'rio-de-janeiro' },\n { name: 'Rio Grande do Norte', shortname: 'RN', slug: 'rio-grande-do-norte' },\n { name: 'Rio Grande do Sul', shortname: 'RS', slug: 'rio-grande-do-sul' },\n { name: 'Rondônia', shortname: 'RO', slug: 'rondonia' },\n { name: 'Roraima', shortname: 'RR', slug: 'roraima' },\n { name: 'Santa Catarina', shortname: 'SC', slug: 'santa-catarina' },\n { name: 'São Paulo', shortname: 'SP', slug: 'sao-paulo' },\n { name: 'Sergipe', shortname: 'SE', slug: 'sergipe' },\n { name: 'Tocantins', shortname: 'TO', slug: 'tocantins' }\n]","import { ESTADOS_SIGLA } from './estados';\nimport { BigObject } from './interfaces';\n\nexport function isPresent(obj: any): boolean {\n return obj !== undefined && obj !== null;\n}\n\nexport function isArray(value: any) {\n return (Array.isArray && Array.isArray(value)) || value instanceof Array\n}\n\nexport function isString(value: any) {\n return typeof value === 'string' || value instanceof String\n}\n\nexport function isNumber(value: any) {\n return typeof value === 'number' && !isNaN(value); // && value.length === undefined\n}\n\nexport function isNil(value: any) {\n return typeof value === 'undefined' || value === null\n}\n\n\n\n\nconst strCaretTrap = '[]'\nexport function processCaretTraps(mask: any) {\n const indexes = []\n\n let indexOfCaretTrap: number\n while (indexOfCaretTrap = mask.indexOf(strCaretTrap), indexOfCaretTrap !== -1) { // eslint-disable-line\n indexes.push(indexOfCaretTrap)\n\n mask.splice(indexOfCaretTrap, 1)\n }\n\n return { maskWithoutCaretTraps: mask, indexes }\n}\n\nexport const modulo11 = (value: string) => {\n let mults: any = []\n let weightVal = 2\n for (let i = 0; i < value.length; i++) {\n // mults = [weightVal, ...mults]\n mults.push(weightVal)\n weightVal++\n if (weightVal > 9) weightVal = 2\n }\n\n mults = mults.reverse()\n\n let sum = 0\n for (let i = 0; i < value.length; i++) {\n sum += parseInt(value[i]) * mults[i]\n }\n const digit = (sum *10) % 11\n return digit\n}\n\nexport const modulo11Custom = (string: string, size: number, maxMult = string.length, by10 = true) => {\n if (!by10) size = 1\n for (let n = 1; n <= size; n++) {\n let soma = 0\n let mult = 2\n for (let i = string.length - 1; i >= 0; i--) {\n soma += (mult * parseInt(string.charAt(i)))\n mult++\n if (mult > maxMult) mult = 2\n }\n let dig\n if (by10) {\n dig = ((soma * 10) % 11) % 10;\n } else {\n dig = soma % 11;\n if (dig == 10) dig = 0;\n }\n string += dig;\n }\n return string.substr(string.length - size, size);\n}\n\n\nexport const modulo11a = (string: string, size: number, mod: number) => {\n let soma = 0;\n for (let i = 1; i <= size; i++) {\n // tslint:disable-next-line:radix\n soma = soma + parseInt(string.substring(i - 1, i)) * (mod - i);\n }\n let resto = (soma * 10) % 11;\n\n if ((resto === 10) || (resto === 11)) {\n resto = 0;\n }\n return resto;\n}\n\n/**\n * \n * @param input \n * ^ - Match line start\n (\\d) - match first digit and capture it in back reference #1 i.e. \\1\n (?!..) is a negative lookahead\n (?!\\1+$) means disallow the match if first digit is followed by same digit (captured group) till end.\n \\d{11}$ match next 11 digit followed by line end\n */\nexport function allNumbersAreSame(inputValue: string) {\n const input: string | void = getAllDigits(inputValue);\n if (typeof input === 'string') {\n const reg = new RegExp('^(\\\\d)(?!\\\\1+$)\\\\d{' + ((<string>input).length - 1) + '}$');\n return reg.test(input);\n }\n return false;\n}\n\nexport function getAllDigits(input: string) {\n if (!input.match) {\n input = input.toString();\n }\n const match = input.match(/\\d/g);\n if (match) {\n return match.join(\"\");\n }\n return '';\n}\n\nexport function getAllWords(input: string) {\n const match = input.match(/\\w/g);\n if (match) {\n return match.join(\"\");\n }\n return '';\n}\n\nexport function currencyToNumber(input: string | number) {\n if (typeof input === 'number') {\n return input;\n }\n input = input.replace(/ /g, '');\n if (input.indexOf('$') !== -1) {\n const vals = input.split('$');\n input = vals[1];\n }\n\n // Keeping just numbers . and ,\n input = input.replace(/[^0-9.,]+/, '');\n\n // eua format\n if (input.indexOf('.') === (input.length - 1) - 2) {\n input = input.replace(/\\,/g, '')\n }\n // br format\n else {\n input = input.replace(/\\./g, '').replace(',', '.');\n }\n\n return parseFloat(input);\n}\n\nexport function numberToCurrency(value: number) {\n return ' R$ ' + value.toFixed(2).replace('.', ',') + ' ';\n};\n\nexport function slugify(value: string) {\n\n return value.toString().toLowerCase()\n .replace(/[àÀáÁâÂãäÄÅåª]+/g, 'a') // Special Characters #1\n .replace(/[èÈéÉêÊëË]+/g, 'e') \t// Special Characters #2\n .replace(/[ìÌíÍîÎïÏ]+/g, 'i') \t// Special Characters #3\n .replace(/[òÒóÓôÔõÕöÖº]+/g, 'o') \t// Special Characters #4\n .replace(/[ùÙúÚûÛüÜ]+/g, 'u') \t// Special Characters #5\n .replace(/[ýÝÿŸ]+/g, 'y') \t\t// Special Characters #6\n .replace(/[ñÑ]+/g, 'n') \t\t\t// Special Characters #7\n .replace(/[çÇ]+/g, 'c') \t\t\t// Special Characters #8\n .replace(/[ß]+/g, 'ss') \t\t\t// Special Characters #9\n .replace(/[Ææ]+/g, 'ae') \t\t\t// Special Characters #10\n .replace(/[Øøœ]+/g, 'oe') \t\t// Special Characters #11\n .replace(/[%]+/g, 'pct') \t\t\t// Special Characters #12\n .replace(/\\s+/g, '-') \t\t// Replace spaces with -\n .replace(/[^\\w\\-]+/g, '') \t\t// Remove all non-word chars\n .replace(/\\-\\-+/g, '-') \t\t// Replace multiple - with single -\n .replace(/^-+/, '') \t\t// Trim - from start of text\n .replace(/-+$/, ''); \t\t// Trim - from end of text\n\n};\n/**\n * \n * @param string ex. 12345\n * @param size 11\n * @param fill 0\n * \n * Returns: 00000012345\n */\nexport function fillString(string: string, size: number, fill: string) {\n if (string.length < size) {\n const dif = size - string.length;\n for (let i = 0; i < dif; i++) {\n string = fill + string\n }\n }\n return string;\n}\n\n\nexport function randArray(array: string | any[]) {\n const index = randomNumber(0, array.length);\n return array[index];\n}\n\n\nexport function rand(length: number, ...ranges: any[]) {\n var str = \"\"; // the string (initialized to \"\")\n while (length--) { // repeat this length of times\n var ind = Math.floor(Math.random() * ranges.length); // get a random range from the ranges object\n var min = ranges[ind][0].charCodeAt(0), // get the minimum char code allowed for this range\n max = ranges[ind][1].charCodeAt(0); // get the maximum char code allowed for this range\n var c = Math.floor(Math.random() * (max - min + 1)) + min; // get a random char code between min and max\n str += String.fromCharCode(c); // convert it back into a character and append it to the string str\n }\n return str; // return str\n}\n\nexport function randomNumber(begin: number, end: number) {\n const dif = end - begin;\n const number = Math.floor(Math.random() * dif) + begin;\n return number;\n}\n\n\nexport function randomLetter(size = 1, onlyCapitals = false) {\n var text = \"\";\n let possible: any = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n if (onlyCapitals == false) {\n possible += \"abcdefghijklmnopqrstuvwxyz\";\n }\n possible = possible.split('');\n for (let i = 0; i < size; i++) {\n const pos = Math.floor(Math.random() * possible.length);\n text += possible[pos];\n }\n return text;\n}\n\n\nexport function randomLetterOrNumber(size = 1, onlyCapitals = false) {\n var text = \"\";\n let possible: any = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n if (onlyCapitals == false) {\n possible += \"abcdefghijklmnopqrstuvwxyz0123456789\";\n }\n possible = possible.split('');\n for (let i = 0; i < size; i++) {\n const pos = Math.floor(Math.random() * possible.length);\n text += possible[pos];\n }\n return text;\n}\n\nexport const randomEstadoSigla = () => {\n const total = ESTADOS_SIGLA.length;\n return ESTADOS_SIGLA[Math.floor(Math.random() * total)];\n}\n\nexport const CORES = [\"AMARELO\", \"AZUL\", \"BEGE\", \"BRANCA\", \"CINZA\", \"DOURADA\", \"GRENA\", \"LARANJA\", \"MARROM\", \"PRATA\",\n \"PRETA\", \"ROSA\", \"ROXA\", \"VERDE\", \"VERMELHA\", \"FANTASIA\"];\n\n\nexport function getSpecialProperty<TModel, TKey extends keyof TModel>(\n model: TModel,\n key: TKey\n) {\n return model[key];\n}\n\n/**\n * \n */\nexport const makeGenericFaker = (val: any, options: BigObject<Function> | null = null) => {\n return () => {\n if (!val.textMask || !val.textMask.map) {\n return '';\n }\n const newData = val.textMask.map((c: string | any[], index: number) => {\n if (options && options[index]) {\n return options[index]();\n }\n c = c.toString();\n if (c === /\\d/.toString()) {\n return Math.floor(Math.random() * 10).toString()\n } else if (c === /[A-Za-z]/.toString()) {\n return randomLetter(1).toString();\n } else if (c === /\\w/.toString()) {\n return randomLetterOrNumber(1).toString();\n } else if (c.indexOf('/[') === 0) { // /[1-9]/ ou /[5-9]/\n c = c.replace('/[', '').replace(']/', '');\n\n if (c.indexOf('-') > 0) {\n c = c.split('-');\n if (parseInt(c[1])) {\n const mult = c[1] - c[0];\n const plus = parseInt(c[0]);\n return (Math.floor(Math.random() * mult) + plus).toString();\n } else {\n return rand(1, [c[0], c[1]]);\n }\n } else if (c.indexOf('|') > 0) {\n c = c.split('|');\n const index = Math.floor(Math.random() * c.length);\n return c[index];\n }\n\n } else {\n return c;\n }\n });\n return newData.join('');\n };\n}\n\nconst utilsBr = {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty\n}\n\nexport default utilsBr;","import { allNumbersAreSame } from './utils';\nimport { BigObject, MaskType } from './interfaces';\n\n/**\n * BASED ON https://github.com/gammasoft/ie/\n */\n\n\nexport const generateInscricaoEstadual: BigObject<Function> = {\n ac: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n if (naoComecaCom(valor, '01')) {\n return false;\n }\n\n const base = primeiros(valor, 11);\n\n const primeiroDigito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n const segundoDigito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiroDigito));\n\n return base + primeiroDigito + segundoDigito;\n },\n\n am: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n al: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '24')) {\n return false;\n }\n\n // FORMAÇÃO: 24XNNNNND, sendo:\n // 24 – Código do Estado\n // X – Tipo de empresa (0-Normal, 3-Produtor Rural, 5-Substituta, 7- Micro-Empresa Ambulante, 8-Micro-Empresa)\n // NNNNN – Número da empresa\n // D – Dígito de verificação calculado pelo Módulo11, pêsos 2 à 9 da direita para a esquerda, exceto D\n // Exemplo: Número 2 4 0 0 0 0 0 4 D\n // 2 4 X N N N N N D\n // Fonte: http://www.sintegra.gov.br/Cad_Estados/cad_AL.html\n\n const base: any = primeiros(valor);\n\n // Pesos 9 8 7 6 5 4 3 2\n // SOMA = (2 * 4) + (3 * 0) + (4 * 0) + (5 * 0) + (6 * 0) + (7 * 0) + (8 * 4) + (9 * 2) = 58\n const soma = base.split('').reduce((acc: number, v: string, i: number) => {\n return acc + (9 - i) * Number(v)\n }, 0)\n // PRODUTO = 58 * 10 = 580\n const produto = soma * 10\n // RESTO = 580 – INTEIRO(580 / 11)*11 = 580 – (52*11) = 8\n const resto = produto - Math.floor(produto / 11) * 11\n // DÍGITO = 8 - Caso RESTO seja igual a 10 o DÍGITO será 0 (zero)\n const digito = resto === 10 ? 0 : resto\n return base + digito;\n },\n\n ap: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '03')) {\n return false;\n }\n\n const base: any = primeiros(valor);\n\n let p: number, d: number;\n\n if (entre(base, 3000001, 3017000)) {\n p = 5;\n d = 0;\n } else if (entre(base, 3017001, 3019022)) {\n p = 9;\n d = 1;\n } else {\n p = 0;\n d = 0;\n }\n\n const resto = mod(p + base, [2, 3, 4, 5, 6, 7, 8, 9, 1]);\n\n let digito: number;\n if (resto === 1) {\n digito = 0;\n } else if (resto === 0) {\n digito = d;\n } else {\n digito = 11 - resto;\n }\n\n return base + digito;\n },\n\n ba: function (valor: any) {\n if (tamanhoNaoE(valor, 8) && tamanhoNaoE(valor)) {\n return false;\n }\n\n const base: any = primeiros(valor, valor.length - 2);\n let primeiroDigito: number, segundoDigito: number;\n\n const segundoMultiplicador = serie(2, 7);\n const primeiroMultiplicador = serie(2, 8);\n\n let primeiroResto: number, segundoResto: number;\n let digitoComparacao = valor.substring(0, 1);\n\n if (tamanhoE(valor, 9)) {\n segundoMultiplicador.push(8);\n primeiroMultiplicador.push(9);\n digitoComparacao = valor.substring(1, 2);\n }\n\n if ('0123458'.split('').indexOf(digitoComparacao) !== -1) {\n segundoResto = mod(base, segundoMultiplicador, 10);\n segundoDigito = segundoResto === 0 ? 0 : 10 - segundoResto;\n\n primeiroResto = mod(base + segundoDigito, primeiroMultiplicador, 10);\n primeiroDigito = primeiroResto === 0 ? 0 : 10 - primeiroResto;\n } else {\n segundoResto = mod(base, segundoMultiplicador);\n segundoDigito = substracaoPor11SeMaiorQue2CasoContrario0(segundoResto);\n\n primeiroResto = mod(base + segundoDigito, primeiroMultiplicador);\n primeiroDigito = substracaoPor11SeMaiorQue2CasoContrario0(primeiroResto);\n }\n\n return base + primeiroDigito + segundoDigito;\n },\n\n ce: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n return calculoTrivialGenerate(valor);\n },\n\n df: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n if (naoComecaCom(valor, '07') && naoComecaCom(valor, '08')) {\n return false;\n }\n const base: any = primeiros(valor, 11);\n\n const primeiro = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n const segundo = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiro));\n return base + primeiro + segundo;\n },\n\n es: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n go: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n // Verifica os digitos iniciais do estado\n // Fonte: https://appasp.economia.go.gov.br/Legislacao/arquivos/Secretario/IN/IN_1535_2022.htm\n\n if (['10', '11', '15', '20'].indexOf(valor.substring(0, 2)) === -1) {\n return false;\n }\n\n const base: any = primeiros(valor);\n\n if (base === '11094402') {\n return valor.substr(8) === '1' || valor.substr(8) === '0';\n }\n\n const resto = mod(base);\n let digito: number;\n\n if (resto === 0) {\n digito = 0;\n } else if (resto === 1) {\n if (entre(base, 10103105, 10119997)) {\n digito = 1;\n } else {\n digito = 0;\n }\n } else {\n digito = 11 - resto;\n }\n\n return base + digito;\n },\n ma: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '12')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n mg: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n const base = primeiros(valor, 11);\n\n const baseComZero = valor.substring(0, 3) + '0' + valor.substring(3, 11);\n\n let i = 0;\n const produtorioLiteral = baseComZero.split('').reduceRight(function (anterior, atual) {\n if (i > [2, 1].length - 1) {\n i = 0;\n }\n\n return ([2, 1][i++] * parseInt(atual, 10)).toString() + anterior.toString();\n }, '').split('').reduce(function (anterior, atual) {\n return anterior + parseInt(atual, 10);\n }, 0);\n\n let primeiro: any = ((Math.floor(produtorioLiteral / 10) + 1) * 10) - produtorioLiteral;\n if (primeiro === 10) {\n primeiro = 0;\n }\n\n const segundo = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiro, serie(2, 11)));\n\n return base + primeiro + segundo;\n },\n\n ms: function (valor: any) {\n if (naoComecaCom(valor, '28')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n mt: function (valor: any) {\n if (tamanhoNaoE(valor, 11) && tamanhoNaoE(valor)) {\n return false;\n }\n\n const base = tamanhoE(valor, 11) ? valor.substring(0, 10) : primeiros(valor);\n return calculoTrivialGenerate(valor, base, true);\n },\n pa: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '15') && naoComecaCom(valor, '75')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n pb: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n pe: function (valor: any) {\n const base: any = valor.substring(0, valor.length - 2);\n\n const restoPrimeiro = mod(base);\n const primeiro = 11 - restoPrimeiro >= 10 ? 0 : 11 - restoPrimeiro;\n\n const restoSegundo = mod(base + primeiro);\n const segundo = 11 - restoSegundo >= 10 ? 0 : 11 - restoSegundo;\n\n return base + primeiro + segundo;\n },\n\n pi: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n\n pr: function (valor: any) {\n if (tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n const base = primeiros(valor);\n\n const restoPrimeiro = mod(base, serie(2, 7));\n const primeiro = 11 - restoPrimeiro >= 10 ? 0 : 11 - restoPrimeiro;\n\n const restoSegundo = mod(base + primeiro, serie(2, 7));\n const segundo = 11 - restoSegundo >= 10 ? 0 : 11 - restoSegundo;\n\n return base + primeiro + segundo;\n },\n rj: function (valor: any) {\n if (tamanhoNaoE(valor, 8)) {\n return false;\n }\n\n const base = primeiros(valor, 7);\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base, serie(2, 7)));\n\n return base + digito;\n },\n\n rn: function (valor: any) {\n if (tamanhoNaoE(valor) && tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n if (naoComecaCom(valor, '20')) {\n return false;\n }\n\n const base = valor.substring(0, valor.length - 1);\n\n const multiplicadores = serie(2, 9);\n if (tamanhoE(valor, 10)) {\n multiplicadores.push(10);\n }\n\n const resto = (mod(base, multiplicadores) * 10) % 11;\n const digito = resto === 10 ? 0 : resto;\n\n return base + digito;\n },\n ro: function (valor: any) {\n let base: any, digito: number, resultadoMod: number;\n\n if (tamanhoE(valor, 9)) {\n base = valor.substring(3, 8);\n digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return valor === valor.substring(0, 3) + base + digito;\n } else if (tamanhoE(valor, 14)) {\n base = primeiros(valor, 13);\n resultadoMod = mod(base);\n digito = resultadoMod <= 1 ? 1 : 11 - resultadoMod;\n\n return base + digito;\n } else {\n return false;\n }\n },\n rr: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '24')) {\n return false;\n }\n\n const base = primeiros(valor);\n const digito = mod(base, [8, 7, 6, 5, 4, 3, 2, 1], 9);\n\n return base + digito;\n },\n\n rs: function (valor: any) {\n if (tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n const base = primeiros(valor, 9);\n return calculoTrivialGenerate(valor, base, true);\n },\n\n sc: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n\n se: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n sp: function (valor: any) {\n valor = valor.toUpperCase();\n\n let segundaBase: string;\n\n if (valor.substr(0, 1) === 'P') {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n const base = valor.substring(1, 9);\n segundaBase = valor.substring(10, 13);\n const resto = mod(base, [10, 8, 7, 6, 5, 4, 3, 1]).toString();\n const digito = resto.length > 1 ? resto[1] : resto[0];\n\n return 'P' + base + digito + segundaBase;\n } else {\n if (tamanhoNaoE(valor, 12)) {\n return false;\n }\n\n const primeiraBase = primeiros(valor);\n segundaBase = valor.substring(9, 11);\n\n const primeiroResto = mod(primeiraBase, [10, 8, 7, 6, 5, 4, 3, 1]).toString();\n const primeiro = primeiroResto.length > 1 ? primeiroResto[1] : primeiroResto[0];\n\n const segundoResto = mod(primeiraBase + primeiro + segundaBase, serie(2, 10)).toString();\n const segundo = segundoResto.length > 1 ? segundoResto[1] : segundoResto[0];\n\n return primeiraBase + primeiro + segundaBase + segundo;\n }\n },\n\n to: function (valor: any) {\n if (tamanhoNaoE(valor) && tamanhoNaoE(valor, 11)) {\n return false;\n }\n\n let base: any;\n\n if (tamanhoE(valor, 11)) {\n if (['01', '02', '03', '99'].indexOf(valor.substring(2, 4)) === -1) {\n return false;\n }\n\n base = valor.substring(0, 2) + valor.substring(4, 10);\n } else {\n base = primeiros(valor);\n }\n\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return valor.substring(0, valor.length - 1) + digito;\n },\n};\n\n\n\n\nconst funcoes: BigObject<Function> = {\n ac: function (valor: any) {\n return valor === generateInscricaoEstadual['ac'](valor);\n },\n\n am: function (valor: any) {\n return valor === generateInscricaoEstadual['am'](valor);\n },\n\n al: function (valor: any) {\n return valor === generateInscricaoEstadual['al'](valor);\n },\n\n ap: function (valor: any) {\n return valor === generateInscricaoEstadual['ap'](valor);\n },\n\n ba: function (valor: any) {\n return valor === generateInscricaoEstadual['ba'](valor);\n },\n\n ce: function (valor: any) {\n return valor === generateInscricaoEstadual['ce'](valor);\n },\n\n df: function (valor: any) {\n return valor === generateInscricaoEstadual['df'](valor);\n },\n\n es: function (valor: any) {\n return valor === generateInscricaoEstadual['es'](valor);\n },\n go: function (valor: any) {\n return valor === generateInscricaoEstadual['go'](valor);\n },\n ma: function (valor: any) {\n return valor === generateInscricaoEstadual['ma'](valor);\n },\n\n mg: function (valor: any) {\n return valor === generateInscricaoEstadual['mg'](valor);\n },\n\n ms: function (valor: any) {\n return valor === generateInscricaoEstadual['ms'](valor);\n },\n mt: function (valor: any) {\n return valor === generateInscricaoEstadual['mt'](valor);\n },\n pa: function (valor: any) {\n return valor === generateInscricaoEstadual['pa'](valor);\n },\n\n pb: function (valor: any) {\n return valor === generateInscricaoEstadual['pb'](valor);\n },\n\n pe: function (valor: any) {\n return valor === generateInscricaoEstadual['pe'](valor);\n },\n\n pi: function (valor: any) {\n return valor === generateInscricaoEstadual['pi'](valor);\n },\n\n pr: function (valor: any) {\n return valor === generateInscricaoEstadual['pr'](valor);\n },\n rj: function (valor: any) {\n return valor === generateInscricaoEstadual['rj'](valor);\n },\n\n rn: function (valor: any) {\n return valor === generateInscricaoEstadual['rn'](valor);\n },\n ro: function (valor: any) {\n return valor === generateInscricaoEstadual['ro'](valor);\n },\n rr: function (valor: any) {\n return valor === generateInscricaoEstadual['rr'](valor);\n },\n\n rs: function (valor: any) {\n return valor === generateInscricaoEstadual['rs'](valor);\n },\n\n sc: function (valor: any) {\n return valor === generateInscricaoEstadual['sc'](valor);\n },\n\n se: function (valor: any) {\n return valor === generateInscricaoEstadual['se'](valor);\n },\n\n sp: function (valor: string | boolean) {\n return valor === generateInscricaoEstadual['sp'](valor);\n },\n\n to: function (valor: any) {\n return valor === generateInscricaoEstadual['to'](valor);\n },\n};\n\n\n\n\nexport function validate_inscricaoestadual(ie: string | Array<string>, estado: any) {\n if (eIndefinido(estado) || estado === null) {\n estado = '';\n }\n\n estado = estado.toLowerCase();\n\n if (estado !== '' && !(estado in funcoes)) {\n return new Error('estado não é válido');\n }\n\n if (eIndefinido(ie)) {\n return new Error('ie deve ser fornecida');\n }\n\n if (Array.isArray(ie)) {\n let retorno = true;\n ie.forEach(function (i) {\n if (!validate_inscricaoestadual(i, estado)) {\n retorno = false;\n }\n });\n return retorno;\n }\n\n if (typeof ie !== 'string') {\n return new Error('ie deve ser string ou array de strings');\n }\n\n if (!allNumbersAreSame(ie)) {\n return new Error('ie com todos dígitos iguais');\n }\n\n if (ie.match(/^ISENTO$/i)) {\n return true;\n }\n\n ie = ie.replace(/[\\.|\\-|\\/|\\s]/g, '');\n\n if (estado === '') {\n if (lookup(ie)) {\n return true;\n } else {\n return false;\n }\n }\n\n if (/^\\d+$/.test(ie) || estado === 'sp' || funcoes[estado]) {\n return funcoes[estado](ie);\n }\n\n\n return false;\n}\n\nexport const MASKSIE: BigObject<MaskType> = {\n ac: {\n text: '01.004.823/001-12',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n al: {\n text: '240000048',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n am: {\n text: '04.145.871-0',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n ap: {\n text: '240000048',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n ba: {\n text: '1234567-48',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numberLength = getSizeNumbers(userInput);\n if (!userInput || numberLength > 8) {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n }\n }\n },\n ce: {\n text: '06.000001-5',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n df: {\n text: '06 000001 123-55',\n textMask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n es: {\n text: '082.560.67-6',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n go: {\n text: '06.000.001-5',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n ma: {\n text: '12.104.376-2',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n mg: {\n text: '001.819.263/0048',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n ms: {\n text: '001819263',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n mt: {\n text: '0018192630-1',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pa: {\n text: '06-000001-5',\n textMask: [/\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pb: {\n text: '06000001-5',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pe: {\n text: '0192310-24',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n pi: {\n text: '19.301.656-7',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pr: {\n text: '19301656-78',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n rj: {\n text: '20.040.04-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n rn: {\n text: '20.040.040-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numberLength = getSizeNumbers(userInput);\n\n if (!userInput || numberLength > 9) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n },\n ro: {\n text: '101.62521-3',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n rr: {\n text: '24006628-1',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n rs: {\n text: '024/0440013',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n sc: {\n text: '271.234.563',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n se: {\n text: '27123456-3',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n sp: {\n text: '114.814.878.119',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n to: {\n text: '11 81 4878119',\n textMask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n};\n\nfunction getSizeNumbers(userInput: string) {\n const numbers: any = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n return numberLength\n}\n\nfunction eIndefinido(objeto: any) {\n return typeof objeto === typeof undefined;\n}\n\nfunction tamanhoNaoE(string: { length: number; }, tamanho = 9) {\n if (eIndefinido(tamanho)) {\n tamanho = 9;\n }\n\n return string.length !== tamanho;\n}\n\nfunction tamanhoE(string: any[], tamanho: number) {\n return !tamanhoNaoE(string, tamanho);\n}\n\nfunction serie(de: number, ate: number) {\n const resultado = [];\n\n while (de <= ate) {\n resultado.push(de++);\n }\n\n return resultado;\n}\n\nfunction primeiros(string: any, quantidade = 8) {\n if (eIndefinido(quantidade)) {\n quantidade = 8;\n }\n\n return string.substring(0, quantidade);\n}\n\nfunction substracaoPor11SeMaiorQue2CasoContrario0(valor: number) {\n return valor < 2 ? 0 : 11 - valor;\n}\n\nfunction mod(valor: string, multiplicadores = serie(2, 9), divisor = 11) {\n if (eIndefinido(divisor)) {\n divisor = 11;\n }\n\n if (eIndefinido(multiplicadores)) {\n multiplicadores = serie(2, 9);\n }\n\n let i = 0;\n\n return valor.split('').reduceRight(function (anterior: number, atual: string) {\n if (i > multiplicadores.length - 1) {\n i = 0;\n }\n\n return (multiplicadores[i++] * parseInt(atual, 10)) + anterior;\n }, 0) % divisor;\n}\n\nfunction calculoTrivialGenerate(valor: any, base: any = null, validarTamanho = false) {\n if (!validarTamanho && tamanhoNaoE(valor)) {\n return false;\n }\n if (eIndefinido(base)) {\n base = primeiros(valor);\n }\n if (!base) {\n base = primeiros(valor);\n }\n\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return base + digito;\n}\n\nfunction naoComecaCom(string: any, valor: string) {\n return string.substring(0, valor.length) !== valor;\n}\n\nfunction entre(valor: string | number, limiteInferior: number, limiteSuperior: number) {\n if (typeof valor === 'string') {\n valor = parseInt(valor, 10);\n }\n\n return valor >= limiteInferior && valor <= limiteSuperior;\n}\n\n\nfunction lookup(ie: any) {\n const resultado = [];\n\n for (const estado in funcoes) {\n if (funcoes[estado](ie)) {\n resultado.push(estado);\n }\n }\n\n if (tamanhoE(resultado, 0)) {\n return false;\n } else {\n return resultado;\n }\n}\n\n","\n\nexport const PLACAS_RANGE = [\n ['AAA0001', 'BEZ9999', 'PR', '02/1990'],\n ['BFA0001', 'GKI9999', 'SP', '10/1991'],\n ['GKJ0001', 'HOK9999', 'MG', '09/1991'],\n ['HOL0001', 'HQE9999', 'MA', '01/1992'],\n ['HQF0001', 'HTW9999', 'MS', '03/1992'],\n ['HTX0001', 'HZA9999', 'CE', '10/1992'],\n ['HZB0001', 'IAP9999', 'SE', '09/1993'],\n ['IAQ0001', 'JDO9999', 'RS', '03/1992'],\n ['JDP0001', 'JKR9999', 'DF', '04/1994'],\n ['JKS0001', 'JSZ9999', 'BA', '08/1993'],\n ['JTA0001', 'JWE9999', 'PA', '07/1993'],\n ['JWF0001', 'JXY9999', 'AM', '09/1993'],\n ['JXZ0001', 'KAU9999', 'MT', '09/1993'],\n ['KAV0001', 'KFC9999', 'GO', '05/1994'],\n ['KFD0001', 'KME9999', 'PE', '08/1994'],\n ['KMF0001', 'LVE9999', 'RJ', '05/1994'],\n ['LVF0001', 'LWQ9999', 'PI', '04/1996'],\n ['LWR0001', 'MMM9999', 'SC', '06/1996'],\n ['MMN0001', 'MOW9999', 'PB', '07/1996'],\n ['MOX0001', 'MTZ9999', 'ES', '12/1995'],\n ['MUA0001', 'MVK9999', 'AL', '08/1996'],\n ['MVL0001', 'MXG9999', 'TO', '11/1996'],\n ['MXH0001', 'MZM9999', 'RN', '06/1998'],\n ['MZN0001', 'NAG9999', 'AC', '06/1998'],\n ['NAH0001', 'NBA9999', 'RR', '07/1998'],\n ['NBB0001', 'NEH9999', 'RO', '07/1998'],\n ['NEI0001', 'NFB9999', 'AP', '09/1998'],\n ['NFC0001', 'NGZ9999', 'GO', '08/2003'],\n ['NHA0001', 'NHT9999', 'MA', '12/2006'],\n ['NHU0001', 'NIX9999', 'PI', '05/2007'],\n ['NIY0001', 'NJW9999', 'MT', '10/2007'],\n ['NJX0001', 'NLU9999', 'GO', '11/2007'],\n ['NLV0001', 'NMO9999', 'AL', '01/2008'],\n ['NMP0001', 'NNI9999', 'MA', '05/2008'],\n ['NNJ0001', 'NOH9999', 'RN', '07/2008'],\n ['NOI0001', 'NPB9999', 'AM', '07/2008'],\n ['NPC0001', 'NPQ9999', 'MT', '09/2008'],\n ['NPR0001', 'NQK9999', 'PB', '11/2008'],\n ['NQL0001', 'NRE9999', 'CE', '12/2008'],\n ['NRF0001', 'NSD9999', 'MS', '11/2009'],\n ['NSE0001', 'NTC9999', 'PA', '11/2009'],\n ['NTD0001', 'NTW9999', 'BA', '02/2010'],\n ['NTX0001', 'NUG9999', 'MT', '03/2010'],\n ['NUH0001', 'NUL9999', 'RR', '06/2010'],\n ['NUM0001', 'NVF9999', 'CE', '06/2010'],\n ['NVG0001', 'NVN9999', 'SE', '03/2010'],\n ['NVO0001', 'NWR9999', 'GO', '03/2010'],\n ['NWS0001', 'NXQ9999', 'MA', '07/2010'],\n ['NXR0001', 'NXT9999', 'AC', '05/2011'],\n ['NXU0001', 'NXW9999', 'PE', '07/2010'],\n ['NXX0001', 'NYG9999', 'MG', '10/2011'],\n ['NYH0001', 'NZZ9999', 'BA', '10/2010'],\n ['OAA0001', 'OAO9999', 'AM', '12/2010'],\n ['OAP0001', 'OBS9999', 'MT', '05/2011'],\n ['OBT0001', 'OCA9999', 'PA', '07/2011'],\n ['OCB0001', 'OCU9999', 'CE', '02/2011'],\n ['OCV0001', 'ODT9999', 'ES', '05/2011'],\n ['ODU0001', 'OEI9999', 'PI', '09/2011'],\n ['OEJ0001', 'OES9999', 'SE', '08/2011'],\n ['OET0001', 'OFH9999', 'PB', '04/2011'],\n ['OFI0001', 'OFW9999', 'PA', '03/2011'],\n ['OFX0001', 'OGG9999', 'PB', '06/2011'],\n ['OGH0001', 'OHA9999', 'GO', '04/2011'],\n ['OHB0001', 'OHK9999', 'AL', '09/2011'],\n ['OHL0001', 'OHW9999', 'RO', '11/2011'],\n ['OHX0001', 'OIQ9999', 'CE', '12/2011'],\n ['OIR0001', 'OJQ9999', 'MA', '01/2012'],\n ['OJR0001', 'OKC9999', 'RN', '04/2012'],\n ['OKD0001', 'OKH9999', 'SC', '02/2014'],\n ['OKI0001', 'OLG9999', 'BA', '10/2011'],\n ['OLH0001', 'OLN9999', 'TO', '02/2012'],\n ['OLO0001', 'OMH9999', 'MG', '03/2012'],\n ['OMI0001', 'OOF9999', 'GO', '04/2012'],\n ['OOG0001', 'OOU9999', 'MS', '02/2012'],\n ['OOV0001', 'ORC9999', 'MG', '06/2012'],\n ['ORD0001', 'ORM9999', 'AL', '01/2012'],\n ['ORN0001', 'OSV9999', 'CE', '07/2012'],\n ['OSW0001', 'OTZ9999', 'PA', '08/2012'],\n ['OUA0001', 'OUE9999', 'PI', '11/2012'],\n ['OUF0001', 'OVD9999', 'BA', '12/2012'],\n ['OVE0001', 'OVF9999', 'ES', '12/2012'],\n ['OVG0001', 'OVG9999', 'AC', '05/2013'],\n ['OVH0001', 'OVL9999', 'ES', '07/2013'],\n ['OVM0001', 'OVV9999', 'DF', '11/2013'],\n ['OVW0001', 'OVY9999', 'PI', '10/2013'],\n ['OVZ0001', 'OWG9999', 'RN', '06/2013'],\n ['OWH0001', 'OXK9999', 'MG', '10/2013'],\n ['OXL0001', 'OXL9999', 'RO', '11/2013'],\n ['OXM0001', 'OXM9999', 'AM', '11/2013'],\n ['OXN0001', 'OXN9999', 'AL', '11/2013'],\n ['OXO0001', 'OXO9999', 'PB', '11/2013'],\n ['OXP0001', 'OXP9999', 'AC', '12/2013'],\n ['OXQ0001', 'OXZ9999', 'MA', '04/2014'],\n ['OYA0001', 'OYC9999', 'TO', '11/2013'],\n ['OYD0001', 'OYK9999', 'ES', '12/2013'],\n ['OYL0001', 'OYZ9999', 'PE', '02/2014'],\n ['OZA0001', 'OZA9999', 'CE', '01/2014'],\n ['OZB0001', 'OZB9999', 'SE', '01/2014'],\n ['OZC0001', 'OZV9999', 'BA', '03/2014'],\n ['OZW0001', 'PBZ9999', 'DF', '05/2014'],\n ['PCA0001', 'PED9999', 'PE', '12/2014'],\n ['PEE0001', 'PFQ9999', 'PE', '09/2010'],\n ['PFR0001', 'PGK9999', 'PE', '07/2012'],\n ['PGL0001', 'PGU9999', 'PE', '10/2013'],\n ['PGV0001', 'PGZ9999', 'PE', '12/2014'],\n ['PHA0001', 'PHZ9999', 'AM', '06/2014'],\n ['PIA0001', 'PIZ9999', 'PI', '06/2014'],\n ['PJA0001', 'PLZ9999', 'BA', '10/2014'],\n ['PMA0001', 'POZ9999', 'CE', '06/2014'],\n ['PPA0001', 'PPZ9999', 'ES', '08/2014'],\n ['PQA0001', 'PRZ9999', 'GO', '03/2015'],\n ['PSA0001', 'PTZ9999', 'MA', '12/2014'],\n ['PUA0001', 'PZZ9999', 'MG', '05/2014'],\n ['QAA0001', 'QAZ9999', 'MS', '12/2014'],\n ['QBA0001', 'QCZ9999', 'MT', '05/2014'],\n ['QDA0001', 'QEZ9999', 'PA', '10/2014'],\n ['QFA0001', 'QFZ9999', 'PB', '05/2014'],\n ['QGA0001', 'QGZ9999', 'RN', '09/2014'],\n ['QHA0001', 'QJZ9999', 'SC', '05/2014'],\n ['QKA0001', 'QKM9999', 'TO', '11/2014'],\n ['QKN0001', 'QKZ9999', 'SE', '06/2014'],\n ['QLA0001', 'QLM9999', 'AL', '09/2015'],\n ['QLN0001', 'QLT9999', 'AP', '01/2015'],\n ['QLU0001', 'QLZ9999', 'AC', '08/2014'],\n ['QMA0001', 'QMP9999', 'SE', '03/2017'],\n ['QMQ0001', 'QQZ9999', 'MG', '07/2017'],\n ['QRA0001', 'QRA9999', 'RO', '11/2017'],\n ['QRB0001', 'QRZ9999', 'ES', '05/2018'],\n ['QSA0001', 'QSZ9999', 'PB', '04/2018'],\n ['QTA0001', 'QTB9999', 'RO', '08/2018'],\n ['QTC0001', 'RIN9999', 'BR', '00/0000'],\n ['RIO0001', 'RIO9999', 'RJ', '09/2018'],\n ['RLA0001', 'SAU9999', 'BR', '00/0000'],\n ['SAV0001', 'SAV9999', 'SP', '09/2009'],\n];\n\nexport const PLACAS_INVALID = { start: 'SAW0001', end: 'ZZZ9999' } // || Sequências ainda não definidas\n\nexport function validate_placa(placa: string | number, incluiMercosul?: boolean) {\n const placaClean = placa.toString()\n .replace(/-/g, '')\n .replace(/ /g, '')\n .toUpperCase();\n const regex = {\n legadoBR: /^[A-Z]{3}[0-9]{4}$/,\n mercosulBR: /^[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}$/,\n mercosulAR: /^[A-Z]{2}[0-9]{3}[A-Z]{2}$|^[A-Z]{1}[0-9]{3}[A-Z]{3}$/,\n mercosulBO: /^[A-Z]{2}[0-9]{5}$/,\n mercosulPY: /^[A-Z]{4}[0-9]{3}$|^[0-9]{3}[A-Z]{4}$/,\n mercosulUY: /^[A-Z]{3}[0-9]{4}$/,\n }\n const isLegadoBRInvalid =\n placaClean >= PLACAS_INVALID.start && placaClean <= PLACAS_INVALID.end;\n if ((regex.legadoBR.test(placaClean) && !isLegadoBRInvalid)\n || (regex.mercosulBR.test(placaClean))\n || (incluiMercosul && (\n (regex.mercosulAR.test(placaClean))\n || (regex.mercosulBO.test(placaClean))\n || (regex.mercosulPY.test(placaClean))\n || (regex.mercosulUY.test(placaClean))\n ))) {\n return true;\n }\n return false;\n}\n","import { ESTADOS_SIGLA } from './estados';\nimport { getAllDigits, fillString, modulo11Custom } from './utils';\n\n/**\n * \n * @param uf - UF do número da guia. Ex: 35(SP), 81(PE)\n * @param ano - ANO do número da guia. Ex: 2018, 2019\n * @param tipo - TIPO da guia. Aih = 1, APAC = 2\n */\nexport function create_aih(value: string | number | any[]) {\n value = getAllDigits(value.toString());\n if (value.length > 12) {\n value = value.toString().substr(0, value.length - 1);\n }\n const cod = parseInt(value);\n const calc = Math.ceil(cod - (cod / 11));\n const digito = calc.toString().substr(-1);\n return digito;\n}\n\nexport function create_certidao(value: string) {\n\n if (value.length > 30) {\n value = value.substring(0, value.length - 2);\n }\n let b1 = parseInt(value.slice(29));\n let b2 = parseInt(value.slice(28, 29));\n let b3 = parseInt(value.slice(27, 28));\n let b4 = parseInt(value.slice(26, 27));\n let b5 = parseInt(value.slice(25, 26));\n let b6 = parseInt(value.slice(24, 25));\n let b7 = parseInt(value.slice(23, 24));\n let b8 = parseInt(value.slice(22, 23));\n let b9 = parseInt(value.slice(21, 22));\n let b10 = parseInt(value.slice(20, 21));\n let b11 = parseInt(value.slice(19, 20));\n let b12 = parseInt(value.slice(18, 19));\n let b13 = parseInt(value.slice(17, 18));\n let b14 = parseInt(value.slice(16, 17));\n let b15 = parseInt(value.slice(15, 16));\n let b16 = parseInt(value.slice(14, 15));\n let b17 = parseInt(value.slice(13, 14));\n let b18 = parseInt(value.slice(12, 13));\n let b19 = parseInt(value.slice(11, 12));\n let b20 = parseInt(value.slice(10, 11));\n let b21 = parseInt(value.slice(9, 10));\n let b22 = parseInt(value.slice(8, 9));\n let b23 = parseInt(value.slice(7, 8));\n let b24 = parseInt(value.slice(6, 7));\n let b25 = parseInt(value.slice(5, 6));\n let b26 = parseInt(value.slice(4, 5));\n let b27 = parseInt(value.slice(3, 4));\n let b28 = parseInt(value.slice(2, 3));\n let b29 = parseInt(value.slice(1, 2));\n let b30 = parseInt(value.slice(0, 1));\n\n let certPriDig = (b1 * 9 + b2 * 8 + b3 * 7 + b4 * 6 + b5 * 5 + b6 * 4 + b7 * 3 + b8 * 2 + b9 * 1 + b10 * 0 + b11 * 10 + b12 * 9 + b13 * 8 + b14 * 7 + b15 * 6 + b16 * 5 + b17 * 4 + b18 * 3 + b19 * 2 + b20 * 1 + b21 * 0 + b22 * 10 + b23 * 9 + b24 * 8 + b25 * 7 + b26 * 6 + b27 * 5 + b28 * 4 + b29 * 3 + b30 * 2) % 11;\n if (certPriDig == 10) { certPriDig = 1; }\n let certSegDig = (certPriDig * 9 + b1 * 8 + b2 * 7 + b3 * 6 + b4 * 5 + b5 * 4 + b6 * 3 + b7 * 2 + b8 * 1 + b9 * 0 + b10 * 10 + b11 * 9 + b12 * 8 + b13 * 7 + b14 * 6 + b15 * 5 + b16 * 4 + b17 * 3 + b18 * 2 + b19 * 1 + b20 * 0 + b21 * 10 + b22 * 9 + b23 * 8 + b24 * 7 + b25 * 6 + b26 * 5 + b27 * 4 + b28 * 3 + b29 * 2 + b30 * 1) % 11;\n if (certSegDig == 10) { certSegDig = 1; }\n let certDV: any = certPriDig * 10 + certSegDig;\n if (certDV == 0) { certDV = \"00\"; }\n if (certDV > 0 && certDV < 10) { certDV = \"0\" + certDV; }\n\n return certDV.toString();\n}\n\nexport function create_cnhespelho(value: string) {\n let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 8, false);\n return v1\n}\n\nexport function create_renachestadual(value: string) {\n\n const state = value.substr(0, 2).toLowerCase()\n if (!ESTADOS_SIGLA.includes(state)) {\n return false\n }\n\n let digits = value.substr(2)\n digits = digits.replace(/[^\\d]/g, '');\n if (digits.length !== 9) {\n return false;\n }\n\n let v1 = modulo11Custom(digits.substr(0, digits.length - 1), 1, 11);\n return '' + v1\n}\n\n/**\n * \n * @param value \n * @returns \n */\nexport function create_renachseguranca(value: string) {\n value = value.replace(/[^\\d]+/g, '');\n if (value.length !== 11) {\n return false;\n }\n\n let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 11);\n return \"\" + v1;\n}\n\n/**\n * Dígito verificador da CNH não é mais o módulo 11 conforme últimas resoluções\n * @param value \n * @returns \n */\nexport function create_cnh(value: string) {\n value = value.replace(/[^\\d]+/g, '');\n\n if (value.length != 11 || value === '0') {\n return false;\n }\n // let v1 = modulo11Custom(value.substr(0, value.length - 2), 2);\n // if (v1 === '10') v1 = '00'\n let v1 = value.substr(-2)\n return v1;\n}\n\nexport function create_cnpj(cnpj: string) {\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n\n if (cnpj === '') {\n return false;\n }\n\n if (cnpj.length !== 14) {\n return false;\n }\n\n // Elimina CNPJs invalidos conhecidos\n if (cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999') {\n return false;\n }\n\n // Valida DVs\n let tamanho: number = cnpj.length - 2\n let numeros: any = cnpj.substring(0, tamanho);\n let soma: any = 0;\n let pos = tamanho - 7;\n for (let i = tamanho; i >= 1; i--) {\n soma += numeros.charAt(tamanho - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n\n }\n const resultados = [0, 0];\n resultados[0] = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n tamanho = tamanho + 1;\n numeros = cnpj.substring(0, tamanho);\n soma = 0;\n pos = tamanho - 7;\n for (let i = tamanho; i >= 1; i--) {\n soma += numeros.charAt(tamanho - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n resultados[1] = soma % 11 < 2 ? 0 : 11 - soma % 11;\n return resultados;\n}\n\nexport function create_cns(number: string) {\n number = getAllDigits(number);\n let somaInicial = 0;\n for (let i = 0; i < number.length - 1; i++) {\n somaInicial += parseInt(number[i]) * (15 - i);\n }\n let soma = somaInicial;\n let rest = 0;\n while (soma % 11 !== 0) {\n rest++;\n soma = somaInicial + (rest * 1)\n }\n return number.substr(-2, 1) + rest;\n}\n\nexport function create_cpf(strCPF: string) {\n strCPF = strCPF.replace(/[^\\d]+/g, '');\n if (strCPF === '00000000000') {\n return false;\n }\n\n // const r1 = modulo11(strCPF.substr(0, strCPF.length - 2))\n // const r2 = modulo11(strCPF.substr(0, strCPF.length - 2) + '' + r1)\n // const restos = [\n // r1, r2\n // ];\n\n const restoscustom = modulo11Custom(strCPF.substr(0, strCPF.length - 2), 2, 12);\n return restoscustom\n}\n\nexport function create_cartaocredito(number: string) {\n\n // if (number.length > 18) { alert(\"Erro. A rotina não abrange cartões\\ncom mais de 18 dígitos (fora o DV).\\nIntroduza 18 dígitos, no máximo.\"); }\n\n number = \"00000000000000000\" + number;\n number = number.slice(number.length - 18);\n\n let b1 = parseInt(number.slice(17));\n let b2 = parseInt(number.slice(16, 17));\n let b3 = parseInt(number.slice(15, 16));\n let b4 = parseInt(number.slice(14, 15));\n let b5 = parseInt(number.slice(13, 14));\n let b6 = parseInt(number.slice(12, 13));\n let b7 = parseInt(number.slice(11, 12));\n let b8 = parseInt(number.slice(10, 11));\n let b9 = parseInt(number.slice(9, 10));\n let b10 = parseInt(number.slice(8, 9));\n let b11 = parseInt(number.slice(7, 8));\n let b12 = parseInt(number.slice(6, 7));\n let b13 = parseInt(number.slice(5, 6));\n let b14 = parseInt(number.slice(4, 5));\n let b15 = parseInt(number.slice(3, 4));\n let b16 = parseInt(number.slice(2, 3));\n let b17 = parseInt(number.slice(1, 2));\n let b18 = parseInt(number.slice(0, 1));\n\n\n let ci17 = b1 * 2; if (ci17 > 9) { ci17 = ci17 - 9; }\n let ci1516 = b3 * 2; if (ci1516 > 9) { ci1516 = ci1516 - 9; }\n let ci1314 = b5 * 2; if (ci1314 > 9) { ci1314 = ci1314 - 9; }\n let ci1112 = b7 * 2; if (ci1112 > 9) { ci1112 = ci1112 - 9; }\n let ci910 = b9 * 2; if (ci910 > 9) { ci910 = ci910 - 9; }\n let ci78 = b11 * 2; if (ci78 > 9) { ci78 = ci78 - 9; }\n let ci56 = b13 * 2; if (ci56 > 9) { ci56 = ci56 - 9; }\n let ci34 = b15 * 2; if (ci34 > 9) { ci34 = ci34 - 9; }\n let ci12 = b17 * 2; if (ci12 > 9) { ci12 = ci12 - 9; }\n let ci1617 = b2;\n let ci1415 = b4;\n let ci1213 = b6;\n let ci1011 = b8;\n let ci89 = b10;\n let ci67 = b12;\n let ci45 = b14;\n let ci23 = b16;\n let ci01 = b18;\n\n let ccredDig = (ci1617 + ci1415 + ci1213 + ci1011 + ci89 + ci67 + ci45 + ci23 + ci01 + ci17 + ci1516 + ci1314 + ci1112 + ci910 + ci78 + ci56 + ci34 + ci12) % 10;\n ccredDig = 10 - ccredDig; if (ccredDig == 10) { ccredDig = 0; }\n\n return ccredDig;\n}\n\nexport function create_ect(number: string) {\n number = getAllDigits(number);\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let regEctDig = (b1 * 7 + b2 * 9 + b3 * 5 + b4 * 3 + b5 * 2 + b6 * 4 + b7 * 6 + b8 * 8) % 11;\n regEctDig = 11 - regEctDig;\n if (regEctDig == 11) { regEctDig = 5; }\n if (regEctDig == 10) { regEctDig = 0; }\n return regEctDig;\n}\n\nexport function create_pispasep(number: string) {\n\n number = getAllDigits(number);\n let nis = fillString(number, 11, '0');\n\n let d;\n let p = 2, c = 9;\n for (d = 0; c >= 0; c--, (p < 9) ? p++ : p = 2) {\n d += parseInt(nis[c]) * p;\n }\n\n const digit = (((10 * d) % 11) % 10);\n return digit;\n}\n\nexport function create_renavam(renavam: string) {\n let dig1 = 0;\n while (renavam.length < 11) {\n renavam = '0' + renavam;\n }\n\n dig1 = (renavam.charCodeAt(0) - 48) * 3 + (renavam.charCodeAt(1) - 48) * 2 + (renavam.charCodeAt(2) - 48) * 9 + (renavam.charCodeAt(3) - 48) * 8 +\n (renavam.charCodeAt(4) - 48) * 7 + (renavam.charCodeAt(5) - 48) * 6 + (renavam.charCodeAt(6) - 48) * 5 +\n (renavam.charCodeAt(7) - 48) * 4 + (renavam.charCodeAt(8) - 48) * 3 + (renavam.charCodeAt(9) - 48) * 2;\n dig1 = dig1 * 10;\n let resto = (dig1 % 11);\n if (resto === 10) {\n return 0;\n } else {\n return resto;\n }\n}\n\n\n\n/**\n * \n * Font: http://ghiorzi.org/index.htm\n * @param number \n */\nexport function create_processo(number: string) {\n number = getAllDigits(number);\n number = \"00000000000000000\" + number;\n number = number.slice(number.length - 18);\n\n let b1 = parseInt(number.slice(0, 1)) * 10000000000;\n let b2 = parseInt(number.slice(1, 2)) * 1000000000;\n let b3 = parseInt(number.slice(2, 3)) * 100000000;\n let b4 = parseInt(number.slice(3, 4)) * 10000000;\n let b5 = parseInt(number.slice(4, 5)) * 1000000;\n let b6 = parseInt(number.slice(5, 6)) * 100000;\n let b7 = parseInt(number.slice(6, 7)) * 10000;\n let b8 = parseInt(number.slice(7, 8)) * 1000;\n let b9 = parseInt(number.slice(8, 9)) * 100;\n let b10 = parseInt(number.slice(9, 10)) * 10;\n let b11 = parseInt(number.slice(10, 11));\n\n const proc1a11 = b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + b10 + b11;\n const resto1 = proc1a11 % 97;\n\n let b12 = parseInt(number.slice(11, 12)) * 1000000;\n let b13 = parseInt(number.slice(12, 13)) * 100000;\n let b14 = parseInt(number.slice(13, 14)) * 10000;\n let b15 = parseInt(number.slice(14, 15)) * 1000;\n let b16 = parseInt(number.slice(15, 16)) * 100;\n let b17 = parseInt(number.slice(16, 17)) * 10;\n let b18 = parseInt(number.slice(17));\n\n const proc12a18 = b12 + b13 + b14 + b15 + b16 + b17 + b18;\n const resto2 = (resto1 * 10000000 * 100 + proc12a18 * 100) % 97;\n\n let procJudDV: any = 98 - resto2;\n\n if (procJudDV < 10) {\n procJudDV = \"0\" + procJudDV;\n }\n\n let procJudCompl = b1 / 10000 + b2 / 10000 + b3 / 10000 + b4 / 10000 + b5 / 10000 + b6 / 10000 + b7 / 10000 + \"-\" + procJudDV + \".\" + b8 / 1000 + b9 / 100 + b10 / 10 + b11 + \".\" + b12 / 1000000 + \".\" + b13 / 100000 + b14 / 10000 + \".\" + b15 / 1000 + b16 / 100 + b17 / 10 + b18;\n\n procJudCompl = \"000000\" + procJudCompl;\n const result = procJudCompl.slice(procJudCompl.length - 25);\n return result;\n}\n\n\nexport function create_titulo_atual(titulo: string) {\n const tit = titulo;\n let dig1 = 0;\n let dig2 = 0;\n const tam = tit.length;\n const estado = tit.substr(tam - 4, 2);\n titulo = tit.substr(0, tam - 2);\n titulo = '000000000000' + titulo;\n titulo = titulo.substr(titulo.length - 11, titulo.length - 1);\n const exce = (estado === '01') || (estado === '02');\n dig1 = (titulo.charCodeAt(0) - 48) * 2 + (titulo.charCodeAt(1) - 48) * 9 + (titulo.charCodeAt(2) - 48) * 8 +\n (titulo.charCodeAt(3) - 48) * 7 + (titulo.charCodeAt(4) - 48) * 6 + (titulo.charCodeAt(5) - 48) * 5 +\n (titulo.charCodeAt(6) - 48) * 4 + (titulo.charCodeAt(7) - 48) * 3 + (titulo.charCodeAt(8) - 48) * 2;\n let resto = (dig1 % 11);\n if (resto === 0) {\n if (exce) {\n dig1 = 1;\n } else {\n dig1 = 0;\n }\n } else {\n if (resto === 1) {\n dig1 = 0;\n } else {\n dig1 = 11 - resto;\n }\n }\n dig2 = (titulo.charCodeAt(9) - 48) * 4 + (titulo.charCodeAt(10) - 48) * 3 + dig1 * 2;\n resto = (dig2 % 11);\n if (resto === 0) {\n if (exce) {\n dig2 = 1;\n } else {\n dig2 = 0;\n }\n } else {\n if (resto === 1) {\n dig2 = 0;\n } else {\n dig2 = 11 - resto;\n }\n }\n return dig1.toString() + dig2.toString();\n}\n\nexport function create_titulo(titNum: string) {\n titNum = getAllDigits(titNum);\n\n if (titNum.length > 11) {\n titNum = titNum.substr(0, 11);\n }\n\n titNum = \"00000000\" + titNum;\n titNum = titNum.slice(titNum.length - 11);\n\n let a1 = parseInt(titNum.slice(10));\n let a2 = parseInt(titNum.slice(9, 10));\n let a3 = parseInt(titNum.slice(8, 9));\n let a4 = parseInt(titNum.slice(7, 8));\n let a5 = parseInt(titNum.slice(6, 7));\n let a6 = parseInt(titNum.slice(5, 6));\n let a7 = parseInt(titNum.slice(4, 5));\n let a8 = parseInt(titNum.slice(3, 4));\n let a9 = parseInt(titNum.slice(2, 3));\n let a10 = parseInt(titNum.slice(1, 2));\n let a11 = parseInt(titNum.slice(0, 1));\n\n if (a2 * 10 + a1 == 0 || a2 * 10 + a1 > 28) {\n throw new Error(\"Esse nº é suspeito, porque a identificação da \\nUF (últimos 2 dígitos) deve estar entre 01 e 28.\");\n }\n\n let titExcecao1 = 0;\n let titExcecao2 = 0;\n\n let titPriDig = (a3 * 9 + a4 * 8 + a5 * 7 + a6 * 6 + a7 * 5 + a8 * 4 + a9 * 3 + a10 * 2 + a11 * 9) % 11;\n if (titPriDig == 0) { titExcecao1 = 1; }\n if (titPriDig == 10) { titPriDig = 0; }\n if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao1 == 1)) { titPriDig = 1; }\n\n let titSegDig = (titPriDig * 9 + a1 * 8 + a2 * 7) % 11;\n if (titSegDig == 0) { titExcecao2 = 1; }\n if (titSegDig == 10) { titSegDig = 0; }\n if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao2 == 1)) { titSegDig = 1; }\n\n let titDV: any = titPriDig * 10 + titSegDig;\n if (titDV == 0) { titDV = \"00\"; }\n if (titDV > 0 && titDV < 10) { titDV = \"0\" + titDV; }\n\n return titDV.toString();\n}","import { BigObject } from './interfaces';\n\nexport function rg_sp(number: string) {\n // if(number.length>8){alert(\"Erro. Não existe RG SP\\ncom mais de 8 dígitos.\");}\n\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let cispDig: any = (b1 * 2 + b2 * 3 + b3 * 4 + b4 * 5 + b5 * 6 + b6 * 7 + b7 * 8 + b8 * 9) % 11;\n if (cispDig == 10) {\n cispDig = \"X\";\n }\n\n return cispDig;\n}\n\nexport function rg_rj(number: string) {\n\n\n // if(number.length>8){alert(\"Erro. Não existe RG-RJ/MaSP-MG\\ncom mais de 8 dígitos.\");}\n\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let ci7 = b1 * 2; if (ci7 > 9) { ci7 = ci7 - 9; }\n let ci56 = b3 * 2; if (ci56 > 9) { ci56 = ci56 - 9; }\n let ci34 = b5 * 2; if (ci34 > 9) { ci34 = ci34 - 9; }\n let ci12 = b7 * 2; if (ci12 > 9) { ci12 = ci12 - 9; }\n let ci67 = b2;\n let ci45 = b4;\n let ci23 = b6;\n let ci01 = b8;\n\n let cirjDig = (ci7 + ci56 + ci34 + ci12 + ci67 + ci45 + ci23 + ci01) % 10;\n cirjDig = 10 - cirjDig; if (cirjDig == 10) { cirjDig = 0; }\n\n return cirjDig;\n}\n\nconst RG: BigObject<Function> = {\n sp: rg_sp,\n rj: rg_rj\n}\n\nexport default RG;\n","import { BigObject, MaskType } from './interfaces';\n\nexport const IPTUMASKS: BigObject<BigObject<MaskType>> = {\n 'minas-gerais': {\n 'belo-horizonte': {\n text: '000.000.000.000.0', //123.456.789.012.3\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/]\n },\n 'contagem': {\n text: '20.040.040-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers: any = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n\n if (!userInput || numberLength > 9) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n }\n },\n 'sao-paulo': {\n 'sao-paulo': {\n text: '00000000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n }\n },\n 'parana': {\n 'curitiba': {\n text: '00000000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n }\n }\n};\n","import { getAllDigits, makeGenericFaker } from './utils';\nimport { IPTUMASKS } from './iptu_mask';\nimport { BigObject } from './interfaces';\n\nexport function create_iptu_ctba(number: string) {\n number = getAllDigits(number);\n let a1 = parseInt(number.slice(10));\n let a2 = parseInt(number.slice(9, 10));\n let a3 = parseInt(number.slice(8, 9));\n let a4 = parseInt(number.slice(7, 8));\n let a5 = parseInt(number.slice(6, 7));\n let a6 = parseInt(number.slice(5, 6));\n let a7 = parseInt(number.slice(4, 5));\n let a8 = parseInt(number.slice(3, 4));\n let a9 = parseInt(number.slice(2, 3));\n let a10 = parseInt(number.slice(1, 2));\n let a11 = parseInt(number.slice(0, 1));\n\n let iptuctbaDV = 10 - ((a1 * 2 + a2 * 3 + a3 * 4 + a4 * 7 + a5 * 8 + a6 * 9 + a7 * 2 + a8 * 3 + a9 * 4 + a10 * 7 + a11 * 8) % 10);\n if (iptuctbaDV == 10) { iptuctbaDV = 0; }\n return iptuctbaDV;\n}\n\nexport function create_iptu_sp(number: string) {\n let a1 = parseInt(number.slice(9));\n let a2 = parseInt(number.slice(8, 9));\n let a3 = parseInt(number.slice(7, 8));\n let a4 = parseInt(number.slice(6, 7));\n let a5 = parseInt(number.slice(5, 6));\n let a6 = parseInt(number.slice(4, 5));\n let a7 = parseInt(number.slice(3, 4));\n let a8 = parseInt(number.slice(2, 3));\n let a9 = parseInt(number.slice(1, 2));\n let a10 = parseInt(number.slice(0, 1));\n\n let iptuspDV = (a1 * 9 + a2 * 8 + a3 * 7 + a4 * 6 + a5 * 5 + a6 * 4 + a7 * 3 + a8 * 2 + a9 + a10 * 10) % 11;\n if (iptuspDV == 10) { iptuspDV = 1; }\n return iptuspDV;\n}\n\n\nexport const faker_iptu = (estado: string | number, cidade: string | number) => {\n if (!IPTUMASKS[estado] || !IPTUMASKS[estado][cidade]) {\n return;\n }\n let iptu = makeGenericFaker(IPTUMASKS[estado][cidade])();\n if (IPTUCREATE[estado] && IPTUCREATE[estado][cidade]) {\n const dv = IPTUCREATE[estado][cidade](iptu);\n const values = iptu.split('');\n values[values.length - 1] = dv;\n iptu = values.join('');\n }\n return iptu;\n}\n\nexport const IPTUCREATE: BigObject<BigObject<Function>> = {\n 'sao-paulo': {\n 'sao-paulo': create_iptu_sp,\n },\n 'parana': {\n 'curitiba': create_iptu_ctba\n }\n}","import { getAllDigits } from './utils';\nimport { IPTUCREATE } from './iptu_create';\nimport { BigObject } from './interfaces';\n\nconst validateRemoveDigito = (number: string | any[], max: number) => {\n number = getAllDigits(number.toString());\n if (number.length > max) {\n return false;\n } else if (number.length === max) {\n number = number.slice(0, -1)\n }\n return number;\n}\n\nexport function validate_iptu_ctba(value: string | any[]) {\n let number = validateRemoveDigito(value, 12);\n if (!number) {\n return false;\n }\n\n const dv = IPTUCREATE['parana']['curitiba'](number);\n return parseInt(value[value.length - 1]) === dv;\n}\n\n/**\n * Índice Cadastral, ou inscrição imobiliária, é o número de identificação do imóvel no cadastro da Prefeitura de Contagem. \n * O índice é composto por 12 (doze) ou 13 (treze) números, sendo: 2 (dois) para a zona fiscal; \n * 3 (três) ou 4 (quatro) para a quadra fiscal; 4 (quatro) para o lote fiscal; e 3 (três) para a unidade.\n */\nexport function validate_iptu_contagem(number: any) {\n number = validateRemoveDigito(number, 12);\n if (!number) {\n return false;\n }\n return true;\n}\n\nexport function validate_iptu_sp(value: string | any[]) {\n let number = validateRemoveDigito(value, 12);\n if (!number) {\n return false;\n }\n const dv = IPTUCREATE['sao-paulo']['sao-paulo'](number);\n return parseInt(value[value.length - 1]) === dv;\n}\n\n// export function validate_iptu(iptu: string) {\n// let iptuClean = iptu.replace(/\\./g, '');\n// iptuClean = iptuClean.replace(/-/g, '');\n// const exp = /[a-z]{2}\\-\\d{2}\\.\\d{3}\\.\\d{3}/;\n// const expClean = /[a-z]{2}\\d{8}/;\n// const state = iptu.substr(0, 2).toUpperCase();\n\n// if (!exp.test(iptu) && !expClean.test(iptuClean) && !(state in CEPRange)) {\n// return false;\n// }\n// if (IPTU[state]) {\n// const validateState = IPTU[state];\n// return validateState(iptu);\n// }\n// return true;\n// }\n\nexport const IPTUVALIDATE: BigObject<BigObject<Function>> = {\n 'sao-paulo': {\n 'sao-paulo': validate_iptu_sp,\n },\n 'minas-gerais': {\n 'contagem': validate_iptu_contagem,\n },\n 'parana': {\n 'curitiba': validate_iptu_ctba\n }\n}","import { IPTUVALIDATE } from './iptu_validate';\nimport { IPTUMASKS } from './iptu_mask';\nimport { getAllDigits } from './utils';\nimport { IPTUCREATE } from './iptu_create';\n\nexport const create_iptu = (number: string, estado: string | number, cidade: string | number) => {\n if (!IPTUCREATE[estado] || !IPTUCREATE[estado][cidade]) {\n return true;\n }\n number = getAllDigits(number);\n return IPTUCREATE[estado][cidade](number);\n};\n\nexport const mask_iptu = (number: string, estado: string, cidade: string) => {\n if (!IPTUMASKS[estado] || !IPTUMASKS[estado][cidade]) {\n return number;\n }\n return IPTUMASKS[estado][cidade];\n};\nexport const validate_iptu = (number: string, estado: string | number, cidade: string | number) => {\n if (!IPTUVALIDATE[estado] || !IPTUVALIDATE[estado][cidade]) {\n return true;\n }\n number = getAllDigits(number);\n return IPTUVALIDATE[estado][cidade](number);\n};","import { getAllDigits, fillString, getAllWords } from './utils';\nimport { BigObject } from './interfaces';\nimport { validate_inscricaoestadual } from './inscricaoestadual';\nimport { validate_placa } from './placa';\nimport {\n create_cnpj, create_cpf,\n create_renavam, create_ect, create_processo, create_titulo_atual, create_cnh, create_certidao, create_aih, create_pispasep, create_cnhespelho, create_renachestadual, create_renachseguranca\n} from './create';\nimport RG from './rg';\nimport { validate_iptu } from './iptu';\nimport { ESTADOS_SIGLA } from './estados';\n\n\nexport function validate_aih(aih: string) {\n const aihClean = aih.replace(/[^\\d]+/g, '');\n const dvOriginal = aihClean.substr(-1);\n const dv = create_aih(aihClean);\n return dvOriginal === dv;\n}\n\nexport function validate_celular(cel: any) {\n let celClean = cel.replace(/[^\\d]+/g, '');\n celClean = celClean.replace(/_/g, '');\n if (celClean.length !== 11) {\n return false;\n }\n if (celClean[0] == 0 || celClean[2] < 5) {\n return false;\n }\n return true;\n}\n\nexport const CEPRange: BigObject<RegExp> = {\n 'SP': /^([1][0-9]{3}|[01][0-9]{4})[0-9]{3}$/g,\n 'RJ': /^[2][0-8][0-9]{3}[0-9]{3}$/g,\n 'MS': /^[7][9][0-9]{3}[0-9]{3}$/g,\n 'MG': /^[3][0-9]{4}[0-9]{3}$/g,\n 'MT': /^[7][8][8][0-9]{2}[0-9]{3}$/g,\n 'AC': /^[6][9]{2}[0-9]{2}[0-9]{3}$/g,\n 'AL': /^[5][7][0-9]{3}[0-9]{3}$/g,\n 'AM': /^[6][9][0-8][0-9]{2}[0-9]{3}$/g,\n 'AP': /^[6][89][9][0-9]{2}[0-9]{3}$/g,\n 'BA': /^[4][0-8][0-9]{3}[0-9]{3}$/g,\n 'CE': /^[6][0-3][0-9]{3}[0-9]{3}$/g,\n 'DF': /^[7][0-3][0-6][0-9]{2}[0-9]{3}$/g,\n 'ES': /^[2][9][0-9]{3}[0-9]{3}$/g,\n 'GO': /^[7][3-6][7-9][0-9]{2}[0-9]{3}$/g,\n 'MA': /^[6][5][0-9]{3}[0-9]{3}$/g,\n 'PA': /^[6][6-8][0-8][0-9]{2}[0-9]{3}$/g,\n 'PB': /^[5][8][0-9]{3}[0-9]{3}$/g,\n 'PE': /^[5][0-6][0-9]{2}[0-9]{3}$/g,\n 'PI': /^[6][4][0-9]{3}[0-9]{3}$/g,\n 'PR': /^[8][0-7][0-9]{3}[0-9]{3}$/g,\n 'RN': /^[5][9][0-9]{3}[0-9]{3}$/g,\n 'RO': /^[7][8][9][0-9]{2}[0-9]{3}$/g,\n 'RR': /^[6][9][3][0-9]{2}[0-9]{3}$/g,\n 'RS': /^[9][0-9]{4}[0-9]{3}$/g,\n 'SC': /^[8][89][0-9]{3}[0-9]{3}$/g,\n 'SE': /^[4][9][0-9]{3}[0-9]{3}$/g,\n 'TO': /^[7][7][0-9]{3}[0-9]{3}$/g,\n}\n\nexport function validate_cep(cep: string) {\n const cepClean = cep.replace(/[^\\d]+/g, '');\n const exp = /\\d{2}\\.\\d{3}\\-\\d{3}/;\n if (!exp.test(cep) && cepClean.length !== 8) {\n return false;\n }\n return true;\n}\n\n\nexport function cep_ranges(cep: string | number) {\n cep = (cep.toString()).replace(/[^\\d]+/g, '');\n cep = parseInt(cep, 10);\n const cepString: string = cep.toString();\n let found: any;\n for (let estado in CEPRange) {\n const v = CEPRange[estado];\n const r = new RegExp(v).test(cepString);\n if (r) {\n found = r;\n return true;\n }\n }\n\n if (!found) {\n return false;\n }\n return true;\n}\n\n\n\n\nexport function validate_certidao(value: string) {\n let certidao = getAllDigits(value);\n\n const format = /[0-9]{32}/;\n if (!format.test(certidao)) {\n return false;\n }\n\n let dvOriginal = certidao.substr(-2);\n const dv = create_certidao(certidao);\n\n return dv === dvOriginal;\n}\n\n\n/**\n * \n * @param chassi \n */\nexport function validate_chassi(chassi: string) {\n\n // 1 - Possuir o número \"0\" (ZERO) como 1º dígito.\n const zeroNoPrimeiroDigito = /^0/;\n if (zeroNoPrimeiroDigito.test(chassi)) {\n return false;\n }\n\n // 2 - Possuir espaço no chassi\n chassi = getAllWords(chassi); // espacoNoChassi\n\n // 3 - Se, a partir do 4º dígito, houver uma repetição consecutiva, por mais de seis vezes, do mesmo dígito \n // (alfabético ou numérico). Exemplos: 9BW11111119452687 e 9BWZZZ5268AAAAAAA.\n const repeticaoMaisDe6Vezes = /^.{4,}([0-9A-Z])\\1{5,}/\n if (repeticaoMaisDe6Vezes.test(chassi)) {\n return false;\n }\n\n // 4 - Apresente os caracteres \"i\", \"I\", \"o\", \"O\", \"q\", \"Q\".\n const caracteresiIoOqQ = /[iIoOqQ]/;\n if (caracteresiIoOqQ.test(chassi)) {\n return false;\n }\n\n // 5 - Os quatro últimos caracteres devem ser obrigatoriamente numéricos\n const ultimos4Numericos = /[0-9]{4}$/;\n if (!ultimos4Numericos.test(chassi)) {\n return false;\n }\n\n // 6 - Se possuir número de dígitos diferente de 17 (alfanuméricos). \n if (chassi.length > 17) {\n return false;\n }\n\n return true;\n}\n\nfunction validate_cnae(number: any) {\n if (!number) return true;\n return false\n}\n\n/**\n * \n * II - Número do Espelho da CNH - segundo número de identificação nacional, \n * que será formado por 9 (nove) caracteres mais 1 (um) dígito verificador de segurança, \n * autorizado e controlado pelo DENATRAN, e identificará cada espelho de CNH expedida.\n * https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-denatran/resolucoes-contran\n * https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * 598: https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao59820162.pdf\n * @param value \n */\nexport function validate_cnhespelho(value: string) {\n value = value.replace(/[^\\d]/g, '')\n if (value.length !== 10) {\n return false\n }\n\n let check = create_cnhespelho(value)\n if (check === '0' || check === '1') check = '0'\n return value.substr(-1) == check\n}\n\n/**\n * \n * III – Número do formulário RENACH - número de identificação\n* estadual, documento de coleta de dados do candidato/condutor gerado a cada serviço,\n* composto, obrigatoriamente, por 11 (onze) caracteres, sendo as duas primeiras\n* posições formadas pela sigla da Unidade de Federação expedidora, facultada a\n* utilização da última posição como dígito verificador de segurança.\n* a) O número do formulário RENACH identificará a Unidade da\n* Federação onde o condutor foi habilitado ou realizou alterações de dados no seu\n* cadastro pela última vez.\n* b) O Formulário RENACH que dá origem às informações na\n* BINCO e autorização para a impressão da CNH deverá ficar arquivado em seg\n* 598 - https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao59820162.pdf\n* 718 - https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7182017.pdf\n* @param value \n */\nexport function validate_renachestadual(value: string) {\n const state = value.substr(0, 2).toLowerCase()\n if (!ESTADOS_SIGLA.includes(state)) {\n return false\n }\n\n let digits = value.substr(2)\n digits = digits.replace(/[^\\d]/g, '');\n if (digits.length !== 9) {\n return false;\n }\n let check = create_renachestadual(value)\n if (check === '0' || check === '1') check = '0'\n return value.substr(-1) == check;\n}\n\nexport function validate_renachseguranca(value: string) {\n value = value.replace(/[^\\d]/g, '');\n\n if (value.length !== 11) {\n return false;\n }\n\n let check = create_renachseguranca(value)\n return value.substr(-1) == check;\n}\n\n/**\n * BINCO\n * I – o primeiro número de identificação nacional – Registro Nacional, \n * será gerado pelo sistema informatizado da Base Índice Nacional de Condutores – \n * BINCO, composto de 9 (nove) caracteres mais 2 (dois) dígitos verificadores de \n * segurança, sendo único para cada condutor e o acompanhará durante toda a \n * sua existência como condutor, não sendo permitida a sua reutilização para \n * outro condutor.\n * @param value \n * @returns \n */\nexport function validate_cnh(value: string) {\n value = value.toString().replace(/[^\\d]/g, '');\n if (value.length !== 11) {\n return false;\n }\n let check = create_cnh(value);\n return value.substr(-2) == check;\n}\n\nexport function validate_cnpj(cnpj: any) {\n // Valida se tem apenas número, - ou .\n let precisaFicarVazio = cnpj.replace(/^[0-9./-]*$/gm, '')\n if (precisaFicarVazio != '')\n return false\n\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n let tamanho = cnpj.length - 2\n const digitos = cnpj.substring(tamanho);\n const resultados = create_cnpj(cnpj);\n if (!resultados ||\n resultados[0] !== parseInt(digitos.charAt(0), 10) ||\n resultados[1] !== parseInt(digitos.charAt(1), 10)\n ) {\n return false\n }\n\n return true;\n}\n\nfunction validate_contabanco(number: any) {\n if (!number) return false\n return true;\n}\n\n/**\n * Referencia: http://www.receita.fazenda.gov.br/aplicacoes/atcta/funcoes.js\n * @param strCPF \n * @returns \n */\nexport function validate_cpf(strCPF: any) {\n // Valida se tem apenas número, - ou .\n let precisaFicarVazio = strCPF.replace(/^[0-9.-]*$/gm, '')\n if (precisaFicarVazio != '')\n return false\n\n strCPF = strCPF.replace(/[^\\d]+/g, '');\n if (strCPF.length !== 11) {\n return false;\n }\n\n //verifica se todos os numeros sao iguais\n const expIguais = /^(?!.*(\\d)\\1{10}).*$/;\n if (!strCPF.match(expIguais)) {\n return false;\n }\n\n // valida digito verificados\n const restos = create_cpf(strCPF);\n if (!restos || restos != strCPF.substr(-2)) {\n return false;\n }\n return true;\n}\n\nfunction validate_cpfcnpj(number: any) {\n return validate_cpf(number) || validate_cnpj(number);\n}\n\nexport function validate_cns(value: string) {\n const cns = getAllDigits(value);\n const definitivo = /[1-2][0-9]{10}00[0-1][0-9]/; // começam com 1 ou 2\n const provisorio = /[7-9][0-9]{14}/; // começam com 7,8 ou 9\n if (!definitivo.test(cns) && !provisorio.test(cns)) {\n return false;\n }\n\n let soma = 0;\n for (let i = 0; i < cns.length; i++) {\n soma += parseInt(cns[i]) * (15 - i);\n }\n\n return soma % 11 == 0;\n}\n\n\nexport function validate_cartaocredito(input: string | number) {\n let value: string;\n if (typeof input == 'string') {\n value = getAllDigits(input);\n } else {\n value = input.toString();\n }\n\n const number = value.slice(0, 16);\n const mes = parseInt(value.slice(16, 18));\n const ano = parseInt(value.slice(18, 20));\n const cvv = value.slice(20, 23);\n\n const d = new Date();\n const anoAtual = (d.getFullYear() - 2000);\n if (ano && ano < anoAtual) {\n return false;\n }\n if (mes && mes < d.getMonth() + 1 && ano === anoAtual) {\n return false;\n }\n\n if (cvv) {\n const validcvv = validate_cvv(cvv);\n if (validcvv.isValid === false) {\n return false;\n }\n }\n\n let found;\n Object.keys(creditCardValidator).forEach(key => {\n if (creditCardValidator[key].test(number)) {\n found = key;\n }\n });\n return !!found;\n\n}\n\nfunction validate_cvv(value: string | any[], maxLength: any = 3) {\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n\n if (typeof value !== 'string') {\n return { isValid: false, isPotentiallyValid: false };\n }\n if (!/^\\d*$/.test(value)) {\n return { isValid: false, isPotentiallyValid: false };\n }\n\n var i = 0;\n const max = value.length;\n for (; i < maxLength.length; i++) {\n if (max === maxLength[i]) {\n return { isValid: true, isPotentiallyValid: true };\n }\n }\n\n if (value.length < Math.min.apply(null, maxLength)) {\n return { isValid: false, isPotentiallyValid: true };\n }\n\n var maximum = maxLength;\n var i = 0;\n\n for (; i < maxLength.length; i++) {\n maximum = maxLength[i] > maximum ? maxLength[i] : maximum;\n }\n\n if (value.length > maximum) {\n return { isValid: false, isPotentiallyValid: false };\n }\n\n return { isValid: true, isPotentiallyValid: true };\n}\n\n\n/**\n * A hash of valid CC abbreviations and regular expressions\n mc: Mastercard\n ec: Eurocard\n vi: Visa\n ax: American Express\n dc: Diners Club\n bl: Carte Blanch\n di: Discover\n jcb: JCB\n er: Enroute\n*/\nexport const creditCardValidator: BigObject<RegExp> = {\n 'mc': /5[1-5][0-9]{14}/,\n 'ec': /5[1-5][0-9]{14}/,\n 'vi': /4(?:[0-9]{12}|[0-9]{15})/,\n 'ax': /3[47][0-9]{13}/,\n 'dc': /3(?:0[0-5][0-9]{11}|[68][0-9]{12})/,\n 'bl': /3(?:0[0-5][0-9]{11}|[68][0-9]{12})/,\n 'di': /6011[0-9]{12}/,\n 'jcb': /(?:3[0-9]{15}|(2131|1800)[0-9]{11})/,\n 'er': /2(?:014|149)[0-9]{11}/\n};\n\n\nexport function validate_currency(currency: string | number) {\n if (typeof currency === 'number') {\n return true;\n }\n const regex = /^(R\\$|R\\$ )?(-)?(?!0(\\.)?00)\\d{1,3}((\\.)?\\d{3})*(,\\d\\d)?$/g;\n return regex.test(currency);\n}\n\n\nfunction validate_data(value: string | null) {\n if (!value) {\n return false;\n }\n const values = value.split('/');\n if (values.length !== 3) {\n return false;\n }\n const testData: Date = new Date(values[1] + '/' + values[0] + '/' + values[2])\n if (!testData.getTime()) {\n return false;\n }\n // if (parseInt(values[0]) > 31 || parseInt(values[1]) > 12 || parseInt(values[2]) < 1000) return false;\n return true;\n}\n\n\nfunction validate_date(value: string | null) {\n if (!value || value.length < 10) {\n return false;\n }\n const testData: Date = new Date(value)\n if (!testData.getTime()) {\n return false;\n }\n return true;\n}\n\nexport function validate_datetime(time: string | number, options: any = {}) {\n if (!time) {\n return false;\n }\n time = time.toString();\n const values = time.split(' ');\n if (validate_date(values[0]) && validate_time(values[1], options)) {\n return true;\n }\n return false;\n}\n\n\nexport function validate_datahora(time: string | number, options: any = {}) {\n if (!time) {\n return false;\n }\n time = time.toString();\n const values = time.split(' ');\n if (validate_data(values[0]) && validate_time(values[1], options)) {\n return true;\n }\n return false;\n}\n\nexport function validate_ect(number: string) {\n number = getAllDigits(number);\n if (number.length > 9) {\n return false\n }\n\n const nodigit = number.substr(0, number.length - 1);\n const dg = create_ect(nodigit);\n\n if (parseInt(number[number.length - 1]) === dg) {\n return true;\n }\n return false;\n}\n\nfunction validate_email(email: any) {\n var re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return re.test(String(email).toLowerCase())\n}\n\nfunction validate_endereco(number: any) {\n if (!number) return false\n return true\n}\n\nexport function validate_number(number: string) {\n if (number.split(',').length > 2) {\n return false\n }\n const regexDecimal = /^\\d+(?:\\.\\d{0,2})$/;\n const regex = /^[0-9]{0,10}[,]{1,1}[0-9]{0,4}/;\n const regexNumero = /^[0-9]{0,10}/;\n return regexDecimal.test(number) || regex.test(number) || regexNumero.test(number);\n}\n\n\nexport function validate_porcentagem(porcentagem: string) {\n porcentagem = porcentagem.split('%')[0];\n return validate_number(porcentagem);\n}\n\n\nexport function validate_processo(processo: any) {\n let processoClean = processo.replace(/\\./g, '');\n processoClean = processoClean.replace(/\\-/g, '');\n // const exp = /\\d{7}\\-\\d{2}\\.\\d{4}\\.\\w{3}\\.\\d{4}/;\n // const expClean = /\\d{13}\\w{3}\\d{4}/;\n // if (!exp.test(processo) && !expClean.test(processoClean)) {\n // return false;\n // }\n let processoValidado = create_processo(processo);\n if (parseInt(processoClean) !== parseInt(getAllDigits(processoValidado))) {\n return false;\n }\n return true;\n}\n\n\nexport function validate_pispasep(number: string) {\n number = getAllDigits(number);\n let nis = fillString(number, 11, '0');\n const regex = /\\d{11}/; // /^\\d{3}\\.\\d{5}\\.\\d{2}\\-\\d{1}$/;\n if (!regex.test(nis)) {\n return false;\n }\n\n const digit = create_pispasep(number);\n return nis[10].toString() == digit.toString();\n}\n\n\nexport function validate_renavam(renavam: any) {\n let renavamClean = renavam.replace(/\\./g, '');\n renavamClean = renavamClean.replace(/\\-/g, '');\n const dv = create_renavam(renavam);\n const tam = renavam.length;\n const digitos = renavam.substr(tam - 1, 1);\n if (digitos.charCodeAt(0) - 48 === dv) {\n return true;\n } else {\n return false;\n }\n}\n\n\n\nexport function validate_rg(rg: string) {\n let rgClean = rg.replace(/\\./g, '');\n rgClean = rgClean.replace(/-/g, '');\n const exp = /[a-z]{2}\\-\\d{2}\\.\\d{3}\\.\\d{3}/;\n const expClean = /[a-z]{2}\\d{8}/;\n const state = rg.substr(0, 2).toUpperCase();\n\n if (!exp.test(rg) && !expClean.test(rgClean) && !(state in CEPRange)) {\n return false;\n }\n const validateState = RG[state];\n if (validateState) {\n return validateState(rg);\n }\n return true;\n}\n\nfunction validate_senha(value: string, options: any = {}) {\n let finalregex = '^';\n // ^\tThe password string will start this way\n // (?=.*[a-z])\tThe string must contain at least 1 lowercase alphabetical character\n if (options.lowercase !== false) {\n finalregex = finalregex + '(?=.*[a-z])';\n }\n // (?=.*[A-Z])\tThe string must contain at least 1 uppercase alphabetical character\n if (options.uppercase !== false) {\n finalregex = finalregex + '(?=.*[A-Z])';\n }\n // (?=.*[0-9])\tThe string must contain at least 1 numeric character\n if (options.numeric !== false) {\n finalregex = finalregex + '(?=.*[0-9])';\n }\n // (?=.*[!@#\\$%\\^&\\*])\tThe string must contain at least one special character, but we are escaping reserved RegEx characters to avoid conflict\n if (options.numeric !== false) {\n finalregex = finalregex + '(?=.*[!@#\\\\$%\\\\^&\\\\*])';\n }\n // (?=.{8,})\tThe string must be eight characters or longer\n if (!options.size) {\n options.size = 8;\n }\n\n finalregex = finalregex + `(?=.{${options.size},})`;\n\n const regex = new RegExp(finalregex);\n return regex.test(value);\n}\n\n\nfunction validate_site(value: any) {\n var re = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&=]*)/g;\n return re.test(String(value).toLowerCase());\n}\n\nexport function validate_sped(sped: string) {\n if (!sped) return false\n return true\n}\n\nexport function validate_telefone(tel: any) {\n const telClean = tel.replace(/[^\\d]+/g, '');\n tel = tel.replace(/_/g, '');\n if (!(telClean.length === 10 || telClean.length === 11)) {\n return false;\n }\n if (telClean[0] == 0 || telClean[2] == 0) {\n return false;\n }\n return true;\n}\n\nexport function validate_time(time: string | number, options: any = {}) {\n const value = time.toString();\n if (options.diario) {\n const expression = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/;\n return expression.test(value);\n } else {\n const expression = /^([0-9]?[0-9]):([0-5][0-9])(:[0-5][0-9])?$/;\n return expression.test(value);\n }\n\n}\n\nexport function validate_titulo(titulo: any) {\n if (!titulo) {\n return false;\n }\n const tituloClean = titulo.replace(/\\./g, '');\n const exp = /\\d{4}\\.\\d{4}\\.\\d{4}/;\n const expClean = /\\d{4}\\d{4}\\d{4}/;\n if (!exp.test(tituloClean) && !expClean.test(tituloClean)) {\n return false;\n }\n\n const tam = tituloClean.length;\n\n let dig;\n try {\n dig = create_titulo_atual(tituloClean);\n // const noDv = tituloClean.substr(0, tam - 2);\n // dig = create_titulo(noDv);\n } catch (e) {\n return false;\n }\n\n const digitos = tituloClean.substr(tam - 2, 2);\n if (digitos === dig) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction validate_username(value: any) {\n var re = /^[a-z0-9_-]{3,16}$/igm;\n return re.test(String(value).toLowerCase());\n}\n\nexport const validateBr: BigObject<Function> = {\n aih: validate_aih,\n cartaocredito: validate_cartaocredito,\n celular: validate_celular,\n cep: validate_cep,\n certidao: validate_certidao,\n chassi: validate_chassi,\n cnae: validate_cnae,\n cnh: validate_cnh,\n cnhespelho: validate_cnhespelho,\n renachestadual: validate_renachestadual,\n renachseguranca: validate_renachseguranca,\n cnpj: validate_cnpj,\n cns: validate_cns,\n contabanco: validate_contabanco,\n cpf: validate_cpf,\n cpfcnpj: validate_cpfcnpj,\n currency: validate_currency,\n data: validate_data,\n date: validate_date,\n datetime: validate_datetime,\n datahora: validate_datahora,\n ect: validate_ect,\n email: validate_email,\n endereco: validate_endereco,\n inscricaoestadual: validate_inscricaoestadual,\n iptu: validate_iptu,\n number: validate_number,\n porcentagem: validate_porcentagem,\n pispasep: validate_pispasep,\n placa: validate_placa,\n processo: validate_processo,\n renavam: validate_renavam,\n rg: validate_rg,\n senha: validate_senha,\n site: validate_site,\n sped: validate_sped,\n telefone: validate_telefone,\n time: validate_time,\n titulo: validate_titulo,\n username: validate_username\n};\n","const dollarSign = \"$\";\nconst emptyString = \"\";\nconst comma = \",\";\nconst period = \".\";\nconst minus = \"-\";\nconst minusRegExp = /-/;\nconst nonDigitsRegExp = /\\D+/g;\nconst number = \"number\";\nconst digitRegExp = /\\d/;\nconst caretTrap = \"[]\";\n\nexport default function createNumberMask({\n prefix = dollarSign,\n suffix = emptyString,\n includeThousandsSeparator = true,\n thousandsSeparatorSymbol = comma,\n allowDecimal = false,\n decimalSymbol = period,\n decimalLimit = 2,\n requireDecimal = false,\n allowNegative = false,\n allowLeadingZeroes = false,\n integerLimit = null,\n} = {}) {\n const prefixLength = (prefix && prefix.length) || 0;\n const suffixLength = (suffix && suffix.length) || 0;\n const thousandsSeparatorSymbolLength =\n (thousandsSeparatorSymbol && thousandsSeparatorSymbol.length) || 0;\n\n function numberMask(rawValue = emptyString) {\n const rawValueLength = rawValue.length;\n\n if (\n rawValue === emptyString ||\n (rawValue[0] === prefix[0] && rawValueLength === 1)\n ) {\n return prefix\n .split(emptyString)\n .concat([\"\" + digitRegExp])\n .concat(suffix.split(emptyString));\n } else if (rawValue === decimalSymbol && allowDecimal) {\n return prefix\n .split(emptyString)\n .concat([\"0\", decimalSymbol, \"\" + digitRegExp])\n .concat(suffix.split(emptyString));\n }\n\n const isNegative = rawValue[0] === minus && allowNegative;\n //If negative remove \"-\" sign\n if (isNegative) {\n rawValue = rawValue.toString().substr(1);\n }\n\n const indexOfLastDecimal = rawValue.lastIndexOf(decimalSymbol);\n const hasDecimal = indexOfLastDecimal !== -1;\n\n let integer;\n let fraction;\n let mask;\n\n // remove the suffix\n if (rawValue.slice(suffixLength * -1) === suffix) {\n rawValue = rawValue.slice(0, suffixLength * -1);\n }\n\n if (hasDecimal && (allowDecimal || requireDecimal)) {\n integer = rawValue.slice(\n rawValue.slice(0, prefixLength) === prefix ? prefixLength : 0,\n indexOfLastDecimal\n );\n\n fraction = rawValue.slice(indexOfLastDecimal + 1, rawValueLength);\n fraction = convertToMask(fraction.replace(nonDigitsRegExp, emptyString));\n } else {\n if (rawValue.slice(0, prefixLength) === prefix) {\n integer = rawValue.slice(prefixLength);\n } else {\n integer = rawValue;\n }\n }\n\n if (integerLimit && typeof integerLimit === number) {\n const thousandsSeparatorRegex =\n thousandsSeparatorSymbol === \".\"\n ? \"[.]\"\n : `${thousandsSeparatorSymbol}`;\n const numberOfThousandSeparators = (\n integer.match(new RegExp(thousandsSeparatorRegex, \"g\")) || []\n ).length;\n\n integer = integer.slice(\n 0,\n integerLimit +\n numberOfThousandSeparators * thousandsSeparatorSymbolLength\n );\n }\n\n integer = integer.replace(nonDigitsRegExp, emptyString);\n\n if (!allowLeadingZeroes) {\n integer = integer.replace(/^0+(0$|[^0])/, \"$1\");\n }\n\n integer = includeThousandsSeparator\n ? addThousandsSeparator(integer, thousandsSeparatorSymbol)\n : integer;\n\n mask = convertToMask(integer);\n\n if ((hasDecimal && allowDecimal) || requireDecimal === true) {\n if (rawValue[indexOfLastDecimal - 1] !== decimalSymbol) {\n mask.push(caretTrap);\n }\n\n mask.push(decimalSymbol, caretTrap);\n\n if (fraction) {\n if (typeof decimalLimit === number) {\n fraction = fraction.slice(0, decimalLimit);\n }\n\n mask = mask.concat(fraction);\n }\n\n if (\n requireDecimal === true &&\n rawValue[indexOfLastDecimal - 1] === decimalSymbol\n ) {\n mask.push(digitRegExp);\n }\n }\n\n if (prefixLength > 0) {\n mask = prefix.split(emptyString).concat(\"\" + mask);\n }\n\n if (isNegative) {\n // If user is entering a negative number, add a mask placeholder spot to attract the caret to it.\n if (mask.length === prefixLength) {\n mask.push(digitRegExp);\n }\n\n mask = [minusRegExp].concat(new RegExp(\"\" + mask));\n }\n\n if (suffix.length > 0) {\n mask = mask.concat(suffix.split(emptyString));\n }\n\n return mask;\n }\n\n //numberMask.instanceOf = \"createNumberMask\";\n\n return numberMask;\n}\n\nfunction convertToMask(strNumber: string) {\n return strNumber\n .split(emptyString)\n .map((char: string) => (digitRegExp.test(char) ? digitRegExp : char));\n}\n\nfunction addThousandsSeparator(n: string, thousandsSeparatorSymbol: string) {\n return n.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparatorSymbol);\n}\n","import { isArray, processCaretTraps } from './utils';\nimport { BigObject, MaskType } from './interfaces';\nexport { MASKSIE } from './inscricaoestadual';\nimport createNumberMask from './createNumberMask';\nimport { mask_iptu } from './iptu';\nimport { MASKSIE } from './inscricaoestadual';\n\nconst maskNumber: any = {\n decimalLimit: 2,\n thousandsSeparatorSymbol: '.',\n decimalSymbol: ',',\n allowDecimal: true,\n integerLimit: 17,\n prefix: '',\n suffix: ''\n}\n\nexport const MASKS: BigObject<MaskType> = {\n aih: {\n text: '000000000000-0', // 351923414312-8\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n cartaocredito: {\n text: '0000 0000 0000 0000 00/00 000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, '0', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, '/', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/]\n },\n celular: {\n text: '(00) 00000-0000',\n textMask: ['(', /[1-9]/, /\\d/, ')', ' ', /[5-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\n },\n cep: {\n text: '00.000-000',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/]\n },\n // certidao Certidões de Nascimento, Casamento ou Óbito \n certidao: {\n text: '000000.00.00.0000.0.00000.000.0000000-00', // 104539.01.55.2013.1.00012.021.0000123-21\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '.', /\\d/, /\\d/, '.',\n /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.',\n /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n chassi: {\n text: 'AAA AAAAAA AA AA0000', // 9BW ZZZ377 VT 004251\n textMask: [/[1-9]/, /\\w/, /\\w/, ' ', /\\w/, /\\w/, /\\w/, /\\w/, /\\w/, /\\w/, ' ', /\\w/, /\\w/, ' ', /\\w/, /\\w/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cid: {\n textMask: false\n },\n cnae: {\n text: '0000-0/00', // 6821-8/01\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, '/', /\\d/, /\\d/]\n },\n cnh: {\n text: '000000000-00', // 123456789-1\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n renachseguranca: {\n text: '00000000000', // 51474546854\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n renachestadual: {\n text: 'AA000000000', // MG597812560\n textMask: [/[A-S]/, /[A-Z]/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cnhespelho: {\n text: '0000000000', // 123456789-1\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cnpj: {\n text: '00.000.000/0000-00',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n cns: {\n text: '000 0000 0000 00-00',\n textMask: [/[1|2|7|8|9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n contabanco: {\n text: '000 00000-0 00000-0',\n textMask: [/\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-',\n /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n cpf: {\n text: '000.000.000-00',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n cpfcnpj: {\n text: '00.000.000/0000-00',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength > 12) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n }\n }\n },\n currency: {\n text: '0.000,00',\n textMask: createNumberMask({\n ...maskNumber,\n prefix: 'R$ ',\n allowNegative: true\n })\n },\n data: {\n text: '00/00/0000',\n textMask: [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n date: {\n text: '00/00/0000',\n textMask: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n datetime: {\n text: '00/00/0000 00:00',\n textMask: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n datahora: {\n text: '00/00/0000 00:00',\n textMask: [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n ect: {\n text: '00000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n endereco: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n iptu: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n number: {\n text: '0.000,00',\n textMask: createNumberMask(maskNumber)\n },\n porcentagem: {\n text: '00,00%',\n textMask: createNumberMask({\n ...maskNumber,\n suffix: '%'\n })\n },\n pispasep: {\n text: '000.00000.00-0',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n placa: {\n text: 'AAA-0000',\n textMask: [/[A-S]/, /[A-Z]/, /[A-Z]/, '-', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n processo: {\n text: '0000000-00.0000.AAA.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[A-Za-z]/, /[A-Za-z]/, /[A-Za-z]/, '.', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n renavam: {\n text: '0000000000-00',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength < 9) {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n },\n rg: {\n text: 'AA-00.000.000',\n textMask: [/[A-Za-z]/, /[A-Za-z]/, '-', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n sped: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n telefone: {\n text: '(00) 00000-0000',\n textMask: ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength > 10) {\n return ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\n } else {\n return ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\n }\n }\n },\n time: {\n text: '00:00',\n textMask: [/\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n titulo: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n utils: {\n numberToString: (n: number) => {\n if (!n || typeof n === 'string') {\n return n;\n }\n return (n.toString()).replace('.', ',');\n },\n textMask: false\n }\n}\n\n\nconst makeGeneric = (key: string) => {\n return (value: string) => {\n if (!value) {\n return '';\n }\n let mask = MASKS[key].textMask\n let textMaskFunction = MASKS[key].textMaskFunction\n if (typeof textMaskFunction === 'function') {\n mask = textMaskFunction(value);\n }\n\n\n return conformToMask(\n value,\n mask,\n { guide: false }\n ).conformedValue;\n }\n}\n\nexport const maskBr = {\n aih: makeGeneric('aih'),\n celular: makeGeneric('celular'),\n cep: makeGeneric('cep'),\n certidao: makeGeneric('certidao'),\n chassi: makeGeneric('chassi'),\n cnae: makeGeneric('cnae'),\n cnh: makeGeneric('cnh'),\n renachseguranca: makeGeneric('renachseguranca'),\n renachestadual: makeGeneric('renachestadual'),\n cnhespelho: makeGeneric('cnhespelho'),\n cnpj: makeGeneric('cnpj'),\n cns: makeGeneric('cns'),\n contabanco: makeGeneric('contabanco'),\n cpf: makeGeneric('cpf'),\n cpfcnpj: makeGeneric('cpfcnpj'),\n cartaocredito: makeGeneric('cartaocredito'),\n currency: (currencyValueInput: string | number, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['currency'], currencyValueInput, decimalsFormat);\n },\n data: makeGeneric('data'),\n date: makeGeneric('date'),\n datetime: makeGeneric('datetime'),\n datahora: makeGeneric('datahora'),\n ect: makeGeneric('ect'),\n endereco: makeGeneric('endereco'),\n inscricaoestadual: (inscricaoestadualValue: string, estado: string) => {\n const ie = MASKSIE;\n const ieState = ie[estado]\n\n if (!inscricaoestadualValue || !estado || !ieState ||\n !ieState.textMask) {\n return '';\n }\n\n let mask = ieState.textMask;\n let textMaskFunction = ieState.textMaskFunction\n if (typeof textMaskFunction === 'function') {\n mask = textMaskFunction(inscricaoestadualValue);\n }\n\n return conformToMask(\n inscricaoestadualValue,\n mask,\n { guide: false }\n ).conformedValue;\n },\n iptu: (iptuValue: string, estado: string, cidade: string) => {\n const mask = mask_iptu(iptuValue, estado, cidade);\n if (!mask || typeof mask === 'string') {\n return '';\n }\n return conformToMask(\n iptuValue,\n mask.textMask,\n { guide: false }\n ).conformedValue;\n },\n number: (numberValue: any, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['number'], numberValue, decimalsFormat);\n },\n porcentagem: (porcentagemValue: string, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['porcentagem'], porcentagemValue, decimalsFormat);\n },\n pispasep: makeGeneric('pispasep'),\n placa: makeGeneric('placa'),\n processo: makeGeneric('processo'),\n renavam: makeGeneric('renavam'),\n rg: makeGeneric('rg'),\n sped: makeGeneric('sped'),\n telefone: makeGeneric('telefone'),\n time: (value: string | Date) => {\n if (value instanceof Date) {\n value = value.toTimeString().split(' ')[0]\n }\n return makeGeneric('time')(value)\n },\n titulo: makeGeneric('titulo')\n};\n\n\n\n/**\n * FROM TEXT-MASK\n */\nexport const placeholderChar = '_'\nexport const strFunction = 'function'\n\nconst defaultPlaceholderChar = placeholderChar;\nconst emptyArray: any = []\nconst emptyString = ''\n\nexport function conformToMask(inputValue: String | Date = emptyString, mask = emptyArray, config: any = {}) {\n let rawValue = inputValue.toString();\n if (typeof inputValue === 'number') {\n rawValue = (<number>inputValue).toString();\n }\n if (inputValue instanceof Date) {\n rawValue = (<Date>inputValue).toLocaleString(\"pt-br\")\n }\n\n if (!isArray(mask)) {\n // If someone passes a function as the mask property, we should call the\n // function to get the mask array - Normally this is handled by the\n // `createTextMaskInputElement:update` function - this allows mask functions\n // to be used directly with `conformToMask`\n\n if (typeof mask === strFunction) {\n // call the mask function to get the mask array\n mask = mask(inputValue, config)\n\n // mask functions can setup caret traps to have some control over how the caret moves. We need to process\n // the mask for any caret traps. `processCaretTraps` will remove the caret traps from the mask\n mask = processCaretTraps(mask).maskWithoutCaretTraps\n } else {\n throw new Error(\n 'Text-mask:conformToMask; The mask property must be an array.'\n )\n }\n }\n\n // These configurations tell us how to conform the mask\n\n const guide = config.guide || true;\n const previousConformedValue = config.previousConformedValue || emptyString;\n const placeholder = convertMaskToPlaceholder(mask, placeholderChar);\n const currentCaretPosition = config.currentCaretPosition;\n const keepCharPositions = config.keepCharPositions;\n\n // The configs below indicate that the user wants the algorithm to work in *no guide* mode\n const suppressGuide = guide === false && previousConformedValue !== undefined\n\n // Calculate lengths once for performance\n const rawValueLength = rawValue.length\n const previousConformedValueLength = previousConformedValue.length\n const placeholderLength = placeholder.length\n const maskLength = mask.length\n\n // This tells us the number of edited characters and the direction in which they were edited (+/-)\n const editDistance = rawValueLength - previousConformedValueLength\n\n // In *no guide* mode, we need to know if the user is trying to add a character or not\n const isAddition = editDistance > 0\n\n // Tells us the index of the first change. For (438) 394-4938 to (38) 394-4938, that would be 1\n const indexOfFirstChange = currentCaretPosition + (isAddition ? -editDistance : 0)\n\n // We're also gonna need the index of last change, which we can derive as follows...\n const indexOfLastChange = indexOfFirstChange + Math.abs(editDistance)\n\n // If `conformToMask` is configured to keep character positions, that is, for mask 111, previous value\n // _2_ and raw value 3_2_, the new conformed value should be 32_, not 3_2 (default behavior). That's in the case of\n // addition. And in the case of deletion, previous value _23, raw value _3, the new conformed string should be\n // __3, not _3_ (default behavior)\n //\n // The next block of logic handles keeping character positions for the case of deletion. (Keeping\n // character positions for the case of addition is further down since it is handled differently.)\n // To do this, we want to compensate for all characters that were deleted\n if (keepCharPositions === true && !isAddition) {\n // We will be storing the new placeholder characters in this variable.\n let compensatingPlaceholderChars = emptyString\n\n // For every character that was deleted from a placeholder position, we add a placeholder char\n for (let i = indexOfFirstChange; i < indexOfLastChange; i++) {\n if (placeholder[i] === placeholderChar) {\n compensatingPlaceholderChars += placeholderChar\n }\n }\n\n // Now we trick our algorithm by modifying the raw value to make it contain additional placeholder characters\n // That way when the we start laying the characters again on the mask, it will keep the non-deleted characters\n // in their positions.\n rawValue = (\n rawValue.slice(0, indexOfFirstChange) +\n compensatingPlaceholderChars +\n rawValue.slice(indexOfFirstChange, rawValueLength)\n )\n }\n\n // Convert `rawValue` string to an array, and mark characters based on whether they are newly added or have\n // existed in the previous conformed value. Identifying new and old characters is needed for `conformToMask`\n // to work if it is configured to keep character positions.\n const rawValueArr = rawValue\n .split(emptyString)\n .map((char, i) => ({ char, isNew: i >= indexOfFirstChange && i < indexOfLastChange }))\n\n // The loop below removes masking characters from user input. For example, for mask\n // `00 (111)`, the placeholder would be `00 (___)`. If user input is `00 (234)`, the loop below\n // would remove all characters but `234` from the `rawValueArr`. The rest of the algorithm\n // then would lay `234` on top of the available placeholder positions in the mask.\n for (let i = rawValueLength - 1; i >= 0; i--) {\n const { char } = rawValueArr[i]\n\n if (char !== placeholderChar) {\n const shouldOffset = i >= indexOfFirstChange && previousConformedValueLength === maskLength\n\n if (char === placeholder[(shouldOffset) ? i - editDistance : i]) {\n rawValueArr.splice(i, 1)\n }\n }\n }\n\n // This is the variable that we will be filling with characters as we figure them out\n // in the algorithm below\n let conformedValue = emptyString\n let someCharsRejected = false\n\n // Ok, so first we loop through the placeholder looking for placeholder characters to fill up.\n placeholderLoop: for (let i = 0; i < placeholderLength; i++) {\n const charInPlaceholder = placeholder[i]\n\n // We see one. Let's find out what we can put in it.\n if (charInPlaceholder === placeholderChar) {\n // But before that, do we actually have any user characters that need a place?\n if (rawValueArr.length > 0) {\n // We will keep chipping away at user input until either we run out of characters\n // or we find at least one character that we can map.\n while (rawValueArr.length > 0) {\n // Let's retrieve the first user character in the queue of characters we have left\n const shift = rawValueArr.shift();\n let rawValueChar: string = '', isNew: boolean = false;\n if (shift) {\n rawValueChar = shift.char;\n isNew = shift.isNew;\n }\n\n // If the character we got from the user input is a placeholder character (which happens\n // regularly because user input could be something like (540) 90_-____, which includes\n // a bunch of `_` which are placeholder characters) and we are not in *no guide* mode,\n // then we map this placeholder character to the current spot in the placeholder\n if (rawValueChar === placeholderChar && suppressGuide !== true) {\n conformedValue += placeholderChar\n\n // And we go to find the next placeholder character that needs filling\n continue placeholderLoop\n\n // Else if, the character we got from the user input is not a placeholder, let's see\n // if the current position in the mask can accept it.\n } else if (mask[i].test(rawValueChar)) {\n // we map the character differently based on whether we are keeping character positions or not.\n // If any of the conditions below are met, we simply map the raw value character to the\n // placeholder position.\n if (\n keepCharPositions !== true ||\n isNew === false ||\n previousConformedValue === emptyString ||\n guide === false ||\n !isAddition\n ) {\n conformedValue += rawValueChar\n } else {\n // We enter this block of code if we are trying to keep character positions and none of the conditions\n // above is met. In this case, we need to see if there's an available spot for the raw value character\n // to be mapped to. If we couldn't find a spot, we will discard the character.\n //\n // For example, for mask `1111`, previous conformed value `_2__`, raw value `942_2__`. We can map the\n // `9`, to the first available placeholder position, but then, there are no more spots available for the\n // `4` and `2`. So, we discard them and end up with a conformed value of `92__`.\n const rawValueArrLength = rawValueArr.length\n let indexOfNextAvailablePlaceholderChar = null\n\n // Let's loop through the remaining raw value characters. We are looking for either a suitable spot, ie,\n // a placeholder character or a non-suitable spot, ie, a non-placeholder character that is not new.\n // If we see a suitable spot first, we store its position and exit the loop. If we see a non-suitable\n // spot first, we exit the loop and our `indexOfNextAvailablePlaceholderChar` will stay as `null`.\n for (let i = 0; i < rawValueArrLength; i++) {\n const charData = rawValueArr[i]\n\n if (charData.char !== placeholderChar && charData.isNew === false) {\n break\n }\n\n if (charData.char === placeholderChar) {\n indexOfNextAvailablePlaceholderChar = i\n break\n }\n }\n\n // If `indexOfNextAvailablePlaceholderChar` is not `null`, that means the character is not blocked.\n // We can map it. And to keep the character positions, we remove the placeholder character\n // from the remaining characters\n if (indexOfNextAvailablePlaceholderChar !== null) {\n conformedValue += rawValueChar\n rawValueArr.splice(indexOfNextAvailablePlaceholderChar, 1)\n\n // If `indexOfNextAvailablePlaceholderChar` is `null`, that means the character is blocked. We have to\n // discard it.\n } else {\n i--\n }\n }\n\n // Since we've mapped this placeholder position. We move on to the next one.\n continue placeholderLoop\n } else {\n someCharsRejected = true\n }\n }\n }\n\n // We reach this point when we've mapped all the user input characters to placeholder\n // positions in the mask. In *guide* mode, we append the left over characters in the\n // placeholder to the `conformedString`, but in *no guide* mode, we don't wanna do that.\n //\n // That is, for mask `(111)` and user input `2`, we want to return `(2`, not `(2__)`.\n if (suppressGuide === false) {\n conformedValue += placeholder.substr(i, placeholderLength)\n }\n\n // And we break\n break\n\n // Else, the charInPlaceholder is not a placeholderChar. That is, we cannot fill it\n // with user input. So we just map it to the final output\n } else {\n conformedValue += charInPlaceholder\n }\n }\n\n // The following logic is needed to deal with the case of deletion in *no guide* mode.\n //\n // Consider the silly mask `(111) /// 1`. What if user tries to delete the last placeholder\n // position? Something like `(589) /// `. We want to conform that to `(589`. Not `(589) /// `.\n // That's why the logic below finds the last filled placeholder character, and removes everything\n // from that point on.\n if (suppressGuide && isAddition === false) {\n let indexOfLastFilledPlaceholderChar = null\n\n // Find the last filled placeholder position and substring from there\n for (let i = 0; i < conformedValue.length; i++) {\n if (placeholder[i] === placeholderChar) {\n indexOfLastFilledPlaceholderChar = i\n }\n }\n\n if (indexOfLastFilledPlaceholderChar !== null) {\n // We substring from the beginning until the position after the last filled placeholder char.\n conformedValue = conformedValue.substr(0, indexOfLastFilledPlaceholderChar + 1)\n } else {\n // If we couldn't find `indexOfLastFilledPlaceholderChar` that means the user deleted\n // the first character in the mask. So we return an empty string.\n conformedValue = emptyString\n }\n }\n\n return { conformedValue, meta: { someCharsRejected } }\n}\n\n\nexport function convertMaskToPlaceholder(mask = emptyArray, placeholderChar = defaultPlaceholderChar) {\n if (!isArray(mask)) {\n throw new Error(\n 'Text-mask:convertMaskToPlaceholder; The mask property must be an array.'\n )\n }\n\n if (mask.indexOf(placeholderChar) !== -1) {\n throw new Error(\n 'Placeholder character must not be used as part of the mask. Please specify a character ' +\n 'that is not present in your mask as your placeholder character.\\n\\n' +\n `The placeholder character that was received is: ${JSON.stringify(placeholderChar)}\\n\\n` +\n `The mask that was received is: ${JSON.stringify(mask)}`\n )\n }\n\n return mask.map((char: any) => {\n return (char instanceof RegExp) ? placeholderChar : char\n }).join('')\n}\n\n/**\n * Due to a bug on textmask, the requireDecimal its not working, so this function solves this problem\n * @param maskType \n * @param numberValue \n * @param decimalsFormat \n * @returns \n */\nfunction formatNumber(maskType: any, numberValue: any, decimalsFormat: number = 2) {\n if (!numberValue && numberValue !== 0) {\n return '';\n }\n\n if (!numberValue.split) {\n numberValue += '';\n numberValue = numberValue.replace('.', ',');\n }\n\n const vals = numberValue.split(',');\n\n if (!maskType.textMask || typeof maskType.textMask !== 'function') {\n return '';\n }\n\n const mask = maskType.textMask(vals[0]);\n\n let decimals = ''\n if (decimalsFormat == undefined) {\n decimals = vals.length > 1 ? ',' + vals[1] : '';\n } else {\n decimals = vals.length > 1 ? (vals[1] < 10 ? vals[1].toString() + '0' : vals[1].toString()) : '00';\n if (decimals.length > decimalsFormat) {\n decimals = decimals.substring(0, decimalsFormat);\n }\n }\n\n let conformedValue = conformToMask(\n numberValue,\n mask,\n { guide: false }\n ).conformedValue\n\n\n let suffix = ''\n if (conformedValue.indexOf('%') >= 0) {\n conformedValue = conformedValue.replace('%', '')\n suffix = '%'\n }\n return conformedValue + (decimalsFormat > 0 ? ',' + decimals : '') + suffix;\n}","import {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n modulo11,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty\n} from './utils';\nexport { validateBr } from './validate';\nimport * as mask from './mask';\nimport { MASKS, MASKSIE } from './mask';\nimport { PLACAS_RANGE } from './placa';\nimport { ESTADOS } from './estados';\nimport { BigObject } from './interfaces';\n\nexport const utilsBr = {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n modulo11,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty,\n MASKS,\n MASKSIE,\n PLACAS_RANGE,\n ESTADOS\n};\n\nexport const maskBr: BigObject<Function> = mask.maskBr;","export const LOCALIZACAO_RUAS = ['Dois', 'Um', 'Principal', 'São José', 'Onze', 'São Paulo', 'Doze', 'Treze',\n 'Santo Antônio', 'Brasil', 'A', 'São Pedro', 'Quinze', 'São João',\n 'Quatorze', 'São Francisco', 'Sete de Setembro', 'Dezesseis', 'Quinze de Novembro',\n 'Tiradentes', 'Dezessete', 'Vinte', 'Bahia', 'Amazonas', 'Dezoito', 'São Sebastião', 'Paraná', 'Bela Vista', 'Santa Luzia', 'São Jorge',\n 'Castro Alves', 'Duque de Caxias', 'Projetada', 'Rui Barbosa', 'Santa Catarina', 'Minas Gerais', 'Santos Dumont',\n 'Espírito Santo', 'Vinte e Um', 'Vinte e Dois', 'da Paz', 'Treze de Maio', 'Rio de Janeiro',\n 'Goiás', 'Ceará', 'Belo Horizonte', 'das Flores', 'Sergipe', 'Vitória', 'José Bonifácio',\n 'Pernambuco', 'Piauí', 'Vinte e Três', 'Mato Grosso', 'Santa Maria', 'Dom Pedro II',\n 'Primeiro de Maio', 'Pará', 'Maranhão', 'Alagoas', 'Boa Vista', 'São Luiz', 'Vinte e Quatro', 'Paraíba', 'Santa Rita'];\n\nexport const LOCALIZACAO_LOGRADOUROS = ['Avenida', 'Rua', 'Marginal'];\n\nexport const LOCALIZACAO_COMPLEMENTOS = [`Apartamento`, 'Aeroporto', 'Anexo', `Andar`, `Bloco`, `Conjunto`, 'Cobertura', `Casa`,\n 'Fazenda', 'Fundos', 'Galeria', `Galpão`, `Lote`, `Loja`, `Portão`, `Quadra`, `Sala`, `Sobreloja`, 'Subsolo', 'Terreo'];\n\nexport const LOCALIZACAO_BAIRROS = ['Centro', 'Bela Vista', 'São José', 'Santo Antônio', 'São Francisco', 'Vila Nova',\n 'Boa Vista', 'Industrial', 'São Cristóvão', 'Planalto'];\n\nexport const LOCALIZACAO_ESTADOS = [\n { \"nome\": \"Acre\", \"uf\": \"AC\" },\n { \"nome\": \"Alagoas\", \"uf\": \"AL\" },\n { \"nome\": \"Amapá\", \"uf\": \"AP\" },\n { \"nome\": \"Amazonas\", \"uf\": \"AM\" },\n { \"nome\": \"Bahia\", \"uf\": \"BA\" },\n { \"nome\": \"Ceará\", \"uf\": \"CE\" },\n { \"nome\": \"Distrito Federal\", \"uf\": \"DF\" },\n { \"nome\": \"Espírito Santo\", \"uf\": \"ES\" },\n { \"nome\": \"Goiás\", \"uf\": \"GO\" },\n { \"nome\": \"Maranhão\", \"uf\": \"MA\" },\n { \"nome\": \"Mato Grosso\", \"uf\": \"MT\" },\n { \"nome\": \"Mato Grosso do Sul\", \"uf\": \"MS\" },\n { \"nome\": \"Minas Gerais\", \"uf\": \"MG\" },\n { \"nome\": \"Pará\", \"uf\": \"PA\" },\n { \"nome\": \"Paraíba\", \"uf\": \"PB\" },\n { \"nome\": \"Paraná\", \"uf\": \"PR\" },\n { \"nome\": \"Pernambuco\", \"uf\": \"PE\" },\n { \"nome\": \"Piauí\", \"uf\": \"PI\" },\n { \"nome\": \"Rio de Janeiro\", \"uf\": \"RJ\" },\n { \"nome\": \"Rio Grande do Norte\", \"uf\": \"RN\" },\n { \"nome\": \"Rio Grande do Sul\", \"uf\": \"RS\" },\n { \"nome\": \"Rondônia\", \"uf\": \"RO\" },\n { \"nome\": \"Roraima\", \"uf\": \"RR\" },\n { \"nome\": \"Santa Catarina\", \"uf\": \"SC\" },\n { \"nome\": \"São Paulo\", \"uf\": \"SP\" },\n { \"nome\": \"Sergipe\", \"uf\": \"SE\" },\n { \"nome\": \"Tocantins\", \"uf\": \"TO\" }\n];\nexport const LOCALIZACAO_CIDADES = [\n ['São Paulo', 'São Paulo'],\n ['Rio de Janeiro', 'Rio de Janeiro'],\n ['Brasília', 'Distrito Federal'],\n ['Salvador', 'Bahia'],\n ['Fortaleza', 'Ceará'],\n ['Belo Horizonte', 'Minas Gerais'],\n ['Manaus', 'Amazonas'],\n ['Curitiba', 'Paraná'],\n ['Recife', 'Pernambuco'],\n ['Goiânia', 'Goiás'],\n ['Belém', 'Pará'],\n ['Porto Alegre', 'Rio Grande do Sul'],\n ['Guarulhos', 'São Paulo'],\n ['Campinas', 'São Paulo'],\n ['São Luís', 'Maranhão'],\n ['São Gonçalo', 'Rio de Janeiro'],\n ['Maceió', 'Alagoas'],\n ['Duque de Caxias', 'Rio de Janeiro'],\n ['Cuiabá', 'Mato Grosso'],\n ['Campo Grande', 'Mato Grosso do Sul'],\n ['Natal', 'Rio Grande do Norte'],\n ['Teresina', 'Piauí'],\n ['São Bernardo do Campo', 'São Paulo'],\n ['Nova Iguaçu', 'Rio de Janeiro'],\n ['João Pessoa', 'Paraíba'],\n ['São José dos Campos', 'São Paulo'],\n ['Santo André', 'São Paulo'],\n ['Ribeirão Preto', 'São Paulo'],\n ['Jaboatão dos Guararapes', 'Pernambuco'],\n ['Osasco', 'São Paulo'],\n ['Uberlândia', 'Minas Gerais'],\n ['Sorocaba', 'São Paulo'],\n ['Contagem', 'Minas Gerais'],\n ['Aracaju', 'Sergipe'],\n ['Feira de Santana', 'Bahia'],\n ['Cuiabá', 'Mato Grosso'],\n ['Joinville', 'Santa Catarina'],\n ['Aparecida de Goiânia', 'Goiás'],\n ['Londrina', 'Paraná'],\n ['Juiz de Fora', 'Minas Gerais'],\n ['Ananindeua', 'Pará'],\n ['Porto Velho', 'Rondônia'],\n ['Serra', 'Espírito Santo'],\n ['Niterói', 'Rio de Janeiro'],\n ['Belford Roxo', 'Rio de Janeiro'],\n ['Caxias do Sul', 'Rio Grande do Sul'],\n ['Campos dos Goytacazes Campos dos Goytacazes', 'Rio de Janeiro'],\n ['Macapá', 'Amapá'],\n ['Florianópolis', 'Santa Catarina'],\n ['Vila Velha', 'Espírito Santo'],\n ['Mauá', 'São Paulo'],\n ['São João de Meriti', 'Rio de Janeiro'],\n ['São José do Rio Preto', 'São Paulo'],\n ['Mogi das Cruzes', 'São Paulo'],\n ['Betim', 'Minas Gerais'],\n ['Santos', 'São Paulo'],\n ['Diadema', 'São Paulo'],\n ['Maringá', 'Paraná'],\n ['Jundiaí', 'São Paulo'],\n ['Campina Grande', 'Paraíba'],\n ['Montes Claros', 'Minas Gerais'],\n ['Rio Branco', 'Acre'],\n ['Piracicaba', 'São Paulo'],\n ['Carapicuíba', 'São Paulo'],\n ['Boa Vista', 'Roraima'],\n ['Olinda', 'Pernambuco'],\n ['Anápolis', 'Goiás'],\n ['Cariacica', 'Espírito Santo'],\n ['Bauru', 'São Paulo'],\n ['Itaquaquecetuba', 'São Paulo'],\n ['São Vicente', 'São Paulo'],\n ['Vitória', 'Espírito Santo'],\n ['Caucaia', 'Ceará'],\n ['Caruaru', 'Pernambuco'],\n ['Blumenau', 'Santa Catarina'],\n ['Franca', 'São Paulo'],\n ['Ponta Grossa', 'Paraná'],\n ['Petrolina', 'Pernambuco'],\n ['Canoas', 'Rio Grande do Sul'],\n ['Pelotas', 'Rio Grande do Sul'],\n ['Vitória da Conquista', 'Bahia'],\n ['Ribeirão das Neves', 'Minas Gerais'],\n ['Uberaba', 'Minas Gerais'],\n ['Paulista', 'Pernambuco'],\n ['Cascavel', 'Paraná'],\n ['Praia Grande', 'São Paulo'],\n ['São José dos Pinhais', 'Paraná'],\n ['Guarujá', 'São Paulo'],\n ['Taubaté', 'São Paulo'],\n ['Petrópolis', 'Rio de Janeiro'],\n ['Limeira', 'São Paulo'],\n ['Santarém', 'Pará'],\n ['Camaçari', 'Bahia'],\n ['Palmas', 'Tocantins'],\n ['Suzano', 'São Paulo'],\n ['Mossoró', 'Rio Grande do Norte'],\n ['Taboão da Serra', 'São Paulo'],\n ['Várzea Grande', 'Mato Grosso'],\n ['Sumaré', 'São Paulo'],\n ['Santa Maria', 'Rio Grande do Sul'],\n ['Gravataí', 'Rio Grande do Sul'],\n ['Governador Valadares', 'Minas Gerais'],\n ['Marabá', 'Pará'],\n ['Juazeiro do Norte', 'Ceará'],\n ['Barueri', 'São Paulo'],\n ['Embu das Artes', 'São Paulo'],\n ['Volta Redonda', 'Rio de Janeiro'],\n ['Ipatinga', 'Minas Gerais'],\n ['Parnamirim', 'Rio Grande do Norte'],\n ['Imperatriz', 'Maranhão'],\n ['Foz do Iguaçu', 'Paraná'],\n ['Macaé', 'Rio de Janeiro'],\n ['Viamão', 'Rio Grande do Sul'],\n ['São Carlos', 'São Paulo'],\n ['Indaiatuba', 'São Paulo'],\n ['Cotia', 'São Paulo'],\n ['Novo Hamburgo', 'Rio Grande do Sul'],\n ['São José', 'Santa Catarina'],\n ['Magé', 'Rio de Janeiro'],\n ['Colombo', 'Paraná'],\n ['Itaboraí', 'Rio de Janeiro'],\n ['Sete Lagoas', 'Minas Gerais'],\n ['Americana', 'São Paulo'],\n ['Marília', 'São Paulo'],\n ['Divinópolis', 'Minas Gerais'],\n ['Itapevi', 'São Paulo'],\n ['São Leopoldo', 'Rio Grande do Sul'],\n ['Araraquara', 'São Paulo'],\n ['Rio Verde', 'Goiás'],\n ['Jacareí', 'São Paulo'],\n ['Rondonópolis', 'Mato Grosso'],\n ['Arapiraca', 'Alagoas'],\n ['Hortolândia', 'São Paulo'],\n ['Presidente Prudente', 'São Paulo'],\n ['Maracanaú', 'Ceará'],\n ['Dourados', 'Mato Grosso do Sul'],\n ['Chapecó Chapecó', 'Santa Catarina'],\n ['Cabo Frio', 'Rio de Janeiro'],\n ['Itajaí', 'Santa Catarina'],\n ['Santa Luzia', 'Minas Gerais'],\n ['Juazeiro', 'Bahia'],\n ['Criciúma', 'Santa Catarina'],\n ['Itabuna', 'Bahia'],\n ['Águas Lindas de Goiás', 'Goiás'],\n ['Rio Grande', 'Rio Grande do Sul'],\n ['Alvorada', 'Rio Grande do Sul'],\n ['Cachoeiro de Itapemirim', 'Espírito Santo'],\n ['Sobral', 'Ceará'],\n ['Luziânia', 'Goiás'],\n ['Parauapebas', 'Pará'],\n ['Cabo de Santo Agostinho', 'Pernambuco'],\n ['Rio Claro', 'São Paulo'],\n ['Angra dos Reis', 'Rio de Janeiro'],\n ['Passo Fundo', 'Rio Grande do Sul'],\n ['Castanhal', 'Pará'],\n ['Lauro de Freitas', 'Bahia'],\n ['Araçatuba', 'São Paulo'],\n ['Ferraz de Vasconcelos', 'São Paulo'],\n ['Santa Bárbara do Oeste', 'São Paulo'],\n ['Nova Friburgo', 'Rio de Janeiro'],\n ['Barra Mansa', 'Rio de Janeiro'],\n ['Nossa Senhora do Socorro', 'Sergipe'],\n ['Teresópolis', 'Rio de Janeiro'],\n ['Guarapuava', 'Paraná'],\n ['Araguaína', 'Tocantins'],\n ['Ibirité', 'Minas Gerais'],\n ['Jaraguá do Sul', 'Santa Catarina'],\n ['São José de Ribamar', 'Maranhão'],\n ['Mesquita', 'Rio de Janeiro'],\n ['Francisco Morato', 'São Paulo'],\n ['Itapecerica da Serra', 'São Paulo'],\n ['Itu', 'São Paulo'],\n ['Linhares', 'Espírito Santo'],\n ['Palhoça', 'Santa Catarina'],\n ['Timon', 'Maranhão'],\n ['Bragança Paulista', 'São Paulo'],\n ['Valparaíso de Goiás', 'Goiás'],\n ['Pindamonhangaba', 'São Paulo'],\n ['Poços de Caldas', 'Minas Gerais'],\n ['Caxias', 'Maranhão'],\n ['Itapetininga', 'São Paulo'],\n ['Nilópolis', 'Rio de Janeiro'],\n ['Ilhéus', 'Bahia'],\n ['Maricá', 'Rio de Janeiro'],\n ['São Caetano do Sul', 'São Paulo'],\n ['Teixeira de Freitas', 'Bahia'],\n ['Camaragibe', 'Pernambuco'],\n ['Abaetetuba', 'Pará'],\n ['Lages', 'Santa Catarina'],\n ['Jequié', 'Bahia'],\n ['Barreiras', 'Bahia'],\n ['Paranaguá', 'Paraná'],\n ['Franco da Rocha', 'São Paulo'],\n ['Parnaíba', 'Piauí'],\n ['Patos de Minas', 'Minas Gerais'],\n ['Mogi Guaçu', 'São Paulo'],\n ['Alagoinhas', 'Bahia'],\n ['Pouso Alegre', 'Minas Gerais'],\n ['Rio das Ostras', 'Rio de Janeiro'],\n ['Queimados', 'Rio de Janeiro'],\n ['Jaú', 'São Paulo'],\n ['Porto Seguro', 'Bahia'],\n ['Botucatu', 'São Paulo'],\n ['Araucária', 'Paraná'],\n ['Sinop', 'Mato Grosso'],\n ['Atibaia', 'São Paulo'],\n ['Balneário Camboriú', 'Santa Catarina'],\n ['Sapucaia do Sul', 'Rio Grande do Sul'],\n ['Toledo', 'Paraná'],\n ['Teófilo Otoni', 'Minas Gerais'],\n ['Garanhuns', 'Pernambuco'],\n ['Santana de Parnaíba', 'São Paulo'],\n ['Vitória de Santo Antão', 'Pernambuco'],\n ['Cametá', 'Pará'],\n ['Barbacena', 'Minas Gerais'],\n ['Santa Rita', 'Paraíba'],\n ['Sabará', 'Minas Gerais'],\n ['Varginha', 'Minas Gerais'],\n ['Apucarana', 'Paraná'],\n ['Brusque', 'Santa Catarina'],\n ['Simões Filho', 'Bahia'],\n ['Araras', 'São Paulo'],\n ['Itaguaí', 'Rio de Janeiro'],\n ['Araruama', 'Rio de Janeiro'],\n ['Pinhais', 'Paraná'],\n ['Crato', 'Ceará'],\n ['Campo Largo', 'Paraná'],\n ['Marituba', 'Pará'],\n ['Resende', 'Rio de Janeiro'],\n ['Cubatão', 'São Paulo'],\n ['São Mateus', 'Espírito Santo'],\n ['Santa Cruz do Sul', 'Rio Grande do Sul'],\n ['Cachoeirinha', 'Rio Grande do Sul'],\n ['Itapipoca', 'Ceará'],\n ['Valinhos', 'São Paulo'],\n ['Maranguape', 'Ceará'],\n ['Ji-Paraná', 'Rondônia'],\n ['Conselheiro Lafaiete', 'Minas Gerais'],\n ['São Félix do Xingu', 'Pará'],\n ['Bragança', 'Pará'],\n ['Vespasiano', 'Minas Gerais'],\n ['Trindade', 'Goiás'],\n ['Uruguaiana', 'Rio Grande do Sul'],\n ['Sertãozinho', 'São Paulo'],\n ['Jandira', 'São Paulo'],\n ['Guarapari', 'Espírito Santo'],\n ['Barcarena', 'Pará'],\n ['Birigui', 'São Paulo'],\n ['Ribeirão Pires', 'São Paulo'],\n ['Arapongas', 'Paraná'],\n ['Codó', 'Maranhão'],\n ['Colatina', 'Espírito Santo'],\n ['Votorantim', 'São Paulo'],\n ['Paço do Lumiar', 'Maranhão'],\n ['Barretos', 'São Paulo'],\n ['Catanduva', 'São Paulo'],\n ['Várzea Paulista', 'São Paulo'],\n ['Guaratinguetá', 'São Paulo'],\n ['Tatuí', 'São Paulo'],\n ['Formosa', 'Goiás'],\n ['Caraguatatuba', 'São Paulo'],\n ['Três Lagoas', 'Mato Grosso do Sul'],\n ['Santana', 'Amapá'],\n ['Bagé', 'Rio Grande do Sul'],\n ['Itatiba', 'São Paulo'],\n ['Bento Gonçalves', 'Rio Grande do Sul'],\n ['Itabira', 'Minas Gerais'],\n ['Salto', 'São Paulo'],\n ['Almirante Tamandaré', 'Paraná'],\n ['Paulo Afonso', 'Bahia'],\n ['Poá', 'São Paulo'],\n ['Araguari', 'Minas Gerais'],\n ['Igarassu', 'Pernambuco'],\n ['Novo Gama', 'Goiás'],\n ['Ubá', 'Minas Gerais'],\n ['Senador Canedo', 'Goiás'],\n ['Passos', 'Minas Gerais'],\n ['Altamira', 'Pará'],\n ['Parintins', 'Amazonas'],\n ['Tucuruí', 'Pará'],\n ['Ourinhos', 'São Paulo'],\n ['Eunápolis', 'Bahia'],\n ['São Lourenço da Mata', 'Pernambuco'],\n ['Paragominas', 'Pará'],\n ['Piraquara', 'Paraná'],\n ['Açailândia', 'Maranhão'],\n ['Umuarama', 'Paraná'],\n ['Corumbá', 'Mato Grosso do Sul'],\n ['Coronel Fabriciano', 'Minas Gerais'],\n ['Paulínia', 'São Paulo'],\n ['Catalão', 'Goiás'],\n ['Muriaé', 'Minas Gerais'],\n ['Santa Cruz do Capibaribe', 'Pernambuco'],\n ['Ariquemes', 'Rondônia'],\n ['Patos', 'Paraíba'],\n ['Cambé', 'Paraná'],\n ['Tailândia', 'Pará'],\n ['Araxá', 'Minas Gerais'],\n ['Erechim', 'Rio Grande do Sul'],\n ['Tubarão', 'Santa Catarina'],\n ['Bacabal', 'Maranhão'],\n ['Japeri', 'Rio de Janeiro'],\n ['Itumbiara', 'Goiás'],\n ['Ituiutaba', 'Minas Gerais'],\n ['São Pedro da Aldeia', 'Rio de Janeiro'],\n ['Lagarto', 'Sergipe'],\n ['Assis', 'São Paulo'],\n ['Lavras', 'Minas Gerais'],\n ['Tangará da Serra', 'Mato Grosso'],\n ['Leme', 'São Paulo'],\n ['Itaperuna', 'Rio de Janeiro'],\n ['Breves', 'Pará'],\n ['Nova Serrana', 'Minas Gerais'],\n ['Iguatu', 'Ceará'],\n ['São Gonçalo do Amarante', 'Rio Grande do Norte'],\n ['Itanhaém', 'São Paulo'],\n ['Santo Antônio de Jesus', 'Bahia'],\n ['Caieiras', 'São Paulo'],\n ['Itacoatiara', 'Amazonas'],\n ['Itaituba', 'Pará'],\n ['Aracruz', 'Espírito Santo'],\n ['Jataí', 'Goiás'],\n ['Barra do Piraí', 'Rio de Janeiro'],\n ['Fazenda Rio Grande', 'Paraná'],\n ['Mairiporã', 'São Paulo']\n];","\nexport const AIH_ESTADOS = {\n 'AC': '12', 'AL': '27', 'AP': '16', 'AM': '13', 'BA': '29', 'CE': '23', 'DF': '53',\n 'ES': '32', 'GO': '52', 'MA': '21', 'MT': '51', 'MS': '50', 'MG': '31', 'PA': '15',\n 'PB': '25', 'PR': '41', 'PE': '26', 'PI': '22', 'RJ': '33', 'RN': '24', 'RS': '43',\n 'RO': '11', 'RR': '14', 'SC': '42', 'SP': '35', 'SE': '28', 'TO': '17'\n};\nexport const AIH_TIPOS = {\n '1': 'AIH Normal',\n '2': 'APACs',\n '3': 'Códigos de procedimentos específicos da CNRAC',\n '4': 'APACs da CNRAC',\n '5': 'Procedimentos de longa permanência na AIH'\n};\n\nexport const CID_NAME = {\n 'A00-B99': 'Algumas doenças infecciosas e parasitárias',\n 'C00-D48': 'Neoplasmas (tumores)',\n 'D50-D89': 'Doenças do sangue e dos órgãos hematopoéticos e alguns transtornos imunitários',\n 'E00-E90': 'Doenças endócrinas, nutricionais e metabólicas',\n 'F00-F99': 'Transtornos mentais e comportamentais',\n 'G00-G99': 'Doenças do sistema nervoso',\n 'H00-H59': 'Doenças do olho e anexos',\n 'H60-H95': 'Doenças do ouvido e da apófise mastoide',\n 'I00-I99': 'Doenças do aparelho circulatório',\n 'J00-J99': 'Doenças do aparelho respiratório',\n 'K00-K93': 'Doenças do aparelho digestivo',\n 'L00-L99': 'Doenças da pele e do tecido subcutâneo',\n 'M00-M99': 'Doenças do sistema osteomuscular e do tecido conjuntivo',\n 'N00-N99': 'Doenças do aparelho geniturinário',\n 'O00-O99': 'Gravidez, parto e puerpério',\n 'P00-P96': 'Algumas afecções originadas no período perinatal',\n 'Q00-Q99': 'Malformações congênitas, deformidades e anomalias cromossômicas',\n 'R00-R99': 'Sintomas, sinais e achados anormais de exames clínicos e de laboratório, não classificados em outra parte',\n 'S00-T98': 'Lesões, envenenamentos e algumas outras conseqüências de causas externas',\n 'V01-Y98': 'Causas externas de morbidade e de mortalidade',\n 'Z00-Z99': 'Fatores que influenciam o estado de saúde e o contato com os serviços de saúde',\n 'U00-U99': 'Códigos para propósitos especiais',\n}\n\nexport const CID_REGEX = {\n 'A00-B99': /[A|B][0-9][0-9]/g,\n 'C00-D48': /[C0-90-9|[D0-90-9]/g,\n 'D50-D89': /[A|B][0-9][0-9]/g,\n 'E00-E90': /[A|B][0-9][0-9]/g,\n 'F00-F99': /[A|B][0-9][0-9]/g,\n 'G00-G99': /[A|B][0-9][0-9]/g,\n 'H00-H59': /[A|B][0-9][0-9]/g,\n 'H60-H95': /[A|B][0-9][0-9]/g,\n 'I00-I99': /[A|B][0-9][0-9]/g,\n 'J00-J99': /[A|B][0-9][0-9]/g,\n 'K00-K93': /[A|B][0-9][0-9]/g,\n 'L00-L99': /[A|B][0-9][0-9]/g,\n 'M00-M99': /[A|B][0-9][0-9]/g,\n 'N00-N99': /[A|B][0-9][0-9]/g,\n 'O00-O99': /[A|B][0-9][0-9]/g,\n 'P00-P96': /[A|B][0-9][0-9]/g,\n 'Q00-Q99': /[A|B][0-9][0-9]/g,\n 'R00-R99': /[A|B][0-9][0-9]/g,\n 'S00-T98': /[A|B][0-9][0-9]/g,\n 'V01-Y98': /[A|B][0-9][0-9]/g,\n 'Z00-Z99': /[A|B][0-9][0-9]/g,\n 'U00-U99': /[A|B][0-9][0-9]/g,\n}\n\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { maskBr } from \"./../js-brasil\";\n\n@Pipe({\n name: \"cpf\",\n standalone: true,\n})\nexport class CPFPipe implements PipeTransform {\n transform(cpfValue: string | number | null | undefined): string {\n return maskBr['cpf'](cpfValue ?? \"\");\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { BenchmarkingChart } from \"../benchmarking.interface\";\n\n@Component({\n selector: \"mapa-benchmark-indicator\",\n templateUrl: \"./benchmark-indicator.component.html\",\n styleUrls: [\n \"./benchmark-indicator.component.scss\",\n \"./../styles/benchmark.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n standalone: true,\n})\nexport class MapaBenchmarkIndicatorComponent {\n @Input() item!: BenchmarkingChart;\n}\n","<div\n class=\"indicator\"\n [style.backgroundColor]=\"item.classificationColor\"\n>\n <div class=\"indicator__markers\">\n @for (mark of item.marks ?? []; track mark.name + '-' + mark.value) {\n <div\n class=\"indicator__marker--arrow\"\n [ngStyle]=\"{\n left: mark.value + '%',\n borderTopColor: mark.color\n }\"\n [title]=\"mark.name + ' (' + mark.value + '%)'\"\n ></div>\n }\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { MapaBenchmarkIndicatorComponent } from \"./benchmark-indicator/benchmark-indicator.component\";\nimport { BenchmarkingChart } from \"./benchmarking.interface\";\n\n@Component({\n selector: \"mapa-benchmark-chart\",\n templateUrl: \"./benchmark-chart.component.html\",\n styleUrls: [\n \"./benchmark-chart.component.scss\",\n \"./styles/benchmark.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, MapaBenchmarkIndicatorComponent],\n standalone: true,\n})\nexport class MapaBenchmarkChartComponent {\n @Input() data!: BenchmarkingChart[];\n public scaleLabels: number[] = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];\n\n constructor() {}\n\n public setUnlabeledItem(item: BenchmarkingChart): BenchmarkingChart {\n return {\n ...item,\n classificationId: item.classificationId,\n classificationColor: item.classificationColor,\n interval: item.interval,\n }\n }\n\n public getWidth(item: BenchmarkingChart): string {\n const minWidth = 0;\n const interval = (item.interval || 0);\n if (interval < 10) return minWidth + 'px';\n return interval + '%';\n }\n}\n","<table class=\"indicator-chart\">\n <thead>\n <tr class=\"indicator-chart__head\">\n <th class=\"indicator-chart__column--description\"></th>\n <th class=\"indicator-chart__column indicator-chart__column--right\">\n <div class=\"indicator-chart__scale\">\n @for (label of scaleLabels; track label) {\n <span>{{ label }}</span>\n }\n </div>\n </th>\n </tr>\n </thead>\n <tbody>\n @for (item of data; track item) {\n <tr>\n <td class=\"indicator-chart__column--description\">{{ item.name }}</td>\n <td class=\"indicator-chart__column indicator-chart__column--right\">\n <div class=\"indicator-chart__column--positive\">\n <div class=\"indicator-chart__column-background\">\n <mapa-benchmark-indicator\n [item]=\"setUnlabeledItem(item)\"\n [style.width]=\"getWidth(item)\"\n ></mapa-benchmark-indicator>\n </div>\n </div>\n </td>\n <td class=\"indicator-chart__column--classification\">\n {{ item.interval }} %\n </td>\n </tr>\n }\n </tbody>\n</table>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { RouterModule } from \"@angular/router\";\nimport { Breadpiece } from \"../../../core/interfaces/bread-piece.interface\";\n\n@Component({\n selector: \"mapa-breadcrumb\",\n templateUrl: \"./breadcrumb.component.html\",\n styleUrl: \"./breadcrumb.component.scss\",\n imports: [CommonModule, RouterModule],\n standalone: true,\n})\nexport class MapaBreadcrumbComponent {\n @Input() items!: Breadpiece[];\n}\n\n","<section class=\"mapa-breadcrumb\" *ngIf=\"items && items.length > 0\">\n <span class=\"mapa-breadcrumb__item\" *ngFor=\"let item of items; let i = index\">\n <a *ngIf=\"item.url; else common\" [href]=\"item.url\" [routerLink]=\"item.url\"\n >{{ item.title }}</a\n >\n <ng-template #common>\n <span\n class=\"mapa-breadcrumb__item\"\n [class.mapa-breadcrumb__item--highlight]=\"items.length === i + 1\"\n >\n {{ item.title }}</span\n >\n </ng-template>\n <span class=\"mapa-breadcrumb__item--next\" *ngIf=\"i < items.length - 1\"\n >></span\n >\n </span>\n</section>\n","/*\n * Public API Surface of mapa-library-ui breadcrumb\n */\n\nexport * from './src/breadcrumb.component';\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'mapa-button',\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n standalone: true\n})\nexport class ButtonComponent {\n @Input() color: 'primary' | 'accent' | 'basic' | null | undefined;\n @Input() disabled!: boolean;\n @Output() clicked: EventEmitter<void> = new EventEmitter<void>();\n\n onClick(): void {\n this.clicked.emit();\n }\n}\n","<button\n class=\"mapa-button\"\n (click)=\"onClick()\"\n [class.primary]=\"color === 'primary'\"\n [class.accent]=\"color === 'accent'\"\n [class.basic]=\"color === 'basic'\"\n [disabled]=\"disabled\"\n>\n <ng-content></ng-content>\n</button> ","/*\n * Public API Surface of mapa-library-ui button\n */\n\nexport * from './src/button.component';\n","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\nimport { ButtonIcon } from \"../../../core/interfaces/button-icon.interface\";\n\n@Component({\n selector: \"mapa-button-icon\",\n templateUrl: \"./button-icon.component.html\",\n styleUrl: \"./button-icon.component.scss\",\n imports: [CommonModule],\n standalone: true\n})\nexport class ButtonIconComponent implements OnInit, OnChanges {\n @Input() data!: ButtonIcon;\n @Output() clicked: EventEmitter<ButtonIcon> = new EventEmitter<ButtonIcon>();\n imgBase64!: SafeResourceUrl;\n\n onClick(data: ButtonIcon): void {\n this.clicked.emit(data);\n }\n\n constructor(private sanitizer: DomSanitizer) {}\n \n ngOnInit(): void {\n this.updateIcon();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"data\"]) {\n this.updateIcon();\n }\n }\n\n private updateIcon(): void {\n if (this.data.icon) {\n this.imgBase64 = this.sanitizer.bypassSecurityTrustResourceUrl(\n `data:image/svg+xml;base64,${this.data.icon}`\n );\n }\n }\n}\n\n","<div class=\"button-icon\" id=\"componentes\" *ngIf=\"data\">\n <div class=\"button-icon__icon\">\n <img *ngIf=\"imgBase64\" [src]=\"imgBase64\" />\n </div>\n <div class=\"button-icon__title\">\n {{ data.description }}\n </div>\n <div class=\"button-icon__preview\" (click)=\"onClick(data)\">\n Preview\n </div>\n</div>\n","/*\n * Public API Surface of mapa-library-ui button-icon\n */\n\nexport * from './src/button-icon.component';\n","import { CapabilityItem } from \"../interfaces/capability-item.interface\";\nimport { Indicators } from \"../interfaces/indicators.interface\";\n\nexport interface DetailedIndicatorItem {\n name: string;\n concept: string;\n interval: number;\n classificationId?: number;\n classificationName?: string;\n classificationColor?: string;\n}\n\nexport interface DetailedIndicatorSection {\n title: string;\n items: DetailedIndicatorItem[];\n}\n\nexport interface IndicatorCollections {\n all: CapabilityItem[];\n positive: CapabilityItem[];\n negative: CapabilityItem[];\n precipitation: CapabilityItem[];\n negligence: CapabilityItem[];\n}\n\nexport interface IndicatorCollectionOptions {\n includeDirectionSign?: boolean;\n}\n\nexport function normalizeText(value?: string | null): string {\n return (value || \"\").replace(/\\s+/g, \" \").trim();\n}\n\nexport function normalizeLookup(value?: string | null): string {\n return normalizeText(value)\n .toLocaleLowerCase()\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\");\n}\n\nexport function buildIndicatorCollections(\n indicators: Indicators[],\n options: IndicatorCollectionOptions = {},\n): IndicatorCollections {\n const collections: IndicatorCollections = {\n all: [],\n positive: [],\n negative: [],\n precipitation: [],\n negligence: [],\n };\n\n indicators.forEach((group) => {\n const normalizedCompetenceName = normalizeLookup(group.competenceName);\n const isPrecipitationRisk = normalizedCompetenceName.includes(\"precipita\");\n const isNegligenceRisk = normalizedCompetenceName.includes(\"neglig\");\n const isNegativeGroup = normalizedCompetenceName.includes(\"negativ\");\n\n group.indicators.forEach((indicator) => {\n const item = buildIndicatorItem(indicator, {\n includeDirectionSign: options.includeDirectionSign,\n risk: isPrecipitationRisk || isNegligenceRisk,\n precipitation: isPrecipitationRisk,\n negligence: isNegligenceRisk,\n });\n\n collections.all.push(item);\n\n if (isPrecipitationRisk) {\n collections.precipitation.push(item);\n return;\n }\n\n if (isNegligenceRisk) {\n collections.negligence.push(item);\n return;\n }\n\n if (isNegativeIndicator(item.direction, isNegativeGroup)) {\n collections.negative.push(item);\n return;\n }\n\n collections.positive.push(item);\n });\n });\n\n return collections;\n}\n\nexport function buildDetailedIndicatorSections(\n indicators: Indicators[],\n): DetailedIndicatorSection[] {\n return indicators\n .map((group) => ({\n title: normalizeText(group.competenceName),\n items: group.indicators\n .map((indicator) => ({\n name: normalizeText(indicator.indicatorName || indicator.name),\n concept: normalizeText(indicator.indicatorConcept || indicator.concept),\n interval: indicator.interval || 0,\n classificationId:\n indicator.classification?.classificationId || indicator.classificationId,\n classificationName:\n indicator.classification?.classificationName || indicator.classificationName,\n classificationColor:\n indicator.classification?.classificationColor || indicator.classificationColor,\n }))\n .filter((item) => !!item.name),\n }))\n .filter((section) => section.items.length > 0);\n}\n\nfunction buildIndicatorItem(\n indicator: CapabilityItem,\n options: {\n includeDirectionSign?: boolean;\n risk: boolean;\n precipitation: boolean;\n negligence: boolean;\n },\n): CapabilityItem {\n const directionPrefix = getDirectionPrefix(\n indicator.direction,\n options.includeDirectionSign,\n );\n const name = normalizeText(indicator.indicatorName || indicator.name);\n\n return {\n ...indicator,\n name: directionPrefix ? `${directionPrefix} ${name}` : name,\n classificationId:\n indicator.classificationId || indicator.classification?.classificationId,\n classificationName:\n indicator.classificationName || indicator.classification?.classificationName,\n classificationColor:\n indicator.classificationColor || indicator.classification?.classificationColor,\n classificationBg:\n indicator.classificationBg || indicator.classification?.classificationBg,\n risk: options.risk,\n precipitation: options.precipitation,\n negligence: options.negligence,\n };\n}\n\nfunction getDirectionPrefix(\n direction?: string | null,\n includeDirectionSign?: boolean,\n): string {\n if (!includeDirectionSign) {\n return \"\";\n }\n\n return isNegativeIndicator(direction) ? \"\\u2193\" : \"\\u2191\";\n}\n\nfunction isNegativeIndicator(direction?: string | null, fallback = false): boolean {\n if (!direction) {\n return fallback;\n }\n\n return normalizeLookup(direction).includes(\"negativ\");\n}\n","import { CapabilityClassification } from \"../interfaces/capability-classification.interface\";\n\nexport const CAPABILITY_CLASSIFICATION: CapabilityClassification[] = [\n {\n id: 1,\n name: \"Destaque\",\n color: \"#96f2ee\",\n positive: true,\n },\n {\n id: 2,\n name: \"Satisfatório\",\n color: \"#68ceee\",\n positive: true,\n },\n {\n id: 3,\n name: \"Adequado\",\n color: \"#2d9ced\",\n positive: true,\n },\n {\n id: 4,\n name: \"A desenvolver\",\n color: \"#0e6ece\",\n positive: true,\n },\n {\n id: 5,\n name: \"Crítico baixo\",\n color: \"#073e92\",\n positive: true,\n },\n {\n id: 6,\n name: \"Merece atenção baixo\",\n color: \"#f56580\",\n positive: false,\n },\n {\n id: 7,\n name: \"Adequado\",\n color: \"#f598a7\",\n positive: false,\n },\n {\n id: 8,\n name: \"Merece atenção alto\",\n color: \"#f4284e\",\n positive: false,\n },\n {\n id: 9,\n name: \"Crítico alto\",\n color: \"#c11c2f\",\n positive: false,\n },\n];\n","import { Injectable } from \"@angular/core\";\n\nimport { CapabilityItem } from \"../interfaces/capability-item.interface\";\nimport { CapabilityClassification } from \"../interfaces/capability-classification.interface\";\n\nimport { CAPABILITY_CLASSIFICATION } from \"../consts/capability-classification.const\";\n\n@Injectable()\nexport class CapabilityClassificationService {\n getByItem(item: CapabilityItem): CapabilityClassification {\n return (\n CAPABILITY_CLASSIFICATION.find(\n (classification: any) => classification.id === item.classificationId\n ) || CAPABILITY_CLASSIFICATION[0]\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from \"@angular/core\";\n\nexport interface Tag {\n bgColor?: string | null | undefined;\n color?: \"highlight\" | \"selected\" | string | null | undefined;\n size?: \"small\" | string | null | undefined;\n fontSize?: string | null | undefined;\n}\n\n@Component({\n selector: \"mapa-tag\",\n templateUrl: \"./tag.component.html\",\n styleUrl: \"./tag.component.scss\",\n standalone: true,\n imports: [CommonModule],\n})\nexport class TagComponent {\n @Input() tag: Tag | undefined;\n}\n","<div\n *ngIf=\"tag\"\n class=\"mapa-tag\"\n [class.mapa-tag--small]=\"tag.size === 'small' && !tag.fontSize\"\n [class.mapa-tag--highlight]=\"tag.color === 'highlight'\"\n [class.mapa-tag--selected]=\"tag.color === 'selected'\"\n [class.mapa-tag--default-bg]=\"!tag.bgColor\"\n [class.mapa-tag--bg]=\"tag.bgColor\"\n [style.backgroundColor]=\"tag.bgColor\"\n [style.padding-left]=\"tag.fontSize\"\n [style.border-radius]=\"tag.fontSize\"\n [style.fontSize]=\"tag.fontSize\"\n>\n <ng-content></ng-content>\n</div>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/tag.component';\n","export enum TooltipPosition {\n ABOVE = 'above',\n BELOW = 'below',\n LEFT = 'left',\n RIGHT = 'right',\n DYNAMIC = 'dynamic',\n DEFAULT = 'below'\n}\n\nexport enum TooltipTheme {\n DARK = 'dark',\n LIGHT = 'light',\n DEFAULT = 'light'\n}","import { CommonModule } from \"@angular/common\";\nimport { Component, TemplateRef } from \"@angular/core\";\nimport { TooltipPosition, TooltipTheme } from \"./tooltip.enums\";\n\n@Component({\n selector: \"lib-tooltip\",\n templateUrl: \"./tooltip.component.html\",\n styleUrl: \"./tooltip.component.scss\",\n imports: [CommonModule],\n standalone: true,\n})\nexport class MapaTooltipComponent {\n tooltip!: TemplateRef<unknown>;\n\n position: TooltipPosition = TooltipPosition.DEFAULT;\n theme: TooltipTheme = TooltipTheme.DEFAULT;\n visible = false;\n left = 0;\n top = 0;\n}\n","<div\n class=\"tooltip\"\n [ngClass]=\"['tooltip--'+position, 'tooltip--'+theme]\"\n [class.tooltip--visible]=\"visible\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n>\n <ng-template [ngTemplateOutlet]=\"tooltip\"></ng-template>\n</div>\n","import {\n ApplicationRef,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n EnvironmentInjector,\n HostListener,\n Input,\n TemplateRef,\n createComponent,\n inject,\n} from \"@angular/core\";\nimport { MapaTooltipComponent } from \"./tooltip.component\";\nimport { TooltipPosition, TooltipTheme } from \"./tooltip.enums\";\n\n@Directive({\n selector: \"[tooltip]\",\n standalone: true,\n})\nexport class MapaTooltipDirective {\n @Input() tooltip!: TemplateRef<unknown>;\n @Input() position: TooltipPosition = TooltipPosition.DEFAULT;\n @Input() theme: TooltipTheme = TooltipTheme.DEFAULT;\n @Input() showDelay = 0;\n @Input() hideDelay = 0;\n\n private componentRef: ComponentRef<MapaTooltipComponent> | null = null;\n private showTimeout?: number;\n private hideTimeout?: number;\n private touchTimeout?: number;\n private readonly destroyRef = inject(DestroyRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly appRef: ApplicationRef\n ) {\n this.destroyRef.onDestroy(() => this.destroy());\n }\n\n @HostListener(\"mouseenter\")\n onMouseEnter(): void {\n this.initializeTooltip();\n }\n\n @HostListener(\"mouseleave\")\n onMouseLeave(): void {\n this.setHideTooltipTimeout();\n }\n\n @HostListener(\"mousemove\", [\"$event\"])\n onMouseMove($event: MouseEvent): void {\n if (\n this.componentRef !== null &&\n this.position === TooltipPosition.DYNAMIC\n ) {\n this.componentRef.instance.left = $event.clientX;\n this.componentRef.instance.top = $event.clientY;\n this.componentRef.instance.tooltip = this.tooltip;\n }\n }\n\n @HostListener(\"touchstart\", [\"$event\"])\n onTouchStart($event: TouchEvent): void {\n $event.preventDefault();\n window.clearTimeout(this.touchTimeout);\n this.touchTimeout = window.setTimeout(\n this.initializeTooltip.bind(this),\n 500\n );\n }\n\n @HostListener(\"touchend\")\n onTouchEnd(): void {\n window.clearTimeout(this.touchTimeout);\n this.setHideTooltipTimeout();\n }\n\n private initializeTooltip() {\n if (this.componentRef === null) {\n window.clearTimeout(this.hideTimeout);\n this.componentRef = createComponent(MapaTooltipComponent, {\n environmentInjector: this.environmentInjector,\n });\n\n this.appRef.attachView(this.componentRef.hostView);\n\n this.setTooltipComponentProperties();\n\n document.body.appendChild(this.componentRef.location.nativeElement);\n this.showTimeout = window.setTimeout(\n this.showTooltip.bind(this),\n this.showDelay\n );\n }\n }\n\n private setTooltipComponentProperties() {\n if (this.componentRef !== null) {\n this.componentRef.instance.tooltip = this.tooltip;\n this.componentRef.instance.position = this.position;\n this.componentRef.instance.theme = this.theme;\n\n const {\n left,\n right,\n top,\n bottom,\n } = this.elementRef.nativeElement.getBoundingClientRect();\n\n switch (this.position) {\n case TooltipPosition.BELOW: {\n this.componentRef.instance.left = Math.round(\n (right - left) / 2 + left\n );\n this.componentRef.instance.top = Math.round(bottom);\n break;\n }\n case TooltipPosition.ABOVE: {\n this.componentRef.instance.left = Math.round(\n (right - left) / 2 + left\n );\n this.componentRef.instance.top = Math.round(top);\n break;\n }\n case TooltipPosition.RIGHT: {\n this.componentRef.instance.left = Math.round(right);\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\n break;\n }\n case TooltipPosition.LEFT: {\n this.componentRef.instance.left = Math.round(left);\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\n break;\n }\n default: {\n break;\n }\n }\n }\n }\n\n private showTooltip() {\n if (this.componentRef !== null) {\n this.componentRef.instance.visible = true;\n }\n }\n\n private setHideTooltipTimeout() {\n this.hideTimeout = window.setTimeout(\n this.destroy.bind(this),\n this.hideDelay\n );\n }\n\n destroy(): void {\n window.clearTimeout(this.showTimeout);\n window.clearTimeout(this.hideTimeout);\n window.clearTimeout(this.touchTimeout);\n\n if (this.componentRef !== null) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n}\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/tooltip.directive';\nexport * from './src/tooltip.component';\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { TagComponent } from \"../../../tag/public-api\";\nimport { MapaTooltipDirective } from \"../../../tooltip/public-api\";\n\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\nimport { CapabilityClassificationService } from \"../essentials/services/capability-classification.service\";\n\n@Component({\n selector: \"mapa-capability-dot\",\n templateUrl: \"./capability-dot.component.html\",\n styleUrls: [\n \"./capability-dot.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule, TagComponent, MapaTooltipDirective],\n providers: [CapabilityClassificationService],\n standalone: true\n})\nexport class MapaCapabilityDotComponent {\n @Input() type!: string;\n @Input() item!: CapabilityItem;\n @Input() tooltip!: boolean;\n @Input() capability?: Capability;\n\n constructor(public classification: CapabilityClassificationService) {}\n\n createTag() {\n return {\n size: \"small\",\n \n }\n }\n}\n","<p\n *ngIf=\"!tooltip\"\n [class.dot]=\"type !== 'small'\"\n [class.small-dot]=\"type === 'small'\"\n [style.backgroundColor]=\"item.classificationColor\"\n></p>\n<div *ngIf=\"tooltip\" [tooltip]=\"tooltipTemplate\" class=\"tooltip-dot\">\n <p\n [class.dot]=\"type !== 'small'\"\n [class.small-dot]=\"type === 'small'\"\n [style.backgroundColor]=\"item.classificationColor\"\n ></p>\n</div>\n<ng-template #tooltipTemplate>\n <div class=\"tooltip-info\">\n <strong\n class=\"tooltip-info--direction\"\n *ngIf=\"!item.direction\"\n >↘︎</strong\n >\n <strong\n class=\"tooltip-info--direction\"\n *ngIf=\"item.direction\"\n >↗</strong\n >\n\n <h5>{{ item.name }}</h5>\n\n <mapa-tag [tag]=\"createTag()\">\n <p\n class=\"small-dot\"\n [style.backgroundColor]=\"item.classificationColor\"\n ></p>\n {{ item.classificationName }}\n </mapa-tag>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { TagComponent } from \"../../../tag/public-api\";\n\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { SafeHtmlPipe } from \"../../../../core/pipes/safe-html.pipe\";\nimport { MapaCapabilityDotComponent } from \"../capability-dot/capability-dot.component\";\nimport { CapabilityClassificationService } from \"../essentials/services/capability-classification.service\";\nimport { CapabilityItem } from \"../essentials/interfaces\";\nimport { MapaI18nService } from \"../../../../core/services/mapa-i18n.service\";\n\n@Component({\n selector: \"mapa-capability-expand\",\n templateUrl: \"./capability-expand.component.html\",\n styleUrl: \"./capability-expand.component.scss\",\n imports: [CommonModule, TagComponent, MapaCapabilityDotComponent, SafeHtmlPipe],\n providers: [CapabilityClassificationService],\n standalone: true\n})\nexport class MapaCapabilityExpandComponent {\n @Input() data!: Capability;\n \n constructor(\n public classification: CapabilityClassificationService,\n private readonly i18n: MapaI18nService\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get conceptTitle(): string {\n return this.texts.capability.conceptTitle;\n }\n\n get resultTitle(): string {\n return this.texts.capability.resultTitle;\n }\n\n get negativeDirectionLabel(): string {\n return this.texts.capability.negativeDirectionLabel;\n }\n\n get positiveDirectionLabel(): string {\n return this.texts.capability.positiveDirectionLabel;\n }\n \n createTag(item: CapabilityItem) {\n return {\n bgColor: item.classificationBg || \"\",\n fontSize: item.classificationFontSize || \"\",\n size: \"small\",\n }\n }\n}\n","<div\n class=\"capability__concept\"\n *ngIf=\"data.capabilityConcept?.concept || data.capabilityConcept?.result\"\n>\n <div\n class=\"capability__concept--content\"\n *ngIf=\"data.capabilityConcept?.concept\"\n >\n <div class=\"capability__concept--title\">{{ conceptTitle }}</div>\n <div class=\"capability__concept--text\">\n {{ data.capabilityConcept?.concept! }}\n </div>\n </div>\n <div\n class=\"capability__concept--content\"\n *ngIf=\"data.capabilityConcept?.result\"\n >\n <div class=\"capability__concept--title\">{{ resultTitle }}</div>\n <div class=\"capability__concept--text\">\n {{ data.capabilityConcept?.result! }}\n </div>\n </div>\n</div>\n<div class=\"capability__expanded\">\n <div *ngFor=\"let item of data.items\" class=\"capability__expanded--item\">\n <div class=\"name\">\n <div class=\"capability__expanded--name\">\n <span *ngIf=\"item.classificationColor\">\n <strong *ngIf=\"!classification.getByItem(item).positive\">&searr; </strong>\n <strong *ngIf=\"classification.getByItem(item).positive\">&nearr; </strong>\n </span>\n {{ item.name }}\n </div>\n <mapa-tag\n [tag]=\"createTag(item)\"\n class=\"capability__expanded--tag\"\n *ngIf=\"item.classificationId\"\n >\n <mapa-capability-dot\n [item]=\"item\"\n *ngIf=\"item.classificationColor\"\n ></mapa-capability-dot>\n {{ item.classificationName }}\n </mapa-tag>\n </div>\n\n <p class=\"capability__expanded--description\" *ngIf=\"item.description\">\n <strong\n *ngIf=\"item.classificationId && !item.classificationBg && !classification.getByItem(item).positive\"\n >{{ negativeDirectionLabel }}</strong>\n <strong\n *ngIf=\"item.classificationId && !item.classificationBg && classification.getByItem(item).positive\"\n >{{ positiveDirectionLabel }}</strong>\n <span [innerHTML]=\"item.description | safeHtml\"></span>\n </p>\n </div>\n</div>\n\n\n\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\n\n@Component({\n selector: \"mapa-capability-indicator\",\n templateUrl: \"./capability-indicator.component.html\",\n styleUrls: [\n \"./capability-indicator.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule],\n standalone: true\n})\nexport class MapaCapabilityIndicatorComponent {\n @Input() item!: CapabilityItem;\n}\n","<div\n class=\"indicator\"\n [style.backgroundColor]=\"item.classificationColor\"\n>\n <span *ngIf=\"item.name\">{{ item.name }}</span>\n <div class=\"indicator__classification\">\n {{ item.interval }}%\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input, OnChanges, OnInit, SimpleChanges } from \"@angular/core\";\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { Md5 } from \"ts-md5\";\n\n@Component({\n selector: \"mapa-capability-interval\",\n templateUrl: \"./capability-interval.component.html\",\n styleUrl: \"./capability-interval.component.scss\",\n imports: [CommonModule],\n standalone: true\n})\nexport class MapaCapabilityIntervalComponent implements OnInit, OnChanges {\n @Input() data!: Capability;\n @Input() showInterval!: boolean;\n public paintLinear!: string;\n\n public SVG = [\n { x: 0 , y: 0.710938, width: 16, height: 30 },\n { x: 22.5039, y: 0.710938, width: 16, height: 30 },\n { x: 45.0078, y: 0.710938, width: 16, height: 30 },\n { x: 66.9629, y: 0.710938, width: 16, height: 30 },\n { x: 88.917 , y: 0.710938, width: 16, height: 30 },\n { x: 110.872, y: 0.710938, width: 16, height: 30 },\n { x: 132.827, y: 0.710938, width: 16, height: 30 },\n { x: 154.782, y: 0.710938, width: 16, height: 30 },\n { x: 176.736, y: 0.710938, width: 16, height: 30 },\n { x: 199.24 , y: 0.710938, width: 16, height: 30 },\n ];\n\n public hasTransform = false;\n public indexTransform = 0;\n\n constructor() {}\n \n ngOnChanges(changes: SimpleChanges): void {\n const interval = this.data.interval || 0;\n this.hasTransform = interval % 10 > 0;\n this.indexTransform = (Math.floor(interval / 10) % 10);\n this.paintLinear = `linear_${ Md5.hashStr(`svg_${ interval }`) }`;\n }\n\n ngOnInit(): void {\n }\n\n public getWidth(index: number): number {\n if (!this.data) return 0;\n const interval = this.data.interval || 0;\n const intervalMod10 = Math.floor(interval / 10) % 10;\n return index < intervalMod10\n ? 100\n : index === intervalMod10\n ? (interval % 10) * 10\n : 0;\n }\n\n public getFill(i: number): string {\n const width = this.getWidth(i);\n if (width === 100) return \"#8C8F94\";\n return \"#DCDCDE\";\n }\n\n public getFillGradient(): string {\n return `url(#${ this.paintLinear })`;\n }\n\n public getTransform(i: number): string {\n const width = this.getWidth(i);\n if (width === 0 || width === 100) return \"\";\n return `rotate(-180 ${this.SVG[i].x} ${this.SVG[i].y})`;\n }\n\n public getStartOffset(): number {\n const interval = this.data.interval || 0;\n return Number(`0.${ interval % 10 }73005`);\n }\n\n public getStopOffset(): number {\n const interval = this.data.interval || 0;\n return Number(`0.${ interval % 10 }73105`);\n }\n\n public getGradientX(): number {\n return Math.floor(this.SVG[this.indexTransform].x);\n }\n\n public isSVG(): boolean {\n return !!this.data.classificationBg && this.data.classificationBg === \"SVG\";\n }\n}\n","<ul class=\"capability__interval\" *ngIf=\"isSVG(); else progressBar\">\n <li\n class=\"capability__interval--item\"\n *ngFor=\"let block of SVG; let i = index\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"30\"\n fill=\"none\"\n [class]=\"'svg_' + i + '_' + getWidth(i)\"\n >\n <defs *ngIf=\"hasTransform && i === indexTransform\">\n <linearGradient [attr.id]=\"paintLinear\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.offset]=\"getStartOffset()\" stop-color=\"#8C8F94\" />\n <stop [attr.offset]=\"getStopOffset()\" stop-color=\"#D9D9D9\" />\n </linearGradient>\n </defs>\n <rect\n rx=\"6\"\n x=\"0\"\n y=\"0.710938\"\n [attr.width]=\"SVG[i].width\"\n [attr.height]=\"SVG[i].height\"\n [attr.fill]=\"getFill(i)\"\n />\n <rect\n *ngIf=\"hasTransform && i === indexTransform\"\n rx=\"6\"\n x=\"0\"\n y=\"0.710938\"\n [attr.width]=\"SVG[i].width\"\n [attr.height]=\"SVG[i].height\"\n [attr.fill]=\"getFillGradient()\"\n />\n </svg>\n </li>\n <li class=\"capability__interval--interval\" *ngIf=\"showInterval\">\n {{ data.interval }}%\n </li>\n</ul>\n<ng-template #progressBar>\n <div class=\"capability__progress-bar\">\n <div class=\"capability__progress-bar--bg\">\n <div\n class=\"capability__progress-bar--filled\"\n [style.width.%]=\"data.interval\"\n ></div>\n </div>\n <div class=\"capability__interval--result\" *ngIf=\"showInterval\">\n {{data.interval}}%\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { MapaCapabilityIntervalComponent } from \"../capability-interval/capability-interval.component\";\n\n@Component({\n selector: \"mapa-capability-interval-bar\",\n templateUrl: \"./capability-interval-bar.component.html\",\n styleUrl: \"./capability-interval-bar.component.scss\",\n imports: [CommonModule, MapaCapabilityIntervalComponent],\n standalone: true\n})\nexport class MapaCapabilityIntervalBarComponent {\n @Input() data!: Capability;\n @Input() expanded?: boolean;\n @Input() showInterval!: boolean;\n @Output() clicked: EventEmitter<void> = new EventEmitter<void>();\n\n public isHovering = false;\n public isClicked = false;\n\n public isSVG(): boolean {\n return !!this.data.classificationBg && this.data.classificationBg === \"SVG\";\n }\n}\n","<section reusable-outlet class=\"capability-interval\">\n <section [class.capability-interval__bar]=\"isSVG()\">\n <mapa-capability-interval\n [data]=\"data\"\n [showInterval]=\"showInterval\"\n ></mapa-capability-interval>\n </section>\n</section>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { CapabilityItem } from \"../essentials/interfaces\";\n\n@Component({\n selector: \"mapa-capability-comparative-indicator\",\n templateUrl: \"./capability-comparative-indicator.component.html\",\n styleUrls: [\n \"./capability-comparative-indicator.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule],\n standalone: true\n})\nexport class MapaCapabilityComparativeIndicatorComponent {\n @Input() item!: CapabilityItem;\n @Input() fullWidth?: boolean;\n\n public getWidth(item: CapabilityItem): string {\n return 32 + (item.interval || 0) * 2 + \"px\";\n }\n}\n","<div\n class=\"comparative-indicator\"\n [style.width]=\"fullWidth ? '100%' : getWidth(item)\"\n>\n <div class=\"comparative-indicator__interval\">\n {{ item.interval }}%\n <span\n *ngIf=\"item.isIndividually\"\n class=\"comparative-indicator__individually\"\n >▼</span\n >\n </div>\n <div\n class=\"comparative-indicator__classification\"\n [style.backgroundColor]=\"item.classificationColor\"\n *ngIf=\"item.classificationColor\"\n ></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { CapabilityItem } from '../essentials/interfaces';\nimport { CapabilityComparative } from '../essentials/interfaces/capability-comparative.interface';\nimport { MapaCapabilityComparativeIndicatorComponent } from '../capability-comparative-indicator/capability-comparative-indicator.component';\n\n@Component({\n selector: 'mapa-capability-comparative-chart',\n templateUrl: './capability-comparative-chart.component.html',\n styleUrl: './capability-comparative-chart.component.scss',\n imports: [CommonModule, MapaCapabilityComparativeIndicatorComponent],\n standalone: true\n})\nexport class MapaCapabilityComparativeChartComponent {\n @Input() data!: CapabilityComparative;\n\n public setCleanItem(item: CapabilityItem): CapabilityItem {\n return {\n average: item.average,\n interval: item.interval,\n classificationId: item.classificationId,\n classificationColor: item.classificationColor,\n isIndividually: item.isIndividually,\n };\n }\n}\n","<table class=\"capability-comparative__chart\">\n <tr *ngFor=\"let indicator of data.indicators\">\n <th>\n <p>{{ indicator.name }}</p>\n </th>\n <td class=\"capability-comparative__chart--indicators\">\n <mapa-capability-comparative-indicator\n *ngFor=\"let item of indicator.items\"\n [item]=\"setCleanItem(item)\"\n [fullWidth]=\"true\"\n [style.width.%]=\"item.interval\"\n ></mapa-capability-comparative-indicator>\n </td>\n </tr>\n</table>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { CapabilityComparative } from '../essentials/interfaces/capability-comparative.interface';\nimport { Capability } from '../essentials/interfaces';\nimport { MapaI18nService } from '../../../../core/services/mapa-i18n.service';\nimport { MapaCapabilityIntervalComponent } from '../capability-interval/capability-interval.component';\n\n@Component({\n selector: 'mapa-capability-comparative-header',\n templateUrl: './capability-comparative-header.component.html',\n styleUrl: './capability-comparative-header.component.scss',\n imports: [CommonModule, MapaCapabilityIntervalComponent],\n standalone: true\n})\nexport class MapaCapabilityComparativeHeaderComponent {\n @Input() data!: CapabilityComparative;\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get groupAverageTitle(): string {\n return this.texts.capability.groupAverageTitle;\n }\n\n get individualAverageTitle(): string {\n return this.texts.capability.individualAverageTitle;\n }\n\n public getCapabilityData(item: number): Capability {\n return {\n interval: item,\n items: [],\n };\n }\n}\n","<section class=\"capability-comparative__header\">\n <h1>{{ data.name }}</h1>\n\n <section>\n <div class=\"capability-comparative__avg\">\n <div class=\"capability-comparative__avg--title\">{{ groupAverageTitle }}</div>\n <mapa-capability-interval\n [data]=\"getCapabilityData(data.groupAvg)\"\n [showInterval]=\"true\"\n ></mapa-capability-interval>\n </div>\n <div class=\"capability-comparative__avg\">\n <div class=\"capability-comparative__avg--title\">{{ individualAverageTitle }}</div>\n <mapa-capability-interval\n [data]=\"getCapabilityData(data.individualAvg)\"\n [showInterval]=\"true\"\n ></mapa-capability-interval>\n </div>\n </section>\n</section>\n\n\n","import { Component, Input } from \"@angular/core\";\n\nimport { CapabilityComparative } from \"../essentials/interfaces/capability-comparative.interface\";\nimport { MapaCapabilityComparativeChartComponent } from \"../capability-comparative-chart/capability-comparative-chart.component\";\nimport { MapaCapabilityComparativeHeaderComponent } from \"../capability-comparative-header/capability-comparative-header.component\";\n\n@Component({\n selector: \"mapa-capability-comparative\",\n templateUrl: \"./capability-comparative.component.html\",\n styleUrl: \"./capability-comparative.component.scss\",\n imports: [\n MapaCapabilityComparativeChartComponent,\n MapaCapabilityComparativeHeaderComponent,\n ],\n standalone: true\n})\nexport class MapaCapabilityComparativeComponent {\n @Input() data!: CapabilityComparative;\n}\n","<section class=\"capability-comparative\">\n <mapa-capability-comparative-header\n [data]=\"data\"\n ></mapa-capability-comparative-header>\n <mapa-capability-comparative-chart\n [data]=\"data\"\n ></mapa-capability-comparative-chart>\n</section>\n","import { CommonModule } from \"@angular/common\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n ViewChild,\n} from \"@angular/core\";\nimport { Capability } from \"../essentials/interfaces/capability.interface\";\nimport { CapabilityClassificationService } from \"../../public-api\";\nimport { MatAccordion } from \"@angular/material/expansion\";\nimport { MatExpansionModule } from \"@angular/material/expansion\";\nimport { TagComponent } from \"../../../tag/public-api\";\nimport { MapaCapabilityDotComponent } from \"../capability-dot/capability-dot.component\";\nimport { MapaCapabilityExpandComponent } from \"../capability-expand/capability-expand.component\";\nimport { MapaCapabilityIntervalBarComponent } from \"../capability-interval-bar/capability-interval-bar.component\";\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\n\n@Component({\n selector: \"mapa-capability-detail\",\n templateUrl: \"./capability-detail.component.html\",\n styleUrls: [\n \"./capability-detail.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TagComponent,\n MatExpansionModule,\n MapaCapabilityDotComponent,\n MapaCapabilityIntervalBarComponent,\n MapaCapabilityExpandComponent,\n ],\n providers: [CapabilityClassificationService],\n standalone: true\n})\nexport class MapaCapabilityDetailComponent implements AfterViewInit, OnChanges, OnInit {\n @Input() data!: Capability[];\n @Input() showTags!: boolean;\n @Input() showProgressBar!: boolean;\n @Input() showInterval!: boolean;\n @Input() isExpanded!: boolean;\n\n @ViewChild(\"detailAccordion\") accordion!: MatAccordion;\n\n public expanded = new Set<number>();\n public showTagInterval = true;\n\n constructor(public classification: CapabilityClassificationService) {}\n\n ngOnInit(): void {\n this.syncExpandedState();\n }\n\n ngAfterViewInit(): void {\n this.syncExpandedState();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"data\"] || changes[\"isExpanded\"]) {\n this.syncExpandedState();\n }\n }\n\n private syncExpandedState(): void {\n if (this.isExpanded) {\n this.expanded = new Set(this.data.map((_, i) => i));\n this.accordion?.openAll();\n return;\n }\n\n this.expanded.clear();\n this.accordion?.closeAll();\n }\n\n sortItemsByinterval(items: CapabilityItem[] | undefined): CapabilityItem[] {\n return [...(items ?? [])].sort(\n (a, b) => (b.interval ?? 0) - (a.interval ?? 0),\n );\n }\n\n showMore(index: number): void {\n if (this.expanded.has(index)) {\n this.expanded.delete(index);\n } else {\n this.expanded.add(index);\n }\n }\n\n toggleAll(): void {\n if (this.expanded.size === this.data.length) {\n this.expanded.clear();\n this.accordion.closeAll();\n } else {\n this.expanded = new Set(this.data.map((_, i) => i));\n this.accordion.openAll();\n }\n }\n\n createTag(item: Capability) {\n return {\n bgColor: item.classificationBg || \"\",\n fontSize: item.classificationFontSize || \"\",\n size: \"small\",\n };\n }\n public isSVG(item: Capability): boolean {\n return !!item.classificationBg && item.classificationBg === \"SVG\";\n }\n}\n","<mat-accordion class=\"capability-detail\" #detailAccordion=\"matAccordion\" multi>\n @for (capability of data; track capability; let i = $index) {\n <mat-expansion-panel [expanded]=\"expanded.has(i)\">\n <mat-expansion-panel-header>\n <div class=\"capability__item--header\">\n <div class=\"capability__item--title-dots\">\n <div class=\"capability__item--title display-L\">\n {{ capability.name }}\n @if (showTags) {\n <span class=\"capability__item--title-tag\">\n <mapa-tag [tag]=\"createTag(capability)\">\n @if (capability.classificationColor) {\n <mapa-capability-dot\n [item]=\"capability\"\n [capability]=\"capability\"\n ></mapa-capability-dot>\n }\n {{ capability.classificationName }}\n </mapa-tag>\n </span>\n }\n </div>\n\n @if (isSVG(capability)) {\n <div class=\"capability__item--dots\">\n @for (item of sortItemsByinterval(capability.items); track item) {\n <mapa-capability-dot\n type=\"small\"\n [item]=\"item\"\n [capability]=\"capability\"\n [tooltip]=\"true\"\n ></mapa-capability-dot>\n }\n </div>\n }\n </div>\n\n <div [class.capability__item--interval]=\"showProgressBar\">\n <mapa-capability-interval-bar\n [data]=\"capability\"\n [expanded]=\"expanded.has(i)\"\n [showInterval]=\"showInterval\"\n (clicked)=\"showMore(i)\"\n ></mapa-capability-interval-bar>\n </div>\n </div>\n </mat-expansion-panel-header>\n <mapa-capability-expand [data]=\"capability\"></mapa-capability-expand>\n </mat-expansion-panel>\n }\n</mat-accordion>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input, OnChanges, OnInit, SimpleChanges } from \"@angular/core\";\n\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\nimport { MapaI18nService } from \"../../../../core/services/mapa-i18n.service\";\nimport { MapaCapabilityIndicatorComponent } from \"../capability-indicator/capability-indicator.component\";\n\n@Component({\n selector: \"mapa-capability-indicator-list\",\n templateUrl: \"./capability-indicator-list.component.html\",\n styleUrls: [\n \"./capability-indicator-list.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule, MapaCapabilityIndicatorComponent],\n standalone: true\n})\nexport class MapaCapabilityIndicatorListComponent implements OnInit, OnChanges {\n @Input() data!: CapabilityItem[];\n\n public dataPositive: CapabilityItem[] = [];\n public dataNegative: CapabilityItem[] = []; \n public dataRiskPrecipitation: CapabilityItem[] = []; \n public dataRiskNegligence: CapabilityItem[] = []; \n\n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get positiveIndicatorsTitle(): string {\n return this.texts.capability.positiveIndicatorsTitle;\n }\n\n get negativeIndicatorsTitle(): string {\n return this.texts.capability.negativeIndicatorsTitle;\n }\n\n get riskIndicatorsTitle(): string {\n return this.texts.capability.riskIndicatorsTitle;\n }\n\n get precipitationRiskTitle(): string {\n return this.texts.capability.precipitationRiskTitle;\n }\n\n get negligenceRiskTitle(): string {\n return this.texts.capability.negligenceRiskTitle;\n }\n\n ngOnInit(): void {\n this.buildIndicatorGroups();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"data\"]) {\n this.buildIndicatorGroups();\n }\n }\n\n private buildIndicatorGroups(): void {\n this.dataPositive = this.data.filter(\n (item: CapabilityItem) => item.direction === \"Positiva\" && !item.risk\n );\n this.dataNegative = this.data.filter(\n (item: CapabilityItem) => item.direction === \"Negativa\" && !item.risk\n );\n this.dataRiskPrecipitation = this.data.filter(\n (item: CapabilityItem) => item.risk === true && item.precipitation === true\n );\n this.dataRiskNegligence = this.data.filter(\n (item: CapabilityItem) => item.risk === true && item.negligence === true\n );\n }\n}\n","<section class=\"indicator-list\">\n <article class=\"indicator-list__column\">\n <h2>{{ positiveIndicatorsTitle }}</h2>\n <mapa-capability-indicator *ngFor=\"let item of dataPositive\" [item]=\"item\">\n </mapa-capability-indicator>\n </article>\n <article class=\"indicator-list__column\">\n <h2>{{ negativeIndicatorsTitle }}</h2>\n <mapa-capability-indicator *ngFor=\"let item of dataNegative\" [item]=\"item\">\n </mapa-capability-indicator>\n </article>\n <article\n class=\"indicator-list__column\"\n *ngIf=\"dataRiskPrecipitation.length > 0 || dataRiskNegligence.length > 0\"\n >\n <h2>{{ riskIndicatorsTitle }}</h2>\n <div *ngIf=\"dataRiskPrecipitation.length > 0\">\n <h3>{{ precipitationRiskTitle }}</h3>\n <mapa-capability-indicator\n *ngFor=\"let item of dataRiskPrecipitation\"\n [item]=\"item\"\n >\n </mapa-capability-indicator>\n </div>\n <div *ngIf=\"dataRiskNegligence.length > 0\">\n <h3>{{ negligenceRiskTitle }}</h3>\n <mapa-capability-indicator\n *ngFor=\"let item of dataRiskNegligence\"\n [item]=\"item\"\n >\n </mapa-capability-indicator>\n </div>\n </article>\n</section>\n\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { CapabilityItem } from \"../essentials/interfaces/capability-item.interface\";\nimport { MapaCapabilityIndicatorComponent } from \"../capability-indicator/capability-indicator.component\";\nimport { CapabilityClassificationService } from \"../essentials/services/capability-classification.service\";\n\n@Component({\n selector: \"mapa-capability-indicator-chart\",\n templateUrl: \"./capability-indicator-chart.component.html\",\n styleUrls: [\n \"./capability-indicator-chart.component.scss\",\n \"./../../styles/capability.scss\",\n ],\n imports: [CommonModule, MapaCapabilityIndicatorComponent],\n providers: [CapabilityClassificationService],\n standalone: true\n})\nexport class MapaCapabilityIndicatorChartComponent {\n @Input() data!: CapabilityItem[];\n\n constructor(public classification: CapabilityClassificationService) {}\n\n public setUnlabeledItem(item: CapabilityItem): CapabilityItem {\n return {\n classificationId: item.classificationId,\n classificationColor: item.classificationColor,\n interval: item.interval,\n }\n }\n\n public getWidth(item: CapabilityItem): string {\n const minWidth = 42;\n const interval = (item.interval || 0);\n if (interval < 10) return minWidth + 'px';\n return interval + '%';\n }\n}\n","<table class=\"indicator-chart\">\n <tr *ngFor=\"let item of data\">\n <td class=\"indicator-chart__column--description\">{{ item.name }}</td>\n <td class=\"indicator-chart__column indicator-chart__column--left\">\n <div\n class=\"indicator-chart__column--negative\"\n *ngIf=\"item.direction === 'Negativa'\"\n >\n <mapa-capability-indicator\n [item]=\"setUnlabeledItem(item)\"\n [style.width]=\"getWidth(item)\"\n ></mapa-capability-indicator>\n </div>\n </td>\n <td class=\"indicator-chart__column indicator-chart__column--right\">\n <div\n class=\"indicator-chart__column--positive\"\n *ngIf=\"item.direction === 'Positiva'\"\n >\n <mapa-capability-indicator\n [item]=\"setUnlabeledItem(item)\"\n [style.width]=\"getWidth(item)\"\n ></mapa-capability-indicator>\n </div>\n </td>\n </tr>\n</table>\n","/*\n * Public API Surface of mapa-library-ui capability-detail\n */\n\nexport * from './src/essentials/interfaces';\nexport * from './src/essentials/functions';\nexport * from './src/essentials/services/capability-classification.service';\n\nexport * from './src/capability-dot/capability-dot.component';\nexport * from './src/capability-expand/capability-expand.component';\nexport * from './src/capability-indicator/capability-indicator.component';\nexport * from './src/capability-interval/capability-interval.component';\nexport * from './src/capability-interval-bar/capability-interval-bar.component';\n\nexport * from './src/capability-comparative/capability-comparative.component';\nexport * from './src/capability-comparative-chart/capability-comparative-chart.component';\nexport * from './src/capability-comparative-header/capability-comparative-header.component';\n\nexport * from './src/capability-detail/capability-detail.component';\n\nexport * from './src/capability-indicator-list/capability-indicator-list.component';\n\nexport * from './src/capability-indicator-chart/capability-indicator-chart.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormsModule, FormControl, ReactiveFormsModule } from \"@angular/forms\";\nimport { MatCheckboxChange } from \"@angular/material/checkbox\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatSelect } from \"@angular/material/select\";\nimport { MAT_SELECT_CONFIG, MatSelectModule } from \"@angular/material/select\";\nimport { NgxMatSelectSearchModule } from \"ngx-mat-select-search\";\nimport { ReplaySubject } from \"rxjs\";\nimport { ButtonComponent } from \"../../button/public-api\";\nimport { Dropdown } from \"../../../core/elements/dropdown\";\nimport { MapaFormErrorsComponent } from \"../../../core/components/form-errors/form-errors.component\";\nimport { ElementGroup } from \"../../../core/interfaces/element-group.interface\";\nimport { ElementOption } from \"../../../core/interfaces/element-option.interface\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\n\n@Component({\n selector: \"mapa-dropdown\",\n templateUrl: \"./dropdown.component.html\",\n styleUrl: \"./dropdown.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatIconModule,\n MatSelectModule,\n NgxMatSelectSearchModule,\n ButtonComponent,\n MapaFormErrorsComponent,\n SafeHtmlPipe,\n ],\n providers: [\n {\n provide: MAT_SELECT_CONFIG,\n useValue: { overlayPanelClass: \"mapa-overlay-dropdown\" },\n },\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: { appearance: \"outline\" },\n },\n ],\n standalone: true\n})\nexport class MapaDropdownComponent\n implements OnInit, OnChanges, AfterViewInit\n{\n @Input() formControl!: FormControl;\n @Input() formControlSearch!: FormControl;\n @Input() element!: Dropdown;\n @Input() border: \"soft\" | \"tag\" | \"highlight\" | null | undefined;\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @ViewChild(\"dropdown\", { static: true }) dropdown!: MatSelect;\n\n public filteredOptions: ReplaySubject<ElementOption[]> = new ReplaySubject<\n ElementOption[]\n >(1);\n public filteredGroups: ReplaySubject<ElementGroup[]> = new ReplaySubject<\n ElementGroup[]\n >(1);\n protected filteredOptionsCache: ElementOption[] = [];\n protected filteredGroupCache: ElementGroup[] = [];\n private readonly destroyRef = inject(DestroyRef);\n\n isIndeterminate = false;\n isChecked = false;\n isOptionsGroup = false;\n\n constructor(\n private readonly i18n: MapaI18nService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get selectAllLabel(): string {\n return this.texts.common.selectAll;\n }\n\n get selectedOptions(): ElementOption[] {\n const value = this.formControl?.value;\n\n if (Array.isArray(value)) {\n return value.filter((option): option is ElementOption =>\n this.isElementOption(option)\n );\n }\n\n return this.isElementOption(value) ? [value] : [];\n }\n\n ngOnInit(): void {\n this.setOptions();\n\n this.element.search?.formControl?.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.filterOptions();\n this.setToggleAllCheckboxState();\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit(): void {\n Promise.resolve().then(() => this.cdr.detectChanges());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes[\"element\"]?.previousValue !== undefined &&\n changes[\"element\"].previousValue?.controlType === \"dropdown\" &&\n changes[\"element\"].previousValue?.options !==\n changes[\"element\"].currentValue?.options\n ) {\n this.element.options = changes[\"element\"].currentValue.options;\n this.setOptions();\n this.cdr.markForCheck();\n }\n }\n\n setOptions(): void {\n this.isOptionsGroup = this.isElementGroup(this.element.options[0]);\n\n if (this.isOptionsGroup) {\n this.filteredGroupCache = (this.element.options as ElementGroup[]).slice();\n this.filteredGroups.next(this.filteredGroupCache);\n this.cdr.markForCheck();\n return;\n }\n\n this.filteredOptionsCache = (this.element.options as ElementOption[]).slice();\n this.filteredOptions.next(this.filteredOptionsCache);\n this.cdr.markForCheck();\n }\n\n protected filterOptionsFromGroup(\n group: ElementGroup,\n value: string\n ): ElementOption[] {\n const filterValue = this.normalizeValue(value);\n\n return this.normalizeValue(group.label).includes(filterValue)\n ? group.options\n : group.options.filter((item) =>\n this.normalizeValue(item.value).includes(filterValue)\n );\n }\n\n protected filterOptions(): void {\n if (!this.element.options) {\n return;\n }\n\n const search = this.normalizeValue(this.element.search?.formControl?.value);\n\n if (this.isOptionsGroup) {\n const groups = this.element.options as ElementGroup[];\n this.filteredGroupCache = groups\n .map((group: ElementGroup) => ({\n label: group.label,\n options: this.filterOptionsFromGroup(group, search),\n }))\n .filter((group) => group.options.length > 0);\n this.filteredGroups.next(this.filteredGroupCache);\n return;\n }\n\n const options = this.element.options as ElementOption[];\n if (!search) {\n this.filteredOptionsCache = options.slice();\n this.filteredOptions.next(this.filteredOptionsCache);\n return;\n }\n\n this.filteredOptionsCache = options.filter((option: ElementOption) =>\n this.normalizeValue(option.value).includes(search)\n );\n this.filteredOptions.next(this.filteredOptionsCache);\n }\n\n normalizeValue(value?: string | null): string {\n return (value ?? \"\")\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase();\n }\n\n triggerOpenedChange(event: boolean): void {\n this.openedChange.emit(event);\n }\n\n protected setToggleAllCheckboxState(): void {\n const search = this.normalizeValue(this.element.search?.formControl?.value);\n\n if (!search) {\n this.isIndeterminate = false;\n this.isChecked = false;\n return;\n }\n\n const filteredLength = this.filteredOptionsCache.filter((option) =>\n this.normalizeValue(option.value).includes(search)\n ).length;\n\n this.isIndeterminate =\n filteredLength > 0 && filteredLength < this.filteredOptionsCache.length;\n this.isChecked =\n filteredLength > 0 && filteredLength === this.filteredOptionsCache.length;\n this.cdr.markForCheck();\n }\n\n toggleSelectAll(event: MatCheckboxChange): void {\n if (this.isOptionsGroup) {\n const groupOptions = this.filteredGroupCache.reduce(\n (accumulator: ElementOption[], group) => accumulator.concat(group.options),\n []\n );\n this.formControl?.patchValue(event.checked ? groupOptions : []);\n return;\n }\n\n this.formControl?.patchValue(event.checked ? this.filteredOptionsCache : []);\n }\n\n isElementGroup(object: ElementGroup | ElementOption): object is ElementGroup {\n return !!object && \"label\" in object && \"options\" in object;\n }\n\n isElementOption(object: unknown): object is ElementOption {\n return (\n !!object &&\n typeof object === \"object\" &&\n \"key\" in object &&\n \"value\" in object\n );\n }\n\n compareFn(c1: ElementOption | null, c2: ElementOption | null): boolean {\n return c1 && c2 ? c1.key === c2.key : c1 === c2;\n }\n\n hasValue(): boolean {\n const value = this.formControl?.value;\n return Array.isArray(value) ? value.length > 0 : this.isElementOption(value);\n }\n\n clearValue(event: MouseEvent): void {\n event.stopPropagation();\n this.formControl.setValue(null);\n this.cdr.markForCheck();\n }\n}\n","@if (element) {\n @if (element.label) {\n <label class=\"mapa-dropdown__label\">\n {{ element.label }}\n </label>\n }\n <div class=\"mapa-form--inline\">\n <mat-form-field\n appearance=\"outline\"\n class=\"mapa-dropdown\"\n [class.mapa-dropdown--highlight]=\"border === 'highlight'\"\n [class.mapa-dropdown--soft-border]=\"border === 'soft'\"\n [class.mapa-dropdown--tag]=\"border === 'tag'\"\n [class.mapa-dropdown--labeled]=\"!!element.label\"\n >\n <mat-select\n #dropdown\n ngDefaultControl\n [formControl]=\"formControl\"\n [multiple]=\"element.multiple\"\n [placeholder]=\"element.placeholder || ''\"\n [compareWith]=\"compareFn\"\n (openedChange)=\"triggerOpenedChange($event)\"\n >\n @if (element.search) {\n <mat-option class=\"mapa-dropdown__search\">\n @if (element.search.formControl) {\n <ngx-mat-select-search\n [showToggleAllCheckbox]=\"element.search.toggleAllCheckbox!\"\n [formControl]=\"element.search.formControl\"\n [placeholderLabel]=\"element.search.placeholder || ''\"\n i18n-placeholderLabel\n [noEntriesFoundLabel]=\"element.search.noEntriesFoundLabel || ''\"\n ></ngx-mat-select-search>\n }\n </mat-option>\n }\n @if (element.multiple) {\n <mat-option class=\"mapa-dropdown__option--select-all\">\n <mat-checkbox\n class=\"mat-option\"\n [indeterminate]=\"isIndeterminate\"\n [checked]=\"isChecked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelectAll($event)\"\n >\n {{ selectAllLabel }}\n </mat-checkbox>\n </mat-option>\n }\n @if (isOptionsGroup) {\n @if (filteredGroups | async; as groups) {\n @for (group of groups; track group.label) {\n <mat-optgroup [label]=\"group.label\">\n @for (option of group.options; track option.key) {\n <mat-option\n [value]=\"option\"\n [ngClass]=\"[\n 'mapa-dropdown__option--children-level-' + option.childrenLevel,\n ]\"\n >\n <span [innerHTML]=\"option.value | safeHtml\"></span>\n </mat-option>\n }\n </mat-optgroup>\n }\n }\n } @else {\n @if (filteredOptions | async; as options) {\n @for (option of options; track option.key) {\n <mat-option\n [value]=\"option\"\n [ngClass]=\"[\n 'mapa-dropdown__option mapa-dropdown__option--children-level-' +\n option.childrenLevel,\n ]\"\n >\n <span\n class=\"mapa-dropdown__option-value\"\n [innerHTML]=\"option.value | safeHtml\"\n ></span>\n </mat-option>\n }\n }\n }\n\n @for (option of selectedOptions; track option.key) {\n <mat-option\n hidden\n [value]=\"option\"\n [ngClass]=\"[\n 'mapa-dropdown__option--children-level-' + option.childrenLevel,\n ]\"\n >\n <span [innerHTML]=\"option.value | safeHtml\"></span>\n </mat-option>\n }\n </mat-select>\n @if (element.hint) {\n <mat-hint>{{ element.hint }}</mat-hint>\n }\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n @if (hasValue() && !formControl.disabled && element.clearValue) {\n <mat-icon\n (click)=\"clearValue($event)\"\n class=\"mapa-input--close\"\n >close</mat-icon\n >\n }\n </mat-form-field>\n @if (element.actionButton) {\n <div class=\"mapa-form--action\">\n <mapa-button\n color=\"basic\"\n (click)=\"element.actionButton.action.emit(true)\"\n >\n {{ element.actionButton.label }}\n </mapa-button>\n </div>\n }\n </div>\n}\n","/*\n * Public API Surface of mapa-library-ui dropdown\n */\n\nexport * from './src/dropdown.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from \"@angular/core\";\nimport { NgApexchartsModule } from \"ng-apexcharts\";\nimport { MapaDropdownComponent } from \"../../dropdown/public-api\";\nimport { ChartOptions } from \"../../../core/interfaces/chart-options.interface\";\n\n@Component({\n selector: \"mapa-chart\",\n templateUrl: \"./chart.component.html\",\n styleUrl: \"./chart.component.scss\",\n imports: [CommonModule, NgApexchartsModule, MapaDropdownComponent],\n standalone: true,\n})\nexport class MapaChartComponent implements OnInit, OnChanges {\n @Input() options!: Partial<ChartOptions>;\n\n private colors = [\"#EA561D\", \"#6195FB\", \"#2ED47A\", \"#EEDB2A\"];\n public chartOptions!: Partial<ChartOptions>;\n\n constructor() {}\n\n ngOnInit(): void {\n this.generateChart();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"options\"]) {\n this.generateChart();\n }\n }\n\n private generateChart(): void {\n if (this.options) {\n this.chartOptions = {\n series: this.options.series,\n chart: {\n height: 500,\n width: \"100%\",\n type: this.options.chart?.type || \"radar\",\n events: {\n beforeMount: (chart) => {\n chart.windowResizeHandler();\n },\n },\n toolbar: {\n show: false,\n },\n },\n stroke: {\n width: 1,\n colors: this.colors,\n },\n fill: {\n opacity: 0.3,\n colors: this.colors,\n },\n markers: {\n size: 2,\n shape: \"circle\",\n colors: this.colors,\n strokeColors: this.colors,\n },\n xaxis: {\n categories: this.options.xaxis?.categories,\n labels: {\n style: {\n colors: new Array(this.options.xaxis?.categories.length).fill(\n \"#666666\"\n ),\n fontSize: \"12px\",\n fontFamily: \"Asap\",\n },\n },\n },\n yaxis: {\n labels: {\n style: {\n colors: \"#9B9B9B\",\n fontSize: \"12px\",\n fontFamily: \"Asap\",\n },\n },\n tickAmount: 10,\n min: 0,\n max: 100,\n },\n legend: {\n position: \"right\",\n horizontalAlign: \"center\",\n height: 500,\n fontSize: \"12px\",\n fontFamily: \"Asap\",\n offsetX: 30,\n markers: {\n fillColors: this.colors,\n },\n },\n responsive: [\n {\n breakpoint: 1300,\n options: {\n chart: {\n width: \"100%\",\n height: 550,\n },\n legend: {\n position: \"bottom\",\n horizontalAlign: \"center\",\n height: 100,\n },\n },\n },\n ],\n };\n }\n }\n}\n\n","<section>\n <div class=\"chart\" *ngIf=\"chartOptions\">\n <div class=\"chart__dropdown\" *ngIf=\"options.dropdown\">\n <mapa-dropdown\n [formControl]=\"options.dropdown.formControl\"\n [element]=\"options.dropdown.element\"\n ></mapa-dropdown>\n </div>\n <apx-chart\n [series]=\"chartOptions.series!\"\n [chart]=\"chartOptions.chart!\"\n [xaxis]=\"chartOptions.xaxis!\"\n [yaxis]=\"chartOptions.yaxis!\"\n [stroke]=\"chartOptions.stroke!\"\n [markers]=\"chartOptions.markers!\"\n [fill]=\"chartOptions.fill!\"\n [title]=\"chartOptions.title!\"\n [legend]=\"chartOptions.legend!\"\n [responsive]=\"chartOptions.responsive!\"width\n ></apx-chart>\n </div>\n</section>\n","/*\n * Public API Surface of mapa-library-ui chart\n */\n\nexport * from './src/chart.component';\n","import { Component, Input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'mapa-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n imports: [ReactiveFormsModule, MatCheckboxModule],\n standalone: true\n})\nexport class CheckboxComponent {\n @Input() color: 'primary' | 'basic' | null | undefined;\n @Input() formControl!: FormControl;\n}\n","<mat-checkbox\n [formControl]=\"formControl\"\n [class.primary]=\"color === 'primary'\"\n [class.basic]=\"color === 'basic'\"\n>\n</mat-checkbox>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/checkbox.component';\n","const DAY_MONTH_YEAR_PATTERN = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\n\nfunction isValidDate(date: Date): boolean {\n return !Number.isNaN(date.getTime());\n}\n\nexport function formatDateAsDayMonthYear(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const year = `${date.getFullYear()}`;\n\n return `${day}/${month}/${year}`;\n}\n\nexport function parseDateValue(value: unknown): Date | null {\n if (value instanceof Date) {\n return isValidDate(value) ? new Date(value.getTime()) : null;\n }\n\n if (typeof value === \"number\") {\n const parsedDate = new Date(value);\n return isValidDate(parsedDate) ? parsedDate : null;\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n const trimmedValue = value.trim();\n if (!trimmedValue) {\n return null;\n }\n\n const dayMonthYearMatch = DAY_MONTH_YEAR_PATTERN.exec(trimmedValue);\n if (dayMonthYearMatch) {\n const [, dayValue, monthValue, yearValue] = dayMonthYearMatch;\n const day = Number(dayValue);\n const month = Number(monthValue);\n const year = Number(yearValue);\n const parsedDate = new Date(year, month - 1, day);\n\n if (\n parsedDate.getFullYear() === year &&\n parsedDate.getMonth() === month - 1 &&\n parsedDate.getDate() === day\n ) {\n return parsedDate;\n }\n\n return null;\n }\n\n const parsedDate = new Date(trimmedValue);\n return isValidDate(parsedDate) ? parsedDate : null;\n}\n\nexport function isDateValue(value: unknown): boolean {\n return parseDateValue(value) !== null;\n}\n\nexport function getRelativeDateRange(daysBack: number): {\n startDate: Date;\n endDate: Date;\n} {\n const endDate = new Date();\n endDate.setHours(23, 59, 59, 999);\n\n const startDate = new Date();\n startDate.setHours(0, 0, 0, 0);\n startDate.setDate(startDate.getDate() - daysBack);\n\n return { startDate, endDate };\n}\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormControl, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\nimport { provideNativeDateAdapter } from \"@angular/material/core\";\nimport { MatDatepicker, MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { NgxMaskDirective, provideNgxMask } from \"ngx-mask\";\nimport { MapaFormErrorsComponent } from \"../../../core/components/form-errors/form-errors.component\";\nimport {\n formatDateAsDayMonthYear,\n parseDateValue,\n} from \"../../../core/utils/date.util\";\nimport { Datepicker } from \"../../../core/elements/datepicker\";\n\nexport const MAPA_DATEPICKER_FORMATS = {\n parse: {\n dateInput: \"DD/MM/YYYY\",\n },\n display: {\n dateInput: \"DD/MM/YYYY\",\n monthYearLabel: \"MMM YYYY\",\n dateA11yLabel: \"LL\",\n monthYearA11yLabel: \"MMMM YYYY\",\n },\n};\n\n@Component({\n selector: \"mapa-datepicker\",\n templateUrl: \"./datepicker.component.html\",\n styleUrl: \"./datepicker.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NgxMaskDirective,\n MatDatepickerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MapaFormErrorsComponent,\n ],\n providers: [\n provideNgxMask(),\n provideNativeDateAdapter(MAPA_DATEPICKER_FORMATS),\n ],\n standalone: true,\n})\nexport class MapaDatepicker implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() element!: Datepicker;\n\n private readonly destroyRef = inject(DestroyRef);\n\n readonly formDatepicker = new FormGroup({\n date: new FormControl<Date | null>(null),\n });\n\n formControl!: FormControl<string | null>;\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.formControl = this.formGroup.get(this.element.key) as FormControl<\n string | null\n >;\n\n this.syncDatepickerControl(this.formControl.value);\n\n this.formControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.syncDatepickerControl(value);\n });\n\n this.formDatepicker.controls.date.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.updateExternalControl(value);\n });\n }\n\n get minDate(): Date | null {\n return parseDateValue(this.element.minDate);\n }\n\n get maxDate(): Date | null {\n return parseDateValue(this.element.maxDate);\n }\n\n hasValue(): boolean {\n return !!this.formControl?.value;\n }\n\n cleanDatepicker(): void {\n this.formDatepicker.patchValue({ date: null }, { emitEvent: false });\n\n if (this.formControl.value === \"\") {\n return;\n }\n\n this.formControl.patchValue(\"\");\n this.cdr.markForCheck();\n }\n\n private syncDatepickerControl(value: unknown): void {\n const nextDate = parseDateValue(value);\n const currentDate = this.formDatepicker.controls.date.value;\n\n if (this.areDatesEqual(currentDate, nextDate)) {\n return;\n }\n\n this.formDatepicker.patchValue({ date: nextDate }, { emitEvent: false });\n this.cdr.markForCheck();\n }\n\n private updateExternalControl(value: Date | null): void {\n if (!value) {\n if (this.formControl.value !== \"\") {\n this.formControl.patchValue(\"\");\n this.cdr.markForCheck();\n }\n\n return;\n }\n\n const formattedDate = formatDateAsDayMonthYear(value);\n\n if (this.formControl.value === formattedDate) {\n return;\n }\n\n this.formControl.patchValue(formattedDate);\n this.cdr.markForCheck();\n }\n\n closePicker(picker: MatDatepicker<Date>): void {\n picker.close();\n }\n\n private areDatesEqual(first: Date | null, second: Date | null): boolean {\n if (first === second) {\n return true;\n }\n\n if (!first || !second) {\n return false;\n }\n\n return first.getTime() === second.getTime();\n }\n}\n","@if (element && formGroup) {\n <section class=\"mapa-datepicker\" [formGroup]=\"formGroup\">\n @if (element.label) {\n <label class=\"mapa-datepicker__label\">\n {{ element.label }}\n </label>\n }\n\n <section class=\"mapa-datepicker__field\" [formGroup]=\"formGroup\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <input\n matInput\n [formControlName]=\"element.key\"\n [placeholder]=\"element.placeholder || element.label || ''\"\n [mask]=\"element.mask\"\n [readonly]=\"element.readonly\"\n />\n <mat-icon *ngIf=\"hasValue()\" matSuffix (click)=\"cleanDatepicker()\">close</mat-icon>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker touchUi=\"true\" #picker></mat-datepicker>\n @if (element.hint) {\n <mat-hint>{{ element.hint }}</mat-hint>\n }\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n </mat-form-field>\n </section>\n\n <section class=\"mapa-datepicker--hidden\">\n <mat-form-field [formGroup]=\"formDatepicker\">\n <input\n matInput\n formControlName=\"date\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [matDatepicker]=\"picker\"\n (dateChange)=\"closePicker(picker)\"\n />\n </mat-form-field>\n </section>\n </section>\n}\n","/*\n * Public API Surface of mapa-library-ui datepicker (single)\n */\n\nexport * from './src/datepicker.component';","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport {\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n} from \"@angular/forms\";\nimport { provideNativeDateAdapter } from \"@angular/material/core\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatInputModule } from \"@angular/material/input\";\nimport { NgxMaskDirective, provideNgxMask } from \"ngx-mask\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport {\n formatDateAsDayMonthYear,\n getRelativeDateRange,\n parseDateValue,\n} from \"../../../core/utils/date.util\";\nimport { DatepickerRange } from \"../../../core/elements/datepicker-range\";\n\nexport interface MapaDatepickerRangeControlValue {\n startDate: string | null;\n endDate: string | null;\n}\n\nexport type MapaDatepickerRangeFormGroup = FormGroup;\n\ntype MapaDatepickerInternalRangeValue = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\ntype MapaDatepickerInternalRangeFormGroup = FormGroup<{\n startDate: FormControl<MapaDatepickerInternalRangeValue[\"startDate\"]>;\n endDate: FormControl<MapaDatepickerInternalRangeValue[\"endDate\"]>;\n}>;\n\ntype MapaDatepickerRangeDisplayFormGroup = FormGroup<{\n startDate: FormControl<string | null>;\n endDate: FormControl<string | null>;\n}>;\n\nexport const MAPA_DATEPICKER_RANGE_FORMATS = {\n parse: {\n dateInput: \"DD/MM/YYYY\",\n },\n display: {\n dateInput: \"DD/MM/YYYY\",\n monthYearLabel: \"MMM YYYY\",\n dateA11yLabel: \"LL\",\n monthYearA11yLabel: \"MMMM YYYY\",\n },\n};\n\n@Component({\n selector: \"mapa-datepicker-range\",\n templateUrl: \"./datepicker-range.component.html\",\n styleUrl: \"./datepicker-range.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NgxMaskDirective,\n MatDatepickerModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n ],\n providers: [\n provideNgxMask(),\n provideNativeDateAdapter(MAPA_DATEPICKER_RANGE_FORMATS),\n ],\n standalone: true,\n})\nexport class MapaDatepickerRange implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() element!: DatepickerRange;\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly defaultDaysBack = 60;\n private readonly emptyValue: MapaDatepickerRangeControlValue = {\n startDate: null,\n endDate: null,\n };\n\n readonly formDatepicker: MapaDatepickerInternalRangeFormGroup = new FormGroup({\n startDate: new FormControl<Date | null>(null),\n endDate: new FormControl<Date | null>(null),\n });\n\n readonly formDisplay: MapaDatepickerRangeDisplayFormGroup = new FormGroup({\n startDate: new FormControl<string | null>(null),\n endDate: new FormControl<string | null>(null),\n });\n\n rangeControl!: FormControl<MapaDatepickerRangeControlValue | null>;\n\n constructor(\n private readonly i18n: MapaI18nService,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n ngOnInit(): void {\n if (!this.element?.key) {\n throw new Error(\"mapa-datepicker-range requires element.key to resolve the target control.\");\n }\n\n this.rangeControl = this.formGroup.get(this.element.key) as FormControl<\n MapaDatepickerRangeControlValue | null\n >;\n\n if (!this.rangeControl) {\n throw new Error(\n `mapa-datepicker-range could not find control '${this.element.key}' in formGroup.`\n );\n }\n\n this.syncFromExternal(this.rangeControl.value);\n\n this.rangeControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.syncFromExternal(value);\n });\n\n this.formDisplay.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.updateExternalFromDisplay(value);\n });\n\n this.formDatepicker.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n this.updateExternalFromDatepicker(value);\n });\n }\n\n get startDatePlaceholder(): string {\n return this.texts.datepicker.startDatePlaceholder;\n }\n\n get endDatePlaceholder(): string {\n return this.texts.datepicker.endDatePlaceholder;\n }\n\n private syncFromExternal(value: MapaDatepickerRangeControlValue | null): void {\n const nextValue = value ?? this.emptyValue;\n const displayValue: MapaDatepickerRangeControlValue = {\n startDate: nextValue.startDate,\n endDate: nextValue.endDate,\n };\n const datepickerValue: MapaDatepickerInternalRangeValue = {\n startDate: parseDateValue(nextValue.startDate),\n endDate: parseDateValue(nextValue.endDate),\n };\n\n const currentDisplay = this.formDisplay.getRawValue();\n if (\n currentDisplay.startDate !== displayValue.startDate ||\n currentDisplay.endDate !== displayValue.endDate\n ) {\n this.formDisplay.patchValue(displayValue, { emitEvent: false });\n }\n\n const currentDatepicker = this.formDatepicker.getRawValue();\n if (\n !this.areDatesEqual(currentDatepicker.startDate, datepickerValue.startDate) ||\n !this.areDatesEqual(currentDatepicker.endDate, datepickerValue.endDate)\n ) {\n this.formDatepicker.patchValue(datepickerValue, { emitEvent: false });\n }\n\n this.cdr.markForCheck();\n }\n\n private updateExternalFromDisplay(\n value: Partial<MapaDatepickerRangeControlValue>\n ): void {\n const nextValue: MapaDatepickerRangeControlValue = {\n startDate: value.startDate ?? null,\n endDate: value.endDate ?? null,\n };\n\n this.patchExternalValue(nextValue);\n\n const nextDatepickerValue: MapaDatepickerInternalRangeValue = {\n startDate: parseDateValue(nextValue.startDate),\n endDate: parseDateValue(nextValue.endDate),\n };\n this.formDatepicker.patchValue(nextDatepickerValue, { emitEvent: false });\n this.cdr.markForCheck();\n }\n\n private updateExternalFromDatepicker(\n value: Partial<MapaDatepickerInternalRangeValue>\n ): void {\n if (!value.startDate || !value.endDate) {\n return;\n }\n\n const nextValue: MapaDatepickerRangeControlValue = {\n startDate: formatDateAsDayMonthYear(value.startDate),\n endDate: formatDateAsDayMonthYear(value.endDate),\n };\n\n this.patchExternalValue(nextValue);\n this.formDisplay.patchValue(nextValue, { emitEvent: false });\n this.cdr.markForCheck();\n }\n\n private patchExternalValue(nextValue: MapaDatepickerRangeControlValue): void {\n const currentValue = this.rangeControl.value;\n\n if (\n currentValue?.startDate === nextValue.startDate &&\n currentValue?.endDate === nextValue.endDate\n ) {\n return;\n }\n\n this.rangeControl.patchValue(nextValue);\n }\n\n private areDatesEqual(first: Date | null, second: Date | null): boolean {\n if (first === second) {\n return true;\n }\n\n if (!first || !second) {\n return false;\n }\n\n return first.getTime() === second.getTime();\n }\n\n cleanDatepicker() {\n const defaultRange = {\n startDate: null,\n endDate: null,\n };\n\n this.formDatepicker.patchValue(defaultRange, { emitEvent: false });\n this.formDisplay.patchValue(defaultRange, { emitEvent: false });\n this.patchExternalValue(defaultRange);\n this.cdr.markForCheck();\n }\n}\n\nexport type MapaDatepickerRangeComponent = MapaDatepickerRange;\n","@if (element.label) {\n <div class=\"mapa-datepicker-range__label\">\n {{ element.label }}\n </div>\n}\n<section class=\"mapa-datepicker-range\" [formGroup]=\"formDisplay\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"mapa-datepicker-range__start-date\"\n >\n <input\n matInput\n formControlName=\"startDate\"\n [placeholder]=\"startDatePlaceholder\"\n mask=\"00/00/0000\"\n />\n </mat-form-field>\n <div class=\"mapa-datepicker-range__divider\">&ndash;</div>\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n class=\"mapa-datepicker-range__end-date\"\n >\n <input\n matInput\n formControlName=\"endDate\"\n [placeholder]=\"endDatePlaceholder\"\n mask=\"00/00/0000\"\n />\n <mat-icon matSuffix (click)=\"cleanDatepicker()\">close</mat-icon>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker touchUi=\"true\" #picker></mat-date-range-picker>\n </mat-form-field>\n</section>\n<section class=\"mapa--hidden\">\n <mat-form-field [formGroup]=\"formDatepicker\">\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"startDate\" />\n <input matEndDate formControlName=\"endDate\" />\n </mat-date-range-input>\n </mat-form-field>\n</section>\n","/*\n * Public API Surface of mapa-library-ui datepicker-range\n */\n\nexport * from './src/datepicker-range.component';","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Inject, Input, Output } from \"@angular/core\";\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogConfig,\n MatDialogModule,\n MatDialogRef,\n} from \"@angular/material/dialog\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\nimport { ButtonComponent } from \"../../button/public-api\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\nimport { DialogData } from \"../../../core/interfaces/dialog-data.interface\";\n\n@Component({\n selector: \"mapa-dialog\",\n templateUrl: \"./dialog.component.html\",\n styleUrl: \"./dialog.component.scss\",\n imports: [\n CommonModule,\n MatDialogModule,\n MatIconModule,\n ButtonComponent,\n SafeHtmlPipe,\n ],\n standalone: true,\n})\nexport class MapaDialogComponent {\n @Input() isReportRegistration!: boolean;\n @Output() dataEmitter: EventEmitter<DialogData> = new EventEmitter<DialogData>();\n\n imgBase64!: SafeResourceUrl;\n isSave: boolean = false;\n dialogData!: DialogData;\n htmlDescription = \"\";\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef<MapaDialogComponent>,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit() {\n this.dialogData = this.data.dialogData;\n if (this.dialogData.imgBase64) {\n this.imgBase64 = this.sanitizer.bypassSecurityTrustResourceUrl(\n `data:image/jpg;base64,${this.dialogData.imgBase64}`\n );\n }\n if (this.dialogData.description) {\n this.htmlDescription = this.dialogData.description;\n }\n }\n\n close() {\n this.dialogRef.close(this.isSave);\n }\n\n save() {\n this.isSave = true;\n this.dialogRef.close(this.isSave);\n }\n\n emitData() {\n this.dataEmitter.emit(this.dialogData);\n }\n}\n\nexport function openDialog(dialog: MatDialog, dialogData: DialogData, config: MatDialogConfig = new MatDialogConfig()) {\n config.width = config.width || '787px';\n config.disableClose = true;\n config.autoFocus = true;\n config.panelClass = \"icon-outside\";\n config.data = {\n dialogData,\n };\n\n const dialogRef = dialog.open(MapaDialogComponent, config);\n\n return dialogRef.afterClosed();\n}\n\n","<div class=\"mapa-dialog\">\n <div class=\"dialog-icon\">\n <mat-icon (click)=\"close()\">close</mat-icon>\n </div> \n <mat-dialog-content>\n <img *ngIf=\"imgBase64\" [src]=\"imgBase64\" />\n <h2>\n {{ dialogData.title }}\n </h2>\n <p [innerHTML]=\"htmlDescription | safeHtml\"></p>\n </mat-dialog-content>\n <div *ngIf=\"dialogData.isReportRegistration\">\n <mapa-button color=\"accent\" (click)=\"emitData()\">\n {{ dialogData.button }}\n </mapa-button>\n </div>\n <mat-dialog-actions *ngIf=\"!dialogData.isReportRegistration\" class=\"mapa-dialog__actions\">\n <mapa-button color=\"basic\" (click)=\"close()\" *ngIf=\"dialogData.actions.close\">\n {{ dialogData.actions.close }}\n </mapa-button>\n <mapa-button color=\"primary\" (click)=\"save()\" *ngIf=\"dialogData.actions.save\">\n {{ dialogData.actions.save }}\n </mapa-button>\n </mat-dialog-actions>\n</div>\n\n","/*\n * Public API Surface of mapa-library-ui dialog\n */\n\nexport * from './src/dialog.component';\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Dropdown } from '../../../core/elements/dropdown';\nimport { DropdownTree } from '../../../core/elements/dropdown-tree';\nimport {\n ElementOption,\n ElementTreeNode,\n} from '../../../core/interfaces/element-option.interface';\nimport { MapaDropdownComponent } from '../../dropdown/public-api';\n\nexport interface DataNode extends ElementTreeNode {}\n\n@Component({\n selector: 'mapa-dropdown-tree',\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n imports: [CommonModule, MapaDropdownComponent],\n standalone: true\n})\nexport class MapaDropdownTreeComponent\n implements OnInit, OnChanges, AfterViewInit\n{\n @Input() formGroup!: FormGroup;\n @Input() element!: DropdownTree;\n elementOption!: Dropdown;\n formControl!: FormControl<unknown>;\n @Output() openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.syncElementOption();\n }\n\n ngAfterViewInit(): void {\n Promise.resolve().then(() => this.cdr.detectChanges());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element'] || changes['formGroup']) {\n this.syncElementOption();\n }\n }\n\n getFormControl(element: Dropdown): FormControl<unknown> {\n return this.formGroup.get(element.key) as FormControl<unknown>;\n }\n\n private syncElementOption(): void {\n if (!this.element || !this.formGroup) {\n return;\n }\n\n const options = this.formatTree(this.element.tree);\n\n this.elementOption = {\n ...this.element,\n options,\n };\n\n this.formControl = this.getFormControl(this.elementOption);\n }\n\n formatTree(\n tree: ElementTreeNode[],\n childrenLevel: number = 0\n ): ElementOption[] {\n const options: ElementOption[] = [];\n\n tree.map((item: ElementTreeNode) => {\n options.push({\n value: item.value,\n key: item.key,\n childrenLevel,\n });\n if (item.children) {\n options.push(\n ...this.formatTree(\n this.formatTreeChildren(item.children, childrenLevel + 1),\n childrenLevel + 1\n )\n );\n }\n });\n return options;\n }\n\n formatTreeChildren(\n children: ElementTreeNode[],\n childrenLevel: number\n ): ElementOption[] {\n const options: ElementOption[] = [];\n\n children.map((item) => {\n options.push({\n value: item.value,\n key: item.key,\n children: item.children,\n childrenLevel,\n });\n });\n\n return options;\n }\n\n triggerOpenedChange(event: boolean): void {\n this.openedChange.emit(event);\n }\n}\n\n","<section *ngIf=\"elementOption && formControl\">\n <mapa-dropdown\n [formControl]=\"formControl\"\n [element]=\"elementOption\"\n (openedChange)=\"triggerOpenedChange($event)\"\n ></mapa-dropdown>\n</section>\n","/*\n * Public API Surface of mapa-library-ui dropdown-tree\n */\n\nexport * from './src/dropdown.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\n\n@Component({\n selector: 'mapa-empty',\n templateUrl: './empty.component.html',\n styleUrl: './empty.component.scss',\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe],\n})\nexport class MapaEmptyStateComponent {\n @Input() title: string | null = null;\n @Input() subtitle: string | null = null;\n}\n","<div class=\"empty\">\n <svg\n width=\"284\"\n height=\"284\"\n viewBox=\"0 0 284 284\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <rect width=\"284\" height=\"284\" fill=\"url(#pattern0)\" />\n <defs>\n <pattern\n id=\"pattern0\"\n patternContentUnits=\"objectBoundingBox\"\n width=\"1\"\n height=\"1\"\n >\n <use xlink:href=\"#image0_861_11131\" transform=\"scale(0.00219298)\" />\n </pattern>\n <image\n id=\"image0_861_11131\"\n width=\"456\"\n height=\"456\"\n xlink:href=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n <h2 *ngIf=\"title\" [innerHTML]=\"title | safeHtml\"></h2>\n <h3 *ngIf=\"subtitle\" [innerHTML]=\"subtitle | safeHtml\"></h3>\n</div>\n\n","/*\n * Public API Surface of mapa-library-ui empty\n */\n\nexport * from './src/empty.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { ButtonComponent } from '../../button/public-api';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { MatInputAutosizeDirective } from '../../../core/directives/mat-input-autosize.directive';\nimport { InputText } from '../../../core/elements/input-text';\n\n@Component({\n selector: 'mapa-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n NgxMaskDirective,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n ButtonComponent,\n MatInputAutosizeDirective,\n MapaFormErrorsComponent,\n ],\n providers: [provideNgxMask()],\n standalone: true\n})\nexport class MapaInputComponent {\n @Input() formControl!: FormControl<unknown>;\n @Input() element!: InputText;\n @Input() type!: string;\n @Output() suffix: EventEmitter<void> = new EventEmitter<void>();\n\n hasValue(): boolean {\n return !!this.formControl.value;\n }\n\n clearValue(): void {\n this.formControl.setValue(null);\n }\n\n suffixEmit(): void {\n this.suffix.emit();\n }\n}\n","<label *ngIf=\"element.label\" class=\"mapa-input__label\">\n {{ element.label }}\n</label>\n<div class=\"mapa-form--inline\">\n <mat-form-field\n class=\"mapa-input\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n >\n <mat-icon *ngIf=\"element.prefix\" class=\"mapa-input--prefix\" matPrefix>\n {{ element.prefix }}\n </mat-icon>\n <input\n *ngIf=\"element.autosize\"\n matInput\n matInputAutosize\n [matInputAutosizeMinWidth]=\"element.autosizeMinWidth!\"\n [matInputAutosizeMaxWidth]=\"element.autosizeMaxWidth!\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || element.label\"\n [maxlength]=\"element.maxLength\"\n (keydown.enter)=\"suffixEmit()\"\n [type]=\"type\"\n [mask]=\"element.mask\"\n thousandSeparator=\".\"\n decimalMarker=\",\"\n [autocomplete]=\"element.autocomplete\"\n [readOnly]=\"element.readonly\"\n />\n <input\n matInput\n *ngIf=\"!element.autosize\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || element.label\"\n [maxlength]=\"element.maxLength\"\n (keydown.enter)=\"suffixEmit()\"\n [type]=\"type\"\n [mask]=\"element.mask\"\n [autocomplete]=\"element.autocomplete\"\n [readOnly]=\"element.readonly\"\n />\n <mat-icon\n *ngIf=\"hasValue() && !formControl.disabled && element.clearValue\"\n (click)=\"clearValue()\"\n class=\"mapa-input--close\"\n matSuffix\n >close</mat-icon\n >\n <mat-icon\n *ngIf=\"element.suffix\"\n class=\"mapa-input--suffix\"\n matSuffix\n (click)=\"suffix.emit()\"\n >\n {{ element.suffix }}\n </mat-icon>\n <mat-hint *ngIf=\"element.hint\">{{ element.hint }}</mat-hint>\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n </mat-form-field>\n\n <div *ngIf=\"element.actionButton\" class=\"mapa-form--action\">\n <mapa-button\n color=\"basic\"\n (clicked)=\"element.actionButton.action.emit(true)\"\n >\n {{ element.actionButton.label }}\n </mapa-button>\n </div>\n</div>\n","/*\n * Public API Surface of mapa-library-ui input\n */\n\nexport * from './src/input.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { ButtonComponent } from '../../button/public-api';\nimport { CheckboxComponent } from '../../checkbox/public-api';\nimport { MapaDropdownComponent } from '../../dropdown/public-api';\nimport { MapaInputComponent } from '../../input/public-api';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\n\n@Component({\n selector: 'mapa-filters',\n templateUrl: './filters.component.html',\n styleUrl: './filters.component.scss',\n imports: [\n CommonModule,\n ButtonComponent,\n CheckboxComponent,\n MapaDropdownComponent,\n MapaInputComponent,\n ],\n standalone: true\n})\nexport class FiltersComponent {\n @Input() form!: FormGroup;\n @Input() elements!: ElementBase[];\n @Output() selectedValues = new EventEmitter<Record<string, unknown>>();\n \n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get clearFiltersLabel(): string {\n return this.texts.filters.clear;\n }\n\n get submitFiltersLabel(): string {\n return this.texts.filters.submit;\n }\n\n getFormControl(filterKey: string): FormControl<unknown> {\n return this.form.get(filterKey) as FormControl<unknown>;\n }\n\n clearFilters(): void {\n this.form.reset();\n }\n\n emitSelectedValues(): void {\n this.selectedValues.emit(this.form.getRawValue() as Record<string, unknown>);\n }\n}\n","<div class=\"filter\">\n <div *ngFor=\"let filter of elements\">\n <div *ngIf=\"filter.controlType === 'checkbox'\" class=\"filter__item--resizable\">\n <mapa-checkbox [formControl]=\"getFormControl(filter.key)\"></mapa-checkbox>\n </div>\n <div *ngIf=\"filter.controlType === 'dropdown'\" class=\"filter__item--resizable\">\n <mapa-dropdown\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-dropdown>\n </div>\n <div *ngIf=\"filter.controlType === 'input'\" class=\"filter__item\">\n <mapa-input\n [formControl]=\"getFormControl(filter.key)\"\n [element]=\"filter\"\n ></mapa-input>\n </div>\n </div>\n <div class=\"filter__item\">\n <mapa-button [color]=\"'basic'\" (clicked)=\"clearFilters()\">\n {{ clearFiltersLabel }}\n </mapa-button>\n <mapa-button\n [color]=\"'primary'\"\n [disabled]=\"!!form.invalid\"\n (clicked)=\"emitSelectedValues()\"\n >\n {{ submitFiltersLabel }}\n </mapa-button>\n </div>\n</div>\n\n","/*\n * Public API Surface of mapa-library-ui dropdown\n */\n\nexport * from './src/filters.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n\n@Component({\n selector: 'mapa-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrl: './radio-button.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MatRadioModule],\n standalone: true\n})\nexport class RadioButtonComponent implements OnInit, OnChanges {\n @Input() formControl!: FormControl;\n @Input() element!: ElementBase;\n \n @Output() optionSelected: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selectedOption!: ElementOption;\n options: ElementOption[] = [];\n\n ngOnInit(): void {\n this.options = this.element.options as ElementOption[];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element']) {\n this.options = (this.element?.options as ElementOption[]) ?? [];\n }\n }\n\n onChange(optionValue: ElementOption) {\n this.selectedOption = optionValue;\n this.optionSelected.emit(this.selectedOption);\n }\n}\n\n","<label *ngIf=\"element.label\" class=\"mapa-radio-button__label\">\n {{ element.label }}\n</label>\n<section class=\"mapa-radio-button\">\n <mat-radio-group [formControl]=\"formControl\" [value]=\"selectedOption\" (change)=\"onChange($event.value)\">\n <mat-radio-button\n *ngFor=\"let option of options\"\n [value]=\"option\"\n >\n {{ option.value }}\n </mat-radio-button>\n </mat-radio-group>\n</section>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/radio-button.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { ElementBase } from '../../../core/elements/element-base';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n\n@Component({\n selector: 'mapa-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrl: './slide-toggle.component.scss',\n imports: [CommonModule, ReactiveFormsModule, MatSlideToggleModule],\n standalone: true\n})\nexport class SlideToggleComponent implements OnInit, OnChanges {\n @Input() formControl!: FormControl;\n @Input() element!: ElementBase;\n \n @Output() optionSelected: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selectedOption!: ElementOption;\n options: ElementOption[] = [];\n\n ngOnInit(): void {\n this.options = this.element.options as ElementOption[];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['element']) {\n this.options = (this.element?.options as ElementOption[]) ?? [];\n }\n }\n\n onChange(optionValue: ElementOption) {\n this.selectedOption = optionValue;\n this.optionSelected.emit(this.selectedOption);\n }\n}\n\n","<label *ngIf=\"element.label\" class=\"mapa-slide-toggle__label\">\n {{ element.label }}\n</label>\n<section class=\"mapa-slide-toggle\">\n <mat-slide-toggle [formControl]=\"formControl\" color=\"primary\">\n {{ element.status ? ( formControl.value ? element.status[1].label :\n element.status[0].label ) :( formControl.value ? \"Ativo\" : \"Inativo\" ) }}\n </mat-slide-toggle>\n</section>\n","/*\n * Public API Surface of mapa-library-ui slide-toggle\n */\n\nexport * from './src/slide-toggle.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { FormsModule, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MapaFormErrorsComponent } from '../../../core/components/form-errors/form-errors.component';\nimport { Textarea } from '../../../core/elements/textarea';\n\n@Component({\n selector: 'mapa-textarea',\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MapaFormErrorsComponent,\n ],\n standalone: true\n})\nexport class MapaTextareaComponent {\n @Input() formControl!: FormControl;\n @Input() element!: Textarea;\n\n}\n\n","<label *ngIf=\"element.label\" class=\"mapa-textarea__label\">\n {{ element.label }}\n</label>\n<mat-form-field\n class=\"mapa-textarea\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n <textarea\n *ngIf=\"element.autosize\"\n class=\"mapa-textarea__control mapa-textarea__control--autosize\"\n matInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n [cdkAutosizeMinRows]=\"element.autosizeMinRow\"\n [cdkAutosizeMaxRows]=\"element.autosizeMaxRow\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || ''\"\n ></textarea>\n <textarea\n class=\"mapa-textarea__control mapa-textarea__control--manual\"\n matInput\n *ngIf=\"!element.autosize\"\n [maxlength]=\"element.maxLength\"\n [formControl]=\"formControl\"\n [placeholder]=\"element.placeholder || ''\"\n ></textarea>\n <mat-hint *ngIf=\"element.hint\">{{ element.hint }}</mat-hint>\n <mat-error>\n <mapa-form-errors\n [control]=\"formControl\"\n [errors]=\"element.errors\"\n ></mapa-form-errors>\n </mat-error>\n</mat-form-field>\n","/*\n * Public API Surface of mapa-library-ui textarea\n */\n\nexport * from './src/textarea.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { ElementBase } from \"../../../core/elements/element-base\";\nimport { MapaDatepicker } from \"../../datepicker/public-api\";\nimport { MapaDatepickerRange } from \"../../datepicker-range/public-api\";\nimport { ElementOption } from \"../../../core/interfaces/element-option.interface\";\nimport { MapaDropdownComponent } from \"../../dropdown/public-api\";\nimport { MapaDropdownTreeComponent } from \"../../dropdown-tree/public-api\";\nimport { MapaInputComponent } from \"../../input/public-api\";\nimport { RadioButtonComponent } from \"../../radio-button/public-api\";\nimport { SlideToggleComponent } from \"../../slide-toggle/public-api\";\nimport { MapaTextareaComponent } from \"../../textarea/public-api\";\n\n\n@Component({\n selector: \"mapa-form\",\n templateUrl: \"./form.component.html\",\n styleUrl: \"./form.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n MapaDatepicker,\n MapaDatepickerRange,\n MapaInputComponent,\n MapaDropdownComponent,\n MapaDropdownTreeComponent,\n RadioButtonComponent,\n SlideToggleComponent,\n MapaTextareaComponent,\n ],\n standalone: true\n})\nexport class MapaFormComponent {\n @Input() formGroup!: FormGroup;\n @Input() elements: ElementBase[] = [];\n @Output() emitter: EventEmitter<ElementBase> = new EventEmitter<ElementBase>();\n \n getFormControl(element: ElementBase): FormControl<unknown> {\n return this.formGroup.get(element.key) as FormControl<unknown>;\n }\n\n onOptionSelected(optionValue: ElementOption): void {\n const radioControl = this.formGroup.get(\"radio\");\n if (radioControl) {\n radioControl.setValue(optionValue.key);\n }\n }\n\n emitSuffix(element: ElementBase): void {\n this.emitter.emit(element);\n }\n\n triggerOpenedChange(element: ElementBase, event: boolean): void {\n element.openedChange?.emit(event);\n } \n}\n\n","<section class=\"mapa-form\">\n @for (element of elements; track element.key) {\n <div class=\"mapa-form__element\">\n <div class=\"mapa-form__element--type\">\n @switch (element.controlType) {\n @case (\"input\") {\n <mapa-input\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (suffix)=\"emitSuffix(element)\"\n ></mapa-input>\n }\n @case (\"dropdown\") {\n <mapa-dropdown\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (openedChange)=\"triggerOpenedChange(element, $event)\"\n ></mapa-dropdown>\n }\n @case (\"dropdown-tree\") {\n <mapa-dropdown-tree\n [formGroup]=\"formGroup\"\n [element]=\"element\"\n ></mapa-dropdown-tree>\n }\n @case (\"datepicker\") {\n <mapa-datepicker\n [formGroup]=\"$any(formGroup)\"\n [element]=\"$any(element)\"\n ></mapa-datepicker>\n }\n @case (\"datepicker-range\") {\n <mapa-datepicker-range\n [formGroup]=\"$any(formGroup)\"\n [element]=\"$any(element)\"\n ></mapa-datepicker-range>\n }\n @case (\"radio-button\") {\n <mapa-radio-button\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n (optionSelected)=\"onOptionSelected($event)\"\n ></mapa-radio-button>\n }\n @case (\"slide-toggle\") {\n <mapa-slide-toggle\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n ></mapa-slide-toggle>\n }\n @case (\"textarea\") {\n <mapa-textarea\n [formControl]=\"getFormControl(element)\"\n [element]=\"element\"\n ></mapa-textarea>\n }\n }\n </div>\n </div>\n }\n</section>\n","/*\n * Public API Surface of mapa-library-ui form\n */\n\nexport * from './src/form.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatSort, Sort } from \"@angular/material/sort\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTableDataSource } from \"@angular/material/table\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { Classification } from \"../../../core/interfaces/classification.interface\";\nimport { TableColumn } from \"../../../core/interfaces/table-column.interface\";\nimport {\n Dimension,\n GroupReportDimensionCell,\n GroupReportItem,\n GroupReportRow,\n GroupReportRowValue,\n} from \"./group-report-interface\";\n\n@Component({\n selector: \"mapa-group-report\",\n templateUrl: \"./group-report.component.html\",\n styleUrls: [\n \"./group-report.component.scss\",\n \"./../../capability/styles/capability.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, MatIconModule, MatTableModule, MatSortModule],\n standalone: true,\n})\nexport class MapaGroupReportComponent implements OnChanges, AfterViewInit {\n @Input() groupReport: GroupReportItem[] = [];\n @Input() showGroupReportGeneral = false;\n @Output() onSortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n @ViewChild(MatSort) sort!: MatSort;\n\n dataSource: MatTableDataSource<GroupReportRow> =\n new MatTableDataSource<GroupReportRow>([]);\n displayedColumns: string[] = [];\n columns: TableColumn[] = [];\n data: GroupReportRow[] = [];\n\n ngAfterViewInit(): void {\n this.dataSource.sort = this.sort;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"groupReport\"] || changes[\"showGroupReportGeneral\"]) {\n this.refreshTableState();\n }\n }\n\n trackColumn(index: number, column: TableColumn): string {\n return `${index}:${column.key}`;\n }\n\n handleSortChange(sort: Sort): void {\n this.onSortChange.emit(sort);\n }\n\n getDimensionCell(\n row: GroupReportRow,\n key: string\n ): GroupReportDimensionCell | undefined {\n const cell = row[key];\n return this.isGroupReportDimensionCell(cell) ? cell : undefined;\n }\n\n getDimensionClassification(\n row: GroupReportRow,\n key: string\n ): Classification | undefined {\n return this.getDimensionCell(row, key)?.value?.classification;\n }\n\n getDimensionLabel(row: GroupReportRow, key: string): number | string {\n return this.getDimensionCell(row, key)?.value?.label ?? \"-\";\n }\n\n getGeneralValue(row: GroupReportRow): number | null {\n return typeof row.general === \"number\" ? row.general : null;\n }\n\n private refreshTableState(): void {\n this.columns = this.generateColumns();\n this.data = this.generateGroupData();\n this.displayedColumns = this.columns.map((column) => column.key);\n this.dataSource.data = this.data;\n this.dataSource.sortingDataAccessor = (\n row: GroupReportRow,\n columnKey: string\n ): string | number => this.getSortValue(row, columnKey);\n if (this.sort) {\n this.dataSource.sort = this.sort;\n }\n }\n\n private getSortValue(row: GroupReportRow, columnKey: string): string | number {\n const cell = row[columnKey];\n\n if (this.isGroupReportDimensionCell(cell)) {\n return cell.value?.classification?.classificationId ?? 0;\n }\n\n return typeof cell === \"number\" || typeof cell === \"string\" ? cell : \"\";\n }\n\n private isGroupReportDimensionCell(\n value: GroupReportRowValue\n ): value is GroupReportDimensionCell {\n return typeof value === \"object\" && value !== null && \"direction\" in value;\n }\n\n private generateColumns(): TableColumn[] {\n const columns: TableColumn[] = [{ key: \"name\", label: \"\", sort: false }];\n const existingKeys = new Set<string>([\"name\"]);\n\n if (this.showGroupReportGeneral) {\n columns.push({ key: \"general\", label: \"% Geral\", sort: false });\n existingKeys.add(\"general\");\n }\n\n this.groupReport.forEach((reportItem) => {\n reportItem.dimensions?.forEach((dimension) => {\n const key = this.getColumnKey(dimension.dimensionName);\n if (!existingKeys.has(key)) {\n columns.push({\n key,\n label: dimension.dimensionName,\n classification: dimension.classification,\n sort: true,\n });\n existingKeys.add(key);\n }\n });\n });\n\n return columns;\n }\n\n private generateGroupData(): GroupReportRow[] {\n return this.groupReport.map((item) => {\n const dataItem: GroupReportRow = {\n name: item.candidate.name,\n cpf: item.candidate.cpf,\n general: item.candidate.general,\n };\n\n item.dimensions?.forEach((dimension) => {\n dataItem[this.getColumnKey(dimension.dimensionName)] = {\n value: {\n label: this.getDimensionDisplayValue(dimension),\n classification: this.getDimensionClassificationFromDimension(dimension),\n },\n direction: dimension.direction,\n };\n });\n\n return dataItem;\n });\n }\n\n private getColumnKey(dimensionName: string): string {\n return dimensionName.toLowerCase();\n }\n\n private getDimensionDisplayValue(\n dimension: Dimension\n ): number | string | undefined {\n return (\n dimension.escoreT ??\n dimension.average ??\n dimension.percentil ??\n dimension.percentage ??\n dimension.count\n );\n }\n\n private getDimensionClassificationFromDimension(\n dimension: Dimension\n ): Classification | undefined {\n if (dimension.classification) {\n return dimension.classification;\n }\n\n if (\n dimension.classificationId === undefined &&\n !dimension.classificationName &&\n !dimension.classificationColor\n ) {\n return undefined;\n }\n\n return {\n classificationId: dimension.classificationId,\n classificationName: dimension.classificationName,\n classificationColor: dimension.classificationColor,\n };\n }\n}\n\n\n\n","<section class=\"mapa-group-report\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"handleSortChange($event)\"\n >\n @for (column of columns; track trackColumn($index, column)) {\n <ng-container [matColumnDef]=\"column.key\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!column.sort\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ column: column }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column.width\">\n <div\n class=\"mapa-group-report__column\"\n [class.mapa-group-report__column--center-cell]=\"column.align === 'center' || column.key !== 'name'\"\n >\n <div class=\"mapa-group-report__content\">\n @if (column.key === \"name\") {\n <div class=\"mapa-group-report__content--value\">\n <div class=\"mapa-group-report__content--title\">\n {{ row.name }}<br />\n </div>\n <div class=\"mapa-group-report__content--subtitle\">\n {{ row.cpf }}\n </div>\n </div>\n } @else if (column.key === \"general\") {\n <div class=\"general\">\n {{ getGeneralValue(row) | currency:'':'' }}%\n </div>\n } @else {\n <div class=\"mapa-group-report__hover\">\n <span class=\"mapa-group-report__hover--main\">\n <div\n class=\"mapa__tag--bg\"\n [class.mapa__tag--contrast]=\"getDimensionClassification(row, column.key)?.classificationId === 1\"\n [style.backgroundColor]=\"getDimensionClassification(row, column.key)?.classificationColor\"\n >\n {{\n getDimensionClassification(row, column.key)?.classificationName ||\n \"-\"\n }}\n </div>\n </span>\n <span class=\"mapa-group-report__hover--hidden\">\n {{ getDimensionLabel(row, column.key) }}\n </span>\n </div>\n }\n </div>\n </div>\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n\n<ng-template #tableHeader let-column=\"column\">\n <div class=\"mapa-group-report__header\">\n {{ column.label }}\n @if (column.sort) {\n <div>\n <mat-icon>filter_list</mat-icon>\n </div>\n }\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatIconRegistry } from \"@angular/material/icon\";\nimport { MatIconModule } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'mapa-icon',\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss',\n standalone: true,\n imports: [CommonModule, MatIconModule],\n})\nexport class IconComponent {\n @Input() svg: string | null | undefined;\n\n constructor(\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer\n ) {}\n\n ngOnChanges(): void {\n this.registerCustomIcons(this.svg!);\n }\n\n registerCustomIcons(svg: string): void {\n this.matIconRegistry.addSvgIcon(\n svg,\n this.domSanitizer.bypassSecurityTrustResourceUrl(`../../../../assets/${svg}.svg`)\n );\n }\n}\n","<mat-icon *ngIf=\"svg\" [svgIcon]=\"svg\"></mat-icon>\n<mat-icon *ngIf=\"!svg\"><ng-content></ng-content></mat-icon>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/icon.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { MatMenuTrigger } from \"@angular/material/menu\";\nimport { MatMenuModule } from \"@angular/material/menu\";\nimport {\n MenuActionEvent,\n MenuActionItem,\n} from \"../../../core/interfaces/menu-action.interface\";\n\nexport interface MenuItem extends MenuActionItem {}\n\n@Component({\n selector: \"mapa-menu\",\n templateUrl: \"./menu.component.html\",\n styleUrl: \"./menu.component.scss\",\n imports: [CommonModule, MatIconModule, MatMenuModule],\n standalone: true\n})\nexport class MapaMenuComponent {\n @Input() items: MenuItem[] = [];\n @Input() data?: unknown;\n @Output() emitMenu: EventEmitter<MenuActionEvent<unknown>> =\n new EventEmitter<MenuActionEvent<unknown>>();\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n\n toggleMenu(): void {\n this.trigger.openMenu();\n }\n\n clickMenu(item: MenuItem): void {\n this.emitMenu.emit({ action: item.action, data: this.data });\n }\n}\n","<mat-menu #menu=\"matMenu\" class=\"mapa-menu\">\n <button\n *ngFor=\"let item of items\"\n mat-menu-item\n (click)=\"clickMenu(item)\"\n class=\"mapa-menu__item\"\n [class.mapa-menu__item--disabled]=\"item.disabled\"\n >\n <mat-icon *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n <span>{{item.text}}</span>\n </button>\n</mat-menu>\n\n<img\n class=\"outside-menu-icon\"\n src=\"assets/images/icons/ThreePoints.svg\"\n (click)=\"toggleMenu()\"\n [matMenuTriggerFor]=\"menu\"\n/>\n","/*\n * Public API Surface of mapa-library-ui menu\n */\n\nexport * from './src/menu.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ElementOption } from '../../../core/interfaces/element-option.interface';\n\n@Component({\n selector: 'mapa-nav-list',\n templateUrl: './nav-list.component.html',\n styleUrl: './nav-list.component.scss',\n standalone: true,\n imports: [CommonModule],\n})\nexport class MapaNavListComponent {\n @Input() options!: ElementOption[];\n @Input() label!: string;\n @Output() clicked: EventEmitter<ElementOption> = new EventEmitter<ElementOption>();\n\n selected!: ElementOption;\n\n emit(option: ElementOption): void {\n this.selected = option;\n this.clicked.emit(option);\n }\n}\n\n","<nav class=\"mapa-nav-list\">\n {{ label }}\n <ul>\n <li\n *ngFor=\"let option of options\"\n (click)=\"emit(option)\"\n [class.selected]=\"selected === option\"\n >\n <span>{{ option.value }}</span>\n </li>\n </ul>\n</nav>\n","/*\n * Public API Surface of mapa-library-ui nav-list\n */\n\nexport * from './src/nav-list.component';\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n MenuActionEvent,\n MenuActionItem,\n} from '../../../core/interfaces/menu-action.interface';\n\nexport interface ReportItemMenuItem extends MenuActionItem {}\n\nexport interface ReportItem {\n id: string;\n icon: string;\n description: string;\n menu?: ReportItemMenuItem[];\n}\n\n@Component({\n selector: 'mapa-report-item',\n templateUrl: './report-item.component.html',\n styleUrl: './report-item.component.scss',\n imports: [CommonModule, MatIconModule, MatMenuModule],\n standalone: true\n})\nexport class ReportItemComponent implements OnChanges {\n @Input() itemData?: ReportItem | ReportItem[];\n @Input() menuItems: ReportItemMenuItem[] = [];\n @Output() clicked: EventEmitter<string> = new EventEmitter<string>();\n @Output() emitMenu: EventEmitter<MenuActionEvent<ReportItem>> =\n new EventEmitter<MenuActionEvent<ReportItem>>();\n\n id: string = '';\n description: string = '';\n icon: string = '';\n\n get item(): ReportItem | undefined {\n if (Array.isArray(this.itemData)) {\n return this.itemData[0];\n }\n\n return this.itemData;\n }\n\n get resolvedMenuItems(): ReportItemMenuItem[] {\n if (this.item?.menu && this.item.menu.length > 0) {\n return this.item.menu;\n }\n\n return this.menuItems;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['itemData']) {\n this.syncItemData();\n }\n }\n\n private syncItemData(): void {\n const data = this.item;\n\n if (!data) {\n return;\n }\n\n this.id = data.id;\n this.description = data.description;\n this.icon = data.icon;\n }\n\n onClick(action: string): void {\n const item = this.item;\n\n if (!item) {\n return;\n }\n\n this.emitMenu.emit({\n action,\n data: item,\n });\n this.clicked.emit(item.id);\n }\n}\n","<div class=\"report-item\">\n <div class=\"report-icon\">\n <mat-icon class=\"material-icons\">{{ icon }}</mat-icon>\n </div>\n <div class=\"report-text\">\n <h1>\n {{ description }}\n </h1>\n </div>\n <div class=\"report-button\">\n <div class=\"report-circle\" *ngIf=\"resolvedMenuItems.length > 0\">\n <mat-icon [matMenuTriggerFor]=\"menu\">more_vert</mat-icon>\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let item of resolvedMenuItems\"\n (click)=\"onClick(item.action)\"\n >\n <mat-icon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <img *ngIf=\"item.image\" [src]=\"item.image\" />\n <span>{{ item.text }}</span>\n </button>\n </mat-menu>\n </div>\n </div>\n</div>\n","/*\n * Public API Surface of mapa-library-ui report-item\n */\n\nexport * from './src/report-item.component';\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input } from \"@angular/core\";\nimport { ProgressBar } from \"../scale.interface\";\n\n@Component({\n selector: \"mapa-progressbar\",\n templateUrl: \"./progressbar.component.html\",\n styleUrl: \"./progressbar.component.scss\",\n imports: [CommonModule],\n standalone: true,\n})\nexport class MapaProgressbarComponent {\n @Input() data!: ProgressBar;\n @Input() showInterval: boolean = true;\n}\n","<div class=\"progress-bar\">\n <div class=\"progress-bar--bg\">\n <div\n class=\"progress-bar--filled\"\n [style.width.%]=\"data.interval\"\n [style.backgroundColor]=\"data.classification?.classificationColor\"\n ></div>\n </div>\n <div class=\"progress-bar--interval\" *ngIf=\"showInterval\">\n {{data.interval}}%\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\nimport { Dimension } from \"../../group-report/src/group-report-interface\";\nimport { Competence, ProgressBar, Scale } from \"./scale.interface\";\nimport { Capability, MapaCapabilityIntervalBarComponent } from \"../../capability/public-api\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport { MapaProgressbarComponent } from \"./progressbar/progressbar.component\";\n\n@Component({\n selector: \"mapa-scale\",\n templateUrl: \"./scale.component.html\",\n styleUrl: \"./scale.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n MapaCapabilityIntervalBarComponent,\n MapaProgressbarComponent,\n ],\n standalone: true,\n})\nexport class MapaScaleComponent {\n @Input() data!: Competence[];\n @Input() showProgressbar: boolean = true;\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get conceptTitle(): string {\n return this.texts.capability.conceptTitle;\n }\n\n getProgressbarData(scale: Scale): ProgressBar {\n return {\n interval: scale.interval,\n classification: scale.classification!,\n };\n }\n\n getIntervalbarData(scale: Scale): Capability {\n return {\n interval: scale.interval,\n classificationBg: scale.classification?.classificationBg,\n items: scale.dimensions!,\n };\n }\n\n isPositive(dimension: Dimension): boolean {\n return dimension.direction === \"Positiva\";\n }\n\n showSummarized(scale: Scale | undefined): boolean {\n return scale?.scaleConcept === undefined;\n }\n\n getCompetenceImg(competence: Competence): string {\n let img = \"\";\n if (competence.competenceName.includes(\"Gestão\")) {\n img = \"UsersThree\";\n }\n if (competence.competenceName.includes(\"Autogestão\")) {\n img = \"Brain\";\n }\n if (competence.competenceName.includes(\"Relacionamento\")) {\n img = \"Handshake\";\n }\n if (competence.competenceName.includes(\"Atividade\")) {\n img = \"ListCheck\";\n }\n if (competence.competenceName.includes(\"Corporais\")) {\n img = \"Warning\";\n }\n return `assets/images/icons/${img}.svg`;\n }\n}\n","@for (competence of data; track competence) {\n <section class=\"mapa__card competence\">\n <header class=\"competence__header\">\n <img [src]=\"getCompetenceImg(competence)\" />\n {{ competence.competenceName }}\n </header>\n <section\n class=\"scales\"\n [class.scales--full-sized]=\"!showSummarized(competence.scales[0])\"\n [class.scales--summarized]=\"showSummarized(competence.scales[0])\"\n >\n @for (scale of competence.scales; track scale) {\n <section class=\"mapa__card scale-details\">\n <section class=\"scale-details__top\">\n <header class=\"scale-details__header\">\n <div class=\"scale-details__header--title mapa--display-m\">\n {{ scale.scaleName }}\n @if (scale.classification) {\n <div\n class=\"mapa__tag--bg\"\n [style.backgroundColor]=\"scale.classification.classificationColor\"\n [class.mapa__tag--contrast]=\"scale.classification.classificationId === 1\"\n >\n <span class=\"mapa__tag--text\">\n {{ scale.classification.classificationName }}\n </span>\n </div>\n }\n </div>\n @if (showProgressbar) {\n <div class=\"scale__header--progressbar\">\n @if (!scale.classification?.classificationBg) {\n <mapa-progressbar\n [data]=\"getProgressbarData(scale)\"\n ></mapa-progressbar>\n } @else {\n <mapa-capability-interval-bar\n [data]=\"getIntervalbarData(scale)\"\n [showInterval]=\"true\"\n ></mapa-capability-interval-bar>\n }\n </div>\n }\n </header>\n @if (scale.scaleConcept) {\n <article class=\"scale-details__concept\">\n <strong>{{ conceptTitle }}:</strong> {{ scale.scaleConcept }}\n </article>\n }\n </section>\n <section\n class=\"scale-details__dimensions\"\n [class.dimension--full-sized]=\"!showSummarized(scale)\"\n [class.dimension--summarized]=\"showSummarized(scale)\"\n >\n @for (dimension of scale.dimensions; track dimension) {\n <article class=\"mapa__card--sm dimension\">\n <nav class=\"dimension__main\">\n <div class=\"dimension__title\">\n <div class=\"dimension__title--direction\">\n @if (isPositive(dimension)) {\n <span>&uarr;</span>\n } @else {\n <span>&darr;</span>\n }\n </div>\n <div class=\"dimension__title--label\">\n {{ dimension.dimensionName }}\n </div>\n </div>\n <div class=\"dimension--classification\">\n @if (dimension.classification) {\n <div\n class=\"mapa__tag--bg\"\n [style.backgroundColor]=\"dimension.classification.classificationColor\"\n [class.mapa__tag--contrast]=\"dimension.classification.classificationId === 1\"\n >\n <span class=\"mapa__tag--text\">\n {{ dimension.classification.classificationName }}\n </span>\n </div>\n }\n </div>\n </nav>\n @if (dimension.dimensionClassificationMessage) {\n <div class=\"dimension__concept\">\n {{ dimension.dimensionClassificationMessage }}\n </div>\n }\n </article>\n }\n </section>\n </section>\n }\n </section>\n </section>\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"mapa-details\",\n templateUrl: \"./details.component.html\",\n styleUrl: \"./details.component.scss\",\n standalone: true,\n})\nexport class MapaDetailsComponent {}\n","<ng-container></ng-container>\n","/*\n * Public API Surface of mapa-library-ui scale\n */\n\nexport * from './src/scale.component';\nexport * from './src/scale.interface';\nexport * from './src/progressbar/progressbar.component';\nexport * from './src/details/details.component';\n","import { HttpClient } from \"@angular/common/http\";\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, DestroyRef, Input, OnChanges, inject } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { SafeHtmlPipe } from '../../../core/pipes/safe-html.pipe';\n\n@Component({\n selector: \"mapa-svg-icon\",\n templateUrl: \"./svg-icon.component.html\",\n styleUrl: \"./svg-icon.component.scss\",\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe],\n})\nexport class MapaSvgIconComponent implements OnChanges {\n @Input() public name?: string;\n @Input() public color?: string;\n\n public svgIcon = \"\";\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(private httpClient: HttpClient, private cdr: ChangeDetectorRef) {}\n\n public ngOnChanges(): void {\n if (!this.name) {\n this.svgIcon = \"\";\n return;\n }\n\n if (this.color) {\n this.httpClient\n .get(`images/icons/${this.name}.svg`, { responseType: 'text' })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: string) => {\n this.svgIcon = this.applyColor(value);\n this.cdr.markForCheck();\n });\n return;\n }\n\n this.svgIcon = `<img src=\"images/icons/${this.name}.svg\" alt=\"${this.name}\" />`;\n this.cdr.markForCheck();\n }\n private applyColor(value: string): string {\n if (!this.color) {\n return value;\n }\n\n return value\n .replaceAll('fill=\"#50575E\"', `fill=\"${this.color}\"`)\n .replaceAll('fill=\"#181818\"', `fill=\"${this.color}\"`)\n .replaceAll('fill=\"#7def7b\"', `fill=\"${this.color}\"`)\n .replaceAll('stroke=\"#50575E\"', `stroke=\"${this.color}\"`)\n .replaceAll('stroke=\"#181818\"', `stroke=\"${this.color}\"`)\n .replaceAll('stroke=\"#7def7b\"', `stroke=\"${this.color}\"`);\n }\n}\n\n","<span *ngIf=\"svgIcon\" class=\"mapa__svg-icon\" [innerHTML]=\"svgIcon | safeHtml\"></span>\n","/*\n * Public API Surface of mapa-library-ui svg-icon\n */\n\nexport * from './src/svg-icon.component';\n","import { Injector, effect } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MapaI18nService } from '../../../core/services/mapa-i18n.service';\n\nexport function customPaginatorFactory(\n i18n: MapaI18nService,\n injector: Injector\n): MatPaginatorIntl {\n const customPaginatorIntl = new MatPaginatorIntl();\n\n effect(\n () => {\n const paginatorTexts = i18n.textsSignal().paginator;\n\n customPaginatorIntl.itemsPerPageLabel = paginatorTexts.itemsPerPage;\n customPaginatorIntl.nextPageLabel = paginatorTexts.nextPage;\n customPaginatorIntl.previousPageLabel = paginatorTexts.previousPage;\n customPaginatorIntl.getRangeLabel = paginatorTexts.showingRangeLabel;\n customPaginatorIntl.changes.next();\n },\n { injector }\n );\n\n return customPaginatorIntl;\n}\n","import { CommonModule } from \"@angular/common\";\nimport { SelectionModel } from \"@angular/cdk/collections\";\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n EventEmitter,\n Input,\n Injector,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject,\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { FormControl } from \"@angular/forms\";\nimport {\n MatPaginator,\n MatPaginatorIntl,\n MatPaginatorModule,\n PageEvent,\n} from \"@angular/material/paginator\";\nimport { MatSort, Sort } from \"@angular/material/sort\";\nimport { MatSortModule } from \"@angular/material/sort\";\nimport { MatTable, MatTableDataSource } from \"@angular/material/table\";\nimport { MatTableModule } from \"@angular/material/table\";\nimport { MatMenuTrigger } from \"@angular/material/menu\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { RouterModule } from \"@angular/router\";\nimport { Subscription } from \"rxjs\";\n\nimport { MapaMenuComponent, MenuItem } from \"../../menu/public-api\";\nimport { MapaSvgIconComponent } from \"../../svg-icon/public-api\";\nimport { MapaEmptyStateComponent } from \"../../empty/public-api\";\nimport { BubblePaginationDirective } from \"../../../core/directives/custom-paginator.directive\";\nimport { MenuActionEvent } from \"../../../core/interfaces/menu-action.interface\";\nimport { SafeHtmlPipe } from \"../../../core/pipes/safe-html.pipe\";\nimport { RowClickEvent } from \"../../../core/interfaces/table-row-click-event.interface\";\nimport { TableColumn } from \"../../../core/interfaces/table-column.interface\";\nimport { TableEmptyState } from \"../../../core/interfaces/table-empty-state.interface\";\nimport {\n SelectedTableRow,\n TableRowData,\n} from \"../../../core/interfaces/table-row-data.interface\";\nimport { TableStatus } from \"../../../core/interfaces/table-status.interface\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport { isDateValue, parseDateValue } from \"../../../core/utils/date.util\";\nimport { customPaginatorFactory } from \"./paginator_customization\";\n\n@Component({\n selector: \"mapa-table\",\n templateUrl: \"./table.component.html\",\n styleUrls: [\n \"./table.component.scss\",\n \"./../../capability/styles/capability.scss\",\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n RouterModule,\n MapaMenuComponent,\n MapaSvgIconComponent,\n MapaEmptyStateComponent,\n MatButtonModule,\n MatCheckboxModule,\n MatIconModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n BubblePaginationDirective,\n SafeHtmlPipe,\n ],\n providers: [\n {\n provide: MatPaginatorIntl,\n useFactory: customPaginatorFactory,\n deps: [MapaI18nService, Injector],\n },\n ],\n standalone: true\n})\nexport class MapaTableComponent implements AfterViewInit, OnChanges {\n @Input() columns: TableColumn[] = [];\n @Input() data: TableRowData[] = [];\n @Input() pageIndex: number = 1;\n @Input() pageSize: number = 5;\n @Input() totalCount: number = 0;\n @Input() totalPages: number = 0;\n @Input() checkbox: boolean | undefined;\n @Input() selection: SelectionModel<TableRowData> | undefined;\n @Input() actions?: MenuItem[] | undefined;\n @Input() filterControl: FormControl<string | null> | undefined;\n @Input() menuItems: MenuItem[] = [];\n @Input() menu: boolean | undefined;\n @Input() showPaginator: boolean = true;\n @Input() status: TableStatus = { loading: false, finished: false };\n @Input() empty: TableEmptyState = { title: \"\", subtitle: null };\n @Input() paginatorShowFirstButton = true;\n @Input() paginatorShowLastButton = true;\n @Input() paginatorRenderButtonsNumber = 2;\n @Input() paginatorHideDefaultArrows = false;\n\n @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\n @ViewChild(MatTable) table?: MatTable<TableRowData>;\n\n @Output() rowClick: EventEmitter<RowClickEvent> = new EventEmitter<RowClickEvent>();\n @Output() selectedRows: EventEmitter<SelectedTableRow[]> =\n new EventEmitter<SelectedTableRow[]>();\n @Output() onChangePage: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\n @Output() onSortChange: EventEmitter<Sort> = new EventEmitter<Sort>();\n\n @ViewChild(MatPaginator, { read: true }) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n\n dataSource: MatTableDataSource<TableRowData> =\n new MatTableDataSource<TableRowData>([]);\n displayedColumns: string[] = [];\n currentSort: Sort | undefined;\n desktopTableVisible = true;\n private readonly destroyRef = inject(DestroyRef);\n private filterControlSubscription?: Subscription;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private readonly i18n: MapaI18nService\n ) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get selectAllLabel(): string {\n return this.texts.common.selectAll;\n }\n\n get paginatorPageIndex(): number {\n return Math.max(this.pageIndex - 1, 0);\n }\n\n get shouldShowPaginator(): boolean {\n return this.showPaginator && this.totalPages > 1;\n }\n\n get resolvedEmptyTitle(): string {\n return this.empty.title || this.texts.table.emptyTitle;\n }\n\n get resolvedEmptySubtitle(): string | null {\n return this.empty.subtitle || this.texts.table.emptySubtitle || null;\n }\n\n get skeletonRows(): number[] {\n const rowsCount = Math.max(this.pageSize, 0);\n return Array.from({ length: rowsCount }, (_, index) => index);\n }\n\n ngAfterViewInit(): void {\n this.dataSource.sort = this.sort;\n this.cdr.markForCheck();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes[\"data\"] || changes[\"columns\"]) && this.dataSource) {\n if (changes[\"data\"]) {\n this.data = changes[\"data\"].currentValue;\n }\n if (changes[\"columns\"]) {\n this.columns = changes[\"columns\"].currentValue;\n }\n\n this.refreshTableState();\n if (changes[\"columns\"]) {\n this.rebuildDesktopTable();\n }\n this.cdr.markForCheck();\n }\n\n if (changes[\"filterControl\"] && this.filterControl) {\n this.setupFilter();\n }\n }\n\n private refreshTableState(): void {\n this.dataSource = new MatTableDataSource(this.data);\n this.dataSource.sort = this.sort;\n this.displayedColumns = this.columns.map((column) => column.key);\n if (this.filterControl) {\n this.setupFilter();\n this.dataSource.filter = `${this.filterControl.value ?? \"\"}`.trim().toLowerCase();\n }\n this.table?.renderRows();\n }\n\n private rebuildDesktopTable(): void {\n this.desktopTableVisible = false;\n this.cdr.detectChanges();\n this.desktopTableVisible = true;\n this.cdr.detectChanges();\n }\n\n trackColumn(index: number, column: TableColumn): string {\n return `${index}:${column.key}:${column.label}`;\n }\n\n getSkeletonColumnWidth(column: TableColumn): string {\n if (column.width) {\n return column.width;\n }\n\n if (!this.columns.length) {\n return \"100%\";\n }\n\n return `${100 / this.columns.length}%`;\n }\n\n setupFilter(): void {\n this.filterControlSubscription?.unsubscribe();\n\n if (!this.dataSource || !this.filterControl) {\n return;\n }\n\n this.filterControlSubscription = this.filterControl.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((value: string | null) => {\n this.dataSource.filter = (value ?? \"\").trim().toLowerCase();\n this.cdr.markForCheck();\n });\n\n this.dataSource.filterPredicate = (\n data: TableRowData,\n filter: string\n ): boolean => {\n const dataStr = Object.keys(data)\n .reduce((currentTerm, key) => {\n return `${currentTerm}${this.getFilterValue(data[key])} `;\n }, \"\")\n .trim()\n .toLowerCase();\n\n return dataStr.indexOf(filter) !== -1;\n };\n }\n\n isAllSelected(): boolean {\n if (this.selection) {\n const numSelected = this.selection.selected.length;\n const numRows = this.dataSource.data.length;\n return numSelected === numRows;\n }\n return false;\n }\n\n toggleAllRows(): void {\n if (this.selection) {\n if (this.isAllSelected()) {\n this.selection.clear();\n this.getSelectedValues();\n } else {\n this.dataSource.data.forEach((row) => this.selection?.select(row));\n this.getSelectedValues();\n }\n }\n }\n\n checkboxLabel(row?: TableRowData): string {\n if (this.selection) {\n if (!row) {\n return `${this.isAllSelected() ? \"deselect\" : \"select\"} all`;\n }\n const rowPosition = typeof row.position === \"number\" ? row.position + 1 : 1;\n return `${this.selection.isSelected(row) ? \"deselect\" : \"select\"} row ${rowPosition}`;\n }\n return \"\";\n }\n\n sortData(column: TableColumn): void {\n if (column.sort) {\n const sort: Sort = { active: column.key, direction: \"asc\" };\n\n if (\n this.currentSort &&\n this.currentSort.active === column.key &&\n this.currentSort.direction === \"asc\"\n ) {\n sort.direction = \"desc\";\n }\n\n this.currentSort = sort;\n this.sortDataFunction(sort);\n }\n }\n\n sortDataFunction(sort: Sort): void {\n this.onSortChange.emit(sort);\n }\n\n emitRowClick(row: TableRowData, action: string): void {\n const rowData: RowClickEvent = { row, action };\n this.rowClick.emit(rowData);\n }\n\n toggleSelection(row: TableRowData): void {\n if (this.selection) {\n if (this.selection.isSelected(row)) {\n this.selection.deselect(row);\n } else {\n this.selection.select(row);\n }\n this.getSelectedValues();\n }\n }\n\n getSelectedValues(): void {\n if (this.selection) {\n const selectedRows: SelectedTableRow[] = this.selection.selected.map((row) => {\n return { row };\n });\n this.selectedRows.emit(selectedRows);\n }\n }\n\n generateColumns(): void {\n const columns: TableColumn[] = [{ key: \"name\", label: \"\", sort: false }];\n\n this.columns = columns;\n }\n\n columnExists(columns: TableColumn[], key: string): boolean {\n return columns.some((column) => column.key === key);\n }\n\n generateGroupData(): void {\n const result: TableRowData[] = [];\n\n this.data = result;\n }\n\n isBoolean(column: TableColumn, row: TableRowData): boolean {\n return typeof this.getColumnValue(row, column.key) === \"boolean\";\n }\n\n isMaskedData(column: TableColumn, row: TableRowData): boolean {\n return !!column.mask && isDateValue(this.getColumnValue(row, column.key));\n }\n\n getValueAsDate(column: TableColumn, row: TableRowData): Date {\n return parseDateValue(this.getColumnValue(row, column.key)) ?? new Date(\"\");\n }\n\n getCellClass(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return `classification`;\n } catch {\n return \"\";\n }\n }\n\n getCellBg(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return this.getRecordStringValue(\n this.getColumnRecord(row, column.key),\n \"classificationColor\"\n );\n } catch {\n return \"\";\n }\n }\n\n getCellTextColor(column: TableColumn, row: TableRowData): string {\n if (\n column.key === \"name\" ||\n column.key === \"cpf\" ||\n column.key === \"general\"\n ) {\n return \"\";\n }\n try {\n return this.getRecordStringValue(\n this.getColumnRecord(row, column.key),\n \"classificationTextColor\"\n );\n } catch {\n return \"\";\n }\n }\n\n getValue(row: { value?: string | number | null }): string {\n try {\n if (row.value !== undefined && row.value !== null && row.value !== \"\") {\n return row.value + \"%\";\n }\n return \"-\";\n } catch {\n return \"-\";\n }\n }\n\n changePage(event: PageEvent): void {\n this.onChangePage.emit(event);\n }\n\n toggleMenu(): void {\n this.trigger.openMenu();\n }\n\n getBackgroundColor(column: TableColumn, row: TableRowData): string {\n return column.status?.color?.[this.getStatusIndex(row, column.key)] || \"\";\n }\n\n getTextColor(column: TableColumn, row: TableRowData): string {\n return column.status?.textColor?.[this.getStatusIndex(row, column.key)] || \"\";\n }\n\n hasCustomClass(column: TableColumn, row: TableRowData, key: string): boolean {\n if (\n column?.class ||\n row?.rowStyleClass ||\n this.hasCellStyleClass(row, key)\n ) {\n return true;\n }\n return false;\n }\n\n getCustomClass(column: TableColumn, row: TableRowData, key: string): string {\n if (this.hasCellStyleClass(row, key)) {\n return this.getCellStyleClass(row, column.key);\n } else if (column?.class) {\n return column.class;\n } else if (row?.rowStyleClass) {\n return row.rowStyleClass;\n }\n return \"\";\n }\n\n hasCellStyleClass(row: TableRowData, key: string): boolean {\n return row.styleClass?.key === key;\n }\n\n getCellStyleClass(row: TableRowData, key: string): string {\n return row.styleClass?.key === key ? row.styleClass?.class : \"\";\n }\n\n handleMenu(selected: MenuActionEvent<unknown>): void {\n if (this.isTableRowData(selected.data)) {\n this.emitRowClick(selected.data, selected.action);\n }\n }\n\n hasIndividualMenu(row: TableRowData | undefined): boolean {\n return this.getMenuItems(row).length > 0;\n }\n\n getMenuItems(row: TableRowData | undefined): MenuItem[] {\n return this.getMenuActionItems(row, \"menu\");\n }\n\n getActionItems(row: TableRowData | undefined): MenuItem[] {\n const rowActions = this.getMenuActionItems(row, \"actions\");\n return rowActions.length > 0 ? rowActions : (this.actions ?? []);\n }\n\n getStatusLabel(column: TableColumn, row: TableRowData): string {\n const labels = column.status?.label;\n\n if (!labels) {\n return \"-\";\n }\n\n const value = this.getColumnValue(row, column.key);\n\n if (typeof value === \"boolean\") {\n return labels[value ? 1 : 0] ?? \"-\";\n }\n\n if (typeof value === \"number\") {\n return labels[value] ?? \"-\";\n }\n\n if (typeof value === \"string\") {\n const numericIndex = Number(value);\n return Number.isNaN(numericIndex) ? labels[0] ?? \"-\" : labels[numericIndex] ?? \"-\";\n }\n\n return \"-\";\n }\n\n getCellContent(row: TableRowData, key: string): string {\n const value = this.getColumnValue(row, key);\n\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return `${value}`;\n }\n\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n\n return \"\";\n }\n\n hasActionsColumn(): boolean {\n return this.columns.some((column) => column.key.includes('actions'));\n }\n\n hasMenuColumn(): boolean {\n return this.columns.some((column) => column.key.includes('menu'));\n }\n\n setSvgName(image: string): string {\n return image.split('/').pop()?.split('.')[0] || '';\n }\n\n private getColumnValue(row: TableRowData, key: string): unknown {\n return row[key];\n }\n\n private getColumnRecord(\n row: TableRowData,\n key: string\n ): Record<string, unknown> | undefined {\n const value = this.getColumnValue(row, key);\n\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n\n return value as Record<string, unknown>;\n }\n\n private getRecordStringValue(\n value: Record<string, unknown> | undefined,\n key: string\n ): string {\n const recordValue = value?.[key];\n return typeof recordValue === \"string\" ? recordValue : \"\";\n }\n\n private getStatusIndex(row: TableRowData, key: string): number {\n const value = this.getColumnValue(row, key);\n\n if (typeof value === \"boolean\") {\n return value ? 1 : 0;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n if (typeof value === \"string\") {\n const parsedValue = Number(value);\n return Number.isNaN(parsedValue) ? 0 : parsedValue;\n }\n\n return 0;\n }\n\n private getFilterValue(value: unknown): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return `${value}`.toLowerCase();\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => this.getFilterValue(item)).join(\" \");\n }\n\n if (typeof value === \"object\") {\n return Object.values(value).map((item) => this.getFilterValue(item)).join(\" \");\n }\n\n return \"\";\n }\n\n private getMenuActionItems(\n row: TableRowData | undefined,\n key: \"actions\" | \"menu\"\n ): MenuItem[] {\n const value = row?.[key];\n\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter((item): item is MenuItem => this.isMenuItem(item));\n }\n\n private isMenuItem(value: unknown): value is MenuItem {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"action\" in value &&\n \"text\" in value\n );\n }\n\n private isTableRowData(value: unknown): value is TableRowData {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n }\n}\n","@if (status.loading) {\n <section class=\"mapa-table mapa-table__skeleton\" aria-hidden=\"true\">\n <div class=\"mapa-table__skeleton-content mapa__card mapa__card--show-on-desktop\">\n <div class=\"mapa-table__skeleton-header\">\n @for (column of columns; track trackColumn($index, column)) {\n <div\n class=\"mapa-table__skeleton-cell mapa-table__skeleton-cell--header\"\n [style.width]=\"getSkeletonColumnWidth(column)\"\n ></div>\n }\n </div>\n @for (rowIndex of skeletonRows; track rowIndex) {\n <div class=\"mapa-table__skeleton-row\">\n @for (column of columns; track trackColumn($index, column)) {\n <div\n class=\"mapa-table__skeleton-cell\"\n [style.width]=\"getSkeletonColumnWidth(column)\"\n ></div>\n }\n </div>\n }\n </div>\n </section>\n} @else if (dataSource.data.length > 0) {\n <section class=\"mapa-table\">\n <div class=\"mapa-table--show-on-mobile\">\n @if (checkbox) {\n <div class=\"mapa-table__select-all\">\n @if (selection) {\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n > {{ selectAllLabel }}</mat-checkbox>\n }\n </div>\n }\n @for (row of dataSource.data; track row) {\n <div>\n <div class=\"mapa-table__card mapa__card\">\n @for (column of columns; track trackColumn($index, column); let isFirst = $first) {\n <div [ngClass]=\"'mapa-table__card--column-' + column.key\">\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <strong\n class=\"mapa-table__card--header\"\n [class.mapa-table__checkbox--header]=\"isFirst && checkbox\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox: false }\"\n class=\"hidden\"\n ></div>\n </strong>\n }\n <div\n class=\"mapa-table__card--column\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n @if (column?.status?.color) {\n <div\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n } @else {\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n }\n </div>\n </div>\n } @else {\n @if (column.key === \"actions\" && actions) {\n <div>\n @for (item of getActionItems(row); track item) {\n @if (item.route) {\n <a [href]=\"item.route\" [routerLink]=\"item.route\">\n <button\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n </a>\n } @else {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n }\n }\n </div>\n }\n\n @if (column.key === \"menu\") {\n @if (hasIndividualMenu(row)) {\n <div class=\"mapa-table__column--menu\">\n @for (item of getMenuItems(row); track item) {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--menu-item\"\n [class.mapa-table__column--menu-item-disabled]=\"item.disabled\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n <span class=\"mapa-table__column--menu-item-text\">{{ item.text }}</span>\n </button>\n }\n </div>\n } @else {\n <div class=\"mapa-table__column--menu\">\n @for (item of menuItems; track item) {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--menu-item\"\n [class.mapa-table__column--menu-item-disabled]=\"item.disabled\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <mapa-svg-icon [name]=\"setSvgName(item.image)\"></mapa-svg-icon>\n }\n <span class=\"mapa-table__column--menu-item-text\">{{ item.text }}</span>\n </button>\n }\n </div>\n }\n }\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"mapa-table--show-on-desktop\">\n @if (desktopTableVisible) {\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"sortDataFunction($event)\"\n >\n @for (column of columns; track trackColumn($index, column); let isFirst = $first) {\n <ng-container [matColumnDef]=\"column.key\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(column.key !== 'actions' ? column.sort : null)\"\n >\n <div\n [ngTemplateOutlet]=\"tableHeader\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox }\"\n ></div>\n </th>\n <td mat-cell *matCellDef=\"let row\" [style.width]=\"column?.width\">\n <div\n class=\"mapa-table__column\"\n (click)=\"emitRowClick(row, '')\"\n [class.mapa-table__column--center-cell]=\"column?.align === 'center'\"\n >\n @if (column.key !== \"actions\" && column.key !== \"menu\") {\n <div class=\"mapa-table__content\">\n <div\n [style.width]=\"column?.width\"\n [class.mapa-table__column--ellipsis]=\"column?.collapse === 'overflow'\"\n [class.mapa-table__column--no-wrap]=\"column?.collapse === 'no-wrap'\"\n [class.mapa-table__column--wrap]=\"column?.collapse === 'wrap'\"\n [ngClass]=\"[hasCustomClass(column, row, column.key) ? getCustomClass(column, row, column.key) : '']\"\n >\n @if (column?.status?.color) {\n <div\n class=\"mapa-table__column--status\"\n [style.backgroundColor]=\"getBackgroundColor(column, row)\"\n [style.color]=\"getTextColor(column, row)\"\n [class.mapa-table__column--status-round]=\"column.status?.style == 'round'\"\n >\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n </div>\n } @else {\n <div\n [ngTemplateOutlet]=\"tableContent\"\n [ngTemplateOutletContext]=\"{ selection, column, isFirst, checkbox, row }\"\n ></div>\n }\n </div>\n </div>\n } @else {\n @if (column.key === \"actions\" && actions) {\n <div class=\"mapa-table__column--actions\">\n @for (item of getActionItems(row); track item) {\n @if (item.route) {\n <a [href]=\"item.route\" [routerLink]=\"item.route\">\n <button\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n </a>\n } @else {\n <button\n (click)=\"handleMenu({ data: row, action: item.action })\"\n class=\"mapa-table__column--actions-item\"\n [title]=\"item.text\"\n mat-icon-button\n >\n @if (item.icon) {\n <mat-icon>{{ item.icon }}</mat-icon>\n }\n @if (item.image) {\n <img [src]=\"item.image\" />\n }\n @if (item.svg) {\n <mapa-svg-icon [name]=\"setSvgName(item.svg)\"></mapa-svg-icon>\n }\n @if (item.showText) {\n <span>{{ item.text }}</span>\n }\n </button>\n }\n }\n </div>\n }\n @if (column.key === \"menu\") {\n <div class=\"mapa-table__column--menu\">\n @if (hasIndividualMenu(row)) {\n <mapa-menu\n [items]=\"getMenuItems(row)\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n } @else if (menuItems.length > 0) {\n <mapa-menu\n [items]=\"menuItems\"\n [data]=\"row\"\n (emitMenu)=\"handleMenu($event)\"\n ></mapa-menu>\n }\n </div>\n }\n }\n </div>\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns;\"\n class=\"row-hover\"\n ></tr>\n </table>\n }\n </div>\n\n @if (shouldShowPaginator) {\n <section>\n <mat-paginator\n class=\"mapa-table__paginator\"\n appBubblePagination\n [appCustomLength]=\"totalCount\"\n [bubblePageIndex]=\"paginatorPageIndex\"\n [pageIndex]=\"paginatorPageIndex\"\n [showFirstButton]=\"paginatorShowFirstButton\"\n [showLastButton]=\"paginatorShowLastButton\"\n [renderButtonsNumber]=\"paginatorRenderButtonsNumber\"\n [hideDefaultArrows]=\"paginatorHideDefaultArrows\"\n [length]=\"totalCount\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\"\n (page)=\"changePage($event)\"\n ></mat-paginator>\n </section>\n }\n </section>\n} @else if (status.finished && dataSource.data.length === 0) {\n <section class=\"mapa-table\">\n <mapa-empty\n [title]=\"resolvedEmptyTitle\"\n [subtitle]=\"resolvedEmptySubtitle\"\n ></mapa-empty>\n </section>\n}\n\n<ng-template\n #tableHeader\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n>\n @if (isFirst && checkbox) {\n @if (selection) {\n <mat-checkbox\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n (click)=\"$event.stopPropagation()\"\n color=\"primary\"\n ></mat-checkbox>\n }\n }\n <div>\n <span [innerHTML]=\"column.label | safeHtml\"></span>\n </div>\n @if (column.key !== \"actions\" && column.key !== \"menu\" && column.sort) {\n <div class=\"mapa-table--show-on-desktop\">\n <mat-icon>filter_list</mat-icon>\n </div>\n }\n</ng-template>\n\n<ng-template\n #tableContent\n let-selection=\"selection\"\n let-column=\"column\"\n let-isFirst=\"isFirst\"\n let-checkbox=\"checkbox\"\n let-row=\"row\"\n>\n @if (isFirst && checkbox) {\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection?.toggle(row) : null; getSelectedValues()\"\n [checked]=\"selection?.isSelected(row)\"\n color=\"primary\"\n class=\"mapa-table__checkbox\"\n >\n </mat-checkbox>\n }\n @if (isMaskedData(column, row)) {\n {{ getValueAsDate(column, row) | date: column.mask }}\n } @else if (column.status) {\n <span [innerHTML]=\"getStatusLabel(column, row) | safeHtml\"></span>\n } @else {\n <span [innerHTML]=\"getCellContent(row, column.key) | safeHtml\"></span>\n }\n</ng-template>\n","/*\n * Public API Surface of mapa-library-ui table\n */\n\nexport * from './src/paginator_customization';\nexport * from './src/table.component';\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nexport interface LowReliabilityReport {\n instrument?: string;\n date?: string;\n isExpirationDate?: boolean;\n}\n\n@Component({\n selector: 'mapa-warning',\n templateUrl: './warning.component.html',\n styleUrl: './warning.component.scss',\n imports: [CommonModule],\n standalone: true\n})\nexport class MapaWarningComponent implements OnInit, OnChanges {\n @Input() lowReliabilityReports: LowReliabilityReport[] = [];\n showFirstLine: boolean = false;\n showSecondLine: boolean = false;\n expirationDateReports: string[] = [];\n nonExpirationDateReports: string[] = [];\n\n ngOnInit(): void {\n this.updateVisibilityFlags();\n this.generateReportArrays();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['lowReliabilityReports']) {\n this.updateVisibilityFlags();\n this.generateReportArrays();\n }\n }\n\n updateVisibilityFlags(): void {\n this.showFirstLine = this.lowReliabilityReports.some(\n (report) => !!report.instrument && !!report.date\n );\n this.showSecondLine = this.lowReliabilityReports.some(\n (report) => !!report.isExpirationDate\n );\n }\n\n generateReportArrays(): void {\n this.expirationDateReports = this.lowReliabilityReports\n .filter((report) => !!report.isExpirationDate)\n .map(\n (report, index, array) =>\n `${report.instrument ?? ''} - ${report.date ?? ''}${index < array.length - 1 ? ', ' : ''}`\n );\n\n this.nonExpirationDateReports = this.lowReliabilityReports\n .filter((report) => !report.isExpirationDate)\n .map(\n (report, index, array) =>\n `${report.instrument ?? ''} - ${report.date ?? ''}${index < array.length - 1 ? ', ' : ''}`\n );\n }\n}\n","<section class=\"warning\">\n <div class=\"warning__icon\">\n <img src=\"assets/images/icons/Warning.svg\" />\n </div>\n <article>\n <p *ngIf=\"showFirstLine\">\n Nível baixo de confiabilidade no(s) teste(s): \n <span *ngFor=\"let report of nonExpirationDateReports\">{{ report }}</span>.\n </p>\n <p *ngIf=\"showSecondLine\">\n O prazo de validade do(s) teste(s) está no limite: \n <span *ngFor=\"let report of expirationDateReports\">{{ report }}</span>.\n </p>\n </article>\n</section>\n","/*\n * Public API Surface of mapa-library-ui icon\n */\n\nexport * from './src/warning.component';\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewChild,\n} from \"@angular/core\";\nimport { MatAccordion, MatExpansionModule } from \"@angular/material/expansion\";\nimport { Dimension } from \"../../group-report/public-api\";\nimport {\n Competence,\n ProgressBar,\n Scale,\n} from \"./scale-parameterization.interface\";\nimport {\n Capability,\n MapaCapabilityDotComponent,\n MapaCapabilityIntervalBarComponent,\n} from \"../../capability/public-api\";\nimport { MapaI18nService } from \"../../../core/services/mapa-i18n.service\";\nimport { MapaProgressbarComponent } from \"./progressbar/progressbar.component\";\n\n@Component({\n selector: \"mapa-scale-parameterization\",\n templateUrl: \"./scale-parameterization.component.html\",\n styleUrl: \"./scale-parameterization.component.scss\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n MatExpansionModule,\n MapaCapabilityDotComponent,\n MapaCapabilityIntervalBarComponent,\n MapaProgressbarComponent,\n ],\n standalone: true,\n})\nexport class MapaScaleParameterizationComponent {\n @Input() data!: Competence[];\n @Input() showProgressbar: boolean = true;\n @Input() showInterval: boolean = true;\n @Input() showDots: boolean = true;\n\n @ViewChild(\"detailAccordion\") accordion!: MatAccordion;\n\n public expanded = new Set<number>();\n\n constructor(private readonly i18n: MapaI18nService) {}\n\n get texts() {\n return this.i18n.textsSignal();\n }\n\n get conceptTitle(): string {\n return this.texts.capability.conceptTitle;\n }\n\n toggleAll(): void {\n if (this.expanded.size === this.data.length) {\n this.expanded.clear();\n this.accordion.closeAll();\n } else {\n this.expanded = new Set(this.data.map((_, i) => i));\n this.accordion.openAll();\n }\n }\n\n getProgressbarData(scale: Scale): ProgressBar {\n return {\n interval: scale.interval,\n classification: scale.classification!,\n };\n }\n\n getIntervalbarData(scale: Scale): Capability {\n return {\n interval: scale.interval,\n classificationBg: scale.classification?.classificationBg,\n items: scale.dimensions!,\n };\n }\n\n isPositive(dimension: Dimension): boolean {\n return dimension.direction === \"Positiva\";\n }\n\n showSummarized(scale: Scale | undefined): boolean {\n return scale?.scaleConcept === undefined;\n }\n\n showMore(index: number): void {\n if (this.expanded.has(index)) {\n this.expanded.delete(index);\n } else {\n this.expanded.add(index);\n }\n }\n\n getCompetenceImg(competence: Competence): string {\n let img = \"\";\n if (competence.competenceName.includes(\"Gestão\")) {\n img = \"UsersThree\";\n }\n if (competence.competenceName.includes(\"Autogestão\")) {\n img = \"Brain\";\n }\n if (competence.competenceName.includes(\"Relacionamento\")) {\n img = \"Handshake\";\n }\n if (competence.competenceName.includes(\"Atividade\")) {\n img = \"ListCheck\";\n }\n if (competence.competenceName.includes(\"Corporais\")) {\n img = \"Warning\";\n }\n\n if (img !== \"\") {\n return `assets/images/icons/${img}.svg`;\n }\n return \"\";\n }\n\n getDimensionsAsCapability(scale: Scale): Capability {\n return {\n name: scale.scaleName,\n items: scale.dimensions!.map((dimension) => ({\n name: dimension.dimensionName,\n interval: dimension.percentage,\n classificationId: dimension.classification?.classificationId,\n classificationName: dimension.classification?.classificationName,\n classificationColor: dimension.classification?.classificationColor,\n })),\n };\n }\n}\n","@for (competence of data; track competence) {\n <section class=\"mapa-scale-parameterization\">\n <section\n class=\"mapa-scale-parameterization-scales\"\n [class.scales--full-sized]=\"!showSummarized(competence.scales[0])\"\n [class.scales--summarized]=\"showSummarized(competence.scales[0])\"\n >\n <mat-accordion\n class=\"mapa-scale-parameterization-accordion\"\n #detailAccordion=\"matAccordion\"\n multi\n >\n @for (scale of competence.scales; track scale) {\n <mat-expansion-panel\n class=\"mapa__card mapa-scale-parameterization-details\"\n >\n <mat-expansion-panel-header\n class=\"mapa-scale-parameterization-details__top\"\n >\n <header class=\"mapa-scale-parameterization-details__header\">\n <div\n class=\"mapa-scale-parameterization-details__header--title mapa--display-m\"\n >\n <div\n class=\"mapa-scale-parameterization-details__header--title-text\"\n >\n {{ scale.scaleName }}\n @if (showDots) {\n @let dimensionsCapability = getDimensionsAsCapability(scale);\n <div\n class=\"mapa-scale-parameterization-details__dots\"\n >\n @for (item of dimensionsCapability.items; track item) {\n <mapa-capability-dot\n type=\"small\"\n [item]=\"item\"\n [capability]=\"dimensionsCapability\"\n [tooltip]=\"true\"\n ></mapa-capability-dot>\n }\n </div>\n }\n </div>\n\n @if (scale.classification) {\n <div\n class=\"mapa__tag--bg\"\n [style.backgroundColor]=\"scale.classification.classificationColor\"\n [class.mapa__tag--contrast]=\"scale.classification.classificationId === 1\"\n >\n <span class=\"mapa__tag--text\">\n {{ scale.classification.classificationName }}\n </span>\n </div>\n }\n </div>\n @if (showProgressbar) {\n <div class=\"scale__header--progressbar\">\n @if (!scale.classification?.classificationBg) {\n <mapa-progressbar\n [data]=\"getProgressbarData(scale)\"\n ></mapa-progressbar>\n } @else {\n <mapa-capability-interval-bar\n [data]=\"getIntervalbarData(scale)\"\n [showInterval]=\"true\"\n ></mapa-capability-interval-bar>\n }\n </div>\n }\n </header>\n </mat-expansion-panel-header>\n @if (scale.scaleConcept) {\n <article\n class=\"mapa-scale-parameterization-details__concept\"\n >\n <strong>{{ conceptTitle }}:</strong> {{ scale.scaleConcept }}\n </article>\n }\n <section\n class=\"mapa-scale-parameterization-details__dimensions\"\n [class.dimension--full-sized]=\"!showSummarized(scale)\"\n [class.dimension--summarized]=\"showSummarized(scale)\"\n >\n @for (dimension of scale.dimensions; track dimension) {\n <article class=\"mapa__card--sm dimension\">\n <nav class=\"dimension__main\">\n <div class=\"dimension__title\">\n <div class=\"dimension__title--direction\">\n @if (isPositive(dimension)) {\n <span>&uarr;</span>\n } @else {\n <span>&darr;</span>\n }\n </div>\n <div class=\"dimension__title--label\">\n {{ dimension.dimensionName }}\n </div>\n </div>\n <div class=\"dimension--classification\">\n @if (dimension.classification) {\n <div\n class=\"mapa__tag--bg\"\n [style.backgroundColor]=\"dimension.classification.classificationColor\"\n [class.mapa__tag--contrast]=\"dimension.classification.classificationId === 1\"\n >\n <span class=\"mapa__tag--text\">\n {{ dimension.classification.classificationName }}\n </span>\n </div>\n }\n </div>\n </nav>\n @if (dimension.dimensionClassificationMessage) {\n <div class=\"dimension__concept\">\n {{ dimension.dimensionClassificationMessage }}\n </div>\n }\n </article>\n }\n </section>\n </mat-expansion-panel>\n }\n </mat-accordion>\n </section>\n </section>\n}\n","/*\n * Public API Surface of mapa-library-ui\n */\n\nexport * from './lib/core/elements/element-search';\nexport * from './lib/core/elements/action-button';\nexport * from './lib/core/elements/element-base';\nexport * from './lib/core/elements/dropdown';\nexport * from './lib/core/elements/dropdown-tree';\nexport * from './lib/core/elements/datepicker';\nexport * from './lib/core/elements/datepicker-range';\nexport * from './lib/core/elements/input-text';\nexport * from './lib/core/elements/radio-button';\nexport * from './lib/core/elements/slide-toggle';\nexport * from './lib/core/elements/textarea';\nexport * from './lib/core/elements/errors';\n\nexport * from './lib/core/interfaces/button-icon.interface';\nexport * from './lib/core/interfaces/bread-piece.interface';\nexport * from './lib/core/interfaces/chart-options.interface';\nexport * from './lib/core/interfaces/classification.interface';\nexport * from './lib/core/interfaces/dialog-data.interface';\nexport * from './lib/core/interfaces/element-option.interface';\nexport * from './lib/core/interfaces/menu-action.interface';\nexport * from './lib/core/interfaces/table-column.interface';\nexport * from './lib/core/interfaces/table-empty-state.interface';\nexport * from './lib/core/interfaces/table-row-data.interface';\nexport * from './lib/core/interfaces/table-row-click-event.interface';\nexport * from './lib/core/interfaces/table-status.interface';\n\nexport * from './lib/core/directives/mat-input-autosize.directive';\nexport * from './lib/core/directives/custom-paginator.directive';\n\nexport * from './lib/core/components/form-errors/form-errors.component';\nexport * from './lib/core/i18n/mapa-ui-texts';\nexport * from './lib/core/pipes/safe-html.pipe';\nexport * from './lib/core/services/html-sanitizer.service';\nexport * from './lib/core/services/mapa-i18n.service';\nexport * from './lib/core/services/validation-message-resolver.service';\n\nexport * from './lib/core/pipes/cpf';\nexport * from './lib/core/js-brasil';\n\nexport * from './lib/components/benchmarking/src/benchmark-chart.component';\nexport * from './lib/components/benchmarking/src/benchmark-indicator/benchmark-indicator.component';\nexport {\n Benchmark,\n BenchmarkingChart,\n BenchmarkMark,\n EvaluationBenchmarkResult,\n Classification as BenchmarkingClassification,\n} from './lib/components/benchmarking/src/benchmarking.interface';\nexport * from './lib/components/breadcrumb/public-api';\nexport * from './lib/components/button/public-api';\nexport * from './lib/components/button-icon/public-api';\nexport * from './lib/components/capability/public-api';\nexport * from './lib/components/chart/public-api';\nexport * from './lib/components/checkbox/public-api';\nexport * from './lib/components/datepicker/public-api';\nexport * from './lib/components/datepicker-range/public-api';\nexport * from './lib/components/dialog/public-api';\nexport * from './lib/components/dropdown/public-api';\nexport * from './lib/components/dropdown-tree/public-api';\nexport * from './lib/components/empty/public-api';\nexport * from './lib/components/filters/public-api';\nexport * from './lib/components/form/public-api';\nexport * from './lib/components/group-report/src/group-report.component';\nexport {\n Candidate,\n GroupReportItem,\n Dimension as GroupReportDimension,\n} from './lib/components/group-report/src/group-report-interface';\nexport * from './lib/components/icon/public-api';\nexport * from './lib/components/input/public-api';\nexport * from './lib/components/menu/public-api';\nexport * from './lib/components/nav-list/public-api';\nexport * from './lib/components/radio-button/public-api';\nexport * from './lib/components/report-item/public-api';\nexport * from './lib/components/scale/public-api';\nexport * from './lib/components/slide-toggle/public-api';\nexport * from './lib/components/svg-icon/public-api';\nexport * from './lib/components/table/public-api';\nexport * from './lib/components/tag/public-api';\nexport * from './lib/components/textarea/public-api';\nexport * from './lib/components/tooltip/public-api';\nexport * from './lib/components/warning/public-api';\n\n// Export scale parameterization explicitly to avoid duplicate shared leaf exports.\nexport * from './lib/components/scale-parameterization/src/scale-parameterization.component';\nexport {\n Competence as ScaleParameterizationCompetence,\n Dimension as ScaleParameterizationDimension,\n ProgressBar as ScaleParameterizationProgressBar,\n Scale as ScaleParameterizationScale,\n} from './lib/components/scale-parameterization/src/scale-parameterization.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.MapaI18nService","i1.ValidationMessageResolverService","i1.HtmlSanitizerService","utilsBr","emptyString","maskBr","mask.maskBr","i2","i1.CapabilityClassificationService","i2.MapaI18nService","i3","i6","i4","i5","i7","i8","i9"],"mappings":"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C,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,C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Q,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,IAAA,IAA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"}