matcha-components 20.96.0 → 20.97.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"matcha-components.mjs","sources":["../../../projects/matcha-components/src/lib/matcha-option/matcha-option-parent.interface.ts","../../../projects/matcha-components/src/lib/matcha-animations/animations.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.html","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.html","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.html","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.html","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.html","../../../projects/matcha-components/src/lib/matcha-button/button/button.component.ts","../../../projects/matcha-components/src/lib/matcha-button/button/button.component.html","../../../projects/matcha-components/src/lib/matcha-card/card/card.component.ts","../../../projects/matcha-components/src/lib/matcha-card/card/card.component.html","../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.ts","../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.html","../../../projects/matcha-components/src/lib/matcha-title/title/title.component.ts","../../../projects/matcha-components/src/lib/matcha-title/title/title.component.html","../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.html","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-content/drawer-content.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.html","../../../projects/matcha-components/src/lib/matcha-icon/icon.component.ts","../../../projects/matcha-components/src/lib/matcha-icon/icon.component.html","../../../projects/matcha-components/src/lib/matcha-grid/grid.component.ts","../../../projects/matcha-components/src/lib/matcha-grid/grid.component.html","../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.ts","../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar/toolbar.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar/toolbar.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-button/toolbar-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-button/toolbar-button.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-content/toolbar-content.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-content/toolbar-content.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.html","../../../projects/matcha-components/src/lib/matcha-ripple/ripple.directive.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.html","../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.ts","../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.html","../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.ts","../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.html","../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.ts","../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.html","../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.ts","../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.html","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.ts","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.html","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.ts","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.html","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.ts","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.html","../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.html","../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.html","../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.ts","../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.html","../../../projects/matcha-components/src/lib/matcha-date-range/date-range/date-range.component.ts","../../../projects/matcha-components/src/lib/matcha-date-range/date-range/date-range.component.html","../../../projects/matcha-components/src/lib/matcha-time/time/time.component.ts","../../../projects/matcha-components/src/lib/matcha-time/time/time.component.html","../../../projects/matcha-components/src/lib/matcha-input-phone/all-countries.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.config.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-applier.service.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.service.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-compatible.directive.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.component.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.component.html","../../../projects/matcha-components/src/lib/matcha-stepper/step/step.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper.service.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper/stepper.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-content/stepper-content.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.html","../../../projects/matcha-components/src/lib/matcha-drop-list/services/drop-list.service.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag.directive.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.html","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.ts","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.html","../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.ts","../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.html","../../../projects/matcha-components/src/lib/matcha-option/matcha-option.component.ts","../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.component.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.html","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.html","../../../projects/matcha-components/src/lib/matcha-paginator/paginator-intl.service.ts","../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.ts","../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.html","../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.ts","../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.html","../../../projects/matcha-components/src/lib/matcha-highlight/highlight.component.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html","../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.html","../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.html","../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.directive.ts","../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.module.ts","../../../projects/matcha-components/src/lib/matcha-icon/icon.module.ts","../../../projects/matcha-components/src/lib/matcha-title/title.module.ts","../../../projects/matcha-components/src/lib/matcha-divider/divider.module.ts","../../../projects/matcha-components/src/lib/matcha-button/button.module.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion.module.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll.module.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload.module.ts","../../../projects/matcha-components/src/lib/matcha-elevation/elevation.directive.ts","../../../projects/matcha-components/src/lib/matcha-elevation/elevation.module.ts","../../../projects/matcha-components/src/lib/matcha-modal/overlay.service.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal.service.ts","../../../projects/matcha-components/src/lib/matcha-modal/matcha-modal.module.ts","../../../projects/matcha-components/src/lib/matcha-card/card.module.ts","../../../projects/matcha-components/src/lib/matcha-masonry/masonry.module.ts","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle.module.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar.module.ts","../../../projects/matcha-components/src/lib/matcha-grid/grid.module.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.module.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field.module.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.directive.ts","../../../projects/matcha-components/src/lib/matcha-option/matcha-option.module.ts","../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.module.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.module.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.directive.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.module.ts","../../../projects/matcha-components/src/lib/matcha-ripple/ripple.module.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox.module.ts","../../../projects/matcha-components/src/lib/matcha-hint-text/hint.module.ts","../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.ts","../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.html","../../../projects/matcha-components/src/lib/matcha-paginator/paginator.module.ts","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle.module.ts","../../../projects/matcha-components/src/lib/matcha-spin/spin.module.ts","../../../projects/matcha-components/src/lib/matcha-spinner/spinner.module.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tabs.module.ts","../../../projects/matcha-components/src/lib/matcha-date/matcha-date.module.ts","../../../projects/matcha-components/src/lib/matcha-date-range/date-range.module.ts","../../../projects/matcha-components/src/lib/matcha-time/time.module.ts","../../../projects/matcha-components/src/lib/matcha-stepper/prev-step.diretive.ts","../../../projects/matcha-components/src/lib/matcha-stepper/next-step.diretive.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper.module.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag-handle.directive.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list.module.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.module.ts","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.module.ts","../../../projects/matcha-components/src/lib/matcha-radio/radio.module.ts","../../../projects/matcha-components/src/lib/matcha-avatar/avatar.module.ts","../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observer.service.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer.module.ts","../../../projects/matcha-components/src/lib/matcha-highlight/highlight.module.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider.module.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip.module.ts","../../../projects/matcha-components/src/lib/matcha-components.module.ts","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton.module.ts","../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observable.module.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.pipe.ts","../../../projects/matcha-components/src/lib/matcha-stepper/step-content.diretive.ts","../../../projects/matcha-components/src/public-api.ts","../../../projects/matcha-components/src/matcha-components.ts"],"sourcesContent":["/**\n * Interface que deve ser implementada por componentes que querem usar matcha-option como filho\n *\n * Permite que matcha-option seja usado em diferentes contextos:\n * - matcha-autocomplete\n * - matcha-select\n * - matcha-menu\n * - etc.\n */\nexport interface MatchaOptionParent {\n /**\n * Método chamado quando uma opção é selecionada\n * @param option - A instância do MatchaOptionComponent selecionado\n */\n selectOption(option: any): void; // usando any para evitar referência circular\n}\n\n/**\n * Token de injeção para MatchaOptionParent\n * Usado para injetar o componente pai no matcha-option\n */\nexport const MATCHA_OPTION_PARENT = Symbol('MatchaOptionParent');\n","import { sequence, trigger, animate, style, group, query, transition, animateChild, state, animation, useAnimation, stagger } from '@angular/animations';\n\nconst customAnimation = animation([\n style({\n opacity : '{{opacity}}',\n transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'\n }),\n animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))\n], {\n params: {\n duration: '200ms',\n delay : '0ms',\n opacity : '0',\n scale : '1',\n x : '0',\n y : '0',\n z : '0'\n }\n});\n\nexport const createAnimations = [\n\n trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),\n\n trigger('animateStagger', [\n state('50', style('*')),\n state('100', style('*')),\n state('200', style('*')),\n\n transition('void => 50',\n query('@*',\n [\n stagger('50ms', [\n animateChild()\n ])\n ], {optional: true})),\n transition('void => 100',\n query('@*',\n [\n stagger('100ms', [\n animateChild()\n ])\n ], {optional: true})),\n transition('void => 200',\n query('@*',\n [\n stagger('200ms', [\n animateChild()\n ])\n ], {optional: true}))\n ]),\n\n trigger('fadeInOut', [\n state('0, void', style({\n opacity: 0\n })),\n state('1, *', style({\n opacity: 1\n })),\n transition('1 => 0', animate('300ms ease-out')),\n transition('0 => 1', animate('300ms ease-in')),\n transition('void <=> *', animate('300ms ease-in'))\n ]),\n\n trigger('slideInOut', [\n state('0', style({\n height: '0px'\n })),\n state('1', style({\n height: '*'\n })),\n transition('1 => 0', animate('300ms ease-out')),\n transition('0 => 1', animate('300ms ease-in'))\n ]),\n\n trigger('slideIn', [\n transition('void => left', [\n style({\n transform: 'translateX(100%)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(0)'\n })\n )\n ]\n ),\n transition('left => void', [\n style({\n transform: 'translateX(0)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(-100%)'\n })\n )\n ]\n ),\n transition('void => right', [\n style({\n transform: 'translateX(-100%)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(0)'\n })\n )\n ]\n ),\n transition('right => void', [\n style({\n transform: 'translateX(0)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(100%)'\n })\n )\n ]\n )\n ]),\n\n trigger('slideInLeft', [\n state('void', style({\n transform: 'translateX(-100%)',\n })),\n state('*', style({\n transform: 'translateX(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInRight', [\n state('void', style({\n transform: 'translateX(100%)',\n })),\n state('*', style({\n transform: 'translateX(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInTop', [\n state('void', style({\n transform: 'translateY(-100%)',\n })),\n state('*', style({\n transform: 'translateY(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInBottom', [\n state('void',\n style({\n transform: 'translateY(100%)',\n })),\n state('*', style({\n transform: 'translateY(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('expandCollapse', [\n state('void', style({\n height: '0px'\n })),\n state('*', style({\n height: '*'\n })),\n transition('void => *', animate('300ms ease-out')),\n transition('* => void', animate('300ms ease-in'))\n ]),\n\n // -----------------------------------------------------------------------------------------------------\n // @ Router animations\n // -----------------------------------------------------------------------------------------------------\n\n trigger('routerTransitionLeft', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateX(100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateX(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(-100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateX(100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionRight', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateX(-100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateX(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateX(-100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionUp', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateY(100%)',\n opacity : 0\n })\n ], {optional: true}),\n group([\n query('content > :leave', [\n style({\n transform: 'translateY(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(-100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateY(100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ]),\n\n trigger('routerTransitionDown', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateY(-100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateY(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateY(-100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionFade', [\n\n transition('* => *', group([\n\n query('content > :enter, content > :leave ', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n\n query('content > :enter', [\n style({\n opacity: 0\n })\n ], {optional: true}),\n query('content > :leave', [\n style({\n opacity: 1\n }),\n animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n opacity: 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({\n opacity: 0\n }),\n animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n opacity: 1\n }))\n ], {optional: true}),\n query('content > :enter', animateChild(), {optional: true}),\n query('content > :leave', animateChild(), {optional: true})\n ]))\n ])\n];\n","import { Component, EventEmitter, Input, Output, OnInit, HostBinding, OnChanges, SimpleChanges } from '@angular/core';\nimport { createAnimations } from '../../matcha-animations/animations';\n\n@Component({\n selector: 'matcha-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.scss',\n standalone: false,\n animations: [...createAnimations]\n})\nexport class MatchaAccordionItemComponent implements OnInit, OnChanges {\n private _stretch: boolean = false;\n private _isOpen: boolean = false;\n\n @Input()\n set stretch(value: boolean | string) {\n this._stretch = value != null && `${value}` !== 'false';\n }\n get stretch(): boolean {\n return this._stretch;\n }\n @HostBinding('class.stretch') get stretchClass() {\n return this._stretch;\n }\n\n private _clickableHeader = true;\n @Input()\n set clickableHeader(value: boolean | string) {\n this._clickableHeader = value != null && `${value}` !== 'false';\n }\n get clickableHeader(): boolean {\n return this._clickableHeader;\n }\n\n @Input()\n set isOpen(value: boolean | string) {\n this._isOpen = value != null && `${value}` !== 'false';\n }\n get isOpen(): boolean {\n return this._isOpen;\n }\n @HostBinding('class.is-open') get isOpenClass() {\n return this._isOpen;\n }\n\n @Output() opened = new EventEmitter<boolean>();\n @Output() toggleRequested = new EventEmitter<void>();\n\n ngOnInit() {\n this.opened.emit(this.isOpen);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['isOpen']) {\n this.opened.emit(this.isOpen);\n }\n }\n\n toggleAccordion() {\n // Emite evento para o accordion pai controlar o estado\n this.toggleRequested.emit();\n }\n}\n","<div class=\"accordion-item flex-column overflow-hidden\">\n <div class=\"accordion-header d-flex\">\n <div class=\"d-flex accordion-header-wrapper\"\n [class.cursor-pointer]=\"clickableHeader\"\n (click)=\"clickableHeader ? toggleAccordion() : null\">\n <ng-content select=\"matcha-accordion-header\"></ng-content>\n </div>\n </div>\n <div class=\"accordion-content overflow-hidden\" [@expandCollapse]=\"isOpen ? '*' : 'void'\">\n <ng-content select=\"matcha-accordion-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { MatchaAccordionItemComponent } from '../accordion-item/accordion-item.component';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n selector: 'matcha-accordion',\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n standalone: false\n})\nexport class MatchaAccordionComponent implements AfterContentInit, OnDestroy {\n private _multiple = false;\n @Input()\n set multiple(value: boolean | string) {\n // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.\n this._multiple = value != null && `${value}` !== 'false';\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n @Output('openedChange') openedChange = new EventEmitter<boolean>();\n\n @ContentChildren(MatchaAccordionItemComponent, { descendants: true }) items!: QueryList<MatchaAccordionItemComponent>;\n private subscriptions: Subscription[] = [];\n\n ngAfterContentInit() {\n this.setupItems();\n\n // Escuta mudanças na lista de itens (para casos dinâmicos)\n this.items.changes.subscribe(() => {\n this.setupItems();\n });\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private setupItems() {\n // Limpa subscriptions anteriores\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions = [];\n\n this.items.forEach(item => {\n const toggleSub = item.toggleRequested.subscribe(() => {\n this.toggleItem(item);\n });\n this.subscriptions.push(toggleSub);\n\n const openedSub = item.opened.subscribe((isOpen: boolean) => {\n this.openedChange.emit(isOpen);\n });\n this.subscriptions.push(openedSub);\n });\n }\n\n toggleItem(selectedItem: MatchaAccordionItemComponent) {\n // Toggle o item selecionado\n selectedItem.isOpen = !selectedItem.isOpen;\n\n // Se não permite múltiplos itens abertos e o item foi aberto, fecha os demais\n if (!this.multiple && selectedItem.isOpen) {\n this.items.forEach(item => {\n if (item !== selectedItem) {\n item.isOpen = false;\n }\n });\n }\n }\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-accordion-header',\n templateUrl: './accordion-header.component.html',\n styleUrl: './accordion-header.component.scss',\n standalone: false\n})\nexport class MatchaAccordionHeaderComponent {\n\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-accordion-content',\n templateUrl: './accordion-content.component.html',\n styleUrl: './accordion-content.component.scss',\n standalone: false\n})\nexport class MatchaAccordionContentComponent {\n\n}\n","<ng-content></ng-content>\n","/*\nHOW TO USE ---------------------------------------------------------\nTEMPLATE:\n<!-- Elemento sentinela para detectar o scroll -->\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\n <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\n <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\n</option>\n*/\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n\n@Component({\n selector: 'matcha-infinite-scroll',\n templateUrl: './matcha-infinite-scroll.component.html',\n styleUrl: './matcha-infinite-scroll.component.scss',\n standalone: false\n})\nexport class MatchaInfiniteScrollComponent implements OnInit, OnDestroy{\n// Evento que será disparado quando o elemento entrar na área visível\n@Output() scrolledToEnd = new EventEmitter<void>();\n\nprivate observer!: IntersectionObserver;\n\nconstructor(private element: ElementRef) {}\n\nngOnInit(): void {\n // Configura o observer para disparar quando 10% do elemento estiver visível\n const options = {\n root: null, // Usa a viewport\n rootMargin: '0px',\n threshold: 0.1\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.scrolledToEnd.emit();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n}\n\nngOnDestroy(): void {\n this.observer.disconnect();\n}\n}\n","","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-infinite-scroll-data',\n templateUrl: './matcha-infinite-scroll-data.component.html',\n styleUrls: ['./matcha-infinite-scroll-data.component.scss'],\n styles: [`\n :host {\n height: 1px;\n opacity: 0;\n }\n `],\n standalone: false\n})\nexport class MatchaInfiniteScrollDataComponent implements OnInit, OnDestroy, OnChanges {\n\n /**\n * Função que carrega os dados com base no número da página.\n * Deve retornar um Observable com um array de itens.\n */\n @Input() loadData!: (page: number) => Observable<any[]>;\n\n /**\n * Lista inicial (opcional) para iniciar a agregação.\n */\n @Input() initialList: any[] = [];\n\n /**\n * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\n */\n @Input() threshold = 0.1;\n\n /**\n * Chave para resetar a diretiva (para componentes como select).\n */\n @Input() resetKey: any;\n\n /**\n * Novo input para o autocomplete, onde será aplicado o debounce.\n */\n @Input() searchTerm: any;\n\n /**\n * Emite a lista acumulada de itens.\n */\n @Output() aggregatedData = new EventEmitter<any[]>();\n\n /**\n * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\n */\n @Output() exactMatch = new EventEmitter<any>();\n\n private aggregatedList: any[] = [];\n private currentPage = 0;\n private observer!: IntersectionObserver;\n\n // Subscription para as chamadas do loadData\n private dataSubscription = new Subscription();\n // Subscription exclusiva para o debounce do searchTerm\n private searchSubscription = new Subscription();\n // Subject para aplicar debounce no searchTerm\n private searchTermSubject: Subject<any> = new Subject();\n\n constructor(private element: ElementRef) { }\n\n ngOnInit(): void {\n this.initialize();\n\n // Configura o Intersection Observer para carregamento via scroll\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: this.threshold\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadNextPage();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n\n // Inscreve para receber alterações do searchTerm com debounce\n this.searchSubscription = this.searchTermSubject.pipe(\n debounceTime(300)\n ).subscribe(() => {\n // Reseta e carrega a primeira página após o debounce\n this.resetData();\n this.loadNextPage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['resetKey'] && !changes['resetKey'].firstChange) {\n this.resetData();\n }\n\n if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\n // Emite o novo valor para o Subject e aguarda o debounce\n this.searchTermSubject.next(changes['searchTerm'].currentValue);\n }\n }\n\n /**\n * Inicializa ou reinicializa a lista agregada e o contador de página.\n */\n private initialize(): void {\n this.aggregatedList = [...this.initialList];\n this.currentPage = 0;\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n\n /**\n * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\n */\n private resetData(): void {\n // Cancela as assinaturas das chamadas de loadData\n this.dataSubscription.unsubscribe();\n this.dataSubscription = new Subscription();\n\n // Re-inicializa a lista e o contador\n this.initialize();\n }\n\n /**\n * Carrega a próxima página de dados utilizando a função loadData.\n */\n private loadNextPage(): void {\n if (!this.loadData) {\n return;\n }\n this.currentPage++;\n const dataObservable = this.loadData(this.currentPage);\n const sub = dataObservable.subscribe(data => {\n if (data && data.length) {\n this.aggregatedList = [...this.aggregatedList, ...data];\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n });\n this.dataSubscription.add(sub);\n }\n\n /**\n * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\n * Se sim, emite o output exactMatch com esse item.\n */\n private checkExactMatch(): void {\n if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\n this.exactMatch.emit(this.aggregatedList[0]);\n }\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n this.dataSubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n}\n","","/*\nHOW TO USE ---------------------------------------------------------\nTEMPLATE:\n<!-- Elemento sentinela para detectar o scroll -->\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\n <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\n <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\n</option>\n*/\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-lazyload',\n templateUrl: './lazyload.component.html',\n styleUrl: './lazyload.component.scss',\n standalone: false\n})\nexport class MatchaLazyloadComponent implements OnInit, OnDestroy{\n// Evento que será disparado quando o elemento entrar na área visível\n@Output() scrolledToEnd = new EventEmitter<void>();\n\nprivate observer!: IntersectionObserver;\n\nconstructor(private element: ElementRef) {}\n\nngOnInit(): void {\n // Configura o observer para disparar quando 10% do elemento estiver visível\n const options = {\n root: null, // Usa a viewport\n rootMargin: '0px',\n threshold: 0.1\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.scrolledToEnd.emit();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n}\n\nngOnDestroy(): void {\n this.observer.disconnect();\n}\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-lazyload-data',\n templateUrl: './lazyload-data.component.html',\n styleUrls: ['./lazyload-data.component.scss'],\n styles: [`\n :host {\n height: 1px;\n opacity: 0;\n }\n `],\n standalone: false\n})\nexport class MatchaLazyloadDataComponent implements OnInit, OnDestroy, OnChanges {\n\n /**\n * Função que carrega os dados com base no número da página.\n * Deve retornar um Observable com um array de itens.\n */\n @Input() loadData!: (page: number) => Observable<any[]>;\n\n /**\n * Lista inicial (opcional) para iniciar a agregação.\n */\n @Input() initialList: any[] = [];\n\n /**\n * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\n */\n @Input() threshold = 0.1;\n\n /**\n * Root margin para o Intersection Observer (padrão: '0px').\n * Use valores como '100px' para acionar 100px antes do elemento aparecer.\n * Aceita valores como: '10px', '10px 20px', '10% 5% 0px 5%'\n */\n @Input() rootMargin = '0px';\n\n /**\n * Chave para resetar a diretiva (para componentes como select).\n */\n @Input() resetKey: any;\n\n /**\n * Novo input para o autocomplete, onde será aplicado o debounce.\n */\n @Input() searchTerm: any;\n\n /**\n * Emite a lista acumulada de itens.\n */\n @Output() aggregatedData = new EventEmitter<any[]>();\n\n /**\n * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\n */\n @Output() exactMatch = new EventEmitter<any>();\n\n private aggregatedList: any[] = [];\n private currentPage = 0;\n private observer!: IntersectionObserver;\n\n // Subscription para as chamadas do loadData\n private dataSubscription = new Subscription();\n // Subscription exclusiva para o debounce do searchTerm\n private searchSubscription = new Subscription();\n // Subject para aplicar debounce no searchTerm\n private searchTermSubject: Subject<any> = new Subject();\n\n constructor(private element: ElementRef) { }\n\n ngOnInit(): void {\n this.initialize();\n\n // Configura o Intersection Observer para carregamento via scroll\n const options = {\n root: null,\n rootMargin: this.rootMargin,\n threshold: this.threshold\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadNextPage();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n\n // Inscreve para receber alterações do searchTerm com debounce\n this.searchSubscription = this.searchTermSubject.pipe(\n debounceTime(300)\n ).subscribe(() => {\n // Reseta e carrega a primeira página após o debounce\n this.resetData();\n this.loadNextPage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['resetKey'] && !changes['resetKey'].firstChange) {\n this.resetData();\n }\n\n if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\n // Emite o novo valor para o Subject e aguarda o debounce\n this.searchTermSubject.next(changes['searchTerm'].currentValue);\n }\n }\n\n /**\n * Inicializa ou reinicializa a lista agregada e o contador de página.\n */\n private initialize(): void {\n this.aggregatedList = [...this.initialList];\n this.currentPage = 0;\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n\n /**\n * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\n */\n private resetData(): void {\n // Cancela as assinaturas das chamadas de loadData\n this.dataSubscription.unsubscribe();\n this.dataSubscription = new Subscription();\n\n // Re-inicializa a lista e o contador\n this.initialize();\n }\n\n /**\n * Carrega a próxima página de dados utilizando a função loadData.\n */\n private loadNextPage(): void {\n if (!this.loadData) {\n return;\n }\n this.currentPage++;\n const dataObservable = this.loadData(this.currentPage);\n const sub = dataObservable.subscribe(data => {\n if (data && data.length) {\n this.aggregatedList = [...this.aggregatedList, ...data];\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n });\n this.dataSubscription.add(sub);\n }\n\n /**\n * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\n * Se sim, emite o output exactMatch com esse item.\n */\n private checkExactMatch(): void {\n if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\n this.exactMatch.emit(this.aggregatedList[0]);\n }\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n this.dataSubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, HostBinding, Inject, Input, OnChanges, OnInit, Renderer2 } from '@angular/core';\n\n@Component({\n selector: '[matcha-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false\n})\nexport class MatchaButtonComponent implements OnChanges, OnInit {\n @Input('size') size: string | null = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @Input('gap') gap: string | number | null = null;\n\n @Input('color') color: string | null = 'basic';\n\n @HostBinding('attr.color')\n get colorAttr(): string | null {\n return this.color;\n }\n\n private _basic = false;\n @Input() get basic() { return this._basic; }\n set basic(v: boolean | string) { this._basic = v === 'false' ? false : !!v; }\n\n private _outline = false;\n @Input() get outline() { return this._outline; }\n set outline(v: boolean | string) { this._outline = v === 'false' ? false : !!v;}\n\n private _alpha = false;\n @Input() get alpha() { return this._alpha; }\n set alpha(v: boolean | string) { this._alpha = v === 'false' ? false : !!v;}\n\n private _pill = false;\n @Input() get pill() { return this._pill; }\n set pill(v: boolean | string) { this._pill = v === 'false' ? false : !!v;}\n\n private _link = false;\n @Input() get link() { return this._link; }\n set link(v: boolean | string) { this._link = v === 'false' ? false : !!v;}\n\n private _icon = false;\n @Input() get icon() { return this._icon; }\n set icon(v: boolean | string) { this._icon = v === 'false' ? false : !!v;}\n\n\n\n constructor(@Inject(ElementRef) private _elementRef: ElementRef, @Inject(Renderer2) private _renderer: Renderer2) {}\n\n private _config: any = {\n sizeXs: 'tiny',\n sizeSm: 'small',\n sizeMd: 'medium',\n sizeLg: 'large',\n sizeXl: 'huge',\n size: 'medium',\n gap: null,\n basic: false,\n outline: false,\n pill: false,\n icon: false,\n link: false\n };\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button`);\n this.setConfig();\n this.updateDividerStyles();\n // Adicione o evento de clique apenas a elementos com a classe \"matcha-button\"\n const buttons = document.querySelectorAll('.matcha-button');\n buttons.forEach(button => {\n // mouse down event\n button.addEventListener('mousedown', this.addRippleEffect, false);\n });\n }\n\n ngOnChanges() {\n this.setConfig();\n this.updateDividerStyles();\n }\n\n private clearConfig() {\n //size\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-${this._config.size}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-xs-${this._config.sizeXs}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-sm-${this._config.sizeSm}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-md-${this._config.sizeMd}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-lg-${this._config.sizeLg}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-xl-${this._config.sizeXl}`);\n //gap\n if(this._config.gap) {\n this._renderer.removeClass(this._elementRef.nativeElement, `px-${this._config.gap}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `gap-${this._config.gap}`);\n }\n //basic\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-icon`);\n //outline\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-outline`);\n //pill\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-pill`);\n //icon\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-basic`);\n //link\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-link`);\n }\n\n private setConfig() {\n this.clearConfig();\n this.size ? this.setSize() : null;\n this.gap ? this.setGap() : null;\n (this.outline === true || this.outline === 'true') ? this.setOutline() : null;\n (this.pill === true || this.pill === 'true') ? this.setPill() : null;\n (this.link === true || this.link === 'true') ? this.setLink() : null;\n (this.basic === true || this.basic === 'true') ? this.setBasic() : null;\n (this.icon === true || this.icon === 'true') ? this.setIcon() : null;\n }\n\n private setSize() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-${this.size}`);\n this._config.size = this.size;\n if(this.sizeXs) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-xs-${this.sizeXs}`);\n this._config.sizeXs = this.sizeXs;\n }\n if(this.sizeSm) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-sm-${this.sizeSm}`);\n this._config.sizeSm = this.sizeSm;\n }\n if(this.sizeMd) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-md-${this.sizeMd}`);\n this._config.sizeMd = this.sizeMd;\n }\n if(this.sizeLg) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-lg-${this.sizeLg}`);\n this._config.sizeLg = this.sizeLg;\n }\n if(this.sizeXl) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-xl-${this.sizeXl}`);\n this._config.sizeXl = this.sizeXl;\n }\n }\n\n private setGap() {\n this._renderer.addClass(this._elementRef.nativeElement, `px-${this.gap}`);\n this._renderer.addClass(this._elementRef.nativeElement, `gap-${this.gap}`);\n this._config.gap = this.gap;\n }\n\n private setOutline() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-outline`);\n }\n\n private setPill() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-pill`);\n }\n\n private setLink() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-link`);\n }\n\n private setBasic() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-basic`);\n this._renderer.addClass(this._elementRef.nativeElement, `basic`);\n }\n\n private setIcon() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-icon`);\n }\n\n private updateDividerStyles() {\n // Busca todos os matcha-divider dentro do botão\n const dividers = this._elementRef.nativeElement.querySelectorAll('matcha-divider');\n\n if (dividers && dividers.length > 0) {\n dividers.forEach((divider: HTMLElement) => {\n // Busca as divs dentro do matcha-divider\n const innerDivs = divider.querySelectorAll('div');\n\n innerDivs.forEach((div: HTMLElement) => {\n // Remove a classe border-color-disabled\n if (div.classList.contains('border-color-disabled')) {\n this._renderer.removeClass(div, 'border-color-disabled');\n // Adiciona a classe opacity-03\n this._renderer.addClass(div, 'opacity-03');\n }\n });\n });\n }\n }\n\n private addRippleEffect(e: any) {\n var target = e.target;\n if (target.tagName.toLowerCase() !== 'button') return false;\n var rect = target.getBoundingClientRect();\n var ripple = target.querySelector('.ripple');\n if (!ripple) {\n ripple = document.createElement('span');\n ripple.className = `ripple`;\n ripple.style.height = ripple.style.width = target.offsetWidth + 'px';\n target.appendChild(ripple);\n }\n ripple.classList.remove('show');\n var top = e.pageY - rect.top - ripple.offsetHeight / 2 - window.scrollY;\n var left = e.pageX - rect.left - ripple.offsetWidth / 2 - window.scrollX;\n ripple.style.top = top + 'px';\n ripple.style.left = left + 'px';\n ripple.classList.add('show');\n return false;\n }\n\n ngOnDestroy() {\n const buttons = document.querySelectorAll('.matcha-button');\n buttons.forEach(button => {\n button.removeEventListener('click', this.addRippleEffect, false);\n });\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, Inject, InjectionToken, Input, Optional, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'matcha-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n standalone: false\n})\nexport class MatchaCardComponent {\n\n private _color = 'surface';\n @Input() get color() { return this._color; }\n set color(v: string | null) { this._color = v || 'surface';}\n\n @HostBinding('attr.color')\n get colorAttr(): string | null {\n return this.color;\n }\n\n @Input()\n blockquote: 'left' | 'right' | 'none' | null = 'none';\n\n @Input()\n blockquoteColor: string | null = null;\n\n @Input()\n class: string | null = '';\n\n // Aplique o mesmo padrão para alpha, tint e loading\n private _alpha = false;\n @Input() get alpha() { return this._alpha; }\n set alpha(v: boolean | string) {\n this._alpha = v !== 'false' && v !== false;\n }\n\n @HostBinding('attr.alpha')\n get alphaAttr(): string | null {\n return this.alpha ? 'true' : 'false';\n }\n\n private _tint = false;\n @Input() get tint() { return this._tint; }\n set tint(v: boolean | string) {\n this._tint = v !== 'false' && v !== false;\n }\n\n @HostBinding('attr.tint')\n get tintAttr(): string | null {\n return this.tint ? 'true' : 'false';\n }\n\n private _loading = false;\n @Input() get loading() { return this._loading; }\n set loading(v: boolean | string) {\n this._loading = v !== 'false' && v !== false;\n }\n\n @HostBinding('class')\n public get classes(): string {\n let backgroundColor = '';\n let blockquoteColor = '';\n let blockquotePosition = null;\n\n if (this.color === 'bg' || this.color === 'surface') {\n if (this.hasBlockquotePosition()) {\n blockquotePosition = `matcha-card-border-${this.blockquote}`;\n blockquoteColor = this.blockquoteColor ? `border-color-${this.blockquoteColor}` : '';\n } else {\n blockquotePosition = '';\n blockquoteColor = '';\n }\n\n } else {\n if (this.hasBlockquotePosition()) {\n blockquotePosition = `matcha-card-border-${this.blockquote}`;\n blockquoteColor = this.color ? `border-color-${this.blockquoteColor}` : '';\n } else {\n blockquotePosition = '';\n blockquoteColor = '';\n }\n }\n\n const activeClasses = `matcha-card ${blockquotePosition} ${blockquoteColor} ${backgroundColor} ${this.loading ? 'loading' : ''} ${this.class}`;\n return activeClasses;\n }\n\n public hasBlockquotePosition(): boolean {\n return this.blockquote === 'left' || this.blockquote === 'right';\n }\n\n\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n standalone: false\n})\nexport class MatchaDividerComponent {\n @Input('gap') gap: string | number | null = null;\n @Input('gap-sm') gapSm: string | number | null = null;\n @Input('gap-md') gapMd: string | number | null = null;\n @Input('gap-lg') gapLg: string | number | null = null;\n @Input('gap-xl') gapXl: string | number | null = null;\n\n\n private _direction = 'horizontal';\n @Input('direction')\n set direction(value: string) {\n this._direction = value;\n }\n get direction(): string {\n return this._direction;\n }\n\n @HostBinding('attr.direction')\n get directionAttr(): string {\n return this.direction;\n }\n\n public get classes(): string {\n const hasVertical = this.direction === 'vertical';\n const directionPrefix = hasVertical ? 'mx' : 'my';\n const gap = this.gap ? `${directionPrefix}-${this.gap}` : '';\n const gapSm = this.gapSm ? `${directionPrefix}-sm-${this.gapSm}` : '';\n const gapMd = this.gapMd ? `${directionPrefix}-md-${this.gapMd}` : '';\n const gapLg = this.gapLg ? `${directionPrefix}-lg-${this.gapLg}` : '';\n const gapXl = this.gapXl ? `${directionPrefix}-xl-${this.gapXl}` : '';\n let activeClasses = '';\n\n const verticalClasses = 'flex-row h-100-p bl-2 border-color-disabled';\n const horizontalClasses = 'flex-column w-100-p bt-2 border-color-disabled';\n\n activeClasses += hasVertical ? verticalClasses : horizontalClasses;\n activeClasses += gap ? ` ${gap}` : '';\n activeClasses += gapSm ? ` ${gapSm}` : '';\n activeClasses += gapMd ? ` ${gapMd}` : '';\n activeClasses += gapLg ? ` ${gapLg}` : '';\n activeClasses += gapXl ? ` ${gapXl}` : '';\n\n return activeClasses;\n }\n}\n","<div [class]=\"classes\"></div>\n","import { Component, EventEmitter, Input, Output, HostBinding } from '@angular/core';\n\nexport interface ILevelClasses {\n [key: number | string]: string;\n}\n\n// matcha-title <matcha-title color=\"fg\" size=\"1\" loading=\"false\" type=\"pill\" icon=\"icon\" (iconClick)=\"emitIconAction($event)\"></matcha-title>\n\n@Component({\n selector: 'matcha-title',\n templateUrl: './title.component.html',\n styleUrls: ['./title.component.scss'],\n standalone: false\n})\nexport class MatchaTitleComponent {\n @Input()\n color: null | string = null;\n\n @Input()\n size: number | string = 4;\n\n private _loading = false;\n @Input() get loading() { return this._loading; }\n set loading(v: boolean | string) { this._loading = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.loading')\n get loadingAttr(): string | null {\n return this.loading ? 'true' : 'false';\n }\n\n private _type: 'pill' | 'bullet' | 'icon' | 'none' = 'pill';\n @Input() get type() { return this._type; }\n set type(v: 'pill' | 'bullet' | 'icon' | 'none' | string) {\n this._type = (v as 'pill' | 'bullet' | 'icon' | 'none') || 'pill';\n }\n\n @HostBinding('attr.type')\n get typeAttr(): string {\n return this.type;\n }\n\n private _icon = '';\n @Input() get icon() { return this._icon; }\n set icon(v: string) { this._icon = v || ''; }\n\n @HostBinding('attr.icon')\n get iconAttr(): string | null {\n return this.icon || null;\n }\n\n @Output() iconClick = new EventEmitter<object>();\n\n\n public sizeClasses: ILevelClasses = {\n 1: 'fw-900 fs-12 lh-12',\n 2: 'fw-900 fs-14 lh-16',\n 3: 'fw-900 fs-16 lh-18',\n 4: 'fw-900 fs-20 lh-22',\n 5: 'fw-900 fs-32 lh-32',\n 6: 'fw-900 fs-40 lh-40',\n 7: 'fw-900 fs-40 lh-40',\n };\n\n public getTypes(): string {\n const color = this.color ? `background-${this.color} ` : 'background-fg';\n const icon = this.icon ? `i-matcha-${this.icon}` : '';\n return this.type === 'pill' ? `min-h-20 h-20 max-h-20 max-w-8 w-8 min-w-8 position-relative mr-8 radius-8 ${color}` :\n this.type === 'bullet' ? `min-h-8 h-8 max-h-8 max-w-8 w-8 min-w-8 position-relative mr-8 radius-8 ${this.color ? `background-${this.color}` : 'background-fg'}` :\n this.type === 'icon' ? `position-relative mr-8 radius-8 ${icon} ${this.color ? `color-${this.color}` : 'color-grey'}` :\n this.type === 'none' ? `d-none--force` : '';\n }\n\n public get signClasses(): string {\n const activeClasses = `d-flex ${this.getTypes()} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n public get textClasses(): string {\n const classes = `d-inline-block position-relative mr-8 radius-8`;\n const size = this.sizeClasses[this.size] ? this.sizeClasses[this.size] : '';\n const activeClasses = `${classes} ${size} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n public emitIconAction(): void {\n const data:object = { icon: this.icon };\n this.iconClick.emit(data);\n }\n\n public hasIconClickOutput(): boolean {\n return this.iconClick.observers.length > 0;\n }\n}\n","<!-- <matcha-title size=\"1\" type=\"bullet\"></matcha-title> -->\n\n<div class=\"d-flex flex-align-center m-0\">\n <ng-container *ngIf=\"loading\">\n <span [class]=\"signClasses\" [class.skeleton-animated-background]=\"loading\"></span>\n <span [class]=\"textClasses\" [class.skeleton-animated-background]=\"loading\" class=\"d-flex px-60\">&nbsp;</span>\n </ng-container>\n\n <ng-container *ngIf=\"!loading\">\n <span [class]=\"signClasses\" [class.cursor-pointer]=\"hasIconClickOutput()\" (click)=\"emitIconAction()\"></span>\n <span [class]=\"textClasses\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</div>\n","import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, OnInit, OnDestroy, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport type DrawerMode = 'over' | 'push' | 'side';\nexport type DrawerPosition = 'start' | 'end';\n\n@Component({\n selector: 'matcha-drawer',\n templateUrl: './drawer.component.html',\n styleUrls: ['./drawer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer',\n '[class.matcha-drawer-end]': 'position === \"end\"',\n '[class.matcha-drawer-over]': 'mode === \"over\"',\n '[class.matcha-drawer-push]': 'mode === \"push\"',\n '[class.matcha-drawer-side]': 'mode === \"side\"',\n '[class.matcha-drawer-opened]': 'opened',\n 'tabindex': '-1',\n }\n})\nexport class MatchaDrawerComponent implements OnInit, OnDestroy {\n\n // Propriedades principais\n @Input() position: DrawerPosition = 'start';\n\n // Mode com setter para detectar mudanças\n private _mode: DrawerMode = 'over';\n @Input()\n get mode(): DrawerMode {\n return this._mode;\n }\n set mode(value: DrawerMode) {\n if (this._mode !== value) {\n this._mode = value;\n this.modeChange.emit(value);\n this._cdr.markForCheck();\n }\n }\n\n @Input() disableClose: boolean = false;\n @Input() autoFocus: boolean = true;\n @Input() fixedInViewport: boolean = false;\n @Input() fixedTopGap: number = 0;\n @Input() fixedBottomGap: number = 0;\n\n // Largura do drawer\n @Input() width: string = '256px';\n\n @HostBinding('style.width')\n get drawerWidth(): string {\n // Garante que sempre retorne um valor válido\n return this.width || '256px';\n }\n\n // Estado de aberto/fechado\n private _opened: boolean = false;\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n this.toggle(value);\n }\n\n // Eventos\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() openedStart = new EventEmitter<void>();\n @Output() closedStart = new EventEmitter<void>();\n @Output() modeChange = new EventEmitter<DrawerMode>();\n\n // Subject para debounce de animações\n private _animationSubject = new Subject<boolean>();\n private _animating = false;\n\n constructor(\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef\n ) {\n this._setupAnimationDebounce();\n }\n\n ngOnInit() {\n // Inicialização se necessário\n }\n\n ngOnDestroy() {\n this._animationSubject.complete();\n }\n\n private _setupAnimationDebounce() {\n this._animationSubject.pipe(\n debounceTime(50)\n ).subscribe(() => {\n this._animating = false;\n this._cdr.markForCheck();\n });\n }\n\n /**\n * Toggle o estado do drawer\n */\n toggle(isOpen: boolean = !this._opened): Promise<void> {\n return new Promise((resolve) => {\n if (this._opened === isOpen || this._animating) {\n resolve();\n return;\n }\n\n this._animating = true;\n const wasOpened = this._opened;\n this._opened = isOpen;\n\n if (isOpen) {\n this.openedStart.emit();\n } else {\n this.closedStart.emit();\n }\n\n // Emite a mudança\n this.openedChange.emit(this._opened);\n this._cdr.markForCheck();\n\n // Aguarda a animação\n this._animationSubject.next(true);\n\n setTimeout(() => {\n if (this.autoFocus && isOpen) {\n this._elementRef.nativeElement.focus();\n }\n resolve();\n }, 300);\n });\n }\n\n /**\n * Abre o drawer\n */\n open(): Promise<void> {\n return this.toggle(true);\n }\n\n /**\n * Fecha o drawer\n */\n close(): Promise<void> {\n return this.toggle(false);\n }\n\n /**\n * Getter para saber se está animando\n */\n get animating(): boolean {\n return this._animating;\n }\n\n /**\n * Getter para a largura/altura do drawer\n */\n @HostBinding('style.visibility')\n get visibility(): string {\n return this.opened || this._animating ? 'visible' : 'hidden';\n }\n}\n","<div class=\"matcha-drawer-inner-container\">\n <ng-content></ng-content>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ElementRef\n} from '@angular/core';\n\n@Component({\n selector: 'matcha-drawer-content',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer-content',\n }\n})\nexport class MatchaDrawerContentComponent {\n constructor(public _elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n Component,\n ContentChild,\n ContentChildren,\n QueryList,\n AfterContentInit,\n OnDestroy,\n ChangeDetectorRef,\n ViewEncapsulation,\n HostBinding,\n HostListener\n} from '@angular/core';\nimport { MatchaDrawerComponent } from '../drawer/drawer.component';\nimport { MatchaDrawerContentComponent } from '../drawer-content/drawer-content.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-drawer-container',\n templateUrl: './drawer-container.component.html',\n styleUrls: ['./drawer-container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer-container',\n '[class.matcha-drawer-container-explicit-backdrop]': '_backdropOverride',\n }\n})\nexport class MatchaDrawerContainerComponent implements AfterContentInit, OnDestroy {\n\n @ContentChildren(MatchaDrawerComponent) _drawers!: QueryList<MatchaDrawerComponent>;\n @ContentChild(MatchaDrawerContentComponent) _content!: MatchaDrawerContentComponent;\n\n @HostBinding('class.matcha-drawer-container-has-open')\n get hasOpenDrawer(): boolean {\n return this._drawers && this._drawers.some(drawer => drawer.opened);\n }\n\n /** Backdrop override */\n _backdropOverride: boolean | null = null;\n\n private _destroyed = new Subject<void>();\n private _doCheck = new Subject<void>();\n\n constructor(private _cdr: ChangeDetectorRef) {\n // Debounce para otimizar detecção de mudanças\n this._doCheck.pipe(\n debounceTime(10),\n takeUntil(this._destroyed)\n ).subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n });\n }\n\n ngAfterContentInit() {\n // Escuta mudanças nos drawers\n this._drawers.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n this._subscribeToDrawerChanges();\n });\n\n // Inscreve nos eventos dos drawers\n this._subscribeToDrawerChanges();\n\n this._updateContentMargins();\n }\n\n /**\n * Inscreve nos eventos de cada drawer\n */\n private _subscribeToDrawerChanges() {\n this._drawers.forEach(drawer => {\n // Escuta mudanças no estado opened\n drawer.openedChange\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateContentMargins();\n this._cdr.markForCheck();\n });\n\n // Escuta mudanças no modo do drawer\n drawer.modeChange\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateContentMargins();\n this._cdr.markForCheck();\n });\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._doCheck.complete();\n }\n\n /**\n * Fecha todos os drawers que não têm disableClose\n */\n @HostListener('document:keydown.escape')\n onEscape() {\n if (this._drawers) {\n this._drawers.forEach(drawer => {\n if (drawer.opened && !drawer.disableClose && drawer.mode === 'over') {\n drawer.close();\n }\n });\n }\n }\n\n /**\n * Valida que não há múltiplos drawers na mesma posição\n */\n private _validateDrawers() {\n // Implementação simplificada - apenas avisa no console\n if (this._drawers && this._drawers.length > 2) {\n console.warn('Matcha Drawer: Mais de 2 drawers detectados. Use no máximo 2 (start e end).');\n }\n }\n\n /**\n * Atualiza as margens do conteúdo baseado nos drawers abertos\n */\n private _updateContentMargins() {\n if (!this._content || !this._drawers) {\n return;\n }\n\n let left = 0;\n let right = 0;\n\n this._drawers.forEach(drawer => {\n // Só aplica margem para side e push quando o drawer está aberto\n if (drawer.opened && (drawer.mode === 'side' || drawer.mode === 'push')) {\n const width = this._getDrawerWidth(drawer);\n\n if (drawer.position === 'start') {\n left = width;\n } else {\n right = width;\n }\n }\n });\n\n // Aplica as margens no content\n this._setContentMargins(left, right);\n }\n\n /**\n * Obtém a largura do drawer de forma segura\n */\n private _getDrawerWidth(drawer: MatchaDrawerComponent): number {\n // Primeiro tenta usar a propriedade width do componente\n if (drawer.width) {\n const widthValue = parseInt(drawer.width, 10);\n if (!isNaN(widthValue) && widthValue > 0) {\n return widthValue;\n }\n }\n\n const element = (drawer as any)._elementRef?.nativeElement;\n\n if (!element) {\n return 256; // Default 256px\n }\n\n // Tenta obter a largura do CSS primeiro (mais confiável)\n const computedStyle = window.getComputedStyle(element);\n const cssWidth = parseInt(computedStyle.width, 10);\n\n // Se a largura computada é válida e não é absurda, usa ela\n if (cssWidth && cssWidth > 0 && cssWidth < 1000) {\n return cssWidth;\n }\n\n // Fallback para offsetWidth, mas valida o valor\n const offsetWidth = element.offsetWidth;\n if (offsetWidth > 0 && offsetWidth < 1000) {\n return offsetWidth;\n }\n\n // Se tudo falhar, retorna o padrão\n return 256;\n }\n\n /**\n * Define as margens do conteúdo\n */\n private _setContentMargins(left: number, right: number) {\n if (this._content) {\n const contentElement = (this._content as any)._elementRef?.nativeElement;\n if (contentElement) {\n // Valida os valores antes de aplicar\n const validLeft = Math.max(0, Math.min(left, 600)); // Max 600px\n const validRight = Math.max(0, Math.min(right, 600)); // Max 600px\n\n contentElement.style.marginLeft = `${validLeft}px`;\n contentElement.style.marginRight = `${validRight}px`;\n }\n }\n }\n\n /**\n * Retorna se há um backdrop visível\n */\n get _hasBackdrop(): boolean {\n if (this._backdropOverride !== null) {\n return this._backdropOverride;\n }\n\n return this._drawers && this._drawers.some(drawer =>\n drawer.opened && drawer.mode === 'over'\n );\n }\n\n /**\n * Fecha o drawer quando o backdrop é clicado\n */\n _onBackdropClick() {\n if (this._drawers) {\n this._drawers.forEach(drawer => {\n if (drawer.opened && !drawer.disableClose && drawer.mode === 'over') {\n drawer.close();\n }\n });\n }\n }\n}\n","<div class=\"matcha-drawer-backdrop\"\n *ngIf=\"_hasBackdrop\"\n (click)=\"_onBackdropClick()\">\n</div>\n\n<ng-content select=\"matcha-drawer\"></ng-content>\n\n<div class=\"matcha-drawer-content-container\">\n <ng-content select=\"matcha-drawer-content\"></ng-content>\n</div>\n","import { Component, Directive, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n standalone: false\n})\nexport class MatchaIconComponent {\n @Input()\n name: string | undefined | null = '';\n\n @Input()\n size: string | undefined | null = '';\n\n @Input()\n color: string | undefined | null = '';\n\n @Input()\n class: string | undefined | null = '';\n\n @Input()\n loading: boolean | string = false;\n\n public get classes(): string {\n const icon = this.name ? `i-matcha-${this.name}` : '';\n const size = this.size ? `i-size-${this.size}` : '';\n const color = `color-${this.color}`;\n const loading = this.loading == true ? 'loading' : '';\n\n const activeClasses = `${icon} ${color} ${size} ${loading} ${this.class}`;\n return activeClasses;\n }\n}\n","<span [class]=\"classes\">\n <ng-content></ng-content>\n</span>\n","import { Component, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n standalone: false\n})\nexport class MatchaGridComponent {\n @Input()\n breakpoint: string = '';\n\n @Input()\n col: string = '';\n\n @Input()\n gap: string = '';\n\n @Input()\n class: string = '';\n\n @Input()\n span: string = '';\n\n @Input()\n rowspan: string = '';\n\n @Input()\n colspan: string = '';\n\n @Input()\n direction: string = '';\n\n @Input()\n loading: boolean | string = false;\n\n private getStringSplited(inputValue: string): string[] {\n const stringWithoutSpaces = inputValue.replace(/\\s+/g, '');\n return stringWithoutSpaces.split(',');\n }\n\n private getGridClasses(breakpoint: string, col: string): string {\n const breakpoints = this.getStringSplited(breakpoint);\n const columns = this.getStringSplited(col);\n let breakpointClasses = '';\n for (let i = 0; i < breakpoints.length; i++) {\n if (breakpoints[i] === '' || breakpoints[i] === 'xs') {\n breakpointClasses += `grid-${columns[i]} `;\n }\n if (breakpoints[i] === 'sm' && columns[i] !== undefined) {\n breakpointClasses += `grid-sm-${columns[i]} `;\n }\n if (breakpoints[i] === 'md' && columns[i] !== undefined) {\n breakpointClasses += `grid-md-${columns[i]} `;\n }\n if (breakpoints[i] === 'lg' && columns[i] !== undefined) {\n breakpointClasses += `grid-lg-${columns[i]} `;\n }\n if (breakpoints[i] === 'xl' && columns[i] !== undefined) {\n breakpointClasses += `grid-xl-${columns[i]} `;\n }\n }\n return breakpointClasses;\n }\n\n public setColspanClasses(span: string, breakpoint: string): void {\n if (span) {\n const spanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('colspan-'));\n spanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n this.renderer.addClass(this.el.nativeElement, `colspan${breakpoint ? '-' + breakpoint : '-sm'}-${span}`);\n }\n }\n\n public setRowspanClasses(span: string, breakpoint: string): void {\n if (span) {\n const spanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('rowspan-'));\n spanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n this.renderer.addClass(this.el.nativeElement, `rowspan${breakpoint ? '-' + breakpoint : '-sm'}-${span}`);\n }\n }\n\n // public setRowspanClasses(rowspan: string, breakpoint: string): void {\n // const elementsWithRowspanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('rowspan-'));\n // elementsWithRowspanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n // //função que executa a adição de classe para cada breakpoint\n // const breakpoints = this.getStringSplited(breakpoint);\n // const prefix: string = ' rowspan';\n // const rows = this.getStringSplited(rowspan);\n // let rowspanClasses = '';\n // for (let i = 0; i < rows.length; i++) {\n // rowspanClasses = prefix + rows[i];\n // }\n // this.renderer.addClass(this.el.nativeElement, `${rowspanClasses}`);\n // }\n\n public get classes(): string {\n this.class = 'teste';\n const breakpoints = this.getGridClasses(this.breakpoint, this.col);\n const activeClasses = `grid-1 ${breakpoints} gap-${this.gap} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n this.setColspanClasses(this.colspan, this.breakpoint);\n this.setRowspanClasses(this.rowspan, this.breakpoint);\n }\n\n ngOnChanges() {\n this.setColspanClasses(this.colspan, this.breakpoint);\n this.setRowspanClasses(this.rowspan, this.breakpoint);\n }\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-masonry',\n templateUrl: './masonry.component.html',\n styleUrls: ['./masonry.component.scss'],\n standalone: false\n})\nexport class MatchaMasonryComponent {\n @Input('col') colSize: string | number | null = null;\n @Input('col-sm') smColSize: string | number | null = null;\n @Input('col-md') mdColSize: string | number | null = null;\n @Input('col-lg') lgColSize: string | number | null = null;\n @Input('col-xl') xlColSize: string | number | null = null;\n @Input('gap') gap: string | number | null = null;\n @Input('gap-sm') gapSm: string | number | null = null;\n @Input('gap-md') gapMd: string | number | null = null;\n @Input('gap-lg') gapLg: string | number | null = null;\n @Input('gap-xl') gapXl: string | number | null = null;\n\n public get classes(): string {\n const col = this.colSize ? `masonry-${this.colSize}` : '';\n const smCol = this.smColSize ? `masonry-sm-${this.smColSize}` : '';\n const mdCol = this.mdColSize ? `masonry-md-${this.mdColSize}` : '';\n const lgCol = this.lgColSize ? `masonry-lg-${this.lgColSize}` : '';\n const xlCol = this.xlColSize ? `masonry-xl-${this.xlColSize}` : '';\n const gap = this.gap ? `masonry-gap-${this.gap}` : '';\n const gapSm = this.gapSm ? `masonry-gap-sm-${this.gapSm}` : '';\n const gapMd = this.gapMd ? `masonry-gap-md-${this.gapMd}` : '';\n const gapLg = this.gapLg ? `masonry-gap-lg-${this.gapLg}` : '';\n const gapXl = this.gapXl ? `masonry-gap-xl-${this.gapXl}` : '';\n let activeClasses = '';\n activeClasses += col ? ` ${col}` : '';\n activeClasses += smCol ? ` ${smCol}` : '';\n activeClasses += mdCol ? ` ${mdCol}` : '';\n activeClasses += lgCol ? ` ${lgCol}` : '';\n activeClasses += xlCol ? ` ${xlCol}` : '';\n activeClasses += gap ? ` ${gap}` : '';\n activeClasses += gapSm ? ` ${gapSm}` : '';\n activeClasses += gapMd ? ` ${gapMd}` : '';\n activeClasses += gapLg ? ` ${gapLg}` : '';\n activeClasses += gapXl ? ` ${gapXl}` : '';\n return activeClasses;\n }\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-content',\n templateUrl: './modal-content.component.html',\n styleUrls: ['./modal-content.component.scss'],\n standalone: false\n})\nexport class MatchaModalContentComponent {\n\n}\n","\n<div class=\"py-24 pt-0 overflow-auto\" style=\"max-height: calc(100vh - 300px);\n\">\n <div class=\"matcha-card-flat matcha-background-transparent p-0 flex-column--force\">\n <div class=\"flex-column matcha-card-flat matcha-background-transparent px-24 py-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-header',\n templateUrl: './modal-header.component.html',\n styleUrls: ['./modal-header.component.scss'],\n standalone: false\n})\nexport class MatchaModalHeaderComponent {\n\n}\n","<!-- [@animate]=\"{ value: '*', params: { delay: '100ms' } }\" -->\n<!-- MATCHA CHECK -->\n<div class=\"matcha-section pt-16 px-16 pt-md-24 px-md-24\">\n <div class=\"d-flex flex-space-between mb-16 mb-md-24\">\n <!-- Remoção do flex-wrap para que o conteúdo seja exibido em uma única linha -->\n <div class=\"flex-space-between flex-align-center\">\n <ng-content></ng-content>\n </div>\n <div class=\"flex-row flex-end gap-8\">\n <ng-content select=\"matcha-modal-options\"></ng-content>\n </div>\n </div>\n <matcha-divider></matcha-divider>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-footer',\n templateUrl: './modal-footer.component.html',\n styleUrls: ['./modal-footer.component.scss'],\n standalone: false\n})\nexport class MatchaModalFooterComponent {\n\n @Input('')\n buttonType: number | string = 0;\n\n ngAfterViewInit() {\n const modalFooter = document.querySelectorAll('matcha-modal-footer');\n modalFooter.forEach(footer => {\n const buttons = footer.querySelectorAll('.matcha-button');\n\n if (buttons.length === 1) {\n buttons.forEach(button => {\n button.classList.add('w-100-p');\n });\n }\n if (buttons.length > 1) {\n buttons.forEach(button => {\n button.classList.add('max-w-sm-256');\n button.classList.add('w-100-p');\n });\n }\n });\n }\n}\n","<div class=\"matcha-section pb-16 px-16 pb-md-24 px-md-24\">\n <matcha-divider></matcha-divider>\n <div class=\"flex-column flex-sm-row w-100-p flex-space-between gap-16\">\n <div class=\"flex-column flex-sm-row w-100-p flex-space-between mt-16 mt-md-24 gap-16\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-options',\n templateUrl: './modal-options.component.html',\n styleUrl: './modal-options.component.scss',\n standalone: false\n})\nexport class MatchaModalOptionsComponent {\n\n}\n","<div class=\"flex-row gap-8\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal',\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n standalone: false\n})\nexport class MatchaModalComponent {\n\n @Input('size') size: string | null = 'large';\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @Input()\n class: string = '';\n\n @Input()\n hasBackdrop: boolean = true;\n\n @Input()\n backdropClass: string = '';\n\n @HostBinding('attr.size')\n get sizeAttr(): string | null {\n return this.size;\n }\n\n @HostBinding('attr.size-xs')\n get sizeAttrXs(): string | null {\n return this.sizeXs;\n }\n\n @HostBinding('arrt.size-sm')\n get sizeAttrSm(): string | null {\n return this.sizeSm;\n }\n\n @HostBinding('attr.size-md')\n get sizeAttrMd(): string | null {\n return this.sizeMd;\n }\n\n @HostBinding('attr.size-lg')\n get sizeAttrLg(): string | null {\n return this.sizeLg;\n }\n\n @HostBinding('attr.size-xl')\n get sizeAttrXl(): string | null {\n return this.sizeXl;\n }\n\n @HostBinding('class')\n public get classes(): string {\n const activeClasses = `matcha-modal flex-column elevation-8 ${this.class}`;\n return activeClasses;\n }\n\n constructor(\n ) {}\n\n}\n","<div class=\"background-surface elevation-z-4 flex-column matcha-modal radius-8\">\n <ng-content></ng-content>\n</div>","import { Component, HostListener, OnInit, OnDestroy, Input } from '@angular/core';\n\n\n@Component({\n selector: 'matcha-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarComponent implements OnInit, OnDestroy{\n\n @Input() elevation: number = 1;\n\n public isMobileScreen = false;\n\n get elevationClass(): string {\n return `elevation-z-${this.elevation}`;\n }\n \n private readonly mobileBreakpoint = 1024;\n private resizeTimeout: any;\n\n ngOnInit(): void {\n this.checkScreenWidth();\n }\n\n @HostListener('window:resize', [])\n onResize(): void {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.checkScreenWidth();\n }, 20);\n }\n\n private checkScreenWidth(): void {\n this.isMobileScreen = window.innerWidth < this.mobileBreakpoint;\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.resizeTimeout);\n }\n}\n\n","<!-- HOW TO USE:\n<matcha-toolbar>\n <matcha-title type=\"icon\" icon=\"settings-out\" (iconClick)=\"FUNÇÃO-AO-CLICAR-NO-ICONE-AQUI\">\n {{'FINANCIAL.CATEGORY.TITLE' | translate}}\n </matcha-title>\n <search-form toolbar-form-field (searchText)=\"searchText($event)\"></search-form>\n <matcha-toolbar-button icon=\"home-out\" (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-button>\n <matcha-toolbar-content>\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-content>\n <matcha-toolbar-main-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-main-button>\n QUALQUER OUTRA FUNCIONALIDADE AQUI\n</matcha-toolbar>\n-->\n<ng-template #toolbarMainButton>\n <ng-content select=\"matcha-toolbar-main-button\"></ng-content>\n</ng-template>\n\n<ng-template #toolbarCustomButton>\n <ng-content select=\"matcha-toolbar-custom-button\"></ng-content>\n</ng-template>\n<!-- CONTENT HEADER -->\n<div class=\"flex-column background-surface radius-8\" [ngClass]=\"elevationClass\">\n <div class=\"flex-column flex-md-row flex-wrap p-16 flex-align-center flex-space-between h-auto min-h-72 flex-wrap gap-8\">\n <div class=\"w-100-p--force w-md-auto--force flex-space-between flex-wrap gap-8\">\n <div class=\"min-h-32 flex-center-center\">\n <ng-content select=\"matcha-title\"></ng-content>\n </div>\n <ng-container *ngIf=\"isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n <div class=\"w-100-p--force w-md-auto--force flex-row flex-end gap-8\">\n <!-- ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <ng-content select=\"search-form\"></ng-content>\n <!-- /ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <div class=\"flex-row gap-8\">\n <ng-content select=\"matcha-toolbar-button\"></ng-content>\n <ng-content select=\"matcha-toolbar-content\"></ng-content>\n <ng-content></ng-content>\n <ng-container *ngIf=\"!isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n<!-- / CONTENT HEADER -->\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-button',\n templateUrl: './toolbar-button.component.html',\n styleUrls: ['./toolbar-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarButtonComponent{\n @Input('icon') icon: string = '';\n @Output() buttonClick = new EventEmitter();\n\n public get classes(): string {\n const activeClasses = `i-matcha-${this.icon}`;\n return activeClasses;\n }\n\n emitButtonClick() {\n this.buttonClick.emit();\n }\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\" toolbar-button-tooltip=\"TOOLTIP-AQUI\">\n TEXTO DO BOTÃO AQUI\n</matcha-toolbar-button>\n-->\n<button matcha-button outline=\"true\" size=\"small\" color=\"grey\" icon=\"true\" (click)=\"emitButtonClick()\">\n <span [class]=\"classes\"></span>\n</button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-content',\n templateUrl: './toolbar-content.component.html',\n styleUrls: ['./toolbar-content.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarContentComponent{}\n","<!-- HOW TO USE:\n<matcha-toolbar-content>\n OUTROS CONTEUDOS CUSTOMIZADOS NA TOOLBAR\n</matcha-toolbar-content>\n-->\n<div class=\"d-flex flex-wrap gap-8\">\n <ng-content></ng-content>\n</div>\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-main-button',\n templateUrl: './toolbar-main-button.component.html',\n styleUrls: ['./toolbar-main-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarMainButtonComponent {\n @Output() buttonClick = new EventEmitter();\n\n emitButtonClick() {\n this.buttonClick.emit();\n }\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-main-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n</matcha-toolbar-main-button>\n-->\n<button matcha-button size=\"tiny\" size-md=\"small\" color=\"accent\" (click)=\"emitButtonClick()\">\n <span class=\"i-matcha-action_plus i-size-sm ml--4\"></span>\n <span class=\"ml-8 fs-14\">\n <ng-content></ng-content>\n </span>\n</button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-custom-button',\n templateUrl: './toolbar-custom-button.component.html',\n styleUrls: ['./toolbar-custom-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarCustomButtonComponent {\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-custom-button>\n Botão customizado aqui\n</matcha-toolbar-custom-button>\n-->\n<ng-content></ng-content>\n","import { Component, ContentChild, Input, AfterViewInit, ElementRef } from '@angular/core';\nimport { FormControlName } from '@angular/forms';\n\n@Component({\n selector: 'matcha-form-field',\n standalone: false,\n templateUrl: './matcha-form-field.component.html',\n styleUrl: './matcha-form-field.component.scss',\n})\nexport class MatchaFormFieldComponent implements AfterViewInit {\n @Input() color: 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue' | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber' | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn' | 'brown' | 'grey' | 'blue-grey' | 'primary' | 'accent' | 'warn' = 'grey';\n\n @Input('size') size: string | null | undefined | 'tiny' | 'small' | 'medium' | 'large' | 'huge' = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @ContentChild(FormControlName) controlDir?: FormControlName;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n this.generateDataCy();\n }\n\n private generateDataCy(): void {\n // Busca o matcha-label dentro do form-field\n const labelElement = this.elementRef.nativeElement.querySelector('matcha-label');\n const inputElement = this.elementRef.nativeElement.querySelector('input, textarea, select');\n\n if (labelElement && inputElement) {\n const labelText = labelElement.textContent?.trim();\n if (labelText) {\n const dataCyValue = this.convertToKebabCase(labelText);\n inputElement.setAttribute('data-cy', `matcha-form-field-${dataCyValue}`);\n }\n }\n }\n\n private convertToKebabCase(text: string): string {\n return text\n .toLowerCase()\n .replace(/\\s+/g, '-') // Substitui espaços por hífens\n .replace(/[^\\w\\-]/g, '') // Remove caracteres especiais\n .replace(/\\-\\-+/g, '-') // Remove hífens duplos\n .replace(/^-+|-+$/g, ''); // Remove hífens do início e fim\n }\n\n get control() {\n return this.controlDir?.control;\n }\n\n get showError(): boolean {\n return !!this.control?.invalid && !!this.control?.touched;\n }\n}\n","<div class=\"flex-column\">\n <div class=\"matcha-form-field position-relative w-100-p min-h-40 flex-align-center\" #inputSelector>\n <div class=\"flex-row position-absolute w-100-p min-h-40 h-100-p\">\n <div class=\"matcha-form-field-border-start bl-2 bt-2 bb-2 radius-left-8 min-w-8 border-color-{{color}}\"></div>\n <div class=\"matcha-form-field-border-middle bb-2 w-auto border-color-{{color}}\">\n <ng-content select=\"matcha-label\"></ng-content>\n </div>\n <div class=\"matcha-form-field-border-end br-2 bt-2 bb-2 radius-right-8 w-100-p border-color-{{color}}\"></div>\n </div>\n <div class=\"flex-row position-relative py-8 px-12 gap-8 w-100-p\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-container *ngIf=\"showError\">\n <ng-content select=\"matcha-error\"></ng-content>\n </ng-container>\n <ng-content select=\"matcha-autocomplete\"></ng-content>\n</div>\n<ng-content select=\"matcha-hint-text\"></ng-content>\n","import { Component, Input, AfterViewInit, ElementRef, ChangeDetectorRef } from '@angular/core';\n\n@Component({\n selector: 'matcha-label',\n standalone: false,\n templateUrl: './matcha-label.component.html',\n styleUrl: './matcha-label.component.scss',\n})\nexport class MatchaLabelComponent implements AfterViewInit {\n @Input() color: 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue' | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber' | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn' | 'brown' | 'grey' | 'blue-grey' | 'primary' | 'accent' | 'warn' = 'blue-grey';\n\n public isRequired: boolean = false;\n\n constructor(private elementRef: ElementRef, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n // Usar setTimeout para evitar ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.checkIfRequired();\n this.cdr.detectChanges();\n });\n }\n\n private checkIfRequired(): void {\n // Busca o form-field pai\n const formField = this.elementRef.nativeElement.closest('matcha-form-field');\n if (formField) {\n // Busca por elementos nativos e componentes customizados com required\n const inputElement = formField.querySelector(\n 'input[required], textarea[required], select[required], ' +\n 'matcha-select[required], matcha-autocomplete[required], matcha-date[required]'\n );\n this.isRequired = !!inputElement;\n }\n }\n}\n","<label\n class=\"d-flex d-flex-align-center position-relative text-nowrap px-4 fs-12 lh-18 fw-700 color-{{color}}\"\n style=\"transform: translateY(-8px);\">\n <ng-content></ng-content>\n <span *ngIf=\"isRequired\">&nbsp;*</span>\n <!-- <span class=\"pl-4 fs-10 fw-400 lh-16 matcha-color-placeholder\">(Opcional)</span> -->\n</label>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-error',\n standalone: false,\n templateUrl: './matcha-error.component.html',\n styleUrl: './matcha-error.component.scss',\n})\nexport class MatchaErrorComponent {}\n","<p class=\"w-100-p color-red fs-12 lh-16 flex-row flex-align-center gap-4 m-0 py-4\">\n <matcha-icon name=\"action_sign_warning-out\" size=\"sm\"></matcha-icon>\n <ng-content></ng-content>\n</p>\n","import { Directive, ElementRef, HostListener, Input, OnDestroy } from '@angular/core';\n\n@Directive({\n selector: '[matchaRipple]',\n standalone: false\n})\nexport class MatchaRippleDirective implements OnDestroy {\n @Input() rippleColor: string = 'rgba(0, 0, 0, 0.5)'; // Cor padrão do efeito\n private ripples: HTMLElement[] = [];\n\n constructor(private el: ElementRef) {\n // Garantir que o elemento tenha position relative\n this.el.nativeElement.style.position = 'relative';\n this.el.nativeElement.style.overflow = 'hidden';\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n const target = this.el.nativeElement;\n const rect = target.getBoundingClientRect();\n\n const ripple = document.createElement('span');\n ripple.className = 'ripple';\n\n // Definir o tamanho do ripple baseado no maior lado do elemento\n const size = Math.max(target.offsetWidth, target.offsetHeight);\n ripple.style.height = ripple.style.width = size * 2 + 'px';\n\n // Aplicar estilo básico ao ripple\n ripple.style.backgroundColor = this.rippleColor;\n ripple.style.position = 'absolute';\n ripple.style.borderRadius = '50%';\n ripple.style.opacity = '0.5';\n ripple.style.transform = 'scale(0)';\n ripple.style.transition = 'transform 0.6s, opacity 0.6s';\n ripple.style.pointerEvents = 'none';\n\n const top = event.pageY - rect.top - size + window.scrollY;\n const left = event.pageX - rect.left - size + window.scrollX;\n\n ripple.style.top = top + 'px';\n ripple.style.left = left + 'px';\n\n target.appendChild(ripple);\n this.ripples.push(ripple);\n\n // Inicia a animação no próximo frame\n requestAnimationFrame(() => {\n ripple.style.transform = 'scale(2)';\n ripple.style.opacity = '0';\n });\n\n // Remove o ripple após a animação\n setTimeout(() => {\n if (ripple && ripple.parentElement) {\n ripple.parentElement.removeChild(ripple);\n this.ripples = this.ripples.filter(r => r !== ripple);\n }\n }, 600);\n }\n\n ngOnDestroy() {\n // Limpa todos os ripples quando o componente é destruído\n this.ripples.forEach(ripple => {\n if (ripple && ripple.parentElement) {\n ripple.parentElement.removeChild(ripple);\n }\n });\n this.ripples = [];\n }\n}","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class MatchaCheckboxComponent implements ControlValueAccessor {\n @Input() color: string = 'accent';\n @Input() indeterminate: boolean = false;\n\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean | string) {\n // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.\n this._disabled = value != null && `${value}` !== 'false';\n }\n\n private _checked = false;\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean | string) {\n // Converte string para boolean: 'false' (string) ou false (boolean) para false, qualquer outro valor para true\n const booleanValue = value != null && `${value}` !== 'false';\n if (booleanValue !== this._checked) {\n this._checked = booleanValue;\n this.onChange(this._checked);\n }\n }\n\n @Output() checkedChange = new EventEmitter<{ checked: boolean }>();\n @Output() change = new EventEmitter<Event>();\n\n // ControlValueAccessor methods\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(value: boolean): void {\n this._checked = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) return;\n\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.onTouched();\n\n const eventData = { checked: this.checked };\n this.checkedChange.emit(eventData);\n this.change.emit(event);\n }\n}\n","<label\n class=\"matcha-checkbox flex-align-center\"\n [class.matcha-checkbox-disabled]=\"disabled\">\n <div\n class=\"matcha-checkbox-container w-40 h-40 max-w-40 max-h-40 min-w-40 min-h-40 flex-center-center radius-full cursor-pointer\"\n matchaRipple>\n <input\n type=\"checkbox\"\n class=\"matcha-checkbox-input\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n (change)=\"onInputChange($event)\">\n </div>\n\n <span class=\"matcha-checkbox-label fw-500 fs-16 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaRadioComponent),\n multi: true\n }\n ]\n})\nexport class MatchaRadioComponent implements ControlValueAccessor {\n @Input() color: string = 'accent';\n @Input() value: any = null;\n @Input() name: string = '';\n\n private _disabled = false;\n @Input()\n set disabled(value: boolean | string) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n const outVal = this.value !== undefined ? this.value : this._checked;\n this.onChange(outVal);\n }\n }\n\n private _checked: boolean = false;\n private _modelValue: any = null;\n\n @Output() checkedChange = new EventEmitter<{ checked: boolean }>();\n @Output() change = new EventEmitter<Event>();\n\n // ControlValueAccessor methods\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(value: any): void {\n this._modelValue = value;\n this._checked = this.value !== undefined ? this.value === value : !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) return;\n\n this.checked = true;\n this.onTouched();\n\n // Emitir o valor correto para o ControlValueAccessor\n const outVal = this.value !== undefined ? this.value : this.checked;\n this.onChange(outVal);\n\n const eventData = { checked: this.checked };\n this.checkedChange.emit(eventData);\n this.change.emit(event);\n }\n}\n","<label\n class=\"matcha-radio flex-align-center\"\n [class.matcha-radio-disabled]=\"disabled\">\n <div\n class=\"matcha-radio-container w-40 h-40 max-w-40 max-h-40 min-w-40 min-h-40 flex-center-center radius-full cursor-pointer\"\n matchaRipple>\n <input\n type=\"radio\"\n class=\"matcha-radio-input\"\n [attr.name]=\"name\"\n [value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\">\n </div>\n\n <span class=\"matcha-radio-label fw-500 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>","import { Component, ElementRef, Inject, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-spin',\n standalone: false,\n templateUrl: './spin.component.html',\n styleUrl: './spin.component.scss'\n})\nexport class MatchaSpinComponent {\n private _progress: string | number = 0;\n \n @Input()\n set progress(value: string | number) {\n this._progress = Number(value);\n }\n get progress(): string | number {\n return this._progress;\n }\n\n @Input() color: string = 'accent';\n @Input('size') size: string | null = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n readonly strokeWidth: number = 5;\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(Renderer2) private _renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spin');\n this.setSize();\n }\n\n private setSize() {\n const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\n sizes.forEach(size => {\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spin-${size}`);\n });\n\n if (this.size) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-spin-${this.size}`);\n }\n }\n\n get diameter(): number {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return rect.width;\n }\n\n get radius(): number {\n return (this.diameter - this.strokeWidth) / 2;\n }\n\n get circumference(): number {\n return 2 * Math.PI * this.radius;\n }\n\n get dashOffset(): number {\n const progress = Math.min(Math.max(Number(this.progress), 0), 100);\n return this.circumference - (progress / 100) * this.circumference;\n }\n\n}\n","<div\n class=\"matcha-spin\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"progress\"\n>\n <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\">\n <circle\n class=\"spin-placeholder\"\n [attr.cx]=\"diameter / 2\"\n [attr.cy]=\"diameter / 2\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n />\n <circle\n class=\"spin-progress\"\n [attr.cx]=\"diameter / 2\"\n [attr.cy]=\"diameter / 2\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.stroke]=\"color\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"progress ? dashOffset : null\"\n />\n </svg>\n</div>\n","import { Component, ElementRef, HostBinding, Inject, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-spinner',\n standalone: false,\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class MatchaSpinnerComponent {\n private _progressValue: number = 0;\n @Input()\n set progress(value: string | number) {\n this._progressValue = Number(value);\n }\n get progress(): string | number {\n return this._progressValue;\n }\n\n @HostBinding('attr.progress') get _progress() { return this.progress; }\n\n\n @Input() color: string = 'accent';\n\n @HostBinding('attr.color') get _color() { return this.color; }\n\n @Input('size') size: string | null = null;\n\n @HostBinding('attr.size')\n get hostSize(): string | null {\n return this.size;\n }\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n // Valores fixos baseados no hard coded que funciona\n readonly diameter = 66;\n readonly center = 33;\n readonly radius = 30;\n readonly strokeWidth = 5;\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(Renderer2) private _renderer: Renderer2\n ) { }\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spinner');\n this.setSize();\n }\n\n private setSize() {\n const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\n sizes.forEach(size => {\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spinner-${size}`);\n });\n\n if (this.size) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-spinner-${this.size}`);\n }\n }\n\n get circumference(): number {\n return 2 * Math.PI * this.radius;\n }\n\n get dashOffset(): number {\n const progress = Math.min(Math.max(Number(this.progress), 0), 100);\n return this.circumference - (progress / 100) * this.circumference;\n }\n}\n","<div\n class=\"matcha-spinner\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"progress\"\n>\n <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\" class=\"spinner\">\n <circle\n class=\"spinner-placeholder\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n stroke-linecap=\"round\"\n />\n <circle\n class=\"spinner-progress path\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.stroke]=\"color\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"dashOffset\"\n stroke-linecap=\"round\"\n />\n </svg>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-hint-text',\n standalone: false,\n templateUrl: './hint-text.component.html',\n styleUrl: './hint-text.component.scss'\n})\nexport class MatchaHintTextComponent {\n @Input('type') type: string = 'error';\n @Input('size') size: string = 'tiny';\n\n get iconName(): string {\n switch (this.type) {\n case 'warning': return 'action_sign_warning-out';\n case 'info': return 'info-out';\n case 'success': return 'action_done';\n default: return 'action_sign_warning-out';\n }\n }\n\n get iconColor(): string {\n switch (this.type) {\n case 'warning': return 'yellow';\n case 'info': return 'blue';\n case 'success': return 'green';\n default: return 'red';\n }\n }\n\n}\n","<div class=\"d-flex flex-align-center gap-4\">\n <matcha-icon color=\"{{ iconColor }}\" name=\"{{ iconName }}\"> </matcha-icon>\n <span class=\"text\"><ng-content></ng-content></span>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-skeleton',\n templateUrl: './skeleton.component.html',\n styleUrls: ['./skeleton.component.scss'],\n standalone: false\n})\nexport class MatchaSkeletonComponent {\n\n @Input('amount') @HostBinding('attr.amount') public amount: number | string = 3;\n @Input('grid') @HostBinding('attr.grid') public grid: number | string = 3;\n @Input('height') @HostBinding('attr.height') public height: number | string = 100;\n @Input('model') @HostBinding('attr.model') public model: 'profile'| 'table' | 'empty' | string | null = 'empty';\n @Input('gap') @HostBinding('attr.gap') public gap: number | string = 16;\n\n public get classes(): string {\n // if string parse to int\n this.amount = typeof this.amount === 'string' ? parseInt(this.amount) : this.amount;\n this.grid = typeof this.grid === 'string' ? parseInt(this.grid) : this.grid;\n\n let classes = `gap-${this.gap} `;\n this.amount > 1 ? classes += `grid-sm-${this.grid - 1} ` : classes;\n this.amount > 2 ? classes += `grid-md-${this.grid} ` : classes;\n return classes;\n }\n\n public get heightClass(): string {\n return `h-${this.height}`;\n }\n\n public get amountArray(): number[] {\n const amountNumber = typeof this.amount === 'string' ? parseInt(this.amount) : this.amount;\n return Array(amountNumber).fill(0).map((_, index) => index);\n }\n}\n","<ng-content></ng-content>\n<!-- CARD SKELETON -->\n<div [class]=\"classes\" *ngIf=\"model !== 'table'\">\n <div class=\"skeleton-animated-background flex-column--force p-0 radius-8 user-select-none overflow-hidden\" *ngFor=\"let i of amountArray\">\n\n <ng-container *ngIf=\"model === 'profile'\"><span class=\"h8 title p-16 m-0\"> <span class=\"radius-full background-surface-alpha h-48 w-48\"></span>&nbsp;</span></ng-container>\n\n <div [class]=\"'h-'+ height + ' flex-column--force p-16'\"></div>\n\n <ng-container *ngIf=\"model === 'profile'\">\n <div class=\"flex-column--force\">\n <div class=\"flex-column--force p-16 gap-16\">\n <div class=\"w-100-p h-16 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p h-16 background-surface-alpha radius-full\"></div>\n </div>\n </div>\n </ng-container>\n\n </div>\n</div>\n<!-- CARD SKELETON -->\n\n<!-- TABLE SKELETON -->\n<div class=\"skeleton-animated-background w-100-p mr-16 flex-column--force p-0 radius-8 user-select-none\" *ngIf=\"model === 'table'\">\n\n <div class=\"flex-column--force h-64 background-surface-alpha\">\n <ng-container>&nbsp;</ng-container>\n </div>\n\n <ng-container *ngFor=\"let i of amountArray\">\n <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force\">\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"min-h-48 min-w-48 h-48 w-48 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n </div>\n\n <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force background-bg-alpha\">\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"min-h-48 min-w-48 h-48 w-48 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-30-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n </div>\n\n </ng-container>\n\n</div>\n<!-- TABLE SKELETON -->\n","import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy, ElementRef, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSlideToggleComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatchaSlideToggleComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\n @Input() color: string = 'accent'; \n\n private _checked: boolean = false;\n @Input()\n set checked(value: boolean | string) {\n const newCheckedState = value === '' ? true : !!value;\n if (newCheckedState !== this._checked) {\n this._checked = newCheckedState;\n }\n }\n get checked(): boolean {\n return this._checked;\n }\n\n private _disabled: boolean = false;\n @Input()\n set disabled(value: boolean | string) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Output() change = new EventEmitter<{ checked: boolean }>();\n\n onChange: (value: boolean) => void = (_: boolean) => {};\n onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (this.disabled) {\n this.elementRef.nativeElement.setAttribute('disabled', '');\n } else {\n this.elementRef.nativeElement.removeAttribute('disabled');\n }\n }\n }\n\n ngAfterViewInit(): void {\n \n if (this.disabled) {\n this.elementRef.nativeElement.setAttribute('disabled', '');\n }\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n const inputElement = event.target as HTMLInputElement;\n const newCheckedState = inputElement.checked;\n\n this._checked = newCheckedState;\n this.onChange(newCheckedState);\n this.onTouched();\n this.change.emit({ checked: newCheckedState });\n }\n}\n","<label\n class=\"matcha-slide-toggle-wrapper flex-align-center\"\n [class.matcha-slide-toggle-disabled]=\"disabled\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\"\n />\n\n <span class=\"matcha-slide-toggle-label ml-8 fw-500 fs-16 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>\n","import {\n AfterContentInit, Component, ContentChildren, HostBinding,\n Input, QueryList, ElementRef\n} from '@angular/core';\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\n\n@Component({\n selector: 'matcha-button-toggle',\n templateUrl: './button-toggle.component.html',\n styleUrl: './button-toggle.component.scss',\n standalone: false\n})\nexport class MatchaButtonToggleComponent implements AfterContentInit {\n\n private _multiple = false;\n @Input() get multiple() { return this._multiple; }\n set multiple(v: boolean | string) { this._multiple = v === 'false' ? false : !!v; }\n\n private _disabled = false;\n @Input() get disabled() { return this._disabled; }\n set disabled(v: boolean | string) { this._disabled = v === 'false' ? false : !!v; }\n @HostBinding('attr.disabled') get isDisabled() { return this.disabled || null; }\n\n private _required = false;\n @Input() get required() { return this._required; }\n set required(v: boolean | string) { this._required = v === 'false' ? false : !!v; }\n\n @Input() inactiveColor = 'primary';\n\n @Input() inactiveType: string = 'solid';\n\n private _gap = 16;\n @Input() set gap(v: string | number) { const n = +v; this._gap = isNaN(n) ? 16 : n; }\n get gapClass() { return `gap-${this._gap}`; }\n\n get gap(): number {\n return this._gap;\n }\n\n @ContentChildren(MatchaButtonComponent)\n buttons!: QueryList<MatchaButtonComponent>;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterContentInit(): void {\n const buttons = this.elementRef.nativeElement.querySelectorAll('button[matcha-button]');\n buttons.forEach((button: Element, index: number) => {\n const isActive = button.hasAttribute('active');\n this.setButtonState(button as HTMLElement, isActive);\n\n button.addEventListener('click', () => this.onButtonSelected(button as HTMLElement));\n });\n }\n\n private setButtonState(button: HTMLElement, isActive: boolean): void {\n if (isActive) {\n button.setAttribute('active', '');\n } else {\n button.removeAttribute('active');\n }\n }\n\n private onButtonSelected(selectedButton: HTMLElement): void {\n const buttons = this.elementRef.nativeElement.querySelectorAll('button[matcha-button]');\n const activeButtons = Array.from(buttons).filter((button: unknown) =>\n (button as Element).hasAttribute('active')\n );\n\n if (this.required && activeButtons.length === 1 && activeButtons[0] === selectedButton) {\n return;\n }\n\n if (this.multiple) {\n const isActive = selectedButton.hasAttribute('active');\n this.setButtonState(selectedButton, !isActive);\n return;\n }\n\n if (selectedButton.hasAttribute('active')) {\n this.setButtonState(selectedButton, false);\n } else {\n buttons.forEach((button: Element) => {\n this.setButtonState(button as HTMLElement, button === selectedButton);\n });\n }\n }\n}\n","<div\n class=\"button-group d-flex\"\n [ngClass]=\"gapClass\"\n [class.flex-wrap]=\"gap !== 0\"\n role=\"group\"\n>\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-tab',\n templateUrl: './tab-item.component.html',\n standalone: false,\n})\nexport class MatchaTabItemComponent {\n @Input() title: string = '';\n @Input() icon: string = '';\n \n private _active: boolean = false;\n @Input() set active(value: boolean | string) {\n this._active = value === '' || value === true || value === 'true';\n }\n get active(): boolean {\n return this._active;\n }\n}\n","<ng-content *ngIf=\"active\"></ng-content>\n","import { Component, ContentChildren, AfterContentInit, QueryList, Input, Output, EventEmitter, HostListener, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatchaTabItemComponent } from '../tab-item/tab-item.component';\nimport { createAnimations } from '../../matcha-animations/animations';\n\nexport interface TabChangeEvent {\n index: number;\n tab?: MatchaTabItemComponent;\n}\n\n@Component({\n selector: 'matcha-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n animations: [...createAnimations],\n standalone: false,\n})\nexport class MatchaTabsComponent implements AfterContentInit, OnChanges {\n @ContentChildren(MatchaTabItemComponent) tabs!: QueryList<MatchaTabItemComponent>;\n\n @Input() selectedIndex: number = 0;\n @Output() selectedIndexChange = new EventEmitter<number>();\n @Output() selectedTabChange = new EventEmitter<TabChangeEvent>();\n\n @Input()\n get activeTabIndex(): number {\n return this.selectedIndex;\n }\n set activeTabIndex(value: number) {\n this.selectedIndex = value;\n }\n\n @Output() tabSelected = new EventEmitter<number>();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectedIndex'] && !changes['selectedIndex'].firstChange) {\n this.selectTabByIndex(this.selectedIndex);\n }\n }\n\n ngAfterContentInit() {\n this.tabs.changes.subscribe(() => {\n this.handleTabsChange();\n });\n\n this.handleTabsChange();\n }\n\n private handleTabsChange() {\n const activeTabs = this.tabs.filter(tab => tab.active);\n if (activeTabs.length === 0 && this.tabs.first) {\n this.selectTabByIndex(this.selectedIndex);\n }\n }\n\n selectTab(tab: MatchaTabItemComponent) {\n if (tab.active) return;\n\n const tabsArray = this.tabs.toArray();\n tabsArray.forEach(t => t.active = false);\n tab.active = true;\n const index = tabsArray.indexOf(tab);\n\n this.selectedIndex = index;\n\n this.selectedIndexChange.emit(index);\n this.selectedTabChange.emit({ index, tab });\n this.tabSelected.emit(index);\n }\n\n selectTabByIndex(index: number) {\n if (index >= 0 && index < this.tabs.length) {\n const tab = this.tabs.toArray()[index];\n this.selectTab(tab);\n }\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n const tabsArray = this.tabs.toArray();\n const currentIndex = tabsArray.findIndex(tab => tab.active);\n\n if (event.key === 'ArrowRight') {\n const nextIndex = (currentIndex + 1) % tabsArray.length;\n this.selectTabByIndex(nextIndex);\n } else if (event.key === 'ArrowLeft') {\n const prevIndex = (currentIndex - 1 + tabsArray.length) % tabsArray.length;\n this.selectTabByIndex(prevIndex);\n } else if (event.key === 'Home') {\n this.selectTabByIndex(0);\n } else if (event.key === 'End') {\n this.selectTabByIndex(tabsArray.length - 1);\n }\n }\n}\n","<div class=\"flex-column gap-24 w-100-p\">\n <nav class=\"button-group overflow-auto w-100-p flex-row gap-8 list-style-none pl-0 pb-4\" role=\"tablist\">\n <button *ngFor=\"let tab of tabs; let i = index\" (click)=\"selectTabByIndex(i)\"\n [attr.aria-selected]=\"tab.active\"\n [attr.aria-controls]=\"'tab-content-' + i\"\n [ngClass]=\"{'active': tab.active}\"\n class=\"\n border-color-{{tab.active?'accent':'surface'}} background-surface\n cursor-pointer w-100-p min-w-128 b-2 radius-8 p-8 flex-column flex-align-center gap-4 flex-space-between\"\n role=\"tab\"\n tabindex=\"{{tab.active ? 0 : -1}}\">\n <matcha-icon [name]=\"tab.icon\" color=\"accent\" size=\"md\"></matcha-icon>\n <span class=\"color-fg fw-900 fs-14 lh-16 line-clamp-2\">\n {{ tab.title }}\n </span>\n </button>\n </nav>\n\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-date',\n templateUrl: './matcha-date.component.html',\n styleUrls: ['./matcha-date.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaDateComponent),\n multi: true\n }\n ]\n})\nexport class MatchaDateComponent implements ControlValueAccessor {\n @Input() placeholder: string = 'Selecione uma data';\n @Input() min: string = '';\n @Input() max: string = '';\n @Input() disabled: boolean = false;\n\n value: string = '';\n isDisabled: boolean = false;\n\n // ControlValueAccessor methods\n private onChange = (value: any) => {};\n private onTouched = () => {};\n\n writeValue(value: any): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n this.onChange(this.value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n\n","<input\n type=\"date\"\n class=\"matcha-date-input\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [min]=\"min\"\n [max]=\"max\"\n [disabled]=\"disabled || isDisabled\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n\n","import { AfterContentInit, Component, ContentChildren, OnDestroy, QueryList } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n standalone: false\n})\nexport class MatchaDateRangeComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(NgControl, { descendants: true }) controls!: QueryList<NgControl>;\n\n private startDateControl: AbstractControl | null = null;\n private endDateControl: AbstractControl | null = null;\n private subscription = new Subscription();\n\n ngAfterContentInit(): void {\n // Pega os controles projetados no template\n const controlsArray = this.controls.toArray();\n if (controlsArray.length >= 2) {\n this.startDateControl = controlsArray[0].control;\n this.endDateControl = controlsArray[1].control;\n\n // Adiciona validação nos dois campos\n if (this.startDateControl && this.endDateControl) {\n this.subscription.add(\n this.startDateControl.valueChanges.subscribe(() => this.validateDateRange())\n );\n this.subscription.add(\n this.endDateControl.valueChanges.subscribe(() => this.validateDateRange())\n );\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Validação de formato de data e intervalo: data inicial não pode ser posterior à data final\n */\n private validateDateRange(): void {\n if (!this.startDateControl || !this.endDateControl) return;\n\n const startValue = this.startDateControl.value;\n const endValue = this.endDateControl.value;\n\n // Se ambos os campos estão vazios, não valida\n if (!startValue && !endValue) {\n this.clearDateRangeErrors();\n return;\n }\n\n // Se apenas um campo está preenchido, limpa erros de intervalo\n if (!startValue || !endValue) {\n this.clearDateRangeErrors();\n return;\n }\n\n // Validação de formato de data (YYYY-MM-DD)\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n if (!dateRegex.test(startValue)) {\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['invalidDateFormat']: true\n });\n return;\n }\n\n if (!dateRegex.test(endValue)) {\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['invalidDateFormat']: true\n });\n return;\n }\n\n const startDate = new Date(startValue);\n const endDate = new Date(endValue);\n\n // Verifica se as datas são válidas\n if (isNaN(startDate.getTime())) {\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['invalidDate']: true\n });\n return;\n }\n\n if (isNaN(endDate.getTime())) {\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['invalidDate']: true\n });\n return;\n }\n\n // Validação principal: data inicial não pode ser posterior à data final\n if (startDate > endDate) {\n // Adiciona erros quando a data inicial é posterior à final\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['dateRangeInvalid']: true\n });\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['dateRangeInvalid']: true\n });\n } else {\n // Remove apenas nossos erros específicos se o intervalo está correto\n this.clearDateRangeErrors();\n }\n }\n\n /**\n * Limpa apenas os erros relacionados ao intervalo de datas\n */\n private clearDateRangeErrors(): void {\n if (this.startDateControl) {\n this.removeSpecificError(this.startDateControl, 'dateRangeInvalid');\n this.removeSpecificError(this.startDateControl, 'invalidDateFormat');\n this.removeSpecificError(this.startDateControl, 'invalidDate');\n this.removeSpecificError(this.startDateControl, 'startAfterEnd');\n }\n if (this.endDateControl) {\n this.removeSpecificError(this.endDateControl, 'dateRangeInvalid');\n this.removeSpecificError(this.endDateControl, 'invalidDateFormat');\n this.removeSpecificError(this.endDateControl, 'invalidDate');\n this.removeSpecificError(this.endDateControl, 'endBeforeStart');\n }\n }\n\n /**\n * Remove um erro específico sem afetar outros erros\n */\n private removeSpecificError(control: AbstractControl, errorName: string): void {\n const errors = { ...control.errors };\n if (errors) {\n delete errors[errorName];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n}\n","<div class=\"matcha-date-range-container\">\n <ng-content></ng-content>\n</div>\n","import { AfterContentInit, Component, ContentChildren, Input, OnDestroy, QueryList } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-time',\n templateUrl: './time.component.html',\n styleUrls: ['./time.component.scss'],\n standalone: false\n})\nexport class MatchaTimeComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(NgControl, { descendants: true }) controls!: QueryList<NgControl>;\n \n // Adiciona inputs para integração com campos de data\n @Input() startDateControlName?: string;\n @Input() endDateControlName?: string;\n \n // Opção para desabilitar a validação quando dias são diferentes\n @Input() allowCrossDays: boolean = false;\n\n private startTimeControl: AbstractControl | null = null;\n private endTimeControl: AbstractControl | null = null;\n private startDateControl: AbstractControl | null = null;\n private endDateControl: AbstractControl | null = null;\n private subscription = new Subscription();\n\n ngAfterContentInit(): void {\n // Pega os controles projetados no template\n const controlsArray = this.controls.toArray();\n if (controlsArray.length >= 2) {\n this.startTimeControl = controlsArray[0].control;\n this.endTimeControl = controlsArray[1].control;\n \n // Tenta encontrar os controles de data no form parent\n if (this.startTimeControl && this.endTimeControl && \n this.startDateControlName && this.endDateControlName) {\n const formGroup = this.startTimeControl.parent;\n if (formGroup) {\n this.startDateControl = formGroup.get(this.startDateControlName);\n this.endDateControl = formGroup.get(this.endDateControlName);\n }\n }\n\n // Adiciona validação para os campos de tempo\n if (this.startTimeControl && this.endTimeControl) {\n this.subscription.add(\n this.startTimeControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n this.subscription.add(\n this.endTimeControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n }\n \n // Adiciona validação para os campos de data, se existirem\n if (this.startDateControl && this.endDateControl) {\n this.subscription.add(\n this.startDateControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n this.subscription.add(\n this.endDateControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Validação de intervalo de tempo que pode cruzar dias\n */\n private validateTimeRange(): void {\n if (!this.startTimeControl || !this.endTimeControl) return;\n if (!this.startTimeControl.value || !this.endTimeControl.value) return;\n\n let startDateTime: Date;\n let endDateTime: Date;\n \n // Se temos controles de data, usamos as datas fornecidas\n if (this.startDateControl?.value && this.endDateControl?.value) {\n const startDate = this.startDateControl.value;\n const endDate = this.endDateControl.value;\n \n startDateTime = new Date(`${startDate}T${this.startTimeControl.value}`);\n endDateTime = new Date(`${endDate}T${this.endTimeControl.value}`);\n \n // Comparação de data + hora\n if (startDateTime > endDateTime) {\n this.setValidationErrors();\n } else {\n this.clearValidationErrors();\n }\n } \n // Sem controles de data, ou se allowCrossDays=true, não validamos cruzamento de dias\n else if (this.allowCrossDays) {\n // Nesse caso, assumimos que o intervalo é válido mesmo se hora final < hora inicial\n this.clearValidationErrors();\n } \n // Caso tradicional: mesmo dia, validação simples de hora\n else {\n const today = new Date().toISOString().split('T')[0];\n startDateTime = new Date(`${today}T${this.startTimeControl.value}`);\n endDateTime = new Date(`${today}T${this.endTimeControl.value}`);\n \n if (startDateTime > endDateTime) {\n this.setValidationErrors();\n } else {\n this.clearValidationErrors();\n }\n }\n }\n \n /**\n * Define erros de validação nos controles\n */\n private setValidationErrors(): void {\n this.startTimeControl?.setErrors({ ['startAfterEnd']: true });\n this.endTimeControl?.setErrors({ ['endBeforeStart']: true });\n }\n \n /**\n * Remove erros específicos de validação\n */\n private clearValidationErrors(): void {\n this.removeSpecificError(this.startTimeControl, 'startAfterEnd');\n this.removeSpecificError(this.endTimeControl, 'endBeforeStart');\n }\n\n /**\n * Remove um erro específico sem afetar outros erros\n */\n private removeSpecificError(control: AbstractControl | null, errorName: string): void {\n if (!control) return;\n const errors = { ...control.errors };\n if (errors) {\n delete errors[errorName];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n}\n","<div class=\"d-flex gap-16\">\n <ng-content></ng-content>\n</div>\n","// Array of country objects for the flag dropdown.\n\n// Here is the criteria for the plugin to support a given country/territory\n// - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n// - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n// - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n// - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n\n// Each country array has the following information:\n// [\n// Country name,\n// iso2 code,\n// International dial code,\n// Order (if >1 country with same dial code),\n// Area codes\n// ]\nvar allCountries = [\n [\n \"Afghanistan (‫افغانستان‬‎)\",\n \"af\",\n \"93\"\n ],\n [\n \"Albania (Shqipëri)\",\n \"al\",\n \"355\"\n ],\n [\n \"Algeria (‫الجزائر‬‎)\",\n \"dz\",\n \"213\"\n ],\n [\n \"American Samoa\",\n \"as\",\n \"1\",\n 5,\n [\"684\"]\n ],\n [\n \"Andorra\",\n \"ad\",\n \"376\"\n ],\n [\n \"Angola\",\n \"ao\",\n \"244\"\n ],\n [\n \"Anguilla\",\n \"ai\",\n \"1\",\n 6,\n [\"264\"]\n ],\n [\n \"Antigua and Barbuda\",\n \"ag\",\n \"1\",\n 7,\n [\"268\"]\n ],\n [\n \"Argentina\",\n \"ar\",\n \"54\",\n ],\n [\n \"Armenia (Հայաստան)\",\n \"am\",\n \"374\"\n ],\n [\n \"Aruba\",\n \"aw\",\n \"297\"\n ],\n [\n \"Australia\",\n \"au\",\n \"61\",\n 0\n ],\n [\n \"Austria (Österreich)\",\n \"at\",\n \"43\"\n ],\n [\n \"Azerbaijan (Azərbaycan)\",\n \"az\",\n \"994\"\n ],\n [\n \"Bahamas\",\n \"bs\",\n \"1\",\n 8,\n [\"242\"]\n ],\n [\n \"Bahrain (‫البحرين‬‎)\",\n \"bh\",\n \"973\"\n ],\n [\n \"Bangladesh (বাংলাদেশ)\",\n \"bd\",\n \"880\"\n ],\n [\n \"Barbados\",\n \"bb\",\n \"1\",\n 9,\n [\"246\"]\n ],\n [\n \"Belarus (Беларусь)\",\n \"by\",\n \"375\"\n ],\n [\n \"Belgium (België)\",\n \"be\",\n \"32\"\n ],\n [\n \"Belize\",\n \"bz\",\n \"501\"\n ],\n [\n \"Benin (Bénin)\",\n \"bj\",\n \"229\"\n ],\n [\n \"Bermuda\",\n \"bm\",\n \"1\",\n 10,\n [\"441\"]\n ],\n [\n \"Bhutan (འབྲུག)\",\n \"bt\",\n \"975\"\n ],\n [\n \"Bolivia\",\n \"bo\",\n \"591\"\n ],\n [\n \"Bosnia and Herzegovina (Босна и Херцеговина)\",\n \"ba\",\n \"387\"\n ],\n [\n \"Botswana\",\n \"bw\",\n \"267\"\n ],\n [\n \"Brazil (Brasil)\",\n \"br\",\n \"55\"\n ],\n [\n \"British Indian Ocean Territory\",\n \"io\",\n \"246\"\n ],\n [\n \"British Virgin Islands\",\n \"vg\",\n \"1\",\n 11,\n [\"284\"]\n ],\n [\n \"Brunei\",\n \"bn\",\n \"673\"\n ],\n [\n \"Bulgaria (България)\",\n \"bg\",\n \"359\"\n ],\n [\n \"Burkina Faso\",\n \"bf\",\n \"226\"\n ],\n [\n \"Burundi (Uburundi)\",\n \"bi\",\n \"257\"\n ],\n [\n \"Cambodia (កម្ពុជា)\",\n \"kh\",\n \"855\"\n ],\n [\n \"Cameroon (Cameroun)\",\n \"cm\",\n \"237\"\n ],\n [\n \"Canada\",\n \"ca\",\n \"1\",\n 1,\n [\"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\"]\n ],\n [\n \"Cape Verde (Kabu Verdi)\",\n \"cv\",\n \"238\"\n ],\n [\n \"Caribbean Netherlands\",\n \"bq\",\n \"599\",\n 1,\n [\"3\", \"4\", \"7\"]\n ],\n [\n \"Cayman Islands\",\n \"ky\",\n \"1\",\n 12,\n [\"345\"]\n ],\n [\n \"Central African Republic (République centrafricaine)\",\n \"cf\",\n \"236\"\n ],\n [\n \"Chad (Tchad)\",\n \"td\",\n \"235\"\n ],\n [\n \"Chile\",\n \"cl\",\n \"56\"\n ],\n [\n \"China (中国)\",\n \"cn\",\n \"86\"\n ],\n [\n \"Christmas Island\",\n \"cx\",\n \"61\",\n 2\n ],\n [\n \"Cocos (Keeling) Islands\",\n \"cc\",\n \"61\",\n 1\n ],\n [\n \"Colombia\",\n \"co\",\n \"57\"\n ],\n [\n \"Comoros (‫جزر القمر‬‎)\",\n \"km\",\n \"269\"\n ],\n [\n \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\",\n \"cd\",\n \"243\"\n ],\n [\n \"Congo (Republic) (Congo-Brazzaville)\",\n \"cg\",\n \"242\"\n ],\n [\n \"Cook Islands\",\n \"ck\",\n \"682\"\n ],\n [\n \"Costa Rica\",\n \"cr\",\n \"506\"\n ],\n [\n \"Côte d’Ivoire\",\n \"ci\",\n \"225\"\n ],\n [\n \"Croatia (Hrvatska)\",\n \"hr\",\n \"385\"\n ],\n [\n \"Cuba\",\n \"cu\",\n \"53\"\n ],\n [\n \"Curaçao\",\n \"cw\",\n \"599\",\n 0\n ],\n [\n \"Cyprus (Κύπρος)\",\n \"cy\",\n \"357\"\n ],\n [\n \"Czech Republic (Česká republika)\",\n \"cz\",\n \"420\"\n ],\n [\n \"Denmark (Danmark)\",\n \"dk\",\n \"45\"\n ],\n [\n \"Djibouti\",\n \"dj\",\n \"253\"\n ],\n [\n \"Dominica\",\n \"dm\",\n \"1\",\n 13,\n [\"767\"]\n ],\n [\n \"Dominican Republic (República Dominicana)\",\n \"do\",\n \"1\",\n 2,\n [\"809\", \"829\", \"849\"]\n ],\n [\n \"Ecuador\",\n \"ec\",\n \"593\"\n ],\n [\n \"Egypt (‫مصر‬‎)\",\n \"eg\",\n \"20\"\n ],\n [\n \"El Salvador\",\n \"sv\",\n \"503\"\n ],\n [\n \"Equatorial Guinea (Guinea Ecuatorial)\",\n \"gq\",\n \"240\"\n ],\n [\n \"Eritrea\",\n \"er\",\n \"291\"\n ],\n [\n \"Estonia (Eesti)\",\n \"ee\",\n \"372\"\n ],\n [\n \"Ethiopia\",\n \"et\",\n \"251\"\n ],\n [\n \"Falkland Islands (Islas Malvinas)\",\n \"fk\",\n \"500\"\n ],\n [\n \"Faroe Islands (Føroyar)\",\n \"fo\",\n \"298\"\n ],\n [\n \"Fiji\",\n \"fj\",\n \"679\"\n ],\n [\n \"Finland (Suomi)\",\n \"fi\",\n \"358\",\n 0\n ],\n [\n \"France\",\n \"fr\",\n \"33\"\n ],\n [\n \"French Guiana (Guyane française)\",\n \"gf\",\n \"594\"\n ],\n [\n \"French Polynesia (Polynésie française)\",\n \"pf\",\n \"689\"\n ],\n [\n \"Gabon\",\n \"ga\",\n \"241\"\n ],\n [\n \"Gambia\",\n \"gm\",\n \"220\"\n ],\n [\n \"Georgia (საქართველო)\",\n \"ge\",\n \"995\"\n ],\n [\n \"Germany (Deutschland)\",\n \"de\",\n \"49\"\n ],\n [\n \"Ghana (Gaana)\",\n \"gh\",\n \"233\"\n ],\n [\n \"Gibraltar\",\n \"gi\",\n \"350\"\n ],\n [\n \"Greece (Ελλάδα)\",\n \"gr\",\n \"30\"\n ],\n [\n \"Greenland (Kalaallit Nunaat)\",\n \"gl\",\n \"299\"\n ],\n [\n \"Grenada\",\n \"gd\",\n \"1\",\n 14,\n [\"473\"]\n ],\n [\n \"Guadeloupe\",\n \"gp\",\n \"590\",\n 0\n ],\n [\n \"Guam\",\n \"gu\",\n \"1\",\n 15,\n [\"671\"]\n ],\n [\n \"Guatemala\",\n \"gt\",\n \"502\"\n ],\n [\n \"Guernsey\",\n \"gg\",\n \"44\",\n 1,\n [\"1481\", \"7781\", \"7839\", \"7911\"]\n ],\n [\n \"Guinea (Guinée)\",\n \"gn\",\n \"224\"\n ],\n [\n \"Guinea-Bissau (Guiné Bissau)\",\n \"gw\",\n \"245\"\n ],\n [\n \"Guyana\",\n \"gy\",\n \"592\"\n ],\n [\n \"Haiti\",\n \"ht\",\n \"509\"\n ],\n [\n \"Honduras\",\n \"hn\",\n \"504\"\n ],\n [\n \"Hong Kong (香港)\",\n \"hk\",\n \"852\"\n ],\n [\n \"Hungary (Magyarország)\",\n \"hu\",\n \"36\"\n ],\n [\n \"Iceland (Ísland)\",\n \"is\",\n \"354\"\n ],\n [\n \"India (भारत)\",\n \"in\",\n \"91\"\n ],\n [\n \"Indonesia\",\n \"id\",\n \"62\"\n ],\n [\n \"Iran (‫ایران‬‎)\",\n \"ir\",\n \"98\"\n ],\n [\n \"Iraq (‫العراق‬‎)\",\n \"iq\",\n \"964\"\n ],\n [\n \"Ireland\",\n \"ie\",\n \"353\"\n ],\n [\n \"Isle of Man\",\n \"im\",\n \"44\",\n 2,\n [\"1624\", \"74576\", \"7524\", \"7924\", \"7624\"]\n ],\n [\n \"Israel (‫ישראל‬‎)\",\n \"il\",\n \"972\"\n ],\n [\n \"Italy (Italia)\",\n \"it\",\n \"39\",\n 0\n ],\n [\n \"Jamaica\",\n \"jm\",\n \"1\",\n 4,\n [\"876\", \"658\"]\n ],\n [\n \"Japan (日本)\",\n \"jp\",\n \"81\"\n ],\n [\n \"Jersey\",\n \"je\",\n \"44\",\n 3,\n [\"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\"]\n ],\n [\n \"Jordan (‫الأردن‬‎)\",\n \"jo\",\n \"962\"\n ],\n [\n \"Kazakhstan (Казахстан)\",\n \"kz\",\n \"7\",\n 1,\n [\"33\", \"7\"]\n ],\n [\n \"Kenya\",\n \"ke\",\n \"254\"\n ],\n [\n \"Kiribati\",\n \"ki\",\n \"686\"\n ],\n [\n \"Kosovo\",\n \"xk\",\n \"383\"\n ],\n [\n \"Kuwait (‫الكويت‬‎)\",\n \"kw\",\n \"965\"\n ],\n [\n \"Kyrgyzstan (Кыргызстан)\",\n \"kg\",\n \"996\"\n ],\n [\n \"Laos (ລາວ)\",\n \"la\",\n \"856\"\n ],\n [\n \"Latvia (Latvija)\",\n \"lv\",\n \"371\"\n ],\n [\n \"Lebanon (‫لبنان‬‎)\",\n \"lb\",\n \"961\"\n ],\n [\n \"Lesotho\",\n \"ls\",\n \"266\"\n ],\n [\n \"Liberia\",\n \"lr\",\n \"231\"\n ],\n [\n \"Libya (‫ليبيا‬‎)\",\n \"ly\",\n \"218\"\n ],\n [\n \"Liechtenstein\",\n \"li\",\n \"423\"\n ],\n [\n \"Lithuania (Lietuva)\",\n \"lt\",\n \"370\"\n ],\n [\n \"Luxembourg\",\n \"lu\",\n \"352\"\n ],\n [\n \"Macau (澳門)\",\n \"mo\",\n \"853\"\n ],\n [\n \"Macedonia (FYROM) (Македонија)\",\n \"mk\",\n \"389\"\n ],\n [\n \"Madagascar (Madagasikara)\",\n \"mg\",\n \"261\"\n ],\n [\n \"Malawi\",\n \"mw\",\n \"265\"\n ],\n [\n \"Malaysia\",\n \"my\",\n \"60\"\n ],\n [\n \"Maldives\",\n \"mv\",\n \"960\"\n ],\n [\n \"Mali\",\n \"ml\",\n \"223\"\n ],\n [\n \"Malta\",\n \"mt\",\n \"356\"\n ],\n [\n \"Marshall Islands\",\n \"mh\",\n \"692\"\n ],\n [\n \"Martinique\",\n \"mq\",\n \"596\"\n ],\n [\n \"Mauritania (‫موريتانيا‬‎)\",\n \"mr\",\n \"222\"\n ],\n [\n \"Mauritius (Moris)\",\n \"mu\",\n \"230\"\n ],\n [\n \"Mayotte\",\n \"yt\",\n \"262\",\n 1,\n [\"269\", \"639\"]\n ],\n [\n \"Mexico (México)\",\n \"mx\",\n \"52\"\n ],\n [\n \"Micronesia\",\n \"fm\",\n \"691\"\n ],\n [\n \"Moldova (Republica Moldova)\",\n \"md\",\n \"373\"\n ],\n [\n \"Monaco\",\n \"mc\",\n \"377\"\n ],\n [\n \"Mongolia (Монгол)\",\n \"mn\",\n \"976\"\n ],\n [\n \"Montenegro (Crna Gora)\",\n \"me\",\n \"382\"\n ],\n [\n \"Montserrat\",\n \"ms\",\n \"1\",\n 16,\n [\"664\"]\n ],\n [\n \"Morocco (‫المغرب‬‎)\",\n \"ma\",\n \"212\",\n 0\n ],\n [\n \"Mozambique (Moçambique)\",\n \"mz\",\n \"258\"\n ],\n [\n \"Myanmar (Burma) (မြန်မာ)\",\n \"mm\",\n \"95\"\n ],\n [\n \"Namibia (Namibië)\",\n \"na\",\n \"264\"\n ],\n [\n \"Nauru\",\n \"nr\",\n \"674\"\n ],\n [\n \"Nepal (नेपाल)\",\n \"np\",\n \"977\"\n ],\n [\n \"Netherlands (Nederland)\",\n \"nl\",\n \"31\"\n ],\n [\n \"New Caledonia (Nouvelle-Calédonie)\",\n \"nc\",\n \"687\"\n ],\n [\n \"New Zealand\",\n \"nz\",\n \"64\"\n ],\n [\n \"Nicaragua\",\n \"ni\",\n \"505\"\n ],\n [\n \"Niger (Nijar)\",\n \"ne\",\n \"227\"\n ],\n [\n \"Nigeria\",\n \"ng\",\n \"234\"\n ],\n [\n \"Niue\",\n \"nu\",\n \"683\"\n ],\n [\n \"Norfolk Island\",\n \"nf\",\n \"672\"\n ],\n [\n \"North Korea (조선 민주주의 인민 공화국)\",\n \"kp\",\n \"850\"\n ],\n [\n \"Northern Mariana Islands\",\n \"mp\",\n \"1\",\n 17,\n [\"670\"]\n ],\n [\n \"Norway (Norge)\",\n \"no\",\n \"47\",\n 0\n ],\n [\n \"Oman (‫عُمان‬‎)\",\n \"om\",\n \"968\"\n ],\n [\n \"Pakistan (‫پاکستان‬‎)\",\n \"pk\",\n \"92\"\n ],\n [\n \"Palau\",\n \"pw\",\n \"680\"\n ],\n [\n \"Palestine (‫فلسطين‬‎)\",\n \"ps\",\n \"970\"\n ],\n [\n \"Panama (Panamá)\",\n \"pa\",\n \"507\"\n ],\n [\n \"Papua New Guinea\",\n \"pg\",\n \"675\"\n ],\n [\n \"Paraguay\",\n \"py\",\n \"595\"\n ],\n [\n \"Peru (Perú)\",\n \"pe\",\n \"51\"\n ],\n [\n \"Philippines\",\n \"ph\",\n \"63\"\n ],\n [\n \"Poland (Polska)\",\n \"pl\",\n \"48\"\n ],\n [\n \"Portugal\",\n \"pt\",\n \"351\"\n ],\n [\n \"Puerto Rico\",\n \"pr\",\n \"1\",\n 3,\n [\"787\", \"939\"]\n ],\n [\n \"Qatar (‫قطر‬‎)\",\n \"qa\",\n \"974\"\n ],\n [\n \"Réunion (La Réunion)\",\n \"re\",\n \"262\",\n 0\n ],\n [\n \"Romania (România)\",\n \"ro\",\n \"40\"\n ],\n [\n \"Russia (Россия)\",\n \"ru\",\n \"7\",\n 0\n ],\n [\n \"Rwanda\",\n \"rw\",\n \"250\"\n ],\n [\n \"Saint Barthélemy\",\n \"bl\",\n \"590\",\n 1\n ],\n [\n \"Saint Helena\",\n \"sh\",\n \"290\"\n ],\n [\n \"Saint Kitts and Nevis\",\n \"kn\",\n \"1\",\n 18,\n [\"869\"]\n ],\n [\n \"Saint Lucia\",\n \"lc\",\n \"1\",\n 19,\n [\"758\"]\n ],\n [\n \"Saint Martin (Saint-Martin (partie française))\",\n \"mf\",\n \"590\",\n 2\n ],\n [\n \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\",\n \"pm\",\n \"508\"\n ],\n [\n \"Saint Vincent and the Grenadines\",\n \"vc\",\n \"1\",\n 20,\n [\"784\"]\n ],\n [\n \"Samoa\",\n \"ws\",\n \"685\"\n ],\n [\n \"San Marino\",\n \"sm\",\n \"378\"\n ],\n [\n \"São Tomé and Príncipe (São Tomé e Príncipe)\",\n \"st\",\n \"239\"\n ],\n [\n \"Saudi Arabia (‫المملكة العربية السعودية‬‎)\",\n \"sa\",\n \"966\"\n ],\n [\n \"Senegal (Sénégal)\",\n \"sn\",\n \"221\"\n ],\n [\n \"Serbia (Србија)\",\n \"rs\",\n \"381\"\n ],\n [\n \"Seychelles\",\n \"sc\",\n \"248\"\n ],\n [\n \"Sierra Leone\",\n \"sl\",\n \"232\"\n ],\n [\n \"Singapore\",\n \"sg\",\n \"65\"\n ],\n [\n \"Sint Maarten\",\n \"sx\",\n \"1\",\n 21,\n [\"721\"]\n ],\n [\n \"Slovakia (Slovensko)\",\n \"sk\",\n \"421\"\n ],\n [\n \"Slovenia (Slovenija)\",\n \"si\",\n \"386\"\n ],\n [\n \"Solomon Islands\",\n \"sb\",\n \"677\"\n ],\n [\n \"Somalia (Soomaaliya)\",\n \"so\",\n \"252\"\n ],\n [\n \"South Africa\",\n \"za\",\n \"27\"\n ],\n [\n \"South Korea (대한민국)\",\n \"kr\",\n \"82\"\n ],\n [\n \"South Sudan (‫جنوب السودان‬‎)\",\n \"ss\",\n \"211\"\n ],\n [\n \"Spain (España)\",\n \"es\",\n \"34\"\n ],\n [\n \"Sri Lanka (ශ්‍රී ලංකාව)\",\n \"lk\",\n \"94\"\n ],\n [\n \"Sudan (‫السودان‬‎)\",\n \"sd\",\n \"249\"\n ],\n [\n \"Suriname\",\n \"sr\",\n \"597\"\n ],\n [\n \"Svalbard and Jan Mayen\",\n \"sj\",\n \"47\",\n 1,\n [\"79\"]\n ],\n [\n \"Swaziland\",\n \"sz\",\n \"268\"\n ],\n [\n \"Sweden (Sverige)\",\n \"se\",\n \"46\"\n ],\n [\n \"Switzerland (Schweiz)\",\n \"ch\",\n \"41\"\n ],\n [\n \"Syria (‫سوريا‬‎)\",\n \"sy\",\n \"963\"\n ],\n [\n \"Taiwan (台灣)\",\n \"tw\",\n \"886\"\n ],\n [\n \"Tajikistan\",\n \"tj\",\n \"992\"\n ],\n [\n \"Tanzania\",\n \"tz\",\n \"255\"\n ],\n [\n \"Thailand (ไทย)\",\n \"th\",\n \"66\"\n ],\n [\n \"Timor-Leste\",\n \"tl\",\n \"670\"\n ],\n [\n \"Togo\",\n \"tg\",\n \"228\"\n ],\n [\n \"Tokelau\",\n \"tk\",\n \"690\"\n ],\n [\n \"Tonga\",\n \"to\",\n \"676\"\n ],\n [\n \"Trinidad and Tobago\",\n \"tt\",\n \"1\",\n 22,\n [\"868\"]\n ],\n [\n \"Tunisia (‫تونس‬‎)\",\n \"tn\",\n \"216\"\n ],\n [\n \"Turkey (Türkiye)\",\n \"tr\",\n \"90\"\n ],\n [\n \"Turkmenistan\",\n \"tm\",\n \"993\"\n ],\n [\n \"Turks and Caicos Islands\",\n \"tc\",\n \"1\",\n 23,\n [\"649\"]\n ],\n [\n \"Tuvalu\",\n \"tv\",\n \"688\"\n ],\n [\n \"U.S. Virgin Islands\",\n \"vi\",\n \"1\",\n 24,\n [\"340\"]\n ],\n [\n \"Uganda\",\n \"ug\",\n \"256\"\n ],\n [\n \"Ukraine (Україна)\",\n \"ua\",\n \"380\"\n ],\n [\n \"United Arab Emirates (‫الإمارات العربية المتحدة‬‎)\",\n \"ae\",\n \"971\"\n ],\n [\n \"United Kingdom\",\n \"gb\",\n \"44\",\n 0\n ],\n [\n \"United States\",\n \"us\",\n \"1\",\n 0\n ],\n [\n \"Uruguay\",\n \"uy\",\n \"598\"\n ],\n [\n \"Uzbekistan (Oʻzbekiston)\",\n \"uz\",\n \"998\"\n ],\n [\n \"Vanuatu\",\n \"vu\",\n \"678\"\n ],\n [\n \"Vatican City (Città del Vaticano)\",\n \"va\",\n \"39\",\n 1,\n [\"06698\"]\n ],\n [\n \"Venezuela\",\n \"ve\",\n \"58\"\n ],\n [\n \"Vietnam (Việt Nam)\",\n \"vn\",\n \"84\"\n ],\n [\n \"Wallis and Futuna (Wallis-et-Futuna)\",\n \"wf\",\n \"681\"\n ],\n [\n \"Western Sahara (‫الصحراء الغربية‬‎)\",\n \"eh\",\n \"212\",\n 1,\n [\"5288\", \"5289\"]\n ],\n [\n \"Yemen (‫اليمن‬‎)\",\n \"ye\",\n \"967\"\n ],\n [\n \"Zambia\",\n \"zm\",\n \"260\"\n ],\n [\n \"Zimbabwe\",\n \"zw\",\n \"263\"\n ],\n [\n \"Åland Islands\",\n \"ax\",\n \"358\",\n 1,\n [\"18\"]\n ]\n];\n\n// loop over all of the countries above, restructuring the data to be objects with named keys\n\nexport function getCountryISO2() {\n let countries: { name: string; iso2: string; dialCode: string; priority: number; areaCodes: string[] | null, mask: string | string[] }[] = [];\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i];\n // Garante que o array tenha pelo menos 3 elementos\n const safeCountry: [string, string, string, number?, string[]?] = [\n c[0] as string,\n c[1] as string,\n c[2] as string,\n c[3] as number || 0,\n c[4] as string[] || null\n ];\n countries[i] = {\n name: c[0] as string,\n iso2: c[1] as string,\n dialCode: c[2] as string,\n priority: c[3] as number || 0,\n areaCodes: c[4] as string[] || null,\n mask: applyPhoneMask(safeCountry)\n };\n }\n return countries;\n}\n\nfunction applyPhoneMask(country: [string, string, string, number?, string[]?]) {\n const countryCode = country[2];\n const areaCodes = country[4] || [countryCode];\n const masks = areaCodes.map((areaCode: string) => {\n\n if (countryCode === \"1\") {\n // North American Numbering Plan (NANP)\n return `000 000 0000`;\n } else if (countryCode === \"44\" && areaCode.length === 4) {\n // UK\n return `000 0000 0000`;\n } else if (countryCode === \"55\") {\n // Brazil\n return `00 0000 0000`;\n } else {\n // General international format\n return `000 0000 0000`;\n }\n });\n return masks;\n}\n\n\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\nexport type InputTransformFn = (value: unknown) => string | number;\n\nexport type OutputTransformFn = (value: string | number | undefined | null) => unknown;\n\nexport type MatchaMaskConfig = {\n suffix: string;\n prefix: string;\n thousandSeparator: string;\n decimalMarker: '.' | ',' | ['.', ','];\n clearIfNotMatch: boolean;\n showMaskTyped: boolean;\n placeHolderCharacter: string;\n shownMaskExpression: string;\n specialCharacters: string[] | readonly string[];\n dropSpecialCharacters: boolean | string[] | readonly string[];\n hiddenInput: boolean;\n validation: boolean;\n instantPrefix: boolean;\n separatorLimit: string;\n apm: boolean;\n allowNegativeNumbers: boolean;\n leadZeroDateTime: boolean;\n leadZero: boolean;\n triggerOnMaskChange: boolean;\n keepCharacterPositions: boolean;\n currencyMode: boolean; // Modo moeda: dígitos entram pela direita (1 → 0,01, 12 → 0,12, 123 → 1,23)\n inputTransformFn: InputTransformFn;\n outputTransformFn: OutputTransformFn;\n maskFilled: EventEmitter<void>;\n patterns: Record<\n string,\n {\n pattern: RegExp;\n optional?: boolean;\n symbol?: string;\n }\n >;\n};\n\nexport type MatchaMaskOptions = Partial<MatchaMaskConfig>;\nexport const MATCHA_MASK_CONFIG = new InjectionToken<MatchaMaskConfig>('matcha-mask config');\nexport const NEW_CONFIG = new InjectionToken<MatchaMaskConfig>('new matcha-mask config');\nexport const INITIAL_CONFIG = new InjectionToken<MatchaMaskConfig>('initial matcha-mask config');\n\nexport const initialConfig: MatchaMaskConfig = {\n suffix: '',\n prefix: '',\n thousandSeparator: ' ',\n decimalMarker: ['.', ','],\n clearIfNotMatch: false,\n showMaskTyped: false,\n instantPrefix: false,\n placeHolderCharacter: '_',\n dropSpecialCharacters: true,\n hiddenInput: false,\n shownMaskExpression: '',\n separatorLimit: '',\n allowNegativeNumbers: false,\n validation: true,\n specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '\"', \"'\"],\n leadZeroDateTime: false,\n apm: false,\n leadZero: false,\n keepCharacterPositions: false,\n triggerOnMaskChange: false,\n currencyMode: false,\n inputTransformFn: (value: unknown) => value as string | number,\n outputTransformFn: (value: string | number | undefined | null) => value,\n maskFilled: new EventEmitter<void>(),\n patterns: {\n '0': {\n pattern: new RegExp('\\\\d'),\n },\n '9': {\n pattern: new RegExp('\\\\d'),\n optional: true,\n },\n X: {\n pattern: new RegExp('\\\\d'),\n symbol: '*',\n },\n A: {\n pattern: new RegExp('[a-zA-Z0-9]'),\n },\n S: {\n pattern: new RegExp('[a-zA-Z]'),\n },\n U: {\n pattern: new RegExp('[A-Z]'),\n },\n L: {\n pattern: new RegExp('[a-z]'),\n },\n d: {\n pattern: new RegExp('\\\\d'),\n },\n m: {\n pattern: new RegExp('\\\\d'),\n },\n M: {\n pattern: new RegExp('\\\\d'),\n },\n H: {\n pattern: new RegExp('\\\\d'),\n },\n h: {\n pattern: new RegExp('\\\\d'),\n },\n s: {\n pattern: new RegExp('\\\\d'),\n },\n },\n};\n\nexport const timeMasks: string[] = [\n MaskExpression.HOURS_MINUTES_SECONDS,\n MaskExpression.HOURS_MINUTES,\n MaskExpression.MINUTES_SECONDS,\n];\n\nexport const withoutValidation: string[] = [\n MaskExpression.PERCENT,\n MaskExpression.HOURS_HOUR,\n MaskExpression.SECONDS,\n MaskExpression.MINUTES,\n MaskExpression.SEPARATOR,\n MaskExpression.DAYS_MONTHS_YEARS,\n MaskExpression.DAYS_MONTHS,\n MaskExpression.DAYS,\n MaskExpression.MONTHS,\n];\n","import { inject, Injectable } from '@angular/core';\nimport { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Injectable()\nexport class MatchaMaskApplierService {\n protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n public dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] =\n this._config.dropSpecialCharacters;\n\n public hiddenInput: MatchaMaskConfig['hiddenInput'] = this._config.hiddenInput;\n\n public clearIfNotMatch: MatchaMaskConfig['clearIfNotMatch'] = this._config.clearIfNotMatch;\n\n public specialCharacters: MatchaMaskConfig['specialCharacters'] = this._config.specialCharacters;\n\n public patterns: MatchaMaskConfig['patterns'] = this._config.patterns;\n\n public prefix: MatchaMaskConfig['prefix'] = this._config.prefix || '';\n\n public suffix: MatchaMaskConfig['suffix'] = this._config.suffix || '';\n\n public thousandSeparator: MatchaMaskConfig['thousandSeparator'] = this._config.thousandSeparator || '';\n\n public decimalMarker: MatchaMaskConfig['decimalMarker'] = this._config.decimalMarker || '';\n\n public customPattern!: MatchaMaskConfig['patterns'];\n\n public showMaskTyped: MatchaMaskConfig['showMaskTyped'] = this._config.showMaskTyped;\n\n public placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] =\n this._config.placeHolderCharacter;\n\n public validation: MatchaMaskConfig['validation'] = this._config.validation;\n\n public separatorLimit: MatchaMaskConfig['separatorLimit'] = this._config.separatorLimit;\n\n public allowNegativeNumbers: MatchaMaskConfig['allowNegativeNumbers'] =\n this._config.allowNegativeNumbers;\n\n public leadZeroDateTime: MatchaMaskConfig['leadZeroDateTime'] = this._config.leadZeroDateTime;\n\n public leadZero: MatchaMaskConfig['leadZero'] = this._config.leadZero;\n\n public apm: MatchaMaskConfig['apm'] = this._config.apm;\n\n public inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null =\n this._config.inputTransformFn;\n\n public outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null =\n this._config.outputTransformFn;\n\n public keepCharacterPositions: MatchaMaskConfig['keepCharacterPositions'] =\n this._config.keepCharacterPositions;\n\n public instantPrefix: MatchaMaskConfig['instantPrefix'] = this._config.instantPrefix;\n\n public triggerOnMaskChange: MatchaMaskConfig['triggerOnMaskChange'] =\n this._config.triggerOnMaskChange;\n\n public currencyMode: MatchaMaskConfig['currencyMode'] = this._config.currencyMode;\n\n private _shift = new Set<number>();\n\n public plusOnePosition = false;\n\n public maskExpression = '';\n\n public actualValue = '';\n\n public showKeepCharacterExp = '';\n\n public shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] =\n this._config.shownMaskExpression;\n\n public deletedSpecialCharacter = false;\n\n public ipError?: boolean;\n\n public cpfCnpjError?: boolean;\n\n public applyMask(\n inputValue: string | object | boolean | null | undefined,\n maskExpression: string,\n position = 0,\n justPasted = false,\n backspaced = false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): string {\n if (!maskExpression || typeof inputValue !== 'string') {\n return MaskExpression.EMPTY_STRING;\n }\n let cursor = 0;\n let result = '';\n let multi = false;\n let backspaceShift = false;\n let shift = 1;\n let stepBack = false;\n let processedValue = inputValue;\n let processedPosition = position;\n\n if (processedValue.slice(0, this.prefix.length) === this.prefix) {\n processedValue = processedValue.slice(this.prefix.length, processedValue.length);\n }\n if (!!this.suffix && processedValue.length > 0) {\n processedValue = this.checkAndRemoveSuffix(processedValue);\n }\n if (processedValue === '(' && this.prefix) {\n processedValue = '';\n }\n const inputArray: string[] = processedValue.toString().split(MaskExpression.EMPTY_STRING);\n if (\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\n ) {\n result += processedValue.slice(cursor, cursor + 1);\n }\n if (maskExpression === MaskExpression.IP) {\n const valuesIP = processedValue.split(MaskExpression.DOT);\n this.ipError = this._validIP(valuesIP);\n\n // eslint-disable-next-line no-param-reassign\n maskExpression = '099.099.099.099';\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < processedValue.length; i++) {\n if (processedValue[i]?.match('\\\\d')) {\n arr.push(processedValue[i] ?? MaskExpression.EMPTY_STRING);\n }\n }\n if (maskExpression === MaskExpression.CPF_CNPJ) {\n this.cpfCnpjError = arr.length !== 11 && arr.length !== 14;\n if (arr.length > 11) {\n // eslint-disable-next-line no-param-reassign\n maskExpression = '00.000.000/0000-00';\n } else {\n // eslint-disable-next-line no-param-reassign\n maskExpression = '000.000.000-00';\n }\n }\n if (maskExpression.startsWith(MaskExpression.PERCENT)) {\n if (\n processedValue.match('[a-z]|[A-Z]') ||\n // eslint-disable-next-line no-useless-escape\n (processedValue.match(/[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,\\/.]/) && !backspaced)\n ) {\n processedValue = this._stripToDecimal(processedValue);\n const precision: number = this.getPrecision(maskExpression);\n\n processedValue = this.checkInputPrecision(\n processedValue,\n precision,\n this.decimalMarker\n );\n }\n const decimalMarker =\n typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\n if (\n processedValue.indexOf(decimalMarker) > 0 &&\n !this.percentage(processedValue.substring(0, processedValue.indexOf(decimalMarker)))\n ) {\n let base: string = processedValue.substring(\n 0,\n processedValue.indexOf(decimalMarker) - 1\n );\n if (\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS &&\n !backspaced\n ) {\n base = processedValue.substring(0, processedValue.indexOf(decimalMarker));\n }\n\n processedValue = `${base}${processedValue.substring(\n processedValue.indexOf(decimalMarker),\n processedValue.length\n )}`;\n }\n let value = '';\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\n ? (value = `${MaskExpression.MINUS}${processedValue.slice(cursor + 1, cursor + processedValue.length)}`)\n : (value = processedValue);\n if (this.percentage(value)) {\n result = this._splitPercentZero(processedValue);\n } else {\n result = this._splitPercentZero(\n processedValue.substring(0, processedValue.length - 1)\n );\n }\n } else if (maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n if (\n processedValue.match('[wа-яА-Я]') ||\n processedValue.match('[ЁёА-я]') ||\n processedValue.match('[a-z]|[A-Z]') ||\n processedValue.match(/[-@#!$%\\\\^&*()_£¬'+|~=`{}\\]:\";<>.?/]/) ||\n processedValue.match('[^A-Za-z0-9,]')\n ) {\n processedValue = this._stripToDecimal(processedValue);\n }\n\n const precision: number = this.getPrecision(maskExpression);\n let decimalMarker = this.decimalMarker;\n\n if (Array.isArray(this.decimalMarker)) {\n if (\n this.actualValue.includes(this.decimalMarker[0]) ||\n this.actualValue.includes(this.decimalMarker[1])\n ) {\n decimalMarker = this.actualValue.includes(this.decimalMarker[0])\n ? this.decimalMarker[0]\n : this.decimalMarker[1];\n } else {\n decimalMarker = this.decimalMarker.find(\n (dm) => dm !== this.thousandSeparator\n ) as '.' | ',';\n }\n }\n\n // Modo moeda: dígitos entram pela direita (ex: 1 → 0,01, 12 → 0,12, 123 → 1,23)\n if (this.currencyMode && precision > 0) {\n // Extrair apenas dígitos e sinal negativo\n const hasMinus = processedValue.startsWith(MaskExpression.MINUS) ||\n (this.allowNegativeNumbers && processedValue.includes(MaskExpression.MINUS));\n const digitsOnly = processedValue.replace(/[^\\d]/g, '');\n\n if (digitsOnly.length === 0) {\n result = MaskExpression.EMPTY_STRING;\n } else {\n // Remover zeros à esquerda desnecessários\n const cleanDigits = digitsOnly.replace(/^0+/, '') || '0';\n\n let formattedValue: string;\n if (cleanDigits.length <= precision) {\n // Menos ou igual dígitos que a precisão: 0,XX\n const paddedDecimal = cleanDigits.padStart(precision, '0');\n formattedValue = '0' + (decimalMarker as string) + paddedDecimal;\n } else {\n // Mais dígitos que a precisão: separar inteiro e decimal\n const integerPart = cleanDigits.slice(0, -precision);\n const decimalPart = cleanDigits.slice(-precision);\n\n // Aplicar separador de milhares na parte inteira\n let formattedInteger = integerPart;\n const rgx = /(\\d+)(\\d{3})/;\n while (this.thousandSeparator && rgx.test(formattedInteger)) {\n formattedInteger = formattedInteger.replace(rgx, '$1' + this.thousandSeparator + '$2');\n }\n\n formattedValue = formattedInteger + (decimalMarker as string) + decimalPart;\n }\n\n result = (hasMinus ? MaskExpression.MINUS : '') + formattedValue;\n }\n\n // Mover o cursor para o final\n cb(result.length, result.length);\n\n // Pular toda a lógica de formatação normal e ir direto para o retorno\n // O result já está formatado corretamente para exibição\n // O formControlResult (no service) vai processar e remover prefixo/sufixo\n let res = `${this.prefix}${result}${this.suffix}`;\n if (result.length === 0) {\n res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\n }\n return res;\n }\n\n if (backspaced) {\n const { decimalMarkerIndex, nonZeroIndex } = this._findFirstNonZeroAndDecimalIndex(\n processedValue,\n decimalMarker as '.' | ','\n );\n const zeroIndexMinus = processedValue[0] === MaskExpression.MINUS;\n const zeroIndexNumberZero = processedValue[0] === MaskExpression.NUMBER_ZERO;\n const zeroIndexDecimalMarker = processedValue[0] === decimalMarker;\n const firstIndexDecimalMarker = processedValue[1] === decimalMarker;\n\n if (\n (zeroIndexDecimalMarker && !nonZeroIndex) ||\n (zeroIndexMinus && firstIndexDecimalMarker && !nonZeroIndex) ||\n (zeroIndexNumberZero && !decimalMarkerIndex && !nonZeroIndex)\n ) {\n processedValue = MaskExpression.NUMBER_ZERO;\n }\n\n if (\n decimalMarkerIndex &&\n nonZeroIndex &&\n zeroIndexMinus &&\n processedPosition === 1\n ) {\n if (decimalMarkerIndex < nonZeroIndex || decimalMarkerIndex > nonZeroIndex) {\n processedValue = MaskExpression.MINUS + processedValue.slice(nonZeroIndex);\n }\n }\n\n if (!decimalMarkerIndex && nonZeroIndex && processedValue.length > nonZeroIndex) {\n processedValue = zeroIndexMinus\n ? MaskExpression.MINUS + processedValue.slice(nonZeroIndex)\n : processedValue.slice(nonZeroIndex);\n }\n\n if (decimalMarkerIndex && nonZeroIndex && processedPosition === 0) {\n if (decimalMarkerIndex < nonZeroIndex) {\n processedValue = processedValue.slice(decimalMarkerIndex - 1);\n }\n if (decimalMarkerIndex > nonZeroIndex) {\n processedValue = processedValue.slice(nonZeroIndex);\n }\n }\n }\n\n if (precision === 0) {\n processedValue = this.allowNegativeNumbers\n ? processedValue.length > 2 &&\n processedValue[0] === MaskExpression.MINUS &&\n processedValue[1] === MaskExpression.NUMBER_ZERO &&\n processedValue[2] !== this.thousandSeparator &&\n processedValue[2] !== MaskExpression.COMMA &&\n processedValue[2] !== MaskExpression.DOT\n ? '-' + processedValue.slice(2, processedValue.length)\n : processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue.length > 1 &&\n processedValue[1] !== this.thousandSeparator &&\n processedValue[1] !== MaskExpression.COMMA &&\n processedValue[1] !== MaskExpression.DOT\n ? processedValue.slice(1, processedValue.length)\n : processedValue\n : processedValue.length > 1 &&\n processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue[1] !== this.thousandSeparator &&\n processedValue[1] !== MaskExpression.COMMA &&\n processedValue[1] !== MaskExpression.DOT\n ? processedValue.slice(1, processedValue.length)\n : processedValue;\n } else {\n if (\n processedValue[0] === decimalMarker &&\n processedValue.length > 1 &&\n !backspaced\n ) {\n processedValue =\n MaskExpression.NUMBER_ZERO +\n processedValue.slice(0, processedValue.length + 1);\n this.plusOnePosition = true;\n }\n if (\n processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue[1] !== decimalMarker &&\n processedValue[1] !== this.thousandSeparator &&\n !backspaced\n ) {\n processedValue =\n processedValue.length > 1\n ? processedValue.slice(0, 1) +\n decimalMarker +\n processedValue.slice(1, processedValue.length + 1)\n : processedValue;\n this.plusOnePosition = true;\n }\n if (\n this.allowNegativeNumbers &&\n !backspaced &&\n processedValue[0] === MaskExpression.MINUS &&\n (processedValue[1] === decimalMarker ||\n processedValue[1] === MaskExpression.NUMBER_ZERO)\n ) {\n processedValue =\n processedValue[1] === decimalMarker && processedValue.length > 2\n ? processedValue.slice(0, 1) +\n MaskExpression.NUMBER_ZERO +\n processedValue.slice(1, processedValue.length)\n : processedValue[1] === MaskExpression.NUMBER_ZERO &&\n processedValue.length > 2 &&\n processedValue[2] !== decimalMarker\n ? processedValue.slice(0, 2) +\n decimalMarker +\n processedValue.slice(2, processedValue.length)\n : processedValue;\n this.plusOnePosition = true;\n }\n }\n\n // TODO: we had different rexexps here for the different cases... but tests dont seam to bother - check this\n // separator: no COMMA, dot-sep: no SPACE, COMMA OK, comma-sep: no SPACE, COMMA OK\n\n const thousandSeparatorCharEscaped: string = this._charToRegExpExpression(\n this.thousandSeparator\n );\n let invalidChars: string = '@#!$%^&*()_+|~=`{}\\\\[\\\\]:\\\\s,\\\\.\";<>?\\\\/'.replace(\n thousandSeparatorCharEscaped,\n ''\n );\n //.replace(decimalMarkerEscaped, '');\n if (Array.isArray(this.decimalMarker)) {\n for (const marker of this.decimalMarker) {\n invalidChars = invalidChars.replace(\n this._charToRegExpExpression(marker),\n MaskExpression.EMPTY_STRING\n );\n }\n } else {\n invalidChars = invalidChars.replace(\n this._charToRegExpExpression(this.decimalMarker),\n ''\n );\n }\n\n const invalidCharRegexp = new RegExp('[' + invalidChars + ']');\n if (processedValue.match(invalidCharRegexp)) {\n processedValue = processedValue.substring(0, processedValue.length - 1);\n }\n\n processedValue = this.checkInputPrecision(\n processedValue,\n precision,\n this.decimalMarker\n );\n const strForSep: string = processedValue.replace(\n new RegExp(thousandSeparatorCharEscaped, 'g'),\n ''\n );\n\n result = this._formatWithSeparators(\n strForSep,\n this.thousandSeparator,\n this.decimalMarker,\n precision\n );\n\n const commaShift: number =\n result.indexOf(MaskExpression.COMMA) - processedValue.indexOf(MaskExpression.COMMA);\n const shiftStep: number = result.length - processedValue.length;\n const backspacedDecimalMarkerWithSeparatorLimit =\n backspaced && result.length < inputValue.length && this.separatorLimit;\n\n if (\n (result[processedPosition - 1] === this.thousandSeparator ||\n result[processedPosition - this.prefix.length]) &&\n this.prefix &&\n backspaced\n ) {\n processedPosition = processedPosition - 1;\n } else if (\n (shiftStep > 0 && result[processedPosition] !== this.thousandSeparator) ||\n backspacedDecimalMarkerWithSeparatorLimit\n ) {\n backspaceShift = true;\n let _shift = 0;\n do {\n this._shift.add(processedPosition + _shift);\n _shift++;\n } while (_shift < shiftStep);\n } else if (\n result[processedPosition - 1] === this.thousandSeparator ||\n shiftStep === -4 ||\n shiftStep === -3 ||\n result[processedPosition] === this.thousandSeparator\n ) {\n this._shift.clear();\n this._shift.add(processedPosition - 1);\n } else if (\n (commaShift !== 0 &&\n processedPosition > 0 &&\n !(\n result.indexOf(MaskExpression.COMMA) >= processedPosition &&\n processedPosition > 3\n )) ||\n (!(\n result.indexOf(MaskExpression.DOT) >= processedPosition && processedPosition > 3\n ) &&\n shiftStep <= 0)\n ) {\n this._shift.clear();\n backspaceShift = true;\n shift = shiftStep;\n\n processedPosition += shiftStep;\n this._shift.add(processedPosition);\n } else {\n this._shift.clear();\n }\n } else {\n for (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let i = 0, inputSymbol: string = inputArray[0]!;\n i < inputArray.length;\n i++, inputSymbol = inputArray[i] ?? MaskExpression.EMPTY_STRING\n ) {\n if (cursor === maskExpression.length) {\n break;\n }\n\n const symbolStarInPattern: boolean = MaskExpression.SYMBOL_STAR in this.patterns;\n if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) &&\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION\n ) {\n result += inputSymbol;\n cursor += 2;\n } else if (\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n multi &&\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n result += inputSymbol;\n cursor += 3;\n multi = false;\n } else if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) &&\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n !symbolStarInPattern\n ) {\n result += inputSymbol;\n multi = true;\n } else if (\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n result += inputSymbol;\n cursor += 3;\n } else if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n if (maskExpression[cursor] === MaskExpression.HOURS) {\n if (this.apm ? Number(inputSymbol) > 9 : Number(inputSymbol) > 2) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n if (maskExpression[cursor] === MaskExpression.HOUR) {\n if (\n this.apm\n ? (result.length === 1 && Number(result) > 1) ||\n (result === '1' && Number(inputSymbol) > 2) ||\n (processedValue.slice(cursor - 1, cursor).length === 1 &&\n Number(processedValue.slice(cursor - 1, cursor)) > 2) ||\n (processedValue.slice(cursor - 1, cursor) === '1' &&\n Number(inputSymbol) > 2)\n : (result === '2' && Number(inputSymbol) > 3) ||\n ((result.slice(cursor - 2, cursor) === '2' ||\n result.slice(cursor - 3, cursor) === '2' ||\n result.slice(cursor - 4, cursor) === '2' ||\n result.slice(cursor - 1, cursor) === '2') &&\n Number(inputSymbol) > 3 &&\n cursor > 10)\n ) {\n processedPosition = processedPosition + 1;\n cursor += 1;\n i--;\n continue;\n }\n }\n if (\n maskExpression[cursor] === MaskExpression.MINUTE ||\n maskExpression[cursor] === MaskExpression.SECOND\n ) {\n if (Number(inputSymbol) > 5) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n const daysCount = 31;\n const inputValueCursor = processedValue[cursor] as string;\n const inputValueCursorPlusOne = processedValue[cursor + 1] as string;\n const inputValueCursorPlusTwo = processedValue[cursor + 2] as string;\n const inputValueCursorMinusOne = processedValue[cursor - 1] as string;\n const inputValueCursorMinusTwo = processedValue[cursor - 2] as string;\n const inputValueSliceMinusThreeMinusOne = processedValue.slice(\n cursor - 3,\n cursor - 1\n );\n const inputValueSliceMinusOnePlusOne = processedValue.slice(\n cursor - 1,\n cursor + 1\n );\n const inputValueSliceCursorPlusTwo = processedValue.slice(cursor, cursor + 2);\n const inputValueSliceMinusTwoCursor = processedValue.slice(cursor - 2, cursor);\n if (maskExpression[cursor] === MaskExpression.DAY) {\n const maskStartWithMonth =\n maskExpression.slice(0, 2) === MaskExpression.MONTHS;\n const startWithMonthInput: boolean =\n maskExpression.slice(0, 2) === MaskExpression.MONTHS &&\n this.specialCharacters.includes(inputValueCursorMinusTwo);\n if (\n (Number(inputSymbol) > 3 && this.leadZeroDateTime) ||\n (!maskStartWithMonth &&\n (Number(inputValueSliceCursorPlusTwo) > daysCount ||\n Number(inputValueSliceMinusOnePlusOne) > daysCount ||\n this.specialCharacters.includes(inputValueCursorPlusOne))) ||\n (startWithMonthInput\n ? Number(inputValueSliceMinusOnePlusOne) > daysCount ||\n (!this.specialCharacters.includes(inputValueCursor) &&\n this.specialCharacters.includes(inputValueCursorPlusTwo)) ||\n this.specialCharacters.includes(inputValueCursor)\n : Number(inputValueSliceCursorPlusTwo) > daysCount ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n !backspaced))\n ) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n if (maskExpression[cursor] === MaskExpression.MONTH) {\n const monthsCount = 12;\n // mask without day\n const withoutDays: boolean =\n cursor === 0 &&\n (Number(inputSymbol) > 2 ||\n Number(inputValueSliceCursorPlusTwo) > monthsCount ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n !backspaced));\n // day<10 && month<12 for input\n const specialChart = maskExpression.slice(cursor + 2, cursor + 3);\n const day1monthInput: boolean =\n inputValueSliceMinusThreeMinusOne.includes(specialChart) &&\n maskExpression.includes('d0') &&\n ((this.specialCharacters.includes(inputValueCursorMinusTwo) &&\n Number(inputValueSliceMinusOnePlusOne) > monthsCount &&\n !this.specialCharacters.includes(inputValueCursor)) ||\n this.specialCharacters.includes(inputValueCursor));\n // month<12 && day<10 for input\n const day2monthInput: boolean =\n Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n this.specialCharacters.includes(inputValueCursorMinusOne) &&\n (Number(inputValueSliceCursorPlusTwo) > monthsCount ||\n this.specialCharacters.includes(inputValueCursorPlusOne));\n // cursor === 5 && without days\n const day2monthInputDot: boolean =\n (Number(inputValueSliceCursorPlusTwo) > monthsCount && cursor === 5) ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n cursor === 5);\n // // day<10 && month<12 for paste whole data\n const day1monthPaste: boolean =\n Number(inputValueSliceMinusThreeMinusOne) > daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n !this.specialCharacters.includes(\n inputValueSliceMinusTwoCursor as string\n ) &&\n Number(inputValueSliceMinusTwoCursor) > monthsCount &&\n maskExpression.includes('d0');\n // 10<day<31 && month<12 for paste whole data\n const day2monthPaste: boolean =\n Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n !this.specialCharacters.includes(inputValueCursorMinusOne) &&\n Number(inputValueSliceMinusOnePlusOne) > monthsCount;\n if (\n (Number(inputSymbol) > 1 && this.leadZeroDateTime) ||\n withoutDays ||\n day1monthInput ||\n day2monthPaste ||\n day1monthPaste ||\n day2monthInput ||\n (day2monthInputDot && !this.leadZeroDateTime)\n ) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n result += inputSymbol;\n cursor++;\n } else if (\n this.specialCharacters.includes(inputSymbol) &&\n maskExpression[cursor] === inputSymbol\n ) {\n result += inputSymbol;\n cursor++;\n } else if (\n this.specialCharacters.indexOf(\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) !== -1\n ) {\n result += maskExpression[cursor];\n cursor++;\n this._shiftStep(cursor);\n i--;\n } else if (\n maskExpression[cursor] === MaskExpression.NUMBER_NINE &&\n this.showMaskTyped\n ) {\n this._shiftStep(cursor);\n } else if (\n this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING] &&\n this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]?.optional\n ) {\n if (\n !!inputArray[cursor] &&\n maskExpression !== '099.099.099.099' &&\n maskExpression !== '000.000.000-00' &&\n maskExpression !== '00.000.000/0000-00' &&\n !maskExpression.match(/^9+\\.0+$/) &&\n !this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]\n ?.optional\n ) {\n result += inputArray[cursor];\n }\n if (\n maskExpression.includes(\n MaskExpression.NUMBER_NINE + MaskExpression.SYMBOL_STAR\n ) &&\n maskExpression.includes(\n MaskExpression.NUMBER_ZERO + MaskExpression.SYMBOL_STAR\n )\n ) {\n cursor++;\n }\n\n cursor++;\n i--;\n } else if (\n this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n this._findSpecialChar(\n this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n ) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\n this._findSpecialChar(\n this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n ) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.showMaskTyped &&\n this.specialCharacters.indexOf(inputSymbol) < 0 &&\n inputSymbol !== this.placeHolderCharacter &&\n this.placeHolderCharacter.length === 1\n ) {\n stepBack = true;\n }\n }\n }\n if (\n result[processedPosition - 1] &&\n result.length + 1 === maskExpression.length &&\n this.specialCharacters.indexOf(\n maskExpression[maskExpression.length - 1] ?? MaskExpression.EMPTY_STRING\n ) !== -1\n ) {\n result += maskExpression[maskExpression.length - 1];\n }\n let newPosition: number = processedPosition + 1;\n\n while (this._shift.has(newPosition)) {\n shift++;\n newPosition++;\n }\n\n let actualShift: number =\n justPasted && !maskExpression.startsWith(MaskExpression.SEPARATOR)\n ? cursor\n : this._shift.has(processedPosition)\n ? shift\n : 0;\n if (stepBack) {\n actualShift--;\n }\n\n cb(actualShift, backspaceShift);\n if (shift < 0) {\n this._shift.clear();\n }\n let onlySpecial = false;\n if (backspaced) {\n onlySpecial = inputArray.every((char) => this.specialCharacters.includes(char));\n }\n\n let res = `${this.prefix}${onlySpecial ? MaskExpression.EMPTY_STRING : result}${\n this.showMaskTyped ? '' : this.suffix\n }`;\n\n if (result.length === 0) {\n res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\n }\n\n const isSpecialCharacterMaskFirstSymbol =\n processedValue.length === 1 &&\n this.specialCharacters.includes(maskExpression[0] as string) &&\n processedValue !== maskExpression[0];\n\n if (\n !this._checkSymbolMask(processedValue, maskExpression[1] as string) &&\n isSpecialCharacterMaskFirstSymbol\n ) {\n return '';\n }\n\n if (result.includes(MaskExpression.MINUS) && this.prefix && this.allowNegativeNumbers) {\n if (backspaced && result === MaskExpression.MINUS) {\n return '';\n }\n res = `${MaskExpression.MINUS}${this.prefix}${result\n .split(MaskExpression.MINUS)\n .join(MaskExpression.EMPTY_STRING)}${this.suffix}`;\n }\n return res;\n }\n\n public _findDropSpecialChar(inputSymbol: string): undefined | string {\n if (Array.isArray(this.dropSpecialCharacters)) {\n return this.dropSpecialCharacters.find((val: string) => val === inputSymbol);\n }\n return this._findSpecialChar(inputSymbol);\n }\n\n public _findSpecialChar(inputSymbol: string): undefined | string {\n return this.specialCharacters.find((val: string) => val === inputSymbol);\n }\n\n public _checkSymbolMask(inputSymbol: string, maskSymbol: string): boolean {\n this.patterns = this.customPattern ? this.customPattern : this.patterns;\n return (\n (this.patterns?.[maskSymbol]?.pattern &&\n this.patterns?.[maskSymbol]?.pattern.test(inputSymbol)) ??\n false\n );\n }\n\n private _formatWithSeparators = (\n str: string,\n thousandSeparatorChar: string,\n decimalChars: string | string[],\n precision: number\n ) => {\n let x: string[] = [];\n let decimalChar = '';\n\n if (Array.isArray(decimalChars)) {\n const regExp = new RegExp(\n decimalChars.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|')\n );\n x = str.split(regExp);\n decimalChar = str.match(regExp)?.[0] ?? MaskExpression.EMPTY_STRING;\n } else {\n x = str.split(decimalChars);\n decimalChar = decimalChars;\n }\n const decimals: string =\n x.length > 1 ? `${decimalChar}${x[1]}` : MaskExpression.EMPTY_STRING;\n let res: string = x[0] ?? MaskExpression.EMPTY_STRING;\n const separatorLimit: string = this.separatorLimit.replace(\n /\\s/g,\n MaskExpression.EMPTY_STRING\n );\n if (separatorLimit && +separatorLimit) {\n if (res[0] === MaskExpression.MINUS) {\n res = `-${res.slice(1, res.length).slice(0, separatorLimit.length)}`;\n } else {\n res = res.slice(0, separatorLimit.length);\n }\n }\n const rgx = /(\\d+)(\\d{3})/;\n\n while (thousandSeparatorChar && rgx.test(res)) {\n res = res.replace(rgx, '$1' + thousandSeparatorChar + '$2');\n }\n\n if (typeof precision === 'undefined') {\n return res + decimals;\n } else if (precision === 0) {\n return res;\n }\n return res + decimals.substring(0, precision + 1);\n };\n\n private percentage = (str: string): boolean => {\n const sanitizedStr = str.replace(',', '.');\n const value = Number(\n this.allowNegativeNumbers && str.includes(MaskExpression.MINUS)\n ? sanitizedStr.slice(1, str.length)\n : sanitizedStr\n );\n\n return !isNaN(value) && value >= 0 && value <= 100;\n };\n\n public getPrecision = (maskExpression: string): number => {\n const x: string[] = maskExpression.split(MaskExpression.DOT);\n if (x.length > 1) {\n return Number(x[x.length - 1]);\n }\n\n return Infinity;\n };\n\n private checkAndRemoveSuffix = (inputValue: string): string => {\n for (let i = this.suffix?.length - 1; i >= 0; i--) {\n const substr = this.suffix.substring(i, this.suffix?.length);\n if (\n inputValue.includes(substr) &&\n i !== this.suffix?.length - 1 &&\n (i - 1 < 0 ||\n !inputValue.includes(this.suffix.substring(i - 1, this.suffix?.length)))\n ) {\n return inputValue.replace(substr, MaskExpression.EMPTY_STRING);\n }\n }\n return inputValue;\n };\n\n private checkInputPrecision = (\n inputValue: string,\n precision: number,\n decimalMarker: MatchaMaskConfig['decimalMarker']\n ): string => {\n let processedInputValue = inputValue;\n let processedDecimalMarker = decimalMarker;\n\n if (precision < Infinity) {\n // TODO need think about decimalMarker\n if (Array.isArray(processedDecimalMarker)) {\n const marker = processedDecimalMarker.find((dm) => dm !== this.thousandSeparator);\n\n processedDecimalMarker = marker ? marker : processedDecimalMarker[0];\n }\n const precisionRegEx = new RegExp(\n this._charToRegExpExpression(processedDecimalMarker) + `\\\\d{${precision}}.*$`\n );\n const precisionMatch: RegExpMatchArray | null =\n processedInputValue.match(precisionRegEx);\n const precisionMatchLength: number = (precisionMatch && precisionMatch[0]?.length) ?? 0;\n if (precisionMatchLength - 1 > precision) {\n const diff = precisionMatchLength - 1 - precision;\n\n processedInputValue = processedInputValue.substring(\n 0,\n processedInputValue.length - diff\n );\n }\n if (\n precision === 0 &&\n this._compareOrIncludes(\n processedInputValue[processedInputValue.length - 1],\n processedDecimalMarker,\n this.thousandSeparator\n )\n ) {\n processedInputValue = processedInputValue.substring(\n 0,\n processedInputValue.length - 1\n );\n }\n }\n return processedInputValue;\n };\n\n private _stripToDecimal(str: string): string {\n return str\n .split(MaskExpression.EMPTY_STRING)\n .filter((i: string, idx: number) => {\n const isDecimalMarker =\n typeof this.decimalMarker === 'string'\n ? i === this.decimalMarker\n : // TODO (inepipenko) use utility type\n this.decimalMarker.includes(\n i as MaskExpression.COMMA | MaskExpression.DOT\n );\n return (\n i.match('^-?\\\\d') ||\n i === this.thousandSeparator ||\n isDecimalMarker ||\n (i === MaskExpression.MINUS && idx === 0 && this.allowNegativeNumbers)\n );\n })\n .join(MaskExpression.EMPTY_STRING);\n }\n\n private _charToRegExpExpression(char: string): string {\n // if (Array.isArray(char)) {\n // \treturn char.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|');\n // }\n if (char) {\n const charsToEscape = '[\\\\^$.|?*+()';\n return char === ' ' ? '\\\\s' : charsToEscape.indexOf(char) >= 0 ? `\\\\${char}` : char;\n }\n return char;\n }\n\n private _shiftStep(cursor: number) {\n this._shift.add(cursor + this.prefix.length || 0);\n }\n\n protected _compareOrIncludes<T>(value: T, comparedValue: T | T[], excludedValue: T): boolean {\n return Array.isArray(comparedValue)\n ? comparedValue.filter((v) => v !== excludedValue).includes(value)\n : value === comparedValue;\n }\n\n private _validIP(valuesIP: string[]): boolean {\n return !(\n valuesIP.length === 4 &&\n !valuesIP.some((value: string, index: number) => {\n if (valuesIP.length !== index + 1) {\n return value === MaskExpression.EMPTY_STRING || Number(value) > 255;\n }\n return value === MaskExpression.EMPTY_STRING || Number(value.substring(0, 3)) > 255;\n })\n );\n }\n\n private _splitPercentZero(value: string): string {\n if (value === MaskExpression.MINUS && this.allowNegativeNumbers) {\n return value;\n }\n const decimalIndex =\n typeof this.decimalMarker === 'string'\n ? value.indexOf(this.decimalMarker)\n : value.indexOf(MaskExpression.DOT);\n const emptyOrMinus =\n this.allowNegativeNumbers && value.includes(MaskExpression.MINUS) ? '-' : '';\n if (decimalIndex === -1) {\n const parsedValue = parseInt(emptyOrMinus ? value.slice(1, value.length) : value, 10);\n return isNaN(parsedValue)\n ? MaskExpression.EMPTY_STRING\n : `${emptyOrMinus}${parsedValue}`;\n } else {\n const integerPart = parseInt(value.replace('-', '').substring(0, decimalIndex), 10);\n const decimalPart = value.substring(decimalIndex + 1);\n const integerString = isNaN(integerPart) ? '' : integerPart.toString();\n\n const decimal =\n typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\n\n return integerString === MaskExpression.EMPTY_STRING\n ? MaskExpression.EMPTY_STRING\n : `${emptyOrMinus}${integerString}${decimal}${decimalPart}`;\n }\n }\n\n private _findFirstNonZeroAndDecimalIndex(inputString: string, decimalMarker: '.' | ',') {\n let decimalMarkerIndex: number | null = null;\n let nonZeroIndex: number | null = null;\n\n for (let i = 0; i < inputString.length; i++) {\n const char = inputString[i];\n\n if (char === decimalMarker && decimalMarkerIndex === null) {\n decimalMarkerIndex = i;\n }\n\n if (char && char >= '1' && char <= '9' && nonZeroIndex === null) {\n nonZeroIndex = i;\n }\n\n if (decimalMarkerIndex !== null && nonZeroIndex !== null) {\n break;\n }\n }\n\n return {\n decimalMarkerIndex,\n nonZeroIndex,\n };\n }\n}\n","import { ElementRef, inject, Injectable, Renderer2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n\nimport type { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MatchaMaskApplierService } from './matcha-mask-applier.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Injectable()\nexport class MatchaMaskService extends MatchaMaskApplierService {\n public isNumberValue = false;\n public maskIsShown = '';\n public selStart: number | null = null;\n public selEnd: number | null = null;\n public maskChanged = false;\n public maskExpressionArray: string[] = [];\n public previousValue = '';\n public currentValue = '';\n /**\n * Whether we are currently in writeValue function, in this case when applying the mask we don't want to trigger onChange function,\n * since writeValue should be a one way only process of writing the DOM value based on the Angular model value.\n */\n public writingValue = false;\n\n private _emitValue = false;\n private _start!: number;\n private _end!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (_: any) => {};\n\n public readonly _elementRef = inject(ElementRef, { optional: true });\n\n private readonly document = inject(DOCUMENT);\n\n protected override _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n private readonly _renderer = inject(Renderer2, { optional: true });\n\n /**\n * Applies the mask to the input value.\n * @param inputValue The input value to be masked.\n * @param maskExpression The mask expression to apply.\n * @param position The position in the input value.\n * @param justPasted Whether the value was just pasted.\n * @param backspaced Whether the value was backspaced.\n * @param cb Callback function.\n * @returns The masked value.\n */\n public override applyMask(\n inputValue: string | object | boolean | null | undefined,\n maskExpression: string,\n position = 0,\n justPasted = false,\n backspaced = false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): string {\n // Converter automaticamente número, boolean ou object para string (retrocompatível)\n // Isso previne o erro \"indexOf is not a function\" quando números são passados\n let processedInputValue: string;\n if (inputValue === null || inputValue === undefined) {\n processedInputValue = '';\n } else if (typeof inputValue === 'number') {\n processedInputValue = String(inputValue);\n } else if (typeof inputValue === 'boolean') {\n processedInputValue = inputValue ? 'true' : 'false';\n } else if (typeof inputValue === 'object') {\n // Para objetos, tentar converter para string (JSON.stringify ou toString)\n try {\n processedInputValue = JSON.stringify(inputValue);\n } catch {\n processedInputValue = String(inputValue);\n }\n } else {\n processedInputValue = String(inputValue);\n }\n\n // If no mask expression, return the input value or the actual value\n if (!maskExpression) {\n return processedInputValue !== this.actualValue ? this.actualValue : processedInputValue;\n }\n\n // Show mask in input if required\n this.maskIsShown = this.showMaskTyped\n ? this.showMaskInInput()\n : MaskExpression.EMPTY_STRING;\n\n // Handle specific mask expressions\n if (this.maskExpression === MaskExpression.IP && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\n }\n if (this.maskExpression === MaskExpression.CPF_CNPJ && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\n }\n\n // Handle empty input value with mask typed\n if (!processedInputValue && this.showMaskTyped) {\n this.formControlResult(this.prefix);\n return `${this.prefix}${this.maskIsShown}${this.suffix}`;\n }\n\n const getSymbol: string =\n !!processedInputValue && typeof this.selStart === 'number'\n ? (processedInputValue[this.selStart] ?? MaskExpression.EMPTY_STRING)\n : MaskExpression.EMPTY_STRING;\n let newInputValue = '';\n let newPosition = position;\n\n // Handle hidden input or input with asterisk symbol\n if (\n (this.hiddenInput ||\n (processedInputValue && processedInputValue.indexOf(MaskExpression.SYMBOL_STAR) >= 0)) &&\n !this.writingValue\n ) {\n let actualResult: string[] =\n processedInputValue && processedInputValue.length === 1\n ? processedInputValue.split(MaskExpression.EMPTY_STRING)\n : this.actualValue.split(MaskExpression.EMPTY_STRING);\n\n // Handle backspace\n if (backspaced) {\n actualResult = actualResult\n .slice(0, position)\n .concat(actualResult.slice(position + 1));\n }\n\n // Remove mask if showMaskTyped is true\n if (this.showMaskTyped) {\n // eslint-disable-next-line no-param-reassign\n processedInputValue = this.removeMask(processedInputValue);\n actualResult = this.removeMask(actualResult.join('')).split(\n MaskExpression.EMPTY_STRING\n );\n }\n\n // Handle selection start and end\n if (typeof this.selStart === 'object' && typeof this.selEnd === 'object') {\n this.selStart = Number(this.selStart);\n this.selEnd = Number(this.selEnd);\n } else {\n if (processedInputValue !== MaskExpression.EMPTY_STRING && actualResult.length) {\n if (typeof this.selStart === 'number' && typeof this.selEnd === 'number') {\n if (processedInputValue.length > actualResult.length) {\n actualResult.splice(this.selStart, 0, getSymbol);\n } else if (processedInputValue.length < actualResult.length) {\n if (actualResult.length - processedInputValue.length === 1) {\n if (backspaced) {\n actualResult.splice(this.selStart - 1, 1);\n } else {\n actualResult.splice(processedInputValue.length - 1, 1);\n }\n } else {\n actualResult.splice(this.selStart, this.selEnd - this.selStart);\n }\n }\n }\n } else {\n actualResult = [];\n }\n }\n\n // Remove mask if showMaskTyped is true and hiddenInput is false\n if (this.showMaskTyped && !this.hiddenInput) {\n newInputValue = this.removeMask(processedInputValue);\n }\n\n // Handle actual value length\n if (this.actualValue.length) {\n if (actualResult.length < processedInputValue.length) {\n newInputValue = this.shiftTypedSymbols(\n actualResult.join(MaskExpression.EMPTY_STRING)\n );\n } else if (actualResult.length === processedInputValue.length) {\n newInputValue = actualResult.join(MaskExpression.EMPTY_STRING);\n } else {\n newInputValue = processedInputValue;\n }\n } else {\n newInputValue = processedInputValue;\n }\n }\n\n // Handle just pasted input\n if (justPasted && (this.hiddenInput || !this.hiddenInput)) {\n newInputValue = processedInputValue;\n }\n\n // Handle backspace with special characters\n if (\n backspaced &&\n this.specialCharacters.indexOf(\n this.maskExpression[newPosition] ?? MaskExpression.EMPTY_STRING\n ) !== -1 &&\n this.showMaskTyped &&\n !this.prefix\n ) {\n newInputValue = this.currentValue;\n }\n\n // Handle deleted special character\n if (this.deletedSpecialCharacter && newPosition) {\n if (\n this.specialCharacters.includes(\n this.actualValue.slice(newPosition, newPosition + 1)\n )\n ) {\n newPosition = newPosition + 1;\n } else if (\n maskExpression.slice(newPosition - 1, newPosition + 1) !== MaskExpression.MONTHS\n ) {\n newPosition = newPosition - 2;\n }\n\n this.deletedSpecialCharacter = false;\n }\n\n // Remove mask if showMaskTyped is true and placeHolderCharacter length is 1\n if (\n this.showMaskTyped &&\n this.placeHolderCharacter.length === 1 &&\n !this.leadZeroDateTime\n ) {\n newInputValue = this.removeMask(newInputValue);\n }\n\n // Handle mask changed\n if (this.maskChanged) {\n newInputValue = processedInputValue;\n } else {\n newInputValue =\n Boolean(newInputValue) && newInputValue.length ? newInputValue : processedInputValue;\n }\n\n // Handle showMaskTyped and keepCharacterPositions\n if (\n this.showMaskTyped &&\n this.keepCharacterPositions &&\n this.actualValue &&\n !justPasted &&\n !this.writingValue\n ) {\n const value = this.dropSpecialCharacters\n ? this.removeMask(this.actualValue)\n : this.actualValue;\n this.formControlResult(value);\n return this.actualValue\n ? this.actualValue\n : `${this.prefix}${this.maskIsShown}${this.suffix}`;\n }\n\n // Apply the mask using the parent class method\n const result: string = super.applyMask(\n newInputValue,\n maskExpression,\n newPosition,\n justPasted,\n backspaced,\n cb\n );\n\n this.actualValue = this.getActualValue(result);\n\n // handle some separator implications:\n // a.) adjust decimalMarker default (. -> ,) if thousandSeparator is a dot\n if (\n this.thousandSeparator === MaskExpression.DOT &&\n this.decimalMarker === MaskExpression.DOT\n ) {\n this.decimalMarker = MaskExpression.COMMA;\n }\n // b) remove ONLY decimal marker from list of special characters to mask\n // The thousandSeparator should REMAIN in the list to be removed from the final value\n if (\n this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n this.dropSpecialCharacters === true\n ) {\n this.specialCharacters = this.specialCharacters.filter(\n (item: string) =>\n !this._compareOrIncludes(item, this.decimalMarker, null) // Only remove decimalMarker, keep thousandSeparator\n );\n }\n // c) set isNumberValue to true for separator masks to ensure proper number conversion\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n this.isNumberValue = true;\n }\n\n // Update previous and current values\n if (result || result === '') {\n this.previousValue = this.currentValue;\n this.currentValue = result;\n\n this._emitValue =\n this.previousValue !== this.currentValue ||\n (newInputValue !== this.currentValue && this.writingValue) ||\n (this.previousValue === this.currentValue && justPasted);\n }\n\n // Propagate the input value back to the Angular model\n // eslint-disable-next-line no-unused-expressions,@typescript-eslint/no-unused-expressions\n this._emitValue ? this.formControlResult(result) : '';\n\n // Handle hidden input and showMaskTyped\n if (!this.showMaskTyped || (this.showMaskTyped && this.hiddenInput)) {\n if (this.hiddenInput) {\n return `${this.hideInput(result, this.maskExpression)}${this.maskIsShown.slice(result.length)}`;\n }\n return result;\n }\n\n const resLen: number = result.length;\n const prefNmask = `${this.prefix}${this.maskIsShown}${this.suffix}`;\n\n // Handle specific mask expressions\n if (this.maskExpression.includes(MaskExpression.HOURS)) {\n const countSkipedSymbol = this._numberSkipedSymbols(result);\n return `${result}${prefNmask.slice(resLen + countSkipedSymbol)}`;\n } else if (\n this.maskExpression === MaskExpression.IP ||\n this.maskExpression === MaskExpression.CPF_CNPJ\n ) {\n return `${result}${prefNmask}`;\n }\n\n return `${result}${prefNmask.slice(resLen)}`;\n }\n\n // get the number of characters that were shifted\n private _numberSkipedSymbols(value: string): number {\n const regex = /(^|\\D)(\\d\\D)/g;\n let match = regex.exec(value);\n let countSkipedSymbol = 0;\n while (match != null) {\n countSkipedSymbol += 1;\n match = regex.exec(value);\n }\n return countSkipedSymbol;\n }\n\n public applyValueChanges(\n position: number,\n justPasted: boolean,\n backspaced: boolean,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): void {\n const formElement = this._elementRef?.nativeElement;\n if (!formElement) {\n return;\n }\n\n formElement.value = this.applyMask(\n formElement.value,\n this.maskExpression,\n position,\n justPasted,\n backspaced,\n cb\n );\n if (formElement === this._getActiveElement()) {\n return;\n }\n this.clearIfNotMatchFn();\n }\n\n public hideInput(inputValue: string, maskExpression: string): string {\n return inputValue\n .split(MaskExpression.EMPTY_STRING)\n .map((curr: string, index: number) => {\n if (\n this.patterns &&\n this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING] &&\n this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]?.symbol\n ) {\n return this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]\n ?.symbol;\n }\n return curr;\n })\n .join(MaskExpression.EMPTY_STRING);\n }\n\n // this function is not necessary, it checks result against maskExpression\n public getActualValue(res: string): string {\n const compare: string[] = res\n .split(MaskExpression.EMPTY_STRING)\n .filter((symbol: string, i: number) => {\n const maskChar = this.maskExpression[i] ?? MaskExpression.EMPTY_STRING;\n return (\n this._checkSymbolMask(symbol, maskChar) ||\n (this.specialCharacters.includes(maskChar) && symbol === maskChar)\n );\n });\n if (compare.join(MaskExpression.EMPTY_STRING) === res) {\n return compare.join(MaskExpression.EMPTY_STRING);\n }\n return res;\n }\n\n public shiftTypedSymbols(inputValue: string): string {\n let symbolToReplace = '';\n const newInputValue: (string | undefined)[] =\n (inputValue &&\n inputValue\n .split(MaskExpression.EMPTY_STRING)\n .map((currSymbol: string, index: number) => {\n if (\n this.specialCharacters.includes(\n inputValue[index + 1] ?? MaskExpression.EMPTY_STRING\n ) &&\n inputValue[index + 1] !== this.maskExpression[index + 1]\n ) {\n symbolToReplace = currSymbol;\n return inputValue[index + 1];\n }\n if (symbolToReplace.length) {\n const replaceSymbol: string = symbolToReplace;\n symbolToReplace = MaskExpression.EMPTY_STRING;\n return replaceSymbol;\n }\n return currSymbol;\n })) ||\n [];\n return newInputValue.join(MaskExpression.EMPTY_STRING);\n }\n\n /**\n * Convert number value to string\n * 3.1415 -> '3.1415'\n * 1e-7 -> '0.0000001'\n */\n public numberToString(value: number | string): string {\n if (\n (!value && value !== 0) ||\n (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n (this.leadZero || !this.dropSpecialCharacters)) ||\n (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n this.separatorLimit.length > 14 &&\n String(value).length > 14)\n ) {\n return String(value);\n }\n return Number(value)\n .toLocaleString('fullwide', {\n useGrouping: false,\n maximumFractionDigits: 20,\n })\n .replace(`/${MaskExpression.MINUS}/`, MaskExpression.MINUS);\n }\n\n public showMaskInInput(inputVal?: string): string {\n if (this.showMaskTyped && !!this.shownMaskExpression) {\n if (this.maskExpression.length !== this.shownMaskExpression.length) {\n throw new Error('Mask expression must match mask placeholder length');\n } else {\n return this.shownMaskExpression;\n }\n } else if (this.showMaskTyped) {\n if (inputVal) {\n if (this.maskExpression === MaskExpression.IP) {\n return this._checkForIp(inputVal);\n }\n if (this.maskExpression === MaskExpression.CPF_CNPJ) {\n return this._checkForCpfCnpj(inputVal);\n }\n }\n if (this.placeHolderCharacter.length === this.maskExpression.length) {\n return this.placeHolderCharacter;\n }\n return this.maskExpression.replace(/\\w/g, this.placeHolderCharacter);\n }\n return '';\n }\n\n public clearIfNotMatchFn(): void {\n const formElement = this._elementRef?.nativeElement;\n if (!formElement) {\n return;\n }\n if (\n this.clearIfNotMatch &&\n this.prefix.length + this.maskExpression.length + this.suffix.length !==\n formElement.value.replace(this.placeHolderCharacter, MaskExpression.EMPTY_STRING)\n .length\n ) {\n this.formElementProperty = ['value', MaskExpression.EMPTY_STRING];\n this.applyMask('', this.maskExpression);\n }\n }\n\n public set formElementProperty([name, value]: [string, string | boolean]) {\n if (!this._renderer || !this._elementRef) {\n return;\n }\n //[TODO]: andriikamaldinov1 find better solution\n Promise.resolve().then(() =>\n this._renderer?.setProperty(this._elementRef?.nativeElement, name, value)\n );\n }\n\n public checkDropSpecialCharAmount(mask: string): number {\n const chars: string[] = mask\n .split(MaskExpression.EMPTY_STRING)\n .filter((item: string) => this._findDropSpecialChar(item));\n return chars.length;\n }\n\n public removeMask(inputValue: string): string {\n return this._removeMask(\n this._removeSuffix(this._removePrefix(inputValue)),\n this.specialCharacters.concat('_').concat(this.placeHolderCharacter)\n );\n }\n\n private _checkForIp(inputVal: string): string {\n if (inputVal === MaskExpression.HASH) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inputVal.length; i++) {\n const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\n if (!value) {\n continue;\n }\n if (value.match('\\\\d')) {\n arr.push(value);\n }\n }\n if (arr.length <= 3) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 3 && arr.length <= 6) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 6 && arr.length <= 9) {\n return this.placeHolderCharacter;\n }\n if (arr.length > 9 && arr.length <= 12) {\n return '';\n }\n return '';\n }\n\n private _checkForCpfCnpj(inputVal: string): string {\n const cpf =\n `${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n const cnpj =\n `${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `/${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n\n if (inputVal === MaskExpression.HASH) {\n return cpf;\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inputVal.length; i++) {\n const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\n if (!value) {\n continue;\n }\n if (value.match('\\\\d')) {\n arr.push(value);\n }\n }\n if (arr.length <= 3) {\n return cpf.slice(arr.length, cpf.length);\n }\n if (arr.length > 3 && arr.length <= 6) {\n return cpf.slice(arr.length + 1, cpf.length);\n }\n if (arr.length > 6 && arr.length <= 9) {\n return cpf.slice(arr.length + 2, cpf.length);\n }\n if (arr.length > 9 && arr.length < 11) {\n return cpf.slice(arr.length + 3, cpf.length);\n }\n if (arr.length === 11) {\n return '';\n }\n if (arr.length === 12) {\n if (inputVal.length === 17) {\n return cnpj.slice(16, cnpj.length);\n }\n return cnpj.slice(15, cnpj.length);\n }\n if (arr.length > 12 && arr.length <= 14) {\n return cnpj.slice(arr.length + 4, cnpj.length);\n }\n return '';\n }\n\n /**\n * Recursively determine the current active element by navigating the Shadow DOM until the Active Element is found.\n */\n private _getActiveElement(document: DocumentOrShadowRoot = this.document): Element | null {\n const shadowRootEl = document?.activeElement?.shadowRoot;\n if (!shadowRootEl?.activeElement) {\n return document.activeElement;\n } else {\n return this._getActiveElement(shadowRootEl);\n }\n }\n\n /**\n * Propogates the input value back to the Angular model by triggering the onChange function. It won't do this if writingValue\n * is true. If that is true it means we are currently in the writeValue function, which is supposed to only update the actual\n * DOM element based on the Angular model value. It should be a one way process, i.e. writeValue should not be modifying the Angular\n * model value too. Therefore, we don't trigger onChange in this scenario.\n * @param inputValue the current form input value\n */\n private formControlResult(inputValue: string): void {\n const outputTransformFn = this.outputTransformFn\n ? this.outputTransformFn\n : (v: unknown) => v;\n this.writingValue = false;\n this.maskChanged = false;\n\n // Para máscaras de separador, garantir que isNumberValue é true\n // Isso assegura a conversão correta para número\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n this.isNumberValue = true;\n }\n\n if (Array.isArray(this.dropSpecialCharacters)) {\n this.onChange(\n outputTransformFn(\n this._toNumber(\n this._checkSymbols(\n this._removeMask(\n this._removeSuffix(this._removePrefix(inputValue)),\n this.dropSpecialCharacters\n )\n )\n )\n )\n );\n } else if (\n this.dropSpecialCharacters ||\n (!this.dropSpecialCharacters && this.prefix === inputValue)\n ) {\n this.onChange(\n outputTransformFn(\n this._toNumber(\n this._checkSymbols(this._removeSuffix(this._removePrefix(inputValue)))\n )\n )\n );\n } else {\n this.onChange(outputTransformFn(this._toNumber(inputValue)));\n }\n }\n\n private _toNumber(value: string | number | undefined | null) {\n if (!this.isNumberValue || value === MaskExpression.EMPTY_STRING) {\n return value;\n }\n if (\n this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n (this.leadZero || !this.dropSpecialCharacters)\n ) {\n return value;\n }\n\n if (String(value).length > 14 && this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n return String(value);\n }\n\n const num = Number(value);\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR) && Number.isNaN(num)) {\n const val = String(value).replace(',', '.');\n return Number(val);\n }\n\n return Number.isNaN(num) ? value : num;\n }\n\n private _removeMask(value: string, specialCharactersForRemove: string[]): string {\n if (\n this.maskExpression.startsWith(MaskExpression.PERCENT) &&\n value.includes(MaskExpression.DOT)\n ) {\n return value;\n }\n\n return value\n ? value.replace(\n this._regExpForRemove(specialCharactersForRemove),\n MaskExpression.EMPTY_STRING\n )\n : value;\n }\n\n private _removePrefix(value: string): string {\n if (!this.prefix) {\n return value;\n }\n return value ? value.replace(this.prefix, MaskExpression.EMPTY_STRING) : value;\n }\n\n private _removeSuffix(value: string): string {\n if (!this.suffix) {\n return value;\n }\n return value ? value.replace(this.suffix, MaskExpression.EMPTY_STRING) : value;\n }\n\n private _retrieveSeparatorValue(result: string): string {\n let specialCharacters = Array.isArray(this.dropSpecialCharacters)\n ? this.specialCharacters.filter((v) => {\n return (this.dropSpecialCharacters as string[]).includes(v);\n })\n : [...this.specialCharacters]; // Criar cópia para não modificar o original\n\n if (\n !this.deletedSpecialCharacter &&\n this._checkPatternForSpace() &&\n result.includes(MaskExpression.WHITE_SPACE) &&\n this.maskExpression.includes(MaskExpression.SYMBOL_STAR)\n ) {\n specialCharacters = specialCharacters.filter(\n (char) => char !== MaskExpression.WHITE_SPACE\n );\n }\n\n // Para máscaras de separador, NÃO remover o decimalMarker - ele será convertido para ponto depois\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n specialCharacters = specialCharacters.filter(\n (char) => !this._compareOrIncludes(char, this.decimalMarker, null)\n );\n }\n\n return this._removeMask(result, specialCharacters as string[]);\n }\n\n private _regExpForRemove(specialCharactersForRemove: string[]): RegExp {\n return new RegExp(\n specialCharactersForRemove.map((item: string) => `\\\\${item}`).join('|'),\n 'gi'\n );\n }\n\n private _replaceDecimalMarkerToDot(value: string): string {\n const markers = Array.isArray(this.decimalMarker)\n ? this.decimalMarker\n : [this.decimalMarker];\n\n return value.replace(this._regExpForRemove(markers), MaskExpression.DOT);\n }\n\n public _checkSymbols(result: string): string | number | undefined | null {\n let processedResult = result;\n\n if (processedResult === MaskExpression.EMPTY_STRING) {\n return processedResult;\n }\n\n if (\n this.maskExpression.startsWith(MaskExpression.PERCENT) &&\n this.decimalMarker === MaskExpression.COMMA\n ) {\n processedResult = processedResult.replace(MaskExpression.COMMA, MaskExpression.DOT);\n }\n const separatorPrecision: number | null = this._retrieveSeparatorPrecision(\n this.maskExpression\n );\n\n const separatorValue: string =\n this.specialCharacters.length === 0\n ? this._retrieveSeparatorValue(processedResult)\n : this._replaceDecimalMarkerToDot(this._retrieveSeparatorValue(processedResult));\n\n if (!this.isNumberValue) {\n return separatorValue;\n }\n if (separatorPrecision) {\n if (processedResult === this.decimalMarker) {\n return null;\n }\n if (separatorValue.length > 14) {\n return String(separatorValue);\n }\n return this._checkPrecision(this.maskExpression, separatorValue);\n } else {\n return separatorValue;\n }\n }\n\n private _checkPatternForSpace(): boolean {\n for (const key in this.patterns) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.patterns[key] && this.patterns[key]?.hasOwnProperty('pattern')) {\n const patternString = this.patterns[key]?.pattern.toString();\n const pattern = this.patterns[key]?.pattern;\n if (\n (patternString?.includes(MaskExpression.WHITE_SPACE) as boolean) &&\n pattern?.test(this.maskExpression)\n ) {\n return true;\n }\n }\n }\n return false;\n }\n // TODO should think about helpers or separting decimal precision to own property\n private _retrieveSeparatorPrecision(maskExpretion: string): number | null {\n const matcher: RegExpMatchArray | null = maskExpretion.match(\n new RegExp(`^separator\\\\.([^d]*)`)\n );\n return matcher ? Number(matcher[1]) : null;\n }\n\n public _checkPrecision(separatorExpression: string, separatorValue: string): number | string {\n const separatorPrecision = this.getPrecision(separatorExpression);\n let value = separatorValue;\n\n if (\n separatorExpression.indexOf('2') > 0 ||\n (this.leadZero && Number(separatorPrecision) > 0)\n ) {\n if (this.decimalMarker === MaskExpression.COMMA && this.leadZero) {\n value = value.replace(',', '.');\n }\n return this.leadZero\n ? Number(value).toFixed(Number(separatorPrecision))\n : Number(value).toFixed(2);\n }\n return this.numberToString(value);\n }\n\n public _repeatPatternSymbols(maskExp: string): string {\n return (\n (maskExp.match(/{[0-9]+}/) &&\n maskExp\n .split(MaskExpression.EMPTY_STRING)\n .reduce((accum: string, currVal: string, index: number): string => {\n this._start =\n currVal === MaskExpression.CURLY_BRACKETS_LEFT ? index : this._start;\n if (currVal !== MaskExpression.CURLY_BRACKETS_RIGHT) {\n return this._findSpecialChar(currVal) ? accum + currVal : accum;\n }\n this._end = index;\n const repeatNumber = Number(maskExp.slice(this._start + 1, this._end));\n const replaceWith: string = new Array(repeatNumber + 1).join(\n maskExp[this._start - 1]\n );\n if (\n maskExp.slice(0, this._start).length > 1 &&\n maskExp.includes(MaskExpression.LETTER_S)\n ) {\n const symbols = maskExp.slice(0, this._start - 1);\n return symbols.includes(MaskExpression.CURLY_BRACKETS_LEFT)\n ? accum + replaceWith\n : symbols + accum + replaceWith;\n } else {\n return accum + replaceWith;\n }\n }, '')) ||\n maskExp\n );\n }\n\n public currentLocaleDecimalMarker(): string {\n return (1.1).toLocaleString().substring(1, 2);\n }\n}\n","import { OnChanges, SimpleChanges, Input, Output, EventEmitter, HostListener, Directive, forwardRef, inject, HostBinding } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ControlValueAccessor,\n FormControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CustomKeyboardEvent } from './custom-keyboard-event';\nimport { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG, timeMasks, withoutValidation } from './matcha-mask.config';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Directive({\n selector: 'input[matchaMask], textarea[matchaMask]',\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaMaskCompatibleDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatchaMaskCompatibleDirective),\n multi: true,\n },\n MatchaMaskService,\n ],\n exportAs: 'matchaMask',\n})\nexport class MatchaMaskCompatibleDirective implements ControlValueAccessor, OnChanges, Validator {\n private _mask: string | undefined | null = '';\n @Input('matchaMask')\n get mask(): string | undefined | null { return this._mask; }\n set mask(v: string | undefined | null) { this._mask = v; }\n\n @HostBinding('attr.data-matcha-mask')\n get maskAttr(): string | null {\n return this._mask ?? null;\n }\n\n @Input() specialCharacters: MatchaMaskConfig['specialCharacters'] = [];\n @Input() patterns: MatchaMaskConfig['patterns'] = {};\n\n private _prefix: MatchaMaskConfig['prefix'] = '';\n @Input()\n get prefix(): MatchaMaskConfig['prefix'] { return this._prefix; }\n set prefix(v: MatchaMaskConfig['prefix']) { this._prefix = v; }\n\n @HostBinding('attr.data-prefix')\n get prefixAttr(): string | null {\n return this._prefix || null;\n }\n\n private _suffix: MatchaMaskConfig['suffix'] = '';\n @Input()\n get suffix(): MatchaMaskConfig['suffix'] { return this._suffix; }\n set suffix(v: MatchaMaskConfig['suffix']) { this._suffix = v; }\n\n @HostBinding('attr.data-suffix')\n get suffixAttr(): string | null {\n return this._suffix || null;\n }\n\n @Input() thousandSeparator: MatchaMaskConfig['thousandSeparator'] = ' ';\n @Input() decimalMarker: MatchaMaskConfig['decimalMarker'] = '.';\n\n private _dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] | null = null;\n @Input()\n set dropSpecialCharacters(value: MatchaMaskConfig['dropSpecialCharacters'] | string | null) {\n // Converter string \"true\" ou \"false\" para boolean (retrocompatível)\n if (value === 'true' || value === true) {\n this._dropSpecialCharacters = true;\n } else if (value === 'false' || value === false) {\n this._dropSpecialCharacters = false;\n } else if (Array.isArray(value) || value === null) {\n this._dropSpecialCharacters = value;\n } else {\n // Para qualquer outro valor string, tratar como false\n this._dropSpecialCharacters = false;\n }\n }\n get dropSpecialCharacters(): MatchaMaskConfig['dropSpecialCharacters'] | null {\n return this._dropSpecialCharacters;\n }\n // Helper function para converter string para boolean (retrocompatível)\n private convertToBoolean(value: boolean | string | null | undefined): boolean | null {\n if (value === null || value === undefined) {\n return null;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n return value.toLowerCase() === 'true';\n }\n return false;\n }\n\n private _hiddenInput: boolean | null = null;\n @Input()\n set hiddenInput(value: boolean | string | null) {\n this._hiddenInput = this.convertToBoolean(value);\n }\n get hiddenInput(): boolean | null {\n return this._hiddenInput;\n }\n\n private _showMaskTyped: boolean | null = null;\n @Input()\n set showMaskTyped(value: boolean | string | null) {\n this._showMaskTyped = this.convertToBoolean(value);\n }\n get showMaskTyped(): boolean | null {\n return this._showMaskTyped;\n }\n\n @Input() placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] | null = null;\n @Input() shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] | null = null;\n\n private _clearIfNotMatch: boolean | null = null;\n @Input()\n set clearIfNotMatch(value: boolean | string | null) {\n this._clearIfNotMatch = this.convertToBoolean(value);\n }\n get clearIfNotMatch(): boolean | null {\n return this._clearIfNotMatch;\n }\n\n private _validation: boolean | null = null;\n @Input()\n set validation(value: boolean | string | null) {\n this._validation = this.convertToBoolean(value);\n }\n get validation(): boolean | null {\n return this._validation;\n }\n @Input() separatorLimit: MatchaMaskConfig['separatorLimit'] | null = '';\n\n private _allowNegativeNumbers: boolean | null = null;\n @Input()\n set allowNegativeNumbers(value: boolean | string | null) {\n this._allowNegativeNumbers = this.convertToBoolean(value);\n }\n get allowNegativeNumbers(): boolean | null {\n return this._allowNegativeNumbers;\n }\n\n private _leadZeroDateTime: boolean | null = null;\n @Input()\n set leadZeroDateTime(value: boolean | string | null) {\n this._leadZeroDateTime = this.convertToBoolean(value);\n }\n get leadZeroDateTime(): boolean | null {\n return this._leadZeroDateTime;\n }\n\n private _leadZero: boolean | null = null;\n @Input()\n set leadZero(value: boolean | string | null) {\n this._leadZero = this.convertToBoolean(value);\n }\n get leadZero(): boolean | null {\n return this._leadZero;\n }\n\n private _triggerOnMaskChange: boolean | null = null;\n @Input()\n set triggerOnMaskChange(value: boolean | string | null) {\n this._triggerOnMaskChange = this.convertToBoolean(value);\n }\n get triggerOnMaskChange(): boolean | null {\n return this._triggerOnMaskChange;\n }\n\n private _apm: boolean | null = null;\n @Input()\n set apm(value: boolean | string | null) {\n this._apm = this.convertToBoolean(value);\n }\n get apm(): boolean | null {\n return this._apm;\n }\n\n @Input() inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null = null;\n @Input() outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null = null;\n\n private _keepCharacterPositions: boolean | null = null;\n @Input()\n set keepCharacterPositions(value: boolean | string | null) {\n this._keepCharacterPositions = this.convertToBoolean(value);\n }\n get keepCharacterPositions(): boolean | null {\n return this._keepCharacterPositions;\n }\n\n private _instantPrefix: boolean | null = null;\n @Input()\n set instantPrefix(value: boolean | string | null) {\n this._instantPrefix = this.convertToBoolean(value);\n }\n get instantPrefix(): boolean | null {\n return this._instantPrefix;\n }\n\n private _currencyMode: boolean | null = null;\n @Input()\n set currencyMode(value: boolean | string | null) {\n this._currencyMode = this.convertToBoolean(value);\n }\n get currencyMode(): boolean | null {\n return this._currencyMode;\n }\n\n @Output() maskFilled = new EventEmitter<void>();\n\n private _maskValue = '';\n private _inputValue = '';\n private _position: number | null = null;\n private _code = '';\n private _maskExpressionArray: string[] = [];\n private _justPasted = false;\n private _isFocused = false;\n /**For IME composition event */\n private _isComposing = false;\n\n public _maskService = inject(MatchaMaskService, { self: true });\n\n private readonly document = inject(DOCUMENT);\n\n protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (_: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouch = () => {};\n\n public ngOnChanges(changes: SimpleChanges): void {\n const {\n mask,\n specialCharacters,\n patterns,\n prefix,\n suffix,\n thousandSeparator,\n decimalMarker,\n dropSpecialCharacters,\n hiddenInput,\n showMaskTyped,\n placeHolderCharacter,\n shownMaskExpression,\n clearIfNotMatch,\n validation,\n separatorLimit,\n allowNegativeNumbers,\n leadZeroDateTime,\n leadZero,\n triggerOnMaskChange,\n apm,\n inputTransformFn,\n outputTransformFn,\n keepCharacterPositions,\n instantPrefix,\n currencyMode,\n } = changes;\n\n if (mask) {\n this._mask = mask.currentValue ?? '';\n this._maskValue = this._mask ?? '';\n this._maskExpressionArray = this._maskValue.split('');\n }\n\n if (specialCharacters) {\n this._maskService.specialCharacters = specialCharacters.currentValue ?? [];\n }\n\n if (patterns) {\n this._maskService.patterns = patterns.currentValue ?? {};\n }\n\n if (prefix) {\n this._prefix = prefix.currentValue ?? '';\n this._maskService.prefix = this._prefix ?? '';\n }\n\n if (suffix) {\n this._suffix = suffix.currentValue ?? '';\n this._maskService.suffix = this._suffix ?? '';\n }\n\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator.currentValue ?? ' ';\n }\n\n if (decimalMarker) {\n this._maskService.decimalMarker = decimalMarker.currentValue ?? '.';\n }\n\n if (dropSpecialCharacters) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.dropSpecialCharacters;\n if (value !== null) {\n this._maskService.dropSpecialCharacters = value;\n }\n }\n\n if (hiddenInput) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.hiddenInput;\n if (value !== null) {\n this._maskService.hiddenInput = value;\n }\n }\n\n if (showMaskTyped) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.showMaskTyped;\n if (value !== null) {\n this._maskService.showMaskTyped = value;\n }\n }\n\n if (placeHolderCharacter) {\n this._maskService.placeHolderCharacter = placeHolderCharacter.currentValue;\n }\n\n if (shownMaskExpression) {\n this._maskService.shownMaskExpression = shownMaskExpression.currentValue;\n }\n\n if (clearIfNotMatch) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.clearIfNotMatch;\n if (value !== null) {\n this._maskService.clearIfNotMatch = value;\n }\n }\n\n if (validation) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.validation;\n if (value !== null) {\n this._maskService.validation = value;\n }\n }\n\n if (separatorLimit) {\n this._maskService.separatorLimit = separatorLimit.currentValue ?? '';\n }\n\n if (allowNegativeNumbers) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.allowNegativeNumbers;\n if (value !== null) {\n this._maskService.allowNegativeNumbers = value;\n }\n }\n\n if (leadZeroDateTime) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.leadZeroDateTime;\n if (value !== null) {\n this._maskService.leadZeroDateTime = value;\n }\n }\n\n if (leadZero) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.leadZero;\n if (value !== null) {\n this._maskService.leadZero = value;\n }\n }\n\n if (triggerOnMaskChange) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.triggerOnMaskChange;\n if (value !== null) {\n this._maskService.triggerOnMaskChange = value;\n }\n }\n\n if (apm) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.apm;\n if (value !== null) {\n this._maskService.apm = value;\n }\n }\n\n if (inputTransformFn) {\n this._maskService.inputTransformFn = inputTransformFn.currentValue;\n }\n\n if (outputTransformFn) {\n this._maskService.outputTransformFn = outputTransformFn.currentValue;\n }\n\n if (keepCharacterPositions) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.keepCharacterPositions;\n if (value !== null) {\n this._maskService.keepCharacterPositions = value;\n }\n }\n\n if (instantPrefix) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.instantPrefix;\n if (value !== null) {\n this._maskService.instantPrefix = value;\n }\n }\n\n if (currencyMode) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.currencyMode;\n if (value !== null) {\n this._maskService.currencyMode = value;\n }\n }\n }\n\n @HostListener('paste', ['$event'])\n public onPaste(): void {\n this._justPasted = true;\n }\n\n @HostListener('focus', ['$event'])\n public onFocus(event: FocusEvent): void {\n this._isFocused = true;\n // Implementar lógica de foco se necessário\n }\n\n @HostListener('ngModelChange', ['$event'])\n public onModelChange(value: string | number): void {\n // Ignorar se estamos no meio de uma operação de escrita\n if (this._maskService.writingValue) {\n return;\n }\n\n // Se o valor é um número, significa que veio do formControlResult (já processado)\n // Não precisamos reprocessar para evitar loop infinito\n if (typeof value === 'number') {\n return;\n }\n\n // Converter para string\n const stringValue = value || '';\n this._inputValue = stringValue;\n\n // Para máscaras, não chamar applyMask aqui pois isso criaria um loop\n // O onInput já cuida de aplicar a máscara durante a digitação\n // O writeValue cuida de formatar valores vindos do backend\n if (!this._mask || this._mask.trim() === '') {\n this._maskService.onChange(stringValue);\n }\n }\n\n @HostListener('input', ['$event'])\n public onInput(event: KeyboardEvent): void {\n if (this._isComposing) {\n return;\n }\n const target = event.target as HTMLInputElement;\n const value = target.value;\n\n // Aplicar máscara se definida\n if (this._mask && this._mask.trim() !== '') {\n const maskedValue = this._maskService.applyMask(value, this._mask);\n if (maskedValue !== value) {\n target.value = maskedValue;\n }\n // NÃO chamar onChange aqui - o formControlResult no applyMask já cuida disso\n // com o valor limpo (sem prefixo, sem separadores, convertido para número)\n } else {\n this._maskService.onChange(value);\n }\n }\n\n @HostListener('compositionstart', ['$event'])\n public onCompositionStart(event: CompositionEvent): void {\n this._isComposing = true;\n }\n\n @HostListener('compositionend', ['$event'])\n public onCompositionEnd(event: CompositionEvent): void {\n this._isComposing = false;\n const target = event.target as HTMLInputElement;\n const value = target.value;\n this._maskService.onChange(value);\n }\n\n @HostListener('blur', ['$event'])\n public onBlur(event: FocusEvent): void {\n this._isFocused = false;\n this.onTouch();\n }\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n // Implementar lógica de clique se necessário\n }\n\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent): void {\n // Implementar lógica de teclado se necessário\n }\n\n public writeValue(value: string | number | null | undefined): void {\n // Se já estamos escrevendo, não processar novamente (prevenir loop infinito)\n if (this._maskService.writingValue) {\n return;\n }\n\n this._maskService.writingValue = true;\n\n // Converter automaticamente número para string (retrocompatível)\n // Isso previne o erro \"indexOf is not a function\" quando números são passados\n let inputValue: string;\n if (value === null || value === undefined) {\n inputValue = '';\n } else if (typeof value === 'number') {\n inputValue = value.toString();\n } else {\n inputValue = String(value);\n }\n\n // Se a máscara usa separator e o valor tem ponto decimal, converter para vírgula\n // Isso é útil quando valores numéricos vêm do backend (ex: 10.5 -> 10,50)\n if (this._mask && this._mask.trim().startsWith('separator.') && inputValue.includes('.')) {\n // Converter ponto para vírgula se o decimalMarker é vírgula\n const decimalMarker = this._maskService.decimalMarker;\n if (decimalMarker === ',' || (Array.isArray(decimalMarker) && decimalMarker.includes(','))) {\n inputValue = inputValue.replace('.', ',');\n }\n }\n\n this._inputValue = inputValue;\n\n // Aplicar máscara se definida\n // O applyMask formata o valor para exibição E chama formControlResult\n // que envia o valor limpo (número) para o FormControl via onChange\n if (this._mask && this._mask.trim() !== '') {\n this._maskService.applyMask(inputValue, this._mask);\n // NÃO chamar onChange aqui - formControlResult já fez isso com o valor limpo\n }\n // Sem máscara, não precisa fazer nada - o valor já está no FormControl\n\n this._maskService.writingValue = false;\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n this._maskService.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n // Implementar lógica de desabilitar se necessário\n }\n\n public validate(control: FormControl): ValidationErrors | null {\n // Implementar validação se necessário\n return null;\n }\n}\n","/**\n * Componente MatchaInputPhone\n * \n * Componente Angular para entrada de telefone internacional com seleção de país, máscara dinâmica e exibição de bandeira.\n * \n * Funcionalidades:\n * - Seleção de país com dropdown e bandeira.\n * - Máscara dinâmica de acordo com o país e DDD digitado.\n * - Suporte a diferentes formatos de telefone (fixo/celular) para o Brasil.\n * - Emissão de evento ao alterar o valor do telefone.\n * - Inicialização automática pelo valor informado ou pelo idioma do navegador.\n * \n * Inputs:\n * - fallbackMask: string - Máscara padrão caso não seja encontrada uma específica.\n * - label: string - Rótulo do campo (padrão: 'Telefone').\n * - value: string - Valor inicial do telefone (com ou sem DDI).\n * \n * Outputs:\n * - onChange: EventEmitter<string> - Emite o valor do telefone completo (com DDI) ao alterar.\n * \n * ViewChild:\n * - inputSelector: ElementRef - Referência ao container do input (usado para fechar o dropdown).\n * - phoneRef: ElementRef - Referência ao input do telefone.\n * \n * Métodos principais:\n * - ngOnInit: Inicializa o componente pelo valor ou idioma.\n * - ngOnChanges: Atualiza o valor ao receber novo input externo.\n * - initCountryPhone: Inicializa país e máscara pelo valor do telefone.\n * - selectMaskForDialCode: Seleciona a máscara conforme país e DDD.\n * - selectCountry: Troca o país selecionado e atualiza máscara.\n * - onInput: Atualiza máscara e emite evento ao digitar.\n * - toggleDropdown: Abre/fecha o dropdown de países.\n */\nimport { \n Component, \n Renderer2, \n OnChanges, \n OnDestroy, \n OnInit, \n SimpleChanges, \n ViewChild, \n ElementRef, \n Input, \n Output, \n EventEmitter, \n ChangeDetectorRef, \n} from '@angular/core';\nimport { getCountryISO2 } from './all-countries';\n\n@Component({\n selector: 'matcha-input-phone',\n templateUrl: './input-phone.component.html',\n standalone: false\n})\nexport class MatchaInputPhoneComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('inputSelector') inputSelector!: ElementRef;\n @ViewChild('phoneRef') phoneRef!: ElementRef;\n @Input('fallbackMask') fallbackMask: string = '00 0000 0000'; \n @Input('value') value?: string; \n @Output() onChange: EventEmitter<string> = new EventEmitter<string>();\n\n public typeMask: string = ''; \n public labelHover: string = 'su';\n public allCountries: any[] = getCountryISO2();\n public isOpen: boolean = false;\n public selectedCountry: any;\n public inputValueModel: string = '';\n private clickListener: (() => void) | null = null;\n public isInitialized: boolean = false;\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef) {\n \n }\n\n ngOnInit() {\n this.value ? this.initCountryPhone(this.value) : this.initCountrylanguageNavigator();\n this.cdr.detectChanges();\n this.isInitialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] && !changes['value'].firstChange) {\n \n this.value = changes['value'].currentValue;\n if (!this.value) {\n this.inputValueModel = this.value ?? '';\n return;\n }\n this.initCountryPhone(this.value);\n this.cdr.detectChanges();\n }\n }\n\n initCountryPhone(phone: string) {\n \n if (!phone.startsWith('+')) {\n \n this.setCountryAndInputValue('br', phone);\n return;\n }\n\n \n const phoneWithoutPlus = phone.replace('+', '');\n const countryDialCode = this.selectedCountry?.dialCode;\n \n if (phoneWithoutPlus.startsWith(countryDialCode)) {\n \n this.setCountryAndInputValue(this.selectedCountry.iso2, phoneWithoutPlus.replace(countryDialCode, ''));\n \n this.inputValueModel = phoneWithoutPlus.replace(countryDialCode, '');\n \n } else {\n \n this.matchCountryAndSetInputValue(phoneWithoutPlus);\n }\n }\n\n private setCountryAndInputValue(iso2: string, phone: string) {\n \n this.selectedCountry = this.allCountries.find((country) => country.iso2 === iso2);\n \n this.inputValueModel = phone.startsWith('0') ? phone.slice(1) : phone;\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000', this.inputValueModel);\n }\n\n private matchCountryAndSetInputValue(phoneWithoutPlus: string) {\n \n const matchingCountry = this.getMatchingCountry(phoneWithoutPlus);\n\n \n if (matchingCountry.length === 1) {\n \n this.setCountryAndInputValue(matchingCountry[0].iso2, phoneWithoutPlus.replace(matchingCountry[0].dialCode, ''));\n } else {\n \n this.matchAreaCodeAndSetInputValue(phoneWithoutPlus, matchingCountry);\n }\n }\n\n private getMatchingCountry(phoneWithoutPlus: string) {\n \n return this.allCountries.filter((country) => {\n const dialCode = country.dialCode;\n return phoneWithoutPlus.startsWith(dialCode);\n });\n }\n\n private matchAreaCodeAndSetInputValue(phoneWithoutPlus: string, matchingCountry: any[]) {\n \n const phoneWithoutDialCode = phoneWithoutPlus.replace(matchingCountry[0].dialCode, '');\n \n const filterAreaCode = phoneWithoutDialCode.substring(0, 3);\n\n \n const matchingAreaCode = matchingCountry.filter((country) => {\n if (country.areaCodes) {\n return country.areaCodes.includes(filterAreaCode);\n }\n });\n\n \n if (matchingAreaCode.length === 1) {\n \n this.setCountryAndInputValue(matchingAreaCode[0].iso2, phoneWithoutDialCode);\n } else {\n \n const defaultCountry = matchingCountry.find((country) => country.priority === 0);\n this.setCountryAndInputValue(defaultCountry.iso2, phoneWithoutDialCode);\n }\n }\n\n selectMaskForDialCode(inputDigits: string, targetValuePhone?: string) {\n const previousMask = this.typeMask;\n const maskArray = this.selectedCountry?.mask;\n const maskIndex = this.selectedCountry?.areaCodes\n ? this.selectedCountry.areaCodes.findIndex((code: string) => inputDigits === code)\n : -1;\n\n if (this.selectedCountry?.iso2 === 'br' && (targetValuePhone && targetValuePhone.length > 2)) {\n const eventInput = targetValuePhone.substring(2)\n if (eventInput && eventInput[0] === '9') {\n this.typeMask = \"00 0 0000 0000\";\n this.cdr.detectChanges();\n return;\n }\n }\n\n if (Array.isArray(maskArray)) {\n if (maskIndex !== -1 && maskArray[maskIndex]) {\n this.typeMask = maskArray[maskIndex];\n } else if (maskArray[0]) {\n this.typeMask = maskArray[0];\n } else {\n this.typeMask = this.fallbackMask;\n }\n } else {\n this.typeMask = this.fallbackMask;\n }\n\n \n if (previousMask !== this.typeMask) this.inputValueModel = '';\n this.cdr.detectChanges();\n}\n\n initCountrylanguageNavigator() {\n \n let lang = navigator.language;\n if (lang.includes('-')) {\n const langParts = lang.split('-');\n lang = langParts[1];\n }\n\n \n this.selectedCountry = this.allCountries.find((country) => country.iso2 === lang.toLocaleLowerCase());\n\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000');\n }\n\n public selectCountry(country: any): void {\n this.selectedCountry = country;\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000');\n this.isOpen = false;\n \n this.onChange.emit('+' + this.selectedCountry.dialCode + this.inputValueModel);\n\n this.removeClickListener();\n this.cdr.detectChanges();\n }\n\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n \n this.clickListener = this.renderer.listen('window', 'click', (event: Event) => {\n if (this.isOpen && !this.inputSelector.nativeElement.contains(event.target)) {\n this.isOpen = false;\n this.removeClickListener();\n }\n });\n this.cdr.detectChanges();\n }\n\n private removeClickListener() {\n \n if (this.clickListener) {\n this.clickListener();\n this.clickListener = null;\n }\n }\n\n onInput(event: any): void {\n this.phoneRef.nativeElement.value = event.target.value.replace(/[^\\d\\s]/g, '');\n let targetValuePhone = event.target.value.replace(/\\D/g, '');\n \n this.onChange.emit('+' + this.selectedCountry.dialCode + this.inputValueModel);\n\n const inputDigits = targetValuePhone.substring(0, 3);\n if (inputDigits) {\n this.selectMaskForDialCode(inputDigits, targetValuePhone);\n }\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n \n this.removeClickListener();\n }\n\n}\n","\n<div class=\"flex-row position-relative px-16 gap-8\" #inputSelector>\n <div class=\"min-h-24 radius-8 cursor-pointer d-flex gap-8 flex-align-center fs-16\" (click)=\"toggleDropdown()\">\n <div class=\"d-flex-row flex-align-center\">\n <img alt=\"\" [src]=\"'https://flagcdn.com/16x12/'+ selectedCountry?.iso2?.toLowerCase() + '.png'\"\n height=\"16\">\n </div>\n <span class=\"w-16 fs-16\"\n [ngClass]=\"isOpen ? 'i-matcha-action_arrow_up': 'i-matcha-action_arrow_down'\"></span>\n\n </div>\n <input *ngIf=\"isInitialized\" #phoneRef type=\"text\" placeholder=\"{{ typeMask }}\"\n [(ngModel)]=\"inputValueModel\"\n pattern=\"[0-9]*\" (keyup)=\"onInput($event)\" [matchaMask]=\"typeMask\">\n\n <ng-container *ngIf=\"isOpen\">\n <div class=\"position-absolute z-index-10\">\n <div class=\"grid-1 gap-16 radius-8 z-index-10 p-8 w-300 position-absolute background-surface elevation-z-1\"\n style=\"top: calc(100% + 10px); overflow: hidden; height: 300px; overflow-y: auto;\">\n\n <label *ngFor=\"let country of allCountries; let i = index\"\n class=\"fs-16 lh-18 cursor-pointer d-flex-align-center p-8 ts-300-l\"\n [ngClass]=\"labelHover === i+'bg' ? 'background-bg' : 'background-surface'\"\n (mouseover)=\"labelHover = i+'bg'\" (mouseout)=\"labelHover = i+'su'\"\n (click)=\"selectCountry(country)\">\n <img alt=\"\" class=\"mr-8\"\n [src]=\"'https://flagcdn.com/16x12/'+ country?.iso2?.toLowerCase() + '.png'\" height=\"16\">\n {{country.name}}\n </label>\n </div>\n </div>\n </ng-container>\n</div>\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'matcha-step',\n template: `<ng-template><ng-content></ng-content></ng-template>`,\n standalone: false\n})\nexport class StepComponent {\n @Input('title') step: any;\n @ViewChild(TemplateRef, { static: true }) template!: TemplateRef<any>;\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class MatchaStepperStateService {\n private steps: any[] = [];\n private _steps$ = new BehaviorSubject<any[]>([]);\n steps$ = this._steps$.asObservable();\n\n private _activeStep$ = new BehaviorSubject<number>(0);\n activeStep$ = this._activeStep$.asObservable();\n\n private pendingActiveStep: number | null = null;\n\n setSteps(steps: any[]) {\n this.steps = steps;\n this._steps$.next(steps);\n\n // Se havia um índice pendente, aplica agora\n if (this.pendingActiveStep !== null) {\n this.setActiveStep(this.pendingActiveStep);\n this.pendingActiveStep = null;\n }\n }\n\n setActiveStep(index: number) {\n if (this.steps.length === 0) {\n // Steps ainda não definidos, guarda para depois\n this.pendingActiveStep = index;\n return;\n }\n if (index >= 0 && index < this.steps.length) {\n this._activeStep$.next(index);\n }\n }\n\n nextStep() {\n const current = this._activeStep$.value;\n if (current < this.steps.length - 1) {\n this._activeStep$.next(current + 1);\n }\n }\n\n prevStep() {\n const current = this._activeStep$.value;\n if (current > 0) {\n this._activeStep$.next(current - 1);\n }\n }\n}","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper', \n template: `<ng-content></ng-content>`, \n providers: [MatchaStepperStateService],\n standalone: false\n})\nexport class MatchaStepperComponent {\n @Input() active: number = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['active'] && typeof changes['active'].currentValue === 'number') {\n this.stepperState.setActiveStep(this.active);\n }\n }\n}","import { Component, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\nimport { StepComponent } from '../step/step.component';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper-content',\n template: `\n <ng-container *ngIf=\"stepsArray.length\">\n <ng-container *ngTemplateOutlet=\"stepsArray[activeStep]?.template || null\"></ng-container>\n </ng-container>\n `,\n standalone: false\n})\nexport class MatchaStepperContentComponent implements AfterContentInit {\n @ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\n stepsArray: StepComponent[] = [];\n activeStep = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngAfterContentInit() {\n this.stepsArray = this.steps.toArray().sort((a, b) => {\n const stepA = a.step !== undefined && a.step !== null && a.step !== '' ? Number(a.step) : a.step;\n const stepB = b.step !== undefined && b.step !== null && b.step !== '' ? Number(b.step) : b.step;\n return stepA - stepB;\n });\n this.stepperState.setSteps(this.stepsArray.map(s => s.step));\n this.stepperState.activeStep$.subscribe(step => this.activeStep = step);\n }\n\n nextStep() {\n this.stepperState.nextStep();\n }\n\n prevStep() {\n this.stepperState.prevStep();\n }\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper-controller', \n templateUrl: './stepper-controller.component.html',\n providers: [],\n standalone: false\n})\nexport class MatchaStepperControllerComponent implements OnInit {\n @Input() disableNext!: boolean;\n steps: string[] = [];\n activeStep = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngOnInit() {\n this.stepperState.steps$.subscribe((steps: any[]) => this.steps = steps);\n this.stepperState.activeStep$.subscribe(step => this.activeStep = step);\n }\n\n goToStep(index: number) {\n if(this.disableNext && this.activeStep < index) return;\n this.stepperState.setActiveStep(index);\n }\n}\n","<div class=\"flex-column flex-align-end gap-16\">\n <span class=\"fw-900 fs-12 lh-12\">{{steps[activeStep]}}</span>\n <div class=\"d-flex align-center gap-8\">\n <ng-container *ngFor=\"let step of steps; let i = index\">\n <div (click)=\"goToStep(i)\" class=\"cursor-pointer w-32 h-8 radius-8\" [class.background-accent]=\"i <= activeStep\" [class.background-disabled]=\"i > activeStep\"></div> \n </ng-container>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatchaDropListService {\n private dropZones = new Map<HTMLElement, any>();\n\n registerDropZone(element: HTMLElement, component: any) {\n this.dropZones.set(element, component);\n }\n\n unregisterDropZone(element: HTMLElement) {\n this.dropZones.delete(element);\n }\n\n findDropZone(element: Element | null): any {\n while (element) {\n if (this.dropZones.has(element as HTMLElement)) {\n return this.dropZones.get(element as HTMLElement);\n }\n element = element.parentElement;\n }\n return null;\n }\n\n getAllDropZones(): any[] {\n return Array.from(this.dropZones.values());\n }\n}\n","import { Directive, ElementRef, Input, OnInit, OnDestroy, Renderer2, HostBinding, NgZone } from '@angular/core';\nimport { MatchaDropListService } from '../services/drop-list.service';\n\n@Directive({\n selector: '[matchaDrag]',\n standalone:false\n})\nexport class MatchaDragDirective implements OnInit, OnDestroy {\n @Input() matchaDragData: any;\n @Input() matchaDragDisabled: boolean = false;\n\n @HostBinding('class.matcha-drag-item') get dragItemClass() {\n return true;\n }\n\n @HostBinding('class.matcha-drag-disabled') get dragDisabledClass() {\n return this.matchaDragDisabled;\n }\n\n private listeners: (() => void)[] = [];\n private isDragging = false;\n private dragHandle?: HTMLElement;\n private dropList?: any;\n\n // Touch/Mobile support\n private touchStartPosition = { x: 0, y: 0 };\n private touchCurrentPosition = { x: 0, y: 0 };\n private touchDragThreshold = 10; // pixels\n private isTouchDragging = false;\n private dragPreview?: HTMLElement;\n private touchIdentifier?: number;\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private dropListService: MatchaDropListService\n ) {}\n\n ngOnInit() {\n this.setupDragEvents();\n }\n\n ngOnDestroy() {\n this.cleanupListeners();\n this.cleanupTouchDrag();\n }\n\n setDropList(dropList: any) {\n this.dropList = dropList;\n }\n\n setDragHandle(handle: HTMLElement) {\n this.dragHandle = handle;\n this.setupDragEvents(); // Re-setup when handle is set\n }\n\n private setupDragEvents() {\n if (this.matchaDragDisabled) return;\n\n this.cleanupListeners();\n\n const element = this.elementRef.nativeElement;\n const dragSource = this.dragHandle || element;\n\n // Configurar draggable para desktop\n if (this.dragHandle) {\n this.renderer.setAttribute(element, 'draggable', 'false');\n this.renderer.setAttribute(this.dragHandle, 'draggable', 'true');\n } else {\n this.renderer.setAttribute(element, 'draggable', 'true');\n }\n\n // Configurar touch-action para mobile\n this.renderer.setStyle(dragSource, 'touch-action', 'none');\n this.renderer.setStyle(dragSource, 'user-select', 'none');\n this.renderer.setStyle(dragSource, '-webkit-user-select', 'none');\n\n this.ngZone.runOutsideAngular(() => {\n // Desktop drag events\n this.listeners.push(\n this.renderer.listen(dragSource, 'dragstart', (event: DragEvent) => {\n if (this.matchaDragDisabled) return;\n this.onDragStart(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'dragend', () => {\n this.onDragEnd();\n })\n );\n\n this.listeners.push(\n this.renderer.listen(element, 'dragover', (event: DragEvent) => {\n event.preventDefault();\n })\n );\n\n // Mobile/Touch events\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchstart', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchStart(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchmove', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchMove(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchend', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchEnd(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchcancel', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchCancel(event);\n })\n );\n });\n }\n\n // Desktop drag methods\n private onDragStart(event: DragEvent) {\n this.isDragging = true;\n this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n const dataTransfer = event.dataTransfer;\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n dataTransfer.setData('text/plain', '');\n this.createDragImage(dataTransfer, this.elementRef.nativeElement, event);\n }\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragStart(this, event);\n });\n }\n }\n\n private onDragEnd() {\n this.isDragging = false;\n this.renderer.removeClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragEnd();\n });\n }\n }\n\n // Touch/Mobile drag methods\n private onTouchStart(event: TouchEvent) {\n const touch = event.touches[0];\n if (!touch) return;\n\n this.touchIdentifier = touch.identifier;\n this.touchStartPosition = { x: touch.clientX, y: touch.clientY };\n this.touchCurrentPosition = { x: touch.clientX, y: touch.clientY };\n this.isTouchDragging = false;\n\n // Prevenir scroll enquanto toca\n event.preventDefault();\n }\n\n private onTouchMove(event: TouchEvent) {\n if (this.touchIdentifier === undefined) return;\n\n const touch = this.findTouch(event.touches, this.touchIdentifier);\n if (!touch) return;\n\n this.touchCurrentPosition = { x: touch.clientX, y: touch.clientY };\n\n const deltaX = Math.abs(touch.clientX - this.touchStartPosition.x);\n const deltaY = Math.abs(touch.clientY - this.touchStartPosition.y);\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n if (!this.isTouchDragging && distance > this.touchDragThreshold) {\n // Iniciar drag\n this.isTouchDragging = true;\n this.startTouchDrag(touch);\n }\n\n if (this.isTouchDragging) {\n this.updateTouchDrag(touch);\n event.preventDefault();\n }\n }\n\n private onTouchEnd(event: TouchEvent) {\n if (this.touchIdentifier === undefined) return;\n\n const touch = this.findTouch(event.changedTouches, this.touchIdentifier);\n if (!touch) return;\n\n if (this.isTouchDragging) {\n this.endTouchDrag(touch);\n }\n\n this.resetTouchState();\n }\n\n private onTouchCancel(event: TouchEvent) {\n if (this.isTouchDragging) {\n this.cancelTouchDrag();\n }\n this.resetTouchState();\n }\n\n private startTouchDrag(touch: Touch) {\n this.isDragging = true;\n this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n // Criar preview visual do drag\n this.createTouchDragPreview();\n\n if (this.dropList) {\n this.ngZone.run(() => {\n // Simular DragEvent para compatibilidade\n const fakeEvent = this.createFakeDragEvent('dragstart', touch);\n this.dropList.onDragStart(this, fakeEvent);\n });\n }\n }\n\n private updateTouchDrag(touch: Touch) {\n if (this.dragPreview) {\n // Atualizar posição do preview\n this.renderer.setStyle(this.dragPreview, 'left', `${touch.clientX - 50}px`);\n this.renderer.setStyle(this.dragPreview, 'top', `${touch.clientY - 25}px`);\n }\n\n // Verificar drop zones\n this.checkDropZones(touch);\n }\n\n private endTouchDrag(touch: Touch) {\n // Encontrar elemento sob o touch\n const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);\n const dropZone = this.findDropZone(elementBelow);\n\n if (dropZone && this.dropList) {\n this.ngZone.run(() => {\n // Simular drop event\n const fakeEvent = this.createFakeDragEvent('drop', touch);\n dropZone.handleTouchDrop(fakeEvent, this);\n });\n }\n\n this.cleanupTouchDrag();\n }\n\n private cancelTouchDrag() {\n this.cleanupTouchDrag();\n }\n\n private createTouchDragPreview() {\n const element = this.elementRef.nativeElement;\n const rect = element.getBoundingClientRect();\n\n // Criar clone do elemento para preview\n this.dragPreview = element.cloneNode(true) as HTMLElement;\n\n // Estilizar preview\n this.renderer.setStyle(this.dragPreview, 'position', 'fixed');\n this.renderer.setStyle(this.dragPreview, 'z-index', '9999');\n this.renderer.setStyle(this.dragPreview, 'pointer-events', 'none');\n this.renderer.setStyle(this.dragPreview, 'width', `${rect.width}px`);\n this.renderer.setStyle(this.dragPreview, 'height', `${rect.height}px`);\n this.renderer.setStyle(this.dragPreview, 'opacity', '0.8');\n this.renderer.setStyle(this.dragPreview, 'transform', 'rotate(5deg)');\n this.renderer.setStyle(this.dragPreview, 'box-shadow', '0 8px 25px rgba(0,0,0,0.3)');\n\n // Adicionar ao DOM\n document.body.appendChild(this.dragPreview);\n }\n\n private checkDropZones(touch: Touch) {\n const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);\n const dropZone = this.findDropZone(elementBelow);\n\n // Notificar drop zones sobre o drag over\n if (dropZone && this.dropList) {\n this.ngZone.run(() => {\n const fakeEvent = this.createFakeDragEvent('dragover', touch);\n dropZone.handleTouchDragOver(fakeEvent);\n });\n }\n }\n\n private findDropZone(element: Element | null): any {\n return this.dropListService.findDropZone(element);\n }\n\n private findAngularComponent(element: Element): any {\n // Método mantido para compatibilidade, mas agora usa o serviço\n return this.dropListService.findDropZone(element);\n }\n\n private createFakeDragEvent(type: string, touch: Touch): any {\n return {\n type,\n clientX: touch.clientX,\n clientY: touch.clientY,\n preventDefault: () => {},\n dataTransfer: {\n effectAllowed: 'move',\n dropEffect: 'move',\n setData: () => {},\n getData: () => '',\n setDragImage: () => {}\n }\n };\n }\n\n private findTouch(touches: TouchList, identifier: number): Touch | null {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === identifier) {\n return touches[i];\n }\n }\n return null;\n }\n\n private resetTouchState() {\n this.touchIdentifier = undefined;\n this.isTouchDragging = false;\n this.isDragging = false;\n this.renderer.removeClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragEnd();\n });\n }\n }\n\n private cleanupTouchDrag() {\n if (this.dragPreview) {\n document.body.removeChild(this.dragPreview);\n this.dragPreview = undefined;\n }\n }\n\n private createDragImage(dataTransfer: DataTransfer, element: HTMLElement, event: DragEvent) {\n try {\n const rect = element.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n const offsetY = event.clientY - rect.top;\n dataTransfer.setDragImage(element, offsetX, offsetY);\n } catch (error) {\n console.warn('Erro ao configurar drag image:', error);\n }\n }\n\n private cleanupListeners() {\n this.listeners.forEach(cleanup => cleanup());\n this.listeners = [];\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n ContentChildren,\n QueryList,\n AfterContentInit,\n HostBinding\n} from '@angular/core';\nimport { MatchaDragDirective } from '../directives/drag.directive';\nimport { MatchaDropListService } from '../services/drop-list.service';\n\nexport interface MatchaDropListDroppedEvent<T = any> {\n previousIndex: number;\n currentIndex: number;\n item: T;\n container: MatchaDropListComponent;\n previousContainer?: MatchaDropListComponent;\n data: T[];\n}\n\nexport interface MatchaDropListConnectedToEvent<T = any> {\n sourceData: T[];\n targetData: T[];\n item: T;\n previousIndex: number;\n currentIndex: number;\n}\n\n@Component({\n selector: 'matcha-drop-list',\n templateUrl: './drop-list.component.html',\n standalone:false\n})\nexport class MatchaDropListComponent<T = any> implements OnInit, OnDestroy, AfterContentInit {\n @Input() matchaDropListData: T[] = [];\n @Input() matchaDropListDisabled: boolean = false;\n @Input() matchaDropListConnectedTo: MatchaDropListComponent[] = [];\n @Input() matchaDropListSortingDisabled: boolean = false;\n @Input() matchaDropListAcceptPredicate?: (item: any, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent) => boolean;\n\n @Output() matchaDropListDropped = new EventEmitter<MatchaDropListDroppedEvent<T>>();\n\n @ContentChildren(MatchaDragDirective) dragItems!: QueryList<MatchaDragDirective>;\n\n @HostBinding('class.matcha-drop-list') get dropListClass() {\n return true;\n }\n\n // Estado do drag\n private currentDragItem?: MatchaDragDirective;\n private dragStartIndex: number = -1;\n private sourceContainer?: MatchaDropListComponent;\n\n // Estado visual\n public isReceivingDrag = false;\n public showDropIndicator = false;\n public dropIndicatorPosition = 0;\n public canAcceptDrop = true; // Controla se pode aceitar o drop atual\n private calculatedDropIndex = 0; // Armazenar o índice calculado durante o dragover\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private dropListService: MatchaDropListService\n ) {}\n\n ngOnInit() {\n this.setupDropZone();\n // Registrar este drop zone no serviço\n this.dropListService.registerDropZone(this.elementRef.nativeElement, this);\n }\n\n ngAfterContentInit() {\n // Configurar referência do drop list para cada item drag\n this.dragItems.forEach(dragItem => {\n dragItem.setDropList(this);\n });\n\n // Monitorar mudanças nos itens drag\n this.dragItems.changes.subscribe(() => {\n this.dragItems.forEach(dragItem => {\n dragItem.setDropList(this);\n });\n });\n }\n\n ngOnDestroy() {\n // Desregistrar do serviço\n this.dropListService.unregisterDropZone(this.elementRef.nativeElement);\n // Cleanup automático via renderer\n }\n\n private setupDropZone() {\n const element = this.elementRef.nativeElement;\n\n this.renderer.listen(element, 'dragover', (event: DragEvent) => {\n event.preventDefault();\n\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n\n // Verificar se pode aceitar o drop\n this.canAcceptDrop = this.canAcceptCurrentDrop();\n\n if (this.canAcceptDrop) {\n event.dataTransfer!.dropEffect = 'move';\n // Mostrar linha indicadora\n this.updateDropIndicator(event);\n } else {\n event.dataTransfer!.dropEffect = 'none';\n this.showDropIndicator = false;\n }\n });\n\n this.renderer.listen(element, 'dragenter', (event: DragEvent) => {\n event.preventDefault();\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n });\n\n this.renderer.listen(element, 'dragleave', (event: DragEvent) => {\n const rect = element.getBoundingClientRect();\n const x = event.clientX;\n const y = event.clientY;\n\n // Verificar se realmente saiu do container\n if (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n }\n });\n\n this.renderer.listen(element, 'drop', (event: DragEvent) => {\n event.preventDefault();\n this.handleDrop(event);\n });\n }\n\n private updateDropIndicator(event: DragEvent) {\n if (!this.currentDragItem) return;\n\n const containerRect = this.elementRef.nativeElement.getBoundingClientRect();\n const y = event.clientY - containerRect.top;\n\n const dragItemElements = this.dragItems.toArray().map(item => item.elementRef.nativeElement);\n\n let indicatorY = 0;\n let dropIndex = 0;\n let found = false;\n\n for (let i = 0; i < dragItemElements.length; i++) {\n const itemRect = dragItemElements[i].getBoundingClientRect();\n const itemY = itemRect.top - containerRect.top;\n const itemHeight = itemRect.height;\n const itemCenter = itemY + itemHeight / 2;\n\n if (y < itemCenter) {\n indicatorY = itemY;\n dropIndex = i;\n found = true;\n break;\n }\n }\n\n if (!found && dragItemElements.length > 0) {\n // Posicionar no final da lista\n const lastItem = dragItemElements[dragItemElements.length - 1];\n const lastRect = lastItem.getBoundingClientRect();\n indicatorY = lastRect.bottom - containerRect.top;\n dropIndex = dragItemElements.length;\n }\n\n // Armazenar tanto a posição visual quanto o índice calculado\n this.dropIndicatorPosition = indicatorY;\n this.calculatedDropIndex = dropIndex;\n this.showDropIndicator = true;\n }\n\n // Métodos chamados pelo directive\n onDragStart(dragItem: MatchaDragDirective, event: DragEvent) {\n if (this.matchaDropListDisabled) return;\n\n this.currentDragItem = dragItem;\n this.sourceContainer = this;\n this.dragStartIndex = this.getDragItemIndex(dragItem);\n\n // Notificar containers conectados\n this.matchaDropListConnectedTo.forEach(container => {\n container.notifyDragStart(dragItem, this);\n });\n }\n\n onDragEnd() {\n this.currentDragItem = undefined;\n this.sourceContainer = undefined;\n this.dragStartIndex = -1;\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n this.calculatedDropIndex = 0;\n\n // Notificar containers conectados\n this.matchaDropListConnectedTo.forEach(container => {\n container.notifyDragEnd();\n });\n }\n\n private handleDrop(event: DragEvent) {\n if (!this.currentDragItem || this.matchaDropListDisabled) return;\n\n // Verificar se pode aceitar o drop\n if (!this.canAcceptCurrentDrop()) {\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n return;\n }\n\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n\n // Usar o índice já calculado durante o dragover ao invés de recalcular\n const dropIndex = this.calculatedDropIndex;\n\n if (this.sourceContainer === this) {\n // Drop na mesma lista - reordenar\n if (!this.matchaDropListSortingDisabled && dropIndex !== this.dragStartIndex) {\n this.reorderItems(this.dragStartIndex, dropIndex);\n }\n } else if (this.sourceContainer) {\n // Drop entre listas - transferir\n this.transferItem(this.currentDragItem, this.sourceContainer, this, dropIndex);\n }\n }\n\n private reorderItems(fromIndex: number, toIndex: number) {\n const newData = [...this.matchaDropListData];\n const item = newData[fromIndex];\n\n // Remover item da posição original\n newData.splice(fromIndex, 1);\n\n // Calcular nova posição\n const insertIndex = toIndex > fromIndex ? toIndex - 1 : toIndex;\n\n // Inserir na nova posição\n newData.splice(insertIndex, 0, item);\n\n this.matchaDropListData = newData;\n\n // Emitir evento\n this.matchaDropListDropped.emit({\n previousIndex: fromIndex,\n currentIndex: insertIndex,\n item,\n container: this,\n data: this.matchaDropListData\n });\n }\n\n private transferItem(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent, targetIndex: number) {\n const item = dragItem.matchaDragData;\n const sourceIndex = sourceContainer.dragStartIndex;\n\n // Remover do container origem\n const sourceData = [...sourceContainer.matchaDropListData];\n sourceData.splice(sourceIndex, 1);\n sourceContainer.matchaDropListData = sourceData;\n\n // Adicionar ao container destino\n const targetData = [...targetContainer.matchaDropListData];\n targetData.splice(targetIndex, 0, item);\n targetContainer.matchaDropListData = targetData;\n\n // Emitir eventos\n targetContainer.matchaDropListDropped.emit({\n previousIndex: sourceIndex,\n currentIndex: targetIndex,\n item,\n container: targetContainer,\n previousContainer: sourceContainer,\n data: targetContainer.matchaDropListData\n });\n\n sourceContainer.matchaDropListDropped.emit({\n previousIndex: sourceIndex,\n currentIndex: -1,\n item,\n container: sourceContainer,\n data: sourceContainer.matchaDropListData\n });\n }\n\n private getDragItemIndex(dragItem: MatchaDragDirective): number {\n return this.dragItems.toArray().indexOf(dragItem);\n }\n\n // Métodos para comunicação entre containers conectados\n notifyDragStart(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent) {\n this.currentDragItem = dragItem;\n this.sourceContainer = sourceContainer;\n this.dragStartIndex = sourceContainer.getDragItemIndex(dragItem);\n }\n\n notifyDragEnd() {\n this.currentDragItem = undefined;\n this.sourceContainer = undefined;\n this.dragStartIndex = -1;\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n this.calculatedDropIndex = 0;\n }\n\n private canAcceptCurrentDrop(): boolean {\n if (!this.currentDragItem || !this.sourceContainer) {\n return false;\n }\n\n if (this.matchaDropListAcceptPredicate) {\n const sourceContainer = this.sourceContainer;\n const targetContainer = this;\n const item = this.currentDragItem.matchaDragData;\n return this.matchaDropListAcceptPredicate(item, sourceContainer, targetContainer);\n }\n return true;\n }\n\n // Métodos para suporte touch/mobile\n handleTouchDragOver(event: any) {\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n\n // Verificar se pode aceitar o drop\n this.canAcceptDrop = this.canAcceptCurrentDrop();\n\n if (this.canAcceptDrop) {\n // Mostrar linha indicadora\n this.updateDropIndicator(event);\n } else {\n this.showDropIndicator = false;\n }\n }\n\n handleTouchDrop(event: any, dragItem: any) {\n if (!this.currentDragItem || this.matchaDropListDisabled) return;\n\n // Verificar se pode aceitar o drop\n if (!this.canAcceptCurrentDrop()) {\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n return;\n }\n\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n\n // Usar o índice já calculado durante o dragover\n const dropIndex = this.calculatedDropIndex;\n\n if (this.sourceContainer === this) {\n // Drop na mesma lista - reordenar\n if (!this.matchaDropListSortingDisabled && dropIndex !== this.dragStartIndex) {\n this.reorderItems(this.dragStartIndex, dropIndex);\n }\n } else if (this.sourceContainer) {\n // Drop entre listas - transferir\n this.transferItem(this.currentDragItem, this.sourceContainer, this, dropIndex);\n }\n }\n}\n","<div class=\"matcha-drop-list-container\"\n [class.matcha-drop-list-receiving]=\"isReceivingDrag\"\n [class.matcha-drop-list-disabled]=\"matchaDropListDisabled\"\n [class.matcha-drop-list-can-accept]=\"isReceivingDrag && canAcceptDrop\"\n [class.matcha-drop-list-cannot-accept]=\"isReceivingDrag && !canAcceptDrop\">\n <ng-content></ng-content>\n\n <!-- Linha indicadora de drop -->\n <div class=\"matcha-drop-indicator\"\n [class.active]=\"showDropIndicator && canAcceptDrop\"\n [style.top.px]=\"dropIndicatorPosition\">\n </div>\n\n <!-- Placeholder para lista vazia -->\n <div *ngIf=\"isReceivingDrag && dragItems.length === 0\"\n class=\"matcha-drop-list-placeholder\">\n <div class=\"matcha-drop-list-empty-placeholder\"\n [class.can-accept]=\"canAcceptDrop\"\n [class.cannot-accept]=\"!canAcceptDrop\">\n <span [class.i-matcha-action_sign_success]=\"canAcceptDrop\"\n [class.i-matcha-action_sign_error]=\"!canAcceptDrop\"\n [class.color-green]=\"canAcceptDrop\"\n [class.color-red]=\"!canAcceptDrop\"\n class=\"i-size-lg\"></span>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-page-layout',\n templateUrl: './page-layout.component.html',\n styleUrls: ['./page-layout.component.scss'],\n standalone: false,\n})\nexport class MatchaPageLayoutComponent {\n\n}\n","<div class=\"page-layout carded fullwidth\">\n <!-- TOP BACKGROUND -->\n <div class=\"top-bg\"></div>\n <!--/ TOP BACKGROUND -->\n\n <!-- CENTER -->\n <div class=\"center pt-24 gap-16\">\n <!-- CONTENT CARD -->\n <div class=\"content-card flatten flex-column h-100-p\">\n <!-- CONTENT -->\n <div class=\"content flex-column h-100-p\">\n <div class=\"content-card card-flat flex-column h-100-p background-bg border-radius-0 pb-16\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n standalone: false\n})\nexport class MatchaAvatarComponent {\n @Input() src: string = '';\n @Input() name: string = '';\n \n @Input() size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n @Input() color: string = 'blue'; \n\n private _disabled = false;\n @Input()\n set disabled(value: boolean | string) {\n\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n public get initials(): string {\n if (!this.name.trim()) {\n return '';\n }\n\n const words = this.name.trim().split(/\\s+/);\n \n if (this.size === 'tiny') {\n return words[0].charAt(0).toUpperCase();\n }\n\n if (words.length >= 2) {\n\n return (words[0].charAt(0) + words[1].charAt(0)).toUpperCase();\n } else if (words.length === 1 && words[0].length >= 2) {\n\n return words[0].substring(0, 2).toUpperCase();\n } else {\n\n return words[0].charAt(0).toUpperCase();\n }\n }\n\n public get hasImage(): boolean {\n return !!(this.src && this.src.trim() !== '');\n }\n\n public get hasName(): boolean {\n return !!(this.name && this.name.trim() !== '');\n }\n\n public get showDefaultIcon(): boolean {\n return !this.hasImage && !this.hasName;\n }\n\n public get sizeClass(): string {\n return `matcha-avatar-${this.size}`;\n }\n\n public get avatarClasses(): string {\n let classes = `matcha-avatar radius-full ${this.sizeClass}`;\n \n if (!this.showDefaultIcon) {\n classes += ' ' + this.color;\n }\n \n if (this.disabled) {\n classes += ' color-disabled';\n }\n \n return classes;\n }\n}\n","<span [class]=\"avatarClasses\">\n <!-- Imagem do usuário -->\n <img \n *ngIf=\"hasImage\" \n [src]=\"src\" \n [alt]=\"name || 'Avatar'\"\n class=\"matcha-avatar-image\">\n \n <!-- Iniciais do nome -->\n <span \n *ngIf=\"!hasImage && hasName\" \n class=\"matcha-avatar-initials\">\n {{ initials }}\n </span>\n \n\n <svg \n *ngIf=\"showDefaultIcon\"\n class=\"matcha-avatar-icon\"\n viewBox=\"0 0 56 56\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\">\n <path \n fill-rule=\"evenodd\" \n clip-rule=\"evenodd\" \n d=\"M28 0C12.544 0 0 12.544 0 28C0 43.456 12.544 56 28 56C43.456 56 56 43.456 56 28C56 12.544 43.456 0 28 0ZM28.0022 8.4C32.6502 8.4 36.4022 12.152 36.4022 16.8C36.4022 21.448 32.6502 25.2 28.0022 25.2C23.3542 25.2 19.6022 21.448 19.6022 16.8C19.6022 12.152 23.3542 8.4 28.0022 8.4ZM28.0022 48.1601C21.0022 48.1601 14.8142 44.5761 11.2022 39.1441C11.2862 33.5721 22.4022 30.5201 28.0022 30.5201C33.5742 30.5201 44.7182 33.5721 44.8022 39.1441C41.1902 44.5761 35.0022 48.1601 28.0022 48.1601Z\" \n fill=\"currentColor\"/>\n </svg>\n </span>","import { Component, Input, HostBinding, HostListener, Optional, ElementRef, Output, EventEmitter, Inject } from '@angular/core';\nimport { MatchaOptionParent, MATCHA_OPTION_PARENT } from './matcha-option-parent.interface';\n\n@Component({\n selector: 'matcha-option',\n template: `<ng-content></ng-content>`,\n host: {\n class: 'matcha-option',\n role: 'option',\n tabindex: '0'\n },\n standalone: false,\n})\nexport class MatchaOptionComponent {\n @Input() value: any;\n @Input() disabled = false;\n @HostBinding('attr.aria-selected') selected = false;\n\n // ✅ EventEmitters para uso standalone\n @Output() optionClick = new EventEmitter<any>();\n @Output() optionSelect = new EventEmitter<MatchaOptionComponent>();\n\n constructor(\n @Optional() @Inject(MATCHA_OPTION_PARENT) private parent: MatchaOptionParent | null,\n private elRef: ElementRef\n ) {}\n\n @HostListener('click')\n onClick() {\n if (this.disabled) return;\n\n console.log('MatchaOption: Clique na opção', {\n value: this.value,\n parent: this.parent,\n disabled: this.disabled\n });\n\n // ✅ Notifica o pai (se houver) - qualquer componente que implemente MatchaOptionParent\n if (this.parent) {\n console.log('MatchaOption: Usando parent.selectOption');\n this.parent.selectOption(this);\n } else {\n console.log('MatchaOption: Usando fallback findParentAndSelect');\n // Fallback: busca o pai via DOM\n this.findParentAndSelect();\n }\n\n // ✅ Emite eventos para uso standalone\n this.optionClick.emit(this.value);\n this.optionSelect.emit(this);\n }\n\n private findParentAndSelect() {\n // Busca o elemento pai matcha-autocomplete ou matcha-select\n const autocompleteEl = this.elRef.nativeElement.closest('matcha-autocomplete');\n const selectEl = this.elRef.nativeElement.closest('matcha-select');\n\n if (autocompleteEl) {\n console.log('MatchaOption: Encontrou autocomplete element', autocompleteEl);\n // Dispara um evento customizado que o autocomplete pode escutar\n const event = new CustomEvent('matcha-option-selected', {\n detail: { option: this, value: this.value },\n bubbles: true\n });\n autocompleteEl.dispatchEvent(event);\n console.log('MatchaOption: Evento customizado disparado', event);\n } else if (selectEl) {\n console.log('MatchaOption: Encontrou select element', selectEl);\n // Dispara um evento customizado que o select pode escutar\n const event = new CustomEvent('matcha-option-selected', {\n detail: { option: this, value: this.value },\n bubbles: true\n });\n selectEl.dispatchEvent(event);\n console.log('MatchaOption: Evento customizado disparado para select', event);\n } else {\n console.log('MatchaOption: Não encontrou elemento pai (autocomplete ou select)');\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n ev.preventDefault();\n this.onClick();\n }\n }\n\n // Getter para acessar o elemento nativo (usado para scroll)\n get nativeElement(): HTMLElement {\n return this.elRef.nativeElement;\n }\n\n // Método público para obter o texto interno da opção\n getTextContent(): string {\n return this.elRef.nativeElement.textContent?.trim() || '';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n TemplateRef,\n OnDestroy,\n OnInit,\n OnChanges,\n ChangeDetectorRef,\n AfterViewInit\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { max, takeUntil } from 'rxjs/operators';\n\nexport interface PanelPosition {\n top: number;\n left: number;\n width: number;\n maxHeight?: number;\n}\n\nexport type PanelPlacement = 'bottom' | 'top' | 'auto';\n\n@Component({\n selector: 'matcha-panel',\n template: `\n <div class=\"matcha-panel-container\" style=\"position: relative;\">\n <ng-container *ngIf=\"open\">\n <!-- Painel -->\n <div\n #panel\n class=\"matcha-panel\"\n [class.matcha-panel-top]=\"placement === 'top'\"\n [class.matcha-panel-bottom]=\"placement === 'bottom'\"\n [ngStyle]=\"panelStyle\"\n role=\"listbox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-hidden]=\"!open\">\n <ng-content></ng-content>\n </div>\n </ng-container>\n </div>\n `,\n standalone: false\n})\nexport class MatchaPanelComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n @Input() placement: PanelPlacement = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n @Input() offset = 4; // Espaçamento entre trigger e painel\n @Input() triggerElement?: HTMLElement;\n @Input() open = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild('panel', { static: false }) panelRef?: ElementRef<HTMLElement>;\n panelStyle: { [key: string]: any } = {};\n private destroy$ = new Subject<void>();\n private scrollListener?: () => void;\n private resizeListener?: () => void;\n\n constructor(\n private elRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n // Inicialização básica\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.cleanupListeners();\n }\n\n /**\n * Anexa o painel a um elemento trigger\n */\n attachTo(trigger: HTMLElement) {\n this.triggerElement = trigger;\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada antes de calcular posição\n if (this.triggerElement && this.open) {\n this.cdr.detectChanges();\n this.updatePosition();\n }\n }\n\n /**\n * Lifecycle hook para detectar mudanças no triggerElement\n */\n ngOnChanges() {\n // Só logar quando há mudanças significativas\n if (this.triggerElement && this.open) {\n console.log('MatchaPanel: ngOnChanges - painel aberto, atualizando posição');\n // Usar detectChanges para forçar a detecção de mudanças\n this.cdr.detectChanges();\n this.updatePosition();\n }\n }\n\n /**\n * Abre o painel\n */\n openPanel() {\n if (!this.triggerElement) {\n console.log('MatchaPanel: triggerElement não encontrado');\n return;\n }\n\n // Força a detecção de mudanças antes de atualizar a posição\n this.cdr.detectChanges();\n this.updatePosition();\n this.setupListeners();\n this.opened.emit();\n }\n\n /**\n * Fecha o painel\n */\n closePanel() {\n console.log('MatchaPanel: Fechando painel', {\n open: this.open,\n triggerElement: this.triggerElement,\n stackTrace: new Error().stack\n });\n this.cleanupListeners();\n this.closed.emit();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n }\n\n /**\n * Alterna o estado do painel\n */\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n /**\n * Atualiza a posição do painel (simplificado para absolute)\n */\n updatePosition() {\n if (!this.triggerElement) {\n console.log('MatchaPanel: updatePosition - triggerElement não encontrado');\n return;\n }\n const position = this.calculatePosition();\n this.panelStyle = {\n // top: `${position.top}px`,\n // left: `${position.left}px`,\n // minWidth: `${position.width}px`,\n top: 0,\n left: 0,\n width: '100%',\n maxHeight: `${position.maxHeight || this.maxHeight}px`,\n zIndex: 1\n };\n }\n\n /**\n * Calcula a posição ideal do painel (simplificado para absolute)\n */\n private calculatePosition(): PanelPosition {\n if (!this.triggerElement) {\n return { top: 0, left: 0, width: this.minWidth };\n }\n\n const rect = this.triggerElement.getBoundingClientRect();\n const containerRect = this.triggerElement.offsetParent?.getBoundingClientRect() || { top: 0, left: 0 };\n\n let top: number;\n let left: number;\n let width = Math.max(rect.width, this.minWidth);\n let maxHeight = this.maxHeight;\n\n // Calcular posição horizontal (relativa ao container)\n left = rect.left - containerRect.left;\n\n // Calcular posição vertical (relativa ao container)\n if (this.placement === 'top') {\n // Posicionar acima\n top = rect.top - containerRect.top - this.maxHeight - this.offset;\n } else {\n // Posicionar abaixo (padrão)\n top = rect.bottom - containerRect.top + this.offset;\n }\n\n return { top, left, width, maxHeight };\n }\n\n /**\n * Configura listeners para scroll e resize\n */\n private setupListeners() {\n // Com position absolute, não precisamos de listeners de scroll/resize\n console.log('MatchaPanel: setupListeners - position absolute, sem listeners necessários');\n }\n\n /**\n * Remove listeners\n */\n private cleanupListeners() {\n if (this.scrollListener) {\n window.removeEventListener('scroll', this.scrollListener);\n this.scrollListener = undefined;\n }\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n this.resizeListener = undefined;\n }\n }\n\n}\n\n","import {\n Component, ContentChildren, QueryList, ElementRef,\n AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef,\n Input, Output, EventEmitter, ViewChild, AfterViewInit\n} from '@angular/core';\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\nimport { MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\n\n@Component({\n selector: 'matcha-autocomplete',\n templateUrl: './matcha-autocomplete.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class MatchaAutocompleteComponent implements AfterContentInit, AfterViewInit, MatchaOptionParent {\n @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\n @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\n\n // Armazenar o valor selecionado independente da QueryList\n private selectedValue: any = undefined;\n\n // Configurações do painel\n @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n\n // Funcionalidades avançadas\n @Input() autoSelectOnBlur: boolean = false;\n @Input() displayWith: ((value: any) => string | null) | null = null;\n @Input() displayProperty: string = 'name';\n @Input() showClearButton: boolean = false;\n @Input() clearButtonIcon: string = 'action_close';\n @Input() clearButtonAriaLabel: string = 'Limpar seleção';\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() cleared = new EventEmitter<void>();\n @Output() autoSelected = new EventEmitter<any>();\n\n open = false;\n triggerElement?: HTMLElement;\n private activeIndex = -1;\n\n constructor(\n public elRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n // quando options mudarem, resetamos estado relevante\n this.options.changes.subscribe(() => {\n if (this.open) {\n this.resetActive();\n this.cdr.detectChanges();\n }\n });\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada\n this.cdr.detectChanges();\n\n // Escuta eventos customizados das opções\n this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\n console.log('MatchaAutocomplete: Evento matcha-option-selected recebido', event.detail);\n const { option, value } = event.detail;\n this.selectOption(option);\n });\n\n // Escuta evento para fechar este painel quando outro for aberto\n this.elRef.nativeElement.addEventListener('matcha-autocomplete-close', () => {\n if (this.open) {\n console.log('MatchaAutocomplete: Fechando painel por evento de outro autocomplete');\n this.closePanel();\n }\n });\n }\n\n attachTo(input: HTMLElement) {\n this.triggerElement = input;\n }\n\n private closeOtherPanels() {\n // Buscar todos os outros autocompletes na página e fechá-los\n const allAutocompletes = document.querySelectorAll('matcha-autocomplete');\n allAutocompletes.forEach(autocompleteEl => {\n if (autocompleteEl !== this.elRef.nativeElement) {\n // Disparar evento para fechar outros painéis\n const closeEvent = new CustomEvent('matcha-autocomplete-close', {\n bubbles: true\n });\n autocompleteEl.dispatchEvent(closeEvent);\n }\n });\n }\n\n private notifyDirectiveOfSelection(data: { value: any; displayText?: string }) {\n // Disparar evento customizado para notificar a diretiva sobre a seleção\n const selectionEvent = new CustomEvent('matcha-autocomplete-selection', {\n detail: data,\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(selectionEvent);\n console.log('MatchaAutocomplete: Evento de seleção disparado', data);\n }\n\n openPanel() {\n if (!this.triggerElement) {\n console.log('MatchaAutocomplete: triggerElement não encontrado');\n return;\n }\n\n console.log('MatchaAutocomplete: Abrindo painel', {\n triggerElement: this.triggerElement,\n panel: this.panel,\n open: this.open\n });\n\n // Fechar outros painéis abertos antes de abrir este\n this.closeOtherPanels();\n\n this.open = true;\n this.cdr.detectChanges(); // Força detecção de mudanças\n\n this.panel.attachTo(this.triggerElement);\n this.panel.openPanel();\n this.resetActive();\n this.opened.emit();\n }\n\n closePanel() {\n console.log('MatchaAutocomplete: Fechando painel', {\n open: this.open,\n stackTrace: new Error().stack\n });\n this.open = false;\n this.activeIndex = -1;\n this.updateSelectedStates();\n this.panel.closePanel();\n this.closed.emit();\n }\n\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n\n resetActive() {\n this.activeIndex = -1;\n this.updateSelectedStates();\n }\n\n private updateSelectedStates() {\n const items = this.options.toArray();\n items.forEach((opt, i) => opt.selected = i === this.activeIndex);\n }\n\n highlightNext() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex + 1) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n highlightPrevious() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex - 1 + length) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n private scrollToActive() {\n const opts = this.options.toArray();\n if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\n const host = opts[this.activeIndex].nativeElement;\n if (host && host.scrollIntoView) {\n host.scrollIntoView({ block: 'nearest' });\n }\n }\n\n selectActive() {\n if (this.activeIndex < 0) return;\n const opt = this.options.toArray()[this.activeIndex];\n if (opt?.disabled) return;\n this.selectOption(opt);\n }\n\n // chamado por matcha-option quando clicado\n selectOption(option: MatchaOptionComponent) {\n console.log('MatchaAutocomplete: Opção selecionada', {\n option,\n value: option.value,\n selected: option.selected,\n optionsLength: this.options.length,\n allOptions: this.options.toArray()\n });\n\n // Armazenar o valor selecionado\n this.selectedValue = option.value;\n\n // Marcar a opção como selecionada diretamente\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n console.log('MatchaAutocomplete: Após marcar seleção', {\n selectedOption: option,\n selected: option.selected,\n selectedValue: this.selectedValue,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n // Notificar a diretiva sobre a seleção antes de fechar o painel\n // Passar tanto o valor quanto o texto de exibição\n const displayText = this.getDisplayValue(option.value);\n this.notifyDirectiveOfSelection({\n value: option.value,\n displayText: displayText\n });\n\n // Fechamos painel automaticamente\n console.log('MatchaAutocomplete: Fechando painel após seleção');\n this.closePanel();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n\n // indireto: a directive pode ler o value via getSelectedValue()\n }\n\n getSelectedValue() {\n // Usar o valor armazenado se disponível, senão buscar na QueryList\n const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;\n\n console.log('MatchaAutocomplete: getSelectedValue chamado', {\n selectedValue: this.selectedValue,\n value,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n return value;\n }\n\n hasSelection(): boolean {\n return this.selectedValue !== undefined && this.selectedValue !== null;\n }\n\n clearSelection(): void {\n this.selectedValue = undefined;\n\n // Limpar seleção visual das opções\n this.options.forEach(opt => {\n opt.selected = false;\n });\n\n // Notificar diretiva para limpar input\n const clearEvent = new CustomEvent('matcha-autocomplete-clear', {\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(clearEvent);\n\n // Emitir evento de limpeza\n this.cleared.emit();\n }\n\n /**\n * Obtém o texto de exibição de um valor\n * Usa displayWith se fornecido, senão displayProperty, senão retorna o valor como string\n */\n getDisplayValue(value: any): string {\n if (value == null) return '';\n\n if (this.displayWith) {\n return this.displayWith(value) || '';\n }\n\n if (typeof value === 'object' && this.displayProperty) {\n return value[this.displayProperty] || '';\n }\n\n return String(value);\n }\n\n /**\n * Busca uma opção que corresponda ao texto digitado\n * Compara usando displayWith ou displayProperty\n */\n findOptionByText(text: string): MatchaOptionComponent | null {\n if (!text || text.trim() === '') return null;\n\n const searchText = text.toLowerCase().trim();\n const options = this.options.toArray();\n\n for (const option of options) {\n if (option.disabled) continue;\n\n const displayText = this.getDisplayValue(option.value).toLowerCase().trim();\n\n if (displayText === searchText) {\n return option;\n }\n }\n\n return null;\n }\n}\n\n","<matcha-panel\n #panel\n [open]=\"open\"\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [triggerElement]=\"triggerElement\"\n (opened)=\"opened.emit()\"\n (closed)=\"closed.emit()\">\n <div class=\"matcha-panel-content flex-column\">\n <ng-content></ng-content>\n </div>\n</matcha-panel>\n","import {\n Component, ContentChildren, QueryList, ElementRef,\n AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef,\n Input, Output, EventEmitter, ViewChild, AfterViewInit, forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\nimport { MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\n\n@Component({\n selector: 'matcha-select',\n templateUrl: './matcha-select.component.html',\n styleUrls: ['./matcha-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSelectComponent),\n multi: true\n }\n ]\n})\nexport class MatchaSelectComponent implements AfterContentInit, AfterViewInit, MatchaOptionParent, ControlValueAccessor {\n @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\n @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\n\n // Armazenar o valor selecionado independente da QueryList\n selectedValue: any = undefined;\n selectedLabel: string = '';\n\n // Configurações do painel\n @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n @Input() placeholder = 'Selecione uma opção';\n @Input() disabled = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() selectionChange = new EventEmitter<any>();\n\n open = false;\n triggerElement?: HTMLElement;\n private activeIndex = -1;\n\n // ControlValueAccessor properties\n private onChange = (value: any) => {};\n private onTouched = () => {};\n isDisabled = false;\n\n constructor(\n public elRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n // quando options mudarem, resetamos estado relevante\n this.options.changes.subscribe(() => {\n if (this.open) {\n this.resetActive();\n this.cdr.detectChanges();\n }\n });\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada\n this.cdr.detectChanges();\n\n // Configurar o trigger element\n this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\n if (this.triggerElement && this.panel) {\n this.panel.attachTo(this.triggerElement);\n }\n\n // Adicionar event listeners para navegação por teclado\n this.setupKeyboardNavigation();\n\n // Escuta eventos customizados das opções\n this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\n console.log('MatchaSelect: Evento matcha-option-selected recebido', event.detail);\n const { option, value } = event.detail;\n this.selectOption(option);\n });\n\n // Escuta evento para fechar este painel quando outro for aberto\n this.elRef.nativeElement.addEventListener('matcha-select-close', () => {\n if (this.open) {\n console.log('MatchaSelect: Fechando painel por evento de outro select');\n this.closePanel();\n }\n });\n\n // Escuta click outside para fechar o painel\n document.addEventListener('click', (event: MouseEvent) => {\n const target = event.target as Node;\n const isInsideSelect = this.elRef.nativeElement.contains(target);\n\n if (!isInsideSelect && this.open) {\n console.log('MatchaSelect: Fechando painel por click outside');\n this.closePanel();\n }\n });\n }\n\n private setupKeyboardNavigation() {\n if (!this.triggerElement) return;\n\n this.triggerElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (this.disabled || this.isDisabled) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.handleArrowDown();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.handleArrowUp();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.handleEnterOrSpace();\n break;\n case 'Escape':\n event.preventDefault();\n this.handleEscape();\n break;\n case 'Tab':\n // Permitir navegação normal com Tab\n break;\n default:\n // Para outras teclas, não fazer nada\n break;\n }\n });\n }\n\n private handleArrowDown() {\n if (!this.open) {\n // Se o painel estiver fechado, selecionar a próxima opção diretamente\n this.selectNextOption();\n } else {\n // Se o painel estiver aberto, navegar para a próxima opção\n this.highlightNext();\n }\n }\n\n private handleArrowUp() {\n if (!this.open) {\n // Se o painel estiver fechado, selecionar a opção anterior diretamente\n this.selectPreviousOption();\n } else {\n // Se o painel estiver aberto, navegar para a opção anterior\n this.highlightPrevious();\n }\n }\n\n private handleEnterOrSpace() {\n if (this.open) {\n // Se o painel estiver aberto, selecionar a opção ativa\n this.selectActive();\n } else {\n // Se o painel estiver fechado, abrir\n this.openPanel();\n }\n }\n\n private handleEscape() {\n if (this.open) {\n this.closePanel();\n }\n }\n\n private closeOtherPanels() {\n // Buscar todos os outros selects na página e fechá-los\n const allSelects = document.querySelectorAll('matcha-select');\n allSelects.forEach(selectEl => {\n if (selectEl !== this.elRef.nativeElement) {\n // Disparar evento para fechar outros painéis\n const closeEvent = new CustomEvent('matcha-select-close', {\n bubbles: true\n });\n selectEl.dispatchEvent(closeEvent);\n }\n });\n }\n\n private notifyDirectiveOfSelection(value: any) {\n // Disparar evento customizado para notificar a diretiva sobre a seleção\n const selectionEvent = new CustomEvent('matcha-select-selection', {\n detail: { value },\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(selectionEvent);\n console.log('MatchaSelect: Evento de seleção disparado', { value });\n }\n\n onTriggerClick() {\n if (this.disabled || this.isDisabled) return;\n this.togglePanel();\n }\n\n openPanel() {\n if (this.disabled || this.isDisabled) {\n console.log('MatchaSelect: disabled');\n return;\n }\n\n // Garantir que o triggerElement está configurado\n if (!this.triggerElement) {\n this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\n }\n\n if (!this.triggerElement) {\n console.log('MatchaSelect: triggerElement não encontrado');\n return;\n }\n\n console.log('MatchaSelect: Abrindo painel', {\n triggerElement: this.triggerElement,\n panel: this.panel,\n open: this.open\n });\n\n // Fechar outros painéis abertos antes de abrir este\n this.closeOtherPanels();\n\n this.open = true;\n this.cdr.detectChanges(); // Força detecção de mudanças\n\n this.panel.attachTo(this.triggerElement);\n this.panel.openPanel();\n\n // Configurar o activeIndex baseado no valor selecionado\n this.setActiveIndexFromSelectedValue();\n this.updateSelectedStates();\n\n this.opened.emit();\n }\n\n closePanel() {\n console.log('MatchaSelect: Fechando painel', {\n open: this.open,\n stackTrace: new Error().stack\n });\n this.open = false;\n this.activeIndex = -1;\n this.updateSelectedStates();\n this.panel.closePanel();\n this.closed.emit();\n\n // Marcar como touched quando o painel fecha (importante para validação)\n this.onTouched();\n }\n\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n resetActive() {\n this.activeIndex = -1;\n this.updateSelectedStates();\n }\n\n private setActiveIndexFromSelectedValue() {\n if (this.selectedValue !== undefined) {\n const options = this.options.toArray();\n const selectedIndex = options.findIndex(opt => opt.value === this.selectedValue);\n this.activeIndex = selectedIndex >= 0 ? selectedIndex : 0;\n } else {\n this.activeIndex = 0;\n }\n }\n\n private selectNextOption() {\n const options = this.options.toArray();\n if (!options.length) return;\n\n let currentIndex = -1;\n if (this.selectedValue !== undefined) {\n currentIndex = options.findIndex(opt => opt.value === this.selectedValue);\n }\n\n // Se não há seleção atual ou é a última opção, selecionar a primeira\n const nextIndex = currentIndex < 0 || currentIndex >= options.length - 1 ? 0 : currentIndex + 1;\n this.selectOptionByIndex(nextIndex);\n }\n\n private selectPreviousOption() {\n const options = this.options.toArray();\n if (!options.length) return;\n\n let currentIndex = -1;\n if (this.selectedValue !== undefined) {\n currentIndex = options.findIndex(opt => opt.value === this.selectedValue);\n }\n\n // Se não há seleção atual ou é a primeira opção, selecionar a última\n const prevIndex = currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n this.selectOptionByIndex(prevIndex);\n }\n\n private selectOptionByIndex(index: number) {\n const options = this.options.toArray();\n if (index < 0 || index >= options.length) return;\n\n const option = options[index];\n if (option.disabled) return;\n\n // Atualizar o valor selecionado\n this.selectedValue = option.value;\n // Armazenar o label (texto interno) da opção selecionada\n this.selectedLabel = option.getTextContent();\n\n // Marcar a opção como selecionada\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n // Notificar a diretiva sobre a seleção\n this.notifyDirectiveOfSelection(option.value);\n\n // Emitir evento de mudança de seleção\n this.selectionChange.emit(option.value);\n\n // Notificar o Angular Forms sobre a mudança\n this.onChange(option.value);\n this.onTouched();\n\n // Forçar detecção de mudanças\n this.cdr.detectChanges();\n }\n\n private updateSelectedStates() {\n const items = this.options.toArray();\n items.forEach((opt, i) => opt.selected = i === this.activeIndex);\n }\n\n highlightNext() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex + 1) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n highlightPrevious() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex - 1 + length) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n private scrollToActive() {\n const opts = this.options.toArray();\n if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\n const host = opts[this.activeIndex].nativeElement;\n if (host && host.scrollIntoView) {\n host.scrollIntoView({ block: 'nearest' });\n }\n }\n\n selectActive() {\n if (this.activeIndex < 0) return;\n const opt = this.options.toArray()[this.activeIndex];\n if (opt?.disabled) return;\n this.selectOption(opt);\n }\n\n // chamado por matcha-option quando clicado\n selectOption(option: MatchaOptionComponent) {\n console.log('MatchaSelect: Opção selecionada', {\n option,\n value: option.value,\n selected: option.selected,\n optionsLength: this.options.length,\n allOptions: this.options.toArray()\n });\n\n // Armazenar o valor selecionado\n this.selectedValue = option.value;\n // Armazenar o label (texto interno) da opção selecionada\n this.selectedLabel = option.getTextContent();\n\n // Marcar a opção como selecionada diretamente\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n console.log('MatchaSelect: Após marcar seleção', {\n selectedOption: option,\n selected: option.selected,\n selectedValue: this.selectedValue,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n // Notificar a diretiva sobre a seleção antes de fechar o painel\n this.notifyDirectiveOfSelection(option.value);\n\n // Emitir evento de mudança de seleção\n this.selectionChange.emit(option.value);\n\n // Notificar o Angular Forms sobre a mudança\n this.onChange(option.value);\n this.onTouched();\n\n // Fechamos painel automaticamente\n console.log('MatchaSelect: Fechando painel após seleção');\n this.closePanel();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n }\n\n getSelectedValue() {\n // Usar o valor armazenado se disponível, senão buscar na QueryList\n const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;\n\n console.log('MatchaSelect: getSelectedValue chamado', {\n selectedValue: this.selectedValue,\n value,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n return value;\n }\n\n getSelectedLabel(): string {\n // Retorna o label armazenado ou placeholder\n return this.selectedLabel || '';\n }\n\n // Método para definir valor programaticamente\n setValue(value: any) {\n this.selectedValue = value;\n this.cdr.detectChanges();\n }\n\n // Método para limpar seleção\n clearSelection() {\n this.selectedValue = undefined;\n this.selectedLabel = '';\n this.options.forEach(o => o.selected = false);\n this.cdr.detectChanges();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any): void {\n this.selectedValue = value;\n // Atualizar o label quando o valor é definido programaticamente\n if (value !== undefined && value !== null) {\n const selectedOption = this.options?.find(o => o.value === value);\n if (selectedOption) {\n this.selectedLabel = selectedOption.getTextContent();\n }\n } else {\n this.selectedLabel = '';\n }\n this.cdr.detectChanges();\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.cdr.detectChanges();\n }\n}\n","<div class=\"matcha-select-container\" [class.matcha-select-disabled]=\"disabled || isDisabled\">\n <div\n class=\"matcha-select-trigger\"\n [class.matcha-select-open]=\"open\"\n [class.matcha-select-disabled]=\"disabled || isDisabled\"\n (click)=\"onTriggerClick()\"\n [attr.tabindex]=\"(disabled || isDisabled) ? -1 : 0\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-disabled]=\"disabled || isDisabled\">\n\n <span class=\"matcha-select-value\" [class.matcha-select-placeholder]=\"!selectedValue\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n\n <span class=\"matcha-select-arrow\" [class.matcha-select-arrow-open]=\"open\">\n <span class=\"i-matcha-action_arrow_down\"></span>\n </span>\n </div>\n\n <matcha-panel\n #panel\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [open]=\"open\">\n <ng-content></ng-content>\n </matcha-panel>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * Service to internationalize the paginator component.\n * Based on Angular Material's MatPaginatorIntl\n */\n@Injectable({ providedIn: 'root' })\nexport class MatchaPaginatorIntl {\n /** Stream to emit from when labels are changed. Used by the paginator to update the labels. */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel: string = 'Itens por página:';\n\n /** A label for the button that increments the current page. */\n nextPageLabel: string = 'Próxima página';\n\n /** A label for the button that decrements the current page. */\n previousPageLabel: string = 'Página anterior';\n\n /** A label for the button that moves to the first page. */\n firstPageLabel: string = 'Primeira página';\n\n /** A label for the button that moves to the last page. */\n lastPageLabel: string = 'Última página';\n\n /**\n * A label for the range of items within the current page and the length of the whole list.\n */\n getRangeLabel: (page: number, pageSize: number, length: number) => string =\n (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return `0 de 0`;\n }\n const amountPages = Math.ceil(length / pageSize);\n return `Página ${page + 1} de ${amountPages}`;\n };\n}\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PageEvent } from './page-event.interface';\nimport { MatchaPaginatorIntl } from '../paginator-intl.service';\n\n@Component({\n selector: 'matcha-paginator',\n templateUrl: './paginator.component.html',\n styleUrl: './paginator.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatchaPaginatorComponent implements OnDestroy {\n @Input() public pageIndex: number = 0;\n @Input() public length: number = 0;\n @Input() public pageSize: number = 50;\n @Input() public pageSizeOptions: number[] = [];\n \n /** Color theme for active page button. Defaults to 'accent' */\n @Input() public color: string = 'accent';\n\n @Output() public page = new EventEmitter<PageEvent>();\n\n private _intlChanges: Subscription;\n\n constructor(\n public _intl: MatchaPaginatorIntl,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this._intlChanges = _intl.changes.subscribe(() => {\n // Trigger change detection when labels change\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._intlChanges.unsubscribe();\n }\n\n public get currentPage(): number {\n return this.pageIndex + 1;\n }\n\n public get totalPages(): number {\n if (this.pageSize === 0) return 0;\n return Math.ceil(this.length / this.pageSize);\n }\n\n public get hasPreviousPage(): boolean {\n return this.pageIndex > 0;\n }\n\n public get hasNextPage(): boolean {\n return this.pageIndex < this.totalPages - 1;\n }\n\n public get displayPages(): (number | string)[] {\n const current = this.currentPage;\n const total = this.totalPages;\n const pages: (number | string)[] = [];\n\n if (total <= 1) {\n if (total === 1) {\n pages.push(1);\n }\n return pages;\n }\n\n if (total <= 5) {\n for (let i = 1; i <= total; i++) {\n pages.push(i);\n }\n } else {\n \n if (current <= 3) {\n pages.push(1, 2, 3, '...', total);\n } else if (current >= total - 2) {\n for (let i = total - 4; i <= total; i++) {\n pages.push(i);\n }\n } else {\n const startPage = current - 1;\n \n for (let i = startPage; i <= current + 2 && i <= total; i++) {\n pages.push(i);\n }\n \n if (current + 2 < total - 1) {\n pages.push('...');\n }\n \n if (current + 2 < total) {\n pages.push(total);\n }\n }\n }\n\n return pages;\n }\n\n public trackByPage(index: number, item: number | string): number | string {\n return item;\n }\n\n /** Check if item is a number (for template use only) */\n public isNumber(value: any): boolean {\n return typeof value === 'number';\n }\n\n /** Navigate to previous page */\n public previousPage(): void {\n if (this.hasPreviousPage) {\n this.changePage(this.pageIndex - 1);\n }\n }\n\n /** Navigate to next page */\n public nextPage(): void {\n if (this.hasNextPage) {\n this.changePage(this.pageIndex + 1);\n }\n }\n\n /** Navigate to specific page */\n public goToPage(page: number | string): void {\n if (typeof page === 'number' && page >= 1 && page <= this.totalPages) {\n this.changePage(page - 1);\n }\n }\n \n\n /** Handle page size change */\n public onPageSizeChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const newPageSize = parseInt(target.value, 10);\n \n if (newPageSize !== this.pageSize) {\n this.changePage(0, newPageSize);\n }\n }\n\n private changePage(pageIndex: number, pageSize?: number): void {\n const previousPageIndex = this.pageIndex;\n \n const event: PageEvent = {\n pageIndex,\n previousPageIndex,\n pageSize: pageSize || this.pageSize,\n length: this.length\n };\n\n this.page.emit(event);\n }\n}","<div class=\"matcha-paginator flex-row flex-align-center gap-16\">\n <!-- Items per page selector -->\n <div class=\"flex-row flex-align-center gap-8\" *ngIf=\"pageSizeOptions && pageSizeOptions.length > 0\">\n <span class=\"text-sm color-placeholder\">{{ _intl.itemsPerPageLabel }}</span>\n <div class=\"page-size-selector\">\n <select \n class=\"page-size-select radius-8\" \n [value]=\"pageSize\" \n (change)=\"onPageSizeChange($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n <div class=\"select-icon\">\n <matcha-icon name=\"action_arrow_down\" size=\"sm\" color=\"fg\"></matcha-icon>\n </div>\n </div>\n </div>\n \n <!-- Page navigation -->\n <div class=\"flex-row flex-align-center gap-8\">\n <!-- Previous page button -->\n <button \n class=\"nav-button\" \n [disabled]=\"!hasPreviousPage\"\n (click)=\"previousPage()\"\n [attr.aria-label]=\"_intl.previousPageLabel\">\n <matcha-icon name=\"action_arrow_left\" size=\"md\"></matcha-icon>\n </button>\n \n <!-- Page numbers -->\n <div class=\"flex-row flex-align-center gap-4\">\n <ng-container *ngFor=\"let page of displayPages; trackBy: trackByPage\">\n <button \n *ngIf=\"isNumber(page); else ellipsis\"\n class=\"page-button\"\n [class.active]=\"page === currentPage\"\n [class.radius-full]=\"page === currentPage\"\n [ngClass]=\"page === currentPage ? color : ''\"\n (click)=\"goToPage(page)\"\n [attr.aria-label]=\"'Ir para página ' + page\">\n {{ page }}\n </button>\n <ng-template #ellipsis>\n <span class=\"ellipsis\">{{ page }}</span>\n </ng-template>\n </ng-container>\n </div>\n \n <!-- Next page button -->\n <button \n class=\"nav-button\" \n [disabled]=\"!hasNextPage\"\n (click)=\"nextPage()\"\n [attr.aria-label]=\"_intl.nextPageLabel\">\n <matcha-icon name=\"action_arrow_right\" size=\"md\"></matcha-icon>\n </button>\n </div>\n </div>","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'matcha-copy-button',\n templateUrl: './copy-button.component.html',\n styleUrls: ['./copy-button.component.scss'],\n standalone: false\n})\nexport class CopyButtonComponent {\n\n @Input() type: string = 'Código';\n @Input() size: 'tiny' | 'small' | 'medium' | 'large' = 'tiny';\n @Input() icon: string = 'copy-out';\n @Input() position: 'absolute' | 'relative' = 'absolute';\n @Input() customClass: string = '';\n\n @Output() copied = new EventEmitter<{text: string, type: string}>();\n\n // Propriedade para controlar o ícone do botão\n currentIcon: string = this.icon;\n isCopied: boolean = false;\n\n // Método para copiar código para a área de transferência\n async copyToClipboard() {\n // Busca o componente matcha-highlight pai\n const highlightComponent = this.elementRef.nativeElement.closest('matcha-highlight');\n\n // Primeiro tenta encontrar textarea (para casos onde ainda não foi processado)\n let textarea = highlightComponent?.querySelector('textarea');\n let textToCopy = '';\n\n if (textarea) {\n // Se encontrou textarea, usa o valor dela\n textToCopy = textarea.value;\n } else {\n // Se não encontrou textarea, procura pelo código destacado\n const codeElement = highlightComponent?.querySelector('code.highlight');\n if (codeElement) {\n textToCopy = codeElement.textContent || codeElement.innerText || '';\n } else {\n console.warn('Nenhum conteúdo encontrado para copiar');\n return;\n }\n }\n\n if (!textToCopy.trim()) {\n console.warn('Conteúdo vazio para copiar');\n return;\n }\n\n try {\n await navigator.clipboard.writeText(textToCopy);\n console.log(`Código ${this.type} copiado para a área de transferência!`);\n this.copied.emit({ text: textToCopy, type: this.type });\n\n // Feedback visual temporário\n this.showCopyFeedback();\n } catch (err) {\n console.error('Erro ao copiar código:', err);\n // Fallback para navegadores mais antigos\n this.fallbackCopyToClipboard(textToCopy);\n }\n }\n\n // Fallback para navegadores que não suportam clipboard API\n private fallbackCopyToClipboard(textToCopy: string) {\n // Cria um textarea temporário para usar o método antigo\n const tempTextarea = document.createElement('textarea');\n tempTextarea.value = textToCopy;\n tempTextarea.style.position = 'fixed';\n tempTextarea.style.left = '-999999px';\n tempTextarea.style.top = '-999999px';\n document.body.appendChild(tempTextarea);\n\n tempTextarea.focus();\n tempTextarea.select();\n tempTextarea.setSelectionRange(0, 99999); // Para mobile\n\n try {\n document.execCommand('copy');\n console.log('Código copiado para a área de transferência!');\n this.copied.emit({ text: textToCopy, type: this.type });\n this.showCopyFeedback();\n } catch (err) {\n console.error('Erro ao copiar código:', err);\n } finally {\n document.body.removeChild(tempTextarea);\n }\n }\n\n // Feedback visual quando copiado\n private showCopyFeedback() {\n const button = this.elementRef.nativeElement.querySelector('button');\n if (button) {\n const originalText = button.title;\n button.title = 'Copiado!';\n\n // Muda o ícone para checked\n this.isCopied = true;\n this.currentIcon = 'action_done';\n\n setTimeout(() => {\n button.title = originalText;\n button.style.transform = '';\n\n // Volta para o ícone original após 2 segundos\n setTimeout(() => {\n this.isCopied = false;\n this.currentIcon = this.icon;\n }, 3000);\n }, 1000);\n }\n }\n\n // Método para obter as classes CSS do botão\n getButtonClasses(): string {\n let classes = `position-${this.position} top-8 right-8 m-8 z-index-10`;\n\n if (this.customClass) {\n classes += ` ${this.customClass}`;\n }\n\n return classes;\n }\n\n constructor(private elementRef: ElementRef) {}\n}\n","<button\n matcha-button\n [size]=\"size\"\n pill=\"true\"\n icon=\"true\"\n [class]=\"getButtonClasses()\"\n (click)=\"copyToClipboard()\"\n [title]=\"'Copiar código ' + type\">\n <matcha-icon [name]=\"currentIcon\" [size]=\"size === 'tiny' ? 'small' : size\"></matcha-icon>\n</button>\n\n\n","import { Component, ContentChild, ElementRef, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n// Prism.js é carregado no módulo highlight.module.ts\n\n@Component({\n selector : 'matcha-highlight',\n template : `\n <matcha-copy-button [type]=\"lang\" class=\"copy-button\"></matcha-copy-button>\n <div class=\"matcha-highlight-container\">\n <div class=\"highlight-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n standalone: false\n})\nexport class MatchaHighlightComponent implements OnInit, OnDestroy\n{\n // Source\n @ContentChild('source', {static: true})\n source!: ElementRef;\n\n // Lang\n @Input('lang')\n lang!: string;\n\n // Path\n @Input('path')\n path!: string;\n\n // Theme\n @Input('theme') theme: string = '';\n @HostBinding('attr.theme') get themeAttr(): string { return this.theme; }\n\n // Private\n private _unsubscribeAll: Subject<any>;\n\n /**\n * Constructor\n *\n * @param {ElementRef} _elementRef\n * @param {HttpClient} _httpClient\n */\n constructor(\n private _elementRef: ElementRef,\n private _httpClient: HttpClient\n )\n {\n // Set the private defaults\n this._unsubscribeAll = new Subject();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n ngOnInit(): void\n {\n // Debug: Verificar se Prism está carregado\n const Prism = (window as any).Prism;\n console.log('Prism loaded:', typeof Prism !== 'undefined');\n if (typeof Prism !== 'undefined') {\n console.log('Prism languages:', Object.keys(Prism.languages));\n }\n\n // Aplicar tema\n // this.applyTheme();\n\n // If there is no language defined, return...\n if ( !this.lang )\n {\n return;\n }\n\n // If the path is defined...\n if ( this.path )\n {\n // Get the source\n this._httpClient.get(this.path, {responseType: 'text'})\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((response) => {\n\n // Highlight it\n this.highlight(response);\n });\n }\n\n // If the path is not defined and the source element exists...\n if ( !this.path && this.source )\n {\n // Highlight it\n this.highlight(this.source.nativeElement.value);\n }\n }\n\n /**\n * On destroy\n */\n ngOnDestroy(): void\n {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Apply theme to the component\n */\n // applyTheme(): void\n // {\n // const element = this._elementRef.nativeElement;\n\n // // Remove existing theme classes\n // element.classList.remove('theme-matcha', 'theme-default', 'theme-dark', 'theme-coy', 'theme-funky', 'theme-okaidia', 'theme-solarizedlight', 'theme-tomorrow', 'theme-twilight');\n\n // // Add new theme class\n // element.classList.add(`theme-${this.theme}`);\n // }\n\n /**\n * Carrega o PrismJS dinamicamente\n */\n private async loadPrismJS(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Verifica se já está carregado\n if (typeof (window as any).Prism !== 'undefined') {\n resolve();\n return;\n }\n\n // Carrega o PrismJS principal\n const script = document.createElement('script');\n script.src = '/assets/prismjs/prism.js';\n script.onload = () => {\n // Carrega os componentes de linguagem\n this.loadPrismComponent('/assets/prismjs/components/prism-javascript.js');\n this.loadPrismComponent('/assets/prismjs/components/prism-css.js');\n this.loadPrismComponent('/assets/prismjs/components/prism-markup.js');\n\n console.log('PrismJS carregado com sucesso');\n resolve();\n };\n script.onerror = () => {\n console.error('Erro ao carregar PrismJS');\n reject(new Error('Erro ao carregar PrismJS'));\n };\n document.head.appendChild(script);\n });\n }\n\n /**\n * Carrega um componente do PrismJS\n */\n private loadPrismComponent(src: string): void {\n const script = document.createElement('script');\n script.src = src;\n document.head.appendChild(script);\n }\n\n /**\n * Highlight the given source code\n *\n * @param sourceCode\n */\n async highlight(sourceCode: string): Promise<void>\n {\n // Carrega o PrismJS dinamicamente se não estiver disponível\n if (typeof (window as any).Prism === 'undefined') {\n await this.loadPrismJS();\n }\n\n const Prism = (window as any).Prism;\n\n console.log('Highlighting code:', sourceCode.substring(0, 50) + '...');\n console.log('Language:', this.lang);\n console.log('Prism available:', typeof Prism !== 'undefined');\n\n // Check if Prism is available\n if (typeof Prism === 'undefined') {\n console.error('Prism.js is not loaded');\n this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\n return;\n }\n\n // Check if the language is supported\n if (!Prism.languages[this.lang]) {\n console.error(`Language \"${this.lang}\" is not supported by Prism.js`);\n console.log('Available languages:', Object.keys(Prism.languages));\n this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\n return;\n }\n\n // Split the source into lines\n const sourceLines = sourceCode.split('\\n');\n\n\n // Verificar se o array não está vazio\n if (sourceLines.length === 0) {\n console.warn('Source code is empty');\n this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\n return;\n }\n // Remove the first and the last line of the source\n // code if they are blank lines. This way, the html\n // can be formatted properly while using matcha-highlight\n // component\n if (sourceLines.length > 0 && sourceLines[0] && !sourceLines[0].trim())\n {\n sourceLines.shift();\n }\n\n if (sourceLines.length > 0 && sourceLines[sourceLines.length - 1] && !sourceLines[sourceLines.length - 1].trim())\n {\n sourceLines.pop();\n }\n\n // Find the first non-whitespace char index in\n\n // Verificar novamente se o array não está vazio após remoções\n if (sourceLines.length === 0) {\n console.warn('Source code is empty after trimming');\n this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\n return;\n }\n // the first line of the source code\n const indexOfFirstChar = sourceLines[0].search(/\\S|$/);\n\n // Generate the trimmed source\n let source = '';\n\n // Iterate through all the lines\n sourceLines.forEach((line: string, index: number) => {\n\n // Trim the beginning white space depending on the index\n // and concat the source code\n source = source + line.substr(indexOfFirstChar, line.length);\n\n // If it's not the last line...\n if ( index !== sourceLines.length - 1 )\n {\n // Add a line break at the end\n source = source + '\\n';\n }\n });\n\n console.log('Processed source:', source.substring(0, 50) + '...');\n\n // Generate the highlighted code\n const highlightedCode = Prism.highlight(source, Prism.languages[this.lang], this.lang);\n\n console.log('Highlighted result:', highlightedCode.substring(0, 100) + '...');\n\n // Replace the innerHTML of the highlight-content div with the highlighted code\n const highlightContent = this._elementRef.nativeElement.querySelector('.highlight-content');\n if (highlightContent) {\n highlightContent.innerHTML =\n '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\n } else {\n // Fallback: if highlight-content doesn't exist, use the old method\n this._elementRef.nativeElement.innerHTML =\n '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\n }\n }\n}\n","// projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts\n\nimport { Component, Input, Output, EventEmitter, forwardRef, OnInit, OnDestroy, ElementRef, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nexport interface SliderOptions {\n floor?: number;\n ceil?: number;\n step?: number;\n disabled?: boolean;\n pushRange?: boolean;\n noSwitching?: boolean;\n minRange?: number;\n maxRange?: number;\n animate?: boolean;\n draggableRange?: boolean;\n draggableRangeOnly?: boolean;\n showSelectionBar?: boolean;\n showSelectionBarEnd?: boolean;\n showSelectionBarFromValue?: number;\n showSelectionBarToValue?: number;\n selectionBarGradient?: {\n from: string;\n to: string;\n };\n getPointerColor?: (value: number) => string;\n getSelectionBarColor?: (value: number) => string;\n hidePointerLabels?: boolean;\n hideLimitLabels?: boolean;\n keyboardSupport?: boolean;\n scale?: number;\n enforceRange?: boolean;\n enforceStep?: boolean;\n noCommaStyle?: boolean;\n bindIndexForPushRange?: boolean;\n combineLabels?: boolean;\n format?: (value: number) => string;\n combinePossible?: boolean;\n includeTicksScale?: boolean;\n logScale?: boolean;\n customValueToPosition?: (val: number, minVal: number, maxVal: number) => number;\n customPositionToValue?: (percent: number, minVal: number, maxVal: number) => number;\n translate?: (value: number, sliderId: string, label: string) => string;\n}\n\n@Component({\n selector: 'matcha-slider',\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSliderComponent),\n multi: true\n }\n ]\n})\nexport class MatchaSliderComponent implements ControlValueAccessor, OnInit, OnDestroy {\n\n\n@Input() value: number = 0;\n\nprivate _highValue: number = 0;\n@Input() set highValue(val: number) {\n this._highValue = val;\n if (val !== null && val !== undefined && val !== 0) {\n this.isRangeInternal = true;\n }\n}\nget highValue(): number {\n return this._highValue;\n}\n\n @Input() options: SliderOptions = {};\n @Input() color: string = 'accent';\n @Input() disabled: boolean | string = false;\n \n @Output() valueChange = new EventEmitter<number>();\n @Output() highValueChange = new EventEmitter<number>();\n @Output() userChange = new EventEmitter<number>();\n @Output() userChangeEnd = new EventEmitter<number>();\n\n @ViewChild('sliderElement', { static: false }) sliderElement?: ElementRef;\n\n private destroy$ = new Subject<void>();\n private isDragging = false;\n private draggingPointer: 'low' | 'high' | null = null;\n private lastUpdateTime = 0;\n private animationFrameId: number | null = null;\n private isRangeInternal = false;\n\n private readonly defaultOptions: SliderOptions = {\n floor: 0,\n ceil: 100,\n step: 1,\n disabled: false,\n pushRange: false,\n noSwitching: false,\n minRange: 0,\n maxRange: 0,\n animate: true,\n draggableRange: false,\n draggableRangeOnly: false,\n showSelectionBar: true,\n showSelectionBarEnd: false,\n showSelectionBarFromValue: 0,\n showSelectionBarToValue: 0,\n hidePointerLabels: false,\n hideLimitLabels: false,\n keyboardSupport: true,\n scale: 1,\n enforceRange: false,\n enforceStep: false,\n noCommaStyle: false,\n bindIndexForPushRange: false,\n combineLabels: false,\n format: (value: number) => value.toString(),\n combinePossible: false,\n includeTicksScale: false,\n logScale: false,\n translate: (value: number) => value.toString()\n };\n\n private onChange = (value: any) => {};\n private onTouched = () => {};\n\n private boundOnMouseMove = this.onMouseMove.bind(this);\n private boundOnMouseUp = this.onMouseUp.bind(this);\n\n constructor(private cdr: ChangeDetectorRef, private elementRef: ElementRef) {}\n\n public get mergedOptions(): SliderOptions {\n return { ...this.defaultOptions, ...this.options };\n }\n\n public get isRange(): boolean {\n return this.isRangeInternal;\n }\n\n public get percentage(): number {\n return this.valueToPercentage(this.value);\n }\n\n public get highPercentage(): number {\n return this.valueToPercentage(this.highValue);\n }\n\n public get selectionBarStyle(): any {\n if (this.isRange) {\n const left = Math.min(this.percentage, this.highPercentage);\n const width = Math.abs(this.highPercentage - this.percentage);\n return {\n left: `${left}%`,\n width: `${width}%`\n };\n } else {\n return {\n left: '0%',\n width: `${this.percentage}%`\n };\n }\n }\n\n public get isAtMaxValue(): boolean {\n const ceil = this.mergedOptions.ceil || 100;\n if (this.isRange) {\n return this.highValue >= ceil;\n } else {\n return this.value >= ceil;\n }\n }\n\n public get isAtMinValue(): boolean {\n const floor = this.mergedOptions.floor || 0;\n if (this.isRange) {\n return this.value <= floor || this.highValue <= floor;\n } else {\n return this.value <= floor;\n }\n }\n\n public get isDisabled(): boolean {\n if (typeof this.disabled === 'string') {\n const stringDisabled = this.disabled === '' || (this.disabled !== 'false');\n return stringDisabled || Boolean(this.mergedOptions.disabled);\n }\n return Boolean(this.disabled) || Boolean(this.mergedOptions.disabled);\n }\n\n public ngOnInit(): void {\n this.initializeValues();\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.cleanupEventListeners();\n this.cancelAnimationFrame();\n }\n\n private initializeValues(): void {\n if (this.isRange && this._highValue === 0) {\n this.highValue = this.mergedOptions.ceil!;\n }\n }\n private valueToPercentage(value: number): number {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n return ((value - floor) / (ceil - floor)) * 100;\n }\n\n private percentageToValue(percentage: number): number {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const value = (percentage / 100) * (ceil - floor) + floor;\n return this.snapToStep(value);\n }\n\n private snapToStep(value: number): number {\n const step = this.mergedOptions.step || 1;\n return Math.round(value / step) * step;\n }\n\n public onPointerMouseDown(event: MouseEvent, isHighValue: boolean = false): void {\n if (this.isDisabled) return;\n \n event.preventDefault();\n event.stopPropagation();\n \n this.isDragging = true;\n this.draggingPointer = isHighValue ? 'high' : 'low';\n \n this.addVisualFeedback();\n this.addEventListeners();\n }\n\n public onTrackMouseDown(event: MouseEvent): void {\n if (this.isDisabled) return;\n \n const sliderElement = this.elementRef.nativeElement.querySelector('.matcha-slider');\n if (!sliderElement) return;\n \n const rect = sliderElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n this.handleRangeTrackClick(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n private addEventListeners(): void {\n document.addEventListener('mousemove', this.boundOnMouseMove);\n document.addEventListener('mouseup', this.boundOnMouseUp);\n document.addEventListener('mouseleave', this.boundOnMouseUp);\n }\n\n private cleanupEventListeners(): void {\n document.removeEventListener('mousemove', this.boundOnMouseMove);\n document.removeEventListener('mouseup', this.boundOnMouseUp);\n document.removeEventListener('mouseleave', this.boundOnMouseUp);\n }\n\n private onMouseMove(event: MouseEvent): void {\n if (!this.isDragging || !this.draggingPointer) return;\n \n const now = Date.now();\n if (now - this.lastUpdateTime < 16) return;\n this.lastUpdateTime = now;\n \n this.cancelAnimationFrame();\n this.animationFrameId = requestAnimationFrame(() => {\n this.updateSliderPosition(event);\n });\n }\n\n private updateSliderPosition(event: MouseEvent): void {\n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n if (this.draggingPointer === 'low') {\n this.updateLowValue(newValue);\n } else {\n this.updateHighValue(newValue);\n }\n } else {\n this.updateSingleValue(newValue);\n }\n \n this.cdr.detectChanges();\n }\n\n private onMouseUp(): void {\n if (this.isDragging) {\n this.isDragging = false;\n this.draggingPointer = null;\n \n this.removeVisualFeedback();\n this.userChangeEnd.emit(this.value);\n this.onChange(this.isRange ? [this.value, this.highValue] : this.value);\n this.onTouched();\n }\n \n this.cleanupEventListeners();\n this.cancelAnimationFrame();\n }\n\n public onPointerClick(event: MouseEvent, isHighValue: boolean = false): void {\n if (this.isDragging) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n \n if (this.isDisabled) return;\n \n event.stopPropagation();\n \n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n if (isHighValue) {\n this.updateHighValue(newValue);\n } else {\n this.updateLowValue(newValue);\n }\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n public onTrackClick(event: MouseEvent): void {\n if (this.isDisabled) return;\n \n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n this.updateRangeValues(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n private calculateValueFromPosition(clientX: number, rect: DOMRect): number {\n const clickX = clientX - rect.left;\n const percentage = Math.max(0, Math.min(100, (clickX / rect.width) * 100));\n return this.percentageToValue(percentage);\n }\n\n private handleRangeTrackClick(newValue: number): void {\n const lowDistance = Math.abs(newValue - this.value);\n const highDistance = Math.abs(newValue - this.highValue);\n \n this.draggingPointer = lowDistance <= highDistance ? 'low' : 'high';\n \n if (this.draggingPointer === 'low') {\n this.updateLowValue(newValue);\n } else {\n this.updateHighValue(newValue);\n }\n }\n\n private addVisualFeedback(): void {\n if (this.sliderElement) {\n this.sliderElement.nativeElement.classList.add('dragging');\n }\n }\n\n private removeVisualFeedback(): void {\n if (this.sliderElement) {\n this.sliderElement.nativeElement.classList.remove('dragging');\n }\n }\n\n private cancelAnimationFrame(): void {\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n }\n\n private updateSingleValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (clampedValue !== this.value) {\n this.value = clampedValue;\n this.valueChange.emit(this.value);\n this.userChange.emit(this.value);\n this.onChange(this.value);\n this.cdr.markForCheck();\n }\n }\n\n private updateRangeValues(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n const lowDistance = Math.abs(clampedValue - this.value);\n const highDistance = Math.abs(clampedValue - this.highValue);\n \n if (lowDistance < highDistance) {\n this.updateLowValue(clampedValue);\n } else {\n this.updateHighValue(clampedValue);\n }\n }\n\n private updateLowValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const minRange = this.mergedOptions.minRange || 0;\n const maxRange = this.mergedOptions.maxRange || 0;\n \n let clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (maxRange > 0) {\n clampedValue = Math.min(clampedValue, this.highValue - maxRange);\n }\n \n if (minRange > 0) {\n clampedValue = Math.max(clampedValue, this.highValue - minRange);\n }\n \n if (this.mergedOptions.noSwitching) {\n clampedValue = Math.min(clampedValue, this.highValue);\n }\n \n if (clampedValue !== this.value) {\n this.value = clampedValue;\n this.valueChange.emit(this.value);\n this.userChange.emit(this.value);\n this.onChange([this.value, this.highValue]);\n this.cdr.markForCheck();\n }\n }\n\n private updateHighValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const minRange = this.mergedOptions.minRange || 0;\n const maxRange = this.mergedOptions.maxRange || 0;\n \n let clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (maxRange > 0) {\n clampedValue = Math.min(clampedValue, this.value + maxRange);\n }\n \n if (minRange > 0) {\n clampedValue = Math.max(clampedValue, this.value + minRange);\n }\n \n if (this.mergedOptions.noSwitching) {\n clampedValue = Math.max(clampedValue, this.value);\n }\n \n if (clampedValue !== this.highValue) {\n this.highValue = clampedValue;\n this.highValueChange.emit(this.highValue);\n this.userChange.emit(this.highValue);\n this.onChange([this.value, this.highValue]);\n this.cdr.markForCheck();\n }\n }\n\n public onKeyDown(event: KeyboardEvent): void {\n if (this.isDisabled || !this.mergedOptions.keyboardSupport) return;\n \n const step = this.mergedOptions.step || 1;\n let newValue = this.value;\n \n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n newValue = this.value + step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n newValue = this.value - step;\n break;\n case 'Home':\n event.preventDefault();\n newValue = this.mergedOptions.floor || 0;\n break;\n case 'End':\n event.preventDefault();\n newValue = this.mergedOptions.ceil || 100;\n break;\n case 'PageUp':\n event.preventDefault();\n newValue = this.value + (step * 10);\n break;\n case 'PageDown':\n event.preventDefault();\n newValue = this.value - (step * 10);\n break;\n default:\n return;\n }\n \n if (this.isRange) {\n this.updateRangeValues(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n\n\npublic writeValue(value: any): void {\n if (Array.isArray(value)) {\n this.isRangeInternal = true;\n this.value = value[0] || 0;\n this.highValue = value[1] ?? (this.mergedOptions.ceil || 100);\n } else if (typeof value === 'number') {\n this.isRangeInternal = false;\n this.value = value;\n }\n this.cdr.markForCheck();\n}\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n public getPointerStyle(isHighValue: boolean = false): any {\n const percentage = isHighValue ? this.highPercentage : this.percentage;\n return {\n left: `${percentage}%`\n };\n }\n\n public formatValue(value: number): string {\n return this.mergedOptions.format ? this.mergedOptions.format(value) : value.toString();\n }\n}","<!-- projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html -->\n\n<div class=\"matcha-slider\" [class.disabled]=\"isDisabled\" [class.range]=\"isRange\"\n [attr.data-color]=\"color\" #sliderElement>\n\n <div class=\"limit-labels\" *ngIf=\"!mergedOptions.hideLimitLabels\">\n <span class=\"floor-label\" [style.visibility]=\"isAtMinValue ? 'hidden' : 'visible'\">\n {{ formatValue(mergedOptions.floor || 0) }}\n </span>\n \n <span class=\"ceil-label\" [style.visibility]=\"isAtMaxValue ? 'hidden' : 'visible'\">\n {{ formatValue(mergedOptions.ceil || 100) }}\n </span>\n </div>\n \n <div class=\"slider-track\" (mousedown)=\"onTrackMouseDown($event)\" (click)=\"onTrackClick($event)\">\n\n <div class=\"selection-bar\" [style]=\"selectionBarStyle\" *ngIf=\"mergedOptions.showSelectionBar\">\n </div>\n\n <div class=\"pointer low-pointer\" [style]=\"getPointerStyle(false)\"\n [attr.tabindex]=\"isDisabled ? -1 : 0\"\n (mousedown)=\"onPointerMouseDown($event, false)\" (click)=\"onPointerClick($event, false)\"\n (keydown)=\"onKeyDown($event)\" role=\"slider\" [attr.aria-valuemin]=\"mergedOptions.floor\"\n [attr.aria-valuemax]=\"mergedOptions.ceil\" [attr.aria-valuenow]=\"value\"\n [attr.aria-disabled]=\"isDisabled\">\n\n <div class=\"pointer-label\" *ngIf=\"!mergedOptions.hidePointerLabels\">\n {{ formatValue(value) }}\n </div>\n </div>\n\n <div class=\"pointer high-pointer\" [style]=\"getPointerStyle(true)\"\n [attr.tabindex]=\"isDisabled ? -1 : 0\" (mousedown)=\"onPointerMouseDown($event, true)\"\n (click)=\"onPointerClick($event, true)\" (keydown)=\"onKeyDown($event)\" role=\"slider\"\n [attr.aria-valuemin]=\"mergedOptions.floor\" [attr.aria-valuemax]=\"mergedOptions.ceil\"\n [attr.aria-valuenow]=\"highValue\" [attr.aria-disabled]=\"isDisabled\" *ngIf=\"isRange\">\n\n <div class=\"pointer-label\" *ngIf=\"!mergedOptions.hidePointerLabels\">\n {{ formatValue(highValue) }}\n </div>\n </div>\n </div>\n\n</div>","import { Component, Input, Output, EventEmitter, ElementRef, HostBinding, HostListener, AfterViewInit, ContentChildren, QueryList, OnInit } from '@angular/core';\n\n@Component({\n selector: 'matcha-chip',\n standalone: false,\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss']\n})\nexport class MatchaChipComponent implements OnInit, AfterViewInit {\n @HostBinding('class')\n get hostClasses(): string {\n return 'matcha-chip radius-full d-flex align-items-center gap-8 px-14 py-10 h-20';\n }\n /** Cor do chip (primary, accent, warn) */\n @Input() color: 'primary' | 'accent' | 'warn' | string = 'default';\n \n /** Se o chip está selecionado */\n @Input() \n get selected(): boolean {\n return this._selected;\n }\n set selected(value: boolean) {\n this._selected = value;\n this.selectedChange.emit(this._selected);\n }\n private _selected = false;\n\n /** Se o chip pode ser selecionado */\n @Input() selectable: boolean = false;\n\n /** Se o chip pode ser removido */\n @Input() removable: boolean = false;\n\n /** Se o chip está desabilitado */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled = false;\n\n /** Valor associado ao chip */\n @Input() value: any = null;\n\n /** Evento emitido quando o chip é selecionado */\n @Output() selectedChange = new EventEmitter<boolean>();\n\n /** Evento emitido quando o botão de remover é clicado */\n @Output() removed = new EventEmitter<MatchaChipComponent>();\n\n /** Evento emitido quando o chip é destruído */\n @Output() destroyed = new EventEmitter<MatchaChipComponent>();\n\n \n\n constructor(public _elementRef: ElementRef) {}\n\n ngOnInit() {\n // Aplica as classes CSS diretamente no elemento\n const element = this._elementRef.nativeElement;\n element.classList.add('matcha-chip', 'radius-full', 'd-flex', 'align-items-center', 'gap-8', 'px-14', 'py-10', 'h-20');\n }\n\n ngAfterViewInit() {\n this._setupChipRemoveDirective();\n }\n\n private _setupChipRemoveDirective() {\n // Usa event delegation para capturar cliques em elementos com matchaChipRemove\n this._elementRef.nativeElement.addEventListener('click', (event: Event) => {\n const target = event.target as Element;\n \n // Verifica se o elemento clicado tem o atributo matchaChipRemove\n // ou se é um elemento filho de um elemento com matchaChipRemove\n const removeElement = target.closest('[matchaChipRemove]');\n \n if (removeElement) {\n event.stopPropagation();\n event.preventDefault();\n if (this.removable && !this.disabled) {\n this.remove();\n }\n }\n });\n }\n\n hasCustomRemoveIcon(): boolean {\n return this._elementRef.nativeElement.querySelector('[matchaChipRemove]') !== null;\n }\n\n /** Manipula o clique no chip */\n @HostListener('click', ['$event'])\n _handleClick(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.selectable) {\n this.toggleSelected();\n }\n }\n\n /** Manipula o evento de teclado */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n if (this.disabled) {\n return;\n }\n\n switch (event.key) {\n case 'Delete':\n case 'Backspace':\n if (this.removable) {\n this.remove();\n event.preventDefault();\n }\n break;\n case ' ':\n case 'Enter':\n if (this.selectable) {\n this.toggleSelected();\n event.preventDefault();\n }\n break;\n }\n }\n\n /** Alterna o estado de seleção do chip */\n toggleSelected(): void {\n if (this.selectable && !this.disabled) {\n this.selected = !this.selected;\n }\n }\n\n /** Remove o chip */\n remove(): void {\n if (this.removable && !this.disabled) {\n this.removed.emit(this);\n }\n }\n\n /** Foco no elemento do chip */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnDestroy() {\n this.destroyed.emit(this);\n }\n}\n","<span class=\"matcha-chip-content color-label\">\n <ng-content></ng-content>\n</span>\n<ng-container *ngIf=\"removable && !hasCustomRemoveIcon()\">\n <matcha-divider direction=\"vertical\" gap=\"0\"></matcha-divider>\n <button \n type=\"button\"\n class=\"matcha-chip-remove d-flex align-items-center justify-content-center w-20 h-20 min-w-20 radius-full cursor-pointer border-0 background-transparent p-0 m-0\"\n [disabled]=\"disabled\"\n (click)=\"remove(); $event.stopPropagation()\"\n tabindex=\"-1\"\n aria-label=\"Remove\"\n matchaChipRemove>\n <matcha-icon name=\"close\" class=\"fs-14\" color=\"label\"></matcha-icon>\n </button>\n</ng-container>\n","import { \n Component, \n Input, \n Output, \n EventEmitter, \n ContentChildren, \n QueryList, \n AfterContentInit,\n HostBinding,\n HostListener,\n forwardRef,\n OnDestroy,\n OnInit,\n ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatchaChipComponent } from '../chip/chip.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-chip-list',\n standalone: false,\n templateUrl: './chip-list.component.html',\n styleUrls: ['./chip-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaChipListComponent),\n multi: true\n }\n ]\n})\nexport class MatchaChipListComponent implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor {\n \n /** Se múltiplos chips podem ser selecionados */\n @Input() multiple: boolean = false;\n\n /** Se os chips podem ser selecionados */\n @Input() selectable: boolean = false;\n\n /** Se a chip list está desabilitada */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._updateChipsDisabledState();\n }\n private _disabled = false;\n\n /** Valor(es) selecionado(s) */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n this._value = newValue;\n this._updateChipsSelectionState();\n }\n private _value: any;\n\n /** Orientação da lista de chips */\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /** Evento emitido quando a seleção muda */\n @Output() change = new EventEmitter<any>();\n\n /** Evento emitido quando um chip é removido */\n @Output() removed = new EventEmitter<MatchaChipComponent>();\n\n @ContentChildren(MatchaChipComponent, { descendants: true }) \n chips!: QueryList<MatchaChipComponent>;\n\n @HostBinding('class.matcha-chip-list') chipListClass = true;\n @HostBinding('class.matcha-chip-list-disabled') \n get isDisabled() { return this.disabled; }\n\n @HostBinding('attr.role') role = 'listbox';\n \n @HostBinding('attr.aria-multiselectable')\n get ariaMultiselectable() { return this.multiple ? 'true' : null; }\n\n @HostBinding('attr.aria-disabled')\n get ariaDisabled() { return this.disabled.toString(); }\n\n private _chipSubscriptions: Subscription[] = [];\n private _focusedChipIndex = 0;\n\n // ControlValueAccessor\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(public _elementRef: ElementRef) {}\n\n ngOnInit() {\n // Aplica as classes CSS diretamente no elemento\n const element = this._elementRef.nativeElement;\n element.classList.add('matcha-chip-list');\n }\n\n ngAfterContentInit() {\n this._setupChipListeners();\n this._updateChipsSelectionState();\n this._updateChipsDisabledState();\n\n // Observa mudanças na lista de chips\n this.chips.changes.subscribe(() => {\n this._cleanupChipSubscriptions();\n this._setupChipListeners();\n this._updateChipsSelectionState();\n this._updateChipsDisabledState();\n });\n }\n\n ngOnDestroy() {\n this._cleanupChipSubscriptions();\n }\n\n /** Configura listeners para os chips */\n private _setupChipListeners() {\n this.chips.forEach((chip, index) => {\n // Torna os chips selecionáveis se a lista for selecionável\n if (this.selectable) {\n chip.selectable = true;\n }\n\n // Listener para mudanças de seleção\n const selectedChangeSub = chip.selectedChange.subscribe(() => {\n this._onChipSelectionChange(chip);\n });\n\n // Listener para remoção de chips\n const removedSub = chip.removed.subscribe(() => {\n this._onChipRemoved(chip);\n });\n\n this._chipSubscriptions.push(selectedChangeSub, removedSub);\n });\n }\n\n /** Limpa as subscrições dos chips */\n private _cleanupChipSubscriptions() {\n this._chipSubscriptions.forEach(sub => sub.unsubscribe());\n this._chipSubscriptions = [];\n }\n\n /** Manipula mudança de seleção de um chip */\n private _onChipSelectionChange(chip: MatchaChipComponent) {\n if (this.disabled) {\n return;\n }\n\n if (!this.multiple) {\n // Deseleciona todos os outros chips se não for múltiplo\n this.chips.forEach(c => {\n if (c !== chip && c.selected) {\n c.selected = false;\n }\n });\n }\n\n this._updateValue();\n this.onTouched();\n }\n\n /** Manipula remoção de um chip */\n private _onChipRemoved(chip: MatchaChipComponent) {\n if (this.disabled) {\n return;\n }\n\n // Remove o chip da seleção se estiver selecionado\n if (chip.selected) {\n chip.selected = false;\n this._updateValue();\n }\n\n // Emite o evento de remoção\n this.removed.emit(chip);\n this.onTouched();\n }\n\n\n\n /** Atualiza o valor baseado nos chips selecionados */\n private _updateValue() {\n if (this.multiple) {\n this._value = this.chips\n .filter(chip => chip.selected)\n .map(chip => chip.value);\n } else {\n const selectedChip = this.chips.find(chip => chip.selected);\n this._value = selectedChip ? selectedChip.value : null;\n }\n\n this.onChange(this._value);\n this.change.emit(this._value);\n }\n\n /** Atualiza o estado de seleção dos chips baseado no valor */\n private _updateChipsSelectionState() {\n if (!this.chips) {\n return;\n }\n\n if (this.multiple && Array.isArray(this._value)) {\n this.chips.forEach(chip => {\n chip.selected = this._value.includes(chip.value);\n });\n } else {\n this.chips.forEach(chip => {\n chip.selected = chip.value === this._value;\n });\n }\n }\n\n /** Atualiza o estado desabilitado dos chips */\n private _updateChipsDisabledState() {\n if (!this.chips) {\n return;\n }\n\n this.chips.forEach(chip => {\n chip.disabled = this.disabled;\n });\n }\n\n /** Manipula navegação por teclado */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n if (this.disabled || !this.chips || this.chips.length === 0) {\n return;\n }\n\n const chipsArray = this.chips.toArray();\n const isHorizontal = this.orientation === 'horizontal';\n\n switch (event.key) {\n case isHorizontal ? 'ArrowLeft' : 'ArrowUp':\n this._focusPreviousChip();\n event.preventDefault();\n break;\n case isHorizontal ? 'ArrowRight' : 'ArrowDown':\n this._focusNextChip();\n event.preventDefault();\n break;\n case 'Home':\n this._focusFirstChip();\n event.preventDefault();\n break;\n case 'End':\n this._focusLastChip();\n event.preventDefault();\n break;\n }\n }\n\n /** Foca no chip anterior */\n private _focusPreviousChip() {\n const chipsArray = this.chips.toArray();\n if (this._focusedChipIndex > 0) {\n this._focusedChipIndex--;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n /** Foca no próximo chip */\n private _focusNextChip() {\n const chipsArray = this.chips.toArray();\n if (this._focusedChipIndex < chipsArray.length - 1) {\n this._focusedChipIndex++;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n /** Foca no primeiro chip */\n private _focusFirstChip() {\n const chipsArray = this.chips.toArray();\n if (chipsArray.length > 0) {\n this._focusedChipIndex = 0;\n chipsArray[0].focus();\n }\n }\n\n /** Foca no último chip */\n private _focusLastChip() {\n const chipsArray = this.chips.toArray();\n if (chipsArray.length > 0) {\n this._focusedChipIndex = chipsArray.length - 1;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"matcha-chip-list-wrapper\" [class.matcha-chip-list-vertical]=\"orientation === 'vertical'\">\n <ng-content></ng-content>\n</div>","import { Directive, ElementRef, HostListener, Input, Renderer2, OnDestroy, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[matchaTooltip]',\n standalone: false\n})\nexport class MatchaTooltipDirective implements OnDestroy {\n @Input('matchaTooltip') tooltipText: string = '';\n private _tooltipDisabled = false;\n @Input('matchaTooltipDisabled') get tooltipDisabled() { return this._tooltipDisabled; }\n set tooltipDisabled(v: boolean | string) { this._tooltipDisabled = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-disabled')\n get tooltipDisabledAttr(): string | null {\n return this.tooltipDisabled ? 'true' : 'false';\n }\n\n private _preferAbove = false;\n @Input('matchaTooltipAbove') get preferAbove() { return this._preferAbove; }\n set preferAbove(v: boolean | string) { this._preferAbove = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-above')\n get preferAboveAttr(): string | null {\n return this.preferAbove ? 'true' : 'false';\n }\n\n private _preferBelow = false;\n @Input('matchaTooltipBelow') get preferBelow() { return this._preferBelow; }\n set preferBelow(v: boolean | string) { this._preferBelow = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-below')\n get preferBelowAttr(): string | null {\n return this.preferBelow ? 'true' : 'false';\n }\n\n private _preferLeft = false;\n @Input('matchaTooltipLeft') get preferLeft() { return this._preferLeft; }\n set preferLeft(v: boolean | string) { this._preferLeft = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-left')\n get preferLeftAttr(): string | null {\n return this.preferLeft ? 'true' : 'false';\n }\n\n private _preferRight = false;\n @Input('matchaTooltipRight') get preferRight() { return this._preferRight; }\n set preferRight(v: boolean | string) { this._preferRight = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-right')\n get preferRightAttr(): string | null {\n return this.preferRight ? 'true' : 'false';\n }\n\n private _tooltipEnableClose = false;\n @Input('matchaTooltipEnableClose') get tooltipEnableClose() { return this._tooltipEnableClose; }\n set tooltipEnableClose(v: boolean | string) { this._tooltipEnableClose = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-enable-close')\n get tooltipEnableCloseAttr(): string | null {\n return this.tooltipEnableClose ? 'true' : 'false';\n }\n\n private tooltipElement: HTMLElement | null = null;\n private documentClickListener: (() => void) | null = null;\n private isDestroyed = false;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.isDestroyed || this.tooltipEnableClose) {\n // Em modo de clique/tap, não abre via hover\n return;\n }\n if (this.tooltipDisabled || this.tooltipElement || !this.tooltipText) {\n return;\n }\n this.createTooltip();\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.isDestroyed || (!this.tooltipEnableClose && this.tooltipElement)) {\n this.destroyTooltip();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.isDestroyed || !this.tooltipEnableClose) {\n return;\n }\n event.stopPropagation();\n if (!this.tooltipElement && !this.tooltipDisabled && this.tooltipText) {\n this.createTooltip();\n }\n }\n\n private createTooltip() {\n // Verificar se já existe um tooltip ativo\n if (this.tooltipElement || this.isDestroyed) {\n return;\n }\n\n // Cria o tooltip e adiciona a classe base\n this.tooltipElement = this.renderer.createElement('div');\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content');\n\n // Define o conteúdo do tooltip\n this.tooltipElement!.textContent = this.tooltipText;\n\n // Define estilos iniciais para medição\n this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');\n this.renderer.setStyle(this.tooltipElement, 'top', '0');\n this.renderer.setStyle(this.tooltipElement, 'left', '0');\n this.renderer.setStyle(this.tooltipElement, 'visibility', 'hidden');\n this.renderer.appendChild(document.body, this.tooltipElement);\n\n // Se tooltipEnableClose estiver ativo, adiciona o botão de fechar\n if (this.tooltipEnableClose) {\n const closeButton = this.renderer.createElement('div');\n this.renderer.addClass(closeButton, 'matcha-tooltip-close');\n this.renderer.appendChild(this.tooltipElement, closeButton);\n this.renderer.listen(closeButton, 'click', (e: Event) => {\n e.stopPropagation();\n this.destroyTooltip();\n });\n // Remover listener anterior se existir\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n\n this.documentClickListener = this.renderer.listen('document', 'click', (e: Event) => {\n if (this.tooltipElement && !this.tooltipElement.contains(e.target as Node)) {\n this.destroyTooltip();\n }\n });\n }\n\n // Medidas e cálculo de posição\n const margin = 8;\n const hostRect = this.el.nativeElement.getBoundingClientRect();\n const tooltipRect = this.tooltipElement!.getBoundingClientRect();\n\n const hasSpaceAbove = hostRect.top >= tooltipRect.height + margin;\n const hasSpaceBelow = (window.innerHeight - hostRect.bottom) >= tooltipRect.height + margin;\n const hasSpaceLeft = hostRect.left >= tooltipRect.width + margin;\n const hasSpaceRight = (window.innerWidth - hostRect.right) >= tooltipRect.width + margin;\n\n let chosenPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n if (this.preferAbove && hasSpaceAbove) {\n chosenPosition = 'above';\n } else if (this.preferBelow && hasSpaceBelow) {\n chosenPosition = 'below';\n } else if (this.preferLeft && hasSpaceLeft) {\n chosenPosition = 'left';\n } else if (this.preferRight && hasSpaceRight) {\n chosenPosition = 'right';\n } else {\n chosenPosition = hasSpaceAbove ? 'above' : (hasSpaceBelow ? 'below' : 'above');\n }\n\n let top: number = 0;\n let left: number = 0;\n switch (chosenPosition) {\n case 'above':\n top = hostRect.top + window.scrollY - tooltipRect.height - margin;\n left = hostRect.left + window.scrollX + (hostRect.width - tooltipRect.width) / 2;\n break;\n case 'below':\n top = hostRect.bottom + window.scrollY + margin;\n left = hostRect.left + window.scrollX + (hostRect.width - tooltipRect.width) / 2;\n break;\n case 'left':\n top = hostRect.top + window.scrollY + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.left + window.scrollX - tooltipRect.width - margin;\n break;\n case 'right':\n top = hostRect.top + window.scrollY + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.right + window.scrollX + margin;\n break;\n }\n\n if (left < margin) {\n left = margin;\n } else if (left + tooltipRect.width > window.innerWidth - margin) {\n left = window.innerWidth - tooltipRect.width - margin;\n }\n\n this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);\n this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);\n this.renderer.setStyle(this.tooltipElement, 'visibility', 'visible');\n\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_below');\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_left');\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_right');\n if (chosenPosition === 'below') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_below');\n } else if (chosenPosition === 'left') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_left');\n } else if (chosenPosition === 'right') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_right');\n }\n }\n\n private destroyTooltip() {\n if (this.tooltipElement) {\n this.renderer.removeChild(document.body, this.tooltipElement);\n this.tooltipElement = null;\n }\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n ngOnDestroy() {\n this.isDestroyed = true;\n this.destroyTooltip();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { MatchaTooltipComponent } from './tooltip/tooltip.component';\nimport { MatchaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [MatchaTooltipDirective],\n imports: [CommonModule],\n exports: [MatchaTooltipDirective],\n})\nexport class MatchaTooltipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconComponent } from './icon.component';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n@NgModule({\n declarations: [MatchaIconComponent],\n imports: [CommonModule, MatchaTooltipModule],\n exports: [MatchaIconComponent],\n})\nexport class MatchaIconModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaTitleComponent } from './title/title.component';\n\n@NgModule({\n declarations: [MatchaTitleComponent],\n imports: [CommonModule],\n exports: [MatchaTitleComponent],\n})\nexport class MatchaTitleModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaDividerComponent } from './divider/divider.component';\n\n@NgModule({\n declarations: [\n MatchaDividerComponent\n ],\n imports: [CommonModule],\n exports: [\n MatchaDividerComponent\n ],\n})\nexport class MatchaDividerModule {}\n","import { NgModule } from '@angular/core';\n\nimport { MatchaButtonComponent } from './button/button.component';\n\n@NgModule({\n declarations: [MatchaButtonComponent],\n imports: [],\n exports: [MatchaButtonComponent],\n})\nexport class MatchaButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAccordionComponent } from './accordion/accordion.component';\nimport { MatchaAccordionItemComponent } from './accordion-item/accordion-item.component';\nimport { MatchaAccordionHeaderComponent } from './accordion-header/accordion-header.component';\nimport { MatchaAccordionContentComponent } from './accordion-content/accordion-content.component';\n\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\n\n\n@NgModule({\n declarations: [\n MatchaAccordionComponent,\n MatchaAccordionItemComponent,\n MatchaAccordionHeaderComponent,\n MatchaAccordionContentComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n MatchaButtonModule\n ],\n exports: [\n MatchaAccordionComponent,\n MatchaAccordionItemComponent,\n MatchaAccordionHeaderComponent,\n MatchaAccordionContentComponent\n ]\n})\nexport class MatchaAccordionModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaInfiniteScrollComponent } from './matcha-infinite-scroll/matcha-infinite-scroll.component';\nimport { MatchaInfiniteScrollDataComponent } from './matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\n\n\n@NgModule({\n declarations: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent]\n})\nexport class MatchaInfiniteScrollModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaLazyloadComponent } from './lazyload/lazyload.component';\nimport { MatchaLazyloadDataComponent } from './lazyload-data/lazyload-data.component';\n\n\n@NgModule({\n declarations: [MatchaLazyloadComponent, MatchaLazyloadDataComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaLazyloadComponent, MatchaLazyloadDataComponent]\n})\nexport class MatchaLazyloadModule { }\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[elevation]',\n standalone: false\n})\nexport class MatchaElevationDirective {\n @Input('elevation') elevation: number | string = 0; // Valor padrão para elevação é 0\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {}\n\n ngOnChanges() {\n // Remove qualquer classe de elevação existente\n for (let i = 0; i <= 24; i++) {\n this._renderer.removeClass(this._elementRef.nativeElement, `elevation-z-${i}`);\n }\n\n // Converte para número se for string\n const elevationValue = typeof this.elevation === 'string'\n ? parseInt(this.elevation, 10)\n : this.elevation;\n\n // Adiciona a classe de elevação correspondente\n if (elevationValue >= 1 && elevationValue <= 24) {\n this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-${elevationValue}`);\n } else {\n this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-0`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaElevationDirective } from './elevation.directive';\n\n@NgModule({\n declarations: [MatchaElevationDirective],\n imports: [CommonModule],\n exports: [MatchaElevationDirective],\n})\nexport class MatchaElevationModule {}\n","import { Injectable, ComponentRef, createComponent, ApplicationRef, Injector, Type, EmbeddedViewRef, Renderer2, RendererFactory2 } from '@angular/core';\n\n/**\n * Serviço responsável pela implementação técnica do overlay e backdrop dos modais.\n *\n * Este serviço lida com a criação e gerenciamento do container do overlay,\n * criação do backdrop e manipulação do DOM. É um serviço de baixo nível\n * utilizado internamente pelo MatchaModalService.\n *\n * @example\n * ```typescript\n * constructor(private overlayService: MatchaOverlayService) {}\n *\n * createOverlay() {\n * this.overlayService.open(MyComponent);\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class MatchaOverlayService {\n private overlayContainer: HTMLElement | null = null;\n private activeModal: ComponentRef<any> | null = null;\n private backdrop: HTMLElement | null = null;\n private renderer: Renderer2;\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector,\n private rendererFactory: RendererFactory2,\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n /**\n * Cria o container do overlay se ainda não existir.\n * O container é um elemento div que será usado para hospedar os modais.\n *\n * @private\n */\n private createOverlayContainer(): void {\n if (!this.overlayContainer) {\n this.overlayContainer = this.renderer.createElement('div');\n this.renderer.addClass(this.overlayContainer, 'matcha-overlay-container');\n this.renderer.appendChild(document.body, this.overlayContainer);\n }\n }\n\n /**\n * Remove o container do overlay do DOM.\n *\n * @private\n */\n private removeOverlayContainer(): void {\n if (this.overlayContainer) {\n this.renderer.removeChild(document.body, this.overlayContainer);\n this.overlayContainer = null;\n }\n }\n\n /**\n * Cria o backdrop do modal se ainda não existir.\n * O backdrop é um elemento div que cria o efeito de escurecimento\n * por trás do modal.\n *\n * @private\n */\n private createBackdrop(): void {\n if (!this.backdrop) {\n this.backdrop = this.renderer.createElement('div');\n this.renderer.addClass(this.backdrop, 'matcha-modal-backdrop');\n this.renderer.appendChild(document.body, this.backdrop);\n }\n }\n\n /**\n * Remove o backdrop do modal do DOM.\n *\n * @private\n */\n private removeBackdrop(): void {\n if (this.backdrop) {\n this.renderer.removeChild(document.body, this.backdrop);\n this.backdrop = null;\n }\n }\n\n /**\n * Abre um componente dentro de um modal.\n *\n * @param component - O componente que será exibido dentro do modal\n * @param config - Configurações opcionais para o modal\n * @returns Uma referência ao componente criado\n *\n * @example\n * ```typescript\n * const componentRef = this.overlayService.open(MyComponent, {\n * data: { id: 1 }\n * });\n * ```\n */\n open<T>(component: Type<T>, config: any = {}): ComponentRef<T> {\n this.createOverlayContainer();\n this.createBackdrop();\n\n const componentRef = createComponent(component, {\n environmentInjector: this.appRef.injector,\n elementInjector: this.injector,\n });\n\n const componentElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\n this.renderer.appendChild(this.overlayContainer, componentElement);\n\n this.appRef.attachView(componentRef.hostView);\n this.activeModal = componentRef;\n\n return componentRef;\n }\n\n /**\n * Fecha o modal atualmente aberto e remove o backdrop e o container.\n *\n * @example\n * ```typescript\n * this.overlayService.close();\n * ```\n */\n close(): void {\n if (this.activeModal) {\n this.appRef.detachView(this.activeModal.hostView);\n this.activeModal.destroy();\n this.activeModal = null;\n this.removeBackdrop();\n this.removeOverlayContainer();\n }\n }\n}\n","import { Injectable, Type } from '@angular/core';\nimport { MatchaOverlayService } from './overlay.service';\nimport { Subject, Observable } from 'rxjs';\n\nexport interface ModalComponent {\n afterClose?: Observable<any>;\n data?: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatchaModalService {\n private afterCloseSubject = new Subject<any>();\n private currentData: any = {};\n\n constructor(private overlayService: MatchaOverlayService) {}\n\n open<T extends ModalComponent>(component: Type<T>, data: any = {}) {\n this.currentData = data;\n const componentRef = this.overlayService.open(component, data);\n\n // Injeta os dados no componente\n componentRef.instance.data = data;\n\n if (componentRef.instance.afterClose) {\n componentRef.instance.afterClose.subscribe((result: any) => {\n this.afterCloseSubject.next(result);\n });\n }\n\n return {\n componentRef,\n afterClose: this.afterCloseSubject.asObservable()\n };\n }\n \n close(result?: any) {\n this.afterCloseSubject.next(result);\n this.overlayService.close();\n this.currentData = {};\n }\n\n getData(): any {\n return this.currentData;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\n\nimport { MatchaModalHeaderComponent } from './modal-header/modal-header.component';\nimport { MatchaModalContentComponent } from './modal-content/modal-content.component';\nimport { MatchaModalFooterComponent } from './modal-footer/modal-footer.component';\nimport { MatchaModalOptionsComponent } from './modal-options/modal-options.component';\nimport { MatchaModalComponent } from './modal/modal.component';\nimport { MatchaModalService } from './modal.service';\nimport { MatchaOverlayService } from './overlay.service';\n\n@NgModule({\n declarations: [\n MatchaModalHeaderComponent,\n MatchaModalContentComponent,\n MatchaModalFooterComponent,\n MatchaModalOptionsComponent,\n MatchaModalComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n MatchaElevationModule\n ],\n exports: [\n MatchaModalHeaderComponent,\n MatchaModalContentComponent,\n MatchaModalFooterComponent,\n MatchaModalOptionsComponent,\n MatchaModalComponent\n ],\n providers: [\n MatchaModalService,\n MatchaOverlayService\n ]\n})\nexport class MatchaModalModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaCardComponent } from './card/card.component';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n@NgModule({\n declarations: [MatchaCardComponent],\n imports: [\n CommonModule,\n MatchaElevationModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n ],\n exports: [MatchaCardComponent],\n})\nexport class MatchaCardModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaMasonryComponent } from './masonry/masonry.component';\n\n@NgModule({\n declarations: [MatchaMasonryComponent],\n imports: [CommonModule],\n exports: [MatchaMasonryComponent]\n})\nexport class MatchaMasonryModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaButtonToggleComponent } from './button-toggle/button-toggle.component';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n\n\n@NgModule({\n declarations: [MatchaButtonToggleComponent],\n imports: [\n CommonModule,\n MatchaTooltipModule\n ],\n exports: [MatchaButtonToggleComponent]\n})\nexport class MatchaButtonToggleModule { }\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaToolbarComponent } from '../matcha-toolbar/toolbar/toolbar.component';\nimport { MatchaToolbarButtonComponent } from \"./toolbar-button/toolbar-button.component\";\nimport { MatchaToolbarContentComponent } from \"./toolbar-content/toolbar-content.component\";\nimport { MatchaToolbarMainButtonComponent } from \"./toolbar-main-button/toolbar-main-button.component\";\nimport { MatchaToolbarCustomButtonComponent } from \"./toolbar-custom-button/toolbar-custom-button.component\";\n\n\n@NgModule({\n declarations: [\n MatchaToolbarComponent,\n MatchaToolbarButtonComponent,\n MatchaToolbarContentComponent,\n MatchaToolbarMainButtonComponent,\n MatchaToolbarCustomButtonComponent\n ],\n imports: [\n CommonModule,\n MatchaButtonModule,\n MatchaTitleModule,\n MatchaTooltipModule\n ],\n exports: [\n MatchaToolbarComponent,\n MatchaToolbarButtonComponent,\n MatchaToolbarContentComponent,\n MatchaToolbarMainButtonComponent,\n MatchaToolbarCustomButtonComponent,\n MatchaTitleModule\n ]\n})\nexport class MatchaToolbarModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaGridComponent } from './grid.component';\n\n@NgModule({\n declarations: [MatchaGridComponent],\n imports: [CommonModule],\n exports: [MatchaGridComponent],\n})\nexport class MatchaGridModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EventEmitter } from '@angular/core';\nimport { MatchaMaskCompatibleDirective } from './matcha-mask-compatible.directive';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MATCHA_MASK_CONFIG, MatchaMaskOptions } from './matcha-mask.config';\n\nexport const compatibleOptions: MatchaMaskOptions = {\n specialCharacters: ['/', '(', ')', '.', ':', '-', ' ', '+', ',', '@', '[', ']', '\"', \"'\", '*'],\n patterns: {\n '0': { pattern: /\\d/ },\n '9': { pattern: /\\d/, optional: true },\n 'A': { pattern: /[a-zA-Z0-9]/ },\n 'S': { pattern: /[a-zA-Z]/ }\n },\n prefix: '',\n suffix: '',\n thousandSeparator: '',\n decimalMarker: '.',\n clearIfNotMatch: false,\n showMaskTyped: false,\n placeHolderCharacter: '_',\n shownMaskExpression: '',\n dropSpecialCharacters: true,\n hiddenInput: false,\n validation: true,\n instantPrefix: false,\n separatorLimit: '',\n apm: false,\n allowNegativeNumbers: false,\n leadZeroDateTime: false,\n leadZero: false,\n triggerOnMaskChange: false,\n keepCharacterPositions: false,\n inputTransformFn: (v) => v as string,\n outputTransformFn: (v) => v,\n maskFilled: new EventEmitter<void>()\n};\n\n@NgModule({\n declarations: [\n MatchaMaskCompatibleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaMaskCompatibleDirective\n ],\n providers: [\n MatchaMaskService,\n { provide: MATCHA_MASK_CONFIG, useValue: compatibleOptions }\n ]\n})\nexport class MatchaMaskModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaFormFieldComponent } from './matcha-form-field/matcha-form-field.component';\nimport { MatchaLabelComponent } from './matcha-label/matcha-label.component';\nimport { MatchaErrorComponent } from './matcha-error/matcha-error.component';\n\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\n\n@NgModule({\n declarations: [MatchaFormFieldComponent, MatchaLabelComponent, MatchaErrorComponent],\n imports: [CommonModule, MatchaIconModule, ReactiveFormsModule, MatchaMaskModule],\n exports: [MatchaFormFieldComponent, MatchaLabelComponent, MatchaErrorComponent, ReactiveFormsModule, MatchaMaskModule],\n})\nexport class MatchaFormFieldModule {}\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy, Renderer2, ChangeDetectorRef, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[matchaAutocomplete]',\n standalone: false,\n})\nexport class MatchaAutocompleteTriggerDirective implements AfterViewInit, OnDestroy {\n @Input('matchaAutocomplete') panel!: MatchaAutocompleteComponent;\n private subs = new Subscription();\n private clearButton?: HTMLElement;\n\n constructor(\n private el: ElementRef<HTMLInputElement>,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef,\n @Optional() private ngControl: NgControl\n ) {}\n\n ngAfterViewInit() {\n if (!this.panel) {\n throw new Error('Você precisa passar uma referência para <matcha-autocomplete> ex: [matchaAutocomplete]=\"auto\"');\n }\n this.panel.attachTo(this.el.nativeElement);\n\n // close panel ao clicar fora - usando click para evitar conflito com focus\n const clickSub = fromEvent(document, 'click').pipe(\n filter((ev: any) => {\n const target = ev.target as Node;\n const isInsideInput = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\n const isInsidePanel = this.panel?.elRef?.nativeElement?.contains?.(target);\n\n console.log('MatchaAutocomplete: Click outside check', {\n target: target,\n inputElement: this.el.nativeElement,\n isInsideInput,\n isInsidePanel,\n shouldClose: !isInsideInput && !isInsidePanel,\n panelOpen: this.panel?.open\n });\n\n // Só fechar se o painel estiver aberto e clicou fora\n return this.panel?.open && !isInsideInput && !isInsidePanel;\n })\n ).subscribe(() => {\n console.log('MatchaAutocomplete: Fechando painel por click outside');\n this.panel.closePanel();\n });\n\n this.subs.add(clickSub);\n\n // Escutar evento de seleção do autocomplete\n const selectionSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe((event: any) => {\n console.log('MatchaAutocomplete: Evento de seleção recebido na diretiva', event.detail);\n const { value, displayText } = event.detail;\n if (value !== undefined) {\n // Usar displayText se fornecido, senão usar o valor diretamente\n const textToWrite = displayText !== undefined ? displayText : value;\n this.writeValueToInput(textToWrite, value);\n }\n });\n\n this.subs.add(selectionSub);\n\n // Escutar evento de limpeza\n const clearSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\n console.log('MatchaAutocomplete: Evento de limpeza recebido na diretiva');\n this.clearInput();\n });\n\n this.subs.add(clearSub);\n\n // Criar botão de limpar se necessário\n if (this.panel.showClearButton) {\n this.createClearButton();\n\n // Observar mudanças no estado disabled do input\n const input = this.el.nativeElement;\n const observer = new MutationObserver(() => {\n this.updateClearButtonVisibility();\n });\n observer.observe(input, {\n attributes: true,\n attributeFilter: ['disabled']\n });\n // Armazenar observer para cleanup\n (this as any)._disabledObserver = observer;\n }\n\n // Observar mudanças na seleção para mostrar/esconder botão\n const selectionChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe(() => {\n this.updateClearButtonVisibility();\n });\n\n const clearChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\n this.updateClearButtonVisibility();\n });\n\n this.subs.add(selectionChangeSub);\n this.subs.add(clearChangeSub);\n\n // Observar mudanças no FormControl para sincronizar o input com displayWith\n if (this.ngControl && this.ngControl.control) {\n const controlValueSub = this.ngControl.control.valueChanges.subscribe((value) => {\n console.log('MatchaAutocomplete: FormControl valor mudou', value);\n\n // Se o valor é um objeto, usar displayWith para exibir no input\n if (value && typeof value === 'object') {\n const displayText = this.panel.getDisplayValue(value);\n console.log('MatchaAutocomplete: Atualizando input com displayWith', { value, displayText });\n\n // Atualizar apenas o input visual, sem disparar eventos do FormControl\n const input = this.el.nativeElement;\n if (input.value !== displayText) {\n input.value = displayText;\n }\n\n // Atualizar visibilidade do botão de limpar\n this.updateClearButtonVisibility();\n }\n });\n\n this.subs.add(controlValueSub);\n }\n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n\n // Limpar observer se existir\n if ((this as any)._disabledObserver) {\n (this as any)._disabledObserver.disconnect();\n }\n\n // Remover botão de limpar se existir\n if (this.clearButton && this.clearButton.parentNode) {\n this.renderer.removeChild(this.clearButton.parentNode, this.clearButton);\n }\n }\n\n private writeValueToInput(displayText: string, actualValue?: any) {\n console.log('MatchaAutocomplete: writeValueToInput chamado', {\n displayText,\n actualValue,\n input: this.el.nativeElement\n });\n const input = this.el.nativeElement;\n input.value = displayText == null ? '' : String(displayText);\n\n // Dispatch múltiplos eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n\n // Atualizar visibilidade do botão após escrever valor\n setTimeout(() => {\n this.updateClearButtonVisibility();\n }, 0);\n\n console.log('MatchaAutocomplete: Valor escrito no input', input.value);\n }\n\n private clearInput() {\n const input = this.el.nativeElement;\n input.value = '';\n\n // Dispatch eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n const blurEvent = new Event('blur', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n input.dispatchEvent(blurEvent);\n\n // Atualizar visibilidade do botão\n this.updateClearButtonVisibility();\n\n console.log('MatchaAutocomplete: Input limpo');\n }\n\n @HostListener('click')\n onClick() {\n // Abrir painel quando clicar no input\n this.panel.openPanel();\n }\n\n @HostListener('focus')\n onFocus() {\n // Não abrir automaticamente no focus para evitar conflito com click outside\n // O painel será aberto apenas quando o usuário clicar ou digitar\n }\n\n @HostListener('input', ['$event'])\n onInput(e: Event) {\n // se o usuário digitar, apenas reabre painel. O filtro de opções geralmente é controlado pelo componente pai\n if (!this.panel.open) this.panel.openPanel();\n }\n\n @HostListener('blur')\n onBlur() {\n // Implementar auto-seleção no blur se configurado\n if (!this.panel.autoSelectOnBlur) {\n return;\n }\n\n const input = this.el.nativeElement;\n const currentValue = input.value;\n\n // Se já há uma seleção válida (objeto), verificar se o texto ainda corresponde\n const selectedValue = this.panel.getSelectedValue();\n if (selectedValue !== undefined && selectedValue !== null) {\n // Verificar se o texto do input corresponde ao valor selecionado\n const displayText = this.panel.getDisplayValue(selectedValue);\n if (displayText.toLowerCase().trim() === currentValue.toLowerCase().trim()) {\n // Texto corresponde à seleção, não fazer nada\n return;\n }\n }\n\n // Se o valor é uma string (texto digitado mas não selecionado)\n if (typeof currentValue === 'string' && currentValue.trim() !== '') {\n // Procurar match exato (case-insensitive) nas opções disponíveis\n const exactMatch = this.panel.findOptionByText(currentValue);\n\n if (exactMatch) {\n // Match exato encontrado - selecionar automaticamente\n console.log('MatchaAutocomplete: Match exato encontrado no blur, selecionando automaticamente');\n this.panel.selectOption(exactMatch);\n\n // Emitir evento de auto-seleção\n this.panel.autoSelected.emit(exactMatch.value);\n\n // Atualizar visibilidade do botão de limpar após auto-seleção\n this.updateClearButtonVisibility();\n } else {\n // Nenhum match exato - limpar o campo\n console.log('MatchaAutocomplete: Nenhum match exato encontrado no blur, limpando campo');\n this.panel.clearSelection();\n }\n } else if (currentValue === '' || !currentValue) {\n // Campo vazio - limpar seleção se houver\n if (this.panel.hasSelection()) {\n console.log('MatchaAutocomplete: Campo vazio no blur, limpando seleção');\n this.panel.clearSelection();\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (!this.panel) return;\n\n switch (ev.key) {\n case 'ArrowDown':\n ev.preventDefault();\n this.panel.highlightNext();\n break;\n case 'ArrowUp':\n ev.preventDefault();\n this.panel.highlightPrevious();\n break;\n case 'Enter':\n ev.preventDefault();\n this.panel.selectActive();\n // pega o value escolhido e escreve no input\n setTimeout(() => {\n const val = this.panel.getSelectedValue();\n if (val !== undefined) {\n const displayText = this.panel.getDisplayValue(val);\n this.writeValueToInput(displayText, val);\n }\n });\n break;\n case 'Escape':\n ev.preventDefault();\n this.panel.closePanel();\n break;\n }\n }\n\n // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\n // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\n // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\n // Simples solução: observar clicks nas options via delegation:\n @HostListener('document:click', ['$event'])\n onDocClick(ev: MouseEvent) {\n const target = ev.target as HTMLElement;\n\n // Verificar se o clique foi em uma opção deste painel específico\n const isOptionClick = target.closest('matcha-option') &&\n this.panel?.elRef?.nativeElement?.contains(target);\n\n if (isOptionClick) {\n // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\n setTimeout(() => {\n if (this.panel && typeof this.panel.getSelectedValue === 'function') {\n const val = this.panel.getSelectedValue();\n if (val !== undefined) {\n const displayText = this.panel.getDisplayValue(val);\n this.writeValueToInput(displayText, val);\n }\n }\n }, 10);\n }\n }\n\n private createClearButton(): void {\n if (this.clearButton) return;\n\n const input = this.el.nativeElement;\n const formField = input.closest('matcha-form-field');\n\n if (!formField) {\n console.warn('MatchaAutocomplete: matcha-form-field não encontrado para adicionar botão de limpar');\n return;\n }\n\n // Criar botão\n this.clearButton = this.renderer.createElement('span');\n // Adicionar classe do ícone (formato: i-matcha-{iconName})\n const iconClass = this.panel.clearButtonIcon.startsWith('i-matcha-')\n ? this.panel.clearButtonIcon\n : 'i-matcha-' + this.panel.clearButtonIcon;\n this.renderer.addClass(this.clearButton, iconClass);\n this.renderer.addClass(this.clearButton, 'i-size-sm');\n this.renderer.addClass(this.clearButton, 'matcha-autocomplete-clear-button');\n this.renderer.setStyle(this.clearButton, 'cursor', 'pointer');\n this.renderer.setStyle(this.clearButton, 'position', 'absolute');\n this.renderer.setStyle(this.clearButton, 'right', '12px');\n this.renderer.setStyle(this.clearButton, 'z-index', '10');\n this.renderer.setAttribute(this.clearButton, 'aria-label', this.panel.clearButtonAriaLabel);\n this.renderer.setAttribute(this.clearButton, 'role', 'button');\n this.renderer.setAttribute(this.clearButton, 'tabindex', '0');\n\n // Adicionar evento de clique\n this.renderer.listen(this.clearButton, 'click', (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.panel.clearSelection();\n });\n\n // Adicionar evento de teclado (Enter e Space)\n this.renderer.listen(this.clearButton, 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.panel.clearSelection();\n }\n });\n\n // Inserir botão no form-field (após o input)\n const inputContainer = input.parentElement;\n if (inputContainer) {\n this.renderer.setStyle(inputContainer, 'position', 'relative');\n this.renderer.appendChild(inputContainer, this.clearButton);\n } else {\n this.renderer.appendChild(formField, this.clearButton);\n }\n\n // Atualizar visibilidade inicial\n this.updateClearButtonVisibility();\n }\n\n private updateClearButtonVisibility(): void {\n if (!this.clearButton) return;\n\n const hasSelection = this.panel.hasSelection();\n const isDisabled = this.el.nativeElement.disabled;\n\n if (hasSelection && !isDisabled && this.panel.showClearButton) {\n this.renderer.setStyle(this.clearButton, 'display', 'block');\n } else {\n this.renderer.setStyle(this.clearButton, 'display', 'none');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaOptionComponent } from './matcha-option.component';\n\n@NgModule({\n declarations: [\n MatchaOptionComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaOptionComponent\n ]\n})\n\nexport class MatchaOptionModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPanelComponent } from './matcha-panel.component';\n\n@NgModule({\n declarations: [\n MatchaPanelComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaPanelComponent\n ]\n})\nexport class MatchaPanelModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\nimport { MatchaAutocompleteTriggerDirective } from './matcha-autocomplete.directive';\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\nimport { MATCHA_OPTION_PARENT } from '../matcha-option/matcha-option-parent.interface';\n\n@NgModule({\n declarations: [\n MatchaAutocompleteComponent,\n MatchaAutocompleteTriggerDirective\n ],\n imports: [\n CommonModule,\n MatchaOptionModule,\n MatchaPanelModule\n ],\n exports: [\n MatchaAutocompleteComponent,\n MatchaAutocompleteTriggerDirective,\n MatchaOptionModule // Re-exporta para conveniência\n ],\n providers: [\n // Provider para permitir injeção da interface MatchaOptionParent\n { provide: MATCHA_OPTION_PARENT, useExisting: MatchaAutocompleteComponent }\n ]\n})\nexport class MatchaAutocompleteModule { }\n\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\nimport { MatchaSelectComponent } from './matcha-select.component';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[matchaSelect]',\n standalone: false,\n})\nexport class MatchaSelectTriggerDirective implements AfterViewInit, OnDestroy {\n @Input('matchaSelect') select!: MatchaSelectComponent;\n private subs = new Subscription();\n\n constructor(private el: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n if (!this.select) {\n throw new Error('Você precisa passar uma referência para <matcha-select> ex: [matchaSelect]=\"select\"');\n }\n\n // close panel ao clicar fora - usando click para evitar conflito com focus\n const clickSub = fromEvent(document, 'click').pipe(\n filter((ev: any) => {\n const target = ev.target as Node;\n const isInsideTrigger = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\n const isInsidePanel = this.select?.elRef?.nativeElement?.contains?.(target);\n\n console.log('MatchaSelect: Click outside check', {\n target: target,\n triggerElement: this.el.nativeElement,\n isInsideTrigger,\n isInsidePanel,\n shouldClose: !isInsideTrigger && !isInsidePanel,\n panelOpen: this.select?.open\n });\n\n // Só fechar se o painel estiver aberto e clicou fora\n return this.select?.open && !isInsideTrigger && !isInsidePanel;\n })\n ).subscribe(() => {\n console.log('MatchaSelect: Fechando painel por click outside');\n this.select.closePanel();\n });\n\n this.subs.add(clickSub);\n\n // Escutar evento de seleção do select\n const selectionSub = fromEvent(this.select.elRef.nativeElement, 'matcha-select-selection').subscribe((event: any) => {\n console.log('MatchaSelect: Evento de seleção recebido na diretiva', event.detail);\n const { value } = event.detail;\n if (value !== undefined) {\n this.writeValueToInput(value);\n }\n });\n\n this.subs.add(selectionSub);\n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n\n private writeValueToInput(value: any) {\n console.log('MatchaSelect: writeValueToInput chamado', {\n value,\n input: this.el.nativeElement\n });\n const input = this.el.nativeElement as HTMLInputElement;\n input.value = value == null ? '' : value;\n\n // Dispatch múltiplos eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n const blurEvent = new Event('blur', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n input.dispatchEvent(blurEvent);\n\n console.log('MatchaSelect: Valor escrito no input', input.value);\n }\n\n @HostListener('click')\n onClick() {\n // Abrir painel quando clicar no trigger\n this.select.openPanel();\n }\n\n @HostListener('focus')\n onFocus() {\n // Não abrir automaticamente no focus para evitar conflito com click outside\n // O painel será aberto apenas quando o usuário clicar\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (!this.select) return;\n\n switch (ev.key) {\n case 'ArrowDown':\n ev.preventDefault();\n this.select.highlightNext();\n break;\n case 'ArrowUp':\n ev.preventDefault();\n this.select.highlightPrevious();\n break;\n case 'Enter':\n case ' ':\n ev.preventDefault();\n this.select.selectActive();\n // pega o value escolhido e escreve no input\n setTimeout(() => {\n const val = this.select.getSelectedValue();\n if (val !== undefined) this.writeValueToInput(val);\n });\n break;\n case 'Escape':\n ev.preventDefault();\n this.select.closePanel();\n break;\n }\n }\n\n // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\n // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\n // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\n // Simples solução: observar clicks nas options via delegation:\n @HostListener('document:click', ['$event'])\n onDocClick(ev: MouseEvent) {\n const target = ev.target as HTMLElement;\n\n // Verificar se o clique foi em uma opção deste painel específico\n const isOptionClick = target.closest('matcha-option') &&\n this.select?.elRef?.nativeElement?.contains(target);\n\n if (isOptionClick) {\n // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\n setTimeout(() => {\n if (this.select && typeof this.select.getSelectedValue === 'function') {\n const val = this.select.getSelectedValue();\n if (val !== undefined) this.writeValueToInput(val);\n }\n }, 10);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSelectComponent } from './matcha-select.component';\nimport { MatchaSelectTriggerDirective } from './matcha-select.directive';\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\n\n@NgModule({\n declarations: [\n MatchaSelectComponent,\n MatchaSelectTriggerDirective\n ],\n imports: [\n CommonModule,\n MatchaOptionModule,\n MatchaPanelModule\n ],\n exports: [\n MatchaSelectComponent,\n MatchaSelectTriggerDirective\n ]\n})\nexport class MatchaSelectModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleDirective } from './ripple.directive';\n\n@NgModule({\n declarations: [\n MatchaRippleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaRippleDirective\n ],\n})\nexport class MatchaRippleModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\nimport { MatchaCheckboxComponent } from './checkbox/checkbox.component';\n\n@NgModule({\n declarations: [\n MatchaCheckboxComponent,\n ],\n imports: [CommonModule, MatchaRippleModule],\n exports: [\n MatchaCheckboxComponent,\n ],\n})\nexport class MatchaCheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\nimport { MatchaHintTextComponent } from './hint/hint-text.component';\n\n@NgModule({\n declarations: [MatchaHintTextComponent],\n imports: [\n CommonModule,\n MatchaIconModule,\n ],\n exports: [MatchaHintTextComponent],\n})\nexport class MatchaHintTextModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-overflow-draggable',\n templateUrl: './matcha-overflow-draggable.component.html',\n styleUrls: ['./matcha-overflow-draggable.component.scss'],\n standalone: false\n})\n\nexport class MatchaOverflowDraggableComponent {\n @Input() dragRef: string = '';\n\n public dragToScroll(): void {\n const ele = document.querySelector(`matchaDraggableReference${this.dragRef}`);\n if (ele) {\n let pos = { top: 0, left: 0, x: 0, y: 0 };\n const mouseDownHandler = function (e: any) {\n pos = {\n // The current scroll\n left: ele.scrollLeft,\n top: ele.scrollTop,\n // Get the current mouse position\n x: e.clientX,\n y: e.clientY,\n };\n ele.setAttribute('style', 'cursor: grabbing; user-select: none');\n document.addEventListener('mousemove', mouseMoveHandler);\n document.addEventListener('mouseup', mouseUpHandler);\n };\n\n const mouseMoveHandler = function (e: any) {\n // How far the mouse has been moved\n const dx = e.clientX - pos.x;\n const dy = e.clientY - pos.y;\n // Scroll the element\n ele.scrollTop = pos.top - dy;\n ele.scrollLeft = pos.left - dx;\n };\n\n const mouseUpHandler = function () {\n document.removeEventListener('mousemove', mouseMoveHandler);\n document.removeEventListener('mouseup', mouseUpHandler);\n ele.setAttribute('style', 'cursor: grab; user-select: initial');\n };\n ele.addEventListener('mousedown', mouseDownHandler);\n }\n }\n\n public get classes(): string {\n const draggableReference = this.dragRef ? `matchaDraggableReference${this.dragRef}` : '';\n\n const activeClasses = `${draggableReference}`;\n return activeClasses;\n }\n\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPaginatorComponent } from './paginator/paginator.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaPaginatorIntl } from './paginator-intl.service';\n\n@NgModule({\n declarations: [MatchaPaginatorComponent],\n imports: [CommonModule, MatchaIconModule],\n exports: [MatchaPaginatorComponent],\n providers: [MatchaPaginatorIntl]\n})\nexport class MatchaPaginatorModule {}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSlideToggleComponent } from './slide-toggle/slide-toggle.component';\nimport { FormsModule } from '@angular/forms';\n\n\n\n\n@NgModule({\n declarations: [MatchaSlideToggleComponent],\n imports: [\n CommonModule,FormsModule\n ],\n exports: [MatchaSlideToggleComponent]\n})\nexport class MatchaSlideToggleModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSpinComponent } from './spin/spin.component';\n\n\n\n@NgModule({\n declarations: [MatchaSpinComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSpinComponent]\n})\nexport class MatchaSpinModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSpinnerComponent } from './spinner/spinner.component';\n\n\n@NgModule({\n declarations: [MatchaSpinnerComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSpinnerComponent]\n})\nexport class MatchaSpinnerModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaTabsComponent } from './tabs/tabs.component';\nimport { MatchaTabItemComponent } from './tab-item/tab-item.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\nexport { TabChangeEvent } from './tabs/tabs.component';\n\n@NgModule({\n declarations: [\n MatchaTabsComponent,\n MatchaTabItemComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule\n ],\n exports: [\n MatchaTabsComponent,\n MatchaTabItemComponent\n ]\n})\nexport class MatchaTabsModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatchaDateComponent } from './date/matcha-date.component';\n\n@NgModule({\n declarations: [\n MatchaDateComponent\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n MatchaDateComponent\n ]\n})\nexport class MatchaDateModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaDateRangeComponent } from './date-range/date-range.component';\nimport { MatchaDateModule } from '../matcha-date/matcha-date.module';\n\n@NgModule({\n declarations: [MatchaDateRangeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatchaDateModule\n ],\n exports: [\n MatchaDateRangeComponent,\n MatchaDateModule\n ]\n})\nexport class MatchaDateRangeModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaTimeComponent } from './time/time.component';\n\n@NgModule({\n declarations: [MatchaTimeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [MatchaTimeComponent]\n})\nexport class MatchaTimeModule { }\n","import { Directive, HostListener } from '@angular/core';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\n\n@Directive({\n selector: '[prevStep]',\n standalone: true\n})\nexport class PrevStepDirective {\n private stepper: MatchaStepperContentComponent | null;\n\n constructor(\n stepper: MatchaStepperContentComponent | null\n ) {\n this.stepper = stepper;\n }\n\n @HostListener('click')\n onClick() {\n this.stepper?.prevStep();\n }\n}","import { Directive, HostListener } from '@angular/core';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\n\n@Directive({\n selector: '[nextStep]',\n standalone: true\n})\nexport class NextStepDirective {\n private stepper: MatchaStepperContentComponent | null;\n\n constructor(\n stepper: MatchaStepperContentComponent | null\n ) {\n this.stepper = stepper;\n }\n\n @HostListener('click')\n onClick() {\n this.stepper?.nextStep();\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaStepperControllerComponent } from './stepper-controller/stepper-controller.component';\nimport { MatchaStepperComponent } from './stepper/stepper.component';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\nimport { StepComponent } from './step/step.component';\nimport { PrevStepDirective } from './prev-step.diretive';\nimport { NextStepDirective } from './next-step.diretive';\n\n@NgModule({\n declarations: [\n MatchaStepperControllerComponent,\n MatchaStepperComponent,\n MatchaStepperContentComponent,\n StepComponent\n ],\n imports: [\n CommonModule,\n PrevStepDirective,\n NextStepDirective,\n ],\n exports: [\n MatchaStepperControllerComponent, \n MatchaStepperComponent, \n MatchaStepperContentComponent,\n StepComponent,\n PrevStepDirective,\n NextStepDirective\n ],\n providers: []\n})\nexport class MatchaStepperModule { }\n","import { Directive, ElementRef, OnInit, HostBinding } from '@angular/core';\nimport { MatchaDragDirective } from './drag.directive';\n\n@Directive({\n selector: '[matchaDragHandle]',\n standalone:false\n})\nexport class MatchaDragHandleDirective implements OnInit {\n\n @HostBinding('class.matcha-drag-handle') get dragHandleClass() {\n return true;\n }\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private dragDirective: MatchaDragDirective\n ) {}\n\n ngOnInit() {\n this.dragDirective.setDragHandle(this.elementRef.nativeElement);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatchaDropListComponent } from './drop-list/drop-list.component';\nimport { MatchaDragDirective } from './directives/drag.directive';\nimport { MatchaDragHandleDirective } from './directives/drag-handle.directive';\nimport { MatchaDropListService } from './services/drop-list.service';\n\n@NgModule({\n declarations: [\n MatchaDropListComponent,\n MatchaDragDirective,\n MatchaDragHandleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaDropListComponent,\n MatchaDragDirective,\n MatchaDragHandleDirective\n ],\n providers: [\n MatchaDropListService\n ]\n})\nexport class MatchaDropListModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatchaInputPhoneComponent } from \"./input-phone.component\";\n\n// dependencies\nimport { FormsModule } from '@angular/forms';\nimport { MatchaFormFieldModule } from '../matcha-form-field/matcha-form-field.module';\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\n@NgModule({\n declarations: [MatchaInputPhoneComponent],\n imports: [\n CommonModule,\n MatchaFormFieldModule,\n FormsModule,\n MatchaMaskModule\n ],\n exports: [MatchaInputPhoneComponent]\n})\nexport class MatchaInputPhoneModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPageLayoutComponent } from './page-layout.component';\nimport { MatchaStepperModule } from '../matcha-stepper/stepper.module';\n\n\n@NgModule({\n declarations: [\n MatchaPageLayoutComponent\n ],\n imports: [\n CommonModule,\n MatchaStepperModule\n ],\n exports: [\n MatchaPageLayoutComponent\n ]\n})\nexport class MatchaPageLayoutModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\nimport { MatchaRadioComponent } from './radio/radio.component';\n\n\n@NgModule({\n declarations: [\n MatchaRadioComponent,\n ],\n imports: [CommonModule, MatchaRippleModule],\n exports: [\n MatchaRadioComponent,\n ],\n})\nexport class MatchaRadioModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAvatarComponent } from './avatar/avatar.component';\n\n\n\n\n@NgModule({\n declarations: [MatchaAvatarComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaAvatarComponent]\n})\nexport class MatchaAvatarModule { }\n\n\n","import { Injectable, OnDestroy, PLATFORM_ID, Inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, Observable, fromEvent, of } from 'rxjs';\nimport { map, debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';\n\nexport interface BreakpointState {\n matches: boolean;\n breakpoint: string;\n}\n\n/**\n * Serviço singleton para observação de breakpoints CSS\n * Funciona tanto no browser quanto no servidor (SSR)\n */\n@Injectable({\n providedIn: 'root' // Singleton garantido pelo Angular\n})\nexport class MatchaBreakpointObserver implements OnDestroy {\n private breakpointSubject = new BehaviorSubject<BreakpointState>({\n matches: false,\n breakpoint: ''\n });\n\n private resizeSubscription: any;\n private isBrowser: boolean;\n private currentBreakpoints = new Map<string, boolean>();\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n this.isBrowser = isPlatformBrowser(this.platformId);\n\n if (this.isBrowser) {\n this.setupResizeListener();\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n\n /**\n * Observa um breakpoint específico\n * @param breakpoint - String no formato CSS media query (ex: '(max-width: 768px)')\n * @returns Observable<BreakpointState>\n */\n observe(breakpoint: string): Observable<BreakpointState> {\n if (!this.isBrowser) {\n // No servidor, retorna um observable que emite false\n return of({ matches: false, breakpoint });\n }\n\n // Emite o estado inicial\n const initialState = this.getState(breakpoint);\n\n return this.breakpointSubject.asObservable().pipe(\n startWith(initialState),\n map(() => this.getState(breakpoint)),\n distinctUntilChanged((prev, curr) =>\n prev.matches === curr.matches && prev.breakpoint === curr.breakpoint\n )\n );\n }\n\n /**\n * Verifica se um breakpoint específico está ativo\n * @param breakpoint - String no formato CSS media query\n * @returns boolean\n */\n isMatched(breakpoint: string): boolean {\n if (!this.isBrowser) {\n return false;\n }\n return this.checkBreakpoint(breakpoint);\n }\n\n /**\n * Obtém o estado atual do breakpoint\n * @param breakpoint - String no formato CSS media query\n * @returns BreakpointState\n */\n getState(breakpoint: string): BreakpointState {\n return {\n matches: this.isMatched(breakpoint),\n breakpoint\n };\n }\n\n /**\n * Observa múltiplos breakpoints simultaneamente\n * @param breakpoints - Array de strings de breakpoints\n * @returns Observable<Map<string, boolean>>\n */\n observeMultiple(breakpoints: string[]): Observable<Map<string, boolean>> {\n if (!this.isBrowser) {\n const emptyMap = new Map<string, boolean>();\n breakpoints.forEach(bp => emptyMap.set(bp, false));\n return of(emptyMap);\n }\n\n return this.breakpointSubject.asObservable().pipe(\n startWith({ matches: false, breakpoint: '' }),\n map(() => {\n const result = new Map<string, boolean>();\n breakpoints.forEach(bp => {\n result.set(bp, this.checkBreakpoint(bp));\n });\n return result;\n }),\n distinctUntilChanged((prev, curr) => {\n if (prev.size !== curr.size) return false;\n for (const [key, value] of prev) {\n if (curr.get(key) !== value) return false;\n }\n return true;\n })\n );\n }\n\n private setupResizeListener(): void {\n if (!this.isBrowser) return;\n\n // Usa fromEvent para criar um observable do evento resize\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe(\n debounceTime(100) // Debounce para evitar muitas chamadas\n )\n .subscribe(() => {\n // Limpa o cache de breakpoints\n this.currentBreakpoints.clear();\n\n // Emite um novo evento para forçar reavaliação\n this.breakpointSubject.next({\n matches: false,\n breakpoint: ''\n });\n });\n }\n\n private checkBreakpoint(breakpoint: string): boolean {\n if (!this.isBrowser) return false;\n\n // Verifica cache primeiro\n if (this.currentBreakpoints.has(breakpoint)) {\n return this.currentBreakpoints.get(breakpoint)!;\n }\n\n try {\n // Remove parênteses se existirem\n const cleanBreakpoint = breakpoint.replace(/[()]/g, '');\n\n // Extrai o valor numérico e a condição\n const match = cleanBreakpoint.match(/(max-width|min-width|max-height|min-height):\\s*(\\d+)px/);\n\n if (!match) {\n console.warn(`Breakpoint inválido: ${breakpoint}`);\n this.currentBreakpoints.set(breakpoint, false);\n return false;\n }\n\n const [, condition, value] = match;\n const numericValue = parseInt(value, 10);\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n let result = false;\n switch (condition) {\n case 'max-width':\n result = windowWidth <= numericValue;\n break;\n case 'min-width':\n result = windowWidth >= numericValue;\n break;\n case 'max-height':\n result = windowHeight <= numericValue;\n break;\n case 'min-height':\n result = windowHeight >= numericValue;\n break;\n default:\n result = false;\n }\n\n // Armazena no cache\n this.currentBreakpoints.set(breakpoint, result);\n return result;\n } catch (error) {\n console.error('Erro ao verificar breakpoint:', error);\n this.currentBreakpoints.set(breakpoint, false);\n return false;\n }\n }\n\n /**\n * Método utilitário para criar breakpoints comuns\n */\n static createBreakpoint(width: number, condition: 'max' | 'min' = 'max'): string {\n const prefix = condition === 'max' ? 'max-width' : 'min-width';\n return `(${prefix}: ${width}px)`;\n }\n\n /**\n * Breakpoints pré-definidos para facilitar o uso\n */\n static readonly BREAKPOINTS = {\n XS: '(max-width: 480px)',\n SM: '(max-width: 768px)',\n MD: '(max-width: 1024px)',\n LG: '(max-width: 1200px)',\n XL: '(max-width: 1440px)',\n MOBILE: '(max-width: 768px)',\n TABLET: '(min-width: 769px) and (max-width: 1024px)',\n DESKTOP: '(min-width: 1025px)'\n } as const;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaDrawerComponent } from './drawer/drawer.component';\nimport { MatchaDrawerContainerComponent } from './drawer-container/drawer-container.component';\nimport { MatchaDrawerContentComponent } from './drawer-content/drawer-content.component';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\nimport { MatchaBreakpointObserver } from '../matcha-breakpoint-observable/breakpoint-observer.service';\n\n@NgModule({\n declarations: [\n MatchaDrawerComponent,\n MatchaDrawerContainerComponent,\n MatchaDrawerContentComponent\n ],\n imports: [\n CommonModule,\n MatchaButtonModule\n ],\n providers: [\n MatchaBreakpointObserver\n ],\n exports: [\n MatchaDrawerComponent,\n MatchaDrawerContainerComponent,\n MatchaDrawerContentComponent\n ]\n})\nexport class MatchaDrawerModule { }\n","import { NgModule } from '@angular/core';\n\nimport { MatchaHighlightComponent } from './highlight.component';\nimport { CopyButtonComponent } from './copy-button/copy-button.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\n\n// Prism.js será carregado dinamicamente no componente quando necessário\n\n@NgModule({\n declarations: [\n MatchaHighlightComponent,\n CopyButtonComponent\n ],\n imports: [\n MatchaIconModule,\n MatchaButtonModule\n ],\n exports: [\n MatchaHighlightComponent,\n CopyButtonComponent\n ],\n})\nexport class MatchaHighlightModule\n{\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatchaSliderComponent } from './slider/slider.component';\n\n\n@NgModule({\n declarations: [MatchaSliderComponent],\n imports: [\n CommonModule,FormsModule\n ],\n exports: [MatchaSliderComponent]\n})\nexport class MatchaSliderModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaChipComponent } from './chip/chip.component';\nimport { MatchaChipListComponent } from './chip-list/chip-list.component';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\n@NgModule({\n declarations: [\n MatchaChipComponent,\n MatchaChipListComponent\n ],\n imports: [CommonModule, MatchaDividerModule, MatchaIconModule],\n exports: [\n MatchaChipComponent,\n MatchaChipListComponent\n ],\n})\nexport class MatchaChipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatchaAutocompleteModule } from './matcha-autocomplete/matcha-autocomplete.module';\nimport { MatchaOptionModule } from './matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from './matcha-panel/matcha-panel.module';\nimport { MatchaSelectModule } from './matcha-select/matcha-select.module';\nimport { MatchaAccordionModule } from './matcha-accordion/accordion.module';\nimport { MatchaButtonModule } from './matcha-button/button.module';\nimport { MatchaButtonToggleModule } from './matcha-button-toggle/button-toggle.module';\nimport { MatchaCardModule } from './matcha-card/card.module';\nimport { MatchaCheckboxModule } from './matcha-checkbox/checkbox.module';\nimport { MatchaDividerModule } from './matcha-divider/divider.module';\nimport { MatchaElevationModule } from './matcha-elevation/elevation.module';\nimport { MatchaFormFieldModule } from './matcha-form-field/matcha-form-field.module';\nimport { MatchaHintTextModule } from './matcha-hint-text/hint.module';\nimport { MatchaIconModule } from './matcha-icon/icon.module';\nimport { MatchaInfiniteScrollModule } from './matcha-infinite-scroll/matcha-infinite-scroll.module';\nimport { MatchaMasonryModule } from './matcha-masonry/masonry.module';\nimport { MatchaModalModule } from './matcha-modal/matcha-modal.module';\nimport { MatchaOverflowDraggableComponent } from './matcha-overflow-draggable/matcha-overflow-draggable.component';\nimport { MatchaPaginatorModule } from './matcha-paginator/paginator.module';\nimport { MatchaRippleModule } from './matcha-ripple/ripple.module';\nimport { MatchaSlideToggleModule } from './matcha-slide-toggle/slide-toggle.module';\n\nimport { MatchaSpinModule } from './matcha-spin/spin.module';\nimport { MatchaSpinnerModule } from './matcha-spinner/spinner.module';\nimport { MatchaTabsModule } from './matcha-tabs/tabs.module';\nimport { MatchaTitleModule } from './matcha-title/title.module';\nimport { MatchaTooltipModule } from './matcha-tooltip/tooltip.module';\nimport { MatchaDateRangeModule } from './matcha-date-range/date-range.module';\nimport { MatchaTimeModule } from './matcha-time/time.module';\nimport { MatchaStepperModule } from './matcha-stepper/stepper.module';\nimport { MatchaDropListModule } from './matcha-drop-list/drop-list.module';\nimport { MatchaInputPhoneModule } from './matcha-input-phone/input-phone.module';\nimport { MatchaPageLayoutModule } from './matcha-page-layout/page-layout.module';\nimport { MatchaLazyloadModule } from './matcha-lazyload/lazyload.module';\nimport { MatchaRadioModule } from './matcha-radio/radio.module';\nimport { MatchaAvatarModule } from './matcha-avatar/avatar.module';\nimport { MatchaDrawerModule } from './matcha-drawer/drawer.module';\nimport { MatchaHighlightModule } from './matcha-highlight/highlight.module';\nimport { MatchaSliderModule } from './matcha-slider/slider.module';\nimport { MatchaMaskModule } from './matcha-mask/matcha-mask.module';\nimport { MatchaChipModule } from './matcha-chip/chip.module';\n@NgModule({\n declarations: [MatchaOverflowDraggableComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatchaAccordionModule,\n MatchaAutocompleteModule,\n MatchaOptionModule,\n MatchaPanelModule,\n MatchaSelectModule,\n MatchaButtonModule,\n MatchaButtonToggleModule,\n MatchaCardModule,\n MatchaCheckboxModule,\n MatchaRadioModule,\n MatchaDividerModule,\n MatchaElevationModule,\n MatchaFormFieldModule,\n MatchaHintTextModule,\n MatchaIconModule,\n MatchaInfiniteScrollModule,\n MatchaLazyloadModule,\n MatchaInputPhoneModule,\n MatchaMasonryModule,\n MatchaModalModule,\n MatchaPaginatorModule,\n MatchaRippleModule,\n MatchaSlideToggleModule,\n MatchaSliderModule,\n MatchaSpinModule,\n MatchaSpinnerModule,\n MatchaStepperModule,\n MatchaTabsModule,\n MatchaTitleModule,\n MatchaTooltipModule,\n MatchaDateRangeModule,\n MatchaTimeModule,\n MatchaDropListModule,\n MatchaPageLayoutModule,\n MatchaDrawerModule,\n MatchaHighlightModule,\n MatchaMaskModule,\n MatchaChipModule\n ],\n exports: [MatchaAccordionModule,\n MatchaAutocompleteModule,\n MatchaOptionModule,\n MatchaPanelModule,\n MatchaSelectModule,\n MatchaButtonModule,\n MatchaButtonToggleModule,\n MatchaCardModule,\n MatchaCheckboxModule,\n MatchaRadioModule,\n MatchaDividerModule,\n MatchaElevationModule,\n MatchaFormFieldModule,\n MatchaHintTextModule,\n MatchaIconModule,\n MatchaInfiniteScrollModule,\n MatchaLazyloadModule,\n MatchaInputPhoneModule,\n MatchaMasonryModule,\n MatchaModalModule,\n MatchaPaginatorModule,\n MatchaRippleModule,\n MatchaSlideToggleModule,\n MatchaSliderModule,\n MatchaSpinModule,\n MatchaSpinnerModule,\n MatchaStepperModule,\n MatchaTabsModule,\n MatchaTitleModule,\n MatchaTooltipModule,\n MatchaDateRangeModule,\n MatchaTimeModule,\n MatchaDropListModule,\n MatchaPageLayoutModule,\n MatchaAvatarModule,\n MatchaDrawerModule,\n MatchaHighlightModule,\n MatchaMaskModule,\n MatchaChipModule\n ],\n})\nexport class MatchaComponentsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSkeletonComponent } from './skeleton/skeleton.component';\n@NgModule({\n declarations: [MatchaSkeletonComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSkeletonComponent],\n})\nexport class MatchaSkeletonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaBreakpointObserver } from './breakpoint-observer.service';\n\n/**\n * Módulo para o MatchaBreakpointObserver\n *\n * Este módulo fornece o serviço MatchaBreakpointObserver que pode ser usado\n * em qualquer parte da aplicação para observar breakpoints CSS.\n *\n * O serviço é um singleton (providedIn: 'root') e não precisa ser importado\n * explicitamente, mas este módulo pode ser usado para organização.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n providers: [\n // O serviço já é providedIn: 'root', mas incluímos aqui para clareza\n MatchaBreakpointObserver\n ]\n})\nexport class MatchaBreakpointObservableModule { }\n","import type { PipeTransform } from '@angular/core';\nimport { inject, Pipe } from '@angular/core';\n\nimport type { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Pipe({\n name: 'mask',\n pure: true,\n standalone: false,\n})\nexport class MatchaMaskPipe implements PipeTransform {\n private readonly defaultOptions = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n private readonly _maskService = inject(MatchaMaskService);\n\n private _maskExpressionArray: string[] = [];\n\n private mask = '';\n\n public transform(\n value: string | number,\n mask: string,\n { patterns, ...config }: Partial<MatchaMaskConfig> = {} as Partial<MatchaMaskConfig>\n ): string {\n let processedValue: string | number = value;\n\n const currentConfig = {\n maskExpression: mask,\n ...this.defaultOptions,\n ...config,\n patterns: {\n ...this._maskService.patterns,\n ...patterns,\n },\n };\n\n Object.entries(currentConfig).forEach(([key, val]) => {\n (this._maskService as any)[key] = val;\n });\n\n if (mask.includes('||')) {\n const maskParts = mask.split('||');\n if (maskParts.length > 1) {\n this._maskExpressionArray = maskParts.sort(\n (a: string, b: string) => a.length - b.length\n );\n this._setMask(`${processedValue}`);\n return this._maskService.applyMask(`${processedValue}`, this.mask);\n } else {\n this._maskExpressionArray = [];\n return this._maskService.applyMask(`${processedValue}`, this.mask);\n }\n }\n\n if (mask.includes(MaskExpression.CURLY_BRACKETS_LEFT)) {\n return this._maskService.applyMask(\n `${processedValue}`,\n this._maskService._repeatPatternSymbols(mask)\n );\n }\n\n if (mask.startsWith(MaskExpression.SEPARATOR)) {\n if (config.decimalMarker) {\n this._maskService.decimalMarker = config.decimalMarker;\n }\n if (config.thousandSeparator) {\n this._maskService.thousandSeparator = config.thousandSeparator;\n }\n if (config.leadZero) {\n this._maskService.leadZero = config.leadZero;\n }\n\n processedValue = String(processedValue);\n const localeDecimalMarker = this._maskService.currentLocaleDecimalMarker();\n\n if (!Array.isArray(this._maskService.decimalMarker)) {\n processedValue =\n this._maskService.decimalMarker !== localeDecimalMarker\n ? (processedValue as string).replace(\n localeDecimalMarker,\n this._maskService.decimalMarker\n )\n : processedValue;\n }\n\n if (\n this._maskService.leadZero &&\n processedValue &&\n this._maskService.dropSpecialCharacters !== false\n ) {\n processedValue = this._maskService._checkPrecision(mask, processedValue as string);\n }\n\n if (this._maskService.decimalMarker === MaskExpression.COMMA) {\n processedValue = (processedValue as string).replace(\n MaskExpression.DOT,\n MaskExpression.COMMA\n );\n }\n\n this._maskService.isNumberValue = true;\n }\n\n if (processedValue === null || typeof processedValue === 'undefined') {\n return this._maskService.applyMask('', mask);\n }\n\n return this._maskService.applyMask(`${processedValue}`, mask);\n }\n\n private _setMask(value: string) {\n if (this._maskExpressionArray.length > 0) {\n this._maskExpressionArray.some((mask): boolean | void => {\n const test =\n this._maskService.removeMask(value)?.length <=\n this._maskService.removeMask(mask)?.length;\n if (value && test) {\n this.mask = mask;\n return test;\n } else {\n this.mask =\n this._maskExpressionArray[this._maskExpressionArray.length - 1] ??\n MaskExpression.EMPTY_STRING;\n }\n });\n }\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[step]'\n})\nexport class StepContentDirective {\n @Input('step') step!: string;\n constructor(public template: TemplateRef<any>) {}\n}","/*\n * Public API Surface of matcha-components\n */\n\n// -----------------------------------------------------------\n// INTERFACES\n// -----------------------------------------------------------\nexport * from './lib/matcha-option/matcha-option-parent.interface';\n\n// -----------------------------------------------------------\n// COMPONENTS\n// -----------------------------------------------------------\nexport * from './lib/matcha-accordion/accordion/accordion.component';\nexport * from './lib/matcha-accordion/accordion-item/accordion-item.component';\nexport * from './lib/matcha-accordion/accordion-header/accordion-header.component';\nexport * from './lib/matcha-accordion/accordion-content/accordion-content.component';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\nexport * from './lib/matcha-lazyload/lazyload/lazyload.component';\nexport * from './lib/matcha-lazyload/lazyload-data/lazyload-data.component';\nexport * from './lib/matcha-button/button/button.component';\nexport * from './lib/matcha-card/card/card.component';\nexport * from './lib/matcha-divider/divider/divider.component';\nexport * from './lib/matcha-title/title/title.component';\nexport * from './lib/matcha-drawer/drawer/drawer.component';\nexport * from './lib/matcha-drawer/drawer-container/drawer-container.component';\nexport * from './lib/matcha-drawer/drawer-content/drawer-content.component';\nexport * from './lib/matcha-icon/icon.component';\nexport * from './lib/matcha-grid/grid.component';\nexport * from './lib/matcha-masonry/masonry/masonry.component';\nexport * from './lib/matcha-modal/modal-content/modal-content.component';\nexport * from './lib/matcha-modal/modal-header/modal-header.component';\nexport * from './lib/matcha-modal/modal-footer/modal-footer.component';\nexport * from './lib/matcha-modal/modal-options/modal-options.component';\nexport * from './lib/matcha-modal/modal/modal.component';\nexport * from './lib/matcha-toolbar/toolbar/toolbar.component';\nexport * from './lib/matcha-toolbar/toolbar-button/toolbar-button.component';\nexport * from './lib/matcha-toolbar/toolbar-content/toolbar-content.component';\nexport * from './lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component';\nexport * from './lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component';\nexport * from './lib/matcha-form-field/matcha-form-field/matcha-form-field.component';\nexport * from './lib/matcha-form-field/matcha-label/matcha-label.component';\nexport * from './lib/matcha-form-field/matcha-error/matcha-error.component';\nexport * from './lib/matcha-checkbox/checkbox/checkbox.component';\nexport * from './lib/matcha-radio/radio/radio.component';\nexport * from './lib/matcha-spin/spin/spin.component';\nexport * from './lib/matcha-spinner/spinner/spinner.component';\nexport * from './lib/matcha-hint-text/hint/hint-text.component';\nexport * from './lib/matcha-skeleton/skeleton/skeleton.component';\nexport * from './lib/matcha-slide-toggle/slide-toggle/slide-toggle.component';\nexport * from './lib/matcha-button-toggle/button-toggle/button-toggle.component';\nexport * from './lib/matcha-tabs/tabs/tabs.component';\nexport * from './lib/matcha-tabs/tab-item/tab-item.component';\nexport * from './lib/matcha-date/date/matcha-date.component';\nexport * from './lib/matcha-date-range/date-range/date-range.component';\nexport * from './lib/matcha-time/time/time.component';\nexport * from './lib/matcha-input-phone/input-phone.component';\nexport * from './lib/matcha-stepper/step/step.component';\nexport * from './lib/matcha-stepper/stepper/stepper.component';\nexport * from './lib/matcha-stepper/stepper-content/stepper-content.component';\nexport * from './lib/matcha-stepper/stepper-controller/stepper-controller.component';\nexport * from './lib/matcha-drop-list/drop-list/drop-list.component';\nexport * from './lib/matcha-page-layout/page-layout.component';\nexport * from './lib/matcha-avatar/avatar/avatar.component';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.component';\nexport * from './lib/matcha-option/matcha-option.component';\nexport * from './lib/matcha-panel/matcha-panel.component';\nexport * from './lib/matcha-select/matcha-select.component';\nexport * from './lib/matcha-paginator/paginator/paginator.component';\nexport * from './lib/matcha-paginator/paginator/page-event.interface';\nexport * from './lib/matcha-paginator/paginator-intl.service';\nexport * from './lib/matcha-highlight/highlight.component';\nexport * from './lib/matcha-highlight/copy-button/copy-button.component';\nexport * from './lib/matcha-slider/slider/slider.component';\nexport * from './lib/matcha-chip/chip/chip.component';\nexport * from './lib/matcha-chip/chip-list/chip-list.component';\n\n// -----------------------------------------------------------\n// MODULES\n// -----------------------------------------------------------\nexport * from './lib/matcha-accordion/accordion.module';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll.module';\nexport * from './lib/matcha-lazyload/lazyload.module';\nexport * from './lib/matcha-modal/matcha-modal.module';\nexport * from './lib/matcha-card/card.module';\nexport * from './lib/matcha-masonry/masonry.module';\nexport * from './lib/matcha-title/title.module';\nexport * from './lib/matcha-button/button.module';\nexport * from './lib/matcha-button-toggle/button-toggle.module';\nexport * from './lib/matcha-toolbar/toolbar.module';\nexport * from './lib/matcha-tooltip/tooltip.module';\nexport * from './lib/matcha-divider/divider.module';\nexport * from './lib/matcha-elevation/elevation.module';\nexport * from './lib/matcha-grid/grid.module';\nexport * from './lib/matcha-form-field/matcha-form-field.module';\nexport * from './lib/matcha-components.module';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.module';\nexport * from './lib/matcha-option/matcha-option.module';\nexport * from './lib/matcha-select/matcha-select.module';\nexport * from './lib/matcha-tabs/tabs.module';\nexport * from './lib/matcha-checkbox/checkbox.module';\nexport * from './lib/matcha-radio/radio.module';\nexport * from './lib/matcha-icon/icon.module';\nexport * from './lib/matcha-paginator/paginator.module';\nexport * from './lib/matcha-skeleton/skeleton.module';\nexport * from './lib/matcha-slide-toggle/slide-toggle.module';\nexport * from './lib/matcha-slider/slider.module';\nexport * from './lib/matcha-ripple/ripple.module';\nexport * from './lib/matcha-spin/spin.module';\nexport * from './lib/matcha-spinner/spinner.module';\nexport * from './lib/matcha-hint-text/hint.module';\nexport * from './lib/matcha-input-phone/input-phone.module';\nexport * from './lib/matcha-stepper/stepper.module';\nexport * from './lib/matcha-drop-list/drop-list.module';\nexport * from './lib/matcha-page-layout/page-layout.module';\nexport * from './lib/matcha-avatar/avatar.module';\nexport * from './lib/matcha-drawer/drawer.module';\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observable.module';\nexport * from './lib/matcha-panel/matcha-panel.module';\nexport * from './lib/matcha-highlight/highlight.module';\nexport * from './lib/matcha-chip/chip.module';\n\n// -----------------------------------------------------------\n// MASK COMPONENTS\n// -----------------------------------------------------------\n// export * from './lib/matcha-mask/matcha-mask.directive';\nexport * from './lib/matcha-mask/matcha-mask.pipe';\nexport * from './lib/matcha-mask/matcha-mask.service';\nexport * from './lib/matcha-mask/matcha-mask-applier.service';\nexport * from './lib/matcha-mask/matcha-mask.config';\nexport * from './lib/matcha-mask/matcha-mask-expression.enum';\n// export * from './lib/matcha-mask/matcha-mask.module';\n\n// -----------------------------------------------------------\n// MASK COMPONENTS (COMPATIBLE VERSION)\n// -----------------------------------------------------------\nexport * from './lib/matcha-mask/matcha-mask-compatible.directive';\nexport * from './lib/matcha-mask/matcha-mask.module';\n\n// -----------------------------------------------------------\n// SERVICES\n// -----------------------------------------------------------\nexport * from './lib/matcha-modal/modal.service';\nexport * from './lib/matcha-modal/overlay.service';\nexport * from './lib/matcha-date/matcha-date.module';\nexport * from './lib/matcha-date-range/date-range.module';\nexport * from './lib/matcha-time/time.module';\nexport * from './lib/matcha-stepper/stepper.service';\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observer.service';\n\n// -----------------------------------------------------------\n// DIRECTIVES\n// -----------------------------------------------------------\nexport * from './lib/matcha-tooltip/tooltip.directive';\nexport * from './lib/matcha-elevation/elevation.directive';\nexport * from './lib/matcha-ripple/ripple.directive';\nexport * from './lib/matcha-drop-list/directives/drag.directive';\nexport * from './lib/matcha-drop-list/directives/drag-handle.directive';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.directive';\nexport * from './lib/matcha-select/matcha-select.directive';\nexport * from './lib/matcha-stepper/next-step.diretive';\nexport * from './lib/matcha-stepper/prev-step.diretive';\nexport * from './lib/matcha-stepper/step-content.diretive';\n\n// -----------------------------------------------------------\n// PIPES\n// -----------------------------------------------------------\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatchaDividerComponent","i1.MatchaButtonComponent","i1.MatchaIconComponent","i1.MatchaRippleDirective","i3.MatchaMaskCompatibleDirective","i1.MatchaStepperStateService","i2","i1.MatchaDropListService","i1.MatchaPanelComponent","i1.MatchaPaginatorIntl","i3.MatchaIconComponent","i2.MatchaButtonComponent","i1","i2.CopyButtonComponent","i2.MatchaDividerComponent","i1.MatchaOverlayService","i1.MatchaStepperContentComponent","i1.MatchaDragDirective"],"mappings":"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"}
1
+ {"version":3,"file":"matcha-components.mjs","sources":["../../../projects/matcha-components/src/lib/matcha-option/matcha-option-parent.interface.ts","../../../projects/matcha-components/src/lib/matcha-animations/animations.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-item/accordion-item.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion/accordion.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-header/accordion-header.component.html","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion-content/accordion-content.component.html","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component.html","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component.html","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload/lazyload.component.html","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload-data/lazyload-data.component.html","../../../projects/matcha-components/src/lib/matcha-button/button/button.component.ts","../../../projects/matcha-components/src/lib/matcha-button/button/button.component.html","../../../projects/matcha-components/src/lib/matcha-card/card/card.component.ts","../../../projects/matcha-components/src/lib/matcha-card/card/card.component.html","../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.ts","../../../projects/matcha-components/src/lib/matcha-divider/divider/divider.component.html","../../../projects/matcha-components/src/lib/matcha-title/title/title.component.ts","../../../projects/matcha-components/src/lib/matcha-title/title/title.component.html","../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer/drawer.component.html","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-content/drawer-content.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer-container/drawer-container.component.html","../../../projects/matcha-components/src/lib/matcha-icon/icon.component.ts","../../../projects/matcha-components/src/lib/matcha-icon/icon.component.html","../../../projects/matcha-components/src/lib/matcha-grid/grid.component.ts","../../../projects/matcha-components/src/lib/matcha-grid/grid.component.html","../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.ts","../../../projects/matcha-components/src/lib/matcha-masonry/masonry/masonry.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-content/modal-content.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-header/modal-header.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-footer/modal-footer.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal-options/modal-options.component.html","../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal/modal.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar/toolbar.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar/toolbar.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-button/toolbar-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-button/toolbar-button.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-content/toolbar-content.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-content/toolbar-content.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component.html","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field/matcha-form-field.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-label/matcha-label.component.html","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-error/matcha-error.component.html","../../../projects/matcha-components/src/lib/matcha-ripple/ripple.directive.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox/checkbox.component.html","../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.ts","../../../projects/matcha-components/src/lib/matcha-radio/radio/radio.component.html","../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.ts","../../../projects/matcha-components/src/lib/matcha-spin/spin/spin.component.html","../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.ts","../../../projects/matcha-components/src/lib/matcha-spinner/spinner/spinner.component.html","../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.ts","../../../projects/matcha-components/src/lib/matcha-hint-text/hint/hint-text.component.html","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.ts","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton/skeleton.component.html","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.ts","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle/slide-toggle.component.html","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.ts","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle/button-toggle.component.html","../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tab-item/tab-item.component.html","../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tabs/tabs.component.html","../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.ts","../../../projects/matcha-components/src/lib/matcha-date/date/matcha-date.component.html","../../../projects/matcha-components/src/lib/matcha-date-range/date-range/date-range.component.ts","../../../projects/matcha-components/src/lib/matcha-date-range/date-range/date-range.component.html","../../../projects/matcha-components/src/lib/matcha-time/time/time.component.ts","../../../projects/matcha-components/src/lib/matcha-time/time/time.component.html","../../../projects/matcha-components/src/lib/matcha-input-phone/all-countries.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.config.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-applier.service.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.service.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask-compatible.directive.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.component.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.component.html","../../../projects/matcha-components/src/lib/matcha-stepper/step/step.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper.service.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper/stepper.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-content/stepper-content.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper-controller/stepper-controller.component.html","../../../projects/matcha-components/src/lib/matcha-drop-list/services/drop-list.service.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag.directive.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list/drop-list.component.html","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.ts","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.component.html","../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.ts","../../../projects/matcha-components/src/lib/matcha-avatar/avatar/avatar.component.html","../../../projects/matcha-components/src/lib/matcha-option/matcha-option.component.ts","../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.component.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.component.html","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.component.html","../../../projects/matcha-components/src/lib/matcha-paginator/paginator-intl.service.ts","../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.ts","../../../projects/matcha-components/src/lib/matcha-paginator/paginator/paginator.component.html","../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.ts","../../../projects/matcha-components/src/lib/matcha-highlight/copy-button/copy-button.component.html","../../../projects/matcha-components/src/lib/matcha-highlight/highlight.component.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html","../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip/chip.component.html","../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip-list/chip-list.component.html","../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.directive.ts","../../../projects/matcha-components/src/lib/matcha-tooltip/tooltip.module.ts","../../../projects/matcha-components/src/lib/matcha-icon/icon.module.ts","../../../projects/matcha-components/src/lib/matcha-title/title.module.ts","../../../projects/matcha-components/src/lib/matcha-divider/divider.module.ts","../../../projects/matcha-components/src/lib/matcha-button/button.module.ts","../../../projects/matcha-components/src/lib/matcha-accordion/accordion.module.ts","../../../projects/matcha-components/src/lib/matcha-infinite-scroll/matcha-infinite-scroll.module.ts","../../../projects/matcha-components/src/lib/matcha-lazyload/lazyload.module.ts","../../../projects/matcha-components/src/lib/matcha-elevation/elevation.directive.ts","../../../projects/matcha-components/src/lib/matcha-elevation/elevation.module.ts","../../../projects/matcha-components/src/lib/matcha-modal/overlay.service.ts","../../../projects/matcha-components/src/lib/matcha-modal/modal.service.ts","../../../projects/matcha-components/src/lib/matcha-modal/matcha-modal.module.ts","../../../projects/matcha-components/src/lib/matcha-card/card.module.ts","../../../projects/matcha-components/src/lib/matcha-masonry/masonry.module.ts","../../../projects/matcha-components/src/lib/matcha-button-toggle/button-toggle.module.ts","../../../projects/matcha-components/src/lib/matcha-toolbar/toolbar.module.ts","../../../projects/matcha-components/src/lib/matcha-grid/grid.module.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.module.ts","../../../projects/matcha-components/src/lib/matcha-form-field/matcha-form-field.module.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.directive.ts","../../../projects/matcha-components/src/lib/matcha-option/matcha-option.module.ts","../../../projects/matcha-components/src/lib/matcha-panel/matcha-panel.module.ts","../../../projects/matcha-components/src/lib/matcha-autocomplete/matcha-autocomplete.module.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.directive.ts","../../../projects/matcha-components/src/lib/matcha-select/matcha-select.module.ts","../../../projects/matcha-components/src/lib/matcha-ripple/ripple.module.ts","../../../projects/matcha-components/src/lib/matcha-checkbox/checkbox.module.ts","../../../projects/matcha-components/src/lib/matcha-hint-text/hint.module.ts","../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.ts","../../../projects/matcha-components/src/lib/matcha-overflow-draggable/matcha-overflow-draggable.component.html","../../../projects/matcha-components/src/lib/matcha-paginator/paginator.module.ts","../../../projects/matcha-components/src/lib/matcha-slide-toggle/slide-toggle.module.ts","../../../projects/matcha-components/src/lib/matcha-spin/spin.module.ts","../../../projects/matcha-components/src/lib/matcha-spinner/spinner.module.ts","../../../projects/matcha-components/src/lib/matcha-tabs/tabs.module.ts","../../../projects/matcha-components/src/lib/matcha-date/matcha-date.module.ts","../../../projects/matcha-components/src/lib/matcha-date-range/date-range.module.ts","../../../projects/matcha-components/src/lib/matcha-time/time.module.ts","../../../projects/matcha-components/src/lib/matcha-stepper/prev-step.diretive.ts","../../../projects/matcha-components/src/lib/matcha-stepper/next-step.diretive.ts","../../../projects/matcha-components/src/lib/matcha-stepper/stepper.module.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/directives/drag-handle.directive.ts","../../../projects/matcha-components/src/lib/matcha-drop-list/drop-list.module.ts","../../../projects/matcha-components/src/lib/matcha-input-phone/input-phone.module.ts","../../../projects/matcha-components/src/lib/matcha-page-layout/page-layout.module.ts","../../../projects/matcha-components/src/lib/matcha-radio/radio.module.ts","../../../projects/matcha-components/src/lib/matcha-avatar/avatar.module.ts","../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observer.service.ts","../../../projects/matcha-components/src/lib/matcha-drawer/drawer.module.ts","../../../projects/matcha-components/src/lib/matcha-highlight/highlight.module.ts","../../../projects/matcha-components/src/lib/matcha-slider/slider.module.ts","../../../projects/matcha-components/src/lib/matcha-chip/chip.module.ts","../../../projects/matcha-components/src/lib/matcha-components.module.ts","../../../projects/matcha-components/src/lib/matcha-skeleton/skeleton.module.ts","../../../projects/matcha-components/src/lib/matcha-breakpoint-observable/breakpoint-observable.module.ts","../../../projects/matcha-components/src/lib/matcha-mask/matcha-mask.pipe.ts","../../../projects/matcha-components/src/lib/matcha-stepper/step-content.diretive.ts","../../../projects/matcha-components/src/public-api.ts","../../../projects/matcha-components/src/matcha-components.ts"],"sourcesContent":["/**\n * Interface que deve ser implementada por componentes que querem usar matcha-option como filho\n *\n * Permite que matcha-option seja usado em diferentes contextos:\n * - matcha-autocomplete\n * - matcha-select\n * - matcha-menu\n * - etc.\n */\nexport interface MatchaOptionParent {\n /**\n * Método chamado quando uma opção é selecionada\n * @param option - A instância do MatchaOptionComponent selecionado\n */\n selectOption(option: any): void; // usando any para evitar referência circular\n}\n\n/**\n * Token de injeção para MatchaOptionParent\n * Usado para injetar o componente pai no matcha-option\n */\nexport const MATCHA_OPTION_PARENT = Symbol('MatchaOptionParent');\n","import { sequence, trigger, animate, style, group, query, transition, animateChild, state, animation, useAnimation, stagger } from '@angular/animations';\n\nconst customAnimation = animation([\n style({\n opacity : '{{opacity}}',\n transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'\n }),\n animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))\n], {\n params: {\n duration: '200ms',\n delay : '0ms',\n opacity : '0',\n scale : '1',\n x : '0',\n y : '0',\n z : '0'\n }\n});\n\nexport const createAnimations = [\n\n trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),\n\n trigger('animateStagger', [\n state('50', style('*')),\n state('100', style('*')),\n state('200', style('*')),\n\n transition('void => 50',\n query('@*',\n [\n stagger('50ms', [\n animateChild()\n ])\n ], {optional: true})),\n transition('void => 100',\n query('@*',\n [\n stagger('100ms', [\n animateChild()\n ])\n ], {optional: true})),\n transition('void => 200',\n query('@*',\n [\n stagger('200ms', [\n animateChild()\n ])\n ], {optional: true}))\n ]),\n\n trigger('fadeInOut', [\n state('0, void', style({\n opacity: 0\n })),\n state('1, *', style({\n opacity: 1\n })),\n transition('1 => 0', animate('300ms ease-out')),\n transition('0 => 1', animate('300ms ease-in')),\n transition('void <=> *', animate('300ms ease-in'))\n ]),\n\n trigger('slideInOut', [\n state('0', style({\n height: '0px'\n })),\n state('1', style({\n height: '*'\n })),\n transition('1 => 0', animate('300ms ease-out')),\n transition('0 => 1', animate('300ms ease-in'))\n ]),\n\n trigger('slideIn', [\n transition('void => left', [\n style({\n transform: 'translateX(100%)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(0)'\n })\n )\n ]\n ),\n transition('left => void', [\n style({\n transform: 'translateX(0)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(-100%)'\n })\n )\n ]\n ),\n transition('void => right', [\n style({\n transform: 'translateX(-100%)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(0)'\n })\n )\n ]\n ),\n transition('right => void', [\n style({\n transform: 'translateX(0)'\n }),\n animate('300ms ease-in',\n style({\n transform: 'translateX(100%)'\n })\n )\n ]\n )\n ]),\n\n trigger('slideInLeft', [\n state('void', style({\n transform: 'translateX(-100%)',\n })),\n state('*', style({\n transform: 'translateX(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInRight', [\n state('void', style({\n transform: 'translateX(100%)',\n })),\n state('*', style({\n transform: 'translateX(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInTop', [\n state('void', style({\n transform: 'translateY(-100%)',\n })),\n state('*', style({\n transform: 'translateY(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('slideInBottom', [\n state('void',\n style({\n transform: 'translateY(100%)',\n })),\n state('*', style({\n transform: 'translateY(0)',\n })),\n transition('void => *', animate('300ms')),\n transition('* => void', animate('300ms'))\n ]),\n\n trigger('expandCollapse', [\n state('void', style({\n height: '0px'\n })),\n state('*', style({\n height: '*'\n })),\n transition('void => *', animate('300ms ease-out')),\n transition('* => void', animate('300ms ease-in'))\n ]),\n\n // -----------------------------------------------------------------------------------------------------\n // @ Router animations\n // -----------------------------------------------------------------------------------------------------\n\n trigger('routerTransitionLeft', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateX(100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateX(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(-100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateX(100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionRight', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateX(-100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateX(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateX(-100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateX(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionUp', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateY(100%)',\n opacity : 0\n })\n ], {optional: true}),\n group([\n query('content > :leave', [\n style({\n transform: 'translateY(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(-100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateY(100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ]),\n\n trigger('routerTransitionDown', [\n\n transition('* => *', [\n query('content > :enter, content > :leave', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n query('content > :enter', [\n style({\n transform: 'translateY(-100%)',\n opacity : 0\n })\n ], {optional: true}),\n sequence([\n group([\n query('content > :leave', [\n style({\n transform: 'translateY(0)',\n opacity : 1\n }),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(100%)',\n opacity : 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({transform: 'translateY(-100%)'}),\n animate('600ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n transform: 'translateY(0%)',\n opacity : 1\n }))\n ], {optional: true})\n ]),\n query('content > :leave', animateChild(), {optional: true}),\n query('content > :enter', animateChild(), {optional: true})\n ])\n ])\n ]),\n\n trigger('routerTransitionFade', [\n\n transition('* => *', group([\n\n query('content > :enter, content > :leave ', [\n style({\n position: 'absolute',\n top : 0,\n bottom : 0,\n left : 0,\n right : 0\n })\n ], {optional: true}),\n\n query('content > :enter', [\n style({\n opacity: 0\n })\n ], {optional: true}),\n query('content > :leave', [\n style({\n opacity: 1\n }),\n animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n opacity: 0\n }))\n ], {optional: true}),\n query('content > :enter', [\n style({\n opacity: 0\n }),\n animate('300ms cubic-bezier(0.0, 0.0, 0.2, 1)',\n style({\n opacity: 1\n }))\n ], {optional: true}),\n query('content > :enter', animateChild(), {optional: true}),\n query('content > :leave', animateChild(), {optional: true})\n ]))\n ])\n];\n","import { Component, EventEmitter, Input, Output, OnInit, HostBinding, OnChanges, SimpleChanges } from '@angular/core';\nimport { createAnimations } from '../../matcha-animations/animations';\n\n@Component({\n selector: 'matcha-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrl: './accordion-item.component.scss',\n standalone: false,\n animations: [...createAnimations]\n})\nexport class MatchaAccordionItemComponent implements OnInit, OnChanges {\n private _stretch: boolean = false;\n private _isOpen: boolean = false;\n\n @Input()\n set stretch(value: boolean | string) {\n this._stretch = value != null && `${value}` !== 'false';\n }\n get stretch(): boolean {\n return this._stretch;\n }\n @HostBinding('class.stretch') get stretchClass() {\n return this._stretch;\n }\n\n private _clickableHeader = true;\n @Input()\n set clickableHeader(value: boolean | string) {\n this._clickableHeader = value != null && `${value}` !== 'false';\n }\n get clickableHeader(): boolean {\n return this._clickableHeader;\n }\n\n @Input()\n set isOpen(value: boolean | string) {\n this._isOpen = value != null && `${value}` !== 'false';\n }\n get isOpen(): boolean {\n return this._isOpen;\n }\n @HostBinding('class.is-open') get isOpenClass() {\n return this._isOpen;\n }\n\n @Output() opened = new EventEmitter<boolean>();\n @Output() toggleRequested = new EventEmitter<void>();\n\n ngOnInit() {\n this.opened.emit(this.isOpen);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['isOpen']) {\n this.opened.emit(this.isOpen);\n }\n }\n\n toggleAccordion() {\n // Emite evento para o accordion pai controlar o estado\n this.toggleRequested.emit();\n }\n}\n","<div class=\"accordion-item flex-column overflow-hidden\">\n <div class=\"accordion-header d-flex\">\n <div class=\"d-flex accordion-header-wrapper\"\n [class.cursor-pointer]=\"clickableHeader\"\n (click)=\"clickableHeader ? toggleAccordion() : null\">\n <ng-content select=\"matcha-accordion-header\"></ng-content>\n </div>\n </div>\n <div class=\"accordion-content overflow-hidden\" [@expandCollapse]=\"isOpen ? '*' : 'void'\">\n <ng-content select=\"matcha-accordion-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { MatchaAccordionItemComponent } from '../accordion-item/accordion-item.component';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n selector: 'matcha-accordion',\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n standalone: false\n})\nexport class MatchaAccordionComponent implements AfterContentInit, OnDestroy {\n private _multiple = false;\n @Input()\n set multiple(value: boolean | string) {\n // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.\n this._multiple = value != null && `${value}` !== 'false';\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n @Output('openedChange') openedChange = new EventEmitter<boolean>();\n\n @ContentChildren(MatchaAccordionItemComponent, { descendants: true }) items!: QueryList<MatchaAccordionItemComponent>;\n private subscriptions: Subscription[] = [];\n\n ngAfterContentInit() {\n this.setupItems();\n\n // Escuta mudanças na lista de itens (para casos dinâmicos)\n this.items.changes.subscribe(() => {\n this.setupItems();\n });\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private setupItems() {\n // Limpa subscriptions anteriores\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions = [];\n\n this.items.forEach(item => {\n const toggleSub = item.toggleRequested.subscribe(() => {\n this.toggleItem(item);\n });\n this.subscriptions.push(toggleSub);\n\n const openedSub = item.opened.subscribe((isOpen: boolean) => {\n this.openedChange.emit(isOpen);\n });\n this.subscriptions.push(openedSub);\n });\n }\n\n toggleItem(selectedItem: MatchaAccordionItemComponent) {\n // Toggle o item selecionado\n selectedItem.isOpen = !selectedItem.isOpen;\n\n // Se não permite múltiplos itens abertos e o item foi aberto, fecha os demais\n if (!this.multiple && selectedItem.isOpen) {\n this.items.forEach(item => {\n if (item !== selectedItem) {\n item.isOpen = false;\n }\n });\n }\n }\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-accordion-header',\n templateUrl: './accordion-header.component.html',\n styleUrl: './accordion-header.component.scss',\n standalone: false\n})\nexport class MatchaAccordionHeaderComponent {\n\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-accordion-content',\n templateUrl: './accordion-content.component.html',\n styleUrl: './accordion-content.component.scss',\n standalone: false\n})\nexport class MatchaAccordionContentComponent {\n\n}\n","<ng-content></ng-content>\n","/*\nHOW TO USE ---------------------------------------------------------\nTEMPLATE:\n<!-- Elemento sentinela para detectar o scroll -->\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\n <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\n <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\n</option>\n*/\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n\n@Component({\n selector: 'matcha-infinite-scroll',\n templateUrl: './matcha-infinite-scroll.component.html',\n styleUrl: './matcha-infinite-scroll.component.scss',\n standalone: false\n})\nexport class MatchaInfiniteScrollComponent implements OnInit, OnDestroy{\n// Evento que será disparado quando o elemento entrar na área visível\n@Output() scrolledToEnd = new EventEmitter<void>();\n\nprivate observer!: IntersectionObserver;\n\nconstructor(private element: ElementRef) {}\n\nngOnInit(): void {\n // Configura o observer para disparar quando 10% do elemento estiver visível\n const options = {\n root: null, // Usa a viewport\n rootMargin: '0px',\n threshold: 0.1\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.scrolledToEnd.emit();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n}\n\nngOnDestroy(): void {\n this.observer.disconnect();\n}\n}\n","","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-infinite-scroll-data',\n templateUrl: './matcha-infinite-scroll-data.component.html',\n styleUrls: ['./matcha-infinite-scroll-data.component.scss'],\n styles: [`\n :host {\n height: 1px;\n opacity: 0;\n }\n `],\n standalone: false\n})\nexport class MatchaInfiniteScrollDataComponent implements OnInit, OnDestroy, OnChanges {\n\n /**\n * Função que carrega os dados com base no número da página.\n * Deve retornar um Observable com um array de itens.\n */\n @Input() loadData!: (page: number) => Observable<any[]>;\n\n /**\n * Lista inicial (opcional) para iniciar a agregação.\n */\n @Input() initialList: any[] = [];\n\n /**\n * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\n */\n @Input() threshold = 0.1;\n\n /**\n * Chave para resetar a diretiva (para componentes como select).\n */\n @Input() resetKey: any;\n\n /**\n * Novo input para o autocomplete, onde será aplicado o debounce.\n */\n @Input() searchTerm: any;\n\n /**\n * Emite a lista acumulada de itens.\n */\n @Output() aggregatedData = new EventEmitter<any[]>();\n\n /**\n * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\n */\n @Output() exactMatch = new EventEmitter<any>();\n\n private aggregatedList: any[] = [];\n private currentPage = 0;\n private observer!: IntersectionObserver;\n\n // Subscription para as chamadas do loadData\n private dataSubscription = new Subscription();\n // Subscription exclusiva para o debounce do searchTerm\n private searchSubscription = new Subscription();\n // Subject para aplicar debounce no searchTerm\n private searchTermSubject: Subject<any> = new Subject();\n\n constructor(private element: ElementRef) { }\n\n ngOnInit(): void {\n this.initialize();\n\n // Configura o Intersection Observer para carregamento via scroll\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: this.threshold\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadNextPage();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n\n // Inscreve para receber alterações do searchTerm com debounce\n this.searchSubscription = this.searchTermSubject.pipe(\n debounceTime(300)\n ).subscribe(() => {\n // Reseta e carrega a primeira página após o debounce\n this.resetData();\n this.loadNextPage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['resetKey'] && !changes['resetKey'].firstChange) {\n this.resetData();\n }\n\n if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\n // Emite o novo valor para o Subject e aguarda o debounce\n this.searchTermSubject.next(changes['searchTerm'].currentValue);\n }\n }\n\n /**\n * Inicializa ou reinicializa a lista agregada e o contador de página.\n */\n private initialize(): void {\n this.aggregatedList = [...this.initialList];\n this.currentPage = 0;\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n\n /**\n * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\n */\n private resetData(): void {\n // Cancela as assinaturas das chamadas de loadData\n this.dataSubscription.unsubscribe();\n this.dataSubscription = new Subscription();\n\n // Re-inicializa a lista e o contador\n this.initialize();\n }\n\n /**\n * Carrega a próxima página de dados utilizando a função loadData.\n */\n private loadNextPage(): void {\n if (!this.loadData) {\n return;\n }\n this.currentPage++;\n const dataObservable = this.loadData(this.currentPage);\n const sub = dataObservable.subscribe(data => {\n if (data && data.length) {\n this.aggregatedList = [...this.aggregatedList, ...data];\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n });\n this.dataSubscription.add(sub);\n }\n\n /**\n * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\n * Se sim, emite o output exactMatch com esse item.\n */\n private checkExactMatch(): void {\n if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\n this.exactMatch.emit(this.aggregatedList[0]);\n }\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n this.dataSubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n}\n","","/*\nHOW TO USE ---------------------------------------------------------\nTEMPLATE:\n<!-- Elemento sentinela para detectar o scroll -->\n<option disabled style=\"height: 1px; padding: 0; margin: 0;\">\n <!-- Esse <div> não precisa ter conteúdo visual; ele apenas será observado -->\n <div infiniteScroll (scrolledToEnd)=\"onScrolledToEnd()\"></div>\n</option>\n*/\nimport { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-lazyload',\n templateUrl: './lazyload.component.html',\n styleUrl: './lazyload.component.scss',\n standalone: false\n})\nexport class MatchaLazyloadComponent implements OnInit, OnDestroy{\n// Evento que será disparado quando o elemento entrar na área visível\n@Output() scrolledToEnd = new EventEmitter<void>();\n\nprivate observer!: IntersectionObserver;\n\nconstructor(private element: ElementRef) {}\n\nngOnInit(): void {\n // Configura o observer para disparar quando 10% do elemento estiver visível\n const options = {\n root: null, // Usa a viewport\n rootMargin: '0px',\n threshold: 0.1\n };\n\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.scrolledToEnd.emit();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n}\n\nngOnDestroy(): void {\n this.observer.disconnect();\n}\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-lazyload-data',\n templateUrl: './lazyload-data.component.html',\n styleUrls: ['./lazyload-data.component.scss'],\n styles: [`\n :host {\n height: 1px;\n opacity: 0;\n }\n `],\n standalone: false\n})\nexport class MatchaLazyloadDataComponent implements OnInit, OnDestroy, OnChanges {\n\n /**\n * Função que carrega os dados com base no número da página.\n * Deve retornar um Observable com um array de itens.\n */\n @Input() loadData!: (page: number) => Observable<any[]>;\n\n /**\n * Lista inicial (opcional) para iniciar a agregação.\n */\n @Input() initialList: any[] = [];\n\n /**\n * Threshold para o Intersection Observer (padrão: 0.1 = 10% do elemento visível).\n */\n @Input() threshold = 0.1;\n\n /**\n * Root margin para o Intersection Observer (padrão: '0px').\n * Use valores como '100px' para acionar 100px antes do elemento aparecer.\n * Aceita valores como: '10px', '10px 20px', '10% 5% 0px 5%'\n */\n @Input() rootMargin = '0px';\n\n /**\n * Chave para resetar a diretiva (para componentes como select).\n */\n @Input() resetKey: any;\n\n /**\n * Novo input para o autocomplete, onde será aplicado o debounce.\n */\n @Input() searchTerm: any;\n\n /**\n * Emite a lista acumulada de itens.\n */\n @Output() aggregatedData = new EventEmitter<any[]>();\n\n /**\n * Emite o item exato, quando a aggregatedData tiver um único item igual ao searchTerm.\n */\n @Output() exactMatch = new EventEmitter<any>();\n\n private aggregatedList: any[] = [];\n private currentPage = 0;\n private observer!: IntersectionObserver;\n\n // Subscription para as chamadas do loadData\n private dataSubscription = new Subscription();\n // Subscription exclusiva para o debounce do searchTerm\n private searchSubscription = new Subscription();\n // Subject para aplicar debounce no searchTerm\n private searchTermSubject: Subject<any> = new Subject();\n\n constructor(private element: ElementRef) { }\n\n ngOnInit(): void {\n this.initialize();\n\n // Configura o Intersection Observer para carregamento via scroll\n const options = {\n root: null,\n rootMargin: this.rootMargin,\n threshold: this.threshold\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.loadNextPage();\n }\n });\n }, options);\n\n this.observer.observe(this.element.nativeElement);\n\n // Inscreve para receber alterações do searchTerm com debounce\n this.searchSubscription = this.searchTermSubject.pipe(\n debounceTime(300)\n ).subscribe(() => {\n // Reseta e carrega a primeira página após o debounce\n this.resetData();\n this.loadNextPage();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['resetKey'] && !changes['resetKey'].firstChange) {\n this.resetData();\n }\n\n if (changes['searchTerm'] && !changes['searchTerm'].firstChange) {\n // Emite o novo valor para o Subject e aguarda o debounce\n this.searchTermSubject.next(changes['searchTerm'].currentValue);\n }\n }\n\n /**\n * Inicializa ou reinicializa a lista agregada e o contador de página.\n */\n private initialize(): void {\n this.aggregatedList = [...this.initialList];\n this.currentPage = 0;\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n\n /**\n * Reseta apenas as assinaturas e o estado dos dados (não a inscrição do searchTerm).\n */\n private resetData(): void {\n // Cancela as assinaturas das chamadas de loadData\n this.dataSubscription.unsubscribe();\n this.dataSubscription = new Subscription();\n\n // Re-inicializa a lista e o contador\n this.initialize();\n }\n\n /**\n * Carrega a próxima página de dados utilizando a função loadData.\n */\n private loadNextPage(): void {\n if (!this.loadData) {\n return;\n }\n this.currentPage++;\n const dataObservable = this.loadData(this.currentPage);\n const sub = dataObservable.subscribe(data => {\n if (data && data.length) {\n this.aggregatedList = [...this.aggregatedList, ...data];\n this.aggregatedData.emit(this.aggregatedList);\n this.checkExactMatch();\n }\n });\n this.dataSubscription.add(sub);\n }\n\n /**\n * Verifica se a lista agregada possui exatamente um item e se esse item é igual ao searchTerm.\n * Se sim, emite o output exactMatch com esse item.\n */\n private checkExactMatch(): void {\n if (this.aggregatedList.length === 1 && this.aggregatedList[0] === this.searchTerm) {\n this.exactMatch.emit(this.aggregatedList[0]);\n }\n }\n\n ngOnDestroy(): void {\n this.observer.disconnect();\n this.dataSubscription.unsubscribe();\n this.searchSubscription.unsubscribe();\n }\n}\n","<ng-content></ng-content>\n","import { Component, ElementRef, HostBinding, Inject, Input, OnChanges, OnInit, Renderer2 } from '@angular/core';\n\n@Component({\n selector: '[matcha-button]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false\n})\nexport class MatchaButtonComponent implements OnChanges, OnInit {\n @Input('size') size: string | null = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @Input('gap') gap: string | number | null = null;\n\n @Input('color') color: string | null = 'basic';\n\n @HostBinding('attr.color')\n get colorAttr(): string | null {\n return this.color;\n }\n\n private _basic = false;\n @Input() get basic() { return this._basic; }\n set basic(v: boolean | string) { this._basic = v === 'false' ? false : !!v; }\n\n private _outline = false;\n @Input() get outline() { return this._outline; }\n set outline(v: boolean | string) { this._outline = v === 'false' ? false : !!v;}\n\n private _alpha = false;\n @Input() get alpha() { return this._alpha; }\n set alpha(v: boolean | string) { this._alpha = v === 'false' ? false : !!v;}\n\n private _pill = false;\n @Input() get pill() { return this._pill; }\n set pill(v: boolean | string) { this._pill = v === 'false' ? false : !!v;}\n\n private _link = false;\n @Input() get link() { return this._link; }\n set link(v: boolean | string) { this._link = v === 'false' ? false : !!v;}\n\n private _icon = false;\n @Input() get icon() { return this._icon; }\n set icon(v: boolean | string) { this._icon = v === 'false' ? false : !!v;}\n\n\n\n constructor(@Inject(ElementRef) private _elementRef: ElementRef, @Inject(Renderer2) private _renderer: Renderer2) {}\n\n private _config: any = {\n sizeXs: 'tiny',\n sizeSm: 'small',\n sizeMd: 'medium',\n sizeLg: 'large',\n sizeXl: 'huge',\n size: 'medium',\n gap: null,\n basic: false,\n outline: false,\n pill: false,\n icon: false,\n link: false\n };\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button`);\n this.setConfig();\n this.updateDividerStyles();\n // Adicione o evento de clique apenas a elementos com a classe \"matcha-button\"\n const buttons = document.querySelectorAll('.matcha-button');\n buttons.forEach(button => {\n // mouse down event\n button.addEventListener('mousedown', this.addRippleEffect, false);\n });\n }\n\n ngOnChanges() {\n this.setConfig();\n this.updateDividerStyles();\n }\n\n private clearConfig() {\n //size\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-${this._config.size}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-xs-${this._config.sizeXs}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-sm-${this._config.sizeSm}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-md-${this._config.sizeMd}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-lg-${this._config.sizeLg}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-xl-${this._config.sizeXl}`);\n //gap\n if(this._config.gap) {\n this._renderer.removeClass(this._elementRef.nativeElement, `px-${this._config.gap}`);\n this._renderer.removeClass(this._elementRef.nativeElement, `gap-${this._config.gap}`);\n }\n //basic\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-icon`);\n //outline\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-outline`);\n //pill\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-pill`);\n //icon\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-basic`);\n //link\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-button-link`);\n }\n\n private setConfig() {\n this.clearConfig();\n this.size ? this.setSize() : null;\n this.gap ? this.setGap() : null;\n (this.outline === true || this.outline === 'true') ? this.setOutline() : null;\n (this.pill === true || this.pill === 'true') ? this.setPill() : null;\n (this.link === true || this.link === 'true') ? this.setLink() : null;\n (this.basic === true || this.basic === 'true') ? this.setBasic() : null;\n (this.icon === true || this.icon === 'true') ? this.setIcon() : null;\n }\n\n private setSize() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-${this.size}`);\n this._config.size = this.size;\n if(this.sizeXs) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-xs-${this.sizeXs}`);\n this._config.sizeXs = this.sizeXs;\n }\n if(this.sizeSm) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-sm-${this.sizeSm}`);\n this._config.sizeSm = this.sizeSm;\n }\n if(this.sizeMd) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-md-${this.sizeMd}`);\n this._config.sizeMd = this.sizeMd;\n }\n if(this.sizeLg) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-lg-${this.sizeLg}`);\n this._config.sizeLg = this.sizeLg;\n }\n if(this.sizeXl) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-xl-${this.sizeXl}`);\n this._config.sizeXl = this.sizeXl;\n }\n }\n\n private setGap() {\n this._renderer.addClass(this._elementRef.nativeElement, `px-${this.gap}`);\n this._renderer.addClass(this._elementRef.nativeElement, `gap-${this.gap}`);\n this._config.gap = this.gap;\n }\n\n private setOutline() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-outline`);\n }\n\n private setPill() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-pill`);\n }\n\n private setLink() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-link`);\n }\n\n private setBasic() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-basic`);\n this._renderer.addClass(this._elementRef.nativeElement, `basic`);\n }\n\n private setIcon() {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-button-icon`);\n }\n\n private updateDividerStyles() {\n // Busca todos os matcha-divider dentro do botão\n const dividers = this._elementRef.nativeElement.querySelectorAll('matcha-divider');\n\n if (dividers && dividers.length > 0) {\n dividers.forEach((divider: HTMLElement) => {\n // Busca as divs dentro do matcha-divider\n const innerDivs = divider.querySelectorAll('div');\n\n innerDivs.forEach((div: HTMLElement) => {\n // Remove a classe border-color-disabled\n if (div.classList.contains('border-color-disabled')) {\n this._renderer.removeClass(div, 'border-color-disabled');\n // Adiciona a classe opacity-03\n this._renderer.addClass(div, 'opacity-03');\n }\n });\n });\n }\n }\n\n private addRippleEffect(e: any) {\n var target = e.target;\n if (target.tagName.toLowerCase() !== 'button') return false;\n var rect = target.getBoundingClientRect();\n var ripple = target.querySelector('.ripple');\n if (!ripple) {\n ripple = document.createElement('span');\n ripple.className = `ripple`;\n ripple.style.height = ripple.style.width = target.offsetWidth + 'px';\n target.appendChild(ripple);\n }\n ripple.classList.remove('show');\n var top = e.pageY - rect.top - ripple.offsetHeight / 2 - window.scrollY;\n var left = e.pageX - rect.left - ripple.offsetWidth / 2 - window.scrollX;\n ripple.style.top = top + 'px';\n ripple.style.left = left + 'px';\n ripple.classList.add('show');\n return false;\n }\n\n ngOnDestroy() {\n const buttons = document.querySelectorAll('.matcha-button');\n buttons.forEach(button => {\n button.removeEventListener('click', this.addRippleEffect, false);\n });\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, Inject, InjectionToken, Input, Optional, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'matcha-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n standalone: false\n})\nexport class MatchaCardComponent {\n\n private _color = 'surface';\n @Input() get color() { return this._color; }\n set color(v: string | null) { this._color = v || 'surface';}\n\n @HostBinding('attr.color')\n get colorAttr(): string | null {\n return this.color;\n }\n\n @Input()\n blockquote: 'left' | 'right' | 'none' | null = 'none';\n\n @Input()\n blockquoteColor: string | null = null;\n\n @Input()\n class: string | null = '';\n\n // Aplique o mesmo padrão para alpha, tint e loading\n private _alpha = false;\n @Input() get alpha() { return this._alpha; }\n set alpha(v: boolean | string) {\n this._alpha = v !== 'false' && v !== false;\n }\n\n @HostBinding('attr.alpha')\n get alphaAttr(): string | null {\n return this.alpha ? 'true' : 'false';\n }\n\n private _tint = false;\n @Input() get tint() { return this._tint; }\n set tint(v: boolean | string) {\n this._tint = v !== 'false' && v !== false;\n }\n\n @HostBinding('attr.tint')\n get tintAttr(): string | null {\n return this.tint ? 'true' : 'false';\n }\n\n private _loading = false;\n @Input() get loading() { return this._loading; }\n set loading(v: boolean | string) {\n this._loading = v !== 'false' && v !== false;\n }\n\n @HostBinding('class')\n public get classes(): string {\n let backgroundColor = '';\n let blockquoteColor = '';\n let blockquotePosition = null;\n\n if (this.color === 'bg' || this.color === 'surface') {\n if (this.hasBlockquotePosition()) {\n blockquotePosition = `matcha-card-border-${this.blockquote}`;\n blockquoteColor = this.blockquoteColor ? `border-color-${this.blockquoteColor}` : '';\n } else {\n blockquotePosition = '';\n blockquoteColor = '';\n }\n\n } else {\n if (this.hasBlockquotePosition()) {\n blockquotePosition = `matcha-card-border-${this.blockquote}`;\n blockquoteColor = this.color ? `border-color-${this.blockquoteColor}` : '';\n } else {\n blockquotePosition = '';\n blockquoteColor = '';\n }\n }\n\n const activeClasses = `matcha-card ${blockquotePosition} ${blockquoteColor} ${backgroundColor} ${this.loading ? 'loading' : ''} ${this.class}`;\n return activeClasses;\n }\n\n public hasBlockquotePosition(): boolean {\n return this.blockquote === 'left' || this.blockquote === 'right';\n }\n\n\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n standalone: false\n})\nexport class MatchaDividerComponent {\n @Input('gap') gap: string | number | null = null;\n @Input('gap-sm') gapSm: string | number | null = null;\n @Input('gap-md') gapMd: string | number | null = null;\n @Input('gap-lg') gapLg: string | number | null = null;\n @Input('gap-xl') gapXl: string | number | null = null;\n\n\n private _direction = 'horizontal';\n @Input('direction')\n set direction(value: string) {\n this._direction = value;\n }\n get direction(): string {\n return this._direction;\n }\n\n @HostBinding('attr.direction')\n get directionAttr(): string {\n return this.direction;\n }\n\n public get classes(): string {\n const hasVertical = this.direction === 'vertical';\n const directionPrefix = hasVertical ? 'mx' : 'my';\n const gap = this.gap ? `${directionPrefix}-${this.gap}` : '';\n const gapSm = this.gapSm ? `${directionPrefix}-sm-${this.gapSm}` : '';\n const gapMd = this.gapMd ? `${directionPrefix}-md-${this.gapMd}` : '';\n const gapLg = this.gapLg ? `${directionPrefix}-lg-${this.gapLg}` : '';\n const gapXl = this.gapXl ? `${directionPrefix}-xl-${this.gapXl}` : '';\n let activeClasses = '';\n\n const verticalClasses = 'flex-row h-100-p bl-2 border-color-disabled';\n const horizontalClasses = 'flex-column w-100-p bt-2 border-color-disabled';\n\n activeClasses += hasVertical ? verticalClasses : horizontalClasses;\n activeClasses += gap ? ` ${gap}` : '';\n activeClasses += gapSm ? ` ${gapSm}` : '';\n activeClasses += gapMd ? ` ${gapMd}` : '';\n activeClasses += gapLg ? ` ${gapLg}` : '';\n activeClasses += gapXl ? ` ${gapXl}` : '';\n\n return activeClasses;\n }\n}\n","<div [class]=\"classes\"></div>\n","import { Component, EventEmitter, Input, Output, HostBinding } from '@angular/core';\n\nexport interface ILevelClasses {\n [key: number | string]: string;\n}\n\n// matcha-title <matcha-title color=\"fg\" size=\"1\" loading=\"false\" type=\"pill\" icon=\"icon\" (iconClick)=\"emitIconAction($event)\"></matcha-title>\n\n@Component({\n selector: 'matcha-title',\n templateUrl: './title.component.html',\n styleUrls: ['./title.component.scss'],\n standalone: false\n})\nexport class MatchaTitleComponent {\n @Input()\n color: null | string = null;\n\n @Input()\n size: number | string = 4;\n\n private _loading = false;\n @Input() get loading() { return this._loading; }\n set loading(v: boolean | string) { this._loading = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.loading')\n get loadingAttr(): string | null {\n return this.loading ? 'true' : 'false';\n }\n\n private _type: 'pill' | 'bullet' | 'icon' | 'none' = 'pill';\n @Input() get type() { return this._type; }\n set type(v: 'pill' | 'bullet' | 'icon' | 'none' | string) {\n this._type = (v as 'pill' | 'bullet' | 'icon' | 'none') || 'pill';\n }\n\n @HostBinding('attr.type')\n get typeAttr(): string {\n return this.type;\n }\n\n private _icon = '';\n @Input() get icon() { return this._icon; }\n set icon(v: string) { this._icon = v || ''; }\n\n @HostBinding('attr.icon')\n get iconAttr(): string | null {\n return this.icon || null;\n }\n\n @Output() iconClick = new EventEmitter<object>();\n\n\n public sizeClasses: ILevelClasses = {\n 1: 'fw-900 fs-12 lh-12',\n 2: 'fw-900 fs-14 lh-16',\n 3: 'fw-900 fs-16 lh-18',\n 4: 'fw-900 fs-20 lh-22',\n 5: 'fw-900 fs-32 lh-32',\n 6: 'fw-900 fs-40 lh-40',\n 7: 'fw-900 fs-40 lh-40',\n };\n\n public getTypes(): string {\n const color = this.color ? `background-${this.color} ` : 'background-fg';\n const icon = this.icon ? `i-matcha-${this.icon}` : '';\n return this.type === 'pill' ? `min-h-20 h-20 max-h-20 max-w-8 w-8 min-w-8 position-relative mr-8 radius-8 ${color}` :\n this.type === 'bullet' ? `min-h-8 h-8 max-h-8 max-w-8 w-8 min-w-8 position-relative mr-8 radius-8 ${this.color ? `background-${this.color}` : 'background-fg'}` :\n this.type === 'icon' ? `position-relative mr-8 radius-8 ${icon} ${this.color ? `color-${this.color}` : 'color-grey'}` :\n this.type === 'none' ? `d-none--force` : '';\n }\n\n public get signClasses(): string {\n const activeClasses = `d-flex ${this.getTypes()} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n public get textClasses(): string {\n const classes = `d-inline-block position-relative mr-8 radius-8`;\n const size = this.sizeClasses[this.size] ? this.sizeClasses[this.size] : '';\n const activeClasses = `${classes} ${size} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n public emitIconAction(): void {\n const data:object = { icon: this.icon };\n this.iconClick.emit(data);\n }\n\n public hasIconClickOutput(): boolean {\n return this.iconClick.observers.length > 0;\n }\n}\n","<!-- <matcha-title size=\"1\" type=\"bullet\"></matcha-title> -->\n\n<div class=\"d-flex flex-align-center m-0\">\n <ng-container *ngIf=\"loading\">\n <span [class]=\"signClasses\" [class.skeleton-animated-background]=\"loading\"></span>\n <span [class]=\"textClasses\" [class.skeleton-animated-background]=\"loading\" class=\"d-flex px-60\">&nbsp;</span>\n </ng-container>\n\n <ng-container *ngIf=\"!loading\">\n <span [class]=\"signClasses\" [class.cursor-pointer]=\"hasIconClickOutput()\" (click)=\"emitIconAction()\"></span>\n <span [class]=\"textClasses\">\n <ng-content></ng-content>\n </span>\n </ng-container>\n</div>\n","import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, OnInit, OnDestroy, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport type DrawerMode = 'over' | 'push' | 'side';\nexport type DrawerPosition = 'start' | 'end';\n\n@Component({\n selector: 'matcha-drawer',\n templateUrl: './drawer.component.html',\n styleUrls: ['./drawer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer',\n '[class.matcha-drawer-end]': 'position === \"end\"',\n '[class.matcha-drawer-over]': 'mode === \"over\"',\n '[class.matcha-drawer-push]': 'mode === \"push\"',\n '[class.matcha-drawer-side]': 'mode === \"side\"',\n '[class.matcha-drawer-opened]': 'opened',\n 'tabindex': '-1',\n }\n})\nexport class MatchaDrawerComponent implements OnInit, OnDestroy {\n\n // Propriedades principais\n @Input() position: DrawerPosition = 'start';\n\n // Mode com setter para detectar mudanças\n private _mode: DrawerMode = 'over';\n @Input()\n get mode(): DrawerMode {\n return this._mode;\n }\n set mode(value: DrawerMode) {\n if (this._mode !== value) {\n this._mode = value;\n this.modeChange.emit(value);\n this._cdr.markForCheck();\n }\n }\n\n @Input() disableClose: boolean = false;\n @Input() autoFocus: boolean = true;\n @Input() fixedInViewport: boolean = false;\n @Input() fixedTopGap: number = 0;\n @Input() fixedBottomGap: number = 0;\n\n // Largura do drawer\n @Input() width: string = '256px';\n\n @HostBinding('style.width')\n get drawerWidth(): string {\n // Garante que sempre retorne um valor válido\n return this.width || '256px';\n }\n\n // Estado de aberto/fechado\n private _opened: boolean = false;\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n this.toggle(value);\n }\n\n // Eventos\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() openedStart = new EventEmitter<void>();\n @Output() closedStart = new EventEmitter<void>();\n @Output() modeChange = new EventEmitter<DrawerMode>();\n\n // Subject para debounce de animações\n private _animationSubject = new Subject<boolean>();\n private _animating = false;\n\n constructor(\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef\n ) {\n this._setupAnimationDebounce();\n }\n\n ngOnInit() {\n // Inicialização se necessário\n }\n\n ngOnDestroy() {\n this._animationSubject.complete();\n }\n\n private _setupAnimationDebounce() {\n this._animationSubject.pipe(\n debounceTime(50)\n ).subscribe(() => {\n this._animating = false;\n this._cdr.markForCheck();\n });\n }\n\n /**\n * Toggle o estado do drawer\n */\n toggle(isOpen: boolean = !this._opened): Promise<void> {\n return new Promise((resolve) => {\n if (this._opened === isOpen || this._animating) {\n resolve();\n return;\n }\n\n this._animating = true;\n const wasOpened = this._opened;\n this._opened = isOpen;\n\n if (isOpen) {\n this.openedStart.emit();\n } else {\n this.closedStart.emit();\n }\n\n // Emite a mudança\n this.openedChange.emit(this._opened);\n this._cdr.markForCheck();\n\n // Aguarda a animação\n this._animationSubject.next(true);\n\n setTimeout(() => {\n if (this.autoFocus && isOpen) {\n this._elementRef.nativeElement.focus();\n }\n resolve();\n }, 300);\n });\n }\n\n /**\n * Abre o drawer\n */\n open(): Promise<void> {\n return this.toggle(true);\n }\n\n /**\n * Fecha o drawer\n */\n close(): Promise<void> {\n return this.toggle(false);\n }\n\n /**\n * Getter para saber se está animando\n */\n get animating(): boolean {\n return this._animating;\n }\n\n /**\n * Getter para a largura/altura do drawer\n */\n @HostBinding('style.visibility')\n get visibility(): string {\n return this.opened || this._animating ? 'visible' : 'hidden';\n }\n}\n","<div class=\"matcha-drawer-inner-container\">\n <ng-content></ng-content>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ElementRef\n} from '@angular/core';\n\n@Component({\n selector: 'matcha-drawer-content',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer-content',\n }\n})\nexport class MatchaDrawerContentComponent {\n constructor(public _elementRef: ElementRef<HTMLElement>) {}\n}\n","import {\n Component,\n ContentChild,\n ContentChildren,\n QueryList,\n AfterContentInit,\n OnDestroy,\n ChangeDetectorRef,\n ViewEncapsulation,\n HostBinding,\n HostListener\n} from '@angular/core';\nimport { MatchaDrawerComponent } from '../drawer/drawer.component';\nimport { MatchaDrawerContentComponent } from '../drawer-content/drawer-content.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'matcha-drawer-container',\n templateUrl: './drawer-container.component.html',\n styleUrls: ['./drawer-container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n host: {\n 'class': 'matcha-drawer-container',\n '[class.matcha-drawer-container-explicit-backdrop]': '_backdropOverride',\n }\n})\nexport class MatchaDrawerContainerComponent implements AfterContentInit, OnDestroy {\n\n @ContentChildren(MatchaDrawerComponent) _drawers!: QueryList<MatchaDrawerComponent>;\n @ContentChild(MatchaDrawerContentComponent) _content!: MatchaDrawerContentComponent;\n\n @HostBinding('class.matcha-drawer-container-has-open')\n get hasOpenDrawer(): boolean {\n return this._drawers && this._drawers.some(drawer => drawer.opened);\n }\n\n /** Backdrop override */\n _backdropOverride: boolean | null = null;\n\n private _destroyed = new Subject<void>();\n private _doCheck = new Subject<void>();\n\n constructor(private _cdr: ChangeDetectorRef) {\n // Debounce para otimizar detecção de mudanças\n this._doCheck.pipe(\n debounceTime(10),\n takeUntil(this._destroyed)\n ).subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n });\n }\n\n ngAfterContentInit() {\n // Escuta mudanças nos drawers\n this._drawers.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n this._subscribeToDrawerChanges();\n });\n\n // Inscreve nos eventos dos drawers\n this._subscribeToDrawerChanges();\n\n this._updateContentMargins();\n }\n\n /**\n * Inscreve nos eventos de cada drawer\n */\n private _subscribeToDrawerChanges() {\n this._drawers.forEach(drawer => {\n // Escuta mudanças no estado opened\n drawer.openedChange\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateContentMargins();\n this._cdr.markForCheck();\n });\n\n // Escuta mudanças no modo do drawer\n drawer.modeChange\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateContentMargins();\n this._cdr.markForCheck();\n });\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._doCheck.complete();\n }\n\n /**\n * Fecha todos os drawers que não têm disableClose\n */\n @HostListener('document:keydown.escape')\n onEscape() {\n if (this._drawers) {\n this._drawers.forEach(drawer => {\n if (drawer.opened && !drawer.disableClose && drawer.mode === 'over') {\n drawer.close();\n }\n });\n }\n }\n\n /**\n * Valida que não há múltiplos drawers na mesma posição\n */\n private _validateDrawers() {\n // Implementação simplificada - apenas avisa no console\n if (this._drawers && this._drawers.length > 2) {\n console.warn('Matcha Drawer: Mais de 2 drawers detectados. Use no máximo 2 (start e end).');\n }\n }\n\n /**\n * Atualiza as margens do conteúdo baseado nos drawers abertos\n */\n private _updateContentMargins() {\n if (!this._content || !this._drawers) {\n return;\n }\n\n let left = 0;\n let right = 0;\n\n this._drawers.forEach(drawer => {\n // Só aplica margem para side e push quando o drawer está aberto\n if (drawer.opened && (drawer.mode === 'side' || drawer.mode === 'push')) {\n const width = this._getDrawerWidth(drawer);\n\n if (drawer.position === 'start') {\n left = width;\n } else {\n right = width;\n }\n }\n });\n\n // Aplica as margens no content\n this._setContentMargins(left, right);\n }\n\n /**\n * Obtém a largura do drawer de forma segura\n */\n private _getDrawerWidth(drawer: MatchaDrawerComponent): number {\n // Primeiro tenta usar a propriedade width do componente\n if (drawer.width) {\n const widthValue = parseInt(drawer.width, 10);\n if (!isNaN(widthValue) && widthValue > 0) {\n return widthValue;\n }\n }\n\n const element = (drawer as any)._elementRef?.nativeElement;\n\n if (!element) {\n return 256; // Default 256px\n }\n\n // Tenta obter a largura do CSS primeiro (mais confiável)\n const computedStyle = window.getComputedStyle(element);\n const cssWidth = parseInt(computedStyle.width, 10);\n\n // Se a largura computada é válida e não é absurda, usa ela\n if (cssWidth && cssWidth > 0 && cssWidth < 1000) {\n return cssWidth;\n }\n\n // Fallback para offsetWidth, mas valida o valor\n const offsetWidth = element.offsetWidth;\n if (offsetWidth > 0 && offsetWidth < 1000) {\n return offsetWidth;\n }\n\n // Se tudo falhar, retorna o padrão\n return 256;\n }\n\n /**\n * Define as margens do conteúdo\n */\n private _setContentMargins(left: number, right: number) {\n if (this._content) {\n const contentElement = (this._content as any)._elementRef?.nativeElement;\n if (contentElement) {\n // Valida os valores antes de aplicar\n const validLeft = Math.max(0, Math.min(left, 600)); // Max 600px\n const validRight = Math.max(0, Math.min(right, 600)); // Max 600px\n\n contentElement.style.marginLeft = `${validLeft}px`;\n contentElement.style.marginRight = `${validRight}px`;\n }\n }\n }\n\n /**\n * Retorna se há um backdrop visível\n */\n get _hasBackdrop(): boolean {\n if (this._backdropOverride !== null) {\n return this._backdropOverride;\n }\n\n return this._drawers && this._drawers.some(drawer =>\n drawer.opened && drawer.mode === 'over'\n );\n }\n\n /**\n * Fecha o drawer quando o backdrop é clicado\n */\n _onBackdropClick() {\n if (this._drawers) {\n this._drawers.forEach(drawer => {\n if (drawer.opened && !drawer.disableClose && drawer.mode === 'over') {\n drawer.close();\n }\n });\n }\n }\n}\n","<div class=\"matcha-drawer-backdrop\"\n *ngIf=\"_hasBackdrop\"\n (click)=\"_onBackdropClick()\">\n</div>\n\n<ng-content select=\"matcha-drawer\"></ng-content>\n\n<div class=\"matcha-drawer-content-container\">\n <ng-content select=\"matcha-drawer-content\"></ng-content>\n</div>\n","import { Component, Directive, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n standalone: false\n})\nexport class MatchaIconComponent {\n @Input()\n name: string | undefined | null = '';\n\n @Input()\n size: string | undefined | null = '';\n\n @Input()\n color: string | undefined | null = '';\n\n @Input()\n class: string | undefined | null = '';\n\n @Input()\n loading: boolean | string = false;\n\n public get classes(): string {\n const icon = this.name ? `i-matcha-${this.name}` : '';\n const size = this.size ? `i-size-${this.size}` : '';\n const color = `color-${this.color}`;\n const loading = this.loading == true ? 'loading' : '';\n\n const activeClasses = `${icon} ${color} ${size} ${loading} ${this.class}`;\n return activeClasses;\n }\n}\n","<span [class]=\"classes\">\n <ng-content></ng-content>\n</span>\n","import { Component, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n standalone: false\n})\nexport class MatchaGridComponent {\n @Input()\n breakpoint: string = '';\n\n @Input()\n col: string = '';\n\n @Input()\n gap: string = '';\n\n @Input()\n class: string = '';\n\n @Input()\n span: string = '';\n\n @Input()\n rowspan: string = '';\n\n @Input()\n colspan: string = '';\n\n @Input()\n direction: string = '';\n\n @Input()\n loading: boolean | string = false;\n\n private getStringSplited(inputValue: string): string[] {\n const stringWithoutSpaces = inputValue.replace(/\\s+/g, '');\n return stringWithoutSpaces.split(',');\n }\n\n private getGridClasses(breakpoint: string, col: string): string {\n const breakpoints = this.getStringSplited(breakpoint);\n const columns = this.getStringSplited(col);\n let breakpointClasses = '';\n for (let i = 0; i < breakpoints.length; i++) {\n if (breakpoints[i] === '' || breakpoints[i] === 'xs') {\n breakpointClasses += `grid-${columns[i]} `;\n }\n if (breakpoints[i] === 'sm' && columns[i] !== undefined) {\n breakpointClasses += `grid-sm-${columns[i]} `;\n }\n if (breakpoints[i] === 'md' && columns[i] !== undefined) {\n breakpointClasses += `grid-md-${columns[i]} `;\n }\n if (breakpoints[i] === 'lg' && columns[i] !== undefined) {\n breakpointClasses += `grid-lg-${columns[i]} `;\n }\n if (breakpoints[i] === 'xl' && columns[i] !== undefined) {\n breakpointClasses += `grid-xl-${columns[i]} `;\n }\n }\n return breakpointClasses;\n }\n\n public setColspanClasses(span: string, breakpoint: string): void {\n if (span) {\n const spanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('colspan-'));\n spanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n this.renderer.addClass(this.el.nativeElement, `colspan${breakpoint ? '-' + breakpoint : '-sm'}-${span}`);\n }\n }\n\n public setRowspanClasses(span: string, breakpoint: string): void {\n if (span) {\n const spanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('rowspan-'));\n spanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n this.renderer.addClass(this.el.nativeElement, `rowspan${breakpoint ? '-' + breakpoint : '-sm'}-${span}`);\n }\n }\n\n // public setRowspanClasses(rowspan: string, breakpoint: string): void {\n // const elementsWithRowspanClasses = this.el.nativeElement.className.split(' ').filter((c: string) => c.startsWith('rowspan-'));\n // elementsWithRowspanClasses.forEach((c: string) => this.renderer.removeClass(this.el.nativeElement, c));\n // //função que executa a adição de classe para cada breakpoint\n // const breakpoints = this.getStringSplited(breakpoint);\n // const prefix: string = ' rowspan';\n // const rows = this.getStringSplited(rowspan);\n // let rowspanClasses = '';\n // for (let i = 0; i < rows.length; i++) {\n // rowspanClasses = prefix + rows[i];\n // }\n // this.renderer.addClass(this.el.nativeElement, `${rowspanClasses}`);\n // }\n\n public get classes(): string {\n this.class = 'teste';\n const breakpoints = this.getGridClasses(this.breakpoint, this.col);\n const activeClasses = `grid-1 ${breakpoints} gap-${this.gap} ${this.loading ? 'loading' : ''}`;\n return activeClasses;\n }\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n this.setColspanClasses(this.colspan, this.breakpoint);\n this.setRowspanClasses(this.rowspan, this.breakpoint);\n }\n\n ngOnChanges() {\n this.setColspanClasses(this.colspan, this.breakpoint);\n this.setRowspanClasses(this.rowspan, this.breakpoint);\n }\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-masonry',\n templateUrl: './masonry.component.html',\n styleUrls: ['./masonry.component.scss'],\n standalone: false\n})\nexport class MatchaMasonryComponent {\n @Input('col') colSize: string | number | null = null;\n @Input('col-sm') smColSize: string | number | null = null;\n @Input('col-md') mdColSize: string | number | null = null;\n @Input('col-lg') lgColSize: string | number | null = null;\n @Input('col-xl') xlColSize: string | number | null = null;\n @Input('gap') gap: string | number | null = null;\n @Input('gap-sm') gapSm: string | number | null = null;\n @Input('gap-md') gapMd: string | number | null = null;\n @Input('gap-lg') gapLg: string | number | null = null;\n @Input('gap-xl') gapXl: string | number | null = null;\n\n public get classes(): string {\n const col = this.colSize ? `masonry-${this.colSize}` : '';\n const smCol = this.smColSize ? `masonry-sm-${this.smColSize}` : '';\n const mdCol = this.mdColSize ? `masonry-md-${this.mdColSize}` : '';\n const lgCol = this.lgColSize ? `masonry-lg-${this.lgColSize}` : '';\n const xlCol = this.xlColSize ? `masonry-xl-${this.xlColSize}` : '';\n const gap = this.gap ? `masonry-gap-${this.gap}` : '';\n const gapSm = this.gapSm ? `masonry-gap-sm-${this.gapSm}` : '';\n const gapMd = this.gapMd ? `masonry-gap-md-${this.gapMd}` : '';\n const gapLg = this.gapLg ? `masonry-gap-lg-${this.gapLg}` : '';\n const gapXl = this.gapXl ? `masonry-gap-xl-${this.gapXl}` : '';\n let activeClasses = '';\n activeClasses += col ? ` ${col}` : '';\n activeClasses += smCol ? ` ${smCol}` : '';\n activeClasses += mdCol ? ` ${mdCol}` : '';\n activeClasses += lgCol ? ` ${lgCol}` : '';\n activeClasses += xlCol ? ` ${xlCol}` : '';\n activeClasses += gap ? ` ${gap}` : '';\n activeClasses += gapSm ? ` ${gapSm}` : '';\n activeClasses += gapMd ? ` ${gapMd}` : '';\n activeClasses += gapLg ? ` ${gapLg}` : '';\n activeClasses += gapXl ? ` ${gapXl}` : '';\n return activeClasses;\n }\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-content',\n templateUrl: './modal-content.component.html',\n styleUrls: ['./modal-content.component.scss'],\n standalone: false\n})\nexport class MatchaModalContentComponent {\n\n}\n","\n<div class=\"py-24 pt-0 overflow-auto\" style=\"max-height: calc(100vh - 300px);\n\">\n <div class=\"matcha-card-flat matcha-background-transparent p-0 flex-column--force\">\n <div class=\"flex-column matcha-card-flat matcha-background-transparent px-24 py-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-header',\n templateUrl: './modal-header.component.html',\n styleUrls: ['./modal-header.component.scss'],\n standalone: false\n})\nexport class MatchaModalHeaderComponent {\n\n}\n","<!-- [@animate]=\"{ value: '*', params: { delay: '100ms' } }\" -->\n<!-- MATCHA CHECK -->\n<div class=\"matcha-section pt-16 px-16 pt-md-24 px-md-24\">\n <div class=\"d-flex flex-space-between mb-16 mb-md-24\">\n <!-- Remoção do flex-wrap para que o conteúdo seja exibido em uma única linha -->\n <div class=\"flex-space-between flex-align-center\">\n <ng-content></ng-content>\n </div>\n <div class=\"flex-row flex-end gap-8\">\n <ng-content select=\"matcha-modal-options\"></ng-content>\n </div>\n </div>\n <matcha-divider></matcha-divider>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-footer',\n templateUrl: './modal-footer.component.html',\n styleUrls: ['./modal-footer.component.scss'],\n standalone: false\n})\nexport class MatchaModalFooterComponent {\n\n @Input('')\n buttonType: number | string = 0;\n\n ngAfterViewInit() {\n const modalFooter = document.querySelectorAll('matcha-modal-footer');\n modalFooter.forEach(footer => {\n const buttons = footer.querySelectorAll('.matcha-button');\n\n if (buttons.length === 1) {\n buttons.forEach(button => {\n button.classList.add('w-100-p');\n });\n }\n if (buttons.length > 1) {\n buttons.forEach(button => {\n button.classList.add('max-w-sm-256');\n button.classList.add('w-100-p');\n });\n }\n });\n }\n}\n","<div class=\"matcha-section pb-16 px-16 pb-md-24 px-md-24\">\n <matcha-divider></matcha-divider>\n <div class=\"flex-column flex-sm-row w-100-p flex-space-between gap-16\">\n <div class=\"flex-column flex-sm-row w-100-p flex-space-between mt-16 mt-md-24 gap-16\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal-options',\n templateUrl: './modal-options.component.html',\n styleUrl: './modal-options.component.scss',\n standalone: false\n})\nexport class MatchaModalOptionsComponent {\n\n}\n","<div class=\"flex-row gap-8\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'matcha-modal',\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n standalone: false\n})\nexport class MatchaModalComponent {\n\n @Input('size') size: string | null = 'large';\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @Input()\n class: string = '';\n\n @Input()\n hasBackdrop: boolean = true;\n\n @Input()\n backdropClass: string = '';\n\n @HostBinding('attr.size')\n get sizeAttr(): string | null {\n return this.size;\n }\n\n @HostBinding('attr.size-xs')\n get sizeAttrXs(): string | null {\n return this.sizeXs;\n }\n\n @HostBinding('arrt.size-sm')\n get sizeAttrSm(): string | null {\n return this.sizeSm;\n }\n\n @HostBinding('attr.size-md')\n get sizeAttrMd(): string | null {\n return this.sizeMd;\n }\n\n @HostBinding('attr.size-lg')\n get sizeAttrLg(): string | null {\n return this.sizeLg;\n }\n\n @HostBinding('attr.size-xl')\n get sizeAttrXl(): string | null {\n return this.sizeXl;\n }\n\n @HostBinding('class')\n public get classes(): string {\n const activeClasses = `matcha-modal flex-column elevation-8 ${this.class}`;\n return activeClasses;\n }\n\n constructor(\n ) {}\n\n}\n","<div class=\"background-surface elevation-z-4 flex-column matcha-modal radius-8\">\n <ng-content></ng-content>\n</div>","import { Component, HostListener, OnInit, OnDestroy, Input } from '@angular/core';\n\n\n@Component({\n selector: 'matcha-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarComponent implements OnInit, OnDestroy{\n\n @Input() elevation: number = 1;\n\n public isMobileScreen = false;\n\n get elevationClass(): string {\n return `elevation-z-${this.elevation}`;\n }\n \n private readonly mobileBreakpoint = 1024;\n private resizeTimeout: any;\n\n ngOnInit(): void {\n this.checkScreenWidth();\n }\n\n @HostListener('window:resize', [])\n onResize(): void {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.checkScreenWidth();\n }, 20);\n }\n\n private checkScreenWidth(): void {\n this.isMobileScreen = window.innerWidth < this.mobileBreakpoint;\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.resizeTimeout);\n }\n}\n\n","<!-- HOW TO USE:\n<matcha-toolbar>\n <matcha-title type=\"icon\" icon=\"settings-out\" (iconClick)=\"FUNÇÃO-AO-CLICAR-NO-ICONE-AQUI\">\n {{'FINANCIAL.CATEGORY.TITLE' | translate}}\n </matcha-title>\n <search-form toolbar-form-field (searchText)=\"searchText($event)\"></search-form>\n <matcha-toolbar-button icon=\"home-out\" (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-button>\n <matcha-toolbar-content>\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-content>\n <matcha-toolbar-main-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n </matcha-toolbar-main-button>\n QUALQUER OUTRA FUNCIONALIDADE AQUI\n</matcha-toolbar>\n-->\n<ng-template #toolbarMainButton>\n <ng-content select=\"matcha-toolbar-main-button\"></ng-content>\n</ng-template>\n\n<ng-template #toolbarCustomButton>\n <ng-content select=\"matcha-toolbar-custom-button\"></ng-content>\n</ng-template>\n<!-- CONTENT HEADER -->\n<div class=\"flex-column background-surface radius-8\" [ngClass]=\"elevationClass\">\n <div class=\"flex-column flex-md-row flex-wrap p-16 flex-align-center flex-space-between h-auto min-h-72 flex-wrap gap-8\">\n <div class=\"w-100-p--force w-md-auto--force flex-space-between flex-wrap gap-8\">\n <div class=\"min-h-32 flex-center-center\">\n <ng-content select=\"matcha-title\"></ng-content>\n </div>\n <ng-container *ngIf=\"isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n <div class=\"w-100-p--force w-md-auto--force flex-row flex-end gap-8\">\n <!-- ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <ng-content select=\"search-form\"></ng-content>\n <!-- /ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <div class=\"flex-row gap-8\">\n <ng-content select=\"matcha-toolbar-button\"></ng-content>\n <ng-content select=\"matcha-toolbar-content\"></ng-content>\n <ng-content></ng-content>\n <ng-container *ngIf=\"!isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n<!-- / CONTENT HEADER -->\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-button',\n templateUrl: './toolbar-button.component.html',\n styleUrls: ['./toolbar-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarButtonComponent{\n @Input('icon') icon: string = '';\n @Output() buttonClick = new EventEmitter();\n\n public get classes(): string {\n const activeClasses = `i-matcha-${this.icon}`;\n return activeClasses;\n }\n\n emitButtonClick() {\n this.buttonClick.emit();\n }\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\" toolbar-button-tooltip=\"TOOLTIP-AQUI\">\n TEXTO DO BOTÃO AQUI\n</matcha-toolbar-button>\n-->\n<button matcha-button outline=\"true\" size=\"small\" color=\"grey\" icon=\"true\" (click)=\"emitButtonClick()\">\n <span [class]=\"classes\"></span>\n</button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-content',\n templateUrl: './toolbar-content.component.html',\n styleUrls: ['./toolbar-content.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarContentComponent{}\n","<!-- HOW TO USE:\n<matcha-toolbar-content>\n OUTROS CONTEUDOS CUSTOMIZADOS NA TOOLBAR\n</matcha-toolbar-content>\n-->\n<div class=\"d-flex flex-wrap gap-8\">\n <ng-content></ng-content>\n</div>\n","import { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-main-button',\n templateUrl: './toolbar-main-button.component.html',\n styleUrls: ['./toolbar-main-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarMainButtonComponent {\n @Output() buttonClick = new EventEmitter();\n\n emitButtonClick() {\n this.buttonClick.emit();\n }\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-main-button (buttonClick)=\"FUNÇÃO-AO-CLICAR-AQUI\">\n TEXTO DO BOTÃO AQUI\n</matcha-toolbar-main-button>\n-->\n<button matcha-button size=\"tiny\" size-md=\"small\" color=\"accent\" (click)=\"emitButtonClick()\">\n <span class=\"i-matcha-action_plus i-size-sm ml--4\"></span>\n <span class=\"ml-8 fs-14\">\n <ng-content></ng-content>\n </span>\n</button>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-toolbar-custom-button',\n templateUrl: './toolbar-custom-button.component.html',\n styleUrls: ['./toolbar-custom-button.component.scss'],\n standalone: false\n})\nexport class MatchaToolbarCustomButtonComponent {\n}\n","<!-- HOW TO USE:\n<matcha-toolbar-custom-button>\n Botão customizado aqui\n</matcha-toolbar-custom-button>\n-->\n<ng-content></ng-content>\n","import { Component, ContentChild, Input, AfterViewInit, ElementRef } from '@angular/core';\nimport { FormControlName } from '@angular/forms';\n\n@Component({\n selector: 'matcha-form-field',\n standalone: false,\n templateUrl: './matcha-form-field.component.html',\n styleUrl: './matcha-form-field.component.scss',\n})\nexport class MatchaFormFieldComponent implements AfterViewInit {\n @Input() color: 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue' | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber' | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn' | 'brown' | 'grey' | 'blue-grey' | 'primary' | 'accent' | 'warn' = 'grey';\n\n @Input('size') size: string | null | undefined | 'tiny' | 'small' | 'medium' | 'large' | 'huge' = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n @ContentChild(FormControlName) controlDir?: FormControlName;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterViewInit(): void {\n this.generateDataCy();\n }\n\n private generateDataCy(): void {\n // Busca o matcha-label dentro do form-field\n const labelElement = this.elementRef.nativeElement.querySelector('matcha-label');\n const inputElement = this.elementRef.nativeElement.querySelector('input, textarea, select');\n\n if (labelElement && inputElement) {\n const labelText = labelElement.textContent?.trim();\n if (labelText) {\n const dataCyValue = this.convertToKebabCase(labelText);\n inputElement.setAttribute('data-cy', `matcha-form-field-${dataCyValue}`);\n }\n }\n }\n\n private convertToKebabCase(text: string): string {\n return text\n .toLowerCase()\n .replace(/\\s+/g, '-') // Substitui espaços por hífens\n .replace(/[^\\w\\-]/g, '') // Remove caracteres especiais\n .replace(/\\-\\-+/g, '-') // Remove hífens duplos\n .replace(/^-+|-+$/g, ''); // Remove hífens do início e fim\n }\n\n get control() {\n return this.controlDir?.control;\n }\n\n get showError(): boolean {\n return !!this.control?.invalid && !!this.control?.touched;\n }\n}\n","<div class=\"flex-column\">\n <div class=\"matcha-form-field position-relative w-100-p min-h-40 flex-align-center\" #inputSelector>\n <div class=\"flex-row position-absolute w-100-p min-h-40 h-100-p\">\n <div class=\"matcha-form-field-border-start bl-2 bt-2 bb-2 radius-left-8 min-w-8 border-color-{{color}}\"></div>\n <div class=\"matcha-form-field-border-middle bb-2 w-auto border-color-{{color}}\">\n <ng-content select=\"matcha-label\"></ng-content>\n </div>\n <div class=\"matcha-form-field-border-end br-2 bt-2 bb-2 radius-right-8 w-100-p border-color-{{color}}\"></div>\n </div>\n <div class=\"flex-row position-relative py-8 px-12 gap-8 w-100-p\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-container *ngIf=\"showError\">\n <ng-content select=\"matcha-error\"></ng-content>\n </ng-container>\n <ng-content select=\"matcha-autocomplete\"></ng-content>\n</div>\n<ng-content select=\"matcha-hint-text\"></ng-content>\n","import { Component, Input, AfterViewInit, ElementRef, ChangeDetectorRef } from '@angular/core';\n\n@Component({\n selector: 'matcha-label',\n standalone: false,\n templateUrl: './matcha-label.component.html',\n styleUrl: './matcha-label.component.scss',\n})\nexport class MatchaLabelComponent implements AfterViewInit {\n @Input() color: 'red' | 'pink' | 'purple' | 'deep-purple' | 'indigo' | 'blue' | 'light-blue' | 'cyan' | 'teal' | 'green' | 'light-green' | 'lime' | 'yellow' | 'amber' | 'orange' | 'deep-orange' | 'primary' | 'accent' | 'warn' | 'brown' | 'grey' | 'blue-grey' | 'primary' | 'accent' | 'warn' = 'blue-grey';\n\n public isRequired: boolean = false;\n\n constructor(private elementRef: ElementRef, private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n // Usar setTimeout para evitar ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.checkIfRequired();\n this.cdr.detectChanges();\n });\n }\n\n private checkIfRequired(): void {\n // Busca o form-field pai\n const formField = this.elementRef.nativeElement.closest('matcha-form-field');\n if (formField) {\n // Busca por elementos nativos e componentes customizados com required\n const inputElement = formField.querySelector(\n 'input[required], textarea[required], select[required], ' +\n 'matcha-select[required], matcha-autocomplete[required], matcha-date[required]'\n );\n this.isRequired = !!inputElement;\n }\n }\n}\n","<label\n class=\"d-flex d-flex-align-center position-relative text-nowrap px-4 fs-12 lh-18 fw-700 color-{{color}}\"\n style=\"transform: translateY(-8px);\">\n <ng-content></ng-content>\n <span *ngIf=\"isRequired\">&nbsp;*</span>\n <!-- <span class=\"pl-4 fs-10 fw-400 lh-16 matcha-color-placeholder\">(Opcional)</span> -->\n</label>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-error',\n standalone: false,\n templateUrl: './matcha-error.component.html',\n styleUrl: './matcha-error.component.scss',\n})\nexport class MatchaErrorComponent {}\n","<p class=\"w-100-p color-red fs-12 lh-16 flex-row flex-align-center gap-4 m-0 py-4\">\n <matcha-icon name=\"action_sign_warning-out\" size=\"sm\"></matcha-icon>\n <ng-content></ng-content>\n</p>\n","import { Directive, ElementRef, HostListener, Input, OnDestroy } from '@angular/core';\n\n@Directive({\n selector: '[matchaRipple]',\n standalone: false\n})\nexport class MatchaRippleDirective implements OnDestroy {\n @Input() rippleColor: string = 'rgba(0, 0, 0, 0.5)'; // Cor padrão do efeito\n private ripples: HTMLElement[] = [];\n\n constructor(private el: ElementRef) {\n // Garantir que o elemento tenha position relative\n this.el.nativeElement.style.position = 'relative';\n this.el.nativeElement.style.overflow = 'hidden';\n }\n\n @HostListener('mousedown', ['$event'])\n onMouseDown(event: MouseEvent): void {\n const target = this.el.nativeElement;\n const rect = target.getBoundingClientRect();\n\n const ripple = document.createElement('span');\n ripple.className = 'ripple';\n\n // Definir o tamanho do ripple baseado no maior lado do elemento\n const size = Math.max(target.offsetWidth, target.offsetHeight);\n ripple.style.height = ripple.style.width = size * 2 + 'px';\n\n // Aplicar estilo básico ao ripple\n ripple.style.backgroundColor = this.rippleColor;\n ripple.style.position = 'absolute';\n ripple.style.borderRadius = '50%';\n ripple.style.opacity = '0.5';\n ripple.style.transform = 'scale(0)';\n ripple.style.transition = 'transform 0.6s, opacity 0.6s';\n ripple.style.pointerEvents = 'none';\n\n const top = event.pageY - rect.top - size + window.scrollY;\n const left = event.pageX - rect.left - size + window.scrollX;\n\n ripple.style.top = top + 'px';\n ripple.style.left = left + 'px';\n\n target.appendChild(ripple);\n this.ripples.push(ripple);\n\n // Inicia a animação no próximo frame\n requestAnimationFrame(() => {\n ripple.style.transform = 'scale(2)';\n ripple.style.opacity = '0';\n });\n\n // Remove o ripple após a animação\n setTimeout(() => {\n if (ripple && ripple.parentElement) {\n ripple.parentElement.removeChild(ripple);\n this.ripples = this.ripples.filter(r => r !== ripple);\n }\n }, 600);\n }\n\n ngOnDestroy() {\n // Limpa todos os ripples quando o componente é destruído\n this.ripples.forEach(ripple => {\n if (ripple && ripple.parentElement) {\n ripple.parentElement.removeChild(ripple);\n }\n });\n this.ripples = [];\n }\n}","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaCheckboxComponent),\n multi: true\n }\n ]\n})\nexport class MatchaCheckboxComponent implements ControlValueAccessor {\n @Input() color: string = 'accent';\n @Input() indeterminate: boolean = false;\n\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean | string) {\n // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.\n this._disabled = value != null && `${value}` !== 'false';\n }\n\n private _checked = false;\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean | string) {\n // Converte string para boolean: 'false' (string) ou false (boolean) para false, qualquer outro valor para true\n const booleanValue = value != null && `${value}` !== 'false';\n if (booleanValue !== this._checked) {\n this._checked = booleanValue;\n this.onChange(this._checked);\n }\n }\n\n @Output() checkedChange = new EventEmitter<{ checked: boolean }>();\n @Output() change = new EventEmitter<Event>();\n\n // ControlValueAccessor methods\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(value: boolean): void {\n this._checked = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) return;\n\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.onTouched();\n\n const eventData = { checked: this.checked };\n this.checkedChange.emit(eventData);\n this.change.emit(event);\n }\n}\n","<label\n class=\"matcha-checkbox flex-align-center\"\n [class.matcha-checkbox-disabled]=\"disabled\">\n <div\n class=\"matcha-checkbox-container w-40 h-40 max-w-40 max-h-40 min-w-40 min-h-40 flex-center-center radius-full cursor-pointer\"\n matchaRipple>\n <input\n type=\"checkbox\"\n class=\"matcha-checkbox-input\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [indeterminate]=\"indeterminate\"\n (change)=\"onInputChange($event)\">\n </div>\n\n <span class=\"matcha-checkbox-label fw-500 fs-16 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaRadioComponent),\n multi: true\n }\n ]\n})\nexport class MatchaRadioComponent implements ControlValueAccessor {\n @Input() color: string = 'accent';\n @Input() value: any = null;\n @Input() name: string = '';\n\n private _disabled = false;\n @Input()\n set disabled(value: boolean | string) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Input()\n get checked(): boolean {\n return this._checked;\n }\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n const outVal = this.value !== undefined ? this.value : this._checked;\n this.onChange(outVal);\n }\n }\n\n private _checked: boolean = false;\n private _modelValue: any = null;\n\n @Output() checkedChange = new EventEmitter<{ checked: boolean }>();\n @Output() change = new EventEmitter<Event>();\n\n // ControlValueAccessor methods\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(value: any): void {\n this._modelValue = value;\n this._checked = this.value !== undefined ? this.value === value : !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) return;\n\n this.checked = true;\n this.onTouched();\n\n // Emitir o valor correto para o ControlValueAccessor\n const outVal = this.value !== undefined ? this.value : this.checked;\n this.onChange(outVal);\n\n const eventData = { checked: this.checked };\n this.checkedChange.emit(eventData);\n this.change.emit(event);\n }\n}\n","<label\n class=\"matcha-radio flex-align-center\"\n [class.matcha-radio-disabled]=\"disabled\">\n <div\n class=\"matcha-radio-container w-40 h-40 max-w-40 max-h-40 min-w-40 min-h-40 flex-center-center radius-full cursor-pointer\"\n matchaRipple>\n <input\n type=\"radio\"\n class=\"matcha-radio-input\"\n [attr.name]=\"name\"\n [value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\">\n </div>\n\n <span class=\"matcha-radio-label fw-500 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>","import { Component, ElementRef, Inject, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-spin',\n standalone: false,\n templateUrl: './spin.component.html',\n styleUrl: './spin.component.scss'\n})\nexport class MatchaSpinComponent {\n private _progress: string | number = 0;\n \n @Input()\n set progress(value: string | number) {\n this._progress = Number(value);\n }\n get progress(): string | number {\n return this._progress;\n }\n\n @Input() color: string = 'accent';\n @Input('size') size: string | null = null;\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n readonly strokeWidth: number = 5;\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(Renderer2) private _renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spin');\n this.setSize();\n }\n\n private setSize() {\n const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\n sizes.forEach(size => {\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spin-${size}`);\n });\n\n if (this.size) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-spin-${this.size}`);\n }\n }\n\n get diameter(): number {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return rect.width;\n }\n\n get radius(): number {\n return (this.diameter - this.strokeWidth) / 2;\n }\n\n get circumference(): number {\n return 2 * Math.PI * this.radius;\n }\n\n get dashOffset(): number {\n const progress = Math.min(Math.max(Number(this.progress), 0), 100);\n return this.circumference - (progress / 100) * this.circumference;\n }\n\n}\n","<div\n class=\"matcha-spin\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"progress\"\n>\n <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\">\n <circle\n class=\"spin-placeholder\"\n [attr.cx]=\"diameter / 2\"\n [attr.cy]=\"diameter / 2\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n />\n <circle\n class=\"spin-progress\"\n [attr.cx]=\"diameter / 2\"\n [attr.cy]=\"diameter / 2\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.stroke]=\"color\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"progress ? dashOffset : null\"\n />\n </svg>\n</div>\n","import { Component, ElementRef, HostBinding, Inject, Input, Renderer2 } from '@angular/core';\n\n@Component({\n selector: 'matcha-spinner',\n standalone: false,\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class MatchaSpinnerComponent {\n private _progressValue: number = 0;\n @Input()\n set progress(value: string | number) {\n this._progressValue = Number(value);\n }\n get progress(): string | number {\n return this._progressValue;\n }\n\n @HostBinding('attr.progress') get _progress() { return this.progress; }\n\n\n @Input() color: string = 'accent';\n\n @HostBinding('attr.color') get _color() { return this.color; }\n\n @Input('size') size: string | null = null;\n\n @HostBinding('attr.size')\n get hostSize(): string | null {\n return this.size;\n }\n\n @Input('size-xs') sizeXs: string | null = null;\n @Input('size-sm') sizeSm: string | null = null;\n @Input('size-md') sizeMd: string | null = null;\n @Input('size-lg') sizeLg: string | null = null;\n @Input('size-xl') sizeXl: string | null = null;\n\n // Valores fixos baseados no hard coded que funciona\n readonly diameter = 66;\n readonly center = 33;\n readonly radius = 30;\n readonly strokeWidth = 5;\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(Renderer2) private _renderer: Renderer2\n ) { }\n\n ngOnInit() {\n this._renderer.addClass(this._elementRef.nativeElement, 'matcha-spinner');\n this.setSize();\n }\n\n private setSize() {\n const sizes = ['tiny', 'small', 'medium', 'large', 'huge'];\n sizes.forEach(size => {\n this._renderer.removeClass(this._elementRef.nativeElement, `matcha-spinner-${size}`);\n });\n\n if (this.size) {\n this._renderer.addClass(this._elementRef.nativeElement, `matcha-spinner-${this.size}`);\n }\n }\n\n get circumference(): number {\n return 2 * Math.PI * this.radius;\n }\n\n get dashOffset(): number {\n const progress = Math.min(Math.max(Number(this.progress), 0), 100);\n return this.circumference - (progress / 100) * this.circumference;\n }\n}\n","<div\n class=\"matcha-spinner\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-valuenow]=\"progress\"\n>\n <svg [attr.viewBox]=\"'0 0 ' + diameter + ' ' + diameter\" class=\"spinner\">\n <circle\n class=\"spinner-placeholder\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n stroke-linecap=\"round\"\n />\n <circle\n class=\"spinner-progress path\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius\"\n [attr.stroke-width]=\"strokeWidth\"\n [attr.stroke]=\"color\"\n [attr.stroke-dasharray]=\"circumference\"\n [attr.stroke-dashoffset]=\"dashOffset\"\n stroke-linecap=\"round\"\n />\n </svg>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-hint-text',\n standalone: false,\n templateUrl: './hint-text.component.html',\n styleUrl: './hint-text.component.scss'\n})\nexport class MatchaHintTextComponent {\n @Input('type') type: string = 'error';\n @Input('size') size: string = 'tiny';\n\n get iconName(): string {\n switch (this.type) {\n case 'warning': return 'action_sign_warning-out';\n case 'info': return 'info-out';\n case 'success': return 'action_done';\n default: return 'action_sign_warning-out';\n }\n }\n\n get iconColor(): string {\n switch (this.type) {\n case 'warning': return 'yellow';\n case 'info': return 'blue';\n case 'success': return 'green';\n default: return 'red';\n }\n }\n\n}\n","<div class=\"d-flex flex-align-center gap-4\">\n <matcha-icon color=\"{{ iconColor }}\" name=\"{{ iconName }}\"> </matcha-icon>\n <span class=\"text\"><ng-content></ng-content></span>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-skeleton',\n templateUrl: './skeleton.component.html',\n styleUrls: ['./skeleton.component.scss'],\n standalone: false\n})\nexport class MatchaSkeletonComponent {\n\n @Input('amount') @HostBinding('attr.amount') public amount: number | string = 3;\n @Input('grid') @HostBinding('attr.grid') public grid: number | string = 3;\n @Input('height') @HostBinding('attr.height') public height: number | string = 100;\n @Input('model') @HostBinding('attr.model') public model: 'profile'| 'table' | 'empty' | string | null = 'empty';\n @Input('gap') @HostBinding('attr.gap') public gap: number | string = 16;\n\n public get classes(): string {\n // if string parse to int\n this.amount = typeof this.amount === 'string' ? parseInt(this.amount) : this.amount;\n this.grid = typeof this.grid === 'string' ? parseInt(this.grid) : this.grid;\n\n let classes = `gap-${this.gap} `;\n this.amount > 1 ? classes += `grid-sm-${this.grid - 1} ` : classes;\n this.amount > 2 ? classes += `grid-md-${this.grid} ` : classes;\n return classes;\n }\n\n public get heightClass(): string {\n return `h-${this.height}`;\n }\n\n public get amountArray(): number[] {\n const amountNumber = typeof this.amount === 'string' ? parseInt(this.amount) : this.amount;\n return Array(amountNumber).fill(0).map((_, index) => index);\n }\n}\n","<ng-content></ng-content>\n<!-- CARD SKELETON -->\n<div [class]=\"classes\" *ngIf=\"model !== 'table'\">\n <div class=\"skeleton-animated-background flex-column--force p-0 radius-8 user-select-none overflow-hidden\" *ngFor=\"let i of amountArray\">\n\n <ng-container *ngIf=\"model === 'profile'\"><span class=\"h8 title p-16 m-0\"> <span class=\"radius-full background-surface-alpha h-48 w-48\"></span>&nbsp;</span></ng-container>\n\n <div [class]=\"'h-'+ height + ' flex-column--force p-16'\"></div>\n\n <ng-container *ngIf=\"model === 'profile'\">\n <div class=\"flex-column--force\">\n <div class=\"flex-column--force p-16 gap-16\">\n <div class=\"w-100-p h-16 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p h-16 background-surface-alpha radius-full\"></div>\n </div>\n </div>\n </ng-container>\n\n </div>\n</div>\n<!-- CARD SKELETON -->\n\n<!-- TABLE SKELETON -->\n<div class=\"skeleton-animated-background w-100-p mr-16 flex-column--force p-0 radius-8 user-select-none\" *ngIf=\"model === 'table'\">\n\n <div class=\"flex-column--force h-64 background-surface-alpha\">\n <ng-container>&nbsp;</ng-container>\n </div>\n\n <ng-container *ngFor=\"let i of amountArray\">\n <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force\">\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"min-h-48 min-w-48 h-48 w-48 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n </div>\n\n <div class=\"grid-4 h-80 px-16 gap-16 flex-align-center--force background-bg-alpha\">\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"min-h-48 min-w-48 h-48 w-48 background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-30-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n <div class=\"w-100-p flex-row--force gap-16\">\n <div class=\"w-100-p flex-column--force flex-center--force gap-16\">\n <div class=\"h-16 w-60-p background-surface-alpha radius-full\"></div>\n <div class=\"h-16 w-100-p background-surface-alpha radius-full\"></div>\n </div>\n </div>\n <div class=\"h-16 w-100-p flex-column--force background-surface-alpha radius-full\"></div>\n </div>\n\n </ng-container>\n\n</div>\n<!-- TABLE SKELETON -->\n","import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy, ElementRef, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSlideToggleComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatchaSlideToggleComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\n @Input() color: string = 'accent'; \n\n private _checked: boolean = false;\n @Input()\n set checked(value: boolean | string) {\n const newCheckedState = value === '' ? true : !!value;\n if (newCheckedState !== this._checked) {\n this._checked = newCheckedState;\n }\n }\n get checked(): boolean {\n return this._checked;\n }\n\n private _disabled: boolean = false;\n @Input()\n set disabled(value: boolean | string) {\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n @Output() change = new EventEmitter<{ checked: boolean }>();\n\n onChange: (value: boolean) => void = (_: boolean) => {};\n onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (this.disabled) {\n this.elementRef.nativeElement.setAttribute('disabled', '');\n } else {\n this.elementRef.nativeElement.removeAttribute('disabled');\n }\n }\n }\n\n ngAfterViewInit(): void {\n \n if (this.disabled) {\n this.elementRef.nativeElement.setAttribute('disabled', '');\n }\n }\n\n onInputChange(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n const inputElement = event.target as HTMLInputElement;\n const newCheckedState = inputElement.checked;\n\n this._checked = newCheckedState;\n this.onChange(newCheckedState);\n this.onTouched();\n this.change.emit({ checked: newCheckedState });\n }\n}\n","<label\n class=\"matcha-slide-toggle-wrapper flex-align-center\"\n [class.matcha-slide-toggle-disabled]=\"disabled\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"onInputChange($event)\"\n />\n\n <span class=\"matcha-slide-toggle-label ml-8 fw-500 fs-16 lh-20\">\n <ng-content></ng-content>\n </span>\n</label>\n","import {\n AfterContentInit, Component, ContentChildren, HostBinding,\n Input, QueryList, ElementRef\n} from '@angular/core';\nimport { MatchaButtonComponent } from '../../matcha-button/button/button.component';\n\n@Component({\n selector: 'matcha-button-toggle',\n templateUrl: './button-toggle.component.html',\n styleUrl: './button-toggle.component.scss',\n standalone: false\n})\nexport class MatchaButtonToggleComponent implements AfterContentInit {\n\n private _multiple = false;\n @Input() get multiple() { return this._multiple; }\n set multiple(v: boolean | string) { this._multiple = v === 'false' ? false : !!v; }\n\n private _disabled = false;\n @Input() get disabled() { return this._disabled; }\n set disabled(v: boolean | string) { this._disabled = v === 'false' ? false : !!v; }\n @HostBinding('attr.disabled') get isDisabled() { return this.disabled || null; }\n\n private _required = false;\n @Input() get required() { return this._required; }\n set required(v: boolean | string) { this._required = v === 'false' ? false : !!v; }\n\n @Input() inactiveColor = 'primary';\n\n @Input() inactiveType: string = 'solid';\n\n private _gap = 16;\n @Input() set gap(v: string | number) { const n = +v; this._gap = isNaN(n) ? 16 : n; }\n get gapClass() { return `gap-${this._gap}`; }\n\n get gap(): number {\n return this._gap;\n }\n\n @ContentChildren(MatchaButtonComponent)\n buttons!: QueryList<MatchaButtonComponent>;\n\n constructor(private elementRef: ElementRef) {}\n\n ngAfterContentInit(): void {\n const buttons = this.elementRef.nativeElement.querySelectorAll('button[matcha-button]');\n buttons.forEach((button: Element, index: number) => {\n const isActive = button.hasAttribute('active');\n this.setButtonState(button as HTMLElement, isActive);\n\n button.addEventListener('click', () => this.onButtonSelected(button as HTMLElement));\n });\n }\n\n private setButtonState(button: HTMLElement, isActive: boolean): void {\n if (isActive) {\n button.setAttribute('active', '');\n } else {\n button.removeAttribute('active');\n }\n }\n\n private onButtonSelected(selectedButton: HTMLElement): void {\n const buttons = this.elementRef.nativeElement.querySelectorAll('button[matcha-button]');\n const activeButtons = Array.from(buttons).filter((button: unknown) =>\n (button as Element).hasAttribute('active')\n );\n\n if (this.required && activeButtons.length === 1 && activeButtons[0] === selectedButton) {\n return;\n }\n\n if (this.multiple) {\n const isActive = selectedButton.hasAttribute('active');\n this.setButtonState(selectedButton, !isActive);\n return;\n }\n\n if (selectedButton.hasAttribute('active')) {\n this.setButtonState(selectedButton, false);\n } else {\n buttons.forEach((button: Element) => {\n this.setButtonState(button as HTMLElement, button === selectedButton);\n });\n }\n }\n}\n","<div\n class=\"button-group d-flex\"\n [ngClass]=\"gapClass\"\n [class.flex-wrap]=\"gap !== 0\"\n role=\"group\"\n>\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-tab',\n templateUrl: './tab-item.component.html',\n standalone: false,\n})\nexport class MatchaTabItemComponent {\n @Input() title: string = '';\n @Input() icon: string = '';\n \n private _active: boolean = false;\n @Input() set active(value: boolean | string) {\n this._active = value === '' || value === true || value === 'true';\n }\n get active(): boolean {\n return this._active;\n }\n}\n","<ng-content *ngIf=\"active\"></ng-content>\n","import { Component, ContentChildren, AfterContentInit, QueryList, Input, Output, EventEmitter, HostListener, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatchaTabItemComponent } from '../tab-item/tab-item.component';\nimport { createAnimations } from '../../matcha-animations/animations';\n\nexport interface TabChangeEvent {\n index: number;\n tab?: MatchaTabItemComponent;\n}\n\n@Component({\n selector: 'matcha-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n animations: [...createAnimations],\n standalone: false,\n})\nexport class MatchaTabsComponent implements AfterContentInit, OnChanges {\n @ContentChildren(MatchaTabItemComponent) tabs!: QueryList<MatchaTabItemComponent>;\n\n @Input() selectedIndex: number = 0;\n @Output() selectedIndexChange = new EventEmitter<number>();\n @Output() selectedTabChange = new EventEmitter<TabChangeEvent>();\n\n @Input()\n get activeTabIndex(): number {\n return this.selectedIndex;\n }\n set activeTabIndex(value: number) {\n this.selectedIndex = value;\n }\n\n @Output() tabSelected = new EventEmitter<number>();\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectedIndex'] && !changes['selectedIndex'].firstChange) {\n this.selectTabByIndex(this.selectedIndex);\n }\n }\n\n ngAfterContentInit() {\n this.tabs.changes.subscribe(() => {\n this.handleTabsChange();\n });\n\n this.handleTabsChange();\n }\n\n private handleTabsChange() {\n const activeTabs = this.tabs.filter(tab => tab.active);\n if (activeTabs.length === 0 && this.tabs.first) {\n this.selectTabByIndex(this.selectedIndex);\n }\n }\n\n selectTab(tab: MatchaTabItemComponent) {\n if (tab.active) return;\n\n const tabsArray = this.tabs.toArray();\n tabsArray.forEach(t => t.active = false);\n tab.active = true;\n const index = tabsArray.indexOf(tab);\n\n this.selectedIndex = index;\n\n this.selectedIndexChange.emit(index);\n this.selectedTabChange.emit({ index, tab });\n this.tabSelected.emit(index);\n }\n\n selectTabByIndex(index: number) {\n if (index >= 0 && index < this.tabs.length) {\n const tab = this.tabs.toArray()[index];\n this.selectTab(tab);\n }\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n const tabsArray = this.tabs.toArray();\n const currentIndex = tabsArray.findIndex(tab => tab.active);\n\n if (event.key === 'ArrowRight') {\n const nextIndex = (currentIndex + 1) % tabsArray.length;\n this.selectTabByIndex(nextIndex);\n } else if (event.key === 'ArrowLeft') {\n const prevIndex = (currentIndex - 1 + tabsArray.length) % tabsArray.length;\n this.selectTabByIndex(prevIndex);\n } else if (event.key === 'Home') {\n this.selectTabByIndex(0);\n } else if (event.key === 'End') {\n this.selectTabByIndex(tabsArray.length - 1);\n }\n }\n}\n","<div class=\"flex-column gap-24 w-100-p\">\n <nav class=\"button-group overflow-auto w-100-p flex-row gap-8 list-style-none pl-0 pb-4\" role=\"tablist\">\n <button *ngFor=\"let tab of tabs; let i = index\" (click)=\"selectTabByIndex(i)\"\n [attr.aria-selected]=\"tab.active\"\n [attr.aria-controls]=\"'tab-content-' + i\"\n [ngClass]=\"{'active': tab.active}\"\n class=\"\n border-color-{{tab.active?'accent':'surface'}} background-surface\n cursor-pointer w-100-p min-w-128 b-2 radius-8 p-8 flex-column flex-align-center gap-4 flex-space-between\"\n role=\"tab\"\n tabindex=\"{{tab.active ? 0 : -1}}\">\n <matcha-icon [name]=\"tab.icon\" color=\"accent\" size=\"md\"></matcha-icon>\n <span class=\"color-fg fw-900 fs-14 lh-16 line-clamp-2\">\n {{ tab.title }}\n </span>\n </button>\n </nav>\n\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'matcha-date',\n templateUrl: './matcha-date.component.html',\n styleUrls: ['./matcha-date.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaDateComponent),\n multi: true\n }\n ]\n})\nexport class MatchaDateComponent implements ControlValueAccessor {\n @Input() placeholder: string = 'Selecione uma data';\n @Input() min: string = '';\n @Input() max: string = '';\n @Input() disabled: boolean = false;\n\n value: string = '';\n isDisabled: boolean = false;\n\n // ControlValueAccessor methods\n private onChange = (value: any) => {};\n private onTouched = () => {};\n\n writeValue(value: any): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.disabled = isDisabled;\n }\n\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n this.onChange(this.value);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n}\n\n","<input\n type=\"date\"\n class=\"matcha-date-input\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [min]=\"min\"\n [max]=\"max\"\n [disabled]=\"disabled || isDisabled\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\"\n/>\n\n","import { AfterContentInit, Component, ContentChildren, OnDestroy, QueryList } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n standalone: false\n})\nexport class MatchaDateRangeComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(NgControl, { descendants: true }) controls!: QueryList<NgControl>;\n\n private startDateControl: AbstractControl | null = null;\n private endDateControl: AbstractControl | null = null;\n private subscription = new Subscription();\n\n ngAfterContentInit(): void {\n // Pega os controles projetados no template\n const controlsArray = this.controls.toArray();\n if (controlsArray.length >= 2) {\n this.startDateControl = controlsArray[0].control;\n this.endDateControl = controlsArray[1].control;\n\n // Adiciona validação nos dois campos\n if (this.startDateControl && this.endDateControl) {\n this.subscription.add(\n this.startDateControl.valueChanges.subscribe(() => this.validateDateRange())\n );\n this.subscription.add(\n this.endDateControl.valueChanges.subscribe(() => this.validateDateRange())\n );\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Validação de formato de data e intervalo: data inicial não pode ser posterior à data final\n */\n private validateDateRange(): void {\n if (!this.startDateControl || !this.endDateControl) return;\n\n const startValue = this.startDateControl.value;\n const endValue = this.endDateControl.value;\n\n // Se ambos os campos estão vazios, não valida\n if (!startValue && !endValue) {\n this.clearDateRangeErrors();\n return;\n }\n\n // Se apenas um campo está preenchido, limpa erros de intervalo\n if (!startValue || !endValue) {\n this.clearDateRangeErrors();\n return;\n }\n\n // Validação de formato de data (YYYY-MM-DD)\n const dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\n\n if (!dateRegex.test(startValue)) {\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['invalidDateFormat']: true\n });\n return;\n }\n\n if (!dateRegex.test(endValue)) {\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['invalidDateFormat']: true\n });\n return;\n }\n\n const startDate = new Date(startValue);\n const endDate = new Date(endValue);\n\n // Verifica se as datas são válidas\n if (isNaN(startDate.getTime())) {\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['invalidDate']: true\n });\n return;\n }\n\n if (isNaN(endDate.getTime())) {\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['invalidDate']: true\n });\n return;\n }\n\n // Validação principal: data inicial não pode ser posterior à data final\n if (startDate > endDate) {\n // Adiciona erros quando a data inicial é posterior à final\n this.startDateControl.setErrors({\n ...this.startDateControl.errors,\n ['dateRangeInvalid']: true\n });\n this.endDateControl.setErrors({\n ...this.endDateControl.errors,\n ['dateRangeInvalid']: true\n });\n } else {\n // Remove apenas nossos erros específicos se o intervalo está correto\n this.clearDateRangeErrors();\n }\n }\n\n /**\n * Limpa apenas os erros relacionados ao intervalo de datas\n */\n private clearDateRangeErrors(): void {\n if (this.startDateControl) {\n this.removeSpecificError(this.startDateControl, 'dateRangeInvalid');\n this.removeSpecificError(this.startDateControl, 'invalidDateFormat');\n this.removeSpecificError(this.startDateControl, 'invalidDate');\n this.removeSpecificError(this.startDateControl, 'startAfterEnd');\n }\n if (this.endDateControl) {\n this.removeSpecificError(this.endDateControl, 'dateRangeInvalid');\n this.removeSpecificError(this.endDateControl, 'invalidDateFormat');\n this.removeSpecificError(this.endDateControl, 'invalidDate');\n this.removeSpecificError(this.endDateControl, 'endBeforeStart');\n }\n }\n\n /**\n * Remove um erro específico sem afetar outros erros\n */\n private removeSpecificError(control: AbstractControl, errorName: string): void {\n const errors = { ...control.errors };\n if (errors) {\n delete errors[errorName];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n}\n","<div class=\"matcha-date-range-container\">\n <ng-content></ng-content>\n</div>\n","import { AfterContentInit, Component, ContentChildren, Input, OnDestroy, QueryList } from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-time',\n templateUrl: './time.component.html',\n styleUrls: ['./time.component.scss'],\n standalone: false\n})\nexport class MatchaTimeComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(NgControl, { descendants: true }) controls!: QueryList<NgControl>;\n \n // Adiciona inputs para integração com campos de data\n @Input() startDateControlName?: string;\n @Input() endDateControlName?: string;\n \n // Opção para desabilitar a validação quando dias são diferentes\n @Input() allowCrossDays: boolean = false;\n\n private startTimeControl: AbstractControl | null = null;\n private endTimeControl: AbstractControl | null = null;\n private startDateControl: AbstractControl | null = null;\n private endDateControl: AbstractControl | null = null;\n private subscription = new Subscription();\n\n ngAfterContentInit(): void {\n // Pega os controles projetados no template\n const controlsArray = this.controls.toArray();\n if (controlsArray.length >= 2) {\n this.startTimeControl = controlsArray[0].control;\n this.endTimeControl = controlsArray[1].control;\n \n // Tenta encontrar os controles de data no form parent\n if (this.startTimeControl && this.endTimeControl && \n this.startDateControlName && this.endDateControlName) {\n const formGroup = this.startTimeControl.parent;\n if (formGroup) {\n this.startDateControl = formGroup.get(this.startDateControlName);\n this.endDateControl = formGroup.get(this.endDateControlName);\n }\n }\n\n // Adiciona validação para os campos de tempo\n if (this.startTimeControl && this.endTimeControl) {\n this.subscription.add(\n this.startTimeControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n this.subscription.add(\n this.endTimeControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n }\n \n // Adiciona validação para os campos de data, se existirem\n if (this.startDateControl && this.endDateControl) {\n this.subscription.add(\n this.startDateControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n this.subscription.add(\n this.endDateControl.valueChanges.subscribe(() => this.validateTimeRange())\n );\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /**\n * Validação de intervalo de tempo que pode cruzar dias\n */\n private validateTimeRange(): void {\n if (!this.startTimeControl || !this.endTimeControl) return;\n if (!this.startTimeControl.value || !this.endTimeControl.value) return;\n\n let startDateTime: Date;\n let endDateTime: Date;\n \n // Se temos controles de data, usamos as datas fornecidas\n if (this.startDateControl?.value && this.endDateControl?.value) {\n const startDate = this.startDateControl.value;\n const endDate = this.endDateControl.value;\n \n startDateTime = new Date(`${startDate}T${this.startTimeControl.value}`);\n endDateTime = new Date(`${endDate}T${this.endTimeControl.value}`);\n \n // Comparação de data + hora\n if (startDateTime > endDateTime) {\n this.setValidationErrors();\n } else {\n this.clearValidationErrors();\n }\n } \n // Sem controles de data, ou se allowCrossDays=true, não validamos cruzamento de dias\n else if (this.allowCrossDays) {\n // Nesse caso, assumimos que o intervalo é válido mesmo se hora final < hora inicial\n this.clearValidationErrors();\n } \n // Caso tradicional: mesmo dia, validação simples de hora\n else {\n const today = new Date().toISOString().split('T')[0];\n startDateTime = new Date(`${today}T${this.startTimeControl.value}`);\n endDateTime = new Date(`${today}T${this.endTimeControl.value}`);\n \n if (startDateTime > endDateTime) {\n this.setValidationErrors();\n } else {\n this.clearValidationErrors();\n }\n }\n }\n \n /**\n * Define erros de validação nos controles\n */\n private setValidationErrors(): void {\n this.startTimeControl?.setErrors({ ['startAfterEnd']: true });\n this.endTimeControl?.setErrors({ ['endBeforeStart']: true });\n }\n \n /**\n * Remove erros específicos de validação\n */\n private clearValidationErrors(): void {\n this.removeSpecificError(this.startTimeControl, 'startAfterEnd');\n this.removeSpecificError(this.endTimeControl, 'endBeforeStart');\n }\n\n /**\n * Remove um erro específico sem afetar outros erros\n */\n private removeSpecificError(control: AbstractControl | null, errorName: string): void {\n if (!control) return;\n const errors = { ...control.errors };\n if (errors) {\n delete errors[errorName];\n control.setErrors(Object.keys(errors).length ? errors : null);\n }\n }\n}\n","<div class=\"d-flex gap-16\">\n <ng-content></ng-content>\n</div>\n","// Array of country objects for the flag dropdown.\n\n// Here is the criteria for the plugin to support a given country/territory\n// - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n// - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n// - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n// - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n\n// Each country array has the following information:\n// [\n// Country name,\n// iso2 code,\n// International dial code,\n// Order (if >1 country with same dial code),\n// Area codes\n// ]\nvar allCountries = [\n [\n \"Afghanistan (‫افغانستان‬‎)\",\n \"af\",\n \"93\"\n ],\n [\n \"Albania (Shqipëri)\",\n \"al\",\n \"355\"\n ],\n [\n \"Algeria (‫الجزائر‬‎)\",\n \"dz\",\n \"213\"\n ],\n [\n \"American Samoa\",\n \"as\",\n \"1\",\n 5,\n [\"684\"]\n ],\n [\n \"Andorra\",\n \"ad\",\n \"376\"\n ],\n [\n \"Angola\",\n \"ao\",\n \"244\"\n ],\n [\n \"Anguilla\",\n \"ai\",\n \"1\",\n 6,\n [\"264\"]\n ],\n [\n \"Antigua and Barbuda\",\n \"ag\",\n \"1\",\n 7,\n [\"268\"]\n ],\n [\n \"Argentina\",\n \"ar\",\n \"54\",\n ],\n [\n \"Armenia (Հայաստան)\",\n \"am\",\n \"374\"\n ],\n [\n \"Aruba\",\n \"aw\",\n \"297\"\n ],\n [\n \"Australia\",\n \"au\",\n \"61\",\n 0\n ],\n [\n \"Austria (Österreich)\",\n \"at\",\n \"43\"\n ],\n [\n \"Azerbaijan (Azərbaycan)\",\n \"az\",\n \"994\"\n ],\n [\n \"Bahamas\",\n \"bs\",\n \"1\",\n 8,\n [\"242\"]\n ],\n [\n \"Bahrain (‫البحرين‬‎)\",\n \"bh\",\n \"973\"\n ],\n [\n \"Bangladesh (বাংলাদেশ)\",\n \"bd\",\n \"880\"\n ],\n [\n \"Barbados\",\n \"bb\",\n \"1\",\n 9,\n [\"246\"]\n ],\n [\n \"Belarus (Беларусь)\",\n \"by\",\n \"375\"\n ],\n [\n \"Belgium (België)\",\n \"be\",\n \"32\"\n ],\n [\n \"Belize\",\n \"bz\",\n \"501\"\n ],\n [\n \"Benin (Bénin)\",\n \"bj\",\n \"229\"\n ],\n [\n \"Bermuda\",\n \"bm\",\n \"1\",\n 10,\n [\"441\"]\n ],\n [\n \"Bhutan (འབྲུག)\",\n \"bt\",\n \"975\"\n ],\n [\n \"Bolivia\",\n \"bo\",\n \"591\"\n ],\n [\n \"Bosnia and Herzegovina (Босна и Херцеговина)\",\n \"ba\",\n \"387\"\n ],\n [\n \"Botswana\",\n \"bw\",\n \"267\"\n ],\n [\n \"Brazil (Brasil)\",\n \"br\",\n \"55\"\n ],\n [\n \"British Indian Ocean Territory\",\n \"io\",\n \"246\"\n ],\n [\n \"British Virgin Islands\",\n \"vg\",\n \"1\",\n 11,\n [\"284\"]\n ],\n [\n \"Brunei\",\n \"bn\",\n \"673\"\n ],\n [\n \"Bulgaria (България)\",\n \"bg\",\n \"359\"\n ],\n [\n \"Burkina Faso\",\n \"bf\",\n \"226\"\n ],\n [\n \"Burundi (Uburundi)\",\n \"bi\",\n \"257\"\n ],\n [\n \"Cambodia (កម្ពុជា)\",\n \"kh\",\n \"855\"\n ],\n [\n \"Cameroon (Cameroun)\",\n \"cm\",\n \"237\"\n ],\n [\n \"Canada\",\n \"ca\",\n \"1\",\n 1,\n [\"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\"]\n ],\n [\n \"Cape Verde (Kabu Verdi)\",\n \"cv\",\n \"238\"\n ],\n [\n \"Caribbean Netherlands\",\n \"bq\",\n \"599\",\n 1,\n [\"3\", \"4\", \"7\"]\n ],\n [\n \"Cayman Islands\",\n \"ky\",\n \"1\",\n 12,\n [\"345\"]\n ],\n [\n \"Central African Republic (République centrafricaine)\",\n \"cf\",\n \"236\"\n ],\n [\n \"Chad (Tchad)\",\n \"td\",\n \"235\"\n ],\n [\n \"Chile\",\n \"cl\",\n \"56\"\n ],\n [\n \"China (中国)\",\n \"cn\",\n \"86\"\n ],\n [\n \"Christmas Island\",\n \"cx\",\n \"61\",\n 2\n ],\n [\n \"Cocos (Keeling) Islands\",\n \"cc\",\n \"61\",\n 1\n ],\n [\n \"Colombia\",\n \"co\",\n \"57\"\n ],\n [\n \"Comoros (‫جزر القمر‬‎)\",\n \"km\",\n \"269\"\n ],\n [\n \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\",\n \"cd\",\n \"243\"\n ],\n [\n \"Congo (Republic) (Congo-Brazzaville)\",\n \"cg\",\n \"242\"\n ],\n [\n \"Cook Islands\",\n \"ck\",\n \"682\"\n ],\n [\n \"Costa Rica\",\n \"cr\",\n \"506\"\n ],\n [\n \"Côte d’Ivoire\",\n \"ci\",\n \"225\"\n ],\n [\n \"Croatia (Hrvatska)\",\n \"hr\",\n \"385\"\n ],\n [\n \"Cuba\",\n \"cu\",\n \"53\"\n ],\n [\n \"Curaçao\",\n \"cw\",\n \"599\",\n 0\n ],\n [\n \"Cyprus (Κύπρος)\",\n \"cy\",\n \"357\"\n ],\n [\n \"Czech Republic (Česká republika)\",\n \"cz\",\n \"420\"\n ],\n [\n \"Denmark (Danmark)\",\n \"dk\",\n \"45\"\n ],\n [\n \"Djibouti\",\n \"dj\",\n \"253\"\n ],\n [\n \"Dominica\",\n \"dm\",\n \"1\",\n 13,\n [\"767\"]\n ],\n [\n \"Dominican Republic (República Dominicana)\",\n \"do\",\n \"1\",\n 2,\n [\"809\", \"829\", \"849\"]\n ],\n [\n \"Ecuador\",\n \"ec\",\n \"593\"\n ],\n [\n \"Egypt (‫مصر‬‎)\",\n \"eg\",\n \"20\"\n ],\n [\n \"El Salvador\",\n \"sv\",\n \"503\"\n ],\n [\n \"Equatorial Guinea (Guinea Ecuatorial)\",\n \"gq\",\n \"240\"\n ],\n [\n \"Eritrea\",\n \"er\",\n \"291\"\n ],\n [\n \"Estonia (Eesti)\",\n \"ee\",\n \"372\"\n ],\n [\n \"Ethiopia\",\n \"et\",\n \"251\"\n ],\n [\n \"Falkland Islands (Islas Malvinas)\",\n \"fk\",\n \"500\"\n ],\n [\n \"Faroe Islands (Føroyar)\",\n \"fo\",\n \"298\"\n ],\n [\n \"Fiji\",\n \"fj\",\n \"679\"\n ],\n [\n \"Finland (Suomi)\",\n \"fi\",\n \"358\",\n 0\n ],\n [\n \"France\",\n \"fr\",\n \"33\"\n ],\n [\n \"French Guiana (Guyane française)\",\n \"gf\",\n \"594\"\n ],\n [\n \"French Polynesia (Polynésie française)\",\n \"pf\",\n \"689\"\n ],\n [\n \"Gabon\",\n \"ga\",\n \"241\"\n ],\n [\n \"Gambia\",\n \"gm\",\n \"220\"\n ],\n [\n \"Georgia (საქართველო)\",\n \"ge\",\n \"995\"\n ],\n [\n \"Germany (Deutschland)\",\n \"de\",\n \"49\"\n ],\n [\n \"Ghana (Gaana)\",\n \"gh\",\n \"233\"\n ],\n [\n \"Gibraltar\",\n \"gi\",\n \"350\"\n ],\n [\n \"Greece (Ελλάδα)\",\n \"gr\",\n \"30\"\n ],\n [\n \"Greenland (Kalaallit Nunaat)\",\n \"gl\",\n \"299\"\n ],\n [\n \"Grenada\",\n \"gd\",\n \"1\",\n 14,\n [\"473\"]\n ],\n [\n \"Guadeloupe\",\n \"gp\",\n \"590\",\n 0\n ],\n [\n \"Guam\",\n \"gu\",\n \"1\",\n 15,\n [\"671\"]\n ],\n [\n \"Guatemala\",\n \"gt\",\n \"502\"\n ],\n [\n \"Guernsey\",\n \"gg\",\n \"44\",\n 1,\n [\"1481\", \"7781\", \"7839\", \"7911\"]\n ],\n [\n \"Guinea (Guinée)\",\n \"gn\",\n \"224\"\n ],\n [\n \"Guinea-Bissau (Guiné Bissau)\",\n \"gw\",\n \"245\"\n ],\n [\n \"Guyana\",\n \"gy\",\n \"592\"\n ],\n [\n \"Haiti\",\n \"ht\",\n \"509\"\n ],\n [\n \"Honduras\",\n \"hn\",\n \"504\"\n ],\n [\n \"Hong Kong (香港)\",\n \"hk\",\n \"852\"\n ],\n [\n \"Hungary (Magyarország)\",\n \"hu\",\n \"36\"\n ],\n [\n \"Iceland (Ísland)\",\n \"is\",\n \"354\"\n ],\n [\n \"India (भारत)\",\n \"in\",\n \"91\"\n ],\n [\n \"Indonesia\",\n \"id\",\n \"62\"\n ],\n [\n \"Iran (‫ایران‬‎)\",\n \"ir\",\n \"98\"\n ],\n [\n \"Iraq (‫العراق‬‎)\",\n \"iq\",\n \"964\"\n ],\n [\n \"Ireland\",\n \"ie\",\n \"353\"\n ],\n [\n \"Isle of Man\",\n \"im\",\n \"44\",\n 2,\n [\"1624\", \"74576\", \"7524\", \"7924\", \"7624\"]\n ],\n [\n \"Israel (‫ישראל‬‎)\",\n \"il\",\n \"972\"\n ],\n [\n \"Italy (Italia)\",\n \"it\",\n \"39\",\n 0\n ],\n [\n \"Jamaica\",\n \"jm\",\n \"1\",\n 4,\n [\"876\", \"658\"]\n ],\n [\n \"Japan (日本)\",\n \"jp\",\n \"81\"\n ],\n [\n \"Jersey\",\n \"je\",\n \"44\",\n 3,\n [\"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\"]\n ],\n [\n \"Jordan (‫الأردن‬‎)\",\n \"jo\",\n \"962\"\n ],\n [\n \"Kazakhstan (Казахстан)\",\n \"kz\",\n \"7\",\n 1,\n [\"33\", \"7\"]\n ],\n [\n \"Kenya\",\n \"ke\",\n \"254\"\n ],\n [\n \"Kiribati\",\n \"ki\",\n \"686\"\n ],\n [\n \"Kosovo\",\n \"xk\",\n \"383\"\n ],\n [\n \"Kuwait (‫الكويت‬‎)\",\n \"kw\",\n \"965\"\n ],\n [\n \"Kyrgyzstan (Кыргызстан)\",\n \"kg\",\n \"996\"\n ],\n [\n \"Laos (ລາວ)\",\n \"la\",\n \"856\"\n ],\n [\n \"Latvia (Latvija)\",\n \"lv\",\n \"371\"\n ],\n [\n \"Lebanon (‫لبنان‬‎)\",\n \"lb\",\n \"961\"\n ],\n [\n \"Lesotho\",\n \"ls\",\n \"266\"\n ],\n [\n \"Liberia\",\n \"lr\",\n \"231\"\n ],\n [\n \"Libya (‫ليبيا‬‎)\",\n \"ly\",\n \"218\"\n ],\n [\n \"Liechtenstein\",\n \"li\",\n \"423\"\n ],\n [\n \"Lithuania (Lietuva)\",\n \"lt\",\n \"370\"\n ],\n [\n \"Luxembourg\",\n \"lu\",\n \"352\"\n ],\n [\n \"Macau (澳門)\",\n \"mo\",\n \"853\"\n ],\n [\n \"Macedonia (FYROM) (Македонија)\",\n \"mk\",\n \"389\"\n ],\n [\n \"Madagascar (Madagasikara)\",\n \"mg\",\n \"261\"\n ],\n [\n \"Malawi\",\n \"mw\",\n \"265\"\n ],\n [\n \"Malaysia\",\n \"my\",\n \"60\"\n ],\n [\n \"Maldives\",\n \"mv\",\n \"960\"\n ],\n [\n \"Mali\",\n \"ml\",\n \"223\"\n ],\n [\n \"Malta\",\n \"mt\",\n \"356\"\n ],\n [\n \"Marshall Islands\",\n \"mh\",\n \"692\"\n ],\n [\n \"Martinique\",\n \"mq\",\n \"596\"\n ],\n [\n \"Mauritania (‫موريتانيا‬‎)\",\n \"mr\",\n \"222\"\n ],\n [\n \"Mauritius (Moris)\",\n \"mu\",\n \"230\"\n ],\n [\n \"Mayotte\",\n \"yt\",\n \"262\",\n 1,\n [\"269\", \"639\"]\n ],\n [\n \"Mexico (México)\",\n \"mx\",\n \"52\"\n ],\n [\n \"Micronesia\",\n \"fm\",\n \"691\"\n ],\n [\n \"Moldova (Republica Moldova)\",\n \"md\",\n \"373\"\n ],\n [\n \"Monaco\",\n \"mc\",\n \"377\"\n ],\n [\n \"Mongolia (Монгол)\",\n \"mn\",\n \"976\"\n ],\n [\n \"Montenegro (Crna Gora)\",\n \"me\",\n \"382\"\n ],\n [\n \"Montserrat\",\n \"ms\",\n \"1\",\n 16,\n [\"664\"]\n ],\n [\n \"Morocco (‫المغرب‬‎)\",\n \"ma\",\n \"212\",\n 0\n ],\n [\n \"Mozambique (Moçambique)\",\n \"mz\",\n \"258\"\n ],\n [\n \"Myanmar (Burma) (မြန်မာ)\",\n \"mm\",\n \"95\"\n ],\n [\n \"Namibia (Namibië)\",\n \"na\",\n \"264\"\n ],\n [\n \"Nauru\",\n \"nr\",\n \"674\"\n ],\n [\n \"Nepal (नेपाल)\",\n \"np\",\n \"977\"\n ],\n [\n \"Netherlands (Nederland)\",\n \"nl\",\n \"31\"\n ],\n [\n \"New Caledonia (Nouvelle-Calédonie)\",\n \"nc\",\n \"687\"\n ],\n [\n \"New Zealand\",\n \"nz\",\n \"64\"\n ],\n [\n \"Nicaragua\",\n \"ni\",\n \"505\"\n ],\n [\n \"Niger (Nijar)\",\n \"ne\",\n \"227\"\n ],\n [\n \"Nigeria\",\n \"ng\",\n \"234\"\n ],\n [\n \"Niue\",\n \"nu\",\n \"683\"\n ],\n [\n \"Norfolk Island\",\n \"nf\",\n \"672\"\n ],\n [\n \"North Korea (조선 민주주의 인민 공화국)\",\n \"kp\",\n \"850\"\n ],\n [\n \"Northern Mariana Islands\",\n \"mp\",\n \"1\",\n 17,\n [\"670\"]\n ],\n [\n \"Norway (Norge)\",\n \"no\",\n \"47\",\n 0\n ],\n [\n \"Oman (‫عُمان‬‎)\",\n \"om\",\n \"968\"\n ],\n [\n \"Pakistan (‫پاکستان‬‎)\",\n \"pk\",\n \"92\"\n ],\n [\n \"Palau\",\n \"pw\",\n \"680\"\n ],\n [\n \"Palestine (‫فلسطين‬‎)\",\n \"ps\",\n \"970\"\n ],\n [\n \"Panama (Panamá)\",\n \"pa\",\n \"507\"\n ],\n [\n \"Papua New Guinea\",\n \"pg\",\n \"675\"\n ],\n [\n \"Paraguay\",\n \"py\",\n \"595\"\n ],\n [\n \"Peru (Perú)\",\n \"pe\",\n \"51\"\n ],\n [\n \"Philippines\",\n \"ph\",\n \"63\"\n ],\n [\n \"Poland (Polska)\",\n \"pl\",\n \"48\"\n ],\n [\n \"Portugal\",\n \"pt\",\n \"351\"\n ],\n [\n \"Puerto Rico\",\n \"pr\",\n \"1\",\n 3,\n [\"787\", \"939\"]\n ],\n [\n \"Qatar (‫قطر‬‎)\",\n \"qa\",\n \"974\"\n ],\n [\n \"Réunion (La Réunion)\",\n \"re\",\n \"262\",\n 0\n ],\n [\n \"Romania (România)\",\n \"ro\",\n \"40\"\n ],\n [\n \"Russia (Россия)\",\n \"ru\",\n \"7\",\n 0\n ],\n [\n \"Rwanda\",\n \"rw\",\n \"250\"\n ],\n [\n \"Saint Barthélemy\",\n \"bl\",\n \"590\",\n 1\n ],\n [\n \"Saint Helena\",\n \"sh\",\n \"290\"\n ],\n [\n \"Saint Kitts and Nevis\",\n \"kn\",\n \"1\",\n 18,\n [\"869\"]\n ],\n [\n \"Saint Lucia\",\n \"lc\",\n \"1\",\n 19,\n [\"758\"]\n ],\n [\n \"Saint Martin (Saint-Martin (partie française))\",\n \"mf\",\n \"590\",\n 2\n ],\n [\n \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\",\n \"pm\",\n \"508\"\n ],\n [\n \"Saint Vincent and the Grenadines\",\n \"vc\",\n \"1\",\n 20,\n [\"784\"]\n ],\n [\n \"Samoa\",\n \"ws\",\n \"685\"\n ],\n [\n \"San Marino\",\n \"sm\",\n \"378\"\n ],\n [\n \"São Tomé and Príncipe (São Tomé e Príncipe)\",\n \"st\",\n \"239\"\n ],\n [\n \"Saudi Arabia (‫المملكة العربية السعودية‬‎)\",\n \"sa\",\n \"966\"\n ],\n [\n \"Senegal (Sénégal)\",\n \"sn\",\n \"221\"\n ],\n [\n \"Serbia (Србија)\",\n \"rs\",\n \"381\"\n ],\n [\n \"Seychelles\",\n \"sc\",\n \"248\"\n ],\n [\n \"Sierra Leone\",\n \"sl\",\n \"232\"\n ],\n [\n \"Singapore\",\n \"sg\",\n \"65\"\n ],\n [\n \"Sint Maarten\",\n \"sx\",\n \"1\",\n 21,\n [\"721\"]\n ],\n [\n \"Slovakia (Slovensko)\",\n \"sk\",\n \"421\"\n ],\n [\n \"Slovenia (Slovenija)\",\n \"si\",\n \"386\"\n ],\n [\n \"Solomon Islands\",\n \"sb\",\n \"677\"\n ],\n [\n \"Somalia (Soomaaliya)\",\n \"so\",\n \"252\"\n ],\n [\n \"South Africa\",\n \"za\",\n \"27\"\n ],\n [\n \"South Korea (대한민국)\",\n \"kr\",\n \"82\"\n ],\n [\n \"South Sudan (‫جنوب السودان‬‎)\",\n \"ss\",\n \"211\"\n ],\n [\n \"Spain (España)\",\n \"es\",\n \"34\"\n ],\n [\n \"Sri Lanka (ශ්‍රී ලංකාව)\",\n \"lk\",\n \"94\"\n ],\n [\n \"Sudan (‫السودان‬‎)\",\n \"sd\",\n \"249\"\n ],\n [\n \"Suriname\",\n \"sr\",\n \"597\"\n ],\n [\n \"Svalbard and Jan Mayen\",\n \"sj\",\n \"47\",\n 1,\n [\"79\"]\n ],\n [\n \"Swaziland\",\n \"sz\",\n \"268\"\n ],\n [\n \"Sweden (Sverige)\",\n \"se\",\n \"46\"\n ],\n [\n \"Switzerland (Schweiz)\",\n \"ch\",\n \"41\"\n ],\n [\n \"Syria (‫سوريا‬‎)\",\n \"sy\",\n \"963\"\n ],\n [\n \"Taiwan (台灣)\",\n \"tw\",\n \"886\"\n ],\n [\n \"Tajikistan\",\n \"tj\",\n \"992\"\n ],\n [\n \"Tanzania\",\n \"tz\",\n \"255\"\n ],\n [\n \"Thailand (ไทย)\",\n \"th\",\n \"66\"\n ],\n [\n \"Timor-Leste\",\n \"tl\",\n \"670\"\n ],\n [\n \"Togo\",\n \"tg\",\n \"228\"\n ],\n [\n \"Tokelau\",\n \"tk\",\n \"690\"\n ],\n [\n \"Tonga\",\n \"to\",\n \"676\"\n ],\n [\n \"Trinidad and Tobago\",\n \"tt\",\n \"1\",\n 22,\n [\"868\"]\n ],\n [\n \"Tunisia (‫تونس‬‎)\",\n \"tn\",\n \"216\"\n ],\n [\n \"Turkey (Türkiye)\",\n \"tr\",\n \"90\"\n ],\n [\n \"Turkmenistan\",\n \"tm\",\n \"993\"\n ],\n [\n \"Turks and Caicos Islands\",\n \"tc\",\n \"1\",\n 23,\n [\"649\"]\n ],\n [\n \"Tuvalu\",\n \"tv\",\n \"688\"\n ],\n [\n \"U.S. Virgin Islands\",\n \"vi\",\n \"1\",\n 24,\n [\"340\"]\n ],\n [\n \"Uganda\",\n \"ug\",\n \"256\"\n ],\n [\n \"Ukraine (Україна)\",\n \"ua\",\n \"380\"\n ],\n [\n \"United Arab Emirates (‫الإمارات العربية المتحدة‬‎)\",\n \"ae\",\n \"971\"\n ],\n [\n \"United Kingdom\",\n \"gb\",\n \"44\",\n 0\n ],\n [\n \"United States\",\n \"us\",\n \"1\",\n 0\n ],\n [\n \"Uruguay\",\n \"uy\",\n \"598\"\n ],\n [\n \"Uzbekistan (Oʻzbekiston)\",\n \"uz\",\n \"998\"\n ],\n [\n \"Vanuatu\",\n \"vu\",\n \"678\"\n ],\n [\n \"Vatican City (Città del Vaticano)\",\n \"va\",\n \"39\",\n 1,\n [\"06698\"]\n ],\n [\n \"Venezuela\",\n \"ve\",\n \"58\"\n ],\n [\n \"Vietnam (Việt Nam)\",\n \"vn\",\n \"84\"\n ],\n [\n \"Wallis and Futuna (Wallis-et-Futuna)\",\n \"wf\",\n \"681\"\n ],\n [\n \"Western Sahara (‫الصحراء الغربية‬‎)\",\n \"eh\",\n \"212\",\n 1,\n [\"5288\", \"5289\"]\n ],\n [\n \"Yemen (‫اليمن‬‎)\",\n \"ye\",\n \"967\"\n ],\n [\n \"Zambia\",\n \"zm\",\n \"260\"\n ],\n [\n \"Zimbabwe\",\n \"zw\",\n \"263\"\n ],\n [\n \"Åland Islands\",\n \"ax\",\n \"358\",\n 1,\n [\"18\"]\n ]\n];\n\n// loop over all of the countries above, restructuring the data to be objects with named keys\n\nexport function getCountryISO2() {\n let countries: { name: string; iso2: string; dialCode: string; priority: number; areaCodes: string[] | null, mask: string | string[] }[] = [];\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i];\n // Garante que o array tenha pelo menos 3 elementos\n const safeCountry: [string, string, string, number?, string[]?] = [\n c[0] as string,\n c[1] as string,\n c[2] as string,\n c[3] as number || 0,\n c[4] as string[] || null\n ];\n countries[i] = {\n name: c[0] as string,\n iso2: c[1] as string,\n dialCode: c[2] as string,\n priority: c[3] as number || 0,\n areaCodes: c[4] as string[] || null,\n mask: applyPhoneMask(safeCountry)\n };\n }\n return countries;\n}\n\nfunction applyPhoneMask(country: [string, string, string, number?, string[]?]) {\n const countryCode = country[2];\n const areaCodes = country[4] || [countryCode];\n const masks = areaCodes.map((areaCode: string) => {\n\n if (countryCode === \"1\") {\n // North American Numbering Plan (NANP)\n return `000 000 0000`;\n } else if (countryCode === \"44\" && areaCode.length === 4) {\n // UK\n return `000 0000 0000`;\n } else if (countryCode === \"55\") {\n // Brazil\n return `00 0000 0000`;\n } else {\n // General international format\n return `000 0000 0000`;\n }\n });\n return masks;\n}\n\n\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\nexport type InputTransformFn = (value: unknown) => string | number;\n\nexport type OutputTransformFn = (value: string | number | undefined | null) => unknown;\n\nexport type MatchaMaskConfig = {\n suffix: string;\n prefix: string;\n thousandSeparator: string;\n decimalMarker: '.' | ',' | ['.', ','];\n clearIfNotMatch: boolean;\n showMaskTyped: boolean;\n placeHolderCharacter: string;\n shownMaskExpression: string;\n specialCharacters: string[] | readonly string[];\n dropSpecialCharacters: boolean | string[] | readonly string[];\n hiddenInput: boolean;\n validation: boolean;\n instantPrefix: boolean;\n separatorLimit: string;\n apm: boolean;\n allowNegativeNumbers: boolean;\n leadZeroDateTime: boolean;\n leadZero: boolean;\n triggerOnMaskChange: boolean;\n keepCharacterPositions: boolean;\n currencyMode: boolean; // Modo moeda: dígitos entram pela direita (1 → 0,01, 12 → 0,12, 123 → 1,23)\n inputTransformFn: InputTransformFn;\n outputTransformFn: OutputTransformFn;\n maskFilled: EventEmitter<void>;\n patterns: Record<\n string,\n {\n pattern: RegExp;\n optional?: boolean;\n symbol?: string;\n }\n >;\n};\n\nexport type MatchaMaskOptions = Partial<MatchaMaskConfig>;\nexport const MATCHA_MASK_CONFIG = new InjectionToken<MatchaMaskConfig>('matcha-mask config');\nexport const NEW_CONFIG = new InjectionToken<MatchaMaskConfig>('new matcha-mask config');\nexport const INITIAL_CONFIG = new InjectionToken<MatchaMaskConfig>('initial matcha-mask config');\n\nexport const initialConfig: MatchaMaskConfig = {\n suffix: '',\n prefix: '',\n thousandSeparator: ' ',\n decimalMarker: ['.', ','],\n clearIfNotMatch: false,\n showMaskTyped: false,\n instantPrefix: false,\n placeHolderCharacter: '_',\n dropSpecialCharacters: true,\n hiddenInput: false,\n shownMaskExpression: '',\n separatorLimit: '',\n allowNegativeNumbers: false,\n validation: true,\n specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '\"', \"'\"],\n leadZeroDateTime: false,\n apm: false,\n leadZero: false,\n keepCharacterPositions: false,\n triggerOnMaskChange: false,\n currencyMode: false,\n inputTransformFn: (value: unknown) => value as string | number,\n outputTransformFn: (value: string | number | undefined | null) => value,\n maskFilled: new EventEmitter<void>(),\n patterns: {\n '0': {\n pattern: new RegExp('\\\\d'),\n },\n '9': {\n pattern: new RegExp('\\\\d'),\n optional: true,\n },\n X: {\n pattern: new RegExp('\\\\d'),\n symbol: '*',\n },\n A: {\n pattern: new RegExp('[a-zA-Z0-9]'),\n },\n S: {\n pattern: new RegExp('[a-zA-Z]'),\n },\n U: {\n pattern: new RegExp('[A-Z]'),\n },\n L: {\n pattern: new RegExp('[a-z]'),\n },\n d: {\n pattern: new RegExp('\\\\d'),\n },\n m: {\n pattern: new RegExp('\\\\d'),\n },\n M: {\n pattern: new RegExp('\\\\d'),\n },\n H: {\n pattern: new RegExp('\\\\d'),\n },\n h: {\n pattern: new RegExp('\\\\d'),\n },\n s: {\n pattern: new RegExp('\\\\d'),\n },\n },\n};\n\nexport const timeMasks: string[] = [\n MaskExpression.HOURS_MINUTES_SECONDS,\n MaskExpression.HOURS_MINUTES,\n MaskExpression.MINUTES_SECONDS,\n];\n\nexport const withoutValidation: string[] = [\n MaskExpression.PERCENT,\n MaskExpression.HOURS_HOUR,\n MaskExpression.SECONDS,\n MaskExpression.MINUTES,\n MaskExpression.SEPARATOR,\n MaskExpression.DAYS_MONTHS_YEARS,\n MaskExpression.DAYS_MONTHS,\n MaskExpression.DAYS,\n MaskExpression.MONTHS,\n];\n","import { inject, Injectable } from '@angular/core';\nimport { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Injectable()\nexport class MatchaMaskApplierService {\n protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n public dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] =\n this._config.dropSpecialCharacters;\n\n public hiddenInput: MatchaMaskConfig['hiddenInput'] = this._config.hiddenInput;\n\n public clearIfNotMatch: MatchaMaskConfig['clearIfNotMatch'] = this._config.clearIfNotMatch;\n\n public specialCharacters: MatchaMaskConfig['specialCharacters'] = this._config.specialCharacters;\n\n public patterns: MatchaMaskConfig['patterns'] = this._config.patterns;\n\n public prefix: MatchaMaskConfig['prefix'] = this._config.prefix || '';\n\n public suffix: MatchaMaskConfig['suffix'] = this._config.suffix || '';\n\n public thousandSeparator: MatchaMaskConfig['thousandSeparator'] = this._config.thousandSeparator || '';\n\n public decimalMarker: MatchaMaskConfig['decimalMarker'] = this._config.decimalMarker || '';\n\n public customPattern!: MatchaMaskConfig['patterns'];\n\n public showMaskTyped: MatchaMaskConfig['showMaskTyped'] = this._config.showMaskTyped;\n\n public placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] =\n this._config.placeHolderCharacter;\n\n public validation: MatchaMaskConfig['validation'] = this._config.validation;\n\n public separatorLimit: MatchaMaskConfig['separatorLimit'] = this._config.separatorLimit;\n\n public allowNegativeNumbers: MatchaMaskConfig['allowNegativeNumbers'] =\n this._config.allowNegativeNumbers;\n\n public leadZeroDateTime: MatchaMaskConfig['leadZeroDateTime'] = this._config.leadZeroDateTime;\n\n public leadZero: MatchaMaskConfig['leadZero'] = this._config.leadZero;\n\n public apm: MatchaMaskConfig['apm'] = this._config.apm;\n\n public inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null =\n this._config.inputTransformFn;\n\n public outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null =\n this._config.outputTransformFn;\n\n public keepCharacterPositions: MatchaMaskConfig['keepCharacterPositions'] =\n this._config.keepCharacterPositions;\n\n public instantPrefix: MatchaMaskConfig['instantPrefix'] = this._config.instantPrefix;\n\n public triggerOnMaskChange: MatchaMaskConfig['triggerOnMaskChange'] =\n this._config.triggerOnMaskChange;\n\n public currencyMode: MatchaMaskConfig['currencyMode'] = this._config.currencyMode;\n\n private _shift = new Set<number>();\n\n public plusOnePosition = false;\n\n public maskExpression = '';\n\n public actualValue = '';\n\n public showKeepCharacterExp = '';\n\n public shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] =\n this._config.shownMaskExpression;\n\n public deletedSpecialCharacter = false;\n\n public ipError?: boolean;\n\n public cpfCnpjError?: boolean;\n\n public applyMask(\n inputValue: string | object | boolean | null | undefined,\n maskExpression: string,\n position = 0,\n justPasted = false,\n backspaced = false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): string {\n if (!maskExpression || typeof inputValue !== 'string') {\n return MaskExpression.EMPTY_STRING;\n }\n let cursor = 0;\n let result = '';\n let multi = false;\n let backspaceShift = false;\n let shift = 1;\n let stepBack = false;\n let processedValue = inputValue;\n let processedPosition = position;\n\n if (processedValue.slice(0, this.prefix.length) === this.prefix) {\n processedValue = processedValue.slice(this.prefix.length, processedValue.length);\n }\n if (!!this.suffix && processedValue.length > 0) {\n processedValue = this.checkAndRemoveSuffix(processedValue);\n }\n if (processedValue === '(' && this.prefix) {\n processedValue = '';\n }\n const inputArray: string[] = processedValue.toString().split(MaskExpression.EMPTY_STRING);\n if (\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\n ) {\n result += processedValue.slice(cursor, cursor + 1);\n }\n if (maskExpression === MaskExpression.IP) {\n const valuesIP = processedValue.split(MaskExpression.DOT);\n this.ipError = this._validIP(valuesIP);\n\n // eslint-disable-next-line no-param-reassign\n maskExpression = '099.099.099.099';\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < processedValue.length; i++) {\n if (processedValue[i]?.match('\\\\d')) {\n arr.push(processedValue[i] ?? MaskExpression.EMPTY_STRING);\n }\n }\n if (maskExpression === MaskExpression.CPF_CNPJ) {\n this.cpfCnpjError = arr.length !== 11 && arr.length !== 14;\n if (arr.length > 11) {\n // eslint-disable-next-line no-param-reassign\n maskExpression = '00.000.000/0000-00';\n } else {\n // eslint-disable-next-line no-param-reassign\n maskExpression = '000.000.000-00';\n }\n }\n if (maskExpression.startsWith(MaskExpression.PERCENT)) {\n if (\n processedValue.match('[a-z]|[A-Z]') ||\n // eslint-disable-next-line no-useless-escape\n (processedValue.match(/[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,\\/.]/) && !backspaced)\n ) {\n processedValue = this._stripToDecimal(processedValue);\n const precision: number = this.getPrecision(maskExpression);\n\n processedValue = this.checkInputPrecision(\n processedValue,\n precision,\n this.decimalMarker\n );\n }\n const decimalMarker =\n typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\n if (\n processedValue.indexOf(decimalMarker) > 0 &&\n !this.percentage(processedValue.substring(0, processedValue.indexOf(decimalMarker)))\n ) {\n let base: string = processedValue.substring(\n 0,\n processedValue.indexOf(decimalMarker) - 1\n );\n if (\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS &&\n !backspaced\n ) {\n base = processedValue.substring(0, processedValue.indexOf(decimalMarker));\n }\n\n processedValue = `${base}${processedValue.substring(\n processedValue.indexOf(decimalMarker),\n processedValue.length\n )}`;\n }\n let value = '';\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n this.allowNegativeNumbers &&\n processedValue.slice(cursor, cursor + 1) === MaskExpression.MINUS\n ? (value = `${MaskExpression.MINUS}${processedValue.slice(cursor + 1, cursor + processedValue.length)}`)\n : (value = processedValue);\n if (this.percentage(value)) {\n result = this._splitPercentZero(processedValue);\n } else {\n result = this._splitPercentZero(\n processedValue.substring(0, processedValue.length - 1)\n );\n }\n } else if (maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n if (\n processedValue.match('[wа-яА-Я]') ||\n processedValue.match('[ЁёА-я]') ||\n processedValue.match('[a-z]|[A-Z]') ||\n processedValue.match(/[-@#!$%\\\\^&*()_£¬'+|~=`{}\\]:\";<>.?/]/) ||\n processedValue.match('[^A-Za-z0-9,]')\n ) {\n processedValue = this._stripToDecimal(processedValue);\n }\n\n const precision: number = this.getPrecision(maskExpression);\n let decimalMarker = this.decimalMarker;\n\n if (Array.isArray(this.decimalMarker)) {\n if (\n this.actualValue.includes(this.decimalMarker[0]) ||\n this.actualValue.includes(this.decimalMarker[1])\n ) {\n decimalMarker = this.actualValue.includes(this.decimalMarker[0])\n ? this.decimalMarker[0]\n : this.decimalMarker[1];\n } else {\n decimalMarker = this.decimalMarker.find(\n (dm) => dm !== this.thousandSeparator\n ) as '.' | ',';\n }\n }\n\n // Modo moeda: dígitos entram pela direita (ex: 1 → 0,01, 12 → 0,12, 123 → 1,23)\n if (this.currencyMode && precision > 0) {\n // Extrair apenas dígitos e sinal negativo\n const hasMinus = processedValue.startsWith(MaskExpression.MINUS) ||\n (this.allowNegativeNumbers && processedValue.includes(MaskExpression.MINUS));\n const digitsOnly = processedValue.replace(/[^\\d]/g, '');\n\n if (digitsOnly.length === 0) {\n result = MaskExpression.EMPTY_STRING;\n } else {\n // Remover zeros à esquerda desnecessários\n const cleanDigits = digitsOnly.replace(/^0+/, '') || '0';\n\n let formattedValue: string;\n if (cleanDigits.length <= precision) {\n // Menos ou igual dígitos que a precisão: 0,XX\n const paddedDecimal = cleanDigits.padStart(precision, '0');\n formattedValue = '0' + (decimalMarker as string) + paddedDecimal;\n } else {\n // Mais dígitos que a precisão: separar inteiro e decimal\n const integerPart = cleanDigits.slice(0, -precision);\n const decimalPart = cleanDigits.slice(-precision);\n\n // Aplicar separador de milhares na parte inteira\n let formattedInteger = integerPart;\n const rgx = /(\\d+)(\\d{3})/;\n while (this.thousandSeparator && rgx.test(formattedInteger)) {\n formattedInteger = formattedInteger.replace(rgx, '$1' + this.thousandSeparator + '$2');\n }\n\n formattedValue = formattedInteger + (decimalMarker as string) + decimalPart;\n }\n\n result = (hasMinus ? MaskExpression.MINUS : '') + formattedValue;\n }\n\n // Mover o cursor para o final\n cb(result.length, result.length);\n\n // Pular toda a lógica de formatação normal e ir direto para o retorno\n // O result já está formatado corretamente para exibição\n // O formControlResult (no service) vai processar e remover prefixo/sufixo\n let res = `${this.prefix}${result}${this.suffix}`;\n if (result.length === 0) {\n res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\n }\n return res;\n }\n\n if (backspaced) {\n const { decimalMarkerIndex, nonZeroIndex } = this._findFirstNonZeroAndDecimalIndex(\n processedValue,\n decimalMarker as '.' | ','\n );\n const zeroIndexMinus = processedValue[0] === MaskExpression.MINUS;\n const zeroIndexNumberZero = processedValue[0] === MaskExpression.NUMBER_ZERO;\n const zeroIndexDecimalMarker = processedValue[0] === decimalMarker;\n const firstIndexDecimalMarker = processedValue[1] === decimalMarker;\n\n if (\n (zeroIndexDecimalMarker && !nonZeroIndex) ||\n (zeroIndexMinus && firstIndexDecimalMarker && !nonZeroIndex) ||\n (zeroIndexNumberZero && !decimalMarkerIndex && !nonZeroIndex)\n ) {\n processedValue = MaskExpression.NUMBER_ZERO;\n }\n\n if (\n decimalMarkerIndex &&\n nonZeroIndex &&\n zeroIndexMinus &&\n processedPosition === 1\n ) {\n if (decimalMarkerIndex < nonZeroIndex || decimalMarkerIndex > nonZeroIndex) {\n processedValue = MaskExpression.MINUS + processedValue.slice(nonZeroIndex);\n }\n }\n\n if (!decimalMarkerIndex && nonZeroIndex && processedValue.length > nonZeroIndex) {\n processedValue = zeroIndexMinus\n ? MaskExpression.MINUS + processedValue.slice(nonZeroIndex)\n : processedValue.slice(nonZeroIndex);\n }\n\n if (decimalMarkerIndex && nonZeroIndex && processedPosition === 0) {\n if (decimalMarkerIndex < nonZeroIndex) {\n processedValue = processedValue.slice(decimalMarkerIndex - 1);\n }\n if (decimalMarkerIndex > nonZeroIndex) {\n processedValue = processedValue.slice(nonZeroIndex);\n }\n }\n }\n\n if (precision === 0) {\n processedValue = this.allowNegativeNumbers\n ? processedValue.length > 2 &&\n processedValue[0] === MaskExpression.MINUS &&\n processedValue[1] === MaskExpression.NUMBER_ZERO &&\n processedValue[2] !== this.thousandSeparator &&\n processedValue[2] !== MaskExpression.COMMA &&\n processedValue[2] !== MaskExpression.DOT\n ? '-' + processedValue.slice(2, processedValue.length)\n : processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue.length > 1 &&\n processedValue[1] !== this.thousandSeparator &&\n processedValue[1] !== MaskExpression.COMMA &&\n processedValue[1] !== MaskExpression.DOT\n ? processedValue.slice(1, processedValue.length)\n : processedValue\n : processedValue.length > 1 &&\n processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue[1] !== this.thousandSeparator &&\n processedValue[1] !== MaskExpression.COMMA &&\n processedValue[1] !== MaskExpression.DOT\n ? processedValue.slice(1, processedValue.length)\n : processedValue;\n } else {\n if (\n processedValue[0] === decimalMarker &&\n processedValue.length > 1 &&\n !backspaced\n ) {\n processedValue =\n MaskExpression.NUMBER_ZERO +\n processedValue.slice(0, processedValue.length + 1);\n this.plusOnePosition = true;\n }\n if (\n processedValue[0] === MaskExpression.NUMBER_ZERO &&\n processedValue[1] !== decimalMarker &&\n processedValue[1] !== this.thousandSeparator &&\n !backspaced\n ) {\n processedValue =\n processedValue.length > 1\n ? processedValue.slice(0, 1) +\n decimalMarker +\n processedValue.slice(1, processedValue.length + 1)\n : processedValue;\n this.plusOnePosition = true;\n }\n if (\n this.allowNegativeNumbers &&\n !backspaced &&\n processedValue[0] === MaskExpression.MINUS &&\n (processedValue[1] === decimalMarker ||\n processedValue[1] === MaskExpression.NUMBER_ZERO)\n ) {\n processedValue =\n processedValue[1] === decimalMarker && processedValue.length > 2\n ? processedValue.slice(0, 1) +\n MaskExpression.NUMBER_ZERO +\n processedValue.slice(1, processedValue.length)\n : processedValue[1] === MaskExpression.NUMBER_ZERO &&\n processedValue.length > 2 &&\n processedValue[2] !== decimalMarker\n ? processedValue.slice(0, 2) +\n decimalMarker +\n processedValue.slice(2, processedValue.length)\n : processedValue;\n this.plusOnePosition = true;\n }\n }\n\n // TODO: we had different rexexps here for the different cases... but tests dont seam to bother - check this\n // separator: no COMMA, dot-sep: no SPACE, COMMA OK, comma-sep: no SPACE, COMMA OK\n\n const thousandSeparatorCharEscaped: string = this._charToRegExpExpression(\n this.thousandSeparator\n );\n let invalidChars: string = '@#!$%^&*()_+|~=`{}\\\\[\\\\]:\\\\s,\\\\.\";<>?\\\\/'.replace(\n thousandSeparatorCharEscaped,\n ''\n );\n //.replace(decimalMarkerEscaped, '');\n if (Array.isArray(this.decimalMarker)) {\n for (const marker of this.decimalMarker) {\n invalidChars = invalidChars.replace(\n this._charToRegExpExpression(marker),\n MaskExpression.EMPTY_STRING\n );\n }\n } else {\n invalidChars = invalidChars.replace(\n this._charToRegExpExpression(this.decimalMarker),\n ''\n );\n }\n\n const invalidCharRegexp = new RegExp('[' + invalidChars + ']');\n if (processedValue.match(invalidCharRegexp)) {\n processedValue = processedValue.substring(0, processedValue.length - 1);\n }\n\n processedValue = this.checkInputPrecision(\n processedValue,\n precision,\n this.decimalMarker\n );\n const strForSep: string = processedValue.replace(\n new RegExp(thousandSeparatorCharEscaped, 'g'),\n ''\n );\n\n result = this._formatWithSeparators(\n strForSep,\n this.thousandSeparator,\n this.decimalMarker,\n precision\n );\n\n const commaShift: number =\n result.indexOf(MaskExpression.COMMA) - processedValue.indexOf(MaskExpression.COMMA);\n const shiftStep: number = result.length - processedValue.length;\n const backspacedDecimalMarkerWithSeparatorLimit =\n backspaced && result.length < inputValue.length && this.separatorLimit;\n\n if (\n (result[processedPosition - 1] === this.thousandSeparator ||\n result[processedPosition - this.prefix.length]) &&\n this.prefix &&\n backspaced\n ) {\n processedPosition = processedPosition - 1;\n } else if (\n (shiftStep > 0 && result[processedPosition] !== this.thousandSeparator) ||\n backspacedDecimalMarkerWithSeparatorLimit\n ) {\n backspaceShift = true;\n let _shift = 0;\n do {\n this._shift.add(processedPosition + _shift);\n _shift++;\n } while (_shift < shiftStep);\n } else if (\n result[processedPosition - 1] === this.thousandSeparator ||\n shiftStep === -4 ||\n shiftStep === -3 ||\n result[processedPosition] === this.thousandSeparator\n ) {\n this._shift.clear();\n this._shift.add(processedPosition - 1);\n } else if (\n (commaShift !== 0 &&\n processedPosition > 0 &&\n !(\n result.indexOf(MaskExpression.COMMA) >= processedPosition &&\n processedPosition > 3\n )) ||\n (!(\n result.indexOf(MaskExpression.DOT) >= processedPosition && processedPosition > 3\n ) &&\n shiftStep <= 0)\n ) {\n this._shift.clear();\n backspaceShift = true;\n shift = shiftStep;\n\n processedPosition += shiftStep;\n this._shift.add(processedPosition);\n } else {\n this._shift.clear();\n }\n } else {\n for (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n let i = 0, inputSymbol: string = inputArray[0]!;\n i < inputArray.length;\n i++, inputSymbol = inputArray[i] ?? MaskExpression.EMPTY_STRING\n ) {\n if (cursor === maskExpression.length) {\n break;\n }\n\n const symbolStarInPattern: boolean = MaskExpression.SYMBOL_STAR in this.patterns;\n if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) &&\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION\n ) {\n result += inputSymbol;\n cursor += 2;\n } else if (\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n multi &&\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n result += inputSymbol;\n cursor += 3;\n multi = false;\n } else if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) &&\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n !symbolStarInPattern\n ) {\n result += inputSymbol;\n multi = true;\n } else if (\n maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n result += inputSymbol;\n cursor += 3;\n } else if (\n this._checkSymbolMask(\n inputSymbol,\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n )\n ) {\n if (maskExpression[cursor] === MaskExpression.HOURS) {\n if (this.apm ? Number(inputSymbol) > 9 : Number(inputSymbol) > 2) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n if (maskExpression[cursor] === MaskExpression.HOUR) {\n if (\n this.apm\n ? (result.length === 1 && Number(result) > 1) ||\n (result === '1' && Number(inputSymbol) > 2) ||\n (processedValue.slice(cursor - 1, cursor).length === 1 &&\n Number(processedValue.slice(cursor - 1, cursor)) > 2) ||\n (processedValue.slice(cursor - 1, cursor) === '1' &&\n Number(inputSymbol) > 2)\n : (result === '2' && Number(inputSymbol) > 3) ||\n ((result.slice(cursor - 2, cursor) === '2' ||\n result.slice(cursor - 3, cursor) === '2' ||\n result.slice(cursor - 4, cursor) === '2' ||\n result.slice(cursor - 1, cursor) === '2') &&\n Number(inputSymbol) > 3 &&\n cursor > 10)\n ) {\n processedPosition = processedPosition + 1;\n cursor += 1;\n i--;\n continue;\n }\n }\n if (\n maskExpression[cursor] === MaskExpression.MINUTE ||\n maskExpression[cursor] === MaskExpression.SECOND\n ) {\n if (Number(inputSymbol) > 5) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n const daysCount = 31;\n const inputValueCursor = processedValue[cursor] as string;\n const inputValueCursorPlusOne = processedValue[cursor + 1] as string;\n const inputValueCursorPlusTwo = processedValue[cursor + 2] as string;\n const inputValueCursorMinusOne = processedValue[cursor - 1] as string;\n const inputValueCursorMinusTwo = processedValue[cursor - 2] as string;\n const inputValueSliceMinusThreeMinusOne = processedValue.slice(\n cursor - 3,\n cursor - 1\n );\n const inputValueSliceMinusOnePlusOne = processedValue.slice(\n cursor - 1,\n cursor + 1\n );\n const inputValueSliceCursorPlusTwo = processedValue.slice(cursor, cursor + 2);\n const inputValueSliceMinusTwoCursor = processedValue.slice(cursor - 2, cursor);\n if (maskExpression[cursor] === MaskExpression.DAY) {\n const maskStartWithMonth =\n maskExpression.slice(0, 2) === MaskExpression.MONTHS;\n const startWithMonthInput: boolean =\n maskExpression.slice(0, 2) === MaskExpression.MONTHS &&\n this.specialCharacters.includes(inputValueCursorMinusTwo);\n if (\n (Number(inputSymbol) > 3 && this.leadZeroDateTime) ||\n (!maskStartWithMonth &&\n (Number(inputValueSliceCursorPlusTwo) > daysCount ||\n Number(inputValueSliceMinusOnePlusOne) > daysCount ||\n this.specialCharacters.includes(inputValueCursorPlusOne))) ||\n (startWithMonthInput\n ? Number(inputValueSliceMinusOnePlusOne) > daysCount ||\n (!this.specialCharacters.includes(inputValueCursor) &&\n this.specialCharacters.includes(inputValueCursorPlusTwo)) ||\n this.specialCharacters.includes(inputValueCursor)\n : Number(inputValueSliceCursorPlusTwo) > daysCount ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n !backspaced))\n ) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n if (maskExpression[cursor] === MaskExpression.MONTH) {\n const monthsCount = 12;\n // mask without day\n const withoutDays: boolean =\n cursor === 0 &&\n (Number(inputSymbol) > 2 ||\n Number(inputValueSliceCursorPlusTwo) > monthsCount ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n !backspaced));\n // day<10 && month<12 for input\n const specialChart = maskExpression.slice(cursor + 2, cursor + 3);\n const day1monthInput: boolean =\n inputValueSliceMinusThreeMinusOne.includes(specialChart) &&\n maskExpression.includes('d0') &&\n ((this.specialCharacters.includes(inputValueCursorMinusTwo) &&\n Number(inputValueSliceMinusOnePlusOne) > monthsCount &&\n !this.specialCharacters.includes(inputValueCursor)) ||\n this.specialCharacters.includes(inputValueCursor));\n // month<12 && day<10 for input\n const day2monthInput: boolean =\n Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n this.specialCharacters.includes(inputValueCursorMinusOne) &&\n (Number(inputValueSliceCursorPlusTwo) > monthsCount ||\n this.specialCharacters.includes(inputValueCursorPlusOne));\n // cursor === 5 && without days\n const day2monthInputDot: boolean =\n (Number(inputValueSliceCursorPlusTwo) > monthsCount && cursor === 5) ||\n (this.specialCharacters.includes(inputValueCursorPlusOne) &&\n cursor === 5);\n // // day<10 && month<12 for paste whole data\n const day1monthPaste: boolean =\n Number(inputValueSliceMinusThreeMinusOne) > daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n !this.specialCharacters.includes(\n inputValueSliceMinusTwoCursor as string\n ) &&\n Number(inputValueSliceMinusTwoCursor) > monthsCount &&\n maskExpression.includes('d0');\n // 10<day<31 && month<12 for paste whole data\n const day2monthPaste: boolean =\n Number(inputValueSliceMinusThreeMinusOne) <= daysCount &&\n !this.specialCharacters.includes(\n inputValueSliceMinusThreeMinusOne as string\n ) &&\n !this.specialCharacters.includes(inputValueCursorMinusOne) &&\n Number(inputValueSliceMinusOnePlusOne) > monthsCount;\n if (\n (Number(inputSymbol) > 1 && this.leadZeroDateTime) ||\n withoutDays ||\n day1monthInput ||\n day2monthPaste ||\n day1monthPaste ||\n day2monthInput ||\n (day2monthInputDot && !this.leadZeroDateTime)\n ) {\n processedPosition = !this.leadZeroDateTime\n ? processedPosition + 1\n : processedPosition;\n cursor += 1;\n this._shiftStep(cursor);\n i--;\n if (this.leadZeroDateTime) {\n result += '0';\n }\n continue;\n }\n }\n result += inputSymbol;\n cursor++;\n } else if (\n this.specialCharacters.includes(inputSymbol) &&\n maskExpression[cursor] === inputSymbol\n ) {\n result += inputSymbol;\n cursor++;\n } else if (\n this.specialCharacters.indexOf(\n maskExpression[cursor] ?? MaskExpression.EMPTY_STRING\n ) !== -1\n ) {\n result += maskExpression[cursor];\n cursor++;\n this._shiftStep(cursor);\n i--;\n } else if (\n maskExpression[cursor] === MaskExpression.NUMBER_NINE &&\n this.showMaskTyped\n ) {\n this._shiftStep(cursor);\n } else if (\n this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING] &&\n this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]?.optional\n ) {\n if (\n !!inputArray[cursor] &&\n maskExpression !== '099.099.099.099' &&\n maskExpression !== '000.000.000-00' &&\n maskExpression !== '00.000.000/0000-00' &&\n !maskExpression.match(/^9+\\.0+$/) &&\n !this.patterns[maskExpression[cursor] ?? MaskExpression.EMPTY_STRING]\n ?.optional\n ) {\n result += inputArray[cursor];\n }\n if (\n maskExpression.includes(\n MaskExpression.NUMBER_NINE + MaskExpression.SYMBOL_STAR\n ) &&\n maskExpression.includes(\n MaskExpression.NUMBER_ZERO + MaskExpression.SYMBOL_STAR\n )\n ) {\n cursor++;\n }\n\n cursor++;\n i--;\n } else if (\n this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_STAR &&\n this._findSpecialChar(\n this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n ) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.maskExpression[cursor + 1] === MaskExpression.SYMBOL_QUESTION &&\n this._findSpecialChar(\n this.maskExpression[cursor + 2] ?? MaskExpression.EMPTY_STRING\n ) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.showMaskTyped &&\n this.specialCharacters.indexOf(inputSymbol) < 0 &&\n inputSymbol !== this.placeHolderCharacter &&\n this.placeHolderCharacter.length === 1\n ) {\n stepBack = true;\n }\n }\n }\n if (\n result[processedPosition - 1] &&\n result.length + 1 === maskExpression.length &&\n this.specialCharacters.indexOf(\n maskExpression[maskExpression.length - 1] ?? MaskExpression.EMPTY_STRING\n ) !== -1\n ) {\n result += maskExpression[maskExpression.length - 1];\n }\n let newPosition: number = processedPosition + 1;\n\n while (this._shift.has(newPosition)) {\n shift++;\n newPosition++;\n }\n\n let actualShift: number =\n justPasted && !maskExpression.startsWith(MaskExpression.SEPARATOR)\n ? cursor\n : this._shift.has(processedPosition)\n ? shift\n : 0;\n if (stepBack) {\n actualShift--;\n }\n\n cb(actualShift, backspaceShift);\n if (shift < 0) {\n this._shift.clear();\n }\n let onlySpecial = false;\n if (backspaced) {\n onlySpecial = inputArray.every((char) => this.specialCharacters.includes(char));\n }\n\n let res = `${this.prefix}${onlySpecial ? MaskExpression.EMPTY_STRING : result}${\n this.showMaskTyped ? '' : this.suffix\n }`;\n\n if (result.length === 0) {\n res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;\n }\n\n const isSpecialCharacterMaskFirstSymbol =\n processedValue.length === 1 &&\n this.specialCharacters.includes(maskExpression[0] as string) &&\n processedValue !== maskExpression[0];\n\n if (\n !this._checkSymbolMask(processedValue, maskExpression[1] as string) &&\n isSpecialCharacterMaskFirstSymbol\n ) {\n return '';\n }\n\n if (result.includes(MaskExpression.MINUS) && this.prefix && this.allowNegativeNumbers) {\n if (backspaced && result === MaskExpression.MINUS) {\n return '';\n }\n res = `${MaskExpression.MINUS}${this.prefix}${result\n .split(MaskExpression.MINUS)\n .join(MaskExpression.EMPTY_STRING)}${this.suffix}`;\n }\n return res;\n }\n\n public _findDropSpecialChar(inputSymbol: string): undefined | string {\n if (Array.isArray(this.dropSpecialCharacters)) {\n return this.dropSpecialCharacters.find((val: string) => val === inputSymbol);\n }\n return this._findSpecialChar(inputSymbol);\n }\n\n public _findSpecialChar(inputSymbol: string): undefined | string {\n return this.specialCharacters.find((val: string) => val === inputSymbol);\n }\n\n public _checkSymbolMask(inputSymbol: string, maskSymbol: string): boolean {\n this.patterns = this.customPattern ? this.customPattern : this.patterns;\n return (\n (this.patterns?.[maskSymbol]?.pattern &&\n this.patterns?.[maskSymbol]?.pattern.test(inputSymbol)) ??\n false\n );\n }\n\n private _formatWithSeparators = (\n str: string,\n thousandSeparatorChar: string,\n decimalChars: string | string[],\n precision: number\n ) => {\n let x: string[] = [];\n let decimalChar = '';\n\n if (Array.isArray(decimalChars)) {\n const regExp = new RegExp(\n decimalChars.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|')\n );\n x = str.split(regExp);\n decimalChar = str.match(regExp)?.[0] ?? MaskExpression.EMPTY_STRING;\n } else {\n x = str.split(decimalChars);\n decimalChar = decimalChars;\n }\n const decimals: string =\n x.length > 1 ? `${decimalChar}${x[1]}` : MaskExpression.EMPTY_STRING;\n let res: string = x[0] ?? MaskExpression.EMPTY_STRING;\n const separatorLimit: string = this.separatorLimit.replace(\n /\\s/g,\n MaskExpression.EMPTY_STRING\n );\n if (separatorLimit && +separatorLimit) {\n if (res[0] === MaskExpression.MINUS) {\n res = `-${res.slice(1, res.length).slice(0, separatorLimit.length)}`;\n } else {\n res = res.slice(0, separatorLimit.length);\n }\n }\n const rgx = /(\\d+)(\\d{3})/;\n\n while (thousandSeparatorChar && rgx.test(res)) {\n res = res.replace(rgx, '$1' + thousandSeparatorChar + '$2');\n }\n\n if (typeof precision === 'undefined') {\n return res + decimals;\n } else if (precision === 0) {\n return res;\n }\n return res + decimals.substring(0, precision + 1);\n };\n\n private percentage = (str: string): boolean => {\n const sanitizedStr = str.replace(',', '.');\n const value = Number(\n this.allowNegativeNumbers && str.includes(MaskExpression.MINUS)\n ? sanitizedStr.slice(1, str.length)\n : sanitizedStr\n );\n\n return !isNaN(value) && value >= 0 && value <= 100;\n };\n\n public getPrecision = (maskExpression: string): number => {\n const x: string[] = maskExpression.split(MaskExpression.DOT);\n if (x.length > 1) {\n return Number(x[x.length - 1]);\n }\n\n return Infinity;\n };\n\n private checkAndRemoveSuffix = (inputValue: string): string => {\n for (let i = this.suffix?.length - 1; i >= 0; i--) {\n const substr = this.suffix.substring(i, this.suffix?.length);\n if (\n inputValue.includes(substr) &&\n i !== this.suffix?.length - 1 &&\n (i - 1 < 0 ||\n !inputValue.includes(this.suffix.substring(i - 1, this.suffix?.length)))\n ) {\n return inputValue.replace(substr, MaskExpression.EMPTY_STRING);\n }\n }\n return inputValue;\n };\n\n private checkInputPrecision = (\n inputValue: string,\n precision: number,\n decimalMarker: MatchaMaskConfig['decimalMarker']\n ): string => {\n let processedInputValue = inputValue;\n let processedDecimalMarker = decimalMarker;\n\n if (precision < Infinity) {\n // TODO need think about decimalMarker\n if (Array.isArray(processedDecimalMarker)) {\n const marker = processedDecimalMarker.find((dm) => dm !== this.thousandSeparator);\n\n processedDecimalMarker = marker ? marker : processedDecimalMarker[0];\n }\n const precisionRegEx = new RegExp(\n this._charToRegExpExpression(processedDecimalMarker) + `\\\\d{${precision}}.*$`\n );\n const precisionMatch: RegExpMatchArray | null =\n processedInputValue.match(precisionRegEx);\n const precisionMatchLength: number = (precisionMatch && precisionMatch[0]?.length) ?? 0;\n if (precisionMatchLength - 1 > precision) {\n const diff = precisionMatchLength - 1 - precision;\n\n processedInputValue = processedInputValue.substring(\n 0,\n processedInputValue.length - diff\n );\n }\n if (\n precision === 0 &&\n this._compareOrIncludes(\n processedInputValue[processedInputValue.length - 1],\n processedDecimalMarker,\n this.thousandSeparator\n )\n ) {\n processedInputValue = processedInputValue.substring(\n 0,\n processedInputValue.length - 1\n );\n }\n }\n return processedInputValue;\n };\n\n private _stripToDecimal(str: string): string {\n return str\n .split(MaskExpression.EMPTY_STRING)\n .filter((i: string, idx: number) => {\n const isDecimalMarker =\n typeof this.decimalMarker === 'string'\n ? i === this.decimalMarker\n : // TODO (inepipenko) use utility type\n this.decimalMarker.includes(\n i as MaskExpression.COMMA | MaskExpression.DOT\n );\n return (\n i.match('^-?\\\\d') ||\n i === this.thousandSeparator ||\n isDecimalMarker ||\n (i === MaskExpression.MINUS && idx === 0 && this.allowNegativeNumbers)\n );\n })\n .join(MaskExpression.EMPTY_STRING);\n }\n\n private _charToRegExpExpression(char: string): string {\n // if (Array.isArray(char)) {\n // \treturn char.map((v) => ('[\\\\^$.|?*+()'.indexOf(v) >= 0 ? `\\\\${v}` : v)).join('|');\n // }\n if (char) {\n const charsToEscape = '[\\\\^$.|?*+()';\n return char === ' ' ? '\\\\s' : charsToEscape.indexOf(char) >= 0 ? `\\\\${char}` : char;\n }\n return char;\n }\n\n private _shiftStep(cursor: number) {\n this._shift.add(cursor + this.prefix.length || 0);\n }\n\n protected _compareOrIncludes<T>(value: T, comparedValue: T | T[], excludedValue: T): boolean {\n return Array.isArray(comparedValue)\n ? comparedValue.filter((v) => v !== excludedValue).includes(value)\n : value === comparedValue;\n }\n\n private _validIP(valuesIP: string[]): boolean {\n return !(\n valuesIP.length === 4 &&\n !valuesIP.some((value: string, index: number) => {\n if (valuesIP.length !== index + 1) {\n return value === MaskExpression.EMPTY_STRING || Number(value) > 255;\n }\n return value === MaskExpression.EMPTY_STRING || Number(value.substring(0, 3)) > 255;\n })\n );\n }\n\n private _splitPercentZero(value: string): string {\n if (value === MaskExpression.MINUS && this.allowNegativeNumbers) {\n return value;\n }\n const decimalIndex =\n typeof this.decimalMarker === 'string'\n ? value.indexOf(this.decimalMarker)\n : value.indexOf(MaskExpression.DOT);\n const emptyOrMinus =\n this.allowNegativeNumbers && value.includes(MaskExpression.MINUS) ? '-' : '';\n if (decimalIndex === -1) {\n const parsedValue = parseInt(emptyOrMinus ? value.slice(1, value.length) : value, 10);\n return isNaN(parsedValue)\n ? MaskExpression.EMPTY_STRING\n : `${emptyOrMinus}${parsedValue}`;\n } else {\n const integerPart = parseInt(value.replace('-', '').substring(0, decimalIndex), 10);\n const decimalPart = value.substring(decimalIndex + 1);\n const integerString = isNaN(integerPart) ? '' : integerPart.toString();\n\n const decimal =\n typeof this.decimalMarker === 'string' ? this.decimalMarker : MaskExpression.DOT;\n\n return integerString === MaskExpression.EMPTY_STRING\n ? MaskExpression.EMPTY_STRING\n : `${emptyOrMinus}${integerString}${decimal}${decimalPart}`;\n }\n }\n\n private _findFirstNonZeroAndDecimalIndex(inputString: string, decimalMarker: '.' | ',') {\n let decimalMarkerIndex: number | null = null;\n let nonZeroIndex: number | null = null;\n\n for (let i = 0; i < inputString.length; i++) {\n const char = inputString[i];\n\n if (char === decimalMarker && decimalMarkerIndex === null) {\n decimalMarkerIndex = i;\n }\n\n if (char && char >= '1' && char <= '9' && nonZeroIndex === null) {\n nonZeroIndex = i;\n }\n\n if (decimalMarkerIndex !== null && nonZeroIndex !== null) {\n break;\n }\n }\n\n return {\n decimalMarkerIndex,\n nonZeroIndex,\n };\n }\n}\n","import { ElementRef, inject, Injectable, Renderer2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n\nimport type { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MatchaMaskApplierService } from './matcha-mask-applier.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Injectable()\nexport class MatchaMaskService extends MatchaMaskApplierService {\n public isNumberValue = false;\n public maskIsShown = '';\n public selStart: number | null = null;\n public selEnd: number | null = null;\n public maskChanged = false;\n public maskExpressionArray: string[] = [];\n public previousValue = '';\n public currentValue = '';\n /**\n * Whether we are currently in writeValue function, in this case when applying the mask we don't want to trigger onChange function,\n * since writeValue should be a one way only process of writing the DOM value based on the Angular model value.\n */\n public writingValue = false;\n\n private _emitValue = false;\n private _start!: number;\n private _end!: number;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (_: any) => {};\n\n public readonly _elementRef = inject(ElementRef, { optional: true });\n\n private readonly document = inject(DOCUMENT);\n\n protected override _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n private readonly _renderer = inject(Renderer2, { optional: true });\n\n /**\n * Applies the mask to the input value.\n * @param inputValue The input value to be masked.\n * @param maskExpression The mask expression to apply.\n * @param position The position in the input value.\n * @param justPasted Whether the value was just pasted.\n * @param backspaced Whether the value was backspaced.\n * @param cb Callback function.\n * @returns The masked value.\n */\n public override applyMask(\n inputValue: string | object | boolean | null | undefined,\n maskExpression: string,\n position = 0,\n justPasted = false,\n backspaced = false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): string {\n // Converter automaticamente número, boolean ou object para string (retrocompatível)\n // Isso previne o erro \"indexOf is not a function\" quando números são passados\n let processedInputValue: string;\n if (inputValue === null || inputValue === undefined) {\n processedInputValue = '';\n } else if (typeof inputValue === 'number') {\n processedInputValue = String(inputValue);\n } else if (typeof inputValue === 'boolean') {\n processedInputValue = inputValue ? 'true' : 'false';\n } else if (typeof inputValue === 'object') {\n // Para objetos, tentar converter para string (JSON.stringify ou toString)\n try {\n processedInputValue = JSON.stringify(inputValue);\n } catch {\n processedInputValue = String(inputValue);\n }\n } else {\n processedInputValue = String(inputValue);\n }\n\n // If no mask expression, return the input value or the actual value\n if (!maskExpression) {\n return processedInputValue !== this.actualValue ? this.actualValue : processedInputValue;\n }\n\n // Show mask in input if required\n this.maskIsShown = this.showMaskTyped\n ? this.showMaskInInput()\n : MaskExpression.EMPTY_STRING;\n\n // Handle specific mask expressions\n if (this.maskExpression === MaskExpression.IP && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\n }\n if (this.maskExpression === MaskExpression.CPF_CNPJ && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(processedInputValue || MaskExpression.HASH);\n }\n\n // Handle empty input value with mask typed\n if (!processedInputValue && this.showMaskTyped) {\n this.formControlResult(this.prefix);\n return `${this.prefix}${this.maskIsShown}${this.suffix}`;\n }\n\n const getSymbol: string =\n !!processedInputValue && typeof this.selStart === 'number'\n ? (processedInputValue[this.selStart] ?? MaskExpression.EMPTY_STRING)\n : MaskExpression.EMPTY_STRING;\n let newInputValue = '';\n let newPosition = position;\n\n // Handle hidden input or input with asterisk symbol\n if (\n (this.hiddenInput ||\n (processedInputValue && processedInputValue.indexOf(MaskExpression.SYMBOL_STAR) >= 0)) &&\n !this.writingValue\n ) {\n let actualResult: string[] =\n processedInputValue && processedInputValue.length === 1\n ? processedInputValue.split(MaskExpression.EMPTY_STRING)\n : this.actualValue.split(MaskExpression.EMPTY_STRING);\n\n // Handle backspace\n if (backspaced) {\n actualResult = actualResult\n .slice(0, position)\n .concat(actualResult.slice(position + 1));\n }\n\n // Remove mask if showMaskTyped is true\n if (this.showMaskTyped) {\n // eslint-disable-next-line no-param-reassign\n processedInputValue = this.removeMask(processedInputValue);\n actualResult = this.removeMask(actualResult.join('')).split(\n MaskExpression.EMPTY_STRING\n );\n }\n\n // Handle selection start and end\n if (typeof this.selStart === 'object' && typeof this.selEnd === 'object') {\n this.selStart = Number(this.selStart);\n this.selEnd = Number(this.selEnd);\n } else {\n if (processedInputValue !== MaskExpression.EMPTY_STRING && actualResult.length) {\n if (typeof this.selStart === 'number' && typeof this.selEnd === 'number') {\n if (processedInputValue.length > actualResult.length) {\n actualResult.splice(this.selStart, 0, getSymbol);\n } else if (processedInputValue.length < actualResult.length) {\n if (actualResult.length - processedInputValue.length === 1) {\n if (backspaced) {\n actualResult.splice(this.selStart - 1, 1);\n } else {\n actualResult.splice(processedInputValue.length - 1, 1);\n }\n } else {\n actualResult.splice(this.selStart, this.selEnd - this.selStart);\n }\n }\n }\n } else {\n actualResult = [];\n }\n }\n\n // Remove mask if showMaskTyped is true and hiddenInput is false\n if (this.showMaskTyped && !this.hiddenInput) {\n newInputValue = this.removeMask(processedInputValue);\n }\n\n // Handle actual value length\n if (this.actualValue.length) {\n if (actualResult.length < processedInputValue.length) {\n newInputValue = this.shiftTypedSymbols(\n actualResult.join(MaskExpression.EMPTY_STRING)\n );\n } else if (actualResult.length === processedInputValue.length) {\n newInputValue = actualResult.join(MaskExpression.EMPTY_STRING);\n } else {\n newInputValue = processedInputValue;\n }\n } else {\n newInputValue = processedInputValue;\n }\n }\n\n // Handle just pasted input\n if (justPasted && (this.hiddenInput || !this.hiddenInput)) {\n newInputValue = processedInputValue;\n }\n\n // Handle backspace with special characters\n if (\n backspaced &&\n this.specialCharacters.indexOf(\n this.maskExpression[newPosition] ?? MaskExpression.EMPTY_STRING\n ) !== -1 &&\n this.showMaskTyped &&\n !this.prefix\n ) {\n newInputValue = this.currentValue;\n }\n\n // Handle deleted special character\n if (this.deletedSpecialCharacter && newPosition) {\n if (\n this.specialCharacters.includes(\n this.actualValue.slice(newPosition, newPosition + 1)\n )\n ) {\n newPosition = newPosition + 1;\n } else if (\n maskExpression.slice(newPosition - 1, newPosition + 1) !== MaskExpression.MONTHS\n ) {\n newPosition = newPosition - 2;\n }\n\n this.deletedSpecialCharacter = false;\n }\n\n // Remove mask if showMaskTyped is true and placeHolderCharacter length is 1\n if (\n this.showMaskTyped &&\n this.placeHolderCharacter.length === 1 &&\n !this.leadZeroDateTime\n ) {\n newInputValue = this.removeMask(newInputValue);\n }\n\n // Handle mask changed\n if (this.maskChanged) {\n newInputValue = processedInputValue;\n } else {\n newInputValue =\n Boolean(newInputValue) && newInputValue.length ? newInputValue : processedInputValue;\n }\n\n // Handle showMaskTyped and keepCharacterPositions\n if (\n this.showMaskTyped &&\n this.keepCharacterPositions &&\n this.actualValue &&\n !justPasted &&\n !this.writingValue\n ) {\n const value = this.dropSpecialCharacters\n ? this.removeMask(this.actualValue)\n : this.actualValue;\n this.formControlResult(value);\n return this.actualValue\n ? this.actualValue\n : `${this.prefix}${this.maskIsShown}${this.suffix}`;\n }\n\n // Apply the mask using the parent class method\n const result: string = super.applyMask(\n newInputValue,\n maskExpression,\n newPosition,\n justPasted,\n backspaced,\n cb\n );\n\n this.actualValue = this.getActualValue(result);\n\n // handle some separator implications:\n // a.) adjust decimalMarker default (. -> ,) if thousandSeparator is a dot\n if (\n this.thousandSeparator === MaskExpression.DOT &&\n this.decimalMarker === MaskExpression.DOT\n ) {\n this.decimalMarker = MaskExpression.COMMA;\n }\n // b) remove ONLY decimal marker from list of special characters to mask\n // The thousandSeparator should REMAIN in the list to be removed from the final value\n if (\n this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n this.dropSpecialCharacters === true\n ) {\n this.specialCharacters = this.specialCharacters.filter(\n (item: string) =>\n !this._compareOrIncludes(item, this.decimalMarker, null) // Only remove decimalMarker, keep thousandSeparator\n );\n }\n // c) set isNumberValue to true for separator masks to ensure proper number conversion\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n this.isNumberValue = true;\n }\n\n // Update previous and current values\n if (result || result === '') {\n this.previousValue = this.currentValue;\n this.currentValue = result;\n\n this._emitValue =\n this.previousValue !== this.currentValue ||\n (newInputValue !== this.currentValue && this.writingValue) ||\n (this.previousValue === this.currentValue && justPasted);\n }\n\n // DEBUG: Verificar se formControlResult está sendo chamado\n console.log('=== applyMask DEBUG ===');\n console.log('result:', result);\n console.log('_emitValue:', this._emitValue);\n console.log('previousValue:', this.previousValue);\n console.log('currentValue:', this.currentValue);\n\n // Propagate the input value back to the Angular model\n // eslint-disable-next-line no-unused-expressions,@typescript-eslint/no-unused-expressions\n this._emitValue ? this.formControlResult(result) : '';\n\n // Handle hidden input and showMaskTyped\n if (!this.showMaskTyped || (this.showMaskTyped && this.hiddenInput)) {\n if (this.hiddenInput) {\n return `${this.hideInput(result, this.maskExpression)}${this.maskIsShown.slice(result.length)}`;\n }\n return result;\n }\n\n const resLen: number = result.length;\n const prefNmask = `${this.prefix}${this.maskIsShown}${this.suffix}`;\n\n // Handle specific mask expressions\n if (this.maskExpression.includes(MaskExpression.HOURS)) {\n const countSkipedSymbol = this._numberSkipedSymbols(result);\n return `${result}${prefNmask.slice(resLen + countSkipedSymbol)}`;\n } else if (\n this.maskExpression === MaskExpression.IP ||\n this.maskExpression === MaskExpression.CPF_CNPJ\n ) {\n return `${result}${prefNmask}`;\n }\n\n return `${result}${prefNmask.slice(resLen)}`;\n }\n\n // get the number of characters that were shifted\n private _numberSkipedSymbols(value: string): number {\n const regex = /(^|\\D)(\\d\\D)/g;\n let match = regex.exec(value);\n let countSkipedSymbol = 0;\n while (match != null) {\n countSkipedSymbol += 1;\n match = regex.exec(value);\n }\n return countSkipedSymbol;\n }\n\n public applyValueChanges(\n position: number,\n justPasted: boolean,\n backspaced: boolean,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n cb: (...args: any[]) => any = () => {}\n ): void {\n const formElement = this._elementRef?.nativeElement;\n if (!formElement) {\n return;\n }\n\n formElement.value = this.applyMask(\n formElement.value,\n this.maskExpression,\n position,\n justPasted,\n backspaced,\n cb\n );\n if (formElement === this._getActiveElement()) {\n return;\n }\n this.clearIfNotMatchFn();\n }\n\n public hideInput(inputValue: string, maskExpression: string): string {\n return inputValue\n .split(MaskExpression.EMPTY_STRING)\n .map((curr: string, index: number) => {\n if (\n this.patterns &&\n this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING] &&\n this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]?.symbol\n ) {\n return this.patterns[maskExpression[index] ?? MaskExpression.EMPTY_STRING]\n ?.symbol;\n }\n return curr;\n })\n .join(MaskExpression.EMPTY_STRING);\n }\n\n // this function is not necessary, it checks result against maskExpression\n public getActualValue(res: string): string {\n const compare: string[] = res\n .split(MaskExpression.EMPTY_STRING)\n .filter((symbol: string, i: number) => {\n const maskChar = this.maskExpression[i] ?? MaskExpression.EMPTY_STRING;\n return (\n this._checkSymbolMask(symbol, maskChar) ||\n (this.specialCharacters.includes(maskChar) && symbol === maskChar)\n );\n });\n if (compare.join(MaskExpression.EMPTY_STRING) === res) {\n return compare.join(MaskExpression.EMPTY_STRING);\n }\n return res;\n }\n\n public shiftTypedSymbols(inputValue: string): string {\n let symbolToReplace = '';\n const newInputValue: (string | undefined)[] =\n (inputValue &&\n inputValue\n .split(MaskExpression.EMPTY_STRING)\n .map((currSymbol: string, index: number) => {\n if (\n this.specialCharacters.includes(\n inputValue[index + 1] ?? MaskExpression.EMPTY_STRING\n ) &&\n inputValue[index + 1] !== this.maskExpression[index + 1]\n ) {\n symbolToReplace = currSymbol;\n return inputValue[index + 1];\n }\n if (symbolToReplace.length) {\n const replaceSymbol: string = symbolToReplace;\n symbolToReplace = MaskExpression.EMPTY_STRING;\n return replaceSymbol;\n }\n return currSymbol;\n })) ||\n [];\n return newInputValue.join(MaskExpression.EMPTY_STRING);\n }\n\n /**\n * Convert number value to string\n * 3.1415 -> '3.1415'\n * 1e-7 -> '0.0000001'\n */\n public numberToString(value: number | string): string {\n if (\n (!value && value !== 0) ||\n (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n (this.leadZero || !this.dropSpecialCharacters)) ||\n (this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n this.separatorLimit.length > 14 &&\n String(value).length > 14)\n ) {\n return String(value);\n }\n return Number(value)\n .toLocaleString('fullwide', {\n useGrouping: false,\n maximumFractionDigits: 20,\n })\n .replace(`/${MaskExpression.MINUS}/`, MaskExpression.MINUS);\n }\n\n public showMaskInInput(inputVal?: string): string {\n if (this.showMaskTyped && !!this.shownMaskExpression) {\n if (this.maskExpression.length !== this.shownMaskExpression.length) {\n throw new Error('Mask expression must match mask placeholder length');\n } else {\n return this.shownMaskExpression;\n }\n } else if (this.showMaskTyped) {\n if (inputVal) {\n if (this.maskExpression === MaskExpression.IP) {\n return this._checkForIp(inputVal);\n }\n if (this.maskExpression === MaskExpression.CPF_CNPJ) {\n return this._checkForCpfCnpj(inputVal);\n }\n }\n if (this.placeHolderCharacter.length === this.maskExpression.length) {\n return this.placeHolderCharacter;\n }\n return this.maskExpression.replace(/\\w/g, this.placeHolderCharacter);\n }\n return '';\n }\n\n public clearIfNotMatchFn(): void {\n const formElement = this._elementRef?.nativeElement;\n if (!formElement) {\n return;\n }\n if (\n this.clearIfNotMatch &&\n this.prefix.length + this.maskExpression.length + this.suffix.length !==\n formElement.value.replace(this.placeHolderCharacter, MaskExpression.EMPTY_STRING)\n .length\n ) {\n this.formElementProperty = ['value', MaskExpression.EMPTY_STRING];\n this.applyMask('', this.maskExpression);\n }\n }\n\n public set formElementProperty([name, value]: [string, string | boolean]) {\n if (!this._renderer || !this._elementRef) {\n return;\n }\n //[TODO]: andriikamaldinov1 find better solution\n Promise.resolve().then(() =>\n this._renderer?.setProperty(this._elementRef?.nativeElement, name, value)\n );\n }\n\n public checkDropSpecialCharAmount(mask: string): number {\n const chars: string[] = mask\n .split(MaskExpression.EMPTY_STRING)\n .filter((item: string) => this._findDropSpecialChar(item));\n return chars.length;\n }\n\n public removeMask(inputValue: string): string {\n return this._removeMask(\n this._removeSuffix(this._removePrefix(inputValue)),\n this.specialCharacters.concat('_').concat(this.placeHolderCharacter)\n );\n }\n\n private _checkForIp(inputVal: string): string {\n if (inputVal === MaskExpression.HASH) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inputVal.length; i++) {\n const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\n if (!value) {\n continue;\n }\n if (value.match('\\\\d')) {\n arr.push(value);\n }\n }\n if (arr.length <= 3) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 3 && arr.length <= 6) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 6 && arr.length <= 9) {\n return this.placeHolderCharacter;\n }\n if (arr.length > 9 && arr.length <= 12) {\n return '';\n }\n return '';\n }\n\n private _checkForCpfCnpj(inputVal: string): string {\n const cpf =\n `${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n const cnpj =\n `${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `/${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n\n if (inputVal === MaskExpression.HASH) {\n return cpf;\n }\n const arr: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inputVal.length; i++) {\n const value = inputVal[i] ?? MaskExpression.EMPTY_STRING;\n if (!value) {\n continue;\n }\n if (value.match('\\\\d')) {\n arr.push(value);\n }\n }\n if (arr.length <= 3) {\n return cpf.slice(arr.length, cpf.length);\n }\n if (arr.length > 3 && arr.length <= 6) {\n return cpf.slice(arr.length + 1, cpf.length);\n }\n if (arr.length > 6 && arr.length <= 9) {\n return cpf.slice(arr.length + 2, cpf.length);\n }\n if (arr.length > 9 && arr.length < 11) {\n return cpf.slice(arr.length + 3, cpf.length);\n }\n if (arr.length === 11) {\n return '';\n }\n if (arr.length === 12) {\n if (inputVal.length === 17) {\n return cnpj.slice(16, cnpj.length);\n }\n return cnpj.slice(15, cnpj.length);\n }\n if (arr.length > 12 && arr.length <= 14) {\n return cnpj.slice(arr.length + 4, cnpj.length);\n }\n return '';\n }\n\n /**\n * Recursively determine the current active element by navigating the Shadow DOM until the Active Element is found.\n */\n private _getActiveElement(document: DocumentOrShadowRoot = this.document): Element | null {\n const shadowRootEl = document?.activeElement?.shadowRoot;\n if (!shadowRootEl?.activeElement) {\n return document.activeElement;\n } else {\n return this._getActiveElement(shadowRootEl);\n }\n }\n\n /**\n * Propogates the input value back to the Angular model by triggering the onChange function. It won't do this if writingValue\n * is true. If that is true it means we are currently in the writeValue function, which is supposed to only update the actual\n * DOM element based on the Angular model value. It should be a one way process, i.e. writeValue should not be modifying the Angular\n * model value too. Therefore, we don't trigger onChange in this scenario.\n * @param inputValue the current form input value\n */\n private formControlResult(inputValue: string): void {\n const outputTransformFn = this.outputTransformFn\n ? this.outputTransformFn\n : (v: unknown) => v;\n this.writingValue = false;\n this.maskChanged = false;\n\n // Para máscaras de separador, garantir que isNumberValue é true\n // Isso assegura a conversão correta para número\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n this.isNumberValue = true;\n }\n\n console.log('=== formControlResult DEBUG ===');\n console.log('inputValue:', inputValue);\n console.log('isNumberValue:', this.isNumberValue);\n console.log('dropSpecialCharacters:', this.dropSpecialCharacters);\n\n if (Array.isArray(this.dropSpecialCharacters)) {\n const afterPrefix = this._removePrefix(inputValue);\n const afterSuffix = this._removeSuffix(afterPrefix);\n const afterMask = this._removeMask(afterSuffix, this.dropSpecialCharacters);\n const afterSymbols = this._checkSymbols(afterMask);\n const afterNumber = this._toNumber(afterSymbols);\n const finalValue = outputTransformFn(afterNumber);\n console.log('Array: afterPrefix:', afterPrefix, 'afterSuffix:', afterSuffix, 'afterMask:', afterMask, 'afterSymbols:', afterSymbols, 'afterNumber:', afterNumber, 'final:', finalValue, 'type:', typeof finalValue);\n this.onChange(finalValue);\n } else if (\n this.dropSpecialCharacters ||\n (!this.dropSpecialCharacters && this.prefix === inputValue)\n ) {\n const afterPrefix = this._removePrefix(inputValue);\n const afterSuffix = this._removeSuffix(afterPrefix);\n const afterSymbols = this._checkSymbols(afterSuffix);\n const afterNumber = this._toNumber(afterSymbols);\n const finalValue = outputTransformFn(afterNumber);\n console.log('Boolean: afterPrefix:', afterPrefix, 'afterSuffix:', afterSuffix, 'afterSymbols:', afterSymbols, 'afterNumber:', afterNumber, 'final:', finalValue, 'type:', typeof finalValue);\n this.onChange(finalValue);\n } else {\n const afterNumber = this._toNumber(inputValue);\n const finalValue = outputTransformFn(afterNumber);\n console.log('Else: afterNumber:', afterNumber, 'final:', finalValue);\n this.onChange(finalValue);\n }\n }\n\n private _toNumber(value: string | number | undefined | null) {\n if (!this.isNumberValue || value === MaskExpression.EMPTY_STRING) {\n return value;\n }\n if (\n this.maskExpression.startsWith(MaskExpression.SEPARATOR) &&\n (this.leadZero || !this.dropSpecialCharacters)\n ) {\n return value;\n }\n\n if (String(value).length > 14 && this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n return String(value);\n }\n\n const num = Number(value);\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR) && Number.isNaN(num)) {\n const val = String(value).replace(',', '.');\n return Number(val);\n }\n\n return Number.isNaN(num) ? value : num;\n }\n\n private _removeMask(value: string, specialCharactersForRemove: string[]): string {\n if (\n this.maskExpression.startsWith(MaskExpression.PERCENT) &&\n value.includes(MaskExpression.DOT)\n ) {\n return value;\n }\n\n return value\n ? value.replace(\n this._regExpForRemove(specialCharactersForRemove),\n MaskExpression.EMPTY_STRING\n )\n : value;\n }\n\n private _removePrefix(value: string): string {\n if (!this.prefix) {\n return value;\n }\n return value ? value.replace(this.prefix, MaskExpression.EMPTY_STRING) : value;\n }\n\n private _removeSuffix(value: string): string {\n if (!this.suffix) {\n return value;\n }\n return value ? value.replace(this.suffix, MaskExpression.EMPTY_STRING) : value;\n }\n\n private _retrieveSeparatorValue(result: string): string {\n let specialCharacters = Array.isArray(this.dropSpecialCharacters)\n ? this.specialCharacters.filter((v) => {\n return (this.dropSpecialCharacters as string[]).includes(v);\n })\n : [...this.specialCharacters]; // Criar cópia para não modificar o original\n\n if (\n !this.deletedSpecialCharacter &&\n this._checkPatternForSpace() &&\n result.includes(MaskExpression.WHITE_SPACE) &&\n this.maskExpression.includes(MaskExpression.SYMBOL_STAR)\n ) {\n specialCharacters = specialCharacters.filter(\n (char) => char !== MaskExpression.WHITE_SPACE\n );\n }\n\n // Para máscaras de separador, NÃO remover o decimalMarker - ele será convertido para ponto depois\n if (this.maskExpression.startsWith(MaskExpression.SEPARATOR)) {\n specialCharacters = specialCharacters.filter(\n (char) => !this._compareOrIncludes(char, this.decimalMarker, null)\n );\n }\n\n return this._removeMask(result, specialCharacters as string[]);\n }\n\n private _regExpForRemove(specialCharactersForRemove: string[]): RegExp {\n return new RegExp(\n specialCharactersForRemove.map((item: string) => `\\\\${item}`).join('|'),\n 'gi'\n );\n }\n\n private _replaceDecimalMarkerToDot(value: string): string {\n const markers = Array.isArray(this.decimalMarker)\n ? this.decimalMarker\n : [this.decimalMarker];\n\n return value.replace(this._regExpForRemove(markers), MaskExpression.DOT);\n }\n\n public _checkSymbols(result: string): string | number | undefined | null {\n let processedResult = result;\n\n if (processedResult === MaskExpression.EMPTY_STRING) {\n return processedResult;\n }\n\n if (\n this.maskExpression.startsWith(MaskExpression.PERCENT) &&\n this.decimalMarker === MaskExpression.COMMA\n ) {\n processedResult = processedResult.replace(MaskExpression.COMMA, MaskExpression.DOT);\n }\n const separatorPrecision: number | null = this._retrieveSeparatorPrecision(\n this.maskExpression\n );\n\n const separatorValue: string =\n this.specialCharacters.length === 0\n ? this._retrieveSeparatorValue(processedResult)\n : this._replaceDecimalMarkerToDot(this._retrieveSeparatorValue(processedResult));\n\n if (!this.isNumberValue) {\n return separatorValue;\n }\n if (separatorPrecision) {\n if (processedResult === this.decimalMarker) {\n return null;\n }\n if (separatorValue.length > 14) {\n return String(separatorValue);\n }\n return this._checkPrecision(this.maskExpression, separatorValue);\n } else {\n return separatorValue;\n }\n }\n\n private _checkPatternForSpace(): boolean {\n for (const key in this.patterns) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.patterns[key] && this.patterns[key]?.hasOwnProperty('pattern')) {\n const patternString = this.patterns[key]?.pattern.toString();\n const pattern = this.patterns[key]?.pattern;\n if (\n (patternString?.includes(MaskExpression.WHITE_SPACE) as boolean) &&\n pattern?.test(this.maskExpression)\n ) {\n return true;\n }\n }\n }\n return false;\n }\n // TODO should think about helpers or separting decimal precision to own property\n private _retrieveSeparatorPrecision(maskExpretion: string): number | null {\n const matcher: RegExpMatchArray | null = maskExpretion.match(\n new RegExp(`^separator\\\\.([^d]*)`)\n );\n return matcher ? Number(matcher[1]) : null;\n }\n\n public _checkPrecision(separatorExpression: string, separatorValue: string): number | string {\n const separatorPrecision = this.getPrecision(separatorExpression);\n let value = separatorValue;\n\n if (\n separatorExpression.indexOf('2') > 0 ||\n (this.leadZero && Number(separatorPrecision) > 0)\n ) {\n if (this.decimalMarker === MaskExpression.COMMA && this.leadZero) {\n value = value.replace(',', '.');\n }\n return this.leadZero\n ? Number(value).toFixed(Number(separatorPrecision))\n : Number(value).toFixed(2);\n }\n return this.numberToString(value);\n }\n\n public _repeatPatternSymbols(maskExp: string): string {\n return (\n (maskExp.match(/{[0-9]+}/) &&\n maskExp\n .split(MaskExpression.EMPTY_STRING)\n .reduce((accum: string, currVal: string, index: number): string => {\n this._start =\n currVal === MaskExpression.CURLY_BRACKETS_LEFT ? index : this._start;\n if (currVal !== MaskExpression.CURLY_BRACKETS_RIGHT) {\n return this._findSpecialChar(currVal) ? accum + currVal : accum;\n }\n this._end = index;\n const repeatNumber = Number(maskExp.slice(this._start + 1, this._end));\n const replaceWith: string = new Array(repeatNumber + 1).join(\n maskExp[this._start - 1]\n );\n if (\n maskExp.slice(0, this._start).length > 1 &&\n maskExp.includes(MaskExpression.LETTER_S)\n ) {\n const symbols = maskExp.slice(0, this._start - 1);\n return symbols.includes(MaskExpression.CURLY_BRACKETS_LEFT)\n ? accum + replaceWith\n : symbols + accum + replaceWith;\n } else {\n return accum + replaceWith;\n }\n }, '')) ||\n maskExp\n );\n }\n\n public currentLocaleDecimalMarker(): string {\n return (1.1).toLocaleString().substring(1, 2);\n }\n}\n","import { OnChanges, SimpleChanges, Input, Output, EventEmitter, HostListener, Directive, forwardRef, inject, HostBinding } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ControlValueAccessor,\n FormControl,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { CustomKeyboardEvent } from './custom-keyboard-event';\nimport { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG, timeMasks, withoutValidation } from './matcha-mask.config';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Directive({\n selector: 'input[matchaMask], textarea[matchaMask]',\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaMaskCompatibleDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatchaMaskCompatibleDirective),\n multi: true,\n },\n MatchaMaskService,\n ],\n exportAs: 'matchaMask',\n})\nexport class MatchaMaskCompatibleDirective implements ControlValueAccessor, OnChanges, Validator {\n private _mask: string | undefined | null = '';\n @Input('matchaMask')\n get mask(): string | undefined | null { return this._mask; }\n set mask(v: string | undefined | null) { this._mask = v; }\n\n @HostBinding('attr.data-matcha-mask')\n get maskAttr(): string | null {\n return this._mask ?? null;\n }\n\n @Input() specialCharacters: MatchaMaskConfig['specialCharacters'] = [];\n @Input() patterns: MatchaMaskConfig['patterns'] = {};\n\n private _prefix: MatchaMaskConfig['prefix'] = '';\n @Input()\n get prefix(): MatchaMaskConfig['prefix'] { return this._prefix; }\n set prefix(v: MatchaMaskConfig['prefix']) { this._prefix = v; }\n\n @HostBinding('attr.data-prefix')\n get prefixAttr(): string | null {\n return this._prefix || null;\n }\n\n private _suffix: MatchaMaskConfig['suffix'] = '';\n @Input()\n get suffix(): MatchaMaskConfig['suffix'] { return this._suffix; }\n set suffix(v: MatchaMaskConfig['suffix']) { this._suffix = v; }\n\n @HostBinding('attr.data-suffix')\n get suffixAttr(): string | null {\n return this._suffix || null;\n }\n\n @Input() thousandSeparator: MatchaMaskConfig['thousandSeparator'] = ' ';\n @Input() decimalMarker: MatchaMaskConfig['decimalMarker'] = '.';\n\n private _dropSpecialCharacters: MatchaMaskConfig['dropSpecialCharacters'] | null = null;\n @Input()\n set dropSpecialCharacters(value: MatchaMaskConfig['dropSpecialCharacters'] | string | null) {\n // Converter string \"true\" ou \"false\" para boolean (retrocompatível)\n if (value === 'true' || value === true) {\n this._dropSpecialCharacters = true;\n } else if (value === 'false' || value === false) {\n this._dropSpecialCharacters = false;\n } else if (Array.isArray(value) || value === null) {\n this._dropSpecialCharacters = value;\n } else {\n // Para qualquer outro valor string, tratar como false\n this._dropSpecialCharacters = false;\n }\n }\n get dropSpecialCharacters(): MatchaMaskConfig['dropSpecialCharacters'] | null {\n return this._dropSpecialCharacters;\n }\n // Helper function para converter string para boolean (retrocompatível)\n private convertToBoolean(value: boolean | string | null | undefined): boolean | null {\n if (value === null || value === undefined) {\n return null;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n return value.toLowerCase() === 'true';\n }\n return false;\n }\n\n private _hiddenInput: boolean | null = null;\n @Input()\n set hiddenInput(value: boolean | string | null) {\n this._hiddenInput = this.convertToBoolean(value);\n }\n get hiddenInput(): boolean | null {\n return this._hiddenInput;\n }\n\n private _showMaskTyped: boolean | null = null;\n @Input()\n set showMaskTyped(value: boolean | string | null) {\n this._showMaskTyped = this.convertToBoolean(value);\n }\n get showMaskTyped(): boolean | null {\n return this._showMaskTyped;\n }\n\n @Input() placeHolderCharacter: MatchaMaskConfig['placeHolderCharacter'] | null = null;\n @Input() shownMaskExpression: MatchaMaskConfig['shownMaskExpression'] | null = null;\n\n private _clearIfNotMatch: boolean | null = null;\n @Input()\n set clearIfNotMatch(value: boolean | string | null) {\n this._clearIfNotMatch = this.convertToBoolean(value);\n }\n get clearIfNotMatch(): boolean | null {\n return this._clearIfNotMatch;\n }\n\n private _validation: boolean | null = null;\n @Input()\n set validation(value: boolean | string | null) {\n this._validation = this.convertToBoolean(value);\n }\n get validation(): boolean | null {\n return this._validation;\n }\n @Input() separatorLimit: MatchaMaskConfig['separatorLimit'] | null = '';\n\n private _allowNegativeNumbers: boolean | null = null;\n @Input()\n set allowNegativeNumbers(value: boolean | string | null) {\n this._allowNegativeNumbers = this.convertToBoolean(value);\n }\n get allowNegativeNumbers(): boolean | null {\n return this._allowNegativeNumbers;\n }\n\n private _leadZeroDateTime: boolean | null = null;\n @Input()\n set leadZeroDateTime(value: boolean | string | null) {\n this._leadZeroDateTime = this.convertToBoolean(value);\n }\n get leadZeroDateTime(): boolean | null {\n return this._leadZeroDateTime;\n }\n\n private _leadZero: boolean | null = null;\n @Input()\n set leadZero(value: boolean | string | null) {\n this._leadZero = this.convertToBoolean(value);\n }\n get leadZero(): boolean | null {\n return this._leadZero;\n }\n\n private _triggerOnMaskChange: boolean | null = null;\n @Input()\n set triggerOnMaskChange(value: boolean | string | null) {\n this._triggerOnMaskChange = this.convertToBoolean(value);\n }\n get triggerOnMaskChange(): boolean | null {\n return this._triggerOnMaskChange;\n }\n\n private _apm: boolean | null = null;\n @Input()\n set apm(value: boolean | string | null) {\n this._apm = this.convertToBoolean(value);\n }\n get apm(): boolean | null {\n return this._apm;\n }\n\n @Input() inputTransformFn: MatchaMaskConfig['inputTransformFn'] | null = null;\n @Input() outputTransformFn: MatchaMaskConfig['outputTransformFn'] | null = null;\n\n private _keepCharacterPositions: boolean | null = null;\n @Input()\n set keepCharacterPositions(value: boolean | string | null) {\n this._keepCharacterPositions = this.convertToBoolean(value);\n }\n get keepCharacterPositions(): boolean | null {\n return this._keepCharacterPositions;\n }\n\n private _instantPrefix: boolean | null = null;\n @Input()\n set instantPrefix(value: boolean | string | null) {\n this._instantPrefix = this.convertToBoolean(value);\n }\n get instantPrefix(): boolean | null {\n return this._instantPrefix;\n }\n\n private _currencyMode: boolean | null = null;\n @Input()\n set currencyMode(value: boolean | string | null) {\n this._currencyMode = this.convertToBoolean(value);\n }\n get currencyMode(): boolean | null {\n return this._currencyMode;\n }\n\n @Output() maskFilled = new EventEmitter<void>();\n\n private _maskValue = '';\n private _inputValue = '';\n private _position: number | null = null;\n private _code = '';\n private _maskExpressionArray: string[] = [];\n private _justPasted = false;\n private _isFocused = false;\n /**For IME composition event */\n private _isComposing = false;\n\n public _maskService = inject(MatchaMaskService, { self: true });\n\n private readonly document = inject(DOCUMENT);\n\n protected _config = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (_: any) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouch = () => {};\n\n public ngOnChanges(changes: SimpleChanges): void {\n const {\n mask,\n specialCharacters,\n patterns,\n prefix,\n suffix,\n thousandSeparator,\n decimalMarker,\n dropSpecialCharacters,\n hiddenInput,\n showMaskTyped,\n placeHolderCharacter,\n shownMaskExpression,\n clearIfNotMatch,\n validation,\n separatorLimit,\n allowNegativeNumbers,\n leadZeroDateTime,\n leadZero,\n triggerOnMaskChange,\n apm,\n inputTransformFn,\n outputTransformFn,\n keepCharacterPositions,\n instantPrefix,\n currencyMode,\n } = changes;\n\n if (mask) {\n this._mask = mask.currentValue ?? '';\n this._maskValue = this._mask ?? '';\n this._maskExpressionArray = this._maskValue.split('');\n }\n\n if (specialCharacters) {\n this._maskService.specialCharacters = specialCharacters.currentValue ?? [];\n }\n\n if (patterns) {\n this._maskService.patterns = patterns.currentValue ?? {};\n }\n\n if (prefix) {\n this._prefix = prefix.currentValue ?? '';\n this._maskService.prefix = this._prefix ?? '';\n }\n\n if (suffix) {\n this._suffix = suffix.currentValue ?? '';\n this._maskService.suffix = this._suffix ?? '';\n }\n\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator.currentValue ?? ' ';\n }\n\n if (decimalMarker) {\n this._maskService.decimalMarker = decimalMarker.currentValue ?? '.';\n }\n\n if (dropSpecialCharacters) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.dropSpecialCharacters;\n if (value !== null) {\n this._maskService.dropSpecialCharacters = value;\n }\n }\n\n if (hiddenInput) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.hiddenInput;\n if (value !== null) {\n this._maskService.hiddenInput = value;\n }\n }\n\n if (showMaskTyped) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.showMaskTyped;\n if (value !== null) {\n this._maskService.showMaskTyped = value;\n }\n }\n\n if (placeHolderCharacter) {\n this._maskService.placeHolderCharacter = placeHolderCharacter.currentValue;\n }\n\n if (shownMaskExpression) {\n this._maskService.shownMaskExpression = shownMaskExpression.currentValue;\n }\n\n if (clearIfNotMatch) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.clearIfNotMatch;\n if (value !== null) {\n this._maskService.clearIfNotMatch = value;\n }\n }\n\n if (validation) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.validation;\n if (value !== null) {\n this._maskService.validation = value;\n }\n }\n\n if (separatorLimit) {\n this._maskService.separatorLimit = separatorLimit.currentValue ?? '';\n }\n\n if (allowNegativeNumbers) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.allowNegativeNumbers;\n if (value !== null) {\n this._maskService.allowNegativeNumbers = value;\n }\n }\n\n if (leadZeroDateTime) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.leadZeroDateTime;\n if (value !== null) {\n this._maskService.leadZeroDateTime = value;\n }\n }\n\n if (leadZero) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.leadZero;\n if (value !== null) {\n this._maskService.leadZero = value;\n }\n }\n\n if (triggerOnMaskChange) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.triggerOnMaskChange;\n if (value !== null) {\n this._maskService.triggerOnMaskChange = value;\n }\n }\n\n if (apm) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.apm;\n if (value !== null) {\n this._maskService.apm = value;\n }\n }\n\n if (inputTransformFn) {\n this._maskService.inputTransformFn = inputTransformFn.currentValue;\n }\n\n if (outputTransformFn) {\n this._maskService.outputTransformFn = outputTransformFn.currentValue;\n }\n\n if (keepCharacterPositions) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.keepCharacterPositions;\n if (value !== null) {\n this._maskService.keepCharacterPositions = value;\n }\n }\n\n if (instantPrefix) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.instantPrefix;\n if (value !== null) {\n this._maskService.instantPrefix = value;\n }\n }\n\n if (currencyMode) {\n // O setter já faz a conversão automática de string para boolean\n const value = this.currencyMode;\n if (value !== null) {\n this._maskService.currencyMode = value;\n }\n }\n }\n\n @HostListener('paste', ['$event'])\n public onPaste(): void {\n this._justPasted = true;\n }\n\n @HostListener('focus', ['$event'])\n public onFocus(event: FocusEvent): void {\n this._isFocused = true;\n // Implementar lógica de foco se necessário\n }\n\n @HostListener('ngModelChange', ['$event'])\n public onModelChange(value: string | number): void {\n // Ignorar se estamos no meio de uma operação de escrita\n if (this._maskService.writingValue) {\n return;\n }\n\n // Se o valor é um número, significa que veio do formControlResult (já processado)\n // Não precisamos reprocessar para evitar loop infinito\n if (typeof value === 'number') {\n return;\n }\n\n // Converter para string\n const stringValue = value || '';\n this._inputValue = stringValue;\n\n // Para máscaras, não chamar applyMask aqui pois isso criaria um loop\n // O onInput já cuida de aplicar a máscara durante a digitação\n // O writeValue cuida de formatar valores vindos do backend\n if (!this._mask || this._mask.trim() === '') {\n this._maskService.onChange(stringValue);\n }\n }\n\n @HostListener('input', ['$event'])\n public onInput(event: KeyboardEvent): void {\n if (this._isComposing) {\n return;\n }\n const target = event.target as HTMLInputElement;\n const value = target.value;\n\n // Aplicar máscara se definida\n if (this._mask && this._mask.trim() !== '') {\n const maskedValue = this._maskService.applyMask(value, this._mask);\n if (maskedValue !== value) {\n target.value = maskedValue;\n }\n // NÃO chamar onChange aqui - o formControlResult no applyMask já cuida disso\n // com o valor limpo (sem prefixo, sem separadores, convertido para número)\n } else {\n this._maskService.onChange(value);\n }\n }\n\n @HostListener('compositionstart', ['$event'])\n public onCompositionStart(event: CompositionEvent): void {\n this._isComposing = true;\n }\n\n @HostListener('compositionend', ['$event'])\n public onCompositionEnd(event: CompositionEvent): void {\n this._isComposing = false;\n const target = event.target as HTMLInputElement;\n const value = target.value;\n this._maskService.onChange(value);\n }\n\n @HostListener('blur', ['$event'])\n public onBlur(event: FocusEvent): void {\n this._isFocused = false;\n this.onTouch();\n }\n\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n // Implementar lógica de clique se necessário\n }\n\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent): void {\n // Implementar lógica de teclado se necessário\n }\n\n public writeValue(value: string | number | null | undefined): void {\n // Se já estamos escrevendo, não processar novamente (prevenir loop infinito)\n if (this._maskService.writingValue) {\n return;\n }\n\n this._maskService.writingValue = true;\n\n // Converter automaticamente número para string (retrocompatível)\n // Isso previne o erro \"indexOf is not a function\" quando números são passados\n let inputValue: string;\n if (value === null || value === undefined) {\n inputValue = '';\n } else if (typeof value === 'number') {\n inputValue = value.toString();\n } else {\n inputValue = String(value);\n }\n\n // Se a máscara usa separator e o valor tem ponto decimal, converter para vírgula\n // Isso é útil quando valores numéricos vêm do backend (ex: 10.5 -> 10,50)\n if (this._mask && this._mask.trim().startsWith('separator.') && inputValue.includes('.')) {\n // Converter ponto para vírgula se o decimalMarker é vírgula\n const decimalMarker = this._maskService.decimalMarker;\n if (decimalMarker === ',' || (Array.isArray(decimalMarker) && decimalMarker.includes(','))) {\n inputValue = inputValue.replace('.', ',');\n }\n }\n\n this._inputValue = inputValue;\n\n // Aplicar máscara se definida\n // O applyMask formata o valor para exibição E chama formControlResult\n // que envia o valor limpo (número) para o FormControl via onChange\n if (this._mask && this._mask.trim() !== '') {\n this._maskService.applyMask(inputValue, this._mask);\n // NÃO chamar onChange aqui - formControlResult já fez isso com o valor limpo\n }\n // Sem máscara, não precisa fazer nada - o valor já está no FormControl\n\n this._maskService.writingValue = false;\n }\n\n public registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n this._maskService.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n // Implementar lógica de desabilitar se necessário\n }\n\n public validate(control: FormControl): ValidationErrors | null {\n // Implementar validação se necessário\n return null;\n }\n}\n","/**\n * Componente MatchaInputPhone\n * \n * Componente Angular para entrada de telefone internacional com seleção de país, máscara dinâmica e exibição de bandeira.\n * \n * Funcionalidades:\n * - Seleção de país com dropdown e bandeira.\n * - Máscara dinâmica de acordo com o país e DDD digitado.\n * - Suporte a diferentes formatos de telefone (fixo/celular) para o Brasil.\n * - Emissão de evento ao alterar o valor do telefone.\n * - Inicialização automática pelo valor informado ou pelo idioma do navegador.\n * \n * Inputs:\n * - fallbackMask: string - Máscara padrão caso não seja encontrada uma específica.\n * - label: string - Rótulo do campo (padrão: 'Telefone').\n * - value: string - Valor inicial do telefone (com ou sem DDI).\n * \n * Outputs:\n * - onChange: EventEmitter<string> - Emite o valor do telefone completo (com DDI) ao alterar.\n * \n * ViewChild:\n * - inputSelector: ElementRef - Referência ao container do input (usado para fechar o dropdown).\n * - phoneRef: ElementRef - Referência ao input do telefone.\n * \n * Métodos principais:\n * - ngOnInit: Inicializa o componente pelo valor ou idioma.\n * - ngOnChanges: Atualiza o valor ao receber novo input externo.\n * - initCountryPhone: Inicializa país e máscara pelo valor do telefone.\n * - selectMaskForDialCode: Seleciona a máscara conforme país e DDD.\n * - selectCountry: Troca o país selecionado e atualiza máscara.\n * - onInput: Atualiza máscara e emite evento ao digitar.\n * - toggleDropdown: Abre/fecha o dropdown de países.\n */\nimport { \n Component, \n Renderer2, \n OnChanges, \n OnDestroy, \n OnInit, \n SimpleChanges, \n ViewChild, \n ElementRef, \n Input, \n Output, \n EventEmitter, \n ChangeDetectorRef, \n} from '@angular/core';\nimport { getCountryISO2 } from './all-countries';\n\n@Component({\n selector: 'matcha-input-phone',\n templateUrl: './input-phone.component.html',\n standalone: false\n})\nexport class MatchaInputPhoneComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('inputSelector') inputSelector!: ElementRef;\n @ViewChild('phoneRef') phoneRef!: ElementRef;\n @Input('fallbackMask') fallbackMask: string = '00 0000 0000'; \n @Input('value') value?: string; \n @Output() onChange: EventEmitter<string> = new EventEmitter<string>();\n\n public typeMask: string = ''; \n public labelHover: string = 'su';\n public allCountries: any[] = getCountryISO2();\n public isOpen: boolean = false;\n public selectedCountry: any;\n public inputValueModel: string = '';\n private clickListener: (() => void) | null = null;\n public isInitialized: boolean = false;\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef) {\n \n }\n\n ngOnInit() {\n this.value ? this.initCountryPhone(this.value) : this.initCountrylanguageNavigator();\n this.cdr.detectChanges();\n this.isInitialized = true;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] && !changes['value'].firstChange) {\n \n this.value = changes['value'].currentValue;\n if (!this.value) {\n this.inputValueModel = this.value ?? '';\n return;\n }\n this.initCountryPhone(this.value);\n this.cdr.detectChanges();\n }\n }\n\n initCountryPhone(phone: string) {\n \n if (!phone.startsWith('+')) {\n \n this.setCountryAndInputValue('br', phone);\n return;\n }\n\n \n const phoneWithoutPlus = phone.replace('+', '');\n const countryDialCode = this.selectedCountry?.dialCode;\n \n if (phoneWithoutPlus.startsWith(countryDialCode)) {\n \n this.setCountryAndInputValue(this.selectedCountry.iso2, phoneWithoutPlus.replace(countryDialCode, ''));\n \n this.inputValueModel = phoneWithoutPlus.replace(countryDialCode, '');\n \n } else {\n \n this.matchCountryAndSetInputValue(phoneWithoutPlus);\n }\n }\n\n private setCountryAndInputValue(iso2: string, phone: string) {\n \n this.selectedCountry = this.allCountries.find((country) => country.iso2 === iso2);\n \n this.inputValueModel = phone.startsWith('0') ? phone.slice(1) : phone;\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000', this.inputValueModel);\n }\n\n private matchCountryAndSetInputValue(phoneWithoutPlus: string) {\n \n const matchingCountry = this.getMatchingCountry(phoneWithoutPlus);\n\n \n if (matchingCountry.length === 1) {\n \n this.setCountryAndInputValue(matchingCountry[0].iso2, phoneWithoutPlus.replace(matchingCountry[0].dialCode, ''));\n } else {\n \n this.matchAreaCodeAndSetInputValue(phoneWithoutPlus, matchingCountry);\n }\n }\n\n private getMatchingCountry(phoneWithoutPlus: string) {\n \n return this.allCountries.filter((country) => {\n const dialCode = country.dialCode;\n return phoneWithoutPlus.startsWith(dialCode);\n });\n }\n\n private matchAreaCodeAndSetInputValue(phoneWithoutPlus: string, matchingCountry: any[]) {\n \n const phoneWithoutDialCode = phoneWithoutPlus.replace(matchingCountry[0].dialCode, '');\n \n const filterAreaCode = phoneWithoutDialCode.substring(0, 3);\n\n \n const matchingAreaCode = matchingCountry.filter((country) => {\n if (country.areaCodes) {\n return country.areaCodes.includes(filterAreaCode);\n }\n });\n\n \n if (matchingAreaCode.length === 1) {\n \n this.setCountryAndInputValue(matchingAreaCode[0].iso2, phoneWithoutDialCode);\n } else {\n \n const defaultCountry = matchingCountry.find((country) => country.priority === 0);\n this.setCountryAndInputValue(defaultCountry.iso2, phoneWithoutDialCode);\n }\n }\n\n selectMaskForDialCode(inputDigits: string, targetValuePhone?: string) {\n const previousMask = this.typeMask;\n const maskArray = this.selectedCountry?.mask;\n const maskIndex = this.selectedCountry?.areaCodes\n ? this.selectedCountry.areaCodes.findIndex((code: string) => inputDigits === code)\n : -1;\n\n if (this.selectedCountry?.iso2 === 'br' && (targetValuePhone && targetValuePhone.length > 2)) {\n const eventInput = targetValuePhone.substring(2)\n if (eventInput && eventInput[0] === '9') {\n this.typeMask = \"00 0 0000 0000\";\n this.cdr.detectChanges();\n return;\n }\n }\n\n if (Array.isArray(maskArray)) {\n if (maskIndex !== -1 && maskArray[maskIndex]) {\n this.typeMask = maskArray[maskIndex];\n } else if (maskArray[0]) {\n this.typeMask = maskArray[0];\n } else {\n this.typeMask = this.fallbackMask;\n }\n } else {\n this.typeMask = this.fallbackMask;\n }\n\n \n if (previousMask !== this.typeMask) this.inputValueModel = '';\n this.cdr.detectChanges();\n}\n\n initCountrylanguageNavigator() {\n \n let lang = navigator.language;\n if (lang.includes('-')) {\n const langParts = lang.split('-');\n lang = langParts[1];\n }\n\n \n this.selectedCountry = this.allCountries.find((country) => country.iso2 === lang.toLocaleLowerCase());\n\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000');\n }\n\n public selectCountry(country: any): void {\n this.selectedCountry = country;\n this.selectMaskForDialCode(this.selectedCountry.areaCodes ? this.selectedCountry.areaCodes[0] : '000');\n this.isOpen = false;\n \n this.onChange.emit('+' + this.selectedCountry.dialCode + this.inputValueModel);\n\n this.removeClickListener();\n this.cdr.detectChanges();\n }\n\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n \n this.clickListener = this.renderer.listen('window', 'click', (event: Event) => {\n if (this.isOpen && !this.inputSelector.nativeElement.contains(event.target)) {\n this.isOpen = false;\n this.removeClickListener();\n }\n });\n this.cdr.detectChanges();\n }\n\n private removeClickListener() {\n \n if (this.clickListener) {\n this.clickListener();\n this.clickListener = null;\n }\n }\n\n onInput(event: any): void {\n this.phoneRef.nativeElement.value = event.target.value.replace(/[^\\d\\s]/g, '');\n let targetValuePhone = event.target.value.replace(/\\D/g, '');\n \n this.onChange.emit('+' + this.selectedCountry.dialCode + this.inputValueModel);\n\n const inputDigits = targetValuePhone.substring(0, 3);\n if (inputDigits) {\n this.selectMaskForDialCode(inputDigits, targetValuePhone);\n }\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n \n this.removeClickListener();\n }\n\n}\n","\n<div class=\"flex-row position-relative px-16 gap-8\" #inputSelector>\n <div class=\"min-h-24 radius-8 cursor-pointer d-flex gap-8 flex-align-center fs-16\" (click)=\"toggleDropdown()\">\n <div class=\"d-flex-row flex-align-center\">\n <img alt=\"\" [src]=\"'https://flagcdn.com/16x12/'+ selectedCountry?.iso2?.toLowerCase() + '.png'\"\n height=\"16\">\n </div>\n <span class=\"w-16 fs-16\"\n [ngClass]=\"isOpen ? 'i-matcha-action_arrow_up': 'i-matcha-action_arrow_down'\"></span>\n\n </div>\n <input *ngIf=\"isInitialized\" #phoneRef type=\"text\" placeholder=\"{{ typeMask }}\"\n [(ngModel)]=\"inputValueModel\"\n pattern=\"[0-9]*\" (keyup)=\"onInput($event)\" [matchaMask]=\"typeMask\">\n\n <ng-container *ngIf=\"isOpen\">\n <div class=\"position-absolute z-index-10\">\n <div class=\"grid-1 gap-16 radius-8 z-index-10 p-8 w-300 position-absolute background-surface elevation-z-1\"\n style=\"top: calc(100% + 10px); overflow: hidden; height: 300px; overflow-y: auto;\">\n\n <label *ngFor=\"let country of allCountries; let i = index\"\n class=\"fs-16 lh-18 cursor-pointer d-flex-align-center p-8 ts-300-l\"\n [ngClass]=\"labelHover === i+'bg' ? 'background-bg' : 'background-surface'\"\n (mouseover)=\"labelHover = i+'bg'\" (mouseout)=\"labelHover = i+'su'\"\n (click)=\"selectCountry(country)\">\n <img alt=\"\" class=\"mr-8\"\n [src]=\"'https://flagcdn.com/16x12/'+ country?.iso2?.toLowerCase() + '.png'\" height=\"16\">\n {{country.name}}\n </label>\n </div>\n </div>\n </ng-container>\n</div>\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'matcha-step',\n template: `<ng-template><ng-content></ng-content></ng-template>`,\n standalone: false\n})\nexport class StepComponent {\n @Input('title') step: any;\n @ViewChild(TemplateRef, { static: true }) template!: TemplateRef<any>;\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class MatchaStepperStateService {\n private steps: any[] = [];\n private _steps$ = new BehaviorSubject<any[]>([]);\n steps$ = this._steps$.asObservable();\n\n private _activeStep$ = new BehaviorSubject<number>(0);\n activeStep$ = this._activeStep$.asObservable();\n\n private pendingActiveStep: number | null = null;\n\n setSteps(steps: any[]) {\n this.steps = steps;\n this._steps$.next(steps);\n\n // Se havia um índice pendente, aplica agora\n if (this.pendingActiveStep !== null) {\n this.setActiveStep(this.pendingActiveStep);\n this.pendingActiveStep = null;\n }\n }\n\n setActiveStep(index: number) {\n if (this.steps.length === 0) {\n // Steps ainda não definidos, guarda para depois\n this.pendingActiveStep = index;\n return;\n }\n if (index >= 0 && index < this.steps.length) {\n this._activeStep$.next(index);\n }\n }\n\n nextStep() {\n const current = this._activeStep$.value;\n if (current < this.steps.length - 1) {\n this._activeStep$.next(current + 1);\n }\n }\n\n prevStep() {\n const current = this._activeStep$.value;\n if (current > 0) {\n this._activeStep$.next(current - 1);\n }\n }\n}","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper', \n template: `<ng-content></ng-content>`, \n providers: [MatchaStepperStateService],\n standalone: false\n})\nexport class MatchaStepperComponent {\n @Input() active: number = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['active'] && typeof changes['active'].currentValue === 'number') {\n this.stepperState.setActiveStep(this.active);\n }\n }\n}","import { Component, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\nimport { StepComponent } from '../step/step.component';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper-content',\n template: `\n <ng-container *ngIf=\"stepsArray.length\">\n <ng-container *ngTemplateOutlet=\"stepsArray[activeStep]?.template || null\"></ng-container>\n </ng-container>\n `,\n standalone: false\n})\nexport class MatchaStepperContentComponent implements AfterContentInit {\n @ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\n stepsArray: StepComponent[] = [];\n activeStep = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngAfterContentInit() {\n this.stepsArray = this.steps.toArray().sort((a, b) => {\n const stepA = a.step !== undefined && a.step !== null && a.step !== '' ? Number(a.step) : a.step;\n const stepB = b.step !== undefined && b.step !== null && b.step !== '' ? Number(b.step) : b.step;\n return stepA - stepB;\n });\n this.stepperState.setSteps(this.stepsArray.map(s => s.step));\n this.stepperState.activeStep$.subscribe(step => this.activeStep = step);\n }\n\n nextStep() {\n this.stepperState.nextStep();\n }\n\n prevStep() {\n this.stepperState.prevStep();\n }\n}","import { Component, Input, OnInit } from '@angular/core';\nimport { MatchaStepperStateService } from '../stepper.service';\n\n@Component({\n selector: 'matcha-stepper-controller', \n templateUrl: './stepper-controller.component.html',\n providers: [],\n standalone: false\n})\nexport class MatchaStepperControllerComponent implements OnInit {\n @Input() disableNext!: boolean;\n steps: string[] = [];\n activeStep = 0;\n\n constructor(private stepperState: MatchaStepperStateService) {}\n\n ngOnInit() {\n this.stepperState.steps$.subscribe((steps: any[]) => this.steps = steps);\n this.stepperState.activeStep$.subscribe(step => this.activeStep = step);\n }\n\n goToStep(index: number) {\n if(this.disableNext && this.activeStep < index) return;\n this.stepperState.setActiveStep(index);\n }\n}\n","<div class=\"flex-column flex-align-end gap-16\">\n <span class=\"fw-900 fs-12 lh-12\">{{steps[activeStep]}}</span>\n <div class=\"d-flex align-center gap-8\">\n <ng-container *ngFor=\"let step of steps; let i = index\">\n <div (click)=\"goToStep(i)\" class=\"cursor-pointer w-32 h-8 radius-8\" [class.background-accent]=\"i <= activeStep\" [class.background-disabled]=\"i > activeStep\"></div> \n </ng-container>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatchaDropListService {\n private dropZones = new Map<HTMLElement, any>();\n\n registerDropZone(element: HTMLElement, component: any) {\n this.dropZones.set(element, component);\n }\n\n unregisterDropZone(element: HTMLElement) {\n this.dropZones.delete(element);\n }\n\n findDropZone(element: Element | null): any {\n while (element) {\n if (this.dropZones.has(element as HTMLElement)) {\n return this.dropZones.get(element as HTMLElement);\n }\n element = element.parentElement;\n }\n return null;\n }\n\n getAllDropZones(): any[] {\n return Array.from(this.dropZones.values());\n }\n}\n","import { Directive, ElementRef, Input, OnInit, OnDestroy, Renderer2, HostBinding, NgZone } from '@angular/core';\nimport { MatchaDropListService } from '../services/drop-list.service';\n\n@Directive({\n selector: '[matchaDrag]',\n standalone:false\n})\nexport class MatchaDragDirective implements OnInit, OnDestroy {\n @Input() matchaDragData: any;\n @Input() matchaDragDisabled: boolean = false;\n\n @HostBinding('class.matcha-drag-item') get dragItemClass() {\n return true;\n }\n\n @HostBinding('class.matcha-drag-disabled') get dragDisabledClass() {\n return this.matchaDragDisabled;\n }\n\n private listeners: (() => void)[] = [];\n private isDragging = false;\n private dragHandle?: HTMLElement;\n private dropList?: any;\n\n // Touch/Mobile support\n private touchStartPosition = { x: 0, y: 0 };\n private touchCurrentPosition = { x: 0, y: 0 };\n private touchDragThreshold = 10; // pixels\n private isTouchDragging = false;\n private dragPreview?: HTMLElement;\n private touchIdentifier?: number;\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private dropListService: MatchaDropListService\n ) {}\n\n ngOnInit() {\n this.setupDragEvents();\n }\n\n ngOnDestroy() {\n this.cleanupListeners();\n this.cleanupTouchDrag();\n }\n\n setDropList(dropList: any) {\n this.dropList = dropList;\n }\n\n setDragHandle(handle: HTMLElement) {\n this.dragHandle = handle;\n this.setupDragEvents(); // Re-setup when handle is set\n }\n\n private setupDragEvents() {\n if (this.matchaDragDisabled) return;\n\n this.cleanupListeners();\n\n const element = this.elementRef.nativeElement;\n const dragSource = this.dragHandle || element;\n\n // Configurar draggable para desktop\n if (this.dragHandle) {\n this.renderer.setAttribute(element, 'draggable', 'false');\n this.renderer.setAttribute(this.dragHandle, 'draggable', 'true');\n } else {\n this.renderer.setAttribute(element, 'draggable', 'true');\n }\n\n // Configurar touch-action para mobile\n this.renderer.setStyle(dragSource, 'touch-action', 'none');\n this.renderer.setStyle(dragSource, 'user-select', 'none');\n this.renderer.setStyle(dragSource, '-webkit-user-select', 'none');\n\n this.ngZone.runOutsideAngular(() => {\n // Desktop drag events\n this.listeners.push(\n this.renderer.listen(dragSource, 'dragstart', (event: DragEvent) => {\n if (this.matchaDragDisabled) return;\n this.onDragStart(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'dragend', () => {\n this.onDragEnd();\n })\n );\n\n this.listeners.push(\n this.renderer.listen(element, 'dragover', (event: DragEvent) => {\n event.preventDefault();\n })\n );\n\n // Mobile/Touch events\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchstart', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchStart(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchmove', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchMove(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchend', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchEnd(event);\n })\n );\n\n this.listeners.push(\n this.renderer.listen(dragSource, 'touchcancel', (event: TouchEvent) => {\n if (this.matchaDragDisabled) return;\n this.onTouchCancel(event);\n })\n );\n });\n }\n\n // Desktop drag methods\n private onDragStart(event: DragEvent) {\n this.isDragging = true;\n this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n const dataTransfer = event.dataTransfer;\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n dataTransfer.setData('text/plain', '');\n this.createDragImage(dataTransfer, this.elementRef.nativeElement, event);\n }\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragStart(this, event);\n });\n }\n }\n\n private onDragEnd() {\n this.isDragging = false;\n this.renderer.removeClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragEnd();\n });\n }\n }\n\n // Touch/Mobile drag methods\n private onTouchStart(event: TouchEvent) {\n const touch = event.touches[0];\n if (!touch) return;\n\n this.touchIdentifier = touch.identifier;\n this.touchStartPosition = { x: touch.clientX, y: touch.clientY };\n this.touchCurrentPosition = { x: touch.clientX, y: touch.clientY };\n this.isTouchDragging = false;\n\n // Prevenir scroll enquanto toca\n event.preventDefault();\n }\n\n private onTouchMove(event: TouchEvent) {\n if (this.touchIdentifier === undefined) return;\n\n const touch = this.findTouch(event.touches, this.touchIdentifier);\n if (!touch) return;\n\n this.touchCurrentPosition = { x: touch.clientX, y: touch.clientY };\n\n const deltaX = Math.abs(touch.clientX - this.touchStartPosition.x);\n const deltaY = Math.abs(touch.clientY - this.touchStartPosition.y);\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n\n if (!this.isTouchDragging && distance > this.touchDragThreshold) {\n // Iniciar drag\n this.isTouchDragging = true;\n this.startTouchDrag(touch);\n }\n\n if (this.isTouchDragging) {\n this.updateTouchDrag(touch);\n event.preventDefault();\n }\n }\n\n private onTouchEnd(event: TouchEvent) {\n if (this.touchIdentifier === undefined) return;\n\n const touch = this.findTouch(event.changedTouches, this.touchIdentifier);\n if (!touch) return;\n\n if (this.isTouchDragging) {\n this.endTouchDrag(touch);\n }\n\n this.resetTouchState();\n }\n\n private onTouchCancel(event: TouchEvent) {\n if (this.isTouchDragging) {\n this.cancelTouchDrag();\n }\n this.resetTouchState();\n }\n\n private startTouchDrag(touch: Touch) {\n this.isDragging = true;\n this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n // Criar preview visual do drag\n this.createTouchDragPreview();\n\n if (this.dropList) {\n this.ngZone.run(() => {\n // Simular DragEvent para compatibilidade\n const fakeEvent = this.createFakeDragEvent('dragstart', touch);\n this.dropList.onDragStart(this, fakeEvent);\n });\n }\n }\n\n private updateTouchDrag(touch: Touch) {\n if (this.dragPreview) {\n // Atualizar posição do preview\n this.renderer.setStyle(this.dragPreview, 'left', `${touch.clientX - 50}px`);\n this.renderer.setStyle(this.dragPreview, 'top', `${touch.clientY - 25}px`);\n }\n\n // Verificar drop zones\n this.checkDropZones(touch);\n }\n\n private endTouchDrag(touch: Touch) {\n // Encontrar elemento sob o touch\n const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);\n const dropZone = this.findDropZone(elementBelow);\n\n if (dropZone && this.dropList) {\n this.ngZone.run(() => {\n // Simular drop event\n const fakeEvent = this.createFakeDragEvent('drop', touch);\n dropZone.handleTouchDrop(fakeEvent, this);\n });\n }\n\n this.cleanupTouchDrag();\n }\n\n private cancelTouchDrag() {\n this.cleanupTouchDrag();\n }\n\n private createTouchDragPreview() {\n const element = this.elementRef.nativeElement;\n const rect = element.getBoundingClientRect();\n\n // Criar clone do elemento para preview\n this.dragPreview = element.cloneNode(true) as HTMLElement;\n\n // Estilizar preview\n this.renderer.setStyle(this.dragPreview, 'position', 'fixed');\n this.renderer.setStyle(this.dragPreview, 'z-index', '9999');\n this.renderer.setStyle(this.dragPreview, 'pointer-events', 'none');\n this.renderer.setStyle(this.dragPreview, 'width', `${rect.width}px`);\n this.renderer.setStyle(this.dragPreview, 'height', `${rect.height}px`);\n this.renderer.setStyle(this.dragPreview, 'opacity', '0.8');\n this.renderer.setStyle(this.dragPreview, 'transform', 'rotate(5deg)');\n this.renderer.setStyle(this.dragPreview, 'box-shadow', '0 8px 25px rgba(0,0,0,0.3)');\n\n // Adicionar ao DOM\n document.body.appendChild(this.dragPreview);\n }\n\n private checkDropZones(touch: Touch) {\n const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY);\n const dropZone = this.findDropZone(elementBelow);\n\n // Notificar drop zones sobre o drag over\n if (dropZone && this.dropList) {\n this.ngZone.run(() => {\n const fakeEvent = this.createFakeDragEvent('dragover', touch);\n dropZone.handleTouchDragOver(fakeEvent);\n });\n }\n }\n\n private findDropZone(element: Element | null): any {\n return this.dropListService.findDropZone(element);\n }\n\n private findAngularComponent(element: Element): any {\n // Método mantido para compatibilidade, mas agora usa o serviço\n return this.dropListService.findDropZone(element);\n }\n\n private createFakeDragEvent(type: string, touch: Touch): any {\n return {\n type,\n clientX: touch.clientX,\n clientY: touch.clientY,\n preventDefault: () => {},\n dataTransfer: {\n effectAllowed: 'move',\n dropEffect: 'move',\n setData: () => {},\n getData: () => '',\n setDragImage: () => {}\n }\n };\n }\n\n private findTouch(touches: TouchList, identifier: number): Touch | null {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === identifier) {\n return touches[i];\n }\n }\n return null;\n }\n\n private resetTouchState() {\n this.touchIdentifier = undefined;\n this.isTouchDragging = false;\n this.isDragging = false;\n this.renderer.removeClass(this.elementRef.nativeElement, 'matcha-drag-dragging');\n\n if (this.dropList) {\n this.ngZone.run(() => {\n this.dropList.onDragEnd();\n });\n }\n }\n\n private cleanupTouchDrag() {\n if (this.dragPreview) {\n document.body.removeChild(this.dragPreview);\n this.dragPreview = undefined;\n }\n }\n\n private createDragImage(dataTransfer: DataTransfer, element: HTMLElement, event: DragEvent) {\n try {\n const rect = element.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n const offsetY = event.clientY - rect.top;\n dataTransfer.setDragImage(element, offsetX, offsetY);\n } catch (error) {\n console.warn('Erro ao configurar drag image:', error);\n }\n }\n\n private cleanupListeners() {\n this.listeners.forEach(cleanup => cleanup());\n this.listeners = [];\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n Renderer2,\n OnInit,\n OnDestroy,\n ContentChildren,\n QueryList,\n AfterContentInit,\n HostBinding\n} from '@angular/core';\nimport { MatchaDragDirective } from '../directives/drag.directive';\nimport { MatchaDropListService } from '../services/drop-list.service';\n\nexport interface MatchaDropListDroppedEvent<T = any> {\n previousIndex: number;\n currentIndex: number;\n item: T;\n container: MatchaDropListComponent;\n previousContainer?: MatchaDropListComponent;\n data: T[];\n}\n\nexport interface MatchaDropListConnectedToEvent<T = any> {\n sourceData: T[];\n targetData: T[];\n item: T;\n previousIndex: number;\n currentIndex: number;\n}\n\n@Component({\n selector: 'matcha-drop-list',\n templateUrl: './drop-list.component.html',\n standalone:false\n})\nexport class MatchaDropListComponent<T = any> implements OnInit, OnDestroy, AfterContentInit {\n @Input() matchaDropListData: T[] = [];\n @Input() matchaDropListDisabled: boolean = false;\n @Input() matchaDropListConnectedTo: MatchaDropListComponent[] = [];\n @Input() matchaDropListSortingDisabled: boolean = false;\n @Input() matchaDropListAcceptPredicate?: (item: any, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent) => boolean;\n\n @Output() matchaDropListDropped = new EventEmitter<MatchaDropListDroppedEvent<T>>();\n\n @ContentChildren(MatchaDragDirective) dragItems!: QueryList<MatchaDragDirective>;\n\n @HostBinding('class.matcha-drop-list') get dropListClass() {\n return true;\n }\n\n // Estado do drag\n private currentDragItem?: MatchaDragDirective;\n private dragStartIndex: number = -1;\n private sourceContainer?: MatchaDropListComponent;\n\n // Estado visual\n public isReceivingDrag = false;\n public showDropIndicator = false;\n public dropIndicatorPosition = 0;\n public canAcceptDrop = true; // Controla se pode aceitar o drop atual\n private calculatedDropIndex = 0; // Armazenar o índice calculado durante o dragover\n\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private dropListService: MatchaDropListService\n ) {}\n\n ngOnInit() {\n this.setupDropZone();\n // Registrar este drop zone no serviço\n this.dropListService.registerDropZone(this.elementRef.nativeElement, this);\n }\n\n ngAfterContentInit() {\n // Configurar referência do drop list para cada item drag\n this.dragItems.forEach(dragItem => {\n dragItem.setDropList(this);\n });\n\n // Monitorar mudanças nos itens drag\n this.dragItems.changes.subscribe(() => {\n this.dragItems.forEach(dragItem => {\n dragItem.setDropList(this);\n });\n });\n }\n\n ngOnDestroy() {\n // Desregistrar do serviço\n this.dropListService.unregisterDropZone(this.elementRef.nativeElement);\n // Cleanup automático via renderer\n }\n\n private setupDropZone() {\n const element = this.elementRef.nativeElement;\n\n this.renderer.listen(element, 'dragover', (event: DragEvent) => {\n event.preventDefault();\n\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n\n // Verificar se pode aceitar o drop\n this.canAcceptDrop = this.canAcceptCurrentDrop();\n\n if (this.canAcceptDrop) {\n event.dataTransfer!.dropEffect = 'move';\n // Mostrar linha indicadora\n this.updateDropIndicator(event);\n } else {\n event.dataTransfer!.dropEffect = 'none';\n this.showDropIndicator = false;\n }\n });\n\n this.renderer.listen(element, 'dragenter', (event: DragEvent) => {\n event.preventDefault();\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n });\n\n this.renderer.listen(element, 'dragleave', (event: DragEvent) => {\n const rect = element.getBoundingClientRect();\n const x = event.clientX;\n const y = event.clientY;\n\n // Verificar se realmente saiu do container\n if (x < rect.left || x > rect.right || y < rect.top || y > rect.bottom) {\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n }\n });\n\n this.renderer.listen(element, 'drop', (event: DragEvent) => {\n event.preventDefault();\n this.handleDrop(event);\n });\n }\n\n private updateDropIndicator(event: DragEvent) {\n if (!this.currentDragItem) return;\n\n const containerRect = this.elementRef.nativeElement.getBoundingClientRect();\n const y = event.clientY - containerRect.top;\n\n const dragItemElements = this.dragItems.toArray().map(item => item.elementRef.nativeElement);\n\n let indicatorY = 0;\n let dropIndex = 0;\n let found = false;\n\n for (let i = 0; i < dragItemElements.length; i++) {\n const itemRect = dragItemElements[i].getBoundingClientRect();\n const itemY = itemRect.top - containerRect.top;\n const itemHeight = itemRect.height;\n const itemCenter = itemY + itemHeight / 2;\n\n if (y < itemCenter) {\n indicatorY = itemY;\n dropIndex = i;\n found = true;\n break;\n }\n }\n\n if (!found && dragItemElements.length > 0) {\n // Posicionar no final da lista\n const lastItem = dragItemElements[dragItemElements.length - 1];\n const lastRect = lastItem.getBoundingClientRect();\n indicatorY = lastRect.bottom - containerRect.top;\n dropIndex = dragItemElements.length;\n }\n\n // Armazenar tanto a posição visual quanto o índice calculado\n this.dropIndicatorPosition = indicatorY;\n this.calculatedDropIndex = dropIndex;\n this.showDropIndicator = true;\n }\n\n // Métodos chamados pelo directive\n onDragStart(dragItem: MatchaDragDirective, event: DragEvent) {\n if (this.matchaDropListDisabled) return;\n\n this.currentDragItem = dragItem;\n this.sourceContainer = this;\n this.dragStartIndex = this.getDragItemIndex(dragItem);\n\n // Notificar containers conectados\n this.matchaDropListConnectedTo.forEach(container => {\n container.notifyDragStart(dragItem, this);\n });\n }\n\n onDragEnd() {\n this.currentDragItem = undefined;\n this.sourceContainer = undefined;\n this.dragStartIndex = -1;\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n this.calculatedDropIndex = 0;\n\n // Notificar containers conectados\n this.matchaDropListConnectedTo.forEach(container => {\n container.notifyDragEnd();\n });\n }\n\n private handleDrop(event: DragEvent) {\n if (!this.currentDragItem || this.matchaDropListDisabled) return;\n\n // Verificar se pode aceitar o drop\n if (!this.canAcceptCurrentDrop()) {\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n return;\n }\n\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n\n // Usar o índice já calculado durante o dragover ao invés de recalcular\n const dropIndex = this.calculatedDropIndex;\n\n if (this.sourceContainer === this) {\n // Drop na mesma lista - reordenar\n if (!this.matchaDropListSortingDisabled && dropIndex !== this.dragStartIndex) {\n this.reorderItems(this.dragStartIndex, dropIndex);\n }\n } else if (this.sourceContainer) {\n // Drop entre listas - transferir\n this.transferItem(this.currentDragItem, this.sourceContainer, this, dropIndex);\n }\n }\n\n private reorderItems(fromIndex: number, toIndex: number) {\n const newData = [...this.matchaDropListData];\n const item = newData[fromIndex];\n\n // Remover item da posição original\n newData.splice(fromIndex, 1);\n\n // Calcular nova posição\n const insertIndex = toIndex > fromIndex ? toIndex - 1 : toIndex;\n\n // Inserir na nova posição\n newData.splice(insertIndex, 0, item);\n\n this.matchaDropListData = newData;\n\n // Emitir evento\n this.matchaDropListDropped.emit({\n previousIndex: fromIndex,\n currentIndex: insertIndex,\n item,\n container: this,\n data: this.matchaDropListData\n });\n }\n\n private transferItem(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent, targetContainer: MatchaDropListComponent, targetIndex: number) {\n const item = dragItem.matchaDragData;\n const sourceIndex = sourceContainer.dragStartIndex;\n\n // Remover do container origem\n const sourceData = [...sourceContainer.matchaDropListData];\n sourceData.splice(sourceIndex, 1);\n sourceContainer.matchaDropListData = sourceData;\n\n // Adicionar ao container destino\n const targetData = [...targetContainer.matchaDropListData];\n targetData.splice(targetIndex, 0, item);\n targetContainer.matchaDropListData = targetData;\n\n // Emitir eventos\n targetContainer.matchaDropListDropped.emit({\n previousIndex: sourceIndex,\n currentIndex: targetIndex,\n item,\n container: targetContainer,\n previousContainer: sourceContainer,\n data: targetContainer.matchaDropListData\n });\n\n sourceContainer.matchaDropListDropped.emit({\n previousIndex: sourceIndex,\n currentIndex: -1,\n item,\n container: sourceContainer,\n data: sourceContainer.matchaDropListData\n });\n }\n\n private getDragItemIndex(dragItem: MatchaDragDirective): number {\n return this.dragItems.toArray().indexOf(dragItem);\n }\n\n // Métodos para comunicação entre containers conectados\n notifyDragStart(dragItem: MatchaDragDirective, sourceContainer: MatchaDropListComponent) {\n this.currentDragItem = dragItem;\n this.sourceContainer = sourceContainer;\n this.dragStartIndex = sourceContainer.getDragItemIndex(dragItem);\n }\n\n notifyDragEnd() {\n this.currentDragItem = undefined;\n this.sourceContainer = undefined;\n this.dragStartIndex = -1;\n this.isReceivingDrag = false;\n this.showDropIndicator = false;\n this.calculatedDropIndex = 0;\n }\n\n private canAcceptCurrentDrop(): boolean {\n if (!this.currentDragItem || !this.sourceContainer) {\n return false;\n }\n\n if (this.matchaDropListAcceptPredicate) {\n const sourceContainer = this.sourceContainer;\n const targetContainer = this;\n const item = this.currentDragItem.matchaDragData;\n return this.matchaDropListAcceptPredicate(item, sourceContainer, targetContainer);\n }\n return true;\n }\n\n // Métodos para suporte touch/mobile\n handleTouchDragOver(event: any) {\n // Só mostrar efeitos visuais se o item vem de outro container\n if (this.currentDragItem && this.sourceContainer !== this) {\n this.isReceivingDrag = true;\n }\n\n // Verificar se pode aceitar o drop\n this.canAcceptDrop = this.canAcceptCurrentDrop();\n\n if (this.canAcceptDrop) {\n // Mostrar linha indicadora\n this.updateDropIndicator(event);\n } else {\n this.showDropIndicator = false;\n }\n }\n\n handleTouchDrop(event: any, dragItem: any) {\n if (!this.currentDragItem || this.matchaDropListDisabled) return;\n\n // Verificar se pode aceitar o drop\n if (!this.canAcceptCurrentDrop()) {\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n return;\n }\n\n this.showDropIndicator = false;\n this.isReceivingDrag = false;\n\n // Usar o índice já calculado durante o dragover\n const dropIndex = this.calculatedDropIndex;\n\n if (this.sourceContainer === this) {\n // Drop na mesma lista - reordenar\n if (!this.matchaDropListSortingDisabled && dropIndex !== this.dragStartIndex) {\n this.reorderItems(this.dragStartIndex, dropIndex);\n }\n } else if (this.sourceContainer) {\n // Drop entre listas - transferir\n this.transferItem(this.currentDragItem, this.sourceContainer, this, dropIndex);\n }\n }\n}\n","<div class=\"matcha-drop-list-container\"\n [class.matcha-drop-list-receiving]=\"isReceivingDrag\"\n [class.matcha-drop-list-disabled]=\"matchaDropListDisabled\"\n [class.matcha-drop-list-can-accept]=\"isReceivingDrag && canAcceptDrop\"\n [class.matcha-drop-list-cannot-accept]=\"isReceivingDrag && !canAcceptDrop\">\n <ng-content></ng-content>\n\n <!-- Linha indicadora de drop -->\n <div class=\"matcha-drop-indicator\"\n [class.active]=\"showDropIndicator && canAcceptDrop\"\n [style.top.px]=\"dropIndicatorPosition\">\n </div>\n\n <!-- Placeholder para lista vazia -->\n <div *ngIf=\"isReceivingDrag && dragItems.length === 0\"\n class=\"matcha-drop-list-placeholder\">\n <div class=\"matcha-drop-list-empty-placeholder\"\n [class.can-accept]=\"canAcceptDrop\"\n [class.cannot-accept]=\"!canAcceptDrop\">\n <span [class.i-matcha-action_sign_success]=\"canAcceptDrop\"\n [class.i-matcha-action_sign_error]=\"!canAcceptDrop\"\n [class.color-green]=\"canAcceptDrop\"\n [class.color-red]=\"!canAcceptDrop\"\n class=\"i-size-lg\"></span>\n </div>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'matcha-page-layout',\n templateUrl: './page-layout.component.html',\n styleUrls: ['./page-layout.component.scss'],\n standalone: false,\n})\nexport class MatchaPageLayoutComponent {\n\n}\n","<div class=\"page-layout carded fullwidth\">\n <!-- TOP BACKGROUND -->\n <div class=\"top-bg\"></div>\n <!--/ TOP BACKGROUND -->\n\n <!-- CENTER -->\n <div class=\"center pt-24 gap-16\">\n <!-- CONTENT CARD -->\n <div class=\"content-card flatten flex-column h-100-p\">\n <!-- CONTENT -->\n <div class=\"content flex-column h-100-p\">\n <div class=\"content-card card-flat flex-column h-100-p background-bg border-radius-0 pb-16\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n standalone: false\n})\nexport class MatchaAvatarComponent {\n @Input() src: string = '';\n @Input() name: string = '';\n \n @Input() size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n @Input() color: string = 'blue'; \n\n private _disabled = false;\n @Input()\n set disabled(value: boolean | string) {\n\n this._disabled = value != null && `${value}` !== 'false';\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n public get initials(): string {\n if (!this.name.trim()) {\n return '';\n }\n\n const words = this.name.trim().split(/\\s+/);\n \n if (this.size === 'tiny') {\n return words[0].charAt(0).toUpperCase();\n }\n\n if (words.length >= 2) {\n\n return (words[0].charAt(0) + words[1].charAt(0)).toUpperCase();\n } else if (words.length === 1 && words[0].length >= 2) {\n\n return words[0].substring(0, 2).toUpperCase();\n } else {\n\n return words[0].charAt(0).toUpperCase();\n }\n }\n\n public get hasImage(): boolean {\n return !!(this.src && this.src.trim() !== '');\n }\n\n public get hasName(): boolean {\n return !!(this.name && this.name.trim() !== '');\n }\n\n public get showDefaultIcon(): boolean {\n return !this.hasImage && !this.hasName;\n }\n\n public get sizeClass(): string {\n return `matcha-avatar-${this.size}`;\n }\n\n public get avatarClasses(): string {\n let classes = `matcha-avatar radius-full ${this.sizeClass}`;\n \n if (!this.showDefaultIcon) {\n classes += ' ' + this.color;\n }\n \n if (this.disabled) {\n classes += ' color-disabled';\n }\n \n return classes;\n }\n}\n","<span [class]=\"avatarClasses\">\n <!-- Imagem do usuário -->\n <img \n *ngIf=\"hasImage\" \n [src]=\"src\" \n [alt]=\"name || 'Avatar'\"\n class=\"matcha-avatar-image\">\n \n <!-- Iniciais do nome -->\n <span \n *ngIf=\"!hasImage && hasName\" \n class=\"matcha-avatar-initials\">\n {{ initials }}\n </span>\n \n\n <svg \n *ngIf=\"showDefaultIcon\"\n class=\"matcha-avatar-icon\"\n viewBox=\"0 0 56 56\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\">\n <path \n fill-rule=\"evenodd\" \n clip-rule=\"evenodd\" \n d=\"M28 0C12.544 0 0 12.544 0 28C0 43.456 12.544 56 28 56C43.456 56 56 43.456 56 28C56 12.544 43.456 0 28 0ZM28.0022 8.4C32.6502 8.4 36.4022 12.152 36.4022 16.8C36.4022 21.448 32.6502 25.2 28.0022 25.2C23.3542 25.2 19.6022 21.448 19.6022 16.8C19.6022 12.152 23.3542 8.4 28.0022 8.4ZM28.0022 48.1601C21.0022 48.1601 14.8142 44.5761 11.2022 39.1441C11.2862 33.5721 22.4022 30.5201 28.0022 30.5201C33.5742 30.5201 44.7182 33.5721 44.8022 39.1441C41.1902 44.5761 35.0022 48.1601 28.0022 48.1601Z\" \n fill=\"currentColor\"/>\n </svg>\n </span>","import { Component, Input, HostBinding, HostListener, Optional, ElementRef, Output, EventEmitter, Inject } from '@angular/core';\nimport { MatchaOptionParent, MATCHA_OPTION_PARENT } from './matcha-option-parent.interface';\n\n@Component({\n selector: 'matcha-option',\n template: `<ng-content></ng-content>`,\n host: {\n class: 'matcha-option',\n role: 'option',\n tabindex: '0'\n },\n standalone: false,\n})\nexport class MatchaOptionComponent {\n @Input() value: any;\n @Input() disabled = false;\n @HostBinding('attr.aria-selected') selected = false;\n\n // ✅ EventEmitters para uso standalone\n @Output() optionClick = new EventEmitter<any>();\n @Output() optionSelect = new EventEmitter<MatchaOptionComponent>();\n\n constructor(\n @Optional() @Inject(MATCHA_OPTION_PARENT) private parent: MatchaOptionParent | null,\n private elRef: ElementRef\n ) {}\n\n @HostListener('click')\n onClick() {\n if (this.disabled) return;\n\n console.log('MatchaOption: Clique na opção', {\n value: this.value,\n parent: this.parent,\n disabled: this.disabled\n });\n\n // ✅ Notifica o pai (se houver) - qualquer componente que implemente MatchaOptionParent\n if (this.parent) {\n console.log('MatchaOption: Usando parent.selectOption');\n this.parent.selectOption(this);\n } else {\n console.log('MatchaOption: Usando fallback findParentAndSelect');\n // Fallback: busca o pai via DOM\n this.findParentAndSelect();\n }\n\n // ✅ Emite eventos para uso standalone\n this.optionClick.emit(this.value);\n this.optionSelect.emit(this);\n }\n\n private findParentAndSelect() {\n // Busca o elemento pai matcha-autocomplete ou matcha-select\n const autocompleteEl = this.elRef.nativeElement.closest('matcha-autocomplete');\n const selectEl = this.elRef.nativeElement.closest('matcha-select');\n\n if (autocompleteEl) {\n console.log('MatchaOption: Encontrou autocomplete element', autocompleteEl);\n // Dispara um evento customizado que o autocomplete pode escutar\n const event = new CustomEvent('matcha-option-selected', {\n detail: { option: this, value: this.value },\n bubbles: true\n });\n autocompleteEl.dispatchEvent(event);\n console.log('MatchaOption: Evento customizado disparado', event);\n } else if (selectEl) {\n console.log('MatchaOption: Encontrou select element', selectEl);\n // Dispara um evento customizado que o select pode escutar\n const event = new CustomEvent('matcha-option-selected', {\n detail: { option: this, value: this.value },\n bubbles: true\n });\n selectEl.dispatchEvent(event);\n console.log('MatchaOption: Evento customizado disparado para select', event);\n } else {\n console.log('MatchaOption: Não encontrou elemento pai (autocomplete ou select)');\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n ev.preventDefault();\n this.onClick();\n }\n }\n\n // Getter para acessar o elemento nativo (usado para scroll)\n get nativeElement(): HTMLElement {\n return this.elRef.nativeElement;\n }\n\n // Método público para obter o texto interno da opção\n getTextContent(): string {\n return this.elRef.nativeElement.textContent?.trim() || '';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n TemplateRef,\n OnDestroy,\n OnInit,\n OnChanges,\n ChangeDetectorRef,\n AfterViewInit\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { max, takeUntil } from 'rxjs/operators';\n\nexport interface PanelPosition {\n top: number;\n left: number;\n width: number;\n maxHeight?: number;\n}\n\nexport type PanelPlacement = 'bottom' | 'top' | 'auto';\n\n@Component({\n selector: 'matcha-panel',\n template: `\n <div class=\"matcha-panel-container\" style=\"position: relative;\">\n <ng-container *ngIf=\"open\">\n <!-- Painel -->\n <div\n #panel\n class=\"matcha-panel\"\n [class.matcha-panel-top]=\"placement === 'top'\"\n [class.matcha-panel-bottom]=\"placement === 'bottom'\"\n [ngStyle]=\"panelStyle\"\n role=\"listbox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-hidden]=\"!open\">\n <ng-content></ng-content>\n </div>\n </ng-container>\n </div>\n `,\n standalone: false\n})\nexport class MatchaPanelComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n @Input() placement: PanelPlacement = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n @Input() offset = 4; // Espaçamento entre trigger e painel\n @Input() triggerElement?: HTMLElement;\n @Input() open = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild('panel', { static: false }) panelRef?: ElementRef<HTMLElement>;\n panelStyle: { [key: string]: any } = {};\n private destroy$ = new Subject<void>();\n private scrollListener?: () => void;\n private resizeListener?: () => void;\n\n constructor(\n private elRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n // Inicialização básica\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.cleanupListeners();\n }\n\n /**\n * Anexa o painel a um elemento trigger\n */\n attachTo(trigger: HTMLElement) {\n this.triggerElement = trigger;\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada antes de calcular posição\n if (this.triggerElement && this.open) {\n this.cdr.detectChanges();\n this.updatePosition();\n }\n }\n\n /**\n * Lifecycle hook para detectar mudanças no triggerElement\n */\n ngOnChanges() {\n // Só logar quando há mudanças significativas\n if (this.triggerElement && this.open) {\n console.log('MatchaPanel: ngOnChanges - painel aberto, atualizando posição');\n // Usar detectChanges para forçar a detecção de mudanças\n this.cdr.detectChanges();\n this.updatePosition();\n }\n }\n\n /**\n * Abre o painel\n */\n openPanel() {\n if (!this.triggerElement) {\n console.log('MatchaPanel: triggerElement não encontrado');\n return;\n }\n\n // Força a detecção de mudanças antes de atualizar a posição\n this.cdr.detectChanges();\n this.updatePosition();\n this.setupListeners();\n this.opened.emit();\n }\n\n /**\n * Fecha o painel\n */\n closePanel() {\n console.log('MatchaPanel: Fechando painel', {\n open: this.open,\n triggerElement: this.triggerElement,\n stackTrace: new Error().stack\n });\n this.cleanupListeners();\n this.closed.emit();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n }\n\n /**\n * Alterna o estado do painel\n */\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n /**\n * Atualiza a posição do painel (simplificado para absolute)\n */\n updatePosition() {\n if (!this.triggerElement) {\n console.log('MatchaPanel: updatePosition - triggerElement não encontrado');\n return;\n }\n const position = this.calculatePosition();\n this.panelStyle = {\n // top: `${position.top}px`,\n // left: `${position.left}px`,\n // minWidth: `${position.width}px`,\n top: 0,\n left: 0,\n width: '100%',\n maxHeight: `${position.maxHeight || this.maxHeight}px`,\n zIndex: 1\n };\n }\n\n /**\n * Calcula a posição ideal do painel (simplificado para absolute)\n */\n private calculatePosition(): PanelPosition {\n if (!this.triggerElement) {\n return { top: 0, left: 0, width: this.minWidth };\n }\n\n const rect = this.triggerElement.getBoundingClientRect();\n const containerRect = this.triggerElement.offsetParent?.getBoundingClientRect() || { top: 0, left: 0 };\n\n let top: number;\n let left: number;\n let width = Math.max(rect.width, this.minWidth);\n let maxHeight = this.maxHeight;\n\n // Calcular posição horizontal (relativa ao container)\n left = rect.left - containerRect.left;\n\n // Calcular posição vertical (relativa ao container)\n if (this.placement === 'top') {\n // Posicionar acima\n top = rect.top - containerRect.top - this.maxHeight - this.offset;\n } else {\n // Posicionar abaixo (padrão)\n top = rect.bottom - containerRect.top + this.offset;\n }\n\n return { top, left, width, maxHeight };\n }\n\n /**\n * Configura listeners para scroll e resize\n */\n private setupListeners() {\n // Com position absolute, não precisamos de listeners de scroll/resize\n console.log('MatchaPanel: setupListeners - position absolute, sem listeners necessários');\n }\n\n /**\n * Remove listeners\n */\n private cleanupListeners() {\n if (this.scrollListener) {\n window.removeEventListener('scroll', this.scrollListener);\n this.scrollListener = undefined;\n }\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n this.resizeListener = undefined;\n }\n }\n\n}\n\n","import {\n Component, ContentChildren, QueryList, ElementRef,\n AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef,\n Input, Output, EventEmitter, ViewChild, AfterViewInit\n} from '@angular/core';\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\nimport { MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\n\n@Component({\n selector: 'matcha-autocomplete',\n templateUrl: './matcha-autocomplete.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class MatchaAutocompleteComponent implements AfterContentInit, AfterViewInit, MatchaOptionParent {\n @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\n @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\n\n // Armazenar o valor selecionado independente da QueryList\n private selectedValue: any = undefined;\n\n // Configurações do painel\n @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n\n // Funcionalidades avançadas\n @Input() autoSelectOnBlur: boolean = false;\n @Input() displayWith: ((value: any) => string | null) | null = null;\n @Input() displayProperty: string = 'name';\n @Input() showClearButton: boolean = false;\n @Input() clearButtonIcon: string = 'action_close';\n @Input() clearButtonAriaLabel: string = 'Limpar seleção';\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() cleared = new EventEmitter<void>();\n @Output() autoSelected = new EventEmitter<any>();\n\n open = false;\n triggerElement?: HTMLElement;\n private activeIndex = -1;\n\n constructor(\n public elRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n // quando options mudarem, resetamos estado relevante\n this.options.changes.subscribe(() => {\n if (this.open) {\n this.resetActive();\n this.cdr.detectChanges();\n }\n });\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada\n this.cdr.detectChanges();\n\n // Escuta eventos customizados das opções\n this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\n console.log('MatchaAutocomplete: Evento matcha-option-selected recebido', event.detail);\n const { option, value } = event.detail;\n this.selectOption(option);\n });\n\n // Escuta evento para fechar este painel quando outro for aberto\n this.elRef.nativeElement.addEventListener('matcha-autocomplete-close', () => {\n if (this.open) {\n console.log('MatchaAutocomplete: Fechando painel por evento de outro autocomplete');\n this.closePanel();\n }\n });\n }\n\n attachTo(input: HTMLElement) {\n this.triggerElement = input;\n }\n\n private closeOtherPanels() {\n // Buscar todos os outros autocompletes na página e fechá-los\n const allAutocompletes = document.querySelectorAll('matcha-autocomplete');\n allAutocompletes.forEach(autocompleteEl => {\n if (autocompleteEl !== this.elRef.nativeElement) {\n // Disparar evento para fechar outros painéis\n const closeEvent = new CustomEvent('matcha-autocomplete-close', {\n bubbles: true\n });\n autocompleteEl.dispatchEvent(closeEvent);\n }\n });\n }\n\n private notifyDirectiveOfSelection(data: { value: any; displayText?: string }) {\n // Disparar evento customizado para notificar a diretiva sobre a seleção\n const selectionEvent = new CustomEvent('matcha-autocomplete-selection', {\n detail: data,\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(selectionEvent);\n console.log('MatchaAutocomplete: Evento de seleção disparado', data);\n }\n\n openPanel() {\n if (!this.triggerElement) {\n console.log('MatchaAutocomplete: triggerElement não encontrado');\n return;\n }\n\n console.log('MatchaAutocomplete: Abrindo painel', {\n triggerElement: this.triggerElement,\n panel: this.panel,\n open: this.open\n });\n\n // Fechar outros painéis abertos antes de abrir este\n this.closeOtherPanels();\n\n this.open = true;\n this.cdr.detectChanges(); // Força detecção de mudanças\n\n this.panel.attachTo(this.triggerElement);\n this.panel.openPanel();\n this.resetActive();\n this.opened.emit();\n }\n\n closePanel() {\n console.log('MatchaAutocomplete: Fechando painel', {\n open: this.open,\n stackTrace: new Error().stack\n });\n this.open = false;\n this.activeIndex = -1;\n this.updateSelectedStates();\n this.panel.closePanel();\n this.closed.emit();\n }\n\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n\n resetActive() {\n this.activeIndex = -1;\n this.updateSelectedStates();\n }\n\n private updateSelectedStates() {\n const items = this.options.toArray();\n items.forEach((opt, i) => opt.selected = i === this.activeIndex);\n }\n\n highlightNext() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex + 1) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n highlightPrevious() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex - 1 + length) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n private scrollToActive() {\n const opts = this.options.toArray();\n if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\n const host = opts[this.activeIndex].nativeElement;\n if (host && host.scrollIntoView) {\n host.scrollIntoView({ block: 'nearest' });\n }\n }\n\n selectActive() {\n if (this.activeIndex < 0) return;\n const opt = this.options.toArray()[this.activeIndex];\n if (opt?.disabled) return;\n this.selectOption(opt);\n }\n\n // chamado por matcha-option quando clicado\n selectOption(option: MatchaOptionComponent) {\n console.log('MatchaAutocomplete: Opção selecionada', {\n option,\n value: option.value,\n selected: option.selected,\n optionsLength: this.options.length,\n allOptions: this.options.toArray()\n });\n\n // Armazenar o valor selecionado\n this.selectedValue = option.value;\n\n // Marcar a opção como selecionada diretamente\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n console.log('MatchaAutocomplete: Após marcar seleção', {\n selectedOption: option,\n selected: option.selected,\n selectedValue: this.selectedValue,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n // Notificar a diretiva sobre a seleção antes de fechar o painel\n // Passar tanto o valor quanto o texto de exibição\n const displayText = this.getDisplayValue(option.value);\n this.notifyDirectiveOfSelection({\n value: option.value,\n displayText: displayText\n });\n\n // Fechamos painel automaticamente\n console.log('MatchaAutocomplete: Fechando painel após seleção');\n this.closePanel();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n\n // indireto: a directive pode ler o value via getSelectedValue()\n }\n\n getSelectedValue() {\n // Usar o valor armazenado se disponível, senão buscar na QueryList\n const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;\n\n console.log('MatchaAutocomplete: getSelectedValue chamado', {\n selectedValue: this.selectedValue,\n value,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n return value;\n }\n\n hasSelection(): boolean {\n return this.selectedValue !== undefined && this.selectedValue !== null;\n }\n\n clearSelection(): void {\n this.selectedValue = undefined;\n\n // Limpar seleção visual das opções\n this.options.forEach(opt => {\n opt.selected = false;\n });\n\n // Notificar diretiva para limpar input\n const clearEvent = new CustomEvent('matcha-autocomplete-clear', {\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(clearEvent);\n\n // Emitir evento de limpeza\n this.cleared.emit();\n }\n\n /**\n * Obtém o texto de exibição de um valor\n * Usa displayWith se fornecido, senão displayProperty, senão retorna o valor como string\n */\n getDisplayValue(value: any): string {\n if (value == null) return '';\n\n if (this.displayWith) {\n return this.displayWith(value) || '';\n }\n\n if (typeof value === 'object' && this.displayProperty) {\n return value[this.displayProperty] || '';\n }\n\n return String(value);\n }\n\n /**\n * Busca uma opção que corresponda ao texto digitado\n * Compara usando displayWith ou displayProperty\n */\n findOptionByText(text: string): MatchaOptionComponent | null {\n if (!text || text.trim() === '') return null;\n\n const searchText = text.toLowerCase().trim();\n const options = this.options.toArray();\n\n for (const option of options) {\n if (option.disabled) continue;\n\n const displayText = this.getDisplayValue(option.value).toLowerCase().trim();\n\n if (displayText === searchText) {\n return option;\n }\n }\n\n return null;\n }\n}\n\n","<matcha-panel\n #panel\n [open]=\"open\"\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [triggerElement]=\"triggerElement\"\n (opened)=\"opened.emit()\"\n (closed)=\"closed.emit()\">\n <div class=\"matcha-panel-content flex-column\">\n <ng-content></ng-content>\n </div>\n</matcha-panel>\n","import {\n Component, ContentChildren, QueryList, ElementRef,\n AfterContentInit, Renderer2, ViewEncapsulation, ChangeDetectorRef,\n Input, Output, EventEmitter, ViewChild, AfterViewInit, forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatchaOptionComponent } from '../matcha-option/matcha-option.component';\nimport { MatchaOptionParent } from '../matcha-option/matcha-option-parent.interface';\nimport { MatchaPanelComponent } from '../matcha-panel/matcha-panel.component';\n\n@Component({\n selector: 'matcha-select',\n templateUrl: './matcha-select.component.html',\n styleUrls: ['./matcha-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSelectComponent),\n multi: true\n }\n ]\n})\nexport class MatchaSelectComponent implements AfterContentInit, AfterViewInit, MatchaOptionParent, ControlValueAccessor {\n @ContentChildren(MatchaOptionComponent, { descendants: true }) options!: QueryList<MatchaOptionComponent>;\n @ViewChild(MatchaPanelComponent) panel!: MatchaPanelComponent;\n\n // Armazenar o valor selecionado independente da QueryList\n selectedValue: any = undefined;\n selectedLabel: string = '';\n\n // Configurações do painel\n @Input() placement: 'bottom' | 'top' | 'auto' = 'auto';\n @Input() maxHeight = 280;\n @Input() minWidth = 160;\n @Input() placeholder = 'Selecione uma opção';\n @Input() disabled = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() selectionChange = new EventEmitter<any>();\n\n open = false;\n triggerElement?: HTMLElement;\n private activeIndex = -1;\n\n // ControlValueAccessor properties\n private onChange = (value: any) => {};\n private onTouched = () => {};\n isDisabled = false;\n\n constructor(\n public elRef: ElementRef,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngAfterContentInit() {\n // quando options mudarem, resetamos estado relevante\n this.options.changes.subscribe(() => {\n if (this.open) {\n this.resetActive();\n this.cdr.detectChanges();\n }\n });\n }\n\n ngAfterViewInit() {\n // Aguarda a view ser inicializada\n this.cdr.detectChanges();\n\n // Configurar o trigger element\n this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\n if (this.triggerElement && this.panel) {\n this.panel.attachTo(this.triggerElement);\n }\n\n // Adicionar event listeners para navegação por teclado\n this.setupKeyboardNavigation();\n\n // Escuta eventos customizados das opções\n this.elRef.nativeElement.addEventListener('matcha-option-selected', (event: any) => {\n console.log('MatchaSelect: Evento matcha-option-selected recebido', event.detail);\n const { option, value } = event.detail;\n this.selectOption(option);\n });\n\n // Escuta evento para fechar este painel quando outro for aberto\n this.elRef.nativeElement.addEventListener('matcha-select-close', () => {\n if (this.open) {\n console.log('MatchaSelect: Fechando painel por evento de outro select');\n this.closePanel();\n }\n });\n\n // Escuta click outside para fechar o painel\n document.addEventListener('click', (event: MouseEvent) => {\n const target = event.target as Node;\n const isInsideSelect = this.elRef.nativeElement.contains(target);\n\n if (!isInsideSelect && this.open) {\n console.log('MatchaSelect: Fechando painel por click outside');\n this.closePanel();\n }\n });\n }\n\n private setupKeyboardNavigation() {\n if (!this.triggerElement) return;\n\n this.triggerElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (this.disabled || this.isDisabled) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.handleArrowDown();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.handleArrowUp();\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.handleEnterOrSpace();\n break;\n case 'Escape':\n event.preventDefault();\n this.handleEscape();\n break;\n case 'Tab':\n // Permitir navegação normal com Tab\n break;\n default:\n // Para outras teclas, não fazer nada\n break;\n }\n });\n }\n\n private handleArrowDown() {\n if (!this.open) {\n // Se o painel estiver fechado, selecionar a próxima opção diretamente\n this.selectNextOption();\n } else {\n // Se o painel estiver aberto, navegar para a próxima opção\n this.highlightNext();\n }\n }\n\n private handleArrowUp() {\n if (!this.open) {\n // Se o painel estiver fechado, selecionar a opção anterior diretamente\n this.selectPreviousOption();\n } else {\n // Se o painel estiver aberto, navegar para a opção anterior\n this.highlightPrevious();\n }\n }\n\n private handleEnterOrSpace() {\n if (this.open) {\n // Se o painel estiver aberto, selecionar a opção ativa\n this.selectActive();\n } else {\n // Se o painel estiver fechado, abrir\n this.openPanel();\n }\n }\n\n private handleEscape() {\n if (this.open) {\n this.closePanel();\n }\n }\n\n private closeOtherPanels() {\n // Buscar todos os outros selects na página e fechá-los\n const allSelects = document.querySelectorAll('matcha-select');\n allSelects.forEach(selectEl => {\n if (selectEl !== this.elRef.nativeElement) {\n // Disparar evento para fechar outros painéis\n const closeEvent = new CustomEvent('matcha-select-close', {\n bubbles: true\n });\n selectEl.dispatchEvent(closeEvent);\n }\n });\n }\n\n private notifyDirectiveOfSelection(value: any) {\n // Disparar evento customizado para notificar a diretiva sobre a seleção\n const selectionEvent = new CustomEvent('matcha-select-selection', {\n detail: { value },\n bubbles: true\n });\n this.elRef.nativeElement.dispatchEvent(selectionEvent);\n console.log('MatchaSelect: Evento de seleção disparado', { value });\n }\n\n onTriggerClick() {\n if (this.disabled || this.isDisabled) return;\n this.togglePanel();\n }\n\n openPanel() {\n if (this.disabled || this.isDisabled) {\n console.log('MatchaSelect: disabled');\n return;\n }\n\n // Garantir que o triggerElement está configurado\n if (!this.triggerElement) {\n this.triggerElement = this.elRef.nativeElement.querySelector('.matcha-select-trigger');\n }\n\n if (!this.triggerElement) {\n console.log('MatchaSelect: triggerElement não encontrado');\n return;\n }\n\n console.log('MatchaSelect: Abrindo painel', {\n triggerElement: this.triggerElement,\n panel: this.panel,\n open: this.open\n });\n\n // Fechar outros painéis abertos antes de abrir este\n this.closeOtherPanels();\n\n this.open = true;\n this.cdr.detectChanges(); // Força detecção de mudanças\n\n this.panel.attachTo(this.triggerElement);\n this.panel.openPanel();\n\n // Configurar o activeIndex baseado no valor selecionado\n this.setActiveIndexFromSelectedValue();\n this.updateSelectedStates();\n\n this.opened.emit();\n }\n\n closePanel() {\n console.log('MatchaSelect: Fechando painel', {\n open: this.open,\n stackTrace: new Error().stack\n });\n this.open = false;\n this.activeIndex = -1;\n this.updateSelectedStates();\n this.panel.closePanel();\n this.closed.emit();\n\n // Marcar como touched quando o painel fecha (importante para validação)\n this.onTouched();\n }\n\n togglePanel() {\n this.open ? this.closePanel() : this.openPanel();\n }\n\n resetActive() {\n this.activeIndex = -1;\n this.updateSelectedStates();\n }\n\n private setActiveIndexFromSelectedValue() {\n if (this.selectedValue !== undefined) {\n const options = this.options.toArray();\n const selectedIndex = options.findIndex(opt => opt.value === this.selectedValue);\n this.activeIndex = selectedIndex >= 0 ? selectedIndex : 0;\n } else {\n this.activeIndex = 0;\n }\n }\n\n private selectNextOption() {\n const options = this.options.toArray();\n if (!options.length) return;\n\n let currentIndex = -1;\n if (this.selectedValue !== undefined) {\n currentIndex = options.findIndex(opt => opt.value === this.selectedValue);\n }\n\n // Se não há seleção atual ou é a última opção, selecionar a primeira\n const nextIndex = currentIndex < 0 || currentIndex >= options.length - 1 ? 0 : currentIndex + 1;\n this.selectOptionByIndex(nextIndex);\n }\n\n private selectPreviousOption() {\n const options = this.options.toArray();\n if (!options.length) return;\n\n let currentIndex = -1;\n if (this.selectedValue !== undefined) {\n currentIndex = options.findIndex(opt => opt.value === this.selectedValue);\n }\n\n // Se não há seleção atual ou é a primeira opção, selecionar a última\n const prevIndex = currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n this.selectOptionByIndex(prevIndex);\n }\n\n private selectOptionByIndex(index: number) {\n const options = this.options.toArray();\n if (index < 0 || index >= options.length) return;\n\n const option = options[index];\n if (option.disabled) return;\n\n // Atualizar o valor selecionado\n this.selectedValue = option.value;\n // Armazenar o label (texto interno) da opção selecionada\n this.selectedLabel = option.getTextContent();\n\n // Marcar a opção como selecionada\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n // Notificar a diretiva sobre a seleção\n this.notifyDirectiveOfSelection(option.value);\n\n // Emitir evento de mudança de seleção\n this.selectionChange.emit(option.value);\n\n // Notificar o Angular Forms sobre a mudança\n this.onChange(option.value);\n this.onTouched();\n\n // Forçar detecção de mudanças\n this.cdr.detectChanges();\n }\n\n private updateSelectedStates() {\n const items = this.options.toArray();\n items.forEach((opt, i) => opt.selected = i === this.activeIndex);\n }\n\n highlightNext() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex + 1) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n highlightPrevious() {\n const length = this.options.length;\n if (!length) return;\n this.activeIndex = (this.activeIndex - 1 + length) % length;\n this.updateSelectedStates();\n this.scrollToActive();\n }\n\n private scrollToActive() {\n const opts = this.options.toArray();\n if (this.activeIndex < 0 || this.activeIndex >= opts.length) return;\n const host = opts[this.activeIndex].nativeElement;\n if (host && host.scrollIntoView) {\n host.scrollIntoView({ block: 'nearest' });\n }\n }\n\n selectActive() {\n if (this.activeIndex < 0) return;\n const opt = this.options.toArray()[this.activeIndex];\n if (opt?.disabled) return;\n this.selectOption(opt);\n }\n\n // chamado por matcha-option quando clicado\n selectOption(option: MatchaOptionComponent) {\n console.log('MatchaSelect: Opção selecionada', {\n option,\n value: option.value,\n selected: option.selected,\n optionsLength: this.options.length,\n allOptions: this.options.toArray()\n });\n\n // Armazenar o valor selecionado\n this.selectedValue = option.value;\n // Armazenar o label (texto interno) da opção selecionada\n this.selectedLabel = option.getTextContent();\n\n // Marcar a opção como selecionada diretamente\n option.selected = true;\n\n // Marcar todas as outras como não selecionadas\n this.options.forEach(o => {\n if (o !== option) {\n o.selected = false;\n }\n });\n\n console.log('MatchaSelect: Após marcar seleção', {\n selectedOption: option,\n selected: option.selected,\n selectedValue: this.selectedValue,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n // Notificar a diretiva sobre a seleção antes de fechar o painel\n this.notifyDirectiveOfSelection(option.value);\n\n // Emitir evento de mudança de seleção\n this.selectionChange.emit(option.value);\n\n // Notificar o Angular Forms sobre a mudança\n this.onChange(option.value);\n this.onTouched();\n\n // Fechamos painel automaticamente\n console.log('MatchaSelect: Fechando painel após seleção');\n this.closePanel();\n\n // Forçar detecção de mudanças para garantir que o painel seja fechado\n this.cdr.detectChanges();\n }\n\n getSelectedValue() {\n // Usar o valor armazenado se disponível, senão buscar na QueryList\n const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;\n\n console.log('MatchaSelect: getSelectedValue chamado', {\n selectedValue: this.selectedValue,\n value,\n allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))\n });\n\n return value;\n }\n\n getSelectedLabel(): string {\n // Retorna o label armazenado ou placeholder\n return this.selectedLabel || '';\n }\n\n // Método para definir valor programaticamente\n setValue(value: any) {\n this.selectedValue = value;\n this.cdr.detectChanges();\n }\n\n // Método para limpar seleção\n clearSelection() {\n this.selectedValue = undefined;\n this.selectedLabel = '';\n this.options.forEach(o => o.selected = false);\n this.cdr.detectChanges();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any): void {\n this.selectedValue = value;\n // Atualizar o label quando o valor é definido programaticamente\n if (value !== undefined && value !== null) {\n const selectedOption = this.options?.find(o => o.value === value);\n if (selectedOption) {\n this.selectedLabel = selectedOption.getTextContent();\n }\n } else {\n this.selectedLabel = '';\n }\n this.cdr.detectChanges();\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n this.cdr.detectChanges();\n }\n}\n","<div class=\"matcha-select-container\" [class.matcha-select-disabled]=\"disabled || isDisabled\">\n <div\n class=\"matcha-select-trigger\"\n [class.matcha-select-open]=\"open\"\n [class.matcha-select-disabled]=\"disabled || isDisabled\"\n (click)=\"onTriggerClick()\"\n [attr.tabindex]=\"(disabled || isDisabled) ? -1 : 0\"\n role=\"combobox\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-disabled]=\"disabled || isDisabled\">\n\n <span class=\"matcha-select-value\" [class.matcha-select-placeholder]=\"!selectedValue\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n\n <span class=\"matcha-select-arrow\" [class.matcha-select-arrow-open]=\"open\">\n <span class=\"i-matcha-action_arrow_down\"></span>\n </span>\n </div>\n\n <matcha-panel\n #panel\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [open]=\"open\">\n <ng-content></ng-content>\n </matcha-panel>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * Service to internationalize the paginator component.\n * Based on Angular Material's MatPaginatorIntl\n */\n@Injectable({ providedIn: 'root' })\nexport class MatchaPaginatorIntl {\n /** Stream to emit from when labels are changed. Used by the paginator to update the labels. */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the page size selector. */\n itemsPerPageLabel: string = 'Itens por página:';\n\n /** A label for the button that increments the current page. */\n nextPageLabel: string = 'Próxima página';\n\n /** A label for the button that decrements the current page. */\n previousPageLabel: string = 'Página anterior';\n\n /** A label for the button that moves to the first page. */\n firstPageLabel: string = 'Primeira página';\n\n /** A label for the button that moves to the last page. */\n lastPageLabel: string = 'Última página';\n\n /**\n * A label for the range of items within the current page and the length of the whole list.\n */\n getRangeLabel: (page: number, pageSize: number, length: number) => string =\n (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return `0 de 0`;\n }\n const amountPages = Math.ceil(length / pageSize);\n return `Página ${page + 1} de ${amountPages}`;\n };\n}\n","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PageEvent } from './page-event.interface';\nimport { MatchaPaginatorIntl } from '../paginator-intl.service';\n\n@Component({\n selector: 'matcha-paginator',\n templateUrl: './paginator.component.html',\n styleUrl: './paginator.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatchaPaginatorComponent implements OnDestroy {\n @Input() public pageIndex: number = 0;\n @Input() public length: number = 0;\n @Input() public pageSize: number = 50;\n @Input() public pageSizeOptions: number[] = [];\n \n /** Color theme for active page button. Defaults to 'accent' */\n @Input() public color: string = 'accent';\n\n @Output() public page = new EventEmitter<PageEvent>();\n\n private _intlChanges: Subscription;\n\n constructor(\n public _intl: MatchaPaginatorIntl,\n private _changeDetectorRef: ChangeDetectorRef\n ) {\n this._intlChanges = _intl.changes.subscribe(() => {\n // Trigger change detection when labels change\n this._changeDetectorRef.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._intlChanges.unsubscribe();\n }\n\n public get currentPage(): number {\n return this.pageIndex + 1;\n }\n\n public get totalPages(): number {\n if (this.pageSize === 0) return 0;\n return Math.ceil(this.length / this.pageSize);\n }\n\n public get hasPreviousPage(): boolean {\n return this.pageIndex > 0;\n }\n\n public get hasNextPage(): boolean {\n return this.pageIndex < this.totalPages - 1;\n }\n\n public get displayPages(): (number | string)[] {\n const current = this.currentPage;\n const total = this.totalPages;\n const pages: (number | string)[] = [];\n\n if (total <= 1) {\n if (total === 1) {\n pages.push(1);\n }\n return pages;\n }\n\n if (total <= 5) {\n for (let i = 1; i <= total; i++) {\n pages.push(i);\n }\n } else {\n \n if (current <= 3) {\n pages.push(1, 2, 3, '...', total);\n } else if (current >= total - 2) {\n for (let i = total - 4; i <= total; i++) {\n pages.push(i);\n }\n } else {\n const startPage = current - 1;\n \n for (let i = startPage; i <= current + 2 && i <= total; i++) {\n pages.push(i);\n }\n \n if (current + 2 < total - 1) {\n pages.push('...');\n }\n \n if (current + 2 < total) {\n pages.push(total);\n }\n }\n }\n\n return pages;\n }\n\n public trackByPage(index: number, item: number | string): number | string {\n return item;\n }\n\n /** Check if item is a number (for template use only) */\n public isNumber(value: any): boolean {\n return typeof value === 'number';\n }\n\n /** Navigate to previous page */\n public previousPage(): void {\n if (this.hasPreviousPage) {\n this.changePage(this.pageIndex - 1);\n }\n }\n\n /** Navigate to next page */\n public nextPage(): void {\n if (this.hasNextPage) {\n this.changePage(this.pageIndex + 1);\n }\n }\n\n /** Navigate to specific page */\n public goToPage(page: number | string): void {\n if (typeof page === 'number' && page >= 1 && page <= this.totalPages) {\n this.changePage(page - 1);\n }\n }\n \n\n /** Handle page size change */\n public onPageSizeChange(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const newPageSize = parseInt(target.value, 10);\n \n if (newPageSize !== this.pageSize) {\n this.changePage(0, newPageSize);\n }\n }\n\n private changePage(pageIndex: number, pageSize?: number): void {\n const previousPageIndex = this.pageIndex;\n \n const event: PageEvent = {\n pageIndex,\n previousPageIndex,\n pageSize: pageSize || this.pageSize,\n length: this.length\n };\n\n this.page.emit(event);\n }\n}","<div class=\"matcha-paginator flex-row flex-align-center gap-16\">\n <!-- Items per page selector -->\n <div class=\"flex-row flex-align-center gap-8\" *ngIf=\"pageSizeOptions && pageSizeOptions.length > 0\">\n <span class=\"text-sm color-placeholder\">{{ _intl.itemsPerPageLabel }}</span>\n <div class=\"page-size-selector\">\n <select \n class=\"page-size-select radius-8\" \n [value]=\"pageSize\" \n (change)=\"onPageSizeChange($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\">\n {{ option }}\n </option>\n </select>\n <div class=\"select-icon\">\n <matcha-icon name=\"action_arrow_down\" size=\"sm\" color=\"fg\"></matcha-icon>\n </div>\n </div>\n </div>\n \n <!-- Page navigation -->\n <div class=\"flex-row flex-align-center gap-8\">\n <!-- Previous page button -->\n <button \n class=\"nav-button\" \n [disabled]=\"!hasPreviousPage\"\n (click)=\"previousPage()\"\n [attr.aria-label]=\"_intl.previousPageLabel\">\n <matcha-icon name=\"action_arrow_left\" size=\"md\"></matcha-icon>\n </button>\n \n <!-- Page numbers -->\n <div class=\"flex-row flex-align-center gap-4\">\n <ng-container *ngFor=\"let page of displayPages; trackBy: trackByPage\">\n <button \n *ngIf=\"isNumber(page); else ellipsis\"\n class=\"page-button\"\n [class.active]=\"page === currentPage\"\n [class.radius-full]=\"page === currentPage\"\n [ngClass]=\"page === currentPage ? color : ''\"\n (click)=\"goToPage(page)\"\n [attr.aria-label]=\"'Ir para página ' + page\">\n {{ page }}\n </button>\n <ng-template #ellipsis>\n <span class=\"ellipsis\">{{ page }}</span>\n </ng-template>\n </ng-container>\n </div>\n \n <!-- Next page button -->\n <button \n class=\"nav-button\" \n [disabled]=\"!hasNextPage\"\n (click)=\"nextPage()\"\n [attr.aria-label]=\"_intl.nextPageLabel\">\n <matcha-icon name=\"action_arrow_right\" size=\"md\"></matcha-icon>\n </button>\n </div>\n </div>","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'matcha-copy-button',\n templateUrl: './copy-button.component.html',\n styleUrls: ['./copy-button.component.scss'],\n standalone: false\n})\nexport class CopyButtonComponent {\n\n @Input() type: string = 'Código';\n @Input() size: 'tiny' | 'small' | 'medium' | 'large' = 'tiny';\n @Input() icon: string = 'copy-out';\n @Input() position: 'absolute' | 'relative' = 'absolute';\n @Input() customClass: string = '';\n\n @Output() copied = new EventEmitter<{text: string, type: string}>();\n\n // Propriedade para controlar o ícone do botão\n currentIcon: string = this.icon;\n isCopied: boolean = false;\n\n // Método para copiar código para a área de transferência\n async copyToClipboard() {\n // Busca o componente matcha-highlight pai\n const highlightComponent = this.elementRef.nativeElement.closest('matcha-highlight');\n\n // Primeiro tenta encontrar textarea (para casos onde ainda não foi processado)\n let textarea = highlightComponent?.querySelector('textarea');\n let textToCopy = '';\n\n if (textarea) {\n // Se encontrou textarea, usa o valor dela\n textToCopy = textarea.value;\n } else {\n // Se não encontrou textarea, procura pelo código destacado\n const codeElement = highlightComponent?.querySelector('code.highlight');\n if (codeElement) {\n textToCopy = codeElement.textContent || codeElement.innerText || '';\n } else {\n console.warn('Nenhum conteúdo encontrado para copiar');\n return;\n }\n }\n\n if (!textToCopy.trim()) {\n console.warn('Conteúdo vazio para copiar');\n return;\n }\n\n try {\n await navigator.clipboard.writeText(textToCopy);\n console.log(`Código ${this.type} copiado para a área de transferência!`);\n this.copied.emit({ text: textToCopy, type: this.type });\n\n // Feedback visual temporário\n this.showCopyFeedback();\n } catch (err) {\n console.error('Erro ao copiar código:', err);\n // Fallback para navegadores mais antigos\n this.fallbackCopyToClipboard(textToCopy);\n }\n }\n\n // Fallback para navegadores que não suportam clipboard API\n private fallbackCopyToClipboard(textToCopy: string) {\n // Cria um textarea temporário para usar o método antigo\n const tempTextarea = document.createElement('textarea');\n tempTextarea.value = textToCopy;\n tempTextarea.style.position = 'fixed';\n tempTextarea.style.left = '-999999px';\n tempTextarea.style.top = '-999999px';\n document.body.appendChild(tempTextarea);\n\n tempTextarea.focus();\n tempTextarea.select();\n tempTextarea.setSelectionRange(0, 99999); // Para mobile\n\n try {\n document.execCommand('copy');\n console.log('Código copiado para a área de transferência!');\n this.copied.emit({ text: textToCopy, type: this.type });\n this.showCopyFeedback();\n } catch (err) {\n console.error('Erro ao copiar código:', err);\n } finally {\n document.body.removeChild(tempTextarea);\n }\n }\n\n // Feedback visual quando copiado\n private showCopyFeedback() {\n const button = this.elementRef.nativeElement.querySelector('button');\n if (button) {\n const originalText = button.title;\n button.title = 'Copiado!';\n\n // Muda o ícone para checked\n this.isCopied = true;\n this.currentIcon = 'action_done';\n\n setTimeout(() => {\n button.title = originalText;\n button.style.transform = '';\n\n // Volta para o ícone original após 2 segundos\n setTimeout(() => {\n this.isCopied = false;\n this.currentIcon = this.icon;\n }, 3000);\n }, 1000);\n }\n }\n\n // Método para obter as classes CSS do botão\n getButtonClasses(): string {\n let classes = `position-${this.position} top-8 right-8 m-8 z-index-10`;\n\n if (this.customClass) {\n classes += ` ${this.customClass}`;\n }\n\n return classes;\n }\n\n constructor(private elementRef: ElementRef) {}\n}\n","<button\n matcha-button\n [size]=\"size\"\n pill=\"true\"\n icon=\"true\"\n [class]=\"getButtonClasses()\"\n (click)=\"copyToClipboard()\"\n [title]=\"'Copiar código ' + type\">\n <matcha-icon [name]=\"currentIcon\" [size]=\"size === 'tiny' ? 'small' : size\"></matcha-icon>\n</button>\n\n\n","import { Component, ContentChild, ElementRef, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n// Prism.js é carregado no módulo highlight.module.ts\n\n@Component({\n selector : 'matcha-highlight',\n template : `\n <matcha-copy-button [type]=\"lang\" class=\"copy-button\"></matcha-copy-button>\n <div class=\"matcha-highlight-container\">\n <div class=\"highlight-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n standalone: false\n})\nexport class MatchaHighlightComponent implements OnInit, OnDestroy\n{\n // Source\n @ContentChild('source', {static: true})\n source!: ElementRef;\n\n // Lang\n @Input('lang')\n lang!: string;\n\n // Path\n @Input('path')\n path!: string;\n\n // Theme\n @Input('theme') theme: string = '';\n @HostBinding('attr.theme') get themeAttr(): string { return this.theme; }\n\n // Private\n private _unsubscribeAll: Subject<any>;\n\n /**\n * Constructor\n *\n * @param {ElementRef} _elementRef\n * @param {HttpClient} _httpClient\n */\n constructor(\n private _elementRef: ElementRef,\n private _httpClient: HttpClient\n )\n {\n // Set the private defaults\n this._unsubscribeAll = new Subject();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Lifecycle hooks\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * On init\n */\n ngOnInit(): void\n {\n // Debug: Verificar se Prism está carregado\n const Prism = (window as any).Prism;\n console.log('Prism loaded:', typeof Prism !== 'undefined');\n if (typeof Prism !== 'undefined') {\n console.log('Prism languages:', Object.keys(Prism.languages));\n }\n\n // Aplicar tema\n // this.applyTheme();\n\n // If there is no language defined, return...\n if ( !this.lang )\n {\n return;\n }\n\n // If the path is defined...\n if ( this.path )\n {\n // Get the source\n this._httpClient.get(this.path, {responseType: 'text'})\n .pipe(takeUntil(this._unsubscribeAll))\n .subscribe((response) => {\n\n // Highlight it\n this.highlight(response);\n });\n }\n\n // If the path is not defined and the source element exists...\n if ( !this.path && this.source )\n {\n // Highlight it\n this.highlight(this.source.nativeElement.value);\n }\n }\n\n /**\n * On destroy\n */\n ngOnDestroy(): void\n {\n // Unsubscribe from all subscriptions\n this._unsubscribeAll.next(null);\n this._unsubscribeAll.complete();\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Apply theme to the component\n */\n // applyTheme(): void\n // {\n // const element = this._elementRef.nativeElement;\n\n // // Remove existing theme classes\n // element.classList.remove('theme-matcha', 'theme-default', 'theme-dark', 'theme-coy', 'theme-funky', 'theme-okaidia', 'theme-solarizedlight', 'theme-tomorrow', 'theme-twilight');\n\n // // Add new theme class\n // element.classList.add(`theme-${this.theme}`);\n // }\n\n /**\n * Carrega o PrismJS dinamicamente\n */\n private async loadPrismJS(): Promise<void> {\n return new Promise((resolve, reject) => {\n // Verifica se já está carregado\n if (typeof (window as any).Prism !== 'undefined') {\n resolve();\n return;\n }\n\n // Carrega o PrismJS principal\n const script = document.createElement('script');\n script.src = '/assets/prismjs/prism.js';\n script.onload = () => {\n // Carrega os componentes de linguagem\n this.loadPrismComponent('/assets/prismjs/components/prism-javascript.js');\n this.loadPrismComponent('/assets/prismjs/components/prism-css.js');\n this.loadPrismComponent('/assets/prismjs/components/prism-markup.js');\n\n console.log('PrismJS carregado com sucesso');\n resolve();\n };\n script.onerror = () => {\n console.error('Erro ao carregar PrismJS');\n reject(new Error('Erro ao carregar PrismJS'));\n };\n document.head.appendChild(script);\n });\n }\n\n /**\n * Carrega um componente do PrismJS\n */\n private loadPrismComponent(src: string): void {\n const script = document.createElement('script');\n script.src = src;\n document.head.appendChild(script);\n }\n\n /**\n * Highlight the given source code\n *\n * @param sourceCode\n */\n async highlight(sourceCode: string): Promise<void>\n {\n // Carrega o PrismJS dinamicamente se não estiver disponível\n if (typeof (window as any).Prism === 'undefined') {\n await this.loadPrismJS();\n }\n\n const Prism = (window as any).Prism;\n\n console.log('Highlighting code:', sourceCode.substring(0, 50) + '...');\n console.log('Language:', this.lang);\n console.log('Prism available:', typeof Prism !== 'undefined');\n\n // Check if Prism is available\n if (typeof Prism === 'undefined') {\n console.error('Prism.js is not loaded');\n this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\n return;\n }\n\n // Check if the language is supported\n if (!Prism.languages[this.lang]) {\n console.error(`Language \"${this.lang}\" is not supported by Prism.js`);\n console.log('Available languages:', Object.keys(Prism.languages));\n this._elementRef.nativeElement.innerHTML = '<pre><code>' + sourceCode + '</code></pre>';\n return;\n }\n\n // Split the source into lines\n const sourceLines = sourceCode.split('\\n');\n\n\n // Verificar se o array não está vazio\n if (sourceLines.length === 0) {\n console.warn('Source code is empty');\n this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\n return;\n }\n // Remove the first and the last line of the source\n // code if they are blank lines. This way, the html\n // can be formatted properly while using matcha-highlight\n // component\n if (sourceLines.length > 0 && sourceLines[0] && !sourceLines[0].trim())\n {\n sourceLines.shift();\n }\n\n if (sourceLines.length > 0 && sourceLines[sourceLines.length - 1] && !sourceLines[sourceLines.length - 1].trim())\n {\n sourceLines.pop();\n }\n\n // Find the first non-whitespace char index in\n\n // Verificar novamente se o array não está vazio após remoções\n if (sourceLines.length === 0) {\n console.warn('Source code is empty after trimming');\n this._elementRef.nativeElement.innerHTML = '<pre><code></code></pre>';\n return;\n }\n // the first line of the source code\n const indexOfFirstChar = sourceLines[0].search(/\\S|$/);\n\n // Generate the trimmed source\n let source = '';\n\n // Iterate through all the lines\n sourceLines.forEach((line: string, index: number) => {\n\n // Trim the beginning white space depending on the index\n // and concat the source code\n source = source + line.substr(indexOfFirstChar, line.length);\n\n // If it's not the last line...\n if ( index !== sourceLines.length - 1 )\n {\n // Add a line break at the end\n source = source + '\\n';\n }\n });\n\n console.log('Processed source:', source.substring(0, 50) + '...');\n\n // Generate the highlighted code\n const highlightedCode = Prism.highlight(source, Prism.languages[this.lang], this.lang);\n\n console.log('Highlighted result:', highlightedCode.substring(0, 100) + '...');\n\n // Replace the innerHTML of the highlight-content div with the highlighted code\n const highlightContent = this._elementRef.nativeElement.querySelector('.highlight-content');\n if (highlightContent) {\n highlightContent.innerHTML =\n '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\n } else {\n // Fallback: if highlight-content doesn't exist, use the old method\n this._elementRef.nativeElement.innerHTML =\n '<pre><code class=\"highlight language-' + this.lang + '\">' + highlightedCode + '</code></pre>';\n }\n }\n}\n","// projects/matcha-components/src/lib/matcha-slider/slider/slider.component.ts\n\nimport { Component, Input, Output, EventEmitter, forwardRef, OnInit, OnDestroy, ElementRef, ViewChild, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\nexport interface SliderOptions {\n floor?: number;\n ceil?: number;\n step?: number;\n disabled?: boolean;\n pushRange?: boolean;\n noSwitching?: boolean;\n minRange?: number;\n maxRange?: number;\n animate?: boolean;\n draggableRange?: boolean;\n draggableRangeOnly?: boolean;\n showSelectionBar?: boolean;\n showSelectionBarEnd?: boolean;\n showSelectionBarFromValue?: number;\n showSelectionBarToValue?: number;\n selectionBarGradient?: {\n from: string;\n to: string;\n };\n getPointerColor?: (value: number) => string;\n getSelectionBarColor?: (value: number) => string;\n hidePointerLabels?: boolean;\n hideLimitLabels?: boolean;\n keyboardSupport?: boolean;\n scale?: number;\n enforceRange?: boolean;\n enforceStep?: boolean;\n noCommaStyle?: boolean;\n bindIndexForPushRange?: boolean;\n combineLabels?: boolean;\n format?: (value: number) => string;\n combinePossible?: boolean;\n includeTicksScale?: boolean;\n logScale?: boolean;\n customValueToPosition?: (val: number, minVal: number, maxVal: number) => number;\n customPositionToValue?: (percent: number, minVal: number, maxVal: number) => number;\n translate?: (value: number, sliderId: string, label: string) => string;\n}\n\n@Component({\n selector: 'matcha-slider',\n templateUrl: './slider.component.html',\n styleUrl: './slider.component.scss',\n standalone: false,\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaSliderComponent),\n multi: true\n }\n ]\n})\nexport class MatchaSliderComponent implements ControlValueAccessor, OnInit, OnDestroy {\n\n\n@Input() value: number = 0;\n\nprivate _highValue: number = 0;\n@Input() set highValue(val: number) {\n this._highValue = val;\n if (val !== null && val !== undefined && val !== 0) {\n this.isRangeInternal = true;\n }\n}\nget highValue(): number {\n return this._highValue;\n}\n\n @Input() options: SliderOptions = {};\n @Input() color: string = 'accent';\n @Input() disabled: boolean | string = false;\n \n @Output() valueChange = new EventEmitter<number>();\n @Output() highValueChange = new EventEmitter<number>();\n @Output() userChange = new EventEmitter<number>();\n @Output() userChangeEnd = new EventEmitter<number>();\n\n @ViewChild('sliderElement', { static: false }) sliderElement?: ElementRef;\n\n private destroy$ = new Subject<void>();\n private isDragging = false;\n private draggingPointer: 'low' | 'high' | null = null;\n private lastUpdateTime = 0;\n private animationFrameId: number | null = null;\n private isRangeInternal = false;\n\n private readonly defaultOptions: SliderOptions = {\n floor: 0,\n ceil: 100,\n step: 1,\n disabled: false,\n pushRange: false,\n noSwitching: false,\n minRange: 0,\n maxRange: 0,\n animate: true,\n draggableRange: false,\n draggableRangeOnly: false,\n showSelectionBar: true,\n showSelectionBarEnd: false,\n showSelectionBarFromValue: 0,\n showSelectionBarToValue: 0,\n hidePointerLabels: false,\n hideLimitLabels: false,\n keyboardSupport: true,\n scale: 1,\n enforceRange: false,\n enforceStep: false,\n noCommaStyle: false,\n bindIndexForPushRange: false,\n combineLabels: false,\n format: (value: number) => value.toString(),\n combinePossible: false,\n includeTicksScale: false,\n logScale: false,\n translate: (value: number) => value.toString()\n };\n\n private onChange = (value: any) => {};\n private onTouched = () => {};\n\n private boundOnMouseMove = this.onMouseMove.bind(this);\n private boundOnMouseUp = this.onMouseUp.bind(this);\n\n constructor(private cdr: ChangeDetectorRef, private elementRef: ElementRef) {}\n\n public get mergedOptions(): SliderOptions {\n return { ...this.defaultOptions, ...this.options };\n }\n\n public get isRange(): boolean {\n return this.isRangeInternal;\n }\n\n public get percentage(): number {\n return this.valueToPercentage(this.value);\n }\n\n public get highPercentage(): number {\n return this.valueToPercentage(this.highValue);\n }\n\n public get selectionBarStyle(): any {\n if (this.isRange) {\n const left = Math.min(this.percentage, this.highPercentage);\n const width = Math.abs(this.highPercentage - this.percentage);\n return {\n left: `${left}%`,\n width: `${width}%`\n };\n } else {\n return {\n left: '0%',\n width: `${this.percentage}%`\n };\n }\n }\n\n public get isAtMaxValue(): boolean {\n const ceil = this.mergedOptions.ceil || 100;\n if (this.isRange) {\n return this.highValue >= ceil;\n } else {\n return this.value >= ceil;\n }\n }\n\n public get isAtMinValue(): boolean {\n const floor = this.mergedOptions.floor || 0;\n if (this.isRange) {\n return this.value <= floor || this.highValue <= floor;\n } else {\n return this.value <= floor;\n }\n }\n\n public get isDisabled(): boolean {\n if (typeof this.disabled === 'string') {\n const stringDisabled = this.disabled === '' || (this.disabled !== 'false');\n return stringDisabled || Boolean(this.mergedOptions.disabled);\n }\n return Boolean(this.disabled) || Boolean(this.mergedOptions.disabled);\n }\n\n public ngOnInit(): void {\n this.initializeValues();\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.cleanupEventListeners();\n this.cancelAnimationFrame();\n }\n\n private initializeValues(): void {\n if (this.isRange && this._highValue === 0) {\n this.highValue = this.mergedOptions.ceil!;\n }\n }\n private valueToPercentage(value: number): number {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n return ((value - floor) / (ceil - floor)) * 100;\n }\n\n private percentageToValue(percentage: number): number {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const value = (percentage / 100) * (ceil - floor) + floor;\n return this.snapToStep(value);\n }\n\n private snapToStep(value: number): number {\n const step = this.mergedOptions.step || 1;\n return Math.round(value / step) * step;\n }\n\n public onPointerMouseDown(event: MouseEvent, isHighValue: boolean = false): void {\n if (this.isDisabled) return;\n \n event.preventDefault();\n event.stopPropagation();\n \n this.isDragging = true;\n this.draggingPointer = isHighValue ? 'high' : 'low';\n \n this.addVisualFeedback();\n this.addEventListeners();\n }\n\n public onTrackMouseDown(event: MouseEvent): void {\n if (this.isDisabled) return;\n \n const sliderElement = this.elementRef.nativeElement.querySelector('.matcha-slider');\n if (!sliderElement) return;\n \n const rect = sliderElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n this.handleRangeTrackClick(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n private addEventListeners(): void {\n document.addEventListener('mousemove', this.boundOnMouseMove);\n document.addEventListener('mouseup', this.boundOnMouseUp);\n document.addEventListener('mouseleave', this.boundOnMouseUp);\n }\n\n private cleanupEventListeners(): void {\n document.removeEventListener('mousemove', this.boundOnMouseMove);\n document.removeEventListener('mouseup', this.boundOnMouseUp);\n document.removeEventListener('mouseleave', this.boundOnMouseUp);\n }\n\n private onMouseMove(event: MouseEvent): void {\n if (!this.isDragging || !this.draggingPointer) return;\n \n const now = Date.now();\n if (now - this.lastUpdateTime < 16) return;\n this.lastUpdateTime = now;\n \n this.cancelAnimationFrame();\n this.animationFrameId = requestAnimationFrame(() => {\n this.updateSliderPosition(event);\n });\n }\n\n private updateSliderPosition(event: MouseEvent): void {\n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n if (this.draggingPointer === 'low') {\n this.updateLowValue(newValue);\n } else {\n this.updateHighValue(newValue);\n }\n } else {\n this.updateSingleValue(newValue);\n }\n \n this.cdr.detectChanges();\n }\n\n private onMouseUp(): void {\n if (this.isDragging) {\n this.isDragging = false;\n this.draggingPointer = null;\n \n this.removeVisualFeedback();\n this.userChangeEnd.emit(this.value);\n this.onChange(this.isRange ? [this.value, this.highValue] : this.value);\n this.onTouched();\n }\n \n this.cleanupEventListeners();\n this.cancelAnimationFrame();\n }\n\n public onPointerClick(event: MouseEvent, isHighValue: boolean = false): void {\n if (this.isDragging) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n \n if (this.isDisabled) return;\n \n event.stopPropagation();\n \n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n if (isHighValue) {\n this.updateHighValue(newValue);\n } else {\n this.updateLowValue(newValue);\n }\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n public onTrackClick(event: MouseEvent): void {\n if (this.isDisabled) return;\n \n const rect = this.sliderElement?.nativeElement.getBoundingClientRect();\n if (!rect) return;\n \n const newValue = this.calculateValueFromPosition(event.clientX, rect);\n \n if (this.isRange) {\n this.updateRangeValues(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n private calculateValueFromPosition(clientX: number, rect: DOMRect): number {\n const clickX = clientX - rect.left;\n const percentage = Math.max(0, Math.min(100, (clickX / rect.width) * 100));\n return this.percentageToValue(percentage);\n }\n\n private handleRangeTrackClick(newValue: number): void {\n const lowDistance = Math.abs(newValue - this.value);\n const highDistance = Math.abs(newValue - this.highValue);\n \n this.draggingPointer = lowDistance <= highDistance ? 'low' : 'high';\n \n if (this.draggingPointer === 'low') {\n this.updateLowValue(newValue);\n } else {\n this.updateHighValue(newValue);\n }\n }\n\n private addVisualFeedback(): void {\n if (this.sliderElement) {\n this.sliderElement.nativeElement.classList.add('dragging');\n }\n }\n\n private removeVisualFeedback(): void {\n if (this.sliderElement) {\n this.sliderElement.nativeElement.classList.remove('dragging');\n }\n }\n\n private cancelAnimationFrame(): void {\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n }\n\n private updateSingleValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (clampedValue !== this.value) {\n this.value = clampedValue;\n this.valueChange.emit(this.value);\n this.userChange.emit(this.value);\n this.onChange(this.value);\n this.cdr.markForCheck();\n }\n }\n\n private updateRangeValues(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n const lowDistance = Math.abs(clampedValue - this.value);\n const highDistance = Math.abs(clampedValue - this.highValue);\n \n if (lowDistance < highDistance) {\n this.updateLowValue(clampedValue);\n } else {\n this.updateHighValue(clampedValue);\n }\n }\n\n private updateLowValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const minRange = this.mergedOptions.minRange || 0;\n const maxRange = this.mergedOptions.maxRange || 0;\n \n let clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (maxRange > 0) {\n clampedValue = Math.min(clampedValue, this.highValue - maxRange);\n }\n \n if (minRange > 0) {\n clampedValue = Math.max(clampedValue, this.highValue - minRange);\n }\n \n if (this.mergedOptions.noSwitching) {\n clampedValue = Math.min(clampedValue, this.highValue);\n }\n \n if (clampedValue !== this.value) {\n this.value = clampedValue;\n this.valueChange.emit(this.value);\n this.userChange.emit(this.value);\n this.onChange([this.value, this.highValue]);\n this.cdr.markForCheck();\n }\n }\n\n private updateHighValue(newValue: number): void {\n const floor = this.mergedOptions.floor || 0;\n const ceil = this.mergedOptions.ceil || 100;\n const minRange = this.mergedOptions.minRange || 0;\n const maxRange = this.mergedOptions.maxRange || 0;\n \n let clampedValue = Math.max(floor, Math.min(ceil, newValue));\n \n if (maxRange > 0) {\n clampedValue = Math.min(clampedValue, this.value + maxRange);\n }\n \n if (minRange > 0) {\n clampedValue = Math.max(clampedValue, this.value + minRange);\n }\n \n if (this.mergedOptions.noSwitching) {\n clampedValue = Math.max(clampedValue, this.value);\n }\n \n if (clampedValue !== this.highValue) {\n this.highValue = clampedValue;\n this.highValueChange.emit(this.highValue);\n this.userChange.emit(this.highValue);\n this.onChange([this.value, this.highValue]);\n this.cdr.markForCheck();\n }\n }\n\n public onKeyDown(event: KeyboardEvent): void {\n if (this.isDisabled || !this.mergedOptions.keyboardSupport) return;\n \n const step = this.mergedOptions.step || 1;\n let newValue = this.value;\n \n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n newValue = this.value + step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n newValue = this.value - step;\n break;\n case 'Home':\n event.preventDefault();\n newValue = this.mergedOptions.floor || 0;\n break;\n case 'End':\n event.preventDefault();\n newValue = this.mergedOptions.ceil || 100;\n break;\n case 'PageUp':\n event.preventDefault();\n newValue = this.value + (step * 10);\n break;\n case 'PageDown':\n event.preventDefault();\n newValue = this.value - (step * 10);\n break;\n default:\n return;\n }\n \n if (this.isRange) {\n this.updateRangeValues(newValue);\n } else {\n this.updateSingleValue(newValue);\n }\n }\n\n\n\npublic writeValue(value: any): void {\n if (Array.isArray(value)) {\n this.isRangeInternal = true;\n this.value = value[0] || 0;\n this.highValue = value[1] ?? (this.mergedOptions.ceil || 100);\n } else if (typeof value === 'number') {\n this.isRangeInternal = false;\n this.value = value;\n }\n this.cdr.markForCheck();\n}\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n public getPointerStyle(isHighValue: boolean = false): any {\n const percentage = isHighValue ? this.highPercentage : this.percentage;\n return {\n left: `${percentage}%`\n };\n }\n\n public formatValue(value: number): string {\n return this.mergedOptions.format ? this.mergedOptions.format(value) : value.toString();\n }\n}","<!-- projects/matcha-components/src/lib/matcha-slider/slider/slider.component.html -->\n\n<div class=\"matcha-slider\" [class.disabled]=\"isDisabled\" [class.range]=\"isRange\"\n [attr.data-color]=\"color\" #sliderElement>\n\n <div class=\"limit-labels\" *ngIf=\"!mergedOptions.hideLimitLabels\">\n <span class=\"floor-label\" [style.visibility]=\"isAtMinValue ? 'hidden' : 'visible'\">\n {{ formatValue(mergedOptions.floor || 0) }}\n </span>\n \n <span class=\"ceil-label\" [style.visibility]=\"isAtMaxValue ? 'hidden' : 'visible'\">\n {{ formatValue(mergedOptions.ceil || 100) }}\n </span>\n </div>\n \n <div class=\"slider-track\" (mousedown)=\"onTrackMouseDown($event)\" (click)=\"onTrackClick($event)\">\n\n <div class=\"selection-bar\" [style]=\"selectionBarStyle\" *ngIf=\"mergedOptions.showSelectionBar\">\n </div>\n\n <div class=\"pointer low-pointer\" [style]=\"getPointerStyle(false)\"\n [attr.tabindex]=\"isDisabled ? -1 : 0\"\n (mousedown)=\"onPointerMouseDown($event, false)\" (click)=\"onPointerClick($event, false)\"\n (keydown)=\"onKeyDown($event)\" role=\"slider\" [attr.aria-valuemin]=\"mergedOptions.floor\"\n [attr.aria-valuemax]=\"mergedOptions.ceil\" [attr.aria-valuenow]=\"value\"\n [attr.aria-disabled]=\"isDisabled\">\n\n <div class=\"pointer-label\" *ngIf=\"!mergedOptions.hidePointerLabels\">\n {{ formatValue(value) }}\n </div>\n </div>\n\n <div class=\"pointer high-pointer\" [style]=\"getPointerStyle(true)\"\n [attr.tabindex]=\"isDisabled ? -1 : 0\" (mousedown)=\"onPointerMouseDown($event, true)\"\n (click)=\"onPointerClick($event, true)\" (keydown)=\"onKeyDown($event)\" role=\"slider\"\n [attr.aria-valuemin]=\"mergedOptions.floor\" [attr.aria-valuemax]=\"mergedOptions.ceil\"\n [attr.aria-valuenow]=\"highValue\" [attr.aria-disabled]=\"isDisabled\" *ngIf=\"isRange\">\n\n <div class=\"pointer-label\" *ngIf=\"!mergedOptions.hidePointerLabels\">\n {{ formatValue(highValue) }}\n </div>\n </div>\n </div>\n\n</div>","import { Component, Input, Output, EventEmitter, ElementRef, HostBinding, HostListener, AfterViewInit, ContentChildren, QueryList, OnInit } from '@angular/core';\n\n@Component({\n selector: 'matcha-chip',\n standalone: false,\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss']\n})\nexport class MatchaChipComponent implements OnInit, AfterViewInit {\n @HostBinding('class')\n get hostClasses(): string {\n return 'matcha-chip radius-full d-flex align-items-center gap-8 px-14 py-10 h-20';\n }\n /** Cor do chip (primary, accent, warn) */\n @Input() color: 'primary' | 'accent' | 'warn' | string = 'default';\n \n /** Se o chip está selecionado */\n @Input() \n get selected(): boolean {\n return this._selected;\n }\n set selected(value: boolean) {\n this._selected = value;\n this.selectedChange.emit(this._selected);\n }\n private _selected = false;\n\n /** Se o chip pode ser selecionado */\n @Input() selectable: boolean = false;\n\n /** Se o chip pode ser removido */\n @Input() removable: boolean = false;\n\n /** Se o chip está desabilitado */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled = false;\n\n /** Valor associado ao chip */\n @Input() value: any = null;\n\n /** Evento emitido quando o chip é selecionado */\n @Output() selectedChange = new EventEmitter<boolean>();\n\n /** Evento emitido quando o botão de remover é clicado */\n @Output() removed = new EventEmitter<MatchaChipComponent>();\n\n /** Evento emitido quando o chip é destruído */\n @Output() destroyed = new EventEmitter<MatchaChipComponent>();\n\n \n\n constructor(public _elementRef: ElementRef) {}\n\n ngOnInit() {\n // Aplica as classes CSS diretamente no elemento\n const element = this._elementRef.nativeElement;\n element.classList.add('matcha-chip', 'radius-full', 'd-flex', 'align-items-center', 'gap-8', 'px-14', 'py-10', 'h-20');\n }\n\n ngAfterViewInit() {\n this._setupChipRemoveDirective();\n }\n\n private _setupChipRemoveDirective() {\n // Usa event delegation para capturar cliques em elementos com matchaChipRemove\n this._elementRef.nativeElement.addEventListener('click', (event: Event) => {\n const target = event.target as Element;\n \n // Verifica se o elemento clicado tem o atributo matchaChipRemove\n // ou se é um elemento filho de um elemento com matchaChipRemove\n const removeElement = target.closest('[matchaChipRemove]');\n \n if (removeElement) {\n event.stopPropagation();\n event.preventDefault();\n if (this.removable && !this.disabled) {\n this.remove();\n }\n }\n });\n }\n\n hasCustomRemoveIcon(): boolean {\n return this._elementRef.nativeElement.querySelector('[matchaChipRemove]') !== null;\n }\n\n /** Manipula o clique no chip */\n @HostListener('click', ['$event'])\n _handleClick(event: Event) {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.selectable) {\n this.toggleSelected();\n }\n }\n\n /** Manipula o evento de teclado */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n if (this.disabled) {\n return;\n }\n\n switch (event.key) {\n case 'Delete':\n case 'Backspace':\n if (this.removable) {\n this.remove();\n event.preventDefault();\n }\n break;\n case ' ':\n case 'Enter':\n if (this.selectable) {\n this.toggleSelected();\n event.preventDefault();\n }\n break;\n }\n }\n\n /** Alterna o estado de seleção do chip */\n toggleSelected(): void {\n if (this.selectable && !this.disabled) {\n this.selected = !this.selected;\n }\n }\n\n /** Remove o chip */\n remove(): void {\n if (this.removable && !this.disabled) {\n this.removed.emit(this);\n }\n }\n\n /** Foco no elemento do chip */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnDestroy() {\n this.destroyed.emit(this);\n }\n}\n","<span class=\"matcha-chip-content color-label\">\n <ng-content></ng-content>\n</span>\n<ng-container *ngIf=\"removable && !hasCustomRemoveIcon()\">\n <matcha-divider direction=\"vertical\" gap=\"0\"></matcha-divider>\n <button \n type=\"button\"\n class=\"matcha-chip-remove d-flex align-items-center justify-content-center w-20 h-20 min-w-20 radius-full cursor-pointer border-0 background-transparent p-0 m-0\"\n [disabled]=\"disabled\"\n (click)=\"remove(); $event.stopPropagation()\"\n tabindex=\"-1\"\n aria-label=\"Remove\"\n matchaChipRemove>\n <matcha-icon name=\"close\" class=\"fs-14\" color=\"label\"></matcha-icon>\n </button>\n</ng-container>\n","import { \n Component, \n Input, \n Output, \n EventEmitter, \n ContentChildren, \n QueryList, \n AfterContentInit,\n HostBinding,\n HostListener,\n forwardRef,\n OnDestroy,\n OnInit,\n ElementRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatchaChipComponent } from '../chip/chip.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'matcha-chip-list',\n standalone: false,\n templateUrl: './chip-list.component.html',\n styleUrls: ['./chip-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatchaChipListComponent),\n multi: true\n }\n ]\n})\nexport class MatchaChipListComponent implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor {\n \n /** Se múltiplos chips podem ser selecionados */\n @Input() multiple: boolean = false;\n\n /** Se os chips podem ser selecionados */\n @Input() selectable: boolean = false;\n\n /** Se a chip list está desabilitada */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._updateChipsDisabledState();\n }\n private _disabled = false;\n\n /** Valor(es) selecionado(s) */\n @Input()\n get value(): any {\n return this._value;\n }\n set value(newValue: any) {\n this._value = newValue;\n this._updateChipsSelectionState();\n }\n private _value: any;\n\n /** Orientação da lista de chips */\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n /** Evento emitido quando a seleção muda */\n @Output() change = new EventEmitter<any>();\n\n /** Evento emitido quando um chip é removido */\n @Output() removed = new EventEmitter<MatchaChipComponent>();\n\n @ContentChildren(MatchaChipComponent, { descendants: true }) \n chips!: QueryList<MatchaChipComponent>;\n\n @HostBinding('class.matcha-chip-list') chipListClass = true;\n @HostBinding('class.matcha-chip-list-disabled') \n get isDisabled() { return this.disabled; }\n\n @HostBinding('attr.role') role = 'listbox';\n \n @HostBinding('attr.aria-multiselectable')\n get ariaMultiselectable() { return this.multiple ? 'true' : null; }\n\n @HostBinding('attr.aria-disabled')\n get ariaDisabled() { return this.disabled.toString(); }\n\n private _chipSubscriptions: Subscription[] = [];\n private _focusedChipIndex = 0;\n\n // ControlValueAccessor\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(public _elementRef: ElementRef) {}\n\n ngOnInit() {\n // Aplica as classes CSS diretamente no elemento\n const element = this._elementRef.nativeElement;\n element.classList.add('matcha-chip-list');\n }\n\n ngAfterContentInit() {\n this._setupChipListeners();\n this._updateChipsSelectionState();\n this._updateChipsDisabledState();\n\n // Observa mudanças na lista de chips\n this.chips.changes.subscribe(() => {\n this._cleanupChipSubscriptions();\n this._setupChipListeners();\n this._updateChipsSelectionState();\n this._updateChipsDisabledState();\n });\n }\n\n ngOnDestroy() {\n this._cleanupChipSubscriptions();\n }\n\n /** Configura listeners para os chips */\n private _setupChipListeners() {\n this.chips.forEach((chip, index) => {\n // Torna os chips selecionáveis se a lista for selecionável\n if (this.selectable) {\n chip.selectable = true;\n }\n\n // Listener para mudanças de seleção\n const selectedChangeSub = chip.selectedChange.subscribe(() => {\n this._onChipSelectionChange(chip);\n });\n\n // Listener para remoção de chips\n const removedSub = chip.removed.subscribe(() => {\n this._onChipRemoved(chip);\n });\n\n this._chipSubscriptions.push(selectedChangeSub, removedSub);\n });\n }\n\n /** Limpa as subscrições dos chips */\n private _cleanupChipSubscriptions() {\n this._chipSubscriptions.forEach(sub => sub.unsubscribe());\n this._chipSubscriptions = [];\n }\n\n /** Manipula mudança de seleção de um chip */\n private _onChipSelectionChange(chip: MatchaChipComponent) {\n if (this.disabled) {\n return;\n }\n\n if (!this.multiple) {\n // Deseleciona todos os outros chips se não for múltiplo\n this.chips.forEach(c => {\n if (c !== chip && c.selected) {\n c.selected = false;\n }\n });\n }\n\n this._updateValue();\n this.onTouched();\n }\n\n /** Manipula remoção de um chip */\n private _onChipRemoved(chip: MatchaChipComponent) {\n if (this.disabled) {\n return;\n }\n\n // Remove o chip da seleção se estiver selecionado\n if (chip.selected) {\n chip.selected = false;\n this._updateValue();\n }\n\n // Emite o evento de remoção\n this.removed.emit(chip);\n this.onTouched();\n }\n\n\n\n /** Atualiza o valor baseado nos chips selecionados */\n private _updateValue() {\n if (this.multiple) {\n this._value = this.chips\n .filter(chip => chip.selected)\n .map(chip => chip.value);\n } else {\n const selectedChip = this.chips.find(chip => chip.selected);\n this._value = selectedChip ? selectedChip.value : null;\n }\n\n this.onChange(this._value);\n this.change.emit(this._value);\n }\n\n /** Atualiza o estado de seleção dos chips baseado no valor */\n private _updateChipsSelectionState() {\n if (!this.chips) {\n return;\n }\n\n if (this.multiple && Array.isArray(this._value)) {\n this.chips.forEach(chip => {\n chip.selected = this._value.includes(chip.value);\n });\n } else {\n this.chips.forEach(chip => {\n chip.selected = chip.value === this._value;\n });\n }\n }\n\n /** Atualiza o estado desabilitado dos chips */\n private _updateChipsDisabledState() {\n if (!this.chips) {\n return;\n }\n\n this.chips.forEach(chip => {\n chip.disabled = this.disabled;\n });\n }\n\n /** Manipula navegação por teclado */\n @HostListener('keydown', ['$event'])\n _handleKeydown(event: KeyboardEvent) {\n if (this.disabled || !this.chips || this.chips.length === 0) {\n return;\n }\n\n const chipsArray = this.chips.toArray();\n const isHorizontal = this.orientation === 'horizontal';\n\n switch (event.key) {\n case isHorizontal ? 'ArrowLeft' : 'ArrowUp':\n this._focusPreviousChip();\n event.preventDefault();\n break;\n case isHorizontal ? 'ArrowRight' : 'ArrowDown':\n this._focusNextChip();\n event.preventDefault();\n break;\n case 'Home':\n this._focusFirstChip();\n event.preventDefault();\n break;\n case 'End':\n this._focusLastChip();\n event.preventDefault();\n break;\n }\n }\n\n /** Foca no chip anterior */\n private _focusPreviousChip() {\n const chipsArray = this.chips.toArray();\n if (this._focusedChipIndex > 0) {\n this._focusedChipIndex--;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n /** Foca no próximo chip */\n private _focusNextChip() {\n const chipsArray = this.chips.toArray();\n if (this._focusedChipIndex < chipsArray.length - 1) {\n this._focusedChipIndex++;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n /** Foca no primeiro chip */\n private _focusFirstChip() {\n const chipsArray = this.chips.toArray();\n if (chipsArray.length > 0) {\n this._focusedChipIndex = 0;\n chipsArray[0].focus();\n }\n }\n\n /** Foca no último chip */\n private _focusLastChip() {\n const chipsArray = this.chips.toArray();\n if (chipsArray.length > 0) {\n this._focusedChipIndex = chipsArray.length - 1;\n chipsArray[this._focusedChipIndex].focus();\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<div class=\"matcha-chip-list-wrapper\" [class.matcha-chip-list-vertical]=\"orientation === 'vertical'\">\n <ng-content></ng-content>\n</div>","import { Directive, ElementRef, HostListener, Input, Renderer2, OnDestroy, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[matchaTooltip]',\n standalone: false\n})\nexport class MatchaTooltipDirective implements OnDestroy {\n @Input('matchaTooltip') tooltipText: string = '';\n private _tooltipDisabled = false;\n @Input('matchaTooltipDisabled') get tooltipDisabled() { return this._tooltipDisabled; }\n set tooltipDisabled(v: boolean | string) { this._tooltipDisabled = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-disabled')\n get tooltipDisabledAttr(): string | null {\n return this.tooltipDisabled ? 'true' : 'false';\n }\n\n private _preferAbove = false;\n @Input('matchaTooltipAbove') get preferAbove() { return this._preferAbove; }\n set preferAbove(v: boolean | string) { this._preferAbove = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-above')\n get preferAboveAttr(): string | null {\n return this.preferAbove ? 'true' : 'false';\n }\n\n private _preferBelow = false;\n @Input('matchaTooltipBelow') get preferBelow() { return this._preferBelow; }\n set preferBelow(v: boolean | string) { this._preferBelow = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-below')\n get preferBelowAttr(): string | null {\n return this.preferBelow ? 'true' : 'false';\n }\n\n private _preferLeft = false;\n @Input('matchaTooltipLeft') get preferLeft() { return this._preferLeft; }\n set preferLeft(v: boolean | string) { this._preferLeft = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-left')\n get preferLeftAttr(): string | null {\n return this.preferLeft ? 'true' : 'false';\n }\n\n private _preferRight = false;\n @Input('matchaTooltipRight') get preferRight() { return this._preferRight; }\n set preferRight(v: boolean | string) { this._preferRight = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-right')\n get preferRightAttr(): string | null {\n return this.preferRight ? 'true' : 'false';\n }\n\n private _tooltipEnableClose = false;\n @Input('matchaTooltipEnableClose') get tooltipEnableClose() { return this._tooltipEnableClose; }\n set tooltipEnableClose(v: boolean | string) { this._tooltipEnableClose = v === 'false' ? false : !!v; }\n\n @HostBinding('attr.tooltip-enable-close')\n get tooltipEnableCloseAttr(): string | null {\n return this.tooltipEnableClose ? 'true' : 'false';\n }\n\n private tooltipElement: HTMLElement | null = null;\n private documentClickListener: (() => void) | null = null;\n private isDestroyed = false;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.isDestroyed || this.tooltipEnableClose) {\n // Em modo de clique/tap, não abre via hover\n return;\n }\n if (this.tooltipDisabled || this.tooltipElement || !this.tooltipText) {\n return;\n }\n this.createTooltip();\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.isDestroyed || (!this.tooltipEnableClose && this.tooltipElement)) {\n this.destroyTooltip();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.isDestroyed || !this.tooltipEnableClose) {\n return;\n }\n event.stopPropagation();\n if (!this.tooltipElement && !this.tooltipDisabled && this.tooltipText) {\n this.createTooltip();\n }\n }\n\n private createTooltip() {\n // Verificar se já existe um tooltip ativo\n if (this.tooltipElement || this.isDestroyed) {\n return;\n }\n\n // Cria o tooltip e adiciona a classe base\n this.tooltipElement = this.renderer.createElement('div');\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content');\n\n // Define o conteúdo do tooltip\n this.tooltipElement!.textContent = this.tooltipText;\n\n // Define estilos iniciais para medição\n this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');\n this.renderer.setStyle(this.tooltipElement, 'top', '0');\n this.renderer.setStyle(this.tooltipElement, 'left', '0');\n this.renderer.setStyle(this.tooltipElement, 'visibility', 'hidden');\n this.renderer.appendChild(document.body, this.tooltipElement);\n\n // Se tooltipEnableClose estiver ativo, adiciona o botão de fechar\n if (this.tooltipEnableClose) {\n const closeButton = this.renderer.createElement('div');\n this.renderer.addClass(closeButton, 'matcha-tooltip-close');\n this.renderer.appendChild(this.tooltipElement, closeButton);\n this.renderer.listen(closeButton, 'click', (e: Event) => {\n e.stopPropagation();\n this.destroyTooltip();\n });\n // Remover listener anterior se existir\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n\n this.documentClickListener = this.renderer.listen('document', 'click', (e: Event) => {\n if (this.tooltipElement && !this.tooltipElement.contains(e.target as Node)) {\n this.destroyTooltip();\n }\n });\n }\n\n // Medidas e cálculo de posição\n const margin = 8;\n const hostRect = this.el.nativeElement.getBoundingClientRect();\n const tooltipRect = this.tooltipElement!.getBoundingClientRect();\n\n const hasSpaceAbove = hostRect.top >= tooltipRect.height + margin;\n const hasSpaceBelow = (window.innerHeight - hostRect.bottom) >= tooltipRect.height + margin;\n const hasSpaceLeft = hostRect.left >= tooltipRect.width + margin;\n const hasSpaceRight = (window.innerWidth - hostRect.right) >= tooltipRect.width + margin;\n\n let chosenPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n if (this.preferAbove && hasSpaceAbove) {\n chosenPosition = 'above';\n } else if (this.preferBelow && hasSpaceBelow) {\n chosenPosition = 'below';\n } else if (this.preferLeft && hasSpaceLeft) {\n chosenPosition = 'left';\n } else if (this.preferRight && hasSpaceRight) {\n chosenPosition = 'right';\n } else {\n chosenPosition = hasSpaceAbove ? 'above' : (hasSpaceBelow ? 'below' : 'above');\n }\n\n let top: number = 0;\n let left: number = 0;\n switch (chosenPosition) {\n case 'above':\n top = hostRect.top + window.scrollY - tooltipRect.height - margin;\n left = hostRect.left + window.scrollX + (hostRect.width - tooltipRect.width) / 2;\n break;\n case 'below':\n top = hostRect.bottom + window.scrollY + margin;\n left = hostRect.left + window.scrollX + (hostRect.width - tooltipRect.width) / 2;\n break;\n case 'left':\n top = hostRect.top + window.scrollY + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.left + window.scrollX - tooltipRect.width - margin;\n break;\n case 'right':\n top = hostRect.top + window.scrollY + (hostRect.height - tooltipRect.height) / 2;\n left = hostRect.right + window.scrollX + margin;\n break;\n }\n\n if (left < margin) {\n left = margin;\n } else if (left + tooltipRect.width > window.innerWidth - margin) {\n left = window.innerWidth - tooltipRect.width - margin;\n }\n\n this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);\n this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);\n this.renderer.setStyle(this.tooltipElement, 'visibility', 'visible');\n\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_below');\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_left');\n this.renderer.removeClass(this.tooltipElement, 'matcha-tooltip-content_right');\n if (chosenPosition === 'below') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_below');\n } else if (chosenPosition === 'left') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_left');\n } else if (chosenPosition === 'right') {\n this.renderer.addClass(this.tooltipElement, 'matcha-tooltip-content_right');\n }\n }\n\n private destroyTooltip() {\n if (this.tooltipElement) {\n this.renderer.removeChild(document.body, this.tooltipElement);\n this.tooltipElement = null;\n }\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n ngOnDestroy() {\n this.isDestroyed = true;\n this.destroyTooltip();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { MatchaTooltipComponent } from './tooltip/tooltip.component';\nimport { MatchaTooltipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [MatchaTooltipDirective],\n imports: [CommonModule],\n exports: [MatchaTooltipDirective],\n})\nexport class MatchaTooltipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconComponent } from './icon.component';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n@NgModule({\n declarations: [MatchaIconComponent],\n imports: [CommonModule, MatchaTooltipModule],\n exports: [MatchaIconComponent],\n})\nexport class MatchaIconModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaTitleComponent } from './title/title.component';\n\n@NgModule({\n declarations: [MatchaTitleComponent],\n imports: [CommonModule],\n exports: [MatchaTitleComponent],\n})\nexport class MatchaTitleModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaDividerComponent } from './divider/divider.component';\n\n@NgModule({\n declarations: [\n MatchaDividerComponent\n ],\n imports: [CommonModule],\n exports: [\n MatchaDividerComponent\n ],\n})\nexport class MatchaDividerModule {}\n","import { NgModule } from '@angular/core';\n\nimport { MatchaButtonComponent } from './button/button.component';\n\n@NgModule({\n declarations: [MatchaButtonComponent],\n imports: [],\n exports: [MatchaButtonComponent],\n})\nexport class MatchaButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAccordionComponent } from './accordion/accordion.component';\nimport { MatchaAccordionItemComponent } from './accordion-item/accordion-item.component';\nimport { MatchaAccordionHeaderComponent } from './accordion-header/accordion-header.component';\nimport { MatchaAccordionContentComponent } from './accordion-content/accordion-content.component';\n\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\n\n\n@NgModule({\n declarations: [\n MatchaAccordionComponent,\n MatchaAccordionItemComponent,\n MatchaAccordionHeaderComponent,\n MatchaAccordionContentComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n MatchaButtonModule\n ],\n exports: [\n MatchaAccordionComponent,\n MatchaAccordionItemComponent,\n MatchaAccordionHeaderComponent,\n MatchaAccordionContentComponent\n ]\n})\nexport class MatchaAccordionModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaInfiniteScrollComponent } from './matcha-infinite-scroll/matcha-infinite-scroll.component';\nimport { MatchaInfiniteScrollDataComponent } from './matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\n\n\n@NgModule({\n declarations: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent]\n})\nexport class MatchaInfiniteScrollModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaLazyloadComponent } from './lazyload/lazyload.component';\nimport { MatchaLazyloadDataComponent } from './lazyload-data/lazyload-data.component';\n\n\n@NgModule({\n declarations: [MatchaLazyloadComponent, MatchaLazyloadDataComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaLazyloadComponent, MatchaLazyloadDataComponent]\n})\nexport class MatchaLazyloadModule { }\n","import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[elevation]',\n standalone: false\n})\nexport class MatchaElevationDirective {\n @Input('elevation') elevation: number | string = 0; // Valor padrão para elevação é 0\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {}\n\n ngOnChanges() {\n // Remove qualquer classe de elevação existente\n for (let i = 0; i <= 24; i++) {\n this._renderer.removeClass(this._elementRef.nativeElement, `elevation-z-${i}`);\n }\n\n // Converte para número se for string\n const elevationValue = typeof this.elevation === 'string'\n ? parseInt(this.elevation, 10)\n : this.elevation;\n\n // Adiciona a classe de elevação correspondente\n if (elevationValue >= 1 && elevationValue <= 24) {\n this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-${elevationValue}`);\n } else {\n this._renderer.addClass(this._elementRef.nativeElement, `elevation-z-0`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaElevationDirective } from './elevation.directive';\n\n@NgModule({\n declarations: [MatchaElevationDirective],\n imports: [CommonModule],\n exports: [MatchaElevationDirective],\n})\nexport class MatchaElevationModule {}\n","import { Injectable, ComponentRef, createComponent, ApplicationRef, Injector, Type, EmbeddedViewRef, Renderer2, RendererFactory2 } from '@angular/core';\n\n/**\n * Serviço responsável pela implementação técnica do overlay e backdrop dos modais.\n *\n * Este serviço lida com a criação e gerenciamento do container do overlay,\n * criação do backdrop e manipulação do DOM. É um serviço de baixo nível\n * utilizado internamente pelo MatchaModalService.\n *\n * @example\n * ```typescript\n * constructor(private overlayService: MatchaOverlayService) {}\n *\n * createOverlay() {\n * this.overlayService.open(MyComponent);\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class MatchaOverlayService {\n private overlayContainer: HTMLElement | null = null;\n private activeModal: ComponentRef<any> | null = null;\n private backdrop: HTMLElement | null = null;\n private renderer: Renderer2;\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector,\n private rendererFactory: RendererFactory2,\n ) {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n\n /**\n * Cria o container do overlay se ainda não existir.\n * O container é um elemento div que será usado para hospedar os modais.\n *\n * @private\n */\n private createOverlayContainer(): void {\n if (!this.overlayContainer) {\n this.overlayContainer = this.renderer.createElement('div');\n this.renderer.addClass(this.overlayContainer, 'matcha-overlay-container');\n this.renderer.appendChild(document.body, this.overlayContainer);\n }\n }\n\n /**\n * Remove o container do overlay do DOM.\n *\n * @private\n */\n private removeOverlayContainer(): void {\n if (this.overlayContainer) {\n this.renderer.removeChild(document.body, this.overlayContainer);\n this.overlayContainer = null;\n }\n }\n\n /**\n * Cria o backdrop do modal se ainda não existir.\n * O backdrop é um elemento div que cria o efeito de escurecimento\n * por trás do modal.\n *\n * @private\n */\n private createBackdrop(): void {\n if (!this.backdrop) {\n this.backdrop = this.renderer.createElement('div');\n this.renderer.addClass(this.backdrop, 'matcha-modal-backdrop');\n this.renderer.appendChild(document.body, this.backdrop);\n }\n }\n\n /**\n * Remove o backdrop do modal do DOM.\n *\n * @private\n */\n private removeBackdrop(): void {\n if (this.backdrop) {\n this.renderer.removeChild(document.body, this.backdrop);\n this.backdrop = null;\n }\n }\n\n /**\n * Abre um componente dentro de um modal.\n *\n * @param component - O componente que será exibido dentro do modal\n * @param config - Configurações opcionais para o modal\n * @returns Uma referência ao componente criado\n *\n * @example\n * ```typescript\n * const componentRef = this.overlayService.open(MyComponent, {\n * data: { id: 1 }\n * });\n * ```\n */\n open<T>(component: Type<T>, config: any = {}): ComponentRef<T> {\n this.createOverlayContainer();\n this.createBackdrop();\n\n const componentRef = createComponent(component, {\n environmentInjector: this.appRef.injector,\n elementInjector: this.injector,\n });\n\n const componentElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];\n this.renderer.appendChild(this.overlayContainer, componentElement);\n\n this.appRef.attachView(componentRef.hostView);\n this.activeModal = componentRef;\n\n return componentRef;\n }\n\n /**\n * Fecha o modal atualmente aberto e remove o backdrop e o container.\n *\n * @example\n * ```typescript\n * this.overlayService.close();\n * ```\n */\n close(): void {\n if (this.activeModal) {\n this.appRef.detachView(this.activeModal.hostView);\n this.activeModal.destroy();\n this.activeModal = null;\n this.removeBackdrop();\n this.removeOverlayContainer();\n }\n }\n}\n","import { Injectable, Type } from '@angular/core';\nimport { MatchaOverlayService } from './overlay.service';\nimport { Subject, Observable } from 'rxjs';\n\nexport interface ModalComponent {\n afterClose?: Observable<any>;\n data?: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MatchaModalService {\n private afterCloseSubject = new Subject<any>();\n private currentData: any = {};\n\n constructor(private overlayService: MatchaOverlayService) {}\n\n open<T extends ModalComponent>(component: Type<T>, data: any = {}) {\n this.currentData = data;\n const componentRef = this.overlayService.open(component, data);\n\n // Injeta os dados no componente\n componentRef.instance.data = data;\n\n if (componentRef.instance.afterClose) {\n componentRef.instance.afterClose.subscribe((result: any) => {\n this.afterCloseSubject.next(result);\n });\n }\n\n return {\n componentRef,\n afterClose: this.afterCloseSubject.asObservable()\n };\n }\n \n close(result?: any) {\n this.afterCloseSubject.next(result);\n this.overlayService.close();\n this.currentData = {};\n }\n\n getData(): any {\n return this.currentData;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\n\nimport { MatchaModalHeaderComponent } from './modal-header/modal-header.component';\nimport { MatchaModalContentComponent } from './modal-content/modal-content.component';\nimport { MatchaModalFooterComponent } from './modal-footer/modal-footer.component';\nimport { MatchaModalOptionsComponent } from './modal-options/modal-options.component';\nimport { MatchaModalComponent } from './modal/modal.component';\nimport { MatchaModalService } from './modal.service';\nimport { MatchaOverlayService } from './overlay.service';\n\n@NgModule({\n declarations: [\n MatchaModalHeaderComponent,\n MatchaModalContentComponent,\n MatchaModalFooterComponent,\n MatchaModalOptionsComponent,\n MatchaModalComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n MatchaElevationModule\n ],\n exports: [\n MatchaModalHeaderComponent,\n MatchaModalContentComponent,\n MatchaModalFooterComponent,\n MatchaModalOptionsComponent,\n MatchaModalComponent\n ],\n providers: [\n MatchaModalService,\n MatchaOverlayService\n ]\n})\nexport class MatchaModalModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaCardComponent } from './card/card.component';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaElevationModule } from '../matcha-elevation/elevation.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n@NgModule({\n declarations: [MatchaCardComponent],\n imports: [\n CommonModule,\n MatchaElevationModule,\n MatchaIconModule,\n MatchaTitleModule,\n MatchaDividerModule,\n MatchaTooltipModule,\n ],\n exports: [MatchaCardComponent],\n})\nexport class MatchaCardModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaMasonryComponent } from './masonry/masonry.component';\n\n@NgModule({\n declarations: [MatchaMasonryComponent],\n imports: [CommonModule],\n exports: [MatchaMasonryComponent]\n})\nexport class MatchaMasonryModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaButtonToggleComponent } from './button-toggle/button-toggle.component';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\n\n\n\n@NgModule({\n declarations: [MatchaButtonToggleComponent],\n imports: [\n CommonModule,\n MatchaTooltipModule\n ],\n exports: [MatchaButtonToggleComponent]\n})\nexport class MatchaButtonToggleModule { }\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\nimport { MatchaTitleModule } from '../matcha-title/title.module';\nimport { MatchaTooltipModule } from '../matcha-tooltip/tooltip.module';\nimport { MatchaToolbarComponent } from '../matcha-toolbar/toolbar/toolbar.component';\nimport { MatchaToolbarButtonComponent } from \"./toolbar-button/toolbar-button.component\";\nimport { MatchaToolbarContentComponent } from \"./toolbar-content/toolbar-content.component\";\nimport { MatchaToolbarMainButtonComponent } from \"./toolbar-main-button/toolbar-main-button.component\";\nimport { MatchaToolbarCustomButtonComponent } from \"./toolbar-custom-button/toolbar-custom-button.component\";\n\n\n@NgModule({\n declarations: [\n MatchaToolbarComponent,\n MatchaToolbarButtonComponent,\n MatchaToolbarContentComponent,\n MatchaToolbarMainButtonComponent,\n MatchaToolbarCustomButtonComponent\n ],\n imports: [\n CommonModule,\n MatchaButtonModule,\n MatchaTitleModule,\n MatchaTooltipModule\n ],\n exports: [\n MatchaToolbarComponent,\n MatchaToolbarButtonComponent,\n MatchaToolbarContentComponent,\n MatchaToolbarMainButtonComponent,\n MatchaToolbarCustomButtonComponent,\n MatchaTitleModule\n ]\n})\nexport class MatchaToolbarModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaGridComponent } from './grid.component';\n\n@NgModule({\n declarations: [MatchaGridComponent],\n imports: [CommonModule],\n exports: [MatchaGridComponent],\n})\nexport class MatchaGridModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EventEmitter } from '@angular/core';\nimport { MatchaMaskCompatibleDirective } from './matcha-mask-compatible.directive';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MATCHA_MASK_CONFIG, MatchaMaskOptions } from './matcha-mask.config';\n\nexport const compatibleOptions: MatchaMaskOptions = {\n specialCharacters: ['/', '(', ')', '.', ':', '-', ' ', '+', ',', '@', '[', ']', '\"', \"'\", '*'],\n patterns: {\n '0': { pattern: /\\d/ },\n '9': { pattern: /\\d/, optional: true },\n 'A': { pattern: /[a-zA-Z0-9]/ },\n 'S': { pattern: /[a-zA-Z]/ }\n },\n prefix: '',\n suffix: '',\n thousandSeparator: '',\n decimalMarker: '.',\n clearIfNotMatch: false,\n showMaskTyped: false,\n placeHolderCharacter: '_',\n shownMaskExpression: '',\n dropSpecialCharacters: true,\n hiddenInput: false,\n validation: true,\n instantPrefix: false,\n separatorLimit: '',\n apm: false,\n allowNegativeNumbers: false,\n leadZeroDateTime: false,\n leadZero: false,\n triggerOnMaskChange: false,\n keepCharacterPositions: false,\n inputTransformFn: (v) => v as string,\n outputTransformFn: (v) => v,\n maskFilled: new EventEmitter<void>()\n};\n\n@NgModule({\n declarations: [\n MatchaMaskCompatibleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaMaskCompatibleDirective\n ],\n providers: [\n MatchaMaskService,\n { provide: MATCHA_MASK_CONFIG, useValue: compatibleOptions }\n ]\n})\nexport class MatchaMaskModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaFormFieldComponent } from './matcha-form-field/matcha-form-field.component';\nimport { MatchaLabelComponent } from './matcha-label/matcha-label.component';\nimport { MatchaErrorComponent } from './matcha-error/matcha-error.component';\n\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\n\n@NgModule({\n declarations: [MatchaFormFieldComponent, MatchaLabelComponent, MatchaErrorComponent],\n imports: [CommonModule, MatchaIconModule, ReactiveFormsModule, MatchaMaskModule],\n exports: [MatchaFormFieldComponent, MatchaLabelComponent, MatchaErrorComponent, ReactiveFormsModule, MatchaMaskModule],\n})\nexport class MatchaFormFieldModule {}\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy, Renderer2, ChangeDetectorRef, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[matchaAutocomplete]',\n standalone: false,\n})\nexport class MatchaAutocompleteTriggerDirective implements AfterViewInit, OnDestroy {\n @Input('matchaAutocomplete') panel!: MatchaAutocompleteComponent;\n private subs = new Subscription();\n private clearButton?: HTMLElement;\n\n constructor(\n private el: ElementRef<HTMLInputElement>,\n private renderer: Renderer2,\n private cdr: ChangeDetectorRef,\n @Optional() private ngControl: NgControl\n ) {}\n\n ngAfterViewInit() {\n if (!this.panel) {\n throw new Error('Você precisa passar uma referência para <matcha-autocomplete> ex: [matchaAutocomplete]=\"auto\"');\n }\n this.panel.attachTo(this.el.nativeElement);\n\n // close panel ao clicar fora - usando click para evitar conflito com focus\n const clickSub = fromEvent(document, 'click').pipe(\n filter((ev: any) => {\n const target = ev.target as Node;\n const isInsideInput = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\n const isInsidePanel = this.panel?.elRef?.nativeElement?.contains?.(target);\n\n console.log('MatchaAutocomplete: Click outside check', {\n target: target,\n inputElement: this.el.nativeElement,\n isInsideInput,\n isInsidePanel,\n shouldClose: !isInsideInput && !isInsidePanel,\n panelOpen: this.panel?.open\n });\n\n // Só fechar se o painel estiver aberto e clicou fora\n return this.panel?.open && !isInsideInput && !isInsidePanel;\n })\n ).subscribe(() => {\n console.log('MatchaAutocomplete: Fechando painel por click outside');\n this.panel.closePanel();\n });\n\n this.subs.add(clickSub);\n\n // Escutar evento de seleção do autocomplete\n const selectionSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe((event: any) => {\n console.log('MatchaAutocomplete: Evento de seleção recebido na diretiva', event.detail);\n const { value, displayText } = event.detail;\n if (value !== undefined) {\n // Usar displayText se fornecido, senão usar o valor diretamente\n const textToWrite = displayText !== undefined ? displayText : value;\n this.writeValueToInput(textToWrite, value);\n }\n });\n\n this.subs.add(selectionSub);\n\n // Escutar evento de limpeza\n const clearSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\n console.log('MatchaAutocomplete: Evento de limpeza recebido na diretiva');\n this.clearInput();\n });\n\n this.subs.add(clearSub);\n\n // Criar botão de limpar se necessário\n if (this.panel.showClearButton) {\n this.createClearButton();\n\n // Observar mudanças no estado disabled do input\n const input = this.el.nativeElement;\n const observer = new MutationObserver(() => {\n this.updateClearButtonVisibility();\n });\n observer.observe(input, {\n attributes: true,\n attributeFilter: ['disabled']\n });\n // Armazenar observer para cleanup\n (this as any)._disabledObserver = observer;\n }\n\n // Observar mudanças na seleção para mostrar/esconder botão\n const selectionChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-selection').subscribe(() => {\n this.updateClearButtonVisibility();\n });\n\n const clearChangeSub = fromEvent(this.panel.elRef.nativeElement, 'matcha-autocomplete-clear').subscribe(() => {\n this.updateClearButtonVisibility();\n });\n\n this.subs.add(selectionChangeSub);\n this.subs.add(clearChangeSub);\n\n // Observar mudanças no FormControl para sincronizar o input com displayWith\n if (this.ngControl && this.ngControl.control) {\n const controlValueSub = this.ngControl.control.valueChanges.subscribe((value) => {\n console.log('MatchaAutocomplete: FormControl valor mudou', value);\n\n // Se o valor é um objeto, usar displayWith para exibir no input\n if (value && typeof value === 'object') {\n const displayText = this.panel.getDisplayValue(value);\n console.log('MatchaAutocomplete: Atualizando input com displayWith', { value, displayText });\n\n // Atualizar apenas o input visual, sem disparar eventos do FormControl\n const input = this.el.nativeElement;\n if (input.value !== displayText) {\n input.value = displayText;\n }\n\n // Atualizar visibilidade do botão de limpar\n this.updateClearButtonVisibility();\n }\n });\n\n this.subs.add(controlValueSub);\n }\n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n\n // Limpar observer se existir\n if ((this as any)._disabledObserver) {\n (this as any)._disabledObserver.disconnect();\n }\n\n // Remover botão de limpar se existir\n if (this.clearButton && this.clearButton.parentNode) {\n this.renderer.removeChild(this.clearButton.parentNode, this.clearButton);\n }\n }\n\n private writeValueToInput(displayText: string, actualValue?: any) {\n console.log('MatchaAutocomplete: writeValueToInput chamado', {\n displayText,\n actualValue,\n input: this.el.nativeElement\n });\n const input = this.el.nativeElement;\n input.value = displayText == null ? '' : String(displayText);\n\n // Dispatch múltiplos eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n\n // Atualizar visibilidade do botão após escrever valor\n setTimeout(() => {\n this.updateClearButtonVisibility();\n }, 0);\n\n console.log('MatchaAutocomplete: Valor escrito no input', input.value);\n }\n\n private clearInput() {\n const input = this.el.nativeElement;\n input.value = '';\n\n // Dispatch eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n const blurEvent = new Event('blur', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n input.dispatchEvent(blurEvent);\n\n // Atualizar visibilidade do botão\n this.updateClearButtonVisibility();\n\n console.log('MatchaAutocomplete: Input limpo');\n }\n\n @HostListener('click')\n onClick() {\n // Abrir painel quando clicar no input\n this.panel.openPanel();\n }\n\n @HostListener('focus')\n onFocus() {\n // Não abrir automaticamente no focus para evitar conflito com click outside\n // O painel será aberto apenas quando o usuário clicar ou digitar\n }\n\n @HostListener('input', ['$event'])\n onInput(e: Event) {\n // se o usuário digitar, apenas reabre painel. O filtro de opções geralmente é controlado pelo componente pai\n if (!this.panel.open) this.panel.openPanel();\n }\n\n @HostListener('blur')\n onBlur() {\n // Implementar auto-seleção no blur se configurado\n if (!this.panel.autoSelectOnBlur) {\n return;\n }\n\n const input = this.el.nativeElement;\n const currentValue = input.value;\n\n // Se já há uma seleção válida (objeto), verificar se o texto ainda corresponde\n const selectedValue = this.panel.getSelectedValue();\n if (selectedValue !== undefined && selectedValue !== null) {\n // Verificar se o texto do input corresponde ao valor selecionado\n const displayText = this.panel.getDisplayValue(selectedValue);\n if (displayText.toLowerCase().trim() === currentValue.toLowerCase().trim()) {\n // Texto corresponde à seleção, não fazer nada\n return;\n }\n }\n\n // Se o valor é uma string (texto digitado mas não selecionado)\n if (typeof currentValue === 'string' && currentValue.trim() !== '') {\n // Procurar match exato (case-insensitive) nas opções disponíveis\n const exactMatch = this.panel.findOptionByText(currentValue);\n\n if (exactMatch) {\n // Match exato encontrado - selecionar automaticamente\n console.log('MatchaAutocomplete: Match exato encontrado no blur, selecionando automaticamente');\n this.panel.selectOption(exactMatch);\n\n // Emitir evento de auto-seleção\n this.panel.autoSelected.emit(exactMatch.value);\n\n // Atualizar visibilidade do botão de limpar após auto-seleção\n this.updateClearButtonVisibility();\n } else {\n // Nenhum match exato - limpar o campo\n console.log('MatchaAutocomplete: Nenhum match exato encontrado no blur, limpando campo');\n this.panel.clearSelection();\n }\n } else if (currentValue === '' || !currentValue) {\n // Campo vazio - limpar seleção se houver\n if (this.panel.hasSelection()) {\n console.log('MatchaAutocomplete: Campo vazio no blur, limpando seleção');\n this.panel.clearSelection();\n }\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (!this.panel) return;\n\n switch (ev.key) {\n case 'ArrowDown':\n ev.preventDefault();\n this.panel.highlightNext();\n break;\n case 'ArrowUp':\n ev.preventDefault();\n this.panel.highlightPrevious();\n break;\n case 'Enter':\n ev.preventDefault();\n this.panel.selectActive();\n // pega o value escolhido e escreve no input\n setTimeout(() => {\n const val = this.panel.getSelectedValue();\n if (val !== undefined) {\n const displayText = this.panel.getDisplayValue(val);\n this.writeValueToInput(displayText, val);\n }\n });\n break;\n case 'Escape':\n ev.preventDefault();\n this.panel.closePanel();\n break;\n }\n }\n\n // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\n // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\n // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\n // Simples solução: observar clicks nas options via delegation:\n @HostListener('document:click', ['$event'])\n onDocClick(ev: MouseEvent) {\n const target = ev.target as HTMLElement;\n\n // Verificar se o clique foi em uma opção deste painel específico\n const isOptionClick = target.closest('matcha-option') &&\n this.panel?.elRef?.nativeElement?.contains(target);\n\n if (isOptionClick) {\n // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\n setTimeout(() => {\n if (this.panel && typeof this.panel.getSelectedValue === 'function') {\n const val = this.panel.getSelectedValue();\n if (val !== undefined) {\n const displayText = this.panel.getDisplayValue(val);\n this.writeValueToInput(displayText, val);\n }\n }\n }, 10);\n }\n }\n\n private createClearButton(): void {\n if (this.clearButton) return;\n\n const input = this.el.nativeElement;\n const formField = input.closest('matcha-form-field');\n\n if (!formField) {\n console.warn('MatchaAutocomplete: matcha-form-field não encontrado para adicionar botão de limpar');\n return;\n }\n\n // Criar botão\n this.clearButton = this.renderer.createElement('span');\n // Adicionar classe do ícone (formato: i-matcha-{iconName})\n const iconClass = this.panel.clearButtonIcon.startsWith('i-matcha-')\n ? this.panel.clearButtonIcon\n : 'i-matcha-' + this.panel.clearButtonIcon;\n this.renderer.addClass(this.clearButton, iconClass);\n this.renderer.addClass(this.clearButton, 'i-size-sm');\n this.renderer.addClass(this.clearButton, 'matcha-autocomplete-clear-button');\n this.renderer.setStyle(this.clearButton, 'cursor', 'pointer');\n this.renderer.setStyle(this.clearButton, 'position', 'absolute');\n this.renderer.setStyle(this.clearButton, 'right', '12px');\n this.renderer.setStyle(this.clearButton, 'z-index', '10');\n this.renderer.setAttribute(this.clearButton, 'aria-label', this.panel.clearButtonAriaLabel);\n this.renderer.setAttribute(this.clearButton, 'role', 'button');\n this.renderer.setAttribute(this.clearButton, 'tabindex', '0');\n\n // Adicionar evento de clique\n this.renderer.listen(this.clearButton, 'click', (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.panel.clearSelection();\n });\n\n // Adicionar evento de teclado (Enter e Space)\n this.renderer.listen(this.clearButton, 'keydown', (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.panel.clearSelection();\n }\n });\n\n // Inserir botão no form-field (após o input)\n const inputContainer = input.parentElement;\n if (inputContainer) {\n this.renderer.setStyle(inputContainer, 'position', 'relative');\n this.renderer.appendChild(inputContainer, this.clearButton);\n } else {\n this.renderer.appendChild(formField, this.clearButton);\n }\n\n // Atualizar visibilidade inicial\n this.updateClearButtonVisibility();\n }\n\n private updateClearButtonVisibility(): void {\n if (!this.clearButton) return;\n\n const hasSelection = this.panel.hasSelection();\n const isDisabled = this.el.nativeElement.disabled;\n\n if (hasSelection && !isDisabled && this.panel.showClearButton) {\n this.renderer.setStyle(this.clearButton, 'display', 'block');\n } else {\n this.renderer.setStyle(this.clearButton, 'display', 'none');\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaOptionComponent } from './matcha-option.component';\n\n@NgModule({\n declarations: [\n MatchaOptionComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaOptionComponent\n ]\n})\n\nexport class MatchaOptionModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPanelComponent } from './matcha-panel.component';\n\n@NgModule({\n declarations: [\n MatchaPanelComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaPanelComponent\n ]\n})\nexport class MatchaPanelModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAutocompleteComponent } from './matcha-autocomplete.component';\nimport { MatchaAutocompleteTriggerDirective } from './matcha-autocomplete.directive';\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\nimport { MATCHA_OPTION_PARENT } from '../matcha-option/matcha-option-parent.interface';\n\n@NgModule({\n declarations: [\n MatchaAutocompleteComponent,\n MatchaAutocompleteTriggerDirective\n ],\n imports: [\n CommonModule,\n MatchaOptionModule,\n MatchaPanelModule\n ],\n exports: [\n MatchaAutocompleteComponent,\n MatchaAutocompleteTriggerDirective,\n MatchaOptionModule // Re-exporta para conveniência\n ],\n providers: [\n // Provider para permitir injeção da interface MatchaOptionParent\n { provide: MATCHA_OPTION_PARENT, useExisting: MatchaAutocompleteComponent }\n ]\n})\nexport class MatchaAutocompleteModule { }\n\n","import { Directive, Input, HostListener, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\nimport { MatchaSelectComponent } from './matcha-select.component';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[matchaSelect]',\n standalone: false,\n})\nexport class MatchaSelectTriggerDirective implements AfterViewInit, OnDestroy {\n @Input('matchaSelect') select!: MatchaSelectComponent;\n private subs = new Subscription();\n\n constructor(private el: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n if (!this.select) {\n throw new Error('Você precisa passar uma referência para <matcha-select> ex: [matchaSelect]=\"select\"');\n }\n\n // close panel ao clicar fora - usando click para evitar conflito com focus\n const clickSub = fromEvent(document, 'click').pipe(\n filter((ev: any) => {\n const target = ev.target as Node;\n const isInsideTrigger = this.el.nativeElement.contains(target) || this.el.nativeElement === target;\n const isInsidePanel = this.select?.elRef?.nativeElement?.contains?.(target);\n\n console.log('MatchaSelect: Click outside check', {\n target: target,\n triggerElement: this.el.nativeElement,\n isInsideTrigger,\n isInsidePanel,\n shouldClose: !isInsideTrigger && !isInsidePanel,\n panelOpen: this.select?.open\n });\n\n // Só fechar se o painel estiver aberto e clicou fora\n return this.select?.open && !isInsideTrigger && !isInsidePanel;\n })\n ).subscribe(() => {\n console.log('MatchaSelect: Fechando painel por click outside');\n this.select.closePanel();\n });\n\n this.subs.add(clickSub);\n\n // Escutar evento de seleção do select\n const selectionSub = fromEvent(this.select.elRef.nativeElement, 'matcha-select-selection').subscribe((event: any) => {\n console.log('MatchaSelect: Evento de seleção recebido na diretiva', event.detail);\n const { value } = event.detail;\n if (value !== undefined) {\n this.writeValueToInput(value);\n }\n });\n\n this.subs.add(selectionSub);\n }\n\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n\n private writeValueToInput(value: any) {\n console.log('MatchaSelect: writeValueToInput chamado', {\n value,\n input: this.el.nativeElement\n });\n const input = this.el.nativeElement as HTMLInputElement;\n input.value = value == null ? '' : value;\n\n // Dispatch múltiplos eventos para garantir compatibilidade com Angular Forms\n const inputEvent = new Event('input', { bubbles: true });\n const changeEvent = new Event('change', { bubbles: true });\n const blurEvent = new Event('blur', { bubbles: true });\n\n input.dispatchEvent(inputEvent);\n input.dispatchEvent(changeEvent);\n input.dispatchEvent(blurEvent);\n\n console.log('MatchaSelect: Valor escrito no input', input.value);\n }\n\n @HostListener('click')\n onClick() {\n // Abrir painel quando clicar no trigger\n this.select.openPanel();\n }\n\n @HostListener('focus')\n onFocus() {\n // Não abrir automaticamente no focus para evitar conflito com click outside\n // O painel será aberto apenas quando o usuário clicar\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(ev: KeyboardEvent) {\n if (!this.select) return;\n\n switch (ev.key) {\n case 'ArrowDown':\n ev.preventDefault();\n this.select.highlightNext();\n break;\n case 'ArrowUp':\n ev.preventDefault();\n this.select.highlightPrevious();\n break;\n case 'Enter':\n case ' ':\n ev.preventDefault();\n this.select.selectActive();\n // pega o value escolhido e escreve no input\n setTimeout(() => {\n const val = this.select.getSelectedValue();\n if (val !== undefined) this.writeValueToInput(val);\n });\n break;\n case 'Escape':\n ev.preventDefault();\n this.select.closePanel();\n break;\n }\n }\n\n // Se uma opção for selecionada via click (o matcha-option notifica o pai que faz close),\n // lemos selectedValue e escrevemos no input. Como o selectOption do painel fecha imediatamente,\n // precisamos observar mudanças no DOM/QueryList ou checar logo após close.\n // Simples solução: observar clicks nas options via delegation:\n @HostListener('document:click', ['$event'])\n onDocClick(ev: MouseEvent) {\n const target = ev.target as HTMLElement;\n\n // Verificar se o clique foi em uma opção deste painel específico\n const isOptionClick = target.closest('matcha-option') &&\n this.select?.elRef?.nativeElement?.contains(target);\n\n if (isOptionClick) {\n // Se clicou em uma opção deste painel, aguardar um pouco e atualizar o input\n setTimeout(() => {\n if (this.select && typeof this.select.getSelectedValue === 'function') {\n const val = this.select.getSelectedValue();\n if (val !== undefined) this.writeValueToInput(val);\n }\n }, 10);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSelectComponent } from './matcha-select.component';\nimport { MatchaSelectTriggerDirective } from './matcha-select.directive';\nimport { MatchaOptionModule } from '../matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from '../matcha-panel/matcha-panel.module';\n\n@NgModule({\n declarations: [\n MatchaSelectComponent,\n MatchaSelectTriggerDirective\n ],\n imports: [\n CommonModule,\n MatchaOptionModule,\n MatchaPanelModule\n ],\n exports: [\n MatchaSelectComponent,\n MatchaSelectTriggerDirective\n ]\n})\nexport class MatchaSelectModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleDirective } from './ripple.directive';\n\n@NgModule({\n declarations: [\n MatchaRippleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaRippleDirective\n ],\n})\nexport class MatchaRippleModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\nimport { MatchaCheckboxComponent } from './checkbox/checkbox.component';\n\n@NgModule({\n declarations: [\n MatchaCheckboxComponent,\n ],\n imports: [CommonModule, MatchaRippleModule],\n exports: [\n MatchaCheckboxComponent,\n ],\n})\nexport class MatchaCheckboxModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\nimport { MatchaHintTextComponent } from './hint/hint-text.component';\n\n@NgModule({\n declarations: [MatchaHintTextComponent],\n imports: [\n CommonModule,\n MatchaIconModule,\n ],\n exports: [MatchaHintTextComponent],\n})\nexport class MatchaHintTextModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'matcha-overflow-draggable',\n templateUrl: './matcha-overflow-draggable.component.html',\n styleUrls: ['./matcha-overflow-draggable.component.scss'],\n standalone: false\n})\n\nexport class MatchaOverflowDraggableComponent {\n @Input() dragRef: string = '';\n\n public dragToScroll(): void {\n const ele = document.querySelector(`matchaDraggableReference${this.dragRef}`);\n if (ele) {\n let pos = { top: 0, left: 0, x: 0, y: 0 };\n const mouseDownHandler = function (e: any) {\n pos = {\n // The current scroll\n left: ele.scrollLeft,\n top: ele.scrollTop,\n // Get the current mouse position\n x: e.clientX,\n y: e.clientY,\n };\n ele.setAttribute('style', 'cursor: grabbing; user-select: none');\n document.addEventListener('mousemove', mouseMoveHandler);\n document.addEventListener('mouseup', mouseUpHandler);\n };\n\n const mouseMoveHandler = function (e: any) {\n // How far the mouse has been moved\n const dx = e.clientX - pos.x;\n const dy = e.clientY - pos.y;\n // Scroll the element\n ele.scrollTop = pos.top - dy;\n ele.scrollLeft = pos.left - dx;\n };\n\n const mouseUpHandler = function () {\n document.removeEventListener('mousemove', mouseMoveHandler);\n document.removeEventListener('mouseup', mouseUpHandler);\n ele.setAttribute('style', 'cursor: grab; user-select: initial');\n };\n ele.addEventListener('mousedown', mouseDownHandler);\n }\n }\n\n public get classes(): string {\n const draggableReference = this.dragRef ? `matchaDraggableReference${this.dragRef}` : '';\n\n const activeClasses = `${draggableReference}`;\n return activeClasses;\n }\n\n}\n","<div [class]=\"classes\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPaginatorComponent } from './paginator/paginator.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaPaginatorIntl } from './paginator-intl.service';\n\n@NgModule({\n declarations: [MatchaPaginatorComponent],\n imports: [CommonModule, MatchaIconModule],\n exports: [MatchaPaginatorComponent],\n providers: [MatchaPaginatorIntl]\n})\nexport class MatchaPaginatorModule {}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSlideToggleComponent } from './slide-toggle/slide-toggle.component';\nimport { FormsModule } from '@angular/forms';\n\n\n\n\n@NgModule({\n declarations: [MatchaSlideToggleComponent],\n imports: [\n CommonModule,FormsModule\n ],\n exports: [MatchaSlideToggleComponent]\n})\nexport class MatchaSlideToggleModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSpinComponent } from './spin/spin.component';\n\n\n\n@NgModule({\n declarations: [MatchaSpinComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSpinComponent]\n})\nexport class MatchaSpinModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSpinnerComponent } from './spinner/spinner.component';\n\n\n@NgModule({\n declarations: [MatchaSpinnerComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSpinnerComponent]\n})\nexport class MatchaSpinnerModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaTabsComponent } from './tabs/tabs.component';\nimport { MatchaTabItemComponent } from './tab-item/tab-item.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\nexport { TabChangeEvent } from './tabs/tabs.component';\n\n@NgModule({\n declarations: [\n MatchaTabsComponent,\n MatchaTabItemComponent\n ],\n imports: [\n CommonModule,\n MatchaIconModule\n ],\n exports: [\n MatchaTabsComponent,\n MatchaTabItemComponent\n ]\n})\nexport class MatchaTabsModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatchaDateComponent } from './date/matcha-date.component';\n\n@NgModule({\n declarations: [\n MatchaDateComponent\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n MatchaDateComponent\n ]\n})\nexport class MatchaDateModule { }\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaDateRangeComponent } from './date-range/date-range.component';\nimport { MatchaDateModule } from '../matcha-date/matcha-date.module';\n\n@NgModule({\n declarations: [MatchaDateRangeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatchaDateModule\n ],\n exports: [\n MatchaDateRangeComponent,\n MatchaDateModule\n ]\n})\nexport class MatchaDateRangeModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatchaTimeComponent } from './time/time.component';\n\n@NgModule({\n declarations: [MatchaTimeComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule\n ],\n exports: [MatchaTimeComponent]\n})\nexport class MatchaTimeModule { }\n","import { Directive, HostListener } from '@angular/core';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\n\n@Directive({\n selector: '[prevStep]',\n standalone: true\n})\nexport class PrevStepDirective {\n private stepper: MatchaStepperContentComponent | null;\n\n constructor(\n stepper: MatchaStepperContentComponent | null\n ) {\n this.stepper = stepper;\n }\n\n @HostListener('click')\n onClick() {\n this.stepper?.prevStep();\n }\n}","import { Directive, HostListener } from '@angular/core';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\n\n@Directive({\n selector: '[nextStep]',\n standalone: true\n})\nexport class NextStepDirective {\n private stepper: MatchaStepperContentComponent | null;\n\n constructor(\n stepper: MatchaStepperContentComponent | null\n ) {\n this.stepper = stepper;\n }\n\n @HostListener('click')\n onClick() {\n this.stepper?.nextStep();\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaStepperControllerComponent } from './stepper-controller/stepper-controller.component';\nimport { MatchaStepperComponent } from './stepper/stepper.component';\nimport { MatchaStepperContentComponent } from './stepper-content/stepper-content.component';\nimport { StepComponent } from './step/step.component';\nimport { PrevStepDirective } from './prev-step.diretive';\nimport { NextStepDirective } from './next-step.diretive';\n\n@NgModule({\n declarations: [\n MatchaStepperControllerComponent,\n MatchaStepperComponent,\n MatchaStepperContentComponent,\n StepComponent\n ],\n imports: [\n CommonModule,\n PrevStepDirective,\n NextStepDirective,\n ],\n exports: [\n MatchaStepperControllerComponent, \n MatchaStepperComponent, \n MatchaStepperContentComponent,\n StepComponent,\n PrevStepDirective,\n NextStepDirective\n ],\n providers: []\n})\nexport class MatchaStepperModule { }\n","import { Directive, ElementRef, OnInit, HostBinding } from '@angular/core';\nimport { MatchaDragDirective } from './drag.directive';\n\n@Directive({\n selector: '[matchaDragHandle]',\n standalone:false\n})\nexport class MatchaDragHandleDirective implements OnInit {\n\n @HostBinding('class.matcha-drag-handle') get dragHandleClass() {\n return true;\n }\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private dragDirective: MatchaDragDirective\n ) {}\n\n ngOnInit() {\n this.dragDirective.setDragHandle(this.elementRef.nativeElement);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatchaDropListComponent } from './drop-list/drop-list.component';\nimport { MatchaDragDirective } from './directives/drag.directive';\nimport { MatchaDragHandleDirective } from './directives/drag-handle.directive';\nimport { MatchaDropListService } from './services/drop-list.service';\n\n@NgModule({\n declarations: [\n MatchaDropListComponent,\n MatchaDragDirective,\n MatchaDragHandleDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n MatchaDropListComponent,\n MatchaDragDirective,\n MatchaDragHandleDirective\n ],\n providers: [\n MatchaDropListService\n ]\n})\nexport class MatchaDropListModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatchaInputPhoneComponent } from \"./input-phone.component\";\n\n// dependencies\nimport { FormsModule } from '@angular/forms';\nimport { MatchaFormFieldModule } from '../matcha-form-field/matcha-form-field.module';\nimport { MatchaMaskModule } from '../matcha-mask/matcha-mask.module';\n@NgModule({\n declarations: [MatchaInputPhoneComponent],\n imports: [\n CommonModule,\n MatchaFormFieldModule,\n FormsModule,\n MatchaMaskModule\n ],\n exports: [MatchaInputPhoneComponent]\n})\nexport class MatchaInputPhoneModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaPageLayoutComponent } from './page-layout.component';\nimport { MatchaStepperModule } from '../matcha-stepper/stepper.module';\n\n\n@NgModule({\n declarations: [\n MatchaPageLayoutComponent\n ],\n imports: [\n CommonModule,\n MatchaStepperModule\n ],\n exports: [\n MatchaPageLayoutComponent\n ]\n})\nexport class MatchaPageLayoutModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaRippleModule } from '../matcha-ripple/ripple.module';\nimport { MatchaRadioComponent } from './radio/radio.component';\n\n\n@NgModule({\n declarations: [\n MatchaRadioComponent,\n ],\n imports: [CommonModule, MatchaRippleModule],\n exports: [\n MatchaRadioComponent,\n ],\n})\nexport class MatchaRadioModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaAvatarComponent } from './avatar/avatar.component';\n\n\n\n\n@NgModule({\n declarations: [MatchaAvatarComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaAvatarComponent]\n})\nexport class MatchaAvatarModule { }\n\n\n","import { Injectable, OnDestroy, PLATFORM_ID, Inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, Observable, fromEvent, of } from 'rxjs';\nimport { map, debounceTime, distinctUntilChanged, startWith } from 'rxjs/operators';\n\nexport interface BreakpointState {\n matches: boolean;\n breakpoint: string;\n}\n\n/**\n * Serviço singleton para observação de breakpoints CSS\n * Funciona tanto no browser quanto no servidor (SSR)\n */\n@Injectable({\n providedIn: 'root' // Singleton garantido pelo Angular\n})\nexport class MatchaBreakpointObserver implements OnDestroy {\n private breakpointSubject = new BehaviorSubject<BreakpointState>({\n matches: false,\n breakpoint: ''\n });\n\n private resizeSubscription: any;\n private isBrowser: boolean;\n private currentBreakpoints = new Map<string, boolean>();\n\n constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n this.isBrowser = isPlatformBrowser(this.platformId);\n\n if (this.isBrowser) {\n this.setupResizeListener();\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n\n /**\n * Observa um breakpoint específico\n * @param breakpoint - String no formato CSS media query (ex: '(max-width: 768px)')\n * @returns Observable<BreakpointState>\n */\n observe(breakpoint: string): Observable<BreakpointState> {\n if (!this.isBrowser) {\n // No servidor, retorna um observable que emite false\n return of({ matches: false, breakpoint });\n }\n\n // Emite o estado inicial\n const initialState = this.getState(breakpoint);\n\n return this.breakpointSubject.asObservable().pipe(\n startWith(initialState),\n map(() => this.getState(breakpoint)),\n distinctUntilChanged((prev, curr) =>\n prev.matches === curr.matches && prev.breakpoint === curr.breakpoint\n )\n );\n }\n\n /**\n * Verifica se um breakpoint específico está ativo\n * @param breakpoint - String no formato CSS media query\n * @returns boolean\n */\n isMatched(breakpoint: string): boolean {\n if (!this.isBrowser) {\n return false;\n }\n return this.checkBreakpoint(breakpoint);\n }\n\n /**\n * Obtém o estado atual do breakpoint\n * @param breakpoint - String no formato CSS media query\n * @returns BreakpointState\n */\n getState(breakpoint: string): BreakpointState {\n return {\n matches: this.isMatched(breakpoint),\n breakpoint\n };\n }\n\n /**\n * Observa múltiplos breakpoints simultaneamente\n * @param breakpoints - Array de strings de breakpoints\n * @returns Observable<Map<string, boolean>>\n */\n observeMultiple(breakpoints: string[]): Observable<Map<string, boolean>> {\n if (!this.isBrowser) {\n const emptyMap = new Map<string, boolean>();\n breakpoints.forEach(bp => emptyMap.set(bp, false));\n return of(emptyMap);\n }\n\n return this.breakpointSubject.asObservable().pipe(\n startWith({ matches: false, breakpoint: '' }),\n map(() => {\n const result = new Map<string, boolean>();\n breakpoints.forEach(bp => {\n result.set(bp, this.checkBreakpoint(bp));\n });\n return result;\n }),\n distinctUntilChanged((prev, curr) => {\n if (prev.size !== curr.size) return false;\n for (const [key, value] of prev) {\n if (curr.get(key) !== value) return false;\n }\n return true;\n })\n );\n }\n\n private setupResizeListener(): void {\n if (!this.isBrowser) return;\n\n // Usa fromEvent para criar um observable do evento resize\n this.resizeSubscription = fromEvent(window, 'resize')\n .pipe(\n debounceTime(100) // Debounce para evitar muitas chamadas\n )\n .subscribe(() => {\n // Limpa o cache de breakpoints\n this.currentBreakpoints.clear();\n\n // Emite um novo evento para forçar reavaliação\n this.breakpointSubject.next({\n matches: false,\n breakpoint: ''\n });\n });\n }\n\n private checkBreakpoint(breakpoint: string): boolean {\n if (!this.isBrowser) return false;\n\n // Verifica cache primeiro\n if (this.currentBreakpoints.has(breakpoint)) {\n return this.currentBreakpoints.get(breakpoint)!;\n }\n\n try {\n // Remove parênteses se existirem\n const cleanBreakpoint = breakpoint.replace(/[()]/g, '');\n\n // Extrai o valor numérico e a condição\n const match = cleanBreakpoint.match(/(max-width|min-width|max-height|min-height):\\s*(\\d+)px/);\n\n if (!match) {\n console.warn(`Breakpoint inválido: ${breakpoint}`);\n this.currentBreakpoints.set(breakpoint, false);\n return false;\n }\n\n const [, condition, value] = match;\n const numericValue = parseInt(value, 10);\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n let result = false;\n switch (condition) {\n case 'max-width':\n result = windowWidth <= numericValue;\n break;\n case 'min-width':\n result = windowWidth >= numericValue;\n break;\n case 'max-height':\n result = windowHeight <= numericValue;\n break;\n case 'min-height':\n result = windowHeight >= numericValue;\n break;\n default:\n result = false;\n }\n\n // Armazena no cache\n this.currentBreakpoints.set(breakpoint, result);\n return result;\n } catch (error) {\n console.error('Erro ao verificar breakpoint:', error);\n this.currentBreakpoints.set(breakpoint, false);\n return false;\n }\n }\n\n /**\n * Método utilitário para criar breakpoints comuns\n */\n static createBreakpoint(width: number, condition: 'max' | 'min' = 'max'): string {\n const prefix = condition === 'max' ? 'max-width' : 'min-width';\n return `(${prefix}: ${width}px)`;\n }\n\n /**\n * Breakpoints pré-definidos para facilitar o uso\n */\n static readonly BREAKPOINTS = {\n XS: '(max-width: 480px)',\n SM: '(max-width: 768px)',\n MD: '(max-width: 1024px)',\n LG: '(max-width: 1200px)',\n XL: '(max-width: 1440px)',\n MOBILE: '(max-width: 768px)',\n TABLET: '(min-width: 769px) and (max-width: 1024px)',\n DESKTOP: '(min-width: 1025px)'\n } as const;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaDrawerComponent } from './drawer/drawer.component';\nimport { MatchaDrawerContainerComponent } from './drawer-container/drawer-container.component';\nimport { MatchaDrawerContentComponent } from './drawer-content/drawer-content.component';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\nimport { MatchaBreakpointObserver } from '../matcha-breakpoint-observable/breakpoint-observer.service';\n\n@NgModule({\n declarations: [\n MatchaDrawerComponent,\n MatchaDrawerContainerComponent,\n MatchaDrawerContentComponent\n ],\n imports: [\n CommonModule,\n MatchaButtonModule\n ],\n providers: [\n MatchaBreakpointObserver\n ],\n exports: [\n MatchaDrawerComponent,\n MatchaDrawerContainerComponent,\n MatchaDrawerContentComponent\n ]\n})\nexport class MatchaDrawerModule { }\n","import { NgModule } from '@angular/core';\n\nimport { MatchaHighlightComponent } from './highlight.component';\nimport { CopyButtonComponent } from './copy-button/copy-button.component';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\nimport { MatchaButtonModule } from '../matcha-button/button.module';\n\n// Prism.js será carregado dinamicamente no componente quando necessário\n\n@NgModule({\n declarations: [\n MatchaHighlightComponent,\n CopyButtonComponent\n ],\n imports: [\n MatchaIconModule,\n MatchaButtonModule\n ],\n exports: [\n MatchaHighlightComponent,\n CopyButtonComponent\n ],\n})\nexport class MatchaHighlightModule\n{\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatchaSliderComponent } from './slider/slider.component';\n\n\n@NgModule({\n declarations: [MatchaSliderComponent],\n imports: [\n CommonModule,FormsModule\n ],\n exports: [MatchaSliderComponent]\n})\nexport class MatchaSliderModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaChipComponent } from './chip/chip.component';\nimport { MatchaChipListComponent } from './chip-list/chip-list.component';\nimport { MatchaDividerModule } from '../matcha-divider/divider.module';\nimport { MatchaIconModule } from '../matcha-icon/icon.module';\n\n@NgModule({\n declarations: [\n MatchaChipComponent,\n MatchaChipListComponent\n ],\n imports: [CommonModule, MatchaDividerModule, MatchaIconModule],\n exports: [\n MatchaChipComponent,\n MatchaChipListComponent\n ],\n})\nexport class MatchaChipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatchaAutocompleteModule } from './matcha-autocomplete/matcha-autocomplete.module';\nimport { MatchaOptionModule } from './matcha-option/matcha-option.module';\nimport { MatchaPanelModule } from './matcha-panel/matcha-panel.module';\nimport { MatchaSelectModule } from './matcha-select/matcha-select.module';\nimport { MatchaAccordionModule } from './matcha-accordion/accordion.module';\nimport { MatchaButtonModule } from './matcha-button/button.module';\nimport { MatchaButtonToggleModule } from './matcha-button-toggle/button-toggle.module';\nimport { MatchaCardModule } from './matcha-card/card.module';\nimport { MatchaCheckboxModule } from './matcha-checkbox/checkbox.module';\nimport { MatchaDividerModule } from './matcha-divider/divider.module';\nimport { MatchaElevationModule } from './matcha-elevation/elevation.module';\nimport { MatchaFormFieldModule } from './matcha-form-field/matcha-form-field.module';\nimport { MatchaHintTextModule } from './matcha-hint-text/hint.module';\nimport { MatchaIconModule } from './matcha-icon/icon.module';\nimport { MatchaInfiniteScrollModule } from './matcha-infinite-scroll/matcha-infinite-scroll.module';\nimport { MatchaMasonryModule } from './matcha-masonry/masonry.module';\nimport { MatchaModalModule } from './matcha-modal/matcha-modal.module';\nimport { MatchaOverflowDraggableComponent } from './matcha-overflow-draggable/matcha-overflow-draggable.component';\nimport { MatchaPaginatorModule } from './matcha-paginator/paginator.module';\nimport { MatchaRippleModule } from './matcha-ripple/ripple.module';\nimport { MatchaSlideToggleModule } from './matcha-slide-toggle/slide-toggle.module';\n\nimport { MatchaSpinModule } from './matcha-spin/spin.module';\nimport { MatchaSpinnerModule } from './matcha-spinner/spinner.module';\nimport { MatchaTabsModule } from './matcha-tabs/tabs.module';\nimport { MatchaTitleModule } from './matcha-title/title.module';\nimport { MatchaTooltipModule } from './matcha-tooltip/tooltip.module';\nimport { MatchaDateRangeModule } from './matcha-date-range/date-range.module';\nimport { MatchaTimeModule } from './matcha-time/time.module';\nimport { MatchaStepperModule } from './matcha-stepper/stepper.module';\nimport { MatchaDropListModule } from './matcha-drop-list/drop-list.module';\nimport { MatchaInputPhoneModule } from './matcha-input-phone/input-phone.module';\nimport { MatchaPageLayoutModule } from './matcha-page-layout/page-layout.module';\nimport { MatchaLazyloadModule } from './matcha-lazyload/lazyload.module';\nimport { MatchaRadioModule } from './matcha-radio/radio.module';\nimport { MatchaAvatarModule } from './matcha-avatar/avatar.module';\nimport { MatchaDrawerModule } from './matcha-drawer/drawer.module';\nimport { MatchaHighlightModule } from './matcha-highlight/highlight.module';\nimport { MatchaSliderModule } from './matcha-slider/slider.module';\nimport { MatchaMaskModule } from './matcha-mask/matcha-mask.module';\nimport { MatchaChipModule } from './matcha-chip/chip.module';\n@NgModule({\n declarations: [MatchaOverflowDraggableComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatchaAccordionModule,\n MatchaAutocompleteModule,\n MatchaOptionModule,\n MatchaPanelModule,\n MatchaSelectModule,\n MatchaButtonModule,\n MatchaButtonToggleModule,\n MatchaCardModule,\n MatchaCheckboxModule,\n MatchaRadioModule,\n MatchaDividerModule,\n MatchaElevationModule,\n MatchaFormFieldModule,\n MatchaHintTextModule,\n MatchaIconModule,\n MatchaInfiniteScrollModule,\n MatchaLazyloadModule,\n MatchaInputPhoneModule,\n MatchaMasonryModule,\n MatchaModalModule,\n MatchaPaginatorModule,\n MatchaRippleModule,\n MatchaSlideToggleModule,\n MatchaSliderModule,\n MatchaSpinModule,\n MatchaSpinnerModule,\n MatchaStepperModule,\n MatchaTabsModule,\n MatchaTitleModule,\n MatchaTooltipModule,\n MatchaDateRangeModule,\n MatchaTimeModule,\n MatchaDropListModule,\n MatchaPageLayoutModule,\n MatchaDrawerModule,\n MatchaHighlightModule,\n MatchaMaskModule,\n MatchaChipModule\n ],\n exports: [MatchaAccordionModule,\n MatchaAutocompleteModule,\n MatchaOptionModule,\n MatchaPanelModule,\n MatchaSelectModule,\n MatchaButtonModule,\n MatchaButtonToggleModule,\n MatchaCardModule,\n MatchaCheckboxModule,\n MatchaRadioModule,\n MatchaDividerModule,\n MatchaElevationModule,\n MatchaFormFieldModule,\n MatchaHintTextModule,\n MatchaIconModule,\n MatchaInfiniteScrollModule,\n MatchaLazyloadModule,\n MatchaInputPhoneModule,\n MatchaMasonryModule,\n MatchaModalModule,\n MatchaPaginatorModule,\n MatchaRippleModule,\n MatchaSlideToggleModule,\n MatchaSliderModule,\n MatchaSpinModule,\n MatchaSpinnerModule,\n MatchaStepperModule,\n MatchaTabsModule,\n MatchaTitleModule,\n MatchaTooltipModule,\n MatchaDateRangeModule,\n MatchaTimeModule,\n MatchaDropListModule,\n MatchaPageLayoutModule,\n MatchaAvatarModule,\n MatchaDrawerModule,\n MatchaHighlightModule,\n MatchaMaskModule,\n MatchaChipModule\n ],\n})\nexport class MatchaComponentsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaSkeletonComponent } from './skeleton/skeleton.component';\n@NgModule({\n declarations: [MatchaSkeletonComponent],\n imports: [\n CommonModule\n ],\n exports: [MatchaSkeletonComponent],\n})\nexport class MatchaSkeletonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatchaBreakpointObserver } from './breakpoint-observer.service';\n\n/**\n * Módulo para o MatchaBreakpointObserver\n *\n * Este módulo fornece o serviço MatchaBreakpointObserver que pode ser usado\n * em qualquer parte da aplicação para observar breakpoints CSS.\n *\n * O serviço é um singleton (providedIn: 'root') e não precisa ser importado\n * explicitamente, mas este módulo pode ser usado para organização.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n providers: [\n // O serviço já é providedIn: 'root', mas incluímos aqui para clareza\n MatchaBreakpointObserver\n ]\n})\nexport class MatchaBreakpointObservableModule { }\n","import type { PipeTransform } from '@angular/core';\nimport { inject, Pipe } from '@angular/core';\n\nimport type { MatchaMaskConfig } from './matcha-mask.config';\nimport { MATCHA_MASK_CONFIG } from './matcha-mask.config';\nimport { MatchaMaskService } from './matcha-mask.service';\nimport { MaskExpression } from './matcha-mask-expression.enum';\n\n@Pipe({\n name: 'mask',\n pure: true,\n standalone: false,\n})\nexport class MatchaMaskPipe implements PipeTransform {\n private readonly defaultOptions = inject<MatchaMaskConfig>(MATCHA_MASK_CONFIG);\n\n private readonly _maskService = inject(MatchaMaskService);\n\n private _maskExpressionArray: string[] = [];\n\n private mask = '';\n\n public transform(\n value: string | number,\n mask: string,\n { patterns, ...config }: Partial<MatchaMaskConfig> = {} as Partial<MatchaMaskConfig>\n ): string {\n let processedValue: string | number = value;\n\n const currentConfig = {\n maskExpression: mask,\n ...this.defaultOptions,\n ...config,\n patterns: {\n ...this._maskService.patterns,\n ...patterns,\n },\n };\n\n Object.entries(currentConfig).forEach(([key, val]) => {\n (this._maskService as any)[key] = val;\n });\n\n if (mask.includes('||')) {\n const maskParts = mask.split('||');\n if (maskParts.length > 1) {\n this._maskExpressionArray = maskParts.sort(\n (a: string, b: string) => a.length - b.length\n );\n this._setMask(`${processedValue}`);\n return this._maskService.applyMask(`${processedValue}`, this.mask);\n } else {\n this._maskExpressionArray = [];\n return this._maskService.applyMask(`${processedValue}`, this.mask);\n }\n }\n\n if (mask.includes(MaskExpression.CURLY_BRACKETS_LEFT)) {\n return this._maskService.applyMask(\n `${processedValue}`,\n this._maskService._repeatPatternSymbols(mask)\n );\n }\n\n if (mask.startsWith(MaskExpression.SEPARATOR)) {\n if (config.decimalMarker) {\n this._maskService.decimalMarker = config.decimalMarker;\n }\n if (config.thousandSeparator) {\n this._maskService.thousandSeparator = config.thousandSeparator;\n }\n if (config.leadZero) {\n this._maskService.leadZero = config.leadZero;\n }\n\n processedValue = String(processedValue);\n const localeDecimalMarker = this._maskService.currentLocaleDecimalMarker();\n\n if (!Array.isArray(this._maskService.decimalMarker)) {\n processedValue =\n this._maskService.decimalMarker !== localeDecimalMarker\n ? (processedValue as string).replace(\n localeDecimalMarker,\n this._maskService.decimalMarker\n )\n : processedValue;\n }\n\n if (\n this._maskService.leadZero &&\n processedValue &&\n this._maskService.dropSpecialCharacters !== false\n ) {\n processedValue = this._maskService._checkPrecision(mask, processedValue as string);\n }\n\n if (this._maskService.decimalMarker === MaskExpression.COMMA) {\n processedValue = (processedValue as string).replace(\n MaskExpression.DOT,\n MaskExpression.COMMA\n );\n }\n\n this._maskService.isNumberValue = true;\n }\n\n if (processedValue === null || typeof processedValue === 'undefined') {\n return this._maskService.applyMask('', mask);\n }\n\n return this._maskService.applyMask(`${processedValue}`, mask);\n }\n\n private _setMask(value: string) {\n if (this._maskExpressionArray.length > 0) {\n this._maskExpressionArray.some((mask): boolean | void => {\n const test =\n this._maskService.removeMask(value)?.length <=\n this._maskService.removeMask(mask)?.length;\n if (value && test) {\n this.mask = mask;\n return test;\n } else {\n this.mask =\n this._maskExpressionArray[this._maskExpressionArray.length - 1] ??\n MaskExpression.EMPTY_STRING;\n }\n });\n }\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[step]'\n})\nexport class StepContentDirective {\n @Input('step') step!: string;\n constructor(public template: TemplateRef<any>) {}\n}","/*\n * Public API Surface of matcha-components\n */\n\n// -----------------------------------------------------------\n// INTERFACES\n// -----------------------------------------------------------\nexport * from './lib/matcha-option/matcha-option-parent.interface';\n\n// -----------------------------------------------------------\n// COMPONENTS\n// -----------------------------------------------------------\nexport * from './lib/matcha-accordion/accordion/accordion.component';\nexport * from './lib/matcha-accordion/accordion-item/accordion-item.component';\nexport * from './lib/matcha-accordion/accordion-header/accordion-header.component';\nexport * from './lib/matcha-accordion/accordion-content/accordion-content.component';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll/matcha-infinite-scroll.component';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll-data/matcha-infinite-scroll-data.component';\nexport * from './lib/matcha-lazyload/lazyload/lazyload.component';\nexport * from './lib/matcha-lazyload/lazyload-data/lazyload-data.component';\nexport * from './lib/matcha-button/button/button.component';\nexport * from './lib/matcha-card/card/card.component';\nexport * from './lib/matcha-divider/divider/divider.component';\nexport * from './lib/matcha-title/title/title.component';\nexport * from './lib/matcha-drawer/drawer/drawer.component';\nexport * from './lib/matcha-drawer/drawer-container/drawer-container.component';\nexport * from './lib/matcha-drawer/drawer-content/drawer-content.component';\nexport * from './lib/matcha-icon/icon.component';\nexport * from './lib/matcha-grid/grid.component';\nexport * from './lib/matcha-masonry/masonry/masonry.component';\nexport * from './lib/matcha-modal/modal-content/modal-content.component';\nexport * from './lib/matcha-modal/modal-header/modal-header.component';\nexport * from './lib/matcha-modal/modal-footer/modal-footer.component';\nexport * from './lib/matcha-modal/modal-options/modal-options.component';\nexport * from './lib/matcha-modal/modal/modal.component';\nexport * from './lib/matcha-toolbar/toolbar/toolbar.component';\nexport * from './lib/matcha-toolbar/toolbar-button/toolbar-button.component';\nexport * from './lib/matcha-toolbar/toolbar-content/toolbar-content.component';\nexport * from './lib/matcha-toolbar/toolbar-main-button/toolbar-main-button.component';\nexport * from './lib/matcha-toolbar/toolbar-custom-button/toolbar-custom-button.component';\nexport * from './lib/matcha-form-field/matcha-form-field/matcha-form-field.component';\nexport * from './lib/matcha-form-field/matcha-label/matcha-label.component';\nexport * from './lib/matcha-form-field/matcha-error/matcha-error.component';\nexport * from './lib/matcha-checkbox/checkbox/checkbox.component';\nexport * from './lib/matcha-radio/radio/radio.component';\nexport * from './lib/matcha-spin/spin/spin.component';\nexport * from './lib/matcha-spinner/spinner/spinner.component';\nexport * from './lib/matcha-hint-text/hint/hint-text.component';\nexport * from './lib/matcha-skeleton/skeleton/skeleton.component';\nexport * from './lib/matcha-slide-toggle/slide-toggle/slide-toggle.component';\nexport * from './lib/matcha-button-toggle/button-toggle/button-toggle.component';\nexport * from './lib/matcha-tabs/tabs/tabs.component';\nexport * from './lib/matcha-tabs/tab-item/tab-item.component';\nexport * from './lib/matcha-date/date/matcha-date.component';\nexport * from './lib/matcha-date-range/date-range/date-range.component';\nexport * from './lib/matcha-time/time/time.component';\nexport * from './lib/matcha-input-phone/input-phone.component';\nexport * from './lib/matcha-stepper/step/step.component';\nexport * from './lib/matcha-stepper/stepper/stepper.component';\nexport * from './lib/matcha-stepper/stepper-content/stepper-content.component';\nexport * from './lib/matcha-stepper/stepper-controller/stepper-controller.component';\nexport * from './lib/matcha-drop-list/drop-list/drop-list.component';\nexport * from './lib/matcha-page-layout/page-layout.component';\nexport * from './lib/matcha-avatar/avatar/avatar.component';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.component';\nexport * from './lib/matcha-option/matcha-option.component';\nexport * from './lib/matcha-panel/matcha-panel.component';\nexport * from './lib/matcha-select/matcha-select.component';\nexport * from './lib/matcha-paginator/paginator/paginator.component';\nexport * from './lib/matcha-paginator/paginator/page-event.interface';\nexport * from './lib/matcha-paginator/paginator-intl.service';\nexport * from './lib/matcha-highlight/highlight.component';\nexport * from './lib/matcha-highlight/copy-button/copy-button.component';\nexport * from './lib/matcha-slider/slider/slider.component';\nexport * from './lib/matcha-chip/chip/chip.component';\nexport * from './lib/matcha-chip/chip-list/chip-list.component';\n\n// -----------------------------------------------------------\n// MODULES\n// -----------------------------------------------------------\nexport * from './lib/matcha-accordion/accordion.module';\nexport * from './lib/matcha-infinite-scroll/matcha-infinite-scroll.module';\nexport * from './lib/matcha-lazyload/lazyload.module';\nexport * from './lib/matcha-modal/matcha-modal.module';\nexport * from './lib/matcha-card/card.module';\nexport * from './lib/matcha-masonry/masonry.module';\nexport * from './lib/matcha-title/title.module';\nexport * from './lib/matcha-button/button.module';\nexport * from './lib/matcha-button-toggle/button-toggle.module';\nexport * from './lib/matcha-toolbar/toolbar.module';\nexport * from './lib/matcha-tooltip/tooltip.module';\nexport * from './lib/matcha-divider/divider.module';\nexport * from './lib/matcha-elevation/elevation.module';\nexport * from './lib/matcha-grid/grid.module';\nexport * from './lib/matcha-form-field/matcha-form-field.module';\nexport * from './lib/matcha-components.module';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.module';\nexport * from './lib/matcha-option/matcha-option.module';\nexport * from './lib/matcha-select/matcha-select.module';\nexport * from './lib/matcha-tabs/tabs.module';\nexport * from './lib/matcha-checkbox/checkbox.module';\nexport * from './lib/matcha-radio/radio.module';\nexport * from './lib/matcha-icon/icon.module';\nexport * from './lib/matcha-paginator/paginator.module';\nexport * from './lib/matcha-skeleton/skeleton.module';\nexport * from './lib/matcha-slide-toggle/slide-toggle.module';\nexport * from './lib/matcha-slider/slider.module';\nexport * from './lib/matcha-ripple/ripple.module';\nexport * from './lib/matcha-spin/spin.module';\nexport * from './lib/matcha-spinner/spinner.module';\nexport * from './lib/matcha-hint-text/hint.module';\nexport * from './lib/matcha-input-phone/input-phone.module';\nexport * from './lib/matcha-stepper/stepper.module';\nexport * from './lib/matcha-drop-list/drop-list.module';\nexport * from './lib/matcha-page-layout/page-layout.module';\nexport * from './lib/matcha-avatar/avatar.module';\nexport * from './lib/matcha-drawer/drawer.module';\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observable.module';\nexport * from './lib/matcha-panel/matcha-panel.module';\nexport * from './lib/matcha-highlight/highlight.module';\nexport * from './lib/matcha-chip/chip.module';\n\n// -----------------------------------------------------------\n// MASK COMPONENTS\n// -----------------------------------------------------------\n// export * from './lib/matcha-mask/matcha-mask.directive';\nexport * from './lib/matcha-mask/matcha-mask.pipe';\nexport * from './lib/matcha-mask/matcha-mask.service';\nexport * from './lib/matcha-mask/matcha-mask-applier.service';\nexport * from './lib/matcha-mask/matcha-mask.config';\nexport * from './lib/matcha-mask/matcha-mask-expression.enum';\n// export * from './lib/matcha-mask/matcha-mask.module';\n\n// -----------------------------------------------------------\n// MASK COMPONENTS (COMPATIBLE VERSION)\n// -----------------------------------------------------------\nexport * from './lib/matcha-mask/matcha-mask-compatible.directive';\nexport * from './lib/matcha-mask/matcha-mask.module';\n\n// -----------------------------------------------------------\n// SERVICES\n// -----------------------------------------------------------\nexport * from './lib/matcha-modal/modal.service';\nexport * from './lib/matcha-modal/overlay.service';\nexport * from './lib/matcha-date/matcha-date.module';\nexport * from './lib/matcha-date-range/date-range.module';\nexport * from './lib/matcha-time/time.module';\nexport * from './lib/matcha-stepper/stepper.service';\nexport * from './lib/matcha-breakpoint-observable/breakpoint-observer.service';\n\n// -----------------------------------------------------------\n// DIRECTIVES\n// -----------------------------------------------------------\nexport * from './lib/matcha-tooltip/tooltip.directive';\nexport * from './lib/matcha-elevation/elevation.directive';\nexport * from './lib/matcha-ripple/ripple.directive';\nexport * from './lib/matcha-drop-list/directives/drag.directive';\nexport * from './lib/matcha-drop-list/directives/drag-handle.directive';\nexport * from './lib/matcha-autocomplete/matcha-autocomplete.directive';\nexport * from './lib/matcha-select/matcha-select.directive';\nexport * from './lib/matcha-stepper/next-step.diretive';\nexport * from './lib/matcha-stepper/prev-step.diretive';\nexport * from './lib/matcha-stepper/step-content.diretive';\n\n// -----------------------------------------------------------\n// PIPES\n// -----------------------------------------------------------\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MatchaDividerComponent","i1.MatchaButtonComponent","i1.MatchaIconComponent","i1.MatchaRippleDirective","i3.MatchaMaskCompatibleDirective","i1.MatchaStepperStateService","i2","i1.MatchaDropListService","i1.MatchaPanelComponent","i1.MatchaPaginatorIntl","i3.MatchaIconComponent","i2.MatchaButtonComponent","i1","i2.CopyButtonComponent","i2.MatchaDividerComponent","i1.MatchaOverlayService","i1.MatchaStepperContentComponent","i1.MatchaDragDirective"],"mappings":";;;;;;;;;;;AAiBA;;;AAGG;MACU,oBAAoB,GAAG,MAAM,CAAC,oBAAoB;;ACnB/D,MAAM,eAAe,GAAG,SAAS,CAAC;AAC9B,IAAA,KAAK,CAAC;AACF,QAAA,OAAO,EAAI,aAAa;AACxB,QAAA,SAAS,EAAE;KACd,CAAC;AACF,IAAA,OAAO,CAAC,uDAAuD,EAAE,KAAK,CAAC,GAAG,CAAC;CAC9E,EAAE;AACC,IAAA,MAAM,EAAE;AACJ,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,KAAK,EAAK,KAAK;AACf,QAAA,OAAO,EAAG,GAAG;AACb,QAAA,KAAK,EAAK,GAAG;AACb,QAAA,CAAC,EAAS,GAAG;AACb,QAAA,CAAC,EAAS,GAAG;AACb,QAAA,CAAC,EAAS;AACb;AACJ,CAAA,CAAC;AAEK,MAAM,gBAAgB,GAAG;AAE5B,IAAA,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,OAAO,CAAC,gBAAgB,EAAE;AACtB,QAAA,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACvB,QAAA,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAExB,QAAA,UAAU,CAAC,YAAY,EACnB,KAAK,CAAC,IAAI,EACN;YACI,OAAO,CAAC,MAAM,EAAE;AACZ,gBAAA,YAAY;aACf;AACJ,SAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7B,QAAA,UAAU,CAAC,aAAa,EACpB,KAAK,CAAC,IAAI,EACN;YACI,OAAO,CAAC,OAAO,EAAE;AACb,gBAAA,YAAY;aACf;AACJ,SAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAC7B,QAAA,UAAU,CAAC,aAAa,EACpB,KAAK,CAAC,IAAI,EACN;YACI,OAAO,CAAC,OAAO,EAAE;AACb,gBAAA,YAAY;aACf;AACJ,SAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;KAC/B,CAAC;IAEF,OAAO,CAAC,WAAW,EAAE;AACjB,QAAA,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AACnB,YAAA,OAAO,EAAE;AACZ,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAChB,YAAA,OAAO,EAAE;AACZ,SAAA,CAAC,CAAC;AACH,QAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/C,QAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;AAC9C,QAAA,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC;KACpD,CAAC;IAEF,OAAO,CAAC,YAAY,EAAE;AAClB,QAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACb,YAAA,MAAM,EAAE;AACX,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACb,YAAA,MAAM,EAAE;AACX,SAAA,CAAC,CAAC;AACH,QAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/C,QAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC;KAChD,CAAC;IAEF,OAAO,CAAC,SAAS,EAAE;QACf,UAAU,CAAC,cAAc,EAAE;AACnB,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE;aACd,CAAC;AACF,YAAA,OAAO,CAAC,eAAe,EACnB,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC;SAET,CACJ;QACD,UAAU,CAAC,cAAc,EAAE;AACnB,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE;aACd,CAAC;AACF,YAAA,OAAO,CAAC,eAAe,EACnB,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC;SAET,CACJ;QACD,UAAU,CAAC,eAAe,EAAE;AACpB,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE;aACd,CAAC;AACF,YAAA,OAAO,CAAC,eAAe,EACnB,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC;SAET,CACJ;QACD,UAAU,CAAC,eAAe,EAAE;AACpB,YAAA,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE;aACd,CAAC;AACF,YAAA,OAAO,CAAC,eAAe,EACnB,KAAK,CAAC;AACF,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC;SAET;KAER,CAAC;IAEF,OAAO,CAAC,aAAa,EAAE;AACnB,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAChB,YAAA,SAAS,EAAE,mBAAmB;AACjC,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACb,YAAA,SAAS,EAAE,eAAe;AAC7B,SAAA,CAAC,CAAC;AACH,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACzC,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;KAC3C,CAAC;IAEF,OAAO,CAAC,cAAc,EAAE;AACpB,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAChB,YAAA,SAAS,EAAE,kBAAkB;AAChC,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACb,YAAA,SAAS,EAAE,eAAe;AAC7B,SAAA,CAAC,CAAC;AACH,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACzC,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;KAC3C,CAAC;IAEF,OAAO,CAAC,YAAY,EAAE;AAClB,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAChB,YAAA,SAAS,EAAE,mBAAmB;AACjC,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACb,YAAA,SAAS,EAAE,eAAe;AAC7B,SAAA,CAAC,CAAC;AACH,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACzC,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;KAC3C,CAAC;IAEF,OAAO,CAAC,eAAe,EAAE;AACrB,QAAA,KAAK,CAAC,MAAM,EACR,KAAK,CAAC;AACF,YAAA,SAAS,EAAE,kBAAkB;AAChC,SAAA,CAAC,CAAC;AACP,QAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACb,YAAA,SAAS,EAAE,eAAe;AAC7B,SAAA,CAAC,CAAC;AACH,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACzC,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;KAC3C,CAAC;IAEF,OAAO,CAAC,gBAAgB,EAAE;AACtB,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;AAChB,YAAA,MAAM,EAAE;AACX,SAAA,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;AACb,YAAA,MAAM,EAAE;AACX,SAAA,CAAC,CAAC;AACH,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAClD,QAAA,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC;KACnD,CAAC;;;;IAMF,OAAO,CAAC,sBAAsB,EAAE;QAE5B,UAAU,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,oCAAoC,EAAE;AACxC,gBAAA,KAAK,CAAC;AACF,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAO,CAAC;AACX,oBAAA,MAAM,EAAI,CAAC;AACX,oBAAA,IAAI,EAAM,CAAC;AACX,oBAAA,KAAK,EAAK;iBACb;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,gBAAA,KAAK,CAAC;AACF,oBAAA,SAAS,EAAE,kBAAkB;AAC7B,oBAAA,OAAO,EAAI;iBACd;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpB,YAAA,QAAQ,CAAC;AACL,gBAAA,KAAK,CAAC;oBACF,KAAK,CAAC,kBAAkB,EAAE;AACtB,wBAAA,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,eAAe;AAC1B,4BAAA,OAAO,EAAI;yBACd,CAAC;AACF,wBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,mBAAmB;AAC9B,4BAAA,OAAO,EAAI;AACd,yBAAA,CAAC;AACT,qBAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;oBACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,wBAAA,KAAK,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAC,CAAC;AACtC,wBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,gBAAgB;AAC3B,4BAAA,OAAO,EAAI;AACd,yBAAA,CAAC;AACT,qBAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;iBACtB,CAAC;gBACF,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;gBAC3D,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;aAC7D;SACJ;KACJ,CAAC;IAEF,OAAO,CAAC,uBAAuB,EAAE;QAE7B,UAAU,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,oCAAoC,EAAE;AACxC,gBAAA,KAAK,CAAC;AACF,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAO,CAAC;AACX,oBAAA,MAAM,EAAI,CAAC;AACX,oBAAA,IAAI,EAAM,CAAC;AACX,oBAAA,KAAK,EAAK;iBACb;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,gBAAA,KAAK,CAAC;AACF,oBAAA,SAAS,EAAE,mBAAmB;AAC9B,oBAAA,OAAO,EAAI;iBACd;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpB,YAAA,QAAQ,CAAC;AACL,gBAAA,KAAK,CAAC;oBACF,KAAK,CAAC,kBAAkB,EAAE;AACtB,wBAAA,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,eAAe;AAC1B,4BAAA,OAAO,EAAI;yBACd,CAAC;AACF,wBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,kBAAkB;AAC7B,4BAAA,OAAO,EAAI;AACd,yBAAA,CAAC;AACT,qBAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;oBACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,wBAAA,KAAK,CAAC,EAAC,SAAS,EAAE,mBAAmB,EAAC,CAAC;AACvC,wBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,gBAAgB;AAC3B,4BAAA,OAAO,EAAI;AACd,yBAAA,CAAC;AACT,qBAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;iBACtB,CAAC;gBACF,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;gBAC3D,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;aAC7D;SACJ;KACJ,CAAC;IAEF,OAAO,CAAC,oBAAoB,EAAE;QAE1B,UAAU,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,oCAAoC,EAAE;AACxC,gBAAA,KAAK,CAAC;AACF,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAO,CAAC;AACX,oBAAA,MAAM,EAAI,CAAC;AACX,oBAAA,IAAI,EAAM,CAAC;AACX,oBAAA,KAAK,EAAK;iBACb;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,gBAAA,KAAK,CAAC;AACF,oBAAA,SAAS,EAAE,kBAAkB;AAC7B,oBAAA,OAAO,EAAI;iBACd;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpB,YAAA,KAAK,CAAC;gBACF,KAAK,CAAC,kBAAkB,EAAE;AACtB,oBAAA,KAAK,CAAC;AACF,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,OAAO,EAAI;qBACd,CAAC;AACF,oBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,wBAAA,SAAS,EAAE,mBAAmB;AAC9B,wBAAA,OAAO,EAAI;AACd,qBAAA,CAAC;AACT,iBAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;gBACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,oBAAA,KAAK,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAC,CAAC;AACtC,oBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,OAAO,EAAI;AACd,qBAAA,CAAC;AACT,iBAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;aACtB,CAAC;YACF,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YAC3D,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;SAC7D;KACJ,CAAC;IAEF,OAAO,CAAC,sBAAsB,EAAE;QAE5B,UAAU,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,oCAAoC,EAAE;AACxC,gBAAA,KAAK,CAAC;AACF,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAO,CAAC;AACX,oBAAA,MAAM,EAAI,CAAC;AACX,oBAAA,IAAI,EAAM,CAAC;AACX,oBAAA,KAAK,EAAK;iBACb;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,gBAAA,KAAK,CAAC;AACF,oBAAA,SAAS,EAAE,mBAAmB;AAC9B,oBAAA,OAAO,EAAI;iBACd;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpB,YAAA,QAAQ,CAAC;AACL,gBAAA,KAAK,CAAC;oBACF,KAAK,CAAC,kBAAkB,EAAE;AACtB,wBAAA,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,eAAe;AAC1B,4BAAA,OAAO,EAAI;yBACd,CAAC;AACF,wBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,kBAAkB;AAC7B,4BAAA,OAAO,EAAI;AACd,yBAAA,CAAC;AACT,qBAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;oBACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,wBAAA,KAAK,CAAC,EAAC,SAAS,EAAE,mBAAmB,EAAC,CAAC;AACvC,wBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,4BAAA,SAAS,EAAE,gBAAgB;AAC3B,4BAAA,OAAO,EAAI;AACd,yBAAA,CAAC;AACT,qBAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;iBACtB,CAAC;gBACF,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;gBAC3D,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;aAC7D;SACJ;KACJ,CAAC;IAEF,OAAO,CAAC,sBAAsB,EAAE;AAE5B,QAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;YAEvB,KAAK,CAAC,qCAAqC,EAAE;AACzC,gBAAA,KAAK,CAAC;AACF,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAO,CAAC;AACX,oBAAA,MAAM,EAAI,CAAC;AACX,oBAAA,IAAI,EAAM,CAAC;AACX,oBAAA,KAAK,EAAK;iBACb;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YAEpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,gBAAA,KAAK,CAAC;AACF,oBAAA,OAAO,EAAE;iBACZ;AACJ,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,gBAAA,KAAK,CAAC;AACF,oBAAA,OAAO,EAAE;iBACZ,CAAC;AACF,gBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,oBAAA,OAAO,EAAE;AACZ,iBAAA,CAAC;AACT,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YACpB,KAAK,CAAC,kBAAkB,EAAE;AACtB,gBAAA,KAAK,CAAC;AACF,oBAAA,OAAO,EAAE;iBACZ,CAAC;AACF,gBAAA,OAAO,CAAC,sCAAsC,EAC1C,KAAK,CAAC;AACF,oBAAA,OAAO,EAAE;AACZ,iBAAA,CAAC;AACT,aAAA,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YACpB,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;YAC3D,KAAK,CAAC,kBAAkB,EAAE,YAAY,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;AAC7D,SAAA,CAAC;KACL;CACJ;;MC3YY,4BAA4B,CAAA;AAPzC,IAAA,WAAA,GAAA;QAQY,IAAA,CAAA,QAAQ,GAAY,KAAK;QACzB,IAAA,CAAA,OAAO,GAAY,KAAK;QAaxB,IAAA,CAAA,gBAAgB,GAAG,IAAI;AAoBrB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAW;AACpC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAQ;AAgBvD,IAAA;IAhDG,IACI,OAAO,CAAC,KAAuB,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;IAC3D;AACA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;AACA,IAAA,IAAkC,YAAY,GAAA;QAC1C,OAAO,IAAI,CAAC,QAAQ;IACxB;IAGA,IACI,eAAe,CAAC,KAAuB,EAAA;AACvC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;IACnE;AACA,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;IAChC;IAEA,IACI,MAAM,CAAC,KAAuB,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;IAC1D;AACA,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO;IACvB;AACA,IAAA,IAAkC,WAAW,GAAA;QACzC,OAAO,IAAI,CAAC,OAAO;IACvB;IAKA,QAAQ,GAAA;QACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACjC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC;IACJ;IAEA,eAAe,GAAA;;AAEX,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;IAC/B;8GAnDS,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,qWCVzC,ymBAaA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EDLgB,CAAC,GAAG,gBAAgB,CAAC,EAAA,CAAA,CAAA;;2FAExB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,UAAA,EACL,CAAC,GAAG,gBAAgB,CAAC,EAAA,QAAA,EAAA,ymBAAA,EAAA;8BAO7B,OAAO,EAAA,CAAA;sBADV;gBAOiC,YAAY,EAAA,CAAA;sBAA7C,WAAW;uBAAC,eAAe;gBAMxB,eAAe,EAAA,CAAA;sBADlB;gBASG,MAAM,EAAA,CAAA;sBADT;gBAOiC,WAAW,EAAA,CAAA;sBAA5C,WAAW;uBAAC,eAAe;gBAIlB,MAAM,EAAA,CAAA;sBAAf;gBACS,eAAe,EAAA,CAAA;sBAAxB;;;MEnCQ,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;QAOY,IAAA,CAAA,SAAS,GAAG,KAAK;AAUD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;QAG1D,IAAA,CAAA,aAAa,GAAmB,EAAE;AA8C7C,IAAA;IA1DG,IACI,QAAQ,CAAC,KAAuB,EAAA;;AAEhC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;IAC5D;AACA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAOA,kBAAkB,GAAA;QACd,IAAI,CAAC,UAAU,EAAE;;QAGjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YAC9B,IAAI,CAAC,UAAU,EAAE;AACrB,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;IACxD;IAEQ,UAAU,GAAA;;AAEd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AAEvB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAK;AAClD,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACzB,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;YAElC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAe,KAAI;AACxD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAClC,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AACtC,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,UAAU,CAAC,YAA0C,EAAA;;AAEjD,QAAA,YAAY,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM;;QAG1C,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE;AACvC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,gBAAA,IAAI,IAAI,KAAK,YAAY,EAAE;AACvB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;gBACvB;AACJ,YAAA,CAAC,CAAC;QACN;IACJ;8GA3DS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAahB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBjD,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDUa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;8BAKb,QAAQ,EAAA,CAAA;sBADX;gBASuB,YAAY,EAAA,CAAA;sBAAnC,MAAM;uBAAC,cAAc;gBAEgD,KAAK,EAAA,CAAA;sBAA1E,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;MEhB3D,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,oFCR3C,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;;;MEEN,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,qFCR5C,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAGxB,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;;;AENnB;;;;;;;;AAQE;MAUW,6BAA6B,CAAA;AAM1C,IAAA,WAAA,CAAoB,OAAmB,EAAA;QAAnB,IAAA,CAAA,OAAO,GAAP,OAAO;;AAJjB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;IAIR;IAE1C,QAAQ,GAAA;;AAEN,QAAA,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,SAAS,EAAE;SACZ;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;AACnD,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACtB,gBAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBAC3B;AACF,YAAA,CAAC,CAAC;QACJ,CAAC,EAAE,OAAO,CAAC;QAEX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACnD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;IAC5B;8GA7Ba,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,QAAA,EAAA,IAAA,EAAA,6BAA6B,gIClB1C,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDkBa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,EAAA,EAAA;+EAIT,aAAa,EAAA,CAAA;sBAAtB;;;MEJY,iCAAiC,CAAA;AAiD1C,IAAA,WAAA,CAAoB,OAAmB,EAAA;QAAnB,IAAA,CAAA,OAAO,GAAP,OAAO;AAzC3B;;AAEG;QACM,IAAA,CAAA,WAAW,GAAU,EAAE;AAEhC;;AAEG;QACM,IAAA,CAAA,SAAS,GAAG,GAAG;AAYxB;;AAEG;AACO,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAS;AAEpD;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO;QAEtC,IAAA,CAAA,cAAc,GAAU,EAAE;QAC1B,IAAA,CAAA,WAAW,GAAG,CAAC;;AAIf,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE;;AAErC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAE;;AAEvC,QAAA,IAAA,CAAA,iBAAiB,GAAiB,IAAI,OAAO,EAAE;IAEZ;IAE3C,QAAQ,GAAA;QACJ,IAAI,CAAC,UAAU,EAAE;;AAGjB,QAAA,MAAM,OAAO,GAAG;AACZ,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC;SACnB;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,IAAG;AAC/C,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACpB,gBAAA,IAAI,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,YAAY,EAAE;gBACvB;AACJ,YAAA,CAAC,CAAC;QACN,CAAC,EAAE,OAAO,CAAC;QAEX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;AAGjD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACjD,YAAY,CAAC,GAAG,CAAC,CACpB,CAAC,SAAS,CAAC,MAAK;;YAEb,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,YAAY,EAAE;AACvB,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;YACzD,IAAI,CAAC,SAAS,EAAE;QACpB;AAEA,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;;AAE7D,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC;QACnE;IACJ;AAEA;;AAEG;IACK,UAAU,GAAA;QACd,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,eAAe,EAAE;IAC1B;AAEA;;AAEG;IACK,SAAS,GAAA;;AAEb,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAE;;QAG1C,IAAI,CAAC,UAAU,EAAE;IACrB;AAEA;;AAEG;IACK,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB;QACJ;QACA,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,IAAG;AACxC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;gBACvD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;gBAC7C,IAAI,CAAC,eAAe,EAAE;YAC1B;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;IAClC;AAEA;;;AAGG;IACK,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AAChF,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAChD;IACJ;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACzC;8GAnJS,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,4TChB9C,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,CAAA;;2FDgBa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAZ7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAS3B,KAAK,EAAA,QAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;+EAQR,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKS,cAAc,EAAA,CAAA;sBAAvB;gBAKS,UAAU,EAAA,CAAA;sBAAnB;;;AEpDL;;;;;;;;AAQE;MASW,uBAAuB,CAAA;AAMpC,IAAA,WAAA,CAAoB,OAAmB,EAAA;QAAnB,IAAA,CAAA,OAAO,GAAP,OAAO;;AAJjB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;IAIR;IAE1C,QAAQ,GAAA;;AAEN,QAAA,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,SAAS,EAAE;SACZ;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;AACnD,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACtB,gBAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBAC3B;AACF,YAAA,CAAC,CAAC;QACJ,CAAC,EAAE,OAAO,CAAC;QAEX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACnD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;IAC5B;8GA7Ba,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,yHCjBpC,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDgBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;+EAIT,aAAa,EAAA,CAAA;sBAAtB;;;MEHY,2BAA2B,CAAA;AAwDpC,IAAA,WAAA,CAAoB,OAAmB,EAAA;QAAnB,IAAA,CAAA,OAAO,GAAP,OAAO;AAhD3B;;AAEG;QACM,IAAA,CAAA,WAAW,GAAU,EAAE;AAEhC;;AAEG;QACM,IAAA,CAAA,SAAS,GAAG,GAAG;AAExB;;;;AAIG;QACM,IAAA,CAAA,UAAU,GAAG,KAAK;AAY3B;;AAEG;AACO,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAS;AAEpD;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO;QAEtC,IAAA,CAAA,cAAc,GAAU,EAAE;QAC1B,IAAA,CAAA,WAAW,GAAG,CAAC;;AAIf,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE;;AAErC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAE;;AAEvC,QAAA,IAAA,CAAA,iBAAiB,GAAiB,IAAI,OAAO,EAAE;IAEZ;IAE3C,QAAQ,GAAA;QACJ,IAAI,CAAC,UAAU,EAAE;;AAGjB,QAAA,MAAM,OAAO,GAAG;AACZ,YAAA,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC;SACnB;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,OAAO,IAAG;AAC/C,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACpB,gBAAA,IAAI,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,YAAY,EAAE;gBACvB;AACJ,YAAA,CAAC,CAAC;QACN,CAAC,EAAE,OAAO,CAAC;QAEX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;AAGjD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACjD,YAAY,CAAC,GAAG,CAAC,CACpB,CAAC,SAAS,CAAC,MAAK;;YAEb,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,YAAY,EAAE;AACvB,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;YACzD,IAAI,CAAC,SAAS,EAAE;QACpB;AAEA,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;;AAE7D,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC;QACnE;IACJ;AAEA;;AAEG;IACK,UAAU,GAAA;QACd,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,eAAe,EAAE;IAC1B;AAEA;;AAEG;IACK,SAAS,GAAA;;AAEb,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,YAAY,EAAE;;QAG1C,IAAI,CAAC,UAAU,EAAE;IACrB;AAEA;;AAEG;IACK,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB;QACJ;QACA,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QACtD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,IAAG;AACxC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;gBACvD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;gBAC7C,IAAI,CAAC,eAAe,EAAE;YAC1B;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC;IAClC;AAEA;;;AAGG;IACK,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AAChF,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAChD;IACJ;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACzC;8GA1JS,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,+UChBxC,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,CAAA;;2FDea,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAZvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cASpB,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;+EAQR,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,WAAW,EAAA,CAAA;sBAAnB;gBAKQ,SAAS,EAAA,CAAA;sBAAjB;gBAOQ,UAAU,EAAA,CAAA;sBAAlB;gBAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKQ,UAAU,EAAA,CAAA;sBAAlB;gBAKS,cAAc,EAAA,CAAA;sBAAvB;gBAKS,UAAU,EAAA,CAAA;sBAAnB;;;MEnDQ,qBAAqB,CAAA;AAa9B,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,KAAK;IACrB;IAGA,IAAa,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAG5E,IAAa,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAG/E,IAAa,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAG3E,IAAa,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAGzE,IAAa,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAGzE,IAAa,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAIzE,WAAA,CAAwC,WAAuB,EAA6B,SAAoB,EAAA;QAAxE,IAAA,CAAA,WAAW,GAAX,WAAW;QAAyC,IAAA,CAAA,SAAS,GAAT,SAAS;QA3CtF,IAAA,CAAA,IAAI,GAAkB,IAAI;QAEvB,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAEhC,IAAA,CAAA,GAAG,GAA2B,IAAI;QAEhC,IAAA,CAAA,KAAK,GAAkB,OAAO;QAOtC,IAAA,CAAA,MAAM,GAAG,KAAK;QAId,IAAA,CAAA,QAAQ,GAAG,KAAK;QAIhB,IAAA,CAAA,MAAM,GAAG,KAAK;QAId,IAAA,CAAA,KAAK,GAAG,KAAK;QAIb,IAAA,CAAA,KAAK,GAAG,KAAK;QAIb,IAAA,CAAA,KAAK,GAAG,KAAK;AAQb,QAAA,IAAA,CAAA,OAAO,GAAQ;AACnB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,IAAI,EAAE;SACT;IAfkH;IAiBnH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,aAAA,CAAe,CAAC;QACxE,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,mBAAmB,EAAE;;QAE1B,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AAC3D,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;;YAErB,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;AACrE,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,mBAAmB,EAAE;IAC9B;IAEQ,WAAW,GAAA;;AAEf,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,cAAA,EAAiB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA,CAAE,CAAC;AAChG,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,CAAE,CAAC;AACrG,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,CAAE,CAAC;AACrG,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,CAAE,CAAC;AACrG,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,CAAE,CAAC;AACrG,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,CAAE,CAAC;;AAErG,QAAA,IAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;AACpF,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;QACzF;;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,kBAAA,CAAoB,CAAC;;AAEhF,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,qBAAA,CAAuB,CAAC;;AAEnF,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,kBAAA,CAAoB,CAAC;;AAEhF,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,mBAAA,CAAqB,CAAC;;AAEjF,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,kBAAA,CAAoB,CAAC;IACpF;IAEQ,SAAS,GAAA;QACb,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;AACjC,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI;QAC/B,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI;QAC7E,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;QACpE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;QACpE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI;QACvE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;IACxE;IAEQ,OAAO,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;QACrF,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AAC7B,QAAA,IAAG,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;YAC1F,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACrC;AACA,QAAA,IAAG,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;YAC1F,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACrC;AACA,QAAA,IAAG,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;YAC1F,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACrC;AACA,QAAA,IAAG,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;YAC1F,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACrC;AACA,QAAA,IAAG,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;YAC1F,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QACrC;IACJ;IAEQ,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,GAAA,EAAM,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;AACzE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,IAAA,EAAO,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;IAC/B;IAEQ,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,qBAAA,CAAuB,CAAC;IACpF;IAEQ,OAAO,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,kBAAA,CAAoB,CAAC;IACjF;IAEQ,OAAO,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,kBAAA,CAAoB,CAAC;IACjF;IAEQ,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,mBAAA,CAAqB,CAAC;AAC9E,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,KAAA,CAAO,CAAC;IACpE;IAEQ,OAAO,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,kBAAA,CAAoB,CAAC;IACjF;IAEQ,mBAAmB,GAAA;;AAEvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;QAElF,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAoB,KAAI;;gBAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAEjD,gBAAA,SAAS,CAAC,OAAO,CAAC,CAAC,GAAgB,KAAI;;oBAEnC,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;wBACjD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,uBAAuB,CAAC;;wBAExD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;oBAC9C;AACJ,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACN;IACJ;AAEQ,IAAA,eAAe,CAAC,CAAM,EAAA;AAC1B,QAAA,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM;AACrB,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AAC3D,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;QACzC,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACvC,YAAA,MAAM,CAAC,SAAS,GAAG,CAAA,MAAA,CAAQ;AAC3B,YAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI;AACpE,YAAA,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAC9B;AACA,QAAA,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/B,QAAA,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO;AACvE,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO;QACxE,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI;QAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC/B,QAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5B,QAAA,OAAO,KAAK;IAChB;IAEA,WAAW,GAAA;QACP,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AAC3D,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;YACrB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;AACpE,QAAA,CAAC,CAAC;IACN;8GApNS,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA4CV,UAAU,EAAA,EAAA,EAAA,KAAA,EAA2C,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5CzE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0cCRlC,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;;0BA8CJ,MAAM;2BAAC,UAAU;;0BAAoC,MAAM;2BAAC,SAAS;yCA3CnE,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;gBAEK,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBAEF,GAAG,EAAA,CAAA;sBAAhB,KAAK;uBAAC,KAAK;gBAEI,KAAK,EAAA,CAAA;sBAApB,KAAK;uBAAC,OAAO;gBAGV,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,YAAY;gBAMZ,KAAK,EAAA,CAAA;sBAAjB;gBAIY,OAAO,EAAA,CAAA;sBAAnB;gBAIY,KAAK,EAAA,CAAA;sBAAjB;gBAIY,IAAI,EAAA,CAAA;sBAAhB;gBAIY,IAAI,EAAA,CAAA;sBAAhB;gBAIY,IAAI,EAAA,CAAA;sBAAhB;;;MEvCQ,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;QAQY,IAAA,CAAA,MAAM,GAAG,SAAS;QAU1B,IAAA,CAAA,UAAU,GAAqC,MAAM;QAGrD,IAAA,CAAA,eAAe,GAAkB,IAAI;QAGrC,IAAA,CAAA,KAAK,GAAkB,EAAE;;QAGjB,IAAA,CAAA,MAAM,GAAG,KAAK;QAWd,IAAA,CAAA,KAAK,GAAG,KAAK;QAWb,IAAA,CAAA,QAAQ,GAAG,KAAK;AAwC3B,IAAA;IAhFG,IAAa,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,IAAA,IAAI,KAAK,CAAC,CAAgB,EAAA,EAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,CAAA;AAE3D,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,KAAK;IACrB;IAaA,IAAa,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAmB,EAAA;QACzB,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK;IAC9C;AAEA,IAAA,IACI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO;IACxC;IAGA,IAAa,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,CAAmB,EAAA;QACxB,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK;IAC7C;AAEA,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG,OAAO;IACvC;IAGA,IAAa,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,CAAmB,EAAA;QAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK;IAChD;AAEA,IAAA,IACW,OAAO,GAAA;QACd,IAAI,eAAe,GAAG,EAAE;QACxB,IAAI,eAAe,GAAG,EAAE;QACxB,IAAI,kBAAkB,GAAG,IAAI;AAE7B,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AACjD,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9B,gBAAA,kBAAkB,GAAG,CAAA,mBAAA,EAAsB,IAAI,CAAC,UAAU,EAAE;AAC5D,gBAAA,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAC,eAAe,CAAA,CAAE,GAAG,EAAE;YACxF;iBAAO;gBACH,kBAAkB,GAAG,EAAE;gBACvB,eAAe,GAAG,EAAE;YACxB;QAEJ;aAAO;AACH,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAC9B,gBAAA,kBAAkB,GAAG,CAAA,mBAAA,EAAsB,IAAI,CAAC,UAAU,EAAE;AAC5D,gBAAA,eAAe,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAC,eAAe,CAAA,CAAE,GAAG,EAAE;YAC9E;iBAAO;gBACH,kBAAkB,GAAG,EAAE;gBACvB,eAAe,GAAG,EAAE;YACxB;QACJ;QAEA,MAAM,aAAa,GAAG,CAAA,YAAA,EAAe,kBAAkB,CAAA,CAAA,EAAI,eAAe,CAAA,CAAA,EAAI,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,CAAA,CAAE;AAC9I,QAAA,OAAO,aAAa;IACxB;IAEO,qBAAqB,GAAA;QACxB,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;IACpE;8GAhFS,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,QAAA,EAAA,IAAA,EAAA,mBAAmB,qXCRhC,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,KAAK,EAAA,QAAA,EAAA,6BAAA,EAAA;8BAKJ,KAAK,EAAA,CAAA;sBAAjB;gBAIG,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,YAAY;gBAMzB,UAAU,EAAA,CAAA;sBADT;gBAID,eAAe,EAAA,CAAA;sBADd;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAKY,KAAK,EAAA,CAAA;sBAAjB;gBAMG,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,YAAY;gBAMZ,IAAI,EAAA,CAAA;sBAAhB;gBAMG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,WAAW;gBAMX,OAAO,EAAA,CAAA;sBAAnB;gBAMU,OAAO,EAAA,CAAA;sBADjB,WAAW;uBAAC,OAAO;;;MEjDX,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAOgB,IAAA,CAAA,GAAG,GAA2B,IAAI;QAC/B,IAAA,CAAA,KAAK,GAA2B,IAAI;QACpC,IAAA,CAAA,KAAK,GAA2B,IAAI;QACpC,IAAA,CAAA,KAAK,GAA2B,IAAI;QACpC,IAAA,CAAA,KAAK,GAA2B,IAAI;QAG7C,IAAA,CAAA,UAAU,GAAG,YAAY;AAoClC,IAAA;IAnCC,IACI,SAAS,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IACzB;AACA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,IACI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,KAAK,UAAU;QACjD,MAAM,eAAe,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI;AACjD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAA,EAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAA,CAAE,GAAG,EAAE;AAC5D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,eAAe,CAAA,IAAA,EAAO,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;AACrE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,eAAe,CAAA,IAAA,EAAO,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;AACrE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,eAAe,CAAA,IAAA,EAAO,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;AACrE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,eAAe,CAAA,IAAA,EAAO,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;QACrE,IAAI,aAAa,GAAG,EAAE;QAEtB,MAAM,eAAe,GAAG,6CAA6C;QACrE,MAAM,iBAAiB,GAAG,gDAAgD;QAE1E,aAAa,IAAI,WAAW,GAAG,eAAe,GAAG,iBAAiB;AAClE,QAAA,aAAa,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,EAAE;AACrC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AAEzC,QAAA,OAAO,aAAa;IACtB;8GA3CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,6SCRnC,mCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,mCAAA,EAAA;8BAGH,GAAG,EAAA,CAAA;sBAAhB,KAAK;uBAAC,KAAK;gBACK,KAAK,EAAA,CAAA;sBAArB,KAAK;uBAAC,QAAQ;gBACE,KAAK,EAAA,CAAA;sBAArB,KAAK;uBAAC,QAAQ;gBACE,KAAK,EAAA,CAAA;sBAArB,KAAK;uBAAC,QAAQ;gBACE,KAAK,EAAA,CAAA;sBAArB,KAAK;uBAAC,QAAQ;gBAKX,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,WAAW;gBASd,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,gBAAgB;;;AEnB/B;MAQa,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;QAQI,IAAA,CAAA,KAAK,GAAkB,IAAI;QAG3B,IAAA,CAAA,IAAI,GAAoB,CAAC;QAEjB,IAAA,CAAA,QAAQ,GAAG,KAAK;QAShB,IAAA,CAAA,KAAK,GAAwC,MAAM;QAWnD,IAAA,CAAA,KAAK,GAAG,EAAE;AASR,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAU;AAGzC,QAAA,IAAA,CAAA,WAAW,GAAkB;AAChC,YAAA,CAAC,EAAE,oBAAoB;AACvB,YAAA,CAAC,EAAE,oBAAoB;AACvB,YAAA,CAAC,EAAE,oBAAoB;AACvB,YAAA,CAAC,EAAE,oBAAoB;AACvB,YAAA,CAAC,EAAE,oBAAoB;AACvB,YAAA,CAAC,EAAE,oBAAoB;AACvB,YAAA,CAAC,EAAE,oBAAoB;SAC1B;AA+BJ,IAAA;IAtEG,IAAa,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF,IAAA,IACI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO;IAC1C;IAGA,IAAa,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,CAA+C,EAAA;AACpD,QAAA,IAAI,CAAC,KAAK,GAAI,CAAyC,IAAI,MAAM;IACrE;AAEA,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,IAAI;IACpB;IAGA,IAAa,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,IAAA,IAAI,IAAI,CAAC,CAAS,EAAA,EAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAE5C,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI;IAC5B;IAeO,QAAQ,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,KAAK,CAAA,CAAA,CAAG,GAAG,eAAe;AACxE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAA,SAAA,EAAY,IAAI,CAAC,IAAI,CAAA,CAAE,GAAG,EAAE;AACrD,QAAA,OAAQ,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,CAAA,2EAAA,EAA8E,KAAK,CAAA,CAAE;YAC5G,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAA,wEAAA,EAA2E,IAAI,CAAC,KAAK,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,eAAe,CAAA,CAAE;gBAC/J,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,CAAA,gCAAA,EAAmC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,GAAG,CAAA,MAAA,EAAS,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,YAAY,CAAA,CAAE;AACrH,oBAAA,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,CAAA,aAAA,CAAe,GAAG,EAAE;IACvD;AAEA,IAAA,IAAW,WAAW,GAAA;QAClB,MAAM,aAAa,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,EAAE;AAClF,QAAA,OAAO,aAAa;IACxB;AAEA,IAAA,IAAW,WAAW,GAAA;QAClB,MAAM,OAAO,GAAG,CAAA,8CAAA,CAAgD;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC3E,QAAA,MAAM,aAAa,GAAG,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,EAAE;AAC5E,QAAA,OAAO,aAAa;IACxB;IAEO,cAAc,GAAA;QACjB,MAAM,IAAI,GAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;IAEO,kBAAkB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;IAC9C;8GA7ES,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,kUCdjC,+qBAeA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,KAAK,EAAA,QAAA,EAAA,+qBAAA,EAAA;8BAIjB,KAAK,EAAA,CAAA;sBADJ;gBAID,IAAI,EAAA,CAAA;sBADH;gBAIY,OAAO,EAAA,CAAA;sBAAnB;gBAIG,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,cAAc;gBAMd,IAAI,EAAA,CAAA;sBAAhB;gBAMG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,WAAW;gBAMX,IAAI,EAAA,CAAA;sBAAhB;gBAIG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,WAAW;gBAKd,SAAS,EAAA,CAAA;sBAAlB;;;ME3BQ,qBAAqB,CAAA;AAOhC,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;IACA,IAAI,IAAI,CAAC,KAAiB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAC1B;IACF;AAWA,IAAA,IACI,WAAW,GAAA;;AAEb,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO;IAC9B;AAIA,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;IACA,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACpB;IAYA,WAAA,CACU,WAAuB,EACvB,IAAuB,EAAA;QADvB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,IAAI,GAAJ,IAAI;;QArDL,IAAA,CAAA,QAAQ,GAAmB,OAAO;;QAGnC,IAAA,CAAA,KAAK,GAAe,MAAM;QAazB,IAAA,CAAA,YAAY,GAAY,KAAK;QAC7B,IAAA,CAAA,SAAS,GAAY,IAAI;QACzB,IAAA,CAAA,eAAe,GAAY,KAAK;QAChC,IAAA,CAAA,WAAW,GAAW,CAAC;QACvB,IAAA,CAAA,cAAc,GAAW,CAAC;;QAG1B,IAAA,CAAA,KAAK,GAAW,OAAO;;QASxB,IAAA,CAAA,OAAO,GAAY,KAAK;;AAUtB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAc;;AAG7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAW;QAC1C,IAAA,CAAA,UAAU,GAAG,KAAK;QAMxB,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEA,QAAQ,GAAA;;IAER;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;IACnC;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,YAAY,CAAC,EAAE,CAAC,CACjB,CAAC,SAAS,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,MAAM,CAAC,MAAA,GAAkB,CAAC,IAAI,CAAC,OAAO,EAAA;AACpC,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AAC9C,gBAAA,OAAO,EAAE;gBACT;YACF;AAEA,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO;AAC9B,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;YAErB,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACzB;iBAAO;AACL,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACzB;;YAGA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;;AAGxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAEjC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE;AAC5B,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;gBACxC;AACA,gBAAA,OAAO,EAAE;YACX,CAAC,EAAE,GAAG,CAAC;AACT,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B;AAEA;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,QAAQ;IAC9D;8GA7IW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,s0BCvBlC,sFAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDoBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,iBAGV,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,IAAA,EACX;AACJ,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,2BAA2B,EAAE,oBAAoB;AACjD,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,8BAA8B,EAAE,QAAQ;AACxC,wBAAA,UAAU,EAAE,IAAI;AACjB,qBAAA,EAAA,QAAA,EAAA,sFAAA,EAAA;+GAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAKG,IAAI,EAAA,CAAA;sBADP;gBAYQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBAGQ,KAAK,EAAA,CAAA;sBAAb;gBAGG,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,aAAa;gBAStB,MAAM,EAAA,CAAA;sBADT;gBASS,YAAY,EAAA,CAAA;sBAArB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBA2FG,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;;;MEhJpB,4BAA4B,CAAA;AACvC,IAAA,WAAA,CAAmB,WAAoC,EAAA;QAApC,IAAA,CAAA,WAAW,GAAX,WAAW;IAA4B;8GAD/C,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,qIAR7B,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQ1B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAVxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,uBAAuB;AACjC;AACF,iBAAA;;;MCYY,8BAA8B,CAAA;AAKzC,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;IACrE;AAQA,IAAA,WAAA,CAAoB,IAAuB,EAAA;QAAvB,IAAA,CAAA,IAAI,GAAJ,IAAI;;QALxB,IAAA,CAAA,iBAAiB,GAAmB,IAAI;AAEhC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;QAIpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,YAAY,CAAC,EAAE,CAAC,EAChB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,qBAAqB,EAAE;AAC9B,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;;QAEhB,IAAI,CAAC,QAAQ,CAAC;AACX,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC/B,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,yBAAyB,EAAE;AAClC,QAAA,CAAC,CAAC;;QAGJ,IAAI,CAAC,yBAAyB,EAAE;QAEhC,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA;;AAEG;IACK,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;;AAE7B,YAAA,MAAM,CAAC;AACJ,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC/B,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,qBAAqB,EAAE;AAC5B,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,YAAA,CAAC,CAAC;;AAGJ,YAAA,MAAM,CAAC;AACJ,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC/B,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,qBAAqB,EAAE;AAC5B,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;AAEA;;AAEG;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;AAC7B,gBAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;oBACnE,MAAM,CAAC,KAAK,EAAE;gBAChB;AACF,YAAA,CAAC,CAAC;QACJ;IACF;AAEA;;AAEG;IACK,gBAAgB,GAAA;;AAEtB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC;QAC7F;IACF;AAEA;;AAEG;IACK,qBAAqB,GAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACpC;QACF;QAEA,IAAI,IAAI,GAAG,CAAC;QACZ,IAAI,KAAK,GAAG,CAAC;AAEb,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;;AAE7B,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE;gBACvE,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAE1C,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;oBAC/B,IAAI,GAAG,KAAK;gBACd;qBAAO;oBACL,KAAK,GAAG,KAAK;gBACf;YACF;AACF,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;IACtC;AAEA;;AAEG;AACK,IAAA,eAAe,CAAC,MAA6B,EAAA;;AAEnD,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE;YAChB,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE;AACxC,gBAAA,OAAO,UAAU;YACnB;QACF;AAEA,QAAA,MAAM,OAAO,GAAI,MAAc,CAAC,WAAW,EAAE,aAAa;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,CAAC;QACb;;QAGA,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;;QAGlD,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,EAAE;AAC/C,YAAA,OAAO,QAAQ;QACjB;;AAGA,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;QACvC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,IAAI,EAAE;AACzC,YAAA,OAAO,WAAW;QACpB;;AAGA,QAAA,OAAO,GAAG;IACZ;AAEA;;AAEG;IACK,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,cAAc,GAAI,IAAI,CAAC,QAAgB,CAAC,WAAW,EAAE,aAAa;YACxE,IAAI,cAAc,EAAE;;AAElB,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACnD,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;gBAErD,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,CAAA,EAAG,SAAS,IAAI;gBAClD,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,CAAA,EAAG,UAAU,IAAI;YACtD;QACF;IACF;AAEA;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;YACnC,OAAO,IAAI,CAAC,iBAAiB;QAC/B;QAEA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAC/C,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CACxC;IACH;AAEA;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;AAC7B,gBAAA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;oBACnE,MAAM,CAAC,KAAK,EAAE;gBAChB;AACF,YAAA,CAAC,CAAC;QACJ;IACF;8GA1MW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iDAAA,EAAA,mBAAA,EAAA,wCAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG3B,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EADzB,qBAAqB,6BC9BxC,mSAUA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDkBa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,iBAGpB,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,IAAA,EACX;AACJ,wBAAA,OAAO,EAAE,yBAAyB;AAClC,wBAAA,mDAAmD,EAAE,mBAAmB;AACzE,qBAAA,EAAA,QAAA,EAAA,mSAAA,EAAA;sFAIuC,QAAQ,EAAA,CAAA;sBAA/C,eAAe;uBAAC,qBAAqB;gBACM,QAAQ,EAAA,CAAA;sBAAnD,YAAY;uBAAC,4BAA4B;gBAGtC,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,wCAAwC;gBAuErD,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,yBAAyB;;;ME/F5B,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;QAQI,IAAA,CAAA,IAAI,GAA8B,EAAE;QAGpC,IAAA,CAAA,IAAI,GAA8B,EAAE;QAGpC,IAAA,CAAA,KAAK,GAA8B,EAAE;QAGrC,IAAA,CAAA,KAAK,GAA8B,EAAE;QAGrC,IAAA,CAAA,OAAO,GAAqB,KAAK;AAWpC,IAAA;AATG,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAA,SAAA,EAAY,IAAI,CAAC,IAAI,CAAA,CAAE,GAAG,EAAE;AACrD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAA,CAAE,GAAG,EAAE;AACnD,QAAA,MAAM,KAAK,GAAG,CAAA,MAAA,EAAS,IAAI,CAAC,KAAK,EAAE;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,SAAS,GAAG,EAAE;AAErD,QAAA,MAAM,aAAa,GAAG,CAAA,EAAG,IAAI,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,EAAE;AACzE,QAAA,OAAO,aAAa;IACxB;8GAxBS,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,QAAA,EAAA,IAAA,EAAA,mBAAmB,oKCRhC,sEAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDKa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,KAAK,EAAA,QAAA,EAAA,sEAAA,EAAA;8BAIjB,IAAI,EAAA,CAAA;sBADH;gBAID,IAAI,EAAA,CAAA;sBADH;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,OAAO,EAAA,CAAA;sBADN;;;MEbQ,mBAAmB,CAAA;AA4BpB,IAAA,gBAAgB,CAAC,UAAkB,EAAA;QACvC,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC1D,QAAA,OAAO,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC;IACzC;IAEQ,cAAc,CAAC,UAAkB,EAAE,GAAW,EAAA;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAC1C,IAAI,iBAAiB,GAAG,EAAE;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAClD,gBAAA,iBAAiB,IAAI,CAAA,KAAA,EAAQ,OAAO,CAAC,CAAC,CAAC,GAAG;YAC9C;AACA,YAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACrD,gBAAA,iBAAiB,IAAI,CAAA,QAAA,EAAW,OAAO,CAAC,CAAC,CAAC,GAAG;YACjD;AACA,YAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACrD,gBAAA,iBAAiB,IAAI,CAAA,QAAA,EAAW,OAAO,CAAC,CAAC,CAAC,GAAG;YACjD;AACA,YAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACrD,gBAAA,iBAAiB,IAAI,CAAA,QAAA,EAAW,OAAO,CAAC,CAAC,CAAC,GAAG;YACjD;AACA,YAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACrD,gBAAA,iBAAiB,IAAI,CAAA,QAAA,EAAW,OAAO,CAAC,CAAC,CAAC,GAAG;YACjD;QACJ;AACA,QAAA,OAAO,iBAAiB;IAC5B;IAEO,iBAAiB,CAAC,IAAY,EAAE,UAAkB,EAAA;QACrD,IAAI,IAAI,EAAE;AACN,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC9G,WAAW,CAAC,OAAO,CAAC,CAAC,CAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAA,OAAA,EAAU,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC;QAC5G;IACJ;IAEO,iBAAiB,CAAC,IAAY,EAAE,UAAkB,EAAA;QACrD,IAAI,IAAI,EAAE;AACN,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC9G,WAAW,CAAC,OAAO,CAAC,CAAC,CAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAA,OAAA,EAAU,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC;QAC5G;IACJ;;;;;;;;;;;;;;AAgBA,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;QAClE,MAAM,aAAa,GAAG,CAAA,OAAA,EAAU,WAAW,QAAQ,IAAI,CAAC,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE;AAC9F,QAAA,OAAO,aAAa;IACxB;IAEA,WAAA,CAAoB,EAAc,EAAU,QAAmB,EAAA;QAA3C,IAAA,CAAA,EAAE,GAAF,EAAE;QAAsB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QA5FpD,IAAA,CAAA,UAAU,GAAW,EAAE;QAGvB,IAAA,CAAA,GAAG,GAAW,EAAE;QAGhB,IAAA,CAAA,GAAG,GAAW,EAAE;QAGhB,IAAA,CAAA,KAAK,GAAW,EAAE;QAGlB,IAAA,CAAA,IAAI,GAAW,EAAE;QAGjB,IAAA,CAAA,OAAO,GAAW,EAAE;QAGpB,IAAA,CAAA,OAAO,GAAW,EAAE;QAGpB,IAAA,CAAA,SAAS,GAAW,EAAE;QAGtB,IAAA,CAAA,OAAO,GAAqB,KAAK;IAoEiC;IAElE,QAAQ,GAAA;QACJ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;QACrD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;IACzD;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;QACrD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;IACzD;8GAxGS,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,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,QAAA,EAAA,IAAA,EAAA,mBAAmB,6QCRhC,oEAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDKa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,KAAK,EAAA,QAAA,EAAA,oEAAA,EAAA;uGAIjB,UAAU,EAAA,CAAA;sBADT;gBAID,GAAG,EAAA,CAAA;sBADF;gBAID,GAAG,EAAA,CAAA;sBADF;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,IAAI,EAAA,CAAA;sBADH;gBAID,OAAO,EAAA,CAAA;sBADN;gBAID,OAAO,EAAA,CAAA;sBADN;gBAID,SAAS,EAAA,CAAA;sBADR;gBAID,OAAO,EAAA,CAAA;sBADN;;;MEzBQ,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAOkB,IAAA,CAAA,OAAO,GAA2B,IAAI;QACnC,IAAA,CAAA,SAAS,GAA2B,IAAI;QACxC,IAAA,CAAA,SAAS,GAA2B,IAAI;QACxC,IAAA,CAAA,SAAS,GAA2B,IAAI;QACxC,IAAA,CAAA,SAAS,GAA2B,IAAI;QAC3C,IAAA,CAAA,GAAG,GAA2B,IAAI;QAC/B,IAAA,CAAA,KAAK,GAA2B,IAAI;QACpC,IAAA,CAAA,KAAK,GAA2B,IAAI;QACpC,IAAA,CAAA,KAAK,GAA2B,IAAI;QACpC,IAAA,CAAA,KAAK,GAA2B,IAAI;AA0BxD,IAAA;AAxBG,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAA,CAAE,GAAG,EAAE;AACzD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAA,CAAE,GAAG,EAAE;AAClE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAA,CAAE,GAAG,EAAE;AAClE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAA,CAAE,GAAG,EAAE;AAClE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAA,CAAE,GAAG,EAAE;AAClE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,CAAA,CAAE,GAAG,EAAE;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;AAC9D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;AAC9D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;AAC9D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE;QAC9D,IAAI,aAAa,GAAG,EAAE;AACtB,QAAA,aAAa,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,EAAE;AACrC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,EAAE;AACrC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,aAAa,IAAI,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,EAAE;AACzC,QAAA,OAAO,aAAa;IACxB;8GAnCS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,gYCRnC,oEAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDKa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,oEAAA,EAAA;8BAGH,OAAO,EAAA,CAAA;sBAApB,KAAK;uBAAC,KAAK;gBACK,SAAS,EAAA,CAAA;sBAAzB,KAAK;uBAAC,QAAQ;gBACE,SAAS,EAAA,CAAA;sBAAzB,KAAK;uBAAC,QAAQ;gBACE,SAAS,EAAA,CAAA;sBAAzB,KAAK;uBAAC,QAAQ;gBACE,SAAS,EAAA,CAAA;sBAAzB,KAAK;uBAAC,QAAQ;gBACD,GAAG,EAAA,CAAA;sBAAhB,KAAK;uBAAC,KAAK;gBACK,KAAK,EAAA,CAAA;sBAArB,KAAK;uBAAC,QAAQ;gBACE,KAAK,EAAA,CAAA;sBAArB,KAAK;uBAAC,QAAQ;gBACE,KAAK,EAAA,CAAA;sBAArB,KAAK;uBAAC,QAAQ;gBACE,KAAK,EAAA,CAAA;sBAArB,KAAK;uBAAC,QAAQ;;;MEVN,2BAA2B,CAAA;8GAA3B,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,iFCRxC,gWASA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDDa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,gWAAA,EAAA;;;MEER,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,gFCRvC,goBAcA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDNa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cAGnB,KAAK,EAAA,QAAA,EAAA,goBAAA,EAAA;;;MEER,0BAA0B,CAAA;AANvC,IAAA,WAAA,GAAA;QASI,IAAA,CAAA,UAAU,GAAoB,CAAC;AAoBlC,IAAA;IAlBG,eAAe,GAAA;QACX,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;AACpE,QAAA,WAAW,CAAC,OAAO,CAAC,MAAM,IAAG;YACzB,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AAEzD,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,gBAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACrB,oBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AACnC,gBAAA,CAAC,CAAC;YACN;AACA,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,gBAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACrB,oBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;AACpC,oBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AACnC,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;8GAtBS,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,4HCRvC,mWAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDAa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cAGnB,KAAK,EAAA,QAAA,EAAA,mWAAA,EAAA;8BAKjB,UAAU,EAAA,CAAA;sBADT,KAAK;uBAAC,EAAE;;;MEFA,2BAA2B,CAAA;8GAA3B,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,iFCRxC,yEAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDKa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,yEAAA,EAAA;;;MEER,oBAAoB,CAAA;AAmB7B,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,IAAI;IACpB;AAEA,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,MAAM;IACtB;AAEA,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,MAAM;IACtB;AAEA,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,MAAM;IACtB;AAEA,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,MAAM;IACtB;AAEA,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,MAAM;IACtB;AAEA,IAAA,IACW,OAAO,GAAA;AACd,QAAA,MAAM,aAAa,GAAG,CAAA,qCAAA,EAAwC,IAAI,CAAC,KAAK,EAAE;AAC1E,QAAA,OAAO,aAAa;IACxB;AAEA,IAAA,WAAA,GAAA;QArDe,IAAA,CAAA,IAAI,GAAkB,OAAO;QAE1B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAG9C,IAAA,CAAA,KAAK,GAAW,EAAE;QAGlB,IAAA,CAAA,WAAW,GAAY,IAAI;QAG3B,IAAA,CAAA,aAAa,GAAW,EAAE;IAuCvB;8GAxDM,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,0kBCRjC,2HAEM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDMO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,KAAK,EAAA,QAAA,EAAA,2HAAA,EAAA;wDAIF,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;gBAEK,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBAGhB,KAAK,EAAA,CAAA;sBADJ;gBAID,WAAW,EAAA,CAAA;sBADV;gBAID,aAAa,EAAA,CAAA;sBADZ;gBAIG,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,WAAW;gBAMpB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,cAAc;gBAMvB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,cAAc;gBAMvB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,cAAc;gBAMvB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,cAAc;gBAMvB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,cAAc;gBAMhB,OAAO,EAAA,CAAA;sBADjB,WAAW;uBAAC,OAAO;;;MEhDX,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,SAAS,GAAW,CAAC;QAEvB,IAAA,CAAA,cAAc,GAAG,KAAK;QAMZ,IAAA,CAAA,gBAAgB,GAAG,IAAI;AAsBzC,IAAA;AA1BC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,CAAA,YAAA,EAAe,IAAI,CAAC,SAAS,EAAE;IACxC;IAKA,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAGA,QAAQ,GAAA;AACN,QAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;YACnC,IAAI,CAAC,gBAAgB,EAAE;QACzB,CAAC,EAAE,EAAE,CAAC;IACR;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB;IACjE;IAEA,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;IAClC;8GA/BW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uKCTnC,6oFAsDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD7Ca,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,6oFAAA,EAAA;8BAIV,SAAS,EAAA,CAAA;sBAAjB;gBAgBD,QAAQ,EAAA,CAAA;sBADP,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE;;;MElBtB,4BAA4B,CAAA;AANzC,IAAA,WAAA,GAAA;QAOmB,IAAA,CAAA,IAAI,GAAW,EAAE;AACtB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAU7C,IAAA;AARG,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,MAAM,aAAa,GAAG,CAAA,SAAA,EAAY,IAAI,CAAC,IAAI,EAAE;AAC7C,QAAA,OAAO,aAAa;IACxB;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IAC3B;8GAXS,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,qJCRzC,yWAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDAa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,QAAA,EAAA,yWAAA,EAAA;8BAGF,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;gBACH,WAAW,EAAA,CAAA;sBAApB;;;MEFQ,6BAA6B,CAAA;8GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,6BAA6B,mFCR1C,2MAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDAa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,2MAAA,EAAA;;;MEER,gCAAgC,CAAA;AAN7C,IAAA,WAAA,GAAA;AAOc,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAK7C,IAAA;IAHG,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IAC3B;8GALS,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,gICR7C,2aAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDHa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAG1B,KAAK,EAAA,QAAA,EAAA,2aAAA,EAAA;8BAGP,WAAW,EAAA,CAAA;sBAApB;;;MEDQ,kCAAkC,CAAA;8GAAlC,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,QAAA,EAAA,IAAA,EAAA,kCAAkC,yFCR/C,sJAMA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDEa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAN9C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAG5B,KAAK,EAAA,QAAA,EAAA,sJAAA,EAAA;;;MEGR,wBAAwB,CAAA;AAajC,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;QAZrB,IAAA,CAAA,KAAK,GAAuR,MAAM;QAE5R,IAAA,CAAA,IAAI,GAA+E,IAAI;QAEpF,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;IAID;IAE7C,eAAe,GAAA;QACX,IAAI,CAAC,cAAc,EAAE;IACzB;IAEQ,cAAc,GAAA;;AAElB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC;AAChF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAE3F,QAAA,IAAI,YAAY,IAAI,YAAY,EAAE;YAC9B,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE;YAClD,IAAI,SAAS,EAAE;gBACX,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;gBACtD,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,CAAA,kBAAA,EAAqB,WAAW,CAAA,CAAE,CAAC;YAC5E;QACJ;IACJ;AAEQ,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACnC,QAAA,OAAO;AACF,aAAA,WAAW;AACX,aAAA,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACpB,aAAA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACvB,aAAA,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;AACtB,aAAA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACjC;AAEA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO;IACnC;AAEA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO;IAC7D;8GAhDS,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWnB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBjC,8hCAmBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDVa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,KAAK,EAAA,QAAA,EAAA,8hCAAA,EAAA;+EAKR,KAAK,EAAA,CAAA;sBAAb;gBAEc,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;gBAEK,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBAEe,UAAU,EAAA,CAAA;sBAAxC,YAAY;uBAAC,eAAe;;;MEZpB,oBAAoB,CAAA;IAK7B,WAAA,CAAoB,UAAsB,EAAU,GAAsB,EAAA;QAAtD,IAAA,CAAA,UAAU,GAAV,UAAU;QAAsB,IAAA,CAAA,GAAG,GAAH,GAAG;QAJ9C,IAAA,CAAA,KAAK,GAAuR,WAAW;QAEzS,IAAA,CAAA,UAAU,GAAY,KAAK;IAE2C;IAE7E,eAAe,GAAA;;QAEX,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC5B,QAAA,CAAC,CAAC;IACN;IAEQ,eAAe,GAAA;;AAEnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAC5E,IAAI,SAAS,EAAE;;AAEX,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CACxC,yDAAyD;AACzD,gBAAA,+EAA+E,CAClF;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,YAAY;QACpC;IACJ;8GA1BS,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,qGCRjC,gWAOA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,KAAK,EAAA,QAAA,EAAA,gWAAA,EAAA;+GAKR,KAAK,EAAA,CAAA;sBAAb;;;MEDQ,oBAAoB,CAAA;8GAApB,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,yECRjC,4MAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,KAAK,EAAA,QAAA,EAAA,4MAAA,EAAA;;;MEER,qBAAqB,CAAA;AAI9B,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAA,CAAA,EAAE,GAAF,EAAE;AAHb,QAAA,IAAA,CAAA,WAAW,GAAW,oBAAoB,CAAC;QAC5C,IAAA,CAAA,OAAO,GAAkB,EAAE;;QAI/B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;QACjD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;IACnD;AAGA,IAAA,WAAW,CAAC,KAAiB,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACpC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;QAE3C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,QAAA,MAAM,CAAC,SAAS,GAAG,QAAQ;;AAG3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC;AAC9D,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI;;QAG1D,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW;AAC/C,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAClC,QAAA,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;AACjC,QAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;AAC5B,QAAA,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU;AACnC,QAAA,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,8BAA8B;AACxD,QAAA,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AAEnC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO;AAC1D,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO;QAE5D,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI;QAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;AAE/B,QAAA,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;;QAGzB,qBAAqB,CAAC,MAAK;AACvB,YAAA,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU;AACnC,YAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC9B,QAAA,CAAC,CAAC;;QAGF,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE;AAChC,gBAAA,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC;AACxC,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;YACzD;QACJ,CAAC,EAAE,GAAG,CAAC;IACX;IAEA,WAAW,GAAA;;AAEP,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC1B,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE;AAChC,gBAAA,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC;YAC5C;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;IACrB;8GA/DS,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAEY,WAAW,EAAA,CAAA;sBAAnB;gBAUD,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;;MCA5B,uBAAuB,CAAA;AAbpC,IAAA,WAAA,GAAA;QAcW,IAAA,CAAA,KAAK,GAAW,QAAQ;QACxB,IAAA,CAAA,aAAa,GAAY,KAAK;QAE/B,IAAA,CAAA,SAAS,GAAG,KAAK;QAUjB,IAAA,CAAA,QAAQ,GAAG,KAAK;AAcd,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAwB;AACxD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAS;;AAG5C,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AA6B1B,IAAA;AAzDC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IACA,IAAI,QAAQ,CAAC,KAAuB,EAAA;;AAElC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;IAC1D;AAGA,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IACA,IAAI,OAAO,CAAC,KAAuB,EAAA;;QAEjC,MAAM,YAAY,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;AAC5D,QAAA,IAAI,YAAY,KAAK,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,YAAY;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9B;IACF;AASA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;QACxB,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;QAC5B,IAAI,CAAC,SAAS,EAAE;QAEhB,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;8GA7DW,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EARvB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdH,kqBAkBQ,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDFK,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EAGf,KAAK,EAAA,SAAA,EACN;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,kqBAAA,EAAA;8BAGQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAIG,QAAQ,EAAA,CAAA;sBADX;gBAWG,OAAO,EAAA,CAAA;sBADV;gBAaS,aAAa,EAAA,CAAA;sBAAtB;gBACS,MAAM,EAAA,CAAA;sBAAf;;;ME7BU,oBAAoB,CAAA;AAbjC,IAAA,WAAA,GAAA;QAcW,IAAA,CAAA,KAAK,GAAW,QAAQ;QACxB,IAAA,CAAA,KAAK,GAAQ,IAAI;QACjB,IAAA,CAAA,IAAI,GAAW,EAAE;QAElB,IAAA,CAAA,SAAS,GAAG,KAAK;QAqBjB,IAAA,CAAA,QAAQ,GAAY,KAAK;QACzB,IAAA,CAAA,WAAW,GAAQ,IAAI;AAErB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAwB;AACxD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAS;;AAG5C,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAiC1B,IAAA;IA7DC,IACI,QAAQ,CAAC,KAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;IAC5D;AACA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IACA,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;AACpE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvB;IACF;AAYA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK;IAC3E;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;QACxB,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,SAAS,EAAE;;AAGhB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAErB,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;8GAlEW,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EARpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdH,4pBAmBQ,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDHK,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;+BACE,cAAc,EAAA,UAAA,EAGZ,KAAK,EAAA,SAAA,EACN;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,4pBAAA,EAAA;8BAGQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAIG,QAAQ,EAAA,CAAA;sBADX;gBASG,OAAO,EAAA,CAAA;sBADV;gBAeS,aAAa,EAAA,CAAA;sBAAtB;gBACS,MAAM,EAAA,CAAA;sBAAf;;;MEtCU,mBAAmB,CAAA;IAG9B,IACI,QAAQ,CAAC,KAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;IAChC;AACA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IAaA,WAAA,CAC8B,WAAuB,EACxB,SAAoB,EAAA;QADnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;QAvB9B,IAAA,CAAA,SAAS,GAAoB,CAAC;QAU7B,IAAA,CAAA,KAAK,GAAW,QAAQ;QAClB,IAAA,CAAA,IAAI,GAAkB,IAAI;QAEvB,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAErC,IAAA,CAAA,WAAW,GAAW,CAAC;IAK7B;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC;QACtE,IAAI,CAAC,OAAO,EAAE;IAChB;IAEQ,OAAO,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AAC1D,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,YAAA,EAAe,IAAI,CAAA,CAAE,CAAC;AACnF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;QACrF;IACF;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE;QACnE,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC;IAC/C;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM;IAClC;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AAClE,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa;IACnE;8GA3DW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAuBpB,UAAU,EAAA,EAAA,EAAA,KAAA,EACV,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxBR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,mSCRhC,gwBA2BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,KAAK,EAAA,QAAA,EAAA,gwBAAA,EAAA;;0BA2Bd,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,SAAS;yCApBf,QAAQ,EAAA,CAAA;sBADX;gBAQQ,KAAK,EAAA,CAAA;sBAAb;gBACc,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;gBAEK,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;;;MElBL,sBAAsB,CAAA;IAE/B,IACI,QAAQ,CAAC,KAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;IACvC;AACA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAkC,SAAS,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;IAKtE,IAA+B,MAAM,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AAI7D,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,IAAI;IACpB;IAcA,WAAA,CACgC,WAAuB,EACxB,SAAoB,EAAA;QADnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;QArChC,IAAA,CAAA,cAAc,GAAW,CAAC;QAYzB,IAAA,CAAA,KAAK,GAAW,QAAQ;QAIlB,IAAA,CAAA,IAAI,GAAkB,IAAI;QAOvB,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,MAAM,GAAkB,IAAI;;QAGrC,IAAA,CAAA,QAAQ,GAAG,EAAE;QACb,IAAA,CAAA,MAAM,GAAG,EAAE;QACX,IAAA,CAAA,MAAM,GAAG,EAAE;QACX,IAAA,CAAA,WAAW,GAAG,CAAC;IAKpB;IAEJ,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACzE,IAAI,CAAC,OAAO,EAAE;IAClB;IAEQ,OAAO,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AAC1D,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,eAAA,EAAkB,IAAI,CAAA,CAAE,CAAC;AACxF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;QAC1F;IACJ;AAEA,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM;IACpC;AAEA,IAAA,IAAI,UAAU,GAAA;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AAClE,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,GAAG,GAAG,IAAI,IAAI,CAAC,aAAa;IACrE;8GAhES,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAqCnB,UAAU,EAAA,EAAA,EAAA,KAAA,EACV,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtCZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,8ZCRnC,szBA6BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDrBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cACd,KAAK,EAAA,QAAA,EAAA,szBAAA,EAAA;;0BAyCZ,MAAM;2BAAC,UAAU;;0BACjB,MAAM;2BAAC,SAAS;yCAnCjB,QAAQ,EAAA,CAAA;sBADX;gBAQiC,SAAS,EAAA,CAAA;sBAA1C,WAAW;uBAAC,eAAe;gBAGnB,KAAK,EAAA,CAAA;sBAAb;gBAE8B,MAAM,EAAA,CAAA;sBAApC,WAAW;uBAAC,YAAY;gBAEV,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;gBAGT,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,WAAW;gBAKN,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;gBACE,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS;;;ME5BP,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;QAOiB,IAAA,CAAA,IAAI,GAAW,OAAO;QACtB,IAAA,CAAA,IAAI,GAAY,MAAM;AAoBtC,IAAA;AAlBC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,SAAS,EAAE,OAAO,yBAAyB;AAChD,YAAA,KAAK,MAAM,EAAE,OAAO,UAAU;AAC9B,YAAA,KAAK,SAAS,EAAE,OAAO,aAAa;AACpC,YAAA,SAAS,OAAO,yBAAyB;;IAE7C;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,SAAS,EAAE,OAAO,QAAQ;AAC/B,YAAA,KAAK,MAAM,EAAE,OAAO,MAAM;AAC1B,YAAA,KAAK,SAAS,EAAE,OAAO,OAAO;AAC9B,YAAA,SAAS,OAAO,KAAK;;IAEzB;8GApBW,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,qHCRpC,yMAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,KAAK,EAAA,QAAA,EAAA,yMAAA,EAAA;8BAKF,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;gBACE,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;;;MEFF,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;QAQwD,IAAA,CAAA,MAAM,GAAoB,CAAC;QAC/B,IAAA,CAAA,IAAI,GAAoB,CAAC;QACrB,IAAA,CAAA,MAAM,GAAoB,GAAG;QAC/B,IAAA,CAAA,KAAK,GAAiD,OAAO;QACjE,IAAA,CAAA,GAAG,GAAoB,EAAE;AAqB1E,IAAA;AAnBG,IAAA,IAAW,OAAO,GAAA;;QAEd,IAAI,CAAC,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM;QACnF,IAAI,CAAC,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;AAE3E,QAAA,IAAI,OAAO,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,GAAG,GAAG;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,IAAI,CAAA,QAAA,EAAW,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA,CAAA,CAAG,GAAG,OAAO;AAClE,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,IAAI,CAAA,QAAA,EAAW,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG,GAAG,OAAO;AAC9D,QAAA,OAAO,OAAO;IAClB;AAEA,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,CAAA,EAAA,EAAK,IAAI,CAAC,MAAM,EAAE;IAC7B;AAEA,IAAA,IAAW,WAAW,GAAA;QAClB,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM;QAC1F,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC;IAC/D;8GA1BS,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,0UCRpC,2oHAsEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD9Da,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,2oHAAA,EAAA;8BAImC,MAAM,EAAA,CAAA;sBAAzD,KAAK;uBAAC,QAAQ;;sBAAG,WAAW;uBAAC,aAAa;gBACK,IAAI,EAAA,CAAA;sBAAnD,KAAK;uBAAC,MAAM;;sBAAG,WAAW;uBAAC,WAAW;gBACa,MAAM,EAAA,CAAA;sBAAzD,KAAK;uBAAC,QAAQ;;sBAAG,WAAW;uBAAC,aAAa;gBACO,KAAK,EAAA,CAAA;sBAAtD,KAAK;uBAAC,OAAO;;sBAAG,WAAW;uBAAC,YAAY;gBACK,GAAG,EAAA,CAAA;sBAAhD,KAAK;uBAAC,KAAK;;sBAAG,WAAW;uBAAC,UAAU;;;MEG5B,0BAA0B,CAAA;IAInC,IACI,OAAO,CAAC,KAAuB,EAAA;AAC/B,QAAA,MAAM,eAAe,GAAG,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK;AACrD,QAAA,IAAI,eAAe,KAAK,IAAI,CAAC,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,GAAG,eAAe;QACnC;IACJ;AACA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;IAGA,IACI,QAAQ,CAAC,KAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;IAC5D;AACA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;AAOA,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC9B;AAEA,IAAA,WAAA,CAAoB,UAAmC,EAAA;QAAnC,IAAA,CAAA,UAAU,GAAV,UAAU;QA5CrB,IAAA,CAAA,KAAK,GAAW,QAAQ;QAEzB,IAAA,CAAA,QAAQ,GAAY,KAAK;QAYzB,IAAA,CAAA,SAAS,GAAY,KAAK;AASxB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAwB;AAE3D,QAAA,IAAA,CAAA,QAAQ,GAA6B,CAAC,CAAU,KAAI,EAAE,CAAC;AACvD,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAE,CAAC;IAkB0B;AAE1D,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;YAC9D;iBAAO;gBACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC;YAC7D;QACJ;IACJ;IAEA,eAAe,GAAA;AAEX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;QAC9D;IACJ;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,cAAc,EAAE;YACtB;QACJ;AAEA,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAA0B;AACrD,QAAA,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO;AAE5C,QAAA,IAAI,CAAC,QAAQ,GAAG,eAAe;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAClD;8GA7ES,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EATxB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdL,kYAeA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDEa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;+BACI,qBAAqB,EAAA,UAAA,EAGnB,KAAK,EAAA,SAAA,EACN;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;qBACJ,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kYAAA,EAAA;+EAGtC,KAAK,EAAA,CAAA;sBAAb;gBAIG,OAAO,EAAA,CAAA;sBADV;gBAaG,QAAQ,EAAA,CAAA;sBADX;gBAQS,MAAM,EAAA,CAAA;sBAAf;;;ME7BQ,2BAA2B,CAAA;IAGtC,IAAa,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAGlF,IAAa,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,IAAkC,UAAU,GAAA,EAAK,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IAG/E,IAAa,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAOlF,IAAA,IAAa,GAAG,CAAC,CAAkB,EAAA,EAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACpF,IAAI,QAAQ,GAAA,EAAK,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC,CAAC;AAE5C,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;IAClB;AAKA,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;QA5BpB,IAAA,CAAA,SAAS,GAAG,KAAK;QAInB,IAAA,CAAA,SAAS,GAAG,KAAK;QAKjB,IAAA,CAAA,SAAS,GAAG,KAAK;QAIhB,IAAA,CAAA,aAAa,GAAG,SAAS;QAEzB,IAAA,CAAA,YAAY,GAAW,OAAO;QAE/B,IAAA,CAAA,IAAI,GAAG,EAAE;IAW4B;IAE7C,kBAAkB,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;QACvF,OAAO,CAAC,OAAO,CAAC,CAAC,MAAe,EAAE,KAAa,KAAI;YACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,MAAqB,EAAE,QAAQ,CAAC;AAEpD,YAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAqB,CAAC,CAAC;AACtF,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,CAAC,MAAmB,EAAE,QAAiB,EAAA;QAC3D,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnC;aAAO;AACL,YAAA,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;QAClC;IACF;AAEQ,IAAA,gBAAgB,CAAC,cAA2B,EAAA;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;QACvF,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAe,KAC9D,MAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAC3C;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE;YACtF;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;YAC9C;QACF;AAEA,QAAA,IAAI,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC;QAC5C;aAAO;AACL,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAe,KAAI;gBAClC,IAAI,CAAC,cAAc,CAAC,MAAqB,EAAE,MAAM,KAAK,cAAc,CAAC;AACvE,YAAA,CAAC,CAAC;QACJ;IACF;8GAzEW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EA2BrB,qBAAqB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCxC,gKAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,gKAAA,EAAA;+EAKJ,QAAQ,EAAA,CAAA;sBAApB;gBAIY,QAAQ,EAAA,CAAA;sBAApB;gBAEiC,UAAU,EAAA,CAAA;sBAA3C,WAAW;uBAAC,eAAe;gBAGf,QAAQ,EAAA,CAAA;sBAApB;gBAGQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBAGY,GAAG,EAAA,CAAA;sBAAf;gBAQD,OAAO,EAAA,CAAA;sBADN,eAAe;uBAAC,qBAAqB;;;MEhC3B,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;QAMW,IAAA,CAAA,KAAK,GAAW,EAAE;QAClB,IAAA,CAAA,IAAI,GAAW,EAAE;QAElB,IAAA,CAAA,OAAO,GAAY,KAAK;AAOjC,IAAA;IANC,IAAa,MAAM,CAAC,KAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM;IACnE;AACA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;8GAVW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,mICPnC,8CACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDMa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAEV,KAAK,EAAA,QAAA,EAAA,8CAAA,EAAA;8BAGR,KAAK,EAAA,CAAA;sBAAb;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAGY,MAAM,EAAA,CAAA;sBAAlB;;;MEIU,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;QAUW,IAAA,CAAA,aAAa,GAAW,CAAC;AACxB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU;AAChD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAkB;AAUtD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU;AA8DnD,IAAA;AAtEC,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,aAAa;IAC3B;IACA,IAAI,cAAc,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC5B;AAIA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE;AACrE,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3C;IACF;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YAC/B,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AACtD,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC9C,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;QAC3C;IACF;AAEA,IAAA,SAAS,CAAC,GAA2B,EAAA;QACnC,IAAI,GAAG,CAAC,MAAM;YAAE;QAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrC,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;AACxC,QAAA,GAAG,CAAC,MAAM,GAAG,IAAI;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;AAEpC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAE1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;AACtC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QACrB;IACF;AAGA,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrC,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AAE3D,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;YAC9B,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM;AACvD,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAClC;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AACpC,YAAA,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM;AAC1E,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAClC;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1B;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC9B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7C;IACF;8GA5EW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EACb,sBAAsB,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBzC,i9BAsBA,yYDTc,CAAC,GAAG,gBAAgB,CAAC,EAAA,CAAA,CAAA;;2FAGtB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,CAAC,GAAG,gBAAgB,CAAC,cACrB,KAAK,EAAA,QAAA,EAAA,i9BAAA,EAAA;8BAGwB,IAAI,EAAA,CAAA;sBAA5C,eAAe;uBAAC,sBAAsB;gBAE9B,aAAa,EAAA,CAAA;sBAArB;gBACS,mBAAmB,EAAA,CAAA;sBAA5B;gBACS,iBAAiB,EAAA,CAAA;sBAA1B;gBAGG,cAAc,EAAA,CAAA;sBADjB;gBAQS,WAAW,EAAA,CAAA;sBAApB;gBA8CD,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ME3DxB,mBAAmB,CAAA;AAdhC,IAAA,WAAA,GAAA;QAeW,IAAA,CAAA,WAAW,GAAW,oBAAoB;QAC1C,IAAA,CAAA,GAAG,GAAW,EAAE;QAChB,IAAA,CAAA,GAAG,GAAW,EAAE;QAChB,IAAA,CAAA,QAAQ,GAAY,KAAK;QAElC,IAAA,CAAA,KAAK,GAAW,EAAE;QAClB,IAAA,CAAA,UAAU,GAAY,KAAK;;AAGnB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAU,KAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AA4B7B,IAAA;AA1BC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;8GAtCW,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,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EARnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfH,6PAYA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDKa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,iBAGR,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,SAAA,EACN;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,6PAAA,EAAA;8BAGQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;MEXU,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;QASU,IAAA,CAAA,gBAAgB,GAA2B,IAAI;QAC/C,IAAA,CAAA,cAAc,GAA2B,IAAI;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AAkI1C,IAAA;IAhIC,kBAAkB,GAAA;;QAEhB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC7C,QAAA,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;YAC7B,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAChD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;;YAG9C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;gBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAC7E;gBACD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAC3E;YACH;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IACjC;AAEA;;AAEG;IACK,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;AAEpD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;AAC9C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;;AAG1C,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;;AAGA,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;;QAGA,MAAM,SAAS,GAAG,qBAAqB;QAEvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC9B,gBAAA,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM;gBAC/B,CAAC,mBAAmB,GAAG;AACxB,aAAA,CAAC;YACF;QACF;QAEA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,gBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;gBAC7B,CAAC,mBAAmB,GAAG;AACxB,aAAA,CAAC;YACF;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;AACtC,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;;QAGlC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC9B,gBAAA,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM;gBAC/B,CAAC,aAAa,GAAG;AAClB,aAAA,CAAC;YACF;QACF;QAEA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,gBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;gBAC7B,CAAC,aAAa,GAAG;AAClB,aAAA,CAAC;YACF;QACF;;AAGA,QAAA,IAAI,SAAS,GAAG,OAAO,EAAE;;AAEvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC9B,gBAAA,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM;gBAC/B,CAAC,kBAAkB,GAAG;AACvB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,gBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;gBAC7B,CAAC,kBAAkB,GAAG;AACvB,aAAA,CAAC;QACJ;aAAO;;YAEL,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;AAEA;;AAEG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YACnE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;YACpE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC;YAC9D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC;QAClE;AACA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC;YACjE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC;YAClE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC;YAC5D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC;QACjE;IACF;AAEA;;AAEG;IACK,mBAAmB,CAAC,OAAwB,EAAE,SAAiB,EAAA;QACrE,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;QACpC,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,MAAM,CAAC,SAAS,CAAC;YACxB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAC/D;IACF;8GAtIW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAClB,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX5B,oFAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,oFAAA,EAAA;8BAGkC,QAAQ,EAAA,CAAA;sBAA1D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;MEDtC,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;;QAcW,IAAA,CAAA,cAAc,GAAY,KAAK;QAEhC,IAAA,CAAA,gBAAgB,GAA2B,IAAI;QAC/C,IAAA,CAAA,cAAc,GAA2B,IAAI;QAC7C,IAAA,CAAA,gBAAgB,GAA2B,IAAI;QAC/C,IAAA,CAAA,cAAc,GAA2B,IAAI;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AAoH1C,IAAA;IAlHC,kBAAkB,GAAA;;QAEhB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC7C,QAAA,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;YAC7B,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAChD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;;AAG9C,YAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc;AAC5C,gBAAA,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACxD,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM;gBAC9C,IAAI,SAAS,EAAE;oBACb,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;oBAChE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC9D;YACF;;YAGA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;gBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAC7E;gBACD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAC3E;YACH;;YAGA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;gBAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAC7E;gBACD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAC3E;YACH;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IACjC;AAEA;;AAEG;IACK,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK;YAAE;AAEhE,QAAA,IAAI,aAAmB;AACvB,QAAA,IAAI,WAAiB;;AAGrB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE;AAC9D,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;AAC7C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;AAEzC,YAAA,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAA,CAAE,CAAC;AACvE,YAAA,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAA,CAAE,CAAC;;AAGjE,YAAA,IAAI,aAAa,GAAG,WAAW,EAAE;gBAC/B,IAAI,CAAC,mBAAmB,EAAE;YAC5B;iBAAO;gBACL,IAAI,CAAC,qBAAqB,EAAE;YAC9B;QACF;;AAEK,aAAA,IAAI,IAAI,CAAC,cAAc,EAAE;;YAE5B,IAAI,CAAC,qBAAqB,EAAE;QAC9B;;aAEK;AACH,YAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,YAAA,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAA,CAAE,CAAC;AACnE,YAAA,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAA,CAAE,CAAC;AAE/D,YAAA,IAAI,aAAa,GAAG,WAAW,EAAE;gBAC/B,IAAI,CAAC,mBAAmB,EAAE;YAC5B;iBAAO;gBACL,IAAI,CAAC,qBAAqB,EAAE;YAC9B;QACF;IACF;AAEA;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,CAAC,eAAe,GAAG,IAAI,EAAE,CAAC;AAC7D,QAAA,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,CAAC,gBAAgB,GAAG,IAAI,EAAE,CAAC;IAC9D;AAEA;;AAEG;IACK,qBAAqB,GAAA;QAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC;QAChE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC;IACjE;AAEA;;AAEG;IACK,mBAAmB,CAAC,OAA+B,EAAE,SAAiB,EAAA;AAC5E,QAAA,IAAI,CAAC,OAAO;YAAE;QACd,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE;QACpC,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,MAAM,CAAC,SAAS,CAAC;YACxB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAC/D;IACF;8GAjIW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EACb,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX5B,sEAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,KAAK,EAAA,QAAA,EAAA,sEAAA,EAAA;8BAGkC,QAAQ,EAAA,CAAA;sBAA1D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAGxC,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAGQ,cAAc,EAAA,CAAA;sBAAtB;;;AElBH;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG;AACf,IAAA;QACI,4BAA4B;QAC5B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,sBAAsB;QACtB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ,GAAG;QACH,CAAC;AACD,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ,GAAG;QACH,CAAC;AACD,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,qBAAqB;QACrB,IAAI;QACJ,GAAG;QACH,CAAC;AACD,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ,IAAI;AACP,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,sBAAsB;QACtB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,yBAAyB;QACzB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ,GAAG;QACH,CAAC;AACD,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,sBAAsB;QACtB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,uBAAuB;QACvB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ,GAAG;QACH,CAAC;AACD,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,eAAe;QACf,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,8CAA8C;QAC9C,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gCAAgC;QAChC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,wBAAwB;QACxB,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,qBAAqB;QACrB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,qBAAqB;QACrB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ,GAAG;QACH,CAAC;AACD,QAAA,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AACxS,KAAA;AACD,IAAA;QACI,yBAAyB;QACzB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,uBAAuB;QACvB,IAAI;QACJ,KAAK;QACL,CAAC;AACD,QAAA,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;AACjB,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,sDAAsD;QACtD,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,yBAAyB;QACzB,IAAI;QACJ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,wBAAwB;QACxB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gDAAgD;QAChD,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,sCAAsC;QACtC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,eAAe;QACf,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,MAAM;QACN,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ,KAAK;QACL;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kCAAkC;QAClC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,2CAA2C;QAC3C,IAAI;QACJ,GAAG;QACH,CAAC;AACD,QAAA,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK;AACvB,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,uCAAuC;QACvC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,mCAAmC;QACnC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,yBAAyB;QACzB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,MAAM;QACN,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ,KAAK;QACL;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kCAAkC;QAClC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,wCAAwC;QACxC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,sBAAsB;QACtB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,uBAAuB;QACvB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,eAAe;QACf,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,8BAA8B;QAC9B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ,KAAK;QACL;AACH,KAAA;AACD,IAAA;QACI,MAAM;QACN,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ,IAAI;QACJ,CAAC;AACD,QAAA,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAClC,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,8BAA8B;QAC9B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,wBAAwB;QACxB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ,IAAI;QACJ,CAAC;QACD,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAC3C,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ,GAAG;QACH,CAAC;QACD,CAAC,KAAK,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ,IAAI;QACJ,CAAC;QACD,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;AAClD,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,wBAAwB;QACxB,IAAI;QACJ,GAAG;QACH,CAAC;QACD,CAAC,IAAI,EAAE,GAAG;AACb,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,yBAAyB;QACzB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,eAAe;QACf,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,qBAAqB;QACrB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gCAAgC;QAChC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,2BAA2B;QAC3B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,MAAM;QACN,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,2BAA2B;QAC3B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ,KAAK;QACL,CAAC;QACD,CAAC,KAAK,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,6BAA6B;QAC7B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,wBAAwB;QACxB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,qBAAqB;QACrB,IAAI;QACJ,KAAK;QACL;AACH,KAAA;AACD,IAAA;QACI,yBAAyB;QACzB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,0BAA0B;QAC1B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,eAAe;QACf,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,yBAAyB;QACzB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oCAAoC;QACpC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,eAAe;QACf,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,MAAM;QACN,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,8BAA8B;QAC9B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,0BAA0B;QAC1B,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,uBAAuB;QACvB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,uBAAuB;QACvB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ,GAAG;QACH,CAAC;QACD,CAAC,KAAK,EAAE,KAAK;AAChB,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,sBAAsB;QACtB,IAAI;QACJ,KAAK;QACL;AACH,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ,GAAG;QACH;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ,KAAK;QACL;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,uBAAuB;QACvB,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,gDAAgD;QAChD,IAAI;QACJ,KAAK;QACL;AACH,KAAA;AACD,IAAA;QACI,sDAAsD;QACtD,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kCAAkC;QAClC,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,6CAA6C;QAC7C,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,4CAA4C;QAC5C,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,sBAAsB;QACtB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,sBAAsB;QACtB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,iBAAiB;QACjB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,sBAAsB;QACtB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,+BAA+B;QAC/B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,yBAAyB;QACzB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,wBAAwB;QACxB,IAAI;QACJ,IAAI;QACJ,CAAC;AACD,QAAA,CAAC,IAAI;AACR,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,uBAAuB;QACvB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,YAAY;QACZ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,aAAa;QACb,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,MAAM;QACN,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,OAAO;QACP,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,qBAAqB;QACrB,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,cAAc;QACd,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,0BAA0B;QAC1B,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,qBAAqB;QACrB,IAAI;QACJ,GAAG;QACH,EAAE;AACF,QAAA,CAAC,KAAK;AACT,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,mBAAmB;QACnB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oDAAoD;QACpD,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,gBAAgB;QAChB,IAAI;QACJ,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,eAAe;QACf,IAAI;QACJ,GAAG;QACH;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,0BAA0B;QAC1B,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,SAAS;QACT,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,mCAAmC;QACnC,IAAI;QACJ,IAAI;QACJ,CAAC;AACD,QAAA,CAAC,OAAO;AACX,KAAA;AACD,IAAA;QACI,WAAW;QACX,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,oBAAoB;QACpB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,sCAAsC;QACtC,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,qCAAqC;QACrC,IAAI;QACJ,KAAK;QACL,CAAC;QACD,CAAC,MAAM,EAAE,MAAM;AAClB,KAAA;AACD,IAAA;QACI,kBAAkB;QAClB,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,QAAQ;QACR,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,UAAU;QACV,IAAI;QACJ;AACH,KAAA;AACD,IAAA;QACI,eAAe;QACf,IAAI;QACJ,KAAK;QACL,CAAC;AACD,QAAA,CAAC,IAAI;AACR;CACJ;AAED;SAEgB,cAAc,GAAA;IAC1B,IAAI,SAAS,GAA8H,EAAE;AAC7I,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAA,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;;AAEvB,QAAA,MAAM,WAAW,GAAiD;YAC9D,CAAC,CAAC,CAAC,CAAW;YACd,CAAC,CAAC,CAAC,CAAW;YACd,CAAC,CAAC,CAAC,CAAW;AACd,YAAA,CAAC,CAAC,CAAC,CAAW,IAAI,CAAC;AACnB,YAAA,CAAC,CAAC,CAAC,CAAa,IAAI;SACvB;QACD,SAAS,CAAC,CAAC,CAAC,GAAG;AACX,YAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAW;AACpB,YAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAW;AACpB,YAAA,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAW;AACxB,YAAA,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAW,IAAI,CAAC;AAC7B,YAAA,SAAS,EAAE,CAAC,CAAC,CAAC,CAAa,IAAI,IAAI;AACnC,YAAA,IAAI,EAAE,cAAc,CAAC,WAAW;SACnC;IACL;AACA,IAAA,OAAO,SAAS;AACpB;AAEA,SAAS,cAAc,CAAC,OAAqD,EAAA;AACzE,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAgB,KAAI;AAE7C,QAAA,IAAI,WAAW,KAAK,GAAG,EAAE;;AAErB,YAAA,OAAO,cAAc;QACzB;aAAO,IAAI,WAAW,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEtD,YAAA,OAAO,eAAe;QAC1B;AAAO,aAAA,IAAI,WAAW,KAAK,IAAI,EAAE;;AAE7B,YAAA,OAAO,cAAc;QACzB;aAAO;;AAEH,YAAA,OAAO,eAAe;QAC1B;AACJ,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,KAAK;AAChB;;MCxyCa,kBAAkB,GAAG,IAAI,cAAc,CAAmB,oBAAoB;MAC9E,UAAU,GAAG,IAAI,cAAc,CAAmB,wBAAwB;MAC1E,cAAc,GAAG,IAAI,cAAc,CAAmB,4BAA4B;AAExF,MAAM,aAAa,GAAqB;AAC3C,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACzB,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,oBAAoB,EAAE,GAAG;AACzB,IAAA,qBAAqB,EAAE,IAAI;AAC3B,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,oBAAoB,EAAE,KAAK;AAC3B,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACzF,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,sBAAsB,EAAE,KAAK;AAC7B,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,gBAAgB,EAAE,CAAC,KAAc,KAAK,KAAwB;AAC9D,IAAA,iBAAiB,EAAE,CAAC,KAAyC,KAAK,KAAK;IACvE,UAAU,EAAE,IAAI,YAAY,EAAQ;AACpC,IAAA,QAAQ,EAAE;AACN,QAAA,GAAG,EAAE;AACD,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC7B,SAAA;AACD,QAAA,GAAG,EAAE;AACD,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC1B,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC1B,YAAA,MAAM,EAAE,GAAG;AACd,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,aAAa,CAAC;AACrC,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC;AAClC,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC;AAC/B,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC;AAC/B,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC7B,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC7B,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC7B,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC7B,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC7B,SAAA;AACD,QAAA,CAAC,EAAE;AACC,YAAA,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;AAC7B,SAAA;AACJ,KAAA;;AAGE,MAAM,SAAS,GAAa;;;;;AAM5B,MAAM,iBAAiB,GAAa;;;;;;;;;;;;MCrH9B,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAEc,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAmB,kBAAkB,CAAC;AAEzD,QAAA,IAAA,CAAA,qBAAqB,GACxB,IAAI,CAAC,OAAO,CAAC,qBAAqB;AAE/B,QAAA,IAAA,CAAA,WAAW,GAAoC,IAAI,CAAC,OAAO,CAAC,WAAW;AAEvE,QAAA,IAAA,CAAA,eAAe,GAAwC,IAAI,CAAC,OAAO,CAAC,eAAe;AAEnF,QAAA,IAAA,CAAA,iBAAiB,GAA0C,IAAI,CAAC,OAAO,CAAC,iBAAiB;AAEzF,QAAA,IAAA,CAAA,QAAQ,GAAiC,IAAI,CAAC,OAAO,CAAC,QAAQ;QAE9D,IAAA,CAAA,MAAM,GAA+B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE;QAE9D,IAAA,CAAA,MAAM,GAA+B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE;QAE9D,IAAA,CAAA,iBAAiB,GAA0C,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE;QAE/F,IAAA,CAAA,aAAa,GAAsC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE;AAInF,QAAA,IAAA,CAAA,aAAa,GAAsC,IAAI,CAAC,OAAO,CAAC,aAAa;AAE7E,QAAA,IAAA,CAAA,oBAAoB,GACvB,IAAI,CAAC,OAAO,CAAC,oBAAoB;AAE9B,QAAA,IAAA,CAAA,UAAU,GAAmC,IAAI,CAAC,OAAO,CAAC,UAAU;AAEpE,QAAA,IAAA,CAAA,cAAc,GAAuC,IAAI,CAAC,OAAO,CAAC,cAAc;AAEhF,QAAA,IAAA,CAAA,oBAAoB,GACvB,IAAI,CAAC,OAAO,CAAC,oBAAoB;AAE9B,QAAA,IAAA,CAAA,gBAAgB,GAAyC,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAEtF,QAAA,IAAA,CAAA,QAAQ,GAAiC,IAAI,CAAC,OAAO,CAAC,QAAQ;AAE9D,QAAA,IAAA,CAAA,GAAG,GAA4B,IAAI,CAAC,OAAO,CAAC,GAAG;AAE/C,QAAA,IAAA,CAAA,gBAAgB,GACnB,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAE1B,QAAA,IAAA,CAAA,iBAAiB,GACpB,IAAI,CAAC,OAAO,CAAC,iBAAiB;AAE3B,QAAA,IAAA,CAAA,sBAAsB,GACzB,IAAI,CAAC,OAAO,CAAC,sBAAsB;AAEhC,QAAA,IAAA,CAAA,aAAa,GAAsC,IAAI,CAAC,OAAO,CAAC,aAAa;AAE7E,QAAA,IAAA,CAAA,mBAAmB,GACtB,IAAI,CAAC,OAAO,CAAC,mBAAmB;AAE7B,QAAA,IAAA,CAAA,YAAY,GAAqC,IAAI,CAAC,OAAO,CAAC,YAAY;AAEzE,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,GAAG,EAAU;QAE3B,IAAA,CAAA,eAAe,GAAG,KAAK;QAEvB,IAAA,CAAA,cAAc,GAAG,EAAE;QAEnB,IAAA,CAAA,WAAW,GAAG,EAAE;QAEhB,IAAA,CAAA,oBAAoB,GAAG,EAAE;AAEzB,QAAA,IAAA,CAAA,mBAAmB,GACtB,IAAI,CAAC,OAAO,CAAC,mBAAmB;QAE7B,IAAA,CAAA,uBAAuB,GAAG,KAAK;QA0yB9B,IAAA,CAAA,qBAAqB,GAAG,CAC5B,GAAW,EACX,qBAA6B,EAC7B,YAA+B,EAC/B,SAAiB,KACjB;YACA,IAAI,CAAC,GAAa,EAAE;YACpB,IAAI,WAAW,GAAG,EAAE;AAEpB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC7B,gBAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CACrB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA,EAAA,EAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACrF;AACD,gBAAA,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AACrB,gBAAA,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAA,EAAA;YACxC;iBAAO;AACH,gBAAA,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC3B,WAAW,GAAG,YAAY;YAC9B;YACA,MAAM,QAAQ,GACV,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,WAAW,CAAA,EAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,GAAE,EAAA;AAC5C,YAAA,IAAI,GAAG,GAAW,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,cAAc,GAAW,IAAI,CAAC,cAAc,CAAC,OAAO,CACtD,KAAK,EAAA,EAAA,mCAER;AACD,YAAA,IAAI,cAAc,IAAI,CAAC,cAAc,EAAE;AACnC,gBAAA,IAAI,GAAG,CAAC,CAAC,CAAC,KAAA,GAAA,6BAA2B;oBACjC,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA,CAAE;gBACxE;qBAAO;oBACH,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;gBAC7C;YACJ;YACA,MAAM,GAAG,GAAG,cAAc;YAE1B,OAAO,qBAAqB,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC3C,gBAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAAC;YAC/D;AAEA,YAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;gBAClC,OAAO,GAAG,GAAG,QAAQ;YACzB;AAAO,iBAAA,IAAI,SAAS,KAAK,CAAC,EAAE;AACxB,gBAAA,OAAO,GAAG;YACd;AACA,YAAA,OAAO,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;AACrD,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,GAAW,KAAa;YAC1C,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,CAChB,IAAI,CAAC,oBAAoB,IAAI,GAAG,CAAC,QAAQ,CAAA,GAAA;kBACnC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM;kBAChC,YAAY,CACrB;AAED,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG;AACtD,QAAA,CAAC;AAEM,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,cAAsB,KAAY;AACrD,YAAA,MAAM,CAAC,GAAa,cAAc,CAAC,KAAK,8BAAoB;AAC5D,YAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACd,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClC;AAEA,YAAA,OAAO,QAAQ;AACnB,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,UAAkB,KAAY;AAC1D,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5D,gBAAA,IACI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3B,oBAAA,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC;AAC7B,qBAAC,CAAC,GAAG,CAAC,GAAG,CAAC;wBACN,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAC9E;AACE,oBAAA,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,uCAA8B;gBAClE;YACJ;AACA,YAAA,OAAO,UAAU;AACrB,QAAA,CAAC;QAEO,IAAA,CAAA,mBAAmB,GAAG,CAC1B,UAAkB,EAClB,SAAiB,EACjB,aAAgD,KACxC;YACR,IAAI,mBAAmB,GAAG,UAAU;YACpC,IAAI,sBAAsB,GAAG,aAAa;AAE1C,YAAA,IAAI,SAAS,GAAG,QAAQ,EAAE;;AAEtB,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;AACvC,oBAAA,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAAC;AAEjF,oBAAA,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC;gBACxE;AACA,gBAAA,MAAM,cAAc,GAAG,IAAI,MAAM,CAC7B,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,GAAG,CAAA,IAAA,EAAO,SAAS,CAAA,IAAA,CAAM,CAChF;gBACD,MAAM,cAAc,GAChB,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC;AAC7C,gBAAA,MAAM,oBAAoB,GAAW,CAAC,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC;AACvF,gBAAA,IAAI,oBAAoB,GAAG,CAAC,GAAG,SAAS,EAAE;AACtC,oBAAA,MAAM,IAAI,GAAG,oBAAoB,GAAG,CAAC,GAAG,SAAS;AAEjD,oBAAA,mBAAmB,GAAG,mBAAmB,CAAC,SAAS,CAC/C,CAAC,EACD,mBAAmB,CAAC,MAAM,GAAG,IAAI,CACpC;gBACL;gBACA,IACI,SAAS,KAAK,CAAC;AACf,oBAAA,IAAI,CAAC,kBAAkB,CACnB,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,EACnD,sBAAsB,EACtB,IAAI,CAAC,iBAAiB,CACzB,EACH;AACE,oBAAA,mBAAmB,GAAG,mBAAmB,CAAC,SAAS,CAC/C,CAAC,EACD,mBAAmB,CAAC,MAAM,GAAG,CAAC,CACjC;gBACL;YACJ;AACA,YAAA,OAAO,mBAAmB;AAC9B,QAAA,CAAC;AA8GJ,IAAA;AAhhCU,IAAA,SAAS,CACZ,UAAwD,EACxD,cAAsB,EACtB,QAAQ,GAAG,CAAC,EACZ,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK;;IAElB,EAAA,GAA8B,MAAK,EAAE,CAAC,EAAA;QAEtC,IAAI,CAAC,cAAc,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YACnD,OAAA,EAAA;QACJ;QACA,IAAI,MAAM,GAAG,CAAC;QACd,IAAI,MAAM,GAAG,EAAE;QACf,IAAI,KAAK,GAAG,KAAK;QACjB,IAAI,cAAc,GAAG,KAAK;QAC1B,IAAI,KAAK,GAAG,CAAC;QACb,IAAI,QAAQ,GAAG,KAAK;QACpB,IAAI,cAAc,GAAG,UAAU;QAC/B,IAAI,iBAAiB,GAAG,QAAQ;AAEhC,QAAA,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AAC7D,YAAA,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;QACpF;AACA,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,YAAA,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;QAC9D;QACA,IAAI,cAAc,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YACvC,cAAc,GAAG,EAAE;QACvB;QACA,MAAM,UAAU,GAAa,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAA,EAAA,mCAA6B;QACzF,IACI,IAAI,CAAC,oBAAoB;YACzB,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA,6BAC1C;YACE,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;QACtD;QACA,IAAI,cAAc,KAAA,IAAA,0BAAwB;AACtC,YAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,8BAAoB;YACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;YAGtC,cAAc,GAAG,iBAAiB;QACtC;QACA,MAAM,GAAG,GAAa,EAAE;;AAExB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;gBACjC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAA,EAAA,mCAAgC;YAC9D;QACJ;QACA,IAAI,cAAc,KAAA,UAAA,gCAA8B;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;AAC1D,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE;;gBAEjB,cAAc,GAAG,oBAAoB;YACzC;iBAAO;;gBAEH,cAAc,GAAG,gBAAgB;YACrC;QACJ;AACA,QAAA,IAAI,cAAc,CAAC,UAAU,CAAA,SAAA,8BAAwB,EAAE;AACnD,YAAA,IACI,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC;;iBAElC,cAAc,CAAC,KAAK,CAAC,oCAAoC,CAAC,IAAI,CAAC,UAAU,CAAC,EAC7E;AACE,gBAAA,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;gBACrD,MAAM,SAAS,GAAW,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;AAE3D,gBAAA,cAAc,GAAG,IAAI,CAAC,mBAAmB,CACrC,cAAc,EACd,SAAS,EACT,IAAI,CAAC,aAAa,CACrB;YACL;AACA,YAAA,MAAM,aAAa,GACf,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,IAAI,CAAC,aAAa;AAC/D,YAAA,IACI,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AACzC,gBAAA,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EACtF;AACE,gBAAA,IAAI,IAAI,GAAW,cAAc,CAAC,SAAS,CACvC,CAAC,EACD,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAC5C;gBACD,IACI,IAAI,CAAC,oBAAoB;oBACzB,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA;oBACxC,CAAC,UAAU,EACb;AACE,oBAAA,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC7E;gBAEA,cAAc,GAAG,GAAG,IAAI,CAAA,EAAG,cAAc,CAAC,SAAS,CAC/C,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EACrC,cAAc,CAAC,MAAM,CACxB,EAAE;YACP;YACA,IAAI,KAAK,GAAG,EAAE;;AAEd,YAAA,IAAI,CAAC,oBAAoB;gBACzB,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA;mBACjC,KAAK,GAAG,GAAG,GAAA,4BAAoB,EAAG,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA,CAAE;AACvG,mBAAG,KAAK,GAAG,cAAc,CAAC;AAC9B,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACxB,gBAAA,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;YACnD;iBAAO;AACH,gBAAA,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAC3B,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CACzD;YACL;QACJ;AAAO,aAAA,IAAI,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B,EAAE;AAC5D,YAAA,IACI,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC;AACjC,gBAAA,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;AAC/B,gBAAA,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC;AACnC,gBAAA,cAAc,CAAC,KAAK,CAAC,sCAAsC,CAAC;AAC5D,gBAAA,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,EACvC;AACE,gBAAA,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;YACzD;YAEA,MAAM,SAAS,GAAW,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;AAC3D,YAAA,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa;YAEtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACnC,gBAAA,IACI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAChD,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAClD;AACE,oBAAA,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC3D,0BAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACtB,0BAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC/B;qBAAO;AACH,oBAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CACnC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAC3B;gBAClB;YACJ;;YAGA,IAAI,IAAI,CAAC,YAAY,IAAI,SAAS,GAAG,CAAC,EAAE;;AAEpC,gBAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAA,GAAA,4BAAsB;qBAC9C,IAAI,CAAC,oBAAoB,IAAI,cAAc,CAAC,QAAQ,CAAA,GAAA,4BAAsB,CAAC;gBAC7F,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AAEvD,gBAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,oBAAA,MAAM;gBACV;qBAAO;;AAEH,oBAAA,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG;AAExD,oBAAA,IAAI,cAAsB;AAC1B,oBAAA,IAAI,WAAW,CAAC,MAAM,IAAI,SAAS,EAAE;;wBAEjC,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;AAC1D,wBAAA,cAAc,GAAG,GAAG,GAAI,aAAwB,GAAG,aAAa;oBACpE;yBAAO;;wBAEH,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;wBACpD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;;wBAGjD,IAAI,gBAAgB,GAAG,WAAW;wBAClC,MAAM,GAAG,GAAG,cAAc;wBAC1B,OAAO,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACzD,4BAAA,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;wBAC1F;AAEA,wBAAA,cAAc,GAAG,gBAAgB,GAAI,aAAwB,GAAG,WAAW;oBAC/E;AAEA,oBAAA,MAAM,GAAG,CAAC,QAAQ,GAAE,GAAA,8BAAwB,EAAE,IAAI,cAAc;gBACpE;;gBAGA,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;;;;AAKhC,gBAAA,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,MAAM,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE;AACjD,gBAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACrB,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA,EAAG,MAAM,EAAE,GAAG,CAAA,EAAG,MAAM,EAAE;gBACtE;AACA,gBAAA,OAAO,GAAG;YACd;YAEA,IAAI,UAAU,EAAE;AACZ,gBAAA,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gCAAgC,CAC9E,cAAc,EACd,aAA0B,CAC7B;AACD,gBAAA,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC;AACxC,gBAAA,MAAM,mBAAmB,GAAG,cAAc,CAAC,CAAC,CAAC;gBAC7C,MAAM,sBAAsB,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,aAAa;gBAClE,MAAM,uBAAuB,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,aAAa;AAEnE,gBAAA,IACI,CAAC,sBAAsB,IAAI,CAAC,YAAY;AACxC,qBAAC,cAAc,IAAI,uBAAuB,IAAI,CAAC,YAAY,CAAC;qBAC3D,mBAAmB,IAAI,CAAC,kBAAkB,IAAI,CAAC,YAAY,CAAC,EAC/D;AACE,oBAAA,cAAc;gBAClB;AAEA,gBAAA,IACI,kBAAkB;oBAClB,YAAY;oBACZ,cAAc;oBACd,iBAAiB,KAAK,CAAC,EACzB;oBACE,IAAI,kBAAkB,GAAG,YAAY,IAAI,kBAAkB,GAAG,YAAY,EAAE;wBACxE,cAAc,GAAG,iCAAuB,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;oBAC9E;gBACJ;gBAEA,IAAI,CAAC,kBAAkB,IAAI,YAAY,IAAI,cAAc,CAAC,MAAM,GAAG,YAAY,EAAE;AAC7E,oBAAA,cAAc,GAAG;AACb,0BAAE,GAAA,8BAAuB,cAAc,CAAC,KAAK,CAAC,YAAY;AAC1D,0BAAE,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC5C;gBAEA,IAAI,kBAAkB,IAAI,YAAY,IAAI,iBAAiB,KAAK,CAAC,EAAE;AAC/D,oBAAA,IAAI,kBAAkB,GAAG,YAAY,EAAE;wBACnC,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;oBACjE;AACA,oBAAA,IAAI,kBAAkB,GAAG,YAAY,EAAE;AACnC,wBAAA,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;oBACvD;gBACJ;YACJ;AAEA,YAAA,IAAI,SAAS,KAAK,CAAC,EAAE;gBACjB,cAAc,GAAG,IAAI,CAAC;AAClB,sBAAE,cAAc,CAAC,MAAM,GAAG,CAAC;wBACzB,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;wBACjB,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;AACjB,wBAAA,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB;wBAC5C,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;wBACjB,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;AACf,0BAAE,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM;AACrD,0BAAE,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;4BACf,cAAc,CAAC,MAAM,GAAG,CAAC;AACzB,4BAAA,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB;4BAC5C,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;4BACjB,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;8BACjB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM;AAC/C,8BAAE;AACR,sBAAE,cAAc,CAAC,MAAM,GAAG,CAAC;wBACvB,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;AACjB,wBAAA,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB;wBAC5C,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;wBACjB,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;0BACjB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM;0BAC7C,cAAc;YAC1B;iBAAO;AACH,gBAAA,IACI,cAAc,CAAC,CAAC,CAAC,KAAK,aAAa;oBACnC,cAAc,CAAC,MAAM,GAAG,CAAC;oBACzB,CAAC,UAAU,EACb;oBACE,cAAc;AACV,wBAAA,GAAA;4BACA,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AACtD,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;gBAC/B;AACA,gBAAA,IACI,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;AACjB,oBAAA,cAAc,CAAC,CAAC,CAAC,KAAK,aAAa;AACnC,oBAAA,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB;oBAC5C,CAAC,UAAU,EACb;oBACE,cAAc;wBACV,cAAc,CAAC,MAAM,GAAG;8BAClB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gCAC1B,aAAa;gCACb,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC;8BACjD,cAAc;AACxB,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;gBAC/B;gBACA,IACI,IAAI,CAAC,oBAAoB;AACzB,oBAAA,CAAC,UAAU;oBACX,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;AACjB,qBAAC,cAAc,CAAC,CAAC,CAAC,KAAK,aAAa;AAChC,wBAAA,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA,kCAAgC,EACvD;oBACE,cAAc;wBACV,cAAc,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,cAAc,CAAC,MAAM,GAAG;8BACzD,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACA,gCAAA,GAAA;gCAC1B,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM;AAC/C,8BAAE,cAAc,CAAC,CAAC,CAAC,KAAA,GAAA;gCACf,cAAc,CAAC,MAAM,GAAG,CAAC;AACzB,gCAAA,cAAc,CAAC,CAAC,CAAC,KAAK;kCACtB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oCAC1B,aAAa;oCACb,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM;kCAC7C,cAAc;AAC1B,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;gBAC/B;YACJ;;;YAKA,MAAM,4BAA4B,GAAW,IAAI,CAAC,uBAAuB,CACrE,IAAI,CAAC,iBAAiB,CACzB;YACD,IAAI,YAAY,GAAW,0CAA0C,CAAC,OAAO,CACzE,4BAA4B,EAC5B,EAAE,CACL;;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACnC,gBAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;AACrC,oBAAA,YAAY,GAAG,YAAY,CAAC,OAAO,CAC/B,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAA,EAAA,mCAEvC;gBACL;YACJ;iBAAO;AACH,gBAAA,YAAY,GAAG,YAAY,CAAC,OAAO,CAC/B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,EAChD,EAAE,CACL;YACL;YAEA,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC;AAC9D,YAAA,IAAI,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AACzC,gBAAA,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3E;AAEA,YAAA,cAAc,GAAG,IAAI,CAAC,mBAAmB,CACrC,cAAc,EACd,SAAS,EACT,IAAI,CAAC,aAAa,CACrB;AACD,YAAA,MAAM,SAAS,GAAW,cAAc,CAAC,OAAO,CAC5C,IAAI,MAAM,CAAC,4BAA4B,EAAE,GAAG,CAAC,EAC7C,EAAE,CACL;AAED,YAAA,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAC/B,SAAS,EACT,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,EAClB,SAAS,CACZ;YAED,MAAM,UAAU,GACZ,MAAM,CAAC,OAAO,CAAA,GAAA,4BAAsB,GAAG,cAAc,CAAC,OAAO,CAAA,GAAA,4BAAsB;YACvF,MAAM,SAAS,GAAW,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;AAC/D,YAAA,MAAM,yCAAyC,GAC3C,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc;YAE1E,IACI,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB;gBACrD,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClD,gBAAA,IAAI,CAAC,MAAM;AACX,gBAAA,UAAU,EACZ;AACE,gBAAA,iBAAiB,GAAG,iBAAiB,GAAG,CAAC;YAC7C;AAAO,iBAAA,IACH,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,iBAAiB;AACtE,gBAAA,yCAAyC,EAC3C;gBACE,cAAc,GAAG,IAAI;gBACrB,IAAI,MAAM,GAAG,CAAC;AACd,gBAAA,GAAG;oBACC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC;AAC3C,oBAAA,MAAM,EAAE;AACZ,gBAAA,CAAC,QAAQ,MAAM,GAAG,SAAS;YAC/B;iBAAO,IACH,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB;gBACxD,SAAS,KAAK,CAAC,CAAC;gBAChB,SAAS,KAAK,CAAC,CAAC;gBAChB,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,iBAAiB,EACtD;AACE,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC1C;iBAAO,IACH,CAAC,UAAU,KAAK,CAAC;AACb,gBAAA,iBAAiB,GAAG,CAAC;AACrB,gBAAA,EACI,MAAM,CAAC,OAAO,CAAA,GAAA,4BAAsB,IAAI,iBAAiB;oBACzD,iBAAiB,GAAG,CAAC,CACxB;AACL,iBAAC,EACG,MAAM,CAAC,OAAO,CAAA,GAAA,0BAAoB,IAAI,iBAAiB,IAAI,iBAAiB,GAAG,CAAC,CACnF;AACG,oBAAA,SAAS,IAAI,CAAC,CAAC,EACrB;AACE,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACnB,cAAc,GAAG,IAAI;gBACrB,KAAK,GAAG,SAAS;gBAEjB,iBAAiB,IAAI,SAAS;AAC9B,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACtC;iBAAO;AACH,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACvB;QACJ;aAAO;AACH,YAAA;;AAEI,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAW,UAAU,CAAC,CAAC,CAAE,EAC/C,CAAC,GAAG,UAAU,CAAC,MAAM,EACrB,CAAC,EAAE,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,IAAA,EAAA,oCAClC;AACE,gBAAA,IAAI,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE;oBAClC;gBACJ;AAEA,gBAAA,MAAM,mBAAmB,GAAY,GAAA,qCAA8B,IAAI,CAAC,QAAQ;gBAChF,IACI,IAAI,CAAC,gBAAgB,CACjB,WAAW,EACX,cAAc,CAAC,MAAM,CAAC,IAAA,EAAA,mCACzB;AACD,oBAAA,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA,uCAC5B;oBACE,MAAM,IAAI,WAAW;oBACrB,MAAM,IAAI,CAAC;gBACf;AAAO,qBAAA,IACH,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA;oBAC1B,KAAK;AACL,oBAAA,IAAI,CAAC,gBAAgB,CACjB,WAAW,EACX,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAA,EAAA,mCAC7B,EACH;oBACE,MAAM,IAAI,WAAW;oBACrB,MAAM,IAAI,CAAC;oBACX,KAAK,GAAG,KAAK;gBACjB;qBAAO,IACH,IAAI,CAAC,gBAAgB,CACjB,WAAW,EACX,cAAc,CAAC,MAAM,CAAC,IAAA,EAAA,mCACzB;AACD,oBAAA,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA;oBAC1B,CAAC,mBAAmB,EACtB;oBACE,MAAM,IAAI,WAAW;oBACrB,KAAK,GAAG,IAAI;gBAChB;AAAO,qBAAA,IACH,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA;AAC1B,oBAAA,IAAI,CAAC,gBAAgB,CACjB,WAAW,EACX,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAA,EAAA,mCAC7B,EACH;oBACE,MAAM,IAAI,WAAW;oBACrB,MAAM,IAAI,CAAC;gBACf;AAAO,qBAAA,IACH,IAAI,CAAC,gBAAgB,CACjB,WAAW,EACX,cAAc,CAAC,MAAM,CAAC,IAAA,EAAA,mCACzB,EACH;AACE,oBAAA,IAAI,cAAc,CAAC,MAAM,CAAC,KAAA,GAAA,6BAA2B;wBACjD,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC9D,4BAAA,iBAAiB,GAAG,CAAC,IAAI,CAAC;kCACpB,iBAAiB,GAAG;kCACpB,iBAAiB;4BACvB,MAAM,IAAI,CAAC;AACX,4BAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvB,4BAAA,CAAC,EAAE;AACH,4BAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gCACvB,MAAM,IAAI,GAAG;4BACjB;4BACA;wBACJ;oBACJ;AACA,oBAAA,IAAI,cAAc,CAAC,MAAM,CAAC,KAAA,GAAA,4BAA0B;wBAChD,IACI,IAAI,CAAC;AACD,8BAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;iCACzC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3C,iCAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;AAClD,oCAAA,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;iCACxD,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG;AAC7C,oCAAA,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;AAC7B,8BAAE,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;AAC1C,iCAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG;oCACtC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG;oCACxC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG;oCACxC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG;AACxC,oCAAA,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;AACvB,oCAAA,MAAM,GAAG,EAAE,CAAC,EACxB;AACE,4BAAA,iBAAiB,GAAG,iBAAiB,GAAG,CAAC;4BACzC,MAAM,IAAI,CAAC;AACX,4BAAA,CAAC,EAAE;4BACH;wBACJ;oBACJ;AACA,oBAAA,IACI,cAAc,CAAC,MAAM,CAAC,KAAA,GAAA;AACtB,wBAAA,cAAc,CAAC,MAAM,CAAC,KAAA,GAAA,8BACxB;AACE,wBAAA,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AACzB,4BAAA,iBAAiB,GAAG,CAAC,IAAI,CAAC;kCACpB,iBAAiB,GAAG;kCACpB,iBAAiB;4BACvB,MAAM,IAAI,CAAC;AACX,4BAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvB,4BAAA,CAAC,EAAE;AACH,4BAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gCACvB,MAAM,IAAI,GAAG;4BACjB;4BACA;wBACJ;oBACJ;oBACA,MAAM,SAAS,GAAG,EAAE;AACpB,oBAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAW;oBACzD,MAAM,uBAAuB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAW;oBACpE,MAAM,uBAAuB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAW;oBACpE,MAAM,wBAAwB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAW;oBACrE,MAAM,wBAAwB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAW;AACrE,oBAAA,MAAM,iCAAiC,GAAG,cAAc,CAAC,KAAK,CAC1D,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,CAAC,CACb;AACD,oBAAA,MAAM,8BAA8B,GAAG,cAAc,CAAC,KAAK,CACvD,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,CAAC,CACb;AACD,oBAAA,MAAM,4BAA4B,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;AAC7E,oBAAA,MAAM,6BAA6B,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC;AAC9E,oBAAA,IAAI,cAAc,CAAC,MAAM,CAAC,KAAA,GAAA,2BAAyB;wBAC/C,MAAM,kBAAkB,GACpB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAA,IAAA;wBAC9B,MAAM,mBAAmB,GACrB,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAA,IAAA;AAC1B,4BAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;wBAC7D,IACI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB;AACjD,6BAAC,CAAC,kBAAkB;AAChB,iCAAC,MAAM,CAAC,4BAA4B,CAAC,GAAG,SAAS;AAC7C,oCAAA,MAAM,CAAC,8BAA8B,CAAC,GAAG,SAAS;oCAClD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAClE,6BAAC;AACG,kCAAE,MAAM,CAAC,8BAA8B,CAAC,GAAG,SAAS;qCACjD,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,wCAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAC7D,oCAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB;AAClD,kCAAE,MAAM,CAAC,4BAA4B,CAAC,GAAG,SAAS;AAChD,qCAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;AACrD,wCAAA,CAAC,UAAU,CAAC,CAAC,EACzB;AACE,4BAAA,iBAAiB,GAAG,CAAC,IAAI,CAAC;kCACpB,iBAAiB,GAAG;kCACpB,iBAAiB;4BACvB,MAAM,IAAI,CAAC;AACX,4BAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvB,4BAAA,CAAC,EAAE;AAEH,4BAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gCACvB,MAAM,IAAI,GAAG;4BACjB;4BACA;wBACJ;oBACJ;AACA,oBAAA,IAAI,cAAc,CAAC,MAAM,CAAC,KAAA,GAAA,6BAA2B;wBACjD,MAAM,WAAW,GAAG,EAAE;;AAEtB,wBAAA,MAAM,WAAW,GACb,MAAM,KAAK,CAAC;AACZ,6BAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;AACpB,gCAAA,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW;AAClD,iCAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;oCACrD,CAAC,UAAU,CAAC,CAAC;;AAEzB,wBAAA,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AACjE,wBAAA,MAAM,cAAc,GAChB,iCAAiC,CAAC,QAAQ,CAAC,YAAY,CAAC;AACxD,4BAAA,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;6BAC5B,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;AACvD,gCAAA,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW;gCACpD,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gCAClD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;;AAE1D,wBAAA,MAAM,cAAc,GAChB,MAAM,CAAC,iCAAiC,CAAC,IAAI,SAAS;AACtD,4BAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAC5B,iCAA2C,CAC9C;AACD,4BAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;AACzD,6BAAC,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW;gCAC/C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;;AAEjE,wBAAA,MAAM,iBAAiB,GACnB,CAAC,MAAM,CAAC,4BAA4B,CAAC,GAAG,WAAW,IAAI,MAAM,KAAK,CAAC;AACnE,6BAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gCACrD,MAAM,KAAK,CAAC,CAAC;;AAErB,wBAAA,MAAM,cAAc,GAChB,MAAM,CAAC,iCAAiC,CAAC,GAAG,SAAS;AACrD,4BAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAC5B,iCAA2C,CAC9C;AACD,4BAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAC5B,6BAAuC,CAC1C;AACD,4BAAA,MAAM,CAAC,6BAA6B,CAAC,GAAG,WAAW;AACnD,4BAAA,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAEjC,wBAAA,MAAM,cAAc,GAChB,MAAM,CAAC,iCAAiC,CAAC,IAAI,SAAS;AACtD,4BAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAC5B,iCAA2C,CAC9C;AACD,4BAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;AAC1D,4BAAA,MAAM,CAAC,8BAA8B,CAAC,GAAG,WAAW;wBACxD,IACI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB;4BACjD,WAAW;4BACX,cAAc;4BACd,cAAc;4BACd,cAAc;4BACd,cAAc;6BACb,iBAAiB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC/C;AACE,4BAAA,iBAAiB,GAAG,CAAC,IAAI,CAAC;kCACpB,iBAAiB,GAAG;kCACpB,iBAAiB;4BACvB,MAAM,IAAI,CAAC;AACX,4BAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvB,4BAAA,CAAC,EAAE;AACH,4BAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gCACvB,MAAM,IAAI,GAAG;4BACjB;4BACA;wBACJ;oBACJ;oBACA,MAAM,IAAI,WAAW;AACrB,oBAAA,MAAM,EAAE;gBACZ;AAAO,qBAAA,IACH,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC5C,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,WAAW,EACxC;oBACE,MAAM,IAAI,WAAW;AACrB,oBAAA,MAAM,EAAE;gBACZ;AAAO,qBAAA,IACH,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC1B,cAAc,CAAC,MAAM,CAAC,yCACzB,KAAK,CAAC,CAAC,EACV;AACE,oBAAA,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC;AAChC,oBAAA,MAAM,EAAE;AACR,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvB,oBAAA,CAAC,EAAE;gBACP;AAAO,qBAAA,IACH,cAAc,CAAC,MAAM,CAAC,KAAA,GAAA;oBACtB,IAAI,CAAC,aAAa,EACpB;AACE,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC3B;qBAAO,IACH,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAA,EAAA,mCAAgC;AACpE,oBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAA,EAAA,mCAAgC,EAAE,QAAQ,EAChF;AACE,oBAAA,IACI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;AACpB,wBAAA,cAAc,KAAK,iBAAiB;AACpC,wBAAA,cAAc,KAAK,gBAAgB;AACnC,wBAAA,cAAc,KAAK,oBAAoB;AACvC,wBAAA,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC;wBACjC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAA,EAAA;8BAC/B,QAAQ,EAChB;AACE,wBAAA,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC;oBAChC;AACA,oBAAA,IACI,cAAc,CAAC,QAAQ,CACnB,4EACH;AACD,wBAAA,cAAc,CAAC,QAAQ,CACnB,GAAA,oCAAA,GAAA,kCACH,EACH;AACE,wBAAA,MAAM,EAAE;oBACZ;AAEA,oBAAA,MAAM,EAAE;AACR,oBAAA,CAAC,EAAE;gBACP;qBAAO,IACH,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA;AAC/B,oBAAA,IAAI,CAAC,gBAAgB,CACjB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAA,EAAA,mCAClC;AACD,oBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AACtE,oBAAA,KAAK,EACP;oBACE,MAAM,IAAI,CAAC;oBACX,MAAM,IAAI,WAAW;gBACzB;qBAAO,IACH,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAA,GAAA;AAC/B,oBAAA,IAAI,CAAC,gBAAgB,CACjB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAA,EAAA,mCAClC;AACD,oBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AACtE,oBAAA,KAAK,EACP;oBACE,MAAM,IAAI,CAAC;oBACX,MAAM,IAAI,WAAW;gBACzB;qBAAO,IACH,IAAI,CAAC,aAAa;oBAClB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;oBAC/C,WAAW,KAAK,IAAI,CAAC,oBAAoB;AACzC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EACxC;oBACE,QAAQ,GAAG,IAAI;gBACnB;YACJ;QACJ;AACA,QAAA,IACI,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC7B,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,cAAc,CAAC,MAAM;AAC3C,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC1B,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,IAAA,EAAA,mCAC5C,KAAK,CAAC,CAAC,EACV;YACE,MAAM,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD;AACA,QAAA,IAAI,WAAW,GAAW,iBAAiB,GAAG,CAAC;QAE/C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACjC,YAAA,KAAK,EAAE;AACP,YAAA,WAAW,EAAE;QACjB;QAEA,IAAI,WAAW,GACX,UAAU,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA;AACpC,cAAE;cACA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB;AACjC,kBAAE;kBACA,CAAC;QACb,IAAI,QAAQ,EAAE;AACV,YAAA,WAAW,EAAE;QACjB;AAEA,QAAA,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;AAC/B,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACvB;QACA,IAAI,WAAW,GAAG,KAAK;QACvB,IAAI,UAAU,EAAE;AACZ,YAAA,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnF;AAEA,QAAA,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,WAAW,GAAE,EAAA,qCAA+B,MAAM,CAAA,EACzE,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,MACnC,EAAE;AAEF,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA,EAAG,MAAM,EAAE,GAAG,CAAA,EAAG,MAAM,EAAE;QACtE;AAEA,QAAA,MAAM,iCAAiC,GACnC,cAAc,CAAC,MAAM,KAAK,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAW,CAAC;AAC5D,YAAA,cAAc,KAAK,cAAc,CAAC,CAAC,CAAC;QAExC,IACI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAW,CAAC;AACnE,YAAA,iCAAiC,EACnC;AACE,YAAA,OAAO,EAAE;QACb;AAEA,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAA,GAAA,4BAAsB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnF,YAAA,IAAI,UAAU,IAAI,MAAM,KAAA,GAAA,6BAA2B;AAC/C,gBAAA,OAAO,EAAE;YACb;YACA,GAAG,GAAG,GAAG,GAAA,4BAAoB,EAAG,IAAI,CAAC,MAAM,GAAG;AACzC,iBAAA,KAAK,CAAA,GAAA;AACL,iBAAA,IAAI,sCAA6B,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE;QAC1D;AACA,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,oBAAoB,CAAC,WAAmB,EAAA;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAW,KAAK,GAAG,KAAK,WAAW,CAAC;QAChF;AACA,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;IAC7C;AAEO,IAAA,gBAAgB,CAAC,WAAmB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAW,KAAK,GAAG,KAAK,WAAW,CAAC;IAC5E;IAEO,gBAAgB,CAAC,WAAmB,EAAE,UAAkB,EAAA;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;QACvE,QACI,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE,OAAO;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,YAAA,KAAK;IAEb;AAkIQ,IAAA,eAAe,CAAC,GAAW,EAAA;AAC/B,QAAA,OAAO;AACF,aAAA,KAAK,CAAA,EAAA;AACL,aAAA,MAAM,CAAC,CAAC,CAAS,EAAE,GAAW,KAAI;AAC/B,YAAA,MAAM,eAAe,GACjB,OAAO,IAAI,CAAC,aAAa,KAAK;AAC1B,kBAAE,CAAC,KAAK,IAAI,CAAC;AACb;AACE,oBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CACvB,CAA8C,CACjD;AACX,YAAA,QACI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACjB,CAAC,KAAK,IAAI,CAAC,iBAAiB;gBAC5B,eAAe;AACf,iBAAC,CAAC,KAAA,GAAA,+BAA6B,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC;AAE9E,QAAA,CAAC;AACA,aAAA,IAAI,sCAA6B;IAC1C;AAEQ,IAAA,uBAAuB,CAAC,IAAY,EAAA;;;;QAIxC,IAAI,IAAI,EAAE;YACN,MAAM,aAAa,GAAG,cAAc;AACpC,YAAA,OAAO,IAAI,KAAK,GAAG,GAAG,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,GAAG,IAAI;QACvF;AACA,QAAA,OAAO,IAAI;IACf;AAEQ,IAAA,UAAU,CAAC,MAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACrD;AAEU,IAAA,kBAAkB,CAAI,KAAQ,EAAE,aAAsB,EAAE,aAAgB,EAAA;AAC9E,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa;AAC9B,cAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK;AACjE,cAAE,KAAK,KAAK,aAAa;IACjC;AAEQ,IAAA,QAAQ,CAAC,QAAkB,EAAA;AAC/B,QAAA,OAAO,EACH,QAAQ,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,KAAa,KAAI;gBAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,GAAG,CAAC,EAAE;oBAC/B,OAAO,KAAK,6CAAoC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG;gBACvE;AACA,gBAAA,OAAO,KAAK,KAAA,EAAA,sCAAoC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;YACvF,CAAC,CAAC,CACL;IACL;AAEQ,IAAA,iBAAiB,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,KAAK,KAAA,GAAA,+BAA6B,IAAI,CAAC,oBAAoB,EAAE;AAC7D,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,MAAM,YAAY,GACd,OAAO,IAAI,CAAC,aAAa,KAAK;cACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa;AAClC,cAAE,KAAK,CAAC,OAAO,8BAAoB;AAC3C,QAAA,MAAM,YAAY,GACd,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,QAAQ,CAAA,GAAA,4BAAsB,GAAG,GAAG,GAAG,EAAE;AAChF,QAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;YACrB,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;YACrF,OAAO,KAAK,CAAC,WAAW;kBACnB,EAAA;AACD,kBAAE,CAAA,EAAG,YAAY,CAAA,EAAG,WAAW,EAAE;QACzC;aAAO;YACH,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC;YACnF,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;AACrD,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE;AAEtE,YAAA,MAAM,OAAO,GACT,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,GAAG,IAAI,CAAC,aAAa;AAE/D,YAAA,OAAO,aAAa,KAAA,EAAA;kBACf,EAAA;kBACC,CAAA,EAAG,YAAY,CAAA,EAAG,aAAa,GAAG,OAAO,CAAA,EAAG,WAAW,CAAA,CAAE;QACnE;IACJ;IAEQ,gCAAgC,CAAC,WAAmB,EAAE,aAAwB,EAAA;QAClF,IAAI,kBAAkB,GAAkB,IAAI;QAC5C,IAAI,YAAY,GAAkB,IAAI;AAEtC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;YAE3B,IAAI,IAAI,KAAK,aAAa,IAAI,kBAAkB,KAAK,IAAI,EAAE;gBACvD,kBAAkB,GAAG,CAAC;YAC1B;AAEA,YAAA,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,YAAY,KAAK,IAAI,EAAE;gBAC7D,YAAY,GAAG,CAAC;YACpB;YAEA,IAAI,kBAAkB,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;gBACtD;YACJ;QACJ;QAEA,OAAO;YACH,kBAAkB;YAClB,YAAY;SACf;IACL;8GA5lCS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACKK,MAAO,iBAAkB,SAAQ,wBAAwB,CAAA;AAD/D,IAAA,WAAA,GAAA;;QAEW,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,WAAW,GAAG,EAAE;QAChB,IAAA,CAAA,QAAQ,GAAkB,IAAI;QAC9B,IAAA,CAAA,MAAM,GAAkB,IAAI;QAC5B,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,mBAAmB,GAAa,EAAE;QAClC,IAAA,CAAA,aAAa,GAAG,EAAE;QAClB,IAAA,CAAA,YAAY,GAAG,EAAE;AACxB;;;AAGG;QACI,IAAA,CAAA,YAAY,GAAG,KAAK;QAEnB,IAAA,CAAA,UAAU,GAAG,KAAK;;AAKnB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,EAAE,CAAC;QAEhB,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEnD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEzB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAmB,kBAAkB,CAAC;QAExD,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AA60BrE,IAAA;AA30BG;;;;;;;;;AASG;AACa,IAAA,SAAS,CACrB,UAAwD,EACxD,cAAsB,EACtB,QAAQ,GAAG,CAAC,EACZ,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK;;IAElB,EAAA,GAA8B,MAAK,EAAE,CAAC,EAAA;;;AAItC,QAAA,IAAI,mBAA2B;QAC/B,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE;YACjD,mBAAmB,GAAG,EAAE;QAC5B;AAAO,aAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACvC,YAAA,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5C;AAAO,aAAA,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE;YACxC,mBAAmB,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO;QACvD;AAAO,aAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;;AAEvC,YAAA,IAAI;AACA,gBAAA,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACpD;AAAE,YAAA,MAAM;AACJ,gBAAA,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC;YAC5C;QACJ;aAAO;AACH,YAAA,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5C;;QAGA,IAAI,CAAC,cAAc,EAAE;AACjB,YAAA,OAAO,mBAAmB,KAAK,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,mBAAmB;QAC5F;;AAGA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpB,cAAE,IAAI,CAAC,eAAe;AACtB;;QAGJ,IAAI,IAAI,CAAC,cAAc,KAAA,IAAA,4BAA0B,IAAI,CAAC,aAAa,EAAE;YACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,IAAA,GAAA,2BAAwB;QACvF;QACA,IAAI,IAAI,CAAC,cAAc,KAAA,UAAA,kCAAgC,IAAI,CAAC,aAAa,EAAE;YACvE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,IAAA,GAAA,2BAAwB;QACvF;;AAGA,QAAA,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5C,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE;QAC5D;QAEA,MAAM,SAAS,GACX,CAAC,CAAC,mBAAmB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK;eAC3C,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAA,EAAA;AACrC;QACR,IAAI,aAAa,GAAG,EAAE;QACtB,IAAI,WAAW,GAAG,QAAQ;;QAG1B,IACI,CAAC,IAAI,CAAC,WAAW;aACZ,mBAAmB,IAAI,mBAAmB,CAAC,OAAO,CAAA,GAAA,kCAA4B,IAAI,CAAC,CAAC;AACzF,YAAA,CAAC,IAAI,CAAC,YAAY,EACpB;YACE,IAAI,YAAY,GACZ,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK;AAClD,kBAAE,mBAAmB,CAAC,KAAK,CAAA,EAAA;AAC3B,kBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,sCAA6B;;YAG7D,IAAI,UAAU,EAAE;AACZ,gBAAA,YAAY,GAAG;AACV,qBAAA,KAAK,CAAC,CAAC,EAAE,QAAQ;qBACjB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACjD;;AAGA,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;;AAEpB,gBAAA,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;AAC1D,gBAAA,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,sCAE1D;YACL;;AAGA,YAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;gBACtE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACrC;iBAAO;AACH,gBAAA,IAAI,mBAAmB,KAAA,EAAA,sCAAoC,YAAY,CAAC,MAAM,EAAE;AAC5E,oBAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;wBACtE,IAAI,mBAAmB,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE;4BAClD,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC;wBACpD;6BAAO,IAAI,mBAAmB,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE;4BACzD,IAAI,YAAY,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;gCACxD,IAAI,UAAU,EAAE;oCACZ,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;gCAC7C;qCAAO;oCACH,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;gCAC1D;4BACJ;iCAAO;AACH,gCAAA,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;4BACnE;wBACJ;oBACJ;gBACJ;qBAAO;oBACH,YAAY,GAAG,EAAE;gBACrB;YACJ;;YAGA,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzC,gBAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;YACxD;;AAGA,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBACzB,IAAI,YAAY,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE;oBAClD,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAClC,YAAY,CAAC,IAAI,CAAA,EAAA,mCAA6B,CACjD;gBACL;qBAAO,IAAI,YAAY,CAAC,MAAM,KAAK,mBAAmB,CAAC,MAAM,EAAE;AAC3D,oBAAA,aAAa,GAAG,YAAY,CAAC,IAAI,sCAA6B;gBAClE;qBAAO;oBACH,aAAa,GAAG,mBAAmB;gBACvC;YACJ;iBAAO;gBACH,aAAa,GAAG,mBAAmB;YACvC;QACJ;;AAGA,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACvD,aAAa,GAAG,mBAAmB;QACvC;;AAGA,QAAA,IACI,UAAU;AACV,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC1B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAA,EAAA,mCACnC,KAAK,CAAC,CAAC;AACR,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,CAAC,IAAI,CAAC,MAAM,EACd;AACE,YAAA,aAAa,GAAG,IAAI,CAAC,YAAY;QACrC;;AAGA,QAAA,IAAI,IAAI,CAAC,uBAAuB,IAAI,WAAW,EAAE;YAC7C,IACI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CACvD,EACH;AACE,gBAAA,WAAW,GAAG,WAAW,GAAG,CAAC;YACjC;AAAO,iBAAA,IACH,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,KAAA,IAAA,8BACxD;AACE,gBAAA,WAAW,GAAG,WAAW,GAAG,CAAC;YACjC;AAEA,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;QACxC;;QAGA,IACI,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC;AACtC,YAAA,CAAC,IAAI,CAAC,gBAAgB,EACxB;AACE,YAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAClD;;AAGA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,aAAa,GAAG,mBAAmB;QACvC;aAAO;YACH,aAAa;AACT,gBAAA,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,aAAa,GAAG,mBAAmB;QAC5F;;QAGA,IACI,IAAI,CAAC,aAAa;AAClB,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,CAAC,UAAU;AACX,YAAA,CAAC,IAAI,CAAC,YAAY,EACpB;AACE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC;kBACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW;AAClC,kBAAE,IAAI,CAAC,WAAW;AACtB,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC7B,OAAO,IAAI,CAAC;kBACN,IAAI,CAAC;AACP,kBAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE;QAC3D;;AAGA,QAAA,MAAM,MAAM,GAAW,KAAK,CAAC,SAAS,CAClC,aAAa,EACb,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,EAAE,CACL;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;;;QAI9C,IACI,IAAI,CAAC,iBAAiB,KAAA,GAAA;AACtB,YAAA,IAAI,CAAC,aAAa,KAAA,GAAA,2BACpB;YACE,IAAI,CAAC,aAAa,GAAA,GAAA;QACtB;;;AAGA,QAAA,IACI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B;AACxD,YAAA,IAAI,CAAC,qBAAqB,KAAK,IAAI,EACrC;AACE,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAClD,CAAC,IAAY,KACT,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;aAC/D;QACL;;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B,EAAE;AAC1D,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC7B;;AAGA,QAAA,IAAI,MAAM,IAAI,MAAM,KAAK,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY;AACtC,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM;AAE1B,YAAA,IAAI,CAAC,UAAU;AACX,gBAAA,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY;qBACvC,aAAa,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;qBACzD,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC;QAChE;;AAGA,QAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;AACtC,QAAA,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC;;;AAI/C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE;;AAGrD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;AACjE,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,OAAO,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA,CAAE;YACnG;AACA,YAAA,OAAO,MAAM;QACjB;AAEA,QAAA,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM;AACpC,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE;;AAGnE,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAA,GAAA,4BAAsB,EAAE;YACpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC3D,YAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAA,CAAE;QACpE;aAAO,IACH,IAAI,CAAC,cAAc,KAAA,IAAA;AACnB,YAAA,IAAI,CAAC,cAAc,KAAA,UAAA,gCACrB;AACE,YAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,SAAS,EAAE;QAClC;QAEA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAE;IAChD;;AAGQ,IAAA,oBAAoB,CAAC,KAAa,EAAA;QACtC,MAAM,KAAK,GAAG,eAAe;QAC7B,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,iBAAiB,GAAG,CAAC;AACzB,QAAA,OAAO,KAAK,IAAI,IAAI,EAAE;YAClB,iBAAiB,IAAI,CAAC;AACtB,YAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;AACA,QAAA,OAAO,iBAAiB;IAC5B;AAEO,IAAA,iBAAiB,CACpB,QAAgB,EAChB,UAAmB,EACnB,UAAmB;;IAEnB,EAAA,GAA8B,MAAK,EAAE,CAAC,EAAA;AAEtC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa;QACnD,IAAI,CAAC,WAAW,EAAE;YACd;QACJ;QAEA,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAC9B,WAAW,CAAC,KAAK,EACjB,IAAI,CAAC,cAAc,EACnB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,EAAE,CACL;AACD,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC1C;QACJ;QACA,IAAI,CAAC,iBAAiB,EAAE;IAC5B;IAEO,SAAS,CAAC,UAAkB,EAAE,cAAsB,EAAA;AACvD,QAAA,OAAO;AACF,aAAA,KAAK,CAAA,EAAA;AACL,aAAA,GAAG,CAAC,CAAC,IAAY,EAAE,KAAa,KAAI;YACjC,IACI,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,yCAAgC;AACnE,gBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,IAAA,EAAA,mCAAgC,EAAE,MAAM,EAC7E;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,IAAA,EAAA;AACtC,sBAAE,MAAM;YAChB;AACA,YAAA,OAAO,IAAI;AACf,QAAA,CAAC;AACA,aAAA,IAAI,sCAA6B;IAC1C;;AAGO,IAAA,cAAc,CAAC,GAAW,EAAA;QAC7B,MAAM,OAAO,GAAa;AACrB,aAAA,KAAK,CAAA,EAAA;AACL,aAAA,MAAM,CAAC,CAAC,MAAc,EAAE,CAAS,KAAI;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAA,EAAA;YACvC,QACI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC;AACvC,iBAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,KAAK,QAAQ,CAAC;AAE1E,QAAA,CAAC,CAAC;AACN,QAAA,IAAI,OAAO,CAAC,IAAI,sCAA6B,KAAK,GAAG,EAAE;AACnD,YAAA,OAAO,OAAO,CAAC,IAAI,CAAA,EAAA,mCAA6B;QACpD;AACA,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,iBAAiB,CAAC,UAAkB,EAAA;QACvC,IAAI,eAAe,GAAG,EAAE;QACxB,MAAM,aAAa,GACf,CAAC,UAAU;YACP;AACK,iBAAA,KAAK,CAAA,EAAA;AACL,iBAAA,GAAG,CAAC,CAAC,UAAkB,EAAE,KAAa,KAAI;AACvC,gBAAA,IACI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAC3B,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,yCACxB;AACD,oBAAA,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,EAC1D;oBACE,eAAe,GAAG,UAAU;AAC5B,oBAAA,OAAO,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChC;AACA,gBAAA,IAAI,eAAe,CAAC,MAAM,EAAE;oBACxB,MAAM,aAAa,GAAW,eAAe;AAC7C,oBAAA,eAAe;AACf,oBAAA,OAAO,aAAa;gBACxB;AACA,gBAAA,OAAO,UAAU;AACrB,YAAA,CAAC,CAAC;AACV,YAAA,EAAE;AACN,QAAA,OAAO,aAAa,CAAC,IAAI,CAAA,EAAA,mCAA6B;IAC1D;AAEA;;;;AAIG;AACI,IAAA,cAAc,CAAC,KAAsB,EAAA;AACxC,QAAA,IACI,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC;AACtB,aAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B;iBACpD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACnD,aAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B;AACrD,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE;gBAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,EAChC;AACE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;QACxB;QACA,OAAO,MAAM,CAAC,KAAK;aACd,cAAc,CAAC,UAAU,EAAE;AACxB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,qBAAqB,EAAE,EAAE;SAC5B;AACA,aAAA,OAAO,CAAC,CAAA,CAAA,EAAI,GAAA,4BAAoB,CAAA,CAAG,iCAAuB;IACnE;AAEO,IAAA,eAAe,CAAC,QAAiB,EAAA;QACpC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAClD,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE;AAChE,gBAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;YACzE;iBAAO;gBACH,OAAO,IAAI,CAAC,mBAAmB;YACnC;QACJ;AAAO,aAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YAC3B,IAAI,QAAQ,EAAE;AACV,gBAAA,IAAI,IAAI,CAAC,cAAc,KAAA,IAAA,0BAAwB;AAC3C,oBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACrC;AACA,gBAAA,IAAI,IAAI,CAAC,cAAc,KAAA,UAAA,gCAA8B;AACjD,oBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;gBAC1C;YACJ;AACA,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBACjE,OAAO,IAAI,CAAC,oBAAoB;YACpC;AACA,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC;QACxE;AACA,QAAA,OAAO,EAAE;IACb;IAEO,iBAAiB,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa;QACnD,IAAI,CAAC,WAAW,EAAE;YACd;QACJ;QACA,IACI,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;gBAChE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAA,EAAA;AAC9C,qBAAA,MAAM,EACjB;AACE,YAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,OAAO,uCAA8B;YACjE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC;QAC3C;IACJ;AAEA,IAAA,IAAW,mBAAmB,CAAC,CAAC,IAAI,EAAE,KAAK,CAA6B,EAAA;QACpE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtC;QACJ;;QAEA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MACnB,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAC5E;IACL;AAEO,IAAA,0BAA0B,CAAC,IAAY,EAAA;QAC1C,MAAM,KAAK,GAAa;AACnB,aAAA,KAAK,CAAA,EAAA;AACL,aAAA,MAAM,CAAC,CAAC,IAAY,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC,MAAM;IACvB;AAEO,IAAA,UAAU,CAAC,UAAkB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,WAAW,CACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,EAClD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACvE;IACL;AAEQ,IAAA,WAAW,CAAC,QAAgB,EAAA;QAChC,IAAI,QAAQ,KAAA,GAAA,4BAA0B;AAClC,YAAA,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,EAAE;QAChI;QACA,MAAM,GAAG,GAAa,EAAE;;AAExB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,EAAE;gBACR;YACJ;AACA,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACpB,gBAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YACnB;QACJ;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;AACjB,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,EAAE;QACnG;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;YACnC,OAAO,CAAA,EAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAA,CAAE;QACtE;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC,oBAAoB;QACpC;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE;AACpC,YAAA,OAAO,EAAE;QACb;AACA,QAAA,OAAO,EAAE;IACb;AAEQ,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AACrC,QAAA,MAAM,GAAG,GACL,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAE;YACtF,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAE;YACvF,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAE;YACvF,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,EAAE;QAC/D,MAAM,IAAI,GACN,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAE;YAC1D,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAE;YACvF,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAE;AACvF,YAAA,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAA,CAAE;YACnH,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAA,EAAG,IAAI,CAAC,oBAAoB,EAAE;QAE/D,IAAI,QAAQ,KAAA,GAAA,4BAA0B;AAClC,YAAA,OAAO,GAAG;QACd;QACA,MAAM,GAAG,GAAa,EAAE;;AAExB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,EAAE;gBACR;YACJ;AACA,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACpB,gBAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YACnB;QACJ;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;AACjB,YAAA,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;QAC5C;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;AACnC,YAAA,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;QAChD;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;AACnC,YAAA,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;QAChD;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE;AACnC,YAAA,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;QAChD;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;AACnB,YAAA,OAAO,EAAE;QACb;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;AACnB,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACtC;YACA,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;QACtC;AACA,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;QAClD;AACA,QAAA,OAAO,EAAE;IACb;AAEA;;AAEG;AACK,IAAA,iBAAiB,CAAC,QAAA,GAAiC,IAAI,CAAC,QAAQ,EAAA;AACpE,QAAA,MAAM,YAAY,GAAG,QAAQ,EAAE,aAAa,EAAE,UAAU;AACxD,QAAA,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE;YAC9B,OAAO,QAAQ,CAAC,aAAa;QACjC;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;QAC/C;IACJ;AAEA;;;;;;AAMG;AACK,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AACxC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC;cACzB,IAAI,CAAC;AACP,cAAE,CAAC,CAAU,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;;AAIxB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B,EAAE;AAC1D,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC7B;AAEA,QAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;AAC9C,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,qBAAqB,CAAC;QAEjE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AACnD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAChD,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC;AACjD,YAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,UAAU,CAAC;AACnN,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7B;aAAO,IACH,IAAI,CAAC,qBAAqB;AAC1B,aAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,EAC7D;YACE,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAChD,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC;AACjD,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,UAAU,CAAC;AAC5L,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7B;aAAO;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC9C,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;AACpE,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7B;IACJ;AAEQ,IAAA,SAAS,CAAC,KAAyC,EAAA;QACvD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,KAAA,EAAA,oCAAkC;AAC9D,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,IACI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B;aACvD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAChD;AACE,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B,EAAE;AACvF,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;QACxB;AAEA,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC/E,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3C,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC;QACtB;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG;IAC1C;IAEQ,WAAW,CAAC,KAAa,EAAE,0BAAoC,EAAA;AACnE,QAAA,IACI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,SAAA,8BAAwB;AACtD,YAAA,KAAK,CAAC,QAAQ,CAAA,GAAA,0BAAoB,EACpC;AACE,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,OAAO;cACD,KAAK,CAAC,OAAO,CACT,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAA,EAAA;cAGrD,KAAK;IACf;AAEQ,IAAA,aAAa,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAA,EAAA,mCAA8B,GAAG,KAAK;IAClF;AAEQ,IAAA,aAAa,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAA,EAAA,mCAA8B,GAAG,KAAK;IAClF;AAEQ,IAAA,uBAAuB,CAAC,MAAc,EAAA;QAC1C,IAAI,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB;cAC1D,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;gBAChC,OAAQ,IAAI,CAAC,qBAAkC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/D,YAAA,CAAC;cACD,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAElC,IACI,CAAC,IAAI,CAAC,uBAAuB;YAC7B,IAAI,CAAC,qBAAqB,EAAE;YAC5B,MAAM,CAAC,QAAQ,CAAA,GAAA,kCAA4B;AAC3C,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAA,GAAA,kCAA4B,EAC1D;AACE,YAAA,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CACxC,CAAC,IAAI,KAAK,IAAI,KAAA,GAAA,kCACjB;QACL;;AAGA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,WAAA,gCAA0B,EAAE;YAC1D,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CACxC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CACrE;QACL;QAEA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,iBAA6B,CAAC;IAClE;AAEQ,IAAA,gBAAgB,CAAC,0BAAoC,EAAA;QACzD,OAAO,IAAI,MAAM,CACb,0BAA0B,CAAC,GAAG,CAAC,CAAC,IAAY,KAAK,KAAK,IAAI,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EACvE,IAAI,CACP;IACL;AAEQ,IAAA,0BAA0B,CAAC,KAAa,EAAA;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa;cAC1C,IAAI,CAAC;AACP,cAAE,CAAC,IAAI,CAAC,aAAa,CAAC;QAE1B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAA,GAAA,0BAAqB;IAC5E;AAEO,IAAA,aAAa,CAAC,MAAc,EAAA;QAC/B,IAAI,eAAe,GAAG,MAAM;QAE5B,IAAI,eAAe,KAAA,EAAA,oCAAkC;AACjD,YAAA,OAAO,eAAe;QAC1B;AAEA,QAAA,IACI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA,SAAA,8BAAwB;AACtD,YAAA,IAAI,CAAC,aAAa,KAAA,GAAA,6BACpB;AACE,YAAA,eAAe,GAAG,eAAe,CAAC,OAAO,8DAA0C;QACvF;QACA,MAAM,kBAAkB,GAAkB,IAAI,CAAC,2BAA2B,CACtE,IAAI,CAAC,cAAc,CACtB;QAED,MAAM,cAAc,GAChB,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK;AAC9B,cAAE,IAAI,CAAC,uBAAuB,CAAC,eAAe;AAC9C,cAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAExF,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,OAAO,cAAc;QACzB;QACA,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAI,eAAe,KAAK,IAAI,CAAC,aAAa,EAAE;AACxC,gBAAA,OAAO,IAAI;YACf;AACA,YAAA,IAAI,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE;AAC5B,gBAAA,OAAO,MAAM,CAAC,cAAc,CAAC;YACjC;YACA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC;QACpE;aAAO;AACH,YAAA,OAAO,cAAc;QACzB;IACJ;IAEQ,qBAAqB,GAAA;AACzB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAE7B,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE;AACrE,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE;gBAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO;gBAC3C,IACK,aAAa,EAAE,QAAQ,CAAA,GAAA,kCAAwC;oBAChE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EACpC;AACE,oBAAA,OAAO,IAAI;gBACf;YACJ;QACJ;AACA,QAAA,OAAO,KAAK;IAChB;;AAEQ,IAAA,2BAA2B,CAAC,aAAqB,EAAA;AACrD,QAAA,MAAM,OAAO,GAA4B,aAAa,CAAC,KAAK,CACxD,IAAI,MAAM,CAAC,CAAA,oBAAA,CAAsB,CAAC,CACrC;AACD,QAAA,OAAO,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAC9C;IAEO,eAAe,CAAC,mBAA2B,EAAE,cAAsB,EAAA;QACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC;QACjE,IAAI,KAAK,GAAG,cAAc;AAE1B,QAAA,IACI,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,aAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EACnD;YACE,IAAI,IAAI,CAAC,aAAa,KAAA,GAAA,+BAA6B,IAAI,CAAC,QAAQ,EAAE;gBAC9D,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;YACnC;YACA,OAAO,IAAI,CAAC;AACR,kBAAE,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;kBAChD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAClC;AACA,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IACrC;AAEO,IAAA,qBAAqB,CAAC,OAAe,EAAA;AACxC,QAAA,QACI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YACtB;AACK,iBAAA,KAAK,CAAA,EAAA;iBACL,MAAM,CAAC,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa,KAAY;AAC9D,gBAAA,IAAI,CAAC,MAAM;oBACP,OAAO,KAAA,GAAA,4CAA0C,KAAK,GAAG,IAAI,CAAC,MAAM;gBACxE,IAAI,OAAO,KAAA,GAAA,4CAA0C;AACjD,oBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK;gBACnE;AACA,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,gBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtE,MAAM,WAAW,GAAW,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CACxD,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAC3B;AACD,gBAAA,IACI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;AACxC,oBAAA,OAAO,CAAC,QAAQ,CAAA,GAAA,+BAAyB,EAC3C;AACE,oBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBACjD,OAAO,OAAO,CAAC,QAAQ,CAAA,GAAA;0BACjB,KAAK,GAAG;AACV,0BAAE,OAAO,GAAG,KAAK,GAAG,WAAW;gBACvC;qBAAO;oBACH,OAAO,KAAK,GAAG,WAAW;gBAC9B;YACJ,CAAC,EAAE,EAAE,CAAC;AACd,YAAA,OAAO;IAEf;IAEO,0BAA0B,GAAA;AAC7B,QAAA,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD;8GAx2BS,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCyBY,6BAA6B,CAAA;AAlB1C,IAAA,WAAA,GAAA;QAmBY,IAAA,CAAA,KAAK,GAA8B,EAAE;QAUpC,IAAA,CAAA,iBAAiB,GAA0C,EAAE;QAC7D,IAAA,CAAA,QAAQ,GAAiC,EAAE;QAE5C,IAAA,CAAA,OAAO,GAA+B,EAAE;QAUxC,IAAA,CAAA,OAAO,GAA+B,EAAE;QAUvC,IAAA,CAAA,iBAAiB,GAA0C,GAAG;QAC9D,IAAA,CAAA,aAAa,GAAsC,GAAG;QAEvD,IAAA,CAAA,sBAAsB,GAAqD,IAAI;QAgC/E,IAAA,CAAA,YAAY,GAAmB,IAAI;QASnC,IAAA,CAAA,cAAc,GAAmB,IAAI;QASpC,IAAA,CAAA,oBAAoB,GAAoD,IAAI;QAC5E,IAAA,CAAA,mBAAmB,GAAmD,IAAI;QAE3E,IAAA,CAAA,gBAAgB,GAAmB,IAAI;QASvC,IAAA,CAAA,WAAW,GAAmB,IAAI;QAQjC,IAAA,CAAA,cAAc,GAA8C,EAAE;QAE/D,IAAA,CAAA,qBAAqB,GAAmB,IAAI;QAS5C,IAAA,CAAA,iBAAiB,GAAmB,IAAI;QASxC,IAAA,CAAA,SAAS,GAAmB,IAAI;QAShC,IAAA,CAAA,oBAAoB,GAAmB,IAAI;QAS3C,IAAA,CAAA,IAAI,GAAmB,IAAI;QAS1B,IAAA,CAAA,gBAAgB,GAAgD,IAAI;QACpE,IAAA,CAAA,iBAAiB,GAAiD,IAAI;QAEvE,IAAA,CAAA,uBAAuB,GAAmB,IAAI;QAS9C,IAAA,CAAA,cAAc,GAAmB,IAAI;QASrC,IAAA,CAAA,aAAa,GAAmB,IAAI;AASlC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;QAEvC,IAAA,CAAA,UAAU,GAAG,EAAE;QACf,IAAA,CAAA,WAAW,GAAG,EAAE;QAChB,IAAA,CAAA,SAAS,GAAkB,IAAI;QAC/B,IAAA,CAAA,KAAK,GAAG,EAAE;QACV,IAAA,CAAA,oBAAoB,GAAa,EAAE;QACnC,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,UAAU,GAAG,KAAK;;QAElB,IAAA,CAAA,YAAY,GAAG,KAAK;QAErB,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE9C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAElC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAmB,kBAAkB,CAAC;;AAGzD,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAM,KAAI,EAAE,CAAC;;AAGzB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAK,EAAE,CAAC;AA8U5B,IAAA;IA1hBG,IACI,IAAI,KAAgC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,CAA4B,EAAA,EAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAEzD,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI;IAC7B;IAMA,IACI,MAAM,KAAiC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,CAA6B,EAAA,EAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAE9D,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI;IAC/B;IAGA,IACI,MAAM,KAAiC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,CAA6B,EAAA,EAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAE9D,IAAA,IACI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI;IAC/B;IAMA,IACI,qBAAqB,CAAC,KAAgE,EAAA;;QAEtF,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AACpC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;QACtC;aAAO,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,EAAE;AAC7C,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;QACvC;aAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE;AAC/C,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;QACvC;aAAO;;AAEH,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;QACvC;IACJ;AACA,IAAA,IAAI,qBAAqB,GAAA;QACrB,OAAO,IAAI,CAAC,sBAAsB;IACtC;;AAEQ,IAAA,gBAAgB,CAAC,KAA0C,EAAA;QAC/D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACvC,YAAA,OAAO,IAAI;QACf;AACA,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC5B,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM;QACzC;AACA,QAAA,OAAO,KAAK;IAChB;IAGA,IACI,WAAW,CAAC,KAA8B,EAAA;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACpD;AACA,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;IAC5B;IAGA,IACI,aAAa,CAAC,KAA8B,EAAA;QAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACtD;AACA,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B;IAMA,IACI,eAAe,CAAC,KAA8B,EAAA;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACxD;AACA,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;IAChC;IAGA,IACI,UAAU,CAAC,KAA8B,EAAA;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACnD;AACA,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;IAC3B;IAIA,IACI,oBAAoB,CAAC,KAA8B,EAAA;QACnD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC7D;AACA,IAAA,IAAI,oBAAoB,GAAA;QACpB,OAAO,IAAI,CAAC,qBAAqB;IACrC;IAGA,IACI,gBAAgB,CAAC,KAA8B,EAAA;QAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACzD;AACA,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB;IACjC;IAGA,IACI,QAAQ,CAAC,KAA8B,EAAA;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACjD;AACA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAGA,IACI,mBAAmB,CAAC,KAA8B,EAAA;QAClD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC5D;AACA,IAAA,IAAI,mBAAmB,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB;IACpC;IAGA,IACI,GAAG,CAAC,KAA8B,EAAA;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC5C;AACA,IAAA,IAAI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,IAAI;IACpB;IAMA,IACI,sBAAsB,CAAC,KAA8B,EAAA;QACrD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC/D;AACA,IAAA,IAAI,sBAAsB,GAAA;QACtB,OAAO,IAAI,CAAC,uBAAuB;IACvC;IAGA,IACI,aAAa,CAAC,KAA8B,EAAA;QAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACtD;AACA,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B;IAGA,IACI,YAAY,CAAC,KAA8B,EAAA;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACrD;AACA,IAAA,IAAI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa;IAC7B;AA0BO,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,MAAM,EACF,IAAI,EACJ,iBAAiB,EACjB,QAAQ,EACR,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,QAAQ,EACR,mBAAmB,EACnB,GAAG,EACH,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,YAAY,GACf,GAAG,OAAO;QAEX,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD;QAEA,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,IAAI,EAAE;QAC9E;QAEA,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC,YAAY,IAAI,EAAE;QAC5D;QAEA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;QACjD;QAEA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;QACjD;QAEA,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,IAAI,GAAG;QAC/E;QAEA,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,aAAa,CAAC,YAAY,IAAI,GAAG;QACvE;QAEA,IAAI,qBAAqB,EAAE;;AAEvB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB;AACxC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,GAAG,KAAK;YACnD;QACJ;QAEA,IAAI,WAAW,EAAE;;AAEb,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AAC9B,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,KAAK;YACzC;QACJ;QAEA,IAAI,aAAa,EAAE;;AAEf,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa;AAChC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,KAAK;YAC3C;QACJ;QAEA,IAAI,oBAAoB,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,YAAY;QAC9E;QAEA,IAAI,mBAAmB,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,YAAY;QAC5E;QAEA,IAAI,eAAe,EAAE;;AAEjB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe;AAClC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,KAAK;YAC7C;QACJ;QAEA,IAAI,UAAU,EAAE;;AAEZ,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU;AAC7B,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,KAAK;YACxC;QACJ;QAEA,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,cAAc,CAAC,YAAY,IAAI,EAAE;QACxE;QAEA,IAAI,oBAAoB,EAAE;;AAEtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB;AACvC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,GAAG,KAAK;YAClD;QACJ;QAEA,IAAI,gBAAgB,EAAE;;AAElB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB;AACnC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,KAAK;YAC9C;QACJ;QAEA,IAAI,QAAQ,EAAE;;AAEV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ;AAC3B,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,KAAK;YACtC;QACJ;QAEA,IAAI,mBAAmB,EAAE;;AAErB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB;AACtC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,GAAG,KAAK;YACjD;QACJ;QAEA,IAAI,GAAG,EAAE;;AAEL,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG;AACtB,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,KAAK;YACjC;QACJ;QAEA,IAAI,gBAAgB,EAAE;YAClB,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,YAAY;QACtE;QAEA,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,YAAY;QACxE;QAEA,IAAI,sBAAsB,EAAE;;AAExB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB;AACzC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,GAAG,KAAK;YACpD;QACJ;QAEA,IAAI,aAAa,EAAE;;AAEf,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa;AAChC,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,KAAK;YAC3C;QACJ;QAEA,IAAI,YAAY,EAAE;;AAEd,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY;AAC/B,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK;YAC1C;QACJ;IACJ;IAGO,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IAC3B;AAGO,IAAA,OAAO,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;IAE1B;AAGO,IAAA,aAAa,CAAC,KAAsB,EAAA;;AAEvC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;YAChC;QACJ;;;AAIA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B;QACJ;;AAGA,QAAA,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;;;;AAK9B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3C;IACJ;AAGO,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB;QACJ;AACA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;;AAG1B,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACxC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;AAClE,YAAA,IAAI,WAAW,KAAK,KAAK,EAAE;AACvB,gBAAA,MAAM,CAAC,KAAK,GAAG,WAAW;YAC9B;;;QAGJ;aAAO;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrC;IACJ;AAGO,IAAA,kBAAkB,CAAC,KAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC5B;AAGO,IAAA,gBAAgB,CAAC,KAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;IACrC;AAGO,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACvB,IAAI,CAAC,OAAO,EAAE;IAClB;AAGO,IAAA,OAAO,CAAC,KAAiB,EAAA;;IAEhC;AAGO,IAAA,SAAS,CAAC,KAAoB,EAAA;;IAErC;AAEO,IAAA,UAAU,CAAC,KAAyC,EAAA;;AAEvD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;YAChC;QACJ;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI;;;AAIrC,QAAA,IAAI,UAAkB;QACtB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;YACvC,UAAU,GAAG,EAAE;QACnB;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,YAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE;QACjC;aAAO;AACH,YAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B;;;QAIA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;AAEtF,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa;YACrD,IAAI,aAAa,KAAK,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBACxF,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;YAC7C;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;;;;AAK7B,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;;QAEvD;;AAGA,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK;IAC1C;AAEO,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,EAAE;IACnC;AAEO,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;IACrB;AAEO,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;IAE3C;AAEO,IAAA,QAAQ,CAAC,OAAoB,EAAA;;AAEhC,QAAA,OAAO,IAAI;IACf;8GA3hBS,6BAA6B,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,GAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,4BAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAf3B;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;YACD,iBAAiB;AACpB,SAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGQ,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAlBzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC5D,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC5D,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;wBACD,iBAAiB;AACpB,qBAAA;AACD,oBAAA,QAAQ,EAAE,YAAY;AACzB,iBAAA;8BAIO,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,YAAY;gBAKf,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,uBAAuB;gBAK3B,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAIG,MAAM,EAAA,CAAA;sBADT;gBAKG,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAO3B,MAAM,EAAA,CAAA;sBADT;gBAKG,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB;gBAKtB,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAIG,qBAAqB,EAAA,CAAA;sBADxB;gBAiCG,WAAW,EAAA,CAAA;sBADd;gBAUG,aAAa,EAAA,CAAA;sBADhB;gBAQQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAIG,eAAe,EAAA,CAAA;sBADlB;gBAUG,UAAU,EAAA,CAAA;sBADb;gBAOQ,cAAc,EAAA,CAAA;sBAAtB;gBAIG,oBAAoB,EAAA,CAAA;sBADvB;gBAUG,gBAAgB,EAAA,CAAA;sBADnB;gBAUG,QAAQ,EAAA,CAAA;sBADX;gBAUG,mBAAmB,EAAA,CAAA;sBADtB;gBAUG,GAAG,EAAA,CAAA;sBADN;gBAQQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAIG,sBAAsB,EAAA,CAAA;sBADzB;gBAUG,aAAa,EAAA,CAAA;sBADhB;gBAUG,YAAY,EAAA,CAAA;sBADf;gBAQS,UAAU,EAAA,CAAA;sBAAnB;gBAmNM,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAM1B,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAO1B,aAAa,EAAA,CAAA;sBADnB,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;gBA0BlC,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAsB1B,kBAAkB,EAAA,CAAA;sBADxB,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;gBAMrC,gBAAgB,EAAA,CAAA;sBADtB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBASnC,MAAM,EAAA,CAAA;sBADZ,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAOzB,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAM1B,SAAS,EAAA,CAAA;sBADf,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AC7fvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;MAsBU,yBAAyB,CAAA;IAepC,WAAA,CAAoB,QAAmB,EAAU,GAAsB,EAAA;QAAnD,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAAqB,IAAA,CAAA,GAAG,GAAH,GAAG;QAZ7B,IAAA,CAAA,YAAY,GAAW,cAAc;AAElD,QAAA,IAAA,CAAA,QAAQ,GAAyB,IAAI,YAAY,EAAU;QAE9D,IAAA,CAAA,QAAQ,GAAW,EAAE;QACrB,IAAA,CAAA,UAAU,GAAW,IAAI;QACzB,IAAA,CAAA,YAAY,GAAU,cAAc,EAAE;QACtC,IAAA,CAAA,MAAM,GAAY,KAAK;QAEvB,IAAA,CAAA,eAAe,GAAW,EAAE;QAC3B,IAAA,CAAA,aAAa,GAAwB,IAAI;QAC1C,IAAA,CAAA,aAAa,GAAY,KAAK;IAGrC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACpF,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;YAErD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY;AAC1C,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvC;YACF;AACA,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC1B;IACF;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAE5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAE1B,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC;YACzC;QACF;QAGA,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAC/C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ;AAEtD,QAAA,IAAI,gBAAgB,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AAEhD,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAEtG,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;QAEtE;aAAO;AAEL,YAAA,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC;QACrD;IACF;IAEQ,uBAAuB,CAAC,IAAY,EAAE,KAAa,EAAA;QAEzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;QAEjF,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AACrE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;IAC9H;AAEQ,IAAA,4BAA4B,CAAC,gBAAwB,EAAA;QAE3D,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;AAGjE,QAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAEhC,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClH;aAAO;AAEL,YAAA,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,eAAe,CAAC;QACvE;IACF;AAEQ,IAAA,kBAAkB,CAAC,gBAAwB,EAAA;QAEjD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC1C,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACjC,YAAA,OAAO,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9C,QAAA,CAAC,CAAC;IACJ;IAEQ,6BAA6B,CAAC,gBAAwB,EAAE,eAAsB,EAAA;AAEpF,QAAA,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAEtF,MAAM,cAAc,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QAG3D,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC1D,YAAA,IAAI,OAAO,CAAC,SAAS,EAAE;gBACrB,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;YACnD;AACF,QAAA,CAAC,CAAC;AAGF,QAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AAEjC,YAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC;QAC9E;aAAO;AAEL,YAAA,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC;YAChF,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC;QACzE;IACF;IAEA,qBAAqB,CAAC,WAAmB,EAAE,gBAAyB,EAAA;AACpE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ;AAClC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI;AAC5C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,cAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAY,KAAK,WAAW,KAAK,IAAI;cAC/E,CAAC,CAAC;AAEN,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,IAAI,KAAK,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YAC5F,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAChD,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACvC,gBAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB;AAChC,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;gBACxB;YACF;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC5B,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC;YACtC;AAAO,iBAAA,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;YAC9B;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY;YACnC;QACF;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY;QACnC;AAGA,QAAA,IAAI,YAAY,KAAK,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAC7D,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEE,4BAA4B,GAAA;AAE1B,QAAA,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ;AAC7B,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,YAAA,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;QACrB;QAGA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAErG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxG;AAEO,IAAA,aAAa,CAAC,OAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO;QAC9B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACtG,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AAEnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QAE9E,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;AAE1B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAY,KAAI;AAC5E,YAAA,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAC3E,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;gBACnB,IAAI,CAAC,mBAAmB,EAAE;YAC5B;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEQ,mBAAmB,GAAA;AAEzB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B;IACF;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC9E,QAAA,IAAI,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAE5D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QAE9E,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,gBAAgB,CAAC;QAC3D;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEA,WAAW,GAAA;QAET,IAAI,CAAC,mBAAmB,EAAE;IAC5B;8GAlNW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,yBAAyB,wYCtDtC,kxDAiCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,6BAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,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,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDqBa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAElB,KAAK,EAAA,QAAA,EAAA,kxDAAA,EAAA;8GAGW,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe;gBACH,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;gBACE,YAAY,EAAA,CAAA;sBAAlC,KAAK;uBAAC,cAAc;gBACL,KAAK,EAAA,CAAA;sBAApB,KAAK;uBAAC,OAAO;gBACJ,QAAQ,EAAA,CAAA;sBAAjB;;;MEpDU,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEb,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALZ,CAAA,oDAAA,CAAsD,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGrD,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,CAAA,oDAAA,CAAsD;AAChE,oBAAA,UAAU,EAAE;AACb,iBAAA;8BAEiB,IAAI,EAAA,CAAA;sBAAnB,KAAK;uBAAC,OAAO;gBAC4B,QAAQ,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCL7B,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;QAEU,IAAA,CAAA,KAAK,GAAU,EAAE;AACjB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAQ,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAE5B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;QAEtC,IAAA,CAAA,iBAAiB,GAAkB,IAAI;AAqChD,IAAA;AAnCC,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGxB,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC1C,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;IACF;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;AAE3B,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;YAC9B;QACF;AACA,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC3C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;QACvC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACrC;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AACvC,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACrC;IACF;8GA5CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;MCMY,sBAAsB,CAAA;AAGjC,IAAA,WAAA,CAAoB,YAAuC,EAAA;QAAvC,IAAA,CAAA,YAAY,GAAZ,YAAY;QAFvB,IAAA,CAAA,MAAM,GAAW,CAAC;IAEmC;AAE9D,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,KAAK,QAAQ,EAAE;YAC3E,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9C;IACF;8GATW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAHtB,CAAC,yBAAyB,CAAC,+CAD5B,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAI1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,SAAS,EAAE,CAAC,yBAAyB,CAAC;AACtC,oBAAA,UAAU,EAAE;AACb,iBAAA;2FAEU,MAAM,EAAA,CAAA;sBAAd;;;MCGU,6BAA6B,CAAA;AAKxC,IAAA,WAAA,CAAoB,YAAuC,EAAA;QAAvC,IAAA,CAAA,YAAY,GAAZ,YAAY;QAHhC,IAAA,CAAA,UAAU,GAAoB,EAAE;QAChC,IAAA,CAAA,UAAU,GAAG,CAAC;IAEgD;IAE9D,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACnD,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AAChG,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;YAChG,OAAO,KAAK,GAAG,KAAK;AACtB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzE;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;8GAvBW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EACvB,aAAa,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARpB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBATzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;2FAEiC,KAAK,EAAA,CAAA;sBAApC,eAAe;uBAAC,aAAa;;;MCLnB,gCAAgC,CAAA;AAK3C,IAAA,WAAA,CAAoB,YAAuC,EAAA;QAAvC,IAAA,CAAA,YAAY,GAAZ,YAAY;QAHhC,IAAA,CAAA,KAAK,GAAa,EAAE;QACpB,IAAA,CAAA,UAAU,GAAG,CAAC;IAEgD;IAE9D,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAY,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACxE,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzE;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK;YAAE;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC;IACxC;8GAfW,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAHhC,EAAE,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECNf,6dAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDCa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;+BACE,2BAA2B,EAAA,SAAA,EAE1B,EAAE,EAAA,UAAA,EACD,KAAK,EAAA,QAAA,EAAA,6dAAA,EAAA;2FAGR,WAAW,EAAA,CAAA;sBAAnB;;;MELU,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,GAAG,EAAoB;AAuBhD,IAAA;IArBC,gBAAgB,CAAC,OAAoB,EAAE,SAAc,EAAA;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC;IACxC;AAEA,IAAA,kBAAkB,CAAC,OAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;IAChC;AAEA,IAAA,YAAY,CAAC,OAAuB,EAAA;QAClC,OAAO,OAAO,EAAE;YACd,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAsB,CAAC,EAAE;gBAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAsB,CAAC;YACnD;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,aAAa;QACjC;AACA,QAAA,OAAO,IAAI;IACb;IAEA,eAAe,GAAA;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IAC5C;8GAvBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCGY,mBAAmB,CAAA;AAI9B,IAAA,IAA2C,aAAa,GAAA;AACtD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAA+C,iBAAiB,GAAA;QAC9D,OAAO,IAAI,CAAC,kBAAkB;IAChC;AAeA,IAAA,WAAA,CACS,UAAmC,EAClC,QAAmB,EACnB,MAAc,EACd,eAAsC,EAAA;QAHvC,IAAA,CAAA,UAAU,GAAV,UAAU;QACT,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,eAAe,GAAf,eAAe;QA3BhB,IAAA,CAAA,kBAAkB,GAAY,KAAK;QAUpC,IAAA,CAAA,SAAS,GAAmB,EAAE;QAC9B,IAAA,CAAA,UAAU,GAAG,KAAK;;QAKlB,IAAA,CAAA,kBAAkB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACnC,IAAA,CAAA,oBAAoB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACrC,QAAA,IAAA,CAAA,kBAAkB,GAAG,EAAE,CAAC;QACxB,IAAA,CAAA,eAAe,GAAG,KAAK;IAS5B;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;AAEA,IAAA,aAAa,CAAC,MAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB;IAEQ,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,kBAAkB;YAAE;QAE7B,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO;;AAG7C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC;QAClE;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC;QAC1D;;QAGA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,EAAE,MAAM,CAAC;AAEjE,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;;AAEjC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,KAAgB,KAAI;gBACjE,IAAI,IAAI,CAAC,kBAAkB;oBAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,CACH;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAK;gBAC/C,IAAI,CAAC,SAAS,EAAE;YAClB,CAAC,CAAC,CACH;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,KAAgB,KAAI;gBAC7D,KAAK,CAAC,cAAc,EAAE;YACxB,CAAC,CAAC,CACH;;AAGD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,KAAiB,KAAI;gBACnE,IAAI,IAAI,CAAC,kBAAkB;oBAAE;AAC7B,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,CACH;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,KAAiB,KAAI;gBAClE,IAAI,IAAI,CAAC,kBAAkB;oBAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,CACH;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,KAAiB,KAAI;gBACjE,IAAI,IAAI,CAAC,kBAAkB;oBAAE;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACxB,CAAC,CAAC,CACH;AAED,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,KAAiB,KAAI;gBACpE,IAAI,IAAI,CAAC,kBAAkB;oBAAE;AAC7B,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,CACH;AACH,QAAA,CAAC,CAAC;IACJ;;AAGQ,IAAA,WAAW,CAAC,KAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,sBAAsB,CAAC;AAE7E,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY;QACvC,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,aAAa,GAAG,MAAM;AACnC,YAAA,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC;QAC1E;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AACxC,YAAA,CAAC,CAAC;QACJ;IACF;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,sBAAsB,CAAC;AAEhF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3B,YAAA,CAAC,CAAC;QACJ;IACF;;AAGQ,IAAA,YAAY,CAAC,KAAiB,EAAA;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,UAAU;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;AAChE,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;AAClE,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;QAG5B,KAAK,CAAC,cAAc,EAAE;IACxB;AAEQ,IAAA,WAAW,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YAAE;AAExC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC;AACjE,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;AAElE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAClE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAClE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAE7D,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;;AAE/D,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC5B;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC3B,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AAEQ,IAAA,UAAU,CAAC,KAAiB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YAAE;AAExC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC;AACxE,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B;QAEA,IAAI,CAAC,eAAe,EAAE;IACxB;AAEQ,IAAA,aAAa,CAAC,KAAiB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,EAAE;QACxB;QACA,IAAI,CAAC,eAAe,EAAE;IACxB;AAEQ,IAAA,cAAc,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,sBAAsB,CAAC;;QAG7E,IAAI,CAAC,sBAAsB,EAAE;AAE7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;;gBAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC;gBAC9D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC;AAC5C,YAAA,CAAC,CAAC;QACJ;IACF;AAEQ,IAAA,eAAe,CAAC,KAAY,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;AAEpB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA,EAAA,CAAI,CAAC;AAC3E,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,GAAG,EAAE,CAAA,EAAA,CAAI,CAAC;QAC5E;;AAGA,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC5B;AAEQ,IAAA,YAAY,CAAC,KAAY,EAAA;;AAE/B,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AAEhD,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;;gBAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC;AACzD,gBAAA,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC;AAC3C,YAAA,CAAC,CAAC;QACJ;QAEA,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;;QAG5C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAgB;;AAGzD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,CAAC;AAClE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;AACpE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAA,CAAI,CAAC;AACtE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC;AACrE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,4BAA4B,CAAC;;QAGpF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;IAC7C;AAEQ,IAAA,cAAc,CAAC,KAAY,EAAA;AACjC,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;;AAGhD,QAAA,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC;AAC7D,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC;AACzC,YAAA,CAAC,CAAC;QACJ;IACF;AAEQ,IAAA,YAAY,CAAC,OAAuB,EAAA;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC;IACnD;AAEQ,IAAA,oBAAoB,CAAC,OAAgB,EAAA;;QAE3C,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC;IACnD;IAEQ,mBAAmB,CAAC,IAAY,EAAE,KAAY,EAAA;QACpD,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,YAAA,cAAc,EAAE,MAAK,EAAE,CAAC;AACxB,YAAA,YAAY,EAAE;AACZ,gBAAA,aAAa,EAAE,MAAM;AACrB,gBAAA,UAAU,EAAE,MAAM;AAClB,gBAAA,OAAO,EAAE,MAAK,EAAE,CAAC;AACjB,gBAAA,OAAO,EAAE,MAAM,EAAE;AACjB,gBAAA,YAAY,EAAE,MAAK,EAAE;AACtB;SACF;IACH;IAEQ,SAAS,CAAC,OAAkB,EAAE,UAAkB,EAAA;AACtD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,EAAE;AACxC,gBAAA,OAAO,OAAO,CAAC,CAAC,CAAC;YACnB;QACF;AACA,QAAA,OAAO,IAAI;IACb;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;AAChC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,sBAAsB,CAAC;AAEhF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3B,YAAA,CAAC,CAAC;QACJ;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3C,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC9B;IACF;AAEQ,IAAA,eAAe,CAAC,YAA0B,EAAE,OAAoB,EAAE,KAAgB,EAAA;AACxF,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;YAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;YACzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;YACxC,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACtD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC;QACvD;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;8GAxWW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAC;AACZ,iBAAA;6JAEU,cAAc,EAAA,CAAA;sBAAtB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAE0C,aAAa,EAAA,CAAA;sBAAvD,WAAW;uBAAC,wBAAwB;gBAIU,iBAAiB,EAAA,CAAA;sBAA/D,WAAW;uBAAC,4BAA4B;;;MCwB9B,uBAAuB,CAAA;AAWlC,IAAA,IAA2C,aAAa,GAAA;AACtD,QAAA,OAAO,IAAI;IACb;AAcA,IAAA,WAAA,CACS,UAAmC,EAClC,QAAmB,EACnB,eAAsC,EAAA;QAFvC,IAAA,CAAA,UAAU,GAAV,UAAU;QACT,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,eAAe,GAAf,eAAe;QA7BhB,IAAA,CAAA,kBAAkB,GAAQ,EAAE;QAC5B,IAAA,CAAA,sBAAsB,GAAY,KAAK;QACvC,IAAA,CAAA,yBAAyB,GAA8B,EAAE;QACzD,IAAA,CAAA,6BAA6B,GAAY,KAAK;AAG7C,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAiC;QAU3E,IAAA,CAAA,cAAc,GAAW,CAAC,CAAC;;QAI5B,IAAA,CAAA,eAAe,GAAG,KAAK;QACvB,IAAA,CAAA,iBAAiB,GAAG,KAAK;QACzB,IAAA,CAAA,qBAAqB,GAAG,CAAC;AACzB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC;AACpB,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,CAAC;IAM7B;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;;AAEpB,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC;IAC5E;IAEA,kBAAkB,GAAA;;AAEhB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAChC,YAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AAC5B,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAChC,gBAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AAC5B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;;QAET,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;IAExE;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAE7C,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,KAAgB,KAAI;YAC7D,KAAK,CAAC,cAAc,EAAE;;YAGtB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AACzD,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC7B;;AAGA,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAEhD,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,KAAK,CAAC,YAAa,CAAC,UAAU,GAAG,MAAM;;AAEvC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YACjC;iBAAO;AACL,gBAAA,KAAK,CAAC,YAAa,CAAC,UAAU,GAAG,MAAM;AACvC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;YAChC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,KAAgB,KAAI;YAC9D,KAAK,CAAC,cAAc,EAAE;;YAEtB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AACzD,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC7B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,KAAgB,KAAI;AAC9D,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC5C,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO;AACvB,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO;;YAGvB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACtE,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;YAChC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAgB,KAAI;YACzD,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACxB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,mBAAmB,CAAC,KAAgB,EAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE;QAE3B,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAC3E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG;QAE3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAE5F,IAAI,UAAU,GAAG,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC;QACjB,IAAI,KAAK,GAAG,KAAK;AAEjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE;YAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG;AAC9C,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;AAClC,YAAA,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,CAAC;AAEzC,YAAA,IAAI,CAAC,GAAG,UAAU,EAAE;gBAClB,UAAU,GAAG,KAAK;gBAClB,SAAS,GAAG,CAAC;gBACb,KAAK,GAAG,IAAI;gBACZ;YACF;QACF;QAEA,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;;YAEzC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,qBAAqB,EAAE;YACjD,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG;AAChD,YAAA,SAAS,GAAG,gBAAgB,CAAC,MAAM;QACrC;;AAGA,QAAA,IAAI,CAAC,qBAAqB,GAAG,UAAU;AACvC,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;IAC/B;;IAGA,WAAW,CAAC,QAA6B,EAAE,KAAgB,EAAA;QACzD,IAAI,IAAI,CAAC,sBAAsB;YAAE;AAEjC,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;;AAGrD,QAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,IAAG;AACjD,YAAA,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC3C,QAAA,CAAC,CAAC;IACJ;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;AAChC,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC;;AAG5B,QAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,IAAG;YACjD,SAAS,CAAC,aAAa,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,UAAU,CAAC,KAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,sBAAsB;YAAE;;AAG1D,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;AAG5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB;AAE1C,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;;YAEjC,IAAI,CAAC,IAAI,CAAC,6BAA6B,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE;gBAC5E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;YACnD;QACF;AAAO,aAAA,IAAI,IAAI,CAAC,eAAe,EAAE;;AAE/B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC;QAChF;IACF;IAEQ,YAAY,CAAC,SAAiB,EAAE,OAAe,EAAA;QACrD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAC5C,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;;AAG/B,QAAA,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;;AAG5B,QAAA,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO;;QAG/D,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC;AAEpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;;AAGjC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AAC9B,YAAA,aAAa,EAAE,SAAS;AACxB,YAAA,YAAY,EAAE,WAAW;YACzB,IAAI;AACJ,YAAA,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI,CAAC;AACZ,SAAA,CAAC;IACJ;AAEQ,IAAA,YAAY,CAAC,QAA6B,EAAE,eAAwC,EAAE,eAAwC,EAAE,WAAmB,EAAA;AACzJ,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc;AACpC,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc;;QAGlD,MAAM,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,kBAAkB,CAAC;AAC1D,QAAA,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACjC,QAAA,eAAe,CAAC,kBAAkB,GAAG,UAAU;;QAG/C,MAAM,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,kBAAkB,CAAC;QAC1D,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC;AACvC,QAAA,eAAe,CAAC,kBAAkB,GAAG,UAAU;;AAG/C,QAAA,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACzC,YAAA,aAAa,EAAE,WAAW;AAC1B,YAAA,YAAY,EAAE,WAAW;YACzB,IAAI;AACJ,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,iBAAiB,EAAE,eAAe;YAClC,IAAI,EAAE,eAAe,CAAC;AACvB,SAAA,CAAC;AAEF,QAAA,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACzC,YAAA,aAAa,EAAE,WAAW;YAC1B,YAAY,EAAE,CAAC,CAAC;YAChB,IAAI;AACJ,YAAA,SAAS,EAAE,eAAe;YAC1B,IAAI,EAAE,eAAe,CAAC;AACvB,SAAA,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CAAC,QAA6B,EAAA;QACpD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnD;;IAGA,eAAe,CAAC,QAA6B,EAAE,eAAwC,EAAA;AACrF,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACtC,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAClE;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;AAChC,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC;IAC9B;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAClD,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;YAC5C,MAAM,eAAe,GAAG,IAAI;AAC5B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc;YAChD,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC;QACnF;AACA,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,mBAAmB,CAAC,KAAU,EAAA;;QAE5B,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;AACzD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC7B;;AAGA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAEhD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;;AAEtB,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAChC;IACF;IAEA,eAAe,CAAC,KAAU,EAAE,QAAa,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,sBAAsB;YAAE;;AAG1D,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;AAG5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB;AAE1C,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE;;YAEjC,IAAI,CAAC,IAAI,CAAC,6BAA6B,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE;gBAC5E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;YACnD;QACF;AAAO,aAAA,IAAI,IAAI,CAAC,eAAe,EAAE;;AAE/B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC;QAChF;IACF;8GAnVW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EASjB,mBAAmB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDtC,0pCA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDYa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAEjB,KAAK,EAAA,QAAA,EAAA,0pCAAA,EAAA;wIAGP,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBACQ,yBAAyB,EAAA,CAAA;sBAAjC;gBACQ,6BAA6B,EAAA,CAAA;sBAArC;gBACQ,6BAA6B,EAAA,CAAA;sBAArC;gBAES,qBAAqB,EAAA,CAAA;sBAA9B;gBAEqC,SAAS,EAAA,CAAA;sBAA9C,eAAe;uBAAC,mBAAmB;gBAEO,aAAa,EAAA,CAAA;sBAAvD,WAAW;uBAAC,wBAAwB;;;ME1C1B,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,yBAAyB,+ECRtC,knBAiBM,EAAA,MAAA,EAAA,CAAA,wDAAA,CAAA,EAAA,CAAA,CAAA;;2FDTO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,knBAAA,EAAA,MAAA,EAAA,CAAA,wDAAA,CAAA,EAAA;;;MEEN,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;QAOW,IAAA,CAAA,GAAG,GAAW,EAAE;QAChB,IAAA,CAAA,IAAI,GAAW,EAAE;QAEjB,IAAA,CAAA,IAAI,GAAmD,QAAQ;QAC/D,IAAA,CAAA,KAAK,GAAW,MAAM;QAEvB,IAAA,CAAA,SAAS,GAAG,KAAK;AA8D1B,IAAA;IA7DC,IACI,QAAQ,CAAC,KAAuB,EAAA;AAElC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,IAAI,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE,KAAK,OAAO;IAC1D;AACA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AACrB,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AAE3C,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACzC;AAEA,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YAErB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;QAChE;AAAO,aAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;AAErD,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;QAC/C;aAAO;AAEL,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACzC;IACF;AAEA,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/C;AAEA,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACjD;AAEA,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;IACxC;AAEA,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,EAAE;IACrC;AAEA,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,IAAI,OAAO,GAAG,CAAA,0BAAA,EAA6B,IAAI,CAAC,SAAS,EAAE;AAE3D,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,iBAAiB;QAC9B;AAEA,QAAA,OAAO,OAAO;IAChB;8GApEW,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,oKCRlC,sqCA4BS,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDpBI,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAGb,KAAK,EAAA,QAAA,EAAA,sqCAAA,EAAA;8BAGR,GAAG,EAAA,CAAA;sBAAX;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAIG,QAAQ,EAAA,CAAA;sBADX;;;MEHU,qBAAqB,CAAA;IAShC,WAAA,CACoD,MAAiC,EAC3E,KAAiB,EAAA;QADyB,IAAA,CAAA,MAAM,GAAN,MAAM;QAChD,IAAA,CAAA,KAAK,GAAL,KAAK;QATN,IAAA,CAAA,QAAQ,GAAG,KAAK;QACU,IAAA,CAAA,QAAQ,GAAG,KAAK;;AAGzC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyB;IAK/D;IAGH,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE;YAC3C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;;AAGF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC;AACvD,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;QAChC;aAAO;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC;;YAEhE,IAAI,CAAC,mBAAmB,EAAE;QAC5B;;QAGA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;IAEQ,mBAAmB,GAAA;;AAEzB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC9E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC;QAElE,IAAI,cAAc,EAAE;AAClB,YAAA,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,cAAc,CAAC;;AAE3E,YAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,wBAAwB,EAAE;gBACtD,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AAC3C,gBAAA,OAAO,EAAE;AACV,aAAA,CAAC;AACF,YAAA,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC;AACnC,YAAA,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,KAAK,CAAC;QAClE;aAAO,IAAI,QAAQ,EAAE;AACnB,YAAA,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,QAAQ,CAAC;;AAE/D,YAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,wBAAwB,EAAE;gBACtD,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AAC3C,gBAAA,OAAO,EAAE;AACV,aAAA,CAAC;AACF,YAAA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7B,YAAA,OAAO,CAAC,GAAG,CAAC,wDAAwD,EAAE,KAAK,CAAC;QAC9E;aAAO;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC;QAClF;IACF;AAGA,IAAA,SAAS,CAAC,EAAiB,EAAA;AACzB,QAAA,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,EAAE;YACxC,EAAE,CAAC,cAAc,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE;QAChB;IACF;;AAGA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa;IACjC;;IAGA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;IAC3D;AAnFW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAUV,oBAAoB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAV/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,6ZARtB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAQ1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE;AACX,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;0BAWI;;0BAAY,MAAM;2BAAC,oBAAoB;kEATjC,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACkC,QAAQ,EAAA,CAAA;sBAA1C,WAAW;uBAAC,oBAAoB;gBAGvB,WAAW,EAAA,CAAA;sBAApB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBAQD,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;gBAsDrB,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MChCxB,oBAAoB,CAAA;IAiB7B,WAAA,CACY,KAAiB,EACjB,GAAsB,EAAA;QADtB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;QAlBN,IAAA,CAAA,SAAS,GAAmB,MAAM;QAClC,IAAA,CAAA,SAAS,GAAG,GAAG;QACf,IAAA,CAAA,QAAQ,GAAG,GAAG;AACd,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,CAAC;QAEX,IAAA,CAAA,IAAI,GAAG,KAAK;AAEX,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;QAG3C,IAAA,CAAA,UAAU,GAA2B,EAAE;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;IAOlC;IAEJ,QAAQ,GAAA;;IAER;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,CAAC,gBAAgB,EAAE;IAC3B;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,OAAoB,EAAA;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;IACjC;IAEA,eAAe,GAAA;;QAEX,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,EAAE;AAClC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YACxB,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;AAEA;;AAEG;IACH,WAAW,GAAA;;QAEP,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,EAAE;AAClC,YAAA,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC;;AAE5E,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YACxB,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;AAEA;;AAEG;IACH,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC;YACzD;QACJ;;AAGA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACtB;AAEA;;AAEG;IACH,UAAU,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE;YACxC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,IAAI,CAAC,cAAc;AACnC,YAAA,UAAU,EAAE,IAAI,KAAK,EAAE,CAAC;AAC3B,SAAA,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;AAGlB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEA;;AAEG;IACH,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;IACpD;AAEA;;AAEG;IACH,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC;YAC1E;QACJ;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACzC,IAAI,CAAC,UAAU,GAAG;;;;AAId,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,GAAG,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAA,EAAA,CAAI;AACtD,YAAA,MAAM,EAAE;SACX;IACL;AAEA;;AAEG;IACK,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;QACpD;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AAEtG,QAAA,IAAI,GAAW;AACf,QAAA,IAAI,IAAY;AAChB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/C,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS;;QAG9B,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;;AAGrC,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;;AAE1B,YAAA,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM;QACrE;aAAO;;AAEH,YAAA,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM;QACvD;QAEA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1C;AAEA;;AAEG;IACK,cAAc,GAAA;;AAElB,QAAA,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC;IAC7F;AAEA;;AAEG;IACK,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;AACzD,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QACnC;AACA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;AACzD,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QACnC;IACJ;8GA3KS,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBnB;;;;;;;;;;;;;;;;;AAiBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;AAiBX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;+GAEY,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAES,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;gBAEsC,QAAQ,EAAA,CAAA;sBAA9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MC5C5B,2BAA2B,CAAA;AA6BtC,IAAA,WAAA,CACS,KAAiB,EAChB,QAAmB,EACnB,GAAsB,EAAA;QAFvB,IAAA,CAAA,KAAK,GAAL,KAAK;QACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,GAAG,GAAH,GAAG;;QA3BL,IAAA,CAAA,aAAa,GAAQ,SAAS;;QAG7B,IAAA,CAAA,SAAS,GAA8B,MAAM;QAC7C,IAAA,CAAA,SAAS,GAAG,GAAG;QACf,IAAA,CAAA,QAAQ,GAAG,GAAG;;QAGd,IAAA,CAAA,gBAAgB,GAAY,KAAK;QACjC,IAAA,CAAA,WAAW,GAA2C,IAAI;QAC1D,IAAA,CAAA,eAAe,GAAW,MAAM;QAChC,IAAA,CAAA,eAAe,GAAY,KAAK;QAChC,IAAA,CAAA,eAAe,GAAW,cAAc;QACxC,IAAA,CAAA,oBAAoB,GAAW,gBAAgB;AAE9C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;QAEhD,IAAA,CAAA,IAAI,GAAG,KAAK;QAEJ,IAAA,CAAA,WAAW,GAAG,CAAC,CAAC;IAMrB;IAEH,kBAAkB,GAAA;;QAEhB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAClC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YAC1B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;;AAEb,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAGxB,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,CAAC,KAAU,KAAI;YACjF,OAAO,CAAC,GAAG,CAAC,4DAA4D,EAAE,KAAK,CAAC,MAAM,CAAC;YACvF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM;AACtC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC3B,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,MAAK;AAC1E,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC;gBACnF,IAAI,CAAC,UAAU,EAAE;YACnB;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,KAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;IAEQ,gBAAgB,GAAA;;QAEtB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;AACzE,QAAA,gBAAgB,CAAC,OAAO,CAAC,cAAc,IAAG;YACxC,IAAI,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;;AAE/C,gBAAA,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,2BAA2B,EAAE;AAC9D,oBAAA,OAAO,EAAE;AACV,iBAAA,CAAC;AACF,gBAAA,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,0BAA0B,CAAC,IAA0C,EAAA;;AAE3E,QAAA,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,+BAA+B,EAAE;AACtE,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC;AACtD,QAAA,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,IAAI,CAAC;IACtE;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC;YAChE;QACF;AAEA,QAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE;YAChD,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC;AACZ,SAAA,CAAC;;QAGF,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;QACtB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE;YACjD,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,UAAU,EAAE,IAAI,KAAK,EAAE,CAAC;AACzB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;IAClD;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,oBAAoB,GAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC;IAClE;IAEA,aAAa,GAAA;AACX,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AAClC,QAAA,IAAI,CAAC,MAAM;YAAE;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM;QAClD,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,iBAAiB,GAAA;AACf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AAClC,QAAA,IAAI,CAAC,MAAM;YAAE;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,IAAI,MAAM;QAC3D,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,cAAc,GAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM;YAAE;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa;AACjD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC3C;IACF;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;YAAE;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;QACpD,IAAI,GAAG,EAAE,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IACxB;;AAGA,IAAA,YAAY,CAAC,MAA6B,EAAA;AACxC,QAAA,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE;YACnD,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,YAAA,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AACjC,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK;;AAGjC,QAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;;AAGtB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,YAAA,IAAI,CAAC,KAAK,MAAM,EAAE;AAChB,gBAAA,CAAC,CAAC,QAAQ,GAAG,KAAK;YACpB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE;AACrD,YAAA,cAAc,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvF,SAAA,CAAC;;;QAIF,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,0BAA0B,CAAC;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,YAAA,WAAW,EAAE;AACd,SAAA,CAAC;;AAGF,QAAA,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC;QAC/D,IAAI,CAAC,UAAU,EAAE;;AAGjB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG1B;IAEA,gBAAgB,GAAA;;AAEd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,KAAK,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK;AAE/G,QAAA,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE;YAC1D,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvF,SAAA,CAAC;AAEF,QAAA,OAAO,KAAK;IACd;IAEA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI;IACxE;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;;AAG9B,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;AACzB,YAAA,GAAG,CAAC,QAAQ,GAAG,KAAK;AACtB,QAAA,CAAC,CAAC;;AAGF,QAAA,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,2BAA2B,EAAE;AAC9D,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC;;AAGlD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;AAEA;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAU,EAAA;QACxB,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE;QACtC;QAEA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;YACrD,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;QAC1C;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,IAAY,EAAA;QAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;QAE5C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAEtC,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,MAAM,CAAC,QAAQ;gBAAE;AAErB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AAE3E,YAAA,IAAI,WAAW,KAAK,UAAU,EAAE;AAC9B,gBAAA,OAAO,MAAM;YACf;QACF;AAEA,QAAA,OAAO,IAAI;IACb;8GA1SW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,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,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EACrB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC3B,oBAAoB,gDCjBjC,6WAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDEa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,aAAA,EAEhB,iBAAiB,CAAC,IAAI,cACzB,KAAK,EAAA,QAAA,EAAA,6WAAA,EAAA;uIAG8C,OAAO,EAAA,CAAA;sBAArE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAC5B,KAAK,EAAA,CAAA;sBAArC,SAAS;uBAAC,oBAAoB;gBAMtB,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAES,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;gBACS,OAAO,EAAA,CAAA;sBAAhB;gBACS,YAAY,EAAA,CAAA;sBAArB;;;MEdU,qBAAqB,CAAA;AA4BhC,IAAA,WAAA,CACS,KAAiB,EAChB,QAAmB,EACnB,GAAsB,EAAA;QAFvB,IAAA,CAAA,KAAK,GAAL,KAAK;QACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,GAAG,GAAH,GAAG;;QA1Bb,IAAA,CAAA,aAAa,GAAQ,SAAS;QAC9B,IAAA,CAAA,aAAa,GAAW,EAAE;;QAGjB,IAAA,CAAA,SAAS,GAA8B,MAAM;QAC7C,IAAA,CAAA,SAAS,GAAG,GAAG;QACf,IAAA,CAAA,QAAQ,GAAG,GAAG;QACd,IAAA,CAAA,WAAW,GAAG,qBAAqB;QACnC,IAAA,CAAA,QAAQ,GAAG,KAAK;AAEf,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAO;QAEnD,IAAA,CAAA,IAAI,GAAG,KAAK;QAEJ,IAAA,CAAA,WAAW,GAAG,CAAC,CAAC;;AAGhB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAU,KAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;QAC5B,IAAA,CAAA,UAAU,GAAG,KAAK;IAMf;IAEH,kBAAkB,GAAA;;QAEhB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAClC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YAC1B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;;AAEb,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAGxB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC;QACtF,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;QAC1C;;QAGA,IAAI,CAAC,uBAAuB,EAAE;;AAG9B,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,CAAC,KAAU,KAAI;YACjF,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE,KAAK,CAAC,MAAM,CAAC;YACjF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM;AACtC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC3B,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,MAAK;AACpE,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC;gBACvE,IAAI,CAAC,UAAU,EAAE;YACnB;AACF,QAAA,CAAC,CAAC;;QAGF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAiB,KAAI;AACvD,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAc;AACnC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;AAEhE,YAAA,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,EAAE;AAChC,gBAAA,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC;gBAC9D,IAAI,CAAC,UAAU,EAAE;YACnB;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,uBAAuB,GAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;QAE1B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAoB,KAAI;AACvE,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU;gBAAE;AAEtC,YAAA,QAAQ,KAAK,CAAC,GAAG;AACf,gBAAA,KAAK,WAAW;oBACd,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,eAAe,EAAE;oBACtB;AACF,gBAAA,KAAK,SAAS;oBACZ,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,aAAa,EAAE;oBACpB;AACF,gBAAA,KAAK,OAAO;AACZ,gBAAA,KAAK,GAAG;oBACN,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,kBAAkB,EAAE;oBACzB;AACF,gBAAA,KAAK,QAAQ;oBACX,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,YAAY,EAAE;oBACnB;AACF,gBAAA,KAAK,KAAK;;oBAER;AACF,gBAAA;;oBAEE;;AAEN,QAAA,CAAC,CAAC;IACJ;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;YAEd,IAAI,CAAC,gBAAgB,EAAE;QACzB;aAAO;;YAEL,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;YAEd,IAAI,CAAC,oBAAoB,EAAE;QAC7B;aAAO;;YAEL,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;;YAEb,IAAI,CAAC,YAAY,EAAE;QACrB;aAAO;;YAEL,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEQ,gBAAgB,GAAA;;QAEtB,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAC7D,QAAA,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAG;YAC5B,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;;AAEzC,gBAAA,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,qBAAqB,EAAE;AACxD,oBAAA,OAAO,EAAE;AACV,iBAAA,CAAC;AACF,gBAAA,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;YACpC;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,0BAA0B,CAAC,KAAU,EAAA;;AAE3C,QAAA,MAAM,cAAc,GAAG,IAAI,WAAW,CAAC,yBAAyB,EAAE;YAChE,MAAM,EAAE,EAAE,KAAK,EAAE;AACjB,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,CAAC;IACrE;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU;YAAE;QACtC,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;YACrC;QACF;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC;QACxF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC;YAC1D;QACF;AAEA,QAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE;YAC1C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC;AACZ,SAAA,CAAC;;QAGF,IAAI,CAAC,gBAAgB,EAAE;AAEvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;;QAGtB,IAAI,CAAC,+BAA+B,EAAE;QACtC,IAAI,CAAC,oBAAoB,EAAE;AAE3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE;YAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,UAAU,EAAE,IAAI,KAAK,EAAE,CAAC;AACzB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;QAGlB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;IAClD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,+BAA+B,GAAA;AACrC,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACtC,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC;AAChF,YAAA,IAAI,CAAC,WAAW,GAAG,aAAa,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC;QAC3D;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACtB;IACF;IAEQ,gBAAgB,GAAA;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE;AAErB,QAAA,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AACpC,YAAA,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC;QAC3E;;QAGA,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;AAC/F,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;IACrC;IAEQ,oBAAoB,GAAA;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE;AAErB,QAAA,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AACpC,YAAA,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC;QAC3E;;AAGA,QAAA,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;AAC3E,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;IACrC;AAEQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACtC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM;YAAE;AAE1C,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ;YAAE;;AAGrB,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK;;AAEjC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE;;AAG5C,QAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;;AAGtB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,YAAA,IAAI,CAAC,KAAK,MAAM,EAAE;AAChB,gBAAA,CAAC,CAAC,QAAQ,GAAG,KAAK;YACpB;AACF,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC;;QAG7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAGvC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE;;AAGhB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEQ,oBAAoB,GAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACpC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC;IAClE;IAEA,aAAa,GAAA;AACX,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AAClC,QAAA,IAAI,CAAC,MAAM;YAAE;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM;QAClD,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,iBAAiB,GAAA;AACf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AAClC,QAAA,IAAI,CAAC,MAAM;YAAE;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,IAAI,MAAM;QAC3D,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,cAAc,GAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM;YAAE;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa;AACjD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC3C;IACF;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;YAAE;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;QACpD,IAAI,GAAG,EAAE,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IACxB;;AAGA,IAAA,YAAY,CAAC,MAA6B,EAAA;AACxC,QAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE;YAC7C,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,YAAA,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAClC,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AACjC,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK;;AAEjC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE;;AAG5C,QAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;;AAGtB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,YAAA,IAAI,CAAC,KAAK,MAAM,EAAE;AAChB,gBAAA,CAAC,CAAC,QAAQ,GAAG,KAAK;YACpB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE;AAC/C,YAAA,cAAc,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvF,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC;;QAG7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAGvC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE;;AAGhB,QAAA,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC;QACzD,IAAI,CAAC,UAAU,EAAE;;AAGjB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEA,gBAAgB,GAAA;;AAEd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,KAAK,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK;AAE/G,QAAA,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE;YACpD,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvF,SAAA,CAAC;AAEF,QAAA,OAAO,KAAK;IACd;IAEA,gBAAgB,GAAA;;AAEd,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,EAAE;IACjC;;AAGA,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;;IAGA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;;AAGA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;QAE1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;YACjE,IAAI,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,cAAc,EAAE;YACtD;QACF;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACzB;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;8GAhdW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EARrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAGgB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC3B,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BjC,w/BA8BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDNa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,iBAGV,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,SAAA,EACN;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,w/BAAA,EAAA;uIAG8D,OAAO,EAAA,CAAA;sBAArE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAC5B,KAAK,EAAA,CAAA;sBAArC,SAAS;uBAAC,oBAAoB;gBAOtB,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,MAAM,EAAA,CAAA;sBAAf;gBACS,MAAM,EAAA,CAAA;sBAAf;gBACS,eAAe,EAAA,CAAA;sBAAxB;;;AEtCH;;;AAGG;MAEU,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;;AAGW,QAAA,IAAA,CAAA,OAAO,GAAkB,IAAI,OAAO,EAAQ;;QAGrD,IAAA,CAAA,iBAAiB,GAAW,mBAAmB;;QAG/C,IAAA,CAAA,aAAa,GAAW,gBAAgB;;QAGxC,IAAA,CAAA,iBAAiB,GAAW,iBAAiB;;QAG7C,IAAA,CAAA,cAAc,GAAW,iBAAiB;;QAG1C,IAAA,CAAA,aAAa,GAAW,eAAe;AAEvC;;AAEG;QACH,IAAA,CAAA,aAAa,GACX,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc,KAAI;AACjD,YAAA,IAAI,MAAM,KAAK,CAAC,EAAE;AAChB,gBAAA,OAAO,QAAQ;YACjB;YACA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAChD,YAAA,OAAO,UAAU,IAAI,GAAG,CAAC,CAAA,IAAA,EAAO,WAAW,EAAE;AAC/C,QAAA,CAAC;AACJ,IAAA;8GA9BY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA,CAAA;;2FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCKrB,wBAAwB,CAAA;IAanC,WAAA,CACS,KAA0B,EACzB,kBAAqC,EAAA;QADtC,IAAA,CAAA,KAAK,GAAL,KAAK;QACJ,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAdZ,IAAA,CAAA,SAAS,GAAW,CAAC;QACrB,IAAA,CAAA,MAAM,GAAW,CAAC;QAClB,IAAA,CAAA,QAAQ,GAAW,EAAE;QACrB,IAAA,CAAA,eAAe,GAAa,EAAE;;QAG9B,IAAA,CAAA,KAAK,GAAW,QAAQ;AAEvB,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAa;QAQnD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;;AAE/C,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IACjC;AAEA,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC;IAC3B;AAEA,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/C;AAEA,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC;IAC3B;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;IAC7C;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU;QAC7B,MAAM,KAAK,GAAwB,EAAE;AAErC,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACf;AACA,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;AAC/B,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACf;QACF;aAAO;AAEL,YAAA,IAAI,OAAO,IAAI,CAAC,EAAE;AAChB,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YACnC;AAAO,iBAAA,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC,EAAE;AAC/B,gBAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACf;YACF;iBAAO;AACL,gBAAA,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC;AAE7B,gBAAA,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;AAC3D,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACf;gBAEA,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AAC3B,oBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnB;AAEA,gBAAA,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,EAAE;AACvB,oBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnB;YACF;QACF;AAEA,QAAA,OAAO,KAAK;IACd;IAEO,WAAW,CAAC,KAAa,EAAE,IAAqB,EAAA;AACrD,QAAA,OAAO,IAAI;IACb;;AAGO,IAAA,QAAQ,CAAC,KAAU,EAAA;AACxB,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ;IAClC;;IAGO,YAAY,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACrC;IACF;;IAGO,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACrC;IACF;;AAGO,IAAA,QAAQ,CAAC,IAAqB,EAAA;AACnC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACpE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QAC3B;IACF;;AAIO,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;QAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;AAE9C,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC;QACjC;IACF;IAEQ,UAAU,CAAC,SAAiB,EAAE,QAAiB,EAAA;AACrD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS;AAExC,QAAA,MAAM,KAAK,GAAc;YACvB,SAAS;YACT,iBAAiB;AACjB,YAAA,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ;YACnC,MAAM,EAAE,IAAI,CAAC;SACd;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACvB;8GA5IW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,wOCZrC,8uEA0DQ,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FD9CK,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAGhB,KAAK,EAAA,eAAA,EACA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8uEAAA,EAAA;qHAG/B,SAAS,EAAA,CAAA;sBAAxB;gBACe,MAAM,EAAA,CAAA;sBAArB;gBACe,QAAQ,EAAA,CAAA;sBAAvB;gBACe,eAAe,EAAA,CAAA;sBAA9B;gBAGe,KAAK,EAAA,CAAA;sBAApB;gBAEgB,IAAI,EAAA,CAAA;sBAApB;;;MEbU,mBAAmB,CAAA;;AAe9B,IAAA,MAAM,eAAe,GAAA;;AAEnB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC;;QAGpF,IAAI,QAAQ,GAAG,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC;QAC5D,IAAI,UAAU,GAAG,EAAE;QAEnB,IAAI,QAAQ,EAAE;;AAEZ,YAAA,UAAU,GAAG,QAAQ,CAAC,KAAK;QAC7B;aAAO;;YAEL,MAAM,WAAW,GAAG,kBAAkB,EAAE,aAAa,CAAC,gBAAgB,CAAC;YACvE,IAAI,WAAW,EAAE;gBACf,UAAU,GAAG,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,IAAI,EAAE;YACrE;iBAAO;AACL,gBAAA,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC;gBACtD;YACF;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE;AACtB,YAAA,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC;YAC1C;QACF;AAEA,QAAA,IAAI;YACF,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAA,sCAAA,CAAwC,CAAC;AACxE,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;YAGvD,IAAI,CAAC,gBAAgB,EAAE;QACzB;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;;AAE5C,YAAA,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;QAC1C;IACF;;AAGQ,IAAA,uBAAuB,CAAC,UAAkB,EAAA;;QAEhD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AACvD,QAAA,YAAY,CAAC,KAAK,GAAG,UAAU;AAC/B,QAAA,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACrC,QAAA,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,WAAW;AACrC,QAAA,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW;AACpC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QAEvC,YAAY,CAAC,KAAK,EAAE;QACpB,YAAY,CAAC,MAAM,EAAE;QACrB,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAEzC,QAAA,IAAI;AACF,YAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5B,YAAA,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,gBAAgB,EAAE;QACzB;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC;QAC9C;gBAAU;AACR,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QACzC;IACF;;IAGQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;QACpE,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK;AACjC,YAAA,MAAM,CAAC,KAAK,GAAG,UAAU;;AAGzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,aAAa;YAEhC,UAAU,CAAC,MAAK;AACd,gBAAA,MAAM,CAAC,KAAK,GAAG,YAAY;AAC3B,gBAAA,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;;gBAG3B,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI;gBAC9B,CAAC,EAAE,IAAI,CAAC;YACV,CAAC,EAAE,IAAI,CAAC;QACV;IACF;;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,OAAO,GAAG,CAAA,SAAA,EAAY,IAAI,CAAC,QAAQ,+BAA+B;AAEtE,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,OAAO,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,EAAE;QACnC;AAEA,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;QAnHrB,IAAA,CAAA,IAAI,GAAW,QAAQ;QACvB,IAAA,CAAA,IAAI,GAA0C,MAAM;QACpD,IAAA,CAAA,IAAI,GAAW,UAAU;QACzB,IAAA,CAAA,QAAQ,GAA4B,UAAU;QAC9C,IAAA,CAAA,WAAW,GAAW,EAAE;AAEvB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAgC;;AAGnE,QAAA,IAAA,CAAA,WAAW,GAAW,IAAI,CAAC,IAAI;QAC/B,IAAA,CAAA,QAAQ,GAAY,KAAK;IAyGoB;8GArHlC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,QAAA,EAAA,IAAA,EAAA,mBAAmB,sNCRhC,kUAYA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDJa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,kUAAA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA;+EAIR,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAES,MAAM,EAAA,CAAA;sBAAf;;;AEXH;MAca,wBAAwB,CAAA;IAgBjC,IAA+B,SAAS,KAAa,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AAKxE;;;;;AAKG;IACH,WAAA,CACY,WAAuB,EACvB,WAAuB,EAAA;QADvB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,WAAW,GAAX,WAAW;;QAdP,IAAA,CAAA,KAAK,GAAW,EAAE;;AAkB9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE;IACxC;;;;AAMA;;AAEG;IACH,QAAQ,GAAA;;AAGJ,QAAA,MAAM,KAAK,GAAI,MAAc,CAAC,KAAK;QACnC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,KAAK,KAAK,WAAW,CAAC;AAC1D,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9B,YAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjE;;;;AAMA,QAAA,IAAK,CAAC,IAAI,CAAC,IAAI,EACf;YACI;QACJ;;AAGA,QAAA,IAAK,IAAI,CAAC,IAAI,EACd;;AAEI,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAC,YAAY,EAAE,MAAM,EAAC;AACjD,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,iBAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;;AAGpB,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC5B,YAAA,CAAC,CAAC;QACV;;QAGA,IAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAC9B;;YAEI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QACnD;IACJ;AAEA;;AAEG;IACH,WAAW,GAAA;;AAGP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACnC;;;;AAMA;;AAEG;;;;;;;;;AAYH;;AAEG;AACK,IAAA,MAAM,WAAW,GAAA;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;;AAEnC,YAAA,IAAI,OAAQ,MAAc,CAAC,KAAK,KAAK,WAAW,EAAE;AAC9C,gBAAA,OAAO,EAAE;gBACT;YACJ;;YAGA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,YAAA,MAAM,CAAC,GAAG,GAAG,0BAA0B;AACvC,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;;AAEjB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,gDAAgD,CAAC;AACzE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,yCAAyC,CAAC;AAClE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,4CAA4C,CAAC;AAErE,gBAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;AAC5C,gBAAA,OAAO,EAAE;AACb,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,OAAO,GAAG,MAAK;AAClB,gBAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC;AACzC,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACjD,YAAA,CAAC;AACD,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACrC,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;AACK,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG;AAChB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACrC;AAEA;;;;AAIG;IACH,MAAM,SAAS,CAAC,UAAkB,EAAA;;AAG9B,QAAA,IAAI,OAAQ,MAAc,CAAC,KAAK,KAAK,WAAW,EAAE;AAC9C,YAAA,MAAM,IAAI,CAAC,WAAW,EAAE;QAC5B;AAEA,QAAA,MAAM,KAAK,GAAI,MAAc,CAAC,KAAK;AAEnC,QAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,KAAK,KAAK,WAAW,CAAC;;AAG7D,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe;YACvF;QACJ;;QAGA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,CAAA,UAAA,EAAa,IAAI,CAAC,IAAI,CAAA,8BAAA,CAAgC,CAAC;AACrE,YAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe;YACvF;QACJ;;QAGA,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;;AAI1C,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,0BAA0B;YACrE;QACJ;;;;;QAKA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACtE;YACI,WAAW,CAAC,KAAK,EAAE;QACvB;AAEA,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAChH;YACI,WAAW,CAAC,GAAG,EAAE;QACrB;;;AAKA,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,0BAA0B;YACrE;QACJ;;QAEA,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;;QAGtD,IAAI,MAAM,GAAG,EAAE;;QAGf,WAAW,CAAC,OAAO,CAAC,CAAC,IAAY,EAAE,KAAa,KAAI;;;AAIhD,YAAA,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;;YAG5D,IAAK,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,EACrC;;AAEI,gBAAA,MAAM,GAAG,MAAM,GAAG,IAAI;YAC1B;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;;QAGjE,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AAEtF,QAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;;AAG7E,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,oBAAoB,CAAC;QAC3F,IAAI,gBAAgB,EAAE;AAClB,YAAA,gBAAgB,CAAC,SAAS;gBACtB,uCAAuC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,eAAe,GAAG,eAAe;QACtG;aAAO;;AAEH,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS;gBACpC,uCAAuC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,eAAe,GAAG,eAAe;QACtG;IACJ;8GA7PS,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVtB;;;;;;;AAOV,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAG,kBAAkB;AAC7B,oBAAA,QAAQ,EAAG;;;;;;;AAOV,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;0GAKG,MAAM,EAAA,CAAA;sBADL,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBAKtC,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,MAAM;gBAKb,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,MAAM;gBAIG,KAAK,EAAA,CAAA;sBAApB,KAAK;uBAAC,OAAO;gBACiB,SAAS,EAAA,CAAA;sBAAvC,WAAW;uBAAC,YAAY;;;ACnC7B;MA4Da,qBAAqB,CAAA;IAMlC,IAAa,SAAS,CAAC,GAAW,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC7B;IACF;AACA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;IACxB;IA0DE,WAAA,CAAoB,GAAsB,EAAU,UAAsB,EAAA;QAAtD,IAAA,CAAA,GAAG,GAAH,GAAG;QAA6B,IAAA,CAAA,UAAU,GAAV,UAAU;QArEvD,IAAA,CAAA,KAAK,GAAW,CAAC;QAElB,IAAA,CAAA,UAAU,GAAW,CAAC;QAWnB,IAAA,CAAA,OAAO,GAAkB,EAAE;QAC3B,IAAA,CAAA,KAAK,GAAW,QAAQ;QACxB,IAAA,CAAA,QAAQ,GAAqB,KAAK;AAEjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAU;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU;AAI5C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAC9B,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,eAAe,GAA0B,IAAI;QAC7C,IAAA,CAAA,cAAc,GAAG,CAAC;QAClB,IAAA,CAAA,gBAAgB,GAAkB,IAAI;QACtC,IAAA,CAAA,eAAe,GAAG,KAAK;AAEd,QAAA,IAAA,CAAA,cAAc,GAAkB;AAC/C,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,yBAAyB,EAAE,CAAC;AAC5B,YAAA,uBAAuB,EAAE,CAAC;AAC1B,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,qBAAqB,EAAE,KAAK;AAC5B,YAAA,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,CAAC,KAAa,KAAK,KAAK,CAAC,QAAQ,EAAE;AAC3C,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,KAAa,KAAK,KAAK,CAAC,QAAQ;SAC7C;AAEO,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAU,KAAI,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;QAEpB,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9C,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAE2B;AAE7E,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;IACpD;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;IAC7B;AAEA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3C;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;IAC/C;AAEA,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;AAC3D,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7D,OAAO;gBACL,IAAI,EAAE,CAAA,EAAG,IAAI,CAAA,CAAA,CAAG;gBAChB,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA;aAChB;QACH;aAAO;YACL,OAAO;AACL,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,CAAA;aAC1B;QACH;IACF;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG;AAC3C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI;QAC/B;aAAO;AACL,YAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI;QAC3B;IACF;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK;QACvD;aAAO;AACL,YAAA,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK;QAC5B;IACF;AAEA,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACrC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,KAAK,EAAE,KAAK,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;YAC1E,OAAO,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC/D;AACA,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACvE;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;YACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAK;QAC3C;IACF;AACQ,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG;AAC3C,QAAA,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG;IACjD;AAEQ,IAAA,iBAAiB,CAAC,UAAkB,EAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG;AAC3C,QAAA,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK;AACzD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI;IACxC;AAEO,IAAA,kBAAkB,CAAC,KAAiB,EAAE,WAAA,GAAuB,KAAK,EAAA;QACvE,IAAI,IAAI,CAAC,UAAU;YAAE;QAErB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK;QAEnD,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEO,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QACvC,IAAI,IAAI,CAAC,UAAU;YAAE;AAErB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC;AACnF,QAAA,IAAI,CAAC,aAAa;YAAE;AAEpB,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,qBAAqB,EAAE;AAClD,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAErE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QACtC;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAClC;IACF;IAEQ,iBAAiB,GAAA;QACvB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC7D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QACzD,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;IAC9D;IAEQ,qBAAqB,GAAA;QAC3B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAChE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QAC5D,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;IACjE;AAEQ,IAAA,WAAW,CAAC,KAAiB,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE;AAE/C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE;YAAE;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG;QAEzB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,MAAK;AACjD,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,qBAAqB,EAAE;AACtE,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAErE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;AAClC,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC/B;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAChC;QACF;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAClC;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAE3B,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACvE,IAAI,CAAC,SAAS,EAAE;QAClB;QAEA,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEO,IAAA,cAAc,CAAC,KAAiB,EAAE,WAAA,GAAuB,KAAK,EAAA;AACnE,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;YACvB;QACF;QAEA,IAAI,IAAI,CAAC,UAAU;YAAE;QAErB,KAAK,CAAC,eAAe,EAAE;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,qBAAqB,EAAE;AACtE,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAErE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAChC;iBAAO;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC/B;QACF;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAClC;IACF;AAEO,IAAA,YAAY,CAAC,KAAiB,EAAA;QACnC,IAAI,IAAI,CAAC,UAAU;YAAE;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,qBAAqB,EAAE;AACtE,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAErE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAClC;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAClC;IACF;IAEQ,0BAA0B,CAAC,OAAe,EAAE,IAAa,EAAA;AAC/D,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;AAC1E,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;IAC3C;AAEQ,IAAA,qBAAqB,CAAC,QAAgB,EAAA;AAC5C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AACnD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAExD,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,IAAI,YAAY,GAAG,KAAK,GAAG,MAAM;AAEnE,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAChC;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QAC5D;IACF;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;QAC/D;IACF;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC3C,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;IACF;AAEQ,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG;AAC3C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAE9D,QAAA,IAAI,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,YAAY;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;AAEQ,IAAA,iBAAiB,CAAC,QAAgB,EAAA;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG;AAC3C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAE9D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;AACvD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;AAE5D,QAAA,IAAI,WAAW,GAAG,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QACnC;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QACpC;IACF;AAEQ,IAAA,cAAc,CAAC,QAAgB,EAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC;AAEjD,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAE5D,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAClE;AAEA,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAClE;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YAClC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;QACvD;AAEA,QAAA,IAAI,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,YAAY;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;AAEQ,IAAA,eAAe,CAAC,QAAgB,EAAA;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC;AAEjD,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAE5D,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC9D;AAEA,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC9D;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YAClC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC;QACnD;AAEA,QAAA,IAAI,YAAY,KAAK,IAAI,CAAC,SAAS,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,GAAG,YAAY;YAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB;IACF;AAEO,IAAA,SAAS,CAAC,KAAoB,EAAA;QACnC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe;YAAE;QAE5D,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;AACzC,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK;AAEzB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,YAAY;AACjB,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;gBAC5B;AACF,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;gBAC5B;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;gBACxC;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG;gBACzC;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;gBACnC;AACF,YAAA,KAAK,UAAU;gBACb,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;gBACnC;AACF,YAAA;gBACE;;AAGJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAClC;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAClC;IACF;AAIK,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG,CAAC;QAC/D;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QACpB;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAES,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEO,eAAe,CAAC,cAAuB,KAAK,EAAA;AACjD,QAAA,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU;QACtE,OAAO;YACL,IAAI,EAAE,CAAA,EAAG,UAAU,CAAA,CAAA;SACpB;IACH;AAEO,IAAA,WAAW,CAAC,KAAa,EAAA;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE;IACxF;8GAvfW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EARrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1DH,isEA4CM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA,CAAA;;2FDgBO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cAGb,KAAK,EAAA,eAAA,EACA,uBAAuB,CAAC,OAAO,EAAA,SAAA,EACrC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,isEAAA,EAAA;+GAKM,KAAK,EAAA,CAAA;sBAAb;gBAGY,SAAS,EAAA,CAAA;sBAArB;gBAUU,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAES,WAAW,EAAA,CAAA;sBAApB;gBACS,eAAe,EAAA,CAAA;sBAAxB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBAE8C,aAAa,EAAA,CAAA;sBAA3D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;ME7ElC,mBAAmB,CAAA;AAC9B,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,0EAA0E;IACnF;;AAKA,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IACA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;;AAUA,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IACA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AAiBA,IAAA,WAAA,CAAmB,WAAuB,EAAA;QAAvB,IAAA,CAAA,WAAW,GAAX,WAAW;;QA3CrB,IAAA,CAAA,KAAK,GAA2C,SAAS;QAW1D,IAAA,CAAA,SAAS,GAAG,KAAK;;QAGhB,IAAA,CAAA,UAAU,GAAY,KAAK;;QAG3B,IAAA,CAAA,SAAS,GAAY,KAAK;QAU3B,IAAA,CAAA,SAAS,GAAG,KAAK;;QAGhB,IAAA,CAAA,KAAK,GAAQ,IAAI;;AAGhB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;;AAG5C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAuB;;AAGjD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAuB;IAIhB;IAE7C,QAAQ,GAAA;;AAEN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;QAC9C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IACxH;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEQ,yBAAyB,GAAA;;AAE/B,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAY,KAAI;AACxE,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAiB;;;YAItC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAE1D,IAAI,aAAa,EAAE;gBACjB,KAAK,CAAC,eAAe,EAAE;gBACvB,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBACpC,IAAI,CAAC,MAAM,EAAE;gBACf;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,IAAI;IACpF;;AAIA,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;;AAIA,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AAEA,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,QAAQ;AACb,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,MAAM,EAAE;oBACb,KAAK,CAAC,cAAc,EAAE;gBACxB;gBACA;AACF,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,cAAc,EAAE;oBACrB,KAAK,CAAC,cAAc,EAAE;gBACxB;gBACA;;IAEN;;IAGA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAChC;IACF;;IAGA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB;IACF;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;8GA/IW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,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,QAAA,EAAA,IAAA,EAAA,mBAAmB,ybCRhC,8qBAgBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDRa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,KAAK,EAAA,QAAA,EAAA,8qBAAA,EAAA;+EAMb,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,OAAO;gBAKX,KAAK,EAAA,CAAA;sBAAb;gBAIG,QAAQ,EAAA,CAAA;sBADX;gBAWQ,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBAIG,QAAQ,EAAA,CAAA;sBADX;gBAUQ,KAAK,EAAA,CAAA;sBAAb;gBAGS,cAAc,EAAA,CAAA;sBAAvB;gBAGS,OAAO,EAAA,CAAA;sBAAhB;gBAGS,SAAS,EAAA,CAAA;sBAAlB;gBAyCD,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAcjC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ME1ExB,uBAAuB,CAAA;;AASlC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IACA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,yBAAyB,EAAE;IAClC;;AAIA,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IACA,IAAI,KAAK,CAAC,QAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;QACtB,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAgBA,IACI,UAAU,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;AAIzC,IAAA,IACI,mBAAmB,GAAA,EAAK,OAAO,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;IAElE,IACI,YAAY,GAAA,EAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AAStD,IAAA,WAAA,CAAmB,WAAuB,EAAA;QAAvB,IAAA,CAAA,WAAW,GAAX,WAAW;;QA1DrB,IAAA,CAAA,QAAQ,GAAY,KAAK;;QAGzB,IAAA,CAAA,UAAU,GAAY,KAAK;QAW5B,IAAA,CAAA,SAAS,GAAG,KAAK;;QAchB,IAAA,CAAA,WAAW,GAA8B,YAAY;;AAGpD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAO;;AAGhC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAuB;QAKpB,IAAA,CAAA,aAAa,GAAG,IAAI;QAIjC,IAAA,CAAA,IAAI,GAAG,SAAS;QAQlC,IAAA,CAAA,kBAAkB,GAAmB,EAAE;QACvC,IAAA,CAAA,iBAAiB,GAAG,CAAC;;AAG7B,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;IAEoB;IAE7C,QAAQ,GAAA;;AAEN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AAC9C,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC3C;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,0BAA0B,EAAE;QACjC,IAAI,CAAC,yBAAyB,EAAE;;QAGhC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YAChC,IAAI,CAAC,yBAAyB,EAAE;YAChC,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,0BAA0B,EAAE;YACjC,IAAI,CAAC,yBAAyB,EAAE;AAClC,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,yBAAyB,EAAE;IAClC;;IAGQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;AAEjC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACxB;;YAGA,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;AAC3D,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACnC,YAAA,CAAC,CAAC;;YAGF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAC7C,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC3B,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC;AAC7D,QAAA,CAAC,CAAC;IACJ;;IAGQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAC9B;;AAGQ,IAAA,sBAAsB,CAAC,IAAyB,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;AAElB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;gBACrB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;AAC5B,oBAAA,CAAC,CAAC,QAAQ,GAAG,KAAK;gBACpB;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,SAAS,EAAE;IAClB;;AAGQ,IAAA,cAAc,CAAC,IAAyB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YACrB,IAAI,CAAC,YAAY,EAAE;QACrB;;AAGA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE;IAClB;;IAKQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;iBAChB,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ;iBAC5B,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;QAC5B;aAAO;AACL,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC3D,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,KAAK,GAAG,IAAI;QACxD;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;;IAGQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAClD,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;gBACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM;AAC5C,YAAA,CAAC,CAAC;QACJ;IACF;;IAGQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC/B,QAAA,CAAC,CAAC;IACJ;;AAIA,IAAA,cAAc,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3D;QACF;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACvC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,KAAK,YAAY;AAEtD,QAAA,QAAQ,KAAK,CAAC,GAAG;YACf,KAAK,YAAY,GAAG,WAAW,GAAG,SAAS;gBACzC,IAAI,CAAC,kBAAkB,EAAE;gBACzB,KAAK,CAAC,cAAc,EAAE;gBACtB;YACF,KAAK,YAAY,GAAG,YAAY,GAAG,WAAW;gBAC5C,IAAI,CAAC,cAAc,EAAE;gBACrB,KAAK,CAAC,cAAc,EAAE;gBACtB;AACF,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,eAAe,EAAE;gBACtB,KAAK,CAAC,cAAc,EAAE;gBACtB;AACF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,cAAc,EAAE;gBACrB,KAAK,CAAC,cAAc,EAAE;gBACtB;;IAEN;;IAGQ,kBAAkB,GAAA;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACvC,QAAA,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,iBAAiB,EAAE;YACxB,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE;QAC5C;IACF;;IAGQ,cAAc,GAAA;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QACvC,IAAI,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAClD,IAAI,CAAC,iBAAiB,EAAE;YACxB,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE;QAC5C;IACF;;IAGQ,eAAe,GAAA;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACvC,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAC1B,YAAA,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;QACvB;IACF;;IAGQ,cAAc,GAAA;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACvC,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE;QAC5C;IACF;;AAGA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;8GArRW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,iCAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EARvB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAyCgB,mBAAmB,gDCvEtC,gJAEM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD8BO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAbnC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,KAAK,EAAA,SAAA,EAGN;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,gJAAA,EAAA;+EAKQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGQ,UAAU,EAAA,CAAA;sBAAlB;gBAIG,QAAQ,EAAA,CAAA;sBADX;gBAYG,KAAK,EAAA,CAAA;sBADR;gBAWQ,WAAW,EAAA,CAAA;sBAAnB;gBAGS,MAAM,EAAA,CAAA;sBAAf;gBAGS,OAAO,EAAA,CAAA;sBAAhB;gBAGD,KAAK,EAAA,CAAA;sBADJ,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAGpB,aAAa,EAAA,CAAA;sBAAnD,WAAW;uBAAC,wBAAwB;gBAEjC,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,iCAAiC;gBAGpB,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW;gBAGpB,mBAAmB,EAAA,CAAA;sBADtB,WAAW;uBAAC,2BAA2B;gBAIpC,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,oBAAoB;gBAmJjC,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ME/NxB,sBAAsB,CAAA;IAGjC,IAAoC,eAAe,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtF,IAAI,eAAe,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhG,IAAA,IACI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,GAAG,MAAM,GAAG,OAAO;IAChD;IAGA,IAAiC,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,WAAW,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAExF,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,OAAO;IAC5C;IAGA,IAAiC,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,WAAW,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAExF,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,OAAO;IAC5C;IAGA,IAAgC,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,OAAO;IAC3C;IAGA,IAAiC,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,WAAW,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAExF,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,OAAO;IAC5C;IAGA,IAAuC,kBAAkB,KAAK,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/F,IAAI,kBAAkB,CAAC,CAAmB,EAAA,EAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtG,IAAA,IACI,sBAAsB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB,GAAG,MAAM,GAAG,OAAO;IACnD;IAMA,WAAA,CAAoB,EAAc,EAAU,QAAmB,EAAA;QAA3C,IAAA,CAAA,EAAE,GAAF,EAAE;QAAsB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QA3D5B,IAAA,CAAA,WAAW,GAAW,EAAE;QACxC,IAAA,CAAA,gBAAgB,GAAG,KAAK;QASxB,IAAA,CAAA,YAAY,GAAG,KAAK;QASpB,IAAA,CAAA,YAAY,GAAG,KAAK;QASpB,IAAA,CAAA,WAAW,GAAG,KAAK;QASnB,IAAA,CAAA,YAAY,GAAG,KAAK;QASpB,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAS3B,IAAA,CAAA,cAAc,GAAuB,IAAI;QACzC,IAAA,CAAA,qBAAqB,GAAwB,IAAI;QACjD,IAAA,CAAA,WAAW,GAAG,KAAK;IAEuC;IAGlE,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,EAAE;;YAE/C;QACF;AACA,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACpE;QACF;QACA,IAAI,CAAC,aAAa,EAAE;IACtB;IAGA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;YACzE,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAGA,IAAA,OAAO,CAAC,KAAY,EAAA;QAClB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAChD;QACF;QACA,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,EAAE;YACrE,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEQ,aAAa,GAAA;;QAEnB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE;YAC3C;QACF;;QAGA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,wBAAwB,CAAC;;QAGrE,IAAI,CAAC,cAAe,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;;AAGnD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,CAAC;AACnE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;;AAG7D,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAQ,KAAI;gBACtD,CAAC,CAAC,eAAe,EAAE;gBACnB,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,CAAC,CAAC;;AAEF,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;YACnC;AAEA,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAQ,KAAI;AAClF,gBAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,EAAE;oBAC1E,IAAI,CAAC,cAAc,EAAE;gBACvB;AACF,YAAA,CAAC,CAAC;QACJ;;QAGA,MAAM,MAAM,GAAG,CAAC;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAe,CAAC,qBAAqB,EAAE;QAEhE,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM;AACjE,QAAA,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,GAAG,MAAM;QAC3F,MAAM,YAAY,GAAI,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAC,KAAK,GAAG,MAAM;AACjE,QAAA,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,GAAG,MAAM;QAExF,IAAI,cAAc,GAAyC,OAAO;AAClE,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,aAAa,EAAE;YACrC,cAAc,GAAG,OAAO;QAC1B;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,IAAI,aAAa,EAAE;YAC5C,cAAc,GAAG,OAAO;QAC1B;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE;YAC1C,cAAc,GAAG,MAAM;QACzB;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,IAAI,aAAa,EAAE;YAC5C,cAAc,GAAG,OAAO;QAC1B;aAAO;YACL,cAAc,GAAG,aAAa,GAAG,OAAO,IAAI,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;QAChF;QAEA,IAAI,GAAG,GAAW,CAAC;QACnB,IAAI,IAAI,GAAW,CAAC;QACpB,QAAQ,cAAc;AACpB,YAAA,KAAK,OAAO;AACV,gBAAA,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM;gBACjE,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;gBAChF;AACF,YAAA,KAAK,OAAO;gBACV,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM;gBAC/C,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;gBAChF;AACF,YAAA,KAAK,MAAM;gBACT,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;AAChF,gBAAA,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM;gBAClE;AACF,YAAA,KAAK,OAAO;gBACV,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;gBAChF,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM;gBAC/C;;AAGJ,QAAA,IAAI,IAAI,GAAG,MAAM,EAAE;YACjB,IAAI,GAAG,MAAM;QACf;AAAO,aAAA,IAAI,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE;YAChE,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM;QACvD;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC;QAEpE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,8BAA8B,CAAC;QAC9E,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,8BAA8B,CAAC;AAC9E,QAAA,IAAI,cAAc,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,8BAA8B,CAAC;QAC7E;AAAO,aAAA,IAAI,cAAc,KAAK,MAAM,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC;QAC5E;AAAO,aAAA,IAAI,cAAc,KAAK,OAAO,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,8BAA8B,CAAC;QAC7E;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;AAC7D,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;AACA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;QACnC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,cAAc,EAAE;IACvB;8GAtNW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,eAAA,EAAA,aAAA,CAAA,EAAA,eAAA,EAAA,CAAA,uBAAA,EAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,WAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,UAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,WAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,0BAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE;AACf,iBAAA;uGAEyB,WAAW,EAAA,CAAA;sBAAlC,KAAK;uBAAC,eAAe;gBAEc,eAAe,EAAA,CAAA;sBAAlD,KAAK;uBAAC,uBAAuB;gBAI1B,mBAAmB,EAAA,CAAA;sBADtB,WAAW;uBAAC,uBAAuB;gBAMH,WAAW,EAAA,CAAA;sBAA3C,KAAK;uBAAC,oBAAoB;gBAIvB,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,oBAAoB;gBAMA,WAAW,EAAA,CAAA;sBAA3C,KAAK;uBAAC,oBAAoB;gBAIvB,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,oBAAoB;gBAMD,UAAU,EAAA,CAAA;sBAAzC,KAAK;uBAAC,mBAAmB;gBAItB,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,mBAAmB;gBAMC,WAAW,EAAA,CAAA;sBAA3C,KAAK;uBAAC,oBAAoB;gBAIvB,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,oBAAoB;gBAMM,kBAAkB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,0BAA0B;gBAI7B,sBAAsB,EAAA,CAAA;sBADzB,WAAW;uBAAC,2BAA2B;gBAYxC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;gBAa1B,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;gBAQ1B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MC7EtB,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,CAJb,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,aACZ,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAEvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHlB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA;;;MCCY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAJV,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACxB,YAAY,EAAE,mBAAmB,aACjC,mBAAmB,CAAA,EAAA,CAAA,CAAA;+GAEpB,gBAAgB,EAAA,OAAA,EAAA,CAHf,YAAY,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAGlC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;oBAC5C,OAAO,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA;;;MCAY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,CAJX,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACzB,YAAY,aACZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHhB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAClC,iBAAA;;;MCKY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,CAPxB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAEhB,YAAY,aAElB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YALlB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAKb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE;wBACL;AACH,qBAAA;AACJ,iBAAA;;;MCHY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAlB,kBAAkB,EAAA,YAAA,EAAA,CAJZ,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAE1B,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAEtB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA;;;MC4BY,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBApB1B,wBAAwB;YACxB,4BAA4B;YAC5B,8BAA8B;AAC9B,YAAA,+BAA+B,aAG/B,YAAY;YACZ,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;AACnB,YAAA,kBAAkB,aAGlB,wBAAwB;YACxB,4BAA4B;YAC5B,8BAA8B;YAC9B,+BAA+B,CAAA,EAAA,CAAA,CAAA;AAG1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAd1B,YAAY;YACZ,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FASb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAtBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,wBAAwB;wBACxB,4BAA4B;wBAC5B,8BAA8B;wBAC9B;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,wBAAwB;wBACxB,4BAA4B;wBAC5B,8BAA8B;wBAC9B;AACH;AACJ,iBAAA;;;MCtBY,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAA1B,0BAA0B,EAAA,YAAA,EAAA,CANtB,6BAA6B,EAAE,iCAAiC,aAE7E,YAAY,CAAA,EAAA,OAAA,EAAA,CAEF,6BAA6B,EAAE,iCAAiC,CAAA,EAAA,CAAA,CAAA;AAEjE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAJnC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIH,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,6BAA6B,EAAE,iCAAiC,CAAC;AAChF,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACC,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,iCAAiC;AAC7E,iBAAA;;;MCCY,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,CANhB,uBAAuB,EAAE,2BAA2B,aAEjE,YAAY,CAAA,EAAA,OAAA,EAAA,CAEF,uBAAuB,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAErD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAJ7B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIH,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;AACpE,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACC,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,2BAA2B;AACjE,iBAAA;;;MCNY,wBAAwB,CAAA;IAGjC,WAAA,CAAoB,WAAuB,EAAU,SAAoB,EAAA;QAArD,IAAA,CAAA,WAAW,GAAX,WAAW;QAAsB,IAAA,CAAA,SAAS,GAAT,SAAS;AAF1C,QAAA,IAAA,CAAA,SAAS,GAAoB,CAAC,CAAC;IAEyB;IAE5E,WAAW,GAAA;;AAEP,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,YAAA,EAAe,CAAC,CAAA,CAAE,CAAC;QAClF;;AAGA,QAAA,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK;cAC3C,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AAC7B,cAAE,IAAI,CAAC,SAAS;;QAGpB,IAAI,cAAc,IAAI,CAAC,IAAI,cAAc,IAAI,EAAE,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,YAAA,EAAe,cAAc,CAAA,CAAE,CAAC;QAC5F;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAA,aAAA,CAAe,CAAC;QAC5E;IACJ;8GAtBS,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE;AACf,iBAAA;uGAEuB,SAAS,EAAA,CAAA;sBAA5B,KAAK;uBAAC,WAAW;;;MCET,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,CAJf,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC7B,YAAY,aACZ,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHpB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,wBAAwB,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACtC,iBAAA;;;ACND;;;;;;;;;;;;;;;AAeG;MAIU,oBAAoB,CAAA;AAM7B,IAAA,WAAA,CACY,MAAsB,EACtB,QAAkB,EAClB,eAAiC,EAAA;QAFjC,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,eAAe,GAAf,eAAe;QARnB,IAAA,CAAA,gBAAgB,GAAuB,IAAI;QAC3C,IAAA,CAAA,WAAW,GAA6B,IAAI;QAC5C,IAAA,CAAA,QAAQ,GAAuB,IAAI;AAQvC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IACnE;AAEA;;;;;AAKG;IACK,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;AACzE,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACnE;IACJ;AAEA;;;;AAIG;IACK,sBAAsB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC/D,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAChC;IACJ;AAEA;;;;;;AAMG;IACK,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AAC9D,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC3D;IACJ;AAEA;;;;AAIG;IACK,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AACvD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACxB;IACJ;AAEA;;;;;;;;;;;;;AAaG;AACH,IAAA,IAAI,CAAI,SAAkB,EAAE,MAAA,GAAc,EAAE,EAAA;QACxC,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE;AAC5C,YAAA,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YACzC,eAAe,EAAE,IAAI,CAAC,QAAQ;AACjC,SAAA,CAAC;QAEF,MAAM,gBAAgB,GAAI,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;QAElE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC7C,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY;AAE/B,QAAA,OAAO,YAAY;IACvB;AAEA;;;;;;;AAOG;IACH,KAAK,GAAA;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AACjD,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,sBAAsB,EAAE;QACjC;IACJ;8GAnHS,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAET,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCRY,kBAAkB,CAAA;AAI7B,IAAA,WAAA,CAAoB,cAAoC,EAAA;QAApC,IAAA,CAAA,cAAc,GAAd,cAAc;AAH1B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAO;QACtC,IAAA,CAAA,WAAW,GAAQ,EAAE;IAE8B;AAE3D,IAAA,IAAI,CAA2B,SAAkB,EAAE,IAAA,GAAY,EAAE,EAAA;AAC/D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;;AAG9D,QAAA,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI;AAEjC,QAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE;YACpC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AACzD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AACrC,YAAA,CAAC,CAAC;QACJ;QAEA,OAAO;YACL,YAAY;AACZ,YAAA,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY;SAChD;IACH;AAEA,IAAA,KAAK,CAAC,MAAY,EAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;IAEA,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,WAAW;IACzB;8GAjCW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCiCY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBA1B1B,0BAA0B;YAC1B,2BAA2B;YAC3B,0BAA0B;YAC1B,2BAA2B;AAC3B,YAAA,oBAAoB,aAGpB,YAAY;YACZ,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;AACnB,YAAA,qBAAqB,aAGrB,0BAA0B;YAC1B,2BAA2B;YAC3B,0BAA0B;YAC1B,2BAA2B;YAC3B,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAOX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,SAAA,EALjB;YACT,kBAAkB;YAClB;AACD,SAAA,EAAA,OAAA,EAAA,CAjBC,YAAY;YACZ,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAcZ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA5B7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,2BAA2B;wBAC3B,0BAA0B;wBAC1B,2BAA2B;wBAC3B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,2BAA2B;wBAC3B,0BAA0B;wBAC1B,2BAA2B;wBAC3B;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,kBAAkB;wBAClB;AACD;AACF,iBAAA;;;MCtBY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAXV,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAE9B,YAAY;YACZ,qBAAqB;YACrB,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;AACnB,YAAA,mBAAmB,aAEb,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YATrB,YAAY;YACZ,qBAAqB;YACrB,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAId,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,qBAAqB;wBACrB,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;AACtB,qBAAA;oBACD,OAAO,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA;;;MCXY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,CAJb,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,aACZ,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAEvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHlB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,sBAAsB;AACnC,iBAAA;;;MCOY,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAxB,wBAAwB,EAAA,YAAA,EAAA,CAPpB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAExC,YAAY;AACZ,YAAA,mBAAmB,aAEX,2BAA2B,CAAA,EAAA,CAAA,CAAA;AAE1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YALjC,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAIV,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,2BAA2B,CAAC;AAC3C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,2BAA2B;AACtC,iBAAA;;;MCqBY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBArB5B,sBAAsB;YACtB,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;AAChC,YAAA,kCAAkC,aAGlC,YAAY;YACZ,kBAAkB;YAClB,iBAAiB;AACjB,YAAA,mBAAmB,aAGnB,sBAAsB;YACtB,4BAA4B;YAC5B,6BAA6B;YAC7B,gCAAgC;YAChC,kCAAkC;YAClC,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAd5B,YAAY;YACZ,kBAAkB;YAClB,iBAAiB;AACjB,YAAA,mBAAmB,EAQnB,iBAAiB,CAAA,EAAA,CAAA,CAAA;;2FAGR,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAvB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,sBAAsB;wBACtB,4BAA4B;wBAC5B,6BAA6B;wBAC7B,gCAAgC;wBAChC;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBACtB,4BAA4B;wBAC5B,6BAA6B;wBAC7B,gCAAgC;wBAChC,kCAAkC;wBAClC;AACC;AACJ,iBAAA;;;MCzBY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,CAJV,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACxB,YAAY,aACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHf,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA;;;ACDM,MAAM,iBAAiB,GAAsB;AAClD,IAAA,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9F,IAAA,QAAQ,EAAE;AACR,QAAA,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACtB,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AACtC,QAAA,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;AAC/B,QAAA,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU;AAC3B,KAAA;AACD,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,aAAa,EAAE,GAAG;AAClB,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,oBAAoB,EAAE,GAAG;AACzB,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,qBAAqB,EAAE,IAAI;AAC3B,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,oBAAoB,EAAE,KAAK;AAC3B,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,sBAAsB,EAAE,KAAK;AAC7B,IAAA,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAW;AACpC,IAAA,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC;IAC3B,UAAU,EAAE,IAAI,YAAY;;MAkBjB,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,CAbzB,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAG7B,YAAY,aAGZ,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAOpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EALhB;YACT,iBAAiB;AACjB,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB;AAC3D,SAAA,EAAA,OAAA,EAAA,CARC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAUH,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAf5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,iBAAiB;AACjB,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB;AAC3D;AACF,iBAAA;;;MCtCY,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,CAJf,wBAAwB,EAAE,oBAAoB,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACzE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CACrE,wBAAwB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;+GAE5G,qBAAqB,EAAA,OAAA,EAAA,CAHpB,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,EACC,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAE5G,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,wBAAwB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;oBACpF,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;oBAChF,OAAO,EAAE,CAAC,wBAAwB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACzH,iBAAA;;;MCJY,kCAAkC,CAAA;AAK7C,IAAA,WAAA,CACU,EAAgC,EAChC,QAAmB,EACnB,GAAsB,EACV,SAAoB,EAAA;QAHhC,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,GAAG,GAAH,GAAG;QACS,IAAA,CAAA,SAAS,GAAT,SAAS;AAPvB,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE;IAQ9B;IAEH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC;QAClH;QACA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;;AAG1C,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,CAAC,EAAO,KAAI;AACjB,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAAc;YAChC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,KAAK,MAAM;AAChG,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC;AAE1E,YAAA,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE;AACrD,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;gBACnC,aAAa;gBACb,aAAa;AACb,gBAAA,WAAW,EAAE,CAAC,aAAa,IAAI,CAAC,aAAa;AAC7C,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;AACxB,aAAA,CAAC;;YAGF,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa;AAC7D,QAAA,CAAC,CAAC,CACH,CAAC,SAAS,CAAC,MAAK;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC;AACpE,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;;QAGvB,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;YACvH,OAAO,CAAC,GAAG,CAAC,4DAA4D,EAAE,KAAK,CAAC,MAAM,CAAC;YACvF,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM;AAC3C,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;;AAEvB,gBAAA,MAAM,WAAW,GAAG,WAAW,KAAK,SAAS,GAAG,WAAW,GAAG,KAAK;AACnE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC;YAC5C;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;;AAG3B,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC,SAAS,CAAC,MAAK;AACrG,YAAA,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC;YACzE,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAGvB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;YAC9B,IAAI,CAAC,iBAAiB,EAAE;;AAGxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAK;gBACzC,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,CAAC,CAAC;AACF,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;AACtB,gBAAA,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,CAAC,UAAU;AAC7B,aAAA,CAAC;;AAED,YAAA,IAAY,CAAC,iBAAiB,GAAG,QAAQ;QAC5C;;AAGA,QAAA,MAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAC,SAAS,CAAC,MAAK;YACnH,IAAI,CAAC,2BAA2B,EAAE;AACpC,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC,SAAS,CAAC,MAAK;YAC3G,IAAI,CAAC,2BAA2B,EAAE;AACpC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;;QAG7B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC5C,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC9E,gBAAA,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,KAAK,CAAC;;AAGjE,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,uDAAuD,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;AAG5F,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,oBAAA,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE;AAC/B,wBAAA,KAAK,CAAC,KAAK,GAAG,WAAW;oBAC3B;;oBAGA,IAAI,CAAC,2BAA2B,EAAE;gBACpC;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;QAChC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;;AAGvB,QAAA,IAAK,IAAY,CAAC,iBAAiB,EAAE;AAClC,YAAA,IAAY,CAAC,iBAAiB,CAAC,UAAU,EAAE;QAC9C;;QAGA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;QAC1E;IACF;IAEQ,iBAAiB,CAAC,WAAmB,EAAE,WAAiB,EAAA;AAC9D,QAAA,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE;YAC3D,WAAW;YACX,WAAW;AACX,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;AAChB,SAAA,CAAC;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,KAAK,CAAC,KAAK,GAAG,WAAW,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;;AAG5D,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAE1D,QAAA,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;AAC/B,QAAA,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;;QAGhC,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,2BAA2B,EAAE;QACpC,CAAC,EAAE,CAAC,CAAC;QAEL,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,KAAK,CAAC,KAAK,CAAC;IACxE;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;;AAGhB,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1D,QAAA,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEtD,QAAA,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;AAC/B,QAAA,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;AAChC,QAAA,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;;QAG9B,IAAI,CAAC,2BAA2B,EAAE;AAElC,QAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;IAChD;IAGA,OAAO,GAAA;;AAEL,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;IACxB;IAGA,OAAO,GAAA;;;IAGP;AAGA,IAAA,OAAO,CAAC,CAAQ,EAAA;;AAEd,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;IAC9C;IAGA,MAAM,GAAA;;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAChC;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK;;QAGhC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;QACnD,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE;;YAEzD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC;AAC7D,YAAA,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;;gBAE1E;YACF;QACF;;AAGA,QAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;YAElE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAE5D,IAAI,UAAU,EAAE;;AAEd,gBAAA,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC;AAC/F,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC;;gBAGnC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;gBAG9C,IAAI,CAAC,2BAA2B,EAAE;YACpC;iBAAO;;AAEL,gBAAA,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC;AACxF,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAC7B;QACF;AAAO,aAAA,IAAI,YAAY,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;;AAE/C,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE;AAC7B,gBAAA,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC;AACxE,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAC7B;QACF;IACF;AAGA,IAAA,SAAS,CAAC,EAAiB,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;AAEjB,QAAA,QAAQ,EAAE,CAAC,GAAG;AACZ,YAAA,KAAK,WAAW;gBACd,EAAE,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;gBAC1B;AACF,YAAA,KAAK,SAAS;gBACZ,EAAE,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;gBAC9B;AACF,YAAA,KAAK,OAAO;gBACV,EAAE,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;;gBAEzB,UAAU,CAAC,MAAK;oBACd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACzC,oBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;wBACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;AACnD,wBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC;oBAC1C;AACF,gBAAA,CAAC,CAAC;gBACF;AACF,YAAA,KAAK,QAAQ;gBACX,EAAE,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvB;;IAEN;;;;;AAOA,IAAA,UAAU,CAAC,EAAc,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAAqB;;AAGvC,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC;QAEvE,IAAI,aAAa,EAAE;;YAEjB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,UAAU,EAAE;oBACnE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACzC,oBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;wBACrB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;AACnD,wBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC;oBAC1C;gBACF;YACF,CAAC,EAAE,EAAE,CAAC;QACR;IACF;IAEQ,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,WAAW;YAAE;AAEtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAEpD,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,qFAAqF,CAAC;YACnG;QACF;;QAGA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;;QAEtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW;AACjE,cAAE,IAAI,CAAC,KAAK,CAAC;cACX,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;QAC5C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,kCAAkC,CAAC;AAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;AAC3F,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC;;AAG7D,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,KAAiB,KAAI;YACpE,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;AAC7B,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,KAAoB,KAAI;AACzE,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAC7B;AACF,QAAA,CAAC,CAAC;;AAGF,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa;QAC1C,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC;QAC7D;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;QACxD;;QAGA,IAAI,CAAC,2BAA2B,EAAE;IACpC;IAEQ,2BAA2B,GAAA;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;QAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ;QAEjD,IAAI,YAAY,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC7D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC;QAC9D;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC;QAC7D;IACF;8GAlXW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;0BAUI;yCAR0B,KAAK,EAAA,CAAA;sBAAjC,KAAK;uBAAC,oBAAoB;gBAgL3B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;gBAOrB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;gBAOrB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAOjC,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM;gBAmDpB,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBAqCnC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MClR/B,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,CAV3B,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAGrB,YAAY,aAGZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAIZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAP3B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAOH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;MCCY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,CAT1B,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAGpB,YAAY,aAGZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAGX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAN1B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAMH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;MCcY,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBAlBjC,2BAA2B;AAC3B,YAAA,kCAAkC,aAGlC,YAAY;YACZ,kBAAkB;AAClB,YAAA,iBAAiB,aAGjB,2BAA2B;YAC3B,kCAAkC;AAClC,YAAA,kBAAkB;;AAOT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,SAAA,EALxB;;AAET,YAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,2BAA2B;AAC1E,SAAA,EAAA,OAAA,EAAA,CAZC,YAAY;YACZ,kBAAkB;YAClB,iBAAiB,EAKjB,kBAAkB;;;2FAOT,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBApBpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,2BAA2B;wBAC3B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,2BAA2B;wBAC3B,kCAAkC;AAClC,wBAAA,kBAAkB;AACnB,qBAAA;AACD,oBAAA,SAAS,EAAE;;AAET,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,2BAA2B;AAC1E;AACF,iBAAA;;;MClBY,4BAA4B,CAAA;AAIvC,IAAA,WAAA,CAAoB,EAA2B,EAAA;QAA3B,IAAA,CAAA,EAAE,GAAF,EAAE;AAFd,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE;IAEiB;IAElD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC;QACxG;;AAGA,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,CAAC,EAAO,KAAI;AACjB,YAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAAc;YAChC,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,KAAK,MAAM;AAClG,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,GAAG,MAAM,CAAC;AAE3E,YAAA,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE;AAC/C,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa;gBACrC,eAAe;gBACf,aAAa;AACb,gBAAA,WAAW,EAAE,CAAC,eAAe,IAAI,CAAC,aAAa;AAC/C,gBAAA,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;AACzB,aAAA,CAAC;;YAGF,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa;AAChE,QAAA,CAAC,CAAC,CACH,CAAC,SAAS,CAAC,MAAK;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC;AAC9D,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;;QAGvB,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;YAClH,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE,KAAK,CAAC,MAAM,CAAC;AACjF,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM;AAC9B,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC7B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;IACzB;AAEQ,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAClC,QAAA,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE;YACrD,KAAK;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;AAChB,SAAA,CAAC;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAiC;AACvD,QAAA,KAAK,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK;;AAGxC,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1D,QAAA,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEtD,QAAA,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;AAC/B,QAAA,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;AAChC,QAAA,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;QAE9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,KAAK,CAAC,KAAK,CAAC;IAClE;IAGA,OAAO,GAAA;;AAEL,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;IACzB;IAGA,OAAO,GAAA;;;IAGP;AAGA,IAAA,SAAS,CAAC,EAAiB,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;AAElB,QAAA,QAAQ,EAAE,CAAC,GAAG;AACZ,YAAA,KAAK,WAAW;gBACd,EAAE,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;gBAC3B;AACF,YAAA,KAAK,SAAS;gBACZ,EAAE,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBAC/B;AACF,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,GAAG;gBACN,EAAE,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;;gBAE1B,UAAU,CAAC,MAAK;oBACd,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;oBAC1C,IAAI,GAAG,KAAK,SAAS;AAAE,wBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;AACpD,gBAAA,CAAC,CAAC;gBACF;AACF,YAAA,KAAK,QAAQ;gBACX,EAAE,CAAC,cAAc,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBACxB;;IAEN;;;;;AAOA,IAAA,UAAU,CAAC,EAAc,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAAqB;;AAGvC,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC;QAExE,IAAI,aAAa,EAAE;;YAEjB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,UAAU,EAAE;oBACrE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;oBAC1C,IAAI,GAAG,KAAK,SAAS;AAAE,wBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;gBACpD;YACF,CAAC,EAAE,EAAE,CAAC;QACR;IACF;8GAxIW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;+EAEwB,MAAM,EAAA,CAAA;sBAA5B,KAAK;uBAAC,cAAc;gBAyErB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;gBAOrB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;gBAOrB,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBAmCnC,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MC1G/B,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAb3B,qBAAqB;AACrB,YAAA,4BAA4B,aAG5B,YAAY;YACZ,kBAAkB;AAClB,YAAA,iBAAiB,aAGjB,qBAAqB;YACrB,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAGnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAT3B,YAAY;YACZ,kBAAkB;YAClB,iBAAiB,CAAA,EAAA,CAAA,CAAA;;2FAOR,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;wBACrB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB;AACD;AACF,iBAAA;;;MCNY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,CATvB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAGrB,YAAY,aAGZ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAGhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YANvB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAMP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH,qBAAA;AACJ,iBAAA;;;MCAY,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAPzB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAEjB,YAAY,EAAE,kBAAkB,aAEtC,uBAAuB,CAAA,EAAA,CAAA,CAAA;+GAGlB,oBAAoB,EAAA,OAAA,EAAA,CALnB,YAAY,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAKjC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,uBAAuB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;AAC3C,oBAAA,OAAO,EAAE;wBACL,uBAAuB;AAC1B,qBAAA;AACJ,iBAAA;;;MCCY,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,CAPd,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAElC,YAAY;AACZ,YAAA,gBAAgB,aAEV,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAExB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YALzB,YAAY;YACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAIX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,gBAAgB;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACrC,iBAAA;;;MCJY,gCAAgC,CAAA;AAP7C,IAAA,WAAA,GAAA;QAQa,IAAA,CAAA,OAAO,GAAW,EAAE;AA6ChC,IAAA;IA3CU,YAAY,GAAA;AACf,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC;QAC7E,IAAI,GAAG,EAAE;AACL,YAAA,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YACzC,MAAM,gBAAgB,GAAG,UAAU,CAAM,EAAA;AACrC,gBAAA,GAAG,GAAG;;oBAEF,IAAI,EAAE,GAAG,CAAC,UAAU;oBACpB,GAAG,EAAE,GAAG,CAAC,SAAS;;oBAElB,CAAC,EAAE,CAAC,CAAC,OAAO;oBACZ,CAAC,EAAE,CAAC,CAAC,OAAO;iBACf;AACD,gBAAA,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,qCAAqC,CAAC;AAChE,gBAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC;AACxD,gBAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC;AACxD,YAAA,CAAC;YAED,MAAM,gBAAgB,GAAG,UAAU,CAAM,EAAA;;gBAErC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;gBAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;;gBAE5B,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE;gBAC5B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE;AAClC,YAAA,CAAC;AAED,YAAA,MAAM,cAAc,GAAG,YAAA;AACnB,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,gBAAgB,CAAC;AAC3D,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC;AACvD,gBAAA,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,oCAAoC,CAAC;AACnE,YAAA,CAAC;AACD,YAAA,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,CAAC;QACvD;IACJ;AAEA,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,GAAG,CAAA,wBAAA,EAA2B,IAAI,CAAC,OAAO,CAAA,CAAE,GAAG,EAAE;AAExF,QAAA,MAAM,aAAa,GAAG,CAAA,EAAG,kBAAkB,EAAE;AAC7C,QAAA,OAAO,aAAa;IACxB;8GA5CS,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,sHCT7C,oEAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDMa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAP5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,cAGzB,KAAK,EAAA,QAAA,EAAA,oEAAA,EAAA;8BAIR,OAAO,EAAA,CAAA;sBAAf;;;MEEQ,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBALjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC7B,YAAY,EAAE,gBAAgB,aAC9B,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,aAFrB,CAAC,mBAAmB,CAAC,EAAA,OAAA,EAAA,CAFtB,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAI7B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;oBACzC,OAAO,EAAE,CAAC,wBAAwB,CAAC;oBACnC,SAAS,EAAE,CAAC,mBAAmB;AAChC,iBAAA;;;MCIY,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iBANnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAEvC,YAAY,EAAC,WAAW,aAEhB,0BAA0B,CAAA,EAAA,CAAA,CAAA;+GAEzB,uBAAuB,EAAA,OAAA,EAAA,CAJhC,YAAY,EAAC,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAIf,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,EAAE;AACP,wBAAA,YAAY,EAAC;AACd,qBAAA;oBACD,OAAO,EAAE,CAAC,0BAA0B;AACrC,iBAAA;;;MCDY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,CANZ,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEhC,YAAY,aAEJ,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJzB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIH,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,mBAAmB;AAC9B,iBAAA;;;MCAY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,CANf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAEnC,YAAY,aAEJ,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAJ5B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB;AACjC,iBAAA;;;MCWY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAZzB,mBAAmB;AACnB,YAAA,sBAAsB,aAGtB,YAAY;AACZ,YAAA,gBAAgB,aAGhB,mBAAmB;YACnB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YARzB,YAAY;YACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAOP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAd5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB;AACD;AACF,iBAAA;;;MCJY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAVzB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGnB,YAAY;AACZ,YAAA,WAAW,aAGX,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAPzB,YAAY;YACZ,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAMF,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;MCEY,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,CAXjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAErC,YAAY;YACZ,mBAAmB;AACnB,YAAA,gBAAgB,aAGhB,wBAAwB;YACxB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAT9B,YAAY;YACZ,mBAAmB;AACnB,YAAA,gBAAgB,EAIhB,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAGP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB;AACD;AACF,iBAAA;;;MCJY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAPZ,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEhC,YAAY;AACZ,YAAA,mBAAmB,aAEX,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YALzB,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAIV,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,mBAAmB;AAC9B,iBAAA;;;MCLY,iBAAiB,CAAA;AAG5B,IAAA,WAAA,CACE,OAA6C,EAAA;AAE7C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;IAGA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;IAC1B;8GAZW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE;AACb,iBAAA;+FAWC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;MCTV,iBAAiB,CAAA;AAG5B,IAAA,WAAA,CACE,OAA6C,EAAA;AAE7C,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;IAGA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;IAC1B;8GAZW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE;AACb,iBAAA;+FAWC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;MCeV,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBApB5B,gCAAgC;YAChC,sBAAsB;YACtB,6BAA6B;AAC7B,YAAA,aAAa,aAGb,YAAY;YACZ,iBAAiB;AACjB,YAAA,iBAAiB,aAGjB,gCAAgC;YAChC,sBAAsB;YACtB,6BAA6B;YAC7B,aAAa;YACb,iBAAiB;YACjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAIR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAd5B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAcH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,gCAAgC;wBAChC,sBAAsB;wBACtB,6BAA6B;wBAC7B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,gCAAgC;wBAChC,sBAAsB;wBACtB,6BAA6B;wBAC7B,aAAa;wBACb,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;AACZ,iBAAA;;;MCvBY,yBAAyB,CAAA;AAEpC,IAAA,IAA6C,eAAe,GAAA;AAC1D,QAAA,OAAO,IAAI;IACb;IAEA,WAAA,CACU,UAAmC,EACnC,aAAkC,EAAA;QADlC,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,aAAa,GAAb,aAAa;IACpB;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACjE;8GAbW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAC;AACZ,iBAAA;8GAG8C,eAAe,EAAA,CAAA;sBAA3D,WAAW;uBAAC,0BAA0B;;;MCiB5B,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAhB7B,uBAAuB;YACvB,mBAAmB;YACnB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAGzB,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,uBAAuB;YACvB,mBAAmB;YACnB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAMhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,SAAA,EAJpB;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CATC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAWH,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,uBAAuB;wBACvB,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD;AACF,iBAAA;;;MCNY,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAtB,sBAAsB,EAAA,YAAA,EAAA,CATlB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAEpC,YAAY;YACZ,qBAAqB;YACrB,WAAW;AACX,YAAA,gBAAgB,aAER,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAE1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAP7B,YAAY;YACZ,qBAAqB;YACrB,WAAW;YACX,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAIT,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,yBAAyB,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,qBAAqB;wBACrB,WAAW;wBACX;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,yBAAyB;AACtC,iBAAA;;;MCAY,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAtB,sBAAsB,EAAA,YAAA,EAAA,CAV3B,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAGzB,YAAY;AACZ,YAAA,mBAAmB,aAGnB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAGpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAP3B,YAAY;YACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAMd,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;MCFY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAPtB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEd,YAAY,EAAE,kBAAkB,aAEtC,oBAAoB,CAAA,EAAA,CAAA,CAAA;+GAGf,iBAAiB,EAAA,OAAA,EAAA,CALhB,YAAY,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAKjC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,oBAAoB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;AAC3C,oBAAA,OAAO,EAAE;wBACL,oBAAoB;AACvB,qBAAA;AACJ,iBAAA;;;MCAY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,CANd,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAElC,YAAY,aAEJ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAJ3B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,qBAAqB;AAChC,iBAAA;;;ACHD;;;AAGG;MAIU,wBAAwB,CAAA;AAUnC,IAAA,WAAA,CAAyC,UAAkB,EAAA;QAAlB,IAAA,CAAA,UAAU,GAAV,UAAU;QAT3C,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAkB;AAC/D,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;AAIM,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,EAAmB;QAGrD,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEnD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;QACvC;IACF;AAEA;;;;AAIG;AACH,IAAA,OAAO,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;YAEnB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC3C;;QAGA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAE9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,IAAI,CAC/C,SAAS,CAAC,YAAY,CAAC,EACvB,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EACpC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAC9B,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CACrE,CACF;IACH;AAEA;;;;AAIG;AACH,IAAA,SAAS,CAAC,UAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;IACzC;AAEA;;;;AAIG;AACH,IAAA,QAAQ,CAAC,UAAkB,EAAA;QACzB,OAAO;AACL,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACnC;SACD;IACH;AAEA;;;;AAIG;AACH,IAAA,eAAe,CAAC,WAAqB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB;AAC3C,YAAA,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAClD,YAAA,OAAO,EAAE,CAAC,QAAQ,CAAC;QACrB;QAEA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,IAAI,CAC/C,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAC7C,GAAG,CAAC,MAAK;AACP,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB;AACzC,YAAA,WAAW,CAAC,OAAO,CAAC,EAAE,IAAG;AACvB,gBAAA,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAC1C,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,MAAM;QACf,CAAC,CAAC,EACF,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAI;AAClC,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,KAAK;YACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;AAC/B,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK;AAAE,oBAAA,OAAO,KAAK;YAC3C;AACA,YAAA,OAAO,IAAI;QACb,CAAC,CAAC,CACH;IACH;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;;QAGrB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ;AACjD,aAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC;AAClB;aACA,SAAS,CAAC,MAAK;;AAEd,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;;AAG/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC1B,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,UAAU,EAAE;AACb,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,eAAe,CAAC,UAAkB,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,KAAK;;QAGjC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAE;QACjD;AAEA,QAAA,IAAI;;YAEF,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;;YAGvD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,wDAAwD,CAAC;YAE7F,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAA,CAAE,CAAC;gBAClD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AAC9C,gBAAA,OAAO,KAAK;YACd;YAEA,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,KAAK;YAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;AACxC,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU;AACrC,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW;YAEvC,IAAI,MAAM,GAAG,KAAK;YAClB,QAAQ,SAAS;AACf,gBAAA,KAAK,WAAW;AACd,oBAAA,MAAM,GAAG,WAAW,IAAI,YAAY;oBACpC;AACF,gBAAA,KAAK,WAAW;AACd,oBAAA,MAAM,GAAG,WAAW,IAAI,YAAY;oBACpC;AACF,gBAAA,KAAK,YAAY;AACf,oBAAA,MAAM,GAAG,YAAY,IAAI,YAAY;oBACrC;AACF,gBAAA,KAAK,YAAY;AACf,oBAAA,MAAM,GAAG,YAAY,IAAI,YAAY;oBACrC;AACF,gBAAA;oBACE,MAAM,GAAG,KAAK;;;YAIlB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC;AAC/C,YAAA,OAAO,MAAM;QACf;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;YACrD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AAC9C,YAAA,OAAO,KAAK;QACd;IACF;AAEA;;AAEG;AACH,IAAA,OAAO,gBAAgB,CAAC,KAAa,EAAE,YAA2B,KAAK,EAAA;AACrE,QAAA,MAAM,MAAM,GAAG,SAAS,KAAK,KAAK,GAAG,WAAW,GAAG,WAAW;AAC9D,QAAA,OAAO,CAAA,CAAA,EAAI,MAAM,CAAA,EAAA,EAAK,KAAK,KAAK;IAClC;AAEA;;AAEG;AACa,IAAA,SAAA,IAAA,CAAA,WAAW,GAAG;AAC5B,QAAA,EAAE,EAAE,oBAAoB;AACxB,QAAA,EAAE,EAAE,oBAAoB;AACxB,QAAA,EAAE,EAAE,qBAAqB;AACzB,QAAA,EAAE,EAAE,qBAAqB;AACzB,QAAA,EAAE,EAAE,qBAAqB;AACzB,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,MAAM,EAAE,4CAA4C;AACpD,QAAA,OAAO,EAAE;AACD,KATiB,CAShB;AApMA,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAUf,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAVpB,wBAAwB,EAAA,UAAA,EAFvB,MAAM;;;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;oBACV,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAWc,MAAM;2BAAC,WAAW;;;MCApB,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAjB3B,qBAAqB;YACrB,8BAA8B;AAC9B,YAAA,4BAA4B,aAG5B,YAAY;AACZ,YAAA,kBAAkB,aAMlB,qBAAqB;YACrB,8BAA8B;YAC9B,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAGnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,SAAA,EATlB;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CALC,YAAY;YACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAWT,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;wBACrB,8BAA8B;wBAC9B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,8BAA8B;wBAC9B;AACD;AACF,iBAAA;;;ACnBD;MAgBa,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAZ1B,wBAAwB;AACxB,YAAA,mBAAmB,aAGnB,gBAAgB;AAChB,YAAA,kBAAkB,aAGlB,wBAAwB;YACxB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAR1B,gBAAgB;YAChB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAOb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,wBAAwB;wBACxB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,gBAAgB;wBAChB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,wBAAwB;wBACxB;AACH,qBAAA;AACJ,iBAAA;;;MCRY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBANd,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAElC,YAAY,EAAC,WAAW,aAEhB,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAEpB,kBAAkB,EAAA,OAAA,EAAA,CAJ3B,YAAY,EAAC,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAIf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE;AACP,wBAAA,YAAY,EAAC;AACd,qBAAA;oBACD,OAAO,EAAE,CAAC,qBAAqB;AAChC,iBAAA;;;MCKY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBATrB,mBAAmB;AACnB,YAAA,uBAAuB,aAEjB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,aAEzD,mBAAmB;YACnB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,OAAA,EAAA,CANf,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAMpD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,mBAAmB;wBACnB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC9D,oBAAA,OAAO,EAAE;wBACL,mBAAmB;wBACnB;AACH,qBAAA;AACJ,iBAAA;;;MCkHY,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAtB,sBAAsB,EAAA,YAAA,EAAA,CArFhB,gCAAgC,CAAA,EAAA,OAAA,EAAA,CAE3C,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,wBAAwB;YACxB,kBAAkB;YAClB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,wBAAwB;YACxB,gBAAgB;YAChB,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,oBAAoB;YACpB,gBAAgB;YAChB,0BAA0B;YAC1B,oBAAoB;YACpB,sBAAsB;YACtB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,kBAAkB;YAClB,uBAAuB;YACvB,kBAAkB;YAClB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,oBAAoB;YACpB,sBAAsB;YACtB,kBAAkB;YAClB,qBAAqB;YACrB,gBAAgB;AAChB,YAAA,gBAAgB,aAEV,qBAAqB;YAC1B,wBAAwB;YACxB,kBAAkB;YAClB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,wBAAwB;YACxB,gBAAgB;YAChB,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,oBAAoB;YACpB,gBAAgB;YAChB,0BAA0B;YAC1B,oBAAoB;YACpB,sBAAsB;YACtB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,kBAAkB;YAClB,uBAAuB;YACvB,kBAAkB;YAClB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,oBAAoB;YACrB,sBAAsB;YACtB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAnF3B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,qBAAqB;YACrB,wBAAwB;YACxB,kBAAkB;YAClB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,wBAAwB;YACxB,gBAAgB;YAChB,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,oBAAoB;YACpB,gBAAgB;YAChB,0BAA0B;YAC1B,oBAAoB;YACpB,sBAAsB;YACtB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,kBAAkB;YAClB,uBAAuB;YACvB,kBAAkB;YAClB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,oBAAoB;YACpB,sBAAsB;YACtB,kBAAkB;YAClB,qBAAqB;YACrB,gBAAgB;AAChB,YAAA,gBAAgB,EAEV,qBAAqB;YAC1B,wBAAwB;YACxB,kBAAkB;YAClB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,wBAAwB;YACxB,gBAAgB;YAChB,oBAAoB;YACpB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,oBAAoB;YACpB,gBAAgB;YAChB,0BAA0B;YAC1B,oBAAoB;YACpB,sBAAsB;YACtB,mBAAmB;YACnB,iBAAiB;YACjB,qBAAqB;YACrB,kBAAkB;YAClB,uBAAuB;YACvB,kBAAkB;YAClB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,oBAAoB;YACrB,sBAAsB;YACtB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAGX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAtFlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,gCAAgC,CAAC;AAChD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,wBAAwB;wBACxB,kBAAkB;wBAClB,iBAAiB;wBACjB,kBAAkB;wBAClB,kBAAkB;wBAClB,wBAAwB;wBACxB,gBAAgB;wBAChB,oBAAoB;wBACpB,iBAAiB;wBACjB,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB,oBAAoB;wBACpB,gBAAgB;wBAChB,0BAA0B;wBAC1B,oBAAoB;wBACpB,sBAAsB;wBACtB,mBAAmB;wBACnB,iBAAiB;wBACjB,qBAAqB;wBACrB,kBAAkB;wBAClB,uBAAuB;wBACvB,kBAAkB;wBAClB,gBAAgB;wBAChB,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB,oBAAoB;wBACpB,sBAAsB;wBACtB,kBAAkB;wBAClB,qBAAqB;wBACrB,gBAAgB;wBAChB;AACH,qBAAA;oBACD,OAAO,EAAE,CAAC,qBAAqB;wBAC1B,wBAAwB;wBACxB,kBAAkB;wBAClB,iBAAiB;wBACjB,kBAAkB;wBAClB,kBAAkB;wBAClB,wBAAwB;wBACxB,gBAAgB;wBAChB,oBAAoB;wBACpB,iBAAiB;wBACjB,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB,oBAAoB;wBACpB,gBAAgB;wBAChB,0BAA0B;wBAC1B,oBAAoB;wBACpB,sBAAsB;wBACtB,mBAAmB;wBACnB,iBAAiB;wBACjB,qBAAqB;wBACrB,kBAAkB;wBAClB,uBAAuB;wBACvB,kBAAkB;wBAClB,gBAAgB;wBAChB,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,qBAAqB;wBACrB,gBAAgB;wBAChB,oBAAoB;wBACrB,sBAAsB;wBACtB,kBAAkB;wBAClB,kBAAkB;wBAClB,qBAAqB;wBACrB,gBAAgB;wBAChB;AACH,qBAAA;AACJ,iBAAA;;;MCxHY,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,CANd,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAElC,YAAY,aAEN,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAExB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAJzB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAIP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACL;AACH,qBAAA;oBACD,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACrC,iBAAA;;;ACLD;;;;;;;;AAQG;MAUU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,YAPzC,YAAY,CAAA,EAAA,CAAA,CAAA;AAOH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,SAAA,EALhC;;YAET;AACD,SAAA,EAAA,OAAA,EAAA,CALC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAOH,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAT5C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;;wBAET;AACD;AACF,iBAAA;;;MCRY,cAAc,CAAA;AAL3B,IAAA,WAAA,GAAA;AAMqB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAmB,kBAAkB,CAAC;AAE7D,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEjD,IAAA,CAAA,oBAAoB,GAAa,EAAE;QAEnC,IAAA,CAAA,IAAI,GAAG,EAAE;AA8GpB,IAAA;IA5GU,SAAS,CACZ,KAAsB,EACtB,IAAY,EACZ,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAA,GAAgC,EAA+B,EAAA;QAEpF,IAAI,cAAc,GAAoB,KAAK;AAE3C,QAAA,MAAM,aAAa,GAAG;AAClB,YAAA,cAAc,EAAE,IAAI;YACpB,GAAG,IAAI,CAAC,cAAc;AACtB,YAAA,GAAG,MAAM;AACT,YAAA,QAAQ,EAAE;AACN,gBAAA,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ;AAC7B,gBAAA,GAAG,QAAQ;AACd,aAAA;SACJ;AAED,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAI;AAChD,YAAA,IAAI,CAAC,YAAoB,CAAC,GAAG,CAAC,GAAG,GAAG;AACzC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,IAAI,CACtC,CAAC,CAAS,EAAE,CAAS,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAChD;AACD,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAA,CAAE,CAAC;AAClC,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA,EAAG,cAAc,CAAA,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC;YACtE;iBAAO;AACH,gBAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;AAC9B,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA,EAAG,cAAc,CAAA,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC;YACtE;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAA,GAAA,0CAAoC,EAAE;AACnD,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAC9B,GAAG,cAAc,CAAA,CAAE,EACnB,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAChD;QACL;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,CAAA,WAAA,gCAA0B,EAAE;AAC3C,YAAA,IAAI,MAAM,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;YAC1D;AACA,YAAA,IAAI,MAAM,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB;YAClE;AACA,YAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAChD;AAEA,YAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;YACvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE;AAE1E,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;gBACjD,cAAc;AACV,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,KAAK;AAChC,0BAAG,cAAyB,CAAC,OAAO,CAC9B,mBAAmB,EACnB,IAAI,CAAC,YAAY,CAAC,aAAa;0BAEnC,cAAc;YAC5B;AAEA,YAAA,IACI,IAAI,CAAC,YAAY,CAAC,QAAQ;gBAC1B,cAAc;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,KAAK,KAAK,EACnD;gBACE,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,cAAwB,CAAC;YACtF;AAEA,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,KAAA,GAAA,6BAA2B;AAC1D,gBAAA,cAAc,GAAI,cAAyB,CAAC,OAAO,8DAGlD;YACL;AAEA,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI;QAC1C;QAEA,IAAI,cAAc,KAAK,IAAI,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;YAClE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;QAChD;AAEA,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA,EAAG,cAAc,CAAA,CAAE,EAAE,IAAI,CAAC;IACjE;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;QAC1B,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAoB;gBACpD,MAAM,IAAI,GACN,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM;oBAC3C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM;AAC9C,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,oBAAA,OAAO,IAAI;gBACf;qBAAO;AACH,oBAAA,IAAI,CAAC,IAAI;wBACL,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;;gBAEvE;AACJ,YAAA,CAAC,CAAC;QACN;IACJ;8GApHS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;MCPY,oBAAoB,CAAA;AAE/B,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAqB;8GAFrC,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;gFAEgB,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM;;;ACNf;;AAEG;AAEH;AACA;AACA;AA8JA;AACA;AACA;;ACtKA;;AAEG;;;;"}