{"version":3,"file":"index.mjs","sources":["../../src/configs/tailwind-config.ts","../../node_modules/classnames/index.js","../../src/components/icon/assets/index.tsx","../../src/components/icon/icon.tsx","../../src/components/shared/icon-set/icon-set.tsx","../../src/utils/create-synthetic-event.ts","../../src/utils/debounce.ts","../../src/utils/get-date-string.ts","../../src/utils/normalizeText.ts","../../src/utils/string-to-boolean.ts","../../src/utils/expand-ref.ts","../../src/utils/async-trigger.ts","../../src/hooks/use-window-size.tsx","../../src/hooks/use-breakpoints-to-number.ts","../../src/components/accordion/accordion.tsx","../../src/components/accordion-group/accordion-group.tsx","../../src/components/anchor/anchor.tsx","../../src/components/tooltip/tooltip.tsx","../../src/components/button/button.tsx","../../src/components/avatar/interactive-avatar.tsx","../../src/components/avatar/non-interactive-avatar.tsx","../../src/components/avatar/avatar.tsx","../../src/components/dropdown/internals/internal-dropdown-context.tsx","../../src/components/dropdown/internals/internal-dropdown-filter-section.tsx","../../src/components/dropdown/internals/internal-dropdown-no-results.tsx","../../src/components/dropdown/internals/internal-dropdown-option.tsx","../../src/components/dropdown/internals/internal-dropdown-section.tsx","../../src/components/dropdown/internals/internal-dropdown-select-all-section.tsx","../../src/components/dropdown/internals/internal-dropdown.tsx","../../src/components/dropdown/internals/use-dropdown-state.tsx","../../src/components/dropdown/dropdown.tsx","../../src/components/dropdown/dropdown-section.tsx","../../src/components/dropdown/dropdown-option.tsx","../../src/components/avatar-group/visible-count-avatar-group.tsx","../../src/components/avatar-group/avatar-group.tsx","../../src/components/back-to-top/back-to-top.tsx","../../src/components/breadcrumb/desktop/breadcrumb-desktop.tsx","../../src/components/breadcrumb/mobile/breadcrumb-mobile.tsx","../../src/components/breadcrumb/breadcrumb.tsx","../../src/components/toggle-group/toggle-group.tsx","../../src/components/button-group/button-group.tsx","../../src/components/pill/pill.tsx","../../src/components/cards/shared/use-blocked-link.tsx","../../src/components/cards/card-article/card-article.tsx","../../src/components/cards/card-collection/card-collection.tsx","../../src/components/cards/card-emphasize/card-emphasize.tsx","../../src/components/link-wrapper/link-wrapper.tsx","../../src/components/cards/card-error/card-error.tsx","../../src/components/shared/bookmark-icon/bookmark-icon.tsx","../../src/components/cards/card-expandable/card-expandable-style.ts","../../src/components/cards/card-expandable/card-accordion/card-accordion.tsx","../../src/components/cards/card-expandable/card-expandable.tsx","../../src/components/cards/shared/use-blocked-link-v2.tsx","../../src/components/cards/card-frame/card-frame.tsx","../../src/components/cards/card-full-image/card-full-image.tsx","../../src/components/cards/card-hero-helper/card-hero-helper.tsx","../../src/components/cards/card-hero-index/card-hero-index.tsx","../../src/components/cards/card-hero-sitemap/card-hero-sitemap.tsx","../../src/components/cards/card-highlight/shared/inner-highlight-card.tsx","../../src/components/cards/card-highlight/card-highlight.tsx","../../src/components/cards/card-highlight-newsletter/card-highlight-newsletter.tsx","../../src/components/cards/card-highlight-single/card-highlight-single.tsx","../../src/components/cards/card-links/card-links.tsx","../../src/components/list/item.tsx","../../src/components/list/list.tsx","../../src/components/cards/card-no-results/card-no-results.tsx","../../src/components/cards/card-single/card-single.tsx","../../src/components/cards/card-topic/card-topic.tsx","../../src/components/cards/card-action/card-action-variants.ts","../../src/components/cards/card-action/card-action.tsx","../../src/components/cards/card-illustrative/card-illustrative-variants.ts","../../src/components/cards/card-illustrative/utils/image-utils.ts","../../src/components/cards/card-illustrative/card-illustrative.tsx","../../src/components/cards/card-general/variants.ts","../../src/components/cards/card-general/card-general.tsx","../../src/components/cards/status-card/status-card.tsx","../../src/components/shared/feedback/feedback.tsx","../../src/components/shared/helper-text/helper-text.tsx","../../src/components/checkbox/checkbox.tsx","../../src/components/cards/card-notification/card-notification.tsx","../../src/components/checkbox-group/checkbox-group.tsx","../../src/components/dialog/dialog.tsx","../../src/components/drawer/drawer.tsx","../../src/components/ratings/rating-buttons/rating-buttons.tsx","../../src/components/ratings/rating-icons/rating-icons.tsx","../../src/components/feedback/feedback.tsx","../../src/components/footer/shared-components/footer-brand-badge.tsx","../../src/components/footer/shared-components/footer-caption-partners.tsx","../../src/components/footer/shared-components/footer-social-useful-copyright.tsx","../../src/components/footer/shared-components/footer-main.tsx","../../src/components/footer/federated-footer/federated-footer-card.tsx","../../src/components/footer/federated-footer/federated-footer.tsx","../../src/components/footer/public-footer/public-footer-contacts.tsx","../../src/components/footer/public-footer/public-footer-highlight-card.tsx","../../src/components/footer/public-footer/public-footer-highlight-card-links.tsx","../../src/components/footer/public-footer/public-footer-highlight.tsx","../../src/components/footer/public-footer/public-footer-main-plus-card-links.tsx","../../src/components/footer/public-footer/public-footer.tsx","../../src/components/glossary-letters/glossary-letters.tsx","../../src/components/header/internals/context/data-context/header-data-context.tsx","../../src/components/header/general-bar/areas/area.tsx","../../src/components/header/general-bar/areas/areas.tsx","../../src/components/header/general-bar/general-bar.tsx","../../src/components/header/internals/context/data-context/utils/areas-utils.ts","../../src/components/header/general-bar/authenticated/authenticated-footer-action.tsx","../../src/components/header/general-bar/authenticated/authenticated-header.tsx","../../src/components/header/general-bar/authenticated/authenticated.tsx","../../src/components/header/general-bar/authenticated/authenticated-body.tsx","../../src/components/header/general-bar/authenticated/authenticated-body-link.tsx","../../src/components/header/general-bar/authenticated/authenticated-footer.tsx","../../src/components/header/internals/context/data-context/utils/authenticated-utils.ts","../../src/components/header/brand/brand.tsx","../../src/components/header/brand/institutional.tsx","../../src/components/header/brand/logo.tsx","../../src/components/header/internals/context/data-context/utils/brand-utils.ts","../../src/components/header/internals/context/data-context/utils/general-utils.ts","../../src/components/header/general-bar/languages/language.tsx","../../src/components/header/general-bar/languages/languages.tsx","../../src/components/header/internals/context/data-context/utils/languages-utils.ts","../../src/components/header/navigation-bar/navigation-bar.tsx","../../src/components/header/navigation-bar/navigation-freestyle.tsx","../../src/components/header/navigation-bar/navigation-link.tsx","../../src/components/header/navigation-bar/navigation-root.tsx","../../src/components/header/internals/context/data-context/utils/navigation-utils.ts","../../src/components/header/general-bar/search/custom-search.tsx","../../src/components/header/general-bar/search/default-search.tsx","../../src/components/header/general-bar/search/search.tsx","../../src/components/header/general-bar/search/search-input-container.tsx","../../src/components/header/general-bar/search/search-related-link.tsx","../../src/components/header/general-bar/search/search-related-links.tsx","../../src/components/header/general-bar/search/search-related-links-title.tsx","../../src/components/header/general-bar/search/search-title.tsx","../../src/components/input-search-bar/equalizer/equalizer.tsx","../../src/components/input-search-bar/input-search-bar.tsx","../../src/components/header/internals/context/data-context/utils/search-utils.ts","../../src/components/header/general-bar/unauthenticated/unauthenticated.tsx","../../src/components/header/general-bar/unauthenticated/unauthenticated-link.tsx","../../src/components/header/internals/context/data-context/utils/unauthenticated-utils.ts","../../src/components/header/internals/context/data-context/header-data-controller.tsx","../../src/components/header/internals/context/menu-context/menu-type.enum.ts","../../src/components/header/internals/context/external-context/header-external-controller.tsx","../../src/components/header/internals/context/menu-context/header-menu-context.tsx","../../src/components/header/internals/shared/hooks/use-scrolling.tsx","../../src/components/header/internals/context/menu-context/header-menu-controller.tsx","../../src/components/header/internals/shared/custom-header-link/custom-header-link.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-body.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-footer.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-header.tsx","../../src/components/header/internals/general-bar/authenticated/Internal-authenticated-drawer.tsx","../../src/components/header/internals/shared/panel-menu/panel-menu.tsx","../../src/components/header/navigation-bar/related-navigation-link.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger.tsx","../../src/components/header/internals/shared/institutional/internal-institutional.tsx","../../src/components/header/internals/general-bar/areas/internal-area.tsx","../../src/components/header/internals/general-bar/areas/internal-areas.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated.tsx","../../src/components/header/internals/general-bar/languages/internal-language.tsx","../../src/components/header/internals/general-bar/languages/internal-languages-layout.tsx","../../src/components/header/internals/general-bar/languages/internal-languages.tsx","../../src/components/header/internals/general-bar/search/internal-custom-search-layout.tsx","../../src/components/header/internals/general-bar/search/internal-search-layout.tsx","../../src/components/header/internals/general-bar/search/internal-search.tsx","../../src/components/header/internals/general-bar/unauthenticated/internal-unauthenticated-layout.tsx","../../src/components/header/internals/general-bar/unauthenticated/internal-unauthenticated.tsx","../../src/components/header/internals/general-bar/internal-general-bar.tsx","../../src/components/header/internals/navigation-bar/logo/internal-logo.tsx","../../src/components/header/internals/navigation-bar/navigation-list/internal-navigation-link-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-list/internal-navigation-list.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-context.tsx","../../src/components/header/internals/shared/modal-menu/modal-menu.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-modal-content.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-modal-navbar.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-navigation-modal-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-navigation-modal.tsx","../../src/components/header/internals/navigation-bar/internal-navigation-bar.tsx","../../src/components/header/internals/internal-header.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-dialog.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-provider.tsx","../../src/components/header/header.tsx","../../src/components/input-date/contexts/date-picker-state.context.tsx","../../src/components/input-date/utils/is-same-day.ts","../../src/components/input-date/utils/get-closest-available-day.ts","../../src/components/input-date/utils/start-end-dates-comparators.ts","../../src/components/input-date/contexts/use-date-picker-state-context.tsx","../../src/components/input-date/utils/is-date-in-same-month.ts","../../src/components/input-date/utils/is-day-on-array.ts","../../src/components/input-date/utils/parse-input-date.ts","../../src/components/input-date/date-picker-dropdown-body/date-picker-dropdown-body.tsx","../../src/components/input-date/date-picker-dropdown-footer/date-picker-dropdown-footer.tsx","../../src/components/input-date/date-picker-dropdown-header/date-picker-dropdown-header.tsx","../../src/components/input-date/date-picker-dropdown.tsx","../../src/components/input-date/utils/parse-date.ts","../../src/components/input-date/date-text/date-text.tsx","../../src/components/input-date/input-date.tsx","../../src/components/input-email-bar/input-email-bar.tsx","../../src/components/input-number/input-number.tsx","../../src/components/input-password/input-password.tsx","../../src/components/input-phone/resources/config.ts","../../src/components/input-phone/input-phone.tsx","../../src/components/input-range/input-range.tsx","../../src/components/input-search/input-search.tsx","../../src/components/input-select/input-select.tsx","../../src/components/input-text/input-text.tsx","../../src/components/input-textarea/input-textarea.tsx","../../src/components/input-time/utils/format-time.ts","../../src/components/input-time/contexts/time-input-state.context.tsx","../../src/components/input-time/time-text/time-text.tsx","../../src/components/toggle/toggle.tsx","../../src/components/input-time/time-picker-dropdown-body/time-picker-dropdown-body.tsx","../../src/components/input-time/time-picker-dropdown-footer/time-picker-dropdown-footer.tsx","../../src/components/input-time/time-picker-dropdown.tsx","../../src/components/input-time/input-time.tsx","../../src/components/loader-dialog/loader-dialog.tsx","../../src/components/loader-dialog/loader-dialog-context.tsx","../../src/components/loader-dialog/loader-provider.tsx","../../src/components/modal-dialog/modal-context.tsx","../../src/components/modal-dialog/modal-dialog.tsx","../../src/components/modal-dialog/modal-provider.tsx","../../src/components/panel-switcher/helper.tsx","../../src/components/panel-switcher/desktop/panel-switcher-desktop.tsx","../../src/components/panel-switcher/mobile/panel-switcher-mobile.tsx","../../src/components/panel-switcher/panel-switcher-container.tsx","../../src/components/tabs/tab-body.tsx","../../src/components/tabs/tab-header.tsx","../../src/components/tabs/tab.tsx","../../src/components/tabs/desktop/tabs-desktop.tsx","../../src/components/tabs/mobile/tabs-mobile.tsx","../../src/components/tabs/tabs.tsx","../../src/components/panel-switcher/panel-switcher.tsx","../../src/components/popup-dialog/popup-context.tsx","../../src/components/popup-dialog/popup-dialog.tsx","../../src/components/popup-dialog/popup-provider.tsx","../../src/components/progress-bar/progress-bar.tsx","../../src/components/progress-bar-group/progress-bar-group.tsx","../../src/components/radio/radio.tsx","../../src/components/quiz/quiz-option/quiz-option.tsx","../../src/components/quiz/quiz-options/quiz-options.tsx","../../src/components/quiz/quiz-item-summary/quiz-item-summary.tsx","../../src/components/radio-button-group/radio-button-group.tsx","../../src/components/scribbles/assets/index.tsx","../../src/components/scribbles/scribbles.tsx","../../src/components/search-pagination/search-page.tsx","../../src/components/search-pagination/search-pagination-number-overlay.tsx","../../src/components/search-pagination/search-pagination.tsx","../../src/components/sidebar/utils/openOnCurrentItem.ts","../../src/components/sidebar/sidebar-item-navigation-mobile/sidebar-item-navigation-mobile.tsx","../../src/components/sidebar/sidebar.tsx","../../src/components/sidebar/utils/setIconsExpandCollapsed.ts","../../src/components/sidebar/utils/setInitialSidebarItem.ts","../../src/components/sidebar/utils/toggleSidebarItem.ts","../../src/components/sidebar/utils/toggleSidebarItemChildren.ts","../../src/components/sidebar/sidebar-filter/sidebar-item-filter.tsx","../../src/components/sidebar/utils/getParentTreeItem.ts","../../src/components/sidebar/utils/navigationSidebarItemHandler.ts","../../src/components/sidebar/utils/toggleExpandAllSiblingItems.ts","../../src/components/sidebar/utils/keyboardSidebarItemHandlers.ts","../../src/components/sidebar/sidebar-navigation/sidebar-item-navigation.tsx","../../src/components/sidebar/sidebar-item.tsx","../../src/components/skip-navigation/skip-navigation-multiple.tsx","../../src/components/skip-navigation/skip-navigation-single.tsx","../../src/components/skip-navigation/skip-navigation.tsx","../../src/components/step-list/step-list.tsx","../../src/components/stepper/step.tsx","../../src/components/stepper/stepper.tsx","../../src/components/switch/switch.tsx","../../src/components/table/table-body.tsx","../../src/components/table/table-caption.tsx","../../src/components/table/table-cell.tsx","../../src/components/table/table-footer.tsx","../../src/components/table/table-header.tsx","../../src/components/table/table-header-cell.tsx","../../src/components/table/table-row.tsx","../../src/components/table/table-pagination.tsx","../../src/components/table/table.tsx","../../src/components/tag/tag.tsx","../../src/components/timelines/shared/timeline-event/timeline-event.tsx","../../src/components/timelines/shared/timeline-event-vertical/timeline-event-vertical.tsx","../../src/components/timelines/timeline-vertical/timeline-vertical.tsx","../../src/components/timelines/timeline-horizontal/timeline-horizontal.tsx","../../src/components/toasts/toast-context.tsx","../../src/components/toasts/toast.tsx","../../src/components/toasts/use-toast.ts","../../src/components/toasts/toast-provider.tsx","../../src/components/uploader/shared/file-list.tsx","../../src/components/uploader/shared/use-file-upload.tsx","../../src/components/uploader/button-uploader/button-uploader.tsx","../../src/components/uploader/drag-and-drop-uploader/drag-and-drop-uploader.tsx","../../src/components/footer-v2/helpers.ts","../../src/components/footer-v2/footer.tsx","../../src/components/footer-v2/logo-section/logo-section-container/logo-section-container.tsx","../../src/components/footer-v2/logo-section/logo-section-freestyle/logo-section-freestyle.tsx","../../src/components/footer-v2/logo-section/logo-section-main-logo/logo-section-main-logo.tsx","../../src/components/footer-v2/logo-section/logo-section-accessibility-logo/logo-section-accessibility-logo.tsx","../../src/components/footer-v2/financing-section/financing-section-container.tsx","../../src/components/footer-v2/links-section/links-section-container/links-section-container.tsx","../../src/components/footer-v2/links-section/links-section-social-links/links-section-social-links.tsx","../../src/components/footer-v2/links-section/links-section-related-links/links-section-related-links.tsx","../../src/components/footer-v2/links-section/links-section-related-links/links-section-related-links-copyright/links-section-related-links-copyright.tsx","../../src/components/footer-v2/links-section/links-section-social-links/links-section-social-links-label/links-section-social-links-label.tsx","../../src/components/footer-v2/shared/footer-disclaimer/footer-disclaimer.tsx","../../src/components/footer-v2/shared/footer-generic-logo/footer-generic-logo.tsx","../../src/components/footer-v2/shared/footer-link/footer-link.tsx"],"sourcesContent":["import type { Config } from 'tailwindcss';\r\nimport { PluginAPI } from 'tailwindcss/types/config';\r\n\r\nconst AgoraTailwindConfig = {\r\n  content: [],\r\n  theme: {\r\n    extend: {\r\n      borderWidth: {\r\n        DEFAULT: '1px',\r\n        0: '0',\r\n        1: '1px',\r\n        2: '2px',\r\n        3: '3px',\r\n        4: '4px'\r\n      },\r\n      content: {\r\n        empty: \"''\"\r\n      },\r\n      gridTemplateRows: {\r\n        7: 'repeat(7, minmax(0, 1fr))',\r\n        8: 'repeat(8, minmax(0, 1fr))',\r\n        9: 'repeat(9, minmax(0, 1fr))',\r\n        10: 'repeat(10, minmax(0, 1fr))'\r\n      },\r\n      gridTemplateColumns: {\r\n        '1-auto': 'auto',\r\n        '2-auto': 'auto auto',\r\n        '3-auto': 'auto auto auto',\r\n        '4-auto': 'auto auto auto auto',\r\n        '5-auto': 'auto auto auto auto auto',\r\n        '6-auto': 'auto auto auto auto auto auto',\r\n        '7-auto': 'auto auto auto auto auto auto auto',\r\n        '8-auto': 'auto auto auto auto auto auto auto auto',\r\n        '9-auto': 'auto auto auto auto auto auto auto auto auto',\r\n        '10-auto': 'auto auto auto auto auto auto auto auto auto auto',\r\n        '11-auto': 'auto auto auto auto auto auto auto auto auto auto auto',\r\n        '12-auto': 'auto auto auto auto auto auto auto auto auto auto auto auto'\r\n      },\r\n      opacity: {\r\n        16: '0.16',\r\n        32: '0.32'\r\n      },\r\n      minWidth: {\r\n        initial: 'initial'\r\n      },\r\n      maxWidth: {\r\n        initial: 'initial'\r\n      },\r\n      minHeight: {\r\n        initial: 'initial'\r\n      },\r\n      maxHeight: {\r\n        initial: 'initial'\r\n      },\r\n      zIndex: {\r\n        dropdown: '1000',\r\n        backdrop: '2000',\r\n        sticky: '3000',\r\n        fixed: '4000',\r\n        drawer: '5000',\r\n        dialog: '6000',\r\n        toast: '7000',\r\n        tooltip: '8000'\r\n      }\r\n    },\r\n    screens: {\r\n      xs: '360px',\r\n      md: '768px',\r\n      xl: '1280px'\r\n    },\r\n    fontFamily: {\r\n      sans: ['Noto Sans', 'sans-serif']\r\n    },\r\n    fontSize: {\r\n      'base': '16px',\r\n      // Typography / S\r\n      's-regular': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '400' }],\r\n      's-medium': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '500' }],\r\n      's-semibold': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '600' }],\r\n      's-bold': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / M\r\n      'm-light': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'm-regular': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'm-medium': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'm-semibold': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'm-bold': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / L\r\n      'l-light': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'l-regular': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'l-medium': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'l-semibold': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'l-bold': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / XL\r\n      'xl-light': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'xl-regular': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'xl-medium': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'xl-semibold': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'xl-bold': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / 2XL\r\n      '2xl-light': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '300' }],\r\n      '2xl-regular': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '400' }],\r\n      '2xl-medium': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '500' }],\r\n      '2xl-semibold': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '600' }],\r\n      '2xl-bold': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / 3XL\r\n      '3xl-light': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '300' }],\r\n      '3xl-regular': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '400' }],\r\n      '3xl-medium': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '500' }],\r\n      '3xl-semibold': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '600' }],\r\n      '3xl-bold': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '700' }]\r\n    },\r\n    borderRadius: {\r\n      none: '0px',\r\n      4: '4px',\r\n      8: '8px',\r\n      16: '16px',\r\n      24: '24px',\r\n      32: '32px',\r\n      full: '100%'\r\n    },\r\n    colors: {\r\n      transparent: 'transparent',\r\n      white: '#FFFFFF',\r\n      black: '#000000',\r\n      focus: '#F408FC',\r\n      backdrop: 'rgba(43, 54, 60, 0.96)',\r\n      mask: {\r\n        'image': 'rgba(43, 54, 60, 0.8)',\r\n        'neutral-900': '#2B363CCC',\r\n        'primary-900': '#021C51CC',\r\n        'secondary-900': '#0D4C75CC'\r\n      },\r\n      neutral: {\r\n        50: '#F7F8FA',\r\n        100: '#F1F3F8',\r\n        200: '#E1E4EA',\r\n        300: '#CDD2DC',\r\n        400: '#BAC0CC',\r\n        500: '#9CA6B8',\r\n        600: '#8893AA',\r\n        700: '#64718B',\r\n        800: '#475164',\r\n        900: '#2B363C'\r\n      },\r\n      primary: {\r\n        50: '#FAFCFF',\r\n        100: '#F2F6FF',\r\n        200: '#E5EEFF',\r\n        300: '#BBD1FD',\r\n        400: '#5F93FC',\r\n        500: '#1A65FA',\r\n        600: '#034AD8',\r\n        700: '#0338A2',\r\n        800: '#002B82',\r\n        900: '#021C51'\r\n      },\r\n      secondary: {\r\n        50: '#F5FBFF',\r\n        100: '#EBF6FF',\r\n        200: '#E3F4FF',\r\n        300: '#CCEAFF',\r\n        400: '#A0D8FE',\r\n        500: '#1CA3FC',\r\n        600: '#1993E3',\r\n        700: '#1682CA',\r\n        800: '#12669E',\r\n        900: '#0D4C75'\r\n      },\r\n      informative: {\r\n        50: '#E5F6FF',\r\n        100: '#E5F6FF',\r\n        200: '#A5DEFF',\r\n        300: '#77CEFF',\r\n        400: '#49BCFF',\r\n        500: '#0079BF',\r\n        600: '#00598C',\r\n        700: '#0B486B',\r\n        800: '#083752',\r\n        900: '#00121C'\r\n      },\r\n      success: {\r\n        50: '#E5FFF6',\r\n        100: '#C2F2E2',\r\n        200: '#7ACCB1',\r\n        300: '#36B289',\r\n        400: '#1F9970',\r\n        500: '#008558',\r\n        600: '#00724C',\r\n        700: '#005539',\r\n        800: '#013926',\r\n        900: '#001C13'\r\n      },\r\n      warning: {\r\n        50: '#FFF9E5',\r\n        100: '#FFF2CC',\r\n        200: '#FFE699',\r\n        300: '#FFE699',\r\n        400: '#FFD966',\r\n        500: '#FBCB3C',\r\n        600: '#FBBB3C',\r\n        700: '#F2A222',\r\n        800: '#B06112',\r\n        900: '#80460D'\r\n      },\r\n      danger: {\r\n        50: '#FEF1F2',\r\n        100: '#FEE1E3',\r\n        200: '#FEC8CC',\r\n        300: '#FCA6AD',\r\n        400: '#F8727D',\r\n        500: '#DE2D3B',\r\n        600: '#D12332',\r\n        700: '#C41826',\r\n        800: '#B20917',\r\n        900: '#86131D'\r\n      }\r\n    },\r\n    spacing: {\r\n      0: '0px',\r\n      8: '8px',\r\n      16: '16px',\r\n      24: '24px',\r\n      32: '32px',\r\n      40: '40px',\r\n      48: '48px',\r\n      56: '56px',\r\n      64: '64px',\r\n      72: '72px',\r\n      80: '80px',\r\n      88: '88px',\r\n      96: '96px',\r\n      104: '104px',\r\n      112: '112px',\r\n      120: '120px',\r\n      128: '128px',\r\n      256: '256px',\r\n      '1/4': '25%',\r\n      '1/2': '50%',\r\n      'full': '100%',\r\n      'initial': 'initial'\r\n    },\r\n    boxShadow: {\r\n      'none': '0 0 #0000',\r\n      'top-lower': '0px -4px 4px 0px rgba(0, 0, 0, 0.16)',\r\n      'top-low': '0px -8px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'top-medium': '0px -16px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'top-high': '0px -16px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'top-higher': '0px -16px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'center-lower': '0px 0px 4px 0px rgba(0, 0, 0, 0.32)',\r\n      'center-low': '0px 0px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'center-medium': '0px 0px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'center-high': '0px 0px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'center-higher': '0px 0px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'bottom-lower': '0px 4px 4px 0px rgba(0, 0, 0, 0.16)',\r\n      'bottom-low': '0px 8px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'bottom-medium': '0px 16px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'bottom-high': '0px 16px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'bottom-higher': '0px 16px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'inner': '0px 4px 4px 0px rgba(0, 0, 0, 0.32) inset'\r\n    },\r\n    transitionDuration: {\r\n      DEFAULT: '200ms'\r\n    },\r\n    container: {\r\n      padding: {\r\n        xs: '32px',\r\n        md: '64px',\r\n        xl: '0px'\r\n      }\r\n    }\r\n  },\r\n  plugins: [\r\n    // Override to class .container max-screen resolution\r\n    ({ addComponents }: PluginAPI) => {\r\n      addComponents({\r\n        '.container': {\r\n          maxWidth: '1216px'\r\n        }\r\n      });\r\n    },\r\n\r\n    // Function to use variable colors inside css\r\n    // Ex: var(--color-primary-100)\r\n    function ({ addBase, theme }: PluginAPI) {\r\n      interface ColorObject {\r\n        [key: string]: string;\r\n      }\r\n\r\n      function extractColorVars(colorObj: ColorObject, colorGroup = ''): ColorObject {\r\n        return Object.keys(colorObj).reduce((vars, colorKey) => {\r\n          const value = colorObj[colorKey];\r\n\r\n          if (typeof value === 'string') {\r\n            return {\r\n              ...vars,\r\n              [`--color${colorGroup}-${colorKey}`]: value\r\n            } as ColorObject;\r\n          }\r\n\r\n          const extractedColorVar = extractColorVars(value, `-${colorKey}`);\r\n\r\n          return { ...vars, ...extractedColorVar } as ColorObject;\r\n        }, {});\r\n      }\r\n\r\n      addBase({\r\n        ':root, :host, ::backdrop': extractColorVars(theme('colors'))\r\n      });\r\n    }\r\n  ],\r\n  safelist: [\r\n    {\r\n      //pattern to be able to dynamically build stories in which we change the DOM\r\n      pattern: /(border|bg|fill|text|stroke|gap)-[^/]+$/,\r\n      variants: ['hover', 'focus', 'xs', 'md', 'xl']\r\n    }\r\n  ]\r\n} satisfies Config;\r\n\r\nexport { AgoraTailwindConfig };\r\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { ComponentType, lazy, LazyExoticComponent } from 'react';\nimport { SVGIconProps } from '@/models';\n\nexport const iconList: Record<string, LazyExoticComponent<ComponentType<SVGIconProps>>> = {\n  //  Business & Payment\n  'agora-line-buildings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-buildings')),\n  'agora-solid-buildings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-buildings')),\n  'agora-line-money-taxes': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-money-taxes')),\n  'agora-solid-money-taxes': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-money-taxes')),\n  'agora-line-award': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-award')),\n  'agora-solid-award': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-award')),\n  'agora-line-calculator': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-calculator')),\n  'agora-solid-calculator': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-calculator')),\n  'agora-line-credit-card': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-credit-card')),\n  'agora-solid-credit-card': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-credit-card')),\n  'agora-line-ticket': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-ticket')),\n  'agora-solid-ticket': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-ticket')),\n  'agora-line-wallet': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-wallet')),\n  'agora-solid-wallet': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-wallet')),\n  'agora-line-tag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-tag')),\n  'agora-solid-tag': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-tag')),\n  //  Communication\n  'agora-line-thumbs-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-thumbs-up')),\n  'agora-line-thumbs-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-thumbs-down')),\n  'agora-solid-thumbs-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-thumbs-up')),\n  'agora-solid-thumbs-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-thumbs-down')),\n  'agora-line-bell': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bell')),\n  'agora-solid-bell': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bell')),\n  'agora-line-help-support': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-help-support')),\n  'agora-solid-help-support': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-help-support')),\n  'agora-line-chat': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chat')),\n  'agora-solid-chat': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chat')),\n  'agora-line-mail': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mail')),\n  'agora-solid-mail': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mail')),\n  'agora-line-mail-open': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mail-open')),\n  'agora-solid-mail-open': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mail-open')),\n  'agora-line-at-sign': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-at-sign')),\n  'agora-solid-at-sign': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-at-sign')),\n  //  Common Actions\n  'agora-line-home': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-home')),\n  'agora-solid-home': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-home')),\n  'agora-line-star': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-star')),\n  'agora-solid-star': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-star')),\n  'agora-line-log-in': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-log-in')),\n  'agora-solid-log-in': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-log-in')),\n  'agora-line-log-out': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-log-out')),\n  'agora-solid-log-out': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-log-out')),\n  'agora-line-search': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-search')),\n  'agora-solid-search': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-search')),\n  'agora-line-menu': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-menu')),\n  'agora-solid-menu': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-menu')),\n  'agora-line-health': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-health')),\n  'agora-solid-health': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-health')),\n  'agora-line-external-link': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-external-link')),\n  'agora-solid-external-link': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-external-link')),\n  'agora-line-check-all': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check-all')),\n  'agora-solid-check-all': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check-all')),\n  'agora-line-more-horizontal': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-more-horizontal')),\n  'agora-solid-more-horizontal': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-more-horizontal')),\n  'agora-line-more-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-more-vertical')),\n  'agora-solid-more-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-more-vertical')),\n  'agora-line-refresh-ccw': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-refresh-ccw')),\n  'agora-solid-refresh-ccw': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-refresh-ccw')),\n  'agora-line-dashboard': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-dashboard')),\n  'agora-solid-dashboard': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-dashboard')),\n  'agora-line-layers-menu': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-layers-menu')),\n  'agora-solid-layers-menu': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-layers-menu')),\n  //  Environment\n  'agora-line-tree': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-tree')),\n  'agora-solid-tree': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-tree')),\n  //  File\n  'agora-line-folder': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-folder')),\n  'agora-solid-folder': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-folder')),\n  'agora-line-file': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-file')),\n  'agora-solid-file': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-file')),\n  'agora-line-document': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-document')),\n  'agora-solid-document': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-document')),\n  'agora-line-book-open': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-book-open')),\n  'agora-solid-book-open': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-book-open')),\n  'agora-line-package': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-package')),\n  'agora-solid-package': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-package')),\n  'agora-line-file-share': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-file-share')),\n  'agora-solid-file-share': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-file-share')),\n  //  Formatting\n  'agora-line-filter': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-filter')),\n  'agora-solid-filter': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-filter')),\n  'agora-line-edit': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-edit')),\n  'agora-solid-edit': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-edit')),\n  'agora-line-plus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plus-circle')),\n  'agora-solid-plus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plus-circle')),\n  'agora-line-plus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plus')),\n  'agora-solid-plus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plus')),\n  'agora-line-minus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-minus-circle')),\n  'agora-solid-minus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-minus-circle')),\n  'agora-line-minus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-minus')),\n  'agora-solid-minus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-minus')),\n  'agora-line-upload': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-upload')),\n  'agora-solid-upload': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-upload')),\n  'agora-line-download': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-download')),\n  'agora-solid-download': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-download')),\n  'agora-line-paperclip': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-paperclip')),\n  'agora-solid-paperclip': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-paperclip')),\n  'agora-line-list': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-list')),\n  'agora-solid-list': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-list')),\n  'agora-line-settings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-settings')),\n  'agora-solid-settings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-settings')),\n  'agora-line-bullet': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bullet')),\n  'agora-solid-bullet': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bullet')),\n  'agora-line-sort-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-vertical')),\n  'agora-solid-sort-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-vertical')),\n  'agora-line-sort-generic-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-generic-down')),\n  'agora-solid-sort-generic-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-generic-down')),\n  'agora-line-sort-generic-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-generic-up')),\n  'agora-solid-sort-generic-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-generic-up')),\n  'agora-line-sort-alpha-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-alpha-down')),\n  'agora-solid-sort-alpha-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-alpha-down')),\n  'agora-line-sort-alpha-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-alpha-up')),\n  'agora-solid-sort-alpha-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-alpha-up')),\n  'agora-line-trash': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-trash')),\n  'agora-solid-trash': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-trash')),\n  'agora-line-print': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-print')),\n  'agora-solid-print': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-print')),\n  'agora-line-delete': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-delete')),\n  'agora-solid-delete': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-delete')),\n  'agora-line-copy': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-copy')),\n  'agora-solid-copy': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-copy')),\n  //  Food & Drinks\n  'agora-line-coffee': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-coffee')),\n  'agora-solid-coffee': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-coffee')),\n  //  Hardware\n  'agora-line-hardware-settings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-hardware-settings')),\n  'agora-solid-hardware-settings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-hardware-settings')),\n  'agora-line-wifi': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-wifi')),\n  'agora-solid-wifi': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-wifi')),\n  //  Maps & Travel\n  'agora-line-plane': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plane')),\n  'agora-solid-plane': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plane')),\n  'agora-line-driving': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-driving')),\n  'agora-solid-driving': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-driving')),\n  'agora-line-map': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-map')),\n  'agora-solid-map': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-map')),\n  'agora-line-map-pin': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-map-pin')),\n  'agora-solid-map-pin': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-map-pin')),\n  'agora-line-target': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-target')),\n  'agora-solid-target': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-target')),\n  'agora-line-briefcase': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-briefcase')),\n  'agora-solid-briefcase': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-briefcase')),\n  'agora-line-flag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-flag')),\n  'agora-solid-flag': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-flag')),\n  //  Media\n  'agora-line-video-on': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-video-on')),\n  'agora-solid-video-on': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-video-on')),\n  'agora-line-video-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-video-off')),\n  'agora-solid-video-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-video-off')),\n  'agora-line-mic-on': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mic-on')),\n  'agora-solid-mic-on': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mic-on')),\n  'agora-line-mic-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mic-off')),\n  'agora-solid-mic-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mic-off')),\n  'agora-line-movie': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-movie')),\n  'agora-solid-movie': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-movie')),\n  'agora-line-camera': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-camera')),\n  'agora-solid-camera': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-camera')),\n  'agora-line-monitor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-monitor')),\n  'agora-solid-monitor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-monitor')),\n  'agora-line-airplay': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-airplay')),\n  'agora-solid-airplay': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-airplay')),\n  'agora-line-mega-phone': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mega-phone')),\n  'agora-solid-mega-phone': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mega-phone')),\n  'agora-line-volume-max': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-max')),\n  'agora-solid-volume-max': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-max')),\n  'agora-line-volume-min': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-min')),\n  'agora-solid-volume-min': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-min')),\n  'agora-line-volume-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-off')),\n  'agora-solid-volume-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-off')),\n  'agora-line-volume-mute': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-mute')),\n  'agora-solid-volume-mute': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-mute')),\n  'agora-line-music': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-music')),\n  'agora-solid-music': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-music')),\n  'agora-line-globe': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-globe')),\n  'agora-solid-globe': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-globe')),\n  'agora-line-smartphone': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-smartphone')),\n  'agora-solid-smartphone': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-smartphone')),\n  //  Navigation\n  'agora-line-arrow-down-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down-anchor')),\n  'agora-solid-arrow-down-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down-anchor')),\n  'agora-line-arrow-up-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up-anchor')),\n  'agora-solid-arrow-up-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up-anchor')),\n  'agora-line-arrow-right-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right-anchor')),\n  'agora-solid-arrow-right-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right-anchor')),\n  'agora-line-arrow-left-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left-anchor')),\n  'agora-solid-arrow-left-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left-anchor')),\n  'agora-line-arrow-down-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down-circle')),\n  'agora-solid-arrow-down-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down-circle')),\n  'agora-line-arrow-up-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up-circle')),\n  'agora-solid-arrow-up-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up-circle')),\n  'agora-line-arrow-right-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right-circle')),\n  'agora-solid-arrow-right-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right-circle')),\n  'agora-line-arrow-left-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left-circle')),\n  'agora-solid-arrow-left-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left-circle')),\n  'agora-line-arrow-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up')),\n  'agora-solid-arrow-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up')),\n  'agora-line-arrow-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down')),\n  'agora-solid-arrow-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down')),\n  'agora-line-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right')),\n  'agora-solid-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right')),\n  'agora-line-arrow-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left')),\n  'agora-solid-arrow-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left')),\n  'agora-line-chevron-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-down')),\n  'agora-solid-chevron-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-down')),\n  'agora-line-chevron-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-up')),\n  'agora-solid-chevron-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-up')),\n  'agora-line-chevron-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-right')),\n  'agora-solid-chevron-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-right')),\n  'agora-line-chevron-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-left')),\n  'agora-solid-chevron-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-left')),\n  'agora-line-chevrons-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-down')),\n  'agora-solid-chevrons-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-down')),\n  'agora-line-chevrons-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-up')),\n  'agora-solid-chevrons-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-up')),\n  'agora-line-chevrons-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-left')),\n  'agora-solid-chevrons-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-left')),\n  'agora-line-chevrons-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-right')),\n  'agora-solid-chevrons-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-right')),\n  //  Privacy & Security\n  'agora-line-shield': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-shield')),\n  'agora-solid-shield': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-shield')),\n  'agora-line-unlock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-unlock')),\n  'agora-solid-unlock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-unlock')),\n  'agora-line-lock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-lock')),\n  'agora-solid-lock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-lock')),\n  'agora-line-eye': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-eye')),\n  'agora-solid-eye': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-eye')),\n  'agora-line-eye-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-eye-off')),\n  'agora-solid-eye-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-eye-off')),\n  // Public institutions\n  'agora-line-court': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-court')),\n  'agora-solid-court': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-court')),\n  'agora-line-social-security': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-social-security')),\n  'agora-solid-social-security': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-social-security')),\n  //  Social\n  'agora-line-twitter-x': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-twitter-x')),\n  'agora-solid-twitter-x': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-twitter-x')),\n  'agora-line-twitter': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-twitter')),\n  'agora-solid-twitter': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-twitter')),\n  'agora-line-instagram': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-instagram')),\n  'agora-solid-instagram': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-instagram')),\n  'agora-line-facebook': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-facebook')),\n  'agora-solid-facebook': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-facebook')),\n  'agora-line-youtube': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-youtube')),\n  'agora-solid-youtube': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-youtube')),\n  'agora-line-linkedin': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-linkedin')),\n  'agora-solid-linkedin': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-linkedin')),\n  'agora-line-share': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-share')),\n  'agora-solid-share': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-share')),\n  'agora-line-bookmark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bookmark')),\n  'agora-solid-bookmark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bookmark')),\n  //  Status\n  'agora-line-x-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-x-circle')),\n  'agora-solid-x-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-x-circle')),\n  'agora-line-x': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-x')),\n  'agora-solid-x': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-x')),\n  'agora-line-check-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check-circle')),\n  'agora-solid-check-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check-circle')),\n  'agora-line-check': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check')),\n  'agora-solid-check': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check')),\n  'agora-line-question-mark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-question-mark')),\n  'agora-solid-question-mark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-question-mark')),\n  'agora-line-alert-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-alert-circle')),\n  'agora-solid-alert-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-alert-circle')),\n  'agora-line-info-mark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-info-mark')),\n  'agora-solid-info-mark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-info-mark')),\n  'agora-line-alert-triangle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-alert-triangle')),\n  'agora-solid-alert-triangle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-alert-triangle')),\n  'agora-line-loader': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-loader')),\n  'agora-solid-loader': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-loader')),\n  'agora-line-smile-sad': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-smile-sad')),\n  'agora-solid-smile-sad': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-smile-sad')),\n  //  Transportation\n  'agora-line-bus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bus')),\n  'agora-solid-bus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bus')),\n  'agora-line-truck': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-truck')),\n  'agora-solid-truck': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-truck')),\n  //  Time\n  'agora-line-calendar': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-calendar')),\n  'agora-solid-calendar': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-calendar')),\n  'agora-line-clock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-clock')),\n  'agora-solid-clock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-clock')),\n  //  User\n  'agora-line-user-group': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-user-group')),\n  'agora-solid-user-group': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-user-group')),\n  'agora-line-user': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-user')),\n  'agora-solid-user': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-user')),\n  //  Others\n  'agora-line-bookmark-card': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bookmark-card')),\n  'agora-solid-bookmark-card': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bookmark-card')),\n  'agora-drag-dots': lazy<ComponentType<SVGIconProps>>(() => import('./other/drag-dots')),\n  //Language\n  'agora-line-lgp': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-lgp')),\n  'agora-solid-lgp': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-lgp')),\n  // Default icon - Should not be listable\n  'no-icon': lazy<ComponentType<SVGIconProps>>(() => import('./other/agora')),\n  'no-icon-line': lazy<ComponentType<SVGIconProps>>(() => import('./other/agora-line'))\n};\n\nexport const allIcons = Object.keys(iconList).filter((c) => c !== 'no-icon' && c !== 'no-icon-line');\n\nexport type IconName = (typeof allIcons)[number];\n\nexport const isBundledIcon = (name: string) => {\n  return !!allIcons.find((i) => i === name);\n};\n","import React, { ComponentProps, ComponentType, FC, HTMLProps, LazyExoticComponent, memo, Suspense, SVGProps } from 'react';\n\nimport classNames from 'classnames';\n\nimport { SVGIconProps } from '@/models';\n\nimport { iconList, IconName, isBundledIcon } from './assets/index';\n\nimport './icon.css';\n\nconst iconsCache: Record<IconName, LazyExoticComponent<ComponentType<SVGIconProps>>> = {};\n\nconst loadIcon = (name: IconName): LazyExoticComponent<ComponentType<SVGIconProps>> => {\n  const cachedIcon = iconsCache[name];\n\n  if (cachedIcon) {\n    return cachedIcon;\n  }\n\n  const lazyComponent = iconList[name];\n\n  iconsCache[name] = lazyComponent;\n\n  return lazyComponent;\n};\n\n/**\n * Allowed icon dimensions.\n */\nexport type IconDimensions = 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl';\n\ntype BasicIconProps = SVGProps<SVGSVGElement> & HTMLProps<HTMLImageElement>;\n\nexport interface IconProps extends BasicIconProps {\n  /**\n   * Sets the icon dimension.\n   */\n  dimensions?: IconDimensions;\n  /**\n   * Icon name to use. Can be an external image url.\n   */\n  name?: IconName;\n  /**\n   * Callback to run when image is loaded.\n   */\n  onIconLoad?: () => void;\n  /**\n   * Callback to run when image fails to load.\n   */\n  onIconError?: () => void;\n}\n\nconst InternalIcon: FC<IconProps> = ({ dimensions = 'm', name = 'no-icon', onIconLoad, onIconError, ...props }) => {\n  const applyFillColor = !props.className?.match('fill-') && name !== 'no-icon-line';\n\n  const classes = classNames(\n    'icon',\n    {\n      [`icon-${dimensions?.toLowerCase()}`]: dimensions,\n      'fill-[var(--color-primary-600)]': applyFillColor\n    },\n    props.className\n  );\n\n  const onLoad = () => {\n    onIconLoad?.();\n  };\n\n  const onError = () => {\n    onIconError?.();\n  };\n\n  const shouldRenderImage = name !== 'no-icon' && name !== 'no-icon-line' && !isBundledIcon(name);\n\n  //  SRC OR BASE-64\n  if (shouldRenderImage) {\n    // Assume that it is a base64 image and let the browser do his work\n    return <img {...props} src={name} alt={props.alt} className={classes} onLoad={onLoad} onError={onError} />;\n  }\n\n  const LazyComponent = loadIcon(name);\n\n  const fullProps = {\n    ...props,\n    className: classes,\n    title: props.title ?? props.alt\n  } as ComponentProps<'svg'>;\n\n  return (\n    LazyComponent && (\n      <Suspense>\n        <LazyComponent {...fullProps} />\n      </Suspense>\n    )\n  );\n};\n\nexport const Icon = memo(InternalIcon, (prevProps, nextProps) => {\n  return prevProps.name === nextProps.name && prevProps.className === nextProps.className && prevProps.dimensions === nextProps.dimensions;\n});\n","import React, { Children, ComponentProps, FC, isValidElement, ReactElement } from 'react';\nimport { Icon, IconProps } from '../../icon/icon';\n\nexport type IconSetState = 'default' | 'hover' | 'focused' | 'active' | 'checked';\n\nexport interface IconItemProps extends IconProps {\n  state?: IconSetState;\n}\n\nexport const IconItem: FC<IconItemProps> = ({ state, ...props }) => {\n  return <Icon data-state={state} {...props} />;\n};\n\nexport interface IconSetProps extends ComponentProps<'div'> {\n  state?: IconSetState;\n  children?: ReactElement<IconItemProps> | Array<ReactElement<IconItemProps>>;\n}\n\nconst IconSet: FC<IconSetProps> = ({ ref = null, className, state = 'default', children, ...props }) => {\n  return (\n    <div {...props} ref={ref} className={className}>\n      {Children.toArray(children).map((child) => {\n        if (!isValidElement<IconItemProps>(child)) {\n          return null;\n        }\n\n        const { state: childState, ...childProps } = child.props;\n\n        const iconClassName = `${child.props.className} ${childState === state ? '!block' : '!hidden'}`;\n\n        return <Icon {...childProps} aria-hidden key={childState} className={iconClassName} />;\n      })}\n    </div>\n  );\n};\n\nexport { IconSet };\n","import { SyntheticEvent } from 'react';\n\nexport function createSyntheticEvent<T>(target: T, eventType: string): SyntheticEvent<T> {\n  const event = new Event(eventType, { bubbles: true });\n\n  Object.defineProperty(event, 'target', { writable: false, value: target });\n\n  let isDefaultPrevented = false;\n  let isPropagationStopped = false;\n\n  const preventDefault = () => {\n    isDefaultPrevented = true;\n    event.preventDefault();\n  };\n\n  const stopPropagation = () => {\n    isPropagationStopped = true;\n    event.stopPropagation();\n  };\n\n  return {\n    nativeEvent: event,\n    currentTarget: event.currentTarget as EventTarget & T,\n    target: event.target as EventTarget & T,\n    bubbles: event.bubbles,\n    cancelable: event.cancelable,\n    defaultPrevented: event.defaultPrevented,\n    eventPhase: event.eventPhase,\n    isTrusted: event.isTrusted,\n    preventDefault,\n    isDefaultPrevented: () => isDefaultPrevented,\n    stopPropagation,\n    isPropagationStopped: () => isPropagationStopped,\n    persist: () => {},\n    timeStamp: event.timeStamp,\n    type: event.type\n  };\n}\n","import { useEffect, useRef, useState } from 'react';\n\ntype Timer = string | number | NodeJS.Timeout | undefined;\ntype FunctionType = (arg: string) => void;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst debounce = (func: FunctionType, timeout = 300) => {\n  let timer: Timer;\n\n  return (args: string) => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = undefined;\n    }\n\n    timer = setTimeout(() => {\n      func(args);\n    }, timeout);\n  };\n};\n\nexport { debounce };\n\nexport const useDebounceHook = (func: FunctionType, timeout = 300) => {\n  const timer = useRef<Timer>(null);\n  const [args, setArgs] = useState<string>('');\n\n  useEffect(() => {\n    if (timer.current) {\n      clearTimeout(timer.current);\n    }\n\n    timer.current = setTimeout(() => {\n      func(args);\n    }, timeout);\n\n    return () => {\n      if (timer.current) {\n        clearTimeout(timer.current);\n      }\n    };\n  }, [func, timeout, args]);\n\n  return {\n    setArgs\n  };\n};\n","export const getDateString = (d: Date) => {\n  let dayString = d.getDate().toString();\n\n  if (dayString.length < 2) {\n    dayString = `0${dayString}`;\n  }\n\n  let monthString = (d.getMonth() + 1).toString();\n  if (monthString.length < 2) {\n    monthString = `0${monthString}`;\n  }\n\n  const yearString = d.getFullYear();\n\n  return `${dayString}/${monthString}/${yearString}`;\n};\n","const normalizeText = (text: string) => {\n  return text\n    .toLocaleLowerCase()\n    .normalize('NFD')\n    .replace(/[\\u0300-\\u036f]/g, '');\n};\nexport { normalizeText };\n","/**\n * Convert string like value to Boolean\n */\nconst stringToBoolean = (value: boolean | string | undefined): boolean => {\n  // some params could be undefined (not required)\n  if (typeof value === 'undefined') {\n    return false;\n  }\n\n  // if primitive boolean return self-value\n  if (typeof value === 'boolean') {\n    return value;\n  }\n\n  return value === 'true';\n};\n\nexport { stringToBoolean };\n","import { DependencyList, Ref, RefObject, useImperativeHandle, useRef } from 'react';\n\nexport function useExpandedRef<T>(\n  ref: Ref<T> | null,\n  innerRef: RefObject<HTMLElement | null>,\n  data: T,\n  deps?: DependencyList\n): RefObject<T | null> {\n  const externalRef = useRef<T>(null);\n\n  useImperativeHandle(\n    ref,\n    () => {\n      externalRef.current = innerRef.current as T;\n\n      if (externalRef.current) {\n        const { focus: _, ...safeData } = data as Record<string, unknown>;\n        Object.assign(externalRef.current, safeData);\n      }\n\n      return externalRef.current;\n    },\n    deps\n  );\n\n  return externalRef;\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nconst asyncTrigger = (func: Function, timeout = 10) => {\n  setTimeout(func, timeout);\n};\n\nexport { asyncTrigger };\n","import { useEffect, useState } from 'react';\n\nconst useWindowSize = (fallback = { width: 1920, height: 1080 }) => {\n  const [size, setSize] = useState(() => {\n    if (typeof window !== 'undefined') {\n      return { width: window.innerWidth, height: window.innerHeight };\n    }\n    return fallback;\n  });\n\n  useEffect(() => {\n    const updateSize = () => {\n      setSize({ width: window.innerWidth, height: window.innerHeight });\n    };\n\n    updateSize();\n    window.addEventListener('resize', updateSize);\n    return () => window.removeEventListener('resize', updateSize);\n  }, []);\n\n  return size;\n};\n\nexport { useWindowSize };\n","import { AgoraTailwindConfig } from '@/configs/tailwind-config';\n\nconst useBreakpointScreenValues = () => {\n  const xsScreen = Number(AgoraTailwindConfig.theme.screens.xs.replaceAll('px', ''));\n  const mdScreen = Number(AgoraTailwindConfig.theme.screens.md.replaceAll('px', ''));\n  const xlScreen = Number(AgoraTailwindConfig.theme.screens.xl.replaceAll('px', ''));\n\n  return {\n    xsScreen,\n    mdScreen,\n    xlScreen\n  };\n};\n\nexport { useBreakpointScreenValues };\n","import classNames from 'classnames';\nimport React, {\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  ReactElement,\n  ReactNode,\n  SyntheticEvent,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\nimport { Icon } from '@/components/icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\n\nimport { createSyntheticEvent } from '@/utils/create-synthetic-event';\nimport { useExpandedRef } from '@/utils/expand-ref';\nimport './accordion.css';\n\nexport interface AccordionElement extends HTMLDivElement {\n  /**\n   *  Expand the accordion.\n   */\n  expand: () => void;\n  /**\n   *  Expand the accordion without triggering any event (onExpanded and onChange will not be triggered).\n   */\n  silentExpand: () => void;\n  /**\n   *  Collapse the accordion.\n   */\n  collapse: () => void;\n  /**\n   *  Collapse the accordion without triggering any event (onCollapse and onChange will not be triggered).\n   */\n  silentCollapse: () => void;\n  /**\n   *  Toggles the content of the accordion.\n   */\n  toggle: () => void;\n  /**\n   *  Toggles the accordion without triggering any event (onCollapse, onExpanded and onChange will not be triggered).\n   */\n  silentToggle: () => void;\n  /**\n   *  Current value of the expanded state of the accordion.\n   */\n  isExpanded: boolean;\n}\n\nexport interface AccordionProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Accordion header title.\n   */\n  headingTitle?: ReactNode;\n  /**\n   * Accordion heading level title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Accordion content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if an icon is shown previously of title.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n}\n\ntype eventToTriggerType = Record<'name', 'expand' | 'collapse' | null>;\n\nconst Accordion: FC<AccordionProps> = ({\n  ref = null,\n  children,\n  hasIcon,\n  leadingIcon,\n  leadingIconHover,\n  darkMode = false,\n  headingTitle,\n  'headingLevel': Component = 'h3',\n  className = '',\n  defaultExpanded,\n  'expanded': expandedFromProps,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  'aria-label': ariaLabel,\n  ...props\n}): ReactElement => {\n  const generatedId = useId();\n\n  const isControlled = typeof expandedFromProps != 'undefined';\n\n  const hasDefaultValue = typeof defaultExpanded != 'undefined';\n\n  const [internalExpandedValue, setInternalExpandedValue] = useState(hasDefaultValue ? stringToBoolean(defaultExpanded) : false);\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n  const isMobile = width < mdScreen;\n\n  // Internally, we need to deal with some value. Depending on whether the component is controlled or not, that value comes from its props or from its internal state.\n  const expanded = isControlled ? stringToBoolean(expandedFromProps) : internalExpandedValue;\n\n  const [eventToTrigger, setEventToTrigger] = useState<eventToTriggerType>({ name: null });\n\n  const expand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n\n    setEventToTrigger({ name: 'expand' });\n  };\n\n  const silentExpand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n  };\n\n  const collapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n\n    setEventToTrigger({ name: 'collapse' });\n  };\n\n  const silentCollapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n  };\n\n  const toggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n\n    if (expanded) {\n      setEventToTrigger({ name: 'collapse' });\n    }\n\n    if (!expanded) {\n      setEventToTrigger({ name: 'expand' });\n    }\n  };\n\n  const silentToggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const externalRef = useExpandedRef<AccordionElement>(\n    ref as React.RefObject<AccordionElement>,\n    innerRef,\n    {\n      isExpanded: expanded,\n      expand,\n      silentExpand,\n      collapse,\n      silentCollapse,\n      toggle,\n      silentToggle\n    } as AccordionElement,\n    [innerRef, expanded]\n  );\n\n  useEffect(() => {\n    if (eventToTrigger.name === 'expand') {\n      const expandedEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'expand');\n      onExpanded?.(expandedEvt);\n    }\n\n    if (eventToTrigger.name === 'collapse') {\n      const collapsedEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'collapse');\n      onCollapsed?.(collapsedEvt);\n    }\n\n    const changeEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'change');\n    onChange?.(changeEvt);\n  }, [eventToTrigger]);\n\n  const AccordionClassName = classNames('agora-accordion', className, {\n    'accordion-open': expanded,\n    'active-state': activeState === 'active',\n    'mobile': isMobile,\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const AccordionBodyClassName = classNames('accordion-body', { 'accordion-body-block': expanded });\n  const AccordionIconClassName = classNames('icon icon-chevron', { 'icon-chevron-flip': expanded });\n\n  const onClickHandler = () => {\n    toggle();\n    setActiveState('default');\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Space') {\n      setActiveState('active');\n    }\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Space') {\n      setActiveState('default');\n    }\n  };\n\n  const onMouseDownHandler = () => {\n    setActiveState('active');\n  };\n\n  const onMouseUpHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseLeaveHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseEnterHandler = () => {\n    setActiveState('hover');\n  };\n\n  return (\n    <div className={AccordionClassName} {...props} ref={innerRef}>\n      <Component className=\"flex justify-start items-center w-full\">\n        <button\n          aria-label={ariaLabel}\n          type=\"button\"\n          className=\"accordion-header\"\n          aria-expanded={expanded}\n          id={`agora-accordion-${generatedId}-control`}\n          aria-controls={`agora-accordion-${generatedId}-region`}\n          onClick={onClickHandler}\n          onKeyDown={onKeyDownHandler}\n          onKeyUp={onKeyUpHandler}\n          onMouseDown={onMouseDownHandler}\n          onMouseUp={onMouseUpHandler}\n          onMouseLeave={onMouseLeaveHandler}\n          onMouseEnter={onMouseEnterHandler}\n        >\n          <div className=\"accordion-header-button-wrapper\">\n            {stringToBoolean(hasIcon) && (leadingIcon || leadingIconHover) && (\n              <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? leadingIconHover} aria-hidden />\n                <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? leadingIcon} aria-hidden />\n                <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? leadingIconHover} aria-hidden />\n              </IconSet>\n            )}\n\n            {headingTitle && <span className=\"title\">{headingTitle}</span>}\n\n            <div className=\"icon-wrapper trailing\">\n              <Icon className={AccordionIconClassName} name=\"agora-line-chevron-down\" aria-hidden />\n            </div>\n          </div>\n        </button>\n      </Component>\n      <div\n        className={AccordionBodyClassName}\n        id={`agora-accordion-${generatedId}-region`}\n        role=\"region\"\n        aria-labelledby={`agora-accordion-${generatedId}-control`}\n      >\n        <div className=\"children-wrapper\">{children}</div>\n      </div>\n    </div>\n  );\n};\n\nexport { Accordion };\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  createRef,\n  FC,\n  isValidElement,\n  ReactElement,\n  RefObject,\n  SyntheticEvent,\n  useId,\n  useMemo\n} from 'react';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Accordion, AccordionElement, AccordionProps } from '@/components/accordion';\nimport './accordion-group.css';\n\nexport interface AccordionGroupProps extends ComponentProps<'ul'> {\n  /**\n   * List of accordion components to use as children of the group.\n   */\n  children?: ReactElement<AccordionProps> | Array<ReactElement<AccordionProps>>;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst AccordionGroup: FC<AccordionGroupProps> = ({ className = '', children, darkMode = false, ...props }) => {\n  const generatedAccordionGroupId = useId();\n\n  const accordionsRefMap = useMemo(() => new Map<string, RefObject<AccordionElement | null>>(), []);\n\n  const updateRefMap = (id: string) => {\n    accordionsRefMap.forEach((acc, key) => {\n      if (key !== id) {\n        acc.current?.silentCollapse();\n      }\n    });\n  };\n\n  const renderAccordions = Children.toArray(children).map((child, index) => {\n    if (!isValidElement<AccordionProps>(child)) {\n      return null;\n    }\n\n    const id = `accordion-group-${generatedAccordionGroupId}-accordion-${index}`;\n    const newRef = createRef<AccordionElement>();\n    accordionsRefMap.set(id, newRef);\n\n    const onExpanded = (evt: SyntheticEvent<AccordionElement | undefined>) => {\n      updateRefMap(id);\n      child.props.onExpanded?.(evt);\n    };\n\n    return (\n      <li key={id}>\n        <Accordion {...child.props} ref={newRef} onExpanded={onExpanded} darkMode={darkMode} />\n      </li>\n    );\n  });\n\n  const AccordionGroupClassName = classNames('agora-accordion-group', 'mt-0 p-0 w-full', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  return (\n    <ul className={AccordionGroupClassName} {...props}>\n      {renderAccordions}\n    </ul>\n  );\n};\n\nexport { AccordionGroup };\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, MouseEvent, ReactElement, ReactNode, useRef, useState } from 'react';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\nimport './anchor.css';\n\n/**\n * The available variants of the anchors. This variants will define the background and border color of the anchors.\n */\nexport type AnchorVariant = 'primary' | 'informative' | 'neutral' | 'success' | 'warning' | 'danger';\n\n/**\n * The available anchor appearances. Defines the anchor shape.\n */\nexport type AnchorAppearance = 'link' | 'text';\n\nexport interface AnchorProps extends ComponentProps<'a'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The anchor appearance. Define the anchor shape.\n   */\n  appearance?: AnchorAppearance;\n  /**\n   * The variant of the anchor. This variants will define the background and border color of the given Anchor.\n   */\n  variant?: AnchorVariant;\n  /**\n   * Defines if the anchor should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the anchor uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the leading icon to be displayed when the anchor is active. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconActive?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed when the anchor is active. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconActive?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if anchor is inline text or not. An inline element does not start on a new line and takes up as much width as necessary. See https://www.w3schools.com/html/html_blocks.asp.\n   */\n  inline?: BooleanProp;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst Anchor: FC<AnchorProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'text',\n  variant = 'primary',\n  fullWidth = false,\n  hasIcon = false,\n  iconOnly = false,\n  leadingIcon,\n  leadingIconHover,\n  leadingIconActive,\n  trailingIcon,\n  trailingIconHover,\n  trailingIconActive,\n  children,\n  className = '',\n  inline = false,\n  ...props\n}): ReactElement => {\n  const innerRef = useRef<HTMLAnchorElement>(null);\n  useExpandedRef<HTMLAnchorElement>(ref, innerRef, {} as HTMLAnchorElement, [innerRef.current]);\n\n  const anchorClassName = classNames(\n    `agora-anchor`,\n\n    `agora-anchor-${appearance}-${variant}`,\n\n    { 'agora-anchor-full': fullWidth },\n\n    { 'inline-flex items-center': !props.hidden },\n\n    { 'justify-center min-h-[44px] min-w-[44px] py-8': !stringToBoolean(inline) },\n\n    { 'justify-start': stringToBoolean(inline) },\n\n    { 'agora-anchor-with-icon': stringToBoolean(hasIcon) || stringToBoolean(iconOnly) },\n\n    { 'is-icon-only': stringToBoolean(iconOnly) },\n\n    { 'dark-mode': stringToBoolean(darkMode) },\n\n    className\n  );\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const handleClick = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n\n    props.onClick?.(evt);\n  };\n\n  const handleMouseEnter = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('hover');\n    }\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const handleMouseLeave = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n\n    props.onMouseLeave?.(evt);\n  };\n\n  const handleMouseDown = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('active');\n    }\n\n    props.onMouseDown?.(evt);\n  };\n\n  const handleMouseUp = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onBlur = () => {\n    innerRef.current?.classList.remove('active');\n    setActiveState('default');\n  };\n\n  return (\n    <a\n      {...props}\n      className={anchorClassName}\n      ref={innerRef}\n      onClick={handleClick}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      onMouseDown={handleMouseDown}\n      onMouseUp={handleMouseUp}\n      onBlur={onBlur}\n      onKeyDown={props.onKeyDown}\n    >\n      {hasIcon && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIconActive ?? leadingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n\n      {!iconOnly && children && <span className=\"children-wrapper\">{children}</span>}\n\n      {hasIcon && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIconActive ?? trailingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n    </a>\n  );\n};\n\nexport { Anchor };\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  cloneElement,\n  FC,\n  FocusEvent,\n  FocusEventHandler,\n  HtmlHTMLAttributes,\n  isValidElement,\n  MouseEvent,\n  MouseEventHandler,\n  ReactNode,\n  RefObject,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport './tooltip.css';\n\nconst TOOLTIP_CHANGE_EVENT_NAME = 'agora-ds-tooltip-change';\n\ninterface EnrichedChildren {\n  'ref': RefObject<HTMLElement | null>;\n  'onMouseEnter': MouseEventHandler;\n  'onMouseLeave': MouseEventHandler;\n  'onFocus': FocusEventHandler;\n  'onBlur': FocusEventHandler;\n  'children'?: ReactNode;\n  'aria-describedby': string;\n}\n\n/**\n * The available variants of the Tooltip. This variants will define the background of the Tooltip.\n */\nexport type TooltipVariant = 'light' | 'dark' | 'info';\n/**\n * The available positions of the Tooltip. This positions will define the position of the Tooltip.\n */\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n/**\n * The available alignments of the Tooltip. This alignments will define the alignment of the Tooltip.\n */\nexport type TooltipAlignment = 'start' | 'center' | 'end';\n\nexport interface TooltipProps extends Omit<HtmlHTMLAttributes<HTMLDivElement>, 'title'> {\n  /**\n   * The variant of the Tooltip.\n   */\n  variant?: TooltipVariant;\n  /**\n   * The position of the Tooltip.\n   */\n  position?: TooltipPosition;\n  /**\n   * The alignment of the Tooltip.\n   */\n  alignment?: TooltipAlignment;\n  /**\n   * The title of the Tooltip.\n   */\n  title?: ReactNode;\n  /**\n   * If the Tooltip has a title.\n   */\n  hasTitle?: BooleanProp;\n  /**\n   * The description of the Tooltip.\n   */\n  description: ReactNode;\n  /**\n   * The element where the tooltip is attached to.\n   */\n  children?: ReactNode;\n}\n\nexport const Tooltip: FC<TooltipProps> = ({\n  hasTitle,\n  variant = 'dark',\n  position = 'top',\n  alignment = 'center',\n  title,\n  description,\n  children,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const ref = useRef<HTMLElement>(null);\n\n  const [top, setTop] = useState(0);\n  const [left, setLeft] = useState(0);\n  const [width, setWidth] = useState(0);\n  const [height, setHeight] = useState(0);\n\n  const setDimensions = useCallback(() => {\n    if (ref.current) {\n      const rect = ref.current?.getBoundingClientRect();\n\n      if (rect) {\n        setTop(rect.top + window.scrollY);\n        setLeft(rect.left + window.scrollX);\n        setWidth(rect.width);\n        setHeight(rect.height);\n      }\n    }\n  }, []);\n\n  const propsClone = useMemo(() => ({ ...props }), [props]);\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const TooltipContainerClassName = classNames('tooltip-container absolute z-tooltip', props.className);\n\n  const TooltipClassName = classNames('tooltip', {\n    [`tooltip--${variant}`]: variant,\n    [`tooltip--${position}--${alignment}`]: position && alignment\n  });\n\n  const [visibility, setVisibility] = useState(false);\n\n  const showTooltip = () => {\n    setVisibility(true);\n    const event = new CustomEvent<string | undefined>(TOOLTIP_CHANGE_EVENT_NAME, { detail: propsClone.id });\n    document.dispatchEvent(event);\n  };\n\n  const hideTooltip = () => {\n    setVisibility(false);\n  };\n\n  const handleEscapeKey = (event: KeyboardEvent) => {\n    if (event.key === 'Escape') {\n      setVisibility(false);\n    }\n  };\n\n  const handleTooltipMouseLeave = () => {\n    hideTooltip();\n  };\n\n  useEffect(() => {\n    document.addEventListener('keydown', handleEscapeKey);\n\n    const handleTooltipChange = (customEventArgs: CustomEvent) => {\n      if (customEventArgs.detail !== propsClone.id) {\n        setVisibility(false);\n      }\n    };\n\n    document.addEventListener(TOOLTIP_CHANGE_EVENT_NAME, handleTooltipChange as EventListener);\n\n    return () => {\n      document.removeEventListener('keydown', handleEscapeKey);\n      document.removeEventListener(TOOLTIP_CHANGE_EVENT_NAME, handleTooltipChange as EventListener);\n    };\n  }, [propsClone.id]);\n\n  const parsedChildren = Children.map(children, (child) => {\n    if (!isValidElement<EnrichedChildren>(child)) {\n      return child;\n    }\n\n    const onMouseEnter = (evt: MouseEvent) => {\n      setDimensions();\n\n      showTooltip();\n\n      child.props.onMouseEnter?.(evt);\n    };\n\n    const onMouseLeave = (evt: MouseEvent) => {\n      const relatedElement = evt.relatedTarget as HTMLElement;\n\n      const isOutsideTooltipArea =\n        relatedElement && !relatedElement.classList.contains('tooltip') && !relatedElement.classList.contains('tooltip-extra-hover-area');\n\n      if (isOutsideTooltipArea) {\n        hideTooltip();\n      }\n\n      child.props.onMouseLeave?.(evt);\n    };\n\n    const onFocus = (evt: FocusEvent) => {\n      setDimensions();\n\n      showTooltip();\n\n      child.props.onFocus?.(evt);\n    };\n\n    const onBlur = (evt: FocusEvent) => {\n      hideTooltip();\n\n      child.props.onBlur?.(evt);\n    };\n\n    return cloneElement<EnrichedChildren>(child, { ref, onMouseEnter, onMouseLeave, onFocus, onBlur, 'aria-describedby': propsClone.id });\n  });\n\n  useEffect(() => {\n    const cb = () => {\n      setDimensions();\n    };\n\n    document.addEventListener('scroll', cb);\n\n    return () => {\n      document.removeEventListener('scroll', cb);\n    };\n  }, [setDimensions]);\n\n  const topPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '-10px',\n        left: '0px',\n        transform: 'translateY(-100%)'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: '-10px',\n        left: `${width / 2}px`,\n        transform: 'translateY(-100%) translateX(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: '-10px',\n        left: `${width}px`,\n        transform: 'translateY(-100%) translateX(-100%)'\n      };\n    }\n  }, [alignment, width]);\n\n  const bottomPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: `${height + 10}px`,\n        left: '0px',\n        transform: 'none'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height + 10}px`,\n        left: `${width / 2}px`,\n        transform: 'translateX(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height + 10}px`,\n        left: `${width}px`,\n        transform: 'translateX(-100%)'\n      };\n    }\n  }, [alignment, height, width]);\n\n  const leftPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '0px',\n        left: '-10px',\n        transform: 'translateX(-100%)'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height / 2}px`,\n        left: '-10px',\n        transform: 'translateX(-100%) translateY(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height}px`,\n        left: '-10px',\n        transform: 'translateX(-100%) translateY(-100%)'\n      };\n    }\n  }, [alignment, height]);\n\n  const rightPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '0px',\n        left: `${width + 10}px`,\n        transform: 'none'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height / 2}px`,\n        left: `${width + 10}px`,\n        transform: 'translateY(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height}px`,\n        left: `${width + 10}px`,\n        transform: 'translateY(-100%)'\n      };\n    }\n  }, [alignment, height, width]);\n\n  const tooltipPosition = useMemo(() => {\n    switch (position) {\n      case 'top':\n        return topPositioning;\n      case 'bottom':\n        return bottomPositioning;\n      case 'left':\n        return leftPositioning;\n      case 'right':\n        return rightPositioning;\n    }\n  }, [position, topPositioning, bottomPositioning, leftPositioning, rightPositioning]);\n\n  const TooltipContent = useMemo(() => {\n    return (\n      <div\n        className={TooltipContainerClassName}\n        style={{\n          top: `${top}px`,\n          left: `${left}px`\n        }}\n        onMouseLeave={handleTooltipMouseLeave}\n        role=\"none\"\n      >\n        <div className=\"relative w-full h-full\">\n          <div {...propsClone} style={{ ...tooltipPosition }} id={propsClone.id} className={TooltipClassName} role=\"tooltip\">\n            {stringToBoolean(hasTitle) && <div className=\"title\">{title}</div>}\n            <p className=\"description\">{description}</p>\n            <div className=\"tooltip-extra-hover-area\" role=\"none\" />\n          </div>\n        </div>\n      </div>\n    );\n  }, [TooltipClassName, description, hasTitle, title, propsClone, tooltipPosition, top, left]);\n\n  const memoPortal = useMemo(() => {\n    if (visibility) {\n      return createPortal(TooltipContent, document.body);\n    }\n    return null;\n  }, [visibility, TooltipContent]);\n\n  return (\n    <>\n      {parsedChildren}\n      {memoPortal}\n    </>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useImperativeHandle, useRef, useState } from 'react';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\n\nimport './button.css';\n\n/**\n * The available variants of the button. This variants will define the background and border color of the button.\n */\nexport type ButtonVariant = 'primary' | 'neutral' | 'success' | 'warning' | 'danger' | 'informative';\n\n/**\n * The available button appearances. Defines the button shape.\n */\nexport type ButtonAppearance = 'solid' | 'outline' | 'link';\n\nexport interface ButtonProps extends ComponentProps<'button'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  appearance?: ButtonAppearance;\n  /**\n   * The variant of the button. This variants will define the background and border color of the given Button.\n   */\n  variant?: ButtonVariant;\n  /**\n   * Defines if the button should be fluid.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Data attributes.\n   * Allow when implemented interface add data-* attribute.\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst Button: FC<ButtonProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'solid',\n  variant = 'primary',\n  fullWidth = false,\n  hasIcon = false,\n  iconOnly = false,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  children,\n  className = '',\n  ...props\n}) => {\n  const innerButtonRef = useRef<HTMLButtonElement | null>(null);\n  useImperativeHandle(ref, () => innerButtonRef.current as HTMLButtonElement);\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const buttonClassName = classNames(\n    { 'flex items-center justify-center content-center': !props.hidden },\n\n    `agora-btn ${fullWidth ? 'agora-btn-full' : ''} agora-btn-${appearance}-${variant}`,\n\n    {\n      [`agora-btn-with-icon`]: stringToBoolean(hasIcon),\n      'is-icon-only': stringToBoolean(iconOnly)\n    },\n\n    { darkMode: stringToBoolean(darkMode) },\n    className\n  );\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      innerButtonRef.current?.classList.add('active');\n\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      innerButtonRef.current?.classList.remove('active');\n      setActiveState('default');\n\n      innerButtonRef.current?.setAttribute('data-custom-triggered-click', 'true');\n      innerButtonRef.current?.click();\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    innerButtonRef.current?.classList.remove('active');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseDownHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n    innerButtonRef.current?.classList.add('active');\n    props.onMouseDown?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseUpHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    innerButtonRef.current?.classList.remove('active');\n    props.onMouseUp?.(evt);\n  };\n\n  const onClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    //  TRUE MOUSE CLICK OR TOUCH CLICK\n    if (evt.detail > 0) {\n      setActiveState(isTouchDevice ? 'default' : 'hover');\n      props.onClick?.(evt);\n      return;\n    }\n\n    //  CLICK FROM KEYBOARD\n\n    //  NEED TO CHECK THIS ATTRIBUTE BECAUSE FIREFOX DOES NOT TRIGGER CLICK EVENTS WHENEVER THE ENTER/SPACE/NUMPADENTER KEY IS PRESSED.\n    //  TO FIX THAT INCONSISTENCY, WE ADD A CUSTOM ATTRIBUTE TO SIGNAL THE ARTIFICIAL CLICK TRIGGER AND PREVENT THE CHROMIUM BASED BROWSERS OF DUPLICATE CLICK EVENTS.\n    //  ON KEYUP THE CLICK EVENT IS TRIGGERED AND WILL BE ADDED THE CUSTOM ATTRIBUTE. THEN, IF THE BROWSER TRIGGERED ANOTHER CLICK, THE HANDLER WILL NOT FIND THE CUSTOM ATTRIBUTE AND WILL NOT TRIGGER A DUPLICATED EVENT.\n    const shouldTriggerClick = innerButtonRef.current?.getAttribute('data-custom-triggered-click') === 'true';\n    innerButtonRef.current?.removeAttribute('data-custom-triggered-click');\n\n    if (!shouldTriggerClick) {\n      evt.preventDefault();\n      return;\n    }\n\n    setActiveState('default');\n    props.onClick?.(evt);\n  };\n\n  return (\n    <button\n      {...props}\n      className={buttonClassName}\n      ref={innerButtonRef}\n      onClick={onClickHandler}\n      onKeyDown={onKeyDownHandler}\n      onKeyUp={onKeyUpHandler}\n      onMouseDown={onMouseDownHandler}\n      onMouseUp={onMouseUpHandler}\n      onMouseLeave={onMouseLeaveHandler}\n      onMouseEnter={onMouseEnterHandler}\n    >\n      {hasIcon && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n\n      {!iconOnly && children && <span className=\"children-wrapper\">{children}</span>}\n\n      {hasIcon && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n    </button>\n  );\n};\n\nexport { Button };\n","import React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nimport { Button } from '@/components/button';\n\nexport interface InteractiveAvatarProps extends ComponentProps<'div'> {\n  alt?: string;\n  className?: string;\n  onActivate?: () => void;\n  children?: ReactNode;\n}\n\nconst InteractiveAvatar: FC<InteractiveAvatarProps> = ({\n  ref = null,\n  className,\n  onActivate,\n  children,\n  alt,\n  'aria-haspopup': ariaHasPopup,\n  'aria-expanded': ariaExpanded,\n  'aria-current': ariaCurrent,\n  'aria-label': ariaLabel,\n  role,\n  tabIndex,\n  ...props\n}): ReactElement => {\n  const onClickHandler = () => {\n    onActivate?.();\n  };\n\n  return (\n    <div ref={ref} {...props} className={className}>\n      <Button\n        {...(ariaHasPopup !== undefined ? { 'aria-haspopup': ariaHasPopup } : {})}\n        {...(ariaExpanded !== undefined ? { 'aria-expanded': ariaExpanded } : {})}\n        {...(ariaCurrent !== undefined ? { 'aria-current': ariaCurrent } : {})}\n        {...(role !== undefined ? { role: role.toString() } : {})}\n        {...(tabIndex !== undefined ? { tabIndex: tabIndex } : {})}\n        aria-label={alt ?? ariaLabel}\n        type=\"button\"\n        className={className}\n        onClick={onClickHandler}\n      >\n        {children}\n      </Button>\n    </div>\n  );\n};\n\nexport { InteractiveAvatar };\n","import React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nexport interface NonInteractiveAvatarProps extends ComponentProps<'div'> {\n  alt?: string;\n  className?: string;\n  children?: ReactNode;\n}\n\nconst NonInteractiveAvatar: FC<NonInteractiveAvatarProps> = ({ ref = null, className, children, alt, ...props }): ReactElement => {\n  return (\n    <div ref={ref} {...props} role={alt ? 'img' : undefined} aria-label={alt} className={className}>\n      {children}\n    </div>\n  );\n};\n\nexport { NonInteractiveAvatar };\n","import React, { ComponentProps, FC, ReactElement, ReactNode, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon, IconName } from '@/components/icon';\nimport { Tooltip, TooltipAlignment, TooltipPosition } from '@/components/tooltip';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { InteractiveAvatar } from './interactive-avatar';\nimport { NonInteractiveAvatar } from './non-interactive-avatar';\n\nimport './avatar.css';\n\n/**\n *  The available avatar types. Each of them define the appearance of the avatar image.\n */\nexport type AvatarType = 'image' | 'icon' | 'initials' | 'empty';\n/**\n * The available badge positions. Each of them defines the location of the badge on the avatar.\n */\nexport type AvatarBadgePosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n/**\n * The available badge variants. Each of them defines the color of the badge.\n */\nexport type AvatarBadgeVariant = 'primary' | 'secondary' | 'neutral' | 'informative' | 'success' | 'warning' | 'danger';\n/**\n * The available badge appearances. Defines solid or outline style.\n */\nexport type AvatarBadgeAppearance = 'solid' | 'outline';\n/**\n * The available badge sizes. Defines badge size.\n */\nexport type AvatarBadgeSize = 'default' | 'large';\n\nexport interface AvatarProps extends ComponentProps<'div'> {\n  /**\n   *  Defines the appearance of the avatar.\n   */\n  avatarType?: AvatarType;\n  /**\n   *  Defines the avatar source path. Depending on the selected avatar type the source requires:\n   *    1. Image - Path to an external image URL. In case an invalid path was given, alt text will be displayed.\n   *    2. Icon - Icon name that exists in AgoraDS. In case an invalid icon name was given, the default Agora icon will be displayed.\n   *    3. Initials - First two letters of a given text. It is possible to insert more than two letters, but it will always show the first two and it will capitalize them.\n   *\n   *    If no source was given or if the user inserts \"no-icon\" in the field for any of the available avatar types, the default Agora image will be displayed.\n   */\n  srcPath?: IconName;\n  /**\n   *  Avatar information, such as user name or other, that is only required in interactive avatars.\n   */\n  information?: ReactNode;\n  /**\n   *  Defines an alternative text of the avatar image.\n   */\n  alt?: string;\n  /**\n   *  The flag to place a badge on the avatar.\n   */\n  hasBadge?: BooleanProp;\n  /**\n   *  Defines the avatar badge position.\n   */\n  badgePosition?: AvatarBadgePosition;\n  /**\n   *  Defines the position of the avatar tooltip.\n   */\n  tooltipPosition?: TooltipPosition;\n  /**\n   * Defines the avatar badge variant. This variant will define the color of the badge.\n   */\n  badgeVariant?: AvatarBadgeVariant;\n  /**\n  /**\n   *  The defines the align the avatar tooltip alignment.\n   */\n  tooltipAlignment?: TooltipAlignment;\n  /**\n   *  Defines the avatar badge appearance.\n   */\n  badgeAppearance?: AvatarBadgeAppearance;\n  /**\n   *  Defines the avatar badge size.\n   */\n  badgeSize?: AvatarBadgeSize;\n  /**\n   *  Makes the avatar interactive. An interactive avatar can be focused by clicking on it, or pressing Space, Enter or NumpadEnter.\n   */\n  interactive?: BooleanProp;\n  /**\n   *  Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Callback to run whenever the avatar is activated.\n   */\n  onActivate?: () => void;\n}\n\nconst Avatar: FC<AvatarProps> = ({\n  ref = null,\n  className,\n  avatarType = 'icon',\n  srcPath,\n  hasBadge,\n  information,\n  badgePosition = 'top-right',\n  badgeVariant = 'danger',\n  badgeAppearance = 'solid',\n  badgeSize = 'large',\n  tooltipPosition = 'bottom',\n  tooltipAlignment = 'center',\n  interactive,\n  darkMode,\n  onActivate,\n  ...props\n}): ReactElement => {\n  const containerClasses = classNames('agora-avatar', className, {\n    interactive,\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const memoContent = useMemo(() => {\n    const parsedAvatarType = srcPath ? avatarType : 'icon';\n\n    const avatarClasses = classNames(`avatar avatar-${parsedAvatarType}`);\n\n    const badgeClasses = classNames(className, {\n      [`badge badge-${badgePosition} badge-${badgeSize} badge-${badgeAppearance}-${badgeVariant}`]: stringToBoolean(hasBadge)\n    });\n\n    if (avatarType === 'initials' && srcPath && srcPath.trim().length !== 0) {\n      return (\n        <>\n          <div className={avatarClasses}>{srcPath.slice(0, 2)}</div>\n          {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n        </>\n      );\n    }\n\n    if (avatarType === 'empty') {\n      return (\n        <>\n          <Icon name=\"./hand.png\" className={avatarClasses} aria-hidden />\n          {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n        </>\n      );\n    }\n\n    return (\n      <>\n        <Icon name={srcPath} className={avatarClasses} aria-hidden />\n        {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n      </>\n    );\n  }, [className, avatarType, srcPath, hasBadge, badgePosition, badgeVariant, badgeAppearance, badgeSize]);\n\n  if (stringToBoolean(interactive)) {\n    return (\n      <div className=\"agora-avatar-container\" ref={ref}>\n        <Tooltip\n          alignment={tooltipAlignment}\n          className=\"avatar-tooltip\"\n          description={information}\n          position={tooltipPosition}\n          variant={stringToBoolean(darkMode) ? 'dark' : 'light'}\n        >\n          <InteractiveAvatar {...props} className={containerClasses} onActivate={onActivate}>\n            {memoContent}\n          </InteractiveAvatar>\n        </Tooltip>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"agora-avatar-container\" ref={ref}>\n      <NonInteractiveAvatar {...props} className={containerClasses}>\n        {memoContent}\n      </NonInteractiveAvatar>\n    </div>\n  );\n};\n\nexport { Avatar };\n","import { createContext, useContext } from 'react';\nimport { DropdownType } from '../dropdown-type';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSectionProps } from './internal-dropdown-section';\n\nexport interface InternalDropdownContextProps {\n  type: DropdownType;\n  sections: InternalDropdownSectionProps[];\n  options: InternalDropdownOptionProps[];\n  selectedOptions: InternalDropdownOptionProps[];\n\n  visibility?: boolean;\n  show: () => void;\n  hide: () => void;\n\n  first: () => void;\n  prev: () => void;\n  next: () => void;\n  last: () => void;\n\n  selectOption: (props: InternalDropdownOptionProps) => void;\n  selectSectionOptions: (name: string) => void;\n  isAllSectionOptionsSelected: (name: string) => boolean;\n\n  hasSectionOptionsToInteract: (name: string) => boolean;\n  selectAll: () => void;\n  isAllSelected: boolean;\n  isAllDisabled: boolean;\n\n  applyFilter: (filter: string) => void;\n  activeFilter: string;\n  resetFilter: () => void;\n\n  lastSelectedOption?: string;\n  setLastSelectedOption: (optionId: string | undefined) => void;\n}\n\nexport const InternalDropdownContext = createContext<InternalDropdownContextProps>({} as InternalDropdownContextProps);\n\nexport const useInternalDropdownContext = (): InternalDropdownContextProps => {\n  return useContext(InternalDropdownContext);\n};\n","import { Icon } from '@/components/icon';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useDebounceHook } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  ChangeEvent,\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent,\n  RefObject,\n  useEffect,\n  useImperativeHandle,\n  useRef,\n  useState\n} from 'react';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-filter-section.css';\n\nexport interface InternalDropdownFilterSectionRef extends RefObject<HTMLInputElement> {\n  filterElem: HTMLLIElement | null;\n  resetFilter: () => void;\n}\n\nexport interface InternalDropdownFilterSectionProps extends ComponentProps<'input'> {\n  darkMode?: BooleanProp;\n  className?: string;\n  debounceTimeout?: number;\n}\n\nconst InternalDropdownFilterSection: FC<InternalDropdownFilterSectionProps> = ({\n  debounceTimeout = 300,\n  ref = null,\n  darkMode,\n  className,\n  ...props\n}) => {\n  const dropdownContext = useInternalDropdownContext();\n  const visibility = dropdownContext.visibility;\n  const applyFilter = dropdownContext.applyFilter;\n  const hide = dropdownContext.hide;\n  const next = dropdownContext.next;\n\n  const [currentFilter, setCurrentFilter] = useState('');\n\n  const debouncedApplyFilter = useDebounceHook(applyFilter, debounceTimeout);\n\n  const onInputChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentFilter(evt.target.value);\n  };\n\n  useEffect(() => {\n    setCurrentFilter(dropdownContext.activeFilter);\n  }, [dropdownContext.activeFilter]);\n\n  useEffect(() => {\n    debouncedApplyFilter.setArgs(currentFilter.toLowerCase());\n  }, [currentFilter, debouncedApplyFilter]);\n\n  const resetFilter = () => {\n    setCurrentFilter('');\n  };\n\n  const inputRef = useRef<HTMLInputElement>(null);\n  const innerRef = useRef<HTMLLIElement>(null);\n  useImperativeHandle(ref, () => {\n    return {\n      current: inputRef.current,\n      filterElem: innerRef.current,\n      resetFilter\n    } as InternalDropdownFilterSectionRef & HTMLInputElement;\n  }, [innerRef]);\n\n  const onKeyDownCaptureHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const code = evt.code;\n\n    if (code === 'Tab') {\n      evt.preventDefault();\n      evt.stopPropagation();\n\n      hide();\n    }\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const code = evt.code;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'ArrowDown':\n        next();\n        break;\n    }\n  };\n\n  const onMouseDownCaptureHandler = (evt: MouseEvent<SVGElement | HTMLImageElement>) => {\n    evt.preventDefault();\n    inputRef.current?.focus();\n  };\n\n  useEffect(() => {\n    if (innerRef.current && visibility) {\n      const { height } = innerRef.current.getBoundingClientRect();\n      innerRef.current.setAttribute('data-filter-section-height', `${height}`);\n    }\n  }, [visibility]);\n\n  const dropdownFilterClasses = classNames('agora-dropdown-filter-section', className, { 'dark-mode': stringToBoolean(darkMode) });\n\n  return (\n    <ul className={dropdownFilterClasses} role=\"presentation\">\n      <li className=\"agora-dropdown-filter-section-item\" ref={innerRef} role=\"presentation\">\n        <input\n          ref={inputRef}\n          {...props}\n          className={'input-filter'}\n          type=\"text\"\n          value={currentFilter}\n          onChange={onInputChange}\n          onKeyDownCapture={onKeyDownCaptureHandler}\n          onKeyDown={onKeyDownHandler}\n        />\n        <Icon className=\"input-icon\" name=\"agora-line-search\" aria-hidden onMouseDownCapture={onMouseDownCaptureHandler} />\n      </li>\n    </ul>\n  );\n};\n\nexport { InternalDropdownFilterSection };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport './internal-dropdown-no-results.css';\n\nexport interface InternalNoResultsProps extends ComponentPropsWithoutRef<'div'> {\n  label: ReactNode;\n  darkMode?: BooleanProp;\n}\n\nexport const InternalNoResults: FC<InternalNoResultsProps> = ({ className, darkMode, label, ...props }) => {\n  const classes = classNames('agora-dropdown-no-results', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  return (\n    <div {...props} className={classes}>\n      <div className=\"label\">{label}</div>\n    </div>\n  );\n};\n","import { Icon } from '@/components/icon';\nimport { BooleanProp, IconPosition } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { DropdownType } from '../dropdown-type';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-option.css';\n\nconst OptionComponent: FC<{ type: DropdownType; hasIcon?: BooleanProp; icon?: string; children: ReactNode }> = ({\n  type,\n  icon,\n  hasIcon,\n  children\n}) => {\n  if (type === 'checkbox') {\n    return (\n      <span className=\"flex gap-8 w-full\">\n        <Icon className=\"checkbox-mark\" name=\"agora-line-check\" aria-hidden />\n        <span className=\"option-content\">{children}</span>\n        {stringToBoolean(hasIcon) && <Icon className=\"option-icon\" name={icon} aria-hidden />}\n      </span>\n    );\n  }\n\n  if (!stringToBoolean(hasIcon)) {\n    return <span className=\"option-content\">{children}</span>;\n  }\n\n  return (\n    <>\n      <Icon className=\"option-icon\" name={icon} aria-hidden />\n      <span className=\"option-content\">{children}</span>\n    </>\n  );\n};\n\nexport interface InternalDropdownOptionProps extends ComponentProps<'li'> {\n  className?: string;\n  darkMode?: BooleanProp;\n  name?: string;\n  value: string;\n  children: ReactNode;\n  hasIcon?: BooleanProp;\n  icon?: string;\n  iconPosition?: IconPosition;\n  disabled?: BooleanProp;\n  selected?: BooleanProp;\n  filtered?: BooleanProp;\n  sectionOptionId?: string;\n  onRangeSelection?: (optionId: string, isShiftClick: boolean) => void;\n}\n\nconst InternalDropdownOption: FC<InternalDropdownOptionProps> = ({\n  ref = null,\n  className,\n  darkMode,\n  disabled,\n  selected,\n  filtered,\n  hasIcon,\n  icon,\n  iconPosition = 'leading',\n  children,\n  name,\n  value,\n  onRangeSelection,\n  sectionOptionId = '',\n  ...props\n}) => {\n  const internalDropdownOptionRef = useRef<HTMLLIElement | null>(null);\n  useImperativeHandle(ref, () => internalDropdownOptionRef.current as HTMLLIElement);\n\n  const parsedIconName = icon?.replace('solid', 'line');\n  const [iconName, setIconName] = useState(parsedIconName ?? '');\n\n  const dropdownContext = useInternalDropdownContext();\n  const selectOption = dropdownContext.selectOption;\n  const options = dropdownContext.options;\n  const last = dropdownContext.last;\n  const first = dropdownContext.first;\n  const next = dropdownContext.next;\n  const prev = dropdownContext.prev;\n  const type = dropdownContext.type;\n  const hide = dropdownContext.hide;\n\n  const optionWrapperClasses = classNames(\n    'agora-dropdown-option',\n    className,\n\n    { [type]: type },\n    { disabled: stringToBoolean(disabled) },\n    { selected: stringToBoolean(selected) },\n    { filtered: stringToBoolean(filtered) },\n    {\n      'dark-mode': stringToBoolean(darkMode),\n      'leading-icon': stringToBoolean(hasIcon) && iconPosition === 'leading',\n      'trailing-icon': stringToBoolean(hasIcon) && iconPosition === 'trailing'\n    }\n  );\n\n  const select = () => {\n    const option = options.find((opt) => {\n      return opt.value === value && opt.name === name;\n    });\n\n    if (option) {\n      selectOption(option);\n    }\n  };\n\n  const handleRangeSelectionAndSelect = (isShiftClick: boolean) => {\n    // For checkbox with shift+click, handle range selection\n    if (type === 'checkbox' && isShiftClick && onRangeSelection && sectionOptionId) {\n      onRangeSelection(sectionOptionId, isShiftClick);\n      return;\n    }\n\n    // For all other cases, perform regular selection\n    select();\n\n    // Update last selected option for future range selections\n    if (onRangeSelection && sectionOptionId) {\n      onRangeSelection(sectionOptionId, false);\n    }\n  };\n\n  const onKeyDownCaptureHandler = (evt: KeyboardEvent<HTMLLIElement>) => {\n    const code = evt.code;\n\n    //  SPACE, UP AND DOWN TRIGGERS SCROLLING BEHAVIOUR. ITS MUST BE HANDLED IN KEYDOWN CAPTURE TO PREVENT IT.\n    if (code === 'Space' || code === 'Enter' || code === 'NumpadEnter') {\n      evt.stopPropagation();\n      evt.preventDefault();\n      handleRangeSelectionAndSelect(evt.shiftKey);\n    }\n\n    if (code === 'Tab') {\n      evt.stopPropagation();\n      evt.preventDefault();\n\n      hide();\n    }\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLLIElement>) => {\n    const { code } = evt;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'ArrowUp':\n        prev();\n        break;\n      case 'ArrowDown':\n        next();\n        break;\n      case 'Home':\n        first();\n        break;\n      case 'End':\n        last();\n        break;\n    }\n  };\n\n  const onMouseDownCapture = (evt: MouseEvent<HTMLLIElement>) => {\n    if (disabled) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const clickHandler = (evt: MouseEvent<HTMLLIElement>) => {\n    if (disabled) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      return;\n    }\n\n    handleRangeSelectionAndSelect(evt.shiftKey);\n  };\n\n  const applySolidIcon = () => {\n    if (!disabled) {\n      setIconName((lastIconName) => lastIconName.replace('line', 'solid'));\n    }\n  };\n\n  const applyLineIcon = () => {\n    if (!disabled) {\n      setIconName((lastIconName) => lastIconName.replace('solid', 'line'));\n    }\n  };\n\n  useEffect(() => {\n    if (!internalDropdownOptionRef?.current) return;\n\n    const optionHeight = internalDropdownOptionRef.current.getBoundingClientRect().height;\n    internalDropdownOptionRef.current.setAttribute('data-section-option-height', `${optionHeight}`);\n  });\n\n  return (\n    <li\n      ref={internalDropdownOptionRef}\n      className={optionWrapperClasses}\n      role=\"option\"\n      tabIndex={disabled ? -1 : 0}\n      aria-selected={stringToBoolean(selected)}\n      onKeyDown={onKeyDownHandler}\n      onKeyDownCapture={onKeyDownCaptureHandler}\n      onMouseDownCapture={onMouseDownCapture}\n      onClick={clickHandler}\n      onMouseEnter={applySolidIcon}\n      onMouseMove={applySolidIcon}\n      onMouseLeave={applyLineIcon}\n      data-section-option-id={sectionOptionId}\n      {...props}\n    >\n      <OptionComponent type={type} hasIcon={stringToBoolean(hasIcon)} icon={iconName}>\n        {children}\n      </OptionComponent>\n    </li>\n  );\n};\n\nexport { InternalDropdownOption };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { createRef, FC, ReactElement, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { InternalDropdownOption, InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-section.css';\n\nexport interface InternalDropdownSectionProps {\n  darkMode?: BooleanProp;\n  className?: string;\n  name: string;\n  label?: string;\n  hideLabel: BooleanProp;\n  children: ReactElement<InternalDropdownOptionProps> | ReactElement<InternalDropdownOptionProps>[];\n}\n\nexport const InternalDropdownSection: FC<InternalDropdownSectionProps> = ({ darkMode, className, name, label = '', hideLabel }) => {\n  const dropdownContext = useInternalDropdownContext();\n  const options = dropdownContext.options;\n  const type = dropdownContext.type;\n  const visibility = dropdownContext.visibility;\n  const lastSelectedOption = dropdownContext.lastSelectedOption;\n  const setLastSelectedOption = dropdownContext.setLastSelectedOption;\n\n  const sectionNameRef = useRef<HTMLLIElement>(null);\n\n  const sectionClassNames = classNames('agora-dropdown-section', className, { 'dark-mode': stringToBoolean(darkMode) });\n\n  const handleRangeSelection = useCallback(\n    (currentOptionId: string, isShiftClick: boolean) => {\n      // Always update the last selected option for non-shift clicks\n      if (!isShiftClick) {\n        setLastSelectedOption(currentOptionId);\n        return;\n      }\n\n      // Handle range selection only for checkbox type with shift+click\n      if (type !== 'checkbox' || !lastSelectedOption) {\n        setLastSelectedOption(currentOptionId);\n        return;\n      }\n\n      const sectionOptions = options.filter((opt) => opt.name === name);\n      const lastIndex = sectionOptions.findIndex((opt) => `${name}-${type}-${opt.value}` === lastSelectedOption);\n      const currentIndex = sectionOptions.findIndex((opt) => `${name}-${type}-${opt.value}` === currentOptionId);\n\n      if (lastIndex === -1 || currentIndex === -1) {\n        setLastSelectedOption(currentOptionId);\n        return;\n      }\n\n      const startIndex = Math.min(lastIndex, currentIndex);\n      const endIndex = Math.max(lastIndex, currentIndex);\n\n      // Get the current option to determine if we're selecting or deselecting\n      const currentOption = sectionOptions[currentIndex];\n      const shouldSelect = !currentOption.selected;\n\n      // Select/deselect all options in the range\n      for (let i = startIndex; i <= endIndex; i++) {\n        const option = sectionOptions[i];\n\n        // Only change selection if it's different from desired state\n        if (option.selected !== shouldSelect) {\n          dropdownContext.selectOption(option);\n        }\n      }\n\n      // Update last selected to current for future range selections\n      setLastSelectedOption(currentOptionId);\n    },\n    [dropdownContext, lastSelectedOption, name, setLastSelectedOption, type, options]\n  );\n\n  const sectionOptions = useMemo(() => {\n    return options\n      .filter((opt) => opt.name === name)\n      .map((props: InternalDropdownOptionProps) => {\n        const key = `${name}-${type}-${props.value}`;\n\n        const optionClassNames = classNames(props.className, {\n          'no-section-name': type !== 'checkbox' && stringToBoolean(hideLabel)\n        });\n\n        const newRef = createRef<HTMLLIElement>();\n\n        return (\n          <InternalDropdownOption\n            {...props}\n            key={key}\n            sectionOptionId={key}\n            ref={newRef}\n            className={optionClassNames}\n            darkMode={darkMode}\n            onRangeSelection={handleRangeSelection}\n          />\n        );\n      });\n  }, [options, name, type, handleRangeSelection, hideLabel, darkMode]);\n\n  useEffect(() => {\n    if (sectionNameRef.current && visibility) {\n      const sectionNameHeight = sectionNameRef.current.getBoundingClientRect().height;\n      sectionNameRef.current.setAttribute('data-section-name-height', `${sectionNameHeight}`);\n    }\n  }, [visibility, type]);\n\n  const labelVisible = !stringToBoolean(hideLabel);\n\n  return (\n    <ul className={sectionClassNames} role=\"group\" {...(labelVisible ? { 'aria-labelledby': name } : {})}>\n      {labelVisible && (\n        <li ref={sectionNameRef} className=\"section-name\" id={name} role=\"presentation\">\n          {label}\n        </li>\n      )}\n      {sectionOptions}\n    </ul>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { Icon } from '@/components/icon';\nimport React, { FC, KeyboardEvent as ReactKeyboardEvent, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { stringToBoolean } from '@/utils';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-select-all-section.css';\n\nexport interface InternalDropdownSelectAllSectionProps {\n  darkMode?: BooleanProp;\n  className?: string;\n  label: string;\n}\n\nexport const InternalDropdownSelectAllSection: FC<InternalDropdownSelectAllSectionProps> = ({ darkMode, className, label }) => {\n  const ref = useRef<HTMLLIElement>(null);\n\n  const dropdownContext = useInternalDropdownContext();\n  const visibility = dropdownContext.visibility;\n  const isAllDisabled = dropdownContext.isAllDisabled;\n  const isAllSelected = dropdownContext.isAllSelected;\n  const selectAll = dropdownContext.selectAll;\n  const last = dropdownContext.last;\n  const first = dropdownContext.first;\n  const next = dropdownContext.next;\n  const prev = dropdownContext.prev;\n  const hide = dropdownContext.hide;\n\n  const onKeydown = (evt: ReactKeyboardEvent<HTMLInputElement>) => {\n    const { code } = evt;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'ArrowUp':\n        prev();\n        break;\n      case 'ArrowDown':\n        next();\n        break;\n      case 'Home':\n        first();\n        break;\n      case 'End':\n        last();\n        break;\n      case 'Space':\n        evt.preventDefault();\n        selectAll();\n        break;\n      case 'Enter':\n      case 'NumpadEnter':\n        selectAll();\n        break;\n    }\n  };\n\n  const clickHandler = () => {\n    selectAll();\n  };\n  useEffect(() => {\n    const currentRef = ref.current;\n\n    const handler = (evt: KeyboardEvent) => {\n      if (evt.code === 'Tab') {\n        evt.stopPropagation();\n        evt.preventDefault();\n\n        hide();\n      }\n    };\n\n    if (currentRef) {\n      currentRef.addEventListener('keydown', handler, true);\n    }\n\n    return () => {\n      if (currentRef) {\n        currentRef.removeEventListener('keydown', handler, true);\n      }\n    };\n  }, [hide]);\n\n  useEffect(() => {\n    const currentRef = ref.current;\n\n    if (currentRef && visibility) {\n      const { height } = currentRef.getBoundingClientRect();\n      currentRef.setAttribute('data-select-all-section-height', `${height}`);\n    }\n  }, [visibility]);\n\n  const dropdownselectAllSectionClassNames = classNames('agora-dropdown-select-all-section', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const dropdownAllOptionClassNames = classNames('agora-dropdown-all-option', {\n    'is-selected': isAllSelected\n  });\n\n  return (\n    <ul className={dropdownselectAllSectionClassNames} role=\"presentation\">\n      <li ref={ref} className={dropdownAllOptionClassNames} role=\"application\" aria-roledescription=\" \">\n        <div\n          className=\"agora-dropdown-all-option-item\"\n          tabIndex={0}\n          role=\"checkbox\"\n          aria-checked={isAllSelected}\n          aria-disabled={isAllDisabled}\n          onKeyDown={onKeydown}\n          onClick={clickHandler}\n        >\n          <Icon name=\"agora-line-check\" aria-hidden />\n          <span>{label}</span>\n        </div>\n      </li>\n    </ul>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode, Ref, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport { InternalDropdownFilterSection, InternalDropdownFilterSectionRef } from './internal-dropdown-filter-section';\nimport { InternalNoResults } from './internal-dropdown-no-results';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSection } from './internal-dropdown-section';\nimport { InternalDropdownSelectAllSection } from './internal-dropdown-select-all-section';\nimport './internal-dropdown.css';\n\nexport interface InternalDropdownElement extends HTMLDivElement {\n  resetFilter: () => void;\n}\n\nexport interface InternalDropdownProps extends ComponentProps<'div'> {\n  darkMode?: BooleanProp;\n\n  optionsVisible?: number;\n\n  searchable?: BooleanProp;\n\n  searchAriaLabel?: string;\n\n  searchPlaceholder?: string;\n\n  noSearchResults?: ReactNode;\n\n  searchDebounceTimeout?: number;\n\n  onInputSearchChange?: (value: string) => void;\n\n  selectAllLabel?: string;\n}\n\nconst InternalDropdown: FC<InternalDropdownProps> = ({\n  ref = null,\n  darkMode,\n  selectAllLabel,\n  searchPlaceholder,\n  searchAriaLabel,\n  searchable,\n  optionsVisible = 6,\n  noSearchResults = '',\n  ...props\n}: InternalDropdownProps) => {\n  const context = useInternalDropdownContext();\n  const visibility = context.visibility;\n  const activeFilter = context.activeFilter;\n  const sections = context.sections;\n  const options = context.options;\n  const type = context.type;\n\n  const filterRef = useRef<InternalDropdownFilterSectionRef>(null);\n  const resetFilter = useCallback(() => {\n    if (searchable && filterRef.current) {\n      filterRef.current.resetFilter();\n    }\n  }, [searchable]);\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<InternalDropdownElement>(ref as Ref<InternalDropdownElement>, innerRef, { resetFilter } as InternalDropdownElement, [\n    resetFilter\n  ]);\n\n  const isOpenRef = useRef(false);\n\n  const [maxHeightStyleProp, setMaxHeightStyleProp] = useState('');\n\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const getFilterSectionHeight = useCallback(() => {\n    if (innerRef.current && searchable) {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-filter-section-item');\n\n      const elem = (queryResults[0] as HTMLDivElement) ?? null;\n\n      if (elem) {\n        const val = elem.getAttribute('data-filter-section-height');\n        return val ? Number(val) : 0;\n      }\n    }\n\n    return 0;\n  }, [searchable]);\n\n  const getSelectAllSectionHeight = useCallback(() => {\n    if (innerRef.current && type === 'checkbox') {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-all-option');\n\n      const elem = (queryResults[0] as HTMLDivElement) ?? null;\n\n      if (elem) {\n        const val = elem.getAttribute('data-select-all-section-height');\n        return val ? Number(val) : 0;\n      }\n    }\n\n    return 0;\n  }, [type]);\n\n  const getVisibleSectionNamesHeight = useCallback((visibleSections: string[]) => {\n    let heightCount = 0;\n\n    if (innerRef.current) {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-section .section-name');\n\n      queryResults.forEach((elem) => {\n        const sectionName = elem.getAttribute('data-section-option-id');\n\n        if (sectionName && visibleSections.includes(sectionName)) {\n          const val = elem.getAttribute('data-section-name-height');\n          heightCount = heightCount + (val ? Number(val) : 0);\n        }\n      });\n    }\n\n    return heightCount;\n  }, []);\n\n  const getVisibleOptionsHeight = useCallback(\n    (visibleOptions: InternalDropdownOptionProps[]) => {\n      let heightCount = 0;\n\n      if (innerRef.current) {\n        const visibleOptionsKeys = visibleOptions.map((opt) => `${opt.name}-${type}-${opt.value}`);\n\n        const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-section .agora-dropdown-option');\n\n        queryResults.forEach((elem) => {\n          const optionId = elem.getAttribute('data-section-option-id');\n\n          if (optionId && visibleOptionsKeys.includes(optionId)) {\n            const val = elem.getAttribute('data-section-option-height');\n            heightCount = heightCount + (val ? Number(val) : 0);\n          }\n        });\n      }\n\n      return heightCount;\n    },\n    [type]\n  );\n\n  const getListboxBorderWidths = useCallback(() => {\n    if (!innerRef.current) {\n      return 0;\n    }\n\n    const computedStyle = getComputedStyle(innerRef.current);\n\n    if (computedStyle) {\n      const borderTopWidth = parseFloat(computedStyle.borderTopWidth);\n      const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth);\n      return borderTopWidth + borderBottomWidth;\n    }\n\n    return 0;\n  }, [innerRef]);\n\n  useEffect(() => {\n    if (visibility) {\n      isOpenRef.current = true;\n    }\n  }, [visibility]);\n\n  useEffect(() => {\n    if (!visibility) return;\n\n    if (isOpenRef.current && innerRef.current) {\n      innerRef.current.scrollTop = 0;\n    }\n\n    const visibleOptions = options.filter((opt) => !opt.filtered);\n\n    if (visibleOptions.length > optionsVisible) {\n      const containedOptions = visibleOptions.slice(0, optionsVisible);\n      const visibleSections = [...new Set(containedOptions.map((opt) => opt.name ?? '').filter((opt) => !!opt))];\n\n      let maxHeight = 0;\n      maxHeight += getFilterSectionHeight();\n      maxHeight += getSelectAllSectionHeight();\n      maxHeight += getVisibleSectionNamesHeight(visibleSections);\n      maxHeight += getVisibleOptionsHeight(containedOptions);\n\n      if (maxHeight > 0) {\n        maxHeight += getListboxBorderWidths();\n        setMaxHeightStyleProp(`${maxHeight}px`);\n      } else {\n        setMaxHeightStyleProp('none');\n      }\n    } else {\n      setMaxHeightStyleProp('none');\n    }\n\n    isOpenRef.current = false;\n  }, [\n    visibility,\n    type,\n    activeFilter,\n    options,\n    optionsVisible,\n    getFilterSectionHeight,\n    getSelectAllSectionHeight,\n    getVisibleSectionNamesHeight,\n    getVisibleOptionsHeight,\n    getListboxBorderWidths\n  ]);\n\n  const dropdownClasses = classNames('agora-dropdown', propsClone.className, { visible: visibility });\n\n  const hasOptions = useMemo(() => options.length > 0, [options]);\n  const hasSectionsWithResults = useMemo(() => options.some((opt) => !opt.filtered), [options]);\n  const allSectionResultsDisabled = useMemo(() => {\n    const visibleResults = options.filter((opt) => !opt.filtered);\n    return hasSectionsWithResults && visibleResults.findIndex((opt) => !opt.disabled) === -1;\n  }, [hasSectionsWithResults, options]);\n  const sectionWithResults = useMemo(() => options.filter((opt) => !opt.filtered).map((opt) => opt.name), [options]);\n\n  return (\n    <div\n      className={dropdownClasses}\n      ref={innerRef}\n      style={{\n        maxHeight: maxHeightStyleProp === '' ? '0px' : maxHeightStyleProp,\n        overflowY: maxHeightStyleProp === '' ? 'hidden' : 'auto'\n      }}\n    >\n      <div {...propsClone} role=\"listbox\">\n        {searchable && (\n          <InternalDropdownFilterSection\n            ref={filterRef as Ref<HTMLInputElement>}\n            darkMode={darkMode}\n            aria-label={searchAriaLabel}\n            placeholder={searchPlaceholder}\n          />\n        )}\n\n        {type === 'checkbox' && hasSectionsWithResults && !allSectionResultsDisabled && selectAllLabel && (\n          <InternalDropdownSelectAllSection darkMode={darkMode} label={selectAllLabel} />\n        )}\n\n        {hasSectionsWithResults &&\n          sections\n            .filter((s) => sectionWithResults.indexOf(s.name) >= 0)\n            .map((section, index) => {\n              const key = `agora-dropdown-option-${propsClone.id}-${index}`;\n              return <InternalDropdownSection darkMode={darkMode} key={key} {...section} />;\n            })}\n\n        {(!hasOptions || !hasSectionsWithResults) && <InternalNoResults darkMode={darkMode} label={noSearchResults} />}\n      </div>\n    </div>\n  );\n};\n\nexport { InternalDropdown };\n","import { Children, ReactElement, RefObject, useCallback, useEffect, useMemo, useState } from 'react';\nimport { DropdownOptionProps } from '../dropdown-option';\nimport { DropdownSectionProps } from '../dropdown-section';\nimport { DropdownType } from '../dropdown-type';\nimport { InternalDropdownElement } from './internal-dropdown';\nimport { InternalDropdownContextProps } from './internal-dropdown-context';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSectionProps } from './internal-dropdown-section';\nimport { asyncTrigger } from '@/utils';\n\nexport const useDropdownState = (\n  internalDropdownRef: RefObject<InternalDropdownElement>,\n  type: DropdownType,\n  hideSectionNames: boolean,\n  onChange?: (options: DropdownOptionProps[]) => void,\n  onSearchChange?: (term: string, options: DropdownOptionProps[]) => void,\n  onShow?: () => void,\n  onHide?: () => void,\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]\n) => {\n  //  #region \"OPTIONS\"\n  const [sections, setSections] = useState<Array<InternalDropdownSectionProps>>([]);\n  const [options, setOptions] = useState<Array<InternalDropdownOptionProps>>([]);\n  const [backupOptions, setBackupOptions] = useState<InternalDropdownOptionProps[]>([]);\n  const [lastSelectedOption, setLastSelectedOption] = useState<string | undefined>(undefined);\n\n  useEffect(() => {\n    const parsedSectionProps: Array<InternalDropdownSectionProps> = [];\n    const parsedOptionProps: Array<InternalDropdownOptionProps> = [];\n\n    if (children) {\n      if (!Array.isArray(children)) {\n        parsedSectionProps.push({\n          ...children.props,\n          hideLabel: hideSectionNames\n        } as InternalDropdownSectionProps);\n      } else {\n        Children.forEach(children, (c) => {\n          parsedSectionProps.push({\n            ...c.props,\n            hideLabel: hideSectionNames\n          } as InternalDropdownSectionProps);\n        });\n      }\n    }\n\n    parsedSectionProps.forEach((sec) => {\n      Children.forEach(sec.children, (opt) => {\n        parsedOptionProps.push({\n          ...opt.props,\n          name: sec.name\n        });\n      });\n    });\n\n    setSections(parsedSectionProps);\n    setOptions(parsedOptionProps);\n    setBackupOptions(parsedOptionProps);\n  }, [children, type, hideSectionNames]);\n\n  //  #endregion \"OPTIONS\"\n\n  //  #region \"FILTER\"\n  const [activeFilter, setActiveFilter] = useState('');\n\n  const applyFilter = (newFilter: string) => {\n    setActiveFilter((lastFilter) => {\n      if (lastFilter === newFilter) {\n        return lastFilter;\n      }\n\n      setOptions((lastOptions) => {\n        const newOptions = lastOptions.map((opt) => {\n          if (newFilter === '') {\n            //  CLEAR FILTER\n            return { ...opt, filtered: false };\n          }\n\n          const val = opt.value.toLowerCase();\n          const childrenVal = opt.children?.toString().toLowerCase();\n\n          const notFound = !val.includes(newFilter) && !childrenVal?.toString().includes(newFilter);\n\n          return {\n            ...opt,\n            filtered: notFound\n          };\n        });\n\n        if (onSearchChange) {\n          const results = newOptions.filter((opt) => !opt.filtered);\n          onSearchChange(newFilter, results);\n        }\n\n        return newOptions;\n      });\n\n      return newFilter;\n    });\n  };\n\n  const resetFilter = useCallback((): void => {\n    setActiveFilter('');\n    setOptions(backupOptions);\n  }, [backupOptions]);\n\n  //  #endregion \"FILTER\"\n\n  //  #region \"NAVIGATION\"\n\n  const focusElem = (elem?: HTMLElement) => {\n    if (elem) {\n      elem.focus();\n      elem.scrollIntoView({ behavior: 'instant', block: 'center', inline: 'start' });\n    }\n  };\n\n  const first = useCallback(() => {\n    if (internalDropdownRef.current) {\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      const idx = Array.from(domOptions).findIndex((opt) => {\n        return (opt as HTMLElement).tabIndex === 0;\n      });\n\n      if (idx >= 0) {\n        focusElem(domOptions[idx] as HTMLElement);\n      }\n    }\n  }, [internalDropdownRef]);\n\n  const last = useCallback(() => {\n    if (internalDropdownRef.current) {\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const idx = Array.from(domOptions).findLastIndex((opt) => {\n          return (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef]);\n\n  const next = useCallback((): void => {\n    if (internalDropdownRef.current) {\n      const current = document.activeElement;\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const currentIndex = Array.from(domOptions).findIndex((opt) => {\n          return opt.isEqualNode(current);\n        });\n\n        const idx = Array.from(domOptions).findIndex((opt, i) => {\n          return i > currentIndex && (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef]);\n\n  const prev = useCallback((): void => {\n    if (internalDropdownRef.current) {\n      const current = document.activeElement;\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const currentIndex = Array.from(domOptions).findIndex((opt) => {\n          return opt.isEqualNode(current);\n        });\n\n        const idx = Array.from(domOptions).findLastIndex((opt, i) => {\n          return i < currentIndex && (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef]);\n\n  //  #endregion \"NAVIGATION\"\n\n  //  #region \"VISIBILITY\"\n  const [visibility, setVisibility] = useState(false);\n\n  const show = useCallback(() => {\n    if (internalDropdownRef.current) {\n      onShow?.();\n      internalDropdownRef.current?.scrollTo?.(0, 0);\n    }\n\n    setVisibility(true);\n  }, [onShow, internalDropdownRef]);\n\n  const hide = useCallback(() => {\n    onHide?.();\n    setVisibility(false);\n    resetFilter();\n  }, [resetFilter, onHide]);\n\n  //  #endregion \"VISIBILITY\"\n\n  //  #region \"SELECTION\"\n  const triggerOnChange = useCallback(\n    (newOptions: InternalDropdownOptionProps[]) => {\n      const selectedOptions = newOptions\n        .filter((o) => o.selected)\n        .map((o) => {\n          return {\n            selected: o.selected,\n            value: o.value,\n            className: o.className,\n            disabled: o.disabled,\n            hasIcon: o.hasIcon,\n            icon: o.icon,\n            iconPosition: o.iconPosition,\n            children: o.children\n          } as DropdownOptionProps;\n        });\n\n      if (type === 'text' && selectedOptions.length > 0) {\n        hide();\n      }\n\n      //  NEED THIS TO PREVENT MULTIPLE SET STATES WITH RENDERING IN PROCESS\n      //  BY SETTING THIS SET TIMEOUT WE ALLOW REACT TO FULLY RENDER AND THEN TRIGGER THE ONCHANGE\n      //  ON CHANGE MY SET A NEW STATE ON DROPDOWN AND INITIATE A NEW RENDER OF THE COMPONENT\n      asyncTrigger(() => onChange?.(selectedOptions));\n    },\n    [onChange, hide, type]\n  );\n\n  const isMultiSelection = useMemo(() => {\n    return type === 'checkbox';\n  }, [type]);\n\n  const selectOption = useCallback(\n    (option: InternalDropdownOptionProps): void => {\n      if (option.disabled || option.filtered) {\n        return;\n      }\n\n      setOptions((lastOptions) => {\n        const newOptions = lastOptions.map((opt) => {\n          const isProvidedOption = option.name === opt.name && option.value === opt.value;\n\n          if (isMultiSelection) {\n            return {\n              ...opt,\n              selected: isProvidedOption ? !opt.selected : opt.selected\n            };\n          }\n\n          return {\n            ...opt,\n            selected: isProvidedOption ? !opt.selected : false\n          };\n        });\n\n        triggerOnChange(newOptions);\n\n        return newOptions;\n      });\n    },\n    [setOptions, isMultiSelection, triggerOnChange]\n  );\n\n  const isAllSectionOptionsSelected = useCallback(\n    (sectionName: string): boolean => {\n      const availableOptions = options.filter((opt) => opt.name === sectionName && !opt.filtered && !opt.disabled);\n      const hasOptionsUnselected = availableOptions.some((opt) => !opt.selected);\n      return availableOptions.length > 0 && !hasOptionsUnselected;\n    },\n    [options]\n  );\n\n  const selectSectionOptions = useCallback(\n    (sectionName: string): void => {\n      setOptions((lastOptions) => {\n        const allOptionsSelected = isAllSectionOptionsSelected(sectionName);\n\n        const newOptions = lastOptions.map((opt) => {\n          const isInSectionProvided = sectionName === opt.name;\n          return {\n            ...opt,\n            selected: !opt.filtered && !opt.disabled && isInSectionProvided ? !allOptionsSelected : opt.selected\n          };\n        });\n\n        triggerOnChange(newOptions);\n\n        return newOptions;\n      });\n    },\n    [setOptions, isAllSectionOptionsSelected, triggerOnChange]\n  );\n\n  const hasSectionOptionsToInteract = useCallback(\n    (sectionName: string): boolean => {\n      const availableOptions = options.filter((opt) => opt.name === sectionName && !opt.filtered && !opt.disabled);\n      return availableOptions.length > 0;\n    },\n    [options]\n  );\n\n  const isAllSelected = useMemo(() => {\n    const availableOptions = options.filter((opt) => !opt.filtered && !opt.disabled);\n    const hasOptionsUnselected = availableOptions.some((opt) => !opt.selected);\n    return availableOptions.length > 0 && !hasOptionsUnselected;\n  }, [options]);\n\n  const isAllDisabled = useMemo(() => {\n    const availableOptions = options.filter((opt) => !opt.filtered);\n    const hasOptionsNotDisabled = availableOptions.some((opt) => !opt.disabled);\n    return availableOptions.length > 0 && !hasOptionsNotDisabled;\n  }, [options]);\n\n  const selectedOptions = useMemo(() => {\n    const availableOptions = options.filter((opt) => !opt.filtered && !opt.disabled);\n    return availableOptions.filter((opt) => opt.selected);\n  }, [options]);\n\n  const selectAll = useCallback((): void => {\n    setOptions((lastOptions) => {\n      const newOptions = lastOptions.map((opt) => {\n        return {\n          ...opt,\n          selected: !opt.filtered && !opt.disabled ? !isAllSelected : opt.selected\n        };\n      });\n\n      triggerOnChange(newOptions);\n\n      return newOptions;\n    });\n  }, [setOptions, isAllSelected, triggerOnChange]);\n\n  //  #endregion \"SELECTION\"\n\n  return {\n    type,\n    sections,\n    options,\n    selectedOptions,\n\n    visibility,\n    show,\n    hide,\n\n    first,\n    prev,\n    next,\n    last,\n\n    selectOption,\n    hasSectionOptionsToInteract,\n    selectSectionOptions,\n    isAllSectionOptionsSelected,\n\n    isAllDisabled,\n    isAllSelected,\n    selectAll,\n\n    applyFilter,\n    activeFilter,\n    resetFilter,\n    lastSelectedOption,\n    setLastSelectedOption\n  } as InternalDropdownContextProps;\n};\n","import { BooleanProp } from '@/models';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, ReactNode, Ref, useEffect, useRef } from 'react';\n\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport { DropdownOptionProps } from './dropdown-option';\nimport { DropdownSectionProps } from './dropdown-section';\nimport { DropdownType } from './dropdown-type';\nimport { InternalDropdown, InternalDropdownElement } from './internals/internal-dropdown';\nimport { InternalDropdownContext, InternalDropdownContextProps } from './internals/internal-dropdown-context';\nimport { useDropdownState } from './internals/use-dropdown-state';\n\nexport interface DropdownElement extends HTMLDivElement {\n  visibility: boolean;\n  show: () => void;\n  hide: () => void;\n  first: () => void;\n  last: () => void;\n  selectedOptions: DropdownOptionProps[];\n  applyFilter: (filter: string) => void;\n  resetFilter: () => void;\n}\n\nexport interface DropdownProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   *  The flag to set dark mode as active or not.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Toggles visibility on section names. It also removes the name from accessibility tree.\n   */\n  hideSectionNames?: BooleanProp;\n  /**\n   *  Number of visible options to display in the Dropdown. Remaining items will be accessible via scroll bar.\n   */\n  optionsVisible?: number;\n  /**\n   *  Define the type of sections that will be used. They can be of type \"text\" or \"checkbox\".\n   */\n  type?: DropdownType;\n  /**\n   *  Callback to run whenever the dropdown becomes visible.\n   */\n  onShow?: () => void;\n  /**\n   *  Callback to run whenever the dropdown becomes hidden.\n   */\n  onHide?: () => void;\n  /**\n   *  List of section to render.\n   */\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[];\n  /**\n   *  Callback to run whenever the select state of an option changes.\n   */\n  onChange?: (options: DropdownOptionProps[]) => void;\n  /**\n   *  Enable the search bar to filter options.\n   */\n  searchable?: BooleanProp;\n  /**\n   *  Accessible text for the input search bar.\n   */\n  searchAriaLabel?: string;\n  /**\n   *  Placeholder text for input search bar.\n   */\n  searchPlaceholder?: string;\n  /**\n   *  Text to show when filtering return no results.\n   */\n  noSearchResults?: ReactNode;\n  /**\n   *  Delay to apply before starting filtering results.\n   */\n  searchDebounceTimeout?: number;\n  /**\n   *  Callback to run whenever the filter runs. Called using the filter term and the filtered result options.\n   */\n  onSearchChange?: (value: string, options: DropdownOptionProps[]) => void;\n  /**\n   *  Text to display in the \"select all options across all sections\" option.\n   */\n  selectAllLabel?: string;\n  /**\n   *  Controls the visibility of the dropdown. If not provided, the component will manage its own state.\n   */\n  showDropdown?: boolean;\n}\n\nexport const showDropdownHandler = (showDropdown: boolean | undefined, dropdownState: InternalDropdownContextProps) => {\n  if (showDropdown === undefined) return;\n\n  if (showDropdown) {\n    dropdownState.show();\n  } else {\n    dropdownState.hide();\n  }\n};\n\nconst Dropdown: FC<DropdownProps> = ({\n  showDropdown,\n  ref = null,\n  darkMode = false,\n  type = 'text',\n  onChange,\n  onSearchChange,\n  onShow,\n  onHide,\n  children,\n  hideSectionNames = false,\n  ...props\n}) => {\n  const innerRef = useRef<InternalDropdownElement>(null!);\n\n  const dropdownState = useDropdownState(\n    innerRef,\n    type,\n    stringToBoolean(hideSectionNames),\n    onChange,\n    onSearchChange,\n    onShow,\n    onHide,\n    children\n  );\n\n  useEffect(() => showDropdownHandler(showDropdown, dropdownState), [dropdownState, showDropdown]);\n\n  //  CALL ON CHANGE TO INITIALIZE COMPONENTS THAT USE DROPDOWN WITH INITIAL DATA\n  const firstCall = useRef(false);\n  useEffect(() => {\n    if (!firstCall.current) {\n      firstCall.current = true;\n\n      const options: DropdownOptionProps[] = [];\n\n      Children.forEach(children, (sectionChild) => {\n        if (isValidElement<DropdownSectionProps>(sectionChild)) {\n          Children.forEach(sectionChild.props.children, (optionChild) => {\n            if (isValidElement<DropdownOptionProps>(optionChild) && optionChild.props.selected) {\n              options.push(optionChild.props);\n            }\n          });\n        }\n      });\n    }\n  }, [children]);\n\n  // Close dropdown when clicking outside of it\n  useEffect(() => {\n    const handleMouseDown = (evt: MouseEvent) => {\n      if (!dropdownState.visibility) return;\n\n      const target = evt.target as HTMLElement | null;\n      if (!target) return;\n\n      if (innerRef.current?.contains(target)) return;\n\n      // Ignores clicks on the related combobox to allow toggling from outside the component\n      if (target.closest('[role=\"combobox\"]')) return;\n\n      dropdownState.hide();\n    };\n\n    document.addEventListener('mousedown', handleMouseDown);\n\n    return () => {\n      document.removeEventListener('mousedown', handleMouseDown);\n    };\n  }, [dropdownState]);\n\n  useExpandedRef<DropdownElement>(\n    ref as Ref<DropdownElement>,\n    innerRef,\n    {\n      visibility: dropdownState.visibility,\n      show: dropdownState.show,\n      hide: dropdownState.hide,\n      first: dropdownState.first,\n      last: dropdownState.last,\n      selectedOptions: dropdownState.selectedOptions,\n      applyFilter: dropdownState.applyFilter,\n      resetFilter: dropdownState.resetFilter\n    } as DropdownElement,\n    [\n      dropdownState.hide,\n      dropdownState.show,\n      dropdownState.first,\n      dropdownState.last,\n      dropdownState.visibility,\n      dropdownState.selectedOptions,\n      dropdownState.applyFilter,\n      dropdownState.resetFilter\n    ]\n  );\n\n  return (\n    <InternalDropdownContext value={dropdownState}>\n      <InternalDropdown {...props} ref={innerRef} darkMode={darkMode}>\n        {children}\n      </InternalDropdown>\n    </InternalDropdownContext>\n  );\n};\n\nexport { Dropdown };\n","import React, { FC, ReactElement } from 'react';\nimport { DropdownOptionProps } from './dropdown-option';\n\nexport interface DropdownSectionProps {\n  /**\n   * Additional classnames to use in the section.\n   */\n  className?: string;\n  /**\n   * Unique group name identifier for the section.\n   */\n  name: string;\n  /**\n   * Label for the group section.\n   */\n  label?: string;\n  /**\n   * List section options.\n   */\n  children: ReactElement<DropdownOptionProps> | ReactElement<DropdownOptionProps>[];\n}\n\nexport const DropdownSection: FC<DropdownSectionProps> = () => <></>;\n","import React, { FC, ReactNode } from 'react';\nimport { BooleanProp, IconPosition } from '@/models';\n\nexport interface DropdownOptionProps {\n  /**\n   * Additional classnames to set to the option.\n   */\n  className?: string;\n  /**\n   * The value of the option.\n   */\n  value: string;\n  /**\n   * Visual representation of the option.\n   */\n  children: ReactNode;\n  /**\n   * Enables icon placement.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon to use.\n   */\n  icon?: string;\n  /**\n   * Defines the positioning of the icon.\n   */\n  iconPosition?: IconPosition;\n  /**\n   * Sets the option in the disable state.\n   */\n  disabled?: BooleanProp;\n  /**\n   * Sets the option in the selected state.\n   */\n  selected?: BooleanProp;\n}\n\nexport const DropdownOption: FC<DropdownOptionProps> = () => <></>;\n","import React, {\n  Children,\n  cloneElement,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  Ref,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport { AvatarProps } from '@/components/avatar';\nimport { Button } from '@/components/button';\nimport { Dropdown, DropdownElement, DropdownOption, DropdownSection } from '@/components/dropdown';\n\nexport interface VisibleCountAvatarGroupProps extends ComponentPropsWithoutRef<'div'> {\n  children: ReactElement<AvatarProps> | Array<ReactElement<AvatarProps>>;\n  visibleCount: number;\n  avatarCount: number;\n  visibleCountAriaLabel?: string;\n}\n\nexport const handleWithAvailableSpace = (containerDropdownRef: HTMLDivElement | null, containerRef: HTMLDivElement | null) => {\n  if (!containerDropdownRef || !containerRef) {\n    return false;\n  }\n\n  const distanceFromLeft = containerRef.getBoundingClientRect().left ?? 0;\n  const freeSpace = window.innerWidth - distanceFromLeft;\n  const result = freeSpace - containerDropdownRef.clientWidth;\n\n  containerDropdownRef.style.left = `${result >= 0 ? 0 : result}px`;\n  return true;\n};\n\nexport const VisibleCountAvatarGroup: FC<VisibleCountAvatarGroupProps> = ({\n  avatarCount,\n  visibleCount,\n  visibleCountAriaLabel,\n  children\n}) => {\n  const containerDropdownRef = useRef<HTMLDivElement>(null);\n\n  const hoverBridgeClassname = 'pt-56';\n\n  const generatedId = useId();\n\n  const countValue = visibleCount >= 0 ? `+${avatarCount - visibleCount}` : `+${avatarCount}`;\n\n  const avatarCountList = Children.map(children, (avatar, index) => {\n    if (index >= visibleCount && isValidElement(avatar)) {\n      return cloneElement(avatar);\n    }\n\n    return null;\n  });\n\n  const dropdownRef = useRef<DropdownElement>(null);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    buttonRef.current?.focus();\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n    dropdownRef.current?.first();\n  };\n\n  const handleKeydown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n    if (code === 'Escape' && dropdownRef.current) {\n      dropdownRef.current.hide();\n    }\n  };\n\n  const handleClick = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const onMouseEnterHandler = () => {\n    dropdownRef.current?.show();\n  };\n\n  const onMouseLeaveHandler = () => {\n    dropdownRef.current?.hide();\n  };\n\n  useEffect(() => {\n    const currentContainerRef = containerRef.current;\n\n    if (currentContainerRef) {\n      currentContainerRef.addEventListener('mouseenter', onMouseEnterHandler);\n      currentContainerRef.addEventListener('mouseleave', onMouseLeaveHandler);\n    }\n\n    return () => {\n      if (currentContainerRef) {\n        currentContainerRef.removeEventListener('mouseenter', onMouseEnterHandler);\n        currentContainerRef.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    };\n  }, []);\n\n  return (\n    <div\n      ref={containerRef}\n      className=\"avatar-visible-count-wrapper\"\n      onMouseOver={() => handleWithAvailableSpace(containerDropdownRef.current, containerRef.current)}\n      onFocus={() => {}}\n    >\n      <Button\n        ref={buttonRef}\n        className=\"avatar-visible-count\"\n        onClick={handleClick}\n        onKeyDown={handleKeydown}\n        role=\"combobox\"\n        aria-expanded={isDropdownVisible}\n        aria-controls={`${generatedId}-dropdown-avatar-group-container`}\n        aria-label={countValue}\n      >\n        <span aria-hidden>{countValue}</span>\n      </Button>\n\n      <div className={hoverBridgeClassname}>\n        <div ref={containerDropdownRef} className=\"absolute bottom-8 left-0 w-full min-w-[296px]\">\n          <Dropdown\n            id={`${generatedId}-dropdown-avatar-group-container`}\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            onHide={onHide}\n            onShow={onShow}\n            type=\"text\"\n            hideSectionNames\n          >\n            <DropdownSection name={`avatar-list-${generatedId}`} aria-label={visibleCountAriaLabel}>\n              {avatarCountList.map((avatar, index) => {\n                const avatarKey = `avatar-group-${generatedId}-option-${index}`;\n                if (avatar.props.avatarType !== 'initials') {\n                  return (\n                    <DropdownOption\n                      key={avatarKey}\n                      value={avatar.props.information?.toString() ?? ''}\n                      hasIcon\n                      icon={avatar.props.srcPath}\n                      iconPosition=\"leading\"\n                    >\n                      {avatar.props.information}\n                    </DropdownOption>\n                  );\n                } else {\n                  return (\n                    <DropdownOption key={avatarKey} value={avatar.props.information?.toString() ?? ''}>\n                      <div className=\"dropdown-option-content\">\n                        <div className=\"avatar-type-initials\">{avatar}</div>\n                        {avatar.props.information}\n                      </div>\n                    </DropdownOption>\n                  );\n                }\n              })}\n            </DropdownSection>\n          </Dropdown>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, cloneElement, ComponentPropsWithoutRef, FC, isValidElement, ReactElement, useId } from 'react';\nimport { AvatarProps } from '../avatar';\nimport './avatar-group.css';\nimport { VisibleCountAvatarGroup } from './visible-count-avatar-group';\n\nexport interface AvatarGroupProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * List of avatar components to use as children of the group.\n   */\n  children: ReactElement<AvatarProps> | Array<ReactElement<AvatarProps>>;\n  /**\n   * Number of avatars that will be visible in the group. Once it exceeds that number a separate icon will show how many more avatars there are left. Clicking on the icon with the number will preview the other avatars as well.\n   */\n  visibleCount?: number;\n  /**\n   * Accessible text for the dropdown containing the remaining avatars.\n   */\n  visibleCountAriaLabel?: string;\n  /**\n   * Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst AvatarGroup: FC<AvatarGroupProps> = ({\n  className,\n  children,\n  visibleCount,\n  darkMode,\n  visibleCountAriaLabel,\n  ...props\n}): ReactElement => {\n  const generatedAvatarGroupId = useId();\n\n  const avatarGroupClasses = classNames('avatar-group', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const avatarCount = Children.toArray(children).length;\n  const totalVisibleAvatars = visibleCount ?? avatarCount;\n\n  const renderAvatarListItem = (child: ReactElement<AvatarProps>, index: number) => {\n    const id = `avatar-group-${generatedAvatarGroupId}-avatar-${index}`;\n\n    return (\n      <li key={id}>\n        {cloneElement<AvatarProps>(child, {\n          darkMode\n        } as AvatarProps)}\n      </li>\n    );\n  };\n\n  return (\n    <ul {...props} className={avatarGroupClasses}>\n      {Children.map(children, (child, index) => {\n        if (index < totalVisibleAvatars && isValidElement(child)) {\n          return renderAvatarListItem(child, index);\n        }\n\n        return null;\n      })}\n      {avatarCount > totalVisibleAvatars && (\n        <li key={`avatar-group-${generatedAvatarGroupId}-visible-count`}>\n          <VisibleCountAvatarGroup\n            visibleCount={totalVisibleAvatars}\n            avatarCount={avatarCount}\n            visibleCountAriaLabel={visibleCountAriaLabel}\n          >\n            {children}\n          </VisibleCountAvatarGroup>\n        </li>\n      )}\n    </ul>\n  );\n};\n\nexport { AvatarGroup };\n","import React, { ComponentProps, FC, ReactElement, ReactNode, useId } from 'react';\n\nimport { Button } from '@/components/button';\nimport { Tooltip, TooltipAlignment, TooltipPosition, TooltipVariant } from '@/components/tooltip';\nimport { BooleanProp } from '@/models';\nimport classNames from 'classnames';\n\nexport interface BackToTopProps extends ComponentProps<'button'> {\n  /**\n   * The variant of the Tooltip.\n   */\n  tooltipVariant?: TooltipVariant;\n  /**\n   * Position of the tooltip to shows when the user focus or hovers the component.\n   */\n  tooltipPosition?: TooltipPosition;\n  /**\n   * Alignment of the tooltip shown whenever the user focus or hovers the component.\n   */\n  tooltipAlignment?: TooltipAlignment;\n  /**\n   * If the Tooltip has a title.\n   */\n  hasTooltipTitle?: BooleanProp;\n  /**\n   * The title of the Tooltip.\n   */\n  tooltipTitle?: ReactNode;\n  /**\n   * Tooltip description to show when user focus or hovers the component.\n   */\n  tooltipDescription: ReactNode;\n}\n\nconst BackToTop: FC<BackToTopProps> = ({\n  ref = null,\n  tooltipVariant = 'light',\n  tooltipAlignment = 'start',\n  tooltipPosition = 'right',\n  hasTooltipTitle,\n  tooltipTitle,\n  tooltipDescription,\n  ...props\n}): ReactElement => {\n  const backToTopClassName = classNames('!rounded-full shadow-bottom-higher', props.className);\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const goToTop = () => {\n    window.scrollTo({\n      top: 0,\n      behavior: 'smooth'\n    });\n  };\n\n  return (\n    <Tooltip\n      id={`tooltip-${propsClone.id}`}\n      variant={tooltipVariant}\n      alignment={tooltipAlignment}\n      position={tooltipPosition}\n      hasTitle={hasTooltipTitle}\n      title={tooltipTitle}\n      description={tooltipDescription}\n    >\n      <Button\n        {...propsClone}\n        ref={ref}\n        hasIcon\n        leadingIcon=\"agora-line-chevron-up\"\n        leadingIconHover=\"agora-line-chevron-up\"\n        iconOnly\n        onClick={goToTop}\n        className={backToTopClassName}\n      />\n    </Tooltip>\n  );\n};\n\nexport { BackToTop };\n","import React, { FC, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor } from '@/components/anchor';\nimport { BreadcrumbProps } from '@/components/breadcrumb';\nimport { Icon } from '@/components/icon';\n\nimport './breadcrumb-desktop.css';\n\nexport const BreadcrumbDesktop: FC<BreadcrumbProps> = ({ items, darkMode, ...props }) => {\n  const generatedId = useId();\n\n  const ariaLabel = props['aria-label'] ?? 'Breadcrumb';\n\n  const BreadcrumbClassName = classNames(props.className, 'agora-breadcrumb-desktop');\n  const iconClassName = classNames('mx-[4px]', {\n    'fill-white': darkMode,\n    'fill-[var(--color-neutral-900)]': !darkMode\n  });\n\n  return (\n    <nav className={BreadcrumbClassName} aria-label={ariaLabel}>\n      <ol className=\"flex gap-y-8 flex-wrap items-center\">\n        {items.map((link, index) => {\n          const key = `${generatedId}-${index}`;\n\n          return (\n            <li key={key} className=\"flex flex-row items-center\">\n              {index !== 0 && <Icon name=\"agora-line-chevron-right\" dimensions=\"m\" aria-hidden=\"true\" className={iconClassName} />}\n              {index === items.length - 1 || !link.url ? (\n                <span aria-current=\"page\">{link.label}</span>\n              ) : (\n                <Anchor\n                  darkMode={darkMode}\n                  variant=\"neutral\"\n                  appearance=\"text\"\n                  href={link.url}\n                  className=\"text-s-regular !underline-offset-8\"\n                >\n                  {link.label}\n                </Anchor>\n              )}\n            </li>\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n","import React, { FC, KeyboardEvent as ReactKeyboardEvent, useEffect, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor } from '@/components/anchor';\nimport { BreadcrumbProps } from '@/components/breadcrumb';\nimport { Button } from '@/components/button';\n\nimport './breadcrumb-mobile.css';\n\nexport const BreadcrumbMobile: FC<BreadcrumbProps> = ({ sectionTitle, items, darkMode, ...props }) => {\n  const generatedId = useId();\n  const [isExpanded, setIsExpanded] = useState(false);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const listRef = useRef<HTMLOListElement>(null);\n  const BreadcrumbClassName = classNames(props.className, 'agora-breadcrumb-mobile');\n  const breadcrumbIndents = Array.from({ length: items.length }, (_, index) => `${index * 8}px`);\n\n  const ariaLabel = props['aria-label'] ?? 'Breadcrumb';\n\n  /**\n   * Function used to close the breadcrumb menu.\n   */\n  const closeMenuClickHandler = (evt: MouseEvent) => {\n    if (listRef?.current && evt.target && !listRef.current.contains(evt.target as HTMLElement)) {\n      setIsExpanded(false);\n    }\n  };\n\n  const handleTabKey = (evt: ReactKeyboardEvent<HTMLAnchorElement>) => {\n    const linkList = listRef.current?.querySelectorAll('a');\n    const target = evt.target as HTMLAnchorElement;\n    const liParentNode = target.parentNode as HTMLLIElement;\n\n    if (linkList && linkList.length > 1) {\n      if (evt.shiftKey) {\n        const firstLiChild = linkList[0].parentNode as HTMLLIElement;\n        if (firstLiChild === liParentNode) {\n          evt.preventDefault();\n          linkList[linkList.length - 1]?.focus();\n        }\n      } else {\n        const lastLiWithChildAnchor = linkList[linkList.length - 1].parentNode as HTMLLIElement;\n        if (lastLiWithChildAnchor === liParentNode) {\n          evt.preventDefault();\n          linkList[0]?.focus();\n        }\n      }\n    }\n  };\n\n  /**\n   * Function used to set Keyboard Keydown Behavior.\n   */\n  const setKeyboardKeydownBehavior = (evt: ReactKeyboardEvent<HTMLAnchorElement>) => {\n    if (evt.key === 'Escape' || evt.key === 'Esc') {\n      setIsExpanded(false);\n      buttonRef.current?.focus();\n    }\n\n    if (evt.key === 'Tab') {\n      handleTabKey(evt);\n    }\n\n    if (evt.key === 'Enter') {\n      setIsExpanded(false);\n    }\n  };\n\n  /**\n   * Used to setup the Event Listeners (mouse and keyboard).\n   */\n  useEffect(() => {\n    if (isExpanded) {\n      document.addEventListener('mousedown', closeMenuClickHandler);\n\n      /**\n       * Focus the first link when opening the menu.\n       */\n      const firstLink = listRef.current?.querySelectorAll('a');\n      if (firstLink && firstLink?.length > 0) {\n        firstLink[0]?.focus();\n      }\n    }\n\n    return () => {\n      document.removeEventListener('mousedown', closeMenuClickHandler);\n    };\n  }, [isExpanded]);\n\n  /**\n   * Function used to Expand the breadcrumb Menu.\n   */\n  const expandMenu = () => {\n    setIsExpanded((expanded) => {\n      return !expanded;\n    });\n  };\n\n  return (\n    <nav aria-label={ariaLabel} className={BreadcrumbClassName}>\n      <Button\n        type=\"button\"\n        ref={buttonRef}\n        aria-expanded={isExpanded}\n        aria-controls={`agora-mobile-breadcrumb-menu-${generatedId}`}\n        onClick={expandMenu}\n        hasIcon\n        leadingIcon=\"agora-line-chevron-left\"\n        leadingIconHover=\"agora-solid-chevron-left\"\n        appearance=\"link\"\n        variant=\"neutral\"\n        darkMode={stringToBoolean(darkMode)}\n      >\n        {items.at(-1)?.label}\n      </Button>\n\n      <ol id={`agora-mobile-breadcrumb-menu-${generatedId}`} className={`${!isExpanded ? 'hidden' : 'flex'}`} ref={listRef}>\n        {sectionTitle && (\n          <li>\n            <p className=\"[&>*]:text-s-semibold  text-s-semibold [&>*]:text-[var(--color-neutral-500)] text-[var(--color-neutral-500)]\">\n              {sectionTitle}\n            </p>\n          </li>\n        )}\n        {items.map((link, index) => {\n          const id = `agora-mobile-breadcrumb-link-${generatedId}${index}`;\n          const breadcrumbItemIndent = breadcrumbIndents[index];\n\n          if (index === items.length - 1 || !link.url) {\n            return (\n              <li id={id} key={id} style={{ paddingLeft: breadcrumbItemIndent }}>\n                <span aria-current=\"page\" className=\"inline-flex items-center min-h-[44px]\">\n                  {link.label}\n                </span>\n              </li>\n            );\n          }\n\n          return (\n            <li id={id} key={id} style={{ paddingLeft: breadcrumbItemIndent }}>\n              <Anchor variant=\"neutral\" appearance=\"link\" href={link.url} onKeyDown={setKeyboardKeydownBehavior}>\n                {link.label}\n              </Anchor>\n            </li>\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n","import React, { FC, HTMLProps, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { BreadcrumbDesktop } from './desktop/breadcrumb-desktop';\nimport { BreadcrumbMobile } from './mobile/breadcrumb-mobile';\n\nexport interface BreadcrumbLink {\n  /**\n   * The Breadcrumb page link url.\n   */\n  url: string;\n  /**\n   * The Breadcrumb page link label.\n   */\n  label: ReactNode;\n}\n\nexport interface BreadcrumbProps extends HTMLProps<HTMLDivElement> {\n  /**\n   * The links that make up the breadcrumb in hierarchical order.\n   */\n  items: BreadcrumbLink[];\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Section title. Only visible on mobile resolutions.\n   */\n  sectionTitle?: ReactNode;\n}\n\nexport const Breadcrumb: FC<BreadcrumbProps> = ({ items, ...props }) => {\n  const baseClasses = classNames('agora-breadcrumb', props.className, {\n    'dark-mode': stringToBoolean(props.darkMode)\n  });\n\n  const desktopBreadcrumbClassnames = classNames(baseClasses, 'xs:hidden xl:flex');\n  const mobileBreadcrumbClassnames = classNames(baseClasses, 'xs:flex xl:hidden');\n\n  return (\n    <>\n      <BreadcrumbDesktop {...props} items={items} className={desktopBreadcrumbClassnames} />\n      <BreadcrumbMobile {...props} items={items} className={mobileBreadcrumbClassnames} />\n    </>\n  );\n};\n","import React, {\n  ChangeEvent,\n  Children,\n  cloneElement,\n  ComponentProps,\n  FC,\n  isValidElement,\n  ReactElement,\n  Ref,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { ToggleAppearance, ToggleProps, ToggleVariant } from '@/components/toggle';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport './toggle-group.css';\nimport { useWindowSize } from '@/hooks';\n\nexport type ToggleGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface ToggleGroupElement extends HTMLDivElement {\n  /**\n   *  Current checked values of the toggle group.\n   */\n  value: string[];\n}\n\nexport interface ToggleGroupProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Defines the appearance of the children toggles.\n   */\n  appearance?: ToggleAppearance;\n  /**\n   * Defines if the children toggles are full width.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Toggles the dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines the variant of the children toggles.\n   */\n  variant?: ToggleVariant;\n  /**\n   * List of toggle components to aggregate.\n   */\n  children?: ReactElement<ToggleProps> | ReactElement<ToggleProps>[];\n  /**\n   * Defines the orientation of the toggle group.\n   */\n  orientation?: ToggleGroupOrientation;\n  /**\n   * Defines if it is allowed to have more than one toggle checked.\n   */\n  multiple?: BooleanProp;\n  /**\n   * Defines the checked toggle or toggles.\n   */\n  value?: string | string[];\n  /**\n   * Defines the default checked toggle or toggles.\n   */\n  defaultValue?: string | string[];\n  /**\n   * Event handler called whenever one of the children toggles changes their checked value.\n   */\n  onChange?: (val: string[]) => void;\n  /**\n   * React ref object to the toggle group.\n   */\n  ref?: Ref<ToggleGroupElement>;\n}\n\nexport const useHandlerOrientationChange = (\n  ignoreHandlerOrientation: boolean,\n  innerRef: React.RefObject<HTMLDivElement | null>,\n  orientationState: ToggleGroupOrientation,\n  setOrientationState: React.Dispatch<React.SetStateAction<ToggleGroupOrientation>>,\n  componentWidth: number,\n  setComponentWidth: React.Dispatch<React.SetStateAction<number>>\n) => {\n  const { width } = useWindowSize();\n  if (ignoreHandlerOrientation) return;\n  const currentComponentWidth = innerRef.current?.offsetWidth || 0;\n\n  if (currentComponentWidth > componentWidth) {\n    setComponentWidth(currentComponentWidth);\n  }\n\n  if (componentWidth > width && orientationState === 'horizontal') {\n    setOrientationState('vertical');\n  }\n\n  if (componentWidth <= width && orientationState === 'vertical') {\n    setOrientationState('horizontal');\n  }\n};\n\nconst ToggleGroup: FC<ToggleGroupProps> = ({\n  ref = null,\n  appearance = 'button',\n  variant = 'primary',\n  fullWidth = false,\n  darkMode = false,\n  orientation = 'horizontal',\n  multiple = true,\n  value: valueFromProps,\n  defaultValue,\n  onChange: onChangeFromProps,\n  className,\n  children,\n  ...props\n}) => {\n  const [orientationState, setOrientationState] = useState(orientation);\n  const [componentWidth, setComponentWidth] = useState(0);\n\n  const generatedId = useId();\n  const toggleGroupClassName = classNames(\n    'agora-toggle-group',\n    orientationState,\n    { buttons: appearance === 'button' },\n    { icons: appearance === 'icon' },\n    { 'full-width': stringToBoolean(fullWidth) },\n    className\n  );\n\n  const isControlled = typeof valueFromProps !== 'undefined';\n\n  const hasDefaultValue = typeof defaultValue !== 'undefined';\n  const parsedDefaultValue = hasDefaultValue ? (!Array.isArray(defaultValue) ? [defaultValue] : defaultValue) : [];\n\n  const [internalValue, setInternalValue] = useState(hasDefaultValue ? parsedDefaultValue : []);\n\n  const value = isControlled ? (!Array.isArray(valueFromProps) ? [valueFromProps] : valueFromProps) : internalValue;\n\n  const parsedChildren = Children.map(children, (child, index) => {\n    if (!isValidElement<ToggleProps>(child)) {\n      return null;\n    }\n\n    const parsedChildValue = child.props.value ?? `${generatedId}-v-${index}`;\n\n    const checkedValues = stringToBoolean(multiple) ? value : [value[0]];\n\n    const isChecked = !!checkedValues.find((cv) => cv === parsedChildValue);\n\n    const onChange = (evt: ChangeEvent<HTMLInputElement>) => {\n      if (stringToBoolean(multiple)) {\n        let newVals = [...value];\n        if (newVals.find((v) => v === evt.target.value)) {\n          newVals = newVals.filter((v) => v !== evt.target.value);\n        } else {\n          newVals.push(evt.target.value);\n        }\n\n        setInternalValue(newVals);\n\n        onChangeFromProps?.(newVals);\n      } else {\n        const newVal = [evt.target.value];\n        onChangeFromProps?.(newVal);\n        setInternalValue(newVal);\n      }\n    };\n\n    return cloneElement(child, {\n      appearance,\n      variant,\n      fullWidth: stringToBoolean(fullWidth),\n      darkMode: stringToBoolean(darkMode),\n      value: parsedChildValue,\n      checked: isChecked,\n      defaultChecked: undefined,\n      onChange: onChange\n    });\n  });\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<HTMLDivElement>(\n    ref,\n    innerRef,\n    {\n      value: internalValue\n    } as ToggleGroupElement,\n    [internalValue]\n  );\n\n  const ignoreHandlerOrientation = !!(orientation === 'vertical' || fullWidth);\n\n  useHandlerOrientationChange(ignoreHandlerOrientation, innerRef, orientationState, setOrientationState, componentWidth, setComponentWidth);\n\n  return (\n    <div {...props} ref={innerRef} className={toggleGroupClassName} role={stringToBoolean(multiple) ? 'group' : 'radiogroup'}>\n      {parsedChildren}\n    </div>\n  );\n};\n\nexport { ToggleGroup };\n","import { ButtonProps, ButtonVariant } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  cloneElement,\n  FC,\n  HtmlHTMLAttributes,\n  isValidElement,\n  ReactElement,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport './button-group.css';\nimport { useHandlerOrientationChange } from '../toggle-group/toggle-group';\n\nexport type ButtonGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface ButtonGroupProps extends Omit<HtmlHTMLAttributes<HTMLDivElement>, 'onChange'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The variant of the buttons. This variants will define the background and border color of the given Button.\n   */\n  variant?: ButtonVariant;\n  /**\n   *Defines if the button should be fluid.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   *  List of button components to use as children of the group.\n   */\n  children?: ReactElement<ButtonProps> | Array<ReactElement<ButtonProps>>;\n  /**\n   * Defines vertical or horizontal orientation.\n   */\n  orientation?: ButtonGroupOrientation;\n}\n\nconst ButtonGroup: FC<ButtonGroupProps> = ({\n  variant = 'primary',\n  fullWidth = false,\n  children,\n  darkMode,\n  orientation = 'horizontal',\n  ...props\n}) => {\n  const [orientationState, setOrientationState] = useState(orientation);\n  const [componentWidth, setComponentWidth] = useState(0);\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const childrenButtons: Array<ReactElement<ButtonProps>> = useMemo(() => {\n    const ret: Array<ReactElement<ButtonProps>> = [];\n\n    if (Array.isArray(children)) {\n      children.forEach((child) => {\n        if (isValidElement<ButtonProps>(child)) {\n          ret.push(child);\n        }\n      });\n    } else if (isValidElement<ButtonProps>(children)) {\n      ret.push(children);\n    }\n\n    return ret;\n  }, [children]);\n\n  const buttonGroupClasses = classNames(\n    'button-group',\n    propsClone.className,\n    orientationState,\n    { full: stringToBoolean(fullWidth) },\n    { darkMode: stringToBoolean(darkMode) }\n  );\n\n  const buttonGroupContainer = classNames('agora-button-group', { 'w-fit': !stringToBoolean(fullWidth) });\n\n  const innerRef = useRef(null);\n\n  const ignoreHandlerOrientation = !!(orientation === 'vertical' || fullWidth);\n\n  useHandlerOrientationChange(ignoreHandlerOrientation, innerRef, orientationState, setOrientationState, componentWidth, setComponentWidth);\n\n  return (\n    <div ref={innerRef} className={buttonGroupContainer}>\n      {/* button group */}\n      <div {...propsClone} className={buttonGroupClasses} role=\"group\" aria-label={propsClone['aria-label']} id={propsClone.id}>\n        {Children.map(childrenButtons, (child, index) => {\n          return cloneElement<ButtonProps>(child, {\n            ...child.props,\n            id: child.props.id ?? `${propsClone.id}-button-${index}`,\n            variant: variant,\n            appearance: 'outline',\n            onClick: (evt) => {\n              child.props.onClick?.(evt);\n            },\n            darkMode: stringToBoolean(darkMode)\n          } as ButtonProps);\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport { ButtonGroup };\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './pill.css';\n\n/**\n * The available variants of the pill. This variants will define the background and border color of the pill.\n */\nexport type PillVariant = 'primary' | 'secondary' | 'neutral' | 'informative' | 'success' | 'warning' | 'danger';\n\n/**\n * The available pill appearances. Defines the pill shape.\n */\nexport type PillAppearance = 'solid' | 'outline';\n\n/**\n * The available pill size. Defines the pill size.\n */\nexport type PillSize = 'default' | 'large';\n\nexport interface PillProps extends ComponentProps<'div'> {\n  /**\n   * The pill appearance. Define the pill Shape.\n   */\n  appearance?: PillAppearance;\n  /**\n   * The variant of the pill. This variants will define the background and border color of the given Pill.\n   */\n  variant?: PillVariant;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Pill or Circular pill style.\n   */\n  circular?: BooleanProp;\n  /**\n   * Size of pill.\n   */\n  size?: PillSize;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const Pill: FC<PillProps> = ({\n  appearance = 'solid',\n  variant = 'primary',\n  children,\n  className,\n  circular = false,\n  size = 'default',\n  darkMode = false,\n  ...props\n}) => {\n  /**\n   * Building pill class name dynamically according parameters.\n   */\n  const pillClassName = classNames(\n    {\n      'inline-flex items-center justify-center': !props.hidden,\n      'agora-pill-circular': stringToBoolean(circular),\n      'agora-pill-large': size === 'large',\n      'dark-mode': stringToBoolean(darkMode)\n    },\n\n    `agora-pill agora-pill-${appearance}-${variant}`,\n    className\n  );\n\n  return (\n    <span className={pillClassName} {...props}>\n      <span className=\"children-wrapper\">{children}</span>\n    </span>\n  );\n};\n","import { RefObject, useCallback, useEffect } from 'react';\n\nexport interface IUseBlockedLink {\n  parentCardRef: RefObject<HTMLDivElement | null>;\n  anchorRef: RefObject<HTMLAnchorElement | null>;\n  blockedLink?: boolean;\n}\n\nconst useBlockedLink = ({ parentCardRef, anchorRef, blockedLink = false }: IUseBlockedLink) => {\n  const activateLink = useCallback(() => {\n    const event = new MouseEvent('click', {\n      detail: 1\n    });\n\n    anchorRef.current?.dispatchEvent(event);\n  }, [anchorRef]);\n\n  const onClickCaptureHandler = useCallback(\n    (evt: MouseEvent) => {\n      const target = evt.target as HTMLElement;\n      if (target.tagName !== 'A' && !target.matches('a *')) {\n        //  Is blocked link\n        //  Is not an anchor nor a child of an anchor\n        //  Trigger main link\n\n        evt.stopPropagation();\n        evt.preventDefault();\n        activateLink();\n      }\n    },\n    [activateLink]\n  );\n\n  const onMouseEnterHandler = useCallback(() => {\n    (anchorRef?.current as HTMLAnchorElement).classList.add('hover');\n  }, [anchorRef]);\n\n  const onMouseLeaveHandler = useCallback(() => {\n    (anchorRef?.current as HTMLAnchorElement).classList.remove('hover');\n  }, [anchorRef]);\n\n  useEffect(() => {\n    const anchorElement = anchorRef?.current as HTMLAnchorElement;\n    const parentCardElem = parentCardRef?.current as HTMLDivElement;\n\n    if (parentCardElem && anchorElement) {\n      if (blockedLink) {\n        parentCardElem.classList.add('blocked-link');\n        parentCardElem.addEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.addEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseleave', onMouseLeaveHandler);\n      } else {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    }\n\n    return () => {\n      if (parentCardElem) {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    };\n  }, [parentCardRef, anchorRef, blockedLink, activateLink, onClickCaptureHandler, onMouseEnterHandler, onMouseLeaveHandler]);\n};\n\nexport { useBlockedLink };\n","import { Anchor, AnchorProps } from '@/components/anchor';\nimport { Pill, PillProps } from '@/components/pill';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ImgHTMLAttributes, ReactNode, useRef } from 'react';\nimport { useBlockedLink } from '../shared/use-blocked-link';\nimport './card-article.css';\n\nexport type CardArticleVariant = 'default' | 'indented';\n\nexport interface CardArticleProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if the card is indented.\n   */\n  variant?: CardArticleVariant;\n  /**\n   *  Image card to draw in the card if specified.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * The flag to set the pill.\n   */\n  hasPill?: BooleanProp;\n  /**\n   * Pill props.\n   */\n  pill?: PillProps;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * Subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Definition of the anchor to be draw if specified.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Makes the whole card clickable and activates the link.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardArticle: FC<CardArticleProps> = ({\n  hasPill = false,\n  pill,\n  mainAnchor,\n  blockedLink = false,\n  children,\n  image,\n  headingLevel: Heading = 'h3',\n  title,\n  subtitle,\n  variant = 'default',\n  className,\n  ...props\n}) => {\n  const cardArticleRef = useRef<HTMLDivElement | null>(null);\n  const cardArticleAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const onlyAnchor = !title && !subtitle && !children && !hasPill && !!mainAnchor && !mainAnchor.hidden;\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    children: !title && !subtitle && !!children,\n    pill: !title && !subtitle && !children && !!hasPill,\n    anchor: onlyAnchor\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    subtitle: false,\n    children: false,\n    pill: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.subtitle = !title && !!subtitle;\n      anchorPlacement.children = !title && !subtitle && !!children;\n      anchorPlacement.pill = !title && !subtitle && !children && !!hasPill;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" ref={cardArticleAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" ref={cardArticleAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardArticleRef,\n    anchorRef: cardArticleAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardClassNames = classNames(\n    'agora-card-article',\n    { indented: variant === 'indented' },\n    { default: variant === 'default' },\n    className,\n    { 'has-image': !!image },\n    { 'only-anchor': onlyAnchor }\n  );\n\n  const anchorContainerClassNames = classNames(\n    'anchor-container',\n    { 'icon-only': mainAnchorClone?.iconOnly },\n    { 'has-siblings': !onlyAnchor }\n  );\n\n  return (\n    <div {...props} role=\"presentation\" ref={cardArticleRef} className={cardClassNames}>\n      {image && (\n        <div className=\"container-image w-full\">\n          <img src={image.src} className=\"card-image w-full\" alt={image.alt} />\n        </div>\n      )}\n\n      <div className=\"container-body\">\n        {hasPill && pill && (\n          <div className=\"pill-container\">\n            <Pill {...pill}>{buildText(pill.children, mainAnchorClone, anchorPlacement.pill, headingPlacement.pill)}</Pill>\n          </div>\n        )}\n\n        {subtitle && (\n          <div className=\"subtitle-container\">\n            {buildText(subtitle, mainAnchorClone, anchorPlacement.subtitle, headingPlacement.subtitle)}\n          </div>\n        )}\n\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>}\n\n        {children && (\n          <div className=\"children-container\">\n            {buildText(children, mainAnchorClone, anchorPlacement.children, headingPlacement.children)}\n          </div>\n        )}\n\n        {anchorPlacement.anchor && (\n          <div className={anchorContainerClassNames}>\n            {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-collection.css';\n\nexport interface CardCollectionProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Card Collection heading level title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Defines the subtitle\n   */\n  subtitle?: ReactNode;\n  /**\n   * Defines the title\n   */\n  title?: ReactNode;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardCollection: FC<CardCollectionProps> = ({\n  headingLevel: Heading = 'h2',\n  subtitle,\n  title,\n  mainAnchor,\n  blockedLink = false,\n  className,\n  ...props\n}) => {\n  const cardCollectionRef = useRef<HTMLDivElement | null>(null);\n\n  const cardCollectionAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const CardCollectionClass = classNames('agora-card-collection', className);\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    anchor: !title && !subtitle && !!mainAnchor && !mainAnchor.hidden\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    subtitle: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.subtitle = !title && !!subtitle;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} variant=\"neutral\" darkMode appearance=\"link\" ref={cardCollectionAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} variant=\"neutral\" darkMode appearance=\"link\" ref={cardCollectionAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardCollectionRef,\n    anchorRef: cardCollectionAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const anchorContainerClassNames = classNames('anchor-container', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} role=\"presentation\" ref={cardCollectionRef} className={CardCollectionClass}>\n      <div className=\"card-info\">\n        {subtitle && (\n          <div className=\"subtitle-container\">\n            {buildText(subtitle, mainAnchorClone, anchorPlacement.subtitle, headingPlacement.subtitle)}\n          </div>\n        )}\n\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>}\n\n        {anchorPlacement.anchor && (\n          <div className={anchorContainerClassNames}>\n            {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n          </div>\n        )}\n      </div>\n      <div className=\"custom-svg-container -z-10 absolute top-0 left-0 min-w-full min-h-full w-full h-full flex justify-center items-center bg-[var(--color-primary-900)] xs:py-0 md:py-64 xl:py-128\">\n        <svg\n          className=\"custom-svg\"\n          width=\"100%\"\n          height=\"100%\"\n          viewBox=\"0 0 384 378\"\n          aria-hidden\n          xmlns=\"http://www.w3.org/2000/svg\"\n          fill=\"none\"\n        >\n          <g opacity=\"0.04\" stroke=\"white\" strokeWidth=\"24\" strokeMiterlimit=\"9.56677\" strokeLinecap=\"round\">\n            <path d=\"M-436 189.113C-237.528 189.113 -202.994 271.214 -118.581 252.744C-42.7446 236.151 30.3181 89.0689 81.1009 93.8569C133.588 98.8049 4.82279 267.863 60.1717 290.185C105.121 308.314 250.971 -0.840043 299.676 13.483C357.976 30.624 189.186 355.513 249.579 364.748C308.959 373.827 348.241 135.047 419.085 122.245C483.27 110.647 497 189.113 742 189.113\" />\n          </g>\n        </svg>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button, ButtonProps } from '@/components/button';\nimport { Icon, IconProps } from '@/components/icon';\n\nimport './card-emphasize.css';\n\n/**\n * The available alignments of the card emphasize.\n */\nexport type CardEmphasizeAlignment = 'left' | 'center' | 'right';\n\nexport interface CardEmphasizeProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Definition of the icon to use in the card.\n   */\n  icon?: IconProps;\n  /**\n   * The card title.\n   */\n  title?: ReactNode;\n  /**\n   * The card description.\n   */\n  description?: ReactNode;\n  /**\n   * Card main button definition.\n   */\n  mainButton?: ButtonProps;\n  /**\n   * Apply the alignment specified in all card content.\n   */\n  alignment?: CardEmphasizeAlignment;\n}\n\nexport const CardEmphasize: FC<CardEmphasizeProps> = ({\n  icon,\n  title,\n  description,\n  mainButton,\n  alignment = 'left',\n  className,\n  ...props\n}) => {\n  const cardEmphasizeClasseNames = classNames('agora-card-emphasize', `card-${alignment}`, className);\n\n  const iconProps = {\n    ...icon,\n    className: classNames('card-emphasize-icon', icon?.className)\n  };\n\n  const buttonProps = {\n    ...mainButton,\n    className: classNames('card-emphasize-button', mainButton?.className)\n  } as ButtonProps;\n\n  return (\n    <div {...props} role=\"presentation\" className={cardEmphasizeClasseNames}>\n      {icon && <Icon {...iconProps} />}\n      {title && <div className=\"card-emphasize-title\">{title}</div>}\n      {description && <div className=\"card-emphasize-description\">{description}</div>}\n      {mainButton && <Button {...buttonProps} />}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './link-wrapper.css';\n\nexport type LinkWrapperAppearance = 'link' | 'text';\n\nexport type LinkWrapperVariant = 'primary' | 'informative' | 'neutral' | 'success' | 'warning' | 'danger';\n\nexport interface LinkWrapperProps extends Omit<ComponentProps<'span'>, 'children'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The anchor appearance. Define the anchor Shape.\n   */\n  appearance?: LinkWrapperAppearance;\n  /**\n   * The variant of the anchor. This variants will define the background and border color of the given Anchor\n   */\n  variant?: LinkWrapperVariant;\n  /**\n   * Defines if the anchor should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if anchor is inline text or not. An inline element does not start on a new line and takes up as much width as necessary. See https://www.w3schools.com/html/html_blocks.asp.\n   */\n  inline?: BooleanProp;\n  /**\n   * Children anchor.\n   */\n  children?: ReactNode;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst LinkWrapper: FC<LinkWrapperProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'text',\n  variant = 'primary',\n  fullWidth = false,\n  children,\n  className = '',\n  inline = false,\n  ...props\n}) => {\n  const anchorContainerClassName = classNames(\n    'agora-link-wrapper',\n    `agora-link-wrapper-${appearance}-${variant}`,\n    { 'dark-mode': stringToBoolean(darkMode) },\n\n    { 'full-width': fullWidth },\n\n    { 'inline-flex items-center': !props.hidden },\n    { 'justify-center min-h-[44px] min-w-[44px] py-8': !stringToBoolean(inline) },\n    { 'justify-start': stringToBoolean(inline) },\n\n    className\n  );\n\n  return (\n    <span {...props} ref={ref} className={anchorContainerClassName}>\n      {children}\n    </span>\n  );\n};\n\nexport { LinkWrapper };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './card-error.css';\n\nexport interface CardErrorProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   *  The card icon.\n   */\n  icon?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   *  Navigation link used to go back from the error page. It can be a native anchor or any other type of link (example: NextJS link, ReactRouter Link, etc...).\n   */\n  backLink?: ReactNode;\n  /**\n   * The status message of the card.\n   */\n  statusCodeMessage?: ReactNode;\n  /**\n   * The dark mode of the card.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const CardError: FC<CardErrorProps> = ({\n  icon,\n  title,\n  subtitle,\n  description,\n  backLink,\n  statusCodeMessage,\n  darkMode = false,\n  className = '',\n  ...props\n}) => {\n  const CardLinksClasses = classNames('card-error', stringToBoolean(darkMode) ? 'dark' : 'default', className);\n\n  return (\n    <div className={CardLinksClasses} {...props}>\n      {icon && <div className=\"icon-container\">{icon}</div>}\n      {title && <div className=\"title\">{title}</div>}\n      {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n      {description && <div className=\"description\">{description}</div>}\n      {backLink && (\n        <div className=\"go-back\">\n          <LinkWrapper darkMode={stringToBoolean(darkMode)} variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}>\n            {backLink}\n          </LinkWrapper>\n        </div>\n      )}\n      {statusCodeMessage && <div className=\"status-code-message\">{statusCodeMessage}</div>}\n    </div>\n  );\n};\n","import React, { HTMLProps } from 'react';\n\nexport interface BookmarkIconProps extends HTMLProps<SVGSVGElement> {\n  fill?: string;\n  fillTop?: string;\n}\n\nexport const BookmarkIcon = ({ fill = '#BBD1FD', fillTop = '#034AD8', ...props }: BookmarkIconProps) => {\n  const newProps = { ...props };\n  delete newProps.alt;\n  delete newProps.title;\n  delete newProps.color;\n\n  return (\n    <svg width=\"24\" height=\"32\" viewBox=\"0 0 24 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...newProps} role=\"img\">\n      {props.title && <title>{props.title}</title>}\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M0.923077 0C0.413276 0 0 0.421379 0 0.941176V31.0588C0 31.4134 0.195426 31.7379 0.505561 31.8982C0.815697 32.0586 1.18791 32.0276 1.46846 31.8182L12 23.9544L22.5315 31.8182C22.8121 32.0276 23.1843 32.0586 23.4944 31.8982C23.8046 31.7379 24 31.4134 24 31.0588V0.941176C24 0.421379 23.5867 0 23.0769 0H0.923077Z\"\n        fill={fill}\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M0.923077 0C0.413276 0 0 0.421379 0 0.941176V5.64706H24V0.941176C24 0.421379 23.5867 0 23.0769 0H0.923077Z\"\n        fill={fillTop}\n      />\n    </svg>\n  );\n};\n","import { CardExpandableVariant } from './card-expandable';\nimport { ButtonVariant } from '@/index';\n\ntype CardExpandableButtonVariantsBody = {\n  buttonVariant?: ButtonVariant;\n  buttonDarkMode?: boolean;\n};\n\nexport type CardExpandableButtonVariantsMap = Record<CardExpandableVariant, CardExpandableButtonVariantsBody>;\n\nexport const cardExpandableButtonVariantsMap: CardExpandableButtonVariantsMap = {\n  'white': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'neutral-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'primary-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'secondary-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'primary-300': {\n    buttonVariant: 'neutral',\n    buttonDarkMode: false\n  },\n  'secondary-300': {\n    buttonVariant: 'neutral',\n    buttonDarkMode: false\n  },\n  'primary-500': {\n    buttonVariant: 'neutral',\n    buttonDarkMode: true\n  },\n  'primary-700': {\n    buttonVariant: 'neutral',\n    buttonDarkMode: true\n  },\n  'primary-900': {\n    buttonVariant: 'primary',\n    buttonDarkMode: true\n  }\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, SyntheticEvent, useId, useRef, useState } from 'react';\n\nimport { Button, ButtonProps } from '@/components/button';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { createSyntheticEvent } from '@/utils/create-synthetic-event';\nimport { useExpandedRef } from '@/utils/expand-ref';\nimport { cardExpandableButtonVariantsMap } from '../card-expandable-style';\n\nimport './card-accordion.css';\n\n/**\n * The available variants of the accordion. Those variants will define the style of the accordion.\n */\nexport type CardAccordionVariant =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900';\n\nexport interface CardAccordionElement extends HTMLDivElement {\n  /**\n   *  Expand the accordion.\n   */\n  expand: () => void;\n  /**\n   *  Collapse the accordion.\n   */\n  collapse: () => void;\n  /**\n   *  Toggles the content of the accordion.\n   */\n  toggle: () => void;\n  /**\n   *  Current value of the expanded state of the accordion.\n   */\n  isExpanded: boolean;\n}\n\nexport interface CardAccordionProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * The variant of the accordion. Those variants will define the style of the accordion.\n   */\n  variant?: CardAccordionVariant;\n  /**\n   * Accordion header title.\n   */\n  headingTitle?: ReactNode;\n  /**\n   * Accordion heading level title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Accordion content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if an icon is shown previously of title.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n  /**\n   * Card main button definition.\n   */\n  mainButton?: ButtonProps;\n}\n\ntype eventToTriggerType = Record<'name', 'expand' | 'collapse' | null>;\n\nconst CardAccordion: FC<CardAccordionProps> = ({\n  ref = null,\n  children,\n  variant = 'white',\n  headingTitle,\n  'headingLevel': Component = 'h3',\n  className = '',\n  defaultExpanded,\n  'expanded': expandedFromProps,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  'aria-label': ariaLabel,\n  mainButton,\n  ...props\n}): ReactElement => {\n  const generatedId = useId();\n\n  const isControlled = typeof expandedFromProps != 'undefined';\n\n  const hasDefaultValue = typeof defaultExpanded != 'undefined';\n\n  const [internalExpandedValue, setInternalExpandedValue] = useState(hasDefaultValue ? stringToBoolean(defaultExpanded) : false);\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n  const isMobile = width < mdScreen;\n\n  // Internally, we need to deal with some value. Depending on whether the component is controlled or not, that value comes from its props or from its internal state.\n  const expanded = isControlled ? stringToBoolean(expandedFromProps) : internalExpandedValue;\n\n  const previousEventToTrigger = useRef<eventToTriggerType>({ name: null });\n  const [eventToTrigger, setEventToTrigger] = useState<eventToTriggerType>({ name: null });\n\n  const expand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n\n    setEventToTrigger({ name: 'expand' });\n  };\n\n  const collapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n\n    setEventToTrigger({ name: 'collapse' });\n  };\n\n  const toggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n\n    if (expanded) {\n      setEventToTrigger({ name: 'collapse' });\n    }\n\n    if (!expanded) {\n      setEventToTrigger({ name: 'expand' });\n    }\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const externalRef = useExpandedRef<CardAccordionElement>(\n    ref as React.RefObject<CardAccordionElement>,\n    innerRef,\n    {\n      isExpanded: expanded,\n      expand,\n      collapse,\n      toggle\n    } as CardAccordionElement,\n    [innerRef, expanded]\n  );\n\n  if (eventToTrigger.name === 'expand') {\n    const expandedEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'expand');\n    onExpanded?.(expandedEvt);\n  }\n\n  if (eventToTrigger.name === 'collapse') {\n    const collapsedEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'collapse');\n    onCollapsed?.(collapsedEvt);\n  }\n\n  if (eventToTrigger.name !== previousEventToTrigger.current.name) {\n    previousEventToTrigger.current.name = eventToTrigger.name;\n\n    const changeEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'change');\n    onChange?.(changeEvt);\n  }\n\n  const AccordionClassName = classNames(\n    'agora-card-accordion',\n    className,\n    {\n      'card-accordion-open': expanded,\n      'mobile': isMobile\n    },\n    variant\n  );\n  const DarkBackground = variant == 'primary-500' || variant == 'primary-700' || variant == 'primary-900';\n  const AccordionBodyClassName = classNames('card-accordion-body', {\n    'card-accordion-body-block': expanded,\n    'dark-background': DarkBackground\n  });\n\n  const onClickHandler = () => {\n    toggle();\n  };\n\n  const buttonProps = {\n    'type': 'button',\n    'aria-label': ariaLabel,\n    'appearance': 'link',\n    'className': 'card-accordion-header',\n    'aria-expanded': expanded,\n    'id': `agora-card-accordion-${generatedId}-control`,\n    'aria-controls': `agora-card-accordion-${generatedId}-region`,\n    'onClick': onClickHandler,\n    'variant': cardExpandableButtonVariantsMap[variant].buttonVariant,\n    'darkMode': cardExpandableButtonVariantsMap[variant].buttonDarkMode,\n    'hasIcon': true,\n    'leadingIcon': 'agora-line-chevron-down',\n    'leadingIconHover': 'agora-line-chevron-down',\n    ...mainButton\n  } as ButtonProps;\n\n  return (\n    <div className={AccordionClassName} {...props} ref={innerRef}>\n      <Component className=\"flex justify-start items-center w-full\">\n        <Button {...buttonProps}>{headingTitle}</Button>\n      </Component>\n      <div\n        className={AccordionBodyClassName}\n        id={`agora-card-accordion-${generatedId}-region`}\n        role=\"region\"\n        aria-labelledby={`agora-card-accordion-${generatedId}-control`}\n      >\n        <div className=\"children-wrapper\">{children}</div>\n      </div>\n    </div>\n  );\n};\n\nexport { CardAccordion };\n","import { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, SyntheticEvent } from 'react';\nimport { CardAccordion, CardAccordionElement } from './card-accordion';\nimport { Icon } from '@/components/icon';\nimport { ButtonProps } from '@/components/button';\n\nimport './card-expandable.css';\n\n/**\n * The available variants of the card. Those variants will define the style of the card.\n */\nexport type CardExpandableVariant =\n  | 'white'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'neutral-100';\n\nexport interface CardExpandableElement extends CardAccordionElement {}\n\nexport interface CardExpandableProps extends Omit<ComponentProps<'div'>, 'title' | 'onChange'> {\n  /**\n   * The variant of the card. Those variants will define the style of the card.\n   */\n  variant?: CardExpandableVariant;\n  /**\n   * Heading level to apply in the card.\n   */\n  cardHeadingLevel?: HeadingLevel;\n  /**\n   * Card title.\n   */\n  cardTitle: ReactNode;\n  /**\n   * Card subtitle.\n   */\n  cardSubtitle?: ReactNode;\n  /**\n   * Card icon.\n   */\n  showBookmarkIcon?: BooleanProp;\n  /**\n   * Defines if an icon is shown previously of title.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n  /**\n   * CardAccordion heading level title.\n   */\n  accordionHeadingLevel?: HeadingLevel;\n  /**\n   * CardAccordion header title.\n   */\n  accordionHeadingTitle: ReactNode;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Card main button definition.\n   */\n  mainButton?: ButtonProps;\n}\n\nconst CardExpandable: FC<CardExpandableProps> = ({\n  ref = null,\n  variant = 'white',\n  cardHeadingLevel: Component = 'h2',\n  cardTitle,\n  cardSubtitle,\n  showBookmarkIcon,\n  hasIcon,\n  leadingIcon,\n  children,\n  accordionHeadingLevel = 'h3',\n  accordionHeadingTitle,\n  expanded,\n  defaultExpanded,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  className = '',\n  mainButton,\n  ...props\n}): ReactElement => {\n  const cardExpandableClasses = classNames('agora-card-expandable', `${variant}`, className);\n\n  return (\n    <div className={cardExpandableClasses} {...props}>\n      {stringToBoolean(showBookmarkIcon) && <BookmarkIcon className=\"bookmark-icon\" aria-hidden />}\n\n      <div className=\"card-expandable-content\">\n        <div className=\"card-expandable-header\">\n          <div className=\"header-title-container\">\n            {stringToBoolean(hasIcon) && leadingIcon && <Icon name={leadingIcon} />}\n            <Component className=\"header-title\">{cardTitle}</Component>\n          </div>\n          {cardSubtitle && <div className=\"header-subtitle\">{cardSubtitle}</div>}\n        </div>\n\n        <CardAccordion\n          variant={variant}\n          headingLevel={accordionHeadingLevel}\n          headingTitle={accordionHeadingTitle}\n          expanded={expanded}\n          defaultExpanded={defaultExpanded}\n          onExpanded={onExpanded}\n          onCollapsed={onCollapsed}\n          onChange={onChange}\n          ref={ref}\n          mainButton={mainButton}\n        >\n          {children}\n        </CardAccordion>\n      </div>\n    </div>\n  );\n};\n\nexport { CardExpandable };\n","import { RefObject, useCallback, useEffect } from 'react';\n\nexport interface IUseBlockedLink {\n  parentCardRef: RefObject<HTMLDivElement | null>;\n  anchorRef: RefObject<HTMLAnchorElement | null>;\n  mainLinkRef?: RefObject<HTMLSpanElement | null>;\n  blockedLink?: boolean;\n}\n\nconst useBlockedLinkV2 = ({ parentCardRef, anchorRef, mainLinkRef, blockedLink = false }: IUseBlockedLink) => {\n  const activateLink = useCallback(() => {\n    const event = new MouseEvent('click', {\n      detail: 1\n    });\n\n    if (mainLinkRef?.current) {\n      mainLinkRef.current.querySelectorAll('a').forEach((a, index) => {\n        if (index === 0) {\n          a.dispatchEvent(event);\n        }\n      });\n    } else {\n      anchorRef.current?.dispatchEvent(event);\n    }\n  }, [anchorRef, mainLinkRef]);\n\n  const onClickCaptureHandler = useCallback(\n    (evt: MouseEvent) => {\n      const target = evt.target as HTMLElement;\n      if (target.tagName !== 'A' && !target.matches('a *')) {\n        //  Is blocked link\n        //  Is not an anchor nor a child of an anchor\n        //  Trigger main link\n\n        evt.stopPropagation();\n        evt.preventDefault();\n        activateLink();\n      }\n    },\n    [activateLink]\n  );\n\n  const onMouseEnterHandler = useCallback(() => {\n    if (mainLinkRef?.current) {\n      mainLinkRef.current.querySelectorAll('a').forEach((a) => {\n        a.classList.add('hover');\n      });\n    } else {\n      (anchorRef?.current as HTMLAnchorElement).classList.add('hover');\n    }\n  }, [anchorRef, mainLinkRef]);\n\n  const onMouseLeaveHandler = useCallback(() => {\n    if (mainLinkRef?.current) {\n      mainLinkRef.current.querySelectorAll('a').forEach((a) => {\n        a.classList.remove('hover');\n        a.classList.remove('active');\n      });\n    } else {\n      (anchorRef?.current as HTMLAnchorElement).classList.remove('hover');\n      (anchorRef?.current as HTMLAnchorElement).classList.remove('active');\n    }\n  }, [anchorRef, mainLinkRef]);\n\n  const onMouseDownHandler = useCallback(\n    (evt: MouseEvent) => {\n      const target = evt.target as HTMLElement;\n      if (target.tagName !== 'A' && !target.matches('a *')) {\n        if (mainLinkRef?.current) {\n          //  FOR LINKWRAPPER WE NEED TO FORCE THE ACTIVE CLASS IN THE INNER ANCHOR\n          mainLinkRef.current.querySelectorAll('a').forEach((a) => {\n            a.classList.add('active');\n          });\n        } else {\n          (anchorRef?.current as HTMLAnchorElement).classList.add('active');\n        }\n      }\n    },\n    [anchorRef, mainLinkRef]\n  );\n\n  const onMouseUpHandler = useCallback(() => {\n    if (mainLinkRef?.current) {\n      //  FOR LINKWRAPPER WE NEED TO FORCE THE ACTIVE CLASS IN THE INNER ANCHOR\n      mainLinkRef.current.querySelectorAll('a').forEach((a) => {\n        a.classList.remove('active');\n      });\n    } else {\n      (anchorRef?.current as HTMLAnchorElement).classList.remove('active');\n    }\n  }, [anchorRef, mainLinkRef]);\n\n  useEffect(() => {\n    const parentCardElem = parentCardRef?.current as HTMLDivElement;\n    const anchorElement = anchorRef?.current as HTMLAnchorElement;\n    const mainLinkElement = mainLinkRef?.current as HTMLAnchorElement;\n\n    if (parentCardElem && (mainLinkElement || anchorElement)) {\n      if (blockedLink) {\n        parentCardElem.classList.add('blocked-link');\n        parentCardElem.addEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.addEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseleave', onMouseLeaveHandler);\n        parentCardElem.addEventListener('mousedown', onMouseDownHandler);\n        parentCardElem.addEventListener('mouseup', onMouseUpHandler);\n      } else {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n        parentCardElem.removeEventListener('mousedown', onMouseDownHandler);\n        parentCardElem.removeEventListener('mouseup', onMouseUpHandler);\n      }\n    }\n\n    return () => {\n      if (parentCardElem) {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n        parentCardElem.removeEventListener('mousedown', onMouseDownHandler);\n        parentCardElem.removeEventListener('mouseup', onMouseUpHandler);\n      }\n    };\n  }, [\n    parentCardRef,\n    anchorRef,\n    blockedLink,\n    mainLinkRef,\n    onMouseUpHandler,\n    onMouseDownHandler,\n    onMouseLeaveHandler,\n    onMouseEnterHandler,\n    onClickCaptureHandler,\n    activateLink\n  ]);\n};\n\nexport { useBlockedLinkV2 };\n","import { Anchor, AnchorProps } from '@/components/anchor';\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode, useRef } from 'react';\nimport { useBlockedLinkV2 } from '../shared/use-blocked-link-v2';\nimport './card-frame.css';\n\nexport type CardFrameLinkPosition = 'bottom' | 'right';\n\nexport interface CardFrameProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Label header.\n   */\n  label: ReactNode;\n  /**\n   * Definition of the AgoraDS anchor to be draw if specified.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Definition of the main link of the card. It can be any framework specific link. Like NextJS Link component. It will override the mainAnchor prop.\n   */\n  mainLink?: ReactNode;\n  /**\n   * Makes the whole card clickable. When card is clicked the mainAnchor or mainLink will activate.\n   */\n  blockedLink?: BooleanProp;\n  /**\n   * Positions the link bellow or on the right side of the card.\n   */\n  linkPosition?: CardFrameLinkPosition;\n}\n\nexport const CardFrame: FC<CardFrameProps> = ({\n  className,\n  label,\n  headingLevel: Heading = 'h2',\n  mainAnchor,\n  mainLink,\n  blockedLink = false,\n  linkPosition = 'bottom',\n  children,\n  ...props\n}) => {\n  const cardFrameRef = useRef<HTMLDivElement | null>(null);\n  const mainAnchorElementRef = useRef<HTMLAnchorElement | null>(null);\n  const mainLinkElementRef = useRef<HTMLSpanElement | null>(null);\n  const cardFrameClassNames = classNames('agora-card-frame', className);\n\n  useBlockedLinkV2({\n    parentCardRef: cardFrameRef,\n    anchorRef: mainAnchorElementRef,\n    mainLinkRef: mainLinkElementRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardFrameContainerClass = classNames('container-body', `link-${linkPosition}`, className);\n\n  return (\n    <div {...props} role=\"presentation\" ref={cardFrameRef} className={cardFrameClassNames}>\n      {label && (\n        <div className=\"label-container\">\n          <Heading>{label}</Heading>\n        </div>\n      )}\n\n      <div className={cardFrameContainerClass}>\n        {children && <div className=\"children-container\">{children}</div>}\n\n        {!mainLink && mainAnchor && (\n          <div className=\"anchor-container\">\n            <Anchor {...mainAnchor} appearance=\"link\" ref={mainAnchorElementRef} />\n          </div>\n        )}\n\n        {mainLink && (\n          <div className=\"anchor-container\">\n            <LinkWrapper ref={mainLinkElementRef} appearance=\"link\">\n              {mainLink}\n            </LinkWrapper>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ImgHTMLAttributes, ReactElement } from 'react';\n\nimport classNames from 'classnames';\n\nimport { CardHeroHelperProps } from '@/components/cards/card-hero-helper';\nimport { CardHeroIndexProps } from '@/components/cards/card-hero-index';\nimport { CardHeroSitemapProps } from '@/components/cards/card-hero-sitemap';\n\nimport './card-full-image.css';\n\nexport interface CardFullImageProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children: ReactElement<CardHeroSitemapProps | CardHeroIndexProps | CardHeroHelperProps>;\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n}\n\nexport const CardFullImage: FC<CardFullImageProps> = ({ image, ...props }) => {\n  const cardFullImageClassName = classNames('agora-card-full-image', props.className);\n\n  return (\n    <div className={cardFullImageClassName} {...props}>\n      <div className=\"card-background\">\n        <div className=\"card-image-container\">\n          <img className=\"card-image\" src={image.src} alt={image.alt} aria-hidden={image['aria-hidden'] ?? true} />\n        </div>\n      </div>\n      <div className=\"card-content\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-x-32\">\n          <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-5 xl:col-start-7\">{props.children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\nimport { HeadingLevel } from '@/models';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport './card-hero-helper.css';\n\nexport interface HelpTopic {\n  description: ReactNode;\n  anchor: AnchorProps;\n}\n\nexport interface CardHeroHelperProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card\n   */\n  subtitle?: ReactNode;\n  /**\n   * The list of help topics of the card\n   */\n  helpTopics?: HelpTopic[];\n}\n\nexport const CardHeroHelper: FC<CardHeroHelperProps> = ({\n  subtitle,\n  headingLevel: Heading = 'h2',\n  title,\n  helpTopics = [],\n  className,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const CardHeroHelperClasses = classNames('agora-card-hero-helper', className);\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className={CardHeroHelperClasses} {...props}>\n      {(subtitle || title) && (\n        <div className=\"flex gap-8 flex-col\">\n          {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n        </div>\n      )}\n\n      {helpTopics.length > 0 && (\n        <ul className=\"flex flex-col justify-start items-start gap-32\">\n          {helpTopics?.map((block, index) => {\n            const key = `card-hero-helper-${generatedId}-description-block-${index}`;\n            return (\n              <li key={key} className=\"flex flex-col gap-16 justify-start items-start\">\n                <div>{block.description}</div>\n                <Anchor {...block?.anchor} />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './card-hero-index.css';\n\nexport interface CardHeroIndexProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   *  Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The list of anchor props that makes up the index.\n   */\n  index: AnchorProps[];\n}\n\nexport const CardHeroIndex: FC<CardHeroIndexProps> = ({ title, headingLevel: Heading = 'h3', index, className, ...props }) => {\n  const generatedId = useId();\n\n  const CardExpandableClasses = classNames('agora-card-hero-index', className);\n\n  return (\n    <div className={CardExpandableClasses} {...props}>\n      {title && <Heading className=\"card-hero-index-title\">{title}</Heading>}\n\n      {index.length > 0 && (\n        <ul className=\"index-list\">\n          {index.map((cardIndex, idx) => {\n            const key = `card-index-${generatedId}-index-item-${idx}`;\n            return (\n              <li key={key}>\n                <Anchor {...cardIndex} appearance=\"link\" variant=\"neutral\">\n                  {cardIndex.children}\n                </Anchor>\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './card-hero-sitemap.css';\n\nexport interface CardHeroSitemapProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of anchor props that makes up the index.\n   */\n  anchors: AnchorProps[];\n  /**\n   * The anchor props that makes up the highlighted link.\n   */\n  highlightedLink?: AnchorProps;\n}\n\nexport const CardHeroSitemap: FC<CardHeroSitemapProps> = ({\n  description,\n  headingLevel: Heading = 'h2',\n  title,\n  anchors,\n  highlightedLink,\n  className,\n  ...props\n}) => {\n  const generatedId = useId();\n  const arrayLink = anchors.slice(0, 5);\n\n  const CardHeroSitemapClasses = classNames('agora-card-hero-sitemap', className);\n\n  const headingPlacement = {\n    title: !!title,\n    description: !title && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className={CardHeroSitemapClasses} {...props}>\n      {(title || description) && (\n        <div className=\"flex gap-8 flex-col  text-l-semibold\">\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          {description && <div className=\"description-container\">{buildText(description, headingPlacement.description)}</div>}\n        </div>\n      )}\n\n      {arrayLink.length > 0 && (\n        <ul className=\"flex flex-col justify-start items-start gap-8\">\n          {arrayLink?.map((link, index) => {\n            const key = `card-hero-sitemap-${generatedId}-description-block-${index}`;\n            return (\n              <li key={key}>\n                <Anchor {...link} />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n\n      {highlightedLink && (\n        <Anchor\n          appearance=\"link\"\n          {...highlightedLink}\n          hasIcon={highlightedLink.hasIcon ?? true}\n          trailingIcon={highlightedLink.trailingIcon ?? 'agora-line-arrow-right-circle'}\n          trailingIconHover={highlightedLink.trailingIcon ?? 'agora-line-arrow-right-circle'}\n          {...(!highlightedLink?.children && { className: '!block' })}\n        />\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useId } from 'react';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './inner-highlight-card.css';\n\nexport interface InnerHighlightCardProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of links of the card\n   */\n  links: AnchorProps[];\n}\n\nexport const InnerHighlightCard: FC<InnerHighlightCardProps> = ({\n  title,\n  subtitle,\n  description,\n  links,\n  headingLevel: Heading = 'h3',\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    description: !title && !subtitle && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className=\"inner-highlight-card\" {...props}>\n      {(subtitle || title || description) && (\n        <div className=\"flex flex-col gap-8\">\n          {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          {description && <div className=\"description-container\">{buildText(description, headingPlacement.description)}</div>}\n        </div>\n      )}\n\n      {links?.length > 0 && (\n        <ul className=\"links-container\">\n          {links?.map((link, index) => {\n            const key = `card-highlight-links-list-${generatedId}-${index}`;\n            return (\n              <li key={key}>\n                <Anchor\n                  appearance=\"link\"\n                  hasIcon\n                  trailingIcon=\"agora-line-arrow-right-circle\"\n                  trailingIconHover=\"agora-line-arrow-right-circle\"\n                  {...link}\n                />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes, ReactNode, useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { AnchorProps } from '@/components/anchor';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { HeadingLevel } from '@/models';\nimport { InnerHighlightCard } from './shared/inner-highlight-card';\n\nimport './card-highlight.css';\n\nexport type HighlightAreaPositionType = 'interior' | 'exterior';\nexport type HighlightCardPositionType = 'bottom' | 'middle';\nexport type HighlightCardSizeType = 's' | 'default';\n\nexport interface CardHighlightProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * The subtitle to be displayed.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title to be displayed.\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of links of the card.\n   */\n  links: AnchorProps[];\n  /**\n   * Positioning title and subtitle internally/externally of the card.\n   */\n  highlightAreaPosition?: HighlightAreaPositionType;\n  /**\n   * Positioning card.\n   */\n  cardPosition?: HighlightCardPositionType;\n  /**\n   * Card size\n   */\n  cardSize?: HighlightCardSizeType;\n}\n\nexport const CardHighlight: FC<CardHighlightProps> = ({\n  image,\n  title,\n  subtitle,\n  description,\n  highlightAreaPosition = 'exterior',\n  headingLevel: Heading = 'h3',\n  links,\n  cardPosition = 'bottom',\n  cardSize = 'default',\n  className,\n  ...props\n}) => {\n  const cardHighlightClassName = classNames('agora-card-highlight', cardPosition, `card-${cardSize}`, className);\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isTablet = width >= mdScreen && width < xlScreen;\n  const isMobile = width < mdScreen;\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    description: !title && !subtitle && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  const cardInfoRef = useRef<HTMLDivElement>(null);\n  const cardContentRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (!cardContentRef.current) return;\n\n    cardContentRef.current.style.marginTop = '';\n\n    if (width < xlScreen || cardPosition === 'bottom' || highlightAreaPosition === 'interior') return;\n\n    const height = cardInfoRef.current?.clientHeight ?? 0;\n    const spaceBetweenElements = 32;\n    const marginTop = -248;\n    const heightLessDefaultValue = height - 136;\n    const result = marginTop + spaceBetweenElements + heightLessDefaultValue;\n\n    cardContentRef.current.style.marginTop = `${result}px`;\n  }, [title, subtitle, width, cardPosition, highlightAreaPosition, xlScreen]);\n\n  return (\n    <div className={cardHighlightClassName} {...props}>\n      <div className=\"card-image-container\">\n        <img className=\"card-image\" {...image} src={image.src} alt={image.alt} aria-hidden={image['aria-hidden'] ?? true} />\n      </div>\n      {(title || subtitle) && highlightAreaPosition === 'exterior' && !isMobile && !isTablet && (\n        <div className=\"card-box-exterior\">\n          <div ref={cardInfoRef} className=\"card-info\">\n            {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n            {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          </div>\n        </div>\n      )}\n      <div ref={cardContentRef} className=\"card-content\">\n        <div className=\"shared-card-content\">\n          <InnerHighlightCard\n            headingLevel={Heading}\n            {...(highlightAreaPosition === 'interior' || isTablet || isMobile ? { title, subtitle } : undefined)}\n            description={description}\n            links={links}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes, ReactElement, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { InputEmailBarProps } from '@/components/input-email-bar/input-email-bar';\n\nimport './card-highlight-newsletter.css';\n\nexport interface CardHighlightNewsletterProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * The title to be displayed.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle to be displayed.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * Children content.\n   */\n  children: ReactElement<InputEmailBarProps>;\n}\n\nexport const CardHighlightNewsletter: FC<CardHighlightNewsletterProps> = ({ title, subtitle, image, ...props }) => {\n  const cardHighlightNewsletterClassName = classNames('agora-card-highlight-newsletter', props.className);\n\n  return (\n    <div className={cardHighlightNewsletterClassName} style={{ backgroundImage: `url(${image.src})` }} {...props}>\n      <div className=\"card-container\">\n        <div className=\"card-content\">\n          {title && <div className=\"title\">{title}</div>}\n          {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n        </div>\n        <div className=\"input-container\">\n          <div className=\"email-bar\">{props.children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button, ButtonProps } from '@/components/button';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\n\nimport './card-highlight-single.css';\nimport { stringToBoolean } from '@/utils';\nimport { BooleanProp } from '@/models';\n\nexport interface CardHighlightSingleProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Card title.\n   */\n  title?: ReactNode;\n  /**\n   * Card subtitle.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Card icon.\n   */\n  showBookmarkIcon?: BooleanProp;\n  /**\n   * Button props.\n   */\n  actionButton?: ButtonProps;\n}\n\nexport const CardHighlightSingle: FC<CardHighlightSingleProps> = ({\n  title,\n  subtitle,\n  actionButton,\n  showBookmarkIcon,\n  className = '',\n  ...props\n}) => {\n  const CardHighLightClasses = classNames('agora-card-highlight-single', className);\n\n  return (\n    <div className={CardHighLightClasses} {...props}>\n      <div className=\"custom-svg-container\">\n        <svg\n          className=\"custom-svg\"\n          width=\"100%\"\n          height=\"100%\"\n          viewBox=\"0 0 384 378\"\n          aria-hidden\n          xmlns=\"http://www.w3.org/2000/svg\"\n          fill=\"none\"\n        >\n          <g opacity=\"0.04\" stroke=\"white\" strokeWidth=\"24\" strokeMiterlimit=\"9.56677\" strokeLinecap=\"round\">\n            <path d=\"M-436 189.113C-237.528 189.113 -202.994 271.214 -118.581 252.744C-42.7446 236.151 30.3181 89.0689 81.1009 93.8569C133.588 98.8049 4.82279 267.863 60.1717 290.185C105.121 308.314 250.971 -0.840043 299.676 13.483C357.976 30.624 189.186 355.513 249.579 364.748C308.959 373.827 348.241 135.047 419.085 122.245C483.27 110.647 497 189.113 742 189.113\" />\n          </g>\n        </svg>\n      </div>\n      <div className=\"card-content\">\n        <div className=\"content\">\n          {stringToBoolean(showBookmarkIcon) && <BookmarkIcon className=\"card-highlight-single-icon\" aria-hidden />}\n          <div className=\"card-title\">{title && <div className=\"title\">{title}</div>}</div>\n          <div className=\"card-action\">\n            {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n            <div className=\"action-button\">\n              <Button {...actionButton} />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { Anchor, AnchorProps } from '@/components/anchor';\nimport { Icon } from '@/components/icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ImgHTMLAttributes, ReactNode, useId, useRef } from 'react';\n\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { useBlockedLinkV2 } from '../shared/use-blocked-link-v2';\nimport './card-links.css';\n\nexport type CardLinksVariants =\n  | 'transparent'\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900';\n\nexport interface CardLinksProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Add padding to the card.\n   */\n  padding?: BooleanProp;\n  /**\n   * Style of card\n   */\n  variant?: CardLinksVariants;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The category of the card.\n   */\n  category?: ReactNode;\n  /**\n   * Card date label.\n   */\n  date?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   * card image.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * Anchor props to render in heading.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Definition of the main link of the card. It can be any framework specific link. Like NextJS Link component. It will override the mainAnchor prop.\n   */\n  mainLink?: ReactNode;\n  /**\n   * The list of links of the card.\n   */\n  links?: AnchorProps[];\n  /**\n   * The list of topics of the card.\n   */\n  topics?: ReactNode[];\n  /**\n   * Makes the whole card clickable.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardLinks: FC<CardLinksProps> = ({\n  headingLevel: Heading = 'h2',\n  category,\n  description,\n  image,\n  date,\n  title,\n  mainAnchor,\n  mainLink,\n  links = [],\n  topics = [],\n  className,\n  blockedLink,\n  variant = 'transparent',\n  padding = false,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const cardLinksRef = useRef<HTMLDivElement | null>(null);\n  const mainLinkElementRef = useRef<HTMLSpanElement | null>(null);\n  const anchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const cardLinksClasses = classNames(\n    'agora-card-links',\n    [variant],\n    {\n      'blocked-link': stringToBoolean(blockedLink),\n      'p-64': stringToBoolean(padding)\n    },\n    className\n  );\n\n  const pseudoDarkMode = variant === 'primary-500' || variant === 'primary-700' || variant === 'primary-900';\n\n  useBlockedLinkV2({\n    anchorRef,\n    parentCardRef: cardLinksRef,\n    mainLinkRef: mainLinkElementRef,\n    blockedLink: !title && stringToBoolean(blockedLink)\n  });\n\n  const imageOverlayClassNames = classNames({ 'image-overlay': image?.src && blockedLink });\n\n  return (\n    <div {...props} ref={cardLinksRef} role=\"presentation\" className={cardLinksClasses}>\n      <div className=\"card-links-container\">\n        <div className=\"top-container\">\n          {category && <div className=\"category\">{category}</div>}\n\n          <div className=\"content\">\n            {image && (\n              <div className=\"image-content\">\n                <img src={image.src} alt={image.alt} {...image} />\n                <div className={imageOverlayClassNames} />\n              </div>\n            )}\n\n            <div className=\"text-content\">\n              {date && <div className=\"date\">{date}</div>}\n\n              <div className=\"title\">\n                {title && <Heading>{title}</Heading>}\n\n                {!title && mainLink && (\n                  <Heading>\n                    <LinkWrapper inline appearance=\"link\" darkMode={pseudoDarkMode} variant=\"neutral\" ref={mainLinkElementRef}>\n                      {mainLink}\n                    </LinkWrapper>\n                  </Heading>\n                )}\n\n                {!title && !mainLink && mainAnchor && (\n                  <Heading>\n                    <Anchor {...mainAnchor} inline appearance=\"link\" darkMode={pseudoDarkMode} variant=\"neutral\" ref={anchorRef} />\n                  </Heading>\n                )}\n              </div>\n\n              {description && <div className=\"description\">{description}</div>}\n            </div>\n          </div>\n        </div>\n\n        {(links.length > 0 || topics.length > 0) && (\n          <div className=\"bottom-container\">\n            {links.length > 0 && (\n              <ul className=\"links\">\n                {links.map((link, index) => {\n                  const anchorKey = `card-link-${generatedId}-link-${index}`;\n                  return (\n                    <li key={anchorKey} className=\"link-container\">\n                      <Anchor\n                        {...link}\n                        appearance=\"link\"\n                        target={link.target}\n                        href={link.href}\n                        darkMode={pseudoDarkMode}\n                        variant={pseudoDarkMode ? 'neutral' : 'primary'}\n                        hasIcon={link.hasIcon ?? true}\n                        trailingIcon={link.trailingIcon ?? 'agora-line-arrow-right-circle'}\n                        trailingIconHover={link.trailingIconHover ?? 'agora-solid-arrow-right-circle'}\n                        trailingIconActive={link.trailingIconActive ?? 'agora-line-arrow-right-circle'}\n                      >\n                        {link.children}\n                      </Anchor>\n                    </li>\n                  );\n                })}\n              </ul>\n            )}\n\n            {topics.length > 0 && (\n              <div className=\"topic-list\">\n                {topics.map((topic, index) => (\n                  <div key={`key-${Number(index)}`} className=\"topic-item\">\n                    {index > 0 && <Icon aria-hidden name=\"agora-solid-bullet\" />}\n                    {topic}\n                  </div>\n                ))}\n              </div>\n            )}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC } from 'react';\nimport { Icon } from '../icon';\n\nexport interface ItemProps extends ComponentPropsWithoutRef<'li'> {\n  /**\n   * Choose the icon for an unordered list.\n   */\n  icon?: string;\n}\n\nexport const Item: FC<ItemProps> = ({ icon, ...props }) => (\n  <li {...props}>\n    {!!icon && <Icon name={icon} aria-hidden />}\n    <div className=\"list-items\">{props.children}</div>\n  </li>\n);\n","import React, { Children, ComponentPropsWithoutRef, CSSProperties, FC, isValidElement, ReactElement, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Item, ItemProps } from './item';\nimport './list.css';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport type ListStyle = 'none' | 'bullet' | 'number' | 'icon';\n\nexport interface ListProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * Icon for the list.\n   */\n  icon?: string;\n  /**\n   * Style of the list depending on the chosen type.\n   */\n  listStyle?: ListStyle;\n  /**\n   * Choose the starting number of an ordered number list.\n   */\n  startNumber?: number;\n  /**\n   * Children content.\n   */\n  children?: ReactElement<ItemProps> | Array<ReactElement<ItemProps>>;\n  /**\n   * Add a darkMode to the list.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const List: FC<ListProps> = ({ listStyle = 'none', startNumber = 1, children, icon, darkMode = false, ...props }) => {\n  const ComponentType = listStyle === 'number' ? 'ol' : 'ul';\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const classes = classNames(`agora-list list-${listStyle}`, propsClone.className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const mappedLIElements = Children.map(children, (child) => {\n    if (!isValidElement<ItemProps>(child)) {\n      return null;\n    }\n\n    const childProps = {\n      ...child.props\n    };\n\n    if (icon) {\n      childProps.icon = icon;\n    }\n\n    return <Item {...childProps} />;\n  });\n\n  return (\n    <ComponentType\n      role=\"list\"\n      style={{ '--startNumber': startNumber } as CSSProperties}\n      start={startNumber}\n      className={classes}\n      id={propsClone.id}\n    >\n      {mappedLIElements}\n    </ComponentType>\n  );\n};\n","import React, { cloneElement, ComponentProps, FC, isValidElement, ReactNode } from 'react';\nimport { Item, List } from '@/components/list';\nimport { Anchor } from '@/components/anchor';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './card-no-results.css';\n\nexport interface CardNoResultsProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Icon to display in the card.\n   */\n  icon?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   * The extra description of the card.\n   */\n  extraDescription?: ReactNode;\n  /**\n   * If the card should be displayed in a dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * allow you to say where the content should be aligned\n   */\n  position?: 'left' | 'center';\n  /**\n   * show the button within the card\n   */\n  hasAnchor?: boolean;\n  /**\n   * name of icon to show inside of anchor\n   */\n  anchorLeadingIcon?: string;\n  /**\n   * name of icon to show when hover the anchor\n   */\n  anchorLeadingIconHover?: string;\n  /**\n   * name of icon to show after the name of button when hover the anchor\n   */\n  anchorTrailingIcon?: string;\n  /**\n   * name of icon to show after the name of button when hover the anchor\n   */\n  anchorTrailingIconHover?: string;\n  /**\n   * name of button\n   */\n  valueAnchor?: string;\n  /**\n   * list of items to be displayed\n   */\n  itemList?: ReactNode[];\n  /**\n   * show the list inside the card\n   */\n  hasList?: boolean;\n  /**\n   * href of the anchor\n   */\n  anchorHref?: string;\n  /**\n   * target of the anchor link\n   */\n  anchorTarget?: '_blank' | '_self' | '_parent' | '_top';\n}\n\nexport const stringOrReactNode = (value: string | ReactNode, className: string) => {\n  if (typeof value === 'string') {\n    return <div className={className}>{value}</div>;\n  }\n\n  if (isValidElement(value)) {\n    return cloneElement(value as React.ReactElement, { className } as ComponentProps<'div'>);\n  }\n\n  return null;\n};\n\nexport const CardNoResults: FC<CardNoResultsProps> = ({\n  icon,\n  title,\n  subtitle,\n  description,\n  darkMode = false,\n  position = 'center',\n  className = '',\n  hasAnchor,\n  valueAnchor,\n  anchorLeadingIcon,\n  anchorLeadingIconHover,\n  anchorTrailingIcon,\n  anchorTrailingIconHover,\n  itemList = [],\n  anchorHref,\n  hasList,\n  anchorTarget = '_blank',\n  extraDescription,\n  ...props\n}) => {\n  const cardNoResultsClasses = classNames('agora-card-no-results', stringToBoolean(darkMode) ? 'dark' : 'default', className);\n\n  const mainContentClasses = classNames('main-content', {\n    'items-center': position === 'center',\n    'items-start': position === 'left',\n    'text-center': position === 'center'\n  });\n\n  const hasAnyAnchorIcon = !!anchorLeadingIcon || !!anchorLeadingIconHover || !!anchorTrailingIcon || !!anchorTrailingIconHover;\n\n  return (\n    <div className={cardNoResultsClasses} {...props}>\n      <div className={mainContentClasses}>\n        {icon && <div className=\"icon-container\">{icon}</div>}\n\n        {title && stringOrReactNode(title, 'title')}\n\n        {subtitle && stringOrReactNode(subtitle, 'subtitle')}\n\n        {description && stringOrReactNode(description, 'description')}\n\n        {extraDescription && stringOrReactNode(extraDescription, 'extra-description')}\n\n        {hasList && (\n          <List className=\"list\" listStyle=\"bullet\" darkMode={darkMode}>\n            {itemList?.map((item, index) => (\n              <Item key={index}>{item}</Item>\n            ))}\n          </List>\n        )}\n\n        {hasAnchor && valueAnchor && (\n          <Anchor\n            target={anchorTarget}\n            href={anchorHref}\n            darkMode={darkMode}\n            variant={darkMode ? 'neutral' : 'primary'}\n            className=\"anchor\"\n            hasIcon={hasAnyAnchorIcon}\n            leadingIcon={anchorLeadingIcon}\n            leadingIconHover={anchorLeadingIconHover}\n            trailingIcon={anchorTrailingIcon}\n            trailingIconHover={anchorTrailingIconHover}\n          >\n            {valueAnchor}\n          </Anchor>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { Icon, IconProps } from '@/components/icon';\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-single.css';\n\n/**\n * Card Single Variants\n */\nexport type CardSingleVariant = 'default' | 'neutral' | 'white';\n\nexport interface CardSingleProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Defines the variant of the card single.\n   */\n  variant?: CardSingleVariant;\n  /**\n   * The icon props\n   */\n  icon?: IconProps;\n  /**\n   * Title Tag Card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardSingle: FC<CardSingleProps> = ({\n  variant = 'default',\n  icon,\n  headingLevel: Heading = 'h3',\n  title,\n  description,\n  mainAnchor,\n  blockedLink,\n  className,\n  ...props\n}) => {\n  const cardSingleRef = useRef<HTMLDivElement | null>(null);\n  const cardSingleAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    description: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.description = false;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  useBlockedLink({\n    parentCardRef: cardSingleRef,\n    anchorRef: cardSingleAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const CardSingleClasses = classNames('card-single', `card-${variant}`, className);\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" ref={cardSingleAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" ref={cardSingleAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n  const anchorContainerClassNames = classNames('anchor-container', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} ref={cardSingleRef} role=\"presentation\" className={CardSingleClasses}>\n      {icon && (\n        <div className=\"icon-container\">\n          <Icon {...icon} className=\"card-single-icon\" dimensions=\"m\" />\n        </div>\n      )}\n\n      <div className=\"info-container\">\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, true)}</div>}\n\n        {description && (\n          <div className=\"description-container\">{buildText(description, mainAnchorClone, anchorPlacement.description, false)}</div>\n        )}\n      </div>\n\n      {anchorPlacement.anchor && (\n        <div className={anchorContainerClassNames}>\n          {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, false)}\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { Pill } from '@/components/pill';\n\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-topic.css';\nimport { PillProps } from '@/components/pill/pill';\n\n/**\n * Available card topic variant styles.\n */\nexport type CardTopicVariant = 'default' | 'white' | 'informative' | 'success' | 'warning' | 'danger';\n/**\n * Available card topic status.\n */\nexport type CardTopicStatus = 'success' | 'warning' | 'danger';\n\nexport interface CardTopicProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Defines the variant of the card topic.\n   */\n  variant?: CardTopicVariant;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * Defines the status description.\n   */\n  description?: ReactNode;\n  /**\n   * The flag to set the pill.\n   */\n  hasPill?: BooleanProp;\n  /**\n   * Pill props.\n   */\n  pill?: PillProps;\n  /**\n   * Defines the status text.\n   */\n  statusLabel?: ReactNode;\n  /**\n   * Defines the status of the card topic.\n   */\n  status?: CardTopicStatus;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardTopic: FC<CardTopicProps> = ({\n  headingLevel: Heading = 'h3',\n  variant = 'default',\n  title,\n  description,\n  hasPill = false,\n  pill,\n  statusLabel,\n  status = 'success',\n  mainAnchor,\n  blockedLink = false,\n  className,\n  ...props\n}) => {\n  const variantMemo = useMemo(() => {\n    if (variant === 'default' || variant === 'white') {\n      return 'primary';\n    }\n\n    return variant;\n  }, [variant]);\n\n  const cardTopicRef = useRef<HTMLDivElement | null>(null);\n  const cardTopicAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const headingPlacement = {\n    title: !!title,\n    description: !title && !!description,\n    pill: !title && !description && !!hasPill,\n    anchor: !title && !description && !hasPill && !!mainAnchor && !mainAnchor.hidden\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    description: false,\n    pill: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.description = !title && !!description;\n      anchorPlacement.pill = !title && !description && !!hasPill;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" variant={variantMemo} ref={cardTopicAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" variant={variantMemo} ref={cardTopicAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardTopicRef,\n    anchorRef: cardTopicAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardTopicClasseNames = classNames('agora-card-topic', `card-${variant}`, { 'has-anchor-label': !mainAnchor?.iconOnly }, className);\n  const cardStatusClasseNames = classNames('card-topic-status', `card-topic-status-${status}`);\n  const anchorContainerClassNames = classNames('card-topic-anchor', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} role=\"presentation\" className={cardTopicClasseNames} ref={cardTopicRef}>\n      <div className=\"content-info\">\n        {hasPill && pill && (\n          <div className=\"card-topic-pill\">\n            <Pill {...pill}>{buildText(pill.children, mainAnchorClone, anchorPlacement.pill, headingPlacement.pill)} </Pill>\n          </div>\n        )}\n\n        {title && (\n          <div className=\"card-topic-title\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>\n        )}\n\n        {statusLabel && (\n          <div className=\"flex items-center gap-8\">\n            <div className={cardStatusClasseNames} />\n            <div>{statusLabel}</div>\n          </div>\n        )}\n\n        {description && (\n          <div className=\"card-topic-description\">\n            {buildText(description, mainAnchorClone, anchorPlacement.description, headingPlacement.description)}\n          </div>\n        )}\n      </div>\n\n      {anchorPlacement.anchor && (\n        <div className={anchorContainerClassNames}>\n          {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n        </div>\n      )}\n    </div>\n  );\n};\n","import { CardActionVariants } from './card-action';\nimport { ButtonVariant } from '../../button/button';\n\ntype CardActionVariantsBody = {\n  buttonVariant?: ButtonVariant;\n  buttonDarkMode?: boolean;\n};\n\nexport type CardActionVariantsMap = Record<CardActionVariants, CardActionVariantsBody>;\n\nexport const cardActionVariantsMap: CardActionVariantsMap = {\n  'white': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'neutral-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'primary-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'secondary-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'primary-300': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'secondary-300': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'white-line': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'primary-500': {\n    buttonVariant: 'neutral',\n    buttonDarkMode: false\n  },\n  'primary-700': {\n    buttonVariant: 'neutral',\n    buttonDarkMode: false\n  },\n  'primary-900': {\n    buttonVariant: 'primary',\n    buttonDarkMode: true\n  },\n  'primary-900-line': {\n    buttonVariant: 'primary',\n    buttonDarkMode: true\n  }\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes } from 'react';\nimport { Button, ButtonProps } from '@/components/button';\nimport classNames from 'classnames';\nimport { Icon, IconProps } from '@/components/icon';\nimport './card-action.css';\nimport { cardActionVariantsMap } from './card-action-variants';\nimport { BooleanProp } from '@/models';\n\nexport type CardActionVariants =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'white-line'\n  | 'primary-900-line';\n\nexport type CardActionAlignment = 'left' | 'center' | 'right';\n\nexport interface CardActionProps extends ComponentProps<'div'> {\n  /**\n   * title of card\n   */\n  titleText: string;\n  /**\n   * text to show within the card\n   */\n  descriptionText: string;\n  /**\n   * variant of card action\n   */\n  variant?: CardActionVariants;\n  /**\n   * it allow you align title, text and button\n   */\n  alignment?: CardActionAlignment;\n  /**\n   * show the card horizontally\n   */\n  isCardHorizontal?: BooleanProp;\n  /**\n   * name of icon logo\n   */\n  icon?: IconProps;\n  /**\n   * image card to draw in the card if specified.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * props for the button component\n   */\n  button: ButtonProps;\n  /**\n   * turn button full width\n   */\n  buttonFullWidth?: BooleanProp;\n}\n\nexport const CardAction: FC<CardActionProps> = ({\n  variant = 'white',\n  alignment = 'left',\n  isCardHorizontal,\n  icon,\n  titleText,\n  descriptionText,\n  image,\n  button,\n  buttonFullWidth,\n  className,\n  ...props\n}) => {\n  const buttonVariant = cardActionVariantsMap[variant]?.buttonVariant ?? 'primary';\n  const buttonDarkMode = cardActionVariantsMap[variant]?.buttonDarkMode ?? false;\n\n  const cardActionContainerClassNames = classNames('card-action-container', `${variant}`, className, {\n    'md:flex': image?.src && isCardHorizontal,\n    'card-action-horizontal': isCardHorizontal\n  });\n\n  const cardActionClassNames = classNames('card-action', {\n    'items-center': alignment === 'center',\n    'text-center': alignment === 'center',\n    'items-end': alignment === 'right',\n    'text-right': alignment === 'right'\n  });\n\n  const iconLogoClassNames = classNames('icon-logo', {\n    'justify-center': alignment === 'center',\n    'justify-end': alignment === 'right'\n  });\n\n  const buttonClassNames = classNames('flex w-full mt-32', {\n    'justify-center': alignment === 'center',\n    'justify-end': alignment === 'right'\n  });\n\n  const iconProps = {\n    ...icon,\n    className: classNames(icon?.className, {\n      'justify-center': alignment === 'center',\n      'justify-end': alignment === 'right'\n    })\n  };\n\n  return (\n    <div className={cardActionContainerClassNames} {...props}>\n      {image?.src && <img {...image} alt={image?.alt ?? 'Card action image'} className=\"card-action-image\" />}\n\n      <div className={cardActionClassNames}>\n        <div className=\"overflow-hidden\">\n          {icon && !image?.src && (\n            <div className={iconLogoClassNames}>\n              <Icon {...iconProps} />\n            </div>\n          )}\n\n          <span className=\"title\">{titleText}</span>\n\n          <p>{descriptionText}</p>\n        </div>\n\n        <div className={buttonClassNames}>\n          <Button\n            {...button}\n            fullWidth={buttonFullWidth}\n            variant={buttonVariant}\n            darkMode={buttonDarkMode}\n            className=\"card-action-button\"\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { CardIllustrativeVariants } from './card-illustrative';\nimport { AnchorVariant } from '@/components/anchor';\n\ntype CardIllustrativeAnchorVariantsBody = {\n  anchorVariant?: AnchorVariant;\n  anchorDarkMode?: boolean;\n};\n\nexport type CardIllustrativeAnchorVariantsMap = Record<CardIllustrativeVariants, CardIllustrativeAnchorVariantsBody>;\n\nexport const cardIllustrativeAnchorVariantsMap: CardIllustrativeAnchorVariantsMap = {\n  'white': {\n    anchorVariant: 'primary',\n    anchorDarkMode: false\n  },\n  'neutral-100': {\n    anchorVariant: 'primary',\n    anchorDarkMode: false\n  },\n  'primary-100': {\n    anchorVariant: 'primary',\n    anchorDarkMode: false\n  },\n  'secondary-100': {\n    anchorVariant: 'primary',\n    anchorDarkMode: false\n  },\n  'primary-300': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: false\n  },\n  'secondary-300': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: false\n  },\n  'primary-500': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: true\n  },\n  'primary-700': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: true\n  },\n  'primary-900': {\n    anchorVariant: 'primary',\n    anchorDarkMode: true\n  },\n  'image': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: true\n  }\n};\n","import { isValidElement, ReactElement, ReactNode } from 'react';\n\nexport const getSVGElement = (children?: ReactNode): ReactElement<SVGElement> | null => {\n  return isValidElement<SVGElement>(children) && children.type === 'svg' ? children : null;\n};\n\nexport const getImageElement = (children?: ReactNode): ReactElement<HTMLImageElement> | null => {\n  return isValidElement<HTMLImageElement>(children) && children.type === 'img' ? children : null;\n};\n","import React, { ComponentProps, FC, ReactNode, useRef } from 'react';\nimport classNames from 'classnames';\nimport './card-illustrative.css';\nimport { cardIllustrativeAnchorVariantsMap } from './card-illustrative-variants';\nimport { BooleanProp } from '@/models';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\nimport { stringToBoolean } from '@/utils';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { getImageElement, getSVGElement } from '@/components/cards/card-illustrative/utils/image-utils';\nimport { useBlockedLinkV2 } from '../shared/use-blocked-link-v2';\nimport { LinkWrapper } from '@/components/link-wrapper';\n\nexport type CardIllustrativeVariants =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'image';\n\nexport type CardImageFilterOptions = 'neutral-900' | 'primary-900' | 'secondary-900';\n\nexport interface CardIllustrativeProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * title of card\n   */\n  title: ReactNode;\n  /**\n   * subtitle of card\n   */\n  subtitle?: ReactNode;\n  /**\n   * description of card\n   */\n  description?: ReactNode;\n  /**\n   * Variant of card illustrative\n   */\n  variant?: CardIllustrativeVariants;\n  /**\n   * overlay filter to apply to the image\n   */\n  imageFilter?: CardImageFilterOptions;\n  /**\n   * show the card horizontally\n   */\n  isCardHorizontal?: BooleanProp;\n  /**\n   * show the bookmark icon\n   */\n  showBookmarkIcon?: BooleanProp;\n  /**\n   * Background illustration element can be SVG node or Img node\n   */\n  bgIllustration?: ReactNode;\n  /**\n   * Background illustration element on hover can be SVG node or Img node\n   */\n  bgIllustrationHover?: ReactNode;\n  /**\n   * Definition of the AgoraDS anchor to be draw if specified.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Definition of the main link of the card. It can be any framework specific link. Like NextJS Link component. It will override the mainAnchor prop.\n   */\n  mainLink?: ReactNode;\n}\n\nexport const CardIllustrative: FC<CardIllustrativeProps> = ({\n  title: titleText,\n  subtitle: subtitleText,\n  description: descriptionText,\n  variant = 'white',\n  imageFilter,\n  isCardHorizontal,\n  showBookmarkIcon,\n  bgIllustration,\n  bgIllustrationHover,\n  mainAnchor,\n  mainLink,\n  className,\n  ...props\n}) => {\n  const cardIllustrativeRef = useRef<HTMLDivElement | null>(null);\n  const mainAnchorElementRef = useRef<HTMLAnchorElement | null>(null);\n  const mainLinkElementRef = useRef<HTMLSpanElement | null>(null);\n\n  const anchorVariant = cardIllustrativeAnchorVariantsMap[variant].anchorVariant;\n  const anchorDarkMode = cardIllustrativeAnchorVariantsMap[variant].anchorDarkMode;\n\n  const cardIllustrativeContainerClassNames = classNames('agora-card-illustrative', `${variant}`, className, {\n    horizontal: isCardHorizontal,\n    [`image-filter-${imageFilter}`]: imageFilter\n  });\n\n  const cardInnerContainerClassNames = classNames('card-inner-container', {\n    'horizontal': isCardHorizontal,\n    'no-description': !descriptionText\n  });\n\n  const svgElem = getSVGElement(bgIllustration);\n  const svgElemHover = getSVGElement(bgIllustrationHover);\n  const imgElem = getImageElement(bgIllustration);\n\n  useBlockedLinkV2({\n    parentCardRef: cardIllustrativeRef,\n    anchorRef: mainAnchorElementRef,\n    mainLinkRef: mainLinkElementRef,\n    blockedLink: true\n  });\n\n  return (\n    <div className={cardIllustrativeContainerClassNames} ref={cardIllustrativeRef} {...props}>\n      <div className=\"card-background-container\">\n        {(svgElem || svgElemHover) && (\n          <div className=\"card-svg\">\n            {svgElem && <div className=\"card-svg-default\">{svgElem}</div>}\n            {svgElemHover && <div className=\"card-svg-hover\">{svgElemHover}</div>}\n          </div>\n        )}\n        {imgElem && variant === 'image' && (\n          <div className=\"card-image\">\n            {imgElem}\n            {imageFilter && <div className=\"card-mask\" />}\n          </div>\n        )}\n      </div>\n\n      {stringToBoolean(showBookmarkIcon) && <BookmarkIcon className=\"card-bookmark\" aria-hidden />}\n\n      <div className=\"text\">\n        {subtitleText && <div className=\"subtitle\">{subtitleText}</div>}\n\n        {titleText && <div className=\"title\">{titleText}</div>}\n\n        <div className={cardInnerContainerClassNames}>\n          {descriptionText && <div className=\"description\">{descriptionText}</div>}\n\n          <div className=\"card-anchor\">\n            {!mainLink && mainAnchor && (\n              <Anchor {...mainAnchor} hasIcon={true} variant={anchorVariant} darkMode={anchorDarkMode} ref={mainAnchorElementRef} />\n            )}\n            {mainLink && (\n              <LinkWrapper ref={mainLinkElementRef} appearance=\"link\">\n                {mainLink}\n              </LinkWrapper>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { PillAppearance } from '@/components/pill';\nimport { CardGeneralVariants } from './card-general';\nimport { AnchorVariant } from '@/components/anchor';\n\ntype pillVariantType = {\n  appearance: PillAppearance;\n  darkMode: boolean;\n};\n\ntype anchorVariantType = {\n  darkMode: boolean;\n  variant: AnchorVariant;\n};\n\nexport const pillVariant: Record<CardGeneralVariants, pillVariantType> = {\n  'white': { appearance: 'solid', darkMode: false },\n  'neutral-100': { appearance: 'solid', darkMode: false },\n  'primary-100': { appearance: 'solid', darkMode: false },\n  'secondary-100': { appearance: 'solid', darkMode: false },\n  'primary-300': { appearance: 'outline', darkMode: false },\n  'secondary-300': { appearance: 'outline', darkMode: false },\n  'primary-500': { appearance: 'solid', darkMode: true },\n  'primary-700': { appearance: 'solid', darkMode: true },\n  'primary-900': { appearance: 'solid', darkMode: true },\n  'white-outline': { appearance: 'solid', darkMode: false },\n  'primary-outline': { appearance: 'solid', darkMode: true }\n};\n\nexport const anchorVariant: Record<CardGeneralVariants, anchorVariantType> = {\n  'white': { darkMode: false, variant: 'primary' },\n  'neutral-100': { darkMode: false, variant: 'primary' },\n  'primary-100': { darkMode: false, variant: 'primary' },\n  'secondary-100': { darkMode: false, variant: 'primary' },\n  'primary-300': { darkMode: false, variant: 'neutral' },\n  'secondary-300': { darkMode: false, variant: 'neutral' },\n  'primary-500': { darkMode: true, variant: 'neutral' },\n  'primary-700': { darkMode: true, variant: 'neutral' },\n  'primary-900': { darkMode: true, variant: 'primary' },\n  'white-outline': { darkMode: false, variant: 'primary' },\n  'primary-outline': { darkMode: true, variant: 'primary' }\n};\n","import React, { FC, ImgHTMLAttributes, ReactNode, useRef } from 'react';\nimport './card-general.css';\nimport { Pill } from '@/components/pill/pill';\nimport { Anchor, AnchorProps } from '@/components/anchor/anchor';\nimport classNames from 'classnames';\nimport { IconSet } from '@/components/shared/icon-set';\nimport { IconItem, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { useBlockedLinkV2 } from '../shared/use-blocked-link-v2';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { anchorVariant, pillVariant } from './variants';\n\nexport type CardGeneralVariants =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'white-outline'\n  | 'primary-outline';\n\nexport interface CardGeneralProps {\n  /**\n   * variant of card action\n   */\n  variant?: CardGeneralVariants;\n  /**\n   * image card to draw in the card if specified.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * to config the icon in the card if specified.\n   */\n  iconDefault?: string;\n  /**\n   * to config the icon in the card when hovered if specified.\n   */\n  iconHover?: string;\n  /**\n   * to config the icon in the card when activated if specified.\n   */\n  iconActive?: string;\n  /**\n   * text to show within a pill\n   */\n  pillText?: string;\n  /**\n   * text to show the subtitle\n   */\n  subtitleText?: ReactNode;\n  /**\n   * title of card\n   */\n  titleText: ReactNode;\n  /**\n   * status of the card (adds a colored dot)\n   */\n  status?: 'default' | 'success' | 'warning' | 'danger' | 'disabled';\n  /**\n   * label to show next to the status dot\n   */\n  statusText?: string;\n  /**\n   * text to show within the card\n   */\n  descriptionText: ReactNode;\n  /**\n   * anchor props\n   */\n  anchor?: AnchorProps;\n  /**\n   * if true, the card will be displayed horizontally\n   */\n  isCardHorizontal?: boolean;\n  /**\n   * Makes the whole card clickable. When card is clicked the anchor will activate.\n   */\n  isBlockedLink?: boolean;\n  /**\n   * turns on indent style for the image\n   */\n  imageIndent?: boolean;\n}\n\nexport type setComponentStateType = React.Dispatch<React.SetStateAction<IconSetState>>;\n\nexport const CardGeneral: FC<CardGeneralProps> = ({\n  image,\n  anchor,\n  status,\n  pillText,\n  titleText,\n  iconHover,\n  statusText,\n  iconActive,\n  imageIndent,\n  iconDefault,\n  subtitleText,\n  isBlockedLink,\n  descriptionText,\n  isCardHorizontal,\n  variant = 'white'\n}) => {\n  const cardRef = useRef<HTMLDivElement | null>(null);\n  const anchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  useBlockedLinkV2({\n    parentCardRef: cardRef,\n    anchorRef: anchorRef,\n    blockedLink: isBlockedLink ?? false\n  });\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n  const isMobile = width < mdScreen;\n  const cardHorizontal = isMobile ? false : isCardHorizontal;\n\n  const imageHasIndent = imageIndent ?? false;\n\n  const hasIcon = !image?.src && !!(iconDefault || iconHover || iconActive);\n  const isSimple = !hasIcon && !cardHorizontal;\n  const isSimpleHorizontal = !hasIcon && cardHorizontal;\n  const isVerticalWithImage = !cardHorizontal && !!image?.src;\n  const isHorizontalWithImage = cardHorizontal && !!image?.src;\n  const isVerticalWithIcon = !cardHorizontal && hasIcon;\n  const isHorizontalWithIcon = cardHorizontal && hasIcon;\n\n  const cardGeneralClassNames = classNames('card-general', `card-general-${variant}`, {\n    'cursor-pointer': isBlockedLink,\n    'flex flex-row': cardHorizontal,\n    'imageHasIndent': imageHasIndent,\n    'card-general-blockedLink': isBlockedLink,\n    'pl-32': imageHasIndent && !cardHorizontal,\n    'card-general-hover': !imageHasIndent && isBlockedLink\n  });\n\n  const imageClassNames = classNames('image', {\n    'imageHasIndent': imageHasIndent,\n    'image-indent-vertical': imageHasIndent && !cardHorizontal,\n    'image-indent-horizontal': imageHasIndent && cardHorizontal\n  });\n\n  const imageOverlayClassNames = classNames({ 'image-overlay': image?.src && isBlockedLink });\n\n  const cardGeneralIconClassNames = classNames('icon-container', {\n    'pl-32 pt-16': cardHorizontal,\n    'px-32 pt-32 pb-16': !cardHorizontal\n  });\n\n  const iconClassNames = classNames('icon-set', {\n    'icon-set-hover': isBlockedLink\n  });\n\n  const containerContentClassNames = classNames('content', {\n    'content-hover': isBlockedLink,\n    'flex flex-row': cardHorizontal,\n    'imageHasIndent': imageHasIndent,\n    'pl-32': imageHasIndent && cardHorizontal,\n    'mt-32': imageHasIndent && cardHorizontal,\n    'pt-32': imageHasIndent && !cardHorizontal,\n    'border-2 border-transparent rounded-4': imageHasIndent\n  });\n\n  const contentClassNames = classNames({\n    'p-16': isHorizontalWithIcon,\n    'px-32 pb-16': isVerticalWithIcon,\n    'p-32 pb-16': isSimple || isVerticalWithImage,\n    'p-32 pr-16': isHorizontalWithImage || isSimpleHorizontal\n  });\n\n  const anchorClassName = classNames('anchor', {\n    'ml-32 pb-32': !cardHorizontal,\n    'anchor-blockedLink': isBlockedLink,\n    'mr-32 flex justify-center': cardHorizontal\n  });\n\n  return (\n    <div ref={cardRef} className={cardGeneralClassNames} tabIndex={isBlockedLink ? 0 : undefined}>\n      {image?.src && (\n        <div className={imageClassNames} style={{ width: image.width ?? '100%', height: image.height ?? 'auto' }}>\n          <img {...image} src={image.src} alt={image.alt} width=\"100%\" height=\"100%\" className=\"h-full object-cover\" />\n          <div className={imageOverlayClassNames} />\n        </div>\n      )}\n\n      {hasIcon && (\n        <div className={cardGeneralIconClassNames}>\n          <IconSet className={iconClassNames}>\n            <IconItem state=\"default\" className=\"leading-icon-default\" name={iconDefault ?? 'no-icon-line'} aria-hidden />\n            <IconItem state=\"hover\" className=\"leading-icon-hover\" name={iconHover ?? 'no-icon'} aria-hidden />\n            <IconItem state=\"active\" className=\"leading-icon-active\" name={iconActive ?? 'no-icon'} aria-hidden />\n          </IconSet>\n        </div>\n      )}\n\n      <div className={containerContentClassNames}>\n        <div className={contentClassNames}>\n          {pillText && (\n            <Pill size=\"large\" className=\"mb-8\" darkMode={pillVariant[variant].darkMode} appearance={pillVariant[variant].appearance}>\n              {pillText}\n            </Pill>\n          )}\n\n          {subtitleText && <div className=\"subtitle-text\">{subtitleText}</div>}\n\n          <div className=\"title-text\">{titleText}</div>\n\n          {statusText && (\n            <div className=\"status\">\n              <div className={`status-icon status-icon-${status ?? 'default'}`} />\n              <div className=\"text\">{statusText}</div>\n            </div>\n          )}\n\n          <div className=\"description\">{descriptionText}</div>\n        </div>\n\n        {anchor?.children !== undefined && anchor.children !== null && (\n          <div className={anchorClassName}>\n            <Anchor\n              {...anchor}\n              ref={anchorRef}\n              iconOnly={cardHorizontal}\n              aria-hidden={isBlockedLink}\n              tabIndex={isBlockedLink ? -1 : 0}\n              variant={anchorVariant[variant].variant}\n              darkMode={anchorVariant[variant].darkMode}\n              onFocus={isBlockedLink ? () => cardRef.current?.focus() : undefined}\n            >\n              {anchor?.children ?? ''}\n            </Anchor>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useRef } from 'react';\nimport './status-card.css';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Pill, PillProps, PillVariant } from '@/components';\nimport { IconItem, IconSet } from '../../shared/icon-set/icon-set';\nimport classNames from 'classnames';\nimport { Anchor, AnchorProps } from '@/components/anchor/anchor';\nimport { useBlockedLinkV2 } from '../../cards/shared/use-blocked-link-v2';\n\nexport type StatusCardType =\n  | 'informative'\n  | 'success'\n  | 'warning'\n  | 'danger'\n  | 'outline-informative'\n  | 'outline-success'\n  | 'outline-warning'\n  | 'outline-danger';\n\nexport interface StatusCardProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Defines what style to apply.\n   */\n  variant?: StatusCardType;\n\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n\n  /**\n   * Show or hide icon.\n   */\n  showIcon?: BooleanProp;\n\n  /**\n   * Status card pill Text content\n   */\n  pillText?: string;\n\n  /**\n   * Status card title content\n   */\n  title?: ReactNode;\n\n  /**\n   * Status card description content\n   */\n  description?: ReactNode;\n\n  /**\n   * The flag to set whether the status card is interactive.\n   */\n  blockedLink?: boolean;\n\n  /**\n   * anchor props\n   */\n  anchor?: AnchorProps;\n\n  /**\n   * If true, the anchor will be positioned on the right side of the status card.\n   */\n  anchorOnRightSide?: boolean;\n}\n\nexport const StatusCard: FC<StatusCardProps> = ({\n  title,\n  anchor,\n  darkMode,\n  showIcon,\n  pillText,\n  description,\n  anchorOnRightSide,\n  blockedLink = false,\n  variant = 'informative'\n}) => {\n  const statusCard = useRef<HTMLDivElement | null>(null);\n  const anchorRef = useRef<HTMLAnchorElement | null>(null);\n  const cardType = stringToBoolean(darkMode) ? 'dark' : 'light';\n\n  const pillProps: PillProps = {\n    size: 'large',\n    darkMode: darkMode,\n    children: pillText,\n    appearance: 'solid',\n    variant: variant?.replace('outline-', '') as PillVariant\n  };\n\n  const hasAnchor = anchor?.href !== undefined && anchor.href !== null;\n\n  const statusCardClassNames = classNames('agora-status-card', {\n    'agora-status-card-interactive': blockedLink && hasAnchor\n  });\n\n  const iconClassNames = classNames('status-card-icon', {\n    'mt-[4px]': pillText,\n    'mt-[2px]': !pillText\n  });\n\n  const contentClassNames = classNames('content', {\n    'flex-col': !anchorOnRightSide,\n    'items-center': anchorOnRightSide\n  });\n\n  useBlockedLinkV2({\n    anchorRef: anchorRef,\n    parentCardRef: statusCard,\n    blockedLink: blockedLink\n  });\n\n  const iconMap: Record<StatusCardType, string> = {\n    'informative': 'agora-solid-info-mark',\n    'warning': 'agora-solid-info-mark',\n    'success': 'agora-solid-check-circle',\n    'danger': 'agora-solid-alert-triangle',\n    'outline-informative': 'agora-solid-info-mark',\n    'outline-warning': 'agora-solid-info-mark',\n    'outline-success': 'agora-solid-check-circle',\n    'outline-danger': 'agora-solid-alert-triangle'\n  };\n\n  const anchorDarkMode = variant === 'warning' ? false : darkMode;\n\n  return (\n    <div ref={statusCard} className={`${statusCardClassNames} ${variant}-${cardType}`}>\n      {stringToBoolean(showIcon) && (\n        <IconSet>\n          <IconItem className={iconClassNames} state=\"default\" name={iconMap[variant]} />\n        </IconSet>\n      )}\n\n      <div className={contentClassNames}>\n        <div className=\"content-texts\">\n          {pillText && (\n            <div className=\"pill\">\n              <Pill {...pillProps} />\n            </div>\n          )}\n\n          {title && <div className=\"title\">{title}</div>}\n\n          {description && <div className=\"description\">{description}</div>}\n        </div>\n\n        {hasAnchor && (\n          <div className=\"anchor\">\n            <Anchor {...anchor} ref={anchorRef} variant=\"neutral\" darkMode={anchorDarkMode} iconOnly={anchorOnRightSide}>\n              {anchor?.children ?? ''}\n            </Anchor>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Icon } from '@/components/icon';\nimport './feedback.css';\n\nexport interface FeedbackProps extends ComponentProps<'div'> {\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * The flag to set if the feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst Feedback: FC<FeedbackProps> = ({ ref = null, className, feedbackState = 'info', feedbackText, darkMode, ...props }) => {\n  const feedbackWrapperClasses = classNames('feedback', className);\n  const feedbackIconWrapperClasses = classNames('feedback-icon-wrapper', `feedback-icon-wrapper-${feedbackState}`, {\n    dark: stringToBoolean(darkMode)\n  });\n  const feedbackTextClasses = classNames('feedback-text', stringToBoolean(darkMode) ? 'feedback-text-dark' : 'feedback-text-light');\n  /**\n   * Dictionary of possible icons feedback.\n   */\n  const feedbackStateIconsMap = {\n    info: 'agora-solid-info-mark',\n    danger: 'agora-solid-alert-triangle',\n    success: 'agora-solid-check-circle',\n    warning: 'agora-solid-alert-circle',\n    loading: 'agora-solid-loader'\n  };\n\n  const iconWrapperClasses = classNames(feedbackIconWrapperClasses, {\n    'feedback-spinner': feedbackState === 'loading'\n  });\n\n  return (\n    <div {...props} className={feedbackWrapperClasses} ref={ref}>\n      <span className={iconWrapperClasses}>\n        <Icon name={feedbackStateIconsMap[feedbackState]} dimensions=\"s\" aria-hidden />\n      </span>\n      <p className={feedbackTextClasses}>{feedbackText}</p>\n    </div>\n  );\n};\n\nexport { Feedback };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport './helper-text.css';\n\nexport interface HelperTextProps extends ComponentProps<'div'> {\n  /**\n   * Helper text displayed below input.\n   */\n  helperText?: ReactNode;\n  /**\n   * The flag to set if the helper text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst HelperText: FC<HelperTextProps> = ({ ref = null, className, helperText, darkMode, ...props }) => {\n  const helperTextWrapperClasses = classNames('helper', className);\n  const helperTextClasses = classNames('helper-text', stringToBoolean(darkMode) ? 'helper-text-dark' : 'helper-text-light');\n\n  return (\n    <div {...props} className={helperTextWrapperClasses} ref={ref}>\n      <p className={helperTextClasses}>{helperText}</p>\n    </div>\n  );\n};\n\nexport { HelperText };\n","import { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport './checkbox.css';\n\nexport interface CheckboxProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Child elements to render as custom label.\n   */\n  children?: ReactNode;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * The flag to set if the checkbox is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Helper text displayed below checkbox.\n   */\n  helperText?: ReactNode;\n}\n\nconst Checkbox: FC<CheckboxProps> = ({\n  ref = null,\n  className,\n  label,\n  hasError,\n  hideLabel,\n  required = true,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  darkMode,\n  hasHelperText,\n  helperText,\n  children,\n  ...props\n}): ReactElement => {\n  const inputRef = useRef<HTMLInputElement>(null);\n  useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n  const hasHelperTextValue = stringToBoolean(hasHelperText) && helperText;\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentChecked, setCurrentChecked] = useState(stringToBoolean(propsClone.checked ?? propsClone.defaultChecked));\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const inputWrapper = classNames(\n    'agora-checkbox',\n    'inline-flex items-start min-h-[44px]',\n    'relative',\n    {\n      'disabled': props.disabled,\n      'checked': currentChecked,\n      'dark': stringToBoolean(darkMode),\n\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n\n  const handleChange = (evt: React.ChangeEvent<HTMLInputElement>) => {\n    propsClone.onChange?.(evt);\n    setCurrentChecked(evt.currentTarget.checked);\n  };\n\n  useEffect(() => {\n    const checked = propsClone.checked ?? propsClone.defaultChecked;\n    if (checked !== undefined) {\n      setCurrentChecked(checked);\n    }\n  }, [propsClone.checked, propsClone.defaultChecked]);\n\n  let ariaDescribedByText = undefined;\n\n  if (hasFeedbackText) {\n    ariaDescribedByText = `checkbox-${propsClone.id}-feedback`;\n  } else if (hasHelperTextValue) {\n    ariaDescribedByText = `checkbox-${propsClone.id}-helper-text`;\n  } else {\n    ariaDescribedByText = propsClone['aria-describedby'];\n  }\n\n  return (\n    <div>\n      <div className={inputWrapper}>\n        <label className=\"label-checkbox\" htmlFor={propsClone.id}>\n          <input\n            {...propsClone}\n            className=\"absolute w-full h-full top-0 left-0 appearance-none\"\n            type=\"checkbox\"\n            ref={inputRef}\n            onChange={handleChange}\n            aria-describedby={ariaDescribedByText}\n            aria-required={isRequired}\n            aria-invalid={stringToBoolean(hasError)}\n            aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          />\n          <span className=\"mark\">{currentChecked && <Icon name=\"agora-line-check\" aria-hidden />}</span>\n          {!hideLabel && <span className=\"label\">{children ?? label}</span>}\n        </label>\n      </div>\n      {(hasFeedbackText || hasHelperText) && (\n        <div className=\"agora-checkbox-button-texts\">\n          {/* Helper Text */}\n          {hasHelperText && (\n            <div className=\"agora-checkbox-button-feedback ml-[45px] px-8\">\n              <HelperText id={`checkbox-${propsClone.id}-helper-text`} helperText={helperText} darkMode={darkMode} />\n            </div>\n          )}\n          {/* Feedback */}\n          {hasFeedbackText && (\n            <div className=\"agora-checkbox-button-feedback px-8\">\n              <Feedback\n                id={`checkbox-${propsClone.id}-feedback`}\n                feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n                feedbackText={feedbackText}\n                darkMode={stringToBoolean(darkMode)}\n              />\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport { Checkbox };\n","import React, { ComponentProps, FC, ReactNode } from 'react';\nimport './card-notification.css';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Checkbox } from '@/components/checkbox';\nimport { Avatar, AvatarProps } from '@/components/avatar';\n\nexport type CardNotificationOrientation = 'horizontal' | 'vertical';\nexport type CardNotificationVariant = 'white' | 'primary-100' | 'primary-700' | 'primary-900';\n\nexport interface CardNotificationProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Main content of the card.\n   */\n  children: ReactNode;\n  /**\n   * Controls the small notification circle on the top-right corner.\n   */\n  hasBadge?: BooleanProp;\n  /**\n   * Controls the avatar on the top-left area.\n   */\n  hasAvatar?: BooleanProp;\n  /**\n   * Controls the checkbox on the top-left area.\n   */\n  hasCheckbox?: BooleanProp;\n  /**\n   * Layout orientation.\n   */\n  orientation?: CardNotificationOrientation;\n  /**\n   * Visual variant of the notification card.\n   */\n  variant?: CardNotificationVariant;\n  /**\n   * Optional avatar configuration. When provided, Avatar replaces the icon.\n   */\n  avatarProps?: AvatarProps;\n}\n\nexport const CardNotification: FC<CardNotificationProps> = ({\n  children,\n  hasBadge = false,\n  hasAvatar = false,\n  avatarProps,\n  hasCheckbox = false,\n  orientation = 'horizontal',\n  variant = 'primary-100',\n  className,\n  ...rest\n}) => {\n  const variantValue = variant;\n  const isDarkVariant = variantValue === 'primary-700' || variantValue === 'primary-900';\n  const isReadVariant = variantValue === 'white' || variantValue === 'primary-900';\n\n  const allowBadgeForVariant = variantValue === 'primary-100' || variantValue === 'primary-700';\n  const showNotificationCircle = stringToBoolean(hasBadge) && allowBadgeForVariant;\n\n  const showAvatar = stringToBoolean(hasAvatar) && !!avatarProps;\n  const showCheckbox = stringToBoolean(hasCheckbox);\n\n  const hasHeaderMedia = showAvatar || showCheckbox;\n  const isHorizontal = orientation === 'horizontal';\n  const isVertical = orientation === 'vertical';\n  const isMobileInlineTexts = isHorizontal && showAvatar && showCheckbox;\n\n  const cardClassNames = classNames(\n    'card-notification',\n    {\n      'card-notification--horizontal': orientation === 'horizontal',\n      'card-notification--vertical': orientation === 'vertical',\n      'card-notification--dark': isDarkVariant,\n      'card-notification--read': isReadVariant,\n      'card-notification--unread': !isReadVariant\n    },\n    className\n  );\n\n  const notificationCircleClassNames = classNames('card-notification-notification-circle', {\n    'card-notification-notification-circle--visible': showNotificationCircle\n  });\n\n  const checkboxAriaLabel = typeof rest['aria-label'] === 'string' ? rest['aria-label'] : 'Notification selection';\n\n  return (\n    <div className={cardClassNames} {...rest}>\n      <div className=\"card-notification-inner\">\n        <div\n          className={classNames('card-notification-header', {\n            'card-notification-header--inline-mobile': isMobileInlineTexts\n          })}\n        >\n          {hasHeaderMedia && (\n            <div\n              className={classNames('card-notification-header-left', {\n                'card-notification-header-left--horizontal': isHorizontal,\n                'card-notification-header-left--vertical': isVertical\n              })}\n            >\n              {showAvatar && (\n                <div className=\"card-notification-icon\">\n                  <Avatar {...avatarProps} darkMode={isDarkVariant} className={classNames(avatarProps?.className)} />\n                </div>\n              )}\n\n              {showCheckbox && (\n                <Checkbox hideLabel darkMode={isDarkVariant} aria-label={checkboxAriaLabel} className=\"card-notification-checkbox\" />\n              )}\n            </div>\n          )}\n\n          <div\n            className={classNames('card-notification-texts', {\n              'card-notification-texts--inline-mobile': isMobileInlineTexts\n            })}\n          >\n            {children}\n          </div>\n\n          <div\n            className={classNames('card-notification-header-right', {\n              'card-notification-header-right--inline-mobile': isMobileInlineTexts\n            })}\n          >\n            <div className={notificationCircleClassNames} />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { ChangeEvent, Children, cloneElement, FC, HtmlHTMLAttributes, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { CheckboxProps } from '@/components/checkbox/';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { HelperText } from '../shared/helper-text';\n\nexport interface CheckboxGroupProps extends Omit<HtmlHTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n  /**\n   * Group legend.\n   */\n  legend?: ReactNode;\n  /**\n   * Sets the checkbox in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below checkbox-group.\n   */\n  feedbackText?: ReactNode;\n  /**\n   *  List of checkbox components to use as children of the group.\n   */\n  children?: ReactElement<CheckboxProps> | Array<ReactElement<CheckboxProps>>;\n  /**\n   *  Event triggered whenever any of the checkboxes changes is own state.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Helper text displayed below checkbox.\n   */\n  helperText?: ReactNode;\n  /**\n   * The flag to set if the checkbox is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst CheckboxGroup: FC<CheckboxGroupProps> = ({\n  className,\n  legend,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  onChange,\n  children,\n  hasHelperText,\n  helperText,\n  darkMode,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const { hidden, ...fieldsetProps } = props;\n  const innerOnChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    onChange?.(evt);\n  };\n\n  const containerClasses = classNames('agora-checkbox-group', className);\n\n  const mappedCheckbox = Children.toArray(\n    Children.map(children, (child) => {\n      if (!isValidElement<CheckboxProps>(child)) {\n        return null;\n      }\n\n      return (\n        <li>\n          {cloneElement<CheckboxProps>(child, {\n            darkMode,\n            'onChange': innerOnChange,\n            'hasError': stringToBoolean(hasError),\n            'hasFeedback': stringToBoolean(hasFeedback),\n            'aria-describedby': hasFeedbackText ? `checkbox-group-${generatedId}-feedback` : undefined\n          } as CheckboxProps)}\n        </li>\n      );\n    })\n  );\n\n  const colorLegend = darkMode ? 'text-white' : 'text-[var(--color-primary-900)]';\n\n  return (\n    <div className={containerClasses} hidden={hidden}>\n      <fieldset {...fieldsetProps}>\n        {legend && <legend className={`${colorLegend} text-m-medium mb-8`}>{legend}</legend>}\n        {hasHelperText && (\n          <HelperText\n            darkMode={darkMode}\n            helperText={helperText}\n            className=\"!mt-[0px] mb-8\"\n            id={`checkbox-group-${generatedId}-helper-text`}\n          />\n        )}\n        {mappedCheckbox.length > 0 && <ul>{mappedCheckbox}</ul>}\n      </fieldset>\n\n      {hasFeedbackText && (\n        <Feedback\n          darkMode={darkMode}\n          id={`checkbox-group-${generatedId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { CheckboxGroup };\n","import React, { ComponentProps, FC, Ref, useCallback, useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport './dialog.css';\n\nexport interface DialogElement extends HTMLDivElement {\n  /**\n   * Initial visibility state of the dialog.\n   * */\n  visible?: boolean;\n  /**\n   * Show dialog.\n   * */\n  show: () => void;\n  /**\n   * Hide dialog.\n   * */\n  hide: () => void;\n}\n\nexport interface DialogProps extends ComponentProps<'div'> {\n  /**\n   * Initial visibility state of the dialog.\n   * */\n  visible?: BooleanProp;\n  /**\n   * Renders the dialog content as full screen without a backdrop.\n   */\n  fullScreen?: BooleanProp;\n  /**\n   * In a non-fullscreen dialog, allow users to dismiss the dialog by clicking in the backdrop.\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Allow users to dismiss the dialog by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Callback to be called when click outside.\n   */\n  onClickedOutside?: () => void;\n  /**\n   * Callback to be called when escape is pressed.\n   */\n  onEscape?: () => void;\n  /**\n   * Callback to run after dialog is closed.\n   */\n  onHide?: () => void;\n  /**\n   * Callback to run after dialog is opened.\n   */\n  onShow?: () => void;\n}\n\nconst Dialog: FC<DialogProps> = ({\n  ref = null,\n  visible = false,\n  fullScreen = false,\n  dismissOnBackdropClick = true,\n  dismissOnEscape = true,\n  children,\n  className,\n  onClickedOutside,\n  onEscape,\n  onShow,\n  onHide,\n  ...props\n}) => {\n  const [isVisible, setIsVisible] = useState(stringToBoolean(visible));\n\n  const show = useCallback((): void => {\n    if (isVisible) {\n      return;\n    }\n\n    setIsVisible(true);\n\n    asyncTrigger(() => {\n      onShow?.();\n    });\n  }, [onShow, isVisible]);\n\n  const hide = useCallback((): void => {\n    if (!isVisible) {\n      return;\n    }\n\n    setIsVisible(false);\n\n    asyncTrigger(() => {\n      onHide?.();\n    });\n  }, [onHide, isVisible]);\n\n  const innerDialogRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<DialogElement>(\n    ref as Ref<DialogElement>,\n    innerDialogRef,\n    {\n      visible: isVisible,\n      show,\n      hide\n    } as DialogElement,\n    [innerDialogRef, hide, show, isVisible]\n  );\n\n  const handleKeyDown = useCallback(\n    (evt: KeyboardEvent) => {\n      if (!isVisible || !innerDialogRef.current) {\n        return;\n      }\n\n      if (evt.key === 'Escape' && stringToBoolean(dismissOnEscape) && isVisible) {\n        evt.preventDefault();\n        hide();\n        onEscape?.();\n        return;\n      }\n\n      if (evt.key === 'Tab') {\n        const focusableElements: HTMLElement[] = Array.from(\n          innerDialogRef.current.querySelectorAll(\n            'a:not([tabindex=\"-1\"]):not([disabled]), button:not([tabindex=\"-1\"]):not([disabled]), input:not([tabindex=\"-1\"]):not([disabled]), textarea:not([tabindex=\"-1\"]):not([disabled]), select:not([tabindex=\"-1\"]):not([disabled]), details:not([tabindex=\"-1\"]):not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])'\n          )\n        );\n\n        focusableElements.sort((a, b) => b.tabIndex - a.tabIndex);\n\n        const firstElement = focusableElements[0];\n        const lastElement = focusableElements[focusableElements.length - 1];\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          evt.preventDefault();\n          lastElement.focus();\n        }\n\n        if (!evt.shiftKey && document.activeElement === lastElement) {\n          evt.preventDefault();\n          firstElement.focus();\n        }\n      }\n    },\n    [dismissOnEscape, hide, isVisible, onEscape]\n  );\n\n  const handleClickOutside = useCallback(\n    (event: MouseEvent) => {\n      if ((event.target as HTMLElement).classList.contains('agora-dialog-backdrop')) {\n        hide();\n        onClickedOutside?.();\n      }\n    },\n    [hide, onClickedOutside]\n  );\n\n  useEffect(() => {\n    document?.addEventListener('keydown', handleKeyDown);\n\n    if (!stringToBoolean(fullScreen) && stringToBoolean(dismissOnBackdropClick)) {\n      document?.addEventListener('click', handleClickOutside);\n    }\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n\n      if (!stringToBoolean(fullScreen) && stringToBoolean(dismissOnBackdropClick)) {\n        document?.removeEventListener('click', handleClickOutside);\n      }\n    };\n  }, [dismissOnEscape, fullScreen, dismissOnBackdropClick, handleClickOutside, handleKeyDown]);\n\n  useEffect(() => {\n    if (isVisible && innerDialogRef.current) {\n      document.body.classList.add('overflow-hidden');\n\n      const focusableElements: HTMLElement[] = Array.from(\n        innerDialogRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        )\n      );\n\n      focusableElements.sort((a, b) => b.tabIndex - a.tabIndex);\n\n      const autoFocusIndex = focusableElements.findIndex((e) => stringToBoolean(e.getAttribute('data-autofocus')?.toString()));\n\n      const firstElement = autoFocusIndex >= 0 ? focusableElements[autoFocusIndex] : focusableElements[0];\n\n      if (firstElement) {\n        firstElement.focus();\n      }\n    } else {\n      document.body.classList.remove('overflow-hidden');\n    }\n  }, [isVisible]);\n\n  const containerClassNames = classNames(\n    'agora-dialog',\n    {\n      closed: !isVisible\n    },\n    className\n  );\n\n  return (\n    <div ref={innerDialogRef} className={containerClassNames} aria-modal=\"true\" role=\"dialog\" {...props}>\n      {!fullScreen && <div className=\"agora-dialog-backdrop\" />}\n      {children}\n    </div>\n  );\n};\n\nexport { Dialog };\n","import React, { ComponentProps, FC, ReactNode, Ref, useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { Dialog, DialogElement } from '@/components/dialog';\n\nimport './drawer.css';\n\nexport type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerElement extends HTMLDivElement {\n  /**\n   * Open drawer.\n   */\n  isOpen: boolean;\n  /**\n   * Open drawer.\n   */\n  open: () => void;\n  /**\n   * Close drawer.\n   */\n  close: () => void;\n}\n\nexport interface DrawerProps extends ComponentProps<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Allow users to dismiss the drawer by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Dismiss on back drop click.\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Position of the drawer.\n   */\n  position?: DrawerPosition;\n  /**\n   * Callback to be called when click outside.\n   */\n  onClickedOutside?: () => void;\n  /**\n   * Callback to be called when escape is pressed.\n   */\n  onEscape?: () => void;\n  /**\n   * Callback to be called when the drawer is opened.\n   */\n  onShow?: () => void;\n  /**\n   * Callback to be called when the drawer is closed.\n   */\n  onHide?: () => void;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\n/**\n * Return icon default animation class drawer icon name and default position.\n */\nconst Drawer: FC<DrawerProps> = ({\n  ref = null,\n  children,\n  dismissOnEscape = true,\n  dismissOnBackdropClick = true,\n  darkMode = false,\n  position = 'left',\n  onClickedOutside,\n  onEscape,\n  onShow,\n  onHide,\n  className,\n  'aria-label': ariaLabel,\n  'aria-labelledby': ariaLabelledby,\n  ...props\n}) => {\n  const [open, setOpen] = useState(false);\n\n  const dialogRef = useRef<DialogElement>(null);\n\n  const drawerClassNames = classNames(\n    `agora-drawer`,\n\n    { 'agora-drawer-horizontal': position === 'left' || position === 'right' },\n    { 'agora-drawer-vertical': position === 'top' || position === 'bottom' },\n\n    { ['agora-drawer-open-' + position]: open },\n    { ['agora-drawer-close-' + position]: !open },\n    { 'dark-mode': stringToBoolean(darkMode) }\n  );\n\n  const handleClose = useCallback(() => {\n    if (!open) {\n      return;\n    }\n\n    const fn = () => {\n      setOpen(false);\n      dialogRef.current?.hide();\n      dialogRef.current?.querySelector('.agora-drawer')?.classList?.remove(`agora-drawer-close-${position}`);\n      dialogRef.current?.querySelector('.agora-drawer')?.removeEventListener('animationend', fn);\n\n      onHide?.();\n    };\n\n    dialogRef.current?.querySelector('.agora-drawer')?.addEventListener('animationend', fn);\n    dialogRef.current?.querySelector('.agora-drawer')?.classList.add(`agora-drawer-close-${position}`);\n  }, [onHide, open, position]);\n\n  const handleOpen = () => {\n    if (open) {\n      return;\n    }\n\n    const fn = () => {\n      dialogRef.current?.querySelector('.agora-drawer')?.removeEventListener('animationend', fn);\n      onShow?.();\n    };\n\n    dialogRef.current?.querySelector('.agora-drawer')?.addEventListener('animationend', fn);\n\n    setOpen(true);\n    dialogRef.current?.show();\n  };\n\n  useExpandedRef<DrawerElement>(\n    ref as Ref<DrawerElement>,\n    dialogRef,\n    {\n      isOpen: open,\n      open: handleOpen,\n      close: handleClose\n    } as DrawerElement,\n    [dialogRef, handleOpen, handleClose, open]\n  );\n\n  const handleKeyDown = useCallback(\n    (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        handleClose();\n        onEscape?.();\n        return;\n      }\n    },\n    [handleClose, onEscape]\n  );\n\n  const handleClickOutside = useCallback(\n    (event: MouseEvent) => {\n      if ((event.target as HTMLElement).classList.contains('agora-dialog-backdrop')) {\n        handleClose();\n        onClickedOutside?.();\n      }\n    },\n    [handleClose, onClickedOutside]\n  );\n\n  useEffect(() => {\n    if (stringToBoolean(dismissOnEscape)) {\n      document?.addEventListener('keydown', handleKeyDown);\n    }\n    if (stringToBoolean(dismissOnBackdropClick)) {\n      document?.addEventListener('click', handleClickOutside);\n    }\n\n    return () => {\n      if (stringToBoolean(dismissOnEscape)) {\n        document?.removeEventListener('keydown', handleKeyDown);\n      }\n      if (stringToBoolean(dismissOnBackdropClick)) {\n        document?.removeEventListener('click', handleClickOutside);\n      }\n    };\n  }, [dismissOnEscape, dismissOnBackdropClick, handleClickOutside, handleKeyDown]);\n\n  return (\n    <Dialog\n      aria-label={ariaLabel}\n      aria-labelledby={ariaLabelledby}\n      ref={dialogRef}\n      className={className}\n      dismissOnBackdropClick={false}\n      dismissOnEscape={false}\n    >\n      <div {...props} className={drawerClassNames}>\n        {children}\n      </div>\n    </Dialog>\n  );\n};\n\nexport { Drawer };\n","import React, { ComponentProps, FC, Ref, useEffect, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { Button, ButtonProps, ButtonVariant } from '@/components/button';\n\nimport './rating-buttons.css';\n\nexport type RatingStatus = 'like' | 'dislike' | 'neutral';\n\nexport interface RatingButtonsElement extends HTMLDivElement {\n  status: RatingStatus;\n}\n\nexport interface RatingButtonsProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Like button definition.\n   */\n  likeButton?: ButtonProps;\n  /**\n   * Dislike button definition.\n   */\n  dislikeButton?: ButtonProps;\n  /**\n   * Defines if the buttons only contains the icon.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Toggles dark mode in buttons.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  variant?: ButtonVariant;\n  /**\n   *  Event triggered whenever any of the button changes is own state.\n   */\n  onChange?: (status: RatingStatus) => void;\n}\n\nconst RatingButtons: FC<RatingButtonsProps> = ({\n  ref = null,\n  likeButton,\n  dislikeButton,\n  iconOnly = false,\n  darkMode = false,\n  variant,\n  className = '',\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [pressedButton, setPressedButton] = useState<RatingStatus>('neutral');\n\n  const handleToggleButton = (buttonType: RatingStatus) => {\n    setPressedButton((last) => (last === buttonType ? 'neutral' : buttonType));\n  };\n\n  useEffect(() => {\n    asyncTrigger(() => onChange?.(pressedButton));\n  }, [pressedButton]);\n\n  const createButton = (buttonProps: ButtonProps, buttonType: RatingStatus) => {\n    const selected = pressedButton === buttonType;\n    return (\n      <Button\n        {...buttonProps}\n        id={`${propsClone.id}-${buttonType}`}\n        onClick={() => handleToggleButton(buttonType)}\n        appearance={selected ? 'solid' : 'outline'}\n        aria-pressed={pressedButton === buttonType ? 'true' : 'false'}\n      />\n    );\n  };\n\n  const ratingButtonClasses = classNames('rating-buttons', stringToBoolean(darkMode) ? 'dark' : '', className);\n  const ratingButtonWrapperClasses = classNames('rating-buttons-wrapper', iconOnly ? 'icon-only' : '', className);\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<RatingButtonsElement>(\n    ref as Ref<RatingButtonsElement>,\n    innerRef,\n    {\n      status: pressedButton\n    } as RatingButtonsElement,\n    [pressedButton]\n  );\n\n  const parsedLikeButton = {\n    ...likeButton,\n    'className': 'agora-btn-like',\n    'hasIcon': true,\n    'trailingIcon': 'agora-line-thumbs-up',\n    'trailingIconHover': 'agora-solid-thumbs-up',\n    'variant': variant ?? likeButton?.variant,\n    'darkMode': darkMode,\n    'iconOnly': iconOnly,\n    'aria-label': iconOnly ? likeButton?.children?.toString() : null\n  } as ButtonProps;\n\n  const parsedDislikeButton = {\n    ...dislikeButton,\n    'className': 'agora-btn-dislike',\n    'hasIcon': true,\n    'trailingIcon': 'agora-line-thumbs-down',\n    'trailingIconHover': 'agora-solid-thumbs-down',\n    'variant': variant ?? dislikeButton?.variant,\n    'darkMode': darkMode,\n    'iconOnly': iconOnly,\n    'aria-label': iconOnly ? dislikeButton?.children?.toString() : null\n  } as ButtonProps;\n\n  return (\n    <div {...props} className={ratingButtonClasses} ref={innerRef}>\n      <ul className={ratingButtonWrapperClasses}>\n        <li> {!!likeButton && createButton(parsedLikeButton, 'like')}</li>\n        <li>{!!dislikeButton && createButton(parsedDislikeButton, 'dislike')}</li>\n      </ul>\n    </div>\n  );\n};\n\nexport { RatingButtons };\n","import React, {\n  Children,\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  isValidElement,\n  KeyboardEvent,\n  MouseEvent,\n  ReactElement,\n  ReactNode,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport classNames from 'classnames';\n\nimport { Icon, IconProps } from '@/components/icon';\nimport { BooleanProp, FeedbackState } from '@/models';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport './rating-icons.css';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nexport interface RatingIconsElement extends HTMLDivElement {\n  rating: number;\n}\n\nexport interface RatingIconsProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Label of the rating icons.\n   */\n  label?: ReactNode;\n  /**\n   * Hide rating icons label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Set the rating icons in readonly mode.\n   */\n  readOnly?: BooleanProp;\n  /**\n   *  Change Event that is triggered whenever rating changes.\n   */\n  onChange?: (value: number) => void;\n  /**\n   *  Default rating value.\n   */\n  value?: number;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasError?: BooleanProp;\n  /**\n   * The list of icons to use as rating icon values;\n   */\n  children?: ReactElement<IconProps> | ReactElement<IconProps>[];\n}\n\nconst RatingIcons: FC<RatingIconsProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  darkMode = false,\n  readOnly = false,\n  className = '',\n  value,\n  onChange,\n  hasError = false,\n  hasFeedback = false,\n  feedbackState = 'info',\n  feedbackText = '',\n  children,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const iconElements: ReactElement<IconProps>[] = Children.toArray(children).filter((child) => {\n    return isValidElement<IconProps>(child) && (child as ReactElement).type === Icon;\n  }) as ReactElement<IconProps>[];\n\n  const startWrapperRef = useRef<HTMLDivElement>(null);\n\n  const [selectedIndex, setSelectedIndex] = useState<number>(value ?? 0);\n\n  const [hoverIndex, setHoverIndex] = useState<number>(0);\n\n  const handleMouseDown = (evt: MouseEvent<HTMLDivElement>) => {\n    if (stringToBoolean(readOnly)) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleMouseEnter = (index: number) => {\n    return () => {\n      if (!stringToBoolean(readOnly)) {\n        setHoverIndex(index);\n      }\n    };\n  };\n\n  const handleMouseLeave = () => {\n    if (!stringToBoolean(readOnly)) {\n      setHoverIndex(0);\n    }\n  };\n\n  const handleClick = (index: number) => {\n    return () => {\n      if (!stringToBoolean(readOnly)) {\n        setSelectedIndex(index);\n      }\n    };\n  };\n\n  const onkeyDownHandler = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (stringToBoolean(readOnly)) {\n      return;\n    }\n\n    const { code } = evt;\n\n    setSelectedIndex((last) => {\n      if (code === 'ArrowLeft') {\n        return last > 1 ? last - 1 : iconElements.length;\n      }\n\n      if (code === 'ArrowRight') {\n        return last == iconElements.length ? 1 : last + 1;\n      }\n\n      return last;\n    });\n  };\n\n  const handleFocusIcon = (evt: FocusEvent<HTMLDivElement>) => {\n    const dataValue = parseInt(evt.target.getAttribute('data-icon-value') ?? '1', 10);\n    setSelectedIndex(dataValue);\n  };\n\n  useEffect(() => {\n    if (document.activeElement?.classList.contains('rating-icon') && startWrapperRef.current) {\n      const focusedIcon = startWrapperRef.current.querySelector(`.rating-icon[data-icon-value = '${selectedIndex}']`);\n      (focusedIcon as HTMLElement)?.focus();\n    }\n\n    asyncTrigger(() => onChange?.(selectedIndex));\n  }, [selectedIndex]);\n\n  useEffect(() => {\n    if (value) {\n      setSelectedIndex(value);\n    }\n  }, [value]);\n\n  const ratingIconClasses = classNames(\n    'agora-rating-icons',\n    { dark: stringToBoolean(darkMode) },\n    { 'read-only': stringToBoolean(readOnly) },\n    {\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<RatingIconsElement>(\n    ref as React.Ref<RatingIconsElement>,\n    innerRef,\n    {\n      rating: selectedIndex\n    } as RatingIconsElement,\n    [selectedIndex]\n  );\n\n  return (\n    <div\n      ref={innerRef}\n      className={ratingIconClasses}\n      {...props}\n      role=\"radiogroup\"\n      {...(stringToBoolean(hideLabel) ? { 'aria-label': label?.toString() } : { 'aria-labelledby': `label-${generatedId}` })}\n    >\n      <div className=\"flex flex-col gap-8\">\n        {!stringToBoolean(hideLabel) && (\n          <div id={`label-${generatedId}`} className=\"rating-label\">\n            {label}\n          </div>\n        )}\n\n        <div ref={startWrapperRef} className=\"rating-wrapper\">\n          {iconElements.map((iconReactElement, index) => {\n            const iconValue = index + 1;\n            const isHovered = iconValue <= hoverIndex;\n            const isSelected = selectedIndex !== null && iconValue <= selectedIndex;\n\n            const clonedIcon = cloneElement<IconProps>(iconReactElement, {\n              name:\n                isHovered || isSelected\n                  ? iconReactElement.props.name?.replace('line', 'solid')\n                  : iconReactElement.props.name?.replace('solid', 'line')\n            });\n\n            const iconKey = `${generatedId}-icon-${index}`;\n            let tabIndexValue = -1;\n            if (stringToBoolean(readOnly)) {\n              tabIndexValue = -1;\n            } else if (selectedIndex <= 0) {\n              tabIndexValue = index === 0 ? 0 : -1;\n            } else {\n              tabIndexValue = selectedIndex === iconValue ? 0 : -1;\n            }\n\n            return (\n              <div\n                key={iconKey}\n                id={`${generatedId}-${iconValue}`}\n                className=\"rating-icon\"\n                role=\"radio\"\n                aria-checked={selectedIndex === iconValue}\n                tabIndex={tabIndexValue}\n                onMouseDownCapture={handleMouseDown}\n                onMouseEnter={handleMouseEnter(iconValue)}\n                onMouseLeave={handleMouseLeave}\n                onClick={handleClick(iconValue)}\n                onKeyDown={onkeyDownHandler}\n                onFocus={handleFocusIcon}\n                data-icon-value={iconValue}\n                aria-describedby={\n                  (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText\n                    ? `rating-icons-${propsClone.id}-feedback`\n                    : undefined\n                }\n              >\n                {clonedIcon}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`rating-icons-${propsClone.id}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Hidden svg filter */}\n      <svg style={{ display: 'none' }}>\n        <defs>\n          <filter id=\"inner-shadow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n            <feOffset dx=\"0\" dy=\"3\" />\n            <feGaussianBlur stdDeviation=\"3\" result=\"offset-blur\" />\n            <feComposite operator=\"out\" in=\"SourceGraphic\" in2=\"offset-blur\" result=\"inverse\" />\n            <feFlood floodColor=\"black\" floodOpacity=\"0.45\" result=\"color\" />\n            <feComposite operator=\"in\" in=\"color\" in2=\"inverse\" result=\"shadow\" />\n            <feComposite operator=\"over\" in=\"shadow\" in2=\"SourceGraphic\" />\n          </filter>\n        </defs>\n      </svg>\n    </div>\n  );\n};\n\nexport { RatingIcons };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { RatingButtons, RatingButtonsProps, RatingStatus } from '@/components/ratings';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './feedback.css';\n\nexport interface FeedbackProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the feedback.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the feedback.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The rating button props.\n   */\n  ratingButtons?: RatingButtonsProps;\n  /**\n   * The message of the feedback.\n   */\n  message?: ReactNode;\n  /**\n   * The dark mode of the feedback.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n}\n\nexport const Feedback: FC<FeedbackProps> = ({\n  title,\n  subtitle,\n  ratingButtons,\n  message,\n  darkMode = false,\n  className,\n  headingLevel: Heading = 'h3',\n  ...props\n}) => {\n  const [showMessage, setShowMessage] = useState(false);\n\n  const handleChange = (status: RatingStatus) => {\n    setShowMessage(status !== 'neutral');\n    ratingButtons?.onChange?.(status);\n  };\n\n  const feedbackClasses = classNames('agora-feedback', stringToBoolean(darkMode) ? 'darkMode' : '', className);\n\n  const parsedRatingButtons: RatingButtonsProps = {\n    ...ratingButtons,\n    darkMode: stringToBoolean(darkMode)\n  };\n\n  return (\n    <div className={feedbackClasses} {...props}>\n      {(title || subtitle) && (\n        <div className=\"xs:col-span-4 md:col-span-5 xl:col-span-6\">\n          {title && <Heading className=\"title\">{title}</Heading>}\n          {subtitle && <p className=\"subtitle\">{subtitle}</p>}\n        </div>\n      )}\n      {ratingButtons && (\n        <div className=\"xs:col-span-4 md:col-span-3 xl:col-span-3\">\n          <RatingButtons {...parsedRatingButtons} onChange={handleChange} />\n        </div>\n      )}\n      {showMessage && message && (\n        <div className=\"xs:col-span-4 md:col-span-5 xl:col-span-3\">\n          <p className=\"message\">{message}</p>\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FooterBrandBadge: FC<{\n  brandImage: LinkableImagesProps;\n  badgeImage?: LinkableImagesProps;\n}> = ({ brandImage, badgeImage }) => {\n  return (\n    <div className=\"grid items-center xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 xs:pt-32 md:pt-64 xs:pb-32 xl:pb-64\">\n      <div className=\"xs:col-span-2 md:col-span-4 xl:col-span-6\">\n        {brandImage.link && brandImage.image && (\n          <a\n            {...brandImage.link}\n            className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)]\"\n          >\n            <img alt={brandImage.image.alt} {...brandImage.image} />\n          </a>\n        )}\n        {!brandImage.link && brandImage.image && <img {...brandImage.image} alt={brandImage.image.alt} />}\n      </div>\n      <div className=\"xs:col-span-2 md:col-span-4 xl:col-span-6 justify-self-end\">\n        {badgeImage?.link && badgeImage?.image && (\n          <a\n            {...badgeImage.link}\n            className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)]\"\n          >\n            <img alt={badgeImage.image.alt} {...badgeImage.image} />\n          </a>\n        )}\n        {badgeImage && !badgeImage.link && badgeImage.image && <img {...badgeImage.image} alt={badgeImage.image.alt} />}\n      </div>\n    </div>\n  );\n};\n\nexport { FooterBrandBadge };\n","import React, { FC, ReactNode } from 'react';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FooterCaptionPartners: FC<{\n  caption: string | ReactNode;\n  partnersLogos: LinkableImagesProps[];\n  partnersLogosAriaLabel?: string;\n  darkMode?: boolean;\n}> = ({ caption, partnersLogos, partnersLogosAriaLabel, darkMode }) => {\n  const textColor = darkMode ? 'text-[var(--color-neutral-500)]' : 'text-[var(--color-neutral-700)]';\n  const anchorTextColor = darkMode\n    ? 'text-[var(--color-neutral-700)] hover:text-[var(--color-neutral-600)]'\n    : 'text-[var(--color-neutral-500)] hover:text-[var(--color-neutral-700)]';\n\n  return (\n    <div className=\"flex items-center py-32 xs:max-md:flex-col\">\n      <div className=\"flex items-center xs:max-md:mb-32 md:w-[50%]\">\n        <span className={`text-m-regular ${textColor}`}>{caption}</span>\n      </div>\n\n      <nav className=\"flex items-center justify-end md:w-[50%]\" aria-label={partnersLogosAriaLabel}>\n        <ul className=\"flex flex-wrap gap-32 md:justify-end\">\n          {partnersLogos\n            .filter((_i, index) => index < 10)\n            .map((partner, index) => {\n              const key = `logo-${index}`;\n\n              return (\n                <li key={key}>\n                  {partner?.link && partner?.image && (\n                    <a\n                      {...partner.link}\n                      className={`${anchorTextColor} min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 opacity-50 hover:opacity-100 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)] focus:opacity-100`}\n                    >\n                      <img alt={partner.image.alt} {...partner.image} />\n                    </a>\n                  )}\n                  {!partner?.link && partner?.image && <img {...partner?.image} alt={partner?.image.alt} />}\n                </li>\n              );\n            })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n\nexport { FooterCaptionPartners };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\n\nimport { Anchor } from '@/components/anchor';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FooterSocialUsefulCopyright: FC<{\n  socialsLink?: LinkableIconsProps[];\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n  copyright: string | ReactNode;\n  socialsLinkAriaLabel?: string;\n  usefulLinksAriaLabel?: string;\n  darkMode?: boolean;\n}> = ({ socialsLink, usefulLinks, copyright, socialsLinkAriaLabel, usefulLinksAriaLabel, darkMode }) => {\n  const borderColorClass = darkMode ? 'border-white/5' : 'border-black/5';\n  const copyrightTextColorClass = darkMode ? 'text-[var(--color-neutral-500)]' : 'text-[var(--color-neutral-700)]';\n\n  return (\n    <div className=\"flex flex-col mx-[-64px] xl:flex-row xl:h-[260px]\">\n      {socialsLink && (\n        <nav\n          className={`flex items-center justify-center w-full h-[126px] border-b-2 ${borderColorClass} xl:justify-center xl:border-r-2 xl:h-full xl:w-[40%]`}\n          aria-label={socialsLinkAriaLabel}\n        >\n          <ul className=\"flex items-center justify-center gap-8 xl:gap-32\">\n            {socialsLink\n              .filter((_i, index) => index < 10)\n              .map((social) => {\n                const key = `social-${social.link?.title || social.icon}`;\n\n                return (\n                  <li key={key}>\n                    <Anchor\n                      hasIcon\n                      iconOnly\n                      appearance=\"link\"\n                      variant=\"neutral\"\n                      darkMode={darkMode}\n                      href={social.link?.href}\n                      title={social.link?.title}\n                      leadingIcon={social?.icon}\n                      target={social.link?.target}\n                      leadingIconHover={social?.iconHover}\n                    />\n                  </li>\n                );\n              })}\n          </ul>\n        </nav>\n      )}\n\n      <div className=\"flex flex-col pt-32 xs:mx-64 xl:w-[60%] xl:items-end xl:justify-center\">\n        {usefulLinks && (\n          <nav className=\"mb-32\" aria-label={usefulLinksAriaLabel}>\n            <ul className=\"flex flex-wrap xl:flex-nowrap md:justify-center xl:justify-end xs:flex-col md:flex-row xl:flex-row xs:gap-x-32 md:gap-[30px]\">\n              {usefulLinks\n                .filter((_i, index) => index < 8)\n                .map((link, index) => {\n                  const key = `useful-${index}`;\n                  return (\n                    <li key={key} className=\"py-8 inline-block\">\n                      <Anchor {...link} darkMode={darkMode} appearance=\"link\" variant=\"neutral\" />\n                    </li>\n                  );\n                })}\n            </ul>\n          </nav>\n        )}\n\n        <div className=\"mb-32 md:mb-64\">\n          <span className={`text-s-regular ${copyrightTextColorClass} flex md:justify-center xl:justify-end`}>{copyright}</span>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { FooterSocialUsefulCopyright };\n","import React, { FC } from 'react';\nimport { FooterBrandBadge } from './footer-brand-badge';\nimport { FooterCaptionPartners } from './footer-caption-partners';\nimport { FooterSocialUsefulCopyright } from './footer-social-useful-copyright';\nimport { FederatedFooterProps } from '../federated-footer';\nimport { PublicFooterProps } from '../public-footer/public-footer';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst MainFooter: FC<FederatedFooterProps | PublicFooterProps> = ({\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  darkMode\n}) => {\n  const bgColorClass = darkMode ? 'bg-[var(--color-primary-900)]' : 'bg-[var(--color-neutral-100)]';\n  const borderColorClass = darkMode ? 'border-white/5' : 'border-black/5';\n\n  return (\n    <div className={bgColorClass}>\n      <div className=\"container mx-auto\">\n        <FooterBrandBadge brandImage={brandImage} badgeImage={badgeImage} />\n\n        <hr aria-hidden className={`border-1 ${borderColorClass} w-full absolute left-0`} />\n\n        <FooterCaptionPartners\n          darkMode={darkMode}\n          caption={caption}\n          partnersLogos={partnersLogos}\n          partnersLogosAriaLabel={partnersLogosAriaLabel}\n        />\n\n        <hr aria-hidden className={`border-1 ${borderColorClass} w-full absolute left-0`} />\n\n        <FooterSocialUsefulCopyright\n          darkMode={darkMode}\n          socialsLink={socialsLink}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinks={usefulLinks}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n          copyright={copyright}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { MainFooter };\n","import React, { FC } from 'react';\nimport { Anchor } from '@/components/anchor';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\nimport { CardFooterProps } from '@/components/footer';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FederatedFooterCard: FC<CardFooterProps> = ({ title, description, links, darkMode }) => {\n  const bgColorClass = darkMode ? 'footer-gradient-dark' : 'footer-gradient-light';\n\n  return (\n    <div className={`footer-gradient ${bgColorClass} xl:overflow-hidden`}>\n      <div className=\"container mx-auto\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 xl:-mr-112\">\n          <div className=\"col-span-5 w-[calc(100%+32px)] h-128 self-end xs:hidden md:hidden xl:block\" />\n          <div className=\"grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-7 xs:col-span-4 md:col-span-8 xl:col-span-7 xl:col-start-6 xs:pb-32 md:pb-64 xl:pb-64 bg-[var(--color-primary-100)] xl:pr-112\">\n            <div className=\"xs:col-span-4 md:col-span-6 xl:col-start-2 xl:col-span-7\">\n              <BookmarkIcon aria-hidden className=\"mb-32\" />\n              {title && <h2 className=\"xs:text-m-bold md:text-l-bold text-[var(--color-primary-900)]\">{title}</h2>}\n              {description && <p className=\"text-m-regular text-[var(--color-primary-900)] mt-16\">{description}</p>}\n            </div>\n            {links && (\n              <ul className=\"grid xs:grid-cols-1 md:grid-cols-3-auto xs:gap-0 md:gap-[28px] xs:col-span-4 md:col-span-8 xl:col-start-2 xl:col-span-7 mt-32\">\n                {links\n                  .filter((_i, index) => index < 3)\n                  .map((link, index) => {\n                    const key = `link-${index}`;\n                    return (\n                      <li key={key}>\n                        <Anchor\n                          {...link}\n                          className=\"xs:flex xs:justify-between\"\n                          appearance=\"link\"\n                          variant=\"primary\"\n                          hasIcon\n                          trailingIcon=\"agora-line-arrow-right-circle\"\n                          trailingIconHover=\"agora-solid-arrow-right-circle\"\n                        />\n                      </li>\n                    );\n                  })}\n              </ul>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { FederatedFooterCard };\n","import { CardFooterProps, LinkableIconsProps, LinkableImagesProps } from '@/components/footer';\nimport React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\n\nimport { MainFooter } from '../shared-components/footer-main';\nimport { FederatedFooterCard } from './federated-footer-card';\nimport './federated-footer.css';\n\n/**\n * @deprecated Use Footer v2 Instead.\n */\nexport interface FederatedFooterProps {\n  /**\n   * Informative card. Links limited to first 3, remaining array is discarded.\n   */\n  card?: CardFooterProps;\n\n  /**\n   * Image on left side with/without link.\n   */\n  brandImage: LinkableImagesProps;\n\n  /**\n   * Image on right side with/without link.\n   */\n  badgeImage?: LinkableImagesProps;\n\n  /**\n   * Small descriptive text\n   */\n  caption: string | ReactNode;\n\n  /**\n   * List of images with or without link. Links limited to first 10, remaining array is discarded.\n   */\n  partnersLogos: LinkableImagesProps[];\n\n  /**\n   * Accessible text for the partners logos.\n   */\n  partnersLogosAriaLabel?: string;\n\n  /**\n   * List of icons with/without link. Links limited to first 10, remaining array is discarded.\n   */\n  socialsLink?: LinkableIconsProps[];\n\n  /**\n   * Accessible text for the social links.\n   */\n  socialsLinkAriaLabel?: string;\n\n  /**\n   * List of links. Links limited to first 8, remaining array is discarded.\n   */\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n\n  /**\n   * Accessible text for the useful links.\n   */\n  usefulLinksAriaLabel?: string;\n\n  /*\n   * Copyright text\n   */\n  copyright: string;\n\n  /**\n   * The flag to set if the footer is in dark mode or light mode.\n   */\n  darkMode?: boolean;\n}\n\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FederatedFooter: FC<FederatedFooterProps> = ({\n  card,\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  darkMode\n}) => {\n  // foot was create without darkMode prop, so default is true to keep backward compatibility\n  const isDarkMode = darkMode === undefined ? true : darkMode;\n\n  return (\n    <div className=\"agora-footer\">\n      {card && <FederatedFooterCard darkMode={isDarkMode} {...card} />}\n      <MainFooter\n        darkMode={isDarkMode}\n        brandImage={brandImage}\n        badgeImage={badgeImage}\n        caption={caption}\n        partnersLogos={partnersLogos}\n        partnersLogosAriaLabel={partnersLogosAriaLabel}\n        socialsLink={socialsLink}\n        socialsLinkAriaLabel={socialsLinkAriaLabel}\n        usefulLinks={usefulLinks}\n        usefulLinksAriaLabel={usefulLinksAriaLabel}\n        copyright={copyright}\n      />\n    </div>\n  );\n};\n\nexport { FederatedFooter };\n","import classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterContacts: FC<{ contacts: ContactsFooterProps[]; contactsOnly: boolean; hasCardLinks: boolean }> = ({\n  contacts,\n  contactsOnly,\n  hasCardLinks\n}) => {\n  const contactsClassName = classNames('grid gap-x-32 xs:gap-y-32 md:gap-y-64 md:content-center', {\n    'xs:pt-32 md:pt-32 xl:pt-64': contactsOnly,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-6 xs:col-span-4 md:col-span-8 xl:col-span-6': !hasCardLinks,\n    'xs:grid-cols-4 md:grid-cols-4 xl:grid-cols-6 xs:col-span-4 md:col-span-4 xl:col-span-6': !contactsOnly && hasCardLinks\n  });\n  return (\n    <div className={contactsClassName}>\n      {contacts\n        ?.filter((_i, index) => index < 2)\n        .map((contact, index) => {\n          const key = `contacts-${index}`;\n          return (\n            <div key={key} className=\"xs:col-span-4 md:col-span-4 xl:col-span-3\">\n              <div className=\"text-m-bold text-[var(--color-primary-900)] mb-8\">{contact.title}</div>\n              <div className=\"text-m-regular text-[var(--color-primary-900)]\">{contact.description}</div>\n              {contact.phones && (\n                <div>\n                  {contact.phones[0] && (\n                    <a href={`tel:${contact.phones[0]}`}>\n                      <span className=\"text-l-bold text-[var(--color-primary-900)]\">{contact.phones[0].match(/.{1,3}/g)?.join(' ')} </span>\n                    </a>\n                  )}\n                  {contact.phones[1] && <span className=\"text-m-regular text-[var(--color-primary-900)]\">{` ${contact.phones[1]} `}</span>}\n                  {contact.phones[2] && (\n                    <a href={`tel:${contact.phones[2]}`}>\n                      <span className=\"text-l-bold text-[var(--color-primary-900)]\">{contact.phones[2].match(/.{1,3}/g)?.join(' ')}</span>\n                    </a>\n                  )}\n                </div>\n              )}\n            </div>\n          );\n        })}\n    </div>\n  );\n};\n\nexport { PublicFooterContacts };\n","import classNames from 'classnames';\nimport React, { FC, useEffect } from 'react';\nimport { Anchor } from '@/components/anchor';\n\nimport { CardFooterProps } from '../models';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { PublicFooterContacts } from './public-footer-contacts';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterHighlightCard: FC<{ card?: CardFooterProps; contacts?: ContactsFooterProps[]; hasCardLinks: boolean }> = ({\n  card,\n  contacts,\n  hasCardLinks\n}) => {\n  const cardClassName = classNames(\n    'grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xl:row-span-1 bg-[var(--color-primary-100)] pb-32 relative xl:-ml-[112px] xl:pl-[112px]',\n    {\n      'pb-64': !contacts\n    }\n  );\n\n  const cardHelpClassName = classNames('relative z-[1]', {\n    'xs:col-span-4 md:col-span-6 xl:col-span-6': hasCardLinks,\n    'xs:col-span-4 md:col-span-8 xl:col-span-6': !hasCardLinks\n  });\n\n  const contactsClassName = classNames('grid gap-x-32 xl:row-span-1 bg-[var(--color-primary-100)] xl:-ml-[112px] xl:pl-[112px]', {\n    'xs:grid-cols-4 md:grid-cols-4 xl:grid-cols-8 xs:col-span-4 md:col-span-4 xl:col-span-8 xs:pb-32 md:pb-64 xl:pb-64':\n      card && hasCardLinks && contacts,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xs:pb-32 md:pb-64 xl:pb-64':\n      card && !hasCardLinks && contacts,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xs:pb-32 md:pb-32 xl:pb-64 ':\n      !card && !hasCardLinks && contacts\n  });\n\n  useEffect(() => {\n    const setCardLinkVW = () => {\n      //  THIS IS NEEDED BECAUSE CSS UNIT 100VW TAKES SCROLLBAR INTO ACCOUNT AND THE CALCULATION OF THE WITH OF THE CARD INTRODUCES A HORIZONTAL SCROLL BAR.\n      //  TO SOLVE THIS THE CLIENT WIDTH DOES NOT TAKE INTO ACCOUNT HE SCROLL BAR WITH. WE SET A CSS VARIABLE TO BE USED LATTER IN THE CLASS TO PERFORM THE CALCULATION.\n      const vw = document.documentElement.clientWidth;\n      document.documentElement.style.setProperty('--footer-aux-vw', `${vw}px`);\n    };\n\n    if (hasCardLinks) {\n      window.addEventListener('resize', setCardLinkVW);\n      setCardLinkVW();\n    }\n\n    const cleanUp = () => {\n      window.removeEventListener('resize', setCardLinkVW);\n    };\n\n    return cleanUp;\n  }, [hasCardLinks]);\n\n  return (\n    <>\n      {card && (\n        <div className={cardClassName}>\n          {hasCardLinks && (\n            <div\n              aria-hidden\n              className=\"absolute left-0 xs:block md:block xl:hidden xs:w-[calc(100%+32px)] md:w-[calc(((var(--footer-aux-vw)-100%)/2)+100%)] h-full bg-[var(--color-primary-100)] z-0\"\n            />\n          )}\n          <div className={cardHelpClassName}>\n            <BookmarkIcon aria-hidden className=\"mb-32\" />\n            {card?.title && <h2 className=\"xs:text-m-bold md:text-l-bold text-[var(--color-primary-900)]\">{card.title}</h2>}\n            {card?.description && <div className=\"text-m-regular text-[var(--color-primary-900)] mt-16\">{card.description}</div>}\n          </div>\n          {card.links && (\n            <ul className=\"relative z-[1] xs:col-span-4 md:col-span-8 xl:col-span-6 mt-32 inline-flex gap-x-32 xs:flex-col md:flex-row xl:flex-row\">\n              {card.links\n                .filter((_i, index) => index < 3)\n                .map((link, index) => {\n                  const key = `link-${index}`;\n                  return (\n                    <li key={key} className=\"py-8\">\n                      <Anchor\n                        {...link}\n                        className=\"xs:flex xs:justify-between\"\n                        appearance=\"link\"\n                        variant=\"primary\"\n                        hasIcon\n                        trailingIcon=\"agora-line-arrow-right-circle\"\n                        trailingIconHover=\"agora-solid-arrow-right-circle\"\n                      />\n                    </li>\n                  );\n                })}\n            </ul>\n          )}\n        </div>\n      )}\n      {contacts && (\n        <div className={contactsClassName}>\n          {contacts && <PublicFooterContacts contacts={contacts} contactsOnly={!card && !hasCardLinks} hasCardLinks={hasCardLinks} />}\n        </div>\n      )}\n    </>\n  );\n};\n\nexport { PublicFooterHighlightCard };\n","import React, { FC } from 'react';\n\nimport { Anchor } from '@/components/anchor';\nimport { CardFooterProps } from '../models';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterHighlightCardLinks: FC<CardFooterProps> = (cardLinks) => {\n  const textColorClass = cardLinks.darkMode ? 'text-white' : 'text-[var(--color-neutral-900)]';\n\n  return (\n    <>\n      {cardLinks?.title && <h2 className={`xs:text-m-bold md:text-l-bold ${textColorClass}`}>{cardLinks.title}</h2>}\n      {cardLinks?.links && (\n        <nav aria-label={cardLinks.title as string}>\n          <ul className=\"mt-32\">\n            {cardLinks.links\n              .filter((_i, index) => index < 5)\n              .map((link, index) => {\n                const key = `link-${index}`;\n                return (\n                  <li key={key} className=\"py-8\">\n                    <Anchor {...link} darkMode={cardLinks.darkMode} appearance=\"link\" variant=\"neutral\" />\n                  </li>\n                );\n              })}\n          </ul>\n        </nav>\n      )}\n    </>\n  );\n};\n\nexport { PublicFooterHighlightCardLinks };\n","import classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { CardFooterProps } from '../models/CardFooterProps';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { PublicFooterHighlightCard } from './public-footer-highlight-card';\nimport { PublicFooterHighlightCardLinks } from './public-footer-highlight-card-links';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterHighlight: FC<{\n  card?: CardFooterProps;\n  cardLinks?: CardLinksFooterProps;\n  contacts?: ContactsFooterProps[];\n  darkMode?: boolean;\n}> = ({ card, cardLinks, contacts, darkMode }) => {\n  const bgColorClass = darkMode ? 'bg-[var(--color-primary-900)]' : 'bg-[var(--color-neutral-100)]';\n\n  const footerHighlightClassName = classNames({\n    'footer-highlight': darkMode,\n    'footer-highlight-only-card': darkMode && card && contacts && !cardLinks,\n    'footer-highlight-only-help': darkMode && card && !contacts && !cardLinks,\n    'footer-highlight-only-contacts': darkMode && !card && contacts && !cardLinks,\n\n    'footer-highlight-light': !darkMode,\n    'footer-highlight-only-card-light': !darkMode && card && contacts && !cardLinks,\n    'footer-highlight-only-help-light': !darkMode && card && !contacts && !cardLinks,\n    'footer-highlight-only-contacts-light': !darkMode && !card && contacts && !cardLinks\n  });\n\n  const cardFooterClassName = classNames('grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-x-32 xl:grid-rows-1', {\n    'xl:grid-flow-col': card && cardLinks,\n    'xl:grid-flow-row': card && !cardLinks\n  });\n\n  return (\n    <div className={footerHighlightClassName}>\n      <div className=\"container mx-auto\">\n        <div className={cardFooterClassName}>\n          <PublicFooterHighlightCard card={card} contacts={contacts} hasCardLinks={!!cardLinks} />\n          {cardLinks && (\n            <div\n              className={`grid gap-x-32 xs:grid-cols-4 md:grid-cols-4 xl-grid-cols-4 xs:col-span-4 md:col-span-4 xl:col-span-4 xl:row-span-2 ${bgColorClass} relative`}\n            >\n              <div aria-hidden className={`md:hidden xl:hidden absolute w-[calc(100%+64px)] -left-[32px] h-full ${bgColorClass} z-0`} />\n              <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:py-32 xs:pl-0 md:py-64 md:pl-64 xl:py-64 xl:pl-64 z-[1]\">\n                <PublicFooterHighlightCardLinks darkMode={darkMode} {...cardLinks} />\n              </div>\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { PublicFooterHighlight };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\nimport { FooterSocialUsefulCopyright } from '../shared-components/footer-social-useful-copyright';\nimport { PublicFooterHighlightCardLinks } from './public-footer-highlight-card-links';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterMainPlusCardLinks: FC<{\n  brandImage: LinkableImagesProps;\n  badgeImage?: LinkableImagesProps;\n  caption: string | ReactNode;\n  partnersLogos: LinkableImagesProps[];\n  partnersLogosAriaLabel?: string;\n  socialsLink?: LinkableIconsProps[];\n  socialsLinkAriaLabel?: string;\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n  usefulLinksAriaLabel?: string;\n  copyright: string | ReactNode;\n  cardLinks: CardLinksFooterProps;\n  darkMode?: boolean;\n}> = ({\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  cardLinks,\n  darkMode\n}) => {\n  const bgColorClass = darkMode ? 'bg-[var(--color-primary-900)]' : 'bg-[var(--color-neutral-100)]';\n  const borderColorClass = darkMode ? 'border-white/5' : 'border-black/5';\n  const anchorTextColor = darkMode\n    ? 'text-[var(--color-neutral-700)] hover:text-[var(--color-neutral-600)]'\n    : 'text-[var(--color-neutral-500)] hover:text-[var(--color-neutral-700)]';\n\n  return (\n    <div className={bgColorClass}>\n      <div className=\"container mx-auto\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32\">\n          <div className=\"xs:col-span-4 md:col-span-3 xl:col-span-6 xs:pt-32 md:pt-64\">\n            <div className=\"mb-32\">\n              {brandImage.link && brandImage.image && (\n                <a\n                  {...brandImage.link}\n                  className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center border-2 border-transparent rounded-4 outline-none focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)]\"\n                >\n                  <img alt={brandImage.image.alt} {...brandImage.image} />\n                </a>\n              )}\n              {!brandImage.link && brandImage.image && <img {...brandImage.image} alt={brandImage.image.alt} />}\n            </div>\n            <div className=\"mb-64\">\n              <span className=\"text-m-regular text-[var(--color-neutral-500)]\">{caption}</span>\n            </div>\n            {badgeImage && (\n              <div className=\"mb-64\">\n                {badgeImage?.link && badgeImage?.image && (\n                  <a\n                    {...badgeImage.link}\n                    className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center border-2 border-transparent rounded-4 outline-none focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)]\"\n                  >\n                    <img alt={badgeImage.image.alt} {...badgeImage.image} />\n                  </a>\n                )}\n                {badgeImage && !badgeImage.link && badgeImage.image && <img {...badgeImage.image} alt={badgeImage.image.alt} />}\n              </div>\n            )}\n          </div>\n          <div className=\"xs:col-span-4 md:col-span-1 xl:col-span-1 min-h-full min-w-full md:relative xl:relative\">\n            <hr\n              aria-hidden\n              className={`border-1 ${borderColorClass} md:h-[calc(100%-2px)] xl:h-[calc(100%-2px)] max-md:w-full md:bottom-0 right-0 absolute`}\n            />\n          </div>\n          <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:pt-32 md:pt-64\">\n            <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:py-32 xs:pl-0 md:pt-0 md:pb-64 md:pl-0 xl:pl-32 xl:pb-64 xl:pt-0\">\n              <PublicFooterHighlightCardLinks {...cardLinks} darkMode={darkMode} />\n            </div>\n          </div>\n        </div>\n\n        <hr aria-hidden className={`border-1 ${borderColorClass} w-full absolute left-0`} />\n        <div className=\"grid xs:justify-items-center md:justify-items-center xl:justify-items-start xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 py-32\">\n          <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\" aria-label={partnersLogosAriaLabel}>\n            {partnersLogos && (\n              <ul className=\"flex flex-wrap xs:gap-32 md:gap-[30px]\">\n                {partnersLogos\n                  .filter((_i, index) => index < 10)\n                  .map((partner, index) => {\n                    const key = `logo-${index}`;\n\n                    return (\n                      <li key={key}>\n                        {partner?.link && partner?.image && (\n                          <a\n                            {...partner.link}\n                            className={`${anchorTextColor} min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 opacity-50 hover:opacity-100 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)] focus:opacity-100`}\n                          >\n                            <img alt={partner.image.alt} {...partner.image} />\n                          </a>\n                        )}\n                        {!partner?.link && partner?.image && <img {...partner?.image} alt={partner?.image.alt} />}\n                      </li>\n                    );\n                  })}\n              </ul>\n            )}\n          </nav>\n        </div>\n        <hr aria-hidden className={`border-1 ${borderColorClass} w-full absolute left-0`} />\n\n        <FooterSocialUsefulCopyright\n          darkMode={darkMode}\n          socialsLink={socialsLink}\n          usefulLinks={usefulLinks}\n          copyright={copyright}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { PublicFooterMainPlusCardLinks };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\nimport { CardFooterProps } from '../models/CardFooterProps';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\nimport { MainFooter } from '../shared-components/footer-main';\nimport { PublicFooterHighlight } from './public-footer-highlight';\nimport { PublicFooterMainPlusCardLinks } from './public-footer-main-plus-card-links';\nimport './public-footer.css';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nexport interface PublicFooterProps {\n  /**\n   * Informative card. Links limited to first 3, remaining array is discarded.\n   */\n  card?: CardFooterProps;\n\n  /**\n   * Contacts limited to first 2, remaining array is discarded.\n   */\n  contacts?: ContactsFooterProps[];\n\n  /*\n   * Informative list of links. Links limited to first 5, remaining array is discarded.\n   */\n  cardLinks?: CardLinksFooterProps;\n\n  /**\n   * Image on left side with/without link.\n   */\n  brandImage: LinkableImagesProps;\n\n  /**\n   * Image on right side with/without link.\n   */\n  badgeImage?: LinkableImagesProps;\n\n  /**\n   * Small descriptive text\n   */\n  caption: string | ReactNode;\n\n  /**\n   * List of images with or without link. Links limited to first 10, remaining array is discarded.\n   */\n  partnersLogos: LinkableImagesProps[];\n\n  /**\n   * Accessible text for the partners logos.\n   */\n  partnersLogosAriaLabel?: string;\n\n  /**\n   * List of icons with/without link. Links limited to first 10, remaining array is discarded.\n   */\n  socialsLink?: LinkableIconsProps[];\n\n  /**\n   * Accessible text for the social links.\n   */\n  socialsLinkAriaLabel?: string;\n\n  /**\n   * List of links. Links limited to first 8, remaining array is discarded.\n   */\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n\n  /**\n   * Accessible text for the useful links.\n   */\n  usefulLinksAriaLabel?: string;\n\n  /*\n   * Copyright text\n   */\n  copyright: string | ReactNode;\n\n  /**\n   * The flag to set if the footer is in dark mode or light mode.\n   */\n  darkMode?: boolean;\n}\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooter: FC<PublicFooterProps> = ({\n  card,\n  contacts,\n  cardLinks,\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  darkMode\n}) => {\n  // foot was create without darkMode prop, so default is true to keep backward compatibility\n  const isDarkMode = darkMode === undefined ? true : darkMode;\n\n  return (\n    <div className=\"agora-footer\">\n      {(card || contacts || !cardLinks) && (\n        <>\n          <PublicFooterHighlight card={card} cardLinks={cardLinks} contacts={contacts} darkMode={isDarkMode} />\n          {(card || cardLinks || contacts) && (\n            <hr\n              aria-hidden\n              className=\"border-1 xs:border-white md:border-transparent xl:border-transparent opacity-5 w-full absolute left-0\"\n            />\n          )}\n          <MainFooter\n            darkMode={isDarkMode}\n            brandImage={brandImage}\n            badgeImage={badgeImage}\n            caption={caption}\n            partnersLogos={partnersLogos}\n            partnersLogosAriaLabel={partnersLogosAriaLabel}\n            socialsLink={socialsLink}\n            socialsLinkAriaLabel={socialsLinkAriaLabel}\n            usefulLinks={usefulLinks}\n            usefulLinksAriaLabel={usefulLinksAriaLabel}\n            copyright={copyright}\n          />\n        </>\n      )}\n      {!card && cardLinks && (\n        <PublicFooterMainPlusCardLinks\n          darkMode={isDarkMode}\n          cardLinks={cardLinks}\n          brandImage={brandImage}\n          badgeImage={badgeImage}\n          caption={caption}\n          partnersLogos={partnersLogos}\n          partnersLogosAriaLabel={partnersLogosAriaLabel}\n          socialsLink={socialsLink}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinks={usefulLinks}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n          copyright={copyright}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { PublicFooter };\n","import React, { ComponentProps, FC, HTMLProps } from 'react';\n\nimport classNames from 'classnames';\n\nimport './glossary-letters.css';\n\nexport type LetterStatus = 'default' | 'disabled' | 'selected';\n\nexport interface GlossaryLetter extends HTMLProps<HTMLAnchorElement> {\n  /**\n   * Letter to be rendered\n   */\n  letter: string;\n  /**\n   *  Glossary letter status\n   */\n  status: LetterStatus;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nexport interface GlossaryLettersProps extends ComponentProps<'div'> {\n  /**\n   * Letters Array\n   */\n  letters?: GlossaryLetter[];\n  /**\n   * Turn the dark mode on or off.\n   */\n  darkMode?: boolean;\n}\n\nconst GlossaryLetters: FC<GlossaryLettersProps> = ({ ref = null, letters, ...props }) => {\n  const lettersComponents = letters?.map(({ letter, status, ...anchorProps }) => {\n    const isDisabled = status === 'disabled';\n\n    const isSelected = status === 'selected';\n\n    const darkMode = props.darkMode || false;\n\n    const letterClassName = classNames('letter', {\n      'letter-disabled': isDisabled,\n      'letter-selected': isSelected && !darkMode,\n\n      'letter-dark': darkMode,\n      'letter-dark-selected': isSelected && darkMode\n    });\n\n    const href = `#${letter}`;\n\n    if (isDisabled) {\n      return (\n        <span key={`${letter}-${href}`} className={letterClassName} aria-disabled=\"true\">\n          {letter}\n        </span>\n      );\n    }\n\n    return (\n      <a key={`${letter}-${href}`} {...anchorProps} className={letterClassName} href={href}>\n        {letter}\n      </a>\n    );\n  });\n\n  return (\n    <nav {...props} className=\"navElement\" ref={ref}>\n      <div className=\"glossary-container\">{lettersComponents}</div>\n    </nav>\n  );\n};\n\nexport { GlossaryLetters };\n","import { AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooterActionProps } from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\nimport { NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { InputSearchBarProps } from '@/components/input-search-bar';\nimport { createContext, ReactElement, ReactNode, useContext } from 'react';\n\nexport interface HeaderDataContextProps {\n  getGeneralBarAriaLabel: () => string;\n\n  getInstitutionalPhrase: () => ReactNode;\n  getLogoImage: () => ReactNode;\n\n  hasVisibleAreas: () => boolean;\n  getAreasAriaLabel: () => string;\n  getAreas: () => InternalAreaProps[];\n  getActiveArea: () => InternalAreaProps | undefined;\n  onAreaChange?: (area: string) => void;\n\n  hasLanguages: () => boolean;\n  getLanguagesAriaLabel: () => string;\n  getCheckedLanguage: () => LanguageProps[];\n  getLanguages: () => LanguageProps[];\n  onLanguageChange?: (lang: string) => void;\n\n  getAuthenticated: () => AuthenticatedProps | null;\n  getAuthenticatedHeader: () => AuthenticatedHeaderProps | null;\n  getAuthenticatedBodyLinks: () => AuthenticatedBodyLinkProps[];\n  getAuthenticatedFooterActions: () => AuthenticatedFooterActionProps[];\n\n  getUnauthenticated: () => UnauthenticatedProps | null;\n  getUnauthenticatedLinks: () => UnauthenticatedLinkProps[];\n\n  hasSearch: () => boolean;\n  getSearchLabel: () => string;\n  hasDefaultSearch: () => boolean;\n  getDefaultSearchTitle: () => SearchTitleProps | null;\n  getDefaultSearchInputBar: () => InputSearchBarProps | null;\n  getCustomSearchInputBar: () => ReactNode;\n  getDefaultSearchRelatedLinksTitle: () => SearchRelatedLinksTitleProps | null;\n  getDefaultSearchRelatedLinks: () => SearchRelatedLinkProps[];\n\n  hasCustomSearch: () => boolean;\n  getCustomSearch: () => CustomSearchProps | null;\n\n  countNavigationItems: () => number;\n  maxNavigationItems: number;\n\n  hasNavigationBar: () => boolean;\n  getNavigationId: () => string;\n  getNavigationItems: () => ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>[];\n  getResponsiveMenuLabel: () => string;\n  getResponsiveMenuAriaLabel: () => string;\n  getResponsiveMenuBackToRootLabel: () => string;\n\n  getModalMenuLabel: () => string;\n  getModalAriaLabel: () => string;\n  getModalCloseLabel: () => string;\n\n  darkMode: boolean;\n}\n\nexport const HeaderDataContext = createContext<HeaderDataContextProps>({} as HeaderDataContextProps);\n\nexport const useHeaderDataContext = (): HeaderDataContextProps => {\n  return useContext(HeaderDataContext);\n};\n","import { ButtonProps } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport React, { FC, ReactNode } from 'react';\n\nexport interface AreaProps extends ButtonProps {\n  value: string;\n  label: ReactNode;\n  active?: BooleanProp;\n}\n\nexport const Area: FC<AreaProps> = () => <></>;\n","import { ButtonGroupProps } from '@/components/button-group';\nimport React, { FC, ReactElement } from 'react';\nimport { AreaProps } from './area';\n\nexport interface AreasProps extends Omit<ButtonGroupProps, 'onChange'> {\n  ['aria-label']: string;\n  children: ReactElement<AreaProps> | ReactElement<AreaProps>[];\n  onChange?: (activeArea: string) => void;\n}\nexport const Areas: FC<AreasProps> = () => <></>;\n","import React, { FC, ReactElement } from 'react';\nimport { AreasProps } from './areas/areas';\nimport { AuthenticatedProps } from './authenticated/authenticated';\nimport { LanguagesProps } from './languages/languages';\nimport { SearchProps } from './search/search';\nimport { UnauthenticatedProps } from './unauthenticated/unauthenticated';\n\nexport interface GeneralBarProps {\n  ['aria-label']: string;\n  children:\n    | ReactElement<AreasProps | LanguagesProps | AuthenticatedProps | UnauthenticatedProps | SearchProps>\n    | ReactElement<AreasProps | LanguagesProps | AuthenticatedProps | UnauthenticatedProps | SearchProps>[];\n}\nexport const GeneralBar: FC<GeneralBarProps> = () => <></>;\n","import { Area, AreaProps } from '@/components/header/general-bar/areas/area';\nimport { Areas, AreasProps } from '@/components/header/general-bar/areas/areas';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { Children, isValidElement, ReactElement } from 'react';\n\nexport const hasVisibleAreasProps = (children?: HeaderChildrenComponents): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  let areaReactElements: ReactElement<AreaProps>[] = [];\n  if (areasReactElement && isValidElement<AreasProps>(areasReactElement)) {\n    areaReactElements = Children.toArray(areasReactElement.props.children).map((child) => {\n      if (isValidElement<AreaProps>(child) && (child as ReactElement).type === Area) {\n        return child;\n      }\n    }) as ReactElement<AreaProps>[];\n  }\n\n  return areaReactElements.length > 1;\n};\n\nexport const getParseAreasAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  return areasReactElement?.props['aria-label'] ?? '';\n};\n\nexport const getParsedOnAreaChange = (children?: HeaderChildrenComponents): ((activeArea: string) => void) | null | undefined => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n  if (areasReactElement) {\n    return areasReactElement.props.onChange;\n  }\n};\n\nexport const getParsedAvailableAreaProps = (children?: HeaderChildrenComponents): InternalAreaProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  let areaReactElements: ReactElement<AreaProps>[] = [];\n  if (areasReactElement && isValidElement<AreasProps>(areasReactElement)) {\n    areaReactElements = Children.toArray(areasReactElement.props.children).map((child) => {\n      if (isValidElement<AreaProps>(child) && (child as ReactElement).type === Area) {\n        return child;\n      }\n    }) as ReactElement<AreaProps>[];\n  }\n\n  let areas = areaReactElements\n    .map((p) => {\n      if (isValidElement<AreaProps>(p)) {\n        return p?.props as InternalAreaProps;\n      }\n\n      return null;\n    })\n    .filter((p) => !!p);\n\n  if (areas.length > 0 && !areas.some((a) => a.active)) {\n    areas = areas.map((a, index) => {\n      return {\n        ...a,\n        active: index == 0\n      } as InternalAreaProps;\n    });\n  }\n\n  return areas;\n};\n\nexport const getParsedActiveAreaProps = (children?: HeaderChildrenComponents): InternalAreaProps | undefined => {\n  return getParsedAvailableAreaProps(children)\n    .filter((a) => a.active)\n    .at(0);\n};\n","import { ButtonProps } from '@/components/button';\nimport React, { FC } from 'react';\n\nexport interface AuthenticatedFooterActionProps extends ButtonProps {}\nexport const AuthenticatedFooterAction: FC<AuthenticatedFooterActionProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface AuthenticatedHeaderProps extends ComponentProps<'div'> {\n  closeAriaLabel?: string;\n}\nexport const AuthenticatedHeader: FC<AuthenticatedHeaderProps> = () => <></>;\n","import { AvatarProps } from '@/components/avatar';\nimport React, { FC, ReactElement } from 'react';\nimport { AuthenticatedBodyProps } from './authenticated-body';\nimport { AuthenticatedFooterProps } from './authenticated-footer';\nimport { AuthenticatedHeaderProps } from './authenticated-header';\n\nexport interface AuthenticatedProps extends AvatarProps {\n  children:\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>[];\n}\nexport const Authenticated: FC<AuthenticatedProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { AuthenticatedBodyLinkProps } from './authenticated-body-link';\n\nexport interface AuthenticatedBodyProps extends ComponentProps<'div'> {\n  children?: ReactElement<AuthenticatedBodyLinkProps> | ReactElement<AuthenticatedBodyLinkProps>[];\n}\nexport const AuthenticatedBody: FC<AuthenticatedBodyProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface AuthenticatedBodyLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\nexport const AuthenticatedBodyLink: FC<AuthenticatedBodyLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { AuthenticatedFooterActionProps } from './authenticated-footer-action';\n\nexport interface AuthenticatedFooterProps extends ComponentProps<'div'> {\n  children: ReactElement<AuthenticatedFooterActionProps> | ReactElement<AuthenticatedFooterActionProps>[];\n}\nexport const AuthenticatedFooter: FC<AuthenticatedFooterProps> = () => <></>;\n","import {\n  AuthenticatedFooterAction,\n  AuthenticatedFooterActionProps\n} from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeader, AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { Authenticated, AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBody, AuthenticatedBodyProps } from '@/components/header/general-bar/authenticated/authenticated-body';\nimport { AuthenticatedBodyLink, AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooter, AuthenticatedFooterProps } from '@/components/header/general-bar/authenticated/authenticated-footer';\nimport { Children, isValidElement, ReactElement } from 'react';\nimport { HeaderChildrenComponents } from '@/components/header/header';\n\nexport const getParsedAuthenticatedProps = (children?: HeaderChildrenComponents): AuthenticatedProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  return authenticatedReactElement ? authenticatedReactElement.props : null;\n};\n\nexport const getParsedAuthenticatedHeaderProps = (children?: HeaderChildrenComponents): AuthenticatedHeaderProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedHeaderReactElement: ReactElement<AuthenticatedHeaderProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedHeaderReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedHeaderProps>(child) && (child as ReactElement).type === AuthenticatedHeader;\n    }) as ReactElement<AuthenticatedHeaderProps> | null;\n    if (authenticatedHeaderReactElement) {\n      return authenticatedHeaderReactElement.props;\n    }\n  }\n\n  return null;\n};\n\nexport const getParsedAuthenticatedBodyLinkProps = (children?: HeaderChildrenComponents): AuthenticatedBodyLinkProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedBodyReactElement: ReactElement<AuthenticatedBodyProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedBodyReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedBodyProps>(child) && (child as ReactElement).type === AuthenticatedBody;\n    }) as ReactElement<AuthenticatedBodyProps>;\n  }\n\n  if (authenticatedBodyReactElement) {\n    return Children.toArray(authenticatedBodyReactElement.props.children)\n      .map((child) => {\n        if (isValidElement<AuthenticatedBodyLinkProps>(child) && (child as ReactElement).type === AuthenticatedBodyLink) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [] as AuthenticatedBodyLinkProps[];\n};\n\nexport const getParsedAuthenticatedFooterActionProps = (children?: HeaderChildrenComponents): AuthenticatedFooterActionProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedFooterReactElement: ReactElement<AuthenticatedFooterProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedFooterReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedFooterProps>(child) && (child as ReactElement).type === AuthenticatedFooter;\n    }) as ReactElement<AuthenticatedFooterProps>;\n  }\n\n  if (authenticatedFooterReactElement) {\n    return Children.toArray(authenticatedFooterReactElement.props.children)\n      .map((child) => {\n        if (isValidElement<AuthenticatedFooterActionProps>(child) && (child as ReactElement).type === AuthenticatedFooterAction) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [] as AuthenticatedFooterActionProps[];\n};\n","import React, { FC, ReactElement } from 'react';\nimport { InstitutionalProps } from './institutional';\nimport { LogoProps } from './logo';\n\nexport interface BrandProps {\n  children: ReactElement<LogoProps | InstitutionalProps> | ReactElement<LogoProps | InstitutionalProps>[];\n}\n\nexport const Brand: FC<BrandProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface InstitutionalProps extends ComponentProps<'div'> {}\n\nexport const Institutional: FC<InstitutionalProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface LogoProps extends ComponentProps<'div'> {}\n\nexport const Logo: FC<LogoProps> = () => <></>;\n","import { Brand, BrandProps } from '@/components/header/brand/brand';\nimport { Institutional, InstitutionalProps } from '@/components/header/brand/institutional';\nimport { Logo, LogoProps } from '@/components/header/brand/logo';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, isValidElement, ReactElement, ReactNode } from 'react';\n\nexport const getParsedInstitutionalPhrase = (children?: HeaderChildrenComponents): ReactNode => {\n  const brandReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<BrandProps>(child) && (child as ReactElement).type === Brand;\n  });\n\n  let institutionalElement: ReactElement<InstitutionalProps> | null = null;\n  if (brandReactElement && isValidElement<BrandProps>(brandReactElement)) {\n    institutionalElement = Children.toArray(brandReactElement.props.children).find((child) => {\n      return isValidElement<InstitutionalProps>(child) && (child as ReactElement).type === Institutional;\n    }) as ReactElement<InstitutionalProps> | null;\n  }\n\n  return institutionalElement ? institutionalElement.props.children : '';\n};\n\nexport const getParsedLogo = (children?: HeaderChildrenComponents): ReactNode => {\n  const brandReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<BrandProps>(child) && (child as ReactElement).type === Brand;\n  });\n\n  let logoElement: ReactElement<LogoProps> | null = null;\n  if (brandReactElement && isValidElement<BrandProps>(brandReactElement)) {\n    logoElement = Children.toArray(brandReactElement.props.children).find((child) => {\n      return isValidElement<LogoProps>(child) && (child as ReactElement).type === Logo;\n    }) as ReactElement<LogoProps> | null;\n  }\n\n  return logoElement ? logoElement.props.children : '';\n};\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedGeneralBarAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  }) as ReactElement<GeneralBarProps> | null;\n\n  return generalBarReactElement?.props['aria-label'] ?? '';\n};\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface LanguageProps extends ComponentProps<'input'> {\n  icon?: string;\n  label: string;\n  abbr: string;\n  value: string;\n}\n\nexport const Language: FC<LanguageProps> = () => <></>;\n","import React, { FC, ReactElement } from 'react';\nimport { LanguageProps } from './language';\n\nexport interface LanguagesProps {\n  ['aria-label']: string;\n  children: ReactElement<LanguageProps> | ReactElement<LanguageProps>[];\n  onChange?: (activeLanguage: string) => void;\n}\nexport const Languages: FC<LanguagesProps> = () => <></>;\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { Language, LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { Languages, LanguagesProps } from '@/components/header/general-bar/languages/languages';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getLanguagesProps = (children?: HeaderChildrenComponents): ReactElement<LanguagesProps> | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    return Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<LanguagesProps>(child) && (child as ReactElement).type === Languages;\n    }) as ReactElement<LanguagesProps> | null;\n  }\n\n  return null;\n};\n\nexport const hasLanguagesProps = (children?: HeaderChildrenComponents): boolean => {\n  return !!getLanguagesProps(children);\n};\n\nexport const getParsedLanguagesAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const languagesReactElement = getLanguagesProps(children);\n  return languagesReactElement?.props['aria-label'] ?? '';\n};\n\nexport const getParsedOnLanguageChange = (children?: HeaderChildrenComponents): ((activeLanguage: string) => void) | null | undefined => {\n  const languagesReactElement = getLanguagesProps(children);\n  if (languagesReactElement) {\n    return languagesReactElement.props.onChange;\n  }\n};\n\nexport const getParsedAvailableLanguageProps = (children?: HeaderChildrenComponents): LanguageProps[] => {\n  const languagesReactElement = getLanguagesProps(children);\n\n  let languageReactElements: ReactElement<LanguageProps>[] = [];\n  if (languagesReactElement && isValidElement<LanguagesProps>(languagesReactElement)) {\n    languageReactElements = Children.toArray(languagesReactElement.props.children).map((child) => {\n      if (isValidElement<LanguageProps>(child) && (child as ReactElement).type === Language) {\n        return child;\n      }\n    }) as ReactElement<LanguageProps>[];\n  }\n\n  return languageReactElements\n    .map((p) => {\n      if (isValidElement<LanguageProps>(p)) {\n        return p?.props;\n      }\n    })\n    .filter((p) => !!p);\n};\n\nexport const getParsedCheckedLanguageProps = (children?: HeaderChildrenComponents): LanguageProps[] => {\n  const languagesReactElement = getLanguagesProps(children);\n\n  let languageReactElements: ReactElement<LanguageProps>[] = [];\n  if (languagesReactElement && isValidElement<LanguagesProps>(languagesReactElement)) {\n    languageReactElements = Children.toArray(languagesReactElement.props.children).map((child) => {\n      if (isValidElement<LanguageProps>(child) && (child as ReactElement).type === Language) {\n        return child;\n      }\n    }) as ReactElement<LanguageProps>[];\n  }\n\n  if (languageReactElements.length > 0) {\n    return languageReactElements\n      .filter((lang) => {\n        return isValidElement<LanguageProps>(lang) && lang.props.checked;\n      })\n      .map((lang) => lang.props);\n  }\n\n  return [] as LanguageProps[];\n};\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { NavigationRootProps } from './navigation-root';\nimport { NavigationLinkProps } from './navigation-link';\n\nexport interface NavigationBarProps extends ComponentProps<'div'> {\n  id?: string;\n\n  //  RESPONSIVE\n  responsiveMenuLabel?: string;\n\n  responsiveMenuAriaLabel?: string;\n\n  responsiveMenuBackToRootLabel?: string;\n\n  //  MODAL\n  modalMenuLabel?: string;\n\n  modalAriaLabel?: string;\n  modalCloseLabel?: string;\n\n  children: ReactElement<NavigationRootProps | NavigationLinkProps> | ReactElement<NavigationRootProps | NavigationLinkProps>[];\n}\n\nexport const NavigationBar: FC<NavigationBarProps> = () => <></>;\n","import React, { FC, ReactNode } from 'react';\n\nexport interface NavigationFreestyleProps {\n  children: ReactNode;\n}\n\nexport const NavigationFreestyle: FC<NavigationFreestyleProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface NavigationLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\nexport const NavigationLink: FC<NavigationLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { RelatedNavigationLinkProps } from './related-navigation-link';\nimport { NavigationLinkProps } from './navigation-link';\nimport { NavigationFreestyleProps } from './navigation-freestyle';\n\nexport interface NavigationRootProps extends ComponentProps<'div'> {\n  label: string;\n  linksAriaLabel?: string;\n  relatedLinksAriaLabel?: string;\n  children:\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps | NavigationFreestyleProps>\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps>[];\n}\nexport const NavigationRoot: FC<NavigationRootProps> = () => <></>;\n","import { HeaderChildrenComponents } from '@/components/header/header';\nimport { NavigationBar, NavigationBarProps } from '@/components/header/navigation-bar/navigation-bar';\nimport { NavigationFreestyle, NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedNavigationBarProps = (children?: HeaderChildrenComponents): NavigationBarProps | null => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps>;\n\n  return navigationBarReactElement?.props;\n};\n\nexport const getParsedNavigationBarId = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = getParsedNavigationBarProps(children);\n  return navigationBarReactElement?.id ?? '';\n};\n\nexport const countParsedNavigationItems = (children?: HeaderChildrenComponents): number => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return Children.toArray(navigationBarReactElement?.props.children ?? []).length;\n};\n\nexport const getParsedNavigationItems = (\n  children?: HeaderChildrenComponents\n): ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>[] => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps>;\n\n  return Children.toArray(navigationBarReactElement.props.children)\n    .map((child) => {\n      if (isValidElement<NavigationFreestyleProps>(child) && (child as ReactElement).type === NavigationFreestyle) {\n        return child;\n      }\n\n      if (isValidElement<NavigationRootProps>(child) && (child as ReactElement).type === NavigationRoot) {\n        return child;\n      }\n\n      if (isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink) {\n        return child;\n      }\n\n      return null;\n    })\n    .filter((c) => !!c) as ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>[];\n};\n\n//  #REGION MODAL\n\nexport const getParsedModalMenuLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalMenuLabel ?? '';\n};\n\nexport const getParsedModalAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalAriaLabel ?? '';\n};\n\nexport const getParsedModalCloseLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalCloseLabel ?? '';\n};\n\n//  #ENDREGION MODAL\n\n//  #REGION BURGER\n\nexport const getParsedResponsiveMenuLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuLabel ?? '';\n};\n\nexport const getParsedResponsiveMenuAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuAriaLabel ?? '';\n};\n\nexport const getParsedResponsiveMenuBackToRootLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuBackToRootLabel ?? '';\n};\n\nexport const hasNavigationBarInternal = (children?: HeaderChildrenComponents) => {\n  if (!Array.isArray(children)) return false;\n\n  return children.some((child) => child.type === NavigationBar);\n};\n\n//  #ENDREGION BURGER\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface CustomSearchProps extends ComponentProps<'div'> {}\n\nexport const CustomSearch: FC<CustomSearchProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { SearchRelatedLinksProps } from './search-related-links';\nimport { SearchTitleProps } from './search-title';\nimport { SearchInputContainerProps } from './search-input-container';\n\nexport interface DefaultSearchProps extends ComponentProps<'div'> {\n  children:\n    | ReactElement<SearchTitleProps | SearchInputContainerProps | SearchRelatedLinksProps>\n    | ReactElement<SearchTitleProps | SearchInputContainerProps | SearchRelatedLinksProps>[];\n}\n\nexport const DefaultSearch: FC<DefaultSearchProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { CustomSearchProps } from './custom-search';\nimport { DefaultSearchProps } from './default-search';\n\nexport interface SearchProps extends ComponentProps<'div'> {\n  label: string;\n  children: ReactElement<DefaultSearchProps | CustomSearchProps>;\n}\nexport const Search: FC<SearchProps> = () => <></>;\n","import { InputSearchBarProps } from '@/components/input-search-bar';\nimport React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nexport interface SearchInputContainerProps extends ComponentProps<'div'> {\n  children: ReactElement<InputSearchBarProps> | ReactNode;\n}\n\nexport const SearchInputContainer: FC<SearchInputContainerProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface SearchRelatedLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\n\nexport const SearchRelatedLink: FC<SearchRelatedLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { SearchRelatedLinkProps } from './search-related-link';\nimport { SearchRelatedLinksTitleProps } from './search-related-links-title';\n\nexport interface SearchRelatedLinksProps extends ComponentProps<'div'> {\n  children:\n    | ReactElement<SearchRelatedLinksTitleProps | SearchRelatedLinkProps>\n    | ReactElement<SearchRelatedLinksTitleProps | SearchRelatedLinkProps>[];\n}\n\nexport const SearchRelatedLinks: FC<SearchRelatedLinksProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface SearchRelatedLinksTitleProps extends ComponentProps<'div'> {}\n\nexport const SearchRelatedLinksTitle: FC<SearchRelatedLinksTitleProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface SearchTitleProps extends ComponentProps<'div'> {}\n\nexport const SearchTitle: FC<SearchTitleProps> = () => <></>;\n","import React from 'react';\nimport './equalizer.css';\n\nexport interface EqualizerProps {}\n\nexport const Equalizer: React.FC<EqualizerProps> = () => {\n  return (\n    <span className=\"equalizer\">\n      <span className=\"bar-container\">\n        <span className=\"equalizer-1\" />\n        <span className=\"equalizer-2\" />\n        <span className=\"equalizer-3\" />\n        <span className=\"equalizer-4\" />\n      </span>\n    </span>\n  );\n};\n","import { Button } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, Ref, useEffect, useId, useRef, useState } from 'react';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { Equalizer } from './equalizer/equalizer';\nimport './input-search-bar.css';\nimport type { ReactNode } from 'react';\n\nexport interface InputSearchBarElement extends HTMLInputElement {\n  /**\n   * React ref object to the search action button.\n   */\n  searchActionButton?: Ref<HTMLButtonElement>;\n  /**\n   * React ref object to the voice action button.\n   */\n  voiceActionButton?: Ref<HTMLButtonElement>;\n}\n\nexport interface InputSearchBarProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * The flag to set if the label is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines if the user specifies a leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Defines if the voice action button is visible.\n   */\n  hasVoiceActionButton?: BooleanProp;\n  /**\n   * Defines if the voice action button is active and displaying the equalizer animation.\n   */\n  isVoiceActive?: BooleanProp;\n  /**\n   * Alternative text for the voice action button.\n   */\n  voiceActionAltText?: string;\n  /**\n   * Alternative text for the search action button.\n   */\n  searchActionAltText?: string;\n  /**\n   * Callback to execute whenever the user activates the microphone button.\n   */\n  onVoiceActivate?: () => void;\n  /**\n   * Callback to execute whenever the user activates the search button.\n   */\n  onSearchActivate?: (term: string) => void;\n  /**\n   * React ref object to the input search bar.\n   */\n  ref?: Ref<InputSearchBarElement>;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputSearchBar: FC<InputSearchBarProps> = ({\n  ref = null,\n  className,\n  label,\n  hideLabel,\n  darkMode,\n  hasIcon,\n  hasHelperText,\n  helperText,\n  icon,\n  hasVoiceActionButton = true,\n  voiceActionAltText = '',\n  searchActionAltText = '',\n  isVoiceActive,\n  onVoiceActivate,\n  onSearchActivate,\n  onChange,\n  ...props\n}) => {\n  const innerRef = useRef<HTMLInputElement>(null);\n  const searchButtonRef = useRef<HTMLButtonElement>(null);\n  const voiceButtonRef = useRef<HTMLButtonElement>(null);\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  useExpandedRef<InputSearchBarElement>(\n    ref,\n    innerRef,\n    {\n      searchActionButton: searchButtonRef,\n      voiceActionButton: voiceButtonRef\n    } as InputSearchBarElement,\n    [innerRef, searchButtonRef, voiceButtonRef]\n  );\n\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentTarget, setCurrentTarget] = useState(propsClone.value);\n\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n    setCurrentTarget(value);\n    onChange?.(evt);\n  };\n\n  const onVoiceButtonClick = () => {\n    onVoiceActivate?.();\n  };\n\n  const onMouseEnterHandler = () => {\n    setActiveState('hover');\n  };\n\n  const onMouseLeaveHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseDownHandler = () => {\n    setActiveState('active');\n  };\n\n  const onMouseUpHandler = () => {\n    setActiveState('hover');\n  };\n\n  const onSearchButtonClick = () => {\n    onSearchActivate?.(currentTarget?.toString() ?? '');\n  };\n\n  const inputWrapperClassNames = classNames('agora-input-search-bar', { 'dark-mode': darkMode }, className);\n\n  const labelSectionClasses = classNames('input-label-wrapper flex items-end', {\n    'mb-16': label && !stringToBoolean(hideLabel),\n    'justify-end': !label || stringToBoolean(hideLabel),\n    'justify-between': label && !stringToBoolean(hideLabel)\n  });\n\n  const MIN_SEARCH_LENGTH = propsClone.minLength ? propsClone.minLength - 1 : 3;\n\n  useEffect(() => {\n    setCurrentTarget(propsClone.value);\n  }, [propsClone.value]);\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClassNames}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"input-search-bar-label\">\n          {label}\n        </label>\n      </div>\n      {/* Search input wrapper */}\n      <div className=\"input-search-bar-container\">\n        {hasIcon && (\n          <IconSet state={activeState}>\n            <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name={icon ?? 'no-icon'} />\n            <IconItem aria-hidden className=\"leading-icon-hover\" state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n            <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name={icon ?? 'no-icon'} />\n          </IconSet>\n        )}\n        <input\n          {...propsClone}\n          className=\"flex-grow-[1] outline-none\"\n          ref={innerRef}\n          type=\"text\"\n          disabled={!!propsClone.disabled}\n          onChange={handleChangeEvent}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={stringToBoolean(hasHelperText) && helperText ? `input-search-bar-${propsClone.id}-helper-text` : undefined}\n        />\n\n        <div className=\"actions-container flex flex-row gap-16\">\n          {stringToBoolean(hasVoiceActionButton) && (\n            <Button\n              type=\"button\"\n              ref={voiceButtonRef}\n              className=\"microphone-icon\"\n              appearance=\"link\"\n              aria-label={voiceActionAltText}\n              onClick={onVoiceButtonClick}\n              onMouseEnter={onMouseEnterHandler}\n              onMouseLeave={onMouseLeaveHandler}\n              onMouseUp={onMouseUpHandler}\n              onMouseDown={onMouseDownHandler}\n            >\n              {stringToBoolean(hasVoiceActionButton) && isVoiceActive ? (\n                <Equalizer />\n              ) : (\n                <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                  <IconItem aria-hidden state=\"default\" name=\"agora-line-mic-on\" />\n                  <IconItem aria-hidden state=\"hover\" name=\"agora-solid-mic-on\" />\n                  <IconItem aria-hidden state=\"active\" name=\"agora-line-mic-on\" />\n                </IconSet>\n              )}\n            </Button>\n          )}\n          <Button\n            ref={searchButtonRef}\n            className=\"magnifier-icon\"\n            appearance=\"solid\"\n            iconOnly\n            hasIcon\n            leadingIcon=\"agora-line-search\"\n            leadingIconHover=\"agora-solid-search\"\n            aria-label={searchActionAltText}\n            onClick={onSearchButtonClick}\n            disabled={(currentTarget?.toString()?.length ?? 0) <= MIN_SEARCH_LENGTH}\n          />\n        </div>\n      </div>\n      {/* Helper Text */}\n      {stringToBoolean(hasHelperText) && helperText && (\n        <HelperText id={`input-search-bar-${propsClone.id}-helper-text`} helperText={helperText} darkMode={darkMode} />\n      )}\n    </div>\n  );\n};\n\nexport { InputSearchBar };\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { CustomSearch, CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { DefaultSearch, DefaultSearchProps } from '@/components/header/general-bar/search/default-search';\nimport { Search, SearchProps } from '@/components/header/general-bar/search/search';\nimport { SearchInputContainer, SearchInputContainerProps } from '@/components/header/general-bar/search/search-input-container';\nimport { SearchRelatedLink, SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinks, SearchRelatedLinksProps } from '@/components/header/general-bar/search/search-related-links';\nimport { SearchRelatedLinksTitle, SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitle, SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport { InputSearchBar, InputSearchBarProps } from '@/components/input-search-bar';\nimport React, { Children, isValidElement, ReactElement, ReactNode } from 'react';\n\nexport const hasSearchProps = (children?: HeaderChildrenComponents): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    const searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n\n    return !!searchPropsElement;\n  }\n\n  return false;\n};\n\nexport const getSearchButtonLabel = (children?: HeaderChildrenComponents): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  return searchPropsElement?.props.label ?? '';\n};\n\nexport const hasDefaultSearchProps = (children?: HeaderChildrenComponents): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement && isValidElement<DefaultSearchProps>(searchPropsElement?.props.children)) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n\n    return !!defaultSearchPropsElement;\n  }\n\n  return false;\n};\n\nexport const getParsedDefaultSearchTitle = (children?: HeaderChildrenComponents): SearchTitleProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchTitleElem: ReactElement<SearchTitleProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchTitleElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchTitleProps>(child) && (child as ReactElement).type === SearchTitle;\n    }) as ReactElement<SearchTitleProps> | null;\n  }\n\n  return defaultSearchTitleElem?.props as ReactElement<SearchTitleProps> | null;\n};\n\nexport const getParsedDefaultSearchInputBar = (children?: HeaderChildrenComponents): InputSearchBarProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchInputSearchBarElement: ReactElement<SearchInputContainerProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchInputSearchBarElement = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchInputContainerProps>(child) && (child as ReactElement).type === SearchInputContainer;\n    }) as ReactElement<SearchInputContainerProps> | null;\n  }\n\n  let inputSearchBarElement: ReactElement<InputSearchBarProps> | null = null;\n\n  if (defaultSearchInputSearchBarElement) {\n    inputSearchBarElement = Children.toArray(defaultSearchInputSearchBarElement.props.children).find((child) => {\n      return isValidElement<InputSearchBarProps>(child) && (child as ReactElement).type === InputSearchBar;\n    }) as ReactElement<InputSearchBarProps>;\n  }\n\n  return inputSearchBarElement?.props ?? null;\n};\n\nexport const getParsedCustomSearchInputBar = (children?: HeaderChildrenComponents): ReactNode => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchInputSearchBarElement: ReactElement<SearchInputContainerProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchInputSearchBarElement = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchInputContainerProps>(child) && (child as ReactElement).type === SearchInputContainer;\n    }) as ReactElement<SearchInputContainerProps> | null;\n  }\n\n  return defaultSearchInputSearchBarElement?.props.children as ReactElement<SearchInputContainerProps> | null;\n};\n\nexport const getParsedDefaultSearchRelatedLinksTitle = (children?: HeaderChildrenComponents): SearchRelatedLinksTitleProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchRelatedLinksElem: ReactElement<SearchRelatedLinksProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchRelatedLinksElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksProps>(child) && (child as ReactElement).type === SearchRelatedLinks;\n    }) as ReactElement<SearchRelatedLinksProps> | null;\n  }\n\n  let defaultSearchRelatedLinksTitleElem: ReactElement<SearchRelatedLinksTitleProps> | null = null;\n  if (defaultSearchRelatedLinksElem) {\n    defaultSearchRelatedLinksTitleElem = Children.toArray(defaultSearchRelatedLinksElem.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksTitleProps>(child) && (child as ReactElement).type === SearchRelatedLinksTitle;\n    }) as ReactElement<SearchRelatedLinksTitleProps> | null;\n  }\n\n  return defaultSearchRelatedLinksTitleElem?.props as ReactElement<SearchRelatedLinksTitleProps> | null;\n};\n\nexport const getParsedDefaultSearchRelatedLinks = (children?: HeaderChildrenComponents): SearchRelatedLinkProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchRelatedLinksElem: ReactElement<SearchRelatedLinksProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchRelatedLinksElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksProps>(child) && (child as ReactElement).type === SearchRelatedLinks;\n    }) as ReactElement<SearchRelatedLinksProps> | null;\n  }\n\n  if (defaultSearchRelatedLinksElem) {\n    return Children.toArray(defaultSearchRelatedLinksElem.props.children)\n      .map((child) => {\n        if (isValidElement<SearchRelatedLinkProps>(child) && (child as ReactElement).type === SearchRelatedLink) {\n          return child.props;\n        }\n\n        return null;\n      })\n      .filter((c) => !!c);\n  }\n\n  return [];\n};\n\nexport const hasCustomSearchProps = (children?: HeaderChildrenComponents): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let customSearchPropsElement: ReactElement<CustomSearchProps> | null = null;\n  if (searchPropsElement && isValidElement<CustomSearchProps>(searchPropsElement.props.children)) {\n    customSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<CustomSearchProps>(child) && (child as ReactElement).type === CustomSearch;\n    }) as ReactElement<CustomSearchProps> | null;\n  }\n\n  return !!customSearchPropsElement;\n};\n\nexport const getParsedCustomSearchProps = (children?: HeaderChildrenComponents): CustomSearchProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let customSearchProps: ReactElement<CustomSearchProps> | null = null;\n  if (searchPropsElement) {\n    customSearchProps = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<CustomSearchProps>(child) && (child as ReactElement).type === CustomSearch;\n    }) as ReactElement<CustomSearchProps> | null;\n  }\n\n  return customSearchProps?.props as ReactElement<CustomSearchProps> | null;\n};\n","import { ButtonProps } from '@/components/button';\nimport React, { FC, ReactElement } from 'react';\nimport { UnauthenticatedLinkProps } from './unauthenticated-link';\n\nexport interface UnauthenticatedProps extends ButtonProps {\n  label?: string;\n  children: ReactElement<UnauthenticatedLinkProps> | ReactElement<UnauthenticatedLinkProps>[];\n}\nexport const Unauthenticated: FC<UnauthenticatedProps> = () => <></>;\n","import { BooleanProp } from '@/models';\nimport React, { ComponentProps, FC, ReactElement } from 'react';\n\nexport interface UnauthenticatedLinkProps extends ComponentProps<'div'> {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Children\n   */\n  children: ReactElement<HTMLAnchorElement>;\n}\nexport const UnauthenticatedLink: FC<UnauthenticatedLinkProps> = () => <></>;\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { Unauthenticated, UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLink, UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedUnauthenticatedProps = (children?: HeaderChildrenComponents): UnauthenticatedProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let unAuthenticatedReactElement: ReactElement<UnauthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    unAuthenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<UnauthenticatedProps>(child) && (child as ReactElement).type === Unauthenticated;\n    }) as ReactElement<UnauthenticatedProps> | null;\n  }\n\n  return unAuthenticatedReactElement ? unAuthenticatedReactElement.props : null;\n};\n\nexport const getParsedUnauthenticatedLinks = (children?: HeaderChildrenComponents): UnauthenticatedLinkProps[] => {\n  const unauthenticatedProps = getParsedUnauthenticatedProps(children);\n\n  if (unauthenticatedProps?.children) {\n    return Children.toArray(unauthenticatedProps.children)\n      .map((child) => {\n        if (isValidElement<UnauthenticatedLinkProps>(child) && (child as ReactElement).type === UnauthenticatedLink) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [];\n};\n","import { AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooterActionProps } from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport { HeaderProps } from '@/components/header/header';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { InputSearchBarProps } from '@/components/input-search-bar';\nimport { stringToBoolean } from '@/utils';\nimport { ReactElement, ReactNode, useMemo } from 'react';\nimport { HeaderDataContextProps } from './header-data-context';\nimport {\n  getParseAreasAriaLabel,\n  getParsedActiveAreaProps,\n  getParsedAvailableAreaProps,\n  getParsedOnAreaChange,\n  hasVisibleAreasProps\n} from './utils/areas-utils';\nimport {\n  getParsedAuthenticatedBodyLinkProps,\n  getParsedAuthenticatedFooterActionProps,\n  getParsedAuthenticatedHeaderProps,\n  getParsedAuthenticatedProps\n} from './utils/authenticated-utils';\nimport { getParsedInstitutionalPhrase, getParsedLogo } from './utils/brand-utils';\nimport { getParsedGeneralBarAriaLabel } from './utils/general-utils';\nimport {\n  getParsedAvailableLanguageProps,\n  getParsedCheckedLanguageProps,\n  getParsedLanguagesAriaLabel,\n  getParsedOnLanguageChange,\n  hasLanguagesProps\n} from './utils/languages-utils';\nimport {\n  countParsedNavigationItems,\n  getParsedModalAriaLabel,\n  getParsedModalCloseLabel,\n  getParsedModalMenuLabel,\n  getParsedNavigationBarId,\n  getParsedNavigationItems,\n  getParsedResponsiveMenuAriaLabel,\n  getParsedResponsiveMenuBackToRootLabel,\n  getParsedResponsiveMenuLabel,\n  hasNavigationBarInternal\n} from './utils/navigation-utils';\nimport {\n  getParsedCustomSearchInputBar,\n  getParsedCustomSearchProps,\n  getParsedDefaultSearchInputBar,\n  getParsedDefaultSearchRelatedLinks,\n  getParsedDefaultSearchRelatedLinksTitle,\n  getParsedDefaultSearchTitle,\n  getSearchButtonLabel,\n  hasCustomSearchProps,\n  hasDefaultSearchProps,\n  hasSearchProps\n} from './utils/search-utils';\nimport { getParsedUnauthenticatedLinks, getParsedUnauthenticatedProps } from './utils/unauthenticated-utils';\nimport { NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\n\nexport const useHeaderDataController = (props: HeaderProps): HeaderDataContextProps => {\n  const { darkMode, maxNavigationItems = 5, children } = props;\n\n  const getGeneralBarAriaLabel = (): string => {\n    return getParsedGeneralBarAriaLabel(children);\n  };\n\n  const getInstitutionalPhrase = (): ReactNode => {\n    return getParsedInstitutionalPhrase(children);\n  };\n\n  const getLogoImage = (): ReactNode => {\n    return getParsedLogo(children);\n  };\n\n  const hasVisibleAreas = (): boolean => {\n    return hasVisibleAreasProps(children);\n  };\n\n  const getAreasAriaLabel = (): string => {\n    return getParseAreasAriaLabel(children);\n  };\n\n  const getAreas = (): InternalAreaProps[] => {\n    return getParsedAvailableAreaProps(children);\n  };\n\n  const getActiveArea = (): InternalAreaProps | undefined => {\n    return getParsedActiveAreaProps(children);\n  };\n\n  const onAreaChange = (area: string) => {\n    const handler = getParsedOnAreaChange(children);\n    return handler?.(area);\n  };\n\n  const hasLanguages = (): boolean => {\n    return hasLanguagesProps(children);\n  };\n\n  const getLanguagesAriaLabel = () => {\n    return getParsedLanguagesAriaLabel(children);\n  };\n\n  const onLanguageChange = (lang: string) => {\n    const handler = getParsedOnLanguageChange(children);\n    return handler?.(lang);\n  };\n\n  const getCheckedLanguage = (): LanguageProps[] => {\n    return getParsedCheckedLanguageProps(children);\n  };\n\n  const getLanguages = (): LanguageProps[] => {\n    return getParsedAvailableLanguageProps(children);\n  };\n\n  const getAuthenticated = (): AuthenticatedProps | null => {\n    return getParsedAuthenticatedProps(children);\n  };\n\n  const getAuthenticatedHeader = (): AuthenticatedHeaderProps | null => {\n    return getParsedAuthenticatedHeaderProps(children);\n  };\n\n  const getAuthenticatedBodyLinks = (): AuthenticatedBodyLinkProps[] => {\n    return getParsedAuthenticatedBodyLinkProps(children);\n  };\n\n  const getAuthenticatedFooterActions = (): AuthenticatedFooterActionProps[] => {\n    return getParsedAuthenticatedFooterActionProps(children);\n  };\n\n  const getUnauthenticated = (): UnauthenticatedProps | null => {\n    return getParsedUnauthenticatedProps(children);\n  };\n\n  const getUnauthenticatedLinks = (): UnauthenticatedLinkProps[] => {\n    return getParsedUnauthenticatedLinks(children);\n  };\n\n  const hasSearch = (): boolean => {\n    return hasSearchProps(children);\n  };\n\n  const getSearchLabel = (): string => {\n    return getSearchButtonLabel(children);\n  };\n\n  const hasDefaultSearch = (): boolean => {\n    return hasDefaultSearchProps(children);\n  };\n\n  const getDefaultSearchTitle = (): SearchTitleProps | null => {\n    return getParsedDefaultSearchTitle(children);\n  };\n\n  const getDefaultSearchInputBar = (): InputSearchBarProps | null => {\n    return getParsedDefaultSearchInputBar(children);\n  };\n\n  const getCustomSearchInputBar = (): ReactNode => {\n    return getParsedCustomSearchInputBar(children);\n  };\n\n  const getDefaultSearchRelatedLinksTitle = (): SearchRelatedLinksTitleProps | null => {\n    return getParsedDefaultSearchRelatedLinksTitle(children);\n  };\n\n  const getDefaultSearchRelatedLinks = (): SearchRelatedLinkProps[] => {\n    return getParsedDefaultSearchRelatedLinks(children);\n  };\n\n  const hasCustomSearch = (): boolean => {\n    return hasCustomSearchProps(children);\n  };\n\n  const getCustomSearch = (): CustomSearchProps | null => {\n    return getParsedCustomSearchProps(children);\n  };\n\n  const countNavigationItems = (): number => {\n    return countParsedNavigationItems(children);\n  };\n\n  const getNavigationId = (): string => {\n    return getParsedNavigationBarId(children);\n  };\n\n  //#region RESPONSIVE\n  const getResponsiveMenuLabel = () => {\n    return getParsedResponsiveMenuLabel(children);\n  };\n  const getResponsiveMenuAriaLabel = () => {\n    return getParsedResponsiveMenuAriaLabel(children);\n  };\n  const getResponsiveMenuBackToRootLabel = () => {\n    return getParsedResponsiveMenuBackToRootLabel(children);\n  };\n  //#endregion RESPONSIVE\n\n  //#region MODAL\n\n  const getModalMenuLabel = () => {\n    return getParsedModalMenuLabel(children);\n  };\n  const getModalAriaLabel = () => {\n    return getParsedModalAriaLabel(children);\n  };\n  const getModalCloseLabel = () => {\n    return getParsedModalCloseLabel(children);\n  };\n\n  //#endregion MODAL\n\n  const hasNavigationBar = () => {\n    return hasNavigationBarInternal(children);\n  };\n\n  const getNavigationItems = (): ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>[] => {\n    return getParsedNavigationItems(children);\n  };\n\n  return useMemo(() => {\n    return {\n      getGeneralBarAriaLabel,\n\n      getInstitutionalPhrase,\n      getLogoImage,\n\n      hasVisibleAreas,\n      getAreasAriaLabel,\n      getAreas,\n      getActiveArea,\n      onAreaChange,\n\n      hasLanguages,\n      getLanguagesAriaLabel,\n      getCheckedLanguage,\n      getLanguages,\n      onLanguageChange,\n\n      getAuthenticated,\n      getAuthenticatedHeader,\n      getAuthenticatedBodyLinks,\n      getAuthenticatedFooterActions,\n\n      getUnauthenticated,\n      getUnauthenticatedLinks,\n\n      hasSearch,\n      getSearchLabel,\n      hasDefaultSearch,\n      getDefaultSearchTitle,\n      getDefaultSearchInputBar,\n      getCustomSearchInputBar,\n      getDefaultSearchRelatedLinksTitle,\n      getDefaultSearchRelatedLinks,\n\n      hasCustomSearch,\n      getCustomSearch,\n\n      countNavigationItems,\n      maxNavigationItems,\n\n      getNavigationId,\n      hasNavigationBar,\n      getNavigationItems,\n      getResponsiveMenuLabel,\n      getResponsiveMenuAriaLabel,\n      getResponsiveMenuBackToRootLabel,\n      getModalMenuLabel,\n      getModalAriaLabel,\n      getModalCloseLabel,\n\n      darkMode: stringToBoolean(darkMode)\n    };\n  }, [props]);\n};\n","export enum MenuTypeEnum {\n  Header = 'Header',\n  Areas = 'Areas',\n  Search = 'Search',\n  Languages = 'Languages',\n  Authenticated = 'Authenticated',\n  Drawer = 'Drawer',\n  Unauthenticated = 'Unauthenticated',\n  Link = 'Link',\n  RootLink = 'RootLink',\n  MenuBurger = 'MenuBurger',\n  Modal = 'Modal',\n  NavigationList = 'NavigationList',\n  NavigationBurgerLayout = 'NavigationBurgerLayout',\n  GeneralBarPortal = 'GeneralBarPortal',\n  NavigationBarPortal = 'NavigationBarPortal'\n}\n","import { HeaderElement } from '@/components/header/header';\nimport { HeaderMenuContextProps } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { ForwardedRef, useImperativeHandle } from 'react';\n\nexport const useHeaderExternalController = (ref: ForwardedRef<HeaderElement>, headerMenuContext: HeaderMenuContextProps) => {\n  //  AREAS\n  const focusActiveArea = () => {\n    const menuRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.Areas);\n\n    if (menuRef?.current) {\n      const activeAreaBtn = (menuRef.current as HTMLElement).querySelector('.area.selected');\n      if (activeAreaBtn) {\n        (activeAreaBtn as HTMLElement).focus();\n      }\n    }\n  };\n\n  const setActiveArea = (areaValue: string) => {\n    const menuRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.Areas);\n\n    if (menuRef?.current) {\n      const areaButtons = (menuRef.current as HTMLElement).querySelectorAll('.area');\n\n      areaButtons.forEach((elem) => {\n        const btn = elem as HTMLButtonElement;\n\n        if (btn.getAttribute('data-value') === areaValue) {\n          btn.focus();\n          btn.click();\n        }\n      });\n    }\n  };\n\n  //  LANGUAGES\n  const focusLanguages = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Languages);\n  };\n\n  const openLanguages = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Languages);\n  };\n\n  //  SEARCH\n  const focusSearch = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Search);\n  };\n\n  const openSearch = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Search);\n  };\n\n  //  UNAUTHENTICATED\n  const focusUnauthenticated = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Unauthenticated);\n  };\n\n  const openUnauthenticated = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Unauthenticated);\n  };\n\n  //  AUTHENTICATED\n  const focusAuthenticated = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Authenticated);\n  };\n\n  const openAuthenticated = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Authenticated);\n  };\n\n  //  MENU BURGER\n  const focusBurgerMenu = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.MenuBurger);\n  };\n\n  const openBurgerMenu = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.MenuBurger);\n  };\n\n  //  MODAL MENU\n  const focusModalMenu = () => {\n    headerMenuContext.focusMenu(MenuTypeEnum.Modal);\n  };\n\n  const openModalMenu = () => {\n    headerMenuContext.expandMenu(MenuTypeEnum.Modal);\n  };\n\n  //  NAVIGATION MENU OPTION\n  const focusNavigationMenuOption = (index: number) => {\n    const navigationPanelsKeys: string[] = Array.from(headerMenuContext.menuRefMap.keys()).filter(\n      (k: string) => k.indexOf(MenuTypeEnum.NavigationList) >= 0\n    );\n\n    const key = navigationPanelsKeys[index];\n    headerMenuContext.focusMenu(key);\n  };\n\n  const openNavigationMenuOption = (index: number) => {\n    const navigationPanelsKeys: string[] = Array.from(headerMenuContext.menuRefMap.keys()).filter(\n      (k: string) => k.indexOf(MenuTypeEnum.NavigationList) >= 0\n    );\n\n    const key = navigationPanelsKeys[index];\n    headerMenuContext.expandMenu(key);\n  };\n\n  //  GENERICS\n  const closeAll = () => {\n    headerMenuContext.collapseAllMenus();\n  };\n\n  useImperativeHandle(ref, () => {\n    return {\n      focusActiveArea,\n      setActiveArea,\n      focusLanguages,\n      openLanguages,\n      focusSearch,\n      openSearch,\n      focusUnauthenticated,\n      openUnauthenticated,\n      focusAuthenticated,\n      openAuthenticated,\n      focusBurgerMenu,\n      openBurgerMenu,\n      focusModalMenu,\n      openModalMenu,\n      focusNavigationMenuOption,\n      openNavigationMenuOption,\n\n      closeAll\n    } as HeaderElement;\n  }, []);\n};\n","import { DrawerElement } from '@/components/drawer';\nimport { InternalNavigationBurgerPanelElement } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { createContext, RefObject, useContext } from 'react';\nimport { MenuTypeEnum } from './menu-type.enum';\n\nexport type HeaderMenuContextRef =\n  | PanelMenuElement\n  | HTMLDivElement\n  | DrawerElement\n  | ModalMenuElement\n  | InternalNavigationBurgerPanelElement\n  | null;\n\nexport interface HeaderMenuContextProps {\n  menuRefMap: Map<MenuTypeEnum | string, RefObject<HeaderMenuContextRef>>;\n\n  collapseAllMenus: () => void;\n  collapseMenu: (id: MenuTypeEnum | string, focusController: boolean) => void;\n  expandMenu: (id: MenuTypeEnum | string) => void;\n  focusMenu: (id: MenuTypeEnum | string) => void;\n  hasExpandedMenu: () => boolean;\n  backSubmenu: (id: MenuTypeEnum | string) => void;\n  openSubmenu: (id: MenuTypeEnum | string) => void;\n  hasOpenSubmenu: () => boolean;\n  isScrolling: () => boolean;\n}\n\nexport const HeaderMenuContext = createContext<HeaderMenuContextProps>({} as HeaderMenuContextProps);\n\nexport const useHeaderMenuContext = (): HeaderMenuContextProps => {\n  return useContext(HeaderMenuContext);\n};\n","import { useEffect, useRef, useState } from 'react';\n\nconst useScrolling = () => {\n  const [scrolling, setScrolling] = useState(false);\n\n  const scrollingTimerRef = useRef<NodeJS.Timeout | null>(null);\n\n  useEffect(() => {\n    const evaluateScrollingValue = () => {\n      setScrolling(window.scrollY > 0);\n    };\n\n    const listener = () => {\n      if (scrollingTimerRef.current !== null) {\n        return;\n      }\n\n      scrollingTimerRef.current = setTimeout(() => {\n        scrollingTimerRef.current = null;\n        evaluateScrollingValue();\n      }, 100);\n    };\n\n    evaluateScrollingValue();\n\n    window.addEventListener('scroll', listener);\n\n    return () => {\n      window.removeEventListener('scroll', listener);\n    };\n  }, []);\n\n  return { scrolling };\n};\n\nexport { useScrolling };\n","import { DrawerElement } from '@/components/drawer';\nimport { InternalNavigationBurgerPanelElement } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel';\nimport { useScrolling } from '@/components/header/internals/shared/hooks/use-scrolling';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { RefObject, useRef, useState } from 'react';\nimport { HeaderMenuContextProps } from './header-menu-context';\nimport { MenuTypeEnum } from './menu-type.enum';\n\nexport const useHeaderMenuController = (): HeaderMenuContextProps => {\n  const menuRefMap = useRef<\n    Map<\n      MenuTypeEnum | string,\n      RefObject<PanelMenuElement | HTMLDivElement | DrawerElement | ModalMenuElement | InternalNavigationBurgerPanelElement>\n    >\n  >(new Map());\n  const { scrolling } = useScrolling();\n  const [expandedMenu, setExpandedMenu] = useState(false);\n  const [openedSubmenu, setOpenedSubmenu] = useState(false);\n\n  const collapseAllMenus = (): void => {\n    menuRefMap.current.forEach((value) => {\n      (value.current as InternalNavigationBurgerPanelElement)?.close?.();\n      (value.current as PanelMenuElement)?.collapse?.(true);\n      (value.current as ModalMenuElement)?.close?.();\n    });\n\n    setExpandedMenu(false);\n    setOpenedSubmenu(false);\n  };\n\n  const collapseMenu = (id: MenuTypeEnum | string, focusController: boolean): void => {\n    menuRefMap.current.forEach((value) => {\n      if (!value.current) {\n        return;\n      }\n      (value.current as InternalNavigationBurgerPanelElement).close?.();\n      (value.current as PanelMenuElement).collapse?.(true);\n      (value.current as ModalMenuElement).close?.();\n    });\n\n    if (focusController) {\n      menuRefMap.current.get(id)?.current?.focus();\n    }\n\n    setExpandedMenu(false);\n    setOpenedSubmenu(false);\n  };\n\n  const expandMenu = (id: MenuTypeEnum | string): void => {\n    menuRefMap.current.forEach((value) => {\n      if (!value.current) {\n        return;\n      }\n      (value.current as InternalNavigationBurgerPanelElement).close?.();\n      (value.current as PanelMenuElement).collapse?.(false);\n      (value.current as ModalMenuElement).close?.();\n    });\n\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as PanelMenuElement).expand?.();\n      (ref.current as ModalMenuElement).open?.();\n    }\n\n    setExpandedMenu(true);\n  };\n\n  const focusMenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as PanelMenuElement).focus?.();\n      (ref.current as ModalMenuElement).focus?.();\n    }\n  };\n\n  const backSubmenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as InternalNavigationBurgerPanelElement).close?.();\n    }\n\n    setOpenedSubmenu(false);\n  };\n\n  const openSubmenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as InternalNavigationBurgerPanelElement).open?.();\n    }\n\n    setOpenedSubmenu(true);\n  };\n\n  const hasExpandedMenu = () => {\n    return expandedMenu;\n  };\n\n  const hasOpenSubmenu = () => {\n    return openedSubmenu;\n  };\n\n  const isScrolling = () => {\n    return scrolling;\n  };\n\n  return {\n    collapseAllMenus,\n    collapseMenu,\n    expandMenu,\n    focusMenu,\n    hasExpandedMenu,\n    backSubmenu,\n    openSubmenu,\n    hasOpenSubmenu,\n    isScrolling,\n\n    menuRefMap: menuRefMap.current\n  } as HeaderMenuContextProps;\n};\n","import { LinkWrapper, LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport classNames from 'classnames';\nimport React, { Children, cloneElement, ComponentProps, FC, isValidElement, useState } from 'react';\n\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport './custom-header-link.css';\n\nexport interface CustomHeaderLinkProps extends LinkWrapperProps {\n  hasIcon?: BooleanProp;\n  iconOnly?: BooleanProp;\n  leadingIcon?: string;\n  leadingIconHover?: string;\n  trailingIcon?: string;\n  trailingIconHover?: string;\n}\n\ntype InnerAnchorType = ComponentProps<'a'> & { [dataAttribute: `data-${string}`]: string };\n\nconst CustomHeaderLink: FC<CustomHeaderLinkProps> = ({\n  ref = null,\n  variant = 'neutral',\n  hasIcon,\n  iconOnly,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  className,\n  children,\n  fullWidth = true,\n  role,\n  'aria-haspopup': ariaHasPopup,\n  'data-autofocus': dataAutoFocus,\n  tabIndex,\n  ...props\n}) => {\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const linkClassNames = classNames('custom-header-link-wrapper', className);\n\n  const handleClick = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n  };\n\n  const handleMouseEnter = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('hover');\n    }\n  };\n\n  const handleMouseDown = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('active');\n    }\n  };\n\n  const handleMouseUpOrLeave = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n  };\n\n  return (\n    <LinkWrapper {...props} ref={ref} fullWidth={fullWidth} variant={variant} appearance=\"link\" className={linkClassNames}>\n      {Children.toArray(children).map((child) => {\n        if (isValidElement<InnerAnchorType>(child)) {\n          const elemClassNames = classNames(\n            { 'link-with-icon': stringToBoolean(hasIcon) || stringToBoolean(iconOnly) },\n            { 'icon-only': stringToBoolean(iconOnly) }\n          );\n\n          return cloneElement<InnerAnchorType>(\n            child,\n            {\n              'className': elemClassNames,\n              role,\n              'aria-haspopup': ariaHasPopup,\n              'data-autofocus': dataAutoFocus,\n              tabIndex,\n              'onClick': handleClick,\n              'onMouseEnter': handleMouseEnter,\n              'onMouseLeave': handleMouseUpOrLeave,\n              'onMouseDown': handleMouseDown,\n              'onMouseUp': handleMouseUpOrLeave\n            },\n            <>\n              {hasIcon && (leadingIcon || leadingIconHover) && (\n                <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                  <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n                  <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} aria-hidden />\n                  <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n                </IconSet>\n              )}\n\n              {!iconOnly && child.props.children && <span className=\"children-wrapper\">{child.props.children}</span>}\n\n              {hasIcon && (trailingIcon || trailingIconHover) && (\n                <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n                  <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n                  <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} aria-hidden />\n                  <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n                </IconSet>\n              )}\n            </>\n          );\n        }\n      })}\n    </LinkWrapper>\n  );\n};\n\nexport { CustomHeaderLink };\n","import { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport React, { FC, useId } from 'react';\n\nimport './internal-authenticated-drawer-body.css';\n\nexport const InternalAuthenticatedDrawerBody: FC = () => {\n  const generatedId = useId();\n  const headerDataContext = useHeaderDataContext();\n  const bodyLinkProps = headerDataContext.getAuthenticatedBodyLinks();\n\n  return (\n    <div className=\"authenticated-body\">\n      <nav>\n        <ul>\n          {bodyLinkProps.map((link: AuthenticatedBodyLinkProps, index: number) => {\n            return (\n              <li key={`${generatedId}-${index}`}>\n                <CustomHeaderLink {...link} />\n              </li>\n            );\n          })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { FC, useId } from 'react';\n\nimport './internal-authenticated-drawer-footer.css';\n\nexport const InternalAuthenticatedDrawerFooter: FC = () => {\n  const generatedId = useId();\n\n  const headerDataContext = useHeaderDataContext();\n\n  const footerActions = headerDataContext.getAuthenticatedFooterActions();\n\n  if (footerActions.length <= 0) {\n    return null;\n  }\n\n  return (\n    <div className=\"authenticated-footer\">\n      <ul>\n        {footerActions.map((action, index) => {\n          const buttonClassNames = classNames(action.className, 'footer-action');\n\n          return (\n            <li key={`${generatedId}-${index}`}>\n              <Button {...action} className={buttonClassNames} appearance=\"link\" variant=\"neutral\" fullWidth />\n            </li>\n          );\n        })}\n      </ul>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { Icon } from '@/components/icon';\nimport React, { FC, useId } from 'react';\n\nimport './internal-authenticated-drawer-header.css';\n\nexport const InternalAuthenticatedDrawerHeader: FC = () => {\n  const generatedId = useId();\n  const headerMenuContext = useHeaderMenuContext();\n  const headerDataContext = useHeaderDataContext();\n  const headerProps = headerDataContext.getAuthenticatedHeader();\n\n  const handleClick = () => {\n    headerMenuContext.collapseMenu(MenuTypeEnum.Authenticated, true);\n  };\n\n  return (\n    <div className=\"authenticated-header\">\n      <div id={generatedId} className=\"name\">\n        {headerProps?.children}\n      </div>\n      <button aria-label={headerProps?.closeAriaLabel} aria-describedby={generatedId} className=\"close\" onClick={handleClick}>\n        <Icon name=\"agora-line-chevron-right\" aria-hidden />\n      </button>\n    </div>\n  );\n};\n","import { Drawer, DrawerElement } from '@/components/drawer';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport React, { createRef, FC } from 'react';\nimport { InternalAuthenticatedDrawerBody } from './internal-authenticated-drawer-body';\nimport { InternalAuthenticatedDrawerFooter } from './internal-authenticated-drawer-footer';\nimport { InternalAuthenticatedDrawerHeader } from './internal-authenticated-drawer-header';\n\nimport './Internal-authenticated-drawer.css';\n\nexport const InternalAuthenticatedDrawer: FC = () => {\n  const headerMenuContext = useHeaderMenuContext();\n  const headerDataContext = useHeaderDataContext();\n  const authenticatedProps = headerDataContext.getAuthenticated();\n\n  const drawerAriaLabel = authenticatedProps ? authenticatedProps['aria-label'] : '';\n\n  const ref = createRef<DrawerElement>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Drawer, ref);\n\n  if (!authenticatedProps) {\n    //  NOT AUTHENTICATED... SHOULD NOT PUT AUTHENTICATED DRAWER ON PAGE\n    return '';\n  }\n\n  return (\n    <Drawer ref={ref} position=\"right\" dismissOnEscape={false} dismissOnBackdropClick={false} aria-label={drawerAriaLabel}>\n      <InternalAuthenticatedDrawerHeader />\n      <InternalAuthenticatedDrawerBody />\n      <InternalAuthenticatedDrawerFooter />\n    </Drawer>\n  );\n};\n","import { Button, ButtonProps } from '@/components/button';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  FC,\n  isValidElement,\n  ReactElement,\n  MouseEvent as ReactMouseEvent,\n  useEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { LayoutProps } from './layout.interface';\n\nimport { DrawerElement } from '@/components/drawer';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { CustomHeaderLink, CustomHeaderLinkProps } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { createPortal } from 'react-dom';\nimport { MenuTypeEnum } from '../../context/menu-context/menu-type.enum';\nimport './panel-menu.css';\n\nexport interface PanelMenuElement extends HTMLDivElement {\n  /**\n   *  Expand the panel menu.\n   */\n  expand: () => void;\n  /**\n   *  Collapse the panel menu.\n   */\n  collapse: (isToggling?: boolean) => void;\n  /**\n   *  Focus the panel menu control.\n   */\n  focus: () => void;\n  /**\n   *  Current value of the expanded state of the panel menu.\n   */\n  isExpanded: boolean;\n}\n\nexport interface PanelMenuProps extends ComponentProps<'div'> {\n  darkMode?: boolean;\n  children: ReactElement<ButtonProps | LayoutProps> | ReactElement<ButtonProps | LayoutProps>[];\n  iconsCollapsed?: { leadingIcon?: string; leadingIconHover?: string; trailingIcon?: string; trailingIconHover?: string };\n  iconsExpanded?: { leadingIcon?: string; leadingIconHover?: string; trailingIcon?: string; trailingIconHover?: string };\n  isDrawerPanel?: boolean;\n  portalRefType: MenuTypeEnum.GeneralBarPortal | MenuTypeEnum.NavigationBarPortal;\n}\n\nconst PanelMenu: FC<PanelMenuProps> = ({\n  ref = null,\n  id,\n  isDrawerPanel = false,\n  className,\n  children,\n  iconsCollapsed,\n  iconsExpanded,\n  portalRefType\n}) => {\n  const panelMenuId = id as string;\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const portalRef = headerMenuContext.menuRefMap.get(MenuTypeEnum[portalRefType]);\n\n  const [isExpanded, setIsExpanded] = useState(false);\n  const [portalContent, setPortalContent] = useState(<></>);\n\n  const buttonChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<ButtonProps>(child) && (child as ReactElement).type === Button;\n  }) as ReactElement<ButtonProps>;\n\n  const linkWrapperChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<CustomHeaderLinkProps>(child) && (child as ReactElement).type === CustomHeaderLink;\n  }) as ReactElement<CustomHeaderLinkProps>;\n\n  const layoutChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<LayoutProps>(child) && (child as ReactElement).type !== Button;\n  }) as ReactElement<LayoutProps>;\n\n  const hasButton = !!buttonChildComponent;\n\n  const hasLinkWrapper = !!linkWrapperChildComponent;\n\n  const hasPanel = !!layoutChildComponent;\n\n  const innerPanelRef = useRef<HTMLDivElement>(null);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const linkWrapperRef = useRef<HTMLSpanElement>(null);\n  const drawerButtonRef = useRef<HTMLButtonElement>(null);\n\n  const expand = () => {\n    if (isExpanded) {\n      return;\n    }\n\n    if (isDrawerPanel) {\n      const drawerRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.Drawer);\n\n      if (drawerRef) {\n        const elem = drawerRef.current as DrawerElement;\n        setIsExpanded(true);\n        elem.open();\n      }\n\n      return;\n    }\n\n    if (hasPanel) {\n      setIsExpanded(true);\n\n      const portalElem = portalRef?.current;\n      if (portalElem) {\n        portalElem.classList.add('expanded');\n        setPortalContent(createPortal(layoutChildComponent, portalElem));\n\n        asyncTrigger(() => {\n          const focusableElements = portalElem.querySelectorAll(\n            'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n          );\n\n          const firstElement = focusableElements[0] as HTMLElement;\n          firstElement?.focus();\n        });\n      }\n    }\n  };\n\n  const collapse = () => {\n    if (!isExpanded) {\n      return;\n    }\n\n    if (isDrawerPanel) {\n      const drawerRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.Drawer);\n\n      if (drawerRef) {\n        const elem = drawerRef.current as DrawerElement;\n        elem.close();\n        setIsExpanded(false);\n      }\n\n      buttonRef.current?.focus();\n\n      return;\n    }\n\n    if (hasPanel) {\n      setIsExpanded(false);\n      setPortalContent(<></>);\n      portalRef?.current?.classList.remove('expanded');\n      buttonRef.current?.focus();\n    }\n  };\n\n  const focus = () => {\n    if (hasButton) {\n      if (isDrawerPanel) {\n        drawerButtonRef.current?.focus();\n      } else {\n        buttonRef.current?.focus();\n      }\n    }\n\n    if (linkWrapperRef?.current) {\n      (linkWrapperRef.current as HTMLElement).querySelector('a')?.focus();\n    }\n  };\n\n  useExpandedRef<PanelMenuElement>(\n    ref as React.Ref<PanelMenuElement>,\n    innerPanelRef,\n    {\n      isExpanded,\n      expand,\n      collapse,\n      focus\n    } as PanelMenuElement,\n    [innerPanelRef, isExpanded, expand, collapse]\n  );\n\n  const handleButtonClick = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (isExpanded) {\n      headerMenuContext.collapseMenu(panelMenuId, true);\n    } else {\n      headerMenuContext.expandMenu(panelMenuId);\n    }\n    buttonChildComponent.props.onClick?.(evt);\n  };\n\n  const panelClassNames = classNames('panel-menu', className, { 'dark-mode': headerContext.darkMode });\n\n  const panelButtonClassNames = classNames(\n    'panel-menu-button',\n    { 'has-panel': hasPanel },\n    { expanded: isExpanded, collapsed: !isExpanded },\n    buttonChildComponent?.props?.className\n  );\n\n  const panelLinkWrapperClassNames = classNames('panel-menu-link-wrapper', linkWrapperChildComponent?.props?.className);\n\n  const panelDrawerButtonClassNames = classNames('panel-drawer-button');\n\n  //  DISMISS ESCAPE\n  useEffect(() => {\n    const onKeyDown = (evt: KeyboardEvent) => {\n      if (evt.code === 'Escape' && isExpanded) {\n        headerMenuContext.collapseMenu(panelMenuId, true);\n      }\n    };\n\n    if (hasPanel || isDrawerPanel) {\n      window.document.addEventListener('keydown', onKeyDown);\n    }\n\n    return () => {\n      window.document.removeEventListener('keydown', onKeyDown);\n    };\n  }, [hasPanel, isDrawerPanel, isExpanded, headerMenuContext, panelMenuId]);\n\n  //  DISMISS CLICK BACKDROP\n  useEffect(() => {\n    const onClick = (evt: MouseEvent) => {\n      if (!isExpanded) {\n        return;\n      }\n\n      const containerElement = portalRef?.current;\n\n      const target = evt.target as HTMLElement;\n\n      if (containerElement && (target.classList.contains('panel-menu-backdrop') || target.classList.contains('agora-dialog-backdrop'))) {\n        headerMenuContext.collapseMenu(panelMenuId, true);\n      }\n    };\n\n    if (hasPanel || isDrawerPanel) {\n      window.document.addEventListener('click', onClick);\n    }\n\n    return () => {\n      window.document.removeEventListener('click', onClick);\n    };\n  }, [hasPanel, isDrawerPanel, isExpanded, headerMenuContext, panelMenuId, portalRef]);\n\n  //  KEYBOARD TRAP\n  useEffect(() => {\n    const handleKeyDown = (evt: KeyboardEvent) => {\n      if (!isExpanded || !portalRef?.current) {\n        return;\n      }\n\n      if (evt.key === 'Tab') {\n        const focusableElements = portalRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements[0] as HTMLElement;\n        const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          collapse();\n        }\n\n        if (!evt.shiftKey && document.activeElement === lastElement) {\n          collapse();\n        }\n      }\n    };\n\n    if (hasPanel) {\n      document?.addEventListener('keydown', handleKeyDown);\n    }\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [isExpanded, hasPanel, portalRef, collapse]);\n\n  const memoLeadingIcon = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.leadingIcon ?? '') : (iconsCollapsed?.leadingIcon ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoLeadingIconHover = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.leadingIconHover ?? '') : (iconsCollapsed?.leadingIconHover ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoTrailingIcon = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.trailingIcon ?? '') : (iconsCollapsed?.trailingIcon ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoTrailingIconHover = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.trailingIconHover ?? '') : (iconsCollapsed?.trailingIconHover ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  return (\n    <div ref={innerPanelRef} className={panelClassNames}>\n      {hasLinkWrapper && (\n        <CustomHeaderLink\n          {...linkWrapperChildComponent.props}\n          darkMode={headerContext.darkMode}\n          ref={linkWrapperRef}\n          className={panelLinkWrapperClassNames}\n        />\n      )}\n\n      {hasButton && !isDrawerPanel && (\n        <Button\n          {...buttonChildComponent.props}\n          ref={buttonRef}\n          className={panelButtonClassNames}\n          onClick={handleButtonClick}\n          appearance=\"link\"\n          variant=\"neutral\"\n          darkMode={headerContext.darkMode}\n          {...(hasPanel && { 'aria-controls': `panel-content-${panelMenuId}`, 'aria-expanded': isExpanded })}\n          hasIcon={stringToBoolean(buttonChildComponent.props.hasIcon)}\n          {...(hasPanel && stringToBoolean(buttonChildComponent.props.hasIcon) && memoLeadingIcon && memoLeadingIconHover\n            ? { leadingIcon: memoLeadingIcon, leadingIconHover: memoLeadingIconHover }\n            : {})}\n          {...(hasPanel && stringToBoolean(buttonChildComponent.props.hasIcon) && memoTrailingIcon && memoTrailingIconHover\n            ? { trailingIcon: memoTrailingIcon, trailingIconHover: memoTrailingIconHover }\n            : {})}\n        >\n          {buttonChildComponent.props.children}\n        </Button>\n      )}\n\n      {hasButton && isDrawerPanel && (\n        <Button\n          {...buttonChildComponent.props}\n          aria-expanded={isExpanded}\n          ref={drawerButtonRef}\n          darkMode={headerContext.darkMode}\n          className={panelDrawerButtonClassNames}\n          onClick={handleButtonClick}\n        >\n          {buttonChildComponent.props.children}\n        </Button>\n      )}\n\n      {hasPanel && !isDrawerPanel && isExpanded && <>{portalContent}</>}\n    </div>\n  );\n};\n\nexport { PanelMenu };\n","import React, { FC } from 'react';\nimport { NavigationLinkProps } from './navigation-link';\n\nexport interface RelatedNavigationLinkProps extends NavigationLinkProps {}\n\nexport const RelatedNavigationLink: FC<RelatedNavigationLinkProps> = () => <></>;\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport { asyncTrigger, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, useEffect, useId, useRef, useState } from 'react';\n\nimport './internal-navigation-burger-panel.css';\nimport { NavigationFreestyle, NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\n\nexport interface InternalNavigationBurgerPanelElement extends HTMLDivElement {\n  /**\n   *  Open the submenu.\n   */\n  open: () => void;\n  /**\n   *  Close the submenu.\n   */\n  close: () => void;\n  /**\n   *  Current value of the opened state of the burger links layout.\n   */\n  isOpened: boolean;\n}\n\nexport interface InternalNavigationBurgerPanelProps extends ComponentProps<'div'> {\n  id: string;\n  title: string;\n  linksAriaLabel: string;\n  relatedLinksAriaLabel: string;\n  buttonProps?: ButtonProps;\n}\n\nconst InternalNavigationBurgerPanel: FC<InternalNavigationBurgerPanelProps> = ({\n  ref = null,\n  id,\n  linksAriaLabel,\n  relatedLinksAriaLabel,\n  title,\n  buttonProps,\n  children\n}) => {\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const backLabel = headerContext.getResponsiveMenuBackToRootLabel();\n  const generatedId = useId();\n\n  const [isOpened, setIsOpened] = useState(false);\n\n  const navigationFreestyle = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationFreestyleProps>(child) && (child as ReactElement).type === NavigationFreestyle;\n  }) as ReactElement<NavigationFreestyleProps>[];\n\n  const navigationFreestyleComponent = navigationFreestyle.length > 0 ? navigationFreestyle?.[0]?.props?.children : null;\n\n  const links = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const highlightedLinks = Children.toArray(children).filter((child) => {\n    return isValidElement<RelatedNavigationLinkProps>(child) && (child as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  const burgerMenuItem = useRef<HTMLButtonElement>(null);\n  const burgerPanelRef = useRef<HTMLDivElement>(null);\n\n  const open = () => {\n    if (!isOpened) {\n      setIsOpened(true);\n      asyncTrigger(() => {\n        const focusableElements = burgerPanelRef.current?.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements?.[0] as HTMLElement;\n        firstElement?.focus();\n      });\n    }\n  };\n\n  const close = () => {\n    if (isOpened) {\n      setIsOpened(false);\n      const burgerRef = headerMenuContext.menuRefMap.get('Header');\n      asyncTrigger(() => {\n        const focusableElements = burgerRef?.current?.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements?.[1] as HTMLElement;\n        firstElement?.focus();\n      });\n    }\n  };\n\n  useExpandedRef<InternalNavigationBurgerPanelElement>(\n    ref as React.Ref<InternalNavigationBurgerPanelElement>,\n    burgerPanelRef,\n    {\n      isOpened,\n      open,\n      close\n    } as InternalNavigationBurgerPanelElement,\n    [burgerPanelRef, isOpened, open, close]\n  );\n\n  const handleClickBack = () => {\n    headerMenuContext.backSubmenu(id);\n    burgerMenuItem.current?.focus();\n  };\n\n  const handleClickButton = () => {\n    headerMenuContext.openSubmenu(id);\n  };\n\n  //  KEYBOARD TRAP\n  useEffect(() => {\n    const handleKeyDown = (evt: KeyboardEvent) => {\n      if (!isOpened || !burgerPanelRef.current) {\n        return;\n      }\n\n      if (evt.code === 'Tab') {\n        const focusableElements = burgerPanelRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements[0] as HTMLElement;\n        const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          evt.preventDefault();\n          lastElement.focus();\n        }\n\n        if (!evt.shiftKey && document.activeElement === lastElement) {\n          evt.preventDefault();\n          firstElement.focus();\n        }\n      }\n    };\n\n    document?.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [isOpened]);\n\n  const navigationBurgerLinksLayoutClassNames = classNames('navigation-burger-panel', { hidden: !isOpened, flex: isOpened });\n\n  return (\n    <>\n      <Button\n        {...buttonProps}\n        ref={burgerMenuItem}\n        className=\"burger-menu-item-btn\"\n        appearance=\"link\"\n        variant=\"neutral\"\n        hasIcon\n        fullWidth\n        trailingIcon=\"agora-line-chevron-right\"\n        trailingIconHover=\"agora-solid-chevron-right\"\n        onClick={handleClickButton}\n        aria-haspopup=\"listbox\"\n        aria-controls={id}\n        aria-expanded={isOpened}\n      >\n        {title}\n      </Button>\n\n      <div ref={burgerPanelRef} className={navigationBurgerLinksLayoutClassNames} id={id}>\n        <div className=\"w-full flex flex-col\">\n          {backLabel && (\n            <div className=\"container mx-auto\">\n              <Button\n                className=\"burger-back-btn\"\n                appearance=\"link\"\n                variant=\"neutral\"\n                darkMode={headerContext.darkMode}\n                hasIcon\n                leadingIcon=\"agora-line-arrow-left-anchor\"\n                leadingIconHover=\"agora-line-arrow-left-anchor\"\n                onClick={handleClickBack}\n              >\n                {backLabel}\n              </Button>\n            </div>\n          )}\n        </div>\n        <div className=\"w-full flex flex-col\">\n          {title && <div className=\"container mx-auto title\">{title}</div>}\n\n          {navigationFreestyleComponent && <div className=\"freestyle\">{navigationFreestyleComponent}</div>}\n\n          {links.length > 0 && !navigationFreestyleComponent && (\n            <div className=\"container mx-auto xs:pb-0 md:pb-32 xl:pb-32\">\n              <ul className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-16\" aria-label={linksAriaLabel}>\n                {links.map((link, index) => {\n                  const key = `${generatedId}-links-${index}`;\n                  return (\n                    <li className=\"link-wrapper xs:col-span-4 md:col-span-4 xl:col-span-6\" key={key}>\n                      <CustomHeaderLink {...link.props} variant=\"primary\" />\n                    </li>\n                  );\n                })}\n              </ul>\n            </div>\n          )}\n        </div>\n\n        {highlightedLinks.length > 0 && !navigationFreestyleComponent && (\n          <div className=\"w-full flex flex-col flex-1 highlighted-links\">\n            <div className=\"highlighted-links-container\">\n              <ul className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-16\" aria-label={relatedLinksAriaLabel}>\n                {highlightedLinks.map((link, index) => {\n                  const key = `${generatedId}-highlighted-links-${index}`;\n\n                  return (\n                    <li className=\"link-wrapper xs:col-span-4 md:col-span-4 xl:col-span-6\" key={key}>\n                      <CustomHeaderLink {...link.props} variant=\"neutral\" />\n                    </li>\n                  );\n                })}\n              </ul>\n            </div>\n          </div>\n        )}\n      </div>\n    </>\n  );\n};\n\nexport { InternalNavigationBurgerPanel };\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { createRef, FC, isValidElement, KeyboardEvent, MouseEvent, ReactElement, useId, useRef, useState } from 'react';\nimport { useHeaderMenuContext } from '../../context/menu-context/header-menu-context';\nimport { InternalAreaProps } from '../../general-bar/areas/internal-area';\nimport { CustomHeaderLink } from '../../shared/custom-header-link/custom-header-link';\nimport { InternalNavigationBurgerPanel, InternalNavigationBurgerPanelElement } from './internal-navigation-burger-panel';\n\nimport './internal-navigation-burger-layout.css';\n\nexport const InternalNavigationBurgerLayout: FC<LayoutProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const areas = headerDataContext.getAreas();\n  const currentArea = areas.find((area) => area.active);\n  const otherAreas = areas.filter((area) => !area.active);\n  const generatedId = useId();\n\n  const menubarRef = useRef<HTMLUListElement>(null);\n  const [focusIndex, setFocusIndex] = useState(0);\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLElement>) => {\n    const { code } = evt;\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      let nextIndex = null;\n      if (code === 'ArrowUp') {\n        nextIndex = focusIndex > 0 ? focusIndex - 1 : availableMenuItems.length - 1;\n      }\n\n      if (code === 'ArrowDown') {\n        nextIndex = focusIndex === availableMenuItems.length - 1 ? 0 : focusIndex + 1;\n      }\n\n      if (nextIndex !== null) {\n        const nextElem = availableMenuItems[nextIndex] as HTMLElement;\n\n        if (nextElem.getAttribute('data-menuitem') === 'button') {\n          nextElem.focus();\n        } else {\n          const anchor = nextElem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(nextIndex);\n      }\n    }\n  };\n\n  const handleAreaClick = (evt: MouseEvent<HTMLButtonElement>, area: InternalAreaProps) => {\n    headerDataContext.onAreaChange?.(area.value);\n\n    area.onClick?.(evt);\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      if (availableMenuItems.length > 0) {\n        const elem = availableMenuItems[0] as HTMLElement;\n\n        if (elem.getAttribute('data-menuitem') === 'button') {\n          elem.focus();\n        } else {\n          const anchor = elem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(0);\n      }\n    }\n  };\n\n  return (\n    <div className=\"navigation-burger-layout\">\n      {currentArea && (\n        <div id=\"navigation-burger-current-area\" className=\"current-area\">\n          {currentArea.label}\n        </div>\n      )}\n\n      <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\" aria-labelledby=\"navigation-burger-current-area\">\n        <ul ref={menubarRef}>\n          {headerDataContext.getNavigationItems().map((item, index) => {\n            const id = `${MenuTypeEnum.NavigationBurgerLayout}-${index}`;\n\n            const ref = createRef<InternalNavigationBurgerPanelElement>();\n            headerMenuContext.menuRefMap.set(id, ref);\n\n            if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n              return (\n                <li key={id}>\n                  <InternalNavigationBurgerPanel\n                    ref={ref}\n                    id={id}\n                    title={item.props.label?.toString()}\n                    linksAriaLabel={item.props.linksAriaLabel ?? ''}\n                    relatedLinksAriaLabel={item.props.relatedLinksAriaLabel ?? ''}\n                    buttonProps={\n                      {\n                        'tabIndex': focusIndex === index ? 0 : -1,\n                        'onKeyDown': handleKeyDown,\n                        'data-menuitem': 'button'\n                      } as ButtonProps\n                    }\n                  >\n                    {item.props.children}\n                  </InternalNavigationBurgerPanel>\n                </li>\n              );\n            }\n\n            if (isValidElement<NavigationLinkProps>(item) && (item as ReactElement).type === NavigationLink) {\n              const linkClassNames = classNames('burger-menu-item-link', item.props.className);\n\n              return (\n                <li key={id}>\n                  <CustomHeaderLink\n                    {...item.props}\n                    data-menuitem=\"link-wrapper\"\n                    className={linkClassNames}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  />\n                </li>\n              );\n            }\n          })}\n        </ul>\n      </nav>\n\n      {headerDataContext.hasVisibleAreas() && otherAreas?.length > 0 && otherAreas && (\n        <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12 py-16\" aria-label={headerDataContext.getAreasAriaLabel()}>\n          <ul className=\"flex flex-col gap-8\">\n            {otherAreas.map((area, index) => {\n              const id = `${generatedId}-${index}`;\n              return (\n                <li key={id}>\n                  <Button\n                    className=\"burger-areas-menu-item-btn\"\n                    appearance=\"link\"\n                    variant=\"neutral\"\n                    fullWidth\n                    onClick={(evt: MouseEvent<HTMLButtonElement>) => {\n                      handleAreaClick(evt, area);\n                    }}\n                  >\n                    {area.label}\n                  </Button>\n                </li>\n              );\n            })}\n          </ul>\n        </nav>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { useWindowSize } from '@/hooks';\nimport React, { createRef, FC } from 'react';\nimport { InternalNavigationBurgerLayout } from './internal-navigation-burger-layout';\n\nimport './internal-navigation-burger.css';\n\nexport const InternalNavigationBurger: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.MenuBurger, ref);\n\n  const { width } = useWindowSize();\n  const isMobile = width < 768;\n\n  const navigationId = headerDataContext.getNavigationId();\n  const menuLabel = headerDataContext.getResponsiveMenuLabel();\n  const menuAriaLabel = headerDataContext.getResponsiveMenuAriaLabel();\n\n  return (\n    <nav aria-label={menuAriaLabel} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        <li>\n          <PanelMenu\n            id={MenuTypeEnum.MenuBurger}\n            ref={ref}\n            className=\"navigation-burger-panel-menu\"\n            iconsCollapsed={{ leadingIcon: 'agora-line-menu', leadingIconHover: 'agora-solid-menu' }}\n            iconsExpanded={{ leadingIcon: 'agora-line-x', leadingIconHover: 'agora-solid-x' }}\n            portalRefType={MenuTypeEnum.NavigationBarPortal}\n          >\n            <Button\n              className=\"!px-0 !py-[14px]\"\n              hasIcon\n              {...(isMobile ? { 'aria-label': menuLabel?.toString() } : {})}\n              {...(isMobile ? { iconOnly: true } : { iconOnly: false })}\n            >\n              {menuLabel}\n            </Button>\n            <InternalNavigationBurgerLayout />\n          </PanelMenu>\n        </li>\n      </ul>\n    </nav>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nimport './internal-institutional.css';\n\nexport interface InternalInstitutionalProps extends ComponentProps<'div'> {}\n\nexport const InternalInstitutional: FC<InternalInstitutionalProps> = ({ className }) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const containerClassNames = classNames('institutional-phrase-container', { 'dark-mode': headerDataContext.darkMode }, className);\n\n  return (\n    <div className={containerClassNames}>\n      <div className=\"institutional\">{headerDataContext.getInstitutionalPhrase()}</div>\n    </div>\n  );\n};\n","import { AreaProps } from '@/components/header/general-bar/areas/area';\nimport classNames from 'classnames';\nimport React, { FC } from 'react';\n\nimport './internal-area.css';\n\nexport interface InternalAreaProps extends AreaProps {}\n\nexport const InternalArea: FC<InternalAreaProps> = ({ active = false, value, label, onClick, ...props }) => {\n  const areasClassNames = classNames('area', { selected: active });\n\n  return (\n    <button {...props} className={areasClassNames} onClick={onClick} data-value={value}>\n      {label}\n    </button>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, useRef } from 'react';\nimport { InternalArea, InternalAreaProps } from './internal-area';\n\nimport './internal-areas.css';\n\nexport interface InnerComponentProps extends ComponentProps<'div'> {}\n\nexport const InternalAreas: FC<InnerComponentProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = useRef<HTMLDivElement>(null);\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Areas, ref);\n\n  const visibleAreas = headerDataContext.hasVisibleAreas();\n\n  const areasClassNames = classNames('areas', { 'dark-mode': headerDataContext.darkMode }, { 'sr-only': !visibleAreas });\n\n  const handleAreaClick = (evt: MouseEvent<HTMLButtonElement>, area: InternalAreaProps) => {\n    if (!visibleAreas) {\n      return;\n    }\n\n    headerMenuContext.collapseAllMenus();\n\n    headerDataContext.onAreaChange?.(area.value);\n\n    area.onClick?.(evt);\n  };\n\n  const handleKeyDownCapture = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const { code } = evt;\n\n    if (!visibleAreas || !ref.current || (code !== 'ArrowLeft' && code !== 'ArrowRight')) {\n      return;\n    }\n\n    const availableAreas = Array.from(ref.current.querySelectorAll('.area'));\n    const activeIndex = availableAreas.findIndex((el) => el.classList.contains('selected'));\n\n    let nextElem;\n    if (code === 'ArrowLeft') {\n      nextElem = availableAreas[activeIndex > 0 ? activeIndex - 1 : availableAreas.length - 1] as HTMLElement;\n      nextElem.click();\n      nextElem.focus();\n    }\n\n    if (code === 'ArrowRight') {\n      nextElem = availableAreas[activeIndex === availableAreas.length - 1 ? 0 : activeIndex + 1] as HTMLElement;\n      nextElem.click();\n      nextElem.focus();\n    }\n  };\n\n  const areas = headerDataContext.getAreas() ?? [];\n\n  if (areas.length === 0) return null;\n\n  return (\n    <div className={areasClassNames} ref={ref} aria-label={headerDataContext.getAreasAriaLabel()} role=\"tablist\">\n      {areas.map((area: InternalAreaProps) => {\n        return (\n          <InternalArea\n            {...area}\n            key={area.value}\n            role=\"tab\"\n            aria-controls=\"tabpanel-active\"\n            aria-selected={area.active}\n            id={area.value}\n            tabIndex={visibleAreas && area.active ? 0 : -1}\n            onClick={(evt: MouseEvent<HTMLButtonElement>) => {\n              handleAreaClick(evt, area);\n            }}\n            onKeyDownCapture={handleKeyDownCapture}\n          />\n        );\n      })}\n    </div>\n  );\n};\n","import { AvatarProps } from '@/components/avatar';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { AuthenticatedBodyProps } from '@/components/header/general-bar/authenticated/authenticated-body';\nimport { AuthenticatedFooterProps } from '@/components/header/general-bar/authenticated/authenticated-footer';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport React, { ComponentProps, createRef, FC, ReactElement } from 'react';\n\nimport './internal-authenticated.css';\n\ninterface InternalAuthenticatedProps extends Omit<ComponentProps<'div'>, 'children'> {\n  children?:\n    | null\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>[];\n}\n\nexport const InternalAuthenticated: FC<InternalAuthenticatedProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Authenticated, ref);\n\n  const authenticatedProps = headerDataContext.getAuthenticated() as AvatarProps;\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Authenticated}\n      className=\"authenticated-panel-menu\"\n      ref={ref}\n      isDrawerPanel\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n    >\n      <Button title={authenticatedProps.information?.toString()} aria-haspopup=\"dialog\">\n        {authenticatedProps.avatarType === 'initials' && authenticatedProps.srcPath}\n        {authenticatedProps.avatarType !== 'initials' && <Icon aria-hidden name={authenticatedProps.srcPath} />}\n      </Button>\n    </PanelMenu>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\n\nimport { Button } from '@/components/button';\nimport './internal-language.css';\n\nexport interface InternalLanguageProps extends ComponentProps<'button'> {\n  icon?: string;\n  checked: boolean;\n  label: string;\n}\n\nexport const InternalLanguage: FC<InternalLanguageProps> = ({ icon, checked, label, onClick }) => {\n  return (\n    <Button\n      role=\"checkbox\"\n      aria-checked={checked}\n      appearance=\"link\"\n      variant=\"neutral\"\n      className=\"language-wrapper\"\n      onClick={onClick}\n      {...(icon || checked ? { hasIcon: true } : {})}\n      {...(icon ? { leadingIcon: icon, leadingIconHover: icon } : {})}\n      {...(checked ? { trailingIcon: 'agora-line-check', trailingIconHover: 'agora-solid-check' } : {})}\n    >\n      {label}\n    </Button>\n  );\n};\n","import { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport React, { FC } from 'react';\nimport { InternalLanguage } from './internal-language';\n\nimport './internal-languages-layout.css';\n\nexport const InternalLanguagesLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const handleChange = (lang: string) => {\n    const languagesRef = headerMenuContext.menuRefMap.get('Languages');\n\n    if (languagesRef) {\n      headerDataContext.onLanguageChange?.(lang);\n\n      const elem = languagesRef.current as PanelMenuElement;\n      elem?.collapse();\n      elem?.focus();\n    }\n  };\n\n  return (\n    <div {...props} className=\"languages-layout\" aria-label={headerDataContext.getLanguagesAriaLabel()} role=\"list\">\n      {headerDataContext.getLanguages().map((lang: LanguageProps, index: number) => {\n        return (\n          <div className=\"language-grid-cell\" key={`${props.id}-${index}`} role=\"listitem\">\n            <InternalLanguage checked={!!lang.checked} label={lang.label} icon={lang.icon} onClick={() => handleChange(lang.value)} />\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport React, { createRef, FC, ReactNode } from 'react';\nimport { InternalLanguagesLayout } from './internal-languages-layout';\n\nimport './internal-languages.css';\n\nexport const InternalLanguages: FC = () => {\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isMobile = width < mdScreen;\n  const isTablet = width >= mdScreen && width < xlScreen;\n\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const checkedLanguage = headerContext.getCheckedLanguage().length > 0 ? headerContext.getCheckedLanguage()[0] : null;\n\n  let buttonChildren: ReactNode = '';\n\n  if (checkedLanguage && (isMobile || isTablet)) {\n    buttonChildren = <abbr aria-label={checkedLanguage.label}>{checkedLanguage.abbr}</abbr>;\n  } else if (checkedLanguage && !isMobile) {\n    buttonChildren = checkedLanguage.label;\n  } else {\n    buttonChildren = <span>{' - '}</span>;\n  }\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Languages, ref);\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Languages}\n      ref={ref}\n      className=\"languages-panel-menu\"\n      iconsCollapsed={{ trailingIcon: 'agora-line-chevron-down', trailingIconHover: 'agora-line-chevron-down' }}\n      iconsExpanded={{ trailingIcon: 'agora-line-chevron-up', trailingIconHover: 'agora-line-chevron-up' }}\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n    >\n      <Button className=\"!px-0 !py-[14px]\" hasIcon aria-haspopup=\"listbox\">\n        {buttonChildren}\n      </Button>\n      <InternalLanguagesLayout />\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC } from 'react';\n\nimport './internal-custom-search-layout.css';\n\nexport const InternalCustomSearchLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const content = headerDataContext.getCustomSearch()?.children;\n\n  return (\n    <div {...props} className=\"custom-search-layout\">\n      {content}\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { InputSearchBar } from '@/components/input-search-bar';\nimport { List } from '@/components/list';\nimport React, { FC } from 'react';\n\nimport './internal-search-layout.css';\n\nexport const InternalSearchLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const searchTitle = headerDataContext.getDefaultSearchTitle();\n\n  const defaultInputSearchBarProps = headerDataContext.getDefaultSearchInputBar();\n\n  const customInputSearchBarProps = headerDataContext.getCustomSearchInputBar();\n\n  const relatedLinksTitle = headerDataContext.getDefaultSearchRelatedLinksTitle();\n\n  const relatedLinks = headerDataContext.getDefaultSearchRelatedLinks();\n\n  return (\n    <div {...props} className=\"search-layout\">\n      {searchTitle && <div className=\"search-title\">{searchTitle?.children}</div>}\n\n      {defaultInputSearchBarProps && (\n        <div className=\"search-input-bar-container\">\n          <InputSearchBar {...defaultInputSearchBarProps} darkMode={headerDataContext.darkMode} />\n        </div>\n      )}\n\n      {!defaultInputSearchBarProps && customInputSearchBarProps && (\n        <div className=\"search-input-bar-container custom-input\">{customInputSearchBarProps}</div>\n      )}\n\n      {relatedLinksTitle && relatedLinks && (\n        <div className=\"search-related-links-container\">\n          <div className=\"search-related-links-container-wrapper\">\n            {relatedLinksTitle?.children && <div className=\"search-list-title\">{relatedLinksTitle?.children}</div>}\n            <List className=\"search-list\">\n              {relatedLinks.map((linkProps, index) => {\n                const key = `${props.id}-${index}`;\n\n                return (\n                  <li key={key}>\n                    <CustomHeaderLink {...linkProps} variant=\"neutral\" appearance=\"link\" />\n                  </li>\n                );\n              })}\n            </List>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport classNames from 'classnames';\nimport React, { ComponentProps, createRef, FC } from 'react';\nimport { InternalCustomSearchLayout } from './internal-custom-search-layout';\nimport { InternalSearchLayout } from './internal-search-layout';\n\nimport './internal-search.css';\n\nexport interface InternalSearchProps extends ComponentProps<'div'> {}\n\nexport const InternalSearch: FC<InternalSearchProps> = ({ className }) => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Search, ref);\n\n  const panelClassNames = classNames('search-panel-menu', className);\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Search}\n      ref={ref}\n      className={panelClassNames}\n      iconsCollapsed={{ leadingIcon: 'agora-line-search', leadingIconHover: 'agora-solid-search' }}\n      iconsExpanded={{ leadingIcon: 'agora-line-x', leadingIconHover: 'agora-solid-x' }}\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n    >\n      <Button className=\"!px-0 !py-[14px]\" hasIcon aria-haspopup=\"dialog\">\n        {headerDataContext.getSearchLabel()}\n      </Button>\n\n      <>\n        {headerDataContext.hasCustomSearch() && <InternalCustomSearchLayout />}\n        {headerDataContext.hasDefaultSearch() && <InternalSearchLayout />}\n      </>\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC, useId } from 'react';\n\nimport './internal-unauthenticated-layout.css';\n\nexport const InternalUnauthenticatedLayout: FC<LayoutProps> = () => {\n  const generatedId = useId();\n  const headerDataContext = useHeaderDataContext();\n  const links = headerDataContext.getUnauthenticatedLinks();\n\n  return (\n    <div className=\"unauthenticated-layout\">\n      {links.map((l, index: number) => {\n        const key = `${generatedId}-${index}`;\n        return <CustomHeaderLink {...l} fullWidth={false} key={key} />;\n      })}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport React, { createRef, FC } from 'react';\nimport { InternalUnauthenticatedLayout } from './internal-unauthenticated-layout';\n\nimport './internal-unauthenticated.css';\n\nexport const InternalUnauthenticated: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Unauthenticated, ref);\n\n  const links = headerDataContext.getUnauthenticatedLinks();\n  const unauthenticatedButtonProps = headerDataContext.getUnauthenticated();\n\n  if (links.length < 1 || !unauthenticatedButtonProps) {\n    return null;\n  }\n\n  const isSingleAuth = links.length === 1;\n\n  let panelChildren = null;\n  let panelIconProps = null;\n\n  if (isSingleAuth) {\n    const link = links[0];\n    panelChildren = <CustomHeaderLink {...link} iconOnly={stringToBoolean(link.iconOnly)} />;\n  } else {\n    panelIconProps = {\n      iconsCollapsed: {\n        leadingIcon: unauthenticatedButtonProps.leadingIcon,\n        leadingIconHover: unauthenticatedButtonProps.leadingIconHover,\n        trailingIcon: unauthenticatedButtonProps.trailingIcon,\n        trailingIconHover: unauthenticatedButtonProps.trailingIconHover\n      },\n      iconsExpanded: {\n        leadingIcon: unauthenticatedButtonProps.leadingIcon ? 'agora-line-x' : '',\n        leadingIconHover: unauthenticatedButtonProps.leadingIconHover ? 'agora-line-x' : '',\n        trailingIcon: unauthenticatedButtonProps.trailingIcon ? 'agora-line-x' : '',\n        trailingIconHover: unauthenticatedButtonProps.trailingIconHover ? 'agora-line-x' : ''\n      }\n    };\n\n    panelChildren = [\n      <Button\n        {...unauthenticatedButtonProps}\n        key={'multiple-unauthenticated-button'}\n        hasIcon\n        iconOnly={unauthenticatedButtonProps.iconOnly ?? false}\n        aria-haspopup=\"listbox\"\n      >\n        {unauthenticatedButtonProps.label ?? ''}\n      </Button>,\n      <InternalUnauthenticatedLayout key={'multiple-unauthenticated-panel'} />\n    ];\n  }\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Unauthenticated}\n      ref={ref}\n      className=\"unauthenticated-panel-menu\"\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n      {...panelIconProps}\n    >\n      {panelChildren}\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { InternalNavigationBurger } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger';\nimport { InternalInstitutional } from '@/components/header/internals/shared/institutional/internal-institutional';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { InternalAreas } from './areas/internal-areas';\nimport { InternalAuthenticated } from './authenticated/internal-authenticated';\nimport { InternalLanguages } from './languages/internal-languages';\nimport { InternalSearch } from './search/internal-search';\nimport { InternalUnauthenticated } from './unauthenticated/internal-unauthenticated';\n\nimport './internal-general-bar.css';\n\nexport const InternalGeneralBar: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n\n  const generalBarClassNames = classNames('general-bar', { 'dark-mode': headerDataContext.darkMode });\n\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isDesktop = width >= xlScreen;\n  const isMobile = width < mdScreen;\n\n  return (\n    <div className={generalBarClassNames}>\n      <nav className=\"panels-menu\" aria-label={headerDataContext.getGeneralBarAriaLabel()}>\n        <ul>\n          {headerDataContext.hasLanguages() && (\n            <li>\n              <InternalLanguages />\n            </li>\n          )}\n\n          {headerDataContext.hasSearch() && (\n            <li>\n              <InternalSearch />\n            </li>\n          )}\n\n          {!!headerDataContext.getAuthenticated() && (\n            <li>\n              <InternalAuthenticated />\n            </li>\n          )}\n\n          {!!headerDataContext.getUnauthenticated() && (\n            <li>\n              <InternalUnauthenticated />\n            </li>\n          )}\n        </ul>\n      </nav>\n\n      <div>\n        {isDesktop && <InternalAreas />}\n\n        {isDesktop && !headerDataContext.hasVisibleAreas() && <InternalInstitutional />}\n\n        {isMobile && <InternalInstitutional className=\"sr-only\" />}\n\n        {!isDesktop && !!headerDataContext.countNavigationItems() && <InternalNavigationBurger />}\n      </div>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nimport './internal-logo.css';\n\nexport interface InternalLogoProps extends ComponentProps<'div'> {}\n\nexport const InternalLogo: FC<InternalLogoProps> = ({ className }) => {\n  const headerContext = useHeaderDataContext();\n\n  const logoClassNames = classNames('logo', className);\n\n  return <div className={logoClassNames}>{headerContext.getLogoImage()}</div>;\n};\n","import { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport classNames from 'classnames';\nimport React, { Children, FC, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport { NavigationFreestyle, NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\n\nimport './internal-navigation-link-layout.css';\n\nexport interface InternalNavigationLinksLayoutProps extends Omit<LayoutProps, 'title'> {\n  title: ReactNode;\n  linksAriaLabel?: string;\n  relatedLinksAriaLabel?: string;\n  children:\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps | NavigationFreestyleProps>\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps | NavigationFreestyleProps>[];\n}\n\nexport const InternalNavigationLinksLayout: FC<InternalNavigationLinksLayoutProps> = ({\n  title,\n  linksAriaLabel,\n  relatedLinksAriaLabel,\n  children\n}) => {\n  const generatedId = useId();\n\n  const navigationFreestyle = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationFreestyleProps>(child) && (child as ReactElement).type === NavigationFreestyle;\n  }) as ReactElement<NavigationFreestyleProps>[];\n\n  const links = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const highlightedLinks = Children.toArray(children).filter((child) => {\n    return isValidElement<RelatedNavigationLinkProps>(child) && (child as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  const navigationLinksLayoutClassName = classNames('navigation-links-layout', highlightedLinks.length < 1 ? 'pb-32' : '');\n\n  const navigationFreestyleComponent = navigationFreestyle.length > 0 ? navigationFreestyle?.[0]?.props?.children : null;\n\n  return (\n    <div className={navigationLinksLayoutClassName}>\n      {title && <div className=\"title\">{title}</div>}\n\n      {navigationFreestyleComponent && <div className=\"freestyle\">{navigationFreestyleComponent}</div>}\n\n      {links.length > 0 && !navigationFreestyleComponent && (\n        <div className=\"links\" role=\"list\" aria-label={linksAriaLabel}>\n          {links.map((link, index) => {\n            const key = `${generatedId}-links-${index}`;\n\n            return (\n              <div className=\"link-wrapper\" key={key} role=\"listitem\">\n                <CustomHeaderLink {...link.props} variant=\"primary\" />\n              </div>\n            );\n          })}\n        </div>\n      )}\n\n      {highlightedLinks.length > 0 && !navigationFreestyleComponent && (\n        <div className=\"highlighted-links-container\">\n          <div className=\"highlighted-links\" role=\"list\" aria-label={relatedLinksAriaLabel}>\n            {highlightedLinks.map((link, index) => {\n              const key = `${generatedId}-highlighted-links-${index}`;\n\n              return (\n                <div className=\"link-wrapper\" key={key} role=\"listitem\">\n                  <CustomHeaderLink {...link.props} />\n                </div>\n              );\n            })}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { createRef, FC, isValidElement, ReactElement } from 'react';\nimport { InternalNavigationLinksLayout } from './internal-navigation-link-layout';\n\nimport './internal-navigation-list.css';\n\nexport const InternalNavigationList: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const list = headerDataContext.getNavigationItems();\n\n  const activeAreaSelector = headerDataContext.getActiveArea();\n  const navigationId = headerDataContext.getNavigationId();\n\n  return (\n    <nav className=\"internal-navigation-list\" aria-labelledby={activeAreaSelector?.value} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        {list.map((item, index) => {\n          const id = `${MenuTypeEnum.NavigationList}-${index}`;\n\n          const ref = createRef<PanelMenuElement>();\n          headerMenuContext.menuRefMap.set(id, ref);\n\n          if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n            return (\n              <li key={id}>\n                <PanelMenu\n                  id={id}\n                  ref={ref}\n                  className=\"internal-panel-navigation-list\"\n                  iconsCollapsed={{ trailingIcon: 'agora-line-chevron-down', trailingIconHover: 'agora-line-chevron-down' }}\n                  iconsExpanded={{ trailingIcon: 'agora-line-chevron-up', trailingIconHover: 'agora-line-chevron-up' }}\n                  portalRefType={MenuTypeEnum.NavigationBarPortal}\n                >\n                  <Button\n                    className=\"!px-0 !py-[14px] internal-panel-navigation-list-btn\"\n                    hasIcon\n                    aria-haspopup=\"true\"\n                    aria-expanded={ref.current?.isExpanded}\n                  >\n                    {item.props.label}\n                  </Button>\n                  <InternalNavigationLinksLayout\n                    linksAriaLabel={item.props.linksAriaLabel}\n                    relatedLinksAriaLabel={item.props.relatedLinksAriaLabel}\n                    title={item.props.label}\n                  >\n                    {item.props.children}\n                  </InternalNavigationLinksLayout>\n                </PanelMenu>\n              </li>\n            );\n          }\n\n          if (isValidElement<NavigationLinkProps>(item) && (item as ReactElement).type === NavigationLink) {\n            const linkClassNames = classNames('internal-panel-navigation-list-link', item.props.className);\n            return (\n              <li key={id} className=\"relative\">\n                <PanelMenu id={id} ref={ref} portalRefType={MenuTypeEnum.NavigationBarPortal}>\n                  <CustomHeaderLink {...item.props} className={linkClassNames} />\n                </PanelMenu>\n              </li>\n            );\n          }\n        })}\n      </ul>\n    </nav>\n  );\n};\n","import { DialogElement } from '@/components/dialog';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { CustomModalConfiguration } from './custom-modal-provider';\n\nexport interface CustomModalContextProps {\n  /**\n   * The visible dialog element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a modal is visible or not.\n   */\n  visibility?: boolean;\n  /**\n   * Shows a new modal with the configurations provided.\n   */\n  show: (children: ReactNode, config: CustomModalConfiguration) => void;\n  /**\n   * Hides the visible modal.\n   */\n  hide: () => void;\n}\n\nconst CustomModalContext = createContext<CustomModalContextProps>({} as CustomModalContextProps);\n\nconst useCustomModalContext = (): CustomModalContextProps => {\n  return useContext(CustomModalContext);\n};\n\nexport { CustomModalContext, useCustomModalContext };\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useCustomModalContext } from '@/components/header/internals/shared/custom-modal/custom-modal-context';\nimport { CustomModalConfiguration } from '@/components/header/internals/shared/custom-modal/custom-modal-provider';\nimport { useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, KeyboardEvent, ReactElement, ReactNode, Ref, RefObject, useRef } from 'react';\nimport './modal-menu.css';\nimport { HeaderMenuContextRef } from '../../context/menu-context/header-menu-context';\n\nexport interface ModalMenuElement extends HTMLDivElement {\n  /**\n   *  Open the modal\n   */\n  open: () => void;\n  /**\n   *  close the modal\n   */\n  close: () => void;\n  /**\n   *  Focus the modal menu control.\n   */\n  focus: () => void;\n  /**\n   *  Current value of the expanded state of the panel menu.\n   */\n  isOpen: boolean;\n}\n\nexport interface ModalMenuProps extends Omit<ButtonProps, 'ref'> {\n  darkMode?: boolean;\n  modalAriaLabel?: string;\n  openLabel?: ReactNode;\n  closeLabel?: ReactNode;\n  children: ReactElement<HTMLDivElement> | ReactElement<HTMLDivElement>[];\n  ref?: RefObject<HeaderMenuContextRef>;\n}\n\nconst ModalMenu: FC<ModalMenuProps> = ({\n  ref = null,\n  className,\n  openLabel,\n  closeLabel,\n  modalAriaLabel,\n  darkMode = false,\n  children,\n  ...props\n}) => {\n  const headerContext = useHeaderDataContext();\n\n  const modalContext = useCustomModalContext();\n\n  const modalContentChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<ComponentProps<'div'>>(child) && (child as ReactElement).type !== Button;\n  }) as ReactElement<ComponentProps<'div'>>;\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const focus = () => {\n    buttonRef.current?.focus();\n  };\n\n  const open = () => {\n    modalContext.show(modalContentChildComponent, {\n      closeButtonLabel: closeLabel?.toString(),\n      ariaLabel: modalAriaLabel,\n      onHide: focus\n    } as CustomModalConfiguration);\n  };\n\n  const close = () => {\n    modalContext.hide();\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n\n  useExpandedRef<ModalMenuElement>(\n    ref as Ref<ModalMenuElement>,\n    innerRef,\n    {\n      isOpen: modalContext.visibility,\n      open,\n      close,\n      focus\n    } as ModalMenuElement,\n    [innerRef, modalContext.visibility, open, close]\n  );\n\n  const handleButtonClick = () => {\n    open();\n  };\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      evt.stopPropagation();\n      open();\n    }\n  };\n\n  const modalMenuClassNames = classNames('modal-menu', className, { 'dark-mode': darkMode });\n\n  const menuButtonClassNames = classNames('modal-menu-button', { expanded: modalContext.visibility, collapsed: !modalContext.visibility });\n\n  return (\n    <div ref={innerRef} className={modalMenuClassNames}>\n      <Button\n        {...props}\n        ref={buttonRef}\n        className={menuButtonClassNames}\n        onClick={handleButtonClick}\n        onKeyDownCapture={handleKeyDown}\n        onKeyUpCapture={handleKeyUp}\n        appearance=\"link\"\n        variant=\"neutral\"\n        hasIcon\n        leadingIcon=\"agora-line-menu\"\n        leadingIconHover=\"agora-solid-menu\"\n        darkMode={headerContext.darkMode}\n      >\n        {openLabel}\n      </Button>\n    </div>\n  );\n};\n\nexport { ModalMenu };\n","import { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport React, { Children, FC, isValidElement, ReactElement, useId } from 'react';\n\nimport './internal-modal-content.css';\nimport { NavigationFreestyle, NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\n\nexport interface InternalModalContentProps {\n  item: ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>;\n}\n\nexport const InternalModalContent: FC<InternalModalContentProps> = ({ item }) => {\n  const generatedId = useId();\n\n  let contentTitle = '';\n  let linksAriaLabel = '';\n  let relatedLinksAriaLabel = '';\n  if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n    contentTitle = item.props.label;\n    linksAriaLabel = item.props.linksAriaLabel ?? '';\n    relatedLinksAriaLabel = item.props.relatedLinksAriaLabel ?? '';\n  }\n\n  const navigationFreestyle = Children.toArray(item.props.children).filter((child) => {\n    return isValidElement<NavigationFreestyleProps>(child) && (child as ReactElement).type === NavigationFreestyle;\n  }) as ReactElement<NavigationFreestyleProps>[];\n\n  const navigationFreestyleComponent = navigationFreestyle.length > 0 ? navigationFreestyle?.[0]?.props?.children : null;\n\n  const activeMenuItemLinks: ReactElement<NavigationLinkProps>[] = Children.toArray(item.props.children).filter((l) => {\n    return isValidElement<NavigationLinkProps>(l) && (l as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const activeMenuItemRelatedLinks: ReactElement<RelatedNavigationLinkProps>[] = Children.toArray(item.props.children).filter((l) => {\n    return isValidElement<RelatedNavigationLinkProps>(l) && (l as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  return (\n    <>\n      {navigationFreestyleComponent && (\n        <div className=\"main-content\">\n          <div className=\"content\">\n            <div className=\"links\">\n              <div className=\"links-title\">{contentTitle}</div>\n              <div className=\"modal-content-freestyle\">{navigationFreestyleComponent}</div>\n            </div>\n          </div>\n        </div>\n      )}\n\n      {activeMenuItemLinks.length > 0 && !navigationFreestyleComponent && (\n        <>\n          <div className=\"main-content\">\n            <div className=\"content\">\n              <div className=\"links\">\n                <div className=\"links-title\">{contentTitle}</div>\n                <div className=\"links-list\" role=\"list\" aria-label={linksAriaLabel}>\n                  {activeMenuItemLinks.map((l, index) => {\n                    const key = `${generatedId}-link-${index}`;\n                    return (\n                      <div key={key} role=\"listitem\">\n                        <CustomHeaderLink {...l.props} variant=\"primary\" />\n                      </div>\n                    );\n                  })}\n                </div>\n              </div>\n            </div>\n          </div>\n\n          {activeMenuItemRelatedLinks.length > 0 && (\n            <div className=\"main-content full\">\n              <div className=\"content\">\n                <div className=\"related-links\">\n                  <div className=\"related-links-title\"></div>\n                  <div className=\"related-links-list\" role=\"list\" aria-label={relatedLinksAriaLabel}>\n                    {activeMenuItemRelatedLinks.map((l, index) => {\n                      const key = `${generatedId}-link-${index}`;\n                      return (\n                        <div key={key} role=\"listitem\">\n                          <CustomHeaderLink {...l.props} variant=\"neutral\" />\n                        </div>\n                      );\n                    })}\n                  </div>\n                </div>\n              </div>\n            </div>\n          )}\n        </>\n      )}\n    </>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { FC, isValidElement, KeyboardEvent, ReactElement, useEffect, useId, useRef, useState } from 'react';\n\nimport './internal-modal-navbar.css';\n\nexport interface InternalModalNavbarProps {\n  onActiveChange: (activeIndex: number) => void;\n}\n\nexport const InternalModalNavbar: FC<InternalModalNavbarProps> = ({ onActiveChange }) => {\n  const generatedId = useId();\n\n  const menubarRef = useRef<HTMLUListElement>(null);\n\n  const headerDataContext = useHeaderDataContext();\n\n  const list = headerDataContext.getNavigationItems();\n\n  const [activeMenuItem, setActiveMenuItem] = useState(0);\n\n  useEffect(() => {\n    onActiveChange(activeMenuItem);\n  }, [activeMenuItem]);\n\n  const [focusIndex, setFocusIndex] = useState(0);\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLElement>) => {\n    const { code } = evt;\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      let nextIndex = null;\n      if (code === 'ArrowUp') {\n        nextIndex = focusIndex > 0 ? focusIndex - 1 : availableMenuItems.length - 1;\n      }\n\n      if (code === 'ArrowDown') {\n        nextIndex = focusIndex === availableMenuItems.length - 1 ? 0 : focusIndex + 1;\n      }\n\n      if (nextIndex !== null) {\n        const nextElem = availableMenuItems[nextIndex] as HTMLElement;\n\n        if (nextElem.getAttribute('data-menuitem') === 'button') {\n          nextElem.focus();\n        } else {\n          const anchor = nextElem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(nextIndex);\n      }\n    }\n  };\n\n  return (\n    <div className=\"navbar\">\n      {headerDataContext.getModalMenuLabel() && (\n        <div id=\"internal-modal-navbar-title\" className=\"navbar-title\">\n          {headerDataContext.getModalMenuLabel()}\n        </div>\n      )}\n      <nav className=\"navbar-links\" aria-labelledby=\"internal-modal-navbar-title\">\n        <ul ref={menubarRef} aria-labelledby=\"internal-modal-navbar-title\">\n          {list.map((l, index) => {\n            const key = `${generatedId}-${index}`;\n\n            const itemClassNames = classNames('internal-modal-menu-item', { selected: activeMenuItem === index });\n\n            const handleButtonClick = () => {\n              setActiveMenuItem(index);\n            };\n\n            const autoFocusProp = index === focusIndex;\n\n            if (isValidElement<NavigationRootProps>(l) && (l as ReactElement).type === NavigationRoot) {\n              return (\n                <li key={key}>\n                  <Button\n                    data-autofocus={autoFocusProp}\n                    fullWidth\n                    appearance=\"link\"\n                    variant=\"neutral\"\n                    data-menuitem=\"button\"\n                    className={itemClassNames}\n                    onClick={handleButtonClick}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  >\n                    {l.props.label}\n                  </Button>\n                </li>\n              );\n            }\n\n            if (isValidElement<NavigationLinkProps>(l) && (l as ReactElement).type === NavigationLink) {\n              return (\n                <li key={key}>\n                  <CustomHeaderLink\n                    {...l.props}\n                    data-menuitem=\"link-wrapper\"\n                    className={itemClassNames}\n                    data-autofocus={autoFocusProp}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  />\n                </li>\n              );\n            }\n          })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n","/* eslint-disable jsx-a11y/tabindex-no-positive */\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport classNames from 'classnames';\nimport { InternalModalContent } from './internal-modal-content';\nimport { InternalModalNavbar } from './internal-modal-navbar';\nimport './internal-navigation-modal-layout.css';\n\nexport const InternalNavigationModalLayout: FC<LayoutProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const list = headerDataContext.getNavigationItems();\n\n  const [activeIndex, setActiveIndex] = useState(0);\n\n  const handleActiveChange = (newIndex: number) => {\n    setActiveIndex(newIndex);\n  };\n\n  const handleClick = () => {\n    const ref = headerMenuContext.menuRefMap.get('Modal');\n\n    if (ref?.current) {\n      (ref.current as ModalMenuElement).close();\n    }\n  };\n\n  const navigationModalLayoutClassNames = classNames('navigation-modal-layout', { 'dark-mode': headerDataContext.darkMode });\n\n  return (\n    <div className={navigationModalLayoutClassNames}>\n      <div className=\"menu\">\n        <div className=\"menu-content\">\n          <div className=\"content\">\n            <InternalModalNavbar onActiveChange={handleActiveChange} />\n          </div>\n        </div>\n      </div>\n      <div className=\"main\">\n        <div className=\"main-content\">\n          <div className=\"content\">\n            <div className=\"close-bar\">\n              <Button\n                tabIndex={1}\n                className=\"close-modal-button\"\n                hasIcon\n                trailingIcon=\"agora-line-x\"\n                trailingIconHover=\"agora-solid-x\"\n                variant=\"neutral\"\n                appearance=\"link\"\n                darkMode={headerDataContext.darkMode}\n                onClick={handleClick}\n              >\n                {headerDataContext.getModalCloseLabel()}\n              </Button>\n            </div>\n          </div>\n        </div>\n        <div className=\"scroll-container\">\n          <InternalModalContent item={list[activeIndex]} />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { HeaderMenuContextRef, useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { ModalMenu } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport React, { createRef, FC } from 'react';\nimport { InternalNavigationModalLayout } from './internal-navigation-modal-layout';\n\nexport const InternalNavigationModal: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<HeaderMenuContextRef>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Modal, ref);\n\n  const activeAreaSelector = headerDataContext.getActiveArea();\n  const navigationId = headerDataContext.getNavigationId();\n\n  return (\n    <nav className=\"internal-navigation-list\" aria-labelledby={activeAreaSelector?.value} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        <li>\n          <ModalMenu\n            ref={ref}\n            openLabel={headerDataContext.getModalMenuLabel()}\n            modalAriaLabel={headerDataContext.getModalAriaLabel()}\n            closeLabel={headerDataContext.getModalCloseLabel()}\n          >\n            <InternalNavigationModalLayout />\n          </ModalMenu>\n        </li>\n      </ul>\n    </nav>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { InternalInstitutional } from '@/components/header/internals/shared/institutional/internal-institutional';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { InternalLogo } from './logo/internal-logo';\nimport { InternalNavigationList } from './navigation-list/internal-navigation-list';\nimport { InternalNavigationModal } from './navigation-modal/internal-navigation-modal';\n\nimport './internal-navigation-bar.css';\n\nexport const InternalNavigationBar: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isDesktop = width >= xlScreen;\n  const isTablet = width >= mdScreen && width < xlScreen;\n\n  const navigationBarClassNames = classNames('navigation-bar');\n\n  const activeArea = headerDataContext.getActiveArea();\n\n  const tabAccessibleProps = {\n    'role': 'tabpanel',\n    'id': 'tabpanel-active',\n    'aria-labelledby': activeArea?.value\n  };\n\n  return (\n    <div className={navigationBarClassNames} {...(isDesktop ? tabAccessibleProps : {})}>\n      {isDesktop && headerDataContext.hasVisibleAreas() && <InternalInstitutional />}\n\n      <div className=\"navbar-container\">\n        <InternalLogo />\n        {isDesktop && headerDataContext.countNavigationItems() > 0 && (\n          <>\n            {headerDataContext.countNavigationItems() > headerDataContext.maxNavigationItems && <InternalNavigationModal />}\n            {headerDataContext.countNavigationItems() <= headerDataContext.maxNavigationItems && <InternalNavigationList />}\n          </>\n        )}\n      </div>\n\n      {isTablet && <InternalInstitutional />}\n    </div>\n  );\n};\n","import React, { FC, RefObject, useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { useHeaderDataContext } from './context/data-context/header-data-context';\nimport { useHeaderMenuContext } from './context/menu-context/header-menu-context';\nimport { InternalGeneralBar } from './general-bar/internal-general-bar';\nimport { InternalNavigationBar } from './navigation-bar/internal-navigation-bar';\n\nimport { MenuTypeEnum } from './context/menu-context/menu-type.enum';\nimport './internal-header.css';\n\nexport const InternalHeader: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const hasNavigationBar = headerDataContext.hasNavigationBar();\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const generalBarPortalRef = useRef<HTMLDivElement>(null);\n  const navigationBarPortalRef = useRef<HTMLDivElement>(null);\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Header, innerRef as RefObject<HTMLDivElement>);\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.GeneralBarPortal, generalBarPortalRef as RefObject<HTMLDivElement>);\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.NavigationBarPortal, navigationBarPortalRef as RefObject<HTMLDivElement>);\n\n  const headerClassNames = classNames('agora-header');\n\n  const generalBarBGClassNames = classNames('general-bar-bg', {\n    'bg-[var(--color-neutral-100)]': !headerDataContext.darkMode,\n    'bg-[var(--color-primary-900)]': headerDataContext.darkMode\n  });\n\n  const navigationBarBGClassNames = classNames('navigation-bar-bg', {\n    'bg-white': !headerDataContext.darkMode,\n    'bg-[var(--color-primary-700)]': headerDataContext.darkMode\n  });\n\n  return (\n    <div className={headerClassNames} ref={innerRef}>\n      <div className={generalBarBGClassNames}>\n        <InternalGeneralBar />\n        <div ref={generalBarPortalRef} className=\"general-bar-portal\" />\n      </div>\n\n      {hasNavigationBar && (\n        <div className={navigationBarBGClassNames}>\n          <InternalNavigationBar />\n          <div ref={navigationBarPortalRef} className=\"navigation-bar-portal\" />\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\n\nimport './custom-modal-dialog.css';\n\nexport const CustomModalDialog: FC<ComponentProps<'div'>> = ({ children }) => {\n  return <div className=\"custom-modal-dialog\">{children}</div>;\n};\n","import { Dialog, DialogElement } from '@/components/dialog';\nimport React, { ComponentProps, FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { CustomModalContext, CustomModalContextProps } from './custom-modal-context';\nimport { CustomModalDialog } from './custom-modal-dialog';\n\nexport interface CustomModalConfiguration {\n  closeButtonLabel: string;\n  ariaLabel: string;\n  onShow?: () => void;\n  onHide?: () => void;\n}\n\nconst CustomModalProvider: FC<ComponentProps<'div'>> = ({ children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n\n  const [dialogConfigs, setDialogConfigs] = useState<CustomModalConfiguration>({\n    closeButtonLabel: '',\n    ariaLabel: ''\n  } as CustomModalConfiguration);\n\n  const show = useCallback(\n    (currentDialogChildren: ReactNode, configs: CustomModalConfiguration) => {\n      setDialogChildren(currentDialogChildren);\n      setDialogConfigs(configs);\n      dialogRef.current?.show();\n    },\n    [setDialogChildren, setDialogConfigs]\n  );\n\n  const hide = useCallback((): void => {\n    dialogRef.current?.hide();\n  }, []);\n\n  const handleOnShow = () => {\n    dialogConfigs.onShow?.();\n  };\n\n  const handleOnHide = () => {\n    dialogConfigs.onHide?.();\n  };\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        show,\n        hide\n      }) as CustomModalContextProps,\n    [show, hide]\n  );\n\n  return (\n    <CustomModalContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen\n        dismissOnBackdropClick={false}\n        dismissOnEscape={true}\n        aria-label={dialogConfigs.ariaLabel}\n        onShow={handleOnShow}\n        onHide={handleOnHide}\n      >\n        <CustomModalDialog>{dialogChildren}</CustomModalDialog>\n      </Dialog>\n      {children}\n    </CustomModalContext>\n  );\n};\n\nexport { CustomModalProvider };\n","import { BooleanProp } from '@/models';\nimport React, { ComponentProps, FC, ReactElement, Ref, useEffect, useRef } from 'react';\nimport { BrandProps } from './brand/brand';\nimport { GeneralBarProps } from './general-bar/general-bar';\nimport { HeaderDataContext } from './internals/context/data-context/header-data-context';\nimport { useHeaderDataController } from './internals/context/data-context/header-data-controller';\nimport { useHeaderExternalController } from './internals/context/external-context/header-external-controller';\nimport { HeaderMenuContext } from './internals/context/menu-context/header-menu-context';\nimport { useHeaderMenuController } from './internals/context/menu-context/header-menu-controller';\nimport { InternalAuthenticatedDrawer } from './internals/general-bar/authenticated/Internal-authenticated-drawer';\nimport { InternalHeader } from './internals/internal-header';\nimport { CustomModalProvider } from './internals/shared/custom-modal/custom-modal-provider';\nimport { NavigationBarProps } from './navigation-bar/navigation-bar';\n\nexport interface HeaderElement extends ComponentProps<'div'> {\n  //  AREAS\n  focusActiveArea: () => void;\n  setActiveArea: (areaValue: string) => void;\n\n  //  LANGUAGES\n  focusLanguages: () => void;\n  openLanguages: () => void;\n\n  //  SEARCH\n  focusSearch: () => void;\n  openSearch: () => void;\n\n  //  UNAUTHENTICATED\n  focusUnauthenticated: () => void;\n  openUnauthenticated: () => void;\n\n  //  AUTHENTICATED\n  focusAuthenticated: () => void;\n  openAuthenticated: () => void;\n\n  //  MENU BURGER\n  focusBurgerMenu: () => void;\n  openBurgerMenu: () => void;\n\n  //  MODAL MENU\n  focusModalMenu: () => void;\n  openModalMenu: () => void;\n\n  //  NAVIGATION MENU OPTION\n  focusNavigationMenuOption: (index: number) => void;\n  openNavigationMenuOption: (index: number) => void;\n\n  //  GENERICS\n  closeAll: () => void;\n}\n\nexport type HeaderChildrenComponents =\n  | ReactElement<BrandProps | GeneralBarProps | NavigationBarProps>\n  | ReactElement<BrandProps | GeneralBarProps | NavigationBarProps>[];\n\nexport interface HeaderProps {\n  ref?: Ref<HeaderElement>;\n\n  darkMode?: BooleanProp;\n\n  maxNavigationItems?: number;\n\n  children?: HeaderChildrenComponents;\n}\n\nconst Header: FC<HeaderProps> = ({ ref = null, ...props }) => {\n  const headerDataController = useHeaderDataController({ ref, ...props });\n  const headerMenuController = useHeaderMenuController();\n\n  useHeaderExternalController(ref, headerMenuController);\n\n  const screenWidth = useRef(0);\n\n  useEffect(() => {\n    const handleResize = () => {\n      if (screenWidth.current !== window.innerWidth) {\n        headerMenuController.collapseAllMenus();\n        screenWidth.current = window.innerWidth;\n      }\n    };\n\n    window.addEventListener('resize', handleResize);\n\n    setTimeout(() => {\n      screenWidth.current = window.innerWidth;\n    }, 50);\n\n    return () => {\n      window.removeEventListener('resize', handleResize);\n    };\n  }, []);\n\n  return (\n    <HeaderDataContext value={headerDataController}>\n      <HeaderMenuContext value={headerMenuController}>\n        <CustomModalProvider>\n          <InternalHeader />\n          <InternalAuthenticatedDrawer />\n        </CustomModalProvider>\n      </HeaderMenuContext>\n    </HeaderDataContext>\n  );\n};\n\nexport { Header };\n","import { createContext, Dispatch, SetStateAction } from 'react';\nimport { Months, WeekDays } from '@/models';\n\nexport type DatePickerStateContextType = {\n  focusedDate: Date;\n  setFocusedDate: Dispatch<SetStateAction<Date>>;\n\n  selectedDate: Date;\n  setSelectedDate: Dispatch<SetStateAction<Date>>;\n\n  disabledDates: Array<Date | string> | [];\n  setDisabledDates: Dispatch<SetStateAction<Array<Date | string> | []>>;\n\n  endDate: Date | string;\n  setEndDate: Dispatch<SetStateAction<Date | string>>;\n\n  startDate: Date | string;\n  setStartDate: Dispatch<SetStateAction<Date | string>>;\n\n  cancel: () => void;\n\n  onChange?: (date: Date) => void;\n\n  labels: {\n    previousYearAriaLabel: string;\n    previousMonthAriaLabel: string;\n    nextMonthAriaLabel: string;\n    nextYearAriaLabel: string;\n    monthsLabels?: Months;\n    weekdaysLabels?: WeekDays;\n    focusedDayAriaLabel?: string;\n    selectedDayAriaLabel: string;\n    todayDayAriaLabel: string;\n    todayLabel: string;\n    todayAriaLabel?: string;\n    cancelLabel: string;\n    cancelAriaLabel?: string;\n    okLabel: string;\n    okAriaLabel?: string;\n  };\n};\n\nexport const DatePickerStateContext = createContext<DatePickerStateContextType | undefined>(undefined);\n","export const isSameDay = (date1: Date, date2: Date): boolean => {\n  return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate();\n};\n","import { isSameDay } from './is-same-day';\n\nexport const enum Direction {\n  Forward = 'forward',\n  Backward = 'backward'\n}\n\ninterface GetClosestAvailableDayParams {\n  startingDate?: Date;\n  disabledDates: (Date | string)[];\n  direction?: Direction;\n}\n\nexport const getClosestAvailableDay = ({\n  startingDate = new Date(),\n  disabledDates,\n  direction = Direction.Forward\n}: GetClosestAvailableDayParams): Date => {\n  const availableDate = startingDate;\n  const convertedDisabledDates = disabledDates.map((d) => (typeof d === 'string' ? new Date(Number(d)) : d));\n  const directionValue = direction === Direction.Backward ? -1 : 1;\n\n  while (convertedDisabledDates.some((d) => isSameDay(availableDate, d))) {\n    availableDate.setDate(availableDate.getDate() + directionValue);\n  }\n\n  return availableDate;\n};\n","export const isDayBeforeStartDate = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  return parsedDate < parsedStartDate;\n};\n\nexport const isDayAfterEndDate = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  return parsedDate > parsedEndDate;\n};\n\n// Return true if startDate is 1 month or more before the desired date\nexport const isStartDateOneMonthOrMore = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedDate.getFullYear() - parsedStartDate.getFullYear();\n  const monthDifference = yearDifference * 12 + parsedDate.getMonth() - parsedStartDate.getMonth();\n\n  return monthDifference >= 1;\n};\n\n// Return true if endDate is 1 month or more after the desired date\nexport const isEndDateOneMonthOrMore = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedEndDate.getFullYear() - parsedDate.getFullYear();\n  const monthDifference = yearDifference * 12 + parsedEndDate.getMonth() - parsedDate.getMonth();\n\n  return monthDifference >= 1;\n};\n\n// Return true if startDate is 1 year or more before the desired date\nexport const isStartDateOneYearOrMore = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedDate.getFullYear() - parsedStartDate.getFullYear();\n\n  return yearDifference >= 1;\n};\n\n// Return true if endDate is 1 year or more after the desired date\nexport const isEndDateOneYearOrMore = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedEndDate.getFullYear() - parsedDate.getFullYear();\n\n  return yearDifference >= 1;\n};\n","import { useContext, useMemo } from 'react';\nimport { Months, WeekDays } from '@/models';\n\nimport { DatePickerStateContext } from './date-picker-state.context';\nimport { Direction, getClosestAvailableDay } from '../utils/get-closest-available-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\n\nconst DEFAULT_MONTHS = {\n  jan: 'Janeiro',\n  feb: 'Fevereiro',\n  mar: 'Março',\n  apr: 'Abril',\n  may: 'Maio',\n  jun: 'Junho',\n  jul: 'Julho',\n  aug: 'Agosto',\n  set: 'Setembro',\n  oct: 'Outubro',\n  nov: 'Novembro',\n  dec: 'Dezembro'\n} as Months;\n\nconst DEFAULT_WEEK_DAYS = {\n  sun: 'Domingo',\n  mon: 'Segunda',\n  tue: 'Terça',\n  wed: 'Quarta',\n  thu: 'Quinta',\n  fri: 'Sexta',\n  sat: 'Sábado'\n} as WeekDays;\n\nconst useDatePickerStateContext = () => {\n  const ctx = useContext(DatePickerStateContext);\n\n  if (!ctx) {\n    throw new Error('Context must be used within a provider.');\n  }\n\n  const months = ctx.labels.monthsLabels ?? DEFAULT_MONTHS;\n\n  const weekDays = ctx.labels.weekdaysLabels ?? DEFAULT_WEEK_DAYS;\n\n  const mapMonths = new Map<number, string>();\n  Object.values(months).forEach((value: string, index) => {\n    mapMonths.set(index, value);\n  });\n\n  const getAbbrWeekDays = () => {\n    return Object.values(weekDays).map((wd: string) => wd.substring(0, 3));\n  };\n\n  const focusedMonth = useMemo(() => {\n    return mapMonths.get(ctx.focusedDate.getMonth());\n  }, [ctx.focusedDate]);\n\n  const focusedYear = useMemo(() => {\n    return ctx.focusedDate.getFullYear();\n  }, [ctx.focusedDate]);\n\n  const moveFocusInDays = ({ numberOfDays = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfDays : numberOfDays;\n\n    newDate.setDate(newDate.getDate() + directionValue);\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveFocusInMonths = ({ numberOfMonths = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfMonths : numberOfMonths;\n\n    newDate.setMonth(newDate.getMonth() + directionValue);\n\n    const parsedStartDate = typeof ctx.startDate === 'string' ? new Date(ctx.startDate) : ctx.startDate;\n    const parsedEndDate = typeof ctx.endDate === 'string' ? new Date(ctx.endDate) : ctx.endDate;\n\n    if (parsedStartDate && newDate < parsedStartDate) {\n      ctx.setFocusedDate(new Date(parsedStartDate));\n      return;\n    }\n\n    if (parsedEndDate && newDate > parsedEndDate) {\n      ctx.setFocusedDate(new Date(parsedEndDate));\n      return;\n    }\n\n    const isBeforeStartDate = parsedStartDate ? isDayBeforeStartDate(newDate, parsedStartDate) : false;\n    const isAfterEndDate = parsedEndDate ? isDayAfterEndDate(newDate, parsedEndDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveFocusInYears = ({ numberOfYears = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfYears : numberOfYears;\n\n    newDate.setFullYear(newDate.getFullYear() + directionValue);\n\n    const parsedStartDate = typeof ctx.startDate === 'string' ? new Date(ctx.startDate) : ctx.startDate;\n    const parsedEndDate = typeof ctx.endDate === 'string' ? new Date(ctx.endDate) : ctx.endDate;\n\n    if (parsedStartDate && newDate < parsedStartDate) {\n      ctx.setFocusedDate(new Date(parsedStartDate));\n      return;\n    }\n\n    if (parsedEndDate && newDate > parsedEndDate) {\n      ctx.setFocusedDate(new Date(parsedEndDate));\n      return;\n    }\n\n    const isBeforeStartDate = parsedStartDate ? isDayBeforeStartDate(newDate, parsedStartDate) : false;\n    const isAfterEndDate = parsedEndDate ? isDayAfterEndDate(newDate, parsedEndDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const focusToday = (): void => {\n    ctx.setFocusedDate(new Date());\n  };\n\n  const moveToNextDay = () => moveFocusInDays({ numberOfDays: 1, direction: Direction.Forward });\n  const moveToNextWeek = () => moveFocusInDays({ numberOfDays: 7, direction: Direction.Forward });\n  const moveToNextMonth = () => moveFocusInMonths({ numberOfMonths: 1, direction: Direction.Forward });\n  const moveToNextYear = () => moveFocusInYears({ numberOfYears: 1, direction: Direction.Forward });\n\n  const moveToPreviousDay = () => moveFocusInDays({ numberOfDays: 1, direction: Direction.Backward });\n  const moveToPreviousWeek = () => moveFocusInDays({ numberOfDays: 7, direction: Direction.Backward });\n  const moveToPreviousMonth = () => moveFocusInMonths({ numberOfMonths: 1, direction: Direction.Backward });\n  const moveToPreviousYear = () => moveFocusInYears({ numberOfYears: 1, direction: Direction.Backward });\n\n  const moveToFirstDayOfWeek = (): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n\n    newDate.setDate(newDate.getDate() - newDate.getDay());\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction: Direction.Backward\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveToLastDayOfWeek = (): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n\n    newDate.setDate(newDate.getDate() + (6 - newDate.getDay()));\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction: Direction.Forward\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const selectFocusedDate = (): void => {\n    ctx.setSelectedDate(ctx.focusedDate);\n  };\n\n  const getLabels = () => {\n    return ctx.labels;\n  };\n\n  return {\n    ...ctx,\n    getLabels,\n\n    getAbbrWeekDays,\n\n    focusedMonth,\n    focusedYear,\n\n    moveToPreviousYear,\n    moveToPreviousMonth,\n    moveToNextMonth,\n    moveToNextYear,\n\n    moveToNextDay,\n    moveToNextWeek,\n    moveToPreviousDay,\n    moveToPreviousWeek,\n    moveToFirstDayOfWeek,\n    moveToLastDayOfWeek,\n    selectFocusedDate,\n\n    focusToday\n  };\n};\n\nexport { useDatePickerStateContext };\n","export const isDateInSameMonthOfYear = (date1: Date, date2: Date): boolean => {\n  return date1.getMonth() === date2.getMonth() && date1.getFullYear() === date2.getFullYear();\n};\n","import { isSameDay } from '../utils/is-same-day';\n\nexport const isDayOnArray = (date: Date, datesArray: (Date | string)[]): boolean => {\n  return datesArray.some((d) => {\n    let convertedDate: Date;\n\n    if (typeof d === 'string') {\n      const isStringOnlyDigits = /^\\d+$/.test(d);\n      if (isStringOnlyDigits) {\n        convertedDate = new Date(Number(d));\n      } else {\n        convertedDate = new Date(d);\n      }\n    } else {\n      convertedDate = d;\n    }\n\n    return isSameDay(date, convertedDate);\n  });\n};\n","import { getDateString } from '@/utils';\n\nexport const parseInputDate = (val?: string | null): Date | undefined => {\n  if (!val) {\n    return undefined;\n  }\n\n  if (/\\d{1,2}\\/\\d{1,2}\\/\\d{4}/.test(val)) {\n    const parts = val.split('/');\n    if (parts) {\n      const day = +parts[0];\n      const month = +parts[1];\n      const year = +parts[2];\n      const parsedDate = new Date(year, month - 1, day);\n      const parsedDateString = getDateString(parsedDate);\n      return parsedDateString === val ? parsedDate : undefined;\n    }\n  }\n\n  return undefined;\n};\n","import classNames from 'classnames';\nimport React, { FC, KeyboardEvent, MouseEvent, useEffect, useMemo, useRef, useState } from 'react';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport { getDateString } from '@/utils';\nimport { isDateInSameMonthOfYear } from '../utils/is-date-in-same-month';\nimport { isSameDay } from '../utils/is-same-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\nimport { isDayOnArray } from '../utils/is-day-on-array';\nimport { parseInputDate } from '../utils/parse-input-date';\n\nexport const DialogBody: FC = () => {\n  const ctx = useDatePickerStateContext();\n\n  const ref = useRef(null);\n\n  const [isCalendarActive, setIsCalendarActive] = useState(false);\n\n  const parseDateFromTarget = (target: HTMLElement): Date | undefined => {\n    const dateString = target.getAttribute('data-date');\n    return parseInputDate(dateString);\n  };\n\n  const focusAndSelectTargetDate = (targetDate: Date | undefined) => {\n    if (targetDate && isDateInSameMonthOfYear(ctx.focusedDate, targetDate) && !isDayOnArray(targetDate, ctx.disabledDates)) {\n      const parsedTargetDate = new Date(targetDate);\n      ctx.setFocusedDate(parsedTargetDate);\n      ctx.setSelectedDate(parsedTargetDate);\n    }\n  };\n\n  const onClickHandler = (evt: MouseEvent<HTMLTableCellElement>) => {\n    const parsedDateFromTarget = parseDateFromTarget(evt.target as HTMLElement);\n\n    const isBeforeStartDate = ctx.startDate && parsedDateFromTarget ? isDayBeforeStartDate(parsedDateFromTarget, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate && parsedDateFromTarget ? isDayAfterEndDate(parsedDateFromTarget, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      focusAndSelectTargetDate(parsedDateFromTarget);\n    }\n  };\n\n  const onKeydownHandler = (evt: KeyboardEvent<HTMLTableCellElement>) => {\n    const { shiftKey } = evt;\n    const { target } = evt;\n    const { code } = evt;\n\n    if (code === 'Tab') {\n      return;\n    }\n\n    evt.preventDefault();\n\n    switch (evt.code) {\n      case 'ArrowUp':\n        ctx.moveToPreviousWeek();\n        break;\n      case 'ArrowDown':\n        ctx.moveToNextWeek();\n        break;\n      case 'ArrowLeft':\n        ctx.moveToPreviousDay();\n        break;\n      case 'ArrowRight':\n        ctx.moveToNextDay();\n        break;\n      case 'PageUp':\n        if (shiftKey) {\n          ctx.moveToPreviousYear();\n        } else {\n          ctx.moveToPreviousMonth();\n        }\n        break;\n      case 'PageDown':\n        if (shiftKey) {\n          ctx.moveToNextYear();\n        } else {\n          ctx.moveToNextMonth();\n        }\n        break;\n      case 'Home':\n        ctx.moveToFirstDayOfWeek();\n        break;\n      case 'End':\n        ctx.moveToLastDayOfWeek();\n        break;\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        focusAndSelectTargetDate(parseDateFromTarget(target as HTMLElement));\n        break;\n      default:\n        break;\n    }\n  };\n\n  const onFocusHandler = () => {\n    setIsCalendarActive(true);\n  };\n\n  const onBlurHandler = () => {\n    setIsCalendarActive(false);\n  };\n\n  const buildDay = (currentDay: Date, weekNumber: number, dayNumber: number) => {\n    currentDay.setDate(currentDay.getDate() + 1);\n\n    const isInCurrentMonth = currentDay.getMonth() === ctx.focusedDate.getMonth();\n    const isFocusedDate = isSameDay(currentDay, ctx.focusedDate);\n    const isSelectedDate = isSameDay(currentDay, ctx.selectedDate);\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(currentDay, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(currentDay, ctx.endDate) : false;\n    const isDisabledDate = isDayOnArray(currentDay, ctx.disabledDates) || isBeforeStartDate || isAfterEndDate;\n    const isToday = isSameDay(currentDay, new Date());\n\n    const stringDate = getDateString(currentDay);\n\n    const tdDayClasses = classNames(\n      'day w-[44px] h-[44px] border-2 rounded-4 outline-0 flex items-center justify-center text-s-regular cursor-default',\n      // DEFAULT TEXT COLOR\n      {\n        'text-[var(--color-neutral-900)]': !isToday && !isDisabledDate\n      },\n      //  DEFAULT BORDER\n      {\n        'border-transparent': !isSelectedDate && !isFocusedDate\n      },\n      //  DAY IN CURRENT MONTH\n      {\n        'hover:bg-[var(--color-primary-100)] hover:text-[var(--color-primary-600)] active:bg-[var(--color-neutral-200)] active:shadow-inner active:border-0 active:text-[var(--color-neutral-900)]':\n          isInCurrentMonth && !isDisabledDate\n      },\n      //  DISABLED\n      {\n        'text-[var(--color-neutral-500)] line-through decoration-2': isDisabledDate\n      },\n      //  TODAY DEFAULT\n      {\n        'text-s-bold text-[var(--color-primary-600)]': isToday && !isSelectedDate && !isDisabledDate\n      },\n      //  SELECTED\n      {\n        'bg-[var(--color-primary-600)] text-white': isSelectedDate && !isDisabledDate\n      },\n      //  FOCUS WITH CALENDAR GRID NOT FOCUSED\n      {\n        'border-[var(--color-primary-400)]': !isSelectedDate && isFocusedDate && !isCalendarActive && isInCurrentMonth && !isDisabledDate\n      },\n      //  FOCUS\n      {\n        'outline outline-2 -outline-offset-2 outline-[var(--color-focus)]': isCalendarActive && isFocusedDate && isInCurrentMonth\n      }\n    );\n\n    const dayClasses = classNames('pointer-events-none select-none', { 'opacity-20': !isInCurrentMonth });\n\n    const trTdKey = `tr-td-key-${weekNumber}-${dayNumber}`;\n\n    const ariaLabelForDay = (() => {\n      const labels = ctx.getLabels();\n\n      let dayLabel = currentDay.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });\n\n      if (isToday && labels.todayDayAriaLabel) {\n        dayLabel = `${labels.todayDayAriaLabel}, ${dayLabel}`;\n      }\n\n      if (isFocusedDate && labels.focusedDayAriaLabel) {\n        dayLabel = `${dayLabel}, ${labels.focusedDayAriaLabel}`;\n      }\n\n      if (isSelectedDate && labels.selectedDayAriaLabel) {\n        dayLabel = `${dayLabel}, ${labels.selectedDayAriaLabel}`;\n      }\n\n      return dayLabel;\n    })();\n\n    return (\n      <div\n        key={trTdKey}\n        className={tdDayClasses}\n        role=\"gridcell\"\n        data-date={stringDate}\n        aria-label={ariaLabelForDay}\n        aria-selected={isFocusedDate}\n        aria-disabled={isDisabledDate}\n        tabIndex={isInCurrentMonth && isFocusedDate && !isDisabledDate ? 0 : -1}\n        onKeyDown={onKeydownHandler}\n        onClick={onClickHandler}\n        onFocus={onFocusHandler}\n        onBlur={onBlurHandler}\n      >\n        <div aria-hidden className={dayClasses}>\n          {currentDay.getDate()}\n        </div>\n      </div>\n    );\n  };\n\n  const buildWeek = (weekNumber: number) => {\n    const firstDayOfMonth = new Date(ctx.focusedDate.getFullYear(), ctx.focusedDate.getMonth(), 1);\n\n    const dayOfWeek = firstDayOfMonth.getDay() + 1;\n\n    firstDayOfMonth.setDate(firstDayOfMonth.getDate() - dayOfWeek);\n    firstDayOfMonth.setDate(firstDayOfMonth.getDate() + weekNumber * 7);\n\n    return Array.from(Array(7).keys()).map((dayNumber) => {\n      return buildDay(firstDayOfMonth, weekNumber, dayNumber);\n    });\n  };\n\n  const memoGrid = useMemo(() => {\n    return Array.from(Array(6).keys()).map((trCount) => {\n      const trKey = `tr-key-${trCount}`;\n      return (\n        <div role=\"row\" className=\"grid grid-flow-col gap-[2px]\" key={trKey}>\n          {buildWeek(trCount)}\n        </div>\n      );\n    });\n  }, [ctx.focusedDate, ctx.selectedDate, isCalendarActive]);\n\n  const focusDay = () => {\n    if (ref.current) {\n      const elem = Array.from((ref.current as HTMLElement).querySelectorAll('.day[tabIndex=\"0\"]')).shift();\n\n      if (elem) {\n        (elem as HTMLElement).focus();\n      }\n    }\n  };\n\n  //  INITIAL FOCUS ON SELECTED/FOCUSED DAY\n  useEffect(() => focusDay(), []);\n\n  //  WHENEVER CALENDAR GRID IS ACTIVE, FOCUS THE DAY AGAIN\n  useEffect(() => {\n    if (isCalendarActive) {\n      focusDay();\n    }\n  }, [isCalendarActive]);\n\n  //  WHENEVER FOCUSED DATE CHANGES, FOCUS IT\n  useEffect(() => focusDay(), [ctx.focusedDate]);\n\n  return (\n    <div className=\"my-16\">\n      <div role=\"grid\" className=\"w-full\">\n        <div role=\"rowheader\" className=\"grid grid-flow-col gap-[2px]\">\n          {ctx.getAbbrWeekDays().map((d) => {\n            return (\n              <div\n                role=\"gridcell\"\n                key={d}\n                className=\"w-[44px] h-32 flex items-center justify-center bg-[var(--color-neutral-100)] text-s-regular text-[var(--color-neutral-900)]\"\n                aria-hidden\n              >\n                {d}\n              </div>\n            );\n          })}\n        </div>\n        <div ref={ref} role=\"rowgroup\">\n          {memoGrid}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { Button } from '@/components/button';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport { isDayOnArray } from '../utils/is-day-on-array';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\n\nexport const DialogFooter: FC = () => {\n  const ctx = useDatePickerStateContext();\n\n  const todayDate = new Date();\n  const disabledDates = ctx.disabledDates;\n  let isTodayDisabled = isDayOnArray(todayDate, disabledDates);\n\n  if (ctx.startDate && isDayBeforeStartDate(todayDate, ctx.startDate)) {\n    isTodayDisabled = true;\n  }\n\n  if (ctx.endDate && isDayAfterEndDate(todayDate, ctx.endDate)) {\n    isTodayDisabled = true;\n  }\n\n  const onOkPressed = () => {\n    const parsedFocusedDate = new Date(ctx.focusedDate);\n    ctx.setSelectedDate(parsedFocusedDate);\n    if (ctx.onChange) {\n      ctx.onChange(parsedFocusedDate);\n    }\n    if (ctx.cancel) {\n      ctx.cancel();\n    }\n  };\n\n  const labels = ctx.getLabels();\n\n  const additionalTodayProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.todayLabel}, ${labels.todayAriaLabel}`\n  };\n  if (!labels.todayAriaLabel) {\n    delete additionalTodayProps['aria-label'];\n  }\n\n  const additionalCancelProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.cancelLabel}, ${labels.cancelAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalCancelProps['aria-label'];\n  }\n\n  const additionalOkProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.okLabel}, ${labels.okAriaLabel}`\n  };\n  if (!labels.okAriaLabel) {\n    delete additionalOkProps['aria-label'];\n  }\n\n  return (\n    <div className=\"flex justify-between items-center\">\n      <div className=\"my-16\">\n        <Button type=\"button\" appearance=\"link\" onClick={ctx.focusToday} disabled={isTodayDisabled} {...additionalTodayProps}>\n          {labels.todayLabel}\n        </Button>\n      </div>\n      <div className=\"my-16 flex items-end gap-8\">\n        <Button type=\"button\" appearance=\"outline\" onClick={ctx.cancel} {...additionalCancelProps}>\n          {labels.cancelLabel}\n        </Button>\n        <Button type=\"button\" appearance=\"solid\" onClick={onOkPressed} {...additionalOkProps}>\n          {labels.okLabel}\n        </Button>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport {\n  isEndDateOneMonthOrMore,\n  isEndDateOneYearOrMore,\n  isStartDateOneMonthOrMore,\n  isStartDateOneYearOrMore\n} from '../utils/start-end-dates-comparators';\n\nexport const DialogHeader: FC = () => {\n  const ctx = useDatePickerStateContext();\n\n  const [isPreviousMonthButtonEnabled, setIsPreviousMonthButtonEnabled] = useState<boolean>(true);\n  const [isPreviousYearButtonEnabled, setIsPreviousYearButtonEnabled] = useState<boolean>(true);\n  const [isNextMonthButtonEnabled, setIsNextMonthButtonEnabled] = useState<boolean>(true);\n  const [isNextYearButtonEnabled, setIsNextYearButtonEnabled] = useState<boolean>(true);\n\n  useEffect(() => {\n    setIsPreviousMonthButtonEnabled(ctx.startDate ? isStartDateOneMonthOrMore(ctx.focusedDate, ctx.startDate) : true);\n    setIsPreviousYearButtonEnabled(ctx.startDate ? isStartDateOneYearOrMore(ctx.focusedDate, ctx.startDate) : true);\n    setIsNextMonthButtonEnabled(ctx.endDate ? isEndDateOneMonthOrMore(ctx.focusedDate, ctx.endDate) : true);\n    setIsNextYearButtonEnabled(ctx.endDate ? isEndDateOneYearOrMore(ctx.focusedDate, ctx.endDate) : true);\n  }, [ctx.focusedDate, ctx.startDate, ctx.endDate]);\n\n  return (\n    <div className=\"header w-full\">\n      <h2 className=\"flex justify-center py-8 w-full text-black font-bold text-m-light normal-case\" aria-live=\"polite\">\n        {`${ctx.focusedMonth} ${ctx.focusedYear}`}\n      </h2>\n\n      <div className=\"flex flex-row justify-between\">\n        <div className=\"flex gap-8 justify-center\">\n          <Button\n            type=\"button\"\n            appearance=\"outline\"\n            onClick={ctx.moveToPreviousYear}\n            aria-label={ctx.getLabels().previousYearAriaLabel}\n            disabled={!isPreviousYearButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevrons-left\" dimensions=\"s\" aria-hidden />\n          </Button>\n\n          <Button\n            type=\"button\"\n            appearance=\"outline\"\n            onClick={ctx.moveToPreviousMonth}\n            aria-label={ctx.getLabels().previousMonthAriaLabel}\n            disabled={!isPreviousMonthButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevron-left\" dimensions=\"s\" aria-hidden />\n          </Button>\n        </div>\n\n        <div className=\"flex gap-8 justify-center\">\n          <Button\n            type=\"button\"\n            appearance=\"outline\"\n            onClick={ctx.moveToNextMonth}\n            aria-label={ctx.getLabels().nextMonthAriaLabel}\n            disabled={!isNextMonthButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevron-right\" dimensions=\"s\" aria-hidden />\n          </Button>\n\n          <Button\n            type=\"button\"\n            appearance=\"outline\"\n            onClick={ctx.moveToNextYear}\n            aria-label={ctx.getLabels().nextYearAriaLabel}\n            disabled={!isNextYearButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevrons-right\" dimensions=\"s\" aria-hidden />\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { Dispatch, FC, SetStateAction, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Months, WeekDays } from '@/models';\nimport { DatePickerStateContext } from './contexts/date-picker-state.context';\nimport { DialogBody } from './date-picker-dropdown-body/date-picker-dropdown-body';\nimport { DialogFooter } from './date-picker-dropdown-footer/date-picker-dropdown-footer';\nimport { DialogHeader } from './date-picker-dropdown-header/date-picker-dropdown-header';\nimport classNames from 'classnames';\nimport { isDayOnArray } from './utils/is-day-on-array';\nimport { getClosestAvailableDay } from './utils/get-closest-available-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from './utils/start-end-dates-comparators';\n\nexport interface DatePickerDropdownProps {\n  className?: string;\n  date?: Date;\n  disabledDates?: Array<Date | string> | [];\n  startDate?: Date | string;\n  endDate?: Date | string;\n  setEndDate?: Dispatch<SetStateAction<Date | string>>;\n  setStartDate?: Dispatch<SetStateAction<Date | string>>;\n  onChange: (date: Date) => void;\n  onCancel: () => void;\n  labels: {\n    previousYearAriaLabel: string;\n    previousMonthAriaLabel: string;\n    nextMonthAriaLabel: string;\n    nextYearAriaLabel: string;\n    monthsLabels?: Months;\n    weekdaysLabels?: WeekDays;\n    focusedDayAriaLabel?: string;\n    selectedDayAriaLabel: string;\n    todayDayAriaLabel: string;\n    todayLabel: string;\n    todayAriaLabel?: string;\n    cancelLabel: string;\n    cancelAriaLabel?: string;\n    okLabel: string;\n    okAriaLabel?: string;\n  };\n}\n\nexport const DatePickerDropdown: FC<DatePickerDropdownProps> = ({\n  date = new Date(),\n  disabledDates = [],\n  endDate = '',\n  startDate = '',\n  setEndDate,\n  setStartDate,\n  onChange,\n  onCancel,\n  labels,\n  className\n}) => {\n  const isDateDisabled = isDayOnArray(date, disabledDates);\n  let initialDate = new Date(isDateDisabled ? getClosestAvailableDay({ disabledDates }) : date);\n\n  if (startDate && isDayBeforeStartDate(initialDate, startDate)) {\n    initialDate = new Date(startDate);\n  }\n\n  if (endDate && isDayAfterEndDate(initialDate, endDate)) {\n    initialDate = new Date(endDate);\n  }\n\n  const [selectedDate, setSelectedDate] = useState(initialDate);\n  const [focusedDate, setFocusedDate] = useState(initialDate);\n  const [disabledDatesState, setDisabledDatesState] = useState(disabledDates);\n\n  const cancel = () => {\n    onCancel();\n  };\n\n  const managerMemo = useMemo(() => {\n    return {\n      focusedDate,\n      selectedDate,\n      disabledDates: disabledDatesState,\n      endDate,\n      startDate,\n      setFocusedDate,\n      setSelectedDate,\n      setDisabledDates: setDisabledDatesState,\n      setEndDate: setEndDate ?? (() => {}),\n      setStartDate: setStartDate ?? (() => {}),\n      cancel,\n      onChange,\n      labels\n    };\n  }, [selectedDate, focusedDate, disabledDatesState, endDate, startDate, labels, onChange, setEndDate, setStartDate]);\n\n  const wrapperClassNames = classNames(\n    className,\n    'absolute left-0 top-[68px] shadow-bottom-high bg-white p-16 border-2 border-[var(--color-neutral-200)] rounded-4 z-dropdown'\n  );\n\n  const datePickerDropdownContainerRef = useRef<HTMLDivElement>(null);\n\n  const handleKeyDown = useCallback((evt: KeyboardEvent) => {\n    if (evt.key === 'Escape') {\n      evt.preventDefault();\n      onCancel();\n      return;\n    }\n\n    if (evt.key === 'Tab' && datePickerDropdownContainerRef.current) {\n      const focusableElements = datePickerDropdownContainerRef.current.querySelectorAll(\n        'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n      );\n\n      const firstElement = focusableElements[0] as HTMLElement;\n      const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n      if (evt.shiftKey && document.activeElement === firstElement) {\n        evt.preventDefault();\n        lastElement.focus();\n      } else if (!evt.shiftKey && document.activeElement === lastElement) {\n        evt.preventDefault();\n        firstElement.focus();\n      }\n    }\n  }, []);\n\n  useEffect(() => {\n    document?.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleKeyDown]);\n\n  return (\n    <DatePickerStateContext value={managerMemo}>\n      <div ref={datePickerDropdownContainerRef} className={wrapperClassNames}>\n        <DialogHeader />\n        <DialogBody />\n        <div className=\"border-1 border-[var(--color-neutral-300)]\" />\n        <DialogFooter />\n      </div>\n    </DatePickerStateContext>\n  );\n};\n","export const formatDayOrMonth = (number: string) => {\n  if (number === '') {\n    return number;\n  }\n\n  return number.length === 1 ? `0${number}` : number;\n};\n\nexport const isLeapYear = (year: number): boolean => {\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n};\n\nexport const parseDate = (currentDay: number, currentMonth: number, currentYear: number): string => {\n  const newDay = Math.max(currentDay, 1);\n  const monthString = formatDayOrMonth(currentMonth.toString());\n  const yearString = currentYear.toString();\n\n  if (currentMonth === 2) {\n    // 28 or 29\n    if (isLeapYear(currentYear) && newDay >= 29) {\n      return `29/${monthString}/${yearString}`;\n    }\n\n    if (newDay > 28) {\n      return `28/${monthString}/${yearString}`;\n    }\n\n    return `${formatDayOrMonth(newDay.toString())}/${monthString}/${yearString}`;\n  }\n\n  if ([11, 9, 6, 4].indexOf(currentMonth) >= 0) {\n    //  30 days\n    return `${formatDayOrMonth(Math.min(30, newDay).toString())}/${monthString}/${yearString}`;\n  }\n\n  //  31 days\n  return `${formatDayOrMonth(Math.min(31, newDay).toString())}/${monthString}/${yearString}`;\n};\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, FocusEvent } from 'react';\n\nimport { asyncTrigger, createSyntheticEvent } from '@/utils';\nimport './date-text.css';\nimport { parseDate } from '../utils/parse-date';\n\nexport interface DateTextProps extends ComponentProps<'input'> {\n  dayInputPlaceholder?: string;\n  monthInputPlaceholder?: string;\n  yearInputPlaceholder?: string;\n}\n\nconst DateText: FC<DateTextProps> = ({\n  ref = null,\n  className = '',\n  dayInputPlaceholder = '',\n  monthInputPlaceholder = '',\n  yearInputPlaceholder = '',\n  ...props\n}) => {\n  const inputClassNames = classNames('agora-date-input', className);\n\n  const validateDate = (evt: FocusEvent<HTMLInputElement>) => {\n    const targetValue = (evt.target as HTMLInputElement).value;\n\n    //  INVALID DATE FORMAT\n    if (!/\\d{1,2}\\/\\d{1,2}\\/\\d{4}/.test(targetValue)) {\n      evt.target.value = '';\n    } else {\n      const dateParts = targetValue.split('/').map((d) => parseInt(d, 10));\n      evt.target.value = parseDate(dateParts[0], dateParts[1], dateParts[2]);\n    }\n\n    const newChangeEvt = createSyntheticEvent<HTMLInputElement>(evt.target, 'change');\n    asyncTrigger(() => props.onChange?.(newChangeEvt as ChangeEvent<HTMLInputElement>));\n  };\n\n  const handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {\n    // const allowedKeys = ['Backspace', 'Enter', ' ', 'Esc', 'Tab', 'Delete', 'ArrowLeft', 'ArrowRight', '/'];\n    const allowedKeys = [\n      'Home',\n      'End',\n      'Tab',\n      'Shift',\n      'ArrowUp',\n      'ArrowDown',\n      'ArrowLeft',\n      'ArrowRight',\n      'Enter',\n      ' ',\n      'NumpadEnter',\n      'PageUp',\n      'PageDown',\n      'Esc',\n      '/',\n      'Backspace',\n      'Delete'\n    ];\n    const key = evt.key;\n\n    if (allowedKeys.includes(key)) {\n      if (key === 'Enter' || key === ' ') {\n        props.onKeyDown?.(evt);\n      }\n      return;\n    }\n\n    if (!allowedKeys.includes(key) && !/[0-9]/.test(key)) {\n      evt.preventDefault();\n    }\n  };\n\n  return (\n    <input\n      {...props}\n      className={inputClassNames}\n      ref={ref}\n      type=\"text\"\n      placeholder={`${dayInputPlaceholder}/${monthInputPlaceholder}/${yearInputPlaceholder}`}\n      onKeyDown={handleKeyDown}\n      onBlur={validateDate}\n    />\n  );\n};\n\nexport { DateText };\n","import React, {\n  ChangeEvent,\n  ComponentProps,\n  Dispatch,\n  FC,\n  KeyboardEvent as ReactKeyboardEvent,\n  ReactNode,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useRef,\n  useState\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, FeedbackState, Months, WeekDays } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, getDateString, stringToBoolean } from '@/utils';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { DatePickerDropdown } from './date-picker-dropdown';\nimport { DateText } from './date-text/date-text';\nimport { parseInputDate } from './utils/parse-input-date';\nimport { HelperText } from '@/components/shared/helper-text';\n\nimport './input-date.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\n\nexport interface InputDateProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Array with the dates to be considered disabled.\n   */\n  disabledDates?: Array<Date | string> | [];\n  /**\n   * Date to be considered the first one available to be selected. All dates before, are disabled.\n   */\n  startDate?: Date | string;\n  /**\n   * Date to be considered the last one available to be selected. All dates after, are disabled.\n   */\n  endDate?: Date | string;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedbackText is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * The placeholder to apply in the input day part\n   */\n  dayInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input month part\n   */\n  monthInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input year part\n   */\n  yearInputPlaceholder?: string;\n  /**\n   * Accessible text to apply to the trailing calendar icon.\n   */\n  calendarIconAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker previous year button.\n   */\n  previousYearAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker previous month button.\n   */\n  previousMonthAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker next month button.\n   */\n  nextMonthAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker next year button.\n   */\n  nextYearAriaLabel: string;\n  /**\n   * Labels for each month.\n   */\n  monthsLabels?: Months;\n  /**\n   * Labels for each weekday.\n   */\n  weekdaysLabels?: WeekDays;\n  /**\n   * Accessible text to identify the current focused day.\n   */\n  focusedDayAriaLabel?: string;\n  /**\n   * Accessible text to identify the current selected day.\n   */\n  selectedDayAriaLabel: string;\n  /**\n   * Accessible text to identify the highlighted today day.\n   */\n  todayDayAriaLabel: string;\n  /**\n   * Label for the date picker today button.\n   */\n  todayLabel: string;\n  /**\n   * Accessible text for the date picker today button.\n   */\n  todayAriaLabel?: string;\n  /**\n   * Label for the date picker cancel button.\n   */\n  cancelLabel: string;\n  /**\n   * Accessible text for the date picker cancel button.\n   */\n  cancelAriaLabel?: string;\n  /**\n   * Label for the date picker ok button.\n   */\n  okLabel: string;\n  /**\n   * Accessible text for the date picker ok button.\n   */\n  okAriaLabel?: string;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nexport const callbackWith = (setInputWrapperHovered: Dispatch<React.SetStateAction<IconSetState>>, value: IconSetState) => () => {\n  setInputWrapperHovered(value);\n};\n\nconst InputDate: FC<InputDateProps> = ({\n  ref = null,\n  className,\n  label,\n  hideLabel,\n  disabledDates = [],\n  startDate = '',\n  endDate = '',\n  required = true,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  hasHelperText,\n  helperText,\n  darkMode,\n  hasIcon,\n  icon,\n  dayInputPlaceholder,\n  monthInputPlaceholder,\n  yearInputPlaceholder,\n  calendarIconAriaLabel,\n  previousYearAriaLabel,\n  previousMonthAriaLabel,\n  nextMonthAriaLabel,\n  nextYearAriaLabel,\n  monthsLabels,\n  weekdaysLabels,\n  focusedDayAriaLabel,\n  selectedDayAriaLabel,\n  todayDayAriaLabel,\n  todayLabel,\n  todayAriaLabel,\n  cancelLabel,\n  cancelAriaLabel,\n  okLabel,\n  okAriaLabel,\n  value,\n  defaultValue,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  useImperativeHandle(ref, () => {\n    return innerInputRef.current as HTMLInputElement;\n  }, [innerInputRef.current]);\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const [currentValue, setCurrentValue] = useState<string>(value?.toString() ?? defaultValue?.toString() ?? '');\n\n  const lastValueTriggered = useRef<string>('empty');\n  const [trigger, setTrigger] = useState(+new Date());\n\n  const [overlayVisible, setOverlayVisible] = useState(false);\n\n  const showOverlay = () => {\n    setOverlayVisible(true);\n  };\n\n  const hideOverlay = () => {\n    setOverlayVisible(false);\n    innerInputRef.current?.focus();\n  };\n\n  const toggleOverlay = () => {\n    if (overlayVisible) {\n      hideOverlay();\n    } else {\n      showOverlay();\n    }\n  };\n\n  const handleOnDismiss = () => {\n    hideOverlay();\n  };\n\n  //  HANDLE INPUT DATE KEYDOWN\n  const handleInputDateKeydown = (evt: ReactKeyboardEvent<HTMLInputElement>) => {\n    if (stringToBoolean(propsClone.disabled) || stringToBoolean(propsClone.readOnly)) {\n      return;\n    }\n\n    if (evt.code === 'Space' || evt.code === 'Enter' || evt.code === 'NumpadEnter') {\n      evt.preventDefault();\n      showOverlay();\n    }\n\n    propsClone.onKeyDown?.(evt);\n  };\n\n  const handleDatePickerCancel = () => {\n    handleOnDismiss();\n  };\n\n  const triggerOnChange = (last: string) => {\n    if (last !== lastValueTriggered.current) {\n      lastValueTriggered.current = last;\n      setTrigger(+new Date());\n    }\n  };\n\n  //  HANDLE CLICK OUTSIDE DIALOG\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (!overlayVisible) {\n        return;\n      }\n\n      if (!wrapperRef.current?.contains(event.target as HTMLDivElement)) {\n        handleOnDismiss();\n      }\n    };\n\n    document.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document.removeEventListener('click', handleClickOutside);\n    };\n  }, [overlayVisible]);\n\n  //  HANDLE ESCAPE\n  useEffect(() => {\n    const keydownHandler = (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        handleOnDismiss();\n      }\n    };\n\n    wrapperRef.current?.addEventListener('keydown', keydownHandler);\n\n    return () => {\n      wrapperRef.current?.removeEventListener('keydown', keydownHandler);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (defaultValue) {\n      return;\n    }\n\n    setCurrentValue(value?.toString() ?? '');\n    triggerOnChange(value?.toString() ?? '');\n  }, [value]);\n\n  const onOverlayChangeHandler = (date: Date) => {\n    handleOnDismiss();\n\n    const dateString = getDateString(date);\n    setCurrentValue(dateString);\n    triggerOnChange(dateString);\n  };\n\n  const onInputDateChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentValue(evt.target.value);\n    triggerOnChange(evt.target.value);\n  };\n\n  useEffect(() => {\n    if (innerInputRef.current) {\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n  }, [trigger]);\n\n  const dropdownDatePickerLabels = {\n    previousYearAriaLabel,\n    previousMonthAriaLabel,\n    nextMonthAriaLabel,\n    nextYearAriaLabel,\n    monthsLabels,\n    weekdaysLabels,\n    focusedDayAriaLabel,\n    selectedDayAriaLabel,\n    todayDayAriaLabel,\n    todayLabel,\n    todayAriaLabel,\n    cancelLabel,\n    cancelAriaLabel,\n    okLabel,\n    okAriaLabel\n  };\n\n  const wrapperClassNames = classNames('agora-date-picker', className, {\n    'has-value': currentValue.length > 0,\n    'disabled': stringToBoolean(propsClone.disabled),\n    'read-only': stringToBoolean(propsClone.readOnly),\n    'dark-mode': stringToBoolean(darkMode),\n    'has-error': stringToBoolean(hasError)\n  });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-date-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-date-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n      {/* Label */}\n      <label hidden={!!stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"input-date-label\">\n        {label}\n      </label>\n\n      {/* Input wrapper */}\n      <div\n        role=\"presentation\"\n        className=\"input-wrapper\"\n        onMouseEnter={callbackWith(setIconState, 'hover')}\n        onMouseLeave={callbackWith(setIconState, 'default')}\n        onKeyDown={callbackWith(setIconState, 'active')}\n        onKeyUp={callbackWith(setIconState, 'default')}\n      >\n        {/* Input Leading Icon  */}\n        {hasIcon && (\n          <div className=\"input-leading-icon\">\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden className=\"leading-icon-hover\" state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n\n        <DateText\n          ref={innerInputRef}\n          id={propsClone.id}\n          dayInputPlaceholder={dayInputPlaceholder}\n          monthInputPlaceholder={monthInputPlaceholder}\n          yearInputPlaceholder={yearInputPlaceholder}\n          onKeyDown={handleInputDateKeydown}\n          value={currentValue}\n          onChange={onInputDateChange}\n          disabled={propsClone.disabled}\n          readOnly={propsClone.readOnly}\n          required={isRequired}\n          aria-describedby={inputAriaDescribedBy}\n          name={props.name}\n        />\n\n        {/* Input Trailing Icon  */}\n        <button\n          type=\"button\"\n          disabled={!!propsClone.disabled || !!propsClone.readOnly}\n          onClick={toggleOverlay}\n          className=\"input-trailing-icon\"\n          aria-label={calendarIconAriaLabel}\n        >\n          <IconSet state={currentIconState}>\n            <IconItem aria-hidden className=\"icon-calendar-default\" state=\"default\" name=\"agora-line-calendar\" />\n            <IconItem aria-hidden className=\"icon-calendar-hover\" state=\"hover\" name=\"agora-solid-calendar\" />\n          </IconSet>\n        </button>\n\n        {overlayVisible && (\n          <DatePickerDropdown\n            className=\"date-picker-dropdown\"\n            labels={dropdownDatePickerLabels}\n            date={parseInputDate(currentValue)}\n            disabledDates={disabledDates}\n            startDate={startDate}\n            endDate={endDate}\n            onChange={onOverlayChangeHandler}\n            onCancel={handleDatePickerCancel}\n          />\n        )}\n      </div>\n\n      {/* Helper Text */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-date-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-date-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputDate };\n","import { Button } from '@/components/button';\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { FeedbackState } from '@/models';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useCallback, useId, useState } from 'react';\n\nimport './input-email-bar.css';\n\nconst EMAIL_REGEXP = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport interface InputEmailBarProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Callback to execute when the user clicks on the send button.\n   */\n  onSendHandler?: (email: string) => void;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n}\n\nconst InputEmailBar: FC<InputEmailBarProps> = ({\n  ref = null,\n  className,\n  hideLabel,\n  label,\n  hasFeedback,\n  feedbackState = 'info',\n  darkMode,\n  feedbackText,\n  hasError,\n  errorFeedbackText,\n  hasHelperText,\n  helperText,\n  onSendHandler,\n  pattern = EMAIL_REGEXP,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const [email, setEmail] = useState<string>('');\n  const [isValidEmail, setIsValidEmail] = useState<boolean>(false);\n\n  const handleChangeEvent = useCallback(\n    (evt: ChangeEvent<HTMLInputElement>) => {\n      const { value } = evt.currentTarget;\n      setEmail(value);\n      setIsValidEmail(new RegExp(pattern).test(value));\n      onChange?.(evt);\n    },\n    [onChange, pattern]\n  );\n\n  const onSendButtonClick = useCallback(() => {\n    if (onSendHandler && new RegExp(pattern).test(email)) {\n      onSendHandler(email);\n    }\n  }, [onSendHandler, pattern, email]);\n\n  const inputWrapperClassNames = classNames(\n    'agora-input-email-bar',\n    { dark: stringToBoolean(darkMode) },\n    {\n      'flex flex-col': !propsClone.hidden,\n      'input-disabled': !!propsClone.disabled,\n\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n  const labelSectionClasses = classNames('input-label-wrapper flex items-end', {\n    'mb-16': label && !stringToBoolean(hideLabel),\n    'justify-end': !label || stringToBoolean(hideLabel),\n    'justify-between': label && !stringToBoolean(hideLabel)\n  });\n  const labelClasses = classNames('agora-input-email-bar-label', { dark: stringToBoolean(darkMode) });\n  const inputContainerClassNames = classNames('agora-input-email-bar-container', {\n    disabled: propsClone.disabled\n  });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-email-bar-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-email-bar-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClassNames}>\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} className={labelClasses} htmlFor={propsClone.id}>\n          {label}\n        </label>\n      </div>\n\n      <div className={inputContainerClassNames}>\n        <input\n          {...propsClone}\n          className=\"flex-grow-[1] outline-none\"\n          ref={ref}\n          type=\"email\"\n          disabled={!!propsClone.disabled}\n          onChange={handleChangeEvent}\n          aria-describedby={inputAriaDescribedBy}\n        />\n\n        <div className=\"actions-container\">\n          <Button\n            className=\"magnifier-icon\"\n            appearance=\"solid\"\n            iconOnly\n            hasIcon\n            leadingIcon=\"agora-line-plane\"\n            leadingIconHover=\"agora-solid-plane\"\n            aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n            onClick={onSendButtonClick}\n            disabled={!isValidEmail}\n          />\n        </div>\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-email-bar-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-email-bar-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputEmailBar };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-number.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { callbackWith } from '../input-date/input-date';\n\nexport interface InputNumberProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Label text for increase button. Recommended for accessibility.\n   */\n  increaseButtonAltText?: string;\n  /**\n   *  Label text for decrease button. Recommended for accessibility.\n   */\n  decreaseButtonAltText?: string;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputNumber: FC<InputNumberProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  increaseButtonAltText = 'increase',\n  decreaseButtonAltText = 'decrease',\n  hasFeedback,\n  feedbackState,\n  darkMode,\n  feedbackText,\n  errorFeedbackText,\n  hasIcon,\n  icon,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange, min, max, defaultValue } = propsClone;\n\n  const inputWrapperRef = useRef<HTMLInputElement>(null);\n\n  const [currentValue, setCurrentValue] = useState(propsClone.value);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const hasCurrentValue = currentValue && currentValue.toString().length > 0;\n\n  const hasDefaultValue = defaultValue && defaultValue.toString().length > 0;\n\n  /**\n   * Local onChange event handler. This functions enforces the max char limit.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n\n    setCurrentValue(value);\n\n    onChange?.(evt);\n\n    if (max === parseFloat(value.toString()) || min === parseFloat(value.toString())) {\n      const inputElem = inputWrapperRef.current?.querySelector('input');\n      if (inputElem) {\n        inputElem.focus();\n      }\n    }\n  };\n\n  const [isHovered, setIsHovered] = useState(false);\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-number-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': !!propsClone.disabled,\n        'is-hovered': isHovered,\n        'has-error': stringToBoolean(hasError),\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-number',\n        {\n          'has-leading-icon': hasIcon, // allowing only solid family icon\n          'has-value': hasCurrentValue || hasDefaultValue\n        },\n        className\n      ),\n\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  /**\n   * Execute stepUp locally and execute update value\n   */\n  const handleStepUp = () => {\n    const inputElem = inputWrapperRef.current?.querySelector('input');\n\n    if (inputElem) {\n      inputElem.stepUp();\n      inputElem.dispatchEvent(new Event('change', { bubbles: true }));\n    }\n  };\n\n  /**\n   * Execute stepDown locally and execute update value\n   */\n  const handleStepDown = () => {\n    const inputElem = inputWrapperRef.current?.querySelector('input');\n\n    if (inputElem) {\n      inputElem.stepDown();\n      inputElem.dispatchEvent(new Event('change', { bubbles: true }));\n    }\n  };\n\n  /**\n   * Sets the correct hoovering state of the component\n   */\n  const handleMouseHoovering = (isHover: boolean) => {\n    setIsHovered(isHover);\n  };\n\n  const labelClasses = classNames('input-number-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-number-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-number-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div\n        role=\"presentation\"\n        className=\"input-wrapper flex relative items-center\"\n        onMouseEnter={callbackWith(setIconState, 'hover')}\n        onMouseLeave={callbackWith(setIconState, 'default')}\n        onKeyDown={callbackWith(setIconState, 'active')}\n        onKeyUp={callbackWith(setIconState, 'default')}\n        ref={inputWrapperRef}\n      >\n        <input\n          {...propsClone}\n          type=\"number\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-busy={stringToBoolean(hasFeedback) && feedbackState === 'loading'}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && (\n          <div className={leadingIconWrapperClasses}>\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n\n        {/* Steps controls */}\n        <div\n          className=\"input-number-controls\"\n          role=\"presentation\"\n          onFocus={() => {}}\n          onMouseOver={() => handleMouseHoovering(true)}\n          onMouseLeave={() => handleMouseHoovering(false)}\n        >\n          <button\n            disabled={min === parseFloat(currentValue?.toString() ?? '0') || !!propsClone.disabled || !!propsClone.readOnly}\n            type=\"button\"\n            onClick={handleStepDown}\n            aria-label={decreaseButtonAltText}\n          >\n            <IconSet state={currentIconState} className=\"flex justify-center items-center\">\n              <IconItem state=\"default\" name=\"agora-line-minus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n              <IconItem state=\"hover\" name=\"agora-solid-minus-circle\" aria-hidden className=\"icon-step icon-step-hover\" />\n              <IconItem state=\"active\" name=\"agora-line-minus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n            </IconSet>\n          </button>\n          <button\n            disabled={max === parseFloat(currentValue?.toString() ?? '0') || !!propsClone.disabled || !!propsClone.readOnly}\n            type=\"button\"\n            onClick={handleStepUp}\n            aria-label={increaseButtonAltText}\n          >\n            <IconSet state={currentIconState} className=\"flex justify-center items-center\">\n              <IconItem state=\"default\" name=\"agora-line-plus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n              <IconItem state=\"hover\" name=\"agora-solid-plus-circle\" aria-hidden className=\"icon-step icon-step-hover\" />\n              <IconItem state=\"active\" name=\"agora-line-plus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n            </IconSet>\n          </button>\n        </div>\n      </div>\n\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-number-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-number-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputNumber };\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useRef, useState } from 'react';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-password.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\n\nimport { callbackWith } from '@/components/input-date/input-date';\n\nexport interface InputPasswordProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n\n  /**\n   * Highlight the input indicating some error.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Alternative text for toggle password/plain text icon button.\n   *\n   * show: aria-label for when the password is hidden;\n   *\n   * hide: aria-label for when the password is visible;\n   */\n  togglePasswordAltIconText?: {\n    show: string;\n    hide: string;\n  };\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputPassword: FC<InputPasswordProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState,\n  errorFeedbackText,\n  darkMode,\n  feedbackText,\n  hasIcon,\n  icon,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  togglePasswordAltIconText,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const inputWrapperRef = useRef<HTMLInputElement>(null);\n\n  const [showPassword, setShowPassword] = useState(false);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const toggleAriaLabel = togglePasswordAltIconText?.[showPassword ? 'hide' : 'show'];\n\n  /**\n   * Show/Hide password\n   */\n  const handleTogglePassword = () => {\n    if (!propsClone.disabled && !propsClone.readOnly) {\n      setShowPassword(!showPassword);\n\n      if (inputWrapperRef?.current) {\n        inputWrapperRef.current.querySelector('input')?.focus();\n      }\n    }\n  };\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames(\n        'agora-input-password-wrapper',\n        { dark: stringToBoolean(darkMode) },\n        {\n          'flex flex-col': !propsClone.hidden,\n          'input-disabled': !!propsClone.disabled,\n          'has-error': stringToBoolean(hasError),\n          'has-feedback': stringToBoolean(hasFeedback),\n          ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n        }\n      ),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-password',\n        {\n          'has-leading-icon': hasIcon, // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-password-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-password-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-password-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div className=\"input-wrapper flex relative items-center\" ref={inputWrapperRef}>\n        <input\n          {...propsClone}\n          type={showPassword ? 'text' : 'password'}\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          readOnly={!!propsClone.readOnly}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-busy={stringToBoolean(hasFeedback) && feedbackState === 'loading'}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n          onKeyDown={callbackWith(setIconState, 'active')}\n          onKeyUp={callbackWith(setIconState, 'default')}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && (\n          <div className={leadingIconWrapperClasses}>\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n\n        {/* right trailing icon */}\n        <button\n          type=\"button\"\n          className=\"input-btn-toggle bg-transparent\"\n          onClick={handleTogglePassword}\n          aria-label={toggleAriaLabel}\n          disabled={propsClone.disabled ?? propsClone.readOnly}\n        >\n          <IconSet state={currentIconState}>\n            <IconItem state=\"default\" name={`agora-line-${showPassword ? 'eye-off' : 'eye'}`} aria-hidden className=\"icon-eye-default\" />\n            <IconItem state=\"hover\" name={`agora-solid-${showPassword ? 'eye-off' : 'eye'}`} aria-hidden className=\"icon-eye-hover\" />\n            <IconItem state=\"active\" name={`agora-line-${showPassword ? 'eye-off' : 'eye'}`} aria-hidden className=\"icon-eye-default\" />\n          </IconSet>\n        </button>\n      </div>\n\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-password-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-password-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputPassword };\n","import { CountryPhoneProps } from '../country-phone.model';\n\nconst FlagsList: CountryPhoneProps[] = [\n  {\n    country: 'Afghanistan',\n    code: '93',\n    iso: 'AF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3REQwQzQwNjE3NTMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3REQwQzQwNzE3NTMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdERDBDNDA0MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdERDBDNDA1MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+duaIkQAAAalJREFUeNpiZMAN2BkYVjMwyDIwfMCQ4mNgeM3K4DEFj24GJgaagaFpNAuR6v4yMPwDO4SRaOcQZfQfBgZOCQkOSclfb978/fbt59u3/6li9G+guTIy/EZGTOycbDJyrIIC3+7e/XX0CMgXZIc1I9hcPnstsbzA94ePfH/x+N//n683b+ILNBGw0v3zlwKjIYErGub94dhpJi5u3Q1rtFcuZeYTerNtj3CwJxMjBQECdBaXoRybhCzLFy6eQJuHPW1/P30W9Db9fuMlh6QSt706A8NNMl0NNJpNVIrHyIyDR/DV4UOMivxf3tx/vnM7p4gor5kFh7gs+QEC9NG38ze+3jz7m+Mrv6i2oKGtTGo6v7jOr3/vP1878fXcNfIDBCj39fWHdyt2K/Q3vpy05FFWCwMTE6+NrnhR3PvyCZ9vP6Mo8bEyMLxZsOkTD4tkaga/vvXvt285rdSeT5n1dckaFkrS9X+w9F+Gf8+nrPl9+Q2LkMD/f//+rd/4es8ePoZ/LKyUZZn/YIczMzC8PHgALsgGFvxPeW78D8477BiCw7RQpaHRAAEGAEWfj+c8VB1nAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Albania',\n    code: '355',\n    iso: 'AL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0NTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0NjE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdERDBDNDA4MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMUFEMjQ0MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GPq/agAAAiRJREFUeNrEVb9rFEEUfm9m9nb3bhNz50UMClopRAsFrUURW1tBrSzsLPwfbPwDbGz8F8QiIkLAKiCkUIKiGBEFwXAhd7fZH7Mz83zZtbC4TdyF4LDF8N7ON9/73jczuN4/A4czBBzaqIUmAA+Q0wjQRzkUCsv4USEHKKs4/0DtWOdAgxLxrUk+mqyHIkLx2eg1k1gA3kwDtYFeFOqVnj5NRwXQip7eGG9+svlPV1wff3mejwuiZ9n2i3zCRWANAta1kaFX9OS1jkdkHdGyCt6blMmel8E3p1OgY6iueL2b/pEtZ5qx5kRCLIhMyK4WMQFt2HzdpEzypZ5OnOVUSoT1gqi6BOvA7ZoDUan5JB3BXxPeOALBahigxloLQO4SFy5hBjMOpuA0zc4ebL4OYExuZl0dxNiRh63MZ4jYXjzJiG77/cuqW8UvqvBO0Ge+jjsplKHmgrCIIeICyke9pXPKZ+kvqPCS1+X6T4vO42iJN/YB22jNIo6cYWN9dfqdya560TxKruKaF32w2abVW2VWtNCa6fRQnpTeD1vcD4anZOdNEa8VCZN9EA6/2+KE9Ob3dUit+XbJHRfqXjBgTZjYhk3nUDAQN/CsDJbDYIfcbvlhU+hqQUpuSo6tcstfYMp8q9z1+7+cyfZMuUe4zZGp/GfLxRm4bbIPu4scYbIJOO6EO+hSVf9y8zLQmGxUKrNDRu7HtSH0n+NHrpr8/1fmtwADAEjB+xzEjgF0AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Algeria',\n    code: '213',\n    iso: 'DZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNDgwMTE3NDA3MjA2ODExODIyQUY5NTY0OTkxRjRDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0QTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0OTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDQ4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDQ4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5FFcD/AAACLUlEQVR42sSWQWsTURDHf283dTdZQ9qCVWhQD2JrRCmEaqUoarEQi3c/QEDx2ByqtwgSUTx5EvINPHlQRLRYsViqHgQRVGopRpo2kKbppk26SbO+3UDBk5uY2mEXdh7s++1/5s3MClJDNi1a/daMLaDU5GtBeS/6+AcT7uVu1KwFFXbJmldstwfsXXFdEoWM7P4AGJt0qTqlpcUdBjtQTYUeP6c+LjOd+srKzSnq/RHMWIzNdBpqtR0Aq1Jpt07i8Ryzj74wmCtz72yY4qunBO/edyNRnZxsc46dnEqlo++yPHjx0106Ej9E5kqUGwNRuYMfbeAE9VwO2zQRwWCbFDtqq3Wuzyy77p0LvWTO9WLMm9ReT8Hnb2wkkwi/3zPUm2KZWy1fIbqw5rpv+jply7DoCPdRz+exRy+z4SgwDPREQj4o7cuxsBudYruabGdBQfh829Vll8uN9bYdLmuLSrfGp4ONMA7/kMqDGrVfGQgYKNPvCUxMoI+Py7SobQTXpApdJX26x3Vvv8ywbzZL6bBBx6UR+SWDBFIpqFSw19c9g1VGwsm/NWTKW3w/1gVmlfMLJtc+rGKvWpwcjhFas7CeP8MuFFAjEa9cS3iaTk4D8ctzGNrDxbdZHj6Z53jRohjqRJwZQhsbQ4vHZWR0r2BTeB6LDtynuDVNYYUDpb3MXU1jHO1vpWOa3oeEIhrwrFM8Oku+WqvQFqeT+N/Tadfn8Z9tvNVfH/O3AAMACcCyb9iaq58AAAAASUVORK5CYII='\n  },\n  {\n    country: 'American Samoa',\n    code: '1-684',\n    iso: 'AS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0RDE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0RTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMUFEMjRCMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMUFEMjRDMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+O7eQxAAAAhJJREFUeNrslD9oE1Ecx7/v7l2TXpLGWNrGioJDO4ogLkJBhA6iFDpUOhc6ODiKBUWcBJ1bKLaCIIJOjl0ypDh1rFDQyUH6R1HitaRpcvfu+X0XHWp6TWkCGdof3D3evR/3+f35vp/AtafrADI4yLQGlEZ+oAdCCGxtedC2ADeNvnYXUv4uCl8LOM/1N/eHmeQz2PDV/FcZaAjx3cP7V1PIppO4OvoCyk0AFh3SXEON45oB7+zL+F82P7frSfem8eRlEUnHRki4m3MhCN4t16CNrzg+eL8FCsKr4NHMbfhBiOezBSwvfWIEiCrw+MEtjFy5iJsTc/BTLKcj2wSmWQRcHsqjsudDVJhZf0/9YL2Etwzi4+o3BC6h0m6p1P+JxILKZ3H3/puo2WIwBxAuux3cm7mD+XcrWCt+Bi71RRVoHxj1kiLhRCLSvgJKZQRlibUvm3CZqXcu2xI0HmyMYgKh3Wzu5PQNmFu0uLBMNSdbVnQdbDvxpzWNih/i2cMxnKXb6w+rCKoBO8B47cZ7XFZ+pMGjCF06QTX+lPqxQoXxqXkkuiSkqkEkLSq/euCwSalqBD1KE0Sx9/p27OTiPdXs88YPD4q5XOg7A2GmmW4sszZC5DvH4Cyuuknecqi20zS64czfcbbnxTuZeOhSshPM2IqCOBT8i47ttmbQaFagQ3YKPhngTCfAZlZvdAL+R4ABAI7lqpHANxKvAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Andorra',\n    code: '376',\n    iso: 'AD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUI4NkFBODE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUI4NkFBOTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRBQjg2QUE2MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRBQjg2QUE3MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lPUISQAAAfFJREFUeNrUlFtrE0EUx8/ZS7KXpJLNxiQ0biSt1hTFO4qCvgl+AF98EV/9Nr4UP4ePUuijFLzUait5iDZVm2a3NE22JNntzhx3i0WkWmWCoH+YeZlzfjNz/mcGr8McHBIDyYOJj/wRYI+1CocDZCeM5xX9spxjqBD8TBL8Nf0DaMTv8x9K+S1TTo+IVKBAUndpL4OYwtgLwPHRfLCTlTN9d+vCdrueKzaK9hIfGnp5F0gRRB+4Li0uPaRek5ixrdy2e2ZztYo4eWvqiSTHQSiCxm9X1qPGRu51JX+zf7z9WPmiD9VS/64/DLOm7h9dlV/aKEPSuZute4FvTd8AZ/Zces22vKbdXQ0j/V3jQXIuJRArSLIrDlysnfQ6nzpPYXRFxY4FWS2KdF1eS3zgMgqg+f5SsfwK9qZT7gK2AvVOhswoU+lq2C3lXyQxTJEhEuhrHg9/p45mBUxL0izkplEixgqcKpvupSRZ4mM0X0SD0Fmu3T92tmtonBmSu573PXvy9GJSNAIUQidZ2ann52dSAamfvWtbG/U0X6memNero9rM8oEfXPTUGJy6+CxOn3i/3m5fLVdeOrNvgCOkNKD0uA+d+QVEyTnzwam/JW7wXomAy7nwh4clhN4HEGcDE9EkgiMqIP6pEv13/7WAvgowAA7uuJg3MwVHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Angola',\n    code: '244',\n    iso: 'AO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUI4NkFBQzE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUI4NkFBRDE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRBQjg2QUFBMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRBQjg2QUFCMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HdsdLgAAAZ1JREFUeNpiPCeoxkAbwMRAMzCYjP7/i+H/XwYGRqoazcjM8Pcb45+vTP++Mf7/Tdh0Yo1mZGL4/oZZ0O+X2dfXonE/vn9mIeh2JiLd+/sdEzPb/x+3mF/0csn3fVWf+fHHR5b/PxnxmM5CjNF/PjKyS/2V7f365w3jrRz+d5vYNHZ+lDrx9c1CDiZmkMU4jebHJQnxFyPD99+Mf34wCNr+Y+D9/3Pa3zdneL7M/CNe8v3rfG4uYMQy/sfU9fH/X5DRr/79wWP0v98MfAoMXwX+bjRjV5Jl/v7230+GH9fXMpl5MrMY/H54gZFDAIvR7IzgkAK6Gg8CultFmuXjFXEfA6ATGXhBIoxOeuxPzgurKwNdxoRDF9Fg6Ry+//8lzMyhehrruB9cFaVa7koK4Xh1UjQ2gFOIj/HJRbHidG4qGLptjsCqSfxARrAH+6tTok+PiGydLUA4yRJjdFESV1Mhz49/DH9+/582/9upy79drNjuPPw7Y/l36gSIoRaLkTY0H3CwM66dyt+Yx02Tgk1chCnAlZ1hFBANAAIMABE9jLBld63JAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Anguilla',\n    code: '1-264',\n    iso: 'AI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzYwMTE0QkMxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REFCODZBQjAxNzZGMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOEI3QjgwQ0VBMDNEMDkyMkUxQTdFMDM0NUEwRTZDQzEiIHN0UmVmOmRvY3VtZW50SUQ9IjhCN0I4MENFQTAzRDA5MjJFMUE3RTAzNDVBMEU2Q0MxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/LHIVAAAA2lJREFUeNrsVGtoU2cYfr4kzdWk6QWSpqm1c6K0NnVOizhveNkPnXW0tUzdiMIo24QxW+oNJoj+qbIh+kNRweCFgsNg7RgFNwvtVi0FkzXepjPudK1r056Yk6RpknNOzr5zmq0w9kMq7tcezo/z3Z73ed/n/T4yuG9PyZa1Fx6aD3vuMj23AEfbgUUfXPrsh22t609w4KO55nTTgsShXW9yjvLS3Xe4YZZAh5eAanbrYOOWU++x3b6mkuOtbsfSivCEBBGspM9zmj9fyPqbbS1frDjKVTqPj3HDIYIcvBzIhx97BIt1dUHCbWYM9ZtjRRXMZa/orlOduWgsmzM39hibar3+5Ddnv02FIt91PkvzKUBDD8rxIdAfIAFoqUr6KQllstRSlR2CyEYzTDQjcC9sVn0ynhwXYAUMZk280Mk/H7VrksVv2NIqfdG9VWExl4CyS85SXqsWUiioXjPf/xMjJEasedpAgK6QKWqNr3jZeCgSFlJVtcvzJ0Imdigs6jI3OnM3rHEudzFdfRFHSX/uHCb6R8agE1Q5EKlSSGDdH1UfOeJODPUZTc8nSYPWUuL1ft+w9QpQPMWtWXy3wlX3zt6dSxZUTKY7bp4M5rvmFbpudT6paexZt7VuD1fq73rQHvz0fvVAzAS+T5FMCyLwKRNgN/7enh58YFhRCOviKN0grxI5NK3OmeYlvk3xHQOes+82VX3S3XLAn/QH7DboRga3l+9ftPG057Fh21rHz5ujx3Q/ag1JKWtjTlyg57uTBaszDT2pgBejh8ITdN70t40aa2j0q3PX2yLFPnY2xAjAXu0lv45X/XKbg1H9sLd/V6/v65qa3SsXmnW/qcVJaoEiioxx1Dq9/tF58BzsldBPDA/FaUiiSIYi/n3ay0oidCBnKiENFAGjRDZdJ8mOhxU6OikSpSskpErLdMHgl6qBNhhssFXC8pbL1RwIjBDMyqoGbJSOQK0M6Xm1ootD9l5kFE/yFSVpklVDYWCeBeuPdYztbXnxBBYLHJ72QOA+UDbdfASNmBEkWf6I+dr+WO1Kdf9T9YZ9ac5IYMRfBVETvD0zaqV6mryO/nKeSR3siIV4gLZ8ZnrDjFVPKZOQVJywALOIfD+nocErgbqaI8lu4R+8r049beu/vHx4bfif+r+j/lOAAQAGyVcqpoR/+gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Antarctica',\n    code: '672',\n    iso: 'AQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjAxMTRCRjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjAxMTRDMDE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEJEMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEJFMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SFAcWAAAAxRJREFUeNqkVutLU2EY/52zc7a5i1te5r2lUFpiYl+CMsjoQ/QPRGYFUZAQ4WfBT0VEn6JPBSFGQZcPCQVS9EGswBAy7GagYuqWTp24zTnnzqXnfb3g1M3D/I2Xc3nfZ7/n/hzhWFu/H0AxrQgMQKCl6iv3ooBM4KT1T1q9wYZrSpglAdPhBOYWEpBNIhaWVDisJpTkWECP0HXj5JLRk4x0aCrGSW6fK4fNbEKQFOgfjeDZpwA/k59tJkVEUkLYUYktxEyAyZiElesaZiMJePOsaL9ehcrirPX3jcc9uFBfgC9DYXT0BDAxuwSJhMtyrSSvp1QgiZjFLKHp5EoFbrsEC1mprQpOhxK4eqooiXQNdfscqPXa0XSiAAN/F/DgnZ97J0sWIaTIA3HjQ5AIj5Q70XK2FCOBGCaCcVJGgErsCmVUdak9pevYOSfFu77KhbvnK7ilcUVLfX7jg0wu+u2PorHeg+62WrLOhl++KL6PR3F0fzb/UyPw5ltQnm9FlJLPUIxdNoksXULz4yE8v3kQ71sPo717ir8/XeOGVRYNEbPkysuWER5R+XW7OCcRM5d66CCz8ill6kWK2ZWGwoyKleVLLK6thGob5i0mOCwmrkDLk2H8mIgiUzy6dgA3zpTAPxeHvlOMGRQiTSg6Th5yo6bMjt2AxTkcUyAaIWZYXFbTZrBRlOSYqSxlJFTdGHGh24y3X4N42TuzK2IrdTdxUyNKS2wngRC56E7nGOajSsbE97t8vP5ZuzVEzOJc4JIRW9bQ8TGQEennPyEM+haR45B2LqekDfJRrlPGvTfj6OybwSUqLYlGEBsKFR4r6qjDsf3qUtu28rdej2FZ1aj2pfW2a4iYHWajjpGwAdH6YpT3XUau0eYklcnlhiJ0NFdukX34YRI/qRT30lDRdIPTafOkYnBT52JrDSxLbRYRTdRaN6Pr2xwNCR/2UDZLIjIjTteVPC4zXlHW99I4ZF4ZGIvyidQ3HOFxZUtR9bS9OrL69RExSszmLfv1DM4jtKjwDyI2YLLMIrnXwi1NQ8q5/gswAJWJHoEWuWKnAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Antigua and Barbuda',\n    code: '1-268',\n    iso: 'AG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjAxMTRDMzE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjAxMTRDNDE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEMxMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEMyMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VJu1tQAAA/pJREFUeNq8ll1oW2UYx3/nnJyk+W7SjqZZ25VORjvQSSdKLV5UL0ScugsvRKs4FCui6C7aiyHaqw0KMnFgy/BKvRG7KQgiDmGC1SGb7cZWW+0Xa5uadWnXNEvzcT58T9qUpk26gOADL+fwfP3f5/k/73uOdNThn/82vRIGVvl/xPuk3Rthpqol3qQ4TKEoazkdUu4Z8Mlm0C8X6MpZtbJqjgWb43KVZGPAU3fPbUrS+vOxwyqhKpnWB2w80qpS5ZPoeFgt8NlN+r11NMgqtjE9xRN2D33uWnruLpQMOHxQJbZsoCnQ1elCy5pIMrS22Lg2oRGulmkIK1y6li2Zo9cd4hm7j2FtDZuMxJ9airede7ikJTmfXtlRqSmadPlGloEPvERjBm1tdh49aMPQYGRGo0Js5mi7g9c+jBfEbJWn7F66Bca4KNRqjPRH4EBcx/SGRPmWb8edCSb1TEFQ2yGV/XUKlQGJMyf96CkTxW4xJqGLyhWXxPH340SjBpFFg58vF8aHRe6LlfvxiBbNG1kUpFXZMogXIkIRkBT6i/D929UsITXFma41sdUoinsRtFugb7ybUU6/keSAP7UD1JJPRc46AT67DprT2fJGVShyfCsV9Pkb6fH5IJXGoWjsrZH4aVHim2kPbX4b/9w2NgfJammNGLbhWY3vFxI0HTKJ3DJJZUX/nQ5643GOKE5G9HQOIy+2rTvL8/1OZo3f208w+NCL6LFxsmJwkm6ZznGd5K+62OW28RXtrggoNLygoK0Z6IvCp6qZp6+ep3uwh79UkVlRC2fH4tg61HmFLkoJJVcwZIWO179kKnw/RKZzhJQnAjTUQO3tKS5+9hKedIKIO4BSOG3rHG8Vy8FyDCaXGPi6G+4KDt0uMBLCmtx9WT7OCsgk6B/spj4+z5ynejvoRneLiGrojAX38fjCFfp+OAWBPaIQwcqaOD8pvfiybFmRLlhD74U+jtwcYjTYKHJpxS+k7a3Oi7geULUMjtVpZk9/jue9l8lOruYujWJi6ibqfT4SZ8/R0PU8Gc8+0vYKpCLVWq0uCbzOt4yyFKWpyoV/+Beob9yd3liU+IPtTM4togfDosVGKc9Vebc8VqBUHeZGbJ7rz3bec6xGn3uF63OTIqZ+N9DSHBe2MIsr2MKdkSGmu94t6Xfz+AmWhn7EGWjOxdxL5HIOiImBy9XIwtlPiH3x1Q778rnvmPv4FE5ng5gas6xDVxawdT3JTqe4bSqZOvYWqdG/N02ZmXkmX31T2Hziznbv/Dr8J2ALWxwxe/VesvoSE53HNvXWeyYREbb6nE+5Ytv45fGW8+uT53tleIjIyY+QXS6Why7gLpPX/K+PhfWvAAMAKo+tOTpRNSkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Argentina',\n    code: '54',\n    iso: 'AR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMzA3QTc5QTE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMzA3QTc5QjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEM1MTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEM2MTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VveEGAAAASFJREFUeNrklE1OAkEQhV/3DD8ODEQgxBBXwIa4YMUNPIJX4VK4NN6BxM0k7tQYI5FkMgzE4U8ZpttihAN0J9ALqlO9q3zdr+oV6w9evwC4OHHYlA0YCE45NwXGWYFtP9poFbL0oltKSB3wbaeioROHlXEIyOhIiHgFKYTaw6WUkZadxDfwswAuqJSV1BXTAW9mIwTePeLgGZlqB7XuHXK1prKPlSL5XSJ8GyL+fITLX7AYvSMsXKNerMPOF4841ek87borYKXVyb6/4rg/trIOqq0egugDoe8h17hBpd2j37qnGq4psKJSp0y6XaoLN3jy1cGMg5Od/t1MPt6uSe5ETeoHbwLdDcIOYI0NYl+Vs+e1q42CXRPgnY/HJuB/AgwAxP5dJ04ev60AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Armenia',\n    code: '374',\n    iso: 'AM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMzA3QTc5RTE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMzA3QTc5RjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMzMDdBNzlDMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMzMDdBNzlEMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WDHK5QAAAF9JREFUeNpi/M/A8IlhAAALEPMOhMVMDAMERi2mX+LawmD8ZyAsZmRg2P9vgLLTO8YBsvjvCEtcA2U30GKx/wOSqpcm2/weEIv/b2b4PzBB/Wy0rB7++Zjh80BYDBBgAAfmD594ReJrAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Aruba',\n    code: '297',\n    iso: 'AW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzMwN0E3QTMxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzMwN0E3QTIxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQkNEODUwOUZCREQ1NjMyQTZERjhERDI5ODI4NUUwNUQiIHN0UmVmOmRvY3VtZW50SUQ9IkJDRDg1MDlGQkRENTYzMkE2REY4REQyOTgyODVFMDVEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5hWk3QAAAbxJREFUeNqslM9LVFEUx88597wZZ6wZmRITxBJCUhBahjBtWkgbd23aBEG4EdrpX9D/4M6tuGhhK0FwE+hG3UkUZASRYDTVzJt33497jvclUuuZe7jc5YdzP99zDy6v76lpoIiixAXXjDOICgpDlCIbl7CaptANRHEq92YaFz8SZ3NAHAYtaBCIQAuP/W1dWq28sO+qEl+kvu0MIB/4oL/VEZRs5UZ9iT8tbr9p945Hb9/M0cDQZaYerdydbq1Ge8+31/4cfWvbo/mF8bOJue8/oYICg4lBIi3M/OOXSc7Hyfj51Fw7Odx4+HprdKnXzUCcFz6g8r9o8sKdLb7GIzutJyfP1t5PP/3YrdhUeGDudVE5ZYQTlZS7vzZby7niZBQjoQ7tmq8nESLQ089pjdSE4P6HLl8vdcoAw3D/oa/kI0LAYlUSLbMMCFUfoRKfx3dyvVX+n5BoZu3hwe5is9F3eUgXZLSfRPylc7+WFU4kWHw+NINpinzWeRBZFicA4Rr345sW+GF/dqzZL7KQs2EM9Czzq523Ak1AG7BrH6PRmOsjhZBfq960BEMjsAOuakfKjS0aUklE0L0UYAA5i9TZQeWJxAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Australia',\n    code: '61',\n    iso: 'AU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNTgwMTE3NDA3MjA2ODExODIyQUY5NTY0OTkxRjRDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2NDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2MzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDU4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDU4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Y+peLAAAD2UlEQVR42uyVW0wcVRjHfzu7s7uwOwgIFLA2VqjKLXKL1fjQ2DaBah9slbSp8qD2ZiSaStTG2AdTTBOrwagvJoZISWp8aDWUCjQ2bYgUGlCC0ECNAi1QspTLwnaX5TI7npkdKJZNQxMTE+OX7J5zvpn9/uf//y5r094tH6Y4V6kZyuZItYex1l4FYafKYnxF377Kzy9+QfFXquHTrTKr17dvfxxaYiHKnkHF758VXol7NcnycVzqm7vOKbtu/qj8/oZXOXq0AGd+HiNBWSGE4rHep9hT0vggs5/RIz72HipQyj3PK9LxBAE6FSFkCIfDSl5eEi6XbJwjArtcboZKyqgez8He08mh5+b4o+EJtmQ7YASeSpf5s0Ll8HvriD74CtWxO7nWNsALzj5kmy6EdkfIABkZ8bS2vkRh4RpxvhUR2KI9yDTzKOJb/MYSIZBp7hgRYzq8T9GvbCXuxod4tXhx8C97URVMneTmJtHdPcbU1IzwLaYjakkB28ym1/CMePHNyzy29XHk8T5xAUHVLxifPAU7tsOmTGjqZCFopzcxh2jvMG67hPqDkHJ+dompCGcE1/Pe3Nwr9tEG4Pr1yQQC83g8PnG2hoETv89RHjlcyvu748lJugIN7VQOZJK7wcEzdadoKS7j0pNFvLX/Fraen+g/PclHvi1cnkgWoA0moExaWiqTk0EmJvxmcD0NC9hsAS5ePEBT0xClpTXCF28AW6s/faf8y+xfHZnt3/HN243srpY4WRfFvoevsm6wjqnkAna8fIWac31EJ6SwJ2OUvbEdPNp9iTPjCuqc4CWI9fe/LiS209j4yxJTCBIKaXR2+jh/fkAwnjVVsWBTrvXx+Sf1fO0vpMu7WaTohngwTFWLhebRzfS1iAAOjYG2bg60XaVy+1YOPr2BVHst0rzO1s3cXIiSkjMMDuo1EGNKP0N+/kNYrVYuXGgXZ5f5CefY4nJ9pvn9etKnjcLQZdNvGt4/gFHahi0WxrTJJtkIHn5PL0q9texmcNUouG3bspFlidra30z/bbOFF7Najdws4BYVHAqppKdbuX49BlXE8flmTMBFRsvbRFvmV801hvr6HnOvrOjnCCNHxWIJUFVVxNmzOzlx4tllCqzGLCbIlKleVMQhIkWaPLGxkhgC97N2rWKsiYm2ewBWcTplCgrSjH7WFYw4uVa6ZLzeIMeOXTZaoKKihbGxgJm/1ZifrKwE2ttL2bgx5Y7h8jddjmsrpVoQ1SiL3AaRJIeR73D+tVUxdrudYlavoavrpiDhv11Kd2f8z1hHh+fu/078S/Y/8H8f+C8BBgBE6FYFFd8qlwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Austria',\n    code: '43',\n    iso: 'AT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2ODE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFRjc3ODY1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFRjc3ODY2MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WaOFnwAAAGpJREFUeNpivCHH+pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERp7FLL8e/R4Yi4WSAgfEYsb///9/onOKBoHPo6l61GLaZafnBYkDk50uMjAMSHZiYZdjHU1cwzxVQ5s8vHRu+nwGCDAAxfQUXKOTRMkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Azerbaijan',\n    code: '994',\n    iso: 'AZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2QjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2QzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFRjc3ODY5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFRjc3ODZBMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D6YUmwAAAZJJREFUeNrsVb9Lw0AYfXe52qotVYp0clI6SEFUdNBJERRHXdydBAfxLxCdu/iXCCK6lKLFOjj7B0ixSrGJTa32R3rnF+KeS5YgeuQl4fju3vvefXfHcHZvI4ImCKkoiDkian+PWCCbDTZCKcAZkGTSbITXLdZLJf8o5j4C8sOGrNZhTE+CJRJQnU+aYchVE5iYKeSU3oo0CX3g5BRIJIHyHXBxS301wjghmABh8bR/lBzAgYnM1Tn46iKaC1uUeYv0JMFSecimTY4QMWf6xeXQWvmhh3cYM2vgmyuwlvfQfqyga9cQ29/B2NsN4scH6KIOh3h15nOhWR0KTAjv76tDb8PrHo6TZxxsJO7aEshq1uBLvtGKrJZ4RaZ8CZ6fgjm/AVVtg/FRsIk01HOdZnIr0NAmp+Ka0ywu0/sWCpQcEVwXgWKF+p4IGTf9n6w1M94+2tWSyBCDtC3IlwbEbI6sH4K0TG87sRDbCQ+HKkg4JGXV63uHRywWag97J1e1E/LscW11/i+J33A7Aa0oiL8FGAD8Y4eRaTQ3EAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Bahamas',\n    code: '1-242',\n    iso: 'BS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4NjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2Rjk1NzM4NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3Mzg0MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3Mzg1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++Dx9hgAAAetJREFUeNq0lv1LU1EYxz9nG0xplxppL5PobZawXsBlIAmOhAgJk0qSJc5NakH5Qj9EFIFY9Jv/hn+I/4S/bJSjaTktF9tiL/fOZ94GCiFTd77wwD2Xe+73nO9znud7FD39aeLvDIJ9sPETNiWcLnRDSVR3np5MwtgruHgVVpJQyMkCnFqJ/0gYOyNvG8TewINn4JFXKVlApQIOh2biOrpuQmQWBh5C8S+spuRLZYdW4jpqxJEZuN4D62vwO9O0/O9PXMfYaxiNg+8SJDYk/6bI/2+2VuIaTvnwxKcZDgc43loilchTrlRRDqWZWNAiMXLXyaePlzkfOiujMnyXM1AjVxqJd+PlhI/5D37a/Sck/zmsnIlyKf3EdUTCHSx8voLXcGHmzYbnHblAt7JlrOrBS+3QtTH6+DTz7/10dp+ETAEzW5RKc+iR2i0xJCX9Ze4C/sEOGYm0a4VDadf4jo8ZuF9M4Y0FWGyzWFnKUypb9onWVk7D4xAWA+m8AV9/QbYkHUxp7Fy9AzA+DbdDQiaE66uyQ2dTevb/pT4nrTEqLjX4FCyRM7lsu2cTfXrvn9wttis9ikL7GfHlhDSnor1LmudMey8C90dsWQNBSH+TBGxpvghcu5Xm+VuDO/cgl4Ufadv4lUIntgUYAIDGhVXvTDlFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Bahrain',\n    code: '973',\n    iso: 'BH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4QTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2Rjk1NzM4QjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3Mzg4MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3Mzg5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+B1d5vgAAAOJJREFUeNrslbsKwkAQRe/GPCyTTxC/1spaBIuIqKCVlR9gJWovKAhCwCT4SAI+4q6j1tGQRNNk2pmduzOHyzAhxAkRcd1asFsm3M4Q/nIKCSo0owIwBgiONMFIWMQpDGYL2M023O6AHslgspJKWIpbKBs6JJXE4v3ze79Pyct6A6tWx2E0xtlaPRcETadVl2jVnP9wYmp+9wOE+yM4bu9y0kQGQxeMC8YF4zwZsxwYN+hg9IgxlP8yZpqKrCIZYyn9WUzmYxQ+TsbYi0qGO+c1oWP24c0n5CKBsl7NxMcPAQYAXoK9LDclUq4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bangladesh',\n    code: '880',\n    iso: 'BD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4RTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzMDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3MzhDMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3MzhEMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oE4gsAAAAkNJREFUeNrEVk1r1FAUPS8vmY9M2tJSpG4q6kIYu7LUTXWjG1EQCuJOf4Abf4BuXIi49Q/4A3TRXRfdCK6KCC5Uit1UFxXGQqXTZDL5ep6XpOCAM8lMBnzwXiaZd++59+S+cyPw6O4x/sMwOWfGthKcqjpw8dAgBmeDi+Q1ycEFl5A3fZXtEdME1iBNepQCq50QNw5jnO8liPjoiyOxdcbEjwVG4xM5VKXBzUJQx4BDp68/uLh3EOTOc+9KIWoaeHmhjqeXmxkr/XLg5kh6mWmTjnbed9HuRFBzEl5jcFuLgTz55GG5p/BwzQZiGsbFwMbIf0jvm48u2r8iuKTT+8fuE0sgmDfx4JuPx7s+YMtShTccmBRe+RnizkGIeFZqVocWeGBk7DzbD1A7YbqWqJbx/cMopa0nR782waCCuoE5N8ZNsoP6pMDajvaX3CQ9PqIEdaG2YZAr2kZUoXq8Y1nOYeE+ldX7nm2kWagSEVh6ITtftU2l4iJjbxfN1FkjKRa2Wj+By4re1jaBqgDsJ9g5a+HdkgXzOB7Ke0qOXjyF58s1+LNGJjITA8eZ141VG9/nJVpHcZr5AO387UQKjaMImxfreNGmuvRUxVrQANTk33xnV6/PYOtcDZJ0Osy+xcpNp2aCwbxasbGx1sokNlRT0GoN3k3QsQVurzu4RkG5xXN62iQ+s0lsLpnYW2Rp9fMuVbKsBT8EikM8bYtUs/Qa5UFRUkGqdT1Mvy3+3fi9ZPCAq8kPvQbujq0SFb8+9PgjwAAqQMkwoAhtcwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Barbados',\n    code: '1-246',\n    iso: 'BB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4RkMxQjIzMzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzNDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjMxMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjMyMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+gU/BiQAAAf5JREFUeNq8lj1o1GAcxn/5bLy0l+v1esJpUcshBVcRREEo1MVBBUFcHJS6KAhS6yDYdqkIuhVcHQQXF3Fx8wsEB6WTWpGiRfzolaPtfeSaXhP/uSo4SE1qzj+E/PPy5Hny5H3eN1HYPRYQoRZv3190tlZ1Kh1/xtue4i1Zax1nTzpR+HSiV1oO9S+YICqZGkM4SAgTWzjR2pzwqhhLa+Bo631bhU0FthtgyLlHZ/pdg1dvGtArMdFkrM8EKzpd5HB9mPWoTpc5NJiHLpWR69+p1H1ePuwX9yqP75bodtLJO97TbzI8WebCxDfYovJ+zmPmk9dyee3mPKeuLjCw00xe2NphcmM0y4Mn1db8Dh2wOXywEwoG9x4tMznSjTVgJS+8Ku6OH3XIyZyWnlXJ2hqOpdB4UcPJ6pw5kYHwDSQt7K5IercZFMXh89kV0vIAmbzOU+kLWUl3n0HT9ZMPVyDBRXgH96U4ffEzmS4NX66n7pSZOJ8TJgW/beu41GRob4qx4RyZTo20rTJ+rocj+22Yb4JC8o5btdCkWLS5fKyX13Mz1Go+V6Z2wVsJXKkuAKNNwuEmUlmDr3UKKRU33Di+uLAkY7b0brsc/6qPHrcu5df7MMlKfIrNCQe/pSPs/5twKOoF//R9i3ObkhAmtuPln/hgA1FJGZF+fX4IMABjOotaoebfVQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Belarus',\n    code: '375',\n    iso: 'BY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4RkMxQjIzNzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzODE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjM1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjM2MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bnsnjAAAAapJREFUeNq8lc9KQkEUxr9773i7ev1LKCiVEJggGAW+QLto52P4Ar5K65YteoGibRC0aOGuhPAvpphpps7915mhV5gZOHdzF2e+7/zON8bu42O4fnlJRb4Pp1rF8uEB7+024lB7GB8MSl+3tzAcB2x/H/50CgPqjwnDWJnU1EomwbJZhL+/0HGY6bpg+TyE1d5kAvvgAJEOxZHnIfj5AaJIzpj3enqsFjYLi8lybN/eYJfLWhSzTaeDz+trOeNwvUa8XteimMkPzXjv+BiJRgP+bKYFLtOpVJC+uIBdLCJeqyFYLPRQHZC9/nwOw7bBx2MIyrUoFjSDVglBIMuwLD2NZXhQYpmJBFghj/B7CUveSG0x3u9j/fws12g7GiBnpSNOW52AWrhZxDl23a6kuegUcdc+C2/6CGOu4sZibwutFsLNFsnaJZ5OutbjFbmdU0y1UBxSiRnj/BTu6z0wpT8bxXAZsRisTIZoppG/U2QeHhHdGqgOVit4tL/CatAF+HD4n2fqIzMlX6cgJHu3FCQx6HglmF0qjXLNZiriHil2KTpLFCjqG/8JMADgr5w+bkv5NwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Belgium',\n    code: '32',\n    iso: 'BE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM3RTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM3RjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjM5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjNBMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dCOj3gAAADpJREFUeNrszTERACAMwMBQS/i3ggVQUJBAJ1iSOXffgE2hPSi1OpmTaJcv+JSwsLCwsLCw8PuOAAMAnCIHFZwXd4kAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Belize',\n    code: '501',\n    iso: 'BZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM4MjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM4MzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RkYzMzgwMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RkYzMzgxMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0XP2EgAABMBJREFUeNqclmlsVFUYhp9ZO2uX6XSmLXSvlUUKlEiAxMIPSNEYFpuAEUohBjEklVg0BkyI8YeKKIkhyhIkoig1RqIQtBgggIoIItSUsg0dpttA29nuTNvprJ62/PDHzNB6ki+599xzz3vOe77vfY9M0uZ0A/ki/IyjyUREYnFC4ejou1olR6mQE48z3mYU0aNsKFli/E9HYjCBppDLcfb7cbqG0GuVlBRZiMWjdPS58A+Eyc3WkW82ir7YeBZhlFGzX0oFigBkOAT3+9HOncO8pcWsnFOESukToSYSyeDEtQ5+/rGF2JU2KDKBNg2isVTAfhkL308OLCjENwC9wzS+tZotdWYU4bv4w2l4BwbRaNJJV8UYRGKqpYatey/yyc4TkK2CTEMqcL+C4sXbxENawsMcGgY3fLa7ntfWhjhx+SgOXwQpEOCGdJ3Wvht4g0oysfBL29dsq11CbmkJJ4+1gEYsWqVMBhySp6S4a4D1G6rYuDLG3uOHmV1YL/6Qs/tWIx3dNnr+ukTTT69wwXeJ+eVr+fiHj9iwLIsdb66ADs/Y4pNNn/SLO0DejGJ2vVrNodNHWLNiJwU2O9Lh71ho2oC5R4dVZUajkHGqYTuhP+xsEmMONh9g3Qs5TFlQCf3+/wMcpG7ZTJzh38jSVuLe/yWdzctofLmEGRVV2Nqvc+r23xQs38pzUhnHNz7LreNfoddZ8UZaWF5TKvIjPEFgUafodEwrN9Dp6yLDVIhVF0aXbeRq81Hyez1srv2UHYuqWe3T45QkrroHCTp8zCqfg8PdyfzpQhqM2qQJlvj0I2KwUcMkk0YkUpSpBelY6jYTtC1huO8B2jY7GUVtzKoqxNHWTe23e8gvnE/B5Dz6B/p42HsDmSaAwpxFNCiNVce4gBE7HhECkRxGlRaVTDHaay0uwzC5jEBcgV3kZSzagyl+EkPxG2Tn542OkUJCZAL9lKSnjYrJxKhWCqBAkF53GK1axX2XfaysxTxKUUqKaTMZMsymzbmGSOU7IgfUyKKPyBocYrq1hF5/nLhbJJdKMQGq5WKrAwPcc4SZ/aSZm10ebN47nLv2BWqjk32/SmQ+zEOWWcGHbR7qp27BJFvAqoVbuGK7KEqrhDMOoXY+nxCTnMTalFxAZNzudrH9pVpuOc7T4bOTqddgu+cnquhCX3EBq/UmaQGJVls7ZqMJ31BYsOJlSlk1De+dx+UXqqdTJxSQpNKCyYDzmp23D55jT+Mqmk5/T07ZM6x9+nW8D11kZLrRG/R48tSEdQbUFg9/tnzDorlVNB0LcPv3VpiSN1YhCV0umVaPWNKQoKt3kKYDDSxf7KL54ln6I8OUpi1GKc5eJo/Q2n2HwtxhXB4HK6qf5+ylSaxctwssYkqdIDKxVY3DJLyD4PTywa4GNr2oJx5yc6//LvY+G1qlgSdyShmOD1GZv5Sthy6z+11hElkawZg+pUkIW9yX2hZHwEd23v4A3bxK6tbXUJzvo8KcLopOTjiq5/Q/fXx+5AxcbofJGWDQPN4WVz1Vnxp4lHXZaKJ39vlFeCm35grjNwjguHj30OOSyM3SU2BJfyR8j70J+GUenWXCV5+QULZgaKxwNWqFcD85E2ijV59/BRgAi/3kZlc/4VIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Benin',\n    code: '229',\n    iso: 'BJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM4NjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM4NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RkYzMzg0MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RkYzMzg1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PY+RygAAALJJREFUeNrslkEKwjAQRf90IqgYFNx5nN7AA/Q8Hs5bCHUluoiLasmkU+hCEKQ1GDf55DMJBF5mQsIQDvsawE7t8EnPGeyywak8YqPR6/pLWfXZDBO8xBSyBf6kDM7gn8mM3hnUpMMKsBLQQxKB+9ooSy4suDOk5Zgqy3iwZhoc4VZtg3UtrnOOSThMztjXhn0T4CkKzJPvuFiLnkG9oPycMjiD334uN3QfLlX30bM6AQYA2ssuTyUvY0AAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bermuda',\n    code: '1-441',\n    iso: 'BM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDJFQzM0OUExNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDJFQzM0OTkxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNEI3RTM0NTcwNkE3OUY4MDY0M0U1Rjc0NzJDRTNGRkEiIHN0UmVmOmRvY3VtZW50SUQ9IjRCN0UzNDU3MDZBNzlGODA2NDNFNUY3NDcyQ0UzRkZBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+iROkEwAAAwZJREFUeNpifJaZJBnovvS5ZOPyS7d37GJgEF9RoRM+L393bIfbpK8M/z6JCf7OkXpZGyj3T1nzZEUD67NnjAyMDEQAJtnpXwrCJnnfXH82jre/L17exuD9D0aGvwwfmDnFlHmLVR+djmKszLZq4XHUXfv32/MXfAzEApaQZK83kiJb+D75375QEB2YVhj0YMnaCxMZtJX5j02WU773hyEkbtdb3quTtur+fCnIwvbr9w8ijWb8ryvK8Ov/88//n3z/x/D+vSgP249vv17/YxRg+M/FwfRdWunns+fCv74qqIoyMDOdu/7697//LDDN/xn+/2cAhQ6ERAsolvMSpi+ev/4pwGQQ5cDx7B7328cfmbhfbN8n5OIgbaZ5d8cRRlGdaxLqd54/FWb/x8B0hOXfH6ijgCYyMf3nF2SVEP795uP/9++Z/vz+jxzWRteMm/y7WVZvUciP5LcwnulQdDWxSp3j/4PA1NVJ0yS27dQujv8po1goFubEEPz97z9eBqj2Hwz/hTPSzN69EZEVNX14Xaqr7ytICmE4S121S5LkF/atcyqWn5/6TPrLR97e4p/uIgx7H7+PVWnjcRErC9NPs3mySPb55q1XfnFx/Pr6FRoYDAwcsgoXX93bc/uL4VsGNX42RqhnoID5gOz3L51NO0+/PvWcUfb9Zds/111YH3LcvcX4/z/L25siN9Y82byFlZXXWoLR8urOr09e/fr3DxKm/xgYxGRVbn260PqbSZ5ZyPL0/tdnzjEjmc54HExxMzBIMDCwgdmPGBg+MjDyMPxXAKv6zcDwjIHhMwMDOzD4QK6F6PzPxcBw28zgWoArDzfXizdPtLefMjpz+QuSq1lYwZxfYBPhPuVkAKZshrtITuAAi/9H0gm0huf6lSvSzx/Li4vdemp54y08qUCNxkyOGAzs3I8MDNLf/1fc+3Xlx1P1l//5GdjeMPxmRlZxhrhcixUA0zUwDLmYmL/9+/sT5A/UdM1AAQDGJzAmPv4DxigjE2YZwkAzMGr0qNH4AUCAAQBpbzCLqENWxgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Bhutan',\n    code: '975',\n    iso: 'BT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkVDMzQ5RDE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MkVDMzQ5RTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQyRUMzNDlCMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQyRUMzNDlDMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QtQgBwAABGxJREFUeNq0lm2IlFUUx3/3eZnZmZ2ZnXV3dZ1cV1NTNGWTfEkj+lD5QoJZRBlI0PahD9kHicwPBX7ID0EEkQgZC4UaimVipSAqkpZFZUQIEpqaq+bLuPPyzDPPPM+9nRmF3HxJN7ozl3nmzpzzv+d//ufcq/Lbp54GcjKL/F/DyLTlPUKhL5q0tyXqd2QpffXn9NC8KnmFKBOiVfyadUvWqsgitMawmg3Btxpva0j0h0k7Qw9DNUKxjUcUBQKdxI3OYixx6bQ0gENtY3UmsAc8ypugujcC2Zt9l+I/AEfCXg1ftXE5ORNaekhXD9Ps/wiVU4TFk5h7nqH6y0XCD88Qnk9jD5fNxsRUM1Rgg9JV/NT9BJm5JEfMI5bOEYs/j+cV8YqHaQ8PCMULKH61E109Q3x4GePEG6BXEjEUkiWfEU0EugmVe5xE6zhc28VNSl7joqT+FNbdqyit24a9ZxOxYQqjBsc4pIjrTiy/H6dV8tc+hlqpjHduP8l8QaIei9V/hONr95E4cwwnnYRL57EctyHuv6V3J+pVElHwJ5Z3TD4vCW2iZL+Am27Gbe2m8PlWLi+YRXjiFJlpPWSXr8KkpFjCUEDNECJWok5dQZeOEYx4FpUcjamcwD7+AeFADR7toyU7EffNDQQLe4m8Ctn7ZhDLZKiMn4T+Zh+MnSBUmTsDVgIaRprauDWYCS+jpC6V+IiOLCb4+Sjqwlmc0Z3oHduwusfD7wcprHwJd/RY+O5r1MiuQaC3Dyy0mpZZmCkrMK4Ph3diZafhTF6CO1l8FopIq6C6YzNm1xdSZpJBVcMLApyuMdDc3KD7joClyYlNFd25GF23//gN9Jq3Jb3tNM1fiJ46HefFV6jt3IFavxklDcOM60b5Hk5CDHR0HegtgEVIutTQnhXmG7KoZqdiylL/TQK0dj/eutXU3vsI/cBBatPnYIZ3Yr22nPSDD+NLvVZf7SUmYjSx2A0RnBt3dMlfbBSWKLimE5TufQuGzUQf/xV39lzaurqkPF5n4KfvccIaZtl89IyHME8tI7PgCTJif27Jc0Tr38UaM/52gBWWqMaUT+Bncqg5feiO2Wg5t6xVvQRPLsXb0ie5/AR7Sg92W4d4kJq2Jau7t6MP7CbvbiQzbxGOL4J0YzdN4WBgyYexC4Q9T5PsWsHlQx6qKo1h+zr8jZuwOzpILu3FLuQJ9nyJlUpd4agOMGEyqlSgvOIFKqtbsWpV7LqwtL4F8NXz0mkPKA/kiH57BHfDp6gt7xD5Jfx4gihlk8mNomPiJE4/tojo4F7soIpJXN17JAJKpoQA6VCVUuP5nyU0GFhEp7JCZVrhH3Dxd8n/j64kCKU2R+awrTY56qQ8qj5GWl9FjMK+97HPyxFYr9NrIzLy7LoomVe+3xxYFQ5NK+i8SVc+i/D3aWy7hqo3dcu9ztDUW18sjlUReSeSN6XxNkbRCX7QRW9zmI5OmmL9akLMbWz8ut1a9RuFrOUvQCZ7y2j+ZdRvOsW/BBgAmn3MQYJZCMcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bolivia',\n    code: '591',\n    iso: 'BO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkVDMzRBMTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MkVDMzRBMjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQyRUMzNDlGMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQyRUMzNEEwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QnwfiwAAADFJREFUeNpiPCeoxkAbwMRAMzBq9LAwmvHnNbHRABk1GjdgYV+iPhogo0YPiNEAAQYAm/kD5VlL/agAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bosnia and Herzegovina',\n    code: '387',\n    iso: 'BA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MDZBM0U3RTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MDZBM0U3RjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwNkEzRTdDMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwNkEzRTdEMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PElEFQAAA31JREFUeNqsll1MW2UYx3+cnpZ2fMjYhyJj42PlS4tRRyLbpIVSyaJXM9NsQ72AJe4GF+PXmqi78MpEE73AmEwCiXFT44XxwmWBjYgj2WBRKKWTfTAwhE562roxOGy0x/ccLcY5J7R9knPy5rxv+/T/PL//cyoXFHRc7+7exZo1Flyu40jSfdy6peA/8SnV7iuovgIwxUk2rFtmOdbpZt+rrWzYEBHfrxnP5bVrbTl79nyH2WziyJHt7NhxP591zdPQspHvu9/hsaZfUf2pJb9bSMHgTVR1iVBIobAwW6gu4aUWK7+FVB5/+i38/VuwPjwDMQktjYlls1kiP99GOByno+Nn/H6FvtOTNDXlcEPdSuNzXnq+fB/HzsuogfQpl/VbPK6xfn0OgUCYwcFx7PYiBocOGAe2Vl6nxtPOL30fUl43mbayS4nF0lJMAGYW1zoWFzXOnQsa6kMzfrG7kQrXG4z2Fy+XPS2KE5GRISi0ymRlWUSpv0KWJdoOPEpz8yY+/kTF+ayNvq/fxuGaRh0tQBPKM1JVnIjMTBPB4By3b8eJRMJUV+fj8ZTR9qJE+PcFap7y8lNvKdbqGTJSUC7f+UDvt8ViEj9AFoljdHaOcvFihN7eSZzOXAGcneb9Xvq/eY+KuquoY8n1XP6vDU37E7jh4VnOnAlQUbFZ9L3N2CuvilLZ8AqB0x9RmWTye9YqAZzNto75+TgjI7MGcNNTOnAPUNXwGoGBzVgdq/e5/H8HdOBsNpnsbAv19ccN4A4dqsXtLhTALfDk7ixOfP4u2zxTq7LaiuhIAKeqMRRFoagol8bGUg62WlCiC9Q+c5gx3WoPrdxq8koOJYDTrRYOx+jq8jMxEaWn56qwXS5zi3ah/HV+/PYDqp64sqIJJ68GiL8nnMLZsxcoLn6Q8+dfNvZK7MJ6DX9NuO1Tyz5PqdR3Aqcr1yecppkYGrqGzxdCuXZhecINnyoxJty9fC4nY/4EcHrv6+uPGZ5vb99Gk2eTAZx7by6nvjhMTeM0zEvpUZwIveeh0IKxjkYjlJXl4XIW09oioUTmeGSXF98PJZAXZ+kuyuVkE+v91l+pFotVrGMcPepjfDzCyZMT4s9ElgCuHOfuN5ka8VJTLpRj+lfiG6m8ZRITzuebZWBgDIejVIzXfWRa4tTW3aR250FeeP4SeXnRf3zuDwEGABm+YrFv6121AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Botswana',\n    code: '267',\n    iso: 'BW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MDZBM0U4MjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MDZBM0U4MzE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwNkEzRTgwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwNkEzRTgxMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HqOdhgAAAHJJREFUeNpiKV11+ykDA4MUEH9moA/gBeJnLFAGAxJNF8uZGAYIjFpMN8Dy8vOfAbGY8fb3/5/onKJB4DPLvMqMgfExEA+IjwfMYpbsxIiBCeq7A5W4mpffHJh8LMrDPFpkjlpMm8QFbfLw0rnp8xkgwACv5h08wmledAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Brazil',\n    code: '55',\n    iso: 'BR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRDhGOEMxMTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRDhGOEMxMjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJEOEY4QzBGMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJEOEY4QzEwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+TFbakQAABKdJREFUeNq8ll1sU2UYx3+n7en6uZVa1oGDwtYxnCw0EhiCxjgjH14oiV6Ampj4GRONRpQ4ZZEYvTAhwSxGjRFilO2GDy8gZuEGTAS2xUHmBvuAuVG70U0o++ranq6tz2mHc8YB48KTnL7pec/7/p////k/z3kV6h4ZAJz8v9e4SX4Wz3uZkoGEFWQgL343wE6Djj4vwJTEOpHPA64/qXIPw6Qj90yfmwdjw529N72pDjJlYufybloD52gKnOfDkk55ZpQ55+x3b8dBcjx2yxzrTJJmiFtYt2CIH9adY0VJCq5PY3ggeEXhueY1/HK9SKRPgFnujHJLxnMD64D6YmFpMCX4pOQSNRuvQKeRfYeqaOv2kpa4K/3DvPd0CwQ09p1ZQs3lMhJJG1gnwJCeK4A5gLPmsWSZbiocoK60i/LKGCe/9/HMru1Eki5MJNG3TGLGbR6j/tMjbHmpm76OPN7qXcmxcDGoU6JA7L/Ax41sXVaje3OGpeQr6qTAEqOu7AKf+3vw+KY4edBF9c7XUdIKRWoILX0VG2N4raPEkk72n6ii2tdD4OEIO8xDlNjHOT1ewGS0AEzJHHv+DkCbYayDxkWitIEdi4LsW96F1y4Ri2K4TRxsq+NseDXL3EFsihOTptLRc4X2kyEutPZzjWKqK4Y40XAAY1L2kvgjk0Z29pfz3eDSHKg1epP9DGNFSmKVbYKvy9rZXdKPQ0mTEJWMLujtdPPlkScYutjDxeYQkXCUPNWE11/A5h2VrKpeQrhjkKZujSfX9LO4YpK4mM9pzrCtSMrOHuGikBrWLGRydaSZssOUSrGq0bT6LPYFZB0bE2UMEpySD6FwHocOt4mBY7icZnpbhvkx+SsWye8Kv5fHX72f3Q1bqf8mTGjwOGt0frI2Jua2agi3CJtdzfhbH6JPwHXpc8DGKa6mjGzqWEvtkl62FEawSlrisghpTIWuKL4FThxWG+lUFNVqodCejyqsB4IR9u5qJFDp5/nabWzwecgMhciI2lapQomNU0EXe4KlhISgjqVfhpummjKmODPiYetvVbzSeR/jkmuL9AvxD+WrR6RsBgjd8OB2W9CSKWFkkFvBas9j+T0uLrRbOFa7n4X2ThTJr742LuBvdpXzaNt6fr5RSFI32HSHm+lcmenkSwP49o9Syls30jDozXrCKMO7LzQyGosRDOfjcJjErfHsnZ9vImNeKkG4eefln6BA9BUdj4YXslL2+KJ/hbDWcnv/45pdTjqKHpGAT4gZjg4V0x6zUpUeIfDYCGvdA9QfLyU46mE8qnJtTCUkKtnUNF99cICnXuxhsE/lte4Kai9XMJoSne0T0yxn1bJ2684lchNziIMn2VvWwxsPSu7OW/i4YT0dl4qkYyqU+8LUbG/CsSHG/pZFvN21komEHWzC0JCaZ+f6dwCaCJLIo9ozSP36cxRJUyI83asXwY2r8OzZAI3D94qsydyn8q579Rx9WzoHe3yX+cjfl5367Hcf7/eXSe+UMrHpsqZvBzoP4FlfKjV7CNjoDaHK/1Pig+zXSPrAHQDOOoHc+bFH39gkdaiOcfq6N2cYneXNuXmcQP4SYAD5sNLFPECeSAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'British Indian Ocean Territory',\n    code: '246',\n    iso: 'IO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkQ4RjhDMTYxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkQ4RjhDMTUxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMUM0QkU0QUREQkJFMEY0QTBFMUM2MUYzOUU3M0FDOTgiIHN0UmVmOmRvY3VtZW50SUQ9IjFDNEJFNEFEREJCRTBGNEEwRTFDNjFGMzlFNzNBQzk4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+507x4gAABXBJREFUeNrs1OlPk3cAB/Dfw9MLWqAUeggF2nKWq1yFCIgDryGiQ5miTpxTkTDZpmObO5JplmyRxMjUOXRbxBmHyhweGxKCnAWs3AUKT6GU0pY+pS32Pmhpx9+x7M331ff75vPiC6kbfmFsSR4C9Mqn8+PNQoD1bazkHm+7MfBWeW4fDHQmdjjuxzBjCT9I7Rve5x+ZzqF0DS/WPRyWopay7JT33g7jRdG6RIprbQKx2CcnKehUURIrNGRQJINA7uU9RMMfFan+CZG3UGxVO3qd7T77T1377soiCflLIP0un+YJpFQtEH+dtoLRUeDjBj74U/v5adygL64+s2L1ZBYE2winS+P8nfFtwpVeAQIMFgo7GHOiKF6FITXorR8Kp85sST50dbexvcd+zcilktDcSOqyHfA331nwILP9JwLB1faPMXgsDoYUGqvD5XlwjzUpI4mWFbGRmCCPm+yAOr4vxWJcWpPd4/FA3rJi4HQAOzCZ1h1OVxDscbnXrL5kX7sRD7zmkFAfg5EMO0CYn3WdUBF9BBcbM/pKLBlBQYSVlwnTInUB0XMTY9D803zgCgbu1eRUJpdNG5lUQTOXr8llWiuBsCWfR52bAUF4m81j/umu3/5i/3cLQXu/VmcbonMgjZ7LIN4hc59M6SryOGf38fA43M2uthb9nWAfEE9JzWVs3RGfozOYbzyfah2WHSuIw3BHqcxtO65k+VEZNpcv5oKJvjl8vYzUKOAktjIKas/nUtEZXBtyTEJAHdTu6rhLpwsHZ1UFtY9HpGhmpvfwtiqiCtErIo42ClZRwbGdvM/K0mv2Jgtn1VBjU89xph0sKc89Ruq1VIDCTdUR5cL64bQKfoMWMPwqT/JvpUDAZviteerU2NoGHQjAVR/i82Oo99tUHa9XUkkjbgqnZOdODt3TMoC0ds4AjTUkjgpJu/r6H/VainYYqWGxkE1tsmnnVSzRCHvvdieH5dSbBhDUEULeSvcrdqOepASNF7uJiFVqbQqNOTGGLrI47JJ7MbyiQN9oiVieHkfDwD5KvRUPeyB86U0nngTUK/kZoclRlA6hHNHaAJsFpIrtXAqPS++bXJ5bNlndnjU3NjGclBFD6RhcWlYbANk/l6L/BDbw83ye/K0ZAL6dgTzdrJkVTY1gBksX1BCqM9CDAydl6N2O2WFEW5YfVVWcgIEJUrXudqtoUKwtyWHXHsiEgI9MvdrwYmoI0ezJiqzZl4bFYHWil2Nl21e5ZIbUwD3/Oe2DyytG2+3WcaEY3ZPNgQprm/rFmoNbY786nBEfHvKoF/n0Vu+K0Xlgc9TF49mxzBDBtOJcQ69EadybE3WhPDUxPKRjbKnm595ZuftgFnxpl4BCT7Eoxs+1BD+bTSrJDfimPJvLDn7xagE6U9+aEEFt6pt/NSYDZheRQfmoNC2GGfD7S6R7ZBE4XBh/fPU7vCQW9X4n0jO8CKxOmEyqOZDCDQt4/lrtxZP5sJwWF4MPoNjN5g6R8km3BKwYGdE0MDav/EuAaFbfeL3rK0aL02XvnpC1CBCdweT1enRGw0bKVPq214jRavV6vasmy0ZzfE71sGtarjMtmrwt31bPjQsH5fbmrmnNm42VV2s0Gs1mCFdYt2awAAiKT+ckRdE6+5FVpQEQfYHLyU1lprEZ/VMqucoA1l3A443lhiZHBveLllCFGcAwWLOzkjl5tp5eA31pjQGcNgC5IlibmDT/RaUOEsvQOBbl5ejS9ZaR4TndkYL4r49mB5EIfdPL9X8ODc3qdmUxfziZFxLg37Nxby1Do5KVoiz2xffzaIHEzgl53QOhUu8o3xpTW5ZBwOMnZOiV5qE+0fL+vKj/Qf4TIP8KMABGR9CQ7zSDAQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'British Virgin Islands',\n    code: '1-284',\n    iso: 'VG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REM0MjcxOTMxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REM0MjcxOTIxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNDJDQ0E1MjFCMkQxQkRBQkYxM0U2NTQ3REJCRjE4NjkiIHN0UmVmOmRvY3VtZW50SUQ9IjQyQ0NBNTIxQjJEMUJEQUJGMTNFNjU0N0RCQkYxODY5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SkUFawAAA8xJREFUeNq8k21sU1UYx59z7kvftnZtx7rSgbME5qgbhA1JlBEcUaOxiGxTDMOJCSaKgZjMEPniJ/lishjjDGriy8QPkCFbFGM2FhMgy2S4bN0kMma2du267qXre2/vPecebxkTv4jEOP+5H07uOc/v/J9z/gfNtLU5d9f0JO2tbf2j3VdBZ+t4Z9uhy5/21e5rvEhi4bjDht5ySyeaN6Y3PFS85zzct7gLI+uHT/cedsNLu9ZnytzXx6KPldFHBy/6ijd+5aM704HPvEUNXk9HtLSh7WZ0aoIQlRBK7ilKGCUUtRw7OxHHjeX0qDMmND0RtLkjnT0lTc/On/qIr6utjt6Cvc/1TOba3/s+9vvMyNB0MqWIIocQyDKjlMOgqoA1iwCU44goIsZQTlI01yi1v8F0YzwJ5lCKyDPhcrcjm8xMR+IOs7HQyC3ZndJCwpZNODz2FBLdI575nKjjCZXUdR5RWCsoOYDcIhb0yGBWwiT8q4REkHOyhuaD1nUJSE+nieeZR8qBmOMRIgHr7sZba4r21yvn+6TCgmFLrTMTZ3oeNLeMsrxPk7leqj44cCW8pj5ayPG3oh747VwVN2aiLLN81rjuWtHj7pZE95mKT06Yn9/Vvr3hauMhD8jj23d/8fKxNZc7Kz8+vrS5olHYuTVeF5NBj0m+WeDjSYnM+g1ziaNPf7jD+WRiajSbUvIz+e82+t0jO0LHS14JXjr31Nuepgtvtv40NzRqrCzmY5FXXW84t3zwzS/ogHfT+EF2SvApsiIBr5UxUDnAkso/bKioNtv1SExQkTKMtZkV8Q+qqTOtXR1zpmsLBUBTgJRLw2k1WjF0E8BgmfUNNh+5/v6+vSe9lS6r34KzccY0WwKwOBPGlJLD5qWQLA0sTFp4IfIXbh79eltvICBo9jleEg06YGrnlamz3DY0sKTXgmB0EoWNdP3wYpeKkEMnmgxYVVWmADbJOSsJBHn3A1Z9tcs95F/MyFpaAKM7G/DTAc2ECFqGiMp4LUZI4LX7ygAv5BtXVY4DjrOx/HqqLdUGGloFssXowNj+c0arhTKbRfKbN+idw5CllN55Mghq7rbAc8uDu3exIi0aaOWXLBuaX4h++3VvdrzqO7+rfaK3xxdr0ds+P9k3P1vcP2hHIP0t+t4iBDDWpWZze1zBA5XZItuN1k0zVXTx9Jeuvv61oRBFoCy7ee3PGp1evB80QiwnI5VaS0uTzd4Jd0EmLAkdP272TxZiHNXpVSlD/iX6H5WTbr9GWAUtW8SwalpFNP9fne//6noV0X8IMAASR8khb/BRHwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Brunei',\n    code: '673',\n    iso: 'BN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3NDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3NTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJEOEY4QzE3MTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJEOEY4QzE4MTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oskd/wAABCtJREFUeNrEVVtoHFUY/mZ2Zncnm002Sc1mczExdFPNbpMm3Sy2+FC89EVKSkEEFUEUH/RF1CpesIIpYvVJHwQfVAQvoGApxUihKRpQm6ZJtrm1m839YpPdNMns2r3M5fjP7BqamLVGLf7wz5xz5sz5vvP/3/kPl5xyy/gfTGCZRSd4anECOL6Q3lajc+uBhbJXwNID0NUImDIB6BrA6ItBhhfBcU7iIW74iamArTjLL71qct62cYzMXEz/jYBHwDLD0E0foP44gUyCabkYEBmOLwBvlyDPCpA8DFIRh/QyjVv+IfBWxvQ1IjIIPd1L7xHoBjHlCuzVMYydKsH0SRH7O5YobA4iWpAL038AvCUZdZZCO46el19E/4nLONK3F7ftHERycSWbIiM0PEeRMVJkz6uXbWeHE2qgogYjZ++C82A1SltOmuOS80eoKz9kU5QJk2bGAVW+gYwlR8aWXefQoQeZ3+9HMBiE3+fHTm9DXtCJnl4sd34Hy5lfcH16ChZRhFTlReb+gyhvfwR1LYXrc/XMEBEYymkmRGkaM8XLtIzJw/ANoa6vr0NbW4A8iObWVrgTKexo9sNzey0WOs+i9/mjqLG7EC+QkEomoceimE7EsPfddxB48nGsRmXMdJ1H08MPbMpRigiM5vQymB36Kz9M/oWngT309BPss/ZHWdcnn7OrpIvuYx3swuvHmWlzMTby2gmz+WGtl33qbWU3sz/teLOVUVC+QgmO4hqC1D9DvlxVgbfXgIbKaswffwEVchr+vhCYfzfCL72K++Rfb6oVy3tvOd/cUWaBQWFVZtC0jROS5I2SC3fwDrTsc6IRVpyei2K/JmI2toTnvv4Szu9Po9y5ho8/+hZ3NrXip+pi8Kk0SlwuWCxCvuNUld3xioaZGQ0XQwp6QyqGLqsIDSuYntbwBirRjRQiiGOm3YvHzi3AJzvMI3FekvHNPg/uGQyjJCrgMF+Ep/Rr5pKeinIEAgFTuLubmrBnTzNqa+uzwMlJN+Pp3FtttOVCcscfRYAhs6BhdFHBQocdw2IKnYk4nu2rwpH6AoTnVaqoDPWlAroX0jgwO4E2qmp32xz4IBnNG+Jdu7zw+XwEPOXeMscC4QsFRKTUqJMqEuMcLj1jx3wPQ10zBxsRNdIz2q9BWhHQpSTxPq7+/Usi3wdVJ08Qp7gGaxnlOkY1oFGDW+PpAmOIzlKNjnKorOEhNGs4dq8dB4pLcernJIaGVVyJqIjL+XWbd8ebbyOJwOFiMAR7fY7aEYGqEwfRr8BWyVDkNmaK2dKQ0LE0p2GACFzoV0gvCkJDKkbHaCF9G8Drp53WFKn8WiRqO5khTUDmoZH0lVR2jqkX0dAKedENNSqmIzKpYSSs4uIlZRvA/8LozoDVTg8nucSv5zh+q4F12loqSQ/Dc7H+XYABAOng97l61jkHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Bulgaria',\n    code: '359',\n    iso: 'BG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3ODE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3OTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODc2MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYzOEIzODc3MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+McDtIQAAAD1JREFUeNpi/P///yeGAQCMQIv/D4TFTAwDBEYtpl/iYpiWN5q4Ri0etZg62emamtBodhq1eNRiqgCAAAMAqc4MILa4lBgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Burkina Faso',\n    code: '226',\n    iso: 'BF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3QzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3RDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODdBMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYzOEIzODdCMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uO74RgAAAV5JREFUeNrslr9Lw0AUx793SY6m2h/iVEUQRJfo4KqCc/GfcHJ08B9x6ayTq5uT+lc4qEtBRFsKkmBKY5Im50tSJG6XgnHJg+Nekrv73PflveOYbe28AVih5qIca1B712cOcn0pcI5/sgqsPmvKgJDNvfX5psWznuX8PwOzrJNjjuhJQN/3YBx6iB5F+i4/RsX09lesrjIpvi0fHhdgXQ8wJep3NZgbPvBiAAF91xTBg0XFkRGp9TjEboDm+Qiilm04vBni46oFv2+ALUhaUaqBrZOOeqgpmWzHxPHgFZfWQxqGs+dt9MQ6lk4pAgZBpaJie1lHof/c1HCgTXDfX0UQc+wxD701DruuKUNTMCYF0lIymJqLa6eF29EmQgIfdYZocxfOmAQwWUDDRfezyDnNksUDymQtSkFsSkAjLCI2MVcvWn+SVCegn+ecX53VFfh3OWVXnkbJVx/3W4ABAMUjZvAvTtkOAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Burundi',\n    code: '257',\n    iso: 'BI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBFRDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBFRTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODdFMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEVDMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+f3jizgAABTpJREFUeNqsVmlsVFUU/t7SmTcztNPOlFraTltIIZqWkoGACHUpFQiQGsQUECWYaGI0hAQRarVCadnREtTE5QcaI5KIQEGWFBAsGLQFbKEsFpRANwp02uns25vreY8wTKdFI3onNy9z77nnO+fc851zOcaYQ3Y4cXPNFnRs3gQZbugSRoKLE8DCYfzXwXE8mByGt+8KeEhIW7IU6RUrwBEwuyfkbvgNraXvo/engxAQD63ZAsZk4L7IvwPlRQRsHQiiD0mTpsKysRLxBRPVPYGVJFQUpjyh/tGkD8PQV16ClDUS7vqzcN9pgSjrwEs6Ao/xnoxhYUYeqW7FAAoIe7zwOP8g49MwvPpDZH9aDW1mRkRGqJtcX7G3qw4Z+mEYFT9CXTRY85Hy6iIwuwfOhlMIem9ClJLBCSKY34+AoxUhnw1hv4u+3TTtEHgDeI2WDAJ8PVcQDvmQuug1jKrZgfinJ0cAj9w6iQX1S8BlHyxg191tgOxDSdYcbBhdhhEGS0TQ9esZtC0vR8/PteDoJ0APU/FsJE4vgiEtHZ6um7AfPQ7b7t2UH04FF4kTCpG5qaofYIe3C6XN67H9+k4KiQhkHpjEFPC0/Y8zfGtmSTWj2eaWz1ns6Ny4hTWOmcB6avZH1sJR+/baH1mTdSJrX7VuwNmPrn7Jhu6zkn4TS/1hPBt+8EnGKcD3rBLJkjv+bjg9nbDSva/NW4EZqc8Mmjgtp4+jYfGbGLthE3ILiweVOXb7FMqaN6Lh9gkYpFQ8IqUgxELqHh8tqCyaNEnITspDY28zZp5YgNfPvoNWMiR2eO09cJ37HV7bnQF7SliXNK1CUd1cNNjOIsuYi2TJHAFVEzDa4+ghcAK8dO9d9kvINltRP6UGKVpzZJ9IBht8SCJuxkWdc8luTDw2BxdvnUAKARpEPWSFkjFDfBAHFWENHwcdJZokaJEYF9/fMJopBBo79IIeOkGCqE9Xv4OB/i1whK70E8l7Da+BwuTztd8BVNEem1ECLcH7abXlyB6EAn7kz3qRFHKqvFJzGB5ceB4ILFCpC4SD8Hk60Kc1wS67yHMdmkoWgnMFkCE/Dy0BEJPRWPIygn0+jAy/AA0ZYw84IHs7EaR7lchgmYX/GVjhKk+gCrdZyI35OYtQmbsMCcIQ1eNxB3aptdfI3b3ZBFIxbv8uyMEAJE6rKjxQsA1Vl7biq2vfkAc6ZBuU0sv6RWAAnXoDdvS6b2CUyUqAb2GepfihG0RN52GUX9iMi91nYDRkwKwx9aeT4qESjmt9lymTvVg5ZiWapx3uB3r7s21oLiiE89jJQUHcv5zGhaeeRVf1J5G12WnTcH5qLdZaq0h/iPRfImBZvUZOqSKtdI9y0IVZlplYl1eKfOOjkcOecxfQVrYa3Ye+VwOlQSKSF8yDcfoUiEOJm7ZeOI7WofvrHQgwm3rGXPQcLOtXwTB+7P2C47yGd6mY7G7bRzVfogvdbmQ5SWOoSr2NuVEeMn8QbeWr0fXBx5Q+DurROdSjKVHcbgR87Uom0NSQMUGaIWi06RCGJFBeBNXeK8CA1MVvwLKhErxBF9G7l8KvVDNuaVMlW5O3nPh3n5M9O/eQl1Vw/tkISUyDaDRSC4zhI1FKbYs8tUSeH9AWZacT3kA7hmTmIWPNe0heOD+qQsr9HwLey1fRuqwMtkO71C6kNWWRN+GHewhQj+aIbn7bDfVVYyoqRmb1eujzc+9uK0+fsMuNW1u/QHvFWgRDNkjxOdRbxf/n6UPRYEEZXsdVopoR6eWlSF2+GH8JMABj3HBuy+V6lgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Cambodia',\n    code: '855',\n    iso: 'KH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBGMTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBGMjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE2QkM1MEVGMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEYwMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4kgdbAAAAkRJREFUeNrslUtPE2EUhp+5tbTl0gsyA2podCPRjSuNMV42mBAIJSxYse2OFWEhv4S1MTGGJcGNP0D37pDGGu6lNE0HsC3TGc8MNSwobYwRNj2Tk2/mzJnznvf9zpdR4L3HDZjKDVkX+NpM+UxfRda+KxPkcjnDn0ANQ1ZPnk8J3R6Vlwr17R/SfaxlXhuz9fvYnbuL9QQg7nFFykNd/NabJxAyOFzJEWrWUKLhIM87qXSsqZfaAYrXxJPPX6KEQhTX1pDSVAPgDFosRmnlnfBDuELqxWsUTaO4vi7N/MMee02PT00xODtLQ+7L4tb8PEmJDYyPM5zNUmmqkJBYfHpaJO9sWhbeyhpu9dIvNjQxwcjyMsboKLHhYaLRKObCAmoigVutEk6nMcplrLk54jMzRMbGcDY2sMW1q3Hreruu/M5100QfHKS2uYm5uIi5tER9awunUJAEF8OyuLe6GuTXcjm0VCpophNrvd3++tKe7u9ztruL5zhUhYUPqPb2ng9RrYYjbOvb22jJpHzQwJHc450dnGYN72/2+M9Q9YTDDGUyQXHn6IiGbQegrgD6bBVd+vY81EhEJvmERqlEo1LBnJwkKrFqs1ZLjO9w6Rz73casAe5++QrpB3jFg4CNYo5cDN6JfR7rj1/ECnt4bgPVugN7eXaePcXOH7SS1dYPWgz+mYxV6vErjG8/+fXhE66wCeSR4+Mz9GVGpPd81obR1E6Vc24HSqi9/UQePaQsNQ7zH+W4GZe4K93fYhf4f9lvAQYAwe7UEk4oy7oAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cameroon',\n    code: '237',\n    iso: 'CM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBGNTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBGNjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE2QkM1MEYzMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEY0MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KAzx3QAAAHJJREFUeNpiZKiKY8ANTneexCNreO49HlkmBpqBUaNHjaaO0X/+Mkpmf5cq/vbnL7FaWIhUp9T4VTT2BwMzA6sQw8NqLmq6+sMxFkb5v4xyfz6dZqayq5nZGJ5k8zL8IyFyiDX6/Ta20cQ3avSQMRogwADcmBpIZYNhTQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Canada',\n    code: '1',\n    iso: 'CA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFREI0MDA4MjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFREI0MDA4MzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVEQjQwMDgwMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVEQjQwMDgxMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IgrEzAAAAaZJREFUeNrEVktqwlAUPVr/TRXqB0QMHXbSqXsQdCRuQbsBR3bmJBtw7A4cuwyLBQNCKdgOVBCpIv7aUx8PiVZtNCo9cHm5yb3v3E/eTWwEPrEOlwtot4FIBGfBbAbE40C3u3HbsZQb/APslj3LZUDTrDMvS80NcbnIToc7MZkY18JO2K8wHu/2mU7JSIS/eRxHRTmfA6USMBjI3gnkckAoBBQKgNd7oYwFEomt6Hl3t99+T8Z20zdyhWZTrvn8tt3jo1wbjd2+R2fc65HpNFksksEgqWlkv0/a7Zs+7TZZqZCKQj49kckk+fr6Z8bmpY5GN5+nUqTTaeg2mwxuPRi327TUfxMLp3x+u6dmks1KX8vErRbp8x1PLKReP4H4+5us1cjb28MJPR6yWiW/vk7sscD7O3l/b06qqqSuH3ScDj/Hi4XceB+pqMpodIHJdXUFPDwAfj+gqsYWTifw9gaEw8D19QUm12xGDgaG/vJCPj8b+nAobc4yudYhMgsEDF3XpaygKNLmQDgsf9Y+PszH4kWIYzFgsTiJeGjJM5M56Q/kR4ABAHxxYPgLzAdZAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Cape Verde',\n    code: '238',\n    iso: 'CV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFREI0MDA4NjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFREI0MDA4NzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVEQjQwMDg0MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVEQjQwMDg1MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+zvajFAAAAj5JREFUeNrsVU1rE1EUPfPmO9OYNEPSplAqmlaoFDcuBBdC9yqCGzddVRA3/gL/g6IbJXahiAtBxY0gLiIIUkEQDNlIija0JUnzMZlMJ3nzZsZpJG1SUhOF4sbHWb1759zDuffd4XDuHo7mEBzZ+U/9b6mJjx0VLRkcjscMXbPhEVgqqLgb+ntqn4MjpGY2db2Opvrk+ourZ3OoRE+d2IjHjCA0OjWP8CLarAsHO0BVvrP8OK7WVzPz7wrHPmanmOWnb66YDZL7NAdi9uT/Dlx48UGPZAYpyVx+Lpa1qLJejTBbFiQmK+3ZeLls6SX7pIQtuBa44fI56vfZ57vPic8qwjURGAdYkNG5LwMhNDT2yBeWAH0UQwQxk9krAzGBrZcAnUiegROw+WI3liRh0DyKz5BIQJmHawxXnTnY1png0sP3QckiQcpH3gcdRTXnv3q9r5qPoXZ/14boLXh1wOupGQItwEgjsgRpFl5zuCHO5Yv9XucJWIM/H7RpDHC7ExrUkVBT3ALIFXDxkVQfmBBfnPQ8kgx9czy5bKmOLfOCK0nOZNi0mGY408QtwWuDG/6MeapcoM12Fw6tNZ1Nend5Jcpvf3hzejy+1jKpXeTSNx4aNfbl/QR1q7RJez45FDxSl6AI+1AJNPyoJVfXU6Y39vb2U14VPucW1mw9W5xuChI0ri//cHAD/jLEgxEG70KzF6a2S2aoWInAViBThFpwR91ogx5VsIzC1q998nWj0zGRQeyMhPsHm/KnAAMAsIUm2hIeMowAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cayman Islands',\n    code: '1-345',\n    iso: 'KY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjE0RDFFRjQxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RURCNDAwOEExNzczMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjIxRThDMEVFRkYzODE3N0JCQzk4OEY3MEExNjA3MkQiIHN0UmVmOmRvY3VtZW50SUQ9IjYyMUU4QzBFRUZGMzgxNzdCQkM5ODhGNzBBMTYwNzJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wV3Y3AAAAoRJREFUeNpiZGCYyUAbwMRAM8BCnLL/DAysYARk/GFg+AdGlBoNNIKLgUGAiem1nPQjVmbGh8/5/vzh//cX6N3P+D2Nz2hGhn//GQSYWX6XZy0QEn539oLUh/c8dtbffvxk2XPQ5OVrKQaGV3hMZ2Zg8MXtXkEuzs9r5/Z/+vytfZL5k5ca774J7z8kxsfzaUrPivOXZV+9lmdg+AJyA4lGA0OWbcXMyWfPi9Z1RyWlifX3K0WGCenoMi1cynvlKmd1ye6tOzV//+YGhz4JKQQYXfzB3od/ff/TPDHoxGmNqRMDWb6+un7xVXKSz5evzrcfuR0+IFycs42BgRuXq5lwhjPDt79/fta2mYWGS5mbOPz8xnVkw+q/f7+zcogwM+jW14tNmmd8/gowQD6SajQwNP4oyN1VUD6hrMkG5P/69fPvv3///v77/RskLSMnoqV1Q1b8DAPDT7Bi0rIMC9DZHg6Xfny8CLKKi0tUReXf3z9/wGafPfdFW/2ige4TcNL8T5LRQP3sx88Yy8iyPbm3fvu28xxsfy0cvDQ0NXi4WF48e3Lp+GIx0dcHTumBjf5Nagph+vqFj4fv1fPPDzom3n7z4o24hBIvD/+Gdcc9oyd+/7/D1JB388awT595wWGCPbpm4k4kAooyz7/zbnnx8hbDDwEOIRWm/+zfXp1nEH7OzmEl+NnvxVsBBoZPuKKREW/JBzKdgekXq/DJf4KH/r6RYPjLyCR7kemV49/Xbv//A819DVZDptFABZyMDIyMrO8YGDj+/2NhYP78/5cEOHy/kF+GwJzz7T8D8//fQmDj/jH8FQEXTH8JFsjEFKqM4PLkG4z7FcnWAaoKaGg0QIABAIW9+Bm2LAQNAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Central African Republic',\n    code: '236',\n    iso: 'CF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMTREMUVGNzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMTREMUVGODE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUY1MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUY2MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bmc50gAAAqRJREFUeNrEVktrE1EU/u4jM5OMedJYadBNi2t1Jeqif0FX/QdCURAFQRHE7lz52LiRbtzowr0gqFhXFbQbF4KFQGjEaNsxaZtk5s69nk7SpCjaW1BzhmHOPffx3XPOd07CcGxuBcxMwLAWWj6KfhuMGaxt+EB2AzQHmkMiTh7nG29xv7GIj04uMR0Nm7hWPoE74ycB0i0kS29dJkrMwYXO8lwLF8++huQac0+nAQ6oiJbQ+C9LViYf8khvZDBzZhG3Zl8AKaBay2P+5WnAjfAvRKLZ7oVzjePNUgXvFnw4UmHh/RHgC3k61hqGWtA9u3QRwYYnbOtdBaxvAnHbHtgbyyZx7PiOzh3mOHf3CrTmKE0EZEzB83KDxR03D1l3mQ40g+jZjNKQGcfgUN64XQa2NyYlEJo11jYJAXkpjA62JEIlk81SxCj5EaJ4eJQsZhDMPWDBzetMFqYSmwqWkb96wxRvXzYqII+NsQH+LsvFDN8xFHO757ddcn7ZFaVT+AYD2R8raGQ8yYqUMBTStpHmHCOSkQHLtmrvFOmexerKNCKtGFFokHhGd1damZiyG8Yd2xxrOf1oemflnjtq1N9ml4y4gCnU+rZJeh5+eIx7z56Yymdrh42sBlWxi01/lIYbYr1TJsqVaRT2uih1m2Z3la2sfhVhkLIpp15HKKVL1tds+sTglEdMVgNbTI8nPWT8MkppbgsMGShhDdyJGNrUXMRPRdch21YkEKh9AFfcyJpccTpGTkgW7SIX6dTxYzPuRabicuvOJV8d/2RNLmdSm8bzilhGgXLb68vLpM0crOPSqZoJq9zilD65DrjamlzwCFwaCs3Qr+0wOcIwx4NwXG0LTD83ah9VH/0mIbo/p2ALPMLORW+r/3ek9Z8wE6wfAgwA1dTxt+cD8jYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Chad',\n    code: '235',\n    iso: 'TD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMTREMUVGQjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMTREMUVGQzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUY5MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUZBMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OGKo1gAAADBJREFUeNpiZJAoZMAN/m/rxyN72ckEjywTA83AqNGjRo8aPWr0qNGjRtPOaIAAAwAKxQQ+Km3kBAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Chile',\n    code: '56',\n    iso: 'CL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NDUwRENDODE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NDUwRENDOTE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUZEMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUZFMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KpHXrgAAAXlJREFUeNrsVrtKA0EUPbOv7CZZNSIqQkCxsrHLR9hY2QuC+A12Pr7DT7ATrAQLbUJKC1tZI2rQVZNsspvMjHd3QxLwgcUONjkwu3fuFGfOfQyXoXJaB7BEq4nv8B4hv+DAO9vA7JSFDODSejAGRurQGdDup7sCHXEJRXCNoRlzdDimHR1Ej7eAA5aGZKMAWvIVEhYR4r6Fnc1l7G2tAvVW6hNqVKeKI4GIcewfVXCwuwbT0OCULByf3AJdrlCxTcqeAlxUn2GZGhiF97LWAPfagGMoVByDCPOU0+3DGoSg9MaFpjDHI+I5G9UbH1fnHhFL5MpFYN4B/FARMSukFikLQpK6aCOOdadHRWWSk5m07GFWMiO2pT9qJ33sJLbpHl1EyAkHMgzIUYQIs4kAu14vf4w9Il8g6UIaiZ1xreQvs+muprEiH38ve4o2p456ueuhL9J9JqF+Ze6fmk4rUZFn3sf/gAnxhFgZjMHI4/44+iiYPmKuTwEGAHthZNcUQvnKAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'China',\n    code: '86',\n    iso: 'CN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NDUwRENDQzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NDUwRENDRDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU0NTBEQ0NBMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU0NTBEQ0NCMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+63sBgQAAAXhJREFUeNrslL1OwzAQx322k+ZDpaFSVSQqOsCChGBl5wkY4AGYeQF2NkYQAxI7ElM3nqE7TAgJtkKaUtQPkto+zgUxwZCgMvUmW5Z+/t0/OcPDesRmU/x7BZKZIZgB0IIh0wmv7KbR3rtOgJnCaGCYQfYkvA3lbarsUdCW6OAhhKhioRIODuZFkyFDxZxlbfqwsJ9yn43b0mlo1eXxWWB6UD8aIsfkIhCRIYl8aApBRLhy1Xe3NLXRvNbxqZ/eC8siqkAQrEAmFi0qOLhxxZKp7wxp+9oqvbVK7pq9xqmb55OQZL1VhcqmlA9ty0OiDC5c1ExWDQRoezdsEvPa4Qgcllz6RQIhF6dhRm3ZPfdxAsF25jZt/5MO1zHnAfWFDAsF8umS3kpBvsDSO8nLqHu8ejAWIXaOQ16xPdHXzo+eihPu638sW0dKhpfsOXFllJtrhX+bRhoc9QJoQNaMTaNgID8VaYrFKdL8edBn+IbM0XP0P6M/BBgAWIia6c9dDfMAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Christmas Island',\n    code: '61',\n    iso: 'CX',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTQ1MERDRDExNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTQ1MERDRDAxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRjgxOUM0M0NBNkU4M0Q2MkFEMjJGRURBREU5RUVFRTgiIHN0UmVmOmRvY3VtZW50SUQ9IkY4MTlDNDNDQTZFODNENjJBRDIyRkVEQURFOUVFRUU4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+BJjG7QAABAlJREFUeNq0VV1oW2UY/n5PTk7+mzRp2tmkpm61c1bxp4K0tZWxDRV/cCIqijdejF3JQEEvhzoRRBBBb9YLYV7ILhRxiEJvxqy1VYarFNqxxiZp0qRNcpKcnHO+H7+sk+DdCt3LufjOOe/3PO/3nOd9D3zosxnAMYAS7HcgcMcC2T+P82pQBi0YagAkgIT7BY0jxstsJS3LYUQ4jm8Db1u6GhQI7IWi3EKTg87rY62LK7q61QlQ+uLEwSmEuSxE+fWUlQ82WcM4UMeGLR0N3AYBgh2UnInnC+TLE9YTKfurP/WQBiEEuHfwKEASeh0OuK/R39c4Yq57OWYkUUHqBA4FEmMEHA7zJtqxoEZuFbUbbQY9VL4/0Qx5wceXtbMTjaVt/e8K9lNJbqVIWKzU3nwl88bzD558teEsH/CPFOjhNTqUI4QXCwGXwWdG3KABFrJwvUr6A4CJDr5irbZwri6/eLq+lMdlQaKE5bboQEpVnTp6swSpe2h1pz3/R7bqmEQT2SWK1jNaK1YVthZqff1s/dSUdexQ+74wuJyn6gQBTWFDBe0h8odVOrukjfejR4btR/tsQuHVMkGU4OJWvVQ2g35PsdJcuFp0XaHr8OwH46NjvuJv8ezsU6dj0ccONlwLn5/zfrpgfDTd9FLedBBXhpLAYiDoRTmT/FVEZgVd2dQ1jBgDZLNkvnNqqm3zz8//2hs1dB2XKpZPp2MjfVcW1x3dTOp0NG6d/sn/7e+hYo18OGlNjZp3z2v5bT3oBQ4TMT9I+Hivl1PCjl0ILxY8ES9LBwRxheiJGrbjMsaEkNzlxyeHrmdrL7x1IRYx+mK+jRxeKXvee6k0EfScmQufma6Alra8g9LJ7QHhh1z4fQAIsLQJr5V8Pg09EHeVUkxCeGT6k81SVZmlrzfEGOdcpAdClbpVqdo6xQiBQlk/NGjOzX6nJXIrDSNm+99+9/jFa0bqyUUtvYEhalQCbRcGdODB6pN1zQMPT5xTkin7KhT1VHE0LVejSCNYyE4aJeLGhn+ov3HyueW7ws43l+75ZX4gExRCtdjwP/TeVZoqKIMJ07jZB91ZBEcnzu2uCEZm09mptpKJgHKyEN0kiuVWzVMq+hREOGIl4y31UrpE1A2oOTizgUfXaCoPOwR+IOAuQcd8u/sbLWc4HTkxk7mxUW+3WadP/gshoa7xaE872mP5DCbVnFGXajTDhgjwfJyvpkQ5AnUXJSrQ4wBHNRXq7q+b7aHByGsvPqw0cV1+W7NDEWCOInWs22wl0/p+xvrxcTebRAELBppdQZTcXEilL4IIYyD3OsChlJzImgEow8Pr5P418r9Zo1B3B5IEYq80ym2Iw4jZWRZ7nUvJO/kr6LLuN/S/AgwAs/Hl9f4h+7IAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cocos Islands',\n    code: '61',\n    iso: 'CC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzRDMzYwQ0MxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzRDMzYwQ0IxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMERGMEFEOEU0MzBGNTQzMTkxQTc2NEY1NDFDOTdFQjkiIHN0UmVmOmRvY3VtZW50SUQ9IjBERjBBRDhFNDMwRjU0MzE5MUE3NjRGNTQxQzk3RUI5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YY6ZXwAAAxVJREFUeNq0VU1IFVEUPuf+zLz3fE+T/jCy7AczrIgIqQgxEHKVSItwkdQqatEqWrttE1FQ0SbaRLQqMgr6g36wIrAoyFe+Sg01+ns+3xvnzcy9pzvzNFIji/Auhpm593zzne985wxCJ8LcLAZztiJow5sIvjMosPAhy8E1OzR7tAnUBA6BIsDfQpuNHO/YZA0ewoEOfrJFJgSDPMKsUimypdiwJJayBaiZ0CY+y440WBfaQaF98ZXdWiPf7bcRJHjmwB+5u1CXki/2JLcvtsCZvslhK1TO43faWFev3HGJ3XitLnygo5upoOlJn4J4xB0J8gzGGOgoT6MVYil6PMD7Q/Tsi++gCqmYAwInobfA6ip+qI5/U2p1JY1kWRXylrU4WtDX0wSJCCXLGpaLUy1W/SJ72GHZca3dKNrCotJ9w55DGjhflrJsmxc8XVKSgQ3pYfzswJZ17oGNxRMLsLvFW7nCvTKAICDChV1r7CcHhbTw9rsg5xMhq55nL0wICKJKJsOrHOePW8vObEuEyRFFrJtB56g3L9rr0VKs6q0Qzf7lbnnsUQBJBQGLW9arffRygBpP6/6iO+YHDHm6vSwp4VbaM8yAoZFCk84U8e6gP1AMQtEQhakTVsC1Xn/7ebF3Fdo11N3Fzz31wVLAERy9qprBfHX8ph8GlDNQJl994OF4JhdAfKKY6xdbnOOVHhfiGhIIGiNndpZMRibx8DFu3K0hRUbH0LMeS0mZO4wP3lPjWQ2VPsQgFGoMjIPCIpszLu6sKYsJutrnQIwAfpaxCSfcH8MwO04hF5MjRS8FelnVPyoO75TVlexTjgspCh5pi0InlJxpQeZrkP7mY8IwxF/M14RTumtmm9j0/AM9+qjbatnSctn7FUbyAbHJw+bOdKMVZUnTWnXW8VQaA6ORnYyU4ccmUTTEpVVbwTJjKh9Wj/5xPJWUqUAoJ5A4hZ0LtSnRszvZuNCOupGmdmPTXw/VmXJxKgT63pDu+eIVDO5UnuK/5ibHfKBvv3HCyovpWv8fdMlpSYTfzbG5/hXMzfohwAC83jil0Oj5WQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Colombia',\n    code: '57',\n    iso: 'CO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNEMzNjBDRjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNEMzNjBEMDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0QzM2MENEMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0QzM2MENFMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jvkEygAAAC9JREFUeNpi/HNRjIE2gImBZmDU6FGjh6PRjAzac0cDZOhH4zlBtdEAGfJGAwQYAIs9A9bKIFNYAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Comoros',\n    code: '269',\n    iso: 'KM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNEMzNjBEMzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNEMzNjBENDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0QzM2MEQxMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0QzM2MEQyMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8TQxCAAAA4RJREFUeNq0lV9sFFUYxX8zs9PdbnfaZbstpVIsLkotFBGqxCiaDSSmEm3kpREQsCGYSJRGI7E+akx4UKImvmn6oImJJlBoomIwRMU2NaCgtWpjpEjb3aXun85udzu7szPeneqbL+1u7507M/dOJuee853vu9Lz72+Z7t+oa2v8BuRcUJBAXCvdXJ9GqpuHE26OhdI8c3sGfEXIig1YrOgG5Lt9hbRhw4kxP90jDXwXqYYaEzxiA/YKMjZtiYBqOeOqrrL/cpADLfP0CQWCdQI8k4f8QsXZu0q3EjFFVmhUUkzpcd4Y0/g8Ws8LoSSH2pqgqhZSESG/WTlgSVCRZZnJ+J/c5m/hld1H8Kgqb34zwLPfG1yYC9AXfpHt9z26+IeZpBIxUO7oaun/Y3bCvXNDmI97z7C5eSsfjg7Qe/9+PHKBc78PM/Trt8zm0nS2PoTHJTwglz8U74NK//r6kHvw6HncLje73n2AkeuXqPXUEdGn0VQX1YrNhfEznP/lNJpbY9OajvJdncwmOR5+2Zm89dVJrk5dE6y3CNnX4q3yki8aDsuO5nuIz//NsU+OsG/gSa5N/VBejAM19Q5QqV35a5RGLUjRKpLNZykUC04y26KbwlirtSYafI1cmrjIyMwoe7v7eGn9QZoLPoouaRnmkmRnYgkAWRJAtu0Al57/fXPcb1lOVtV0tKMbOpOvvs6NKwOkrWoMdYmM4/NxxiNjrFvVyr1rtzH001lEzFkXaGUqddNh6hZdEZUspUnEV8lsHTc4eBbCPzYxS0r0OPISpZbaXmvRBZD22XMXnYVtJzcKU0Xoat9DLB1lLpPEdruYXq0QTFrsG1pg75cGPtNmuk7GVIRRlpFdUvjtHfrErd+0PZu7ea/nAxJCgRODx3ls0xN88fMgX+vDeH217B42OXw6R3vCJCryPuMVIbKWby7p4VOduiRJ2nVRQDY03MlTnYdEbOGjy+8QUyKE9LvoOWeya3SBgtAzGpQXGZZZQ6Sdp7brwmBaqXol5pMkczFqanQC7hDmwtM03nhESJwnFrQoqOWx/N9aXRSOrdMM/LUerMzjWLHDqLk2on7h3iYTyZYqfUiU3JEWb7fAaKOYOoCd7hJa5IWpJqkSDKuylT+YXZJ6U7NFHtqJo1hzPYJ6QKzOOMAsOUmWAGxld8zYqV7NznYuslYn/wVcOdBS+0eAAQAC6FhYtEMFCwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Cook Islands',\n    code: '682',\n    iso: 'CK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkI3NjBDQzgxNzc1MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyRURDQUUxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQUQyMUNBQzdCMUE3RTk1MkU2N0IwNzVGOTlCQTRCQjIiIHN0UmVmOmRvY3VtZW50SUQ9IkFEMjFDQUM3QjFBN0U5NTJFNjdCMDc1Rjk5QkE0QkIyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+isNl2wAABElJREFUeNq0lWtMHFUUx8+dGZZ5sN1dVpYFpNSwWBQFLJuWEpNaH0hoNDZIVoq08YGmMaaNHzRKiakRtcYq1Ni0poFa8VGigkmh0tY2tdSqRLq0lVJoKY/lsbuzL1h2dnd25nrXB2LiB9uEm8xk7p2c3znnnv89F6G8nbA0g4IlG9T0RqTuLfmo7qG0lZl40In91OEaiyq1fG9Lw5wOz9M8Ba+YRHULE3z9Dp2ex0E5bocQVgErGEMMz4awDPGpisn6P2jzvpntWw9VT/5yoSq54b1HU1ZliRIGhfIgjdbIbzW77Bvohs3WJs5629FEv8OPeJqYYVBBiYFrDmKKJdco6ChwB0CSMfkDf9HpTS/Vz69eK/Os1Td23xNrnq1dr3NOeg81p9RUPVeesyWXSX6qqtucd+zk8C0h16hfUqIYaAp+G7UUZTQ3Vgxcde7dUTrlmn3x+Xt5QXP5iB30AtIwgDHCq0uIfzGEJ0KgeP1pelaal5wqNiqKILABc4bs9KbIs7eu0Cp0kmlunTfGISS98UyxKKvZqcLuz/sETiO6gttqrA5vKDYb+bpn2OsOIZ5j+i157qmgn1UKK1YZfG5enBIRi7/pEspLM4ty0Fm7P8VgT10x7naCoImNMDAbweG5wjVZzR0Xmuq+hex0kKLAaeq2dWSX3d6+5/EvTl+FQBS0AoKSDwvLrK9V5VYa56Lf9TR5kvMthntspUONn409UF5p8Gl6fzh82vH2dX2/qoWf+3jAH7xZ1tJ+/qfOYVhuJOVcqCqEpBSztrai4MvjwyNDInWg5q7zVl/lidaPbW/lN/S/vH9UuThkMjHstOPJB3cVVLd9Mp5sK0qzF3vfD/7IRGJhhvIGJJ7jgaPRgnTJzpJvGSsU3Gkx0JRKhENXr72/a1/nC3b6gMfs8ceAVRgajzrCxxMzf5WQeG64o2uoXW9BmcsTJ0ePXptflmXSJyWcPHs9ihCi6UU6RqChwvOSLxiRItjtDiLQbofUVJAjwGGUwIAiY+Ig2QR+EQkUJCZgVYWpABBhZKSC5Ft5t3l//cM1r3ZOXBGRgV+MxqoCztnOr2rPXBp7Z8cRGnLKgVGQBiEKkbyAJMYxAFFgKURR8UyJkZYFPQtIIeXyXPNM+IO52cZLA05IYOJWC1H7IwXFmZMuX2tbv8xzcR769wGNs/5zkTwxDEHZ9kjBY+ss4PBCKIojMRIPVlRMdDIlbt6Y/7TNOu8IAM3QyLT+/7eFuAMDd6z7cve58daDm2bmgmODbsRS4A0xPPXpQVtPr2PXu6ckHU/iuDE0YRMbci4ULiEvPYnl2cb60oErM3t2btAIFNn4E73jI/ZpMAo3jv6TL2gUOXaqrX8srGKK6rs4mbSM6xsUW3afmQkpKF2HFPyH1m+2X2NSpnAMxADoEiEQBp0WtCwicvp7MDfdjhFpoRoa0pPjE0GIvxdxl/gqWDr07wIMALtx7x8ZU/QIAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Costa Rica',\n    code: '506',\n    iso: 'CR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQjc2MENDQjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQjc2MENDQzE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0M5MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0NBMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Gc94EgAAADRJREFUeNpiZJAuZaANYGKgGRiaRjP++fxlNECQAMslOaPRABk1ejTLEB8go+U13YwGCDAAKSoIL49OOfsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Croatia',\n    code: '385',\n    iso: 'HR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDNjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDNzE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0QxMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0QyMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+JdsChwAAAshJREFUeNrEVc1rE0EU/83sbr5smtgmbalpTQ+2IehFrSCipE1BRD0qtAUVBG+tIK0H/wK9iQieBPEmiqkIiieLbRWjtaVSP2mRSDCxdTdpmmSz2Q93Nz14ywQPfTDL23lv3szvN2/eI5+C7RvYBuHN4WV1NggBryrQKQe+UrHnVKcTVNeg8g4Qw2DemLI4KTyPFklEz+8MFE8TiCCAd7fCKfjRRVW0NjvQbdp86znzAJQZcV0J5EXMHRkC5/eivLgGyRCwfDUG2UUgTywjJ1FcOC/Cly2gb3oBRa/7/xETVYW3xGHq0gmMP5zEIh9CIS1iPpjCVFRBauwHSodFXJ+YxIPJcyBVB7iqUh+xspat6ySb48DdBF6NjOH1yRj6b71Fz7cOeLKtiHwV0XmqD3ShgsjNeyho61BzZj7UA5QaHqnjQ+Asb6Lsa8NTeNAmZhEOtiMwMwNPtYiN3jiWzXvlQiqOShLKWhWqy10/0YwGRDLdC5E9tr4aDhtftpYXjw8ZK42FMoj1YXpKmoaNxwlUf2WwuTAP/2AcxOGA9PwZmvbug9DVBd/ZMyZBhPFtMopWKNTQJd8Zs+YyNZe3/+dMPZ9I2LpeLjMjboifj5Q3Vgfjtv79YL/xuaPT1lPDo8aShUHXmWPx7EVOh3cgBq57N4rJJFzRKLRQyNa5QADNx2Ko5TI71TLjsHhUjMWk8fKfG5q2aH/yyLBtNR+meGT44v0sG15e85TT7hv7qT94qBelF7PQZBne00OoLK/g8lwpn3P1lCipcizxTF5GGSu7RaGEyK4w7ry/je54FEinIa7mMT5wDW+WPpj2IOqXjq1otOUKe0vhBOh/SiZ8GR1tTgiU4GfG6lICaNBsclqF+Y75hpqoWZXoTgf0CkFGdtfe7A4C6hJMm8KeWA1vXMtGUIe1rLrFAm/PNSoU2yTW0QvbsfFfAQYAfYmMzgM7drcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cuba',\n    code: '53',\n    iso: 'CU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDQTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDQjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0M4MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFCQTYxQ0M5MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9/ZNdQAAAztJREFUeNq8ll9oHFUUxn+zM7OT3c3spMlus8kS3RL/RU1JokglJrRaFH3pg2+C+CAICq0PRqigVYrStFhEfBEVXwQRn0RQEESsT2KqjUhrpaR/NFmbpNlsdjO7m/l3PZsWRXxK2PXCMHDnzj33nO/7zne19/v3LxxL77MvWrsgrEK0DsRo99Dcrj61FOvgw877OG4/gGf0QLACymvrAbSZzHClO6rbhXCVH8w8b6cn+CQ1JjHjsPon+EF7Ap/J3FVRYEeS3UBYwYlqfGHdxpv2OBdGHyTyqgSLy6hItTSwsRldHp2Ied2mqHfyUGOOkbVzVO+tkp9+EWdoF76sCV2vtRnL2/5nRiOS7DpUgFG6gjVQIDf1HNahgy3N+D/s0bQYqlymUfdp9N3J8kKF088f4peh+yl9+lmLM9Y0G6WI6g18d5HuRw/gC67rP/2I6WSIWQkaSxdR1Ol55AD51w5zaeQeUrJBd7ghUGnbDBxFNrqOmeuldu5ndp+fYfXzr/jj6Ksk+4fwrhaJmZYQLSAoz+HoXXw9OMEJZx9XzF46RH6m8rckv+usDiM7qJXJPvkEuReepeOOQZGxx9o3p5h/6Q0av81hpJwb4Ogo1yXrXmNZS/BRapS3RIIQv6H9LWCsGTpGMk3xg5O4M2eunygeZ/HYu6zPzkjQrn/9pGLCAymvoxqkow2Z2KacmvhqcgYzuRMVBBSPniQ5Oow1eBPad80lsrOQTiDBX7qAQ5Jvb53geHovZ60BKfWqlLqZbWLrclK+j5HZiZF1KH//JVaiQHJsmNrZ8+jxBN7SvGi5xI49+7n59Zf5fXxy89RZIVds2+Rq6jimoaQ9hmtVjJ4dRG5NMmyCoVGvzZHK303+yBTZZ55qUwOREUlZLRViXruMmcnSe/BpkkcOyxeztS3zb9JIyZo8KXgl1hsuK489Tv8rUxh7douCxbRq/iYfWmoSoSCVEy/uFU8+FS8w3TnO7MjDssLDL15FJNdadzotttipNuxbghK/GhneEVd6T7wZXfpSWWzR89tji2td/aqu6dIIxpi2J1mJ90lNy1LSensvAh/nJhdOpPfas4nbhVXC5LDyv1x9/hJgAIwQQwS2sEaJAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Cyprus',\n    code: '357',\n    iso: 'CY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDRTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDRjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0NDMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFCQTYxQ0NEMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+efiilAAAAf5JREFUeNrslU1rE1EUhp+ZZNJJMGm0Wj9IpVWsSsGvpQa6qRR/gBsRN+IPcONG0JXgtgsFFQS17lwU/AALoqApQQwUxVJbBTW2jK10Mp0kk5kkc71pcCFS00JiNp7N5R7uPe9733PuOYoQYpk2mCKBRTuAVdpkLQP27XmEa/87YOEsUXx6nvLsI7nxmwi8WjBRwUldxx49gRII0XHoLIreuWqY4PrLUaX08grVnEMw0Sepa1TnMpQyD1AjcTacvEFwZ7K5VV3JvkHdmMAa6cN7V0LtrkWQj83LRYct1zzp0Jr0naoe1cX3uJk7FJ6MENgekgy8epL8erJEQboMiAwNET31GKTUjayx1GoQ5/ll8mMP0fprIB5Kx6+8QnlGAg5LwNPn8IvGXwtq3VJXshOYV48hypJHpK6mKMrLkra2Z5DomXuosZ7WdC7xZRxl4jZFO4uX/0Y4eQl18160XcnWtkz5WGpNvWtFgpxMUvyPMwu2RUyPoGta8zqXYf7gwuhNbqVTzPu/gxqWyd30Cy6O3cdYNtcUb83/eFsszpFED+mZSUxrgQOJXoYHDjM+Ncnrz7N8t3Irvh2dm5o/nWpHn02/JfVpmt6urQz2D/Dq4xQfjDmO7t7H8f0HCQYCrRuLX5cWCWshonqYgutiu44k0v1/HjcsLrsdwD8FGACqhNA6kzA7CgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Czech Republic',\n    code: '420',\n    iso: 'CZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCMTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCMjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0QwMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkIwMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jrdRWwAAAjdJREFUeNq8lk1o02AYx/95k2aStKDr1s1VaPUgKKs7iuBFbSfDqzsJwtSriFdBp3VszsNwoHgR3MmL280Vdd51qOjBdrCt9aCttVK3Np1NszbxSVhxDFf2kfQJCSFf//f3/p4Xwl0YfJZ+cqO/a48oKGhOeWjPAIErRV/4pvH6/YLRxCqy1qMHkPu5jN7zoxgYmURFqzYFmxlVHV6/F/LBDkw8isHfdwczHxadDzYPek1Hi8ij9VgQ+V8F9Pbfx6WRKagO0rP6iWHQXq2hzaQP+vD04QsEzkXxxiF6tvFCrU7fE7TcR0z3w5PQVmvOBv+jX3N/iNw/jqGr7zao850Nrpfl3kX03QHkcwWcJfeX702hsrp799y+yK3i2qJuPEKeQVU1rMynwfUcwcToAC6GfEBFtWZom6UIW36UGo+JInDiOIxUEomTp1Ho0JDnRNS2Hwxha4tdx5LogS7KiKQ/Yjwzg8Plb5hbMF/naLM5mNEcaoyHIrVDqhRwN/Ec17+/xQovYm6vHzwNiNuhY6EhZQtRumScyX7Gg+RLdJey+Cp58YcJEOj+bkr4PyWDInfCoy4hOj+Nq5lZlJkLcXenNSB+B93UMNj86G9yaYgSwtlPGEu+Qqj0gyjbiNJlTa1dJWyklNRlDMXJZfodSuTyi3u/FWhnqBW8vmPD5HKMXIbIZYpclm1wuWlwXm6Hu1JENDGNa+lZa0rtdLlp8KlcXBlfjHnIpZIilyYl7xDlul8f5a8AAwAi6Fw0Cqzr+gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Democratic Republic of the Congo',\n    code: '243',\n    iso: 'CD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGOTJFRENBQTE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGOTJFRENBQjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY5MkVEQ0E4MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY5MkVEQ0E5MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ljpEIwAABUxJREFUeNqslWtsk2UYhq/va7v19K3dBmOUwYBxxoBDFw4CQZQs/NCFhBAMKIQgYNgYEASNogElQnQ4YEDEAyD8UCQahYgZBgVEnMiQgbDJOIxtDBiuo13Xc+vTdiZDxRDwTd6kP94+93O4r+fTs+tiI+CQ60aJQDAVVD/oPBDVcf8nCopcXyYErHR/qJItw9dScKJcu/yW9ZpeXmgdDzWCaUy2H6Y20I0Lvt6SgO8+BaWAQFfw2rENOM8buVsoqt0Oiz1U7uiNN2rQVJQghK3QliMP01jVZzUTrFXQIk3wOxKBiNybphKGkNTR2p+krm5en/oKN7qNp2hNGZceN3Fk+wCiRhVzSgg9wXTGpR5hSu/vuR6yk2c9w62uX2E1tGBSvay9PotI2JRo/38Jhi2SvCSa4aQwfx1vejdj21xPw0Y7l1oHYEoOkWIL4r2twxgIoLDjpis9uUHbm7OCCRkHCftS0Rmc8UCza9ex8+Y0EfVK8NBdBCUpTxbY25k+5mPWUkb257/RvMFCdZ0DoyGCwRyJCyrSuWGPXsW8BLfC7hoXgW4aXhtHR41nbNZRmQ/kV5RT3jRJAtbGFDruX4LS+ohBBLPBHCJ/1B5KrBsZeqAC93oDZ85lo6pRjFoEv1slHFEYOrAeW7Gf6oI8lrctduuJir/k5mZ+zSPmahacKmF+xh5mOT6k3DlRVHQdc6Zj1qq0tC/oVfIe28+mzHcZ+d0hfG+rVPzSV17IDO1hgh6Vttt6BjiayChuo2n6QIooZNeR2eC0Shm7LroIpWpPpB9AlQQO1k8jRWvi6YxP+aJlEp5wilQYSOh6paWRZAaOOMymnBImHd9HdD1UHsrGTxJmW4iQT6Hdr6ePvZmei5y4ZvZgpbmQjRVz4XoXsDRJ0m3uhLAS0tRQCtGwRjS5QZyZKuMzQ3Kj1KpLsBi04hh6knVDyph5djeUhajam4ULExYtJAYUwXY9DpOTnDnNBOamU9JjDqt+Xoi/LjaSWxDzTmI3dAjHWVY6tbQD/kCXOIvW/jWsyd3MossfwVYP1TszaY6kYLEE43/ztBlIl/0zZKZUU2hmW/9nWXGqmNaawWBslQKaJaTa2SedhTs5NWiXaF3RZzeycmQZL938gKT3b3FpWxcahHWLKYSqj+IRi2j4GF5QD8Uqe4Y9w9LqYhqr8iBJNp9REon+zZj/EI6jEVsk3aHbHxSP2cZrnvdI21lH4xZhsSUjzqLOGBU09CQTZMTEKyiL4ZvRBSytW8T5ypgZxQ+m+o7uqXcjX1KOCUaM8lOcavMybfI2SvSlZO05z60SCz/UyxbSR9DsQXytOkL+CLkPX8S0LEJl/jgW3VjCsS+niC9EyHI50bE72/rvO4etUfFHWMsf/Qmltg0M2ncCV0kSZ6t7oRMWk1OERZdKKMZi/3rsy/xceCqX4ralHDg+HcRQWOqkuGCH4D0dtzK6ar/rncxSbczBbwmUKvx6ojdhcbLJFibQruAP6hjY4xoZsuAbpg7iZbWQ3T8+J7tcbGEVAnTe+/mKuZXIPpMrstGrnT6YjTfGoizwcEDQ8AmLacLiQifOGb1YnTKf0p+ehyb56liuC4vuB/lsupUqY5bL7TNppjiLYuZ2A44kJ/3mNROen8razHmsqlhI8EpPEbyDxQc5buWktU/c1TEWuwiLg2cJAgtMbO03m1dPL6SlZqi4VFhMar4n09yrsN7fphPTRxlb8DtKkbCYO4MXq4u4+tlIqa5dnF6bYPHBq7zT1TV5PRtzlt92HHtytPuFi8s5d3JiYjfHWeT/qrDziS2ra38KMABPHyYU69kw6AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Denmark',\n    code: '45',\n    iso: 'DK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCNTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCNjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3OEU3MkIzMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkI0MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YilnMAAAAFRJREFUeNpivMBj/J+BSKD/+cxnEH2R14SXgULAQqJ6ii2EASaGAQKjFo9aPPwsZvwPBCPKxyzA4o9oxcAikwFaZI4mrlGLRy0euhZ/hmKKAUCAAQC4DxA6JMoNqgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Djibouti',\n    code: '253',\n    iso: 'DJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCOTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCQTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3OEU3MkI3MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkI4MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LIWFKAAAAkdJREFUeNq0ls9PE0EYhp/dbtllbUtLREmtCSYmvfAncdeoJy8aDImejB6MHDxhTJADGBIDJCaSeICEeBAL2ipGEBCbVqgabBf6g3Z3mMXUgyi04L7JHibZmed7v3lnMsrSj0rmUSIfncuWrA5TI9KqYgu8VFB+WUUIUXAHU6tFhpN50vka0aCG6Ve8LMD6DXZHlZrg6YLF2AeLUtUhFvLjU8ERHoPrym3VGHyTZ1p2wfSrnA74EBIuvAbXlVyvMCQLSG2UORXQCBs+7P9j/2BwXZNL2zxJFdiQnTgT0tA15bjtbwzsqlgVjCQLPFu09qBuABWFvS3wFFxXplBlcD7PzFqJNkPlpHmk/f8D7K7g2piehs5OiMf/OXM2U+KxLGB1s0ZXKIzh0+Txc47heHwcenqguxtGRyEWO3CFhTT0z2VF2SkKQ9MagcoDSn7/n7oOW1uws3Mo1FVCGWC0+kDYjiJMoTfqWOx3vLIik1SElpZfYNP868znX6e48voGy7mX6KEOWjRDhs7xLlyft9NclMDJT0PgDxAJnkOV2RDNxatxcNmucD11h/7UPahaBNvi6KrWjMvmwQPLI1ybv8nmz48YoS4C/pAE2t5dIDPfZrmU6CWVfoFqdhAxozIWdrNtbRycLeW4PNfH2OJDGX6dcPA88pY8alsPB9ekm1vv73P77V3sco5AOE6rBNvHa+vB4OEvE1xN9LH+PSmPx1mCejuOU/PuITC/+S5zYbY3+mptwlKMdiInYiiypQLPnh97T59dAQYAfWNBGb6d818AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Dominica',\n    code: '1-767',\n    iso: 'DM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3MDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUE5QkY3MTE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjZFMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjZGMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yQnKJAAAAtZJREFUeNrElUtIVGEUx3/3znXGmbIZUxAdH4mJaWkUYdCDoCijFj2IgjYt2gQVREURWVCWPSAoqE27iIqKatE7aBEmUYFEadlz0pSkdLRGZ5xx5n6daVp774DkgbO49xzO//v/v/Odo3FuyW/sWngiB6vaODTnEwUV0GdWEf3Vxtn3t9l+bQfklNouZYhnMQ6mM06WPrASz4CQBjEt9UtT6QMbtjPNJKhOqHgEsqEwmrzjFGKoPE/iI6kcfSyBkwVd4vkxqi9LSzwrpXGCVxhLYHk9lQscUJEPQ5ITsQeucXK1siXvlBH2XQtS+0hREvIw6B/CzBrE1d5Lt5HJ57pS9m7yQIczlW/F+GjNa2vQEvBe9bD1RhaXppj05/WQHS3H1+4lkP+KaKaTPXdjTKzqY2Cz0A78pTQ6Y/Xd4nzJy8gVX1nE8dYy9nRG0B1h1q+voK9rOo+bmiQYpKHEywF/JzwOpOSOWjBODoJRCcv1uaXIxXg2NX5F0IgxKZ7L1DfVXF/TzOvWCNMGDOrCCd4/m8za7ABBUVyLWwD3mdNGz0iAU9fxxHTyeoeJa7qoOMDSd5kcW5XHhdpvnHqYhanHGZHkfn0GwWjcUmqUXdtwWNX7fWqYeUpRpe7MnK24OF/tXDxLvueqI8U5Kla3y3Y54/znB9Yt6NZx1Zo0XPVyT+Tuz3CyzB3gVrODl/3F3CvS2d85gSubDH73PEIbMm08p4Yy6+Z3im6FOZy+4KboaYTcsIdEgcmwyOvv+sJHRwY9iyrZtln2TfdPaSxlA/jcYmVrgLgF3Ovi0pMuNjaFufnTJ08iwZrChdxf5GTFrGYBlK4alHIOW7Naw9J1LfVEOlw83/ILXn6iMdjC7l75+eIMLSfWwZfu1ORy2KgnbqS1TpSJ76tsiCJ46zaJmKnZ6PvwQ2JGWivHSHutJA88LGCiaOLfJSntf6zFMbIk49B4AP8RYABEcEyuCxX37QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Dominican Republic',\n    code: '1-809, 1-829, 1-849',\n    iso: 'DO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3NDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUE5QkY3NTE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjcyMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjczMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bJEP0QAAAXtJREFUeNrslM8rw2Ecx1/f72ZjG7MNw3yxidlhuRE5qFH8D1yknJUiBwc5OTiSUi6O7i4yNxxGEYWy/GhfTZvJj8nM15oc5PJMmcve9dSnp3fP63me9/N5JPzDGvCAiMIq/YN9rC+OfZu+HJ4iurKEsdyDoEr1XwV5lsw/qQDOm/TcxMXdj7e83302QPIlSfJdw24ykX6655U4csIsDm7p8AmbL2+cNPqa2NkOcXB1jYU0VR43fo8Xu7MTWakRXkvSMsrlimKJOIGxGVprXUw83zF3dMjI8jyB+ua/zfj0LUa1IjEQTxKVKth1QSiy/4uMc9SbycqFekzViZk1o5WwdojX2fD34LZUCaNKO6pRxa+TGaeX7uLGnMHSWc+QcMapSBRLoAtlYZonLQ2ZYZYNTM6usry5h9tpEz/x/daGsPkFFb3bka3Nki6zbV22Pg9HiAWDxGyKONhQ7hI2a4kURRbHzxdqLwNTNdRVFr7MAvhHHz/kmVv6IcAA7rhthUQGtAoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'East Timor',\n    code: '670',\n    iso: 'TL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQkUyNkYxQzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQkUyNkYxRDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzU3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzU4MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yD9vMAAAA2FJREFUeNq0ll9oHFUUxn/zdxN3N4mUdZNsInWNoVJwK0WFUhCLICKoNaQvkupTqXlJyUNqwbeANKBUQa2CGkNhV1daQnxIkYpYiQ/ii4hRUomVdmPTYNoku5n9N3M9k81Gq9Gk+XPhMpdz7/Cd73zfPTPa87vCmQ/2RMOBHzV+Gs9j3a2jWYDHtg5NptqzL0DyYBP3z9Ty6zuLOHkPu3V7E/CB52WGjZhG6tVmOu9tIHu6wNV0AaVpWBLfjgR0Tass3Izi0AsZXjo7Rehtm11f1FH3mE75d0XxskK5/uktZCzA80oR/nsw0R7g03Ot3Lc7SPGMw/RQkdw3HkpY21IBzM1XYFXgqgYfnmzixeN3wUKZ3Md5bpxzWfiygmg1b06CFWB/oWTxz3H0uQZOv9YM9wjNyTzZC54kUCZ7URCl/Bv1gCF4J+QZ0HWdnp4eHEdKOz1NIpFgR6SR0a9+Y/izOfbtrCH6YBC7TVH/uM4du3U8B/I/eLg3RP6QJOBLoNZprurC8zxM02RsbIyBgQFGRkYkWFra+36ySOLZSc68MSNv2FA2CAp4y7s2rW/ZhB41KE8pSmJQzVjWab3A8Xic9vZ2gsEgfX19jI6OMj4+fsvhwyemOPDEL1KRMtwUhOuK4JMGre/bxIcDNDwjCcwt34C1gH1ZI5EIvb29dHR0rGx0dXXR3d2NYRi3vPDHrIurllP2dZUcqBHN7tTQA+vX2r/G86ZlLbm6VCrhui7pdJrBwUFisRjJZIpCIb90+NTLUY4di8Cc7yqZtobztZjtbJmFz108ScJu0So6r6G1WQWsjv7+fgFLMjExsRLbGTFF3xb2H6yHXFEYeuS/Vcx+UmL+vItyKu42a26TsSQX/q8DnQfCDJ2KUfuAmCpTwLm4zPCClDxXaSha4Pavk/l/FXn9eJTek1G5r8IwtcjssDSQ8z6gEkAdS7b8braRJmKuFmxrskimW3hofz3e8CLXhkrSsQQwW9HQatSWANUm2ua/gA911ZF6M4aeMbjWMcdNX8NipUVWGaot+FL9BSy+eW+gkSN7d1B4pcjlj3K4hQrDqoZqCz+NPnA4vtci1dnEwzMhrjyVZeG6/AjIn4hVs3EN13T1022hzNAj0XDDJYOfv3MwxDRG7dayW238KcAADyNSlrek0dQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ecuador',\n    code: '593',\n    iso: 'EC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3ODE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQwQzE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjc2MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjc3MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oj8tnwAAAr1JREFUeNrUlU9IFGEYxn/fzOy66667urrrCusfyOgSWoc0KihLOllEXQsiiIgOdTG6dK1OdalTBxEpI+pi9IfoYBjZIaICpTAzJF1bXbdVd51d50+fa+dmRWHpY2aYj2+G533e93neVxifIguUYGnyrigFsEKJlraur21Q3fLhMkFX5VYgPPLdUDBzArndZMb2X9CIBR6JsxwAv4WotLB0nzyQV9Rew7U3EViReVEDWZ49Ndh/KkbkYB1PXtbS06ehtijsOB6iv99AqciiuFaRnakLqep/xiiEXSChqyEGXsUQ+TGGRxKk9ZPUhBYQ+kN2NjeQczVy4nASnzqLsOQ/trJRxjK9wmQq2UFTSKN5e5zWPStYK3GOtOe5cdWLHpqkOawxs9iJbSmSr+XM2B4LOFfFb6D/CPFx3OLaA6+MpYuGA9W4ZHF/vR/n7WQvPecjdLTKFNekYVl1VvXygs+5xrrANH4TqA3hmt5G+74Y0WPnuPl8Hl/mBZ3lcaL1X9GzM4hUECtfhJ2arlwsQtVu1KUMvZcesaXKJpEYwj8ZJpZapFx8ptHv5fucn0O3L2O6gjLSnDNwYipShK7dMG3ijSdpbGtl4p6XvsoBaqvc1A8ZZI66iWTSxEfrISz9JooAJpApAliHXBXj71a40D3M45k25r99IRCupHrrCme6Jhh5Iz1XUQbB1dZvOIuLvXedxSWbU1m1j2B6lLP+16R2ecgOZqVtBN4uP3UfdO783M1idQuZZGbNxg5WFp62W47AwrSkZ20WTB/p8Uqo0+mevo9mG1yPnZZl8OJrmiNaniE+q2Apzi4VgzUtdlEdUzYFS9pH1WyMvErQWCqcpTU/mtvANiWYbcqGIwpNx4my1phPrW+sGGuhLLs8hYDCZkJKQBSiK8AVOSi0lOrd0HjLqeX/3zxeLAXwHwEGAOXk99HjIQVFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Egypt',\n    code: '20',\n    iso: 'EG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QkM4MTQwRjE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQxMDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDBEMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDBFMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4WJtkQAAAL5JREFUeNpiPCeo9p9hAAATwwCBUYtHLaYZYPz///9HIM0HxCRmqw9AzALEPCTbCcSfWKAMBiQaP/j1iIHhxwkGBg5NiFt/3GRgYDcEYhWSLGchOYz+/WD4eyucgVEsg4GBmZvh//NeBiati0S6GgFItvj/v+9AXXwMjBwaQHczMfxn5gUK/iTZ/SRbzPjvEwOzZBGQ8Qsc1MzSpcBQ+EivxPUDiK9BtegAMTvJiYuR9NQ8WoCMWjxqMXYAEGAAUBIvbfhWcKoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'El Salvador',\n    code: '503',\n    iso: 'SV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QkM4MTQxMzE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQxNDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDExMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDEyMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/anEfAAAALNJREFUeNpiZFCYz0AbwMRAMzBqNP2MZvz//z+NjGYhWuU3Bob3YPV8DAycVHT1j2ePTlx/LG8ox3Tt6TdFydfS8voMDPxUCOt/f59VzLxy+ehCIbbpR46eqph2+O+fO9QJkP8MrB+/Xnom8H7FZd4bP39/+gkMHGHqpBBmZvHsENlzL0RW7bJ5/uZVdog8M4sMFVPInwfPNp299N1Ij1dRypOBgXUgEx/jaMk3ajReABBgAAmeREpJl5cdAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Equatorial Guinea',\n    code: '240',\n    iso: 'GQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFNDE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFNTE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDE1MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDE2MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Tw5JAwAAAphJREFUeNq8lktPE1EUx/935jKlb0BCCYagEGJCdKE7ExMXfgE/gHFlaFwoK9mwUcQmbFyYmlA3xrgw0W9AQkI0xhijRNGqUay1D7AIQkceHTpzPXdaISMPKdje5Exm7pw7v/M/95yZYR2RcOZoe6xtuQC9aAKModrDT5blycwteYJj7TH/UgGoFVyB9hXJdBSTqTC8LoCrgBBVB0OBmgdcXwh+G5Pp2sEVCKLY8CkkU1J5b03g3D6uw0vKFQXoOXgHn2eBJYOclL9WUQ0oZDIuOzixV7ADnkAicZNgbtF3+onI6QewsGxCtUkW+bjBeT2stax9zbQ2WMUihPmLAlJ3l2XA4o4pG75I8BV8+jDAxMlGXDvjdIEoQCy+BuPNFLYPMCgAbzet81YimCmbpiTcRT3lSeNSdIJFxuZYKbllYy42/0NjV0cfsLMP+9irqRQjqNNnZ9sGLAdlFG7yaVEwEI2j99E3x+281oRnb8fx9N0o5uo8+yiubXeD4KbASsFyTHsCAVxuPQ9f8QKOd5yCYRrQVK3CdtpyB8gMgs0YuHLxCO6fO7R+KzOdRTz+EaveNWS1WUzE32BmOvcfFMvKNWmfeSv6+1vE8AlnpTaFWhGq96Cxuwsq56ij3mv2VVZYksI3QTntWX0bwu+jYvjuS8u414iFpaLdTpZlQXNp6AkE8T2Xox4WCIVC0PN5zBYK1P/KbsCqs50kVBZKsBPhFxGMjA2y+TzUuS3SIue0MiNhbZRqBUPlG0rdBO1C7/MhjIxfR97vh94cgFuYOz5B2/Mr8096GzoJegMxCfX58dMVgPoP6P4+ElJpg1QaIeggKfVVHVoCBw+XlRLUR1AtWHWonWpSqsceD/kpvXotlJZ/ffTfAgwAojL4tK6cs5UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Eritrea',\n    code: '291',\n    iso: 'ER',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFODE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFOTE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUU2MTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVGQzM4QUU3MTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Jln83QAABGBJREFUeNqcVstvG0Uc/mb26XWcOHHjhDSv5l2prcojFKkHkHpCnLhwiTgjxAWJG/wBiBtcKnFBHAD1wAFRKAcEQhyQEDRNLYU0TkAN0KaJm4cdr73enZ3lN7tpsfOGlVZ+jX/fN99jbDZ3evre99NhZm4ixK3xEIuDEn5nBHAAOwxtFQYrwJEXa34R4dhLrWcCz0VajBJhS5e4Myxxc5JITIWYJTKFUQmZjZKBVYYU3TYRYeothv91qVFsXb9UoccMk4AjGZwm/hV689akxG0i8CsRmVOKDJAiuSihvUsk1UheRv8B/DHwvg9oih1ytMVqJDw36V7oF7h9kYgoa4jUnYEQXj56xBRONbGGRXs9OA6YFkcBQ0iARlbAfCaALHPIFY72oRD6LxaSAEjscImFIYmfLhCJieRuyQiRSB+SkVZgApUEyo0IxrMC2fcrCIo6vM9t6JMC9owH/1sT229noHlAir6SborXo4zMUkZmVUbImsJYa0ZiRfy9wORzKGlnr7uwX2rAvW7D/8qE86qH2ic2WFeEttdcMM7gfpiCN2dC02SMe1xGbk7ttmY3Iy3AoeCwzvvovFFG7V0Hm1fb4Qw3CLgO8/kAGy9mY0V6ChsQSxq2ZjogPVJI3x8r5XEqJKmbiGwTyfkRCVVdvrdh5nkBSUMrV9MweYCua2XotFABaX30CB31j1LQL5Fx0eE5VlWrEaESyb9O9wblwSQil5d0vPG11QQsk+QaTxFwUaNnDBHJvvMeidcWwf/RQLhF4BQ7/2cduKfBeFLE605yYNAouE1EeHOrGUs2oU0H0BjJ4UgEBR3hXxp0IqT0U0CsgxY5EbReeXRnjiDCW046HkE+4GCUQuURp+FdyyWEqxyNGxaMESW1BkvJPErPF7WTHxu0zBRkndhCt1j5F5ipGeRB/RvqKQUmS96KhxSgl3Mwzgp0fFyOq9V2sQ7rzRoaHzgIlg1wLg/FMoRATmwS0F10h3/ChIel7hF8+fQre+pErEI6rVIv+Oj4bhPBNQtrM93IXHbBqQaRy9D+xTbCH0yUrnQlkhky2bTaURjQSbdDmlTj0FA/sNwzisWhCarRBBaGp7DSO4zV3BMHnFw0R0iSc8KH81YdvEzDzwmE8zoiEkPMa6h/moKscti0gwwB8RiIUowcVvKDWO4fw29nzmJpYJxOskmsdfYg0HSkvRoytR3Yvnf4Wa06LYl76lwdzjs1+J9ZaFw3YyAL2zFDF3nc7R3EUv84Fs5MoUi7+v30CNazeXimDcerI1vdjoFO/COReKSkq1Jz3VhLGoOV7kEUSboi7aYwegF/9I2glD0F37CQrruPd8QjeWTV9JbUHeDRYn48BlocbPXI102SzkW7W0Hfw1VwSUCMNY07uma6I2qZNErx0hpOoZgf2+fRA/JIaAZJpzxSQPepbq01kjEoO+bvSRPwWmf+fmH0SqbZo5LyyLDpB75GHpUxsP73PqCD50cH/904YN0/AgwA07gejJviOMwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Estonia',\n    code: '372',\n    iso: 'EE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFQzE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFRDE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUVBMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVGQzM4QUVCMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+r3fpugAAACxJREFUeNpitCo9wkAbwMRAMzBqNP2MHgWjYMAA4////0dz46jRA2I0QIABABDSBIkzwazwAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Ethiopia',\n    code: '251',\n    iso: 'ET',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRjMwQjczRDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRjMwQjczRTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUVFMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNGMzBCNzNDMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yFhTVwAAAsBJREFUeNrUlU1oE0EYhp/t7rbJJv1JMaVJbUuLP4XowVapIGIv/hzUIh4VqScRUQ+CevDkwYMHL4qg0oJXUSiK4E3QQ0V78eK/TdVG20hjbX43ye74xYDgpRsRKQ4MzM7Mzvu97/fONxrHti2yDM2Q3rgcwHUsUzP+/BcNVBkcW8YKdJ9MGdXxPwHWRBzlQi4hOpngj1aDKHyuBuGPyLxR3VMTcKrBe5eqgBbA9wmiO6Frr4x7ZEEHewpmHki/C/kOicWS7g1u7BqY9zaC5tDizjCujqPWnCTvNLOuYQKrzuZpdoeQ34IKRdjvXuRb3UpcpXsLqJIh5ZlTf4p3ySFWTzyU73mR6SsH2x4Q1HPcmN2HTYvIHWFy824GovclHa2eOdeceFh5saU+xeDkPRLpGH1Nk4TMFBsCbyQkxYt8D3OFCG8z6/H5Znk5uB1KAWFtLi112dWW3FBv5MhmozxL99Em3LY0PyNipLie3EfZNTnSfodF/zTvJIBXmbXMpntpt95TLrX+/T1WYqKAyLpQCnNzdj9p16okgIKwyrv1jM4N86XQJV7L4lSMWMPVMrygXWURDCSIBeK8tcPkZe51vpuj7bdlTeNpJoYtZmrSCnRZH4gE4ygn6EnJ0MOOB1s5wXI51z/KnsfDdBpxOsw5LsyMUBbGI+FxLMNmRu/k0sYz1HUUcHKNotHS52rJsz2erta1Eq12ghP+81weOgVFqVbFuKzJ4cYqCBQ5/OgqY4unpCx0iNymt6unemOeCVEiZdDJ0BZMcGXTYcb6D/BxRYhKmYim0hx6fovTT64x/z3Md6MZTXO87/HHrX01FVlH02lwikQWPpHzNRIP9Qonje6FaRpz35hrWUne9KG7Tm0VuFbgX+w1DV+5iFXM/XR2zvQLYINUIvVvX6cKgK2b2P7m3+b+q/c4vRzAPwQYAEGjBC1vMOsHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Falkland Islands',\n    code: '500',\n    iso: 'FK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YzMEI3NDIxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YzMEI3NDExNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQ0YxMEIyNURBNzM0NDZBNUFDQ0ZCMDM0M0E2RUFGQjkiIHN0UmVmOmRvY3VtZW50SUQ9IkNGMTBCMjVEQTczNDQ2QTVBQ0NGQjAzNDNBNkVBRkI5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oe8x+wAAA+dJREFUeNq0VV1MHFUYvffOnZnd2Z2dnYVdWaBAC8rWsqBESa0KbdKSRh+agqYJ6YNGjWmsTeShryb6ZOKzaW2JiSTGB6Ox2iaIP6VQK9BCKa2lrMDS/SngQrvL7s7uzNx7vVvbmvhiQuQ+zCSTfOc793znfANf6OkHm3MQ2LSD3vfMDh+Q+955OtTRFL1Hx+8K74alM1/0frjdWi6rjmJdF+FxT3y4KXriJS/S1FzB/k9QyBlTgI+sPb6zL9L7zO0Tu0I/HQufjOJiYaEILEvXnnSpe6+P9jSr6+66D1xN30TyMH5NVWXKiyEgNrNsBh/CMcawiDCGjD34go/tDqY9rTNyTpsc63xO7nyrfearxDTIbpHo6TDRJS/oPjC+Klhnr74qk599SiZvy2KpXhAAhZQwgBGklGKuAOIN+PsBNpzV64MFkizSGBVtwJwgzwAxUQDTFQEgpteYd5crQK7BJSTlwNudvSnZo1qFtdX883vKu3dXZrIkRaCEBV9AHRmK/vBdzOtzQQgZb5Y41BNZzueQ2NyxA49PaBLJCK7pU6fqD3aFXmyeuzCZtmG8sSX55x0sYlAUBdPkWpqmrXqdtdsCtVhxerxAkFfIvZHfFm2LPlIcH3XuCh9pP7zVajRurevSl9XPNgr5+k8/znYfPPfK/r2vrTZOjJ2ZWu8vfyrqrsCXxlykyEUVuLOoEMmSRCzS8ERdYjG6Rk1ZVBGC/0AfDzu6lr6VJ2OfTRe/15vODi3018bbgX05uvjm0YFmD3l9T9Whmvl9yanPR4f67BqKJQkwi1JdEht09+nBQfyH4lXdlUFNhEEkSAzy2ZYaYBiLf/LLld/DbcNqGY3Ew35zOCUvtr6RWpZDYnH+avK9K7cHuto6/DUW+tFJCgZ280HZFHLiTgZfbtmHjby2NaRWakuzFw3L1ID4N2thytE5WtW6tJINmBldlSTbml6jI6GdkTuGy8jqulLukWevLQ5cTk64ql0Skhi57wDBZMQfyOKc5dT8C3PzkuYZvJBKxtcVRSyx5l6p9kq2vY4ULh6ilHEHlTlBWXoJOHi9SGgJx+9T/CXrGoDwKHBPA0VzzNzMJi6mHwumzg9EK30gY9DJacOjKxDQjQedo2cLsGtLdHvs11tzat22HbnyNufJj1punjNVD4Fo49AMQAcrpCzfiLuFIKWmeT/K0CkQJMEgNgz4KI0bWmnUpeDz6YriitVUxRa+vpTLgBuVhwXEfGb6fvaFDUKXNKGsXC4CGSZTbC5BJdlRJmcgYbQ0CAA3zPrhPio9HBJwSKX8cJnYvy5HkYSY9f9uasY7oU39FWwe9F8CDAAMDrLSTxhgUgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Faroe Islands',\n    code: '298',\n    iso: 'FO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YzMEI3NDYxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YzMEI3NDUxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQTQwRERENTE2RDdEODBFM0EwRTg2QkI4NUIwMjMxMTQiIHN0UmVmOmRvY3VtZW50SUQ9IkE0MERERDUxNkQ3RDgwRTNBMEU4NkJCODVCMDIzMTE0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qirpigAAAaZJREFUeNrsVM8rRFEUPufcNzOM8bMhiiEL/gAxUmxkQzayUChFSvkr/AMWUrKwkJI9O5ONhRT5uWChNKWxGIOeR71373EfjSbewlU2cu7m3Hfu+d65537ng1wux0E2tnQ82DR9AvEzqBpunBqaP2RDI/g1+4f+DC1EMDoict5nBtTLFLq0NBwYiAhSkvPQygoZV22NLx4RFTOqgqqQUKZy0c5EnZXWHOKS+prtx8jE8gGz8K/wTWh3YfXZdgWJwq8KVVd9befdlYNFui8d2Wtva+M+fUMmZMVTTCi+JwgXFqM7S+A5EHugqAKoUE4MbAkWAxv0OuQflp9y8lv59h9WvoNGuH5D5lr6bcezyILCTIZIQ3Uye5m83CWF+y3de/FWJ32LJjSxvNnREooyqA9onS8Qdh7L5OZ638U2gdyPN6cGRnorbcXff0WwNmbbAIu/BiZXzjPXNxJIc/opnekpf1mbaTfjtW27gQHXU0Tv92dEIV3zkfGkCgxoVfzorHZM3/DvKZ+eGvYFCt+o+CN5CoeD5YlFCJRWRY/02GueCGEK/SrAAFuW4Upd7P7AAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Fiji',\n    code: '679',\n    iso: 'FJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxMDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjUyMkUxMTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTBFMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTBGMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+scF2nwAAA6lJREFUeNrslH9oG2UYx9/3fiW55C7X/Lok7dKuxNqljii6abVzdXNQhqNanUzrwGq7yVxRJwMdgyEqYzgGKipDNgs6qdCOFf/QualU0ZVBdO2SJgWrTVuXn5fkkkvuktzlvLLgxL/GxvzLh+ePLy/v++HL8zzvA/s/mgC3JhBwywJ7I7XU2LXmi4z57bG5hTNTwGL9dLi997P3vt6++8mxNCiWHYyy31PZ3dMst3pfiFVKBYHE0Oty7X1/8ZXh8Sfiwcs7nUeP9TkeWJMpA70oFXA97WIOekuhZ5v29q87VGxlTyQT0aSVIq7TNXzqpVHJ1PAwU9kFlrHersKqtuWx7+DzA+DjE0bKsApkwUPdI8HSxAdnER2gOh1VBEBFRRVFNJJ5ikEkFUAtgYKitJgjhaIm6mhx7UbNY7YgRyWo8gWbHqkqtYzBxAh5PY5wNlZNcI1o1e4wAIYZGtybpBlKKsmkgV6I2hfiFRON6AGEKiZWUqw712jBpWq91vPdW7JRTgCIb0OHJZ0wFXlOBKmRUfrpPkdnu/lCKFWBl1gPcyVGspSKY2i1oj1LQcP6jLTvz7dkfzkV1VtliZgGH/r3jPmG3NJiHX1XiL1327YDj9/uoTh1cvpYjPa30neOfz7T88jE+q6hQYUKXgqfjw7zTRer9KMV0ULIkgKwfBH6nDNre2uZpDvI/eghSls43msjufK1CTm62bXHHsVGfjgyHn5nUc/JtlNDrBVDhYuRXc9885rf9vqOO15lsU2Ni+/+nPipbZ2I6CCoGgtFfoPr1H07LReUF49/O39466RfuT/kQ05PAbvxKho9vP+5X85PHSwyJ+kWxEq03GNpbmN4koy0ty21WAQ+fS4Sn7nb7+ju8BpLEYiVUAxT1YyV8k///vKhUfu5QCH1hy8obD8dn8vxgWYnVZXrrveFs7XOjYws9ZMQw91Akady8tnHdlDZ9OZNFOhxK7Va7Mrym5Oqjl3tEEukrNQgxBGcy8eiOrUBejgxXasmjeJshR+AqB4AqY52GwhQLGhKWKnSSotoLVMJTeSyCgAr7TbhhAnXbgia1rgrJ/F0oP22niMHOgAorh5s+cQhNdkuT/SScwFA6+roG/vEhAmVsvDLr0Jmq+yCSzPf+46bH/xtftZl1ikquCk0UGGDCQ+EZ8OK0jHQF0k3F7Koyyhqn+nahNzw9tF64DQQEoS/NjmNecFZK/+Te1Poq3XXFoqFz//dg/9oqf6P/lf8JcAAQ7yON3YEhEoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Finland',\n    code: '358',\n    iso: 'FI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxNDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjUyMkUxNTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTEyMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTEzMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FFmzagAAAQ5JREFUeNpi/A8EDAwMnxlwAJO4WQxn915jYJAWhAg8eMPgE2PFsLkvkoESwAKleRnoDJgYBgiMWjx4LGZkZMQiRrnFjIFlK/9jk2BmYmRgYmJi2HXiDsOHV8DcxskKkfj2k0FCVpjB2UyJ4fvPPwyQ3EiGxQwi2dh1ggwEycgIMTBwszMw/PkLEWdlZmD4+J2B4ek7oOuYQSaQabFpw/8RlbhYQEUg/qAGFpVcaEH9CRTUH0AJgeygZnELN2fAlbhAKfrIxUcMn959YWBghyYuoKWikgIMlu66DD9//SU/cf0noNM0fjbDmT1XUSoJ31grhk29kbSNY2zu+v9/OJdcoxZTLx9DwGd6WwwQYAA8jFV5xASNJwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'France',\n    code: '33',\n    iso: 'FR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxODE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDQjc4RjdFMDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTE2MTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTE3MTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NYcTvAAAADBJREFUeNpiZFCYz4Ab/L+fgEf2q7YTHlkmBpqBUaNHjR41etToUaNHjaad0QABBgAMOgSHJZqdhAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'French Polynesia',\n    code: '689',\n    iso: 'PF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0I3OEY3RTgxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0I3OEY3RTcxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjlGNzM1RDc4ODNGRUI1QUNGNDFCRDA4MDk5RUM0M0EiIHN0UmVmOmRvY3VtZW50SUQ9IjY5RjczNUQ3ODgzRkVCNUFDRjQxQkQwODA5OUVDNDNBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++fOASwAAAW5JREFUeNpi3MugzEAbwMRAMzBqNBpg/P//PxHKbjMwrDyd8VIyVkDGWpiBwYOBQYOwpp+/fv3HC37/Wv3jn+S3vxK7mCXPx6r/+S/17af4r98LCej6/YeJAa+r//y5/fNHPzOjKAeTyf+/Ak8Xv2dgUOZgk/j1vfff3ztgJbi0/8cX1kBLWVjWcfOe+nmX59lZCY1+SZlkvWeXFV+fEefmvczEvIoBb1iy4I0IhgtXJFgFi9gPfn/z3IC/Opmb4e/DpZ8E7+7+p2b587O8vPR/kCIyjAZq2nHE6twT5xDRhzK7Jq75o/BbTclv9aIr3Cp7F2faSX8i32ggCPfl5zt0//5Pdg5LO3aGtx/ec/ww0n/HLy/Dcd3GRAWPuSCX/fr5k5WNDY+K42dvH7v08reIOP/fz5oinBvvfhNk/G0ozuHrboBH198/f4hK108ZGBZsf7j/1D1+Hk4uLs6SBH19TiKyzGjJN2o0XgAQYACA4seGjOuQWAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Gabon',\n    code: '241',\n    iso: 'GA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozOUMzNjM2MDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozOUMzNjM2MTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzVFMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5QzM2MzVGMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XUVjwgAAADFJREFUeNpiZJiXwEAbwMRAMzBq9LAwmvHPRbHRABk1ekCMZrFbsm40QEaNxg0AAgwAqCcEmp2Ti78AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Gambia',\n    code: '220',\n    iso: 'GM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozOUMzNjM2NDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozOUMzNjM2NTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzYyMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5QzM2MzYzMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I9VNdgAAAKpJREFUeNpiPCeo9pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERp7FLD/e3x0Qixn/11R/ANL8QPyPjqH8kfHsy//vgAxBIP5Dr1AG4veMDLxtA+JjFlZOZqYBSGhMLExMjAOTqn+++fEfyv5PrwQNsovx5tV/74EMASD+SyeLmYH4A8vZb50Dk48lE1g+0bmCAIHPLIriKqOVxDCvnaBNHl46N30+AwQYACKRKLCtBsdeAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Georgia',\n    code: '995',\n    iso: 'GE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzNTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzNjE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzY2MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjM0MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+6i4DLgAAAqBJREFUeNqkVllPE1EYPXfu1ASwIqEErCBRQ2Ki8UXjg5IQE/UJWfQXuP0+EzHGWPRF9MEHDRXColIBbbSWFlptO53l85uFhulMZVpPMpm7nu/ebzm5goi+A0jyV0YEULWG/IWbMDYy3JOQQwNILKWg9PchIuL8ZVWvgQN/wLIA0wQUhbklOoJpgZhD2PulEjCuhO75uo38lSkYq1/QKcxvWeyM34WxvhE6HzCspRZQuH0P+soSijMPoT1JtW1Ue/EahUnmWE6jOP0A2tz84Yah66BKDUJIJ56k6e1flzlQqULA46iHcHBylagJxqcM5c5dJ/3javMUWZUq5c6MUxYn+TtFP4cukZkvBNYZmS36dfEW6cvrFIKSGnZgeXYUA5ypEMrhtxMidFiODiPx/lnLeTXgBiInm0VMBRmc2brZ2CyOxFy32WvYkc44t6luuFv3uXwcPKcbgQOI3NhEyVdKh92OS80q7LrlZvfZgNJ3nK8g3TKMhrLIIhndMMhxv9LLYqFIt28fZI8PQkZorrYyrNrqEx10gJyaikN13R8Rqhw+Ed3ufky53Bpu5TGZHHRVjig6lbVb8rva4s0xCdHTDfpTdRND8ZKrNw7rRx47V2dgZDZ5gLV6MIH+t48hT4+A9sp+jm7mqPg5Gq62yUKK2zXU0xXMxt6j3hi567gtjsUbB/OFxQrnQKtsMDPb2Lk8CWPlc4SwU1O8PY5N1uprszDWomr1/BsUpu+jvryI4p1HrLMv21bM+vwCilPMkf6A4izr/dNXEW5cY23d+83eiTl/W2vbBdU0J97/5Gip1WMTpKdXOtfqjS3Knb9B+tJaG1rNGZpYfO5IXqeQI0kk3s05Mhtax96TJ+57+vCrQXRJ/BdYQoUqWz19yn8FGABqxdXVw6EGDQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Germany',\n    code: '49',\n    iso: 'DE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzOTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzQTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGNTlGQjM3MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjM4MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aBEH3AAAAChJREFUeNpiYBgFo2CAAOMNmhnNxDBq9KjReBPf/3OjATJqNB4AEGAA+2UCvgLMJf0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ghana',\n    code: '233',\n    iso: 'GH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzRDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzRTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGNTlGQjNCMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjNDMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+nJIV5AAAAbxJREFUeNrsVstOwkAUPdMOCEJ5BEwMiS4wwbhRP8GNxGj8AF240K07FyZ+gq78A42J8RP8CMJKdia68MECQcqzls542xBkowzEoIk2venttDPn3Dl37gzLxzOPAFJkNYznMsieeNdB33Ms4Bp+6Pp7wNyq6EN3EmQBjXl+W8iR2POp9bbT9Z1hOvp8BEy3/SaHxXQjdZgsJqvkRMi+HkF2hdEJLaHj4qwBm6ju7oWAF3Ioco86Gwjs/mFyUdJYX8PnyUCgrYaEbjD4ExyX5xZMUxJwFHZZwCb6kyEGIZSiZlyqTnCQeDWBrf0qcoUOylUBh0BmU89YzOi4Oo6S8AyyJr83qwVFG0wynByEEY8w1JsSrbZEKABqMxCe1iHq6nprrmQq5jEsS6TXgshuBHoDrKwGsLAZpG8CmlQbyzWOSC8tB9MlDZsFC9V8A/fXYRj0fnhURymnI5mmZFWbZjeXJNs5Xa6QE1NZThN+hrsHB4kYw9I899pubjsolgTmZjgstaXlLqdXhu2sqbxBeJWDCBMBmOKj3NsESHoPUUlqHHFrtJqX6PP9rgz/m8Rv3Z26Rx5jzEef2rsAAwA2l4mM8iP6VQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Gibraltar',\n    code: '350',\n    iso: 'GI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDdFMDYwMzMxNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDdFMDYwMzIxNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iREFEM0ZBNDBFM0ZFNjU4NDVGNUVEQUQwMDAxODNFNEIiIHN0UmVmOmRvY3VtZW50SUQ9IkRBRDNGQTQwRTNGRTY1ODQ1RjVFREFEMDAwMTgzRTRCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XVIZMQAAAslJREFUeNq0VGtLFGEUPu9lZnfVHXddXV1NvKQZmeEG2QWMoiyIoCT/gFkGUZ/7Af4CwQ8JRRH2pT5I9SFSAqFPSTco8pK7Re6uu7q6V2dvM+/bpG142VnF7OEwDMOZ55z3Oed9kMfjEUWRMQa7B40wFApRs9ksSRLsNhKJBEYIwX8AIQRvJ4/viJ1uJyng/v5yoJ9Yik3U2Hn7libiv1IvuN3vHj2ke6pJkfT8ydP3Xt/Rg831h5rl+YBvYvr89V7LvsZ83NFolOsg4PO1mwxlAMNDj59dvnQH4MXV7qHBuw6AY5IUm1/g+vD7/fm0NtlLL9oqbmpax8Ihl3s/gPzTUyIIPQCdVVVKWenKGHQHgbSuzbm0UwEGz52tHn1dSIxjdmvNsnw4nnhbbPaKuH0hQlh6/IizZ+yNvaAw93gCAV2tCcA3Ig4D1FDsWgx+QuwjEWbkeCSu+ESDL5m2M9DjXUU+QTpOntKeCldqAUsMLYNq49AEFHElA9DVeWXnG+L5MH4BIAJ0XMAtCmpUYNJAFc4aM6xG031qMj81RpD7NgZmpmZHXu0FaEonS5fj9Uq6vpCZ5ThLyAeUVC2Aa3Qk6pnVJUaIKouLEAwqjK+phnBlhXfwfofZWtB2nKqqk6ElY8LbEO/6XJIhVHMyK0F1Xyfm+gekvj51bo6vdzdqEJRYFLmudZN7DzZskHYQYrGgcoeqKhxYUZK5HeJEHXa6UZU/GTdirSmEMfMHIBLe/K+mcrD3BgXGtGVQNpkGC4eRFtnsghBFYFCnZTXK0RoWPS/mXMEEGdFKEl4fqwX4yrsMwkKlYGmgjihKZL/z7IZtiD9sRMAcbeFrJu10BvzljERsmAHb0oL/JlCiZmi2VE5o19KWSp0YCsgVv1NEfRHWbjTKpGjM2Qo/ToO9XM+WtT4FBtYlZhCFUBtHKtvSvkk4lGpp/SXAACbxTzWqruOZAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Greece',\n    code: '30',\n    iso: 'GR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0UwNjAzNjE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0UwNjAzNzE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RTA2MDM0MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RTA2MDM1MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KGW0OAAAAblJREFUeNrEVL9LAmEYfj79UgqtiCQoHIUobHAwiBrdG8JBqKUpAgkaoq1F/4aG9E8wxLHJVqmla8ghaDB/QA13lVh6X+99d6lIRHRH98DDvd9x3PM+74+PASc1APNEDWgim03h+HgdxeIdNjdP6fUk0QMTOlHAJoLER24FGHp+A2YJtondoUT+Ls5/992HFM/nU1hdXUCz+WpXGNwo7wA1CGH+VNc7RkUslx/SZTw+h6WlkKRdsEzmUv0qc6v1imRyGWtrYVSrT8jlrhEM+uH1MkqIUmh30evpYIzZ1dWYEEL9ub8DRKOHUJQrimw71nipVO2fVLVD5VxAJDKDRuMF5fIDxsc5fD6vdByLbSAUWkEg4IMDOCDHB8JkUmQyF8JAoXBD5x1imrhH3BeKUhcOQeXmnn6hTf3zy8jjMQZ+2trjnpzqev0Ni4sCtZrqxFR3R9ZGl5EwaivPg71NJM7gFLh5OQxfFMPwWO/YSGLM/jrd3rb6U93pdBEOT2F2dgKa9o77+2dw7oX97bG5Tk4K8+3tc7gBKuKWO47T6V13HLvW40rl0a0eH7njGBjTLGHtn0Sl1qcAAwDRS+VdNgkmcAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Greenland',\n    code: '299',\n    iso: 'GL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDcxODhGMUMxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDdFMDYwM0ExNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTkxNDkxNjg0Qzg2MzI5QzUyMjkyQjk5NEQ3QkI1QkQiIHN0UmVmOmRvY3VtZW50SUQ9IjU5MTQ5MTY4NEM4NjMyOUM1MjI5MkI5OTREN0JCNUJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jNGGgQAAAtNJREFUeNq0VU1rE1EUve9jkkltmqS2IU2tQhXB0FoVArYLQbDFgi1uFP0B4lYEl+KfEBHc66IFhRYbUYTqQkEpLdovTDc6adO0NWY6MZP5eM83KU1tkknjwsswi3fnnXfuufe8QZxz+D+B3RK89FQEq7XoFtQtIVCMrYw2+Vyfm8VaDlqaaW/cP3y1Kdy+ezQ6AJvXCsOylAf3lo/65hEsEfjmhUUMCwDJrubU/btmURff2IzXD1SttWUUlSsX9dcfpKhMggEhmvMNEgE8m9VXde+lgY7JNz6vrz73SmgbQBkd1icS3p4OZCPmCPNXiQgwRsbXNenyhWNT0/if2ph99LAwkfCcCnMHlVURAbEuxcJG4t3Wk8e7ojcGrU2OU1lgUHAbSkccQn3we+yZWTrOVRDRjHKysJJU4ieJ2NwkH9B7vQgFiHz+cijW4zp8hmFIQnDMEZHzqylb9uDWECdS/blCzDIz6WJ6VY71ILtYXSFjiK4NxR0NkW0rGc/gSLeyzVUNbPMAaEIh2Jq5cyt7+ybu7KyQxZGMc2osLhBHE8Y2uBX5RLGEg6EG/cZmZ1nyJ+SyFdAOUwSUtLUR7nTe49fNlWVtbqal71wjuNr8nJlcJN0B8PoqWomckzjeGx/ZZ6eLhZcvGqS8PfaUpfJY9ruNCErGIjusS0w00+Ltifeh02fdfCY8RQDUpYX1wX4CJvIHa42249z9cx0KIDW/eWM0n0m5cRG4+bSyfm2Y/1Jx6HBNy/CyZfaSpi2dOCKtKD/6z2y+nareZAHkpl+tD8Rh+bt0vJNbVm0pyoJgxzS8XIloLVM2zJxBh877R657e/u4P0BVtTA/o02Mm4mPJCiRrjAYtvvd7QiyX+tyOZhgy7DSm5bKIYC4j+CCDTlO/YCibUC9yLbq3tcONC1z3VcOY4ApjUZoVKhgIsZ4M4YOygGLPWCzOr+nHcuI1x8BBgBBy38D0GVnSQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Grenada',\n    code: '1-473',\n    iso: 'GD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNzE4OEYxRjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNzE4OEYyMDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA3MTg4RjFEMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA3MTg4RjFFMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RYghnAAAA/BJREFUeNrUVVtsFGUU/v6ZnZ2ZvU13S+n26gJ7aQPYEhKJtOqDIU0IJPhEY0I0RhMNRkHwmhh5UNPYENQ+qvHBRHwzPlCiiWhskAQJbi2l28u2DWxLd7tAd7ezO7M7M7//LKWm3PSFB0+yD3N2/u985zvff4Zc9EfxcILDQwsH+1V4ElTLZoksQAIoZRlw0bfynAvjx3wOWPgPGWKjkXpogkSveZyCSQkTRNKseIsn1KM+7svk8+4l3ckKsH4IB2pWCbBzFh6UoURxVhTf8vli3dSP3m2zBU3ibNahUunD1o2ndrV+1PjnwS1TPjEN3YOlagEX/afDEmGJOzOMbk0F0jLK8pej4bcXtndPzD0zlklIbhvaAmk2tdyw+9XBrhONkaOPTrzcPg1PDjmPmRZA6L21tAjvNODLIyV9dXlL/0h0PFWPJkeroVG7qarW7ChTBi4NtcVkVnnldPdnI+F3Osafa5vhvSpyXrPMw0H5AOMA8waHCuEFE7UFaM6T8VjfcOyvKw0QKwjk4JYZFF0dIwuRs6ALyHvAsLzFxGLg+cEnT1yKvNuZ2B+b4f0mJE9hSKAG8T1VRlmFRr4fDX8cj12YbYJgoDZnN8f4UbLGISzSmtiy/npEKZyZbIZUsgtQMjxf13s1OHB505u7E12fqJnvJOae+n3c+cOB/tNtv061gKM207tA10BPFlzdLelvHzvz+c87Xh/qgKzbx5RlWNzZTOjssXXxX37b+vVNyJh6VtmT3Ukjfig3wHq9F+iaKyPyVsYjYhAdo0toKjPElf8ZI55C5wydcH6Lq7NMA1Tl4LDuO947WLf51IF4eN/i7p/m/WikECx7uAU3ykJHaP7Ie2MbupYv7a1lgrQcVU8+fe74UPuFZFVlJt0tQe4H7XaYyAk/qI+gQYNuoOhi029rzhzZOvFiexI1Opq9pJ7AQM2uSq883RtIfTO+sX84OpIKwlmxC6Dq+ruhK8z5oglnETkZRW9zQ5aZ7+DmJNxF291zMjOfv0e3zZfhkK3hReNAZ+JAbOaLsU198dj03Hq4dPtlshaaPfKsqaKIRSlYn31jZ/y1zUlRKTAvmln/itwUZvr2AHhqGjyu1/DOykvbR1+Izg6Mho+PRFIL6yBzDIqsQrM1cNUhuTu193uGmQIOKQfLjZsKZMq7jOouqs579aKvZorsqMIH9UNtFw/tnfx0JPzB4rYr5ySuKo29nmTN+iPkC+1Rn1CuacuubEmCxZhWr6llc7SBTPKgDEcCku7yqr8XgpOnPDuS+ZLE2dC3lqpVwgLkqjPshRk5XOBEOt7nE26v0H/NEJAGaA7JmveIK0v1//eV+VuAAQAuXtAy981G1AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guam',\n    code: '1-671',\n    iso: 'GU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjBFNzZFM0QxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjBFNzZFM0MxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODAwMDg1MDRFMkQxOTdFNEIwOTkxMTdCQ0ZCNzg0NTYiIHN0UmVmOmRvY3VtZW50SUQ9IjgwMDA4NTA0RTJEMTk3RTRCMDk5MTE3QkNGQjc4NDU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wSFE3QAAAhxJREFUeNq0lU1rE1EUhs+9dyaZTjqZVFPTRChElEJUqAGhHyAuqrSgLsSFiCsXXblwqSJuXApu3PgTRKU7Feqi+NVNQaulC0tqbUhqOyGTmSRNM8nce5z4AzKBSc/6npfnvLznXLI6eTUprGHXBiJDP4oI15SG8rIuJUX1fXh8RT9FxX5fpAVTM87W9cZP6Zgw3w2MvTo6D+2CTxMSIOivLSen7Nfz+58pHFpJAqS4Z0W7SNp7Xd4xABcUIEChiV3RETHBay0i9USNFFyMnK5tTlrrgqvIeqP2EQUPE9GNpO3c3dmBmBp1F9ZWtDMgH4Cf7bQHZEWvGLezjZfn+KOTpVsTzXStgHTQt9FHmnjITbiQsNjl878No174m5+bmRltQbWJQQ0hFOzy2LgepfEbViYWj0RF1BwN0dyuGEwA8gCGIBA1vJUvHthGJtYq/dgofMszuyQpUmekINSdKA2NbPz6nvn0cDGcWvxSuTmxWS7OutpFgnvBvPbIWvWdI5fSiuHw5WdPPr6YW1uqXRHoIIigCSHQKEfYvaXnD064d2K700/fbNMklY3AhvzfRCJK1ePJx1/vi7e4zM4S7Q9yifSckK7b6+2fvPOhkQVZZqFtzqkvckeaomt6+Q+lwHe9FE/Oi9uIN0bXy5cymMYIP8zLV2HRaSfnmAuU2336CrRsc90iKlmdujbMq7pbBSL1CZfXacRg+j8BBgALAtvzf7DSbgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guatemala',\n    code: '502',\n    iso: 'GT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjBFNzZFNDExNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjBFNzZFNDAxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODBCNDU1NDY3QzIxOTc2OTNGMUNENjM0NTMwOTgyQkUiIHN0UmVmOmRvY3VtZW50SUQ9IjgwQjQ1NTQ2N0MyMTk3NjkzRjFDRDYzNDUzMDk4MkJFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+T8VYKgAAAklJREFUeNpidF77kOn/v3+MjAxIgJHh/4Mv/0NV2NuspBhwgwNPPubsfyPKxcKMohuk/T8jAxMDw/9/jOh6/jMwMjH8Y/zPQAgwMv7/hykK1sfI8p/xL+N/JigXSRYizUAYMGLoBbv6P9Bx/4nRTxqAWMVEnNPQtREDiDL6719QgG44dfjAtQuMIO7ff//+EWE0I06zmZiAFjPMWbdg5rqFQMbreydyasN+/GO4cuNK7ZQ2oAg7GxvuGPjPhMeD3JxcDAx/lu5YziMg//nutFSbXU1RgqktZb+ZWLcf33rn8hFhQQ5cMQsMORY8PhLg4T1yYjMjK3OcqxMDg+L7PTeC+NRYnKR+Mf8y1TPbcmZXqK4NIyMuPzMy4UlTrMwMT9+95OBgBXLffeR49/URw+vp3N9WfvnBqqes++Hjhx+/GMgxGhhQ337+NVE1ev/u06tPv15dufiem+uvX8H5Z5yvXt05deWMopj0f0IpBCf4+OWTsqqRpqqGk7vKdyY+E5dlX9lSv/7VntVb8+rZs/io/C/fGPAkFXzR+P3nDyDZGFpw7+7j6CqPR88eHjq3a9LksitnrqT7xjEwcHz4+gmPy1gIpmpZVfWTp64s37r0zbt37H8ZC7IbjLVMvay9COYfFqb/wFKIQBbTVdDWzW6DsF2tXYnN6P9JyLqkAWA0/qOd0bQCLH8YmZmwlat/gaUQIYv/MTL9YWD5x8CMWYAApVg4GX4zMvz7j27Kf47//9gYWAi4699vTsZvrIwcLKgRBjQaCAECDAAobt+WaLkKAQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guinea',\n    code: '224',\n    iso: 'GN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MEU3NkU0NDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MEU3NkU0NTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYwRTc2RTQyMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYwRTc2RTQzMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+S1dzKQAAAJpJREFUeNpiPCeo9pSBgUEKiD8zYAF/PzIyskr8+6u55tN/Nql/LED+f2zqmFl+M375xfFX4ZQjw9tvPMwMrL+wqgMCXiB+xgJlMCDR2MA/KM3EgB/8h2JC6ngJKUA3lBpqiPIBzcCoxaMWj1o8avGoxaMWD22LGamkBgxYoE0eXlxNH6hhf6GVPAueyh6mDtwSwqMObBdAgAEADjElH4U24o0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Guinea-Bissau',\n    code: '245',\n    iso: 'GW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZCRDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZCRTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYwRTc2RTQ2MTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkJDMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NfA1TgAAAaZJREFUeNrslbtKA0EUhv+5uLlq1ChewBvElD6AhfgOvoKFjZVvYClYpLDVh7AQC59ASGOh4CUiGIKGBI2S7GVmPLMSBCvjbtTCA2f3LMPwzX8us6w8UrwHMIgvmNGA/8RNYfdF5dfbUt0KfNck+TR+wTh5q8c9hjyIA4zfUvx3wDaXCcYgwML4x8C8S6dH38E6bHGGHBOY5w72Ow3cKA8LwkGK8XA9TpPdIEmpfdQBKkpjgkuU2nV4pLcoE7hULgo8AZe+NR0uyzWDDCCkiQ62aodJbanziCOvRfNisEfwY4q3M5ME4/C0orobNJRQOc8x2hMsMrhlFEaZxMHQLJabVzhXnTC9O5kprDpZXFPabV3mSPfm3Yw5OR02rOZHV2w72Cc1FQLY90Yqj0P3GWd0gBVkYaVZd2it6juy0U4LdNzo4Hc4cEH13EqPE3gMa84zykEbdf1xUSnCDwllMEBqZRAP+In+AksyGdb61H9FQSSwSM1VI7AD1p+u7s6WZwweTBA2W5Pqbgc5buj/Xf3j4MEe97DPvfHd5qr2CDfhVEWEvwkwALDLl6s6AZ8RAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Guyana',\n    code: '592',\n    iso: 'GY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZDMTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZDMjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFBNUE4NkJGMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkMwMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jfKcDAAABN5JREFUeNq0ln1o1HUcx1+/e9jtbnO33eaUXDl1DqVRmYqohSZWKqhFBCb9WZhgiQhJkA+RFEmBf1RahBFSQU8gtc25ypGz6XyYJGqKc5t7OG+7290ebw939+v9u5umsZalfeEHP+73+X4/78/78/68v2e8XLW321nkYd+xQ0SazgLD4M4G1ziw2cE0+T+WMTuv2Hxqx2bWrp1Ng2eYvbX1VLXUEgydhIEQpGelgNiddxWE8R055hbCMCOP/btWM2/lE/p5GuVX0ygLtFLeWkO9vwb6m8GZLiAC4XRbW/X8dyBGMK/EdMQTvB1u5F36mb8cvt3pI//hlfq8BLqmUt2bxsFgN4faznEiIBDh8/oWFxO5akmmTjH+NRvGiZzppgsbxXYXl6PDbO4LUGF0sn4TfLhRERN1cMdcyFiqSmfRMHgPlZ0xfmi9wM8tR+gL1kGsR0x4U225zZYYp3OKk1Ex0Tbe5qDAcPK1qtvENcyZA7y/w82zKyS4SAz8CvQ9CLkrlGQBweh4fgwnKA34OdJ2kqaOWuhtgTQPeHwC4frbdtxIzEiI9Uy1p2GKyXfCIXYRYP7TsH+rj2mz0uBikFhoCIdeySwQkMfExiLMxAx+7fNS1h6ivLmWOv9RtemykttS4kzLUDbbDTZuSXx9xZXeraDpQnyub5AN/dc4nt7Fq1vdvPWCKM3SmF0aIhaLYiR6sSe0yZ2RApG9TKeWcLbHTXlogAr/RY5dO05/8Ixo7VNcTrIloya+viz6J9qcTDAcI/T7MUsG+eyNbFasVqKWOLFgAsNpiWtQGyIYYspmseGdAzmPSxdz6RiezE8RO6X+K1RerSQggY6Z2FqJkcEpFP02HbonHGG7ACxabOfjnV4KC+wkuhI3d08gpIdEt7xoGLvIIWNiCohbInUu4eJQgeT8T+ob6btVvUf0e7Fb3kZXl0nC+jDaCdZ4WTuNEeRxqX44qJeoeu3GJ1d0jJXUSpYnmieJ7tLOXjYl/HQVRfny9SzWPCdLDcSJt+vkJNWCE5cRxUzs1qneB0T1Ys35PDqHJlPTO47yej8VjV9w2V89emILpFNwZzhcNA/EWNXTTIXc7aXXXOzZMAHytO3SMLGhAUV1YwyocJdKz31EAtOoOebQGM2jIhilzF/P4dbP6QlJXEPh1B0gld+S2EwmNZksdbjF4e6OcLKfxUsTnN6Ry6yFssz6CLFTfTjUO0eGFOpbDePkcEjJ0XzKW3r1nKGq9RM53IURh1NchswlM+fGXN9iID7RWijnKQv1sVG0Bu/r573tbl58RmIZEJVNCswuUmXy84zFRCWSqoiNUs3u4bY6zgeOQ7c1u6rHkzumpzssWq2ySxzptIjWtZ1tfEWQNevgU9lm+hQh7pinl0fh/jmifhJHe1yUXmqgsvkbAu1yq8FgyrMt2/RN+Uui0YfGca+EkylUuzua2KZ+zVwIDbvSKVyg2wL5c08Jvzm9VAS6KG37neq2A9LQuT/NwGNRmHWTP9/eZWEctOWbWxLthAuz+OjN5Sx7/kn9XER1a5ZupAhlupvr2n4RhVdIDqXlwUkKbXd2LZZ4CsxV2zazft0SAt4Ye0828n19DYHOUxo7fyqJlUwKv6t/BF45+EF3zkP57Ks9RPMV64rrTVGY/OvjuKOqxlp/CDAALJ7xfKNmRxYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Haiti',\n    code: '509',\n    iso: 'HT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZDNTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZDNjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFBNUE4NkMzMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkM0MTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vIrdngAAAb5JREFUeNrslT1IHFEQx39vbzeunkYvIRH8QgJBBAXNR5EQkIASREhlomArVulSWVjY2CmiWKuVBLGwEYuASIrAhigkhSFgkDsQDWjirbruebfrrFZW9wTJEXDgLcwyzO/NvP+8p6ifTlMAM2WVFQJsUCC7Af9TcenbrRikXPD8yBFZ3oUj8YNDsMWvE51mgmsGh7L2PF501dP4MMGRf8LaxjrVVbU8uN/Ez19/Wf2YglLZgNIBK1sTLOS9E971t9DzqgqP7/SOOiy875QkjSyu7LL6ISngIgHnJ5vxQPP+CKKSXexYluTWDjPz20wMDDI55fL29Q6WkSNO1PYoOD9YfU48D/XAAd5BkpfOMrPZewy39fOlO82juVJGnGn6rD+stHZQXF4jks2vWbNas2IlYJMMm1vbpN/8oH3MYWg9Tue4y+FTh9RSggZ8crkDiY7lz/et4olWxUqibnsBy88q+NpsURnG8Q0TK8yyrzweb4S0f/qNaytCjTPWBkeWMxQl+8fY5xK3pAMGWTnUUDrhyde/U4YRhNc/xzFJmikv5vTy3/NNRDhd6NUvkGiq1MVI39zV/9Uj4RYCfCbAAH4eks60LgqAAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Honduras',\n    code: '504',\n    iso: 'HN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxRkM3N0M3QTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NEM5MDFFMjE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFGQzc3Qzc4MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFGQzc3Qzc5MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++ppqvgAAALNJREFUeNpiZHDfxUAbwMRAMzBqNP2MZvz///8AuPrS1Q/4NV+98RGf9H8c4Pj1D3J+e68++IxLwdM3P+T9924+8QqXAnwB8vXvf25mRji3ZuGd7z/+9qSpM8LEvvz5z83CyIhDOwseDyGbC3TA1x9/P3/7C3QIXJSHhZGcADlz66NmxMEbj7/iUvDi3U/tqIM7z77BpQCn0UCw4/Tr/3jB9lP4FNAw8TGOlnyjRuMFAAEGAEq7Jwn/ToVjAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Hong Kong',\n    code: '852',\n    iso: 'HK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTRDOTAxRTYxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTRDOTAxRTUxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOEM1NEUwNEVGRUE1NkNERDAwQzk2MEExNjM3RDQ2OTEiIHN0UmVmOmRvY3VtZW50SUQ9IjhDNTRFMDRFRkVBNTZDREQwMEM5NjBBMTYzN0Q0NjkxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OzkpswAAAc9JREFUeNrEVUlLw0AUnknatGqhShGKIErVizfBsygVL+JFRFC8uJw9KOJycbnpz3ABF9qKeKwe3ZeT2NbisQoqNmm2mkyeY7RQEJO6FIePxzCZfPPlzfdesIGKNZiiMSNH4VtxbgJ/q5ry0tTpNJaUIoz/klpDSO3rVUOhjMdD8r7AahhfA3KgYuWuTgkgQ1FTTcxFww5Wz3QTYErOJm6Ex0cRQGtroSskd7bF64zFjand3dmJcb2jQ+c4cp9ifT60vS073crWpnZyLA6NaNaZsThWGRyWAUReyKys8fML4u5OOtgmAPA0Lbyo0ri6rDMM/EA1ioQILxDOhQf6iaJoo6Pg4F4mp1yRCJZlfWODRKPgdH7P1+/OdabTEGzFm1vg9RqNjcZ9qozBantQiSVKpmfYeMxtSoMfmI9FyH1+ydTVG3OzXp53rK3rTc0efxU3PQkNAWxu+JX5VH+llExKD09v5ltaVI4OhNSdfHur2znEhlqpKBfOz+hlPgNIh4fZQEDa36MWVOJxW2q7HsKy6PTCkRGMqysYH2NUjfT0osQ1Gw7/qhrzC4d8zBnqZamu9sXlsi1IbBTQmCAvFt787JsqfIr//ysoIvWrAAMA7mZQmc9OmukAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Hungary',\n    code: '36',\n    iso: 'HU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NEM5MDFFOTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NEM5MDFFQTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk0QzkwMUU3MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk0QzkwMUU4MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+JU411wAAAFRJREFUeNpivKSs84lhAAALEPMOhMVMDAMERp7FjKcZuP4PiMX3kzMHxuL/QDBq8ajFw8pilvgd3QNTgDBUqQ+MjxmE5UcrieFtMagF8nkgLAYIMACetyMUbe9cBgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Iceland',\n    code: '354',\n    iso: 'IS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkwODE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkwOTE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk0QzkwMUVCMTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk0QzkwMUVDMTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EtSEQQAAAU1JREFUeNpiZLCYzoAG/jMwPHg/dWtBFuup8/oOAqbGiqfOuNcd2TXnCIO8AAPRgImBZmDUaPoZzcJw5y2WFPL2zdvv/xi4mYE8RkaQ2P2XXxmev2L4/ZcEo8tmxWMx+t03dxvuv1fZgcy//0BiFXkuN82VGAQ5iTea8f/Hh1iEWZkZHr19uXH3i4ZaDlU1menTuBVEGAS5SXI14xURERxS/xnZOZgFBf///v3n7VtGMsL63/dvOEwGhjITMxMonv9///7/P5BPmtGM/1/cwBADB8jDty+27n/Z3sKhrCzd18ejKMogyMXwi5RorD7Nj0X43ffAOHNDNpZnNZUs7Kw8zs4LbzHc2vqAQYCHBKPbEudiTXwcSi0mot+BHmAGh0NLz847s3cyiAiTkq5VhLEYzcIkzMnE8BPkfWAgA4GSBPcdSbHRkm/kGQ0QYAC5z2/IQnQq8QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'India',\n    code: '91',\n    iso: 'IN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkwQzE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkwRDE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTBBMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRTA0OTBCMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OIHw6AAAAPlJREFUeNpi/D/T+D/DAAAmhgECoxYPf4sZ/wPBQFn8CUjzEqvh7cffDAtX32Xg4WZhYGJkZHj/8SdDTLAKg6QIGyn2fiY5qGdN38/A8OU5g5k2F4OxBicD59+3DHNm7CXZxyykKL548TGDmCgHg6mpMoObWz/Dr19/GHbvLmS4desZWE5fX5Y2Fv/794+BhYWR4e/ff0BLfwPxX4Y/f0BiTAz///+jbRy3te5gEBTgYrCyVgY65D/DuXOPGJ49/cBQW+9FUhyTbPGnt78Z9qx7wiAozMnAyMTI8OblVwYnfxkGIQk2ki0emOwk3MExWjuNWjy8LAYIMADBumJ9k9IhVwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Indonesia',\n    code: '62',\n    iso: 'ID',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkxMDE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkxMTE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTBFMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRTA0OTBGMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D76wCAAAAG9JREFUeNpiPCeo9pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERi0etZhmgOXP+w8DYzGbtOQ/KPsfHUP5H+Of9x/fAxkCQPyXThYzA/EHFmYBPmYkAXoB5tHsNGrxqMXUK7mgTR5eOjd9PgMEGACLNBM7Kx9mIgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Iran',\n    code: '98',\n    iso: 'IR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDMzQjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDMzQzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTEyMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzNBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bVy5sQAAAL5JREFUeNrslDEOgkAQRf+QLUSUwsZ7eAoaOo7Aoew5AyWcwwNAsa0IWZRdnC3sXaPZxOxPJltN3uyfn6HD+bTCgyJ4UgD/P5hWlg+w4Bq49m93zA9AE5a65neByHP2zQDxxoU72B9fXcATA3XfQ1ujjIGIt6BdgqQonMDOO1YMVeMI0hpkDbjPUF33+3ClWQbB4LFtcWsaRFIitXZ/EC4nq1+SZYmVBzhWFUgI1/bBX6ovROFyBXAAf0VPAQYAymNH2XVfIfsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Iraq',\n    code: '964',\n    iso: 'IQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDMzRjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDM0MDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzNzlEMzNEMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzNFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A6ksKQAAANtJREFUeNpiPCeo9p9hAAATwwCBUYuHv8WM/4FgxAX1Z1I0LLizh+HJ1zdgNnJQPf76mmHDo+MMb39+IsaYzyT5+Oirawxy3KIMMtwiDOsfHmO4++k5XG7vs4sMxYf7GNbfP0yUWSzEWrrp0QmGzsurGTxkzRj6rqxjEPz7i8HOthgs13tpFcOWWzsZxJhZGR69vUu9OE4/0s9QdXYhAxcLB8OWhycYWJiYGTh4JRgufnoKlj/97h7DJzZuBlMFW4aPLOwM1z88Hk3VmD5GS5yjReaoxUPfYoAAAwDKmktuMenkLgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Ireland',\n    code: '353',\n    iso: 'IE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDM0MzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDM0NDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzNzlEMzQxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzQyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+fGQZ6wAAADBJREFUeNpiZJiVzIAb/E+dg0eWodkOjyQTA83AqNGjRo8aPWr0qNGjRtPOaIAAAwDApAPmE9cHWgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Israel',\n    code: '972',\n    iso: 'IL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMxQzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMzVCNDMxRDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzFBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzFCMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5PxNOAAAAaFJREFUeNrEVjtIA0EUnD3vEj9IiIlooSJYCmK0UAloIdhouhSinZBKIZ2dqIi1hZWFQRFBsJWUghaCkPhBBBsl0SIBTUhyBM391r0oClaXTcwNLHss3A0z8/a9I5QBNkDsm7uU2d5aZ15ZfLrLwxbFyKl8b5LvnTMosraXKPBY3eGWQAhBOqtwWU1YbXERKxqFrlM0OQUuYoE3I//SNQYWYlVkbBG6QRGJpiGpBk4fZMTYAlMcXL1HYMiNIss6NNMJSbSmxbLV5m0fXbxC7CIDV08zlme70egQsHHwjGyyiH6fG7e7w2gQiCWrYRJTi1BUg3qnzunW8cvPWSSaom2TZ/RD0WkFKFSUsSQSaKyoBPKrSmBf0JjlTkn4n4xNq8fDN8i9lrB5mCwTmlavRBIovJXgC8UR3xli56S2xAZjDk60Y97vKRdXePsRBiu46TEPAixvmT3rxpcDNS2uvxhkCnOyhsTRSH0bSL6oQWV5e10S35BY309yNQCzZZp5pjIKX69G1wmX4iqHhCzC47BnLHp7W2whJu8l3ZZfn08BBgBy6AUOH3COZgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Italy',\n    code: '39',\n    iso: 'IT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMyMDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMzVCNDMyMTE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzFFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzFGMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oQE2+QAAAJNJREFUeNpiZJjk9pSBgUEKiD8zYAM/PjHy8Ir9fZK47D8/OzcLUOQ/A3bA+O/nz79Xnf0Yftx7wMwiJIhLHS8QP2OBMhiQaGzgH5RmYsAP/kMxIXW8hBSgG0oNNUT5gGZg1OJRi0ctHrV41OJRi4e2xYxUUgMGLNAmDy/Opg/EsL/QSh5v0weqDgSY8agD2wUQYAAUKyFbP8LJRAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Ivory Coast',\n    code: '225',\n    iso: 'CI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQjc2MENDRjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQjc2MENEMDE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0NEMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0NFMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qvgkAAAAAGxJREFUeNpi/F7P8JSBgUEKiD8zYAH/vzMwMPJxMbAXPWZg5BRiwAd+/P3NILuqmOHNe6CRnHy4lPEC8TMWKIMBiaYH4GViGCAwavGoxaMWj1o8avGoxaMWD7zFLNAmDy+upg8tWh8guwACDACJtBIpqc7c2AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Jamaica',\n    code: '1-876',\n    iso: 'JM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMyNDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU2ODE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzIyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzIzMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KsC74wAAA+VJREFUeNqsVttPk2cY/30tVAVKC1SRo3jAAjswnXFL3NwfsFvNlgXn1OjFoomJxgsvjInxZtNh1HnIZHPOw1iyLWEXS1y2zIsly2KiMcZjQRGwA1pBaEsp7ffs9/b9KhQ/AhPf5Pf1OzzP+zzP7zm8NdYe8Q/905sPt8tEVUECAkDU5SUuQ4GXx9FcDIw6sWJ+DIb5EHLhfglabpXgr2ABiuakUJE/lpaerQMZg8FYLkIjOVhdGsGm+jA2LA/DkACD9ALmMPDtvRKcu+PD3/9qBirzE2lF8386oHTUUhEOMsKVjHBjXRib/CG4PNzsKWUYlaCHUnHCQyMR4GKgGGdv+9IMFLo0AzNxQMkYGKd0dWk0bbCpNow5hVQe4sdcogpwLl6A/W808qGSGKAiWX69ZgQfLwmjujCB7qgL10N5iKcc8DINMOwpdShKafBRxIWG4jj2rgriyJourFocQ84oBUyiRsu3XtQ6Uu8Hdn0KbGniUzHxHAP2NaAq0S6HdhEqes9fAr44CVy78Uxdr9fq6cAOYON6PvgUZ8QIMbkG2AUqeochCNOgXQ7hsljkfeuPwKFjwNXr2UzJZDT4IWeOsqj7CNaAdBMsQumHpB5AvrtcLG8frpM3P2+Qr371SbzdSH+TduKRpfOEcqcgKxqf3z8T7FQfpK4WcvZLbVBtlgpYDtCh6B1Dnt52aOc6IMn7lsFByPctkMZXp953WsMZFBVB9uyADCkDjGj0Lg081FD3Y52QCO/37YaULph+P4WcmfTlAKt9mEUmhi7hZ+5OaCP1GIkCofDM+31KrxZVQpoPktZOi2pGLPc01Qn+xu5adUCakwEtk3wMOXUYUrvkBaiuKIMcOsDNe6y89Y4blC5I2xWPrG32y1sssB9+LxLptOpA5TmodUzqHP8MsrTG3nBWO1WV63ba+hGQV80XvdC9yHYCh8DPAS++5kT7s8eNeTlmemgMJ5x4p3wYm+tC+GA5czKPsoNEPlEGJINASyvb6SgQeJA9dKRiIbCTA2T7J8Bc1ex9lkGPNtjW4eUA8eG3rkLMdZqo5inmdOgN1Bjt4rSKjTnwXgUdaAhh/VI6kJftQIoOnDwHNHOAdHTSsMrhtiYrwn5L2Ksn10/tXnyjIux2I9cJLHKPpqOcPLMz79S4jCcdWFMWweb6ED6sfTLuQAGxUDtw5lLmkOjTEyZD6S8dHpy+OR9/dDNCUlrtZoQzOCQyDigGomTg3fIItr3Sj3UTGbAcMFTR2OXQ5ZQ0pY4XOBYzOuqAUSmwqwFDjcO2dvscmrP8IzCRgawaWDYA4/0Ty4auTJPD2S67GvhPgAEAIEVx8Ck6yuQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Japan',\n    code: '81',\n    iso: 'JP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREQ2NTU2QjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU2QzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTY5MTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTZBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+sXSjEQAAAbhJREFUeNrklt8rg1EYx79n3k2WrWGY363EkgtJSVntgguJi5UbbuTSrf/CHTeukDulUVJKCRciGVIYiYvNhqZmm9H2eo/nfWlcbW9sk5zT89TpfTqf59c552Wc8xsAlSQR5GYYSPyMwOGPRS5H5O+BeUKUNZhWmxtwYHqBxIWn00vicugbrbAMO1E1OpgdsBR9wYFjCF73IuQYtSghzZDAAwlHVVMPWrfmIZiNmQXvdfbBt72CIjTQSiO78vGFKTqEc1haHOg43FAF1qix8k7Nwp+E4gtUqbYiJjTi9mgT1+OTqnKtCny3sAyBImNpzHVkdb+0mhnw6/MTYsfXtKmZ4pJS9TnVvRgvF36IsejPwVyenCdrmf6cJdXPwEJBIfTNdYgjmMZc7vAQ8ustEPSGzNS4zNkLUUkzT4Fl5Fwcpf3dqhKj+jjttHXh1r1OnW1T0v/pBFNmCB6Ybe3oPNlVE476cywGw9i3D8DvWUM+de97s0G5QOKky2vtaNt2QVddmvkrk0sSfBNzCMy4EDu7oqaToG+wooKuzJqxETAhL/uPhPgYlT2BYDLiGyPyP9/jX/n1eRNgAFs4yk+Ai07FAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Jordan',\n    code: '962',\n    iso: 'JO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREQ2NTU2RjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU3MDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTZEMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTZFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QGsVzQAAApVJREFUeNq8lM1rE1EUxc97M5mZhExNG6F2oTRtzKapdVWJICIuVCguigtB/AMKUlz0X9FaqQtB6S6IYkMKIoJIRRDUhSt14UcVTWLSNsl8ZJ53Mk7aGLtoMu2FSZj3ePzOOfe+YXf1w1/nawV91a5iP4uVDqaFJQRyZgUL9SJeWJv7A37Vn6pojOkJrqAqHDwkAYv1AlatvU2AvSYw/esN+tHAkJA8AcvmelPA8z1KoAX2F3wBwyTAoBY8MstYqFECAc9AB/h/AmqUQNAzsCO4TQCjFvydgaWNNeRiGpSp85AjGswva3AMY9dguVMKg1OtQdg2JD0Kid7dqX/fMJoJXNHiuEwidDWO8OwMkEwE5NgBBDljnEGYFpim0YKzdYJzcNOGsf4JHCoGpqcxNHcN4cyJXYH59hdhWbCqvzBy7wbGP7yEejQB6/f39hOOA0fmUOIp8MggfmTv483J03g7NonCUrY7MCUJAXKpKpAH+sEkyVvcqSROuzKFZMAuFCHqhhtXF1FTP4VlkhwJ8oE+2MUSWEj18m+doKhtQlU+NnXHzl7Aoesz6Js618NwkVquaGhsbMAof4YcixFIuDHAIeMy8YdKm2SUI3rxKtS5WeDU8a6Gq2OqhdOg3oWbjzdrAjKBEyW72ZdsMoTlM0egXJqAEn4H60EeTr0ewHXy7y85VMjhCAHdepLUsDgZRW6CuiLT7X58E6Br1211gP1IXaA7JvmUhjsEXBmL0JeEPBctwKad6CA96B28HejW01ENtzJR5McJqNBmiVxWGt6Qs94/mbIP9HuYT4WbDvNp6rFKm8WG5zAgYOty/OSjIuSIrR4ei3hA16ElAoW1OX42rH67nYnqK2m/hxR1OXiH/9YfAQYA1jgMxWJoPhoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Kazakhstan',\n    code: '7',\n    iso: 'KZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMzkyMjdBRTE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMzkyMjdBRjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTcxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTcyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+44EnowAAAkpJREFUeNq0lc9rE1EQx2fee7ub3cSyjbXWIgFFS7A9FC+iVEWk9KQI9qIYPHjyJBQE/wSxh4J48qpQwSL2UFA8tPESUC/tRVotKCX+SO2WpMlu9ufzvRybZCOYDLuw7M77MPOdH4vwugC9MQI9M4lWIKAQAWCX0SaxF9OPcsZ7CNPdRTMKYZYVB7ACnLV348A14AmZGdbl9Q8psjpX37rjG8GRxoGWFgE3EOvDrKRAWAxNn6cA7Y50ZqB3mFiDtALIG968KWLDJJWriUJOX2Hov3AuvnQuWJEJ6HRAB0Bdrnqt1RDx6hDpp7TV+8nFMUO26VFS3giGlp3zQKIGvW2PEZdLdFXoyGlTyFQTiRNH4EeVLeAIkXpC+d5HPPFSlVwa1yEGumfV9WO0JJtwn4XpW0b+wYH5Vf/4G3dcKCNYy+7pT97ITGrhhp6HsD++jNpH/+S38BBA0PSVOpxeS3x4WJ2+V75T8LIKBvPOxK8oedtYeVybAq7GoRmKYeE6eoDB/jKSnQV7aoT+vptcemZfmq1eN9G2eCKn59+5Y6/sSaBWHFoBPynUFOhmQ9+LUk9qV86omxPqepZtbQaZc+qazbW5vZu74UGg2zFyM+FXCs3tqK9V5xEg1p9wYMkZ7ic7GfpzVP3sAz63LxeDDLAfjcq3j1pDf1Jb+yJGJtKBlJvlBlID2NvlxtPqNJAqhINyXjpxJZoDfg2GLDlgftwWk/PtygfZS7wjV8op9nUS6wEwlystRvF/1pO4a3LvQHe5vf8V9Mj+CjAATRXoTFoxM8YAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Kenya',\n    code: '254',\n    iso: 'KE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMzkyMjdCMjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMzkyMjdCMzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYzOTIyN0IwMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkYzOTIyN0IxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4JAoOgAAAoJJREFUeNq8Vs9LG1EQ/jb74o8kdWOktWuKSamUtoqnekmRQA71UKjkIJSeEqgtmEIv/hXBgz2mpRcRkh6D1IMVSi7iIVBBPFRarIamIsWsRpq4yeY5m24llZa89JCFb9/MvmG+nXkzOysB+EYYIBTRnusSIS/R7dhS2nkVhYllWYYkSahWq3/dZ4zV13/tXySGRcybQVVVHolEznXJwm89Go1yv9/PRXxZnGLEJlKpFH8+O1uXX4+N8cVA4BdpLMbT6bQoaZ2Y9fp8TfNipvgwl8PbpSU8mJnB1NwcnoyPA4qCd2truBsOI5VM1m09fj845019si/r60LVYLfbodE5VohohPRdtxvM48ELki8XCng4P49X8Tgqui7kj+WDQeFSdBD56v4+nCSrNhsljWOP5I/T0wh5vTimwhKJtk68u70tFrG1viQ8JgQyGVTpRfIkv9E0eAkOkk8Fg2AdLXT9AWGL8J3QPzwM3tmJ/PIyNkk3CC6rcoSIW+l63rDaKFpOZ95IJLXgi1UEDU8I3YRb5vmaUWezqBG5+a29Y0Vg2oj6Y1f7BoTf0ikzxH4eQTk5ghwKwd7TA3VlBc8cLlx3eaAbVfGIb25lhQxtkozqlV5Mvf+AnfsTdKYcEqV6kPaCiwtwhSchH/xAjRtixLcXJoQMy0YZ1xQfPN4R3PAAiRwltmBDnKpus7aKYiKBr4ef4WAOIX8SHglOpzIwOjiKQtcpcjufkCzdg6PGMNmdgTo0hP6SCxt7G0CX6HR6Kj4WFUlBSS9Bd+tgGj2o0TTqox4v2OHscELjWgtjsQXi894x+0a2ZOPCc0Hilvr4D8fGfzZwwwekaEXczl+f4pkAAwBDiPf/eEPUkQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Kiribati',\n    code: '686',\n    iso: 'KI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzJDQkU2RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzJDQkU3MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTZEMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTZFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pmFxjgAAAoFJREFUeNrslE9IFFEcx3+/N292dmf/NLppIWJpCoKVCcUWIltqVlAQdOlWdOkWnQsEr12DLnXp0rlDkl7yH5HQHxLLKNTWrDZaXXd219kdZ957vbFT2k6HrVtfHrzffHjf7/B+82NwtP6QzhyoJI6izsGAgEXNtRVCXPWgwyOMpxX8roIiKvksRaV1jgU+cpBxR+yzw5eyIUaJwcsWL00GWUojLgBWjA5zh64TVW4VowOCpjRnSYUa0K9Y67O0cD+CMzoJcukGXtEnY3Eq3uEXjd7CnGIz4tINcEEFqmrCy5USftEU/CXNBeIYjnG1oHe5XhNfq/m7EbpCweD+1j9Fl9EJ8NpBs/6irRYpEOEmLbWRrd7YQUsKBIVfdDk3rzJKtbh8cO0sg6IsFAj/JGXbpG1mrBeUrxBSorI7VjYfTcJKc8Z6FQsyQ7Zru0uSsuJg/vYdnHiaGpkQnO852RM72weEFB+PeYTxxp5kzWA3dDuwNg7fxkBw2J2E2l6YCZo3ny2PjQvY5trMwb4eHBpdGGg1jmoFEOKFExtNFTmHgeZIYpO85NGRNyU7jWcS+rH9puz983fG8HSJxNmpTj1Bi791STIyb2L/9QeLmXUwDDkILLfW0RAjBN9+Nn8hiLMLeYY13sjwtQMtUe/MF9PH1bJTp9cuHG5uMBY/ZzkXrU3xdKYghGioj1VJltImdl2+B1y0743L1859XKEK8b6Dy6sk3v3ml1dLtjs980lwkehs2lUbljSTs6okekhFo//W6e628yfaEfHR5IeHT+bkjc4db6+SDE+9RzgyBGYJyhvelGvyX6F7Ra5qYugU9IC3tij0FwiBf6b/0Vv0Q4ABABynxPRdAJihAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Kuwait',\n    code: '965',\n    iso: 'KW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk4RTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk4RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OThDMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU1RkY5OThEMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rNTKhQAAAX1JREFUeNrElktLw0AUhc8kadMmBhcttN1Y3IkguBC1goKPRRHxN4jiThR0r4KI/82NOxdaEZWKD9Qi9pXX9aatIhQhixm9cDfJJGc+zpnLGJgcrWJz1UExD9w+Al4AaAKqK1IgWClgfQVYngHqTeC5BuiaUmGdew+eb+L0HLh5AEaKwHAB+OAN+EwvhDLid27n+4mVBjaYvjwNNNvA05sS+n7hryqNdTcwlFPi/e/CUdk978sl4KoCNFrdL5QL90qbG8fS/q5vhiAKQvFnwiZ3q1YnDFoEScyxUkPJJF7dhuitFzI6dlx9CqWmWsM/VXxhyWfZiLPIDT1QJkud8SopXLGEF3UH4dpOcGcmKSBSf5wMfn1g57CVyqD6UuGFnvrJtZAYwJGdx1TCwkXQRp1TrUOo8zj6eSQYUbbZ0jO/yQkUUkX7hOeZ8phFJ5jykikbkin7LgIR0SF7uZ3O8qAgXIduh1LlPcSYTdj3J3bBmepQuuxloIzyZ30KMABBFnf5qa4SdQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Kyrgyzstan',\n    code: '996',\n    iso: 'KG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk5MjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk5MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OTkwMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU1RkY5OTkxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZagutAAAAeJJREFUeNq0lc1qFEEUhb/bVT1Dz2gkShZRUQP+LDRushNXvoDuBcGFa0EXbnwIX0BcKAr6Ej6AgpsoYiAoKgnqxskkM9PVdb3V4nKmZwan6UUXRZ976px7bsnO8jqLefyxpTWR7L/jqkafZX4RlI2uN/ipWFcwEgRyxU3Huqk6BBgIVv2QEmFfUplCyUnLCVo34I4MWjhesV7KpWDf+t7z0fPVpQJtReeDDjXu+SA3DzgV+OGsmFwu2XH6vOCDp5wEMFFlE3e1klv7xk5fdBiKFdNXhekgt/ucrChlLkHsvKbmxcBh5YuTtaBPO0SVa0N6wopi9O0cYSzGeNZRjKxcKPnsWFZOV3QjS8pq5Gjkk5eNkiJSyeystX5bqTH0ZcFKJQ97tNFHXXYzuT5INkht9cxaZ5r6wZrhXGAAW16ujGRjyHdHL+Ns0HeefobT2VnbzgG8zblayt2+Pu7ogyMJqFC50+enYzNPxnZ0rg6x4O06fVaYb3J/j1aKjNzbM4f1SZFauzUpMxLO3Bgb9L+RMaNO1JGxbjHpN72+yfnmUtzHR6Yp6PZbG8rUfIalrzUVMxHKGjRnQhSb0kg9JYxdN1maJgn/ljTgJuhph7VX/IxDNcawqKvg1+/tBV1gfwQYAP8yvkoLLzQ/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Laos',\n    code: '856',\n    iso: 'LA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY2OTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY2QTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OTk0MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjY4MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vPM0fwAAAXBJREFUeNpiPCeoxkAbwMRAMzBqNBpgMRJ3AlKC/35hlWZkZGBgZv7w+M2/bz8ltOUYmZieX33IxMYqIC/K8Pfv///o6t8zsSGMhgqx8OCwmpnhznN+LZX2niR/aw0mRobtJ++Ulc57c/4ug6o0w5+/6OqRnMjIoJGB00tANz99q6Ald3l/Kw8Hwjm//v7Tc66+efYOg5wow7//ZIU10FF//zaVByObCwRszEwd1eEMzEwMv/6QG43ffjDLiztZamDKOJir8ShLMnz5Qa7R/0FBwgiKSoygYmIEif//T67R3Bx/Hr4+fPoWpsyRM3c+33vBwMNJrtHA5MHA0NCz7g+G66o71jD8/M3AzkKE0UysWBAjC4OS9I2T92TtalafffAFGPgMDJsvP5F3rr944DqDigwo7aJpQQ40SOLj/P8XR/Jj/M/M9P3BS4a//yUNlZiYGJ9euAdMcByK4kz//v/H8M13RmaE3tFCdTgYDRBgAIXydkRRgS1WAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Latvia',\n    code: '371',\n    iso: 'LV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY2RDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY2RTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkxNjQyRjZCMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjZDMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+92Hw/QAAAF1JREFUeNpibBNT/sQwAIAFiHkHwmImhgECoxbTL3F9f/d+YCzml5MZEIsZf37+8n9ALP4PBCMrcf368nVgLJ6sbzUwFn989GRgLOYUEhwtMkctplkL5PNAWAwQYABbtBShZM+mNQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Lebanon',\n    code: '961',\n    iso: 'LB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY3MTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY3MjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkxNjQyRjZGMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjcwMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KNMpfwAAAapJREFUeNrsVd0rg1EY/x2bNWab0aLEBWIkn+XChVJSSv4AKXfyH7hyq5SvcqeUK5I7VzIpLnxESzOTYhOab5t3693hffc+TnPP+5Zxs1+dntM5T8/v+TjPc1iqpZTwD8jBPyFL/GdgWvRFEtKuT53AcnIBmwNjO1OotpVgqH0QkDmIx0UYJr28cRCRRAbhjZ4RFlsJS13U65uhGKlGTUiGUx1O3GF0exJ19gaUMSe8vlWEX68yX+MJ/xIu4xHcJO5FtjR4imsxf74GRVMN2TEbUQ5Ew0ioHLL6DpclX5TUgsBTEIHbAzS6qjDi6c8M8fLFOnyPpyjKKwQXDihKEg6rExXuepzEQuCpD1iFM79K7I9eQjFb8fB0BkkQVJd3ICSiJVIR4G+wiztJkX+feP8xCL8gne6ZwLGQs3uzcLjrMN42nK65U6R+M3KEgcpunZ2ps504aRQiOb2fu9ogzHsIC00UlK7TZymxDpMRklSuq50YJeWfB4h4vRARwcSwFd7FM4+hs7QZ06crqCgowXBNHywWx1ePKBzQhD5j3w4Qlv0Ws8SZwqcAAwBwcmoqHHZSowAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Lesotho',\n    code: '266',\n    iso: 'LS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMDVDQzk4MTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTdFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTdGMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0nsttgAAARhJREFUeNrslc9Kw0AQxr9Nd/uHNFSQHEqoKCrWIsV3EHydPEz1Fih4EfIMOXnOQTA3D1FQ6ik2K0hJ6o6rB8/ZHCyUfDDsZWd+sx+zuxz7c8IGZGFDasDbD2ZLWUi9OlUThBBotYDZ7ApluYbv+2CMoShKE+4HHzjCuNvnp0ck93dQSmHxconDowl6HbM6vI5Nijg+V9An/tKedWpZXQvseR7iOEae53Bd9/+GKwxDpGmKLMsQBEG96SIiSQaKoog45z/P7F/oRshQ0gi8zN7pYDgip92j6fGEzk/OaKfbpz13SG+vCyMwL9S6kjNti0PYXQS3N0iSB0gpYel7Zds2Tsdj9HcHv/uq1mO4vmh+pwa8XeBvAQYA1mkQ97LOB/MAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Liberia',\n    code: '231',\n    iso: 'LR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMDVDQzk4NTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTgyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTgzMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+G0pyRwAAAdFJREFUeNrklM9LVFEUxz/3vZlyZnyKNNXkGIhDmZtEaKEEZuBiFJfSJpyCgpYGEW1cuHLTP1ETCOqiGYJxIUgMtBpoIUVgPxQdTcksnljjNPOeZ17TIghqcfEtOnDfu++eCx/O93zPU5wf2gAsfkWlAqYJSv1cEpnVIgMHJdYx0BUBWa3ergZxHCiVIdQgGYFU5VuOw73dBIIBGl1XI1ipPUzDYn0LvpVI3btJemYeVopw5qTcMOl4niYilyOgEVytova/k7yWpL0txsMHt+hKnGXp5Rtmc3lJO3xJZ6nEopS0gkVLt/yDyqddJqbuEhGZ798eZezOJG5N2tBxPtxIkcDmPUobWNE5bAvBYvk1T7KP6O/p4m1xi8ErKYi2iL4hXlwf4VJLE3saK1bialsMZUVbTzHY183cTI7kyFWBb7OcL4AAV9YWaUdvKOIDtjwtz9UfdzxpPWefaJZsbXxcFnovcjncwGetPT4WrG+ln22nwaiNVX1sTMM7tp/mKIu1dnX2+J29b//2A/lDxF0HmWwcnVKLc/8Kpg41dEr9Sl3AjwhYQ/2+gP9Zau0Vf32c8afiAsqfis9NP/vPerw2Om75UvESiU15Nx41+FCAAQBN8o5alKABbgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Libya',\n    code: '218',\n    iso: 'LY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4ODE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA0QzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTg2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTg3MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oNTByAAAACVJREFUeNpiZJhqwEAbwMRAMzBq9KjRo0aPGj1q9KjRtDMaIMAADHgA7Vx8bugAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Liechtenstein',\n    code: '423',\n    iso: 'LI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMDA0MjA0RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA1MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDREMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDRFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aIartAAAARBJREFUeNpiZNCuZ6ANYGKgGYAZzfSP4Q8bww9mhq+MdkrXpXlfMXxgZ/jOwcD8n2yjWaD0T0525k+V/ruEuL5fvv/fQuqfig/TpP12V+6oMPB8pczor1yqGje89e79ZBD4+e27vBSHjdb7C4+uX7mswcDDyMDwnwKjmX5+/iIgIi4kJ8umqcbHzsbA+e/7p1985BmKajTf94dvZIsX60lwXn736jsXN5OEpMrWG6YMPD/INp0RmviY2RiYWBieMTF8+szA9JvhPyMDGx+DNBsD2zeGv6Snon8/Ea7m/vOV4f9/BhFmBjE2BkZWoMj/f98Y/n1k/MVIhnu/gk1gPCeoNnSzzKjRo0aPGk0UAAgwAEdbUI8xqJtmAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Lithuania',\n    code: '370',\n    iso: 'LT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMDA0MjA1MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA1NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDUxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDUyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dE0CWQAAADFJREFUeNpi/LtTmIE2gImBZmDU6GFhNAvzRsPRABk1GjdgPKiuOxogo0YPiNEAAQYAG3sD7LiMQpYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Luxembourg',\n    code: '352',\n    iso: 'LU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMDQ3NDU2MjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMDQ3NDU2MzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDU1MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDU2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HeS18gAAADFJREFUeNpifK+ty0AbwMRAMzBq9LAwmvH///+jATJqNG7Awrjk3miAjBo9IEYDBBgAMnEF8ALV3YIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Macao',\n    code: '853',\n    iso: 'MO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjA0NzQ1NjcxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjA0NzQ1NjYxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDExNThCNDE1MTY2Nzc5NUQ5Rjc0M0UxN0MxOUIxM0MiIHN0UmVmOmRvY3VtZW50SUQ9IjAxMTU4QjQxNTE2Njc3OTVEOUY3NDNFMTdDMTlCMTNDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bj2DXgAAApBJREFUeNq0lU9IFFEcx3/vzZuZnWXXdQtX1z/bWuimGIFU0EZUqEVgEFRQF0+JVws6ZRGBBUGnTh0CIfJQhzynsUFiKFaHrBC2XDVXd7F1c2dnZ3fnzeuNXoIabc0ec3j8ePP5fX+/933vIXgI/2ngklajtW+70RypA8uVgMebEw2AAoApHKmTzza6JBAhb0UQ+ke0AbVueb/PCau4p4k8Og6CIda55NZKGaiwVTQXxQBW4bBP7GmSABe7RrI1A6qW0tqCuLtZYRmTJ+bakS3AziEMnKIUcpHZLNPyBYbJxd3dPjnwePp+Bv2g1Ah6iF6ks2oRBGCsJNVF8Mv4VqsIOKenaW/TlYH2B/eOXnvSPuhV/HrS6G0Wz9c7mQbMBkBs0RLMZPVLEV3LWxVUlFWuh/eWh5a1BP/v6ptMgffCBXZse9UMkCntlEI3DtwO14fHFycoozw8Gh+tFqpuHrt+wn/O0B2WTxgqsdcatPhaJi5MKKKiF9WR2Ku2+g6FyC++vAy66xp9jXxJ31jfndF+Vl6qahGW1KVoaoZPHaKrs6ETMXNRTZzc07bOBRM+rk4xe4AAZ2y9g4G8TYxLTFIM1wpNDX0dGpkb3qGU0wKdTIz3T96NxCMqVu3k2W+jCV63J+RuGFt4/W7+/TJOz2SiyGQfUp8DjhqCCE8ccOxK5hImYn/cSbJBPXF1YcWbOVV1mtK8pMa8gseK4kKtw18h+6ez0dlczARm5xC0yaWqwUFfa1fwcrj6UJnTKSCcz9Op75+ex54Ozj3jibhHeX1bQq/RwQHtNR37KppFQuZXvg3HI8vppAUltqb+OzR3LTd0du0KZFZLQAGQN4Ju1utfzo7lAfdvwe19ZUoaPwUYAKgQ8M86ceGrAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Macedonia',\n    code: '389',\n    iso: 'MK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMDQ3NDU2QTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMDQ3NDU2QjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwNDc0NTY4MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIwNDc0NTY5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+x/HZMgAABhZJREFUeNpsVmts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'\n  },\n  {\n    country: 'Madagascar',\n    code: '261',\n    iso: 'MG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ0RjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1MDE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwNDc0NTZDMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDRFMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9rDjCQAAAKdJREFUeNpi/P///1MGBgYpIP7MgAP8+/6D4YqOHcPPe/cZWASFGCgEvED8jAXKYECi6QF4mRgGCIxaPGoxzQALMYoYgZjv61+G30DI/OUP/Sz+D8RvBFgZvr9hZ2AVYqOfxT+AqkLa9Rgefpdg4GfjpaOPgWH9SYKDgeE3F8NHFk46xjEorD//ZmD4CcSsv0ez06jFoxbjzE6foa2Pz/RqfYDsAggwAPr+KDn2/fllAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Malawi',\n    code: '265',\n    iso: 'MW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ1MzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1NDE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5N0U0RDUxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDUyMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+taggYQAAAP1JREFUeNpiZCAO8DAy8TEy/2dg+Pr/36f/f4nRwkhQhTATix8bnz4LpxAjM1D1x///Lv75vuHXx9f//lBktAELZz2X+Jv/f+f9ePvm318mBgZ+JuYEdiE5Jtamby9P/fnGQB5QZ2Y/IKCcwCEEZNuzcldziQORCxsvkBvOLnBYQAXoFTKNns8rW8olCmTM4JX5L6r/V0T/j4j+fzGDhXxyQMFsTpElfHLMuLXjlLJm5ZZlYm389rKESzSfU+zwn693//26/+/Xg7+/XFl52RmZur+9Mmbh/MfAABTEHtYXBdUZaAOYGGgGRo0eFkazJPXyjQbIqNEDYjRAgAEAy3xInECTax0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Malaysia',\n    code: '60',\n    iso: 'MY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ1NzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1ODE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5N0U0RDU1MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDU2MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WpzGZAAAA1RJREFUeNrElF1oW2UYx38n5zTn5Lvt+pE13XLhoNPNaZirUqc4BTdBBcdAwSlMFId3YxdjoHgnCIpXohcieDFwYAteCFZFhcKYFVfHKhq3Nfsg6dIk2CZtkybnY8/JWTtEbaMIeeDl5YX3ff7P//9/3kdhz2gWiLAaiuPthT5YNiC0DB0mBGX3r4Dt429DixJayfP9ucMk5Vhk/dBkDaydfBZUgzC7mYf3j/PC41+RySa4cCnJmfQOSgtdUkRdwFXvriYFOYr3tlxG6QyQOD1GTDcxmqnXB66sMW7owrSfd06+xfEXR3n/1DNMnr+HuapOh18AFRvqOnpkgYalYdcCYIgSjqhQX0HRQkQOPo1fsvpbYHxb4twgrz3/IcePjXLgyBuMnzoCW6+CXqezN8/Ijinu7JtlXlS5kE1yrRinVvd7zHt6sCtzpEM6SbNOUVkfWBGPy03GKwY+8c/6/Am++3Enj748BtunhaRKv17l/rt/5s0nT5O6N0P64gDvffkU354b5nKpF9sFXrIIb1KZeXuQLt3GRG2R8XKIgaFfoBc+ndwLAZHQ50rrJxRuMLItTWp3BsTaoVSOAzemODu1Rwq71WyOg6IoqLEYPkPBh69FYK3B4lK4mTgZK4jfHZ6nmsV8OcaVolS0JPc20dwz+T6KlRiolve+qwt7Kc/MzqFmVxdoVWq38hsJfvjgWYZFTmVkQpKKUX15DEslLt6+8tDXPLj9N9K5BB9PPMavV7ZRNqVAVaReaBCJG1z/7BGiQdUVoEVgt7lKPXR3Fyl9cYjpmTj7jn5EMS9M++cIR+expQAVm55IhcJilFrNEC8VrzHFmXAnXDwRoNtv0djAYwEe84BxvMqlWwe3/M4nr79Lh1Zl/OxeJi9tYfraHczO9XtDxFGb1jStaA4cAVfDBBsFJtKvstVapLQh8ANnymv/2E3ieuYCLMs3ue8nEvEC2esyY/Kbb/u5etddqwPkD/nngwEq3wwTZuNQTvTuL/9pZN5KaonnC9LplqkSDlYxhKniMvsn72om/qjO0Zd2o8kE8bG+yYqzb+ivwP8l3EY0bWYyFWzb2Zix4zj/D/C/DC13+DnaEZqZy7UFuH1SZ3bd1R6p9VQq0i6ps+2Q+qYAAwAlKDesr1W8UQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Maldives',\n    code: '960',\n    iso: 'MV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNFRTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NjMyMTNFRjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0VDMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0VEMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+25GwywAAAhZJREFUeNrEVktL41AU/u7tIzdarUU6oGNFRBlm5cafIAriQmRWs5jVLCoMzNI/ITO7wY24E0Hc6x9wXXQjiCBi1YKPtEmbdGqSOdemjG3iow/rgZvk3pyc757vnHtO2MHAdBbAMA0d3ZE+Ghdh7wGP7l0B53gnCT+euAxgLtBfBrhTnbcj0pZDNnSF7rw6DwSuvbjpIUU575B3Ubse1AcsPb0m0C9fIzhNAAkz2FCIh2BYRVjGLZRYAjERg+PYPr0CeZosAjubFaQ0QFOf8VjSqyXokuS4K7oBqBGi5AzqYBxzC8vInGaQuzoGIsKvS0CapJkxcLeeQx4UF2bSRYKWGoZJH15cYlCM4OjnHhbjn3CdPad1+HVLng3T23xD3JrLavseuLew+30NN8U7LP/5BruUpyCq7WX1i2LmMTQ6hemPn7G08QMQvURnnLh0mgZu+hxzVuXMfkim1vO+OWC1H9mzAxzmTrAyk6Y4UqqWDcLnbwwsM5qHMb+exuSHcfxOb1B86fxVrPaBH6qVeGIoFMuhYZxrx5j4NYv9cg4jqbHqunD9+jLnlJrhV5RMQeyBnFMDC0gFLDoK47aA7a1VhPqS6FF64Vr+AmJWyIbxvz7UHVtqi4VaZ2LexvQo89XWVsT1KI39dRtrv17nsSzonLRTBaejTSIv2MtNQr7TRKfag78BtXyOO9mPdS/G3fz10f8JMABK7r8EsRKWRQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Mali',\n    code: '223',\n    iso: 'ML',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNGMjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NjMyMTNGMzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0YwMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0YxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uyeEmgAAAJtJREFUeNpiFNlq9ZSBgUEKiD8zYAHv/jEzyjL//nte8sF/QZbfLH//Mf/Hpo6Z7z/j79dMf6+H8jH8fMjEzCL4H6s6IOAF4mcsUAYDEo0N/IPSTAz4wX8oJqSOl5ACdEOpoYYoH9AMjFo8avGoxaMWj1o8avHQtpiRSmrAgAXa5OHF1fSBGvYXWsmz4KnsYerALSE86sB2AQQYAKnHJTCzkNpyAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Malta',\n    code: '356',\n    iso: 'MT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNGNjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTVFRUNEODE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0Y0MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0Y1MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uPhVmAAAAQVJREFUeNrs1s9LwmAYwPHv5hvI3AvqZrrK6AcFDSSoTpWHIqi/OegQQYcOHaK/QNtWastY6jJ0Zeg5OmwR7AsvPLcPL7y8PEoURQ6wMArDoO94aFaZjKbxU+O3Hve1Y4YNB1HM84vk13HFdGDQ8eXd5RV2/YDCxjoxJ9Vx+M7Hs0/Te8DJqjy+vjB8ajPqD2KVRc91uT2/oGNIGq0mypzAu75h5+SIvL0VH6xVyuyeneL4bSJFYXNxibW9fbJmMdYbq5OHpK9UsYwSZqtL1ZhHX11GSD1eeDbkTIPt+iHSqpBEYjZkchqFmk1SqfxRKZzCKZzC/w+e/NXBdAsJEjK/rU8BBgBwJ0VJGmmDwgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Marshall Islands',\n    code: '692',\n    iso: 'MH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBRTVFRUNEQjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTVFRUNEQzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFNUVFQ0Q5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFNUVFQ0RBMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YGjCSQAAA6FJREFUeNrUlV1MW2UYx/+nfenHac8ppT0TLVAEZoWxwZKB4OayGJnL6p2axa9NEtggMcZEvV6yxBsvduONMTF6MdR4sSg6wleaxUFhDM1wLMDQ0CHQjkJp6ddpT885vgcKsjijI9mFb87Ved/3d57n/3+e5zBo+gSPZunwyNb9aAZQVO3ZzVLBKMhaEC81M/pzZUPkvt10zsgbZVnJiTkU6B8CS6EZHqKD5Rc7q75uc/c9zUV3oHP0m/KeQnMyk4usZ6DXQc9A/S9QDqKTQjuqutop1BaNR3DjjnELLcnEROr2F59sdgdXUlf8gWAornEp/d+gZn6ps6rrbHmvxxKLBnF7ASYX6zz+GtH0TUk05PoDj19898hz9U+kxFxlCf/RF+OJpXXYTA+I/S/oYuferray3uqCWCSIqTAsnnpXw2nu0OspYieQVZ43VdjN3iY35dKLrIm8+nzVyMj8TaILJrKSrEDH/D3Sjr1ftZd0VyupSBizhcR69JT7mTNsdUv+ZCqrCSIrqijJsVRWpSZvQNaTUiKTy0iymg+YbqibRm1AL7UJ39bIiCUQKK3hT5x5suENYndtZ5VKS4PDAULzTaal6XVRGg7UewRvs3s1Jn72/eS1O2FpLQ2rAXoKtSFjt/CL7RVfvs1drjMhwWLpqVdsTa3l+05uE4P3Er6x+Z6hwMD4H+HZVSbfjTRrhhEc7LGDruW19OhkKJPOgjDIUmgRZ5s/J3x32jq434FsWWmy7h370VYYhE3irZmVfv8cdX54IpSdX9MqzWmhJm1VCNHRV+G5yFVa3FSKaAJEoJparb+fdX7a6hytrQRqvDjygaHkmGHjxk+/hPquzfb4796cDIGWEy02hwXlRZoxqiYj2W4lrZCthtV4WhE55IotBVPtRRfbKm7ta7Tj8AUceA/gMkDfUKjHd7v/+t256WVQxTgjHCw8ezRE3pd8PZEdbUpf2ZUwVffnTqH7/WcXSl9qRPPHICeWgX5fpLu31zcWWP1thTYt7GYUsXiMy4PUB7QW2YAC2ULEDCbZ/2HN2IWXC/CiF8KbU9HawYH4Dz39V6/PSIGIdpwG6LJp+f0zccdAOvg5wlIxP3H+hZUOL4/K2plkyzfTxVd8kzf8E1iMwKjXbLEYtAgeZnAxDcfPv3VYbKnVKWzZ5YVDl0akmdEJhEIay8li0+ddjULS0sguGcpP/ej6dfwelgdg1Wk6eoStlHc/r5n/5V/mTwEGALOVkZrh0WmoAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mauritania',\n    code: '222',\n    iso: 'MR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMUYxOTgxNjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMUYxOTgxNzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFNUVFQ0UxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFNUVFQ0UyMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I0M3dwAAAo9JREFUeNrEVjtvE0EQ/vZednx2/CDGcQiJLYMQ1EggRMkPQKKiA1FQIaVKRUWDxA9BNKRAogWEoKCFIgoSBixix1GwZRs/78W3xyGFxmcfyKw0utHu7Hwz3+7Mnth4fmUfwBqlh8WMFKWuBQqOfRcCrkTZpQkPA09BnyL1KGMuYEFxJU+2jrxio0DZp+7M62gWey8QOSxPICVcZBUHd5bbuJtuIUc9o7gYe+KPPaGshWUowVTSKSO0KR1XxfZyC1vZQxp4MFyBh90TsGhtENLm1yFyjGte1IwnBD2tWTCF54Mm+K07OnZGJtPiVq4/GydQs2JIkgnXt3FR4h4bIjrVMruL8QHW6KhLXWZgktoi5cbBJq7Xy8gyGFO1fVBpIwO9vNRH21GiUz1wFZzVx1in45c/0sgziJO8UK9HCbSDQOR5F1T7V6CWgavpIxQJPuA6VCdaxrJU3pDWe5kjnIkNUZ3E/YPXOS/BVilGUE7VSQxFBrlF27cMTA0ps6nABUb+tJfBnqVjb3PXp/EznR44GvpkQ0qTepVzeWb3sbSLBjN93M1xrx0dWJcGiodbjTIUOq5V3uNBrokLzEyyIeWcPsF9zh1WPiBJ/XajBFfe9pCiEuzV3WntUjqXNF4i1a/WPyGeoDlvcn8cp2uBpDEE4kN4wySufavgBY+mrI/YVKbe6p4WVugOS6ZsjPFusoRTX85jm5fnptnFhjHyz7vOIJ60VvGos4KmraFEUDeklGbK+Hjm33meHTo3eX4llS2D/r+yZfY4t8y5FV422xOzdMzwjH8P6TAt26PhYES9xkbi1zUbRo6MeIHNzA/NvK+KBJDtMCacuXrzX71O/3L8N2At+OVJLfjXp/dTgAEAlE8F1+TZHx0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mauritius',\n    code: '230',\n    iso: 'MU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMUYxOTgxQTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMUYxOTgxQjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxRjE5ODE4MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxRjE5ODE5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lva3PQAAALZJREFUeNrEVsEKwjAMTduIbjIcO6h48CO865/4j36QCB704BBHq4iMNWbQQ78gefBo6OX1JSENntfbGwBsmAFkUDHvmALIThFxC0rABf10hB+mjCmOQppjliMe6qOO4yc2NnuJFCya+NVxTL7QEZ4vvUpzmfayenFQMwchYcfsDPUTLzy1RgQculKnxm7a6wj7z0xncu1Oe0oXJGiY8PouXNZtUnDYKNVY7z9OK08lvPqEvwADAH3qLsG8TnJFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mayotte',\n    code: '262',\n    iso: 'YT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTFGMTk4MUYxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTFGMTk4MUUxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTg5MzRERTk0QkFGMDJBOUYxMTU2OEFENjQzOEYzRDMiIHN0UmVmOmRvY3VtZW50SUQ9IjU4OTM0REU5NEJBRjAyQTlGMTE1NjhBRDY0MzhGM0QzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pK5/OQAABEJJREFUeNqklMtvG1UUxs+8PbYndvwKiZ3EiROndVJIE5M0BSSya0slkBBSFlXYtGWBhAQCsahY8AcgdlQQiQWwRIIltI2g0ECqkHfckCZ2bCd2bMd2bDLjGXtm7mXkCkTVOKnEuaORrmbmd7/znXOGwBjD44H/uZPwv4I+gqsjtLeHWUonGXDYILIBPQGCodFyRCvlqbOD2uIKBkQgRDodmKYIijP1nyaeQBNHqMaodu2tymrEdO1NlM/o0TR1fkSdnSG7gpgAmufR1qZ+LkzPLAAF4sMHzJWrtisTlME6UTXCupbaJfJFvL6B8lkIDuB7s9zgGb23D6an6edHyM52+vKrWLBXkylqbp7UFATGKSepRhhUTYWNda7JUcmlye5Olub19YfMaFjNZbUffmQmJyGXpZub1UJGUyk2kVR5gho6xxBPYcgj7TKA2TipcTG1espKXS9z1AtHoGPR6KEoGldfsNfpdH337R/xnaJVYCsKMBiZeCKTq5oYeOfdlzEm5ucWLRYzb+WDhl3He722vLK4tHTh4oXt7djuTsrt9tyeTn/+RQTAVq+TWk8JB3uo9z+8mM2kFFkaeHbg9q1b+5n9F1568b+ox9ItFgqxrehwOLybSICu8RwLUHN5OIPb2mZ3ubk2n2N0zAtg6gkKAFWEsImlY1tbw0PhUqEYi8UaohVFMQvWUH+oqdkh2B1iRdKqUjqrG+gSwX/86eDNr0cl0g7QXKlaAB/mCwW7yyM02f3dfofLWZEqDQ3J7xfaO7yFwl6gJ2BsC8UisFarRTXBDk6ZP7uR43i0/qfEAbI0+YAQ/P5OlrNyLJPP59wtnlq11hCdy+cye5mJidcl8YBlOIuJ38HE297IDfioGZh0glRA6wS9CrBlfiNy+FoXxRnDKIlFl8N+f+Y+wVChgf6jDRk7P1aRlampb6bv/LS5sc6wNEfS7Nq2k4bvJ90uDzol6Hcm/AIPrbGdGgaKoePb0V/u/vrl1FeJeCIcDjdUbTFbrl+/+tvM75WK6O0IJJIJ5O+iSDanwaqF7eX5QBHNeoUACSzBIKSl0nmXu2V/v4gxfenyKyc0X7lUpgno6Oi02e3VWjWSy3pA9gB8cDOJALFAvvfJA6Njorr2lyS6SMpmszubnYokl8tlm8123Mjc+/muy+0Ohk6TBJFMJDPlsu/wQMwfMCarVsxg2oQ1XM3vmtva1eEhLEqhgQFZVjKZvXg8Pj4+fpxqT0uL0doOp0OuyLup1HOhEOU8Y6uPclySkKZ12Gy4PjzmWnVufmE9sur2PLOTSDYJwsmDvraymk6njNJ3B3pdbs/q8tJ2dLOttVUURU3TKIpS5Gqr1zsYHlFVZXFhThIVn6/jbHjoqX5PjyKbzao1lWXp7F7GarUKVmutVhMlsVQq+3w+BKQkiX2n+hp9fhxa03WSJIx19FNNk2VZeMKHf+NvAQYAoQ8NT92b0fIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mexico',\n    code: '52',\n    iso: 'MX',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczNTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczNjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxRjE5ODIwMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzM0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0LwZHQAAAaBJREFUeNpiZMhw/8SAD7x4zODm6M+wM6+NgVjwKKeS4enUTgYOQVWcaliAmJdhAAATwwCBUYtJAv///aOfxf+B+Pev7wzPr51g2NwWydDkb8Rw5dQR2lvMCMTvX19guLWrleHW+bMMBw6cZygPtGV4fvsyLSz+D2f9/PWK4T87N4OgmgvD1TuvGBz8XRnEeRgYVk1sRKj+/5+giSxE+ZKJGUy/fHmLgecfJwPTh6sMHB9PM/z5+oXh4zdWBo+CLoZf/9kYnr+6zSAupsrAwsJKLR8zgskvnx8xHHv0jGHJ+a8MD8UcGFyqehg+Pj/J8OXjdwZbHy+GJ88voain2OL///6CaW4ucQZx9tsM/zS9GJZ8MWa4zf6HQaK0kYHZ0ovh8/MzDCJCsmAD//z9Rd3EJSGlyyDCI8WgzXKZIUDoFoPj48MM7L/5GYT5XzJwCIkxKMqaQf3LSJ04RgaSKk4M/C/OMdz8+53ht0kOgz/7WwZhEXEGaRkTksxhISc7cUsYMRgBMcM/YOplYhyAIpNMS0crCboCUOL6PBAWAwQYAIwVfZVkoDrqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Micronesia',\n    code: '691',\n    iso: 'FM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczOTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE5Qjk1NzM3MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzM4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pVbFKwAAAjtJREFUeNq0Vt2KEzEU/jJJptMfu3+u7ML6i+zdXop4JSi+hyD4ArLghe8h+Bi+g/gCXgkFvXGFdi1ut9NpM5N4Tqq0CGmbcQ1th+lM8p3vfN85iTh937tAjeHc/CoEag1F32uxkxJCy8vKg7dTCfsnipg1YidIAj3PDW5uN3B3N0N/PINMRC3GUWM0q3BvL8PLR4dQBPj2wzd8HU6R6QTifwJbS2mlz1Y2n8psZ5VDU8etI8hcUQKVBNwl0FY6ZzgxFsO8hJbialPNUS0vyQCjosT3C+vvOYCGErAuPCcamI10SZqya1OZICUANjCnt5vJRfodOx2Ylo7Sbr3r2xSQdTWAk9/uPb7RxNQ4VIT4c1IGHcw677U0qMjQbUh87k/oqujObV5O/OrYVLhD5fL8wQFOnxwhUwnGMxtkUJDWEA6vHh/hxcMD3L+eITcVQiWerBKXyWn64TTP/1rvwyaVlab3kzUtLehqnjig5nBy2IYhsQpK9w9KvQqk2lCq9zvaS8H6fjrLvfsRCDaoMRtqv5OiNyi8ftwgON2h9tigZ/1Lg6K0PrjtplrZSle6uiKmvGCmF8EwYWbH9cuDA0ql8M+41LSUXtd1/XttHf8tFbPfIjY7rcUuNSS3L0uwyY4VvUlMjfWsXz+9hTfPbnvG+Qq3X1mvFoSqiBKnm9kyOUUp3qRb/RNwh/bfL8MC7z6e+c7GjWKXGkfsnhy/OxEAO7Y3mHiWOy1V6yDAwKM6xx52+/IRKHb8EmAAirfmzWzPA+cAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Moldova',\n    code: '373',\n    iso: 'MD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczRDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczRTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE5Qjk1NzNCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzNDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+UdXXEwAAAipJREFUeNrUlctrE2EQwH/7SDbbmI3m0SpF2iJRaPEQ8FJE8OJFD55ETx5U0EMFEfInWBEFEfXmQfAmCFqhFKHSg+2lBsFSNAj2UFqatNQ8TLN57ToxBy89rCUxODDsx+zs/Ha+mfk+Bd4W2VVU0YM8u5fiauo99jc8iXYYKq985G+EUKOOGHb300VD9EBUeiR7AquKqPoPwS2gT4pTrYN/PwQi4Dptm6J0C9wQmCG9cghqsn76MMT8bAgzKjb5AUPeuY0ugI04pD/5uH39AEGBf8+FWVi2KLtwU2xfMhpGtAtgRbJa/Kzx6EUfM48tEopNJGsz9SDMk5cm6SVNxsc7WPfsuQPhqM7l8T5G5n5S2qgTUFwSQzoXT5lYluRQ9Z6KN7A0jr0Nc2mNuGUwGxvm+KUVlKbD/Md+Brc01nMqTkECxju81a0uNnwFPuQd7gYusDwcZHpglInCLcqObPs+G0UazHE6CZYGUiVo8ohJrlbi2sgb1jMx1paCXBmdweovELH8KH5oNrswTlZYJ7xR5Ky2SKigcsK/xmTiNdsrVfJV7XdJvM6z5+aqb8Lp8RLJ5zD1TmNhuohhNomdV5lIlRkccqhvieNAh8ENG6KW6BicsRxWs3l0SfLkOZejSanFqtxKO94DegYrArFlXNwMjB1zuX/nR/u8NgX4Vd7rbZ+uXRKt4JWsPKV7Hal7ZbMN/VvZwycCap0VtT/r/+o+bmVc6gX4lwADANw8m6+4QijQAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Monaco',\n    code: '377',\n    iso: 'MC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QjA3RTdDNjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QjA3RTdDNzE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCMDdFN0M0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCMDdFN0M1MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+o1HuEwAAAEdJREFUeNpiPCeo9omBgYGXgb7gMxPDAIFRi0ctHn4Ws/x5/35gLGaXlRkQixn/fP4yICUXCzMP92iqHrV41OJRi8kCAAEGAK++Cy3NEBqaAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mongolia',\n    code: '976',\n    iso: 'MN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QjA3RTdDQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QjA3RTdDQjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCMDdFN0M4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCMDdFN0M5MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XDrqKwAAAkFJREFUeNq8VT1vE0EQfbO7vrv44jgKiZ1YQRb5ATRRJCiQkKADGn5BaKho6egogQ7xExBlJBoKUDpEgyhQCiJSxBKREcaJ4yS272OXub1EwiYFEnuMtPJ5NLo3b/a9OfpaX/4GoILJMHxoPCW0xnynjacPn2Dj7jqW9lr4m2gvLuPG2w08evwAB9U5aCmhON8YqzoFS/cJImCwaQOTwnkIPv3JpO4Rpq4lUBc19DEKCTGZSH+SBVx6eYLwVoykJ/4PsPAZvEM42VSItiRInldVBOMYKF/nMddTTN1MIEO+40HRwCwiMyKEdxIGH6F6L2JxaZsrBphy+yQdATVrkHYJgw8+hh9Z9iv8f0Aw0Z/2+pdQv3tWNTIVE+JtbqAuuAE+P1hs8xpU4prYMWN9SCDfoPmpj9qzAQ5feWwpgT7/qkWNlS89q/C4Kxwz1nkLqqYRrKUIriR23N7lFF5TQ8zxmeUy7W7cY3esE8JoS0BWDfzVFIYnEW0LW2CGTq/4lPHZeh7xy3lNVu9HKDVThLdj6CNyq6pz7cSsM7ZJSyBpSwRXU4jMx0UDizJbmTf3/gsf8Q7h4LmH4zeKYbVz4DE7kTBQC8A0j1g1mCmryVzK2ZJX4ALRvKHiXcLRa+6HDIbvJQbvJEwCKy7njMWMsWuxtVaxGyreEfi+HtovVfY93l2dsb4uXeCRd90BVyxvfmfEVspGKhd4TbKVbEPMNvqs+FlDBW4Z7/GYK9m4M8CzhSLK+XO2KmUtF5dxqLFfAgwALQ/bbU/KwEgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Montserrat',\n    code: '1-664',\n    iso: 'MS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzRGM0JBODYxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEIwN0U3Q0UxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRDk0NjlGNUJGQkI2MjlGQjlENTFEMUY4NDU0Q0QwMkQiIHN0UmVmOmRvY3VtZW50SUQ9IkQ5NDY5RjVCRkJCNjI5RkI5RDUxRDFGODQ1NENEMDJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+w2IgWQAAA5FJREFUeNrsVG1sU1UYfs69l7WzWxlt1466spISNs02ZLgExpeogAmbGwEyg59hQKiO4PwIKmqm4JQQ1MVERhxkGfiDRBf/YACDQBgyzDbiGMOMwcCytdCt++rXbW/v8dzjiIs/jJnun0/uj3vved/nvO/zPueQ3u0vOzesrOtMrm7suNvSDJg/r3DtOPH+qZJdq4+KCA6KYugVu79225wxZ57jjc4Rb4AgCX8LCogihNlfeDY99el63/mOyozde56dkZvjG45DVgdUMXmG/gXbrbYK/d7qJ/YLRZlf0RFfgGXhn4CClD5TLxuMi/WDbsst83NPe7MW9dZ/Pb3y+ciez6jTVRjrxtqNje3xYwePR70DzRf6Y0qc/MlOqFZiAhAIBF7u/aoFtvbITISj92TBM0rjQwGHxaBEYr+FFDOoIUUYy3DJXl+6MjZrdroqiA/++rhPTSeI8Hy2wTAQBh4AotBUMhGobIVTE6nVmD0QGR6IhnJLltgTY0l3ro+y0HMt+kcLZi3Nv/lDc9DhaDG7bof9ZJoUI9MAhVfGeP1Wi2l3zebs/NyermsfvPetp+8OkMGb4B1h+uvOskU7X1ywLT8uN538qFOX87D1yaqyK2/W3ly7udziN176vq6p95MbabcVC9ovExoDJIqRh1ymtw+/GxGtKf4O0V4gRwP73R92dPURmJlKTBBx7ztVDUtjRT0/1lUdeqnR1/STtDpzZFnf6XtZ88sqznzT0p06x7Vlvt5t8iVdvXxhCImEntcVOHJoq3NZXs0Bf/jSzvPXjavW5a9faKtvOAOwAEEgVHIEB7989ViD39olZ4MGWc7JX5TQ0LxrbTGkSj0Xf950sX1fcfGO5UW2tL6kRCQGA9fEVLTYebYfqXYb1dkDROftx4rCmYAFiEMbKSFAGZDJvxUCiVVEtUwrk5Joium4BwJ87HYWRqBwH/hPn6qe+5jdXX7YYDkuFWx8a01p/G6woHAXYGTUbIxsGssZHdFUF8bV10Ykcz+xF8qXkqE9bG/Ky2H/5Lar5LXS4XKdu3VUKMnrXpKRWryl1+u5QbS2CBOExW3FZCBSDM7NmfdxZZhEznqiC498l9badoXABKjjvp4s9R+HZRSwpRj0wVAIGGIG5w2NHxkJkwTlkzBShDkvuA4Tt9YcSvCvQO4fbooJVFSlEhsl/huQiTefIFBJVVVMARLquOGmBP9T/wW/CzAAKWlmnQeZkEoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Morocco',\n    code: '212',\n    iso: 'MA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NEYzQkE4OTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NEYzQkE4QTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQTg3MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQTg4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AgxteQAAAiBJREFUeNrEVktr1FAU/m5uMppOY9up2rEVVCgtFEU3iooVdNWFe3euXAiCf0DsTty5E6VbN+5EBdGFuFGLG3Ezm/rAQseBthJppm1y8/JLTEREnHScmV445Obcc853njcRDQzXAYySHPRmWaSverbBb8+egGvYptUWcEjaCZFS2Caw3o5SHwGXjQhaDFQCAdWLiImFIardP+biwREPFciU13XgXOHRGYVnJ3/GKrqR6ogkSbsJKVMIDctmgG9eBE8JNGWMaqinuQhIq9SICzjTEtikCZ+mbhxdhz0cY6oh8WKSHFre1GNcnlnDqUUDtWqAUZ5dq5mpE+p/gUMaSWq6x9Zw62oT1opA+ZPA9GcDygBejvl4clZhoxzj3k0Lu+ioXaDqgjfX2r8ujzxtVfq4YPq4cs7Bmwkf9bkRfDcjjF9awYX3Jdx9bWG/kmhkA9Yi1U7LiHMDdVZwYtPAbK0fM+M2Lp63UwjLFZhd6CeonsrITs9x3s2vRhSEJvB2yodO5Dggb6/C8bq+pREpLGtkPf5w2oN7MMb87UE8vzOI5mSMx6e99FR2A7hC0adDjPYj8OF6BYeDEk64Jbzj3lsE5vsUBrYw0S2bK187aPRLKWSTSexTGpZY4QRmjO9L5K9GEQ4EEl6xe8wpXOMNGjzErpVpo4W/miPZD/AiKfMkkel4cyUG3Swa+Qd//S/8rnwWO7H07JfH6vGvj/NDgAEAfcqvgcMO6pAAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mozambique',\n    code: '258',\n    iso: 'MZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NEYzQkE4RDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NEYzQkE4RTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQThCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQThDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9o9/QQAAAvpJREFUeNq0lt1rFFcYxn9nZnez3x8xGpMl6xpMNCaglCiliAqKYEVbCQriBwreFEuhsVAU71oopRRv2hu19QNBBEVQLxTxoqEgGsvWoIwSFzdo/EjiZjOzu2YzOzOeXan/QGcHZm5mzvmd55n3fc4RP36yafzYlmXteFWDt2VQBA2+IvJ+KRx69BvJRGTv9l6mkjGYKoFlg2joAgzlQSLMxvECmVPDrPlnHOYFIeAF22mobEVxHEaaQzRJlUOX/uW7axr4PZAINBQuRuL9es13S1obNi2WFMtcSs/nwJe9FFvDMGE0wnrjIxg5r20J7DmFFbM6z8J+dm3tZXhlEkomVKV699iGp/a0cFjgeGkKCp63ldBex+gtV7h8YYi//AOMHvycuWmdRXgxccd+cT/Ur6dVf+Se/g5t5WsGj5tktqW4ZZT4DJU1/hAPkgEGDI2sWWSpJ4QiB9r/V3FHK/xdKrBTH+XrxRXuyBn/CE7QZXTS0T0PTa+Qzs5xWoTZ40zwhJI7VZ1IOAz1P+ToL61sWNXP+v0ptvw8wPeFCuGDj6nM+Hgqq7wvsZCxlnUcCaTcAWsZL7/mekg8DbL75lp++PZPXnWfYPhMH85PUayKQAQsqvV/KwgJ1RWwpyUOhx4VuGsFuX6lg84Wg7F3xzm5Y4p9083Mj1dpKwuy1jTrqqNocgmugHXTpll20/nfX7Fs7AhPNiX59HYWezDK5OGldM3EuOrz8lVVo0hUDgm5U9WZwCo93a5EnNVTjF2OY8358KVKtPaYvLmp0jbYQ+6bzUzmDTodX731HNcCRBAxdR+epiqqv4qRj6N6qnSfzBDbL5NL9i+Wu8lVD5CaBF+sgl1RKOajxJdP0nnxMb4+E/ulfD0rk0t1N6vrYKE4mLJtTKuJ9l05Os7mPoh8Vqv7/75yGSyk3Nl8UO7/Fl2/jZA4lKeWEdbzxgA/gsuFMOH0jLRWw79a2v1GWltuLLQOXvDFCyN1LhtRohhWjg87kNpQZu3oY7wXYABi1iBcy/DE+QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Myanmar',\n    code: '95',\n    iso: 'MM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VBQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VBQjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQThGMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQTkwMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hqhQlQAAAbNJREFUeNrskrtuE0EUhudy7L3E9q7XlxDZEgbFCRApQkQgykjpeAFqyrS0afIGKdLTIB4gj0BKBEWaSFEig41jiPBtvbb3Mrt7MpZF7zWiifJLoznSGX3z6z+H7uweT6nCGXUmAjg1c4ppqI4T2I4vwljTwCZaKbI/9I/Wov6I6WRhQY/l5OV5oZnP7WyVp17ouaJSMDdXUp+/XA8FumnFpWkkhBIkScQ09BGJ50fP1q0VDfZeVw72X77aLjNG6zXTdUOyrJg8cYxFS7vpuiVLf/umvvk4//7d8yePTCFiXQPZXR6NBKVHy1DqD43u0G91HBn9Rs20TCWXSUfRP6Ald2h7ugqN9ohR8mKr1Po1Pv3aUdJ8NA5kdzk0yPEwxnyBV61R3lA/nlwYWaX9exKE+L3t2OMgVchiuAwdfkJxQlUosW+NcROw+oD/uB5UVzN92+tcMlirOah7CLF0QOJk6EP7U0j4rNLp4DwQZ1G5oP85d+c7HvXQp6CjrxExpWoiNPWfptjfhaWzkc4WRuY7r6U4ieXfLSgLwnkS49CE1QWf8oSBMPLfdI++R99F9K0AAwBXEavacm2ESgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Namibia',\n    code: '264',\n    iso: 'NA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VBRTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VBRjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUFDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEwQjc3RUFEMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rnH82gAABORJREFUeNqslmtsU3UYxn+n7dq1o2Mb7OJUBGZEjck22ECHiW4EI4iiDEb8IoPAMHFsA+/6xS9+YAheEgNjDBkDhiSKSKJhExmg8cKQXbgMAxHGGDCB9bKu69qe+vb0UBiXgOhJTtOe9LzP//c+z/89RyH3g7NAupxu/uthNMBgANo6Medn8dX2cmYca6HjpTIGunowJtjD/wp/dJv0L5ELSkhujIEBCyhyxeKDmMCdiZqM0HlRlu/j+XXlfDkvC+tHqzn45ttSKxHLiPsIBQfBYCA06LebojeGRd1xWG0D5GZ2EAopNJ+8H2+/FWze21O2nCK2IJuNG19jTqAb58TptBxowGZ9FKPVpokqhhh8jm5M+IkIiyZBI0mpl5iVfYzJGZ0EVAPj7u1hZ9tDXHDERxYWPm9G6RxgxtoythVnY/24isPL3sGDGXtCLiElqAmE/EHcnhZGpzxO+qYqXTjcV6GdOqmNwuyj5IzuxmIKMirJiddvYnNDHsR7hlL6hPKQUE7JpraulKLBszgmzaDl911C+QhxYUo1IJVNeC+fIQYHefNXEqoqY7Fnpy4cMGIa4cTljJUAKIzM6dcux/QKjMOKZaQDn0dabvGLqE7Z59Mo6+dnM+yzao6Uv0WfRplzHWUrGSlPkLppPfunplO0+1XO7/5aFzYGCfTGk5joJeRScRyK1YhVZ4ikxH58l6XV8RK0gCqUp7HkZ7Jp8xJm+4UyZxq/HGzUvIxSKtdSroD15Szq+551y6dJHqS7o7J1YUNIC1DD0QyS4rz0uIcRCCr80ZnODx0ZIipt7boErgFeqC7TEhu7cjWH33iffilvTxRK1EhcdC81yq117M1PZnbDQi42fQtp42C4DdQgV1Mt2+ZidzK1eyZy/NxfsnIDv50Yg7vXDKc6sDydRe3GUuaqkljx8pDupS1MGQpe46WTvGKhrKlgsXcXayufEcqQRomqaqJaLqPCsn0Y3ifb0EzjgcdkIRKg8+clRC6eW1PKtvkTsH0qXlbcxMvBMGUbY5MnkVa/gZ+npDOroYSepu1C+bB0zBYVjG6IIb/C4lZpq0H8bD+DpSCTzfWVFHo7xcvptGpeXp/YLqG8TN6CMGUZC13fUVM5TaccP4Ty1sJX9qXLx0wpsuWVLGyr1nDk9feEUrxMmCBrU4cmNlW8rP+JpvwRzG1YJJQ7IHXcTSlvFJYxhl9IW09jfiqTOklskXoOR65Mn+YGIdQTG/VSp5y3HDYspcSzi+rKJWILN3h5a+Ew5RmhdMj0qVoSnT5Hlr2rUcZHp4+e2L7WiJdb97G/II1C8fLvpm8iib0N5VDh5pNYp4zXKAs9p3FqlLqXtuunTy95C1dBdelVL33qHVNeeygza5pddQsm2O2fCOXSCGVcwliNUlEUVBmNfZ52xoqXaVs2sK8ghaLGpVz4UU+sxfavBPXDrYT+POG69HKp/bgkNu7Kk0QKKYarXmYVfwhfVFAi06f687LI9EkeE6EkdDdPbrfSbh3t8np9dmviA1LiCqVfEtvOgyl5ktha9hYkM7exggt7dkS8NN8V5RBhk6rEE5sUG/HSGMOgq4eAv4vJxZLY9ctY5JEZu+JZeTm4Oy9vGS7FbHZLsfBbiDvodGKxJzG+ah2/znmSFxtLIl7eI17abf+LoP7G4/5HgAEAvGpSdeM9fnwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Nauru',\n    code: '674',\n    iso: 'NR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VCMjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VCMzE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUIwMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEwQjc3RUIxMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+zsfIiwAAAWVJREFUeNpiZNCuZ6ANYGKgGRg1elgYzcLwm5l2RrMw/KeJ0Yy3N2jzsP/BJsP49+8/oKUszEwM/8mxnEWQ+xcvx290YWbmb5++f//3l4mRke0/Izc/J8PffyS7mkGtCU0A6E6GJ+8ZhLhs7dT//f9/9PAtho/fGST4QaaT4npmBkFnhv+MKOjTT14hntQU+wmV3iFuOv/Z2K7fev3z408GFhZ0lXgRCwM7amj8/cfC8N3PX6+n0JqDHZQ0uwusvnx8u3je0Z/M/0AeIj9d//vPyM7y9+cfDnYWaGwwM/3+9YeRjYXh33/Ksgwb8+8//44cu7dh3w2IwLYjtw8cvPXj9x8GmGVEh7WYA3rMcrN/eflp34XH7Gwsxy8+Lu/e9ezxO0Zh3v9//4MimYQUgrUqAKblD99AzmRiZPj2G5haGH7/I8lc3GUIMJ3xcjAAnQk0kY+D4Q/J5oIzOh7AyUpJRgcIMACUJouaxkAcBAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Nepal',\n    code: '977',\n    iso: 'NP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRkNCMjg2OTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRkNCMjg2QTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUI0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGQ0IyODY4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8vLQDwAAA4RJREFUeNq0lXtoU3cUx7+/+2rSR9L04SNWbdX6RuhGcW51uKp0FXVsQ9gfUphTBO0/goj/iCCICBNREJyzjk7ErlPEirZqnYiPWtOVRTYb1zZVY9NIjbFpk97eR+5OkmL/atLXfnC53PO793zO+Z3vOZcZhoHRFvvspyoIGYeh9rlhaFELxrOMpspR97hEH64JPt9W4Wt0QbL9ADGTPEUwVSshOFcLBard1eKZzqqzOcq7eqTOKgQnTkkACcG9fDoXSMnBtrfNuOc68eXWHspezNgHshF9+PofwDwiUBkHp9kOy1AYZzuquQvtp4/OD79ugtm+ErxpwtlzSQWi62DBPnjkMJwaj83eJtx5dvyT3a/rHoNLOQLT9GEfxtSBmSTG7xyHxbUXUHj5N/xjzoNuMJzw3cB118n9RUFXG8wzyyCkjSv7hGDF0430VcVY7LgJ25ZNsH2zASue1EP9Yi1a5AhKBrrQ8O+phQde1jQQ9GcKwBJ3aUwOzEkSQm1/Qw8GP7gy+19hZmsj5qtBqLwAW2QIh15cgufpwe3be267UxmrABOTgoWEm9NyoTv9cH1ejuklJXiZYsPvjjeYwS+AlF9M9ddAp04SZChQAigP/JXdLlmr71kWVULX95CLhxMCG6pKgysTgibg7YMbyCDb/SV7jdb8DUcQ6q4lsp0UwIaFQBHQ+2pQhBbOp2dpwhmDRBVRFOjyIDTzXGTrg2hs+5F9F5G/vZW37ijCXmdMUGxklGpMmHyNoxnrggJL6RosvVmD7DvXECndiFrPuUXrfX8EqJU+Hu65uKJjqh5bWyXMWH9HvmfnY9r5UxDsM2I2ueZX9K0vx0XnSW4LJzbdzfm0GIM9zmilx/MT4ZINDzFv9gdodJlybQgULEc/xXyl4xdxtb/5MbXRsrG20dgmF9VY83mhv+kdqaE/AL3bDS9vRYhG5tWOc6ZVfkczwRfGMzYmDxaybJC7OvGiYjcGHjlil3vrLoSfP4OJ1N4tWSDT36qusyqtONDaQvCCscKFZANEVHj037qN/gdPYj71UD+ktEwwQYBAovISfI7yHvXtZzLKCne2/Jm5ogiy79WkwCZtyJrDwuBS06GG/fFg0mgmkw3KSFYq42FXgmhpO5b11YIdXXVZHxVBHXg6YbAjNc/z9bzvrTITjGSHF4XPpcxVQ7dS49dSdKVk9o72/n8CDABnj2XIyb5lqQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Netherlands',\n    code: '31',\n    iso: 'NL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRkNCMjg2RDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRkNCMjg2RTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGQ0IyODZCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGQ0IyODZDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dLNUtgAAAEBJREFUeNpiXCej8Z9hAAATwwCBUYtHLaYZYPz///8nIM1LZ3s/j8bxqMU0AyxK7j28A2Av72gcj1o8/CwGCDAAa10IGBJ1C8IAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Netherlands Antilles',\n    code: '599',\n    iso: 'AN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0ZDQjI4NzIxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0ZDQjI4NzExNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQkE2REE0NTQ3MzVGMzJGMUI0MjQ3MkQxOUFBQTIyNDciIHN0UmVmOmRvY3VtZW50SUQ9IkJBNkRBNDU0NzM1RjMyRjFCNDI0NzJEMTlBQUEyMjQ3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZDn+FAAAAexJREFUeNrkVM9P1EAY/aad7UK72RZkNSgmROFiOHEyZoUQIgkJRw/Gm4khMfHf8KxnxRMQTsqJAyEEDv6InkiAhUAWVrbID3cL2y67225nPmd7U9L2ZGL061ya7703r+/rDEFEiCxndcUcGVOuXAVKW++cez/M7tk54/GjaKIEf6z+VWkinl8LW4vEEmksItWj9YKflG1GBBglCj5A8loiXnpxaSu8i1SmF2vfTuQ7tKmf2S5y7OhUuXSSWS5pZIdxH5CEfy48i9y7KXwDyQBWHj4fNvS2qReLQNKAFkA1yJNEBGKEWRbMtKE4VQ/9BoDf+G5VLIFngC5Au6aptRpHZGEDkwGGgp1/Wy1pVU3OTI8XCo5ZPBbed7b2c+tFgDRA/fatztdvRj9/PD6vXAT+LisQIX0/JCjCGG6sl/O7tuuKyQnjqpgfgC1seq68mSvl9yqMkbBMhHQ2dIjIT0/LrusamY7BwZvFogPgZYf6GCbKJevo6IyxmKyt2H9f7e+dmBz49GFB4B88yb57v3d4kA9a9agDMfX2S0Rblmgtt119+SqRUj1seaSSz85t7emkeu8u580oSxhb+1+Ft3pKwes63tAbeltNsFbnY3nxp9EpVE2gSrILWABWuAdm92HD+F9vvr9R+qcAAwDK6wIXIkUhaQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'New Caledonia',\n    code: '687',\n    iso: 'NC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTc4OUU5MjExNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTc4OUU5MjAxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOUZFRTg5QjJBOTY4REI3QkY3NEIwMDg0OEVCRkM5N0YiIHN0UmVmOmRvY3VtZW50SUQ9IjlGRUU4OUIyQTk2OERCN0JGNzRCMDA4NDhFQkZDOTdGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xxyn+wAAA1BJREFUeNq0VVtoE0sY/ueW7CZNm9oY0jRFihjFC2K9HUWOCoceUEShL17w9tAXwSfx8qA+iFpQq0/KkUKtep4UER884PH0CK36oIiXIN5trVirrYk1SbOzu7PjpFU0wS2t4DK7MP/MfP83///9/yKoPQ+/5sEjLyOJ1OfrTjQmaDoisCOxDp/KIYOACHAYBDnoSXDEaNy4QTvACPTFoO9jxZS26TN6YxH+wdDb2uPWqxkwAYGvH8TwVeSYoB3EvPJlZdm4jsYjf69dfr+sCrc0+X5flGE7/cdb5xxu3gQlUyDSBaYDkrqhI5h1tdjGMHSXxSMX2s41xiapeajpoDx5CrVdZtXxDED6yqXQsi0HHd9cCPYpGm686RKSKAwEeDPBlKez9ezR2CRqvAlpYR7w04aN/up4LterUaL/ufL9X6nGE1t3RoKOQXIgkYsEZtYWSWbwCX2yq3PWngx/V8I0WxBt+w5obkmdaQ7VrxU8aTEvNkvTD+pD865XQtR2ZZ21yfdzv0UeBQ36h9oecKTEHpRNsbsJ6S3130ug+vytsJEFX6kOdfaryzI6npl544+gOS6A1kw2WGWGK3E+RQh4mgTCvK6Odb/1rVihfHEpdIStfOhqaM84EpWYEzTKkkFCSRjL4QhKxZ5AqDyn00w0DGBr6h2SBFJHBUIjyBsTKQsGE1ovzfWrbAqFThmy0vb9BDAvu9YhgFCJkMx7leS1E05KC8lihK+DlqVFgS/pzO+mL/4hUMsVYRpw+ru91/7nj5+nb9wMrl/nMKrOgQmi5KIWNxBkLN2tZDbUVxUgI0m5N/ks0PL0VkWc2ykWmkj279UPHIHD+5iTNiQGFrT+veJp8kyr3qZZwKWbQs4uCBbbNAxdFatbjasNd2iNOud52ulEInrimblwKcKQftnONv9X27OqCkqMoei76BpOrim2KRo+Am99s82uQ4sfntndc7r9y8qFY7rvt8jqi1MHYtW0NCW4Sqhr7/wR9DC64s4D0DUAt5/T7ABYlk08EK2E+TUQooAHwRJIVZx7C3TpfEpUXOnvI0zWYMFcAIEt6WHYNAGSWRCG0h3kFfrz/RojzmUvtxH+cpV8mkdiOmrofG0MNbZvIkBy1H+ZzwIMAI1PbW2aWDCwAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'New Zealand',\n    code: '64',\n    iso: 'NZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxNzg5RTkyNDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxNzg5RTkyNTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODlFOTIyMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE3ODlFOTIzMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ycsmVwAAAzVJREFUeNrslF9IU1Ecx3/nnHu3uc3p5lbOWDk1VDQj+muQgVREUJGFqEQPSf8IqYeIiAyKngojCiItqLCIrIewsH8WQf8gJNK0P6LRTJ0619y/u927e+7pbgn9hR7cY7+n8/L7nO/5nPM7qOvA8ezyOS0e87EbvZ9bX0CatXlv/vqWE/c21FVe84EgTk+T9zmFHRW5gs05++ib4LAXjFr4uWQFCAYEvxVX0jS6/XZfw+5Fm7c7GldVHm/3BBlNpVI0xZiRjepI3561OUa77fCg+dSdkYhrFMz6H90YQFS5KUCjoEGg/IJGm3ZcVczWckt0G3Fp1pUFHYUDN9uhtgqfv2owpcxEXli+4lJXpLXpoRIT27rHYkERNGSyO0qdDmN9CW7opj0DAmjxL+hA8Xw143hQdkUw8wesOhxTmFdnNIf8Wh5/tdrZmCeLSPaZJgnrbdFVAaYHJE12h2L5eemnl/D7X0mdH/zx4OquBAFLoF/vqg+6v4YYKSorNntHTILPI6Dei1dyayozSwv8L3s8Ev40bVbG+Agy6JY/5UICAx5AkOP9elUxiQuRIxwHBoM2HJZkVX3CO2nka/pXVyzbV72gNIuX0UnNPFi6qOjO5Xd1hx6Vbly6ZaUlP+PdGDvod9ZHciXXICgxjEnBrNQZthT1rEymQEUIxwqzTTfWpD8fUzxu1UzcGLmwv+5MUWB2x+NzR25Xt7ivPwlUO0Jzh54N2udWbG278vijwWKtylVqU93W7rftblAYxkh3dhlf6UDN/RyNicATwChCWV+AdY9EJIXFnajoDQtX3G1s29lBLg1ZfN4wpAND0PtFfIDsnTHk6+htbX1/U++UM7N499DdL1GFaJgidQnk/jAb9gnAJa6Ox5JI+11hSWWqur+7Bt0esGQAjYAeAc8BlWFChvRpMOEBEwYNr+aEoQlQby7TBnoKLKEymHCdyn2n/LUQ5NXDFEuicSd/jAyeElTtlhQwpAFlyUYLSrHTdKtcXuw0QpQlFS1RHY9zTDyvPgmR/v6HTAltJB0DoZJxEwhBMOKkpiYE1JHxjoMsx9fJTM2YOiyg5SbXyUz9r+fzH/1zfRNgANDBXQHER7G8AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Nicaragua',\n    code: '505',\n    iso: 'NI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxNzg5RTkyODE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFCQTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODlFOTI2MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE3ODlFOTI3MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KfyaKgAAALBJREFUeNpiDG7/8p9hAAATwwCBUYtHLaYZYPwPBANhMQsQfwFiHuK1vGFg+PWD4d/rBwwM//4yMIkrMzCwcQLFhUmx9wsoqEny8ZdX74AW8TDEPbjBEPrgHsN/NkGGb+++kOrh/yyk6uDiE2Y4de0Jw+VbXxn+MTIxHBN8wGCtJklWUDOSlBo5WBjkud8wnHQMB2v8zHwbGAIkW8w4cIkrpOPraAEyavGoxVQBAAEGAHrPMKYO1i6mAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Niger',\n    code: '227',\n    iso: 'NE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RjI4OEFCRDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFCRTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGMjg4QUJCMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGMjg4QUJDMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+d5ixUwAAAKxJREFUeNpifBDExkAbwMRAMzBqNP2MZvz//z+NjGYhUt2HZV0/b1xmU9EUjKsi1uz/RIBnpWbXFRjuWDFcV2J4mqfz/+8fYnQRDusfl/Z92XuKw4CRRZKNU5/p68Er385spVI0/vvLAI8ORgYQ+98/6hjNoevEZ6v76/z//y9//Tz/j8dSmcvYk3opBKhkaj3DrSsMShoMOa1Exj0tEx/fRp3RjD5qNG4AEGAANauB5CbwRkAAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Nigeria',\n    code: '234',\n    iso: 'NG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RjI4OEFDMTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFDMjE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGMjg4QUJGMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGMjg4QUMwMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qCpo0QAAADBJREFUeNpiZGgPZMAN/leswyPL2BGER5aJgWZg1OhRo0eNHjV61OhRo2lnNECAAQBu1gQALTkVbAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Niue',\n    code: '683',\n    iso: 'NU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUQwRkFFMkIxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUQwRkFFMkExNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMERFNDlDRUIyNzJFMTE3MjI0MzM4RjQ4QTlENUY2QzEiIHN0UmVmOmRvY3VtZW50SUQ9IjBERTQ5Q0VCMjcyRTExNzIyNDMzOEY0OEE5RDVGNkMxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+gBm+VQAAAyhJREFUeNq0U2tIk1EYfs/Z59znbbPZ5qU0nZp4qbRES41IMLooVn+meIkuNLtQGlhmhFj9iDAoyh8VlYRgJSVeEiSzmxgZeUMWbqNsOi9r07Xp9rnLSabkj5xp5MNzOJzDeR7e87znoJ8tje7RUXUjdMO1xkCRJ8eNHbxBmDCstLT2qtMT36qwVWtUDE66Ra3JovpC+FZ9Aq37oWBhDgCC+UHYbNP4WBDV1SxNrH+Wmp5WyQs7V1wDtnbxqaLdfk/gUcVXj5uSu1MwpKZZzve314Yci+odjaC1+UF+nfA3GI3ZuGwgAJWN1Z8or4p7JW/ayRWljkoZSAa4DIyZABYWxUxO3rCIT2/LrIuIzGhX9CpgEWCBK7Up1rdGJjkVI7B8kaav7x+SH9IBp3VPXU8DbK5ap/wYumpEYIpOyW9knn5u9t0WG7A2EKDbLncYiH0gpHv80KPtjdXMGV8ppPgarmK4xyn+okZGeXb7f08tW6MiwXyNwcBuH/UI8AaCLccrkb+S5dB31lo1kAdjOdnEvrLyQVsKxAtKISDj+nYFWZcUnKwGMO8H3VmYOTNN5h3bTJwIQY4J0xxUHqVMGQe0kfF9Cj0d4R0pDoGg94W84NyrfTEFbfdK072yrkBzE+Pr+5bn6mMyrFjBdREVs0EGC1VtDwsRXFRv5BcajgjETkdyWSpzm9yjevWuCpFcCbWBNHWLHwc5kpUT0KpiQhvDvC64dI6i37deyJqFscGGd2TG9oi/hd8tKcms3lLSX3mp2zkPu5eDeVx3klsWmtIm9Usq2mt95/3cVd+hMbIW7OFc4NRtiUgg/dBypjPjpf+IRQgg4/Jp+IThDqA0N/ARyt40hSf2557f+aBgg2Frl9ZtAhYHNNFx0MV6/wUdrelThQucGBsIRTyR+gd0D+uTRVI1sJipMY1RPqBJ2ZcSxGNs+tfABTxf1YTYQ0a26Wl4SAI6/eGZnv5B5GAfFngeNtusakgloYAgx9khWCIQmpNiQmA5QGwE/0Npi7NGeFmM7YlgWDYsozUFaGoxH3fpeTDUhCEc440WC///9ZNw6HGTKfSXAAMAWGmKZjQmfUsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'North Korea',\n    code: '850',\n    iso: 'KP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzJDQkU3MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzJDQkU3NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTcxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTcyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uqrYYwAAAdNJREFUeNrUVc9LVFEU/s69982bH82QzUjOiDjpNoSgraNIuGhR2apVG6GNJEJBLtxIiP4jA26CLCFwM/4KESlaWLTIhVIKJjX2Zkbfu+/d2xsJsnHz1N7Cs7hwDvd+97uc7zuXcGsa4QRDaCF4VIL0/wfWJLwDERbrxz1Jk5+gTf61gCvrq2H8SQOHv932NJULhSScfw4KgUoFW1+RvQrG8G0Hba1IJuG6waEtRMSv9U1P2cf6yrS1r2Q18eSZ6ClAK3dltTY1QSxKTVfgeQHRq8wU2qejIn9rnlI/tlMvXpr379ozs6hW45PPjb7ecn8/NyKIB22M9qEbSur7rjnwgF/LV4ZG5PwSlJJvV6KPBqMPB+1ikeVaz65rLS3RdZ2aLntfNuSn9/LzB3f9I11KiJs3tFc7l2WIxeTiMs+3x8dGCQaBx4aHeGeHLC34/T0XNGvJOaWSM/OaDCP9czdTs1hzxnkz57ya5S1tp9M1LEsfVwjnxMX+vTuJ8QmzOaNB7tq7ytMRIKalg8ODwJwdKnd3+7pGo64tbO8gna6ne3vIZZFKQbrBKdd1PXV71BQnhwhBa9hHrzFN0OnsWHejqym8oRrq5Ds0Lt5XECL0bwEGAHp0quOMFme/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Northern Mariana Islands',\n    code: '1-670',\n    iso: 'MP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUQwRkFFMzMxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUQwRkFFMzIxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNUVGNjQ4M0M4QUNDQjhENUNFRjMxODFCREQzNUFCMDMiIHN0UmVmOmRvY3VtZW50SUQ9IjVFRjY0ODNDOEFDQ0I4RDVDRUYzMTgxQkREMzVBQjAzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++R9VmgAAAxxJREFUeNrElV1IU2EYx5/3nG1nX7rtTOfH3PxqFplgH1pmRsaILvpSiYToA6qLIIhuveyioKKorhIyC8NEKkyCAkspjKJyRYZWOtfcMbe57Zx9n52zc5rV5cwZSM/NC8/D++Pl//yf50Vw5hksT2CwbCH5WxEBJAHiciDVJimjmqVzSEWc1LyjJeBmQRUGKQIB/QMaAceDqsCq/bE3fKmpkuQshY+mvA2qIIXxPUWHuiZNEPKBGkBMfx+HuiPpdWKFbMzQFps9T15u3C6Mq7YMSNb0fsfyDGTrqmBz5F5RYUF/yAxhFmRoKWgexySJjprkSfZqrL74uOdC+3MmOmorFvmnocp+OJCn4VqUQ7q8xifOJIhC2pYtgA4kju6oOCFe7AwKpwJnhx7PyIXxmy351Sb1tWH3yISuj9iKfC+aYw7aZP3o9IBMkplDBIQUWbv4Yczvvc7sHxudhYL49Ewov6pOX7XV6+YgN0HbHTeCzVPI14A7gCCW0EaklbM2r7+0zC23rNLOtB9dQ6oqSHMBCaKt4zAdiZy89dmFVgDOV2qHteQu2keDLJNXI0Csn9NUs+XH4lHPl4DyxjOnMUf3y4yYWa9uH3B+Cag4YHIte/32EohHUrpmJogIUqW+l7qNy+3bykvEJHa3j+qxzf4udr93d/fPiEhcX2R2Ibbz9VscV6fFpM/FI9hYQiOLfD29MRc8THZd8Z4Vsvtddx50dzWvVOhqjOCN7ysMrxbc+Q2bmUBwKeZjo1mGtY15aMfKxChR9uGtnXC+iHuogM/z1OYYnJA37a64UmVPZpWesxspigEFljFaipg5cTSmtsq/HaxgCb2JcjpK9QSB4yM0YW3cdLN2MsFxLYO6VyN+yCFAFDNGp4KAH17soUuxU0+1WuZcriDNy4I8vkEbbasPjrnYlsH8l58SoJcsNOlokaUalZYUa2pDA+uSjnJjYYryYXruo8zyRlrjnWZAgxbcIIujMQTh1NxLyrIpM07zIv5JMDIRHWARUGILYxddqvOTKYIydXB2MNiThj9JVWzeRuL/+wqWEf1TgAEAg8xMLtJFnKQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Norway',\n    code: '47',\n    iso: 'NO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0MzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0NDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjlEMEZBRTM0MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjQyMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9564bgAAAchJREFUeNrslc9LG0EUxz872Wm226baJKKHSNNTwVbJQRC9xmsvvfgHePEmiH9Jj14KCgrtzUtBsIdcpLRioVINliIKkkMTxehisma3M/lBG9hoXUEP+mDZmfnOmy/v+97jGYcvB32CrFrFdxye/tzg7VqJ6ewMPLJY3nzHaydPaSSLSKVACMKY9ipz81YW3JLdPWKT8/NgRJ+3MMP4e67XvqpH123gIYvL9IrFYKRSwT89VSRe++ORCNRcvDMHtG9Y4vjWl2BEE9bU97CHXreg9ipCV5KqnsDgKMn9PFhRLUE44qWCFYxoSQ2B93Wdj6vr0NUFUcn8wgo/Rl4h0v1wpFPhhyI2sN4cq3/swltPbOjrBk+RHJTAqVy7j1Vx1S6/5nlNBfyG/P/jc1nEc5/3giNuSf1rl9XcNz4s5uCBZGpynMzwAOJZf7PqQ0ldNvxiB2KvWVy9z3n/aZOJ7KzKsc3G9hyZdFJJvqP20fZWu4rUpRfDF7ZT4uSAgqlybEiQEfblYzLf1/g9NIaIJ8O3k0gk6DidbLsudz36ltVUfiMSYdnUfcMSY5qdC6qF+f/kUa+1vFI28GuMxfvpdGPEsVvgjf0RYAA4FZnydWrl6wAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Oman',\n    code: '968',\n    iso: 'OM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0NzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0ODE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY0NkU4RjQ1MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjQ2MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oZcAewAAAahJREFUeNrUlbtKA0EUhr/ZS7yu5iIWIoKN2FioYCPBS2NloRaKlY/hY/gSVhFUlGChWATEQhFLK61EEhW8JMRks+OZbDotLDYJHhhmlx32O2f+/8woPz11B/SitaZUhP44WDa8vkB3F5RKmkTSsveyPWYmonBkjPFVhpFRUPLmxgQs//c86BTwzRUCJOoQsPog1uFxew3La5LGOOgAHu7hICOJuLJERQ62CGpQqcDKOvT1w/QMLC6hh4ZhcyuEVqtNAJtiip8QF23nFtFeH/ryAnWahfwT2KK31YyKjZE6OuFoHyWVqcwuKncGs/OQOzfmEkHcyHV2CILQTOkF9OEemGF0TaZgdQMkEbPV+uRYvC+GQ0cCVn568h3b9erb+VxotJMVtlNC4DFJoiyuL+SpJxkR2Kn3UM0Xg/mhuUwYQDwBfjV0uDFYaiDqdmqE7fz8aoz123Mk5mpTOH/OULcaLPIqgaqiaB3o8FhtBdiqaiquYjvdw1u3Lb0etAas5EStyb2xMyEXRkqWl4IWbrVMg+818qbXy8H/dnVbwV67+vixHfBvAQYAQ9x1aPT3zwwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Pakistan',\n    code: '92',\n    iso: 'PK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0QjE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0QzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY0NkU4RjQ5MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjRBMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+95KRfwAAAndJREFUeNrElj9IW1EUxn8vRqpNrS8xoKnW0qBQzOTgpHZQoXTp5OBUOogIlcbQTScHpVAdhEKGDI4OUsSp4CLS0rFdirqorTXSanxIbXwxMXm9793bJhUpSB72wOG+c+6f751zvnO5mmVZSeCW0GPOydSbKcZfjUMTbkqN0D2v+qBkvAqp8fCfxFPWzh+gmRqaV7sCYE3t2oHOe530dvRi/bTAUv6c0IxaW1DrXQG2d3yB/gf9zI3Msb67DnkFIEB1XSfoCaKlNKp8VXKubGD78H1oibSw8GyBmcUZkh9FU9xU8ycQrguzPLHM2OMxcpmcS8AFGVX8SdwxE+8SEEIefiZU9EhXSxftze0MdQ+Rt/LSf4F4LwWcBv9dP32RPrb2tiiYhWITVsgwEm8T1FbXsp3aplFvJJlJugBsQmtDazHtXpWFCmULzZ5lnRKcGCLvdcLn48J0ey5PaknTcChMW6gNjL9PyRfynGgCtEEYlbhUY0HSzf1NzKzpmLFHMaeX7Uz8OUlTgPZ4SpHxZQHfgNRWiqUPS445eH+Q4aFh+GzfvkKzimRp2XLNgWYC/oDs7bKAPbKeE4sTorQFxxUfiDP/cp6mtqYi6HWYfj5N9GEU49BwgVz27VQPG5826JnsYWV8xan5QMeAo0fmEZWeSnzXfKx9W6N7stvpbXS1t6ybyw70Nqy+X6V+pJ7Z1Vl2jB1nSq/WMXMm0ddRIk8jGN8NyWyr3Ih/R22T5Q4cHBww+mKUWChGIBggk82Q3k3LKBskGd25QErBbbb6ZRqtU4vDr4cyf3ZagyVrcBO49Adsuab0vJ9/Ax+r18fxVb0+bKxfAgwAbIbG6d67HZUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Palau',\n    code: '680',\n    iso: 'PW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNDdFNkQ0RTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNDdFNkQ0RjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI0N0U2RDRDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI0N0U2RDREMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ffmgGQAAAhdJREFUeNrElc9rE1EQx+f92GR3ze7G2pi0sVKrJ5tLEVSE3kRD8eDRixcP6kVEEHrx4v/gpdCDB0EQxaMHBQNtb1FUMFpbwYrWxJhks5ts3J/PtwpSaLNhK8HhsYd5vM+b2e/MPDT3qALDMQxDMxqxh4Dxr+WnOr7KGBKJpdA2hoDxnX9BU+S2vZGanT8orc+kVijyq3Z+rVMQSW8s+dlndOAFtB/3mz0hIPfm1Hwx8yCf3OAc09WW28W7n268tY5Nye84PRqNtsvIU255o4zhhem5Qq4MNoAH4b8hACL8tKTLr5+86pyclD5E03eQMQDccPffPnylMFYGE8AJXSGaX2CCKPXuHD2fFhqGl45dIT+c3Cnt2ensY+juoCx3qqp+IbtQdSZiow0/fVwrgQDg9zkUwAntuYy7ASNx6xqptBUVTwB7hfoeYvgQG806nhadqu7uswIF982rD1oh7bI5G4pG+h56Ycx2/RRBMdGjiepSq7j0vQjy9nyAO3umfL92NZv4GltGHkuaNm99XFyrT4MCoZ7o9+JJKBA45Pr7h3VnXKPN2OiA4Uxik4+OS2+e3lu/1nQyYc9ScIJkafPcxZelFf3MIWl1N934t9d5Tzac7BG5MimvEuTV7AMVc4Zgfzy5wctulzOEm8cEleiqpOveyHLzLAMs4W5O/ELBGxjv4KH6J64UMfjaOgb+/1MwRPQvAQYAH8/QWrO3BXUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Palestine',\n    code: '970',\n    iso: 'PS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjQ3RTZENTMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjQ3RTZENTIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDdFNzEzNzU3NjNERjUyQjNBQTU3RjQ5QTU4OTk1RTciIHN0UmVmOmRvY3VtZW50SUQ9IjA3RTcxMzc1NzYzREY1MkIzQUE1N0Y0OUE1ODk5NUU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0ETvLAAAAYtJREFUeNq0lT1PAkEQht/Z2zvDHSCgiYbOwsrGvyCJhbGw0tbWCDQGEwtbC/+A/gBLeyu1ozBWGgsrGhI9SbRQlBC8G3fv8APouHUzuWQvm2dm3/lY1DJZSIF/WFadqGM7dWaEoWE2k83S3vUyEKZjb0uHlQPb2XEzsKRJ9LtGk6Y7TjmdhrCMo4WmS6eqlJGWSXQIEcR0x9ny0kaUIYV2P3uK3t9DebFO1tcmanuu/xQEgYGoY+vHPp3ny3NOtobRsSn6G/BweNDpdsfjhmE4LIiudFBU4UET8J5fCoX8OO3CPNwmqiNjbis7mbq5HY8b5YxGtY5qfHGZXxNKzXLQlba7HB3tFzPNY2o2OPrzRy7+Pjhwe4wcIDVBfrRm0um7n8JShXw3QCPhbIL8jZdxPYtSBe1cgEdgJglYgIUU3N9dFalUpQ8vgK9mbeJWhJoXekrzxRxWttFLMXzWJUJJJ7X6SJtxNi9WyxZI6RDqeImMPATydIE2NpU0EC1iy9IZ5uTPi772lwADAA1uTobZeCdSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Panama',\n    code: '507',\n    iso: 'PA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNDdFNkQ1NjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFEODE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI0N0U2RDU0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI0N0U2RDU1MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IRlRqwAAAbFJREFUeNq8lksvA1EUx//3TqcPtCpSz5BYioUNESxJvGJBmlhZS3wCH8CChYhY+QhsfQQJCemiC+xKUDSNKtOhNXPnOvWKhZFcOj3JyZ3JzcnvvO65l0kp0wDaSA0oiFMwcdo9BesqDS0aVTENk177Pj7wba2GhLnbjiTNmTaEIz0hu4ILRYHl3UtkDevLEc/BRxcmxjdOsL5zjunNU+yfFcCqAe7vrEV7OcTDLJop1UNddRVPtc9tY3S4CTMjrSiUBCQ5wVgVwJaQmB+IIeTnKFoObIpa15j34DLkExTUuWvbi4cH2MgDeXWnfM8Ukapo5IxlUxZaYpQeG1pDvTq4YymhbJR7EuiM6kjubaOeVkH/yuC722f1AtHZzllB8EgECGjQAn+pcVhXtyq3eB3Z/VJakX+EFqZjqHG1yfVnoaZzDBOZ1S3Y2Tu4jb2Kg58Sx0hNL+BmZQ2p2UWYB8kfM1NxcE1fD1hrCPfIgDUFUDvYqza5/iMNY5NojMfpzqbGLd9unHkPli8WonMT4KEgnGIJUthgXPcezPw6lfQdxIOBX0em8fH6MFAdeWO9CjAAKGmKMiin+isAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Papua New Guinea',\n    code: '675',\n    iso: 'PG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3RkFEQjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFEQzE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUQ5MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQURBMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A8tj8QAAA/9JREFUeNqcVUtoXGUU/u5z5t7x9s5MpjNgbLEzNYyEJkwqCBJTG5AiLUJXCbgRpBBSQrPpQhSSjeuARVG0rq24UOJCu5AuJAsfCRFja5OGpLE2tslknjdzn7/n3ljJZGbMJAd+uPd/fed83znn5wCwrBDCp9oxvCipWHBqcGiSx8GNEwB7gwNHh8U4A3Nb7/XvL99xTZwpLOF6LY9uMYwY3eCAHQyUbrIINNzpQe1x4Brc/20v/xeY79xI+U+MVh5AJ+A0sdAuuB+ZU+YgdjBkvysift6CYVD4/nGudcR19sn2Jl4rLuO+a6FXUII5ryXiDr28DFQsCUdesCF1m3CK5AQtOiUOrXxvKuVPjoGXifobZgG9RL1GPDZE799JU8aGgPAJF+lLFYSf88DWJCTfMJH7IQ+1y4W5JQQyNEhDo0RDaxXUmKjjvehxGMzDqmdBesIdgVoFAR2vmtDOWtBOOVBPu3D/5iDotPisi+2bMhYu6gFlgsqaa7zXRFHE0+kTuMaV8DpRv+k56BHCAe3+FWaBR+J8DSdv5pF6uwy124X3iAP5B2bRhg0eyrkaOscMWCbfQHlL4KGhITy4t4yxy1dwy64G1H9rlZEj6hWKmoUYBI0h/5mKtdEoqr+K4LMuhCiDuSZg68sQaj/K4DhigFDZHmCxFfDi4iLm5+dx9/bt4D9PqXuxtIJJNYWrahJR3cXKFzLWP1dgkf/F701kuxyIzzvgH/O4O6rh6AUTCO0g8gLqwPfVuJldkI/gmtaJDvL7jmNC5Hy9eYRiHrQzNtLvV7B6NYK/bijIvFPBw+sKvAqBSW1ovNdCoRAEQQi+v7FKeKVwD7+4BvpkBSLv17ALe4vD+lcKFgajMB8KiPdbCFGSKWkXToVvrnEkEsHk5CSmpqaQSqXqNvn/c3NzmJmZQSwWC+ZWqc7PEvgH2xvwW26ckWoUsRpzUF2izkdOiJTJhVsypKNeQznXuTEyMoLx8XHIsly3ybIs0oeB5/nge7ddoU53iTpehIr1JL/T7STdg7nCw/iD0opkri6IEBXWuo4zmQwSiQRmZ2dh23bLMnMcp2G+V1Tw8VPP4LSk4DebHhrCUY97sB9zsDd5iHrdo1HeN7kGBwcDGaanp/fPAyqdDwn8zXAcy/TwbBoeJIFeKz+zGdprIE9M13Ukk8m2EtAkOd4qr2Gc6O/gRGQiEhzZa9qvD1VO7dhLUgQfUfRdlHi/u7Wg4/HtRJzL5TAxMYH+/v5DAc9QtxsoLuFrq4ge0t9PPndX6C2B+/r6gvIaGBg4dNQFz8VQaRXvVtdxjJfQScPeBV76t+/XDU3T2PDwMKMsZ83WDzrOyRpbjGdZNXGK/RzrKv0jwACqn6gx8GMIaAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Paraguay',\n    code: '595',\n    iso: 'PY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3RkFERjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFFMDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUREMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQURFMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8tTVLQAAAOtJREFUeNpiPCeo9p9hAAATwwCBUYtHLaYZYPzz+csnIM1LtEsZGRj+cHMzfL10ieHn928MAmYWDOxA+u8/knLlZxZmHm6SXPoXiJ8d3s7w/OAJBl5uPobv314yyDj6M7DQPKhfvmQ4MLebYfqfNwyb5UQYLqxbwvDz6jXax/G/X78Z2L7yMjAKcDPc+v6I4ddbUHyRXvgx/v//n6Q4BoFPGzYy3Nm7k+Hn/98MqrZODCLhkaTa+5nx09dfJCYuJoafnMwMXw5fYGD8/ZeBy8mYgePHP4Z///6SZjGDxYrRSmLU4lGLqQIAAgwAPdxSxGn7ZuUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Peru',\n    code: '51',\n    iso: 'PE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3QjRGQkQxQTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3QjRGQkQxQjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUUxMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQUUyMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+b8OOOwAAAGlJREFUeNpiPMPA8JSBgUEKiD8zYAF/gJiNi4tB7/FjBmYhIQZ84N+PHwyXZWUZvr95w8CKWxkvED9jgTIYkGh6AF4mhgECoxaPWjxq8ajFoxaPWjxq8cBbzAJt8vDiavrQovUBsgsgwABVWxD3afjyOwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Philippines',\n    code: '63',\n    iso: 'PH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3QjRGQkQxRTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3QjRGQkQxRjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdCNEZCRDFDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdCNEZCRDFEMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RLn3GgAAAxpJREFUeNq0VUtME1EUPTOt0JYpnwJCVBQh0agLZWsgMXErGze60R0uNDGiK6IICiqkAgFjRFjgl5AQDX5CMEDih0QSNBiDIJRfpOVTSqG00EKZ97ydwWKEhXx6k5np3PfmnXPP/VRo+Dhmy7k7YOz50APEi0CiEZAZwBFSEzgZYEfZEzvy7vfB3T0OpEQBxm1EIHToInw/3ehPQ/ZZD3rfncS5S2mAZxHocarAGiFEEfsnZ5mr2Sga04GwJMXZ0TWF/IpvaGwYIB/JvydSlZ7zLZV6lp7GtRbrGodxvbwTlnaSP8GgXksshMDcTyvawLLyWlTVhYKH3zFvmQFSKf8Rm8//CjCbp4wbFCcbuQDoj0CMywputE16ca3kKx7V9VEN+FUCWkoD4xssrj9BLgxB7s0A99HBsosoieDOWrCh04FV7IzXo6YoHZ9fZeJ4Ziow6AFG3HQCqSIIm5OaT5jBHNUETAcKeiB8N8Qd+RCkY6s+rG2WcbX4DYY7xqj94oFI2i/L6wT2WYzMUakIwO0l5A2nIvIB0mGIUSfAtTEQt2cvC0TSOosBkwcMhShr9cJc0MScjikmSvr/Dl2rRApZjRKBitWo0gWO4Ax8yakS+dvkOboZFBpXlt4iw1rMZ20urpGkDUo9eQ9sopTwvQonQZcKMalcKbR/baalG7aci3B9aUWcGA1dVCT4uqUmYO7tBhs+A01yDZidwKSjJDcV2VwbxJSXwQ98vRZYc+/AXv9UEUUXnaoWGF9ff2uDDMJ2QbP/03JLMQhsEULCZfp9Xm2xOS+seYWYqKjCot8BfcReiDod4ckbmmhrDxCZBoVGCvKyVz/GaKEZnl8/oBMToY0xEeDSpgaIdk2vJlp5uJpaYLtRjOn2FtooQYo9SMHJmwZVgf2jlNNKCKZT1LqH1Dz2D8KWfxv25zXKuyFqH5ERtwRwBZjNQVh4TaBZYD4G280CjJc+wOLCBPSGZIh6/XIe2Rb/LXK1MhzPXsCWdwvuwU7ohARoTbFbGuGqiN1tHaPWXLNx+n09jQ4DJNMBGigspKAB+y3AAHmPY4VHbneXAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Pitcairn',\n    code: '64',\n    iso: 'PN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0I0RkJEMjMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0I0RkJEMjIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDAxQ0NCOTM1MjkzODNFQzU2REU1MTU0ODY4MzQwMkMiIHN0UmVmOmRvY3VtZW50SUQ9IjAwMUNDQjkzNTI5MzgzRUM1NkRFNTE1NDg2ODM0MDJDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Q37dSAAABJRJREFUeNqsVGtMU2cYfs/p15bTy2lLKQUL46ZcHBlIXbEo6hwE2QZ/lhFcFsMuWWK2OTez6eIyl2X3zR8z8bIoW+YSF9wCGeiUjdFNRRJH8YroqEIr0AKFXml7ei7fTlGj/Jibxuff9+XNk+d9n+d9Cd8JmzaFHllY8t33f7oHXabMtIoSQ6HHEdWl2nnlhcHJgFpnlseqmLGMesvvw1y/3amh5XBXROI4P0OJdrUMkCf7N766siAgbXWT579oebFp6f7er4Yrqt6asF7/pXttBrO+4RFUuODzA1ff/7ov6nCDmro7NYTCL2woQyP5pc0OOtIb2FqT3thk7fzomYBn6lr7jrjG+M4667I1kSWNyx1S07tdUz+1n4yyDJh0IEXzmQgAPO8ZFSS0ihj97Etiz8GxtFzExpDTubi6JBbhLnbaZZkpi42qqAT5MvLGTg+ohFhpjrp+orAjaAQUu80jkMDLgOQBxQETNz9HQy+/YSYxoFnMeZ3XWI2Srlnpd3pCvhDISJJlpcVF4TiesPViUxqj13AYGIIUyQBh8FMwrQaxTj0t154xcJOIwBCXQpgGjIBINIG2+TMOlG3ZvbWqtpCDK0PNnS65dcljTQ2B6scPfvLpCta/LDzc3372wzOsTWryey8B64W4urLSiaQx29FSbb5v1cNUkk/dZqc4SUS7aCToNQiYFPWTT5Sn/7FWtcF94ueNuy2Nh17afu744XOmDEk2JWxqaM4p372tbeahTH1rrWpPuCct6geSAg5bF81kF9shdXCBlqlbFWAMPl4Oe7f0VK7oERg/sErAGOn4+K/fdG2a4s5CFgRJ0ET/GvK/HTIHLyEQYnB94uPNLTvXmJ+vy7XoUgwSj4enZMmRFqcriiSg9utkKveoZ4S5UL3cUmMJa/9W9+nk7mEBE1gioyt3dox5KCPgKKgJQiWbHJrugWz7OBf1emGBGpLp+MjU6bZzbQ48JVeClAdM+mK8CuSvr55dmtvrHqx7rmrq2NBo8+GyJ82xI71ZITdeWmkgJfokkEiAEkBGiA5hDgsaOaAgiCapKGAx8AJokiDPAHrRc060kffJFkuz9j09Ubga2+hXYjnEt2PvaYrMPsn5+s0Lx90qoHgxjuRcIolb8bwjm/jOsN543MovoyooP2UL2Ndvf63PtaG2fuAKm3Zx/M2mErRvx2HLo1chqhCLyXmE/xN09LducySYWmAO1uR/IHinny3ZFQk6HTFmxptz+XKmuOoiNYL7gIRhQroieYXCcMQb7jrUF9fn9ZlJoq27oONoMhemQBEU2yNvdE/8F25PSoRCYL2K/a1F3tGAy6W1LmMuXDSaaOdTBQbOsxCUs4kVFVcGJ2Yo3JtqHkNyZJwRMidyBpzFqYrj9mMV6aUzWB5ObPxN88SlnHMIYzz/xPwr5ipFSdxMmDp6ihZz9ePOdaCd/eGInkQCke7HrMgpiEUoEZLEWPC9CRcvEeKBToQMjLGEyiSRjwCR9xYVeUew7g/E3DGaoyPm6UNCgAEuAC4EDxCsTwhEUEl5+qqwxZisfIDM0wGmuNT0jwADAIjDExM8WLDuAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Poland',\n    code: '48',\n    iso: 'PL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCODVEM0U5RjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCODVEM0VBMDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdCNEZCRDI0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI4NUQzRTlFMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2uLYNgAAACtJREFUeNpi/P//PwNtABMDzcCo0aNGD0ejWe6K2o4GyKjRo0YPBqMBAgwACfQEVtJhm9QAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Portugal',\n    code: '351',\n    iso: 'PT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCODVEM0VBMzE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCODVEM0VBNDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NUQzRUExMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI4NUQzRUEyMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bRhArwAAAq9JREFUeNrElslPU1EUxn9voo+W2jIUKjiEIYpaNQRMVDYuHBIT3JqwIU5/gDsS18SlJG78A3TDBldiDEFNZHDHQjTBGMCWUQZpSynv9b3rrcXEBaCFoie5ue++m5fvne98Z1C43TwNVMuVYCczVHxph6GRZQ7JfUWed2l+uWb0zQd+2/+F+VX+k/09sADF1lDSKoorz8p+Aisit8c9IMEqA+vYNRaOoqDO6rnrXXKm7wiakdcplabILL4qm9MVKcpr1/g+6UGT8lAGAihBcEw3x0JhPJZcxlXaIws8OqtTM1DJen8Ja699JN9W8aWjjOTdNcSyQHUKSfWSSdu5aZ51zLHWB92jLl1OA/FjTaD5SfRpJG9tkLyxLL038o65vp2QMFxawkkocWkcmCHc1cPgtevYNpxv60drv4lDEC20RCYsXzr5xXtrYEcjUJYiXJzm8fMQja3fiFlTDL5bRQgX24qiX7IJWbDRso4ynMEbK8LxunukWmQLlYumC17NBfGO+ilfMLA8DrbpYEYNDk95SJQI+SOSZXWTpT3HWHdZTJm8j5aSCWaIJi1OuaNcbS3jSmsFJ+0xVsqS1N6LY370YUwbUtmiADHOplLCZHG1mCdtn+h+0MDxF0+50DtPrKSYNwdeEu4sRzszjZ6sQIlJcTVYeXm9fR4H0/SOhTkaSHG5+SsP6yLULw9zZzLFichBMtZnJu/7CfYcQK2zcfOkWpHdKb5lg8h6LUskaYOLdYsUSbHVR1J0Tkilj3iwl7yYg/Izv/NTVHkWkMT2HguZmIbMEU0wNB6S9TLNUixF/EMxR6IqiRkPojKDMETeVWtnqn+BZz0vTctarTEx78cYt9CQ1FbbuZi6+9mdRI56YUoPfQ5CspBv+uy+LRbY9M2Rx//H0aeA00cW64cAAwDqlwCQvzogDAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Puerto Rico',\n    code: '1-787, 1-939',\n    iso: 'PR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjg1RDNFQTgxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjg1RDNFQTcxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOTc1NDI0M0UxMTY0OUU1MTE4RDY2RTdCMTg3MDk0QkQiIHN0UmVmOmRvY3VtZW50SUQ9Ijk3NTQyNDNFMTE2NDlFNTExOEQ2NkU3QjE4NzA5NEJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+giI5EAAAAmdJREFUeNqslU1oE1EQx2d2Nx9NyKE9tLb42WNFW8SP2mJPUigKCl4EIyhetD2kJgQrgopoRCliFUE8eyh4sBXFgwcvSig9CS0UayqpFcGmSUiyyTa7mfHtpmnwtmQz/GG/3vvNvJl5b3G/Mv+Axkfg6y+AFIEMiNAckxbp8Fn4ElZimuTrQYFmQmRoAl/ESIwmchck7mLoPH3IVGANTDY7RAuChBVAInaBBGf4dbR9cqBvPZF0qyo7RNP/jxDYAQ9vp8eueQA8xFKFqg4acUOWRHoNgE0LYWpgmL/9YCdWR6NIC2gApS1PpvITNzbUYoHZaACNNZCZDb+/HAppsZhIhWJJvDd279FfTBmnh5aAlBLtRERJlJ3tlVHUsLNTLxakvkP650+wr5vVkiI+pDbclm+B0U4FPk5wtJdWVthbRkWywa7OpCPH85OP4UCPr7UN11PleFyLRtzfl32i8a1loaXCFbgfgUeiIGUbNVQsPs/HfcELajIpZvk1lS9fktNpL4oPpmOpNtgL4JJrfmyhLQC2tXozmc3ZGbW/nxRZxCtzfVnGyZb3t4zxo7S6BIoOKNvcMtbVGB3N/vntejvTEryo5nLud7P+amt2dRWfPTXODS5AhYu8V5JQst3kVvMhWQk0qjFa9zqAej2czec0ZnLS19u9vKXBYX1uQW/SljFjFzlnXwe/fJVlLldHVExRA8IaV3SwOKthBKdvtk+dOPY38dNTLFacnIC1mQp04No9CAfpjThUV7fPKgemmAAZrsKTMbrTzYVlFhVEd1P+MgeVuWl56DlHAlRYJNS5vkMc2j8BBgDaEDAtyJBdYwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Qatar',\n    code: '974',\n    iso: 'QA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGN0NFMTgzRTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGN0NFMTgzRjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3Q0UxODNDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3Q0UxODNEMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+iEFoawAAAcBJREFUeNq8Vs0vA0Ecfbs7uy1toyIiIvFxIiTiIOFIxN3VwdUf4eLiRBwcfJYEoU1VNUpCGjS+Qor0UPER0lJNQxUJJYLumm45UEezv8wmM3uYt+/93rxZTlGUR3wVnSN0cIjI8Tn8i16cbO5BEAl4QcB/F6GP6XvBcRxKaipTExx5d9UPoYNJkd8vfLNL8AxOI34ZhZSlBytkTlEyd36IxrAybIV3zKECE53EnvH6uBMLPRbEw1GY8sxqfxUGrP9k/Jp4gaOzD1tTLhBJUg3GnPHKkA1b1nncXkQg6nTgiaBNj18Tz7g+u8Ta2Ax8zmUIhGjD+GzHD9+cB8H9AAUUwfM8E8YZu2bnmFBYXob80qJ0qMiyNsDGvFyYC/KhM2SnUEEjRJsAuQqcYtvmpn2+AEdl5rSSuralGW29HahsqMPH2zvkjyR7xnJShmdgCpuTLtwEw9AbDenjpFWAJO4eMNfVTyVfAKHO1uQ4rY3a4e4ewWPsHgazSdvIjFGZVy12bEy4qLk4Gpsie8YpebetbtyGIvRWEsGqMlxd1ViPpvZWFFdXqK5WkjIzVz/9dHYSol5SfwLU1BLYXBKfAgwAZJi4vg1/oSQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Republic of the Congo',\n    code: '242',\n    iso: 'CG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGOTJFRENBNjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGOTJFRENBNzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY5MkVEQ0E0MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY5MkVEQ0E1MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aVFAGwAAAdJJREFUeNqklttOwkAQhv+2W0CTBuMNwlMIJirXvpByeAopXvl42kRQ8QajjRoVus70gKW03VI22RuW8GW+mfmDhtuLRwAtui7KHI3ugu6bh8GJietjE/iWWMjE9zwJbc+A0apZ89HkSdBHVvhklYa+S/QZekrQD4J64Vscuk/QZg2v4wleho6lo+xZQT302gKjc4J+SfwucqD2BM99B6JRgb6r3l7bhN2t+JX+/tCTlqKXoHOGDu5hMvRAQOyit9chKFf64aVDV3qnmA0cmEdVGHUBuZRbVhzTe0V67S5BP2U+1NcbVBpB+ejlempi3DWz9e6n642gxcEx6ID1KqF7PnTGUNLLUCzX90vfTi+tzLm6Un9luKcNgtY3oWpwAlpYb/8uWJmDdGg+OAbtbwGNpjcPykcoE6lToXAQaujIT6RgkOr50PSKY5Ve+omUBcUqHLins+G9Um82OLEyN7l6dQ78sKfF9KaDE3rtIj0dRdNbTO8meCPw1XoZOhs6W+ldByf02kq9YTgMORzKQYOpjgK/zXoLTK/9oAyHYhW7Mgz8DCj9rlalSptVzMfBnpbVu1Yx9dS1z0yLoO4GlI+hwTgUVOn0P3vrO0H5n477J8AA8FlP8fwgsDwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Reunion',\n    code: '262',\n    iso: 'RE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjdDRTE4NDMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjdDRTE4NDIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOTg3RkEzNzQyMTUxRDFERTcyRTlFRDRFRjVGM0VEQzQiIHN0UmVmOmRvY3VtZW50SUQ9Ijk4N0ZBMzc0MjE1MUQxREU3MkU5RUQ0RUY1RjNFREM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+w8A3BwAAA3NJREFUeNqUVV2MU0UUPmfu9La9LWv/KIsFQUB0FQk/0aBxNwFMDLAqkZiYrFljoglBFwOa+CZISHzyQQk+aDA+uEB4ImRFRQgQXH9YeABlN0tWYZdtC5GWdtvt7f2ZM87dTQjSgu1J7n2Yc+abc77znRl8ctXedLb07devrluzoPDOe5EvPj/49KZ/no/0xPqEGS25MxAJQUJzpnYQu2tB/csU2PrXWx9c7da4EwncwGkPYKOo0vtwJrBaX4xPAJ/89NqmjuGtWTveYlzj6ErZGDqB9AOLSzFC7O5CAITUQLPCxtiZW8vaBneeya00gtmQVhb/C02SKf4MsPtdcYhY/SCJyhE30kWXd1z+cNdYF/eXovpNqU4F9IxcmMzDZA6FDV6sVxPGGXPROey6JwgMZPfKQE4lkdCLPl9xx9jLG4a3F5wZD4QynBznxogo5yC5CGa1OZUJygwhmtosTY5Jc78th4DHOOiS379EIVkLqziGdTS34olqqnf2lx10TrR3a8+97Us9zhRx1y+JgYNwap/zR1mcj0qLMIGSpEqNN9AYZEjRcCZTmbm6v+vXndtWvdB522vMXgIv7S6yJfbGzdqDQYzqasO0sQb1hMQhd3Xdi4/diXubunDna/73eyg7OiWkZqCV2a6AgG/b+vl1x8Nr7iudMhbXqnbT0KZF0Zj/0VSw/uwpZhY9ore2ulalaWhEECRduk9PhCDh6bIpaAQ0gmwiLS8MWnVlqkw7e0H7e1SGQoTNQEskvZSAQPWT0a8ArFo68gAHhvqCFTtR5sRYY9DqolGxuaSVzPA3jw3o+14//Vlt1I6ze7rm/rxx97NVHyXTthpElTu/NwnqXELTYFWjuvR8pf04BUzML+sd7v09P/jR8jdWRhcrYfxZvLLr4v6L4/0Qm/vD2vDiefqRvZnll8rlVp3XH3JUx6K/EEfmTKz9vrp0AMwA5uOqCBZZOFK43P3TdjCSXqR5EzQdYw97lF8xx1OBFR8/tOeb6+/23eJ1WqISlj6ej1MiXVpz1J4zDsUIupoaGy9CCjSSUhKQ7YWGU4iaWp1mF7OOjLKeLanfFoZ5jRYAHA6FFqftl1L7jyJUxlxi6l4Td9zX0tOY5v+vRqaFAlqBqAK9G2I1WUtgarieOTn51HdQ9Xm4TDT1ygilDIfYqPWvAAMACcVzuqlUzzkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Romania',\n    code: '40',\n    iso: 'RO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGN0NFMTg0NjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDNGODE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3Q0UxODQ0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3Q0UxODQ1MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vo6AZQAAADBJREFUeNpiZNCuZ8AN/iybjkf2koMAHlkmBpqBUaNHjR41etToUaNHjaad0QABBgCcdAQtf60IKgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Russia',\n    code: '7',\n    iso: 'RU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozQTJGMDNGQjE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDNGQzE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkYwM0Y5MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkYwM0ZBMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I9CATwAAAEhJREFUeNpi/P///1MGBgYpIP7MQB/AC8TPWKAMBiSaLpYzMQwQGLWYboCRgeH//9GgHrV41GKqZCdgXhrNTqMWj1pMFQAQYAD5egotBoZoiQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Rwanda',\n    code: '250',\n    iso: 'RW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozQTJGMDNGRjE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDQwMDE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkYwM0ZEMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkYwM0ZFMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2RPnbwAAAbJJREFUeNrEVstKw0AUPZNMm0QN1hZq8QE+FoILdSeCoHt3bty680f6B/6BH6AbN4Lg1iqC4EZRQcH6wNLGvmxeM96OFdzoKmlOuJnkznDPzL3nwjAUS2UAY2QNRAZJpkGTKWWM/rtPwHyABTZNPnN62b3VdnTEOnHrGNQbWDAfkNXquHKn8eAVyJ8ics/miAMiDZtXsZPbx2bmhLYR4s6dwG5lC6etJUUePbGkkExgfegC29lD5LiDtjAxazzRaOHGnULNz1MhIiemNFMtF61bCAof0kZmzBc0wwFMpt+Q0x1axGIgZlIN9944BRfgLMBjZxSDWgfvQQYdaaj5GIhJucLAUWMFBx9rqATD+KRUn7XnsVfbwJNf6IqLzlws1aNVdO88lPIREtiydY08r+H8cw7XVF+pVO02ODw7BllL1VKOO4zj1qzqY9H1kuhURmCAD1gV8dME0dMTpdSUmHQiNb4pug7BXi9navSRIQvRH5Ds4fBRu6z/cvQLOveoDkmApw0/GeJqy4xNXH/3GgSfPliVv3qgX5C83rSSERcSqrGGhMB7Vx472qvPv1BcXwIMAIuEkzMvcwIMAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Saint Helena',\n    code: '290',\n    iso: 'SH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzUxRjY5MzExNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzUxRjY5MzAxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQjhGRTA5QUQ4QjRBNEYyMzI0MkY0NERCMDRFREYzQ0YiIHN0UmVmOmRvY3VtZW50SUQ9IkI4RkUwOUFEOEI0QTRGMjMyNDJGNDREQjA0RURGM0NGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bql65wAAAzxJREFUeNrsk1tIFGEUx8+3s7dZXWlHV921NFJLlCJMKrx0U2rdxC5GEfWWGERSUPSQRagVvnQheolACtSkMjQfTExDhcpiJUTLLrZe1zX35u6669x2mhldC32RpJfoMAzffPOd3/mfy4d+XC7VGrOeDitLH7zvbXoJoKkr232wsaIp+6Sx4htg1Bqd9GxKoPhQgle3Tl/U4rHYEShhCYbd7tA5W98UJmGnjImxWalfphWb9fjGvs7upEyTDc4lue8fX5uxI/mmI/pY9Yj9wyeRi5aCRkcLH8qjNUZ9IJ8dVRYYQBdvbnzlPrBXVfVYExsVMTkIBkPLd6rqboNjyNb8wsywFIBU9OU44S0RIwVgUUDEZe8Ekhl30WM+4ByOiDAl6aOcJKtGAYVaSUbHUBZrBFCxa8MpCR7ZGTfFKBAwAhhYgBU8QS7zUrRapLtF+lwIqSk8aXzcRqq5jQVblS57qM3i5eT2R43hh/fqUhP7W99DlLaHWDkwOYIUOIMwmOMiTIJfutKXscXjcam0uon29piysniaoea1I9BfyDi+reREem6MH168rrQo1iVGrzmWZ75R6dlj3EP4oKP1eZv5+iesa1IKr7uRoA7jQBoSins9N3hEU50+t8DCLwhNsdPFE8k51bXlOUfiJfD2SU11151+rMtKNJen6DYQXwfMBv3pzLz480dT9+2Ky08YvVf/9YyKJn1yURepQHR779UQQuXCLZ19GKvUYNIRAH+wE4AdTN7eVFFzsc1762PImN0LbECKocF+RxupNQ1Rw5+7a5/1tKMEf5iW+TzQ8n2aCcyiJSwdWGU1ObnsmdVnx+mcgdHMjkfPSWoagSJYENgPEAXA9x0hkAGwHMzwyQE4EcgBZGK7bOIkRIoO7GytASJKsq4R6fAxvD50onVqiKypV1PMFBJOiqoBtokOWHCL9xEC8HmJOxwSQoYAqMQ1F2ySsPAECHna+oYwjZW1mxps026ZqC94ZRBsWjiPwWfx5m+fPMJndRPDjrTI9CjbW9z+zg1AI0Fr8AyCIvhTE1OgccD8Qg3x2Szn/0pgGSbmIfMLhVrIhflBWR4d+5XDbyaBv2b/0f8E+qcAAwB+l0HjpzOhQgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Saint Kitts and Nevis',\n    code: '1-869',\n    iso: 'KN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzUxRjY5MzUxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzUxRjY5MzQxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQ0ExRTQ3OThCOEZFNzE1NzlBNEFEMTBGOTU1MEQ0QkEiIHN0UmVmOmRvY3VtZW50SUQ9IkNBMUU0Nzk4QjhGRTcxNTc5QTRBRDEwRjk1NTBENEJBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xg9gqQAAA/lJREFUeNqcVXtsU1UYP+fe03vX23v73EOnEgWWbUpwEFcSJQooooCEaNDAZkKs8mjCgAjGkMEY+AcdoJskYxAjc8FNIYEoWaTRTEMgmcNkKS5sMnoHbZmk7drdzrbr497jadctc2ug+CX35Nyc3/nle/y+78DV3370D4ggQIFHMAgBoCBOJKm/glxlhbxv0d99re7PjiUhk2RRBoQc4VtBGFYBFQA4V2ICpWRplIN6qmb96GKXeHi91Nk1E4byaS1F0YzC5kBNOAEN8WgUeWOqjStDWwo8vY2evV9EvPEsaDR156FGQTkuQ2eQe+5Z+eQyT+wHp9Ua6JeyYzNfLhmgIRRDyE+zR6q9p+f22t+7/rG1SIyXFhUazWbzLGZ04JTwcGpE4cC46laAffvleNeGgafP976z6N7pTpA/B4mDXTf7Bw0GwzQ4vXA1c8PH1j+jRQ/wlOggoUDnfXX5gnjba25T9926pcHLDhoAhQC2bt1S/EQx2SwxL7Hb7WTDFOU1tLE7F/LSh+pLF1Uoa60gkQAEosTILPrc4l2bFM9u9x5qldOAFK9Op7PZbGTl1Oz3310FwPR6zcjZw7qCdvXVNZpAktKC2GxqBVGKL8IGwszGV6V9C9zuDs+6vdEBH5yUUGqV0lZ3wOYbHh9jnWeucJsNT91dxl/ohQJICGnQf6hpCGIKdnrV5fOT595yPn7DXb8idO7aBN1saSJxaKDqEP21pZA5qv25kY0BxQRkDDBOh44ms4AhhLeDeTAveXTzSDU3dGbXcG0zVFKM1ESXTK8CCa7sTfqrRv6lPr6vXHM7BLUgoQFYyZxO6pqGyug44w8xG1b4G8yu4YuudXuE66IJgBGTyRSJRKLR6DRnMZ1P1X6pry3TSjvZzssqBii6dAFm9AdKytQdLz9vbvxHqzjP5flkpfTNL8TB0PHjDURVDoejqalp8lpKqcu3MydrhNLz2u5NjA9gPkU6ka6ZfYe8CdWR913biu/8ZAu8sZ8KJVKBm80vWCwWIoCWlpYpZ4VSVcMxbhurvfeu+sKfgHgqAAVnSLP0M/rtg0Hlj5urXsG/O8lvZhYYjcaenp6Kiucj0fHHCsrv+/qrDnK2VYaiU/yvrSgKFCNIklrhBw4JuGOT8UR7IJ10gpSnDiorzSXzy9o72uYs1zTXc2v6+b7drBgh5SKeKrmMHajTGSUpkH3E6OndB1V1JfqkTei+QjNAJhVTcptl6QlB4dkdTrS1uBqcqBJetBd274J+APh0QLnzpqgxnkGNuSfp/Z9q9rCC38pdGiIaiGtBBgQf5SlCPM+PjY2p1WpyOxzGS9eyzTv0JR2aa62MBBSNgGWcJ4P/Y/8KMAA88JPiKZPG5QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Saint Lucia',\n    code: '1-758',\n    iso: 'LC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NTFGNjkzODE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NTFGNjkzOTE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc1MUY2OTM2MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc1MUY2OTM3MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RRKY5AAAAg9JREFUeNpi5A5cyEAbwMRAM0Cs0UwsTN++/fr29SeQQaQWFmIUMTIw/Pj0Q1FaAMh+9OQDBw/b//9UcvV/JsbfD95OzHGcV+r+5+Hb/yC7qGT092+/xMx12d9d5nh3Ud7e6PuXH9QxmpGR8d/zT+lh1stndk5oLcsIsfj38gtQkApG/waGq4ioFvfrAwf279hzXJHpMbOc7K+//yg1Gui2n68/+/pbMzw9cv/1zw+/GP48OhAZaPnr5SeC7mYiGIEMX/6FmQiuWbKclZGBh5Vh0bwlvjocDH9Y/hEym4DR37/+VHUw+vnw4todu06s5jq/jXfXkeMvLp7QcTH+/vkH+UYzASPwxedQe60tK9bFOTIYBQupuPDn+DHsXLs+xErt/6svTEyMZBr9698/Jmmpb/efmkuvWbiE/f+t3/+v/548l8NZY/O3e0/YFeR//vlLjtGgCHzzUc/QMdLkUkH4MwYmgb9f///98Z/ht0BG4Ksw4+Omxk6/Xn7EE+A4M/pfYJr7IV5ifdHMtpThFdCeVyzi4Nz9h4FLk8FYtLz0t9SRzTJ//+IMFpxG//nLyCbF9+3Vyh3b2f5+c2L4j5yQmZg573/+tJJTJuL3r2/sTNgLFEY85TUT858vn5kZfggxsGBo/sPEwPGOl/f3379swCRKcsn37y8LFxcDA9d7nIH2lxWXuYOjKiADAAQYACDo1+pXfbuqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Saint Pierre and Miquelon',\n    code: '508',\n    iso: 'PM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE1QjFENUMxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE1QjFENUIxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRTZGREUxMUI1NDA0MDcyNDExMDA2MDlERjhFMDQ1RTMiIHN0UmVmOmRvY3VtZW50SUQ9IkU2RkRFMTFCNTQwNDA3MjQxMTAwNjA5REY4RTA0NUUzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vSLwPQAABrFJREFUeNokUwlQlEcWfv0fczuHM9wMOMMhoKAc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'\n  },\n  {\n    country: 'Saint Vincent and the Grenadines',\n    code: '1-784',\n    iso: 'VC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE1QjFENjAxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE1QjFENUYxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMzVDMjYxQ0FGM0Y5RUZGMzgyRDc3QzgwMjZFRDA0OUMiIHN0UmVmOmRvY3VtZW50SUQ9IjM1QzI2MUNBRjNGOUVGRjM4MkQ3N0M4MDI2RUQwNDlDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/PJycgAAAulJREFUeNqcVU1IlEEYnplvvp9ddRcx/zK33MyfkDJajaA8FNFB7BZBFF0iIYgu1UGNrCCoQ0cJOgR1EsJLUhelOiVaoVmYmGu7LWYqW667334/O9/bfLumtuou+l5mmHfeZ573mfedwUfOPkP/mz/kudnadelMtxrNwQhQRnM49bsDe2+/r/K6Y8uLCcScINO1uwFAoIwISJIslBkaAxH5TgbWOk66foQl8sGy8PJK2umrlwHW+JNGNuCTCrYAiCIySvgEkot8BJmAIlpWFqk2hF46wEGtOBMxBuEfL0rAABxNKE6a5SIyQUsi45m2vGgcnCmQcjTOGwCLTq3vR0FLbz2SmETZpqFTFImUeDLm6R/2PhzZxTPgQPZhSOgarXgzWt7ztZTI5no3kRE6lWggvK1zyOvePvvcX9jzpUJQTEHWn36qeBksyi2Ktg1Wzy26Ns1awDZ4+4A3OJ9X5tIIJh0fvVwOpst3hnZLYsLjjo9P598bqEpyhs2wBjvHE2XzSNZjCcliuKk4gjAWZONocdgwScSkolM/tmN206xTHXBhv/987Vwg5Pa41UfHR15NeF4HSh6fHC7K1UMz7st1Uy21waR6eAvFhzobxpGoPTg8jgTjXF/Nxf59VDQ7Dkwh0Whv+Ja5+GgGnxFzePMXe08PNldOd32oCUdcYQLdn3ddaZjc6VIL8+Kmqog52kaPQSZoXmiGRporQyM/C66/21OSrwOzWt/W+UoWTlUHtKgTMIhbaxlsi27ruBB3qAkqEVMQkMqE33HZdmLAGLbc6LbxrJu8oRv134N/8qYj9NbBSV/5LyMmZw3MDp3g7x8T2hrHZIdamqdf800gRhhkD6RZd2CM9bjkzo3fPzSZIzJZ1rnKmaVYhiZpAvOfQKS2xIoCK1XOHFd9fnvOZEWxlkoZ2y5Kk2E4/TGhAGZatwhYU6NsMYI0VVj5HIA/T7zMBIORVZSp4kBqDBHMPxpYrkKLTwD9FWAAxwI1PaSIg8UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Samoa',\n    code: '685',\n    iso: 'WS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQTVCMUQ2MzE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQTVCMUQ2NDE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJBNUIxRDYxMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJBNUIxRDYyMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+mJryLAAAAXxJREFUeNrskEtLAlEUx8+9M97rjOMMGPaGHvQgWkW0MKI27iJo0ap2QVB9ABH8Rm2jhVAQ1CYisIU7kTLsoYk6ckWdmTs5pCVBMCnt/HEWh/v4nT8HBZeiVSzCFw1T1uTwytRV4qmYKwHxgIDABhCIbFRPHy9HjGpZIOACnBe9DItOEcqYybK67ZPW1xawKjPdYCYwkXw+aCZojkDgFuzjZqstVEKrs4eRzfdM4Sh6krlJx2Jbe9vL8FyCruhYhcFVhY4P+p1kVAwEg7fJ7EtOB4X2rB5W4+fJ+FkCVAne9LnQzMXdg/VahiENTKs3tclBpiDgQEDZCC9e32esSg0GlO68zq6B+oGqrfKqYNLy2OhBZKcxOQF18n1FNUb8HJBg2y7V6Hh6t4Fwx4kNCGk+WmZ14E7fziAQy9gvplRu1JDgSl2V5jF0BMHIMrler/sJET2CY2+P5AiniWIg7DK4mGou5AceAAnyv3xwvxAM/0Zf3Vf31X/iQ4ABAIPdhjTlJ084AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'San Marino',\n    code: '378',\n    iso: 'SM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxMDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMzM1RkUxMTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTBFMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTBGMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pmAcAgAAAlxJREFUeNrUVU1PE1EUPW86hGk7tbVAoaDpByGG1EBMVEyMceHGnQtNXLjTH+BKf4BxZ1g10Z0LY1ITjW6MCwPBqCHBFghpLTRAS0EoQqX0ezrTzniBLm0thtpwkzsvk7n3nbnn3Xse08jQAuPIsy3AzXJokR1HYLXq/xk4PPsWQf+rfwbmD5sgFVJYXFrAejQAoa2CcNgFx+kBGE2dzQXmdWYUtz7CZppEdK2A5K8SBvtHm0v158UZTO9u46Syg+zyF4jZaZwxSgiVJDwY8yJdzBx9xTllA775T7iq+DEfD+K9NAqLWYcriZfgx+8iEBeQv3AbZv2JxoCfTG6Xaa2Q11AwHfGi4uvKBJuYGmceV5zzi48xlr6M9mQFCasD9/AMdsWheQNPtQ79TVVjA7RbTV1i5GX+oS+mq0s5M9DUJMkjgKwiJnbRGUdxKiOjT1TgNpQRyRvh+1ZmWF2n+JAOmkCJqXoF63jYBFb9ixrA9KnSC07OgVttw+aSAfazL/D6h4Tv0SLO9QKzK3ZA3w9YrzHwF6sqLNQDZlxDbUBUa9wynLZ2BEPDkGIenHf/xJAzj0yiG1O7fehyfoDAZihebKhnG2guOn6tBE25Dt7ejTs3hjCSXoPbb4Bn0AVTxyXIOxa8i7yBzHooVqZ6tCMA1hTaiNrAdAsLqSK8cyoyhgx8GyMYZkb0SMDzzU5i5D7F5ajYLcr5+7YMj+b2hs/U8NTL9ChQitlMMkaoCjEiEr1sjxnWqH5n+UPfCzwBWKwHLwJ1vKAdsLIPqjVPMvcHQJX/MJrH5D7+LcAAowvZ8JHN4kgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Sao Tome and Principe',\n    code: '239',\n    iso: 'ST',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMzM1RkUxNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTEyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTEzMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A/jZ9wAAAoxJREFUeNq8lk1rE1EYhc98mGRSo0UkJSmiUJtFFwri2rUIgtiiuFGwiMtiili02A/caG2wC8WVUPeCf8B/oCBFVKzWhtgmTalpk2Yyk3ZmPJeZ0GASm4WTC2/mfk2e99x77k2k5I3TK6mRakTLSegqS7BldKSoj+eDcThAarQKrKBjcDkdskszr4NIzgZQ6XVQDrPT7oDiEkHLko2nhIuSSgrlMrp0+KpcVaiuqAFLsCGUKxIwc6eKSpqJbJOs+AQWHwJeInyZ8Ml5DUGuwMLDHLRMgAPwBS4tdJ8t8hkRDYsCA7qMo4aK6Ogi8GQd+In24LuMbvGNjN+MA/uYq74hlFthC7mQhQ+zA9hIxoBjHKAPUBWZ/RUCtuPBeoDsN9rjM+sxr2/Hm2M1RqN9bAlyeBdqyMD3uQTy9+IuXPNecuoCrrLCGlCmJcZfAiMpwGB9I1en2mmMpr51CFcID2kVLD1L4NfwCTgHORBsMpn9WRO4chV49RZ48w64eAlIb9U2sI2lbjCA7DA5GVZJcZeuWdkEBs4Bt8/vdV1j+8wFVgr7uLoZ0DIUGHoYx4cXEU9lgFUOmC1S5ZkvMO5eB0JclQq3xNlunWuDq901oEpCTQG9+QPRF4RmXGVNnS25e5bN01OnXCn5j0D0iDffaUOxuKkUQqO6ip5bX4HnOVdpmRFqkbpnllg/n2JfeTKifd47tcT+BRbQsEED8xzPDZbxacyG9r6Xayi12JD/cHPVoH2EPhoyMHGfh/YLj9Gmj1emgGo0TT+hk4NVTD0wEVyTcEjfgaX5+COhUWmC0OnLe9BISYKlwNcin9TliIBOjJsIrBNa7MwfAXV6qLo6NWZGBPTwlv9Ka+WPAAMAQOHt/oOWjtwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Saudi Arabia',\n    code: '966',\n    iso: 'SA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozMEE2MkM3MDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTE2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTE3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VDw2aQAAAwhJREFUeNrEVttOE1EUXdNO72ALvQqIQYSIxIA+GCMvPJEYLzH+gN/hZ/jAL2jiB/jkgw+YeEkkgsRE4w0UrLTFdnqbzrTj2jNtANMpwgOc5uScM3PmrL3X2nufKlic/QlgiF3D8bR+9k21PcGe8VjAPTihprq/UgCrxd505h7aaFm771qGM/WoznOl8017v8L9Hu+eb/a3Hh5btMpCgABqUwcaZfg9Ps4b8BpVhAOnEPH64eNaFfCWCbXVhMfUoXBUXAAP9pgHRoJR3Bu7jbA/grWdLyjUS0jzWc2oYDw6iunkFFa2P6CglxBUQ9DNOm6dncPH4g+8+LWC19+eA+HEIT02ahiLnsGNsXlcy8wgrgbxieDJSBLzo3McU1gmqBCr09tUMIYdsjLcfxpR7m1aZk+PvbiZecAx0O1lhbTlawUk6eVkfBJb5SyGQgMo8blFzWPU8XtxHWkaoelFvM2uYSSSQCw4gDfZVfyu5YnQ9eiGu8fUrUFP8vUixPY4NVWocZ36DYfjWBi+iqnUNLZqO8hW8gj7wrgzsYD10iY+k5nxwXOUyzyCxtQrfWoE9y/eRZJePnz3CDOJCVyKn8er7HtkqN3S1jIKZg0+o4y52BV4yMCzjZcwabBXIlpReuTM4mypa/FgWvhJk3gnducqOVtfP5nIlTaQolGbpD5AT0MEqdE7g9RqzIQ0dS5UttFQvG64mjuw5CEtR0Nz8tnfb7Ng5y9ph87nDCJ7n53vlpO3AiZ7mGr2HF3TSnPXWA6TQxko8Pc5oLKWYDEbzihgYpwcLmCyR+Zkwd4L6yiVq6O1jkFG6mhfBnXOmzTIah+oyI86tmhAjMaVzSq+Mrh0Fhi7oh2tZLZbi4WElF5nLkuFMuiZAEmXIJL1H+bvODW/nLiAp+tLeLL6GAgNol1HDxlce7UWD4RG0a1TqxXsats0oNC4EAPRSwY00V/pef9oB3ssh0sQSf+3/nYuBoJZjOpqNedQrAZcL4f/p3ofkAt1nYj2hHfXB7QTvY+1tsbH+ddH+yvAAIKJO5Z5g0J2AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Senegal',\n    code: '221',\n    iso: 'SN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMEE2MkM3MzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozMEE2MkM3NDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwQTYyQzcxMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjMwQTYyQzcyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MP7aXAAAAYNJREFUeNrkVjFLw1AQ/u7loRUMtS6Ck7v+AcGiIrjo4i/wH7j6C1xcBAf/gJM4irvgoiLqIAgOHUpbqCgKWm1pX85L8opFYptAgogH93K8fLkvd7m7PMLWfBXApOgroqQJGnVhyusOF/LQ3gc4CqbyisyDMfWlCjqltqPGnUiciCta09ZAzzVKvK5/9Be2OgjnDgJ8d5oGJlYEmckfI5aEkhNq/OSmQKwIaAlhy9rZEtvIVE6WMeDgnrF/x4Ed7CFZ9LGJtQqb6qzMQccf3grxdWify15H7jlOBsTkp3SEcFEXe9fguMQ4rTJox+BERpB2Mkp12/gLY6NI2CvKYzWJtsLYnlXYXAzdGBOfWMdG0tf8unxiLMwpDEuUVy92WDGFmNSJLXnjEVibIizPEIY04ejGw7OkvzCRLNXJiCXinES5Mk0gv5eajFV5Ae8teT/rpP3nFxm/9/A0bOFlOkDot0fmfyGmND+Gtkce98ejT+jM2LrVfeq3i/Ol338r4PoUYABXBXI3FKW/6wAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Seychelles',\n    code: '248',\n    iso: 'SC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwQTYyQzc5MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjMwQTYyQzdBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1AigIAAABGRJREFUeNqMlUlsW0Ucxr+ZeXa8hjgRJSCo1BQlQFUkoGqkSlGqJBWkjYTUqooEh1QVSBygNBHbtb30wqlCHOglEkUtqBfOSJQzByBpk7jO5nirlySO7Sz283sz/J+XbHbijDSW5Tf2N99vvvnM0HsnCsCLRoMrYMUOuExz/u4EOl7bEmbGdvB6qcBsHPx1J/SJdSM8NovNqXWh+WzMeqzRfAVHGQYH1mwYH51Dx+ks5KK7vJm6axVEK23qZTsy9+OIfDMHI2ugqcMJVSx/h34NuYaighaHnOgbTBgjw1GlYg4oVkfU+sgkURKAW8jY2Gxx4dq0lLpC04kd0arjxoiX7eDtBfnoi3mGLc5kQdS63Ubrgv5fzggR2uzjtEaCTLgElLF3vXYkxGm7undzRvq61jUZ8JQJ7EfbRmjb7SrzS9wMfz3HjOWicL7pLoMwa+loDREH3Ri4GDevD0e4ChOu3U5V2WkJbVHJ6JcBmfwxyrUWjTu6XDUujyZcQYxjefnQQlzgXOZ3IbbQ2gntSUI7uW6ERgntn6viILRHF7YQZ2xq/NaMbOskxLO7EFfRvkRofya03xHa1OFoa3wdluL+wYQ5shtxNbUnSqk1Y2MBY/HaNFe6Ehba0vNGmpwTDaOO40pRsPaC+dvnhHhT8FKKIXdSS4UQuhlA9q+05iC0vBFaS6xQgJFKwcxmIZqbZa2wQcWyalc/3ZpWrZUUKyWhVVP7IGFGKLV6Uj8crSWWz5fFcjkIn0+6zpyRnt5eeAcG9jmupPjCpbj5yXBEKMItLVErtbo0K6kVVmqd9VLLGJSubzvT2tqkq7tbevv64KHp7u5mleNlWm2KC/LXalEYGrRTDuhPNozQjWcltDWptZxZYolE2VlLi+VMeXp6VPPQEOh9Sagy66S63MVq/DYVxYmchlUfRKdNUdcakW/neNEqhLcIrSJX1izqe86s6szb3w/X2bOWiNgvVitcQuyyutgcuRIR0Frp/4pZXWsm7oatfxTueMMDubEFI1n/zNznzm1jPCTT1dwrbbuLj+XNR6MLHB4vK/yTN8JfzSL3eE2zvaoxtbGMrcnMQWcmDhMIp58jmI6r6WQQfpoL6Rj8yyFybHCGlA33fgjC12WyzP1NKvgpnk9FOD2E2iBn77ynms+fVy9+eJnh7VP7EUrrJZlbkf7kEuZXImx2NaqexOfVVGKRLa3FudxYo8zkGEy6MhrdDruLhBedeP9GFtcvhxD7aFJGHwRFC2vFyatXTdfAIPDBReB423bZxIs5Ob3kJ4GoekY7f5pYRHA1xpYySZZfSzDk13cEmigTTVQsrhfo6Fr37Jc1X7qjMp/9ATzMwHzaCfFxD4q972LldBdiTgdmkgFMTP2N+egC/KklBFIhGJkUXa9NajGDUkI3wU7XrYmmzUHbE6Vr1Wiw729/GhhCuv33bIcev3CcRbx2zMTmecD/L9NTz4HNDCW+yCE0S4DBQZ1tJwFG4TiCwEHjfwEGABOHZsLQl4B/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Sierra Leone',\n    code: '232',\n    iso: 'SL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzOTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjM2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc3OTE4QjM3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GrndcAAAAE9JREFUeNpilNtq9Z9hAAATwwCBUYtHLaYZYPz///9HIM0HxPTKVoxA/IkFymBAouli+WjiohtgQUpU9Exc/xkZio6NVhKjFo9aTBUAEGAANLMNXBNFuocAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Singapore',\n    code: '65',\n    iso: 'SG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzQzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzRDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjNBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc3OTE4QjNCMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k5fIFwAAAflJREFUeNrslk1rE1EUhp97Z5Jp0dTEL7S0GEFcKK4CLgouunARQcEK4kKqtTsVi8WFFUS6EDdiUXDvX9CFgkJXirjQoggiKoqSGIuYtpOk6SRzxzMTK/0BlwrSA5d5mYF5zrnnPXdG1fYMloBeHO3TDjEfv0CXh96Vh6AFLVmOA0phKTKyym4itIb6YsZ8LZEeG8U9WiS4fodw5m0CVZl1Hbgx1uA6uYRSaWUWb+oa3s2rmDfvaD16gNq2la57t1D5fsz7T7C01EnAQiRgU6qQOnyQ9PkRwulnNMcnSZ86g9qUJXw4DY1FUieHUH3bE20NTL2BPrA/ke37j1Ebs6TODic9DqbuEs3+JHX6OFrAkV+3AnaXhVo2T896onKZ5vCYtMCg9+6TLQ5ojl6ClIvanLNYcXc34fOXnUwGBzBUcAYKeLcnJYkfeDcu4544gvn23Zq7nStbdk6Ia73wxQxazOQOFVGu9PbJU6jVBVYmdn0kjo9+VVHptA1uoPzewoK8OENdIFWp7uIF3GOHaJ6bIHz9Cr1jN1Gl0gHmZJvbbRtgX9UKxTkRG2RMDEGA+fBZ3JxD5/uIag2bB8fK9s4rM79QFZGNp/nvIzEVMS+e2SiyDY4PgjlX9WScFTdWKxzNP4o18Br4/wPHXyf/z++Iv0rMhPVbgAEAAN6l96444okAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Slovakia',\n    code: '421',\n    iso: 'SK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBMzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjNFMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUEyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YhjhIwAAApRJREFUeNrclktME0EYgL9l221LW/oAIlWBg4oXUUPkZGLwhIpBIDFBjeFoOPg6GfXqTSPxqDdNDEZJwMDBgB5MTJQLCWoPBhrwwSNAC7TUdvvYcQoESuRiq2icZLL//+/MfjOz/2MUIcQEsF32CFvTnLJPmlYFsp5bAi/gL7V/CyySSURcX5b1wDj6yNiKXdpEIvnnwIHWCwy59zCo2JnuuM/Mg0fL8pC3ipGmtt8CNvW+mVxTYiYr5W6VYv8HEvpXbNv24Wk+gaJphDq7iU0MY3y0M/h+hs+6BZsezR3ceP7FuhYU1DeW0el1yNhyUHatHVvVbkQ6je/mRSauXsdX7ODGnXd0Pw+CV+QOprRwXTMXYHZrGKEg9gOHSIcixEcDoKokp+aw19RiTI1gdpnBJ6OvKJUHWFXWNVUQFQUkYgm0ihI8p+rRXE6UAgVT0zGS/k+kxvxyjCq9Q+42e+4vgze4WpovKTtL+2so6eskNtDFwu0OsFjRLrXLw5d+cLyFb4aUxFxmpfmAs1ZtVQjMqMzu2MuYdRcvi2vp6naiq2Zad56jbvot5fLdcNACtsy83HescKQ/vJYuM98JGTQ1eIkuCgZef5eAWbk7aY+XUHfYRqnPzLMe6VgeZcWeW4sotypPh7PzdCqeoFBT8LW1cGX6IMFXfjAMHEeruVfhZ/7hUyKxNJrNkgdXghcL3RvAqqKwFA1T5HEweuYyZ23NJKQzPU72Uv3kLguz8zjsLtJC5JM/IsqQpyr8U2WS4aOHI1Qm57A0nETIf5zq62FccaO5PZBO5Zu4IqZNzTJhWBx2Jg07Wl9/JkuTcFWgZUbnD90knDZUCoEMX1KestWkLo/W+A/Komn1yuPc4qtP5IcAAwBoBOOwBg9d5gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Slovenia',\n    code: '386',\n    iso: 'SI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBNzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyQjE4MUE1MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUE2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ioEsVAAAAYNJREFUeNpi/P///1MGBgZeBjoDRqDF/xkGADAB8eeBsJgFn+STp78Z1h/4wHDnzi8GULgoKrMw+NkKMSgrMEPdTAEAhvSn/zjA9IZTQOtu/GcQ2f+fQXQ3kP3gf03+OaDMr/+UArzOtlT/DST/MgjpqDBIG6qCnMlgrgYSY6U8qLcd/ok91TExMZw48JfByYuZYdYsGQYONgaGlIx7DHuP/WBg0fvF8I/CNMnIIPr4E9bs9IeHgeHbaYbnV/QY+BXFGf78Bcbq+9cMihonGV7/t2ZgYPtKYeISZcYV+wycb8QYpjScYwju9GT4D1S2u+E8ww82CQYGEVAMMVPoY71n2H0MtBjka/531xkWlfxg4GJnZIjrYmF4zqXFwMD+DayVRhZDPfWHm4Hh7l2gO4BhraQGtPQ7UOwfNfIxnoT9F+Q0oO9UlaCBAGT/YaQ8D4MtZhMnQTk/9UquhS+jB6LEBFYSbAyfBqJ2Agb1gHiYCqlkKFrMOxAWg+rjZwNhOUCAAQDa9c0WhSA2hQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Solomon Islands',\n    code: '677',\n    iso: 'SB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBQjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBQzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyQjE4MUE5MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUFBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+3IS9UAAAA4NJREFUeNqslV9sU3UUxz+99+52bVe37i90bMbIDGFCiBjiZDGaDGEwBYXwYGJ8JD7og0+GxBB8kswnX0x88wVdsOqDIWRMFDXTkUzkj2iQZLCwrltHh2u3/r33cn53g6YPdmvnSZrm3tN7Pr9zvt9z6+HI+SmS+SAFG19zLemJJLQHQPOA4+DGZIq6rnpSiSxYci9kQmElV2V42HvWaW/z8fYrj7N7SwOffTfJN+NxMhlLsh5qDA8Htzdy7PUnuD6Z5JPIbSaiSxAw1gXWBJ3MxtIc7mnlxadDPNvdgBVbWkk72DNpureG6BP40ec3kJ7LqOOug2iDrWEQqGFOih379C9e6A7x9W8z5HVteaS2g+XVOX1xmnze5tKtf4mlC1BvqjNVOFsFlCnFNrnPenhteEEz9aA9L/rdl09HHdzLsFm6NGXMNy7fA5GCOyloMDGaaim4MlQC1CHeLkAPPdtGOf7yl7hC2Tkp5JOkzw9ygF6Bnj65k1pT440T44xcS0DY79ZZM1QBLSk/t8kd7e4dP3F8zxn27zsvHCh1iBqvGCoqxTvE4Sqi7shZdrEuRJ3yY1YaFqRsvMO97Nn+C+/3RXj1wDmQkn9ebOHjC20CVmsj+qG6VgVlhe7L9ZZ3RuXSIZHMr/hMknnHHRem7upfTsNe1WHfGfr3jbgdXvmhlcHv24hc8ZNJK3NlLR6T1dghrn3uqXqGLkS5I7DE7eRyQem8M+zj6J4OWacUY9cTzC+JwWq0Ug1nO0s0HDggI/WqDlv5aKSVod8D5HMaG5vyBEIFAUt3gbTFqTe7XLCqN/j5P+SUc9VkF3Ic6n+Swbe6uHF3kb3vjjKvpmNSVsNrP7ZxaqSFyB8BMlmNsAD9ZgFLSW8rjaXbaSn47aVZGutquDyRIqcc3hl0xbSk+6uS/3tqkcivM9yNL0KT5GLtZTX8YjxANiMdNkuHjUVg8c11aHjB8GpBQ3TJLBYIy+pE1UtC9zwy3MZmL9MzAvRJ5Xkxjfyu95mfy2roAk2nBFb6ypQ9lu+g0vqRW/1G0TzqRErueNjVcNfOMT7oH2Jg//B/a1gG+DCK6+TVi3cV9OEeRsPLGu6qTMPVwqh2D1fTcO3gCvewWmARXOUeVgssgmdlpJZe8R6uN4yerWPB9176iiMDZ6Hu/9Nw1f8Q55ZvipZ08ObVFj48t2HNe7jeeCDAAKYZ9xEESrmkAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Somalia',\n    code: '252',\n    iso: 'SO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNzVGOTkxRTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNzVGOTkxRjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM3NUY5OTFDMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM3NUY5OTFEMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aPgnNwAAAXBJREFUeNrslr9Lw0AUx7+XXBLbJB0ULLi4+QsR3F1UEAUR/CecXRwcxal/gbOL4OCgo0v/AcFFcKpooS0SWmmitqbXxLujYsactHHpg0ceL5d87uX9yJH1UqUGYIZrgGzE5VqnAwOJayZwDf8kY3C6hwjQ68dShZ0ZOIoBkrBHChagmEMYJ1VbITaXHGwvu3huhtIXJzYzVDD/qsiZBIQQ1N8Ytjh0b7UAz2cSmjc1uSat0LQLO2EEk+o43S9ivmihkNOh8W1XSgt48kKcXL/KNbalDTdi8cLWB8NZuYngK5LRW5Sgy2Lp8wKGvKWNprgmbYqbex+3D7/Ttfz4jqu7trynkmOqAvY7fWwsOlibs3FwXsMnj/x4dxo7Ky5emj04ChErgQ2dIGdoOLpsyLyKojq8qPNodZi6WkMrgUVOG+0eQp7X2SlD+oJuXxbVhEGUepqqDg4RtdAfiGijvwyS8U8iM6GDI4+b8dEn+BZgAN1qgUfVZqa9AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'South Africa',\n    code: '27',\n    iso: 'ZA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNzVGOTkyMjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNzVGOTkyMzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM3NUY5OTIwMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM3NUY5OTIxMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CE4TZgAAA8tJREFUeNqsln9MlHUcx1/Pj/vJ3WEMPBERMrDagkVba4I5BzihtCyZzsoxurVm65fVwgp1/eGMmrLlP7VYFvzjDJS00T8dUUmba9NqqDAwMDpQzBz3CHdwcPS5O9yOudbu4Lt992x3z/O8P6/P+/P5fB+Fuh0+YDlTQQPdROPWXXgeWg8Xu/F5thDovYz5vjwUiwVmZliE5ZQ9rPCWx491womugTEGN65SWlrFiZ1vkyp33DrwDiMNH6CnOTGtyGE2Ij47u1BxQ63MGpKLCyZ0cEgwWavo6GhhyZtP0HSlB8d7B8nvOIc5w03wt24IhUDVFoyttlf8TEvZLxAWijEJQJGX5twL0yGq656h9FgDRmERWV19uHfXEuzpZ3r4TxRdAlWUpIUVT4nub6yXvC/NpPxUAd4rK8EWlD0p4mHwDaCkZ/LlywfZmXM//H4e365tBC71L8R7IxKy32FRnR37FR6uttF6fjVVnQ+IqE1Sb4Cmws3r8M8oZZurObHtNVxR7/dw9Ug9iiRKsZqSE56rNGqKNT4/JD+lLaP8dGEc/ZR4K1TDA/Kfm6ZX62P0Z7uY+apJAnQk6vt84ciymVS8Qr/meRtt5/J5qrNQ6K1x9H/LHmV95bO07XgjWvlJNNmdwreXZ61G4yGVcIqbdacK6bqWDfYJMIvMtOxRH/b05SxZukLqcHLxhG+vY6+rbPeY+P5CLhsvFEk3iZ/6tBgr9IFxZPBImtWEhfX/u2MsILFpYVwiphIZHHEtFBGMeJu4MP8pvLVIo6VBRNwZPP5NAe2+XLAKnVkGiHQZo0OYXHeRkplNODS1GMIq7XsUKl+x0Hkpj/KjhcxMStU6xBFdAvHL9foIxaWb+K7mXWxYkhog84S3PKhx8rC8PDeDqtYCWvvvBovQpI7FKIeknexOmvd+zHOrS/j17A0+a+qSbjKhaUriwpp49G2twoaXLHh78qj4tIDpoNSb04jd4Rfh0RHWbXiSH6rrIk9QW3eGDw+cnmsmc+LEUS8/kmhXCeVJoewTSms85aCkOZXmfUeilL3dBmVPH8XXN4A5fRnWFDPhmXDis3r2ot3vHcpzbvTGeylV6r8plMOUlG3mTM2+OcqfhPJrecqGIztNHg4ne0Ia+nbvGo5fvgdMoTlKedPQH+Kli+b9QpkfofQL5RdCORg9Hq32GOVCTmX9+KCkNuVWrGInAnDtLx5ZW8GPL+wV58xzXrZFhimOldlRymRSe2dx2caN6OQKyqePpnP4xffZXfwYA73jPLrpE3z9871c8LdHbEoa/wowALUrYLIw4iaVAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'South Korea',\n    code: '82',\n    iso: 'KR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk4QTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk4QjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTc1MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTc2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+kIg3fgAAA81JREFUeNrEVl1IW2cYfvJjMPGvIbhhJZ2tZaWFlqZgKEOHGtGZqtALcVR703mhRGk7dTBEhsz/UmVsYOl2IXOghYpFWmnNxYyKOkMXfy4EZTil/katTZqaH0/efefYZbgYPN5sL7wJ3/ne873f87x/R0JEywBOMnXiv5EopisS5tjxfhEkbrcbYWFhkMlkxzrZ7/fD6/UiPDw8lIlTGmpnfHwcRUVFsFqt8Hg8op3ytlNTUygsLITZbA5tyCOmQyQ/P5+0Wi3l5ORQY2Mjra2t0VGys7NDra2tlJmZSXFxcVRWVhbK1HEo1c3Nzejp6YFer8fExAQUCgVGRkYOXpjj2A8gkR8MQ1paGra2tpCcnCxQnZiYCJPJdDTVPE1dXV1Qq9VYWVmBUqlEW1tbYP/tyG+Yz72JmUQ90yTMffY5nL/+cymGGIwlcOxiQ0NDwnpsbCyI6SDHKpUKeXl5iIyMFOJsMBiQlJQk7G3c/xGTKVex8fQXeBb/hGdpCZsvHmEqPQWr334n2Oh0OgHlwMAAEhISUFBQgJiYGHEx9vl81NfXR4wiYhkqPNt8YaFhZm6VxJJNc55eqs/R7+qPaTEmgRYRTaNsb7PnaeCM8vJy6u7uZhHhxMf437LLdOJGKaK7HoA0F+AnDuF+DvFeJ2ZUsXgrV+LimhXSDCPizc/EJL9TLsZqgenjPzjUs3+77x3CaN/p16dScU+bwgImx3VZPO7bJoEtO6CJPfJMqRjHWq8fP39wGVUaA6I4D+Tkx+2PDLh39hogU/Apjt7TmXjwoY4V8htR9S4KcZRCiuQzGjycuYrn5/TgSIrlKNZl3TsA52XOWUm92sDrTxj6k2dFOQ6JmM/KioqKwPrW9UvAOweWSIPl6DiGjLV2v2/fqYt1ttdvkHojNWBfVVWF3t5e8Z1rYWGBmpqaiJUUsdKilpaWwN5XP1kIahMh/i5B9w3hClPtl4QTpWT63hyw6+joIFZClJubS/X19TQ/Px+U1UGIt7e30dnZCalUisrKSvT392N6enq/o33xKfqe3cEV4yXI1SrITqhwMeMCHj+5jR/KMgSb2dlZzM3Noa6uDg6HA+3t7VhfXw8CfGg5VVdXw2azobi4GA0NDUL3Gh4ePvCiy+3j2UKkUnHgeXp6Oux2O2pra8GQClOqpqYmqJxCDgl+OPB0ZWVlEXuRVldXRQ0JnlrmXAhTSUlJyCER0rHFYiGj0UiDg4O0u7tLYoXNcBodHaXs7Gyh+x1rOv0tDAEiIiKEj4HjyN7eHlwu1+E9+j3Vkv/r0+cvAQYAGzcZMFujiqgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Spain',\n    code: '34',\n    iso: 'ES',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNUU3QzUwNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNUU3QzUwNjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTAzMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTA0MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hN0M3QAAAeBJREFUeNrElk2L00AYx3+TTCw1adndLlS2KLv4Ug+CeBCk4s1v4cWLn8WLNz+B38GbXrysKOxBVFwRXRXStbiktcFmW5IZn5qCwgYRUpqBITPPPOT/vP5n1K5/LgS2ZMasZjRk9vViwV/flYA7VDR0+rMabH1qLasEWM0eO+N/5Ve7FqXztU0hzdQycGPt7ZjiIzs3S+YGRFENK/vW5hQvkoVZnJUJNcMC6Tz66zCdOTx/EDA4qpElE9rNjN49Qz0Q5CPRccsAF40AwvfimGeoZSkfXkoAOgHtbo1RGBEJbmdb9I6XDSyF/v30NpOPdYb9dzSCLa7dvs+ZXsynw0fo7CsdPSgV6pO9NM/dDPzxBeyry7wRz/eabQ5HG0y/XWXy+Qr+8LzkoVyedSGwmBMLIGdnXBcj9t9anr1+yCX3AJ8uyXHjT/HZZQHPfyQ5NBcNU0+RSLPdaod44QGD8Q/8uzs4616uZ8t43CyQ1mG01hfPXHo34UW3ixvVudF6wm7rC9YRezdFLylBINlTdZJAxBPl5iFXvpIeFg8dIRI3xY7lMFUYI3tVgkD27nSKq07lLJFZB+2kv2WpcXFVHmNjy3G8Tgb6P9TcpXO19nxTySVR3X28ePI0Vvz0iX8JMADE1p16B3U5CwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Sri Lanka',\n    code: '94',\n    iso: 'LK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNUU3QzUwOTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNUU3QzUwQTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTA3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTA4MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ynHuxQAABGdJREFUeNqklttvVFUUxn/7XOYO03Zm2g6XDhbE1ghEMURRY2IUwpuX8OSbiW8++KwvmhhN/A+M0USJygOJMSYEH1CUBGICUgpUCW3ppNDaMlPauZ3OmXNxndML470tO1mz55yz91r7W+tba23lX+Qmm+jGwMXnn4cmYovURbaIGCL/tva/RqBnEZ0pZpV7mfrPU4lEsWFi6p7oU8TwOKxqmCvKXZGkyFa4caoXa84kXWjguWpNB1BqaS7fTJHbVaHv2bmG0YxjvXc+nzg51gEpgeUbxFWLKTVCh+/JLtlRFRmE+Xic4lAnrbrByQ/2EDUdlLYGy37gMIP9r0xQvR0j81TdMnR5GYk7YlQk6YaLUspBU8vuXJlj4DU10n0WDzxdYuJsNkSiGR5aoES12ZFH31Ph+2CNXdfJdNd4/LUi107k8Wwlx1hRrvwlkReaalOkWP2/Kb/I8FfbufRpgXiXjWPp6KaEx1ehcutuBDPhrlp3bJ1krokZd8M1nx09yJY98zyRHQ9psvYhng8U12ejaEKAAG2mv8b4uRzJTptHXy0yO7KZTdss+p+7w9T5TkZ/6EaLeHIwA6eiY2puiGRdhv1lopgJJ3yIJCUkgvjhw1PsPjRDZneNymQ8nH872Ut+34Kscbn67RY04UK4Ty2FwmCDwxP0yYyN72jEuiwyO2vMDKWpzMQY/zGLbypGTnXSf6BEz2CF6eGOv2XWukfIN08T9EKegFi+xi1hezLbpFaKcv74TloNnR0HS3QN1IkKcZ2W+pOODSH2Q+755PcssFgxufRlHy+8ew2z02Hg0DRPvjGGmZNYZmVtE26ezoiL2ljKfbjatTVSwvJI2uGhI9MMvj6NKvn3/Bjk/oKY6obOvkaYXu0ptzFXiwK3qVO+kWLb3rs8//4IqipG55eYT0oq47RkagKalsnomZ6QhO3FRtsoYmUEiqAlB2jNGDTGIpLoYqhscP2LXqG+YlJcXLkSoy75HeT7fZMr3Cik8gXB5KUuPnnpGc59tIvaTJSv33yM428doFqNM/TNdhYnTAoHyzhywPa6bqyXzcFPEN9ousXETznshrS1hkbhSImqFP6JoSyFQhnDcNj38iTd+ytcOLEDT9LOXWa2WrdhQRgYciSVUlEvZHTLMshJni78muC61OFE0iYtlWvo8wKxtE3xYpbyWIp03mKhFMf29DANjdUm0CZ+e6lqm635CL2DC+x9e5Lv3nkkRBHvsMXFMc58OIAhzaajx+L3q2nGz+ZW3RRNtsg+WOXFj3/hyrGt1OaiGI58aAoKKpElRkpbrAptvfbuFKRGAykCGobU6prU6lIphW556PPmUsyFbJ58n7uVXPXOyrBrBsUrOS4f245Tl8JjSOFxh6l/X0wlRmuR1YtAQnkcpYK5AlVKLJvlHFsVo6e7aZQjgrR1r2X+b4z8sOjMyUWgZ6BC/+E7DeVfkKvPZrn6ROSe4f21I7Rxv7l89clvhB3LewI9llx9bjP7hwADADpQzQBjYpxJAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Sudan',\n    code: '249',\n    iso: 'SD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjc2Q0MxMjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjc2Q0MxMzE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTBCMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTBDMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dsEThQAAAfVJREFUeNq8lT9oE1Ecxz/v3ZmkMae2xdbuiqRiqaugKDo5WFGQOiiimy5aR6dOOrhYHRx0qQoVaQOCbgpO/oHatTrVhCYNtIlJbWJJ7p6/C7aiVhfv5Qf3jrt33Of9vt/f7z118sTe+TvPE15XQzHbGaABZbAeihu7zc6sw71MB0cWXGY9n28uOJbhDgM910q9QXx8oEFnVXMsu6mVcSVuF64lZ1jUrYcrp2sMD9XwBbinpPFlzihb4LVxRQhlzdP9qxy6sMKbHT6DZYdYk9YCovd4JF2Vu7f+JpS3O4BVuPUiydXpBPMUKLLc+tweOAzhkpIVxJsMv1bm/rZTfrK7y2QrBWUi8t39qwGh9HWHiX1l9bF/znl8/rpJk1LReryxFiK7I0MPMy8nVf+lXfrhh2fqx8x/X/rf6xJdfR/60tAMOHdziMNjZyguL1rM+I+OF1caUKpXpd2MJY9/BxY/QSzJ3ZFxLh84a7G41toq3MJ0haMHj5tHFx+Y3giLa2NwIMDNMpWSje1V0WzJav/2zKjJfVlQgQksgUPo9oT4KYBMHvO+rKaYcKPeuX7+MCwYR2qtrwPmvsJUDgp1a4eE+4u0W2PwVlplMmv9PHbXpZU+5clnmF6iHeGKtB65mkgrWebrtCtc3i3lyeQ8jKGd8V2AAQDj9qv7QrTRKwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Suriname',\n    code: '597',\n    iso: 'SR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjc2Q0MxNjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjc2Q0MxNzE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2NzZDQzE0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2NzZDQzE1MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZGHpRwAAAa9JREFUeNrsVbtKA1EQPXf3buIa17xMNCqKaGyECJZW9v6An2BroSD+g5W1v2KhKNjYGBAMPglJCslmY9TNPsYxJGClNyAK6oXDDrNz98zcmbNXYD1H+IGl4YfW3yMWDlGdnwlG8E2cOsOWFnWMnkMxXcZj1x5i9D+euixOr/S2KW8PnzVExt1OAu3yADSzr8N6S5ukd18W7xwfE/JIEIc9I4rZtTtoEcLl7jRMuOwlfhsqk0s9kfg8jM+CSMDMufAdCaoMIrnqQh8KYO5aiGYMGGkP7UpEsQRAqqYYMKFRaCK/X4SIcWUhf10Qls6OQa7A7fYcni5ikHHvC+XEHHLYh32UwvXGPIKWhJgIIcYIoafjZjOP+kEauuUrVdufjnWCYbVRO52AfZYCsuwbAxrnSVQPJ2HEPG6c+njLwG4qB3swkJotIblYw9VyFuGLhpm9KkYWSmgULRgtT51YZpLKchLc5+gUcLNTwMNJptMDsZWFkQsQKSWgcztU5STI8Rw2LLU0OTeHu/PEGO1qt8b/HZOHLc7whWrBTeET2WzEOzL9vvuhIf7v419P/CrAALDtiSyIepCqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Svalbard and Jan Mayen',\n    code: '47',\n    iso: 'SJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzY3NkNDMUIxNzg4MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzY3NkNDMUExNzg4MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMTZFRUEwNDBGQTBGQUFDMTU0NTE1NkMxNzg3NzIyQzUiIHN0UmVmOmRvY3VtZW50SUQ9IjE2RUVBMDQwRkEwRkFBQzE1NDUxNTZDMTc4NzcyMkM1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Ec+VdgAAAaJJREFUeNrslLtKA0EUhs+Z2c3mIhiLmASFFIKiKSRBIYVg8A1E7CzsLW18Dgt9Bi+FaCUoahNvoCQIAQsbxYhoTLy7M7vHWVHB9bYpBIuc8p/Dd5jz/zN4leyGj0VCQPW66XBrqvA4lh0Hg8/uTQ8b55epAR6LAufgrRj8WdXRrtLQstyaZaF8EfFNQQQi1flF8w9o8/TUrZnCfrxptCVy7VVRqZDSvClz2/KeEC2yu+LWbBuECeFEsyiCJUFgXN5BRyq2n4OA4dzAI3pJS7hzjUh+xtcLy8s70NgAGlucW6/0p+1E0tkVkUc0QmjomyOChiCLhNWO6awK90812wj34ttDwySOaGv0JOBBANWGxsnV4uebIGPspLSWy8/PbANnoyN9vT1d1BKzVUI8D0C6PftkIznuhVsXNg4GsxOg8838ZKYzAeVj8PkAPS/koj3jnmaa8roSPS+W9BBwXaFPtCAcFUptaV80Tu+J/BWtB/1u+3TOpTKAE0nHTPVanCWgEQjxYKCGXJNhuNGMgRLRYb5JBAxVp9Nc/1T/IfpZgAEASgSdGXymLpUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Swaziland',\n    code: '268',\n    iso: 'SZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlENTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlENjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2NzZDQzFDMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OUQ0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wwOMbAAAA4hJREFUeNrslV1sFGUUhp/52Znu7uy6u0DLFlYMaREDgaiRBFAJhlATa2JSNMQLuVBDYiTGK1PU6IWJF6a3XuAP0Sv/wdAmuoEKSpoULanahtaK2Cpt12Jpmf2bnd0Zz+5WS0wM5YpEnck788038533nPOd94yyqm3M5wYcKjfo+O8RK/4UV+Qeua5VhmBeMC6wBI2CBoG3ZAu28vnNoWsSV+2pisJqxSdr5+nLQzkZZ/vdW3F+ucDM6XNorhhJikcNBn7lmh7Y+vyE9k/JoFrulYWgUoJuinxg3clAYYBnH3mKra++QlEIM6e+Y+iFg1zo7yEqbmqywpdTk7GDLXddEJaZRYd00/Kv5kKRd15OQUlU8EOQkCCaFJVnztt8pie444HnuXXsLL9nZmpLGgKwZtcmQTfjH3/CyT0dxCNzGBGT3yYd1ux9lOLEz+T6+tAta5H4T0LfV9BsX7aqQLFJJd+is6zRI2woPJbOMdKyjv0PdWC5WexoKx8dfYuH90zRefAlfhgdxdd0Nu28n/v6j3Fi34MYsQrLnn6ZYGobdL0oVoWjLAEZfm3v6lVdloEqpJuLXLotjHdvgOaNLqq49cTJEv2XYV08Tsi1Gfz2EMNDbxMOBjhytIfh4WFC4TCFrM3syCCpLe3c88YRKjGTVGuO+UP7uHiuH2u7iZFw8QrKopxU3ydYzHJ8w2662t8k7XQQ+qaMOqpRytRroFwuUXDKLF+5ivUb1uKVy1iSOtM00XW9Bk2rf2s4TVhDOWYff42RcIyu547xzl0HJD4Xs+JepWOJTJeo7dM645fX4p73mBuQjHyvczgSZKN8MqmqKMEgAVWjkHewIhE6OztJJpNkpqdxPY9QayvTX33JqV3b8H4V46KXS2diZCYbmRhshikPNVSvKeVTy6rJyfAruFLCZ5o3s372J5Y7c+Q0gxUio4SQHsjn+cJ1F+tQ5k709rJzx46/5i6m0xxva5P6BTMalUL1MEp5vk7eTsyxxe4YWcOq6sVWPiRSI/bk0RDxJMhJR2mQq1mTQ1VON8m7lYJuSdXrIpCp2ixs2b2X9989zGqnRO+T+5lIv0fVbEBEVZWOVxtX5CknKwNiNyQp9uoNpGdFeEkNpLp7KYmyIJk6K9n5UQQ8bLu035KkJSf7OXOFaNRACZlLaiCKP36dLVP5G2YWvIovdJultsz//8f/euI/BBgABhdR5PJe/UIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Sweden',\n    code: '46',\n    iso: 'SE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlEOTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlEQTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyQzY1OUQ3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OUQ4MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+cif6DQAAADdJREFUeNpi5A7oZMANvhSUQxg8E/ApwwqYGGgGRo0eNRo/YPx/YDRAUAJkNKOPGj1qNCkAIMAAQwkJrW14Lx4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Switzerland',\n    code: '41',\n    iso: 'CH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlERDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlERTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyQzY1OURCMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OURDMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hqToNQAAAfxJREFUeNq0Vb1uE0EQnp87/4iE8w+BCIxFAWVegD5lJCoKXiRdel6CDiFKKKHnBWiQoECRCVbC2Tmc4LP3ZpdZO44jkvPZBFan0+7c7jd733wzg5/aISwz8MLcLXUigOWGM3buJaB/BM0IJjMHc+hSy0EYgLjrQSPaJONmdP/Vc44aapCkd7i3K3FC6wG4RehYwDWhdMfhw3uPPnbObZ+3WubLN94sgV0ETQtAPRX61h9zIsfx1OwnTrzxfMNqhBDYn2OXKtEgJ0BxH2x29slmEvfVCDgCASwDRSHY5aEzy40Iy2t6S+oPw7u3gXjmlcNWG+iQ61X17Ma/3HBw5d0vcY1eZ+a7tF+/WN956tIUJAMOOaprSCcydJL0QQwwY6V68u7t/pNnwR3CMv+h96tvrZHnWpMqN0CfS5rhWmN+vrGRJxOC/zaCHDV7Jdj0tJCQrHeEuJKurcXK2jSMMgnjg/cfuHZrIr4fX7cfm4PiMOYoJCDpJS5NvPgG6ikFKzOvYjr7pjuyg+SvxGeBbpYgmlADI27WL4pPl/a0yxtlH26NYU5O5teQ6QENs1EHPGXDFyudIHujbliY6EXlyQFW0Y2HgzcvKWp6j0msSzUWVm0sbgXKhCZR56yGKkFhiyEkkOvXa4UgCjbdrLtoSSrGXaHL+DxesYH9FmAAtnngpsgiSsEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Syria',\n    code: '963',\n    iso: 'SY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5MDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRjMyNzg5MTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODhFMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODhGMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bS4JXwAAAKdJREFUeNpiOSeo9p9hAAATwwCBUYtHLaYZYPz///8nIM2LSwEsrzESaSCR6j/j9PE/KL396WWGzU8uoIhRQz0DyMf/cYCdz2/8F5kT+19gVtT/jU+v/CcESFD/iQWfo5Q5eBje/vjE8P/3dwYFFg6CwUyKerxx/ODLG4Y3v74C4+0/gwArJ4Mqrzhew0hQ/5lg4qIR+MyIlBDpm51GLR61eNhZDBBgAHqosVFFWSaxAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Taiwan',\n    code: '886',\n    iso: 'TW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5NDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRjMyNzg5NTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODkyMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODkzMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yLbMqgAAAZxJREFUeNrsVstKAlEY/maawNtgmQtvRC0ENy7Etbhz68KH6SV8gV5CFy7b5EJxUZCIuBBMvJTS4G2svMyl32nCaValhhB+8HH+c85wvv92hsMA110APqIIDQxR/jShEFndPiKquu0ADwFdXNE4wy/BE5843cB6lGG3c1DVOTyeEwjCBIpyjOlUMjixNXju+3wV7RzRqBvBoBudjohE4hy1Wh/5/CoxNkPU28EkPEMg4EIk4kMqdYlw2IVyeYBslkO7vUCjIdA3ll0Lq1rEoZALyeQFYjGvthqPe8FShuv1EQkP9LpvD9YsLEmKRiNkWcVyqe6yxsaTWK2xGo0xcrkWisU+NRhQKPSQyTTRbI5pX9K7e+c1tqDVGqFS6WE+l5BOP8Dvd6Ba7VOqv+q7s+aywyxeul+gdPcIj9eJm9sXSvXKP6chWgfxTb8FGwpbMTRdKAZLUdaOfK4PqZUYbdVGoqoe7TsWsGK0VfSMAPvE8BP5EVRyhCWXTskFZjNxkTvDK/YBFnvCQfgg/P+EOf3Jw6+fPn8OTetDgAEAPv6K9CaVVcEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tajikistan',\n    code: '992',\n    iso: 'TJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5ODE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc0RTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODk2MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODk3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YTHlPgAAAVFJREFUeNrklT9OwzAUxr8mdpM2bVJ1QELqUsRAB3qALhyAuRyEAzBwCa7AwAh34AKILkgUKEJi6J8AberY5jWJmHHV4oEnPSn/7N+X58/PpRHvzWAhGGXdBtiBpbAGZqkY2gEHxyep2ZASpYbDatm1Sj+KR9psFq21WkexBAGh4CJc649XYCOpy+QB4vMR5do+tJIQiye4vAk/6G4PPB/fEkzA4RGUmOTuZA0oGWdlrzZ723G14wbglRb8sIvZ6ArT0SX8qItydY/eVYwbyK8iXbxBiim88DC7D1t9MlRuD+bvQsyfKV8yYRsFlxxOIEmsBEk8QPx6s1ooKnUEr94hU6f0TXl75kq/hngfnGExucvW1YsOsNM5B6u2/2Y7/YQutrZpA7m4P5WmDcTlDSqrm3NJt1yOCwUGsxxdG47YVMtsBW0b3P94LFLGNsDfAgwA/Id16/aLV8UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tanzania',\n    code: '255',\n    iso: 'TZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQUIyQzc1MTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc1MjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzRGMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzUwMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A+PQqgAAAytJREFUeNqsll1IU2EYx/9nHnVTpjMoQSuiNGeaXWmo0BddqFdFF12YQSVFVgpiObWbAlMhP/NO7SItIsOvUOhLQoouYxemiaVSGvtK3YebW/r2HOdsS8/RaQ8ctou9589vv+d5zuF296ZNAoiiy4ItVAAYbEwG/Xww1HI7Bo7osX3ejII8Kxqe2b1/qqRril/+Aq9Pv4qjS8YxjLmCACeHyv1GFCcZMNlpxp6rDkzoFtY6puT/C6VDjniifHXcgJ0uIypzbChpc0melW2WMoAox38HQW8PQkWMCZ+zxhHc/xMx8eZ1QjlcP835HyxQ2hmHMbsC8YFO/Mj4Dk30BCpyTNhxyoav+kXRsxGhHLRNDA/aIzcevOSSQscESkcgKolyMHMc8jdTiDtoRmmbU5oyA/g1wrA3Ox0JXR3g/etYX5cV5+ZQ+tgpeVal4PC+kSHhogLVWg2KXpTQDQOlgz2UgkvmkqEq1oRbSXrouszYd8WObxJ/q1D5WUB9C8NMWDri2msxYkwGQvQAPyMe7E2pXqbc5TKh6rwVmlbpjo0I4TBQz5CYq0CtthiF3QIljVvYKED9AcavDvbM5TjNJXPKUEGUmkN6mLrNiCXKUZ005TVy2fiQwapKRfzzOgwbUlYohUBP8WJzqVbY8faEAVHksjzbhttPpClVRPmRXKovyHFfW4qbPRq6Ie9D6V28h5LzcWkklwboOmYRm+dYh5JDQRZDXTO5DE8nylqiTF6T0ifY22UcuXx9jFwuCC5t5FK6Y8PlWOrYxEtycqlBYU+Zm1I56sZh4r3LTxDlopdLA7mMuWyXXARC3cgEGlqA2fA0qInyi4hL0eADtH1eCi6dJtzLtqJsHZfbaPt8aCCXS3NZgqKe4lUdu6GFxBajzVOd08qjG3CZn8lQ30yUEelI7a3BkJ+UXmWRleeaEH1mTjI0nLbPIC2C+j45qg13oHr0DkMzKW7KAIu/oStjaxZ/Fv+lnFERZV+N6Fz6WRbRh4QyhMenJoGSXBruIqK1H8PTKe6O3STlv3NsWSZeefU5ezIIT5s5OCJTaC6JUn8YCN0ypferj+WPAAMAfeh+JFKb/jQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Thailand',\n    code: '66',\n    iso: 'TH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQUIyQzc1NTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc1NjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzUzMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzU0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MpuROAAAADdJREFUeNpivMcrykAbwMRAMzA0jWb8////aIAgBwiDSu1ogIwaPZpliAYs9/nERgOEPkYDBBgAYAkIxbRv61QAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Togo',\n    code: '228',\n    iso: 'TG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQkUyNkYyMDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQkUyNkYyMTE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCRTI2RjFFMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCRTI2RjFGMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DvPYywAAAaZJREFUeNrslM9LG0EUxz+zP2ISsxitmlTxIghCKVSx0EKP1pZAWuiltwQvKir6H3jw0D+iB/8DLwXx4KmHXnppEaSFEEwhAaFhS9JCks1mt7MrLPEmOPGUL7yZebxhvvO+8+aJ8/RKDbDoh++DEJGbcP1wXijM3tx3BxjSZiIvIJOkvUYTLZVCmMb1JQYATdrfG8k6XUafL0viJHS96D59AijLGKGbMssGbbeESZa5ow9cvt3mz9UXkizgWQ/wPRd/45Na4u6/OtaLZ2Rf76LFk8QX53l4uEf6cg3nW5X68Sm6YSmXWsqo0alVSCw9Ymq/GAbS73OM5/K0K+XwnQVCPbExOo5TqvLj1SpO9SoK/nySp/n1M/rIJN4giP2eKw/ukHm3Jd9bp1zYpFP6RfZgR0Z1TOEQ0z31xRVAj1t4rRbll+vYFye0zi5IPn1MLDVDgl5Y1uLjG2XE4nxspRk0kKCyXdvGxyU2kaVr/5brHubENPGOc91AirPqMm43En3udDi6djBmorUm5VYN4X9nMK3pNsU1JL4PGCq/yFDqIXE//gswALMxeaDVbAFMAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tokelau',\n    code: '690',\n    iso: 'TK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkJFMjZGMjUxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkJFMjZGMjQxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRTFENzgyRDE4MTQzRDBERDc2RTIzOEJBMjNFMThGQkEiIHN0UmVmOmRvY3VtZW50SUQ9IkUxRDc4MkQxODE0M0QwREQ3NkUyMzhCQTIzRTE4RkJBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xugOwgAAAy9JREFUeNrsVFtIVFEUXfvMjNY0zaMEa8zINLEHViCTX2EQFGSYElHRk6h+il4/fQS9IAjsJ0IoKqLCCOyNFQ5o9uNPDyYwKxWVCjPLfF1nRmfOaZ87auPY66e/9sdcmLvPWvustfYlIXZBl5ByEBgAJgshAIU/lJLSBjiAwc3r6nPTvp24kNdnQAg52iFiDymDOTneYydLbDbNodTvQbnfAyQXrWioq7h99ab/VZO7z3AJEY3vs5rzGsBQMBT53D7Ah4CgUlai8bNrRiUnAROX+hqPH3pWsKIVLrTcdV57kAP0ARTfLZQMz5ufnpWd0db6vqzsvtNlP3p0TWqqw9QnvqSUViVT3A7j4umHtfcrCla2ohnohv95OpMBkYTbCYX+kuJFqwvnA2HAEwpHntY2G/1hIstYESYDzo2FgXc15Tv2BfAVeEP6VgKd3XbAQpQonFUIz6lTfn4jaAqIDCNc8+Q1YBfCYgrCoHxoShIZl85Ubdpdjy4gwIgETc3oykLyp56w1iRlRGqZFBQnxCmEIwZqisAx8OTntl4/+zgzvwtvgVAMNHYZDe1NYZWHlCKiMd5or4Rg05A2w1O0ZoktSSkVGcF1Aq5DO+rqHpVnLujSww7G4eqhFZu3bHEH0G9OiQTomPehGV7n1i15E5JsSkWl5NikuO2hO+dvlZ6r0XFv0npinKAserqvx7fgCzApIVE0sjJ6SCAqyCpVMg+73Pf26tmq6Qt70cDmC+33T0sqZKPy8pzCg8VAj4hrE6McsV+p3IDtyJ5qf2XF9IxeBCyQOvq/XCAGaMOqbY0Fi98AKYAcD8368rDeubM/1d64dbK0TiehhWCVJiv9ejlJGxvEvSv+ae52llEp+UMQrQSSs2YOnNj/YsOBl/rvLpNe4G9rCEgFOql4/dq71bxBQV56q5S8SJwwmjb1Y2d35PBOX8+XCcKitPvDtgjWSSeL4wUdchCNvCIzgOYjAm+24Z3KaUnj5eRAU37u2r3bG7yucEeH9UO7Qw4fIhNn9Dh/PXgxhjfO5DDbNDuPQFHSlGoIHk8wY1aoszfpQnkmN+3CvymBf1b/oRPquwADAFZsVbvbw0XNAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tonga',\n    code: '676',\n    iso: 'TO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCNzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdCODE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCRTI2RjI2MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0I2MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hRrzKAAAAQ9JREFUeNpi/Pn0KTMvLwMM/Pn06e/372yCgoxsbHDBx52dN1pbuRhIA0xsUlJAo+HoYV3dbi2t3+/eIQsysbP/ZyAZsPz9/BniaqDzf7548fXq1X+/f7/bvZv/yxdubW1kt5NsNJx1r7DwwurV4gwMQHQuO5uRgcH5zh1OZWUqGC3g6qry8eOfixe/vXwpaWLCLizMwsfHQAFggrMkU1NNd+7k0tB4wsCgPn267o4drKKilBjNgsZX6u3lPXeO18QEWZBNQuIfGUY/7ukBJgA4n11GRlBE5OnEiX+/foWIMDIxfdi7l510oxm3MzAQTFisDAwcDAykOpyFyIzwj5JopDoYNXrU6FGjSQIAAQYAmalRzsgP/4UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Trinidad and Tobago',\n    code: '1-868',\n    iso: 'TT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCQjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdCQzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgzQjlEN0I5MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0JBMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+K4UpOgAAA9dJREFUeNqslX9M1HUYx193YMovAe8uajKwgXCA8cO4TCejBUUGo2mDwmprLSFD0yBmtWajVWoTSjR0qeuPiiVmw5FsAbnGUFJAwQkcIqUEDPHu8E4PSO7u2+cOYavvlQI9f7+fez1397yej2JCkizrc1/j6MHD/LO0UVHUNzSweNBIc1wCdiQWqMOQ7BPMtRTDb26TNHt2sumD9/niw49lgUCNml8u6YmVvGlbspRRywDeqhgkx9zgyq6yXfSnZ7Ov+CM+P1IhC4xcNxAXqKa6v5t4cz+qKB03jR0oUIqxFbMH+wVEcqXmKD2PJLMlO4fKM6fdBjNjEzhUU01k51lCnnyWmyN6sNkFXDk7sHNwX1U0w+cauBAURtYyHc3Ga3gt9JOFN6Rn8k7pbkJrq4jOe4tblss4xscE22MWYEkS/5cNH3UM1uE+Wnw1JBrH0ZstPKSNlDXsKizi5c35qA6UovvkM8ZGr2KzjKDw8Jwh+E45N9VLHYldDNIUEUrIiZNc7tLzWMoTsqZv9pWTlJbG/He3srq6jtsTQ/xpGBDweTMHT8Hnqxfj6RnEqYwU7GVf0lT/M8+9+oqssbG2lqiEeIYyUlnV2oGHkG3M0HPPcNlmSHYb8/wXscArhF+35GF6422+P/wV20o+lTV3t7UTHhBAW/gDJFqM+KgexGoQG6/0vOvGu11JyWFH6e2N78JwLu4vYWDti+wsKKLk269lWavZTIK/ihNXu4g1XHHpdsvYKT5E8Z/wf3fB4QBPD/wCtfxWVYE+egUF61/ieFur23jGw/HsqfwOrdBtibgL07oplTMEu766JKaW8BO6mbrOckETRmZ4LM2mYXz8/WXxrc/n8J7QLfjHIyzbWDip2+ioW93ubv8d3byduhn6afYNJPGPEXpv3CAsOkoW3yF0yxa3f1H5blaU7GdsrA+b2STT7Z7PzqRuS3GIlqa4SIJqTqLv6GRlaoos63xwkp5O476C11l9rIYJ2zVuGwb/tvEzuneTugW7dGtMT0EqLed0XT05G/Pkuv1US3hMNIPr1rBS/7u47U7dLk3DZ3xop3TzcupWmI8pv4iK8gMU7JC/bL2dXWhVKlo0Pugs1/HVBE/rpjgXGCHN7sqLmSdsrgUKSc0ktO44B8Ujkivuubv6ofUMa5c/Ss/yJIbON84B7HrNFS5frUKd+2NXEdF+iqrzLQKgcxvfe6ySTeuy6Hsma47gKb746aziaPj4BxPf10u7zUxyhBaz0STLbi7eTtn2YhfYwv9QzqUZN/SKm+2B7mIbfRo/nkp+nG69XpZ9IXcDfwkwAKswgUQLQuTdAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tunisia',\n    code: '216',\n    iso: 'TN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCRjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdDMDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgzQjlEN0JEMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0JFMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2pqf5gAAAmNJREFUeNrkVktrE1EU/u7MNBk6mTws+IgiqRUpdFXUjaAiXYkbFyoSFSxiddMGsRUFsfgoYlcipYhIMAURQXDnT1BXSt3YlmJQ21iU5tHbvOfhmZtZuLKJjXHhgXOHy9w53znfPY9h39CxCCBMytEa0UlTjIBX3E0rhUv4R6I0/gkjrcLCqthJ0Gj1kNp/C9ghpwIDOQGteMPCCaOcIkibDAVo7yU167ZW1zEbRQGqHT6BcDqHTaVF0gVs/vIV2tEz4p0tWJCaCWxQHKsI3r6H0KvnqL6fxvKePuT6B2EtfUfo5RRC4/fpTEGw0iRgohMZaMdOwXf9CrKnzyPVdwBSZBu0qzEwvw47k4U2EoN28qyIvJYH6wauCjP62E1UXr9F+uljdNy6i9CLBMzZeTDVC4vXEk0b6BcGbZTXD2whD0XdCmVXF/ITkyJ/fbFBmDPzSEejWIpshzmXFGfb9u6GHOgkYN6MiKlMmEud6WasxGAXy7ArTln9wqzzZKw5dyzBB6O4ADP5Ge0XB0TqFB4+gtLbgw2JJ9jycRZyV6R2Ke+mYWY/Eb6vGRG3idbAR+/Ae+gggkeO48fIJeTODcGzfx8kXQcL+MXJQjwhGGBQ17QqD6P9mlv5v/HOg9KHN5CDGxF4MA61pxfF+DMYM3OQd0SgdO8kFuLIjY1CprbPaF1DKnUOCaeB5EWd6tELCExNkss1sqzlDPjlG+CJCYJTCdRfT/fiDUwnJ4oS1ekKuSFDCXYSpxKMTJLorVLLdADVelsm/4OxKAkHLLdknESq3WlDQ4L/n/OYuxG38teH/xRgALiVytS9zUFxAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Turkey',\n    code: '90',\n    iso: 'TR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMDRBRjkyRTE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMDRBRjkyRjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIwNEFGOTJDMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIwNEFGOTJEMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZWWjjQAAAsJJREFUeNrEVktoE1EUPW/eTGaaZPpJ0w9N60K6ENxVRIhIUdz4wSJYEFy40EXpzoILcSWoCxFddFVc6KKr4qKC4kJt6aoqCOIHoehCbGsNrZq8NMnMvJnxZtKSVmuJNaRvGN68Tzj33HvuvWFfwm1zADroFajNMOmdV1c+sGauCbiCbRrqpqeMAbYDz8kGS0WNAHoI8P3/Bt6YscIB14VcXoB0lsDNOLSubvi8tAcpS3eqCswU+NYyHGsR4YPHkHj3AYnMLNreP0fL+H00DA6Rn1T42XTJI1UDJjbSSSN25RpaJx5C270L2ZG7SPUeQebqDTBNg967n2aDDMzDl1Zg7L8ORumUKSuawcktIHqiHy0PxoKd1OHjyDx7BC04VeDRo8V3kIHEVmHw3BxkOgWuhsH1Jgq/rARXrBOX79iBC8yB86XTkTsQBGqE4oCmBqJSyL2+KEBaKYT29qC+bxD5sXHw1mYUnk6A1UUqCoGyHjgHXt8BbU9PsLYmp0oXVkBLl3x4VhZaezcaBi6g4fJFtL+agptaJF/kKo77BsFh5d9ukjZMUYidUU47KbcuLkZxcjNzsF+/Cdb6gSSxKArOKzOhWTFM2PMz+HH7OsStYRLeUfDOBJlcV3GObygus/8M4mOjwc635CGI6UkSF6dTlQyxoDVRafdoHdLheZR6S19JXBESV2PF4uJDWvRSkdzqDoeB/NsXUM0Y9OQ+RM+dhaqb8D7NQ+3sQuTkKbD6RsiZj/DyZLMtwetiYLyoe69ST9u/MS6S5vALggqXQLTvNJqGb4J3JeBlBOzplyg8foLle6Pw0j/BIuZWy6f4E3i1ZDoFql7fSQQqtLadUOIxyNnPlLPk1lAjuTlMBN2tFq6/AK9pEn7Bgu8WW7VPzjDBDKMaTUJs3p0IgFE3Ymhet1eNsa39WKy4upZ/fcQvAQYAj5ICkAs+H68AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Turkmenistan',\n    code: '993',\n    iso: 'TM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMDRBRjkzMjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMDRBRjkzMzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIwNEFGOTMwMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIwNEFGOTMxMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rBlHvAAAAuFJREFUeNqklEtIVFEYx79zzr137rzfvsFMExEqaVQyULLc9bKEWlU7DRfhql3bdm1atQqCqF27AqEQkRIsSMkHPlAZx5nRcZyZq6P3dc7pTthrEcw4H4dzdr/zPz++7yAYvg5WybYr6cTjjzvp6rN+1wad24rVuod6ahRmA0rB0EEQASEADoCguMJHp8jyy2pFQ5urv2esJaR0HwbzRFMIYI4QqgxXE11DpmnthWswLgYtHJ2IM+Z1Cusz+eg6Pd0beaBFx5mqglMCndZ4fPW+4Pa+EhCl+c111XoHQkWn1om3iSprm63vY4PZg+rReFZLCn4Osre+si6eSVNG15MbkYaW2119kEmVkpqD4DBspjOzGogfTvkXaWUHMTCSRKnWFxQl6dvyLKzM2Tt7m040F5yU4Fpi5pr81eXKD+Q8F/ji1cBsLuA7lHRl5/PidDSdyqUS+GTLw5v3LSGASSmpC7ot4QCmpRFhho7eIopcMzZ3kgOX+0cu3Xg7Nf7y3RsIVZWC1jGuV7vm92ZG/Qd15vkV4C27qtsHFAERKEZxJTP06tn89y8QCAMhwFjxHQJYJVkM82Bup3inkHdS6Si7IJjUnLSgVlXUFHqjCO7frilPOiY0WIlAU6Rqos5YTUviAQHCgf8cE4ersAqSeIkjQzF49WaMgjEaTSuNWVvYYVKJASt29v4vxEA0oLWJDC2RuE+J7KJUu2FYaAplo0XuSAifZOfrPgkEMpsirXuafIDydjg2/RcaczmHluy28VbZaxhxv1gxxURrMuy87NQ6Vk7RWx/S8tONLY+vXXe7z+Ty3kA5rvHv5mOamdWg487g8L2GsGsxs08QHJ/7T/Ntzxjha92hJxcn/fTc83bVXqMljELzlYvWiadOcvLp7Iu7UnX7nm8kVJXkjJaT+s9/je12Gl3IzHiROxaDRx53wpSbC39KuakFlt21xbfD9jBWF8YEIbmy1kgEs5zUPwQYADj4QuUGyU1HAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Turks and Caicos Islands',\n    code: '1-649',\n    iso: 'TC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkFDQjQzOTYxNzhBMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjA0QUY5MzYxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTI1QjE1RURFM0E2MkU5MzlCRDM2MzZFMjczNThGQkQiIHN0UmVmOmRvY3VtZW50SUQ9IjUyNUIxNUVERTNBNjJFOTM5QkQzNjM2RTI3MzU4RkJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vPd/igAAA8RJREFUeNrsVFtMXFUU3efcN/NkykNmYmSoCrYROgG0TUVNY1qtVavYppoyWrVNbAI24COpiT9qNY3BH/RPawxNCVg7pNJIEUzmo9rXWKYYZLQ1zAwiXIZ5z9zX3OMdsE2NMTZ8GnfOxz7ZO+usvbL2QdEPD7se8HyTrurs/u7yoB94x5GD657/9qOx5tYnh3BqNlm1ihyozrzeVpNd3WDZ2Ac3Hbjl8JU99/V4vv96+NnK/Qe2A2dfmBbh58n0TCwl5lryVwfuJ6/s9hyJ3VHXGSKQI6AR0P/hkGtJ3oBG3o6+Kwl2h1t62bnI7nh4pnT1/MDpsp1bxEM99MZ76xOT8Hjr8FX94/dOJn6JXApEMpkCx1FEJ7KMCFAA5BpLhJBRIghwXpKQcU23PmL+MZRC1mhaU36bdddUSOlsdC5ZbuOtAhMrc8kLSUcudctaRxb4mmDTvMxzlIKAsjgo2iqqGRNW7ZZKncIo+bsej0sIgSwbDUDP2KtTSIpk1bVb17tBtiXmCjIpDPpwwz321oeU46OyuXS81ClmY1CkhIEUZJlYyk3+T4N1OJOyi0rJQmjU5iyPz3DNm7xNci62PAXdct6Zd2/qeefBWg8Hw6M9E9StlcLmwYGzzZtH2rr2dHRVBMaCR8c7glwoZWLUAI9VqYCoknQZYeDM+9b1Z3KrusKfzcsCCPvmWDuj5NCSSgi/9WJTtMP2XPRU/5bONU+fbH/VLwYmhDobm5h9wdXubOju/QHv2nbn1DOFd5mLqqxJRX2BKCbFIkLFhBqq5mnWdDsLTrDeJmg5WMYtsnaTVO9rX34+Zz63aActDUgaGc9A3HPxJwoE62zwXNtL5z/Y/sSbj9W7SsM2nEgaZAFSoiXNLcLevVmfq9erNW6zNa5RLiMiJfRl3CL0/u7RcNgEwFJ0nhU4IPpx/3Q/3oDOxnmKoJIqTSXjvqGdvgKgKp4zC0jXEFZV7ULAWds86ftVbPcLx3brGx6FC91mA5Fjkaws+ToSNl6heR4zNCZGAGJonsMZlqaNlOg6RRGed3BcOcdqYHjWcBxl8Mr0D94FYB0YMWD0U6eTAGV9J+425sH4TzMaXY1F8jR1fRBYytBfVwsVjXrjNT85VVGiu9bVToSnFe9T/NBXuz456mDZJEJY0wpGL4YVBU0biotvvO2KzLWNfVF/acp78FAlxgsURd3IZl9RIJ75G9F/CYSJpuiqZuUFs5RPMkyOLkpaLEnS0sos98mSujL6COJyPm4AaWrxXNcTVizITf18/0P/F6D/EGAAAySvSKv5fokAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tuvalu',\n    code: '688',\n    iso: 'TV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUNCNDM5OTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUNCNDM5QTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0Mzk3MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0Mzk4MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uL136QAABDBJREFUeNrslHtMW1Ucx++5jz4ube/tg3ZreYXwHEwGgSEEQomasQQyMpUEZqIYJlsGRmNwRmO2mCyZic5kajTRGJxmzoxNFo1xcWMP2SQuk+LKuk1hFFg7aEvfvbf3dTwEXSLDhH/8z99fJ/fmfu73fL/fc8Afb33gaCj9eok5NHR7ZngMM5m/6C/Z8eXRH57u7RgKYsm0lZUHcoTellwpv2CPX0jFEzRJYGsNDhRe1qRlDVpryRRx1F0eujzxUinV1+QwP7rJJdM1Jqzu+qVr1c6LIXzAFDjWkddQX/Bm0NbxXcCkitmtGZIE10TzihZg2GtlB+rMo6PBZrKzq2pBZ/ycE164eefFHQ3d3fXzQyO35n01WbrxvZnZGIs1OwfdqTunz7ZoMb3NmhIU8E8ixAAFxJjELPAbcmivQzsXE1iAQcBtbtJwfDgueXkAo3GLBhdlZUmrYxMxDYWHLDa4EHIQYqZVi7Hs7p6+RQOr51MPHJAh4eccBJBrTaPFhptXgk4fl6XG08gQcsr5RNgbSmD4psYyU3BBl4yGOCwweMLQtdNaV8L8PBkQgMuWw/r8tE0PKZIQhQd6E5LOpr7fWTz4vb+9ynhtZ8lXN65smZKLNASnQJysnLTVtrW9/mRxjj4EL00c8Rsq8g1bTh3/raX1zNaG3T2y3u3ynPP2R7N+EQ3tAmdSSbz8F1qQNQYq0lpwGseUE3PPumLVQcHKqMIrGyLe6+n90B4pvjDy9v5v2o/NDp8NbGOitTdG3abirmeG3/92ktAyz1mlXeKczuWeKdhIZGiArKygkbq4xPzkf8wTK18SLPdS2RJUoSQUDIcQJw4PPP/rubE3kuxnhlzcTOVVG3OL2BhNe0qK5vKMiejSj7f8rqoKq7OsMCPlAWQKJ9VAEhR1RDSh9Chcus/ZRUWNA8jJGehnhypebrBcPL+wHTQfOalYzIzEb6QBSZGYJM1GpagpUx8O5ulxTEXJCvTdi0RETG0zW7kULslpqNISnF0z5+OzOZkmcRH1QUfGkdiYwBwo35+QDIc9B8Guj8483FDUW4CtPahqi7yt3XFyX+U7n070HZ/tZlXhqMgeLHu1MXvklbGPr4drGSpipJaIR1o7H/7+37grL5FkCZLTscKpeJECCajgIqRUuMintePhrRKkaGK5nWuj10ZikJfppKRD6cdE42LC5klsLjW4363Zo8djg3f3Xg01aYkUKjUAy8cVXycX+YAE5tB3662XkaeNmecHH3+qzX5qJpnvTzvQETerAxs0Poi68fee160agkDatt0+vK/yyHSo6Pd4qQzJ+UTudLLwgm/b7UQZQ0VX2Uiu1w2w3IGrQWd8nPFyed5U/ieefhUpZKoXU6gkQIJwdUDrRaOhySRqArrS0NqiXlx5iPJU4cKKY6vvWOw/m//Rq+ZPAQYAm+jfAfBELj0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'U.S. Virgin Islands',\n    code: '1-340',\n    iso: 'VI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REM0MjcxOTcxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REM0MjcxOTYxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjE4QUQ1Njc1ODU2QTk1QjU5NTgzQTRGRDNBMTc2RDAiIHN0UmVmOmRvY3VtZW50SUQ9IjYxOEFENTY3NTg1NkE5NUI1OTU4M0E0RkQzQTE3NkQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uuR1EwAABFVJREFUeNrMVWtMHFUUvrOP2R1mHzP7Ynd5LYFCYBVKwSImWBvTYIGYCkbTGu0fk0agUdtqiI2KWmOqxhgfbdPWRGhII0nRUjV9YNtAK0HAtVhWaCndJ8s+YHeHnZ3d2Xk4VAQaQ2lMTPySm5xz5ztfvrn3zBmI53nw30D0r6ruxw0vWknn1qIn2Tsc/l7EpWeSpXxm8igX6ZNoNsvxTSieL73bQjJBOexfQuFvdEV7cfN2aLFo2VmCBbHgME1eTYYGFdl79KaKRWmBmqAitKsTCnW6UkoU36rSlkvQKllalgK3wGIomSACrvOF8hE+sCeu247CwluKKJpLzHuS5DgVuUIG+lnqsgIGSQrIMl4X3EBL15hKsU77gYSjTaYC4QBQIsCUA4K+NBG2Ke/hHwUC6XoJ1RwBbiRinMZwDPC/2882qBAPhiXGJgAqBTIUxGmJ1nranFsrglZIL+LmZ1Oel6EkIJJYaUmEocD0NHChNp0+pp6pvuW3oBChL37FzzUl3Hut6nYsHVCE6NoEYtKTDKs2FfWmZVQsnoQgPeYPnHJ79xcXXiGZ4QjUwP2sIT7xes7DaSB/I+RwNuXuKAKEDTUB0mEFmoBKGyAG9I89n3np8PcgcO7aKDDIACWrx0uOzcqNI56bDbkWKSxduAeVDH771sx4nPrU6ztNRHLX1Xw0uRWxHI7GMmfsvIY/Y4FHAJ1Pzq1T6gJSDiY8GUCCVBr7ATsybgOyWPYlrOuH9B5ca+z0OZ4bd4tFf3dIFoY980DBQeeMmANfWM2Hu1vf7zpIP9vxakWH21aXmne1V7rMpjoGC8aGXICMiwzaFFyGFB+bHAjFoeIzhuOHgpm7FY543JAuVxXguEgiXv5kmnXqE7dnCDpVkiaG1dlADr66uMtFZ5fV31CUfw6v36yi5owaVIcgegTNhTG9eJIva1Favp4s7HqPQnni127fdIJNaeUSaKHdoGXpR1UIkMIaTC3E9RuezkvPYlDmZN/HEiSzpLSFVvQ6Y93xuD7KiBKcNJiAb0Mfpqn59MKdIrWFdQwL51qTZdYosbFw1B6e5VhG0BG3tbWxPGB4Vp6i6nBFvloph+XuKddl58BvsevkXEEOsU/F90qqm+YnrFjAyXgj0UeeyHgxEOs/ZNA82OwpjSTc9i1VT+aYBbNsMp7PM5UaXAoLnc/zHMczwlrEQjBkH8reWWhoAc1vAk9f5uzU/tD84HfttT1P7eioXd97cR/Dh9jBbeQFpPV4zXV/iL8bf2lBq00+rz/ERkf7hl6DC95ofKjR3qOJ0OEwhcoRgKVIiWHX2ewj3159txX7pXHbKQBk/1SA7j1UQ0lwoKt1Y96Wx9V/TNl2V1WD+TnguiGmc05sCJaDGPRWifEdq3KV2bcWWIaeDvmEYNz2gfMnMHkB93sHhPSF3j5w9OQ5r3e1wjWluZWJzzscjU7f2eV4khh1TJE0vVol9H/7y9wX/hRgAAzpo5Xw0k2XAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Uganda',\n    code: '256',\n    iso: 'UG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUNCNDM5RDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUNCNDM5RTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0MzlCMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0MzlDMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+TD5l0QAAAL5JREFUeNpiYBgFKIDx/39aGc1EO1cPTaNZbilz4lfx/9P3P6zsqnMOLTi0UEFL31nR/kaUCcu3L4wCnJS6mpeHQW7uIjYvs+t/BMT1bZht1SXmLOIVoEaAfNFS4PUMO3v99tnLJ/nYQelJ2D3wi7YydULtPxikFJUqcjHdCjH7/+Uj1SJk/fqNQKN37d43ceKU/zdP71i6hKgsQ1zG4umfsFpYiF9RQe7lT6YQbwOGn69Gc+OQyo0jLEAAAgwAGc1CiUqK1KwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ukraine',\n    code: '380',\n    iso: 'UA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYxODE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYxOTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0MzlGMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0M0EwMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LuVcRwAAACtJREFUeNpitCo9wkAbwMRAMzBq9KjRw9Foxp93xUYDZNToUaMHg9EAAQYArtQDhtrhiMcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'United Arab Emirates',\n    code: '971',\n    iso: 'AE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYxQzE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYxRDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjFBMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyMTE0RjFCMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VISheQAAAGRJREFUeNpiPCeo9p+BCGDUeYuBmoCJYYDAqMWjFtMMsBCr8H/c/98M7AzMQCYjfX38/QsjVD0jNTDRFv/592eEJS5mZuaBSVyM/LygMv0ftRIX8RYzMrKOFiCjFo9ajA8ABBgAlQMOS8Um6UkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'United Kingdom',\n    code: '44',\n    iso: 'GB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYyMDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYyMTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjFFMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyMTE0RjFGMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EXnauAAABW1JREFUeNrEVm1QVGUUfu7dXZBYvuRj1yATNT5FxCClTNLUFNBJrfxRZjOKkVLqGA2okGGDhA44ToqT1pigA9qAhkho4kiCqRhgCKwBg5IiLCDs8rEid0/vvVfWGD/K/nR27u7Ofc85z/Oe9znnXi52S4Eh49sy9DS1AE6OgJsdYDYDhOFWr8fi+Ej8kByBuoDX0FOtA6dUwVrrignNlxG1vQT7Yg8B492Gx3HsUvBAmxHoNEAdFoyYqDAoUzeF2322djbS0k9h53el6NXdAEY6Aa6PIfBvTQTkGaBeBOxmgCFYFz0Dy5z0GJe7FbzxdAlc1CokJ4SjoSoRsQkLoXawAXTNLKhHZss9JaAY085idbdgN9EbcQfWo2JTIJLOpoCbOw0VR8+BvzUrDFe8X4Th5Blo7K2RmjQfjZWJiE9aBHtnW5lAe69IH9wTCMhrDLCD+epuwiHIFwmHGGCcH5LPpYCfHYrKY2VwPJyHoNYGoKXwNAlvRVItK2qVTzAZi0toyNqNAxT7eT6px2xkBQ+nsI+OSPdrJ4TRJWipXPkc/e4xWbq3OKGI+USSOmwPxX1fQ01nLhB9+AHVs7y/uXpSR3auJa+JXYB/Gi1LKaXiXTlUExRKvzDHinGB1L430+LYqjfS8k8yacmmEyQMCg8BCwN3KSqthN5dtZ+u7s4iYekS+kPMM8qL2nPyLHkq6jto6apDBJuPCVOXHSSvyH0UnVVPOrbYf7Gc6uYtpLqIt6kzt4AeZdV+IrCGyhUeVOkeRGbpw6zpGvVGR1PtjHl0p/DnYTFX20y08ouT5D13D730/kHiSNo2s/4+GE1m2DmpLec2qO8Ap1KxtlGAFwWj4iEYTagJjcTdaw1SOyldRsL31+Ow0joDBna+Ls6WeBIEUL9J+t9nuge1rTVgYyNromb8VBqSI+MNQSBwCgXTCSe3khhMw3vK3Nsnt9p9VfG2z7Af5q9UyqoW/QeFYZ2oUDA/jsdQfyp7G5ufukWVjg7si5dzMJB7f7Y8RO6fjMf/ZEqbMR4PGpGxFszDmXPi9JGalKTyihuTSi08KLXKYxT+3uTc0NSCnJNYHM+OjruPIflYxMUSm7qMsGJCkhZUSnDW1g8YiGAsl8BEUsvEZRoSlysTV1k+E5eLRMZsloFEwrza1hJ+19gHazsrca/yjhfFF+B2UycCfLWIWfkqArQjLM791XW4uXUbnNlIdYpbC3j6QGEjKYXxNMsCEzU1ij0YrKyGnV33ybPQ7z8gbg2jN3wKvb8f0nOv43xeKVw1avB5KbkYYerFmzPHW0CNpRdRHTwDTQG+eL6tAb0+gVifcRkrvipmIjdLupIQWekUolJZ0dZ8XYaYuBx0G+X2cZg1BXYhITCeKcWlCf4whM7E67fK4f6CB37MY3OyubXH0uTGkjK6Mmka1bBUg/PfoJajJyg9V0djlxxmx7GQQpdnP3ZkLogvZD7zyNk7kRKTC6mzX7Dk7TpeRJWeE6VpZn7vHbp+oph4Dzdb9F24jOrJ03F9+svwfXYE3PILsSc6A1Myu7Bu0Q405rNBCi3cNXaPValGfKBgDDpuG5C04TDGTtyML7efgmGA4BAxB4GNVXA5Voiqs9Uwhc8ELwI2TQ2G32hbaAqKsGvFboRkGRATsQ03fjoPeLkC7k6S+J7Uq/IaO3M3e8B7NLraepAQmw3PgM1gFUD3gBmOC+Zi0o2r0OQXQemjscKd3HxkWPkjPfMSGrLT2FhTyYBSrqd8ExAJsOknvclo7NHZasCWjUew+8AFrF3xCtasmQ2HyDlQ7lr9jXFnVjkac1IZIJO6l9t/A3wUAbpPQGuPjpZuqQI79p7D6qhp+EuAAQB9e+n65ZcRTgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'United States',\n    code: '1',\n    iso: 'US',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERTc5MkI3RjE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERTc5MkI4MDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjIyMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRFNzkyQjdFMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+60cYSwAAAyhJREFUeNrElN1PU3cYxz/tOQUBD/aNymtbUAq2IOiUWXmZA40Iy2BzcW53y7JlyZLtZuE/8NaY7Gbe7WJbdJnTDOdQCbLKrERUotgCSodQ7AsFpK28yKT7rfsL2gv7JCcn+eV3zpPv5/l+H9X2xp65SqtJGfr1Fg3vNPD02SIhfwRniwP3pdvsOVxPaCHGs7+DOA/VJs8crXXEs3P48OfTfMIcU+SRaqlMzm8SNut2VuefIxvyydZIxFbWyX35iviLNZRiPZJaxdLyCkoiQUyc6cwFTPvC9FRkcbJMy7JaTrmxHIuvxaZm5xW7+Jl3NkKRaRt5OVlMjvuoqa9gwr9AgS4PvTYP78hjdtVVEAw9J+Kdxv7Td+hL8tGTeslGg8Jeexk3/riLs62O+cU441NBDjbZGbg+SlNbPYvRF9zzzHCoycFA/yhvCtRqnZbr5a1YEjGm5S2po1ZXfRHVaCTlWLODq24v1eWFGPVbuXH5Dh3vORm88xhziR5zoZ5rl9y0dx/ggS/EzGSQs5Ua3s39h7CUlbri0mKdUGzmijBXqzBXYH4Z931fsmlf7zBvd+wjIigMDI/TcbyRvt+GOSgUZ62uU3S2h8IdRgrTQK1S2T6PyhpZ+aB9LxcF2hpbCUUF27hy4S+Of/wWfUMeykuNVIin9/xNuj9qYWR8juknIc5szNC1voA/DdSypayAhlor57/vp/NEC7OBRfpveek+0cwvP/7JsfedhEWcLg8+pOtkMxfOuTjc5WSrSc+S6ymSQYtGyk5dsVT9/4zbhZmu3Z5IztggXOwSZjvSuZ+hUR9mEan/KAz+PkJb5z7GngSYdXu46T9Ho3EL6ZSKnZ9Fax0W5aFrDNuB6mROA6El7BYTnns+bPt3srK2gV+QcIjIPRLzrxL3ZkLLfB0c40udRCAd1EfFNioxaSG+Sl2NmchSnCKjwh6HBWlzk/rd1uTyMOTn8MbuctRiieyqLKbKbqXs4gSvQmFephOnRCIRFW+F11yyp/3TtD/eSKjYTM4rjcZh110yUZlDPfnVqcwovkppRhRnDrX/2x+UjKDuJXcuE4r/FWAAjBMttNdoYOEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Uruguay',\n    code: '598',\n    iso: 'UY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERTc5MkI4NzE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERTc5MkI4ODE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRFNzkyQjg1MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRFNzkyQjg2MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+foYgAAAXJJREFUeNrsls9KAlEUxn93nCadUbISM03BWraofbRq07JV79GL5KZdqx6h1wjaBBkGQVCNWmo1M47jn7xdw4L2ji7qg3M5Bw5897sf53KElPIJyKpwmQ4SKmyhiJ1xgec6CE2jPxB0uwGWGSUet0Jh178TvxNwU74kqnuqEjTqt+SKu6zmN0nEzXCIh0NJq+XQ9yr41RM8547l1DrNh4CXxhs7u3uqS0OI0sSItdHheH1atQsM54ymfU3SUortMv3aKaZu0+tp4Sg25g26gUf98YpCPoKlfDVNQbV6z4IcMJCqR/VJeTRZxSMIITFiabr+B+22j+/6JJJ5Ws0HXpvP4SienxtlGaKZQ4bOOXajghVbwUgekCrsk8umx5crTZY4onQXN7Z5X87xVltHT/sMpWSgrVEoboUyTr/mOOi0CYLO1xwjA3Q9wuJSJgxed0QsmQE0ZgT1psd/TPG/x3/C458PZIpw9fHKk5jy6uN+CjAArpeUjQlCP/MAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Uzbekistan',\n    code: '998',\n    iso: 'UZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwNDE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0NjFFMjIwNTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjAyMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjAzMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5O2LbgAAAeRJREFUeNrkkz1rFEEYx3/7fhd3c+EE0XAE0UZrG/E7JGhjZWHnZ0jhd7ARsbS2sRGLFIrfQBBBMIJwigkhyb14+zI7Oz4zFwSxWpHbwgdmZ/YZZn7z/z8zHk9ffgUyAh8mP6Afs33lEvvzgg8HJxAGuGgMF84lTKuaNcktak0WhZxWCqUNeLSKUNqmG81yRsOMvdu3GC9Kdl+/czC3odJLcC+h0g3DJEIbw7AXMVM1ioa2ZAueYUxGqXixfZNrGynXn+2BKEPGiLIt6a2y8aKgEPCJzJWi8rhQ7gB4LeVK+O5rcJbeOL/O97yE45mY3xdo7cBpFBD5HoM4JJGS2D4OPDZEeWChFt4yAnbu7YpLCUXFkWxw9+om87UeH8dHrA9SPIFMKu0U1jKfi+W1OJuLcqt2Ib3D2gO0aCG5WvoUxzx+8563k5w7ly/SDDIOrN1WdRKDrikCuWi2pmGEqRVTyeuqdLm2docPDz/LKrRdWDcNn17t8yX0eZD2hanFYp9K8tZqJWrjs3/bF1q7Gx78RY09M5+cuue0rDS/au728n5L/8vwjDFyk0hZcVjw9Ezx/wPuyOqF+fNyrSDCJ4/um1VDl+/l+VYnVoejdLRytQ7sN3QSPnQHzjqxWtq3LuA/BRgAxkzb8HD3VjsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Vanuatu',\n    code: '678',\n    iso: 'VU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwODE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0NjFFMjIwOTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjA2MTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjA3MTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+q4FzLAAAA2xJREFUeNq0lX9o1HUYx1/f7/2au7vdbdMLl2KzmT+oTUaQVjAhFbYKQ6SRqF3gwLKLCkKNsKyhYv/4h2RETlAQRAZO/+gHVlrLAn/NBvkjHJOam7Rzeafb/fw+Pd+7TpT+kDu3B54P932+3++9n+f9vJ/na1RRMbDTNd3/ckUVaRH6rQRZBBODiTRj2Uqk6wDMpZptZTUs9QY1AUsTSCo8msDEmLl/A/GrZ6GmNcpLiV4WRC/w89gtHnd4mW56cuAyEcCVDdDZBUe3wvkfwdk8TMvYeZ6LXqI3Oco8RzlTTTeWwo9nAmZWj3e3QNVs6FbgX3ZDTzcMNg2x6PY5mqOX6UsnqHf6CJmucUvgTgsTGVj/AZQ9osCnoXcfHDsCF54cYkG8h5XDVxjMpHnC4aPacOYEKOMBbJuvzKByioPw2xB4DEauwZ+H4esjFt/O+4vG2DnWRPuIWRbzNYGgJmCr312C2zMTU/eHl3loW11GygmZm8KSV+M5Wc1WBj7bAc8+pVo4AeHNkOp3E6GGSDDEZKV/TKySqo8tbHDK4HdBeeVFjzxT75Tfjgblp70VBUHnvGEu8sMhRK4hX3ypsYAdd4uPgDjwiVmk5yreGin3T/LAJ7vHaGly030mTU9ngNqWfxiJ3VtL3QzY8T48vwQOfgMDN3QSStg1Tvs48FWSjo98LF6U5ftTaT58bRKWyj2V/v8LN0ZUiAmt1Q+zVCFTkrqFHKUJzO6xNM5xSvt75bJrk1ckHpK9W7z3UD1rBnK4A0n3I8f2II868lRDUN1ftN8RVyGLoROVnLycZXlbLHc9tRp2bYflzTrjOueRCJyJKlFNM6FVea9wQTJb/K6+G9il/2eYJqmUhc3e56rmcCv88Tu8tV7nuk8fb1SZr6lVngMQVc5HtR+mxg2j+B4XLJ2xT4udusnWrYa+i7DiBejq1XC9An6qPieoqab05s08mI2XldLEVdgkH29QKsMQV6W2rYL9JzVYOw3atcIG5fyWVnc1/t8LD/bZzAFv1k218U3dVMPwzuvQcVyD0x7WTGbmAe19WgAcp8+0cf1XYi4P/u3tOp+dGqkOwVoFfPohFY0Ff4+qpqXoHt4XeFMrsu2g/vJOhjfqYGEoP0BDtycE8C5VBwZYV+dncU2+b9e1woz1wD28n/0rwAB0+lOwpXHd2QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Vatican',\n    code: '379',\n    iso: 'VA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUZDNzdDNzcxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUZDNzdDNzYxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODY0MDczNUVBM0I5QTUyOTc2RUZFMTAzNDJBQjczRUMiIHN0UmVmOmRvY3VtZW50SUQ9Ijg2NDA3MzVFQTNCOUE1Mjk3NkVGRTEwMzQyQUI3M0VDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oPgNXQAAAghJREFUeNrkVL9v00AUvvNvO44dbFNBkjYllIWUASbEQAeQEBszjP0D+B9g4p9ghY2VlQEhIdQGRwyIItFUSUOSJnbqn3dnH05IUISEVEdCDLzh3d17T989fXrfg0n/HjizQev12YsZ8NfsP4GmMKN8es7ZhxTCFIIULOIQAoxRduPyQs8R4NSlCfFOByhyOUEq6hWG5X/G4cznhqY06wsmJIzjKHCP0Ml77B8yohlbNwtaVZJlVjiXJJTj8kO7w/bgqIkRUo2yLMaR84mMba5Q5tXK9xC4E5SmqXVhc2N9MzfX7R77rjn8aH9wRrZAfdI1nINt9/hqyhjIt6Ovz5RvjxTn+SqEAMgyUh2yZpCWhrjcr103as2yekAg1hhHO+9I2IdsNC3Mq8ZsQlAKEAIFCcSj/darx5/3WmL1wa2HT6q1dQgmAMgk4Vkmf9coCMPhWxq2sDai3omR4iJ/3yV32oPjfjwCHtZ1zTLXdL2UGzoJulHvTeJ/mRwOQrLlmk/rOyWR7w77nV6HUgBPXZZn8SrQTLHOrt0lndCdXAzINVkkPOdlw6YSL85oUouXNkzLklfhOhMMXDzD8dh++aK3t29uXbmxu6tY5mzw59n8klloMjNBUS7f3qk0tkVNE9XCb5Xcaqtn1hplBMFqNH6plNLlf1eFXtb9n1L51xNd3lT/aF//EGAA9B/iH5xEuF4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Venezuela',\n    code: '58',\n    iso: 'VE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwQzE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3ODRDOUJGQTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjBBMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjBCMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+suiZXgAAATpJREFUeNpi/H5RnIE2gImBZmDUaPoZzcigsJdGRrMQ8hUjw/ufDO9/+VTov33x/cfPv/LKfBvaLzDwsjAIcjAw/AdCEl0t+IGBhZHh02+Gm+9rpzt8/vHnz+9/v379+/HrrxA/2++//2XEOCsT9jGoCjAIsDG85iPFaOF3DF9+yyrxOZuLs7Iyffz2Z9X0KwyinCBPPP8WmqktxMf648ffo+ff3LnxgeGXOCkBwsLE8OkXz/c/Ho5SmblH3j/5yqDEx/AP7HkV/tVzr3MIsM2f5XDl9GuGDz8ZuEgKEOYX5rZSif6KWVUn/v3/z8DDxvD/P7Imhm9/GX7+ndRuvnbv04M7f5PiambBd//57rMIMIuI//vwi4EZQxnrXwZe5kdsQm/+fWZgeEvvxMd4XkR7NKOPGo0bAAQYAF2fdeRLtEqSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Vietnam',\n    code: '84',\n    iso: 'VN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3ODRDOUJGRDE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3ODRDOUJGRTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc4NEM5QkZCMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc4NEM5QkZDMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MKjEOwAAAg1JREFUeNrMVTtrFVEQnvPae3fvPryPRLmInQn2WkhMIYggGEHs0gqC2FhraSE2grW9VgF/hZWPQmMqCZFAQhTxZu8jZ3fPjLPXRiSsm5iAU83Oznz7zTdzzop37Tk4HpNwbFYXWkjATKAVojYZXTPPTYSZRXbyHSkbdHSsBWRj2b1lZ5YtO/x4dNAlXUgu5+2rVgBB8S+C8BcLKHZLHOZYkGh2XDDnZIj+aTfa1Ebgr1c6phIDa7OmDKRPyaXcn3deH7m2s5TJHkJI7GggDvpnkRNki8geiDWK4ocIL9j+wzGMIVvXqoO4JZlp/97k5LL1zjhIcPtJkL4xzH3aXT3Wokmc/uVpsH47IgPeYianrWBWFngLOYS4cTfaeNxiTO7vIGNEkAE1Ytx65b+f76YvmqLLIRAK2BmueBzcfOmbCFWL9hW6ckOwVCtoF+lA735gj9QsqlPITrpm0m+6lThhgPBwy8drloq4k8/csBDT6K0ZvTYQY++ajXpFMdxX4dp7nRcyvpJ5F+3gub96Pfl4M/n+LDDn7Yklm7m/nJ0qaG5WAbUX851H4eqdhIGkorX7yfaDqL2QG4mUVx7hiku1hA5JJ5R+MiZwKiglwj2wIxWdy3EoioHgwR7meuIyHInJV+nxxJi/mwYb0NRu77NSAQkNFXLr6jGyCOV6wW8QVKr4Z/A//RUcwn4KMAD6MNV+pBmzeAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Wallis and Futuna',\n    code: '681',\n    iso: 'WF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzU5MkY0Q0MxNzhDMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzU5MkY0Q0IxNzhDMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQTQyMEE3MkQyMkZFM0NBMzRDNzNGM0VCOTZCQjUzQ0UiIHN0UmVmOmRvY3VtZW50SUQ9IkE0MjBBNzJEMjJGRTNDQTM0QzczRjNFQjk2QkI1M0NFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5wahWgAAAsdJREFUeNrEVUtrE1EUPudOMpOkNcmExsRgGyr1USRYUOrKFFTQhXWl0YUoLizWhdS0ttBCpdWuqhY3RRFUFBSh+heUdm9pKbopupPYR5o0j2YmmXu8k1RR6bSlULwMw33M+e53vvudO9jcPDo7m+zrOxaPR3lRS504TTNfjKZDmE5KuQIxhK02BtvWbLSpz/7hTuVng4Rsmg7ZAtcr9O12KBWpUCBuAK4mRPkciCERYAWLSMjEGLpcwJg5bwUt+1VXFmyqRwxKYoMaP9u9y3B7MLUMRpEkBRr2wlyCUwkJyzCEaMdAEObnQOwqK1boOB1tNTj3uBXV6+Ai+Pt3k2MRWWqRGGifZ5Thh96uWzQ/DwYvS4MU3Jkde1+IXZL21IEiowVvpPoQSGwlo2czmsgY/TUk2SRuGGKxvl6KthSGH1S9eeluPfM7ZmVqZunwEbmny/71m/FxglTv2g5ZdNQs2n15X5CFw1gXBmcVygp3OKFk8MQP952+Hc8ep8+2pl+8qgRkxicWmiJKb7d36B5mMlzXLbUun/Va6YgUdN1IJKpjMZ5Mpa9eJr9qqw1nWqKu2z2+wUERZiwvmydpDW3ZSNhA00THfb0NQsH8xSs8n3PeH1E7O8QkL+ogSeuZbwND06p5WeNByiYFkhSJ/L2ytWoUrpJMgOyH8fS+BsfII+fYu+ypkxXd0WYDzrfCGjlJiFRbm5+cTh1vccY71Y6bZhWOjgrd0eV0x84xRTas0W3rCA2hUP7125W2a9X9/Z6BgUq9e9rbWZUzd+E85Z5DIGBytyK30BixwAaQHaXpKezt9g3dFSpzXjIvDiYxwKWnT7QbcXn/ATD0XxfA5qFR2EMn4nC0GZJJphXIhKCKyhQI8E+TmNfA5bAsdEvosrfNdzJJxeIf95zocBS28/lEGQOnLZmvQkdVLW3G6f/8CrYR+qcAAwC0wiFWD6ebGgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Western Sahara',\n    code: '212',\n    iso: 'EH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNTkyRjRDRjE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNTkyRjREMDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM1OTJGNENEMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM1OTJGNENFMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+f+9yRAAAAhJJREFUeNrElEFIlEEYht8Z/zWyRNiU2EoQIqJdyUjEkxcDD1qEBHaIwFMRRGQH9RIR1LFA8Fi0bODFi4fyWLGnCJMWkgo2aFeWbNEOq8uu/us/vaNjsLm7/cbu3wfPDDMM837zzseHMUDhf5DjMEvavBZ+wyFDvpLzHgpLyXGB+MgUeQhvQutuiX4nCTJKXpBWL4R11JE8mSc95DW5WEvhBmB1ZyFMAp9IPQlrB6RUDFQbWSoby1ifJLeVEpnBQQdra07FgonHFSIR98VVzgr9cpssMbuFmRn53u+XmelpYYwpIheNio/d3cLu6hJIpUqe+RP5t7/Qz9ynk7BtxIaG8KWvD3Y6XXQmMT6OAwMDyCWTeNfRgfTEBJx83l1xuanCTZ1AKgUUCsXJZbPYHwyisLyMnysrWE8kIHy+iveJOYD9A41lD5B1Mx9/9Bgtd0Z2nVl9OYtvw8NoC4dRHzgCq6UZda3H/k3YMf98mDSdPqcOTj1XCAVE2ZtefQDi7H/XLrly0Cq1qY08RAJkMiTw+b5/81koYFW8qffMNi5DRFnaDWahzD+eIBvkbj/wRDfwG6rqDeS3sGNaZ5C8bQJuXQFiZ7lIm5Ymqyts7VjbTI6Sp6eAm1eZiN5Y3Gvt70FYi7abR12/AET6zWLRVFeNQmRp9Xzj9itjndz5URtrdwk/OAl17zKLSpfxEjyLXwIMABpOQfz9h5ChAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Yemen',\n    code: '967',\n    iso: 'YE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNTkyRjREMzE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNTkyRjRENDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM1OTJGNEQxMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM1OTJGNEQyMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ACJHhgAAAE1JREFUeNpifK+t+59hAAATwwCBUYtHLaYZYPz///9HIM0HxPTKVoxA/IkFymBAouli+WjiohtgQUpU9Exc/xnpaOFoyTVq8TC3GCDAAFQ1DF5mtiLSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Zambia',\n    code: '260',\n    iso: 'ZM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTY2NjI2QzE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MTY2NjI2RDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNjY2MjZBMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgxNjY2MjZCMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+b9h8+AAAAXJJREFUeNrslLtKA0EUhr+ZzW7MbYkmMQoqVhZWilrb+Q4i2PgGPoCVlbVoY20r+AQigoKFlWDnhaAYMCYm0d3s7oyzwScYsBEPpzicA9/8/GdmxOQeFiE0sUMgySa4GgWRxFOI4TR00iKDVSQOhZCy4j5H5EGMH9F3CYa8fEAttkV3XGotDhrgc1CimmehzX6JCcFSl/V3jnK2aH/AY4U9wc4rh02KRaI6Kw3q79QLXPmc1RB2Xkvjr+TFZWTA8gfzfTZiyh+cCk5nufYpCFvVWpAIKgmhx8UUlyHVWx7GOZ7B7LQUpSu1RJsbEjnp0kyRj6gKTuZo5Sgq4oBEEtipNpKfS2yfZzdust1R/Rqrrebnkznkjc1Vdte4b/FliTbpMd/MLN5lGVNvStH5TLsw2WJaMx3RE0gbN0gNbeeMqapdVs++0uJnFBqeQ0emKfm1+Ef/o/8i2v57Gjj0PN139ZfUYgSRpP04Q2/44vvwLcAAr1qGyCgX8xUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Zimbabwe',\n    code: '263',\n    iso: 'ZW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTY2NjI3MDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MTY2NjI3MTE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNjY2MjZFMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgxNjY2MjZGMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WOc8GAAAAtBJREFUeNq0lmtIk1EYx/+7b7pJ2LxfKv1QqZVBEERfEsKCyi5ghqldmEk1urAuUBGYSRCChMrQkqAsM8IuokVRUeAFBmVhsVa6OWeba7rNy9bedzudN9KK+ra9f3jOC88D7++c55zzPEfQ2NBkO3xLo5LnAzmZcvjGAAjBuwSEyvCkH2U1xfiwcAC5eSK4RqUIBrkov2Av/aoCowQ7daXo9N1ESRngD8gwNUEjIp7Bs47a6mtwWzU4UU4QvYg6LPzA/wFzau924JV+PTQF75G1gzqmqUU49X+Bpz1vIXZFQ2a2YiAnD/pLB5Dtb0TFMhqMkWEyEIJYEGGwj7EjOJiLQAeBVTeGFY6vYOMTcf7cdbir9uMIQkifp4aZJRAREjlwiA6M8SRC1ssY0gJy0UZk9DykETHajGZ0bivA9o/vsCVVCchk4YOD7nHvtzM6lffuY4jzY5BS6YJEIoK92gnv/QVQSGVIqzwKY3E59BoN/M1XkaoUQiSXh0cmLOud6nxAPsVnEstmEGYwmcz0JRH/SAKx6UCMq5PITPdrMiv90+cEsXFcrsMzLtXcD1lqjrYUMv1SSkx31GS4PZ74ekEmnGdJiPxWi+ENgTohbLB4buXUFEvT4DTYwEg89PqEYDUBCUnZP2/RMLX6Q1qMNdThVBS92rGKsDI9B2bNk2BeuKFcIoGSxNEt8CDoFiImvQhdQ3a0FG7FJkMfipIpNUoRuVPNWkfhHzFBvmoxnQ3tEhIp4BHjYs0jWC5ocRAuZCnn4wvLFTLCT+XiZB4H6uprkWg5Bl0GdagV8DDBiFXP/4I7uj7jWWspCtf1YE0JdQS4veC5VjdfuQdL/y6crmDoYeOW/qs/C/gC03HPcS1u2+uwdx/XkaTwOgV/HD8eHgKm3iGUVO1GX2w3cjYAEw4FmAC/LxFB6402W0VTmcq/1oeVy2X4bheCCAn41g8BBgCi8X7r2R04cwAAAABJRU5ErkJggg=='\n  }\n];\n\nexport default FlagsList;\n","import classNames from 'classnames';\nimport React, {\n  ChangeEvent,\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent as ReactMouseEvent,\n  ReactNode,\n  Ref,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { Dropdown, DropdownElement, DropdownOption, DropdownOptionProps, DropdownSection } from '@/components/dropdown';\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\n\nimport { CountryPhoneProps } from './country-phone.model';\nimport './input-phone.css';\nimport { IconItem, IconSet } from '@/components/shared/icon-set/icon-set';\n\nimport FlagsList from './resources/config';\n\nconst separateCountryByCode = (list: CountryPhoneProps[]): CountryPhoneProps[] =>\n  list.flatMap((country: CountryPhoneProps) => {\n    const codes = country.code.split(', ').map((c) => c);\n    return codes.map((singleCode) => ({\n      ...country,\n      code: singleCode\n    }));\n  });\n\nconst flagsListByCode = separateCountryByCode(FlagsList);\n\nexport const PhoneCountryCodes = flagsListByCode.map((l) => l.code);\nexport type PhoneCountryCode = (typeof PhoneCountryCodes)[number];\nexport const PhoneCountryISOs = flagsListByCode.map((l) => l.iso);\nexport type PhoneCountryISO = (typeof PhoneCountryISOs)[number];\n\nexport interface InputPhoneElement extends HTMLInputElement {\n  iso: PhoneCountryISO;\n  code: PhoneCountryCode;\n}\n\nexport interface InputPhoneProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Define de initial country selected using the country ISO. Will override defaultCode prop.\n   */\n  defaultISO?: PhoneCountryISO;\n  /**\n   *  Define de initial country selected using the country phone code (without +). Will be overridden by defaultISO prop.\n   */\n  defaultCode?: PhoneCountryCode;\n  /**\n   * Alternative text that labels the list of country flag options of the dropdown list.\n   */\n  dropdownAriaLabel?: string;\n  /**\n   * Enable the search bar to filter items.\n   */\n  searchable?: BooleanProp;\n  /**\n   * Placeholder text for input search bar.\n   */\n  searchInputPlaceholder?: string;\n  /**\n   * Accessible text for the input search bar.\n   */\n  searchInputAriaLabel?: string;\n  /**\n   *  Text to show when filtering presents no results.\n   */\n  searchNoResultsText?: string;\n  /**\n   *  Number of visible items to display in the DropdownList. Remaining items will be accessible via scroll bar.\n   */\n  visibleCount?: number;\n  /**\n   *  Callback to run whenever the input value changes.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n  /**\n   *  Callback to run whenever the country dropdown value changes.\n   */\n  onCountryChange?: (country: CountryPhoneProps) => void;\n  /**\n   *  allow you to say what is the acronym to Direct Dialing In, the default is DDI\n   */\n  acronymForDirectDialing?: string;\n  /**\n   *  Use the given custom countries list instead of the default one (must be in the correct format).\n   */\n  customCountriesList?: CountryPhoneProps[];\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputPhone: FC<InputPhoneProps> = ({\n  ref = null,\n  label,\n  defaultISO,\n  defaultCode,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  className = '',\n  searchInputAriaLabel,\n  searchInputPlaceholder,\n  searchNoResultsText,\n  visibleCount,\n  required = true,\n  searchable,\n  dropdownAriaLabel,\n  acronymForDirectDialing = 'DDI',\n  customCountriesList,\n  hasHelperText,\n  helperText,\n  onChange,\n  onCountryChange,\n\n  ...props\n}) => {\n  const internalCountriesList = useMemo(() => {\n    return customCountriesList ? separateCountryByCode(customCountriesList) : flagsListByCode;\n  }, [customCountriesList]);\n\n  const computeCountry = useCallback(() => {\n    let result: CountryPhoneProps = internalCountriesList[0];\n\n    const searchForProp = defaultISO ?? defaultCode;\n\n    if (searchForProp) {\n      result =\n        internalCountriesList.find((country) => {\n          if (defaultISO) {\n            return country.iso.toLocaleLowerCase() === defaultISO.toLocaleLowerCase() && (!defaultCode || country.code === defaultCode);\n          } else {\n            return country.code === defaultCode;\n          }\n        }) ?? result;\n    }\n\n    return result;\n  }, [defaultISO, defaultCode, internalCountriesList]);\n\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const dropdownRef = useRef<DropdownElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const [currentCountry, setCurrentCountry] = useState<CountryPhoneProps>(computeCountry);\n\n  //  Necessary to override the default initial value and currentCountry in case of initial code or iso values changed\n  useEffect(() => {\n    setCurrentCountry(computeCountry());\n  }, [defaultISO, defaultCode, internalCountriesList, computeCountry]);\n\n  useExpandedRef<InputPhoneElement>(\n    ref as Ref<InputPhoneElement>,\n    inputRef,\n    {\n      iso: currentCountry.iso,\n      code: currentCountry.code\n    } as InputPhoneElement,\n    [propsClone, inputRef.current, currentCountry]\n  );\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    if (wrapperRef.current?.contains(document.activeElement)) {\n      inputRef.current?.focus();\n    }\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n    dropdownRef.current?.first();\n  };\n\n  const onDropdownChange = (options: DropdownOptionProps[]) => {\n    if (!options.length) return;\n\n    const [selectedISO, selectedCode] = options[0].value.split('|');\n\n    const selectedCountry = internalCountriesList.find((f) => f.iso === selectedISO && f.code === selectedCode);\n\n    if (selectedCountry) {\n      setCurrentCountry(selectedCountry);\n      onCountryChange?.(selectedCountry);\n    }\n  };\n\n  const handleInputKeydownCapture = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const keysWhitelist = [\n      'Enter',\n      'NumpadEnter',\n      'Tab',\n      'ArrowUp',\n      'ArrowDown',\n      'ArrowLeft',\n      'ArrowRight',\n      'Backspace',\n      'Delete',\n      'Home',\n      'End',\n      'KeyC',\n      'KeyV',\n      'KeyX',\n      'KeyA'\n    ];\n\n    if (keysWhitelist.indexOf(evt.code) >= 0) {\n      return;\n    }\n\n    const isNumeric = /\\d/.test(evt.key);\n\n    if (!isNumeric) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleInputChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n\n    setHasValue(value.length > 0);\n\n    onChange?.(evt);\n  };\n\n  const toggleVisibility = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const handleDropdownControlKeydown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (propsClone.disabled || propsClone.readOnly) {\n      return;\n    }\n\n    const code = evt.code;\n\n    if (code === 'Escape' && dropdownRef.current?.visibility) {\n      dropdownRef.current.hide();\n    }\n\n    if (code === 'Enter' || code === 'Space' || code === 'NumpadEnter') {\n      toggleVisibility();\n    }\n  };\n\n  const handleDropdownControlClick = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (propsClone.disabled || propsClone.readOnly) {\n      return;\n    }\n\n    if (typeof evt.detail === 'number' && evt.detail === 0) {\n      //  EVENT DETAIL IS THE NUMBER OF CLICKS. KEYBOARD DOES NOT ADD A CLICK COUNTER.\n      //  KEYBOARD IS HANDLED ON KEYDOWN\n      return;\n    }\n\n    toggleVisibility();\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (!dropdownRef.current?.visibility) {\n        return;\n      }\n\n      if (!wrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  const wrapperClassNames = classNames('agora-input-phone', className, darkModeClass);\n\n  const inputWrapperClassNames = classNames('input-phone-wrapper', darkModeClass, {\n    'has-value': hasValue,\n    'disabled': propsClone.disabled,\n    'readonly': propsClone.readOnly,\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const labelClasses = classNames('input-phone-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-phone-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-phone-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n      {/* Label */}\n      {label && !stringToBoolean(hideLabel) && (\n        <label htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      )}\n\n      {/* Input wrapper */}\n      <div className={inputWrapperClassNames}>\n        <button\n          type=\"button\"\n          className=\"country-dropdown-control\"\n          ref={buttonRef}\n          tabIndex={propsClone.disabled || propsClone.readOnly ? -1 : 0}\n          onClick={handleDropdownControlClick}\n          onKeyDown={handleDropdownControlKeydown}\n          role=\"combobox\"\n          aria-controls={`${propsClone.id}-dropdown-container`}\n          aria-expanded={isDropdownVisible}\n          aria-haspopup=\"listbox\"\n          aria-required={isRequired}\n          aria-label={`${acronymForDirectDialing} ${currentCountry?.country} +${currentCountry?.code}`}\n          disabled={propsClone.disabled}\n        >\n          <img className=\"shadow-center-lower mr-8\" src={`${currentCountry.flag}`} alt={currentCountry.country} width={36} aria-hidden />\n          <IconSet state={isDropdownVisible ? 'active' : 'default'} className={`icon-container ${isDropdownVisible ? 'icon-active' : ''}`}>\n            <IconItem aria-hidden state=\"default\" name=\"agora-solid-arrow-down\" />\n            <IconItem aria-hidden state=\"active\" name=\"agora-solid-arrow-down\" />\n          </IconSet>\n        </button>\n\n        <div className=\"input-text-wrapper\">\n          <div className=\"country-code\" id={`input-phone-${propsClone.id}-country-code`}>\n            <span>(+{currentCountry?.code})</span>\n            <span className=\"sr-only\" aria-live=\"polite\">{`${currentCountry?.country}`}</span>\n          </div>\n\n          <input\n            {...propsClone}\n            ref={inputRef}\n            type=\"tel\"\n            id={propsClone.id}\n            className=\"input-text\"\n            disabled={propsClone.disabled}\n            readOnly={propsClone.readOnly}\n            required={isRequired}\n            aria-invalid={stringToBoolean(hasError)}\n            aria-busy={stringToBoolean(hasFeedback) && feedbackState === 'loading'}\n            aria-disabled={stringToBoolean(propsClone.disabled)}\n            aria-required={isRequired}\n            aria-describedby={[`input-phone-${propsClone.id}-country-code`, inputAriaDescribedBy].filter(Boolean).join(' ')}\n            onChange={handleInputChange}\n            onKeyDownCapture={handleInputKeydownCapture}\n          />\n        </div>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            onHide={onHide}\n            onShow={onShow}\n            onChange={onDropdownChange}\n            type=\"text\"\n            searchable={searchable}\n            searchAriaLabel={searchInputAriaLabel}\n            searchPlaceholder={searchInputPlaceholder}\n            noSearchResults={searchNoResultsText}\n            optionsVisible={visibleCount}\n            aria-label={dropdownAriaLabel}\n            hideSectionNames\n            darkMode={darkMode}\n          >\n            <DropdownSection label=\"phones\" name={`input-phone-${propsClone.id}-countries-dropdown-section`}>\n              {internalCountriesList.map((country, index) => {\n                const optionKey = `input-phone-${propsClone.id}-countries-dropdown-section-${country.iso}-${country.code}-${index}`;\n                const isSelected = country.code === currentCountry.code;\n\n                return (\n                  <DropdownOption\n                    key={optionKey}\n                    value={`${country.iso}|${country.code}`}\n                    selected={isSelected}\n                    hasIcon\n                    icon={country.flag}\n                    disabled={isSelected}\n                  >{`(+${country.code}) ${country.country}`}</DropdownOption>\n                );\n              })}\n            </DropdownSection>\n          </Dropdown>\n        </div>\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-phone-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-phone-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputPhone };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, MouseEvent, ReactNode, Ref, useEffect, useId, useRef, useState } from 'react';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\n\nimport './input-range.css';\n\nexport type RangeType = 'single' | 'double';\n\nexport interface InputRangeProps extends Omit<ComponentProps<'input'>, 'value' | 'onChange'> {\n  /**\n   *  Input label text.\n   */\n  label?: string;\n  /**\n   *  Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  The type of the range (single or double).\n   */\n  type?: RangeType;\n  /**\n   *  Disables the input range.\n   */\n  disabled?: boolean;\n  /**\n   *  The value or values for the input range. It can be a number array with 1 or 2 positions according tp the type specified.\n   */\n  value?: number[];\n  /**\n   *  The minimum value to accept for this input. It does not allow the insertion of values lower than this minimum value.\n   *  If a value is specified for min isn't a valid number, the input has no minimum value.\n   *  This value must be less than or equal to the value of the **max** attribute.\n   */\n  min: number | string;\n  /**\n   *  The maximum value to accept for this input. It does not allow the insertion of values greater than this max value.\n   *  If the value of the max attribute isn't a number, then the element has no maximum value.\n   *  This value must be greater than or equal to the value of the **min** attribute.\n   */\n  max: number | string;\n  /**\n   *  Custom onChange event handler for double range type.\n   *  Will be called with an array of values.\n   */\n  onChange?: (values: number[]) => void;\n  /**\n   *  Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   *  Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   *  Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   *  Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   *  Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nexport interface InputRangeElement extends HTMLDivElement {\n  sliders: HTMLInputElement[];\n}\n\nconst InputRange: FC<InputRangeProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  type = 'single',\n  disabled,\n\n  value = [0, 0],\n\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  hasHelperText,\n  helperText,\n\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const [currentVal, setCurrentVal] = useState<number[]>([value[0], value[1]]);\n\n  const prevPropValue = useRef<number[]>(value);\n\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const innerRefs1 = useRef<HTMLInputElement>(null);\n  const innerRefs2 = useRef<HTMLInputElement>(null);\n\n  useExpandedRef<InputRangeElement>(\n    ref as Ref<InputRangeElement>,\n    containerRef,\n    {\n      sliders: type === 'single' ? [innerRefs1.current] : [innerRefs1.current, innerRefs2.current]\n    } as InputRangeElement,\n    [type, containerRef.current, innerRefs1.current, innerRefs2.current]\n  );\n\n  useEffect(() => {\n    if (prevPropValue.current[0] !== value[0] || prevPropValue.current[1] !== value[1]) {\n      const values = [...value];\n\n      if (type === 'single') {\n        values[1] = Number(propsClone.max);\n      }\n\n      setCurrentVal(values);\n\n      prevPropValue.current = values;\n    }\n  }, [value]);\n\n  const handleRangeChange = (values: number[]): void => {\n    const [firstValue, secondValue] = values;\n\n    if (type === 'single') {\n      setCurrentVal(values);\n    }\n\n    if (type === 'double') {\n      if (firstValue > secondValue || secondValue < firstValue || firstValue === secondValue) {\n        return;\n      }\n      setCurrentVal(values);\n    }\n\n    onChange?.(values);\n  };\n\n  const handleMouseUp = () => {\n    innerRefs1.current?.classList.remove('z-[2]');\n    innerRefs2.current?.classList.remove('z-[2]');\n  };\n\n  const handleMouseDown = (evt: MouseEvent<HTMLInputElement>) => {\n    handleMouseUp();\n\n    const target = evt.target as HTMLInputElement;\n    target.classList.add('z-[2]');\n  };\n\n  const containerClassNames = classNames('agora-input-range', {\n    'has-label': !stringToBoolean(hideLabel),\n    'has-error': stringToBoolean(hasError)\n  });\n\n  const [currentBgVal, setCurrentBgVal] = useState<string>('#FFFFFF');\n\n  useEffect(() => {\n    const primaryColor = getComputedStyle(document.documentElement).getPropertyValue('--color-primary-600');\n    const secondaryColor = getComputedStyle(document.documentElement).getPropertyValue('--color-neutral-200');\n    const min = Number(propsClone.min);\n    const max = Number(propsClone.max);\n\n    if (type === 'single' && !disabled) {\n      let percent = ((currentVal[0] - min) / (max - min)) * 100;\n      percent = Math.min(percent, 100); // Round to 100% if the value is greater than the maximum\n      setCurrentBgVal(`linear-gradient(to right, ${primaryColor} ${percent}%, ${secondaryColor} ${percent}%, ${secondaryColor}  100%)`);\n      return;\n    }\n\n    if (type === 'double' && !disabled) {\n      let percent0 = ((currentVal[0] - min) / (max - min)) * 100;\n      let percent1 = ((currentVal[1] - min) / (max - min)) * 100;\n      percent0 = Math.min(percent0, 100); // Round to 100% if the value is greater than the maximum\n      percent1 = Math.min(percent1, 100); // Round to 100% if the value is greater than the maximum\n\n      setCurrentBgVal(\n        `linear-gradient(to right, ${secondaryColor} ${percent0}%, ${primaryColor} ${percent0}%, ${primaryColor} ${percent1}%, ${secondaryColor} ${percent1}%)`\n      );\n      return;\n    }\n\n    setCurrentBgVal(secondaryColor);\n  }, [propsClone]);\n\n  const RangeStyle = {\n    background: currentBgVal\n  };\n\n  const RailClassName = classNames('rail absolute w-full h-[4px] left-[0px] z-[0]');\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-range-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-range-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div className={containerClassNames} ref={containerRef}>\n      <label hidden={stringToBoolean(hideLabel)} htmlFor={`${propsClone.id}-0`} className=\"input-range-label\">\n        {label}\n      </label>\n\n      <div className=\"rail-container\">\n        <div className={RailClassName} style={RangeStyle} />\n        <input\n          {...props}\n          className=\"inner-input-range\"\n          type=\"range\"\n          id={`${propsClone.id}-0`}\n          disabled={disabled}\n          onChange={(event) => handleRangeChange([Number(event.target.value), currentVal[1]])}\n          value={currentVal[0]}\n          ref={innerRefs1}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          onMouseDown={handleMouseDown}\n          onMouseUp={handleMouseUp}\n        />\n\n        <input\n          {...props}\n          className=\"inner-input-range\"\n          hidden={type === 'single'}\n          type=\"range\"\n          id={`${propsClone.id}-1`}\n          disabled={disabled}\n          onChange={(event) => handleRangeChange([currentVal[0], Number(event.target.value)])}\n          value={currentVal[1]}\n          ref={innerRefs2}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          onMouseDown={handleMouseDown}\n          onMouseUp={handleMouseUp}\n        />\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback id={`input-range-${propsClone.id}-feedback`} feedbackState={feedbackState} feedbackText={feedbackText} className=\"mt-0\" />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-range-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          className=\"mt-0\"\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputRange };\n","import { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\nimport './input-search.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { callbackWith } from '@/components/input-date/input-date';\n\nexport interface InputSearchProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputSearch: FC<InputSearchProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  feedbackText,\n  hasIcon,\n  icon,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-search-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': !!propsClone.disabled,\n        'has-error': stringToBoolean(hasError),\n\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // search input component classes\n      inputClasses: classNames(\n        'agora-input-search',\n        'bg-transparent',\n        {\n          'has-leading-icon': hasIcon, // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-search-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-search-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-search-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Search input wrapper */}\n      <div className=\"input-wrapper flex relative items-center rounded-4 bg-white z-[1]\">\n        <input\n          {...propsClone}\n          type=\"search\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n          onKeyDown={callbackWith(setIconState, 'active')}\n          onKeyUp={callbackWith(setIconState, 'default')}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && (\n          <div className={leadingIconWrapperClasses}>\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden className=\"leading-icon-hover\" state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n\n        <div className=\"search-icon bg-transparent\">\n          <IconSet state={currentIconState}>\n            <IconItem state=\"default\" name=\"agora-line-search\" aria-hidden className=\"icon-search-default\" />\n            <IconItem state=\"hover\" name=\"agora-solid-search\" aria-hidden className=\"icon-search-hover\" />\n          </IconSet>\n        </div>\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-search-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-search-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputSearch };\n","import { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  ReactNode,\n  Ref,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\n\nimport { Dropdown, DropdownElement, DropdownOptionProps, DropdownSectionProps, DropdownType } from '@/components/dropdown';\nimport { Pill } from '@/components/pill';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { callbackWith } from '../input-date/input-date';\nimport './input-select.css';\n\nexport interface InputSelectRef {\n  /**\n   * Array containing the selected options in the dropdown.\n   */\n  selectedOptions: DropdownOptionProps[];\n  /**\n   * Reset the selection state within the component.\n   */\n  clearSelectedOptions: () => void;\n}\n\nconst getEnabledItemsCount = (children: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]) => {\n  let count = 0;\n\n  Children.forEach(children, (sectionChild) => {\n    if (isValidElement<DropdownSectionProps>(sectionChild)) {\n      Children.forEach(sectionChild.props.children, (optionChild) => {\n        if (isValidElement<DropdownOptionProps>(optionChild)) {\n          count = optionChild.props.disabled ? count : count + 1;\n        }\n      });\n    }\n  });\n\n  return count;\n};\n\nconst getEnabledOptions = (children: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]) => {\n  const options = [] as DropdownOptionProps[];\n\n  Children.forEach(children, (sectionChild) => {\n    if (isValidElement<DropdownSectionProps>(sectionChild)) {\n      Children.forEach(sectionChild.props.children, (optionChild) => {\n        if (isValidElement<DropdownOptionProps>(optionChild) && !optionChild.props.disabled) {\n          options.push(optionChild.props);\n        }\n      });\n    }\n  });\n\n  return options;\n};\n\nconst getSelectedData = (children: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]) => {\n  const newSelectedData = [] as DropdownOptionProps[];\n\n  Children.forEach(children, (sectionChild) => {\n    if (isValidElement<DropdownSectionProps>(sectionChild)) {\n      Children.forEach(sectionChild.props.children, (optionChild) => {\n        if (isValidElement<DropdownOptionProps>(optionChild)) {\n          if (optionChild.props.selected) {\n            newSelectedData.push(optionChild.props);\n          }\n        }\n      });\n    }\n  });\n\n  return newSelectedData;\n};\n\nexport interface InputSelectProps extends Omit<ComponentProps<'select'>, 'options' | 'onChange' | 'ref'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Input placeholder.\n   */\n  placeholder?: string;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Pill label to be draw if specified.\n   */\n  pillLabel?: ReactNode;\n  /**\n   * Alternative text for the dropdown that will be rendered.\n   */\n  dropdownAriaLabel?: string;\n  /**\n   *  Number of visible items to display in the DropdownList. Remaining items will be accessible via scroll bar.\n   */\n  visibleCount?: number;\n  /**\n   *  Toggles visibility on section names. It also removes the name from accessibility tree.\n   */\n  hideSectionNames?: BooleanProp;\n  /**\n   *   Event triggered whenever selected value or values changes.\n   */\n  onChange?: (options: DropdownOptionProps[]) => void;\n  /**\n   *  Select All item text to be rendered.\n   */\n  selectAllLabel?: string;\n  /**\n   *  Enable the search bar to filter items.\n   */\n  searchable?: BooleanProp;\n  /**\n   *  Placeholder text for input search bar.\n   */\n  searchInputPlaceholder?: string;\n  /**\n   *  Accessible text for the input search bar.\n   */\n  searchInputAriaLabel?: string;\n  /**\n   *  Event triggered whenever the input search value changes.\n   */\n  onSearchInputChange?: (value: string) => void;\n  /**\n   *  Text to show when filtering presents no results.\n   */\n  searchNoResultsText?: string;\n  /**\n   * Text placed as Select all options item\n   */\n  allSelectedLabel?: string;\n  /**\n   * Initial template structure for multiple items selections text output\n   */\n  pluralSelectedPlaceholder?: string;\n  /**\n   * Type of options to render\n   */\n  type?: DropdownType;\n  /**\n   * Section list of dropdown options to render.\n   */\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[];\n  /**\n   * React ref object to the Input Select.\n   */\n  ref?: Ref<InputSelectRef>;\n  /**\n   * Defines helper text.\n   */\n  helperText?: string;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputSelect: FC<InputSelectProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  placeholder = '',\n  pluralSelectedPlaceholder = '',\n  visibleCount = 4,\n  hideSectionNames,\n  hasIcon,\n  icon,\n  pillLabel,\n  hasFeedback,\n  feedbackText,\n  feedbackState,\n  errorFeedbackText,\n  darkMode,\n  hasError,\n  required = true,\n  onChange,\n  searchable,\n  selectAllLabel,\n  allSelectedLabel = '',\n  searchInputPlaceholder,\n  searchInputAriaLabel,\n  searchNoResultsText,\n  children = [],\n  onSearchInputChange,\n  type = 'text',\n  dropdownAriaLabel,\n  hasHelperText,\n  helperText,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const controlWrapperRef = useRef<HTMLDivElement>(null);\n\n  const controlRef = useRef<HTMLDivElement>(null);\n\n  const dropdownRef = useRef<DropdownElement>(null);\n\n  //  INITIALIZE SELECTED VALUES\n  const [selectedData, setSelectedData] = useState<DropdownOptionProps[]>([]);\n\n  const isRequired = props.disabled ? false : required;\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled ? iconState : 'default';\n\n  const resetSelection = () => {\n    setSelectedData([]);\n    onChange?.([]);\n  };\n\n  useImperativeHandle(ref, () => {\n    return {\n      selectedOptions: selectedData,\n      clearSelectedOptions: resetSelection\n    } as InputSelectRef & HTMLSelectElement;\n  }, [selectedData]);\n\n  const mainWrapperClasses = classNames(\n    'agora-input-select',\n    { dark: stringToBoolean(darkMode) },\n    {\n      'disabled': stringToBoolean(propsClone.disabled),\n      'has-value': selectedData.length > 0,\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    }\n  );\n\n  const controlClasses = classNames('agora-input-select-control', {\n    'is-overlay-open': isDropdownVisible,\n    'has-leading-icon': hasIcon // allowing only solid family icon\n  });\n\n  useEffect(() => {\n    const selection = getSelectedData(children);\n    setSelectedData(selection);\n  }, [children]);\n\n  useLayoutEffect(() => {\n    if (isDropdownVisible) dropdownRef.current?.first();\n  }, [isDropdownVisible]);\n\n  const enabledItemsCount = getEnabledItemsCount(children);\n\n  const stringOutputMemo = useMemo(() => {\n    const allItemsSelected = selectedData.length === enabledItemsCount;\n\n    //  Nothing selected\n    if (selectedData.length < 1) {\n      return placeholder;\n    }\n\n    //  Exactly one option selected\n    if (selectedData.length === 1) {\n      return selectedData[0].children?.toString() ?? '';\n    }\n\n    //  More than one option selected but not all selected\n    if (!allItemsSelected) {\n      return `${selectedData.length} ${pluralSelectedPlaceholder}`;\n    }\n\n    //  All options selected\n    return allSelectedLabel;\n  }, [placeholder, pluralSelectedPlaceholder, allSelectedLabel, selectedData]);\n\n  const onClickLabel = () => {\n    if (!propsClone.disabled) {\n      controlRef.current?.focus();\n    }\n  };\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    controlRef.current?.focus();\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n  };\n\n  const onDropDownChange = (values: DropdownOptionProps[]) => {\n    setSelectedData(values);\n    onChange?.(values);\n  };\n\n  const toggleDropdown = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const onDropDownClickHandler = () => {\n    toggleDropdown();\n  };\n\n  const onDropdownControlKeyDownHandler = (evt: KeyboardEvent<HTMLDivElement>) => {\n    const code = evt.code;\n    if (propsClone.disabled) return;\n\n    if (code === 'Enter' || code === 'NumpadEnter' || code === 'Space') {\n      toggleDropdown();\n    }\n\n    if ((code === 'ArrowDown' || code === 'ArrowUp') && !isDropdownVisible) {\n      evt.preventDefault();\n\n      const enabledOptions = getEnabledOptions(children);\n      if (enabledOptions.length === 0) return;\n\n      const currentIndex = enabledOptions.findIndex((opt) => selectedData[0] && opt.value === selectedData[0].value);\n\n      let nextIndex: number;\n\n      if (code === 'ArrowDown') {\n        nextIndex = currentIndex < enabledOptions.length - 1 ? currentIndex + 1 : currentIndex;\n      } else {\n        nextIndex = currentIndex > 0 ? currentIndex - 1 : 0;\n      }\n\n      if (nextIndex !== currentIndex || selectedData.length === 0) {\n        const nextOption = enabledOptions[nextIndex >= 0 ? nextIndex : 0];\n        setSelectedData([nextOption]);\n        onChange?.([nextOption]);\n      }\n    }\n\n    setIconState('active');\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (dropdownRef.current?.visibility && !controlWrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const labelClasses = classNames('agora-input-select-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-select-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-select-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div className={mainWrapperClasses} hidden={!!propsClone.hidden}>\n      {!stringToBoolean(hideLabel) && (\n        <label\n          id={`agora-input-select-${propsClone.id}-control-label`}\n          htmlFor={`agora-input-select-${propsClone.id}-control`}\n          className={labelClasses}\n          onClickCapture={onClickLabel}\n        >\n          {label}\n        </label>\n      )}\n\n      <div className=\"agora-input-select-control-wrapper\" ref={controlWrapperRef}>\n        <div\n          ref={controlRef}\n          id={`agora-input-select-${propsClone.id}-control`}\n          aria-labelledby={`agora-input-select-${propsClone.id}-control-label`}\n          role=\"combobox\"\n          aria-invalid={stringToBoolean(hasError)}\n          aria-disabled={stringToBoolean(propsClone.disabled)}\n          aria-expanded={isDropdownVisible}\n          aria-controls={propsClone.id}\n          aria-required={isRequired}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          className={controlClasses}\n          tabIndex={propsClone.disabled ? -1 : 0}\n          onClick={onDropDownClickHandler}\n          onKeyDown={onDropdownControlKeyDownHandler}\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n          onKeyUp={callbackWith(setIconState, 'default')}\n        >\n          <div className=\"content\">\n            {hasIcon && (\n              <div className=\"input-icon input-leading-icon\">\n                <IconSet state={currentIconState}>\n                  <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name={icon ?? 'no-icon'} />\n                  <IconItem aria-hidden className=\"leading-icon-hover\" state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n                  <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name={icon ?? 'no-icon'} />\n                </IconSet>\n              </div>\n            )}\n\n            <span className=\"selected-text\">{stringOutputMemo}</span>\n\n            {pillLabel && (\n              <Pill size=\"large\" appearance=\"outline\" variant=\"neutral\" darkMode={darkMode}>\n                {pillLabel}\n              </Pill>\n            )}\n          </div>\n\n          <div className=\"indicator\">\n            <IconSet state={isDropdownVisible ? 'active' : 'default'}>\n              <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name=\"agora-solid-arrow-down\" />\n              <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name=\"agora-solid-arrow-up\" />\n            </IconSet>\n          </div>\n        </div>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            id={propsClone.id}\n            aria-label={dropdownAriaLabel}\n            type={type}\n            selectAllLabel={selectAllLabel}\n            optionsVisible={visibleCount}\n            hideSectionNames={hideSectionNames}\n            searchable={searchable}\n            searchAriaLabel={searchInputAriaLabel}\n            searchPlaceholder={searchInputPlaceholder}\n            noSearchResults={searchNoResultsText}\n            onSearchChange={onSearchInputChange}\n            onChange={onDropDownChange}\n            onHide={onHide}\n            onShow={onShow}\n            darkMode={darkMode}\n          >\n            {children}\n          </Dropdown>\n        </div>\n        {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n      </div>\n\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-select-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-select-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputSelect };\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-text.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { callbackWith } from '../input-date/input-date';\n\nexport interface InputTextProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputText: FC<InputTextProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  feedbackText,\n  hasIcon,\n  icon,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames(\n        'agora-input-text-wrapper',\n        { dark: stringToBoolean(darkMode) },\n        {\n          'flex flex-col': !propsClone.hidden,\n          'input-disabled': !!propsClone.disabled,\n\n          'has-error': stringToBoolean(hasError),\n          'has-feedback': stringToBoolean(hasFeedback),\n          ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n        }\n      ),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-text',\n        {\n          'has-leading-icon': hasIcon, // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-text-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-text-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-text-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div\n        role=\"presentation\"\n        className=\"input-wrapper flex relative items-center\"\n        onMouseEnter={callbackWith(setIconState, 'hover')}\n        onMouseLeave={callbackWith(setIconState, 'default')}\n        onKeyDown={callbackWith(setIconState, 'active')}\n        onKeyUp={callbackWith(setIconState, 'default')}\n      >\n        <input\n          {...propsClone}\n          type=\"text\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-busy={stringToBoolean(hasFeedback) && feedbackState === 'loading'}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && (\n          <div className={leadingIconWrapperClasses}>\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-text-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-text-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputText };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-textarea.css';\n\nexport interface InputTextAreaProps extends ComponentProps<'textarea'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines if the char counter on right corner should or should not be visible.\n   */\n  showCharCounter?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputTextArea: FC<InputTextAreaProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  showCharCounter,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  onChange: onChangeFromProps,\n  value: valueFromProps,\n  defaultValue,\n  ...props\n}) => {\n  // Controlled and Uncontrolled management\n  const isControlled = typeof valueFromProps != 'undefined';\n  const hasDefaultValue = typeof defaultValue != 'undefined';\n\n  const [internalValue, setInternalValue] = useState(hasDefaultValue ? defaultValue : '');\n\n  const value = isControlled ? valueFromProps : internalValue;\n\n  // Overrides onChange\n  const onChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n    // When the user types, calls onChangeFromProps if it exists.\n    // Do this even if there is no value from props (and the component is uncontrolled.)\n    if (onChangeFromProps) {\n      onChangeFromProps(e);\n    }\n\n    // If the component is uncontrolled, updates the internal value.\n    if (!isControlled) {\n      setInternalValue(e.target.value);\n    }\n  };\n\n  const generatedId = useId();\n\n  const propsClone = { ...props, value };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  propsClone.rows = Math.max(propsClone.rows ?? 0, 3);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLTextAreaElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange(evt);\n  };\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-textarea-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': propsClone.disabled,\n        'has-error': stringToBoolean(hasError),\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames('input-label-wrapper', 'flex', 'items-end', {\n        'mb-8': label && !stringToBoolean(hideLabel),\n        'justify-end': !label || stringToBoolean(hideLabel),\n        'justify-between': label && !stringToBoolean(hideLabel)\n      }),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-textarea',\n        {\n          'has-value': hasValue\n        },\n        className\n      )\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-textarea-label', darkModeClass);\n\n  const charCounterClasses = classNames('char-counter', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-textarea-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-textarea-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label & Hint Text Wrapper */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div className=\"input-wrapper flex relative items-center\">\n        <textarea\n          {...propsClone}\n          className={inputClasses}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          required={isRequired}\n          ref={ref}\n          onChange={handleChangeEvent}\n          value={value}\n        />\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedbacks && CharCounter */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError) || stringToBoolean(showCharCounter)) && (\n        <div className=\"flex justify-between\">\n          <div>\n            {/* Feedback */}\n            {stringToBoolean(hasFeedback) && feedbackText && (\n              <Feedback\n                id={`input-textarea-${propsClone.id}-feedback`}\n                feedbackState={feedbackState}\n                feedbackText={feedbackText}\n                darkMode={stringToBoolean(darkMode)}\n              />\n            )}\n\n            {/* Error Feedback */}\n            {stringToBoolean(hasError) && errorFeedbackText && (\n              <Feedback\n                id={`input-textarea-${propsClone.id}-error-feedback`}\n                feedbackState=\"danger\"\n                feedbackText={errorFeedbackText}\n                darkMode={stringToBoolean(darkMode)}\n              />\n            )}\n          </div>\n\n          {/* CharCounter */}\n          {stringToBoolean(showCharCounter) && (\n            <div className={charCounterClasses}>\n              <span>{`${value?.toString()?.length ?? 0}`}</span>\n              {propsClone.maxLength && <span>{` / ${propsClone.maxLength}`}</span>}\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport { InputTextArea };\n","import { TimeFormat, TimePeriod } from '@/models';\n\nexport const FULL_TIME_TEXT_REGEX_WITH_PERIOD = /^(\\d{2}):(\\d{2})\\s(AM|PM)$/;\nexport const FULL_TIME_TEXT_REGEX_WITHOUT_PERIOD = /^(\\d{2}):(\\d{2})$/;\n\nexport const DEFAULT_PLACEHOLDER = {\n  HOUR: 'hh',\n  MINUTE: 'mm',\n  PERIOD: 'aa'\n};\n\nexport const timePeriod = {\n  am: 'am',\n  pm: 'pm'\n};\n\nexport const startTime = {\n  minute: '00',\n  period: timePeriod.am\n};\n\nexport const formatHour = (hour: number | string, minHour: number, maxHour: number) => {\n  let numericValue = parseInt(hour as string, 10);\n\n  if (isNaN(numericValue)) {\n    numericValue = minHour;\n  } else if (numericValue < minHour) {\n    numericValue = minHour;\n  } else if (numericValue > maxHour) {\n    numericValue = maxHour;\n  }\n\n  return numericValue.toString().padStart(2, '0');\n};\n\nexport const formatMinute = (minute: number | string, minMinute: number, maxMinute: number) => {\n  let numericValue = parseInt(minute as string, 10);\n\n  if (isNaN(numericValue)) {\n    numericValue = minMinute;\n  } else if (numericValue < minMinute) {\n    numericValue = minMinute;\n  } else if (numericValue > maxMinute) {\n    numericValue = maxMinute;\n  }\n\n  return numericValue.toString().padStart(2, '0');\n};\n\nexport const formatFullTime = (\n  hasPeriod: boolean,\n  selectedHour: number | string,\n  selectedMinute: number | string,\n  selectedPeriod: TimePeriod\n) => `${selectedHour}:${selectedMinute}${hasPeriod ? ` ${selectedPeriod?.toUpperCase()}` : ''}`;\n\nexport const parseFullTime = (hasPeriod: boolean, fullTimeText: string, hourFormat: TimeFormat) => {\n  let hour = hourFormat === '12' ? '12' : '00';\n  let minute = startTime.minute;\n  let period = startTime.period;\n\n  const match = hasPeriod ? FULL_TIME_TEXT_REGEX_WITH_PERIOD.exec(fullTimeText) : FULL_TIME_TEXT_REGEX_WITHOUT_PERIOD.exec(fullTimeText);\n\n  if (match) {\n    hour = match[1];\n    minute = match[2];\n    period = match[3];\n  }\n\n  return {\n    selectedHour: parseInt(hour, 10).toString().padStart(2, '0'),\n    selectedMinute: parseInt(minute, 10).toString().padStart(2, '0'),\n    selectedPeriod: period?.toLowerCase() as TimePeriod\n  };\n};\n\nexport const isTimeTextValid = (\n  hasPeriod: boolean,\n  timeText: string | number | undefined,\n  minHour: number,\n  maxHour: number,\n  minMinute: number,\n  maxMinute: number\n): boolean => {\n  if (typeof timeText !== 'string') {\n    return false;\n  }\n\n  if (timeText === '') {\n    return true;\n  }\n\n  const match = hasPeriod ? FULL_TIME_TEXT_REGEX_WITH_PERIOD.exec(timeText) : FULL_TIME_TEXT_REGEX_WITHOUT_PERIOD.exec(timeText);\n\n  if (!match) {\n    return false;\n  }\n\n  const hour = parseInt(match[1], 10);\n  const minute = parseInt(match[2], 10);\n\n  return hour >= minHour && hour <= maxHour && minute >= minMinute && minute <= maxMinute;\n};\n","import React, { createContext, Dispatch, FC, ReactNode, SetStateAction, useContext, useMemo, useState } from 'react';\nimport { TimeFormat, TimePeriod } from '@/models';\nimport { startTime } from '../utils/format-time';\n\nexport interface Labels {\n  cancelLabel: string;\n  cancelAriaLabel?: string;\n  okLabel: string;\n  okAriaLabel?: string;\n  timepickerMessageLabel?: string;\n  timepickerMessageAriaLabel?: string;\n}\n\ninterface TimePickerStateContextInitialValuesType {\n  selectedFormat: TimeFormat;\n  selectedTime: string;\n  MIN_HOUR: number;\n  MAX_HOUR: number;\n  MIN_MINUTE: number;\n  MAX_MINUTE: number;\n  cancel: (selectedTime: string) => void;\n  labels: Labels;\n}\n\ninterface TimePickerStateContextType extends TimePickerStateContextInitialValuesType {\n  selectedHour: string;\n  setSelectedHour: Dispatch<SetStateAction<string>>;\n\n  selectedMinute: string;\n  setSelectedMinute: Dispatch<SetStateAction<string>>;\n\n  selectedPeriod: TimePeriod;\n  setSelectedPeriod: Dispatch<SetStateAction<TimePeriod>>;\n\n  setSelectedTime: Dispatch<SetStateAction<string>>;\n}\n\nexport const TimeInputContext = createContext<TimePickerStateContextType | undefined>(undefined);\n\nexport interface TimePickerStateProviderProps {\n  children: ReactNode;\n  initialValues: TimePickerStateContextInitialValuesType;\n}\n\nexport const TimeInputContextProvider: FC<TimePickerStateProviderProps> = ({ initialValues, children }) => {\n  const [selectedHour, setSelectedHour] = useState(initialValues.selectedFormat === '12' ? '12' : '00');\n  const [selectedMinute, setSelectedMinute] = useState(startTime.minute);\n  const [selectedPeriod, setSelectedPeriod] = useState<TimePeriod>(startTime.period as TimePeriod);\n  const [selectedTime, setSelectedTime] = useState(initialValues.selectedTime);\n\n  const providerValue = useMemo(\n    () => ({\n      ...initialValues,\n      selectedHour,\n      setSelectedHour,\n      selectedMinute,\n      setSelectedMinute,\n      selectedPeriod,\n      setSelectedPeriod,\n      selectedTime,\n      setSelectedTime\n    }),\n    [initialValues, selectedHour, selectedMinute, selectedPeriod, selectedTime]\n  );\n\n  return <TimeInputContext value={providerValue}>{children}</TimeInputContext>;\n};\n\nexport const useTimeInputContext = () => {\n  const context = useContext(TimeInputContext);\n  if (!context) {\n    throw new Error('useTimeInputContext must be used within a TimeInputContextProvider');\n  }\n  return context;\n};\n","import React, { ChangeEvent, ComponentProps, FC, FocusEvent, KeyboardEvent, useEffect, useImperativeHandle, useRef } from 'react';\nimport classNames from 'classnames';\nimport './time-text.css';\n\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { asyncTrigger, createSyntheticEvent } from '@/utils';\nimport { DEFAULT_PLACEHOLDER, isTimeTextValid, timePeriod } from '../utils/format-time';\n\nexport interface TimeTextProps extends ComponentProps<'input'> {\n  setInputTextValue: (selectedTime: string) => void;\n  hourInputPlaceholder?: string;\n  minuteInputPlaceholder?: string;\n  periodInputPlaceholder?: string;\n}\n\nconst TimeText: FC<TimeTextProps> = ({\n  ref = null,\n  setInputTextValue,\n  className,\n  hourInputPlaceholder,\n  minuteInputPlaceholder,\n  periodInputPlaceholder,\n  ...props\n}) => {\n  const timeCtx = useTimeInputContext();\n\n  const inputRef = useRef<HTMLInputElement | null>(null);\n\n  const hasPeriod = timeCtx.selectedFormat === '12';\n\n  useImperativeHandle(ref, () => {\n    return inputRef.current as HTMLInputElement;\n  }, [inputRef.current]);\n\n  // Necessary to avoid conflict on range selection between mouse and keyboard focus\n  useEffect(() => {\n    const handleMouseDown = () => ((window as Window & { __mouseDown?: boolean }).__mouseDown = true);\n    const handleMouseUp = () => ((window as Window & { __mouseDown?: boolean }).__mouseDown = false);\n\n    window.addEventListener('mousedown', handleMouseDown);\n    window.addEventListener('mouseup', handleMouseUp);\n    return () => {\n      window.removeEventListener('mousedown', handleMouseDown);\n      window.removeEventListener('mouseup', handleMouseUp);\n    };\n  }, []);\n\n  const inputClassNames = classNames('agora-time-input', className);\n\n  const parsePlaceholder = (input: string | undefined, defaultValue: string): string => {\n    if (input) {\n      if (input.length === 1) {\n        // Duplicates the character\n        return input.repeat(2);\n      } else if (input.length > 2) {\n        // Uses only the first 2 characters\n        return input.slice(0, 2);\n      }\n      return input;\n    } else {\n      // Uses the default value otherwise\n      return defaultValue;\n    }\n  };\n\n  const hourPlaceholder = parsePlaceholder(hourInputPlaceholder, DEFAULT_PLACEHOLDER.HOUR);\n  const minutePlaceholder = parsePlaceholder(minuteInputPlaceholder, DEFAULT_PLACEHOLDER.MINUTE);\n  const periodPlaceholder = parsePlaceholder(periodInputPlaceholder, DEFAULT_PLACEHOLDER.PERIOD);\n\n  const fullInputPlaceholder = `${hourPlaceholder}:${minutePlaceholder}${hasPeriod ? ` ${periodPlaceholder}` : ''}`;\n\n  const validateInputTimeText = ({ acceptPlaceholder = false, emptyValueOnError = false }) => {\n    const targetValue = inputRef.current?.value ?? '';\n\n    const isTextValid = () => {\n      let isValid = isTimeTextValid(hasPeriod, targetValue, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE);\n\n      // Accepts the placeholder as a valid value to allow typing on an empty input value\n      if (acceptPlaceholder) {\n        const isHourWithPlaceholder = targetValue.slice(0, 2) === hourPlaceholder;\n        const isMinuteWithPlaceholder = targetValue.slice(3, 5) === minutePlaceholder;\n        const isPeriodWithPlaceholder = hasPeriod ? targetValue.slice(6, 8) === periodPlaceholder : true;\n\n        isValid = isValid || isHourWithPlaceholder || isMinuteWithPlaceholder || isPeriodWithPlaceholder;\n      }\n\n      return isValid;\n    };\n\n    if (isTextValid()) {\n      setInputTextValue(targetValue);\n      timeCtx.setSelectedTime(targetValue);\n    } else if (inputRef.current && emptyValueOnError) {\n      inputRef.current.value = '';\n    }\n\n    if (inputRef.current) {\n      const newChangeEvt = createSyntheticEvent<HTMLInputElement>(inputRef.current, 'change');\n      asyncTrigger(() => props.onChange?.(newChangeEvt as ChangeEvent<HTMLInputElement>));\n    }\n  };\n\n  const handleBlur = () => {\n    if (!props.readOnly) {\n      validateInputTimeText({});\n    }\n  };\n\n  const handleClick = (evt: React.MouseEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      const clickPos = input.selectionStart as number;\n\n      if (clickPos <= 2) {\n        input.setSelectionRange(0, 2);\n      } else if (clickPos >= 3 && clickPos <= 5) {\n        input.setSelectionRange(3, 5);\n      } else if (clickPos >= 6) {\n        input.setSelectionRange(6, 8);\n      }\n    }\n  };\n\n  const handleFocus = (evt: FocusEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      const isMouseFocus =\n        (evt as FocusEvent<HTMLInputElement> & { sourceCapabilities?: { firesTouchEvents?: boolean } })?.sourceCapabilities\n          ?.firesTouchEvents === false || (window as Window & { __mouseDown?: boolean }).__mouseDown;\n\n      if (!input.value) {\n        input.value = fullInputPlaceholder;\n      }\n\n      if (!isMouseFocus) {\n        input.setSelectionRange(0, 2);\n      }\n    }\n  };\n\n  const handleSlot = (\n    values: { input: HTMLInputElement; start: number; end: number; placeholder: string; minValue: number; maxValue: number; key: string },\n    evt: KeyboardEvent<HTMLInputElement>,\n    periodValues?: { am: string; pm: string }\n  ): void => {\n    const { input, start, end, placeholder, minValue, maxValue, key } = values;\n\n    const updateSlot = (slotStart: number, slotEnd: number, value: string) => {\n      input.value = `${input.value.slice(0, slotStart)}${value}${input.value.slice(slotEnd)}`;\n      input.setSelectionRange(slotStart, slotEnd);\n    };\n\n    const updateSlotValue = (newValue: string): void => {\n      updateSlot(\n        start,\n        end,\n        Math.min(Math.max(parseInt(newValue), minValue), maxValue)\n          .toString()\n          .padStart(2, '0')\n      );\n    };\n\n    const handleArrowUpDown = (isArrowUp: boolean): void => {\n      const currentValue = parseInt(input.value.slice(start, end)) || 0;\n      const newValue = isArrowUp\n        ? (() => {\n            if (currentValue >= maxValue) {\n              return minValue;\n            } else {\n              return currentValue + 1;\n            }\n          })()\n        : (() => {\n            if (currentValue <= minValue) {\n              return maxValue;\n            } else {\n              return currentValue - 1;\n            }\n          })();\n\n      updateSlotValue(newValue.toString());\n    };\n\n    const handleNumberInput = (): void => {\n      const currentValue = input.value.slice(start, end);\n      const newValue =\n        currentValue === '00' || !currentValue.startsWith('0') || currentValue === placeholder ? `0${key}` : currentValue.charAt(1) + key;\n\n      updateSlotValue(newValue);\n\n      const parsedNewValue = parseInt(newValue);\n      const isValueTwoDigit = parsedNewValue >= 10;\n      const isSecondDigitGreaterThanMaxValue = parsedNewValue * 10 >= maxValue;\n      if (isValueTwoDigit || isSecondDigitGreaterThanMaxValue) {\n        // Change to next slot\n        input.setSelectionRange(end + 1, end + 3);\n      }\n    };\n\n    const handlePeriodInput = (): void => {\n      if (!hasPeriod) return;\n\n      const isModifierKeyPressed = evt.ctrlKey || evt.altKey || evt.shiftKey;\n\n      if ((key === 'a' || key === 'A') && !isModifierKeyPressed) {\n        evt.preventDefault();\n        updateSlot(start, end, periodValues!.am.toUpperCase());\n      } else if ((key === 'p' || key === 'P') && !isModifierKeyPressed) {\n        evt.preventDefault();\n        updateSlot(start, end, periodValues!.pm.toUpperCase());\n      }\n    };\n\n    if (key === 'Backspace') {\n      evt.preventDefault();\n      updateSlot(start, end, placeholder);\n    } else if (/\\d/.test(key)) {\n      evt.preventDefault();\n      // Prevents number input in period field\n      if (periodValues) return;\n      handleNumberInput();\n    } else if (key === 'ArrowUp' || key === 'ArrowDown') {\n      evt.preventDefault();\n      if (periodValues) {\n        const currentValue = input.value.slice(6, 8).toUpperCase();\n        updateSlot(6, 8, currentValue === periodValues.am.toUpperCase() ? periodValues.pm.toUpperCase() : periodValues.am.toUpperCase());\n        return;\n      }\n      handleArrowUpDown(key === 'ArrowUp');\n    } else if (key === 'ArrowLeft') {\n      // Moves to the previous slot\n      input.setSelectionRange(start - 3, start - 1);\n    } else if (key === 'ArrowRight') {\n      // Moves to the next slot\n      input.setSelectionRange(end + 1, end + 3);\n    } else if (hasPeriod && periodValues) {\n      handlePeriodInput();\n    }\n  };\n\n  const handleTab = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (selectionStart >= 6) {\n      // If in period section and press \"Tab\", go to the next element\n      evt.preventDefault();\n      input.blur();\n      const nextElement = inputRef.current?.nextElementSibling;\n      if (nextElement && nextElement instanceof HTMLElement) nextElement.focus();\n    } else if (selectionStart < 3) {\n      // From hours section to minutes section\n      evt.preventDefault();\n      input.setSelectionRange(3, 5);\n    } else if (selectionStart >= 3 && selectionStart < 6) {\n      // From minutes section to period section\n      evt.preventDefault();\n      input.setSelectionRange(6, 8);\n    }\n  };\n\n  const handleShiftTab = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (selectionStart < 3) {\n      // If in hours section and press \"Shift+Tab\", go to the previous element\n      evt.preventDefault();\n      input.blur();\n      const prevElement = inputRef.current?.previousElementSibling;\n      if (prevElement && prevElement instanceof HTMLElement) prevElement.focus();\n    } else if (selectionStart >= 3 && selectionStart < 6) {\n      // Shift+Tab from minutes section to hours section\n      evt.preventDefault();\n      input.setSelectionRange(0, 2);\n    } else if (selectionStart >= 6) {\n      // Shift+Tab from period to minutes section\n      evt.preventDefault();\n      input.setSelectionRange(3, 5);\n    }\n  };\n\n  const handleTabNavigation = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (evt.shiftKey && evt.key === 'Tab') {\n      handleShiftTab(evt, input, selectionStart);\n    }\n    if (!evt.shiftKey && evt.key === 'Tab') {\n      handleTab(evt, input, selectionStart);\n    }\n  };\n\n  const handleTimeSelection = (\n    selectionStart: number,\n    selectionEnd: number,\n    handleHourSlot: () => void,\n    handleMinuteSlot: () => void,\n    handlePeriodSlot: () => void\n  ) => {\n    if (selectionStart < 3 && selectionEnd <= 2) {\n      handleHourSlot();\n    } else if (selectionStart >= 3 && selectionEnd <= 5) {\n      handleMinuteSlot();\n    } else if (selectionStart >= 6 && selectionEnd <= 8) {\n      handlePeriodSlot();\n    } else {\n      handleHourSlot();\n    }\n  };\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      const selectionStart = input.selectionStart as number;\n      const selectionEnd = input.selectionEnd as number;\n      const key = evt.key;\n\n      const handleHourSlot = (): void => {\n        handleSlot(\n          { input, start: 0, end: 2, placeholder: hourPlaceholder, minValue: timeCtx.MIN_HOUR, maxValue: timeCtx.MAX_HOUR, key },\n          evt\n        );\n      };\n\n      const handleMinuteSlot = (): void => {\n        handleSlot(\n          { input, start: 3, end: 5, placeholder: minutePlaceholder, minValue: timeCtx.MIN_MINUTE, maxValue: timeCtx.MAX_MINUTE, key },\n          evt\n        );\n      };\n\n      const handlePeriodSlot = (): void => {\n        handleSlot({ input, start: 6, end: 8, placeholder: periodPlaceholder, minValue: 0, maxValue: 0, key }, evt, {\n          am: timePeriod.am.toUpperCase(),\n          pm: timePeriod.pm.toUpperCase()\n        });\n      };\n\n      handleTimeSelection(selectionStart, selectionEnd, handleHourSlot, handleMinuteSlot, handlePeriodSlot);\n\n      handleTabNavigation(evt, input, selectionStart);\n\n      if (evt.ctrlKey && key === 'a') {\n        evt.preventDefault();\n        input.select();\n      }\n\n      if (evt.ctrlKey && key === 'c') {\n        evt.preventDefault();\n        const selectedText = input.value.substring(selectionStart, selectionEnd);\n        void navigator.clipboard.writeText(selectedText);\n      }\n\n      evt.preventDefault();\n\n      validateInputTimeText({ acceptPlaceholder: true });\n    }\n  };\n\n  return (\n    <input\n      {...props}\n      className={inputClassNames}\n      ref={inputRef}\n      type=\"text\"\n      placeholder={fullInputPlaceholder}\n      onBlur={handleBlur}\n      onClick={handleClick}\n      onFocus={handleFocus}\n      onKeyDown={handleKeyDown}\n    />\n  );\n};\n\nexport { TimeText };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, KeyboardEvent, MouseEvent, useId, useState } from 'react';\nimport './toggle.css';\nimport { IconItem, IconSet, IconSetState } from '../shared/icon-set/icon-set';\n\n/**\n * The available toggle button appearances. Defines the button layout shape,\n */\nexport type ToggleAppearance = 'button' | 'icon';\n/**\n * The available variants of the toggle button. This variants will define the background and border color of the button.\n */\nexport type ToggleVariant = 'primary' | 'neutral';\n\nexport interface ToggleProps extends ComponentProps<'input'> {\n  /**\n   * Defines if the toggle takes the container full width.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the toggle renders in dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  appearance?: ToggleAppearance;\n  /**\n   * The variant of the button. This variants will define the background and border color of the given Button.\n   */\n  variant?: ToggleVariant;\n  /**\n   * Data attributes.\n   * Allow when implemented interface add data-* attribute.\n   */\n  [dataAttribute: `data-${string}`]: string;\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\n\nconst Toggle: FC<ToggleProps> = ({\n  ref = null,\n  appearance = 'button',\n  variant = 'primary',\n  fullWidth = false,\n  darkMode = 'false',\n  className = '',\n  children,\n  onChange: onChangeFromProps,\n  checked: checkedFromProps,\n  defaultChecked,\n  disabled,\n  hasIcon,\n  iconOnly,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  ...props\n}) => {\n  const generatedId = useId();\n  const isControlled = typeof checkedFromProps !== 'undefined';\n  const hasDefaultChecked = typeof defaultChecked !== 'undefined';\n  const [internalChecked, setInternalChecked] = useState(hasDefaultChecked ? defaultChecked : false);\n  const checked = isControlled ? checkedFromProps : internalChecked;\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n    if (onChangeFromProps) {\n      onChangeFromProps(e);\n    }\n\n    if (!isControlled) {\n      setInternalChecked(e.target.checked);\n    }\n  };\n\n  const toggleButtonClassName = classNames(\n    'agora-toggle',\n    `agora-toggle-${appearance}`,\n    `agora-toggle-${appearance}-${variant}`,\n    { active: activeState == 'active' },\n    { checked },\n    { disabled },\n    { 'full-width': stringToBoolean(fullWidth) },\n    { 'dark-mode': stringToBoolean(darkMode) },\n    { 'has-icon': stringToBoolean(hasIcon) },\n    { 'icon-only': stringToBoolean(iconOnly) },\n    className\n  );\n\n  const onClickHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n    props.onClick?.(evt);\n  };\n\n  const onMouseUpHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onMouseDownHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n    props.onMouseDown?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (evt.code === 'Space' || evt.code === 'Enter') {\n      evt.preventDefault();\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (evt.code === 'Space' || evt.code === 'Enter') {\n      setActiveState('default');\n\n      const fakeEvent = {\n        ...evt,\n        target: evt.currentTarget\n      } as unknown as ChangeEvent<HTMLInputElement>;\n\n      if (!isControlled) {\n        setInternalChecked((prev) => !prev);\n      }\n\n      onChange(fakeEvent);\n    }\n\n    props.onKeyUp?.(evt);\n  };\n  return (\n    <div className={toggleButtonClassName}>\n      <input\n        {...props}\n        onClick={onClickHandler}\n        onMouseUp={onMouseUpHandler}\n        onMouseDown={onMouseDownHandler}\n        onMouseEnter={onMouseEnterHandler}\n        onMouseLeave={onMouseLeaveHandler}\n        onKeyUp={onKeyUpHandler}\n        onKeyDown={onKeyDownHandler}\n        aria-labelledby={generatedId}\n        ref={ref}\n        type=\"checkbox\"\n        onChange={onChange}\n        checked={checked}\n        disabled={disabled}\n      />\n      {stringToBoolean(hasIcon) && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n\n      <div className=\"children-content\" id={generatedId}>\n        {children}\n      </div>\n\n      {stringToBoolean(hasIcon) && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n    </div>\n  );\n};\n\nexport { Toggle };\n","import React, { FC, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { stringToBoolean } from '@/utils';\nimport { formatHour, formatMinute, timePeriod } from '../utils/format-time';\n\nimport { Icon } from '@/components/icon';\nimport { TimePeriod } from '@/models/time-period-type';\nimport { Toggle } from '@/components/toggle';\nimport { ToggleGroup } from '@/components/toggle-group';\n\nexport const DialogBody: FC = () => {\n  const timeCtx = useTimeInputContext();\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n\n  const isMobile = width < mdScreen;\n\n  const hourInputRef = useRef<HTMLInputElement>(null);\n\n  useEffect(() => {\n    hourInputRef.current?.focus();\n  }, []);\n\n  const handleHourUp = () => {\n    timeCtx.setSelectedHour((prevValue) =>\n      parseInt(prevValue) >= timeCtx.MAX_HOUR\n        ? formatHour(timeCtx.MIN_HOUR, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR)\n        : formatHour(parseInt(prevValue) + 1, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR)\n    );\n  };\n\n  const handleHourDown = () => {\n    timeCtx.setSelectedHour((prevValue) =>\n      parseInt(prevValue) <= timeCtx.MIN_HOUR\n        ? formatHour(timeCtx.MAX_HOUR, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR)\n        : formatHour(parseInt(prevValue) - 1, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR)\n    );\n  };\n\n  const handleMinuteUp = () => {\n    timeCtx.setSelectedMinute((prevValue) =>\n      parseInt(prevValue) >= timeCtx.MAX_MINUTE\n        ? formatMinute(timeCtx.MIN_MINUTE, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE)\n        : formatMinute(parseInt(prevValue) + 1, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE)\n    );\n  };\n\n  const handleMinuteDown = () => {\n    timeCtx.setSelectedMinute((prevValue) =>\n      parseInt(prevValue) <= timeCtx.MIN_MINUTE\n        ? formatMinute(timeCtx.MAX_MINUTE, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE)\n        : formatMinute(parseInt(prevValue) - 1, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE)\n    );\n  };\n\n  const handleHourInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const { value } = e.target;\n    const formattedHour = formatHour(value, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR);\n\n    timeCtx.setSelectedHour(formattedHour);\n  };\n\n  const handleHourFocus = (e: React.FocusEvent<HTMLInputElement>) => e.target.select();\n\n  const handleHourKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'ArrowUp') {\n      e.preventDefault();\n      handleHourUp();\n    }\n    if (e.key === 'ArrowDown') {\n      e.preventDefault();\n      handleHourDown();\n    }\n  };\n\n  const handleMinuteInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const { value } = e.target;\n    const formattedMinute = formatMinute(value, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE);\n\n    timeCtx.setSelectedMinute(formattedMinute);\n  };\n\n  const handleMinuteFocus = (e: React.FocusEvent<HTMLInputElement>) => e.target.select();\n\n  const handleMinuteKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'ArrowUp') {\n      e.preventDefault();\n      handleMinuteUp();\n    }\n    if (e.key === 'ArrowDown') {\n      e.preventDefault();\n      handleMinuteDown();\n    }\n  };\n\n  const handleSelectedPeriod = (value: string[]) => {\n    timeCtx.setSelectedPeriod(() => value[0] as TimePeriod);\n  };\n\n  const timeWithPeriodContainerClassName = classNames('time-with-period-container', {\n    'time-with-period-container--mobile': isMobile\n  });\n\n  const inputNumberClasses = classNames('input-number', { 'input-number-large': stringToBoolean(timeCtx.selectedFormat === '24') });\n\n  const orientation = isMobile ? 'horizontal' : 'vertical';\n\n  return (\n    <div className=\"p-32\">\n      <div className={timeWithPeriodContainerClassName}>\n        <div className=\"time-inputs-container\">\n          <div className=\"input-number-container\">\n            <input\n              ref={hourInputRef}\n              className={inputNumberClasses}\n              type=\"number\"\n              min={timeCtx.MIN_HOUR}\n              max={timeCtx.MAX_HOUR}\n              value={timeCtx.selectedHour}\n              onChange={handleHourInputChange}\n              onFocus={handleHourFocus}\n              onKeyDown={handleHourKeyDown}\n            />\n            <div className=\"input-number-arrows-container\">\n              <div className=\"input-number-arrow\" onClick={handleHourUp} aria-hidden>\n                <Icon name=\"agora-solid-arrow-up\" />\n              </div>\n              <div className=\"input-number-arrow\" onClick={handleHourDown} aria-hidden>\n                <Icon name=\"agora-solid-arrow-down\" />\n              </div>\n            </div>\n          </div>\n\n          <div className=\"time-separator-text\">:</div>\n\n          <div className=\"input-number-container\">\n            <input\n              className={inputNumberClasses}\n              type=\"number\"\n              min={timeCtx.MIN_MINUTE}\n              max={timeCtx.MAX_MINUTE}\n              value={timeCtx.selectedMinute}\n              onChange={handleMinuteInputChange}\n              onFocus={handleMinuteFocus}\n              onKeyDown={handleMinuteKeyDown}\n            />\n            <div className=\"input-number-arrows-container\">\n              <div className=\"input-number-arrow\" onClick={handleMinuteUp} aria-hidden>\n                <Icon name=\"agora-solid-arrow-up\" />\n              </div>\n              <div className=\"input-number-arrow\" onClick={handleMinuteDown} aria-hidden>\n                <Icon name=\"agora-solid-arrow-down\" />\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {timeCtx.selectedFormat === '12' && (\n          <ToggleGroup\n            key={orientation}\n            value={timeCtx.selectedPeriod}\n            multiple={false}\n            onChange={handleSelectedPeriod}\n            className=\"time-period-buttons\"\n            orientation={orientation}\n          >\n            <Toggle value={timePeriod.am}>{timePeriod.am.toUpperCase()}</Toggle>\n            <Toggle value={timePeriod.pm}>{timePeriod.pm.toUpperCase()}</Toggle>\n          </ToggleGroup>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { formatFullTime } from '../utils/format-time';\n\nimport { Button } from '@/components/button';\n\nexport interface TimePickerDropdownFooterProps {\n  setInputTextValue: (selectedTime: string) => void;\n}\n\nexport const DialogFooter: FC<TimePickerDropdownFooterProps> = ({ setInputTextValue }) => {\n  const timeCtx = useTimeInputContext();\n\n  const hasPeriod = timeCtx.selectedFormat === '12';\n\n  const onCancelPressed = () => {\n    timeCtx.cancel(timeCtx.selectedTime);\n  };\n\n  // Store the selected time in text format and display it on the input text\n  const onOkPressed = () => {\n    const selectedTimeText = formatFullTime(hasPeriod, timeCtx.selectedHour, timeCtx.selectedMinute, timeCtx.selectedPeriod);\n    setInputTextValue(selectedTimeText);\n    timeCtx.setSelectedTime(selectedTimeText);\n    timeCtx.cancel(selectedTimeText);\n  };\n\n  const labels = timeCtx.labels;\n\n  const additionalCancelProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.cancelLabel}, ${labels.cancelAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalCancelProps['aria-label'];\n  }\n\n  const additionalOkProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.okLabel}, ${labels.okAriaLabel}`\n  };\n  if (!labels.okAriaLabel) {\n    delete additionalOkProps['aria-label'];\n  }\n\n  return (\n    <div className=\"flex justify-between items-center py-8\">\n      <Button appearance=\"link\" variant=\"neutral\" onClick={onCancelPressed} {...additionalCancelProps}>\n        {labels.cancelLabel}\n      </Button>\n      <Button appearance=\"link\" onClick={onOkPressed} {...additionalOkProps}>\n        {labels.okLabel}\n      </Button>\n    </div>\n  );\n};\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Labels, useTimeInputContext } from './contexts/time-input-state.context';\nimport { BooleanProp, TimePeriod } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport { parseFullTime, startTime } from './utils/format-time';\n\nimport { DialogBody } from './time-picker-dropdown-body/time-picker-dropdown-body';\nimport { DialogFooter } from './time-picker-dropdown-footer/time-picker-dropdown-footer';\n\nimport { Icon } from '@/components/icon';\n\nexport interface TimePickerDropdownProps {\n  className?: string;\n  setInputTextValue: (selectedTime: string) => void;\n  onChange: (selectedTime: string) => void;\n  onCancel: (selectedTime: string) => void;\n  hasTimepickerMessage?: BooleanProp;\n  textCurrentValue: string;\n  labels: Labels;\n}\n\nexport const TimePickerDropdown: FC<TimePickerDropdownProps> = ({\n  setInputTextValue,\n  onChange,\n  labels,\n  hasTimepickerMessage,\n  textCurrentValue,\n  className\n}) => {\n  const timeCtx = useTimeInputContext();\n\n  const [isReady, setIsReady] = useState(false);\n\n  const hasPeriod = timeCtx.selectedFormat === '12';\n\n  const wrapperClassNames = classNames(\n    className,\n    'absolute left-0 top-[68px] shadow-bottom-high bg-white p-16 border-2 border-[var(--color-neutral-200)] rounded-4 z-dropdown'\n  );\n\n  const datePickerDropdownContainerRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    // Opens the timepicker with the current selected time on its inputs and marks the component to be ready to render only after that\n    if (timeCtx.selectedTime) {\n      // Opens the timepicker with the current time if the input text is empty\n      if (!textCurrentValue) {\n        timeCtx.setSelectedHour(timeCtx.selectedFormat === '12' ? '12' : '00');\n        timeCtx.setSelectedMinute(startTime.minute);\n        timeCtx.setSelectedPeriod(hasPeriod ? (startTime.period as TimePeriod) : undefined);\n      } else {\n        const { selectedHour, selectedMinute, selectedPeriod } = parseFullTime(hasPeriod, timeCtx.selectedTime, timeCtx.selectedFormat);\n        timeCtx.setSelectedHour(selectedHour);\n        timeCtx.setSelectedMinute(selectedMinute);\n        timeCtx.setSelectedPeriod(hasPeriod ? selectedPeriod : undefined);\n      }\n\n      asyncTrigger(() => onChange(timeCtx.selectedTime));\n      setIsReady(true);\n    }\n  }, [timeCtx.selectedTime, timeCtx.setSelectedHour, timeCtx.setSelectedMinute, timeCtx.setSelectedPeriod]);\n\n  // Does not render the component until the input values are set\n  if (!isReady && timeCtx.selectedTime) {\n    return null;\n  }\n\n  const additionalTimepickerMessageProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.timepickerMessageLabel}, ${labels.timepickerMessageAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalTimepickerMessageProps['aria-label'];\n  }\n\n  return (\n    <div ref={datePickerDropdownContainerRef} className={wrapperClassNames}>\n      <DialogBody />\n      <div className=\"border-1 border-[var(--color-neutral-300)]\" />\n      <div className=\"px-32\">\n        <DialogFooter setInputTextValue={setInputTextValue} />\n      </div>\n      {stringToBoolean(hasTimepickerMessage) && (\n        <div className=\"timepicker-message\" {...additionalTimepickerMessageProps}>\n          <Icon name=\"agora-solid-alert-circle\" className=\"timepicker-message__icon\" alt={labels.timepickerMessageAriaLabel} />\n          <div className=\"timepicker-message__text\">{labels.timepickerMessageLabel}</div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport './input-time.css';\nimport { TimeInputContextProvider } from './contexts/time-input-state.context';\n\nimport { BooleanProp, FeedbackState, TimeFormat } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport { DEFAULT_PLACEHOLDER } from './utils/format-time';\n\nimport { TimeText } from './time-text/time-text';\nimport { TimePickerDropdown } from './time-picker-dropdown';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\n\nimport { callbackWith } from '@/components/input-date/input-date';\n\nexport interface InputTimeProps extends ComponentProps<'input'> {\n  /**\n   * Defines the time format that will be used.\n   */\n  format?: TimeFormat;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * The placeholder to apply in the input minute part\n   */\n  minuteInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input hour part\n   */\n  hourInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input hour part\n   */\n  periodInputPlaceholder?: string;\n  /**\n   * Accessible text to apply to the trailing clock icon.\n   */\n  clockIconAriaLabel: string;\n  /**\n   * Label for the timepicker cancel button.\n   */\n  cancelLabel: string;\n  /**\n   * Accessible text for the timepicker cancel button.\n   */\n  cancelAriaLabel?: string;\n  /**\n   * Label for the timepicker ok button.\n   */\n  okLabel: string;\n  /**\n   * Accessible text for the timepicker ok button.\n   */\n  okAriaLabel?: string;\n  /**\n   * Show or hide the timepicker footer message.\n   */\n  hasTimepickerMessage?: BooleanProp;\n  /**\n   * Label for the timepicker footer message.\n   */\n  timepickerMessageLabel?: string;\n  /**\n   * Accessible text for the timepicker footer message.\n   */\n  timepickerMessageAriaLabel?: string;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputTime: FC<InputTimeProps> = ({\n  ref = null,\n  className,\n  format = '12',\n  darkMode,\n  label,\n  hideLabel,\n  required = true,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  icon,\n  hasIcon,\n  minuteInputPlaceholder = DEFAULT_PLACEHOLDER.MINUTE,\n  hourInputPlaceholder = DEFAULT_PLACEHOLDER.HOUR,\n  periodInputPlaceholder = DEFAULT_PLACEHOLDER.PERIOD,\n  clockIconAriaLabel,\n  cancelLabel,\n  cancelAriaLabel,\n  okLabel,\n  okAriaLabel,\n  value,\n  defaultValue,\n  onChange,\n  hasTimepickerMessage = false,\n  timepickerMessageLabel,\n  timepickerMessageAriaLabel,\n  hasHelperText,\n  helperText,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  useImperativeHandle(ref, () => {\n    return innerInputRef.current as HTMLInputElement;\n  }, [innerInputRef.current]);\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const [currentValue, setCurrentValue] = useState<string>(value?.toString() ?? defaultValue?.toString() ?? '');\n\n  const lastValueTriggered = useRef<string>('empty');\n  const [trigger, setTrigger] = useState(+new Date());\n\n  const [overlayVisible, setOverlayVisible] = useState(false);\n\n  const showOverlay = () => {\n    if (!props.readOnly) {\n      setOverlayVisible(true);\n    }\n  };\n\n  const hideOverlay = () => {\n    setOverlayVisible(false);\n  };\n\n  const toggleOverlay = () => {\n    if (overlayVisible) {\n      hideOverlay();\n    } else {\n      showOverlay();\n    }\n  };\n\n  const handleOnDismiss = () => {\n    hideOverlay();\n  };\n\n  const triggerOnChange = (last: string) => {\n    if (last !== lastValueTriggered.current) {\n      lastValueTriggered.current = last;\n      setTrigger(+new Date());\n    }\n  };\n\n  const handleTimePickerCancel = (selectedTime: string) => {\n    setCurrentValue(selectedTime);\n    triggerOnChange(selectedTime);\n\n    handleOnDismiss();\n  };\n\n  //  HANDLE CLICK OUTSIDE DIALOG\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (!overlayVisible) {\n        return;\n      }\n\n      const clickedOnInputElement = event.target && (event.target as HTMLElement).closest('.agora-time-input');\n\n      if (!wrapperRef.current?.contains(event.target as HTMLDivElement) || clickedOnInputElement) {\n        handleOnDismiss();\n      }\n    };\n\n    document.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document.removeEventListener('click', handleClickOutside);\n    };\n  }, [overlayVisible]);\n\n  //  HANDLE ESCAPE\n  useEffect(() => {\n    const keydownHandler = (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        handleOnDismiss();\n      }\n    };\n\n    wrapperRef.current?.addEventListener('keydown', keydownHandler);\n\n    return () => {\n      wrapperRef.current?.removeEventListener('keydown', keydownHandler);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (defaultValue) {\n      return;\n    }\n\n    setCurrentValue(value?.toString() ?? '');\n    triggerOnChange(value?.toString() ?? '');\n  }, [value]);\n\n  const onOverlayChangeHandler = (selectedTime: string) => {\n    triggerOnChange(selectedTime);\n  };\n\n  const onInputTimeChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentValue(evt.target.value);\n    triggerOnChange(evt.target.value);\n  };\n\n  useEffect(() => {\n    if (innerInputRef.current) {\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n  }, [trigger]);\n\n  const firstRender = useRef(true);\n  useEffect(() => {\n    if (!overlayVisible && innerInputRef.current) {\n      if (firstRender.current) {\n        firstRender.current = false;\n        return;\n      }\n      innerInputRef.current.focus();\n      innerInputRef.current.setSelectionRange(0, 2);\n    }\n  }, [overlayVisible]);\n\n  const dropdownTimePickerLabels = {\n    cancelLabel,\n    cancelAriaLabel,\n    okLabel,\n    okAriaLabel,\n    timepickerMessageLabel,\n    timepickerMessageAriaLabel\n  };\n\n  const wrapperClassNames = classNames('agora-time-picker', className, {\n    'dark-mode': stringToBoolean(darkMode),\n    'has-value': currentValue.length > 0,\n    'disabled': stringToBoolean(propsClone.disabled),\n    'read-only': stringToBoolean(propsClone.readOnly),\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const timeCtxInitialValues = useMemo(() => {\n    return {\n      selectedFormat: format,\n      selectedTime: defaultValue?.toString() ?? value?.toString() ?? '',\n      MIN_HOUR: format === '12' ? 1 : 0,\n      MAX_HOUR: format === '12' ? 12 : 23,\n      MIN_MINUTE: 0,\n      MAX_MINUTE: 59,\n      cancel: handleTimePickerCancel,\n      labels: dropdownTimePickerLabels\n    };\n  }, []);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-time-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-time-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <TimeInputContextProvider initialValues={timeCtxInitialValues}>\n      <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n        {/* Label */}\n        <label\n          hidden={!!stringToBoolean(hideLabel)}\n          htmlFor={propsClone.id}\n          className=\"input-time-label\"\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n        >\n          {label}\n        </label>\n\n        {/* Input wrapper */}\n        <div\n          role=\"presentation\"\n          className=\"input-wrapper-text\"\n          onKeyDown={callbackWith(setIconState, 'active')}\n          onKeyUp={callbackWith(setIconState, 'default')}\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n        >\n          {/* Input Leading Icon  */}\n          {stringToBoolean(hasIcon) && (\n            <div className=\"input-leading-icon\">\n              <IconSet state={currentIconState}>\n                <IconItem aria-hidden state=\"default\" name={icon ?? 'no-icon'} />\n                <IconItem aria-hidden state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n                <IconItem aria-hidden state=\"active\" name={icon ?? 'no-icon'} />\n              </IconSet>\n            </div>\n          )}\n\n          <TimeText\n            className=\"input-text\"\n            ref={innerInputRef}\n            id={propsClone.id}\n            minuteInputPlaceholder={minuteInputPlaceholder}\n            hourInputPlaceholder={hourInputPlaceholder}\n            periodInputPlaceholder={periodInputPlaceholder}\n            value={currentValue}\n            setInputTextValue={setCurrentValue}\n            onChange={onInputTimeChange}\n            disabled={propsClone.disabled}\n            readOnly={propsClone.readOnly}\n            required={isRequired}\n            aria-describedby={inputAriaDescribedBy}\n          />\n\n          {/* Input Trailing Icon  */}\n          <button\n            type=\"button\"\n            disabled={!!propsClone.disabled || !!propsClone.readOnly}\n            onClick={toggleOverlay}\n            className=\"input-trailing-icon\"\n            aria-label={clockIconAriaLabel}\n          >\n            <IconSet state={currentIconState}>\n              <IconItem state=\"default\" name=\"agora-line-clock\" aria-hidden className=\"icon-clock-default\" />\n              <IconItem state=\"hover\" name=\"agora-solid-clock\" aria-hidden className=\"icon-clock-hover\" />\n              <IconItem state=\"active\" name=\"agora-line-clock\" aria-hidden className=\"icon-clock-default\" />\n            </IconSet>\n          </button>\n\n          {overlayVisible && (\n            <TimePickerDropdown\n              className=\"time-picker-dropdown\"\n              labels={dropdownTimePickerLabels}\n              onChange={onOverlayChangeHandler}\n              onCancel={handleTimePickerCancel}\n              hasTimepickerMessage={hasTimepickerMessage}\n              setInputTextValue={setCurrentValue}\n              textCurrentValue={currentValue}\n            />\n          )}\n        </div>\n        {/* HelperText */}\n        {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n        {/* Feedback */}\n        {stringToBoolean(hasFeedback) && feedbackText && (\n          <Feedback\n            id={`input-time-${propsClone.id}-feedback`}\n            feedbackState={feedbackState}\n            feedbackText={feedbackText}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        )}\n\n        {/* Error Feedback */}\n        {stringToBoolean(hasError) && errorFeedbackText && (\n          <Feedback\n            id={`input-time-${propsClone.id}-error-feedback`}\n            feedbackState=\"danger\"\n            feedbackText={errorFeedbackText}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        )}\n      </div>\n    </TimeInputContextProvider>\n  );\n};\n\nexport { InputTime };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport './loader-dialog.css';\n\nexport interface LoaderDialogProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the loader.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the loader.\n   */\n  subtitle?: ReactNode;\n}\nexport const LoaderDialog: FC<LoaderDialogProps> = ({ title, subtitle, ...props }) => {\n  const loaderClass = classNames('agora-loader-dialog');\n\n  return (\n    <div {...props} className=\"bg-[var(--color-backdrop)] absolute z-dialog w-full h-full flex flex-col justify-center items-center\">\n      <div className=\"flex flex-col gap-[64px] justify-center items-center w-full\">\n        {(title || subtitle) && (\n          <div className=\"flex w-full flex-col gap-8 justify-center items-center text-center xs:px-32 md:px-64 xl:px-0\">\n            {title && (\n              <div className=\"xl:text-2xl-semibold md:text-2xl-semibold  xs:text-l-semibold text-white xl:line-clamp-1 md:line-clamp-1 xs:line-clamp-2\">\n                {title}\n              </div>\n            )}\n            {subtitle && (\n              <div className=\"xl:text-2xl-light md:text-2xl-light xs:text-m-light text-white xl:line-clamp-1 md:line-clamp-1 xs:line-clamp-2\">\n                {subtitle}\n              </div>\n            )}\n          </div>\n        )}\n        <div className={loaderClass} role=\"status\">\n          <span className=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\"></span>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { createContext, useContext } from 'react';\nimport { LoaderDialogProps } from './loader-dialog';\n\nimport { DialogElement } from '@/components/dialog';\n\nexport interface LoaderDialogContextProps {\n  current: DialogElement;\n  visibility?: boolean;\n  showLoader: (props: LoaderDialogProps) => void;\n  hideLoader: () => void;\n}\n\nconst LoaderDialogContext = createContext<LoaderDialogContextProps>({} as LoaderDialogContextProps);\n\nconst useLoaderDialogContext = (): LoaderDialogContextProps => {\n  const context = useContext(LoaderDialogContext);\n  return context;\n};\n\nexport { LoaderDialogContext, useLoaderDialogContext };\n","import React, { FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { LoaderDialogContext, LoaderDialogContextProps } from './loader-dialog-context';\nimport { LoaderDialog, LoaderDialogProps } from './loader-dialog';\n\nexport interface LoaderDialogProviderProps {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nconst LoaderDialogProvider: FC<LoaderDialogProviderProps> = ({ children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n  const loaderRef = useRef<HTMLDivElement>(null);\n\n  const [dialogProps, setDialogProps] = useState<LoaderDialogProps>();\n  const [ariaLiveMessage, setAriaLiveMessage] = useState('');\n\n  const showLoader = useCallback((currentDialogProps: LoaderDialogProps) => {\n    if (currentDialogProps['aria-label']) {\n      setAriaLiveMessage(currentDialogProps['aria-label']);\n    } else if (currentDialogProps['aria-labelledby']) {\n      const ids = currentDialogProps['aria-labelledby'].split(' ');\n      const val = ids\n        .map((id) => loaderRef.current?.querySelector<HTMLElement>(`#${id}`)?.innerText ?? '')\n        .filter(Boolean)\n        .join(' ');\n\n      setAriaLiveMessage(val);\n    } else {\n      const getText = (value: unknown) => {\n        if (typeof value === 'string' || typeof value === 'number') return value.toString();\n        return '';\n      };\n      setAriaLiveMessage(`${getText(currentDialogProps.title)} ${getText(currentDialogProps.subtitle)}`);\n    }\n\n    setDialogProps(currentDialogProps);\n    dialogRef.current?.show();\n  }, []);\n\n  const hideLoader = useCallback((): void => {\n    setAriaLiveMessage('');\n    dialogRef.current?.hide();\n  }, []);\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        showLoader,\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        hideLoader\n      }) as LoaderDialogContextProps,\n    [showLoader, hideLoader]\n  );\n\n  return (\n    <LoaderDialogContext value={contextValue}>\n      <div aria-live=\"assertive\" className=\"sr-only\">\n        {ariaLiveMessage}\n      </div>\n      <Dialog ref={dialogRef} fullScreen dismissOnBackdropClick={false} dismissOnEscape={false} aria-busy=\"true\">\n        {!!dialogProps && (\n          <div className=\"loader-wrapper\" ref={loaderRef}>\n            <LoaderDialog {...dialogProps} />\n          </div>\n        )}\n      </Dialog>\n      {children}\n    </LoaderDialogContext>\n  );\n};\n\nexport { LoaderDialogProvider };\n","import { DialogElement } from '@/components/dialog';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { ModalConfiguration } from './modal-config.model';\n\nexport interface ModalContextProps {\n  /**\n   * The visible modal element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a modal is visible or not.\n   */\n  isVisible: () => boolean;\n  /**\n   * Shows a new modal with the configurations provided.\n   */\n  show: (children: ReactNode, config: ModalConfiguration) => void;\n  /**\n   * Hides the visible modal.\n   */\n  hide: () => void;\n}\n\nconst ModalContext = createContext<ModalContextProps>({} as ModalContextProps);\n\nconst useModalContext = (): ModalContextProps => {\n  return useContext(ModalContext);\n};\n\nexport { ModalContext, useModalContext };\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\nimport { useModalContext } from './modal-context';\n\nimport { ModalConfiguration } from './modal-config.model';\nimport './modal-dialog.css';\n\nexport interface ModalDialogProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   *  Modal configurations\n   */\n  configurations: ModalConfiguration;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nconst ModalDialog: FC<ModalDialogProps> = ({ configurations, children }) => {\n  const { hide } = useModalContext();\n\n  const containerClassNames = classNames('agora-modal-dialog-container', configurations.className, {\n    'dark-mode': stringToBoolean(configurations.darkMode ?? true)\n  });\n\n  return (\n    <div className={containerClassNames}>\n      <div className=\"agora-modal-dialog\">\n        <div className=\"agora-modal-dialog-header\">\n          <Button\n            className=\"mt-16 mr-24\"\n            onClick={hide}\n            appearance=\"link\"\n            variant=\"neutral\"\n            darkMode={stringToBoolean(configurations.darkMode ?? true)}\n            hasIcon\n            trailingIcon=\"agora-line-x\"\n            trailingIconHover=\"agora-solid-x\"\n          >\n            {configurations.closeButtonLabel}\n          </Button>\n        </div>\n        <div className=\"agora-modal-dialog-body\">\n          <div className=\"agora-modal-dialog-body-content\">{children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { ModalDialog };\n","import { Dialog, DialogElement } from '@/components/dialog';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport React, { FC, ReactNode, useMemo, useRef, useState } from 'react';\nimport { ModalConfiguration } from './modal-config.model';\nimport { ModalContext, ModalContextProps } from './modal-context';\nimport { ModalDialog } from './modal-dialog';\n\nexport interface ModalProviderProps {\n  /**\n   * Allows the dialog to be closed by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n}\n\nconst ModalProvider: FC<ModalProviderProps> = ({ dismissOnEscape = true, children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n  const [dialogConfig, setDialogConfig] = useState<ModalConfiguration>();\n\n  const show = (currentDialogChildren: ReactNode, config: ModalConfiguration) => {\n    setDialogChildren(currentDialogChildren);\n\n    setDialogConfig(config);\n\n    asyncTrigger(() => dialogRef.current?.show());\n  };\n\n  const hide = (): void => {\n    dialogRef.current?.hide();\n  };\n\n  const contextValue = useMemo(() => {\n    return {\n      current: dialogRef.current,\n      isVisible: () => !!dialogRef.current?.visible,\n      show,\n      hide\n    } as ModalContextProps;\n  }, [show, hide]);\n\n  return (\n    <ModalContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen\n        dismissOnBackdropClick={false}\n        dismissOnEscape={stringToBoolean(dismissOnEscape)}\n        aria-label={dialogConfig?.['aria-label']}\n        onShow={dialogConfig?.onShow}\n        onHide={dialogConfig?.onHide}\n      >\n        {!!dialogConfig && <ModalDialog configurations={dialogConfig}>{dialogChildren}</ModalDialog>}\n      </Dialog>\n      {children}\n    </ModalContext>\n  );\n};\n\nexport { ModalProvider };\n","import React, { cloneElement, FC, ReactElement, ReactNode } from 'react';\nimport { BooleanProp } from '@/models';\nimport { TabBodyProps } from '../tabs';\n\ntype ReactNodeOrFC = ReactNode | FC<{ darkMode?: BooleanProp }>;\n\nexport type PanelData = {\n  text: string;\n  withIcon?: boolean;\n  leadingIcon?: string;\n  content: ReactNodeOrFC;\n  leadingIconHover?: string;\n};\n\nexport type ButtonsHeaderData = {\n  withIcon: boolean;\n  leadingIcon: string;\n  leadingIconHover: string;\n  child: ReactElement<TabBodyProps>;\n};\n\nexport interface PanelSwitcherProps {\n  /**\n   * Collection of PanelData to be displayed by panel.\n   */\n  data: PanelData[];\n  /**\n   * Defines the label of the modal close button.\n   */\n  modalCloseButtonLabel: string;\n  /**\n   * The flag to set if the footer is in dark mode or light mode.\n   */\n  darkMode?: boolean;\n}\n\nexport const convertContentToNode = (content: ReactNodeOrFC, darkMode?: boolean): ReactNode => {\n  if (typeof content === 'function') {\n    const ContentComponent = content as FC<{ darkMode?: BooleanProp }>;\n    return <ContentComponent darkMode={darkMode} />;\n  }\n\n  return cloneElement(content as ReactElement, { darkMode } as Record<string, unknown>);\n};\n\nexport const handleIcons = (hasIcon: boolean, icon: string, leadingIcon: boolean) => {\n  if (!hasIcon) {\n    return undefined;\n  }\n\n  const backUpIcon = leadingIcon ? 'no-icon-line' : 'no-icon';\n\n  return icon !== '' ? icon : backUpIcon;\n};\n","import { TabBodyProps } from '@/components/tabs';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, useId, useState } from 'react';\nimport './panel-switcher-desktop.css';\nimport { Button } from '@/components/button';\nimport { ButtonsHeaderData } from '@/components/panel-switcher';\nimport { handleIcons } from '../helper';\n\nexport interface PanelSwitcherDesktopProps extends ComponentProps<'div'> {\n  buttonListRef: React.RefObject<HTMLDivElement | null>;\n  panelRef: React.RefObject<HTMLDivElement | null>;\n  activeButton: number;\n  activateButton: (index: number) => void;\n  buttonsHeaderData: Array<ButtonsHeaderData>;\n  buttonsBodyData: Array<ReactElement<TabBodyProps>>;\n  darkMode?: boolean;\n}\n\nexport const PanelSwitcherDesktop: FC<PanelSwitcherDesktopProps> = ({\n  buttonListRef,\n  panelRef,\n  activeButton,\n  activateButton,\n  buttonsHeaderData,\n  buttonsBodyData,\n  darkMode\n}) => {\n  const generatedId = useId();\n  const [isPressed, setIsPressed] = useState<boolean[]>(new Array(buttonsHeaderData.length).fill(false));\n\n  const panelSwitcherWrapperClassName = classNames('panel-switcher-wrapper desktop flex-1');\n  const panelSwitcherTabsListClassNames = classNames('panel-button-group desktop');\n\n  const selectedButton = Math.max(activeButton, 0);\n\n  const focusTab = (index: number) => {\n    const buttons = buttonListRef.current?.querySelectorAll('button');\n    if (buttons && buttons[index]) {\n      buttons[index].focus();\n    }\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent, index: number) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        event.preventDefault();\n        setIsPressed((prev) => {\n          const newState = [...prev];\n          newState[index] = true;\n          return newState;\n        });\n        break;\n      case 'ArrowUp':\n        focusTab((index - 1 + buttonsHeaderData.length) % buttonsHeaderData.length);\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusTab((index + 1) % buttonsHeaderData.length);\n        event.preventDefault();\n        break;\n      case 'Tab':\n        if (!event.shiftKey) {\n          event.preventDefault();\n          panelRef.current?.focus();\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handleKeyUp = (event: React.KeyboardEvent, index: number) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        activateButton(index);\n        setIsPressed((prev) => {\n          const newState = [...prev];\n          newState[index] = false;\n          return newState;\n        });\n        break;\n    }\n  };\n\n  const handleMouseDown = (index: number) => {\n    setIsPressed((prev) => {\n      const newState = [...prev];\n      newState[index] = true;\n      return newState;\n    });\n  };\n\n  const handleMouseUp = (index: number) => {\n    activateButton(index);\n\n    setIsPressed((prev) => {\n      const newState = [...prev];\n      newState[index] = false;\n      return newState;\n    });\n  };\n\n  return (\n    <div className={panelSwitcherWrapperClassName}>\n      <div className=\"container mx-auto grid xl:grid-cols-12 gap-x-32\">\n        <div className=\"xl:col-span-4\">\n          <div ref={buttonListRef} role=\"listbox\" className={panelSwitcherTabsListClassNames}>\n            {buttonsHeaderData.map((buttonsHeader: ButtonsHeaderData, index) => {\n              const isActive = selectedButton === index;\n              const key = `panel-button-${generatedId}-${index}`;\n\n              const hasIcon = buttonsHeader.withIcon;\n              const leadingIcon = buttonsHeader.leadingIcon;\n              const leadingIconHover = buttonsHeader.leadingIconHover;\n\n              const panelButtonClassNames = classNames('panel-button', {\n                'is-active': isActive,\n                'panel-button-darkMode': darkMode\n              });\n\n              return (\n                <Button\n                  id={key}\n                  key={key}\n                  role=\"option\"\n                  darkMode={darkMode}\n                  className={panelButtonClassNames}\n                  appearance=\"link\"\n                  variant=\"primary\"\n                  hasIcon={true}\n                  leadingIcon={handleIcons(hasIcon, leadingIcon, true)}\n                  leadingIconHover={handleIcons(hasIcon, leadingIconHover, false)}\n                  trailingIcon={isPressed[index] ? 'agora-solid-arrow-right-circle' : 'agora-line-arrow-right-circle'}\n                  trailingIconHover=\"agora-solid-arrow-right-circle\"\n                  tabIndex={isActive ? 0 : -1}\n                  onClick={() => {\n                    activateButton(index);\n                  }}\n                  onKeyDown={(evt) => handleKeyDown(evt, index)}\n                  onKeyUp={(evt) => handleKeyUp(evt, index)}\n                  onMouseDown={() => handleMouseDown(index)}\n                  onMouseUp={() => handleMouseUp(index)}\n                  aria-selected={isActive}\n                >\n                  {buttonsHeader?.child?.props?.children}\n                </Button>\n              );\n            })}\n          </div>\n        </div>\n        <div className=\"xl:col-span-7 xl:col-start-6 w-full\">\n          {buttonsBodyData[selectedButton] && (\n            <div\n              className=\"panel-content\"\n              role=\"region\"\n              ref={panelRef}\n              {...(stringToBoolean(buttonsBodyData[selectedButton].props.focusableContent) ? { tabIndex: 0 } : { tabIndex: -1 })}\n              aria-labelledby={`agora-panel-${generatedId}-${selectedButton}`}\n            >\n              {buttonsBodyData[selectedButton].props.children}\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, KeyboardEvent, ReactElement, RefObject, useEffect, useId, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@/components/button';\nimport { ModalConfiguration, ModalProvider, useModalContext } from '@/components/modal-dialog';\nimport { TabBodyProps } from '@/components/tabs';\nimport './panel-switcher-mobile.css';\nimport { ButtonsHeaderData } from '@/components/panel-switcher';\nimport { handleIcons } from '../helper';\n\nexport interface PanelSwitcherMobileProps {\n  modalCloseButtonLabel: string;\n  buttonListRef: RefObject<HTMLDivElement | null>;\n  buttonsHeaderData: Array<ButtonsHeaderData>;\n  buttonsBodyData: Array<ReactElement<TabBodyProps>>;\n  activeButton?: number;\n  darkMode?: boolean;\n}\n\nexport const ModalContent: FC<{ content: React.ReactNode }> = ({ content }) => {\n  return <div>{content}</div>;\n};\n\nexport const PanelSwitcherMobileInternal: FC<PanelSwitcherMobileProps> = ({\n  modalCloseButtonLabel,\n  buttonListRef,\n  buttonsHeaderData,\n  buttonsBodyData,\n  activeButton,\n  darkMode\n}) => {\n  const generatedId = useId();\n  const { show } = useModalContext();\n  const buttonsRef = useRef<(HTMLButtonElement | null)[]>([]);\n  const [isPressed, setIsPressed] = useState<boolean[]>(new Array(buttonsHeaderData.length).fill(false));\n  const [focusedButton, setFocusedButton] = useState<number | undefined>(activeButton);\n\n  const panelSwitcherMobileClassName = classNames('panel-switcher-mobile');\n  const panelButtonListClassNames = classNames('panel-button-list mobile');\n\n  const openModalHandler = (index: number) => {\n    const buttonRef = buttonsRef.current[index];\n    const content = buttonsBodyData[index].props.children;\n    const modalConfig: ModalConfiguration = {\n      closeButtonLabel: `${modalCloseButtonLabel}`,\n      darkMode,\n      onHide: () => {\n        buttonRef?.focus();\n      }\n    };\n    show(<ModalContent content={content} />, modalConfig);\n  };\n\n  useEffect(() => {\n    if (focusedButton !== undefined && buttonsRef.current[focusedButton]) {\n      buttonsRef.current[focusedButton]?.focus();\n    }\n  }, [focusedButton]);\n\n  const handleKeyDown = (evt: KeyboardEvent, index?: number) => {\n    const currentFocus = document.activeElement;\n    const isFocusOnPanelButtons = buttonsRef.current.includes(currentFocus as HTMLButtonElement);\n\n    if ((evt.code === 'ArrowUp' || evt.code === 'ArrowDown') && isFocusOnPanelButtons) {\n      evt.preventDefault();\n\n      setFocusedButton((prevBtn) => {\n        const currentButton = prevBtn ?? 0;\n        const totalButtons = buttonsHeaderData.length;\n\n        if (evt.code === 'ArrowUp') {\n          return (currentButton - 1 + totalButtons) % totalButtons;\n        } else if (evt.code === 'ArrowDown') {\n          return (currentButton + 1) % totalButtons;\n        }\n      });\n    }\n\n    if (evt.code === 'Tab') {\n      const isKey = evt.code === 'Tab';\n\n      if (isKey && isFocusOnPanelButtons) {\n        if (evt.shiftKey) {\n          buttonsRef.current[0]?.focus();\n        } else {\n          buttonsRef.current[buttonsRef.current.length - 1]?.focus();\n        }\n      }\n    }\n\n    if ((evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') && isFocusOnPanelButtons) {\n      setIsPressed((prev) => {\n        const newPressedState = [...prev];\n        if (index !== undefined) newPressedState[index] = true;\n        return newPressedState;\n      });\n    }\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent, index: number) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      setIsPressed((prev) => {\n        const newPressedState = [...prev];\n        newPressedState[index] = false;\n        return newPressedState;\n      });\n    }\n  };\n\n  const handleMouseDown = (index: number) => {\n    setIsPressed((prev) => {\n      const newPressedState = [...prev];\n      newPressedState[index] = true;\n      return newPressedState;\n    });\n  };\n\n  const handleMouseUp = (index: number) => {\n    openModalHandler(index);\n\n    setIsPressed((prev) => {\n      const newPressedState = [...prev];\n      newPressedState[index] = false;\n      return newPressedState;\n    });\n  };\n\n  return (\n    <div className={panelSwitcherMobileClassName}>\n      <div ref={buttonListRef} className={panelButtonListClassNames}>\n        {buttonsHeaderData.map((buttonsHeader: ButtonsHeaderData, index) => {\n          const key = `panel-button-${generatedId}-${index}`;\n\n          const hasIcon = buttonsHeader.withIcon;\n          const leadingIcon = buttonsHeader.leadingIcon;\n          const leadingIconHover = buttonsHeader.leadingIconHover;\n\n          const panelButtonClassNames = classNames('panel-button', {\n            'panel-button-darkMode': darkMode\n          });\n\n          return (\n            <Button\n              ref={(el) => {\n                buttonsRef.current[index] = el;\n              }}\n              key={key}\n              id={key}\n              className={panelButtonClassNames}\n              appearance=\"link\"\n              variant=\"primary\"\n              hasIcon={true}\n              leadingIcon={handleIcons(hasIcon, leadingIcon, true)}\n              leadingIconHover={handleIcons(hasIcon, leadingIconHover, false)}\n              trailingIcon={isPressed[index] ? 'agora-solid-plus-circle' : 'agora-line-plus-circle'}\n              trailingIconHover=\"agora-solid-plus-circle\"\n              onClick={() => openModalHandler(index)}\n              onKeyDown={(evt) => handleKeyDown(evt, index)}\n              onKeyUp={(evt) => handleKeyUp(evt, index)}\n              role=\"option\"\n              darkMode={darkMode}\n              onMouseDown={() => handleMouseDown(index)}\n              onMouseUp={() => handleMouseUp(index)}\n            >\n              {buttonsHeader?.child?.props?.children}\n            </Button>\n          );\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport const PanelSwitcherMobile: FC<PanelSwitcherMobileProps> = (props) => {\n  return (\n    <ModalProvider>\n      <PanelSwitcherMobileInternal {...props} />\n    </ModalProvider>\n  );\n};\n","import React, { Children, FC, isValidElement, ReactElement, useEffect, useRef, useState } from 'react';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { TabBodyProps, TabProps } from '../tabs';\nimport { PanelSwitcherDesktop } from './desktop/panel-switcher-desktop';\nimport { PanelSwitcherMobile } from './mobile/panel-switcher-mobile';\nimport { ButtonsHeaderData, PanelData } from '@/components/panel-switcher';\n\nexport interface PanelSwitcherContainerProps {\n  /**\n   * Collection of PanelData to be displayed by panel.\n   */\n  data: PanelData[];\n  /**\n   * Collection of the content displayed by triggering a panel button.\n   */\n  children: ReactElement<TabProps> | Array<ReactElement<TabProps>>;\n  /**\n   * Defines the label of the modal close button.\n   */\n  modalCloseButtonLabel: string;\n  /**\n   * The flag to set if the footer is in dark mode or light mode.\n   */\n  darkMode?: boolean;\n}\n\nexport const PanelSwitcherContainer: FC<PanelSwitcherContainerProps> = ({ data, children, modalCloseButtonLabel, darkMode }) => {\n  const panelRef = useRef<HTMLDivElement | null>(null);\n  const buttonListRef = useRef<HTMLDivElement | null>(null);\n\n  const [activeButton, setActiveButton] = useState(0);\n  const [buttonsHeaderData, setButtonsHeaderData] = useState<Array<ButtonsHeaderData>>([]);\n  const [buttonsBodyData, setButtonsBodyData] = useState<Array<ReactElement<TabBodyProps>>>([]);\n\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isMobileOrTablet = width < xlScreen;\n\n  const activateButton = (index: number) => {\n    setActiveButton(index);\n  };\n\n  useEffect(() => {\n    const parsedChildren = Children.toArray(children) as ReactElement<TabProps>[];\n    const header: Array<ButtonsHeaderData> = [];\n    const body: Array<ReactElement<TabBodyProps>> = [];\n\n    parsedChildren.forEach((element, index) => {\n      if (Array.isArray(element.props.children)) {\n        const [headerChild, bodyChild] = element.props.children;\n\n        if (headerChild && isValidElement(headerChild)) {\n          header.push({\n            child: headerChild,\n            withIcon: data?.[index]?.withIcon ?? false,\n            leadingIcon: data?.[index]?.leadingIcon ?? '',\n            leadingIconHover: data?.[index]?.leadingIconHover ?? ''\n          });\n        }\n\n        if (bodyChild && isValidElement(bodyChild)) {\n          body.push(bodyChild as ReactElement<TabBodyProps>);\n        }\n      }\n    });\n\n    setButtonsHeaderData(header);\n    setButtonsBodyData(body);\n  }, [children, data]);\n\n  return (\n    <>\n      {!isMobileOrTablet ? (\n        <PanelSwitcherDesktop\n          panelRef={panelRef}\n          darkMode={darkMode}\n          activeButton={activeButton}\n          buttonListRef={buttonListRef}\n          activateButton={activateButton}\n          buttonsBodyData={buttonsBodyData}\n          buttonsHeaderData={buttonsHeaderData}\n        />\n      ) : (\n        <PanelSwitcherMobile\n          darkMode={darkMode}\n          activeButton={activeButton}\n          buttonListRef={buttonListRef}\n          buttonsBodyData={buttonsBodyData}\n          buttonsHeaderData={buttonsHeaderData}\n          modalCloseButtonLabel={modalCloseButtonLabel}\n        />\n      )}\n    </>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport { BooleanProp } from '@/models';\n\nexport interface TabBodyProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab body content.\n   */\n  children?: ReactNode;\n  /**\n   * Flag that sets the tab index of the tab body container accordingly to the following accessibility rule: When the tab panel does not contain any focusable elements or the first element with content is not focusable, the tabpanel should set tabindex=\"0\" to include it in the tab sequence of the page.\n   */\n  focusableContent?: BooleanProp;\n}\n\nexport const TabBody: FC<TabBodyProps> = (props: TabBodyProps) => <div {...props} />;\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nexport interface TabHeaderProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab header content.\n   */\n  children?: ReactNode;\n}\n\nexport const TabHeader: FC<TabHeaderProps> = (props: TabHeaderProps) => <div {...props} />;\n","import React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport { BooleanProp } from '@/models';\nimport { TabBodyProps } from './tab-body';\nimport { TabHeaderProps } from './tab-header';\n\nexport interface TabProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab content structure that contains a header and a body.\n   */\n  children?: Array<ReactElement<TabHeaderProps> | ReactElement<TabBodyProps>>;\n  /**\n   * Set tab as the active tab.\n   */\n  active?: BooleanProp;\n}\n\nexport const Tab: FC<TabProps> = (props: TabProps) => <div {...props} />;\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, RefObject, useId } from 'react';\nimport { TabBodyProps } from '../tab-body';\nimport { TabHeaderProps } from '../tab-header';\nimport { TabCurrentType } from '../tabs';\nimport './tabs-desktop.css';\n\nexport interface TabsDesktopProps extends ComponentPropsWithoutRef<'div'> {\n  fullWidth: BooleanProp;\n  vertically?: BooleanProp;\n  tabListRef: RefObject<HTMLDivElement | null>;\n  tabPanelRef: RefObject<HTMLDivElement | null>;\n  activeTab: number;\n  activateTab: (index: number) => void;\n  currentType: TabCurrentType;\n  tabPanelClassName: string;\n  tabsHeaderData: Array<ReactElement<TabHeaderProps>>;\n  tabsBodyData: Array<ReactElement<TabBodyProps>>;\n  isDesktop: boolean;\n}\n\nexport const TabsDesktop: FC<TabsDesktopProps> = ({\n  fullWidth,\n  className,\n  vertically,\n  tabListRef,\n  tabPanelRef,\n  activeTab,\n  activateTab,\n  currentType,\n  tabPanelClassName,\n  tabsHeaderData,\n  tabsBodyData,\n  isDesktop\n}) => {\n  const generatedId = useId();\n\n  const tabsClassName = classNames(\n    'agora-tabs desktop',\n    { 'full-width': stringToBoolean(fullWidth), 'vertically': stringToBoolean(vertically) },\n    className\n  );\n\n  const tabListClassNames = classNames('tab-list desktop');\n\n  //  DESKTOP MUST ALWAYS KEEP A TAB OPEN\n  const desktopActiveTab = Math.max(activeTab, 0);\n\n  return (\n    <div hidden={!isDesktop} className={tabsClassName}>\n      <div ref={tabListRef} role=\"tablist\" className={tabListClassNames}>\n        {Children.map(tabsHeaderData, (child: ReactElement<TabHeaderProps>, index) => {\n          const isActive = desktopActiveTab === index;\n\n          const key = `agora-tab-${generatedId}-${index}`;\n          const tabListItemClassNames = classNames('tab-list-item', {\n            'items-start': vertically,\n            'items-center': !vertically && stringToBoolean(fullWidth),\n            'active': isActive,\n            'current-neutral': currentType === 'neutral',\n            'current-primary': currentType === 'primary',\n            'current-secondary': currentType === 'secondary'\n          });\n\n          return (\n            <button\n              id={key}\n              key={key}\n              role=\"tab\"\n              tabIndex={isActive ? 0 : -1}\n              onClick={(evt) => {\n                evt.currentTarget.blur();\n                activateTab(index);\n              }}\n              aria-selected={isActive}\n              className={tabListItemClassNames}\n            >\n              {child.props.children}\n            </button>\n          );\n        })}\n      </div>\n\n      {tabsBodyData[desktopActiveTab] && (\n        <div role=\"tabpanel\" className={tabPanelClassName} aria-labelledby={`agora-tab-${generatedId}-${desktopActiveTab}`}>\n          <div\n            className=\"tab-panel-content\"\n            ref={tabPanelRef}\n            {...(stringToBoolean(tabsBodyData[desktopActiveTab].props.focusableContent) ? { tabIndex: 0 } : { tabIndex: -1 })}\n          >\n            {tabsBodyData[desktopActiveTab].props.children}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, RefObject, useId } from 'react';\nimport { TabBodyProps } from '../tab-body';\nimport { TabHeaderProps } from '../tab-header';\nimport { TabCurrentType } from '../tabs';\nimport './tabs-mobile.css';\n\nimport { Accordion } from '@/components/accordion';\nimport { AccordionGroup } from '@/components/accordion-group';\n\ninterface TabsMobileProps extends ComponentPropsWithoutRef<'div'> {\n  fullWidth: BooleanProp;\n  tabListRef: RefObject<HTMLDivElement | null>;\n  activeTab: number;\n  activateTab: (index: number) => void;\n  currentType: TabCurrentType;\n  tabsHeaderData: Array<ReactElement<TabHeaderProps>>;\n  tabsBodyData: Array<ReactElement<TabBodyProps>>;\n  isTabletOrMobile: boolean;\n}\n\nexport const TabsMobile: FC<TabsMobileProps> = ({\n  fullWidth,\n  className,\n  tabListRef,\n  activeTab,\n  activateTab,\n  currentType,\n  tabsHeaderData,\n  tabsBodyData,\n  isTabletOrMobile\n}) => {\n  const generatedId = useId();\n\n  const tabsClassName = classNames('agora-tabs mobile', { 'full-width': stringToBoolean(fullWidth) }, className);\n\n  const tabListClassNames = classNames('tab-list mobile');\n\n  return (\n    <div hidden={!isTabletOrMobile} className={tabsClassName}>\n      <div ref={tabListRef} className={tabListClassNames}>\n        <AccordionGroup>\n          {Children.map(tabsHeaderData, (child: ReactElement<TabHeaderProps>, index) => {\n            const isActive = activeTab === index;\n            const key = `agora-tab-${generatedId}-${index}`;\n            const tabListItemClassNames = classNames('tab-list-item mobile', {\n              'active': isActive,\n              'current-neutral': currentType === 'neutral',\n              'current-primary': currentType === 'primary',\n              'current-secondary': currentType === 'secondary'\n            });\n\n            return (\n              <Accordion\n                id={key}\n                key={key}\n                onExpanded={() => {\n                  activateTab(index);\n                }}\n                onCollapsed={() => {\n                  activateTab(-1);\n                }}\n                className={tabListItemClassNames}\n                headingTitle={child.props.children}\n                expanded={isActive}\n              >\n                {tabsBodyData[index].props.children}\n              </Accordion>\n            );\n          })}\n        </AccordionGroup>\n      </div>\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  useCallback,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\nimport { TabProps } from './tab';\nimport { TabBodyProps } from './tab-body';\nimport { TabHeaderProps } from './tab-header';\n\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { TabsDesktop } from './desktop/tabs-desktop';\nimport { TabsMobile } from './mobile/tabs-mobile';\n\nexport type TabCurrentType = 'neutral' | 'primary' | 'secondary';\n\nexport interface TabsProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Collection of tabs.\n   */\n  children: ReactElement<TabProps> | Array<ReactElement<TabProps>>;\n  /**\n   * Defines if tab headers should be rendered as full width tabs.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Automatic activation.\n   */\n  automaticActivation?: BooleanProp;\n  /**\n   * Tab vertical orientation\n   */\n  vertically?: BooleanProp;\n  /**\n   * Tab current style type\n   */\n  currentType?: TabCurrentType;\n  /**\n   * Tab activation event.\n   */\n  onTabActivation?: (index: number) => void;\n}\n\nexport const Tabs: FC<TabsProps> = ({\n  children,\n  automaticActivation = true,\n  fullWidth = false,\n  className = '',\n  vertically,\n  onTabActivation,\n  currentType = 'neutral',\n  ...props\n}) => {\n  const tabPanelRef = useRef<HTMLDivElement | null>(null);\n\n  const desktopTabListRef = useRef<HTMLDivElement | null>(null);\n  const mobileTabListRef = useRef<HTMLDivElement | null>(null);\n\n  const [activeTab, setActiveTab] = useState(0);\n  const [focusedTab, setFocusedTab] = useState(0);\n  const [tabsHeaderData, setTabsHeaderData] = useState<Array<ReactElement<TabHeaderProps>>>([]);\n  const [tabsBodyData, setTabsBodyData] = useState<Array<ReactElement<TabBodyProps>>>([]);\n\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isTabletOrMobile = width < xlScreen;\n  const isDesktop = width >= xlScreen;\n\n  const activateTab = useCallback(\n    (index: number) => {\n      setActiveTab(index);\n      onTabActivation?.(index);\n    },\n    [onTabActivation]\n  );\n\n  useEffect(() => {\n    const header: Array<ReactElement<TabHeaderProps>> = [];\n    const body: Array<ReactElement<TabBodyProps>> = [];\n\n    const parsedChildren = Children.toArray(children) as ReactElement<TabProps>[];\n\n    Children.forEach(parsedChildren, (element: ReactElement<TabProps>, index) => {\n      if (!isValidElement(element)) {\n        return;\n      }\n\n      if (stringToBoolean(element.props.active)) {\n        activateTab(index);\n      }\n\n      header.push(element.props?.children?.[0] as ReactElement<TabHeaderProps>);\n      body.push(element.props?.children?.[1] as ReactElement<TabBodyProps>);\n    });\n\n    setTabsHeaderData(header);\n    setTabsBodyData(body);\n  }, [children, activateTab]);\n\n  const navigationArrowRight = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (!stringToBoolean(vertically) && !isTabletOrMobile) {\n      if (focusedTab === currentTabList.length - 1) {\n        currentTabList[0].focus();\n        newFocusedTab = 0;\n      } else {\n        newFocusedTab = focusedTab + 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationArrowLeft = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (!stringToBoolean(vertically) && !isTabletOrMobile) {\n      if (focusedTab === 0) {\n        currentTabList[currentTabList.length - 1].focus();\n        newFocusedTab = currentTabList.length - 1;\n      } else {\n        newFocusedTab = focusedTab - 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationArrowDown = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (stringToBoolean(vertically) || isTabletOrMobile) {\n      if (focusedTab === currentTabList.length - 1) {\n        currentTabList[0].focus();\n        newFocusedTab = 0;\n      } else {\n        newFocusedTab = focusedTab + 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationArrowUp = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (stringToBoolean(vertically) || isTabletOrMobile) {\n      if (focusedTab === 0) {\n        currentTabList[currentTabList.length - 1].focus();\n        newFocusedTab = currentTabList.length - 1;\n      } else {\n        newFocusedTab = focusedTab - 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationHome = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    const newFocusedTab = 0;\n\n    if (currentTabList[newFocusedTab]) {\n      currentTabList[newFocusedTab].focus();\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationEnd = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    const newFocusedTab = currentTabList.length - 1;\n\n    if (currentTabList[newFocusedTab]) {\n      currentTabList[newFocusedTab].focus();\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const handleTabListItemKeyDown = (evt: KeyboardEvent<HTMLDivElement>) => {\n    const eventTargetTag = (evt.target as HTMLElement).tagName;\n    const eventTargetParentRole = (evt.target as HTMLElement).parentElement?.role;\n\n    if (isTabletOrMobile) {\n      return;\n    }\n\n    const tabs = Array.from(desktopTabListRef.current?.querySelectorAll('.tab-list-item') ?? []).map((o) => o as HTMLButtonElement);\n    if (tabs.length == 0) {\n      return;\n    }\n\n    if (evt.code === 'Tab') {\n      const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n      if (isOnTabList && !evt.shiftKey) {\n        evt.preventDefault();\n        tabPanelRef.current?.focus();\n        return;\n      }\n\n      const isOnTabPanel = tabPanelRef.current === document.activeElement;\n      if (isOnTabPanel && evt.shiftKey) {\n        evt.preventDefault();\n\n        if (tabs[activeTab]) {\n          tabs[activeTab].focus();\n        }\n        return;\n      }\n\n      return;\n    }\n\n    switch (evt.code) {\n      case 'Home':\n        navigationHome(tabs);\n        break;\n\n      case 'End':\n        navigationEnd(tabs);\n        break;\n\n      case 'ArrowRight':\n        navigationArrowRight(tabs);\n        break;\n\n      case 'ArrowLeft':\n        navigationArrowLeft(tabs);\n        break;\n\n      case 'ArrowDown':\n        navigationArrowDown(tabs);\n        break;\n\n      case 'ArrowUp':\n        navigationArrowUp(tabs);\n        break;\n\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        if (eventTargetTag === 'BUTTON' && eventTargetParentRole === 'tablist') {\n          evt.preventDefault();\n          activateTab(focusedTab);\n          break;\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  const tabPanelClassName = classNames('tab-panel', {\n    'current-neutral': currentType === 'neutral',\n    'current-primary': currentType === 'primary',\n    'current-secondary': currentType === 'secondary'\n  });\n\n  return (\n    <div {...props} role=\"none\" onKeyDown={handleTabListItemKeyDown}>\n      <TabsDesktop\n        isDesktop={isDesktop}\n        className={className}\n        fullWidth={fullWidth}\n        vertically={vertically}\n        tabListRef={desktopTabListRef}\n        tabPanelRef={tabPanelRef}\n        activeTab={activeTab}\n        activateTab={activateTab}\n        currentType={currentType}\n        tabPanelClassName={tabPanelClassName}\n        tabsHeaderData={tabsHeaderData}\n        tabsBodyData={tabsBodyData}\n      />\n\n      <TabsMobile\n        isTabletOrMobile={isTabletOrMobile}\n        className={className}\n        fullWidth={fullWidth}\n        tabListRef={mobileTabListRef}\n        activeTab={activeTab}\n        activateTab={activateTab}\n        currentType={currentType}\n        tabsHeaderData={tabsHeaderData}\n        tabsBodyData={tabsBodyData}\n      />\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { PanelSwitcherContainer } from './panel-switcher-container';\nimport { Tab, TabBody, TabHeader } from '../tabs';\nimport { convertContentToNode, PanelSwitcherProps } from './helper';\n\nexport const PanelSwitcher: FC<PanelSwitcherProps> = ({ data, darkMode = false, ...props }) => (\n  <div className=\"agora-panel-switcher\">\n    <PanelSwitcherContainer data={data} darkMode={darkMode} {...props}>\n      {data?.map((panel, index) => {\n        const key = `key-${index}`;\n        const contentNode = convertContentToNode(panel.content, darkMode);\n\n        return (\n          <Tab key={key}>\n            <TabHeader>{panel.text}</TabHeader>\n            <TabBody>{contentNode}</TabBody>\n          </Tab>\n        );\n      })}\n    </PanelSwitcherContainer>\n  </div>\n);\n","import { createContext, ReactNode, useContext } from 'react';\nimport { DialogElement } from '../dialog';\nimport { PopupConfiguration } from './popup-config.model';\n\nexport interface PopupContextProps {\n  /**\n   * The visible dialog element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a dialog is visible or not.\n   */\n  visibility?: boolean;\n  /**\n   * Shows a new popup with the configurations provided.\n   */\n  show: (content: ReactNode, config: PopupConfiguration) => void;\n  /**\n   * Hides the visible popup.\n   */\n  hide: () => void;\n}\n\nconst PopupContext = createContext<PopupContextProps>({} as PopupContextProps);\n\nconst usePopupContext = (): PopupContextProps => {\n  return useContext(PopupContext);\n};\n\nexport { PopupContext, usePopupContext };\n","import { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, ReactNode, useEffect, useRef, useState } from 'react';\nimport { PopupConfiguration } from './popup-config.model';\nimport { usePopupContext } from './popup-context';\nimport './popup-dialog.css';\nimport { useWindowSize } from '@/hooks';\n\nexport interface PopupDialogProps {\n  /**\n   *  Popup configurations\n   */\n  configurations: PopupConfiguration;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nexport const PopupDialog: FC<PopupDialogProps> = ({ configurations, children }) => {\n  const { height, width } = useWindowSize();\n\n  const popupContainerRef = useRef<HTMLDivElement>(null);\n  const popupHeaderRef = useRef<HTMLDivElement>(null);\n\n  const [containerMaxHeight, setContainerMaxHeight] = useState('');\n  const [maxHeight, setMaxHeight] = useState('');\n\n  const { hide } = usePopupContext();\n\n  const dialogClassNames = classNames('agora-popup-dialog max-h-full rounded-16 p-32', `agora-popup-dialog-${configurations.dimensions}`, {\n    'dark-mode': stringToBoolean(configurations.darkMode)\n  });\n\n  const titleClassNames = classNames('title mt-8 w-full line-clamp-6 text-xl-bold');\n\n  useEffect(() => {\n    const containerElem = popupContainerRef.current;\n    const headerElem = popupHeaderRef.current;\n\n    if (containerElem && headerElem) {\n      let margins = 64 * 2;\n\n      if (width >= 768) {\n        margins = 128 * 2;\n      }\n\n      const containerHeight = height - margins;\n      const { height: headerHeight } = (headerElem as HTMLElement).getBoundingClientRect();\n\n      setContainerMaxHeight(`${containerHeight}px`);\n      setMaxHeight(`${containerHeight - headerHeight - 16 - 64}px`);\n    }\n  }, [children, width, height]);\n\n  return (\n    <div className=\"absolute z-dialog max-h-full flex justify-center my-64 mx-32 md:my-128 md:mx-64\">\n      <div ref={popupContainerRef} className={dialogClassNames} style={{ maxHeight: containerMaxHeight ?? 'none' }}>\n        <div ref={popupHeaderRef} className=\"agora-popup-dialog-header flex flex-row items-start gap-24 mb-16\">\n          <div className={titleClassNames}>{configurations.title}</div>\n          <Button\n            onClick={hide}\n            appearance=\"link\"\n            variant=\"neutral\"\n            iconOnly\n            hasIcon\n            trailingIcon=\"agora-line-x\"\n            trailingIconHover=\"agora-solid-x\"\n            aria-label={configurations.closeAriaLabel}\n            darkMode={configurations.darkMode}\n          ></Button>\n        </div>\n        <div style={{ maxHeight: maxHeight ?? 'none' }} className={`agora-popup-dialog-body overflow-y-auto`}>\n          {children}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils';\nimport { PopupConfiguration } from './popup-config.model';\nimport { PopupContext, PopupContextProps } from './popup-context';\nimport { PopupDialog } from './popup-dialog';\n\nexport interface PopupProviderProps {\n  /**\n   * If not a fullscreen dialog, allows the user to dismiss the dialog by clicking in the backdrop\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Allows the dialog to be closed by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n}\n\nconst PopupProvider: FC<PopupProviderProps> = ({ dismissOnBackdropClick = true, dismissOnEscape = true, children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n  const [dialogConfigs, setDialogConfigs] = useState<PopupConfiguration>();\n\n  const show = useCallback(\n    (currentDialogChildren: ReactNode, currentDialogConfigs: PopupConfiguration) => {\n      setDialogChildren(currentDialogChildren);\n      setDialogConfigs(currentDialogConfigs);\n      dialogRef.current?.show();\n    },\n    [setDialogChildren, setDialogConfigs]\n  );\n\n  const hide = useCallback((): void => {\n    dialogRef.current?.hide();\n  }, []);\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        show,\n        hide\n      }) as PopupContextProps,\n    [show, hide]\n  );\n\n  return (\n    <PopupContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen={false}\n        dismissOnBackdropClick={stringToBoolean(dismissOnBackdropClick)}\n        dismissOnEscape={stringToBoolean(dismissOnEscape)}\n        aria-label={dialogConfigs?.['aria-label']}\n      >\n        {!!dialogConfigs && <PopupDialog configurations={dialogConfigs}>{dialogChildren}</PopupDialog>}\n      </Dialog>\n      {children}\n    </PopupContext>\n  );\n};\n\nexport { PopupProvider };\n","import React, { ComponentProps, FC, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport './progress-bar.css';\n\nexport interface ProgressBarProps extends ComponentProps<'div'> {\n  /**\n   * The current value of the progress.\n   */\n  value?: number;\n  /**\n   * The maximum value of the progress.\n   */\n  max?: number;\n  /**\n   * The label text to display.\n   */\n  label?: string;\n  /**\n   * Whether to hide the label or not.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Whether to hide the percentage value or not.\n   */\n  hidePercentageValue?: BooleanProp;\n  /**\n   * Whether the progress is current/active or not.\n   */\n  current?: BooleanProp;\n  /**\n   * Whether the progress has error or not.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Whether the progress bar is the first or not.\n   */\n  isFirst?: boolean;\n  /**\n   * Whether the progress bar is the last or not.\n   */\n  isLast?: boolean;\n  /**\n   * Whether the progress bass is in the middle or not.\n   */\n  isMiddle?: boolean;\n  /**\n   * The flag to set if the progress bar is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const ProgressBar: FC<ProgressBarProps> = ({\n  value = 0,\n  max = 0,\n  className,\n  label,\n  hideLabel,\n  hidePercentageValue,\n  current,\n  hasError,\n  isFirst,\n  isLast,\n  isMiddle,\n  darkMode = false,\n  ...props\n}) => {\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const progressPercentage = max !== 0 ? ((value / max) * 100).toFixed(0) : 0;\n\n  const classes = classNames('agora-progress-bar', className, {\n    'progress-error': stringToBoolean(hasError),\n    'progress-complete': value > 0 && value === max,\n    'progress-empty': value === 0,\n    'progress-progress': stringToBoolean(current) && value < max,\n    'progress-hold': !stringToBoolean(current) && value < max,\n    'progress-bar-border-left': isFirst,\n    'progress-bar-border-right': isLast,\n    'progress-bar-border-horizontal': !isFirst && !isLast && !isMiddle,\n    'dark-mode': darkMode\n  });\n\n  const labelsClasses = classNames('agora-progress-bar progress-bar-labels', {\n    'dark-mode': darkMode\n  });\n\n  const percentageClasses = classNames(labelsClasses, {\n    'sr-only': stringToBoolean(hidePercentageValue),\n    'not-sr-only': !stringToBoolean(hidePercentageValue)\n  });\n\n  return (\n    <div className={classes} {...props}>\n      {!stringToBoolean(hideLabel) && (\n        <label htmlFor={propsClone.id} className={labelsClasses}>\n          {label}\n        </label>\n      )}\n      <progress\n        id={propsClone.id}\n        className=\"progress-bar\"\n        value={value}\n        max={max}\n        aria-valuetext={`${value}/${max}`}\n        aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n      />\n      <p className={percentageClasses} role=\"status\">\n        {progressPercentage}%\n      </p>\n    </div>\n  );\n};\n","import React, { Children, cloneElement, FC, Fragment, HtmlHTMLAttributes, isValidElement, ReactElement, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { ProgressBarProps } from '@/components/progress-bar';\n\nimport './progress-bar-group.css';\nimport { BooleanProp } from '@/models';\n\nexport interface ProgressBarGroupProps extends HtmlHTMLAttributes<HTMLDivElement> {\n  /**\n   * The label text to display.\n   */\n  label?: string;\n  /**\n   * Whether to hide the label or not.\n   */\n  hideLabel?: boolean;\n  /**\n   * List of progress components to use as children of the group.\n   */\n  children?: ReactElement<ProgressBarProps> | Array<ReactElement<ProgressBarProps>>;\n  /**\n   * Whether to hide the percentage value or not.\n   */\n  hidePercentageValues?: boolean;\n  /**\n   * Whether to display the progress bars in a sequential order or not.\n   */\n  sequential?: boolean;\n  /**\n   * The flag to set if the progress bar group is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const ProgressBarGroup: FC<ProgressBarGroupProps> = ({\n  label,\n  hideLabel,\n  hidePercentageValues,\n  children,\n  sequential,\n  darkMode = false,\n  ...props\n}): ReactElement => {\n  const progressBars = Children.toArray(children);\n\n  const activeCurrent = useMemo(() => {\n    let foundCurrent = false;\n    let currentCount = 0;\n\n    progressBars.forEach((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        if (p.props.current) {\n          currentCount += 1;\n          foundCurrent = true;\n        }\n      }\n    });\n\n    if (!foundCurrent) {\n      return 0;\n    }\n\n    if (foundCurrent && currentCount === 1) {\n      return progressBars.findIndex((p) => isValidElement<ProgressBarProps>(p) && p.props.current);\n    }\n\n    const firstNotCompletedIndex = progressBars.findIndex((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        const validatedValue = Math.max(0, Math.min(p.props.value ?? 0, p.props.max ?? 0));\n\n        return validatedValue < (p.props.max ?? 0);\n      }\n\n      return false;\n    });\n\n    return firstNotCompletedIndex < 0 ? progressBars.length - 1 : firstNotCompletedIndex;\n  }, [progressBars]);\n\n  const sumMaxValues = useMemo(() => {\n    let currentCount = 0;\n\n    progressBars.forEach((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        currentCount += p.props.max ?? 0;\n      }\n    });\n\n    return currentCount;\n  }, [progressBars]);\n\n  // function to render progress bars\n  const renderProgressBars = (child: ReactElement<ProgressBarProps>, index: number) => {\n    const isCurrent = index === activeCurrent;\n    let currentVal = child.props.value ?? 0;\n\n    if (sequential) {\n      currentVal = activeCurrent < index ? 0 : currentVal;\n    }\n    const isFirst = index === 0;\n    const isLast = index === progressBars.length - 1;\n    const isSingle = progressBars.length === 1;\n    const isMiddle = !isFirst && !isLast && !isSingle;\n\n    return cloneElement<ProgressBarProps>(child, {\n      'current': isCurrent,\n      'value': currentVal,\n      'aria-hidden': true,\n      isFirst,\n      isLast,\n      isMiddle,\n      darkMode\n    });\n  };\n\n  // function to be used to calculate the progress value\n  const getProgressValue = () => {\n    let value = 0;\n    Children.forEach(children, (child, index) => {\n      if (isValidElement<ProgressBarProps>(child)) {\n        if (child.props.value !== undefined && child.props.max !== undefined) {\n          if (!sequential || index <= activeCurrent) {\n            value += Math.min(child.props.value, child.props.max);\n          }\n        }\n      }\n    });\n    return Math.round((value / sumMaxValues) * 100);\n  };\n\n  const labelsClasses = classNames('agora-progress-bar progress-bar-labels', {\n    'dark-mode': darkMode\n  });\n\n  const percentageClasses = classNames(labelsClasses, {\n    'sr-only': hidePercentageValues,\n    'not-sr-only': !hidePercentageValues\n  });\n\n  const progressValue = getProgressValue();\n\n  return (\n    <div {...props}>\n      {!hideLabel && (\n        <div aria-hidden className={labelsClasses}>\n          {label}\n        </div>\n      )}\n      <div\n        className=\"progress-bar-group\"\n        role=\"progressbar\"\n        aria-valuenow={progressValue}\n        aria-valuetext={`${progressValue}%`}\n        aria-valuemax={100}\n        aria-label={label}\n      >\n        {Children.map(children, (child, index) =>\n          isValidElement<ProgressBarProps>(child) ? (\n            <Fragment key={child.props.id ?? index}>{renderProgressBars(child, index)}</Fragment>\n          ) : null\n        )}\n      </div>\n      {!hidePercentageValues && (\n        <div className={percentageClasses} role=\"status\">\n          {progressValue}%\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { HelperText } from '@/components/shared/helper-text';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport './radio.css';\n\nexport interface RadioButtonProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Child elements to render as custom label.\n   */\n  children?: ReactNode;\n  /**\n   * The flag to set if the radio button is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n}\n\nconst RadioButton: FC<RadioButtonProps> = ({\n  ref = null,\n  label,\n  hasError,\n  hideLabel,\n  required = true,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  darkMode,\n  hasHelperText,\n  helperText,\n  children,\n  className = '',\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const inputWrapper = classNames(\n    'agora-radio-button',\n    {\n      disabled: props.disabled,\n      error: stringToBoolean(hasError),\n      dark: stringToBoolean(darkMode)\n    },\n    className\n  );\n\n  return (\n    <>\n      <div hidden={propsClone.hidden} className={inputWrapper}>\n        <input\n          {...propsClone}\n          aria-describedby={hasFeedbackText ? `radio-${propsClone.id}-feedback` : (propsClone['aria-describedby'] ?? undefined)}\n          className=\"inner-input\"\n          type=\"radio\"\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          ref={ref}\n          required={isRequired}\n          tabIndex={propsClone.disabled ? -1 : 0}\n          disabled={propsClone.disabled}\n        />\n\n        <div className=\"radio-wrapper\">\n          <div className=\"mark-wrapper\">\n            <span className=\"mark\" />\n          </div>\n          {!hideLabel && (\n            <label className=\"label-wrapper\" htmlFor={propsClone.id}>\n              <span className=\"label\">{children ?? label}</span>\n            </label>\n          )}\n        </div>\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} className=\"!mt-0 ml-[52px]\" />}\n\n      {/* Feedback */}\n      {hasFeedbackText && (\n        <div className=\"agora-radio-button-feedback px-8\">\n          <Feedback\n            id={`radio-${propsClone.id}-feedback`}\n            feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n            feedbackText={feedbackText}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nexport { RadioButton };\n","import { Checkbox, CheckboxProps } from '@/components/checkbox';\nimport { InputSelectProps } from '@/components/input-select';\nimport { RadioButton, RadioButtonProps } from '@/components/radio';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, isValidElement, ReactElement } from 'react';\nimport './quiz-option.css';\n\nexport interface QuizOptionProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactElement<RadioButtonProps | CheckboxProps | InputSelectProps>;\n}\n\nexport const QuizOption: FC<QuizOptionProps> = ({ children, className = '', ...props }) => {\n  let isChildrenSelected = false;\n\n  if (isValidElement<RadioButtonProps>(children) && (children as ReactElement).type === RadioButton) {\n    isChildrenSelected = !!children.props.checked;\n  }\n\n  if (isValidElement<CheckboxProps>(children) && (children as ReactElement).type === Checkbox) {\n    isChildrenSelected = !!children.props.checked;\n  }\n\n  //  There is no need to check for input select because there is no need to style it (check figma).\n\n  const QuizOptionsClassName = classNames(className, 'agora-quiz-option', {\n    selected: isChildrenSelected\n  });\n\n  return (\n    <div className={QuizOptionsClassName} {...props}>\n      {children}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport { QuizOptionProps } from '@/components/quiz/quiz-option';\n\nexport interface QuizOptionsProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children: ReactElement<QuizOptionProps> | Array<ReactElement<QuizOptionProps>>;\n}\n\nexport const QuizOptions: FC<QuizOptionsProps> = ({ ...props }) => {\n  return <div {...props}>{props.children}</div>;\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Button } from '@/components/button';\nimport './quiz-item-summary.css';\n\nexport interface QuizItemSummaryProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * The dark mode boolean.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Navigation link. It can be a native anchor or any other type of link (example: NextJS link, ReactRouter Link, etc...).\n   */\n  backLink?: ReactNode;\n}\n\nexport const QuizItemSummary: FC<QuizItemSummaryProps> = ({ children, darkMode = false, backLink, className = '', ...props }) => {\n  const QuizItemSummaryClassName = classNames(className, 'agora-quiz-item-summary flex gap-x-32 justify-between items-center flex-wrap');\n\n  return (\n    <div className={QuizItemSummaryClassName} {...props}>\n      <div>{children}</div>\n      <Button\n        hasIcon\n        leadingIcon=\"agora-line-arrow-left-anchor\"\n        leadingIconHover=\"agora-solid-arrow-left-anchor\"\n        variant=\"primary\"\n        appearance=\"link\"\n        darkMode={stringToBoolean(darkMode)}\n      >\n        {backLink}\n      </Button>\n    </div>\n  );\n};\n","import React, { ChangeEvent, Children, cloneElement, FC, HtmlHTMLAttributes, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { RadioButtonProps } from '@/components/radio';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport interface RadioButtonGroupProps extends Omit<HtmlHTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n  /**\n   * Group legend.\n   */\n  legend?: ReactNode;\n  /**\n   * Group name\n   */\n  name?: string;\n  /**\n   * Sets the radio button in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below radio-button.\n   */\n  feedbackText?: ReactNode;\n\n  /**\n   *  List of radio button components to use as children of the group.\n   */\n  children?: ReactElement<RadioButtonProps> | Array<ReactElement<RadioButtonProps>>;\n  /**\n   *  Event triggered whenever any of the radio buttons changes is own state.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n}\nconst RadioButtonGroup: FC<RadioButtonGroupProps> = ({\n  className,\n  legend,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  onChange,\n\n  children,\n  name,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const innerOnChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    onChange?.(evt);\n  };\n\n  const containerClasses = classNames('agora-radio-button-group', className);\n\n  const mappedRadioButtons = Children.map(children, (child) => {\n    if (!isValidElement<RadioButtonProps>(child)) {\n      return null;\n    }\n\n    return cloneElement<RadioButtonProps>(child, {\n      'onChange': innerOnChange,\n      'name': name ?? generatedId,\n      'hasError': stringToBoolean(hasError),\n      'hasFeedback': stringToBoolean(hasFeedback),\n      'aria-describedby': hasFeedbackText ? `radio-group-${generatedId}-feedback` : undefined\n    } as RadioButtonProps);\n  });\n\n  return (\n    <div className={containerClasses}>\n      <fieldset {...props}>\n        {legend && <legend className=\"text-[var(--color-primary-900)] text-m-medium mb-8\">{legend}</legend>}\n\n        {mappedRadioButtons}\n      </fieldset>\n\n      {/* Feedback */}\n      {hasFeedbackText && (\n        <Feedback\n          id={`radio-group-${generatedId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { RadioButtonGroup };\n","import { SVGIconProps } from '@/models';\nimport { ComponentType, lazy, LazyExoticComponent } from 'react';\n\nexport const scribblesList: Record<string, LazyExoticComponent<ComponentType<SVGIconProps>>> = {\n  // Wave\n  'agora-wave-left-l': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-left-l')),\n  'agora-wave-right-l': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-right-l')),\n  'agora-wave-right-m': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-right-m')),\n\n  // Detail\n  'agora-detail-fluid': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-fluid')),\n  'agora-detail-talk': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-talk')),\n  'agora-detail-chat': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-chat')),\n  'agora-detail-movement': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-movement')),\n  'agora-detail-attention': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-attention')),\n\n  // Arrow\n  'agora-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-right')),\n  'agora-arrow-curve-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-curve-right')),\n  'agora-arrow-down-left': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-down-left')),\n  'agora-arrow-loop': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-loop')),\n  'agora-arrow-down-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-down-right')),\n  'agora-arrow-up-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-up-right')),\n\n  // Bold\n  'agora-bold-arrow': lazy<ComponentType<SVGIconProps>>(() => import('./bold/bold-arrow')),\n  'agora-bold-line': lazy<ComponentType<SVGIconProps>>(() => import('./bold/bold-line')),\n\n  // Line\n  'agora-line-straight': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-straight')),\n  'agora-line-zig-zag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-zig-zag')),\n  'agora-line-zig': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-zig')),\n\n  // Circle\n  'agora-circle-right-l': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-right-l')),\n  'agora-circle-left-l': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-left-l')),\n  'agora-circle-right-xxl': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-right-xxl')),\n  'agora-circle-left-xxl': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-left-xxl'))\n};\n\nexport const allScribbles = Object.keys(scribblesList);\n\nexport type ScribblesName = (typeof allScribbles)[number];\n\nexport const isBundledScribbles = (name: string) => {\n  return !!allScribbles.find((i) => i === name);\n};\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, ComponentType, FC, HTMLProps, LazyExoticComponent, Suspense, SVGProps } from 'react';\nimport { BooleanProp, SVGIconProps } from '@/models';\nimport { isBundledScribbles, scribblesList, ScribblesName } from './assets';\nimport './scribbles.css';\nimport { stringToBoolean } from '@/utils';\n\nconst scribblesCache: Record<ScribblesName, LazyExoticComponent<ComponentType<SVGIconProps>>> = {};\n\nconst loadScribbles = (name: ScribblesName): LazyExoticComponent<ComponentType<SVGIconProps>> => {\n  const cachedScribbles = scribblesCache[name];\n\n  if (cachedScribbles) {\n    return cachedScribbles;\n  }\n\n  const lazyScribble = scribblesList[name];\n\n  scribblesCache[name] = lazyScribble;\n\n  return lazyScribble;\n};\n\ntype SuperScribblesProps = SVGProps<SVGSVGElement> & HTMLProps<HTMLImageElement>;\n\nexport interface ScribblesProps extends SuperScribblesProps {\n  /**\n   * Scribbles name to be used.\n   */\n  name: ScribblesName;\n  /**\n   * Dark mode\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Callback to run when scribble is loaded.\n   */\n  onScribblesLoad?: () => void;\n\n  /**\n   * Callback to run when scribble fails to load.\n   */\n  onScribblesError?: () => void;\n}\n\nexport const Scribbles: FC<ScribblesProps> = ({ name, darkMode, onScribblesLoad, onScribblesError, ...props }) => {\n  const classes = classNames('agora-scribbles', props.className, name, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const onLoad = () => {\n    onScribblesLoad?.();\n  };\n\n  const onError = () => {\n    onScribblesError?.();\n  };\n\n  //  CHECK IF HAS NAME AND IF EXISTS ON BUNDLE\n  const isScribbles = name !== '' && isBundledScribbles(name);\n  if (!isScribbles) {\n    onError();\n    return;\n  }\n\n  //  LOAD IT\n  const LazyScribble = loadScribbles(name);\n\n  const fullProps = {\n    ...props,\n    className: classes,\n    title: props.title ?? props.alt\n  } as ComponentPropsWithoutRef<'svg'>;\n\n  onLoad();\n\n  return (\n    LazyScribble && (\n      <Suspense>\n        <LazyScribble {...fullProps} />\n      </Suspense>\n    )\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\nimport { BooleanProp } from '@/models';\nimport classNames from 'classnames';\nimport { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\n\nexport interface SearchPageProps extends ComponentProps<'div'> {\n  /**\n   * Current page.\n   */\n  current?: BooleanProp;\n\n  /**\n   * Page number.\n   */\n  pageNumber?: number;\n}\n\nconst SearchPage: FC<SearchPageProps> = ({ ref = null, className, current, pageNumber, ...props }) => {\n  const containerClasses = classNames('search-page', className, {\n    current: stringToBoolean(current)\n  });\n\n  return (\n    <div {...props} ref={ref}>\n      <Button\n        className={containerClasses}\n        appearance=\"link\"\n        aria-label={pageNumber?.toString()}\n        {...(stringToBoolean(current) ? { 'aria-current': 'page' } : {})}\n      >\n        {pageNumber}\n      </Button>\n    </div>\n  );\n};\n\nexport { SearchPage };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nexport interface SearchPaginationNumberOverlayProps extends ComponentProps<'div'> {\n  /**\n   * Dots value.\n   */\n  value?: string;\n}\n\nconst SearchPaginationNumberOverlay: FC<SearchPaginationNumberOverlayProps> = ({ ref = null, className, value, ...props }) => {\n  const classes = classNames('nav-number-overlay', className);\n\n  return (\n    <div {...props} ref={ref} className={classes}>\n      {value}\n    </div>\n  );\n};\n\nexport { SearchPaginationNumberOverlay };\n","import React, { cloneElement, ComponentProps, FC, useEffect, useMemo, useState } from 'react';\nimport { Button } from '@/components/button';\nimport { useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport { SearchPage, SearchPageProps } from './search-page';\nimport { SearchPaginationNumberOverlay } from './search-pagination-number-overlay';\nimport './search-pagination.css';\n\nexport interface SearchPaginationProps extends Omit<ComponentProps<'nav'>, 'onChange'> {\n  /**\n   * Define the total number of pages.\n   */\n  totalPages?: number;\n\n  /**\n   * The flag to hide previous page button.\n   */\n  hidePreviousPageButton?: BooleanProp;\n\n  /**\n   * The flag to hide next page button.\n   */\n  hideNextPageButton?: BooleanProp;\n\n  /**\n   * Define the number of visible page buttons at the beginning and end.\n   */\n  boundaryCount?: number;\n\n  /**\n   * Define the number of visible page buttons before and after the current page.\n   */\n  siblingCount?: number;\n\n  /**\n   * Search Pagination navigation alternative text.\n   */\n  label: string;\n\n  /**\n   * Next page button alternative text.\n   */\n  nextPageAriaLabel: string;\n\n  /**\n   * Previous page button alternative text.\n   */\n  previousPageAriaLabel: string;\n\n  /**\n   *  Event triggered whenever any of the search pages changes is current state.\n   */\n  onChange?: (page: number) => void;\n}\n\nconst SearchPagination: FC<SearchPaginationProps> = ({\n  ref = null,\n  totalPages = 0,\n  className,\n  hidePreviousPageButton,\n  hideNextPageButton,\n  boundaryCount = 0,\n  siblingCount = 0,\n  label,\n  nextPageAriaLabel,\n  previousPageAriaLabel,\n  onChange,\n  ...props\n}) => {\n  const { width } = useWindowSize();\n  const [activePage, setActivePage] = useState(0);\n  const navArrowsClasses = classNames('nav-arrows');\n\n  // Mobile screen limitations\n  if (width < 360) {\n    boundaryCount = 1;\n    siblingCount = 0;\n  }\n\n  useEffect(() => {\n    asyncTrigger(() => onChange?.(activePage));\n  }, [activePage]);\n\n  const prev = () => {\n    if (activePage > 0) {\n      setActivePage((prevPage) => prevPage - 1);\n    }\n  };\n\n  const next = () => {\n    if (activePage < totalPages - 1) {\n      setActivePage((prevPage) => prevPage + 1);\n    }\n  };\n\n  const pages = Array.from({ length: totalPages }, (_, index) => {\n    return <SearchPage key={index} pageNumber={index + 1} />;\n  });\n\n  const showAllPagesContent = useMemo(() => {\n    return pages?.map((page, page_index) => {\n      return cloneElement<SearchPageProps>(page, {\n        ...page.props,\n        onClick: () => setActivePage(page_index),\n        current: stringToBoolean(activePage === page_index)\n      } as SearchPageProps);\n    });\n  }, [className, totalPages, boundaryCount, siblingCount, activePage]);\n\n  const paginationContent = useMemo(() => {\n    // Calculate left and right sibling index and make sure they are within range index 0 and totalPages\n    const leftSiblingIndex = Math.max(activePage - siblingCount, 0);\n    const rightSiblingIndex = Math.min(activePage + siblingCount, totalPages);\n\n    // Get visible pagination numbers\n    const leftRange = pages.slice(0, boundaryCount);\n    const middleRange = pages.slice(leftSiblingIndex, rightSiblingIndex + 1);\n    const rightRange = pages.slice(totalPages - boundaryCount, totalPages);\n    const visiblePages = [...new Set([...leftRange, ...middleRange, ...rightRange])];\n\n    // Preview pagination dots if necessary\n    const shouldShowLeftDots = leftSiblingIndex > boundaryCount;\n    const shouldShowRightDots = rightSiblingIndex < totalPages - (boundaryCount + 1);\n\n    return pages?.map((page, page_index) => {\n      if (visiblePages.some((item) => page == item)) {\n        return cloneElement<SearchPageProps>(page, {\n          ...page.props,\n          onClick: () => setActivePage(page_index),\n          current: stringToBoolean(activePage === page_index)\n        } as SearchPageProps);\n      }\n\n      if (shouldShowLeftDots && page_index == boundaryCount) {\n        return <SearchPaginationNumberOverlay key=\"left-dots\" value=\"...\" />;\n      }\n\n      if (shouldShowRightDots && page_index == totalPages - boundaryCount - 1) {\n        return <SearchPaginationNumberOverlay key=\"right-dots\" value=\"...\" />;\n      }\n    });\n  }, [className, totalPages, boundaryCount, siblingCount, activePage]);\n\n  return (\n    <nav {...props} aria-label={label} className=\"agora-search-pagination\" ref={ref}>\n      <Button\n        onClick={prev}\n        appearance=\"link\"\n        hasIcon=\"true\"\n        iconOnly=\"true\"\n        leadingIcon=\"agora-solid-chevron-left\"\n        leadingIconHover=\"agora-solid-chevron-left\"\n        disabled={activePage === 0}\n        className={`${navArrowsClasses} ${stringToBoolean(hidePreviousPageButton) ? 'hide-arrow' : 'show-arrow'}`}\n        aria-label={previousPageAriaLabel}\n      ></Button>\n      <div className=\"nav-pages\">{boundaryCount === 0 && siblingCount === 0 ? showAllPagesContent : paginationContent}</div>\n      <Button\n        onClick={next}\n        appearance=\"link\"\n        hasIcon=\"true\"\n        iconOnly=\"true\"\n        trailingIcon=\"agora-solid-chevron-right\"\n        trailingIconHover=\"agora-solid-chevron-right\"\n        disabled={activePage === totalPages - 1}\n        className={`${navArrowsClasses} ${stringToBoolean(hideNextPageButton) ? 'hide-arrow' : 'show-arrow'}`}\n        aria-label={nextPageAriaLabel}\n      ></Button>\n    </nav>\n  );\n};\n\nexport { SearchPagination };\n","import { RefObject } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\n// Function to, when sidebar navigation, expand all items until level of current item.\nexport const openOnCurrentItem = (sidebarRef: RefObject<HTMLUListElement>, flat: BooleanProp) => {\n  const agoraSidebar: HTMLUListElement | null = sidebarRef.current as unknown as HTMLUListElement;\n  const treeItems = agoraSidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLAnchorElement[];\n  const currentTreeItem = [...treeItems].find((e) => e.ariaCurrent === 'page');\n\n  if (stringToBoolean(flat)) {\n    currentTreeItem?.parentElement?.classList?.add('agora-sidebar-anchor-item-current');\n  } else {\n    let initialPrevItem;\n    if (currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling?.classList.contains('agora-sidebar-button-item')) {\n      currentTreeItem?.parentElement?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling as HTMLElement;\n    } else {\n      currentTreeItem?.closest('.agora-link-wrapper')?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n    }\n    let elements: HTMLElement[] = [...[initialPrevItem]];\n    while (initialPrevItem) {\n      if (\n        (initialPrevItem as HTMLElement)\n          ?.closest('.agora-sidebar-content-item')\n          ?.previousElementSibling?.classList.contains('agora-sidebar-button-item')\n      ) {\n        initialPrevItem = (initialPrevItem as HTMLElement)?.closest('.agora-sidebar-content-item')?.previousElementSibling;\n      } else {\n        initialPrevItem = (initialPrevItem as HTMLElement)\n          ?.closest('.agora-sidebar-content-item')\n          ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n      }\n\n      if (initialPrevItem) {\n        elements = [...elements, initialPrevItem as HTMLElement];\n      }\n    }\n    elements = elements.reverse();\n\n    elements.forEach((el: HTMLElement) => {\n      if (el?.classList.contains('agora-sidebar-button-item') && !stringToBoolean(el?.ariaExpanded ?? '')) {\n        el.setAttribute('data-custom-triggered-click', 'true');\n        el.click();\n      } else if (!stringToBoolean(el?.ariaExpanded ?? '')) {\n        (el?.querySelector('.icon-wrapper') as HTMLElement)?.click();\n      }\n    });\n  }\n};\n","import { Button } from '@/components/button';\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { SidebarProps } from '@/components/sidebar';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, RefObject, useRef } from 'react';\nimport { openOnCurrentItem } from '../utils/openOnCurrentItem';\nimport './sidebar-item-navigation-mobile.css';\n\nexport const SidebarItemNavigationMobile: FC<SidebarProps & { sidebarRef: RefObject<HTMLUListElement> }> = ({\n  children,\n  darkMode,\n  flat,\n  sidebarMenuLabel,\n  backButtonLabel,\n  sidebarRef\n}) => {\n  const refDialog = useRef<DialogElement>(null);\n  const backButtonHandler = () => {\n    refDialog.current?.hide();\n  };\n  const openButtonHandler = () => {\n    refDialog.current?.show();\n    if (sidebarRef.current) {\n      // Assertion of tabIndex with/without defined aria-current\n      const treeItems = (sidebarRef.current as HTMLElement).querySelectorAll('[role=\"treeitem\"]');\n      const hasAriaCurrent = !!(sidebarRef.current as HTMLElement).querySelectorAll('[aria-current=\"page\"]');\n      treeItems?.forEach((itemTree, idx) => {\n        if (itemTree.hasAttribute('aria-current') && hasAriaCurrent) {\n          itemTree.setAttribute('tabIndex', '0');\n        } else if (!hasAriaCurrent && idx === 0) {\n          itemTree.setAttribute('tabIndex', '0');\n        } else {\n          itemTree.setAttribute('tabIndex', '-1');\n        }\n      });\n      openOnCurrentItem(sidebarRef, flat ?? 'false');\n    }\n  };\n\n  const sidebarNavigationMobileClassName = classNames(\n    'agora-sidebar-navigation-mobile grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12',\n    {\n      darkMode: stringToBoolean(darkMode)\n    }\n  );\n\n  const sidebarItemNavigationMobileMenuClassName = classNames('agora-snm-menu', { darkMode: stringToBoolean(darkMode) });\n\n  const sidebarItemNavigationMobileBackButtonClassName = classNames('agora-snm-back mb-16', { darkMode: stringToBoolean(darkMode) });\n\n  const sidebarItemNavigationMobileDialogClassName = classNames('z-dialog absolute w-full h-full container', {\n    'bg-white': !stringToBoolean(darkMode),\n    'bg-[var(--color-primary-900)]': stringToBoolean(darkMode)\n  });\n\n  return (\n    <div className={sidebarNavigationMobileClassName}>\n      <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\">\n        <Button\n          className={sidebarItemNavigationMobileMenuClassName}\n          appearance=\"link\"\n          variant=\"primary\"\n          fullWidth\n          hasIcon\n          leadingIcon=\"agora-line-layers-menu\"\n          leadingIconHover=\"agora-solid-layers-menu\"\n          onClick={openButtonHandler}\n        >\n          {sidebarMenuLabel}\n        </Button>\n        <Dialog ref={refDialog} className=\"container\">\n          <div className={sidebarItemNavigationMobileDialogClassName}>\n            <div className=\"grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 h-full content-start\">\n              <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\">\n                <Button\n                  appearance=\"link\"\n                  variant=\"neutral\"\n                  hasIcon\n                  leadingIcon=\"agora-line-arrow-left-anchor\"\n                  leadingIconHover=\"agora-solid-arrow-left-anchor\"\n                  onClick={backButtonHandler}\n                  className={sidebarItemNavigationMobileBackButtonClassName}\n                >\n                  {backButtonLabel}\n                </Button>\n              </div>\n              <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12 overflow-auto\">{children}</div>\n            </div>\n          </div>\n        </Dialog>\n      </div>\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  cloneElement,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  ReactElement,\n  ReactNode,\n  RefObject,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { SidebarVariantType } from './models/sidebar-variant.type';\nimport { SidebarItemProps } from './sidebar-item';\nimport { SidebarItemNavigationMobile } from './sidebar-item-navigation-mobile/sidebar-item-navigation-mobile';\nimport './sidebar.css';\nimport { openOnCurrentItem } from './utils/openOnCurrentItem';\n\nexport interface SidebarProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * Whether the sidebar is for filtering data or for navigation\n   */\n  variant: SidebarVariantType;\n\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n\n  /**\n   * All item tree open. Non-collapsible.\n   */\n  flat?: BooleanProp;\n\n  /**\n   * Sidebar children content\n   */\n  children: ReactElement<SidebarItemProps> | Array<ReactElement<SidebarItemProps>>;\n\n  /**\n   * Sidebar mobile button menu label\n   */\n  sidebarMenuLabel?: ReactNode;\n\n  /**\n   *  Back button label\n   */\n  backButtonLabel?: ReactNode;\n}\n\nexport const Sidebar: FC<SidebarProps> = ({\n  className,\n  children,\n  flat = 'false',\n  variant,\n  darkMode,\n  sidebarMenuLabel,\n  backButtonLabel,\n  ...props\n}) => {\n  let newSidebarItem: ReactElement | Array<ReactElement | undefined> | undefined;\n  let listSidebarItem: Array<ReactElement<SidebarItemProps>> = [];\n  const generateId = useId();\n  const sidebarRef = useRef<HTMLUListElement>(null);\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isMobileAndTablet = width < xlScreen;\n  const [trailingFilter, setTrailingFilter] = useState(false);\n  const [leadingFilter, setLeadingFilter] = useState(false);\n\n  const sidebarClassName = classNames('agora-sidebar', { darkMode: stringToBoolean(darkMode) }, className);\n\n  if (children) {\n    if (!Array.isArray(children)) {\n      [children].forEach((child) => listSidebarItem.push(child));\n    } else {\n      listSidebarItem = children;\n    }\n  }\n\n  if (stringToBoolean(flat)) {\n    newSidebarItem = listSidebarItem?.map((data, index) => {\n      const key = `li-${index}-${generateId}`;\n      return cloneElement(data, {\n        flat: stringToBoolean(flat),\n        variant: variant,\n        key,\n        darkMode: stringToBoolean(darkMode),\n        className: `${trailingFilter ? 'trailed' : ''} ${leadingFilter ? 'leaded' : ''}`\n      });\n    });\n  } else {\n    newSidebarItem = listSidebarItem?.map((data, index) => {\n      const key = `li-${index}-${generateId}`;\n      return cloneElement(data, {\n        variant: variant,\n        key,\n        darkMode: stringToBoolean(darkMode),\n        className: `${trailingFilter ? 'trailed' : ''} ${leadingFilter ? 'leaded' : ''}`\n      });\n    });\n  }\n\n  //When leave focus of sidebar, if current are collapsed and not visible, expand all item until level of current item\n  const onBodyFocus = (event: Event) => {\n    if (sidebarRef.current) {\n      if (sidebarRef.current?.contains(event.target as HTMLElement)) {\n        sidebarRef.current?.parentElement?.classList.add('focus');\n      } else {\n        sidebarRef.current?.parentElement?.classList.remove('focus');\n        openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n      }\n    }\n  };\n\n  const navigationHandler = () => {\n    if (variant === 'navigation' && !isMobileAndTablet) {\n      if (sidebarRef.current) {\n        // Assertion of tabIndex with/without defined aria-current\n        const treeItems = sidebarRef.current.querySelectorAll('[role=\"treeitem\"]');\n        const hasAriaCurrent = !!sidebarRef.current.querySelectorAll('[aria-current=\"page\"]');\n        treeItems?.forEach((itemTree, idx) => {\n          if (itemTree.hasAttribute('aria-current') && hasAriaCurrent) {\n            itemTree.setAttribute('tabIndex', '0');\n          } else if (!hasAriaCurrent && idx === 0) {\n            itemTree.setAttribute('tabIndex', '0');\n          } else {\n            itemTree.setAttribute('tabIndex', '-1');\n          }\n        });\n      }\n\n      openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n\n      const loadHandler = () => {\n        openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n      };\n\n      document.addEventListener('load', loadHandler);\n      document.addEventListener('focusin', onBodyFocus);\n      document.addEventListener('mousedown', onBodyFocus);\n\n      return () => {\n        document.removeEventListener('load', loadHandler);\n        document.removeEventListener('focusin', onBodyFocus);\n        document.removeEventListener('mousedown', onBodyFocus);\n      };\n    }\n  };\n\n  const filterHandler = () => {\n    if (variant === 'filter') {\n      const checkLeading: boolean[] = [];\n      const checkTrailing: boolean[] = [];\n      if (sidebarRef.current) {\n        const parsedChildren = Children.toArray(children);\n        Children.forEach(parsedChildren, (element) => {\n          if (!isValidElement(element)) {\n            return;\n          }\n          const itemProps = element.props as SidebarItemProps;\n          const foundedLeadingIcon = [itemProps.item].some((a) => !!a.collapsedIconLeading);\n          checkLeading.push(foundedLeadingIcon);\n          const foundedTrailingIcon = [itemProps.item].some((a) => !!a.collapsedIconTrailing);\n          checkTrailing.push(foundedTrailingIcon);\n        });\n\n        if (checkLeading.every((l) => l === false)) {\n          setLeadingFilter(false);\n        } else if (checkLeading.every((l) => l === true)) {\n          setLeadingFilter(false);\n        } else if (checkLeading.some((k) => k)) {\n          setLeadingFilter(true);\n        }\n\n        if (checkTrailing.every((t) => t === false)) {\n          setTrailingFilter(false);\n        } else if (checkTrailing.every((t) => t === true)) {\n          setTrailingFilter(false);\n        } else if (checkTrailing.some((j) => j)) {\n          setTrailingFilter(true);\n        }\n      }\n    }\n  };\n\n  useEffect(() => {\n    navigationHandler();\n    filterHandler();\n  }, [sidebarRef.current]);\n\n  return (\n    <>\n      {(!isMobileAndTablet || variant === 'filter') && (\n        <ul ref={sidebarRef} className={sidebarClassName} {...props} {...(variant === 'navigation' ? { role: 'tree' } : undefined)}>\n          {newSidebarItem}\n        </ul>\n      )}\n      {variant === 'navigation' && isMobileAndTablet && (\n        <SidebarItemNavigationMobile\n          {...props}\n          darkMode={darkMode}\n          variant={variant}\n          sidebarMenuLabel={sidebarMenuLabel}\n          backButtonLabel={backButtonLabel}\n          sidebarRef={sidebarRef as RefObject<HTMLUListElement>}\n        >\n          <ul ref={sidebarRef} className={sidebarClassName} {...props} {...(variant === 'navigation' ? { role: 'tree' } : undefined)}>\n            {newSidebarItem}\n          </ul>\n        </SidebarItemNavigationMobile>\n      )}\n    </>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { ButtonItemProps, LinkItemProps } from '../models';\n\nexport const setIconsExpandCollapsed = (item: ButtonItemProps | LinkItemProps, ariaExpanded: BooleanProp) => {\n  return {\n    leadingIcon: stringToBoolean(ariaExpanded) ? item.collapsedIconLeading : item.expandedIconLeading,\n    leadingIconHover: stringToBoolean(ariaExpanded) ? item.collapsedIconHoverLeading : item.expandedIconHoverLeading,\n    trailingIcon: stringToBoolean(ariaExpanded) ? item.collapsedIconTrailing : item.expandedIconTrailing,\n    trailingIconHover: stringToBoolean(ariaExpanded) ? item.collapsedIconHoverTrailing : item.expandedIconHoverTrailing\n  };\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport const setInitialSidebarItem = (\n  flat: BooleanProp,\n  sidebarItemChildren: HTMLDivElement | HTMLUListElement | null,\n  open: BooleanProp,\n  ariaExpanded: BooleanProp\n): BooleanProp => {\n  if (!sidebarItemChildren) {\n    return stringToBoolean(open);\n  }\n\n  if (stringToBoolean(flat)) {\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return true;\n  } else if (stringToBoolean(open) && stringToBoolean(ariaExpanded)) {\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return stringToBoolean(open);\n  } else if (!stringToBoolean(open)) {\n    sidebarItemChildren.style.maxHeight = '';\n    return stringToBoolean(open);\n  }\n  return stringToBoolean(open);\n};\n","import { stringToBoolean } from '@/utils';\n\nexport const toggleSidebarItem = (sidebarItem: HTMLAnchorElement | HTMLButtonElement) => {\n  if (!sidebarItem.ariaExpanded) {\n    return false;\n  }\n  const sidebarItemExpanded = stringToBoolean(sidebarItem.ariaExpanded);\n  sidebarItem.setAttribute('aria-expanded', (!sidebarItemExpanded).toString());\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { SidebarVariantType } from '../models/sidebar-variant.type';\n\nexport const toggleSidebarItemChildren = (\n  variant: SidebarVariantType,\n  sidebarItemChildren: HTMLDivElement | HTMLUListElement | null\n): BooleanProp => {\n  if (!sidebarItemChildren) {\n    return false;\n  }\n  //If sidebar item children is collapsed then expand it.\n  if (sidebarItemChildren.classList.contains('collapsed')) {\n    sidebarItemChildren.classList.remove('collapsed');\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return true;\n  }\n  // If sidebar item children is expanded then collapse it.\n  else {\n    sidebarItemChildren.classList.add('collapsed');\n    sidebarItemChildren.style.maxHeight = '';\n    if (variant === 'navigation') {\n      const sidebarItemChildrenTreeItem = sidebarItemChildren.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLElement[];\n      const sidebarItemChildrenTreeItemReversed = [...sidebarItemChildrenTreeItem].reverse();\n      // Collapse or expande recursively\n      sidebarItemChildrenTreeItemReversed.forEach((itemTree) => {\n        if (!itemTree.ariaExpanded) {\n          return false;\n        }\n        //Check if is possible to expand and if is a button or a link, to click on icon to expand/collapse.\n        if (stringToBoolean(itemTree.ariaExpanded)) {\n          if (itemTree.classList.contains('agora-sidebar-button-item')) {\n            itemTree.setAttribute('data-custom-triggered-click', 'true');\n            itemTree.click();\n          } else {\n            (itemTree.querySelector('.icon-wrapper') as HTMLElement)?.click();\n          }\n        }\n      });\n    }\n    return false;\n  }\n};\n","import { Button } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, MouseEvent, Ref, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport { ButtonItemProps, SidebarItemRef } from '../models';\nimport { SidebarItemProps } from '../sidebar-item';\nimport { setIconsExpandCollapsed } from '../utils/setIconsExpandCollapsed';\nimport { setInitialSidebarItem } from '../utils/setInitialSidebarItem';\nimport { toggleSidebarItem } from '../utils/toggleSidebarItem';\nimport { toggleSidebarItemChildren } from '../utils/toggleSidebarItemChildren';\nimport { Pill } from '@/components/pill';\n\nconst SidebarItemFilter: FC<SidebarItemProps> = ({\n  ref = null,\n  children,\n  item,\n  hasPill,\n  pillValue,\n  pillAriaLabel,\n  darkMode,\n  open = false,\n  flat = false\n}) => {\n  const generateId = useId();\n  const buttonItemRef = useRef<HTMLButtonElement>(null);\n  const contentItemRef = useRef<HTMLDivElement>(null);\n\n  const [ariaExpanded, setAriaExpanded] = useState<BooleanProp>(stringToBoolean(open));\n\n  const buttonItemClassName = classNames('agora-sidebar-btn-item-filter');\n  const contentItemClassName = classNames('agora-sidebar-content-item', {\n    collapsed: !stringToBoolean(open) && !stringToBoolean(flat)\n  });\n\n  const toggleItemContent = () => {\n    setAriaExpanded(toggleSidebarItemChildren('filter', contentItemRef.current));\n  };\n\n  const toggleItemExpand = () => {\n    if (buttonItemRef.current) {\n      toggleSidebarItem(buttonItemRef.current);\n      toggleItemContent();\n    }\n  };\n\n  const onMouseClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    toggleItemExpand();\n    (item as ButtonItemProps).onClick?.(evt);\n  };\n\n  useEffect(() => {\n    setAriaExpanded(setInitialSidebarItem(flat, contentItemRef.current, open, ariaExpanded));\n  }, [flat]);\n\n  useEffect(() => {\n    if ((contentItemRef.current as HTMLElement).classList.contains('collapsed')) {\n      const initialElementsTabindex = [\n        ...(contentItemRef.current as HTMLElement).querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        )\n      ];\n      initialElementsTabindex.forEach((el) => {\n        (el as HTMLElement).tabIndex = -1;\n      });\n    } else {\n      const initialElementsTabindex = [\n        ...(contentItemRef.current as HTMLElement).querySelectorAll(\n          'a:not([tabindex=\"0\"]), button:not([tabindex=\"0\"]), input:not([tabindex=\"0\"]), textarea:not([tabindex=\"0\"]), select:not([tabindex=\"0\"]), details:not([tabindex=\"0\"]), [tabindex]:not([tabindex=\"0\"])'\n        )\n      ];\n      initialElementsTabindex.forEach((el) => {\n        (el as HTMLElement).tabIndex = 0;\n      });\n    }\n  }, [ariaExpanded]);\n\n  const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n  const newItem = { ...item };\n  delete newItem.children;\n  delete newItem.collapsedIconLeading;\n  delete newItem.collapsedIconHoverLeading;\n  delete newItem.expandedIconLeading;\n  delete newItem.expandedIconHoverLeading;\n  delete newItem.collapsedIconTrailing;\n  delete newItem.collapsedIconHoverTrailing;\n  delete newItem.expandedIconTrailing;\n  delete newItem.expandedIconHoverTrailing;\n\n  useImperativeHandle(\n    ref as Ref<SidebarItemRef>,\n    () => {\n      return {\n        current: buttonItemRef.current,\n        isExpanded: ariaExpanded\n      } as SidebarItemRef;\n    },\n    [buttonItemRef.current, ariaExpanded, ref]\n  );\n\n  return (\n    <>\n      <div className=\"container-button\">\n        {!stringToBoolean(flat) && (\n          <Button\n            appearance={'link'}\n            variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n            className={buttonItemClassName}\n            fullWidth\n            {...icons}\n            {...(newItem as ButtonItemProps)}\n            darkMode={darkMode}\n            aria-expanded={ariaExpanded}\n            aria-controls={`aria-controls-sidebar-${generateId}-id`}\n            onClick={onMouseClickHandler}\n            ref={buttonItemRef}\n            aria-describedby={`pill-${generateId}`}\n          >\n            <span>{item.children}</span>\n\n            {hasPill && (\n              <div className=\"flex items-center justify-center\">\n                <Pill\n                  id={`pill-${generateId}`}\n                  className={`ml-16 ${ariaExpanded ? 'bg-white' : ''} pill-size`}\n                  variant=\"neutral\"\n                  appearance=\"outline\"\n                  aria-label={pillAriaLabel}\n                  darkMode={darkMode}\n                >\n                  {pillValue}\n                </Pill>\n              </div>\n            )}\n          </Button>\n        )}\n      </div>\n\n      {stringToBoolean(flat) && (\n        <div className=\"agora-sidebar-flat-item\">\n          <span>{item.children}</span>\n          {hasPill && (\n            <div className=\"flex items-center justify-center\">\n              <Pill\n                id={`pill-${generateId}`}\n                className={`ml-16 ${ariaExpanded ? 'bg-white' : ''} pill-size`}\n                variant=\"neutral\"\n                appearance=\"outline\"\n                aria-label={pillAriaLabel}\n                darkMode={darkMode}\n              >\n                {pillValue}\n              </Pill>\n            </div>\n          )}\n        </div>\n      )}\n\n      <div className={contentItemClassName} id={`aria-controls-sidebar-${generateId}-id`} ref={contentItemRef}>\n        {children}\n      </div>\n    </>\n  );\n};\nexport { SidebarItemFilter };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport const getParentTreeItem = (itemTree: HTMLElement, expand: BooleanProp) => {\n  if (itemTree.closest('.agora-sidebar-item')?.parentElement?.classList.contains('.agora-sidebar') && !expand) {\n    return itemTree;\n  }\n  const nodeContent: HTMLElement | null = itemTree.closest('.agora-sidebar-content-item') as HTMLElement;\n  const node: HTMLElement | null = nodeContent?.previousSibling as HTMLElement;\n  if (node && nodeContent) {\n    if (nodeContent.classList.contains('collapsed')) {\n      return false;\n    }\n    if (stringToBoolean(expand)) {\n      nodeContent.classList.remove('collapsed');\n      nodeContent.style.maxHeight = '100vh';\n    }\n\n    return node.querySelector('[role=\"treeitem\"]') ?? node;\n  }\n  if (itemTree.closest('.agora-sidebar') && !stringToBoolean(expand)) {\n    return itemTree;\n  }\n  return false;\n};\n","import { KeyboardEvent, MouseEvent } from 'react';\nimport { getParentTreeItem } from './getParentTreeItem';\n\nexport const toggleParentItemExpand = (itemTree: HTMLElement) => {\n  let parentNode = getParentTreeItem(itemTree, true);\n  while (parentNode) {\n    parentNode.setAttribute('aria-expanded', 'true');\n    parentNode = getParentTreeItem(parentNode as HTMLElement, true);\n  }\n};\n\nexport const navigationSidebarItemHandler = (\n  evt:\n    | MouseEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>\n    | KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>\n) => {\n  const sidebar: HTMLUListElement | null = evt.currentTarget.closest('.agora-sidebar');\n  const treeItems = sidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLAnchorElement[];\n  treeItems?.forEach((itemTree: HTMLAnchorElement) => {\n    if (itemTree?.href === (evt.currentTarget as HTMLAnchorElement).href && itemTree.parentElement) {\n      itemTree.closest('.agora-link-wrapper')?.classList.add('agora-sidebar-anchor-item-current');\n      itemTree.setAttribute('aria-current', 'page');\n      toggleParentItemExpand(itemTree);\n      itemTree.setAttribute('tabIndex', '0');\n    } else if (itemTree.parentElement) {\n      itemTree.closest('.agora-link-wrapper')?.classList.remove('agora-sidebar-anchor-item-current');\n      itemTree.removeAttribute('aria-current');\n      itemTree.setAttribute('tabIndex', '-1');\n    }\n  });\n};\n","import { stringToBoolean } from '@/utils';\nimport { TreeItemsType } from './treeItemsType';\n\nexport const toggleExpandAllSiblingItems = (itemTree: TreeItemsType) => {\n  const contentParent = itemTree.closest('.agora-sidebar-content-item') ?? itemTree.closest('.agora-sidebar');\n  const directChildrenItems = [\n    ...(contentParent?.querySelectorAll('&>.agora-sidebar-item>*>[role=\"treeitem\"]') as unknown as HTMLAnchorElement[]),\n    ...(contentParent?.querySelectorAll('&>*>[role=\"treeitem\"]') as unknown as HTMLButtonElement[])\n  ];\n  directChildrenItems.forEach((adsItem) => {\n    if (adsItem.ariaExpanded === undefined || adsItem.ariaExpanded === null) {\n      return;\n    }\n    if (!stringToBoolean(adsItem.ariaExpanded) && (adsItem as HTMLAnchorElement).href) {\n      (adsItem.querySelector('.icon-wrapper') as HTMLElement)?.click();\n    } else if (!stringToBoolean(adsItem.ariaExpanded)) {\n      (adsItem as HTMLButtonElement)?.setAttribute('data-custom-triggered-click', 'true');\n      (adsItem as HTMLButtonElement)?.click();\n    }\n  });\n};\n","import { KeyboardEvent } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { getParentTreeItem } from './getParentTreeItem';\nimport { navigationSidebarItemHandler } from './navigationSidebarItemHandler';\nimport { toggleExpandAllSiblingItems } from './toggleExpandAllSiblingItems';\nimport { TreeItemsArray, TreeItemsType } from './treeItemsType';\n\nexport const navigationEnterSpace = (event: KeyboardEvent<TreeItemsType>) => {\n  if (event.currentTarget.classList.contains('agora-sidebar-button-item')) {\n    return;\n  }\n  navigationSidebarItemHandler(event);\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const getAllVisibleItems = (treeItems: TreeItemsArray) => {\n  const allVisibleItems = [];\n  for (const item of treeItems) {\n    const parentNode = getParentTreeItem(item, false);\n    if (parentNode) {\n      allVisibleItems.push(item);\n    }\n  }\n  return allVisibleItems;\n};\n\nexport const navigationUp = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  let prevItem;\n\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  for (const visibleItem of allVisibleItems) {\n    if (visibleItem === event.currentTarget) {\n      break;\n    }\n    prevItem = visibleItem;\n  }\n\n  if (prevItem) {\n    prevItem.focus();\n  } else {\n    allVisibleItems[allVisibleItems.length - 1].focus();\n  }\n\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nconst navigateAndFocusUntilCurrent = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  let nextItem;\n\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  for (let i = allVisibleItems.length - 1; i >= 0; i--) {\n    if (allVisibleItems[i] === event.currentTarget) {\n      break;\n    }\n    nextItem = allVisibleItems[i];\n  }\n  if (nextItem) {\n    nextItem.focus();\n  } else {\n    allVisibleItems[0].focus();\n  }\n};\n\nexport const navigationDown = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  navigateAndFocusUntilCurrent(event, treeItems);\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const navigationRight = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  navigateAndFocusUntilCurrent(event, treeItems);\n};\n\nexport const navigationLeft = (event: KeyboardEvent<TreeItemsType>) => {\n  const prevItem = event.currentTarget?.closest('.agora-sidebar-content-item')?.previousElementSibling;\n  if (prevItem?.classList.contains('agora-sidebar-button-item')) {\n    (prevItem as unknown as HTMLButtonElement)?.focus();\n  } else {\n    (prevItem?.querySelector('[role=\"treeitem\"]') as unknown as HTMLAnchorElement)?.focus();\n  }\n};\n\nexport const navigationTab = (treeItems: TreeItemsArray) => {\n  const currentTreeItem = [...treeItems].find((e) => e.ariaCurrent === 'page');\n  if (currentTreeItem?.closest('.agora-sidebar-content-item')?.classList.contains('collapsed')) {\n    let initialPrevItem;\n    if (currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling?.classList.contains('agora-sidebar-button-item')) {\n      currentTreeItem?.parentElement?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling as HTMLElement;\n    } else {\n      initialPrevItem = currentTreeItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n    }\n    let elements: HTMLElement[] = [...[initialPrevItem]];\n    while (initialPrevItem) {\n      initialPrevItem = initialPrevItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n      if (initialPrevItem) {\n        elements = [...elements, initialPrevItem];\n      }\n    }\n    elements = elements.reverse();\n\n    elements.forEach((el: HTMLElement) => {\n      if (!el?.ariaExpanded) {\n        return;\n      }\n      if (el.classList.contains('agora-sidebar-button-item') && !stringToBoolean(el.ariaExpanded)) {\n        el.setAttribute('data-custom-triggered-click', 'true');\n        el.click();\n      } else if (!stringToBoolean(el.ariaExpanded)) {\n        (el.querySelector('.icon-wrapper') as HTMLElement)?.click();\n      }\n    });\n  }\n};\n\nexport const setFocusByFirstCharacter = (itemTree: TreeItemsType, treeItems: TreeItemsArray, char: string) => {\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  char = char.toLowerCase();\n\n  allVisibleItems.forEach((ti: HTMLAnchorElement | HTMLButtonElement | HTMLDivElement) => {\n    if (char === ti.textContent?.trim()[0].toLocaleLowerCase()) {\n      ti.focus();\n    }\n  });\n\n  let i,\n    ti,\n    index = -1;\n  const start = allVisibleItems.indexOf(itemTree) + 1 >= allVisibleItems.length ? 0 : allVisibleItems.indexOf(itemTree) + 1;\n\n  for (i = start; i < allVisibleItems.length; i++) {\n    ti = allVisibleItems[i];\n    if (char === ti.textContent?.trim()[0].toLowerCase()) {\n      index = i;\n      break;\n    }\n  }\n\n  if (index === -1) {\n    for (i = 0; i < start; i++) {\n      ti = allVisibleItems[i];\n      if (char === ti.textContent?.trim()[0].toLowerCase()) {\n        index = i;\n        break;\n      }\n    }\n  }\n\n  if (index > -1) {\n    allVisibleItems[index].focus();\n  }\n};\n\nexport const defaultPrintableCharacters = (event: KeyboardEvent<TreeItemsType>, flat: BooleanProp, treeItems: TreeItemsArray) => {\n  if (event.key == '*' && !stringToBoolean(flat)) {\n    toggleExpandAllSiblingItems(event.currentTarget);\n    event.stopPropagation();\n    event.preventDefault();\n  } else {\n    setFocusByFirstCharacter(event.currentTarget, treeItems, event.key);\n  }\n};\n\nexport const navigationHome = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  if (treeItems) {\n    treeItems[0].focus();\n  }\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const navigationEnd = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  if (treeItems) {\n    const allVisibleItems = getAllVisibleItems(treeItems);\n    allVisibleItems[allVisibleItems.length - 1].focus();\n  }\n  event.stopPropagation();\n  event.preventDefault();\n};\n","import { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  cloneElement,\n  FC,\n  HTMLProps,\n  KeyboardEvent,\n  MouseEvent,\n  PropsWithChildren,\n  ReactElement,\n  ReactNode,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport { SidebarItemProps } from '../sidebar-item';\nimport {\n  defaultPrintableCharacters,\n  navigationDown,\n  navigationEnd,\n  navigationEnterSpace,\n  navigationHome,\n  navigationLeft,\n  navigationRight,\n  navigationTab,\n  navigationUp\n} from '../utils/keyboardSidebarItemHandlers';\nimport { navigationSidebarItemHandler } from '../utils/navigationSidebarItemHandler';\nimport { setIconsExpandCollapsed } from '../utils/setIconsExpandCollapsed';\nimport { setInitialSidebarItem } from '../utils/setInitialSidebarItem';\nimport { toggleSidebarItem } from '../utils/toggleSidebarItem';\nimport { toggleSidebarItemChildren } from '../utils/toggleSidebarItemChildren';\n\nexport const SidebarItemNavigation: FC<SidebarItemProps> = ({ children, variant, item, open = false, flat = false, darkMode }) => {\n  const generateId = useId();\n\n  let newSidebarItem: ReactElement | Array<ReactElement | undefined> | undefined;\n  let newSidebarItemChildren: ReactElement | Array<ReactElement | undefined> | undefined;\n  let listInnerSidebarItem: ReactElement<PropsWithChildren>[] = [];\n  let listSidebarItemChildren: ReactElement<SidebarItemProps>[] = [];\n\n  const [ariaExpanded, setAriaExpanded] = useState<BooleanProp>(stringToBoolean(open));\n  const [showIconHover, setShowIconHover] = useState<boolean>(false);\n\n  const contentItemClassName = classNames('agora-sidebar-content-item', {\n    collapsed: !stringToBoolean(open) && !stringToBoolean(flat)\n  });\n\n  const anchorItemRef = useRef<HTMLAnchorElement>(null);\n  const buttonItemRef = useRef<HTMLButtonElement>(null);\n  const contentItemRef = useRef<HTMLUListElement>(null);\n\n  const toggleItemContent = () => {\n    setAriaExpanded(toggleSidebarItemChildren('navigation', contentItemRef.current));\n  };\n\n  const toggleItemExpand = () => {\n    if (anchorItemRef.current) {\n      toggleSidebarItem(anchorItemRef.current);\n      toggleItemContent();\n    }\n    if (buttonItemRef.current) {\n      toggleSidebarItem(buttonItemRef.current);\n      toggleItemContent();\n    }\n  };\n\n  const handleAnchorClick = (evt: MouseEvent<HTMLAnchorElement>, data: HTMLProps<HTMLAnchorElement>) => {\n    navigationSidebarItemHandler(evt);\n    data.onClick?.(evt);\n  };\n\n  const handleOnKeyUp = (event: KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>) => {\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n    const agoraSidebar: HTMLUListElement | null = event.currentTarget.closest('.agora-sidebar');\n    const treeItems = agoraSidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as\n      | HTMLAnchorElement[]\n      | HTMLButtonElement[]\n      | HTMLDivElement[];\n    const isPrintableCharacter = (str: string) => {\n      return str.length === 1 && RegExp(/\\S/).exec(str);\n    };\n\n    const handleRightArrow = () => {\n      if (event.currentTarget.getAttribute('aria-expanded') === 'true' && !stringToBoolean(flat)) {\n        navigationRight(event, treeItems);\n      } else if (!stringToBoolean(flat)) {\n        toggleItemExpand();\n      }\n      event.stopPropagation();\n      event.preventDefault();\n    };\n\n    const handleLeftArrow = () => {\n      if (event.currentTarget.getAttribute('aria-expanded') === 'true' && !stringToBoolean(flat)) {\n        toggleItemExpand();\n      } else if (!stringToBoolean(flat)) {\n        navigationLeft(event);\n      }\n      event.stopPropagation();\n      event.preventDefault();\n    };\n\n    if (event.shiftKey) {\n      if (event.code == 'SPACE' || event.code == 'RETURN') {\n        event.stopPropagation();\n      } else if (isPrintableCharacter(event.key)) {\n        defaultPrintableCharacters(event, flat, treeItems);\n      }\n    } else {\n      switch (event.code) {\n        case 'Enter':\n        case 'NumpadEnter':\n        case 'Space':\n          navigationEnterSpace(event);\n          break;\n\n        case 'Up':\n        case 'ArrowUp': {\n          navigationUp(event, treeItems);\n          break;\n        }\n\n        case 'Down':\n        case 'ArrowDown': {\n          navigationDown(event, treeItems);\n          break;\n        }\n\n        case 'Right':\n        case 'ArrowRight':\n          handleRightArrow();\n          break;\n\n        case 'Left':\n        case 'ArrowLeft':\n          handleLeftArrow();\n          break;\n\n        case 'Home':\n          navigationHome(event, treeItems);\n          break;\n\n        case 'End': {\n          navigationEnd(event, treeItems);\n          break;\n        }\n        case 'Tab': {\n          navigationTab(treeItems);\n          break;\n        }\n\n        default:\n          if (isPrintableCharacter(event.key)) {\n            defaultPrintableCharacters(event, flat, treeItems);\n          }\n          break;\n      }\n    }\n  };\n  const handleOnKeyDown = (event: KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n      case 'Up':\n      case 'ArrowUp':\n      case 'Down':\n      case 'ArrowDown':\n      case 'Right':\n      case 'ArrowRight':\n      case 'Left':\n      case 'ArrowLeft':\n      case 'Home':\n      case 'End':\n        event.stopPropagation();\n        event.preventDefault();\n\n        break;\n    }\n  };\n\n  const handleClickIcon = (event: MouseEvent<HTMLElement | HTMLButtonElement>, data?: HTMLProps<HTMLElement | HTMLButtonElement>) => {\n    event.preventDefault();\n    event.stopPropagation();\n    toggleItemExpand();\n    data?.onClick?.(event);\n  };\n\n  const handleMouseEnterIcon = (event: MouseEvent) => {\n    event.preventDefault();\n    event.stopPropagation();\n    setShowIconHover(true);\n  };\n\n  const handleMouseLeaveIcon = (event: MouseEvent) => {\n    event.preventDefault();\n    event.stopPropagation();\n    setShowIconHover(false);\n  };\n\n  const handleMouseDown = (event: MouseEvent<HTMLElement | HTMLButtonElement>, data?: HTMLProps<HTMLElement | HTMLButtonElement>) => {\n    event.preventDefault();\n    data?.onMouseDown?.(event);\n  };\n\n  if (children) {\n    if (!Array.isArray(children)) {\n      [children].forEach((child) => listSidebarItemChildren.push(child as ReactElement<SidebarItemProps>));\n    } else {\n      listSidebarItemChildren = children as ReactElement<SidebarItemProps>[];\n    }\n  }\n  if (item.children) {\n    if (!Array.isArray(item.children)) {\n      [item.children].forEach((child) => listInnerSidebarItem.push(child as ReactElement<PropsWithChildren>));\n    } else {\n      listInnerSidebarItem = item.children as ReactElement<PropsWithChildren>[];\n    }\n  }\n\n  // Used to wrap on LinkWrapper if has link\n  let isLinkedSidebarItem = false;\n  const getFinalFlat = (elements: ReactElement[], childData: ReactElement, key: string) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      if (e === 0) {\n        final = cloneElement(elements[0], {\n          children: childData,\n          key\n        } as HTMLProps<ReactElement>);\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e], { children: final, key } as HTMLProps<ReactElement>);\n        }\n      }\n    }\n    return final;\n  };\n  const getFlatNotDirectAnchor = (data: ReactElement, ariaOwns: string, key: string) => {\n    // Not a direct anchor\n    let childData: ReactElement | null = data;\n    let elements: ReactElement[] = [];\n\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          // Children has href\n          isLinkedSidebarItem = true;\n          childData = cloneElement(childData, {\n            'role': 'treeitem',\n            'aria-expanded': ariaExpanded,\n            'aria-owns': ariaOwns,\n            key,\n            'className':\n              'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n            'ref': anchorItemRef\n          } as HTMLProps<ReactElement>);\n\n          elements = elements.reverse();\n          const final = getFinalFlat(elements, childData, key);\n\n          childData = null;\n          return final;\n        } else {\n          // This childData not has href, search next children\n          elements = [...elements, childData];\n          childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n        }\n      } else {\n        childData = null;\n      }\n    }\n\n    // Not href found\n    return cloneElement(data, {\n      key,\n      className:\n        'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full'\n    } as HTMLProps<ReactElement>);\n  };\n\n  const getFlatSidebarItem = () => {\n    return listInnerSidebarItem?.map((data, index) => {\n      const key = `item-${index}-${generateId}`;\n      const ariaOwns = `treeitem-${generateId}`;\n      if (!(data.props as HTMLProps<ReactElement>).href) {\n        return getFlatNotDirectAnchor(data, ariaOwns, key);\n      } else {\n        // Direct anchor\n        isLinkedSidebarItem = true;\n        return cloneElement(data, {\n          'onClick': (event: MouseEvent<HTMLAnchorElement>) => handleAnchorClick(event, data.props as HTMLProps<HTMLAnchorElement>),\n          'onKeyUp': handleOnKeyUp,\n          'onKeyDown': handleOnKeyDown,\n          'onMouseDown': (event: MouseEvent<HTMLAnchorElement>) => handleMouseDown(event, data.props as HTMLProps<HTMLAnchorElement>),\n          'role': 'treeitem',\n          'aria-expanded': ariaExpanded,\n          'aria-owns': ariaOwns,\n          'children': <span className=\"children-wrapper\">{(data.props as HTMLProps<HTMLElement>).children}</span>,\n          key,\n          'className':\n            'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n          'ref': anchorItemRef\n        } as HTMLProps<HTMLAnchorElement>);\n      }\n    });\n  };\n\n  const anchorIconWrapper = (\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    },\n    data: ReactElement<PropsWithChildren>\n  ) => {\n    return (\n      <>\n        {(icons.leadingIcon || icons.leadingIconHover) && (\n          <span className=\"icon-wrapper mr-8 justify-start\" role=\"none\" onClick={handleClickIcon}>\n            {icons.leadingIcon && (\n              <Icon name={icons.leadingIcon} dimensions=\"m\" aria-hidden {...(showIconHover ? { style: { display: 'none' } } : '')} />\n            )}\n\n            {icons.leadingIconHover && (\n              <Icon name={icons.leadingIconHover} dimensions=\"m\" aria-hidden {...(showIconHover ? '' : { style: { display: 'none' } })} />\n            )}\n          </span>\n        )}\n        <span\n          className={`data-children-wrapper ${icons.leadingIcon || icons.leadingIconHover ? '' : 'pl-[44px]'} ${icons.trailingIcon || icons.trailingIconHover ? '' : 'pr-[44px]'}`}\n        >\n          {[data.props.children].map((e) => {\n            return e as ReactNode;\n          })}\n        </span>\n        {(icons.trailingIcon || icons.trailingIconHover) && (\n          <span className=\"icon-wrapper ml-auto justify-end\" role=\"none\" onClick={handleClickIcon}>\n            {icons.trailingIcon && (\n              <Icon name={icons.trailingIcon} dimensions=\"m\" aria-hidden {...(showIconHover ? { style: { display: 'none' } } : '')} />\n            )}\n            {icons.trailingIconHover && (\n              <Icon name={icons.trailingIconHover} dimensions=\"m\" aria-hidden {...(showIconHover ? '' : { style: { display: 'none' } })} />\n            )}\n          </span>\n        )}\n      </>\n    );\n  };\n\n  const cloneAnchorElement = (data: ReactElement, ariaOwns: string, key: string, dataChildren: ReactElement) => {\n    return cloneElement(data, {\n      'onClick': (event: MouseEvent<HTMLAnchorElement>) => handleAnchorClick(event, data.props as HTMLProps<HTMLAnchorElement>),\n      'onKeyUp': handleOnKeyUp,\n      'onKeyDown': handleOnKeyDown,\n      'onMouseDown': (event: MouseEvent<HTMLAnchorElement>) => handleMouseDown(event, data.props as HTMLProps<HTMLAnchorElement>),\n      'onMouseEnter': handleMouseEnterIcon,\n      'onMouseLeave': handleMouseLeaveIcon,\n      'role': 'treeitem',\n      'aria-expanded': ariaExpanded,\n      'aria-owns': ariaOwns,\n      key,\n      'children': dataChildren,\n      'className':\n        'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n      'ref': anchorItemRef\n    } as HTMLProps<HTMLAnchorElement>);\n  };\n\n  const getFinal = (\n    elements: ReactElement<PropsWithChildren>[],\n    key: string,\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    },\n    ariaOwns: string\n  ) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      const insideLoopElements = elements;\n      const dataChildren = anchorIconWrapper(icons, insideLoopElements[0]);\n      if (e === 0) {\n        final = cloneAnchorElement(insideLoopElements[0], ariaOwns, key, dataChildren);\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e], { children: final, key } as HTMLProps<ReactElement>);\n        }\n      }\n    }\n    return final;\n  };\n\n  const getNotDirectAnchor = (\n    data: ReactElement<PropsWithChildren>,\n    ariaOwns: string,\n    key: string,\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    }\n  ) => {\n    // Not a direct anchor\n    let childData: ReactElement<PropsWithChildren> | null = data;\n    let elements: ReactElement<PropsWithChildren>[] = [];\n\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          // Children has href\n          isLinkedSidebarItem = true;\n          elements = [...elements, childData];\n          elements = elements.reverse();\n\n          childData = null;\n          const final = getFinal(elements, key, icons, ariaOwns);\n\n          return final;\n        } else {\n          // This childData not has href, search next children\n          elements = [...elements, childData];\n          if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n            childData = null;\n          } else {\n            childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement<PropsWithChildren>;\n          }\n        }\n      } else {\n        childData = null;\n      }\n    }\n    if (isLinkedSidebarItem) {\n      const dataChildren = anchorIconWrapper(icons, data);\n      return cloneAnchorElement(data, ariaOwns, key, dataChildren);\n    } else {\n      return cloneElement(data, { key });\n    }\n  };\n\n  const getSidebarItem = () => {\n    return listInnerSidebarItem?.map((data, index) => {\n      const key = `item-${index}-${generateId}`;\n      const ariaOwns = `treeitem-${generateId}`;\n      const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n      if (!(data.props as HTMLProps<ReactElement>).href) {\n        return getNotDirectAnchor(data, ariaOwns, key, icons);\n      } else {\n        isLinkedSidebarItem = true;\n        const dataChildren = anchorIconWrapper(icons, data);\n        return cloneAnchorElement(data, ariaOwns, key, dataChildren);\n      }\n    });\n  };\n\n  const getSidebarItemChildren = () => {\n    return listSidebarItemChildren?.map((data: ReactElement<SidebarItemProps>, index: number) => {\n      const key = `li-${index}-${generateId}`;\n      if (data.props.item) {\n        return cloneElement(data, { flat: `${flat}`, variant: variant, darkMode: stringToBoolean(darkMode), key });\n      } else {\n        return (\n          <li key={key} role=\"none\" className=\"agora-sidebar-item\">\n            {cloneElement(data)}\n          </li>\n        );\n      }\n    });\n  };\n\n  //Flat\n  if (stringToBoolean(flat)) {\n    newSidebarItem = getFlatSidebarItem();\n    newSidebarItemChildren = getSidebarItemChildren();\n  } else {\n    //Not Flat\n    newSidebarItem = getSidebarItem();\n    newSidebarItemChildren = getSidebarItemChildren();\n  }\n\n  useEffect(() => {\n    setAriaExpanded(setInitialSidebarItem(flat, contentItemRef.current, open, ariaExpanded));\n  }, []);\n\n  const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n  const agoraSidebarButtonItemClassName = classNames('agora-sidebar-button-item', {\n    '!pl-[42px]': icons.leadingIcon === undefined,\n    '!pr-[42px]': icons.trailingIcon === undefined\n  });\n\n  return (\n    <>\n      {isLinkedSidebarItem && newSidebarItem.length > 0 && (\n        <LinkWrapper\n          variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n          appearance=\"link\"\n          fullWidth\n          className=\"min-h-[60px] min-w-[60px] px-16\"\n          darkMode={stringToBoolean(darkMode)}\n        >\n          {newSidebarItem}\n        </LinkWrapper>\n      )}\n      {!isLinkedSidebarItem && newSidebarItem.length > 0 && !stringToBoolean(flat) && (\n        <Button\n          role=\"treeitem\"\n          appearance=\"link\"\n          variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n          className={agoraSidebarButtonItemClassName}\n          fullWidth\n          {...(stringToBoolean(flat) ? undefined : { hasIcon: true })}\n          {...icons}\n          aria-expanded={ariaExpanded}\n          aria-owns={`treeitem-${generateId}`}\n          onClick={(event: MouseEvent<HTMLButtonElement>) => handleClickIcon(event, item as HTMLProps<HTMLButtonElement>)}\n          onKeyUp={handleOnKeyUp}\n          onKeyDown={handleOnKeyDown}\n          ref={buttonItemRef}\n          darkMode={stringToBoolean(darkMode)}\n        >\n          {newSidebarItem}\n        </Button>\n      )}\n      {!isLinkedSidebarItem && stringToBoolean(flat) && item.children && (\n        <div\n          role=\"treeitem\"\n          aria-selected={undefined}\n          tabIndex={-1}\n          className=\"p-16 sidebar-item-non-interactive\"\n          aria-expanded={ariaExpanded}\n          aria-owns={`treeitem-${generateId}`}\n          onKeyUp={handleOnKeyUp}\n          onKeyDown={handleOnKeyDown}\n          onMouseDown={handleMouseDown}\n        >\n          {item.children}\n        </div>\n      )}\n\n      {newSidebarItemChildren && (\n        <ul\n          ref={contentItemRef}\n          className={contentItemClassName}\n          id={`treeitem-${generateId}`}\n          role=\"group\"\n          aria-label={item['aria-label']}\n        >\n          {newSidebarItemChildren}\n        </ul>\n      )}\n    </>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { ButtonItemProps, LinkItemProps } from './models';\nimport { SidebarVariantType } from './models/sidebar-variant.type';\nimport { SidebarItemFilter } from './sidebar-filter/sidebar-item-filter';\nimport './sidebar-item.css';\nimport { SidebarItemNavigation } from './sidebar-navigation/sidebar-item-navigation';\n\nexport interface SidebarItemProps extends ComponentProps<'li'> {\n  /**\n   * Item of sidebar\n   */\n  item: ButtonItemProps | LinkItemProps;\n  /**\n   * Open on beginning\n   */\n  open?: BooleanProp;\n  /**\n   * All item tree open. Non-collapsible.\n   */\n  flat?: BooleanProp;\n  /**\n   * Whether the sidebar item is on filter sidebar or navigation sidebar\n   */\n  variant?: SidebarVariantType;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the pill\n   */\n  hasPill?: boolean;\n  /**\n   * Sets the pill value\n   */\n  pillValue?: number;\n  /**\n   * Sets the pill aria-label\n   */\n  pillAriaLabel?: string;\n}\nconst SidebarItem: FC<SidebarItemProps> = ({ ref = null, className, variant, item, darkMode, ...props }) => {\n  const sidebarItemClassName = classNames('agora-sidebar-item', className);\n\n  return (\n    <li className={sidebarItemClassName} {...(variant === 'navigation' ? { role: 'none' } : undefined)}>\n      {variant === 'filter' && <SidebarItemFilter {...props} darkMode={darkMode} item={item} ref={ref} />}\n      {variant === 'navigation' && (\n        <SidebarItemNavigation {...props} darkMode={darkMode} {...(variant ? { variant: variant } : undefined)} item={item} />\n      )}\n    </li>\n  );\n};\n\nexport { SidebarItem };\n","import { Button } from '@/components/button';\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport React, {\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  Fragment,\n  HTMLAttributes,\n  HTMLProps,\n  KeyboardEvent,\n  ReactElement,\n  RefObject,\n  useCallback,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\nimport { MultipleLinksProps } from './skip-navigation';\nexport interface SkipNavigationMultipleProps extends ComponentProps<'div'> {\n  className: string | undefined;\n  containerSkipNavRef: RefObject<HTMLDivElement>;\n  multipleLinks: MultipleLinksProps;\n}\n\nexport const SkipNavigationMultiple: FC<SkipNavigationMultipleProps> = ({ className, containerSkipNavRef, multipleLinks, ...props }) => {\n  const skipOptionsRef = useRef<HTMLDivElement>(null);\n\n  const [ariaExpand, setAriaExpand] = useState(false);\n\n  const handleClick = () => {\n    skipOptionsRef.current?.classList.add('hidden');\n    containerSkipNavRef.current?.classList.remove('show');\n    setAriaExpand(false);\n  };\n\n  const handleFocus = (evt: FocusEvent<HTMLDivElement>) => {\n    containerSkipNavRef.current?.classList.add('show');\n    props.onFocus?.(evt);\n  };\n\n  const handleBlur = (evt: FocusEvent<HTMLDivElement>) => {\n    if (!ariaExpand) {\n      evt.currentTarget.focus();\n      containerSkipNavRef.current?.classList.remove('show');\n    }\n    props.onBlur?.(evt);\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent<HTMLDivElement>) => {\n    const code = evt.code;\n\n    const allSkipMenuItems: HTMLElement[] = containerSkipNavRef.current?.querySelectorAll('[role=\"menuitem\"]') as unknown as HTMLElement[];\n    const currentIndexFocus = [...allSkipMenuItems].findIndex((mi) => mi === evt.currentTarget);\n    if (code === 'ArrowDown') {\n      if (currentIndexFocus + 1 !== allSkipMenuItems.length) {\n        allSkipMenuItems[currentIndexFocus + 1].focus();\n      } else {\n        allSkipMenuItems[0].focus();\n      }\n    }\n\n    if (code === 'ArrowUp') {\n      if (currentIndexFocus - 1 !== allSkipMenuItems.length && currentIndexFocus - 1 >= 0) {\n        allSkipMenuItems[currentIndexFocus - 1].focus();\n      } else {\n        allSkipMenuItems[allSkipMenuItems.length - 1].focus();\n      }\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const handleSkipOptionControlKeyDownCapture = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (!skipOptionsRef.current) {\n      return;\n    }\n\n    if (ariaExpand) {\n      switch (evt.code) {\n        case 'Escape':\n        case 'Tab':\n          containerSkipNavRef.current?.classList.remove('show');\n          skipOptionsRef.current.classList.add('hidden');\n          setAriaExpand(false);\n          break;\n        case 'ArrowDown':\n        case 'ArrowUp':\n          //  PREVENT SCROLL AND TAB INDEX CHANGE FOCUS\n          evt.preventDefault();\n          evt.stopPropagation();\n          break;\n      }\n    }\n  };\n\n  const handleButtonSkipClick = () => {\n    if (skipOptionsRef.current && !ariaExpand) {\n      skipOptionsRef.current.classList.remove('hidden');\n      setAriaExpand(true);\n    } else if (skipOptionsRef.current && ariaExpand) {\n      skipOptionsRef.current.classList.add('hidden');\n      setAriaExpand(false);\n    }\n  };\n  const handleButtonFocus = () => {\n    containerSkipNavRef.current?.classList.add('show');\n    if (skipOptionsRef.current) {\n      skipOptionsRef.current.classList.remove('hidden');\n      setAriaExpand(true);\n      (document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[0] as HTMLElement)?.focus();\n    }\n  };\n  const handleButtonBlur = () => {\n    containerSkipNavRef.current?.classList.remove('show');\n  };\n\n  const handleButtonKeyUp = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (skipOptionsRef.current) {\n      switch (evt.code) {\n        case 'Escape':\n        case 'Tab':\n          skipOptionsRef.current.classList.add('hidden');\n          setAriaExpand(false);\n          break;\n        case 'ArrowDown':\n          if (ariaExpand) {\n            (document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[0] as HTMLElement)?.focus();\n          }\n          break;\n        case 'ArrowUp':\n          if (ariaExpand) {\n            (\n              document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[\n                document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]').length - 1\n              ] as HTMLElement\n            )?.focus();\n          }\n          break;\n      }\n    }\n  };\n\n  const handleButtonControlKeyDownCapture = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n\n    if (!skipOptionsRef.current) {\n      return;\n    }\n\n    if (ariaExpand) {\n      if (code === 'Tab' || code === 'ArrowDown' || code === 'ArrowUp') {\n        //  PREVENT SCROLL AND TAB INDEX CHANGE FOCUS\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      if (skipOptionsRef.current && !ariaExpand) {\n        skipOptionsRef.current.classList.remove('hidden');\n      } else if (skipOptionsRef.current && ariaExpand) {\n        skipOptionsRef.current.classList.add('hidden');\n      }\n    }\n  };\n\n  const getFinal = (elements: ReactElement[], lvl: number) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      if (e === 0) {\n        final = cloneElement(elements[0] as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n          role: 'menuitem',\n          className: `skip-level-${lvl}`,\n          onClick: handleClick,\n          onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt),\n          onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt),\n          onKeyUp: (evt: KeyboardEvent<HTMLDivElement>) => handleKeyUp(evt),\n          onKeyDownCapture: (evt: KeyboardEvent<HTMLDivElement>) => handleSkipOptionControlKeyDownCapture(evt)\n        });\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e] as ReactElement<HTMLAttributes<HTMLDivElement>>, { children: final });\n        }\n      }\n    }\n    return final;\n  };\n\n  const getNotDirectAnchor = (initLink: ReactElement, lvl: number) => {\n    let childData: ReactElement | null = initLink;\n    let elements: ReactElement[] = [];\n    let isLink: boolean = false;\n    let final;\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          isLink = true;\n          elements = [...elements, childData];\n          elements = elements.reverse();\n          final = getFinal(elements, lvl);\n          childData = null;\n        } else {\n          elements = [...elements, childData];\n          if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n            childData = null;\n          } else {\n            childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n          }\n        }\n      } else {\n        childData = null;\n      }\n    }\n    if (isLink) {\n      return final;\n    } else {\n      return initLink;\n    }\n  };\n\n  type RecursiveLinkType = Record<string, Record<string, ReactElement>>;\n\n  let groupAnchors: ReactElement[] = [];\n  const recursiveLinks = (links: RecursiveLinkType[], lvl: number = 0) => {\n    links.forEach((level: RecursiveLinkType, index) => {\n      const getKeys = Object.keys(level);\n      const keyIndex = getKeys.findIndex((o) => o != 'link');\n      const key = getKeys[keyIndex];\n\n      let newLink;\n      const init = level[key];\n      const initLink = init.link;\n      const initLength = Object.keys(init).length;\n\n      if ((initLink?.props as HTMLProps<ReactElement>)?.href) {\n        newLink = cloneElement(init.link, {\n          role: 'menuitem',\n          className: `skip-level-${lvl}`,\n          onClick: handleClick,\n          onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt),\n          onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt),\n          onKeyUp: (evt: KeyboardEvent<HTMLDivElement>) => handleKeyUp(evt),\n          onKeyDownCapture: (evt: KeyboardEvent<HTMLDivElement>) => handleSkipOptionControlKeyDownCapture(evt)\n        } as HTMLProps<HTMLDivElement>);\n      } else {\n        newLink = getNotDirectAnchor(initLink, lvl);\n      }\n\n      const idx = `link-lvl-${lvl}-${index}`;\n      if (initLength > 1) {\n        groupAnchors = [\n          ...groupAnchors,\n          <LinkWrapper key={idx} appearance=\"link\" variant=\"neutral\" className=\"skip-option\">\n            {newLink}\n          </LinkWrapper>\n        ];\n\n        recursiveLinks([init as unknown as RecursiveLinkType], lvl + 1);\n      } else {\n        groupAnchors = [\n          ...groupAnchors,\n          <LinkWrapper key={idx} appearance=\"link\" variant=\"neutral\" className=\"skip-option\">\n            {newLink}\n          </LinkWrapper>\n        ];\n      }\n    });\n  };\n\n  const menuSkipNavigation = () => {\n    const menu = multipleLinks?.skipList.map((element, index) => {\n      groupAnchors = [];\n      const idx = index;\n      const links = element.links as unknown as RecursiveLinkType[];\n      recursiveLinks(links, 0);\n      return (\n        <Fragment key={idx}>\n          <div role=\"separator\" id={`skip-separator-${idx}`} className=\"skip-section-separator\">\n            {element.sectionLabel}\n          </div>\n          <div role=\"group\" aria-labelledby={`skip-separator-${idx}`} className=\"flex flex-col\">\n            {groupAnchors}\n          </div>\n        </Fragment>\n      );\n    });\n\n    return menu;\n  };\n  const handleClickOutside = useCallback((evt: MouseEvent) => {\n    if (!containerSkipNavRef.current?.contains(evt.target as HTMLElement)) {\n      skipOptionsRef.current?.classList.add('hidden');\n      containerSkipNavRef.current?.classList.remove('show');\n      setAriaExpand(false);\n    }\n  }, []);\n\n  useEffect(() => {\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  return (\n    <div className={className} ref={containerSkipNavRef} {...props}>\n      <Button\n        {...multipleLinks.skipButton}\n        appearance=\"link\"\n        className=\"skip-button\"\n        aria-expanded={ariaExpand ? 'true' : 'false'}\n        onClick={handleButtonSkipClick}\n        onFocus={handleButtonFocus}\n        onBlur={handleButtonBlur}\n        onKeyUp={handleButtonKeyUp}\n        onKeyDownCapture={handleButtonControlKeyDownCapture}\n      />\n      <div role=\"menu\" aria-label={multipleLinks.skipAriaLabel} className=\"skip-options hidden\" ref={skipOptionsRef}>\n        {menuSkipNavigation()}\n      </div>\n    </div>\n  );\n};\n","import { LinkWrapper } from '@/components/link-wrapper';\nimport React, {\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  HTMLAttributes,\n  HTMLProps,\n  ReactElement,\n  MouseEvent as ReactMouseEvent,\n  RefObject\n} from 'react';\n\nexport interface SkipNavigationSingleProps extends ComponentProps<'div'> {\n  className: string | undefined;\n  containerSkipNavRef: RefObject<HTMLDivElement>;\n  singleLink: ReactElement;\n  targetRef?: RefObject<HTMLElement>;\n}\n\nconst handleClick = (evt: ReactMouseEvent<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  props.targetRef?.current?.focus();\n  props.onClick?.(evt);\n};\n\nconst handleFocus = (evt: FocusEvent<HTMLDivElement>, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  containerSkipNavRef.current?.classList.add('show');\n  props.onFocus?.(evt);\n};\n\nconst handleBlur = (evt: FocusEvent<HTMLDivElement>, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  containerSkipNavRef.current?.classList.remove('show');\n  props.onBlur?.(evt);\n};\n\nconst getFinal = (elements: ReactElement[], containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let final;\n  for (let e = 0; e < elements.length; e++) {\n    if (e === 0) {\n      final = cloneElement(elements[0] as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n        className: 'skip-item',\n        onClick: (evt: ReactMouseEvent<HTMLDivElement>) => handleClick(evt, props),\n        onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt, containerSkipNavRef, props),\n        onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt, containerSkipNavRef, props)\n      });\n    } else if (e > 0) {\n      if (final) {\n        final = cloneElement(elements[e] as ReactElement<HTMLAttributes<HTMLDivElement>>, { children: final });\n      }\n    }\n  }\n  return final;\n};\n\nconst getNotDirectAnchor = (singleLink: ReactElement, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let childData: ReactElement | null = singleLink;\n  let elements: ReactElement[] = [];\n  let isLink: boolean = false;\n  let final;\n\n  while (childData !== null) {\n    if ((childData.props as HTMLProps<ReactElement>)?.children) {\n      if ((childData.props as HTMLProps<ReactElement>).href) {\n        isLink = true;\n        elements = [...elements, childData];\n        elements = elements.reverse();\n        final = getFinal(elements, containerSkipNavRef, props);\n        childData = null;\n      } else {\n        elements = [...elements, childData];\n        if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n          childData = null;\n        } else {\n          childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n        }\n      }\n    } else {\n      childData = null;\n    }\n  }\n  if (isLink) {\n    return final;\n  } else {\n    return singleLink;\n  }\n};\n\nconst buildAnchor = (singleLink: ReactElement, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let newSingleLink;\n\n  if (singleLink && (singleLink?.props as HTMLProps<ReactElement>).href) {\n    newSingleLink = cloneElement(singleLink as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n      className: 'skip-item',\n      onClick: (evt: ReactMouseEvent<HTMLDivElement>) => handleClick(evt, props),\n      onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt, containerSkipNavRef, props),\n      onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt, containerSkipNavRef, props)\n    });\n  } else {\n    newSingleLink = getNotDirectAnchor(singleLink, containerSkipNavRef, props);\n  }\n\n  return newSingleLink;\n};\n\nexport const SkipNavigationSingle: FC<SkipNavigationSingleProps> = ({ className, containerSkipNavRef, singleLink, ...props }) => {\n  const newSingleLink = buildAnchor(singleLink, containerSkipNavRef, { className, containerSkipNavRef, singleLink, ...props });\n\n  return (\n    <>\n      {newSingleLink && (\n        <div className={className} ref={containerSkipNavRef} {...props}>\n          <LinkWrapper inline={true}>{newSingleLink}</LinkWrapper>\n        </div>\n      )}\n    </>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, RefObject, useImperativeHandle, useRef } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { ButtonProps } from '@/components/button';\nimport { SkipNavigationMultiple } from './skip-navigation-multiple';\nimport { SkipNavigationSingle } from './skip-navigation-single';\nimport './skip-navigation.css';\n\nexport interface LevelLinks {\n  level1: {\n    link: ReactNode;\n    level2?: {\n      link: ReactNode;\n      level3?: {\n        link: ReactNode;\n      };\n    };\n  };\n}\n\nexport interface SkipListProps {\n  sectionLabel: string;\n  links: LevelLinks[];\n}\nexport interface MultipleLinksProps {\n  skipButton: ButtonProps;\n  skipAriaLabel: string;\n  skipList: SkipListProps[];\n}\n\nexport interface SkipNavigationProps extends ComponentProps<'div'> {\n  /**\n   * Skip navigation multiple links or single link\n   */\n  multiple?: BooleanProp;\n\n  /**\n   * Single Link\n   */\n  singleLink?: ReactElement;\n\n  /**\n   * Multiple Links\n   */\n  multipleLinks?: MultipleLinksProps;\n}\n\nconst SkipNavigation: FC<SkipNavigationProps> = ({ ref = null, multiple = 'false', singleLink, multipleLinks, ...props }) => {\n  const containerSkipNavRef = useRef<HTMLDivElement>(null);\n\n  useImperativeHandle(ref, () => containerSkipNavRef.current as HTMLDivElement);\n\n  const navigationClassName = classNames('agora-skip-navigation container', props.className);\n\n  return (\n    <>\n      {stringToBoolean(multiple) && multipleLinks && (\n        <SkipNavigationMultiple\n          className={navigationClassName}\n          containerSkipNavRef={containerSkipNavRef as RefObject<HTMLDivElement>}\n          multipleLinks={multipleLinks}\n        />\n      )}\n      {!stringToBoolean(multiple) && singleLink && (\n        <SkipNavigationSingle\n          className={navigationClassName}\n          containerSkipNavRef={containerSkipNavRef as RefObject<HTMLDivElement>}\n          singleLink={singleLink}\n          {...props}\n        />\n      )}\n    </>\n  );\n};\n\nexport { SkipNavigation };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport './step-list.css';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport interface StepListProps extends ComponentPropsWithoutRef<'ol'> {\n  /**\n   * Children content.\n   */\n  children?: ReactElement<HTMLLIElement> | Array<ReactElement<HTMLLIElement>>;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const StepList: FC<StepListProps> = ({ children, darkMode, ...props }) => {\n  const stepListClass = classNames('agora-step-list', { 'dark-mode': stringToBoolean(darkMode) });\n\n  return (\n    <ol className={stepListClass} {...props}>\n      {children}\n    </ol>\n  );\n};\n","import React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactElement, useRef, useState } from 'react';\n\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport { Icon, IconDimensions, IconProps } from '../icon';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetProps, IconSetState } from '../shared/icon-set/icon-set';\nimport './step.css';\n\n/**\n * Available step status.\n */\nexport type StepStatusType = 'done' | 'error' | 'current' | 'draft' | 'disabled' | 'default';\n\nexport interface StepProps extends ComponentProps<'button'> {\n  /**\n   * Defines if the step is interactive. If the parent stepper have interactive prop defined, it will override this prop.\n   */\n  interactive?: BooleanProp;\n  /**\n   * The status of the step.\n   */\n  status?: StepStatusType;\n  /**\n   * Defines if the stepper is in dark mode or not.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst getInteractiveIconSet = (\n  activeState: IconSetState,\n  status: StepStatusType,\n  dimensions: IconDimensions\n): ReactElement<IconSetProps> => {\n  return (\n    <>\n      {status === 'draft' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-edit\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'current' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-edit\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'done' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-check\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-check\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-check\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'error' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-alert-triangle\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-alert-triangle\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-alert-triangle\" aria-hidden />\n        </IconSet>\n      )}\n    </>\n  );\n};\n\nconst getNonInteractiveIcon = (status: StepStatusType, dimensions: IconDimensions): ReactElement<IconProps> => {\n  return (\n    <>\n      {status === 'draft' && <Icon dimensions={dimensions} name=\"agora-line-edit\" aria-hidden />}\n      {status === 'current' && <Icon dimensions={dimensions} name=\"agora-line-edit\" aria-hidden />}\n      {status === 'done' && <Icon dimensions={dimensions} name=\"agora-line-check\" aria-hidden />}\n      {status === 'error' && <Icon dimensions={dimensions} name=\"agora-line-alert-triangle\" aria-hidden />}\n    </>\n  );\n};\n\nexport const Step: FC<StepProps> = ({ interactive = false, status = 'default', darkMode = false, children, ...props }) => {\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n\n  const isMobileOrTablet = width < xlScreen;\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const classes = classNames('step', status, { 'read-only': !stringToBoolean(interactive), 'dark-mode': stringToBoolean(darkMode) });\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      buttonRef.current?.classList.add('active');\n\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      buttonRef.current?.classList.remove('active');\n\n      setActiveState('default');\n\n      buttonRef.current?.setAttribute('data-custom-triggered-click', 'true');\n      buttonRef.current?.click();\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    buttonRef.current?.classList.remove('active');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseDownHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n\n    buttonRef.current?.classList.add('active');\n\n    props.onMouseDown?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseUpHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    buttonRef.current?.classList.remove('active');\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    //  TRUE MOUSE CLICK OR TOUCH CLICK\n    if (evt.detail > 0) {\n      setActiveState(isTouchDevice ? 'default' : 'hover');\n      props.onClick?.(evt);\n      return;\n    }\n\n    //  CLICK FROM KEYBOARD\n\n    //  NEED TO CHECK THIS ATTRIBUTE BECAUSE FIREFOX DOES NOT TRIGGER CLICK EVENTS WHENEVER THE ENTER/SPACE/NUMPADENTER KEY IS PRESSED.\n    //  TO FIX THAT INCONSISTENCY, WE ADD A CUSTOM ATTRIBUTE TO SIGNAL THE ARTIFICIAL CLICK TRIGGER AND PREVENT THE CHROMIUM BASED BROWSERS OF DUPLICATE CLICK EVENTS.\n    //  ON KEYUP THE CLICK EVENT IS TRIGGERED AND WILL BE ADDED THE CUSTOM ATTRIBUTE. THEN, IF THE BROWSER TRIGGERED ANOTHER CLICK, THE HANDLER WILL NOT FIND THE CUSTOM ATTRIBUTE AND WILL NOT TRIGGER A DUPLICATED EVENT.\n    const shouldTriggerClick = buttonRef.current?.getAttribute('data-custom-triggered-click') === 'true';\n    buttonRef.current?.removeAttribute('data-custom-triggered-click');\n\n    if (!shouldTriggerClick) {\n      evt.preventDefault();\n      return;\n    }\n\n    setActiveState('default');\n    props.onClick?.(evt);\n  };\n\n  return (\n    <li className={classes} {...(status === 'current' ? { 'aria-current': 'step' } : {})}>\n      <button\n        {...props}\n        ref={buttonRef}\n        type=\"button\"\n        disabled={status === 'disabled'}\n        {...(!stringToBoolean(interactive) || status === 'disabled'\n          ? { tabIndex: -1 }\n          : {\n              onClick: onClickHandler,\n              onKeyDown: onKeyDownHandler,\n              onKeyUp: onKeyUpHandler,\n              onMouseDown: onMouseDownHandler,\n              onMouseUp: onMouseUpHandler,\n              onMouseLeave: onMouseLeaveHandler,\n              onMouseEnter: onMouseEnterHandler\n            })}\n      >\n        <span className=\"line\" />\n\n        {stringToBoolean(interactive) && (\n          <span className=\"counter\">{getInteractiveIconSet(activeState, status, isMobileOrTablet ? 'xs' : 'm')}</span>\n        )}\n\n        {!stringToBoolean(interactive) && <span className=\"counter\">{getNonInteractiveIcon(status, isMobileOrTablet ? 'xs' : 'm')}</span>}\n\n        <span className=\"content\">{children}</span>\n      </button>\n    </li>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, useId } from 'react';\nimport { Step, StepProps } from './step';\nimport './stepper.css';\n\nexport interface StepperProps extends ComponentProps<'div'> {\n  /**\n   * Defines if the stepper is interactive or not.\n   */\n  interactive?: BooleanProp;\n  /**\n   * Defines if the stepper is in dark mode or not.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * List of steps.\n   */\n  children?: ReactElement<StepProps> | ReactElement<StepProps>[];\n}\n\nconst Stepper: FC<StepperProps> = ({ ref = null, className, children, interactive = false, darkMode = false, ...props }) => {\n  const generatedId = useId();\n\n  const classes = classNames('agora-stepper', interactive, darkMode, { 'dark-mode': stringToBoolean(darkMode) }, className);\n\n  return (\n    <nav {...props} ref={ref} className={classes}>\n      <ol>\n        {Children.map(children, (c, index) => {\n          if (!isValidElement<StepProps>(c)) {\n            return null;\n          }\n\n          const key = `agora-stepper-${generatedId}-${index}`;\n\n          return (\n            <Step\n              {...c.props}\n              key={key}\n              interactive={typeof interactive !== 'undefined' ? stringToBoolean(interactive) : stringToBoolean(c.props.interactive)}\n              darkMode={typeof darkMode !== 'undefined' ? stringToBoolean(darkMode) : stringToBoolean(c.props.darkMode)}\n            />\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n\nexport { Stepper };\n","import { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useEffect, useId, useRef, useState } from 'react';\nimport './switch.css';\n\nexport type SwitchPosition = 'start' | 'center' | 'space-between' | 'space-around' | 'space-evenly';\n\nexport interface SwitchProps extends ComponentProps<'input'> {\n  /**\n   * The flag to set dark mode as active or not.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Whether the switch is reversed.\n   */\n  reverse?: BooleanProp;\n  /**\n   * The position of the switch.\n   */\n  position?: SwitchPosition;\n  /**\n   * Defines if the Switch should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlight the switch indicating some error.\n   */\n  hasError?: BooleanProp;\n}\n\nconst Switch: FC<SwitchProps> = ({\n  ref = null,\n  darkMode = false,\n  className,\n  label,\n  hideLabel,\n  disabled,\n  reverse,\n  position,\n  fullWidth,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  hasError,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentChecked, setCurrentChecked] = useState(stringToBoolean(propsClone.checked ?? propsClone.defaultChecked));\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const handleChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentChecked((last) => !last);\n    asyncTrigger(() => onChange?.(evt));\n  };\n\n  useEffect(() => {\n    const checked = propsClone.checked ?? propsClone.defaultChecked;\n    if (checked !== undefined) {\n      setCurrentChecked(checked);\n    }\n  }, [propsClone.checked, propsClone.defaultChecked]);\n\n  const handleCustomSwitchKeydown = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (wrapperRef !== null && (evt.code === 'Space' || evt.code === 'Enter' || evt.code === 'NumpadEnter')) {\n      evt.preventDefault();\n      wrapperRef.current?.querySelector('input')?.click();\n    }\n  };\n\n  const handleCustomSwitchClick = (evt: MouseEvent<HTMLDivElement>) => {\n    if (wrapperRef !== null) {\n      evt.preventDefault();\n      wrapperRef.current?.querySelector('input')?.click();\n    }\n  };\n\n  const switchWrapperClasses = classNames('agora-switch-wrapper', className, {\n    'dark-mode': stringToBoolean(darkMode),\n    'switch-side': stringToBoolean(reverse),\n    [`switch-${position}`]: position,\n    'switch-full-width': stringToBoolean(fullWidth),\n    'switch-disabled': disabled,\n    'switch-focus': hideLabel,\n    'switch-label-focus': !hideLabel,\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const markerClasses = classNames('toggle-ball', {\n    'icon-disabled': disabled,\n    'icon-off': !currentChecked && !disabled\n  });\n\n  const switchLabelClasses = classNames('switch-label', {\n    'label-disabled': disabled\n  });\n\n  const ariaLabel = props['aria-label'] ?? label;\n\n  return (\n    <div>\n      <div ref={wrapperRef} className={switchWrapperClasses}>\n        <input {...propsClone} type=\"checkbox\" tabIndex={-1} disabled={disabled} onChange={handleChange} ref={ref} id={propsClone.id} />\n        <div\n          className={`toggle-switch ${currentChecked ? 'on' : 'off'} ${disabled ? 'toggle-switch-disabled' : ''}`}\n          role=\"switch\"\n          aria-checked={currentChecked ? 'true' : 'false'}\n          tabIndex={!disabled ? 0 : -1}\n          aria-label={ariaLabel}\n          aria-describedby={\n            (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText ? `switch-${propsClone.id}-feedback` : undefined\n          }\n          onClick={handleCustomSwitchClick}\n          onKeyDown={handleCustomSwitchKeydown}\n        >\n          <span className={markerClasses}>\n            {currentChecked ? (\n              <Icon name=\"agora-solid-check\" aria-hidden className=\"on\" dimensions=\"xs\" />\n            ) : (\n              <Icon name=\"agora-solid-x\" aria-hidden className=\"off\" dimensions=\"xs\" />\n            )}\n          </span>\n        </div>\n        {!hideLabel && label && (\n          <label htmlFor={propsClone.id} className={switchLabelClasses}>\n            {label}\n          </label>\n        )}\n      </div>\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`switch-${propsClone.id}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          className=\"px-16\"\n        />\n      )}\n    </div>\n  );\n};\n\nexport { Switch };\n","import React, { FC, HTMLAttributes, ReactElement } from 'react';\nimport { TableRowProps } from './table-row';\n\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactElement<TableRowProps> | Array<ReactElement<TableRowProps>>;\n}\n\nconst TableBody: FC<TableBodyProps> = ({ children, ...props }) => {\n  return <tbody {...props}>{children}</tbody>;\n};\n\nexport { TableBody };\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {\n  children: ReactNode;\n}\n\nconst TableCaption: FC<TableCaptionProps> = ({ children, ...props }) => {\n  return <caption {...props}>{children}</caption>;\n};\n\nexport { TableCaption };\n","import React, { FC, ReactNode, TdHTMLAttributes } from 'react';\n\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n  children: ReactNode;\n  /**\n   * Header label.\n   */\n  headerLabel: ReactNode;\n  /**\n   * Header identification key.\n   */\n  headerKey?: string;\n  /**\n   * Value of the cell.\n   */\n  value?: string | number | Date;\n}\n\nconst TableCell: FC<TableCellProps> = ({ children, headerKey = '', headerLabel, ...props }) => {\n  return (\n    <td {...props} data-header-key={headerKey} data-label={headerLabel}>\n      {children}\n    </td>\n  );\n};\n\nexport { TableCell };\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface TableFooterProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactNode;\n}\n\nconst TableFooter: FC<TableFooterProps> = ({ children, ...props }) => {\n  return <tfoot {...props}>{children}</tfoot>;\n};\n\nexport { TableFooter };\n","import React, { FC, HTMLAttributes, ReactElement } from 'react';\nimport { TableRowProps } from './table-row';\n\nexport interface TableHeaderProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactElement<TableRowProps> | Array<ReactElement<TableRowProps>>;\n}\n\nconst TableHeader: FC<TableHeaderProps> = ({ children, ...props }) => {\n  return <thead {...props}>{children}</thead>;\n};\n\nexport { TableHeader };\n","import React, { FC, HTMLAttributes, ReactNode, useMemo } from 'react';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { SortOrder } from './models/sort-order.type';\nimport { SortType } from './models/sort-type.type';\n\nconst DESCENDING_ICON_NAMES: Record<SortType, string> = {\n  string: 'agora-line-sort-alpha-up',\n  date: 'agora-solid-sort-generic-up',\n  numeric: 'agora-solid-sort-generic-up'\n};\n\nconst ASCENDING_ICON_NAMES: Record<SortType, string> = {\n  string: 'agora-solid-sort-alpha-down',\n  date: 'agora-solid-sort-generic-down',\n  numeric: 'agora-solid-sort-generic-down'\n};\n\nexport interface TableHeaderCellProps extends HTMLAttributes<HTMLTableCellElement> {\n  children: ReactNode;\n  /**\n   * The sort type applied.\n   * */\n  sortType?: SortType;\n  /**\n   * The sort order applied.\n   * */\n  sortOrder?: SortOrder;\n  /**\n   * Callback to be called when the sort change\n   */\n  onSortChange?: (sortOrder: SortOrder) => void;\n}\n\nconst TableHeaderCell: FC<TableHeaderCellProps> = ({ sortType, sortOrder = 'none', onSortChange, children, ...props }) => {\n  const circularSortOrder = ['none', 'ascending', 'descending'] as SortOrder[];\n  const currentSortOrderIndex = circularSortOrder.findIndex((order) => order === sortOrder);\n\n  const sortIconName = useMemo(() => {\n    if (!sortType) {\n      return '';\n    }\n\n    if (sortOrder === 'ascending') {\n      return ASCENDING_ICON_NAMES[sortType];\n    }\n\n    if (sortOrder === 'descending') {\n      return DESCENDING_ICON_NAMES[sortType];\n    }\n\n    return 'agora-solid-sort-vertical';\n  }, [sortType, sortOrder]);\n\n  const ariaSortValue = useMemo(() => {\n    if (!sortType) {\n      return 'none';\n    }\n\n    if (sortOrder === 'ascending') {\n      return 'ascending';\n    }\n\n    if (sortOrder === 'descending') {\n      return 'descending';\n    }\n\n    return 'none';\n  }, [sortType, sortOrder]);\n\n  const applySort = () => {\n    if (!sortType) {\n      return '';\n    }\n\n    let nextSortOrder = currentSortOrderIndex + 1;\n\n    if (nextSortOrder >= circularSortOrder.length) {\n      nextSortOrder = 0;\n    }\n\n    onSortChange?.(circularSortOrder[nextSortOrder]);\n  };\n\n  return (\n    <th {...props} className={props.className} aria-sort={ariaSortValue}>\n      {sortType && (\n        <Button className=\"table-header-cell\" appearance=\"link\" variant=\"neutral\" aria-label=\"Ordenar\" onClick={applySort}>\n          <span className=\"table-header-cell__content\">\n            <Icon name={sortIconName} aria-hidden />\n            <span className=\"children-wrapper\">{children}</span>\n          </span>\n        </Button>\n      )}\n\n      {!sortType && <span className=\"table-header-cell\">{children}</span>}\n    </th>\n  );\n};\n\nexport { TableHeaderCell };\n","import React, { FC, HTMLAttributes, ReactElement } from 'react';\nimport { TableCellProps } from './table-cell';\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n  children: ReactElement<TableCellProps> | Array<ReactElement<TableCellProps>>;\n}\n\nconst TableRow: FC<TableRowProps> = ({ children, ...props }) => {\n  return <tr {...props}>{children}</tr>;\n};\n\nexport { TableRow };\n","import { Button } from '@/components/button';\nimport { Dropdown, DropdownElement, DropdownOption, DropdownOptionProps, DropdownSection } from '@/components/dropdown';\nimport React, {\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent as ReactMouseEvent,\n  Ref,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport './table-pagination.css';\nimport { asyncTrigger } from '@/utils';\n\nexport interface TablePaginationProps extends ComponentProps<'div'> {\n  /**\n   * Defines the label for the items per page\n   */\n  itemsPerPageLabel: string;\n  /**\n   * Defines the page size\n   */\n  itemsPerPage: number;\n  /**\n   * Total items of the table\n   */\n  totalItems: number;\n  /**\n   * Array of values to be displayed in the dropdown\n   */\n  availablePageSizes: number[];\n  /**\n   * Current page of the table\n   */\n  currentPage: number;\n  /**\n   * Aria label for the button\n   */\n  buttonDropdownAriaLabel: string;\n  /**\n   * Aria label for the dropdown list\n   */\n  dropdownListAriaLabel: string;\n  /**\n   * Aria label for the previous button\n   */\n  prevButtonAriaLabel?: string;\n  /**\n   * Aria label for the next button\n   */\n  nextButtonAriaLabel?: string;\n  /**\n   * Callback to be called when the page changes\n   */\n  onPageChange?: (newPage: number) => void;\n  /**\n   * Callback to be called when the dropdown changes\n   */\n  onPageSizeChange?: (newPageSize: number) => void;\n}\n\nconst TablePagination: FC<TablePaginationProps> = ({\n  ref = null,\n  itemsPerPageLabel,\n  itemsPerPage,\n  totalItems,\n  availablePageSizes,\n  currentPage,\n  buttonDropdownAriaLabel,\n  dropdownListAriaLabel,\n  prevButtonAriaLabel,\n  nextButtonAriaLabel,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const dropdownRef = useRef<DropdownElement>(null);\n  const dropdownWrapperRef = useRef<HTMLDivElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const toggleVisibility = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n\n    buttonRef.current?.classList.remove('active');\n  };\n\n  const onDropdownButtonClickHandler = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (typeof evt.detail === 'number' && evt.detail === 0) {\n      //  EVENT DETAIL IS THE NUMBER OF CLICKS. KEYBOARD DOES NOT ADD A CLICK COUNTER.\n      //  KEYBOARD IS HANDLED ON KEYDOWN\n      return;\n    }\n\n    toggleVisibility();\n  };\n\n  const onDropdownButtonKeydownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n\n    if (code === 'Escape' && dropdownRef.current?.visibility) {\n      dropdownRef.current.hide();\n    }\n\n    if (code === 'Enter' || code === 'Space' || code === 'NumpadEnter') {\n      toggleVisibility();\n    }\n  };\n\n  const onShowDropdownHandler = () => {\n    setIsDropdownVisible(true);\n    asyncTrigger(() => {\n      dropdownRef.current?.first();\n    });\n  };\n\n  const onHideDropDownHandler = () => {\n    setIsDropdownVisible(false);\n    asyncTrigger(() => {\n      buttonRef.current?.focus();\n    });\n  };\n\n  const onDropdownChangeHandler = (options: DropdownOptionProps[]) => {\n    if (options.length > 0) {\n      const option = options[0];\n      props.onPageSizeChange?.(+option.value);\n    }\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (dropdownRef.current?.visibility && !dropdownWrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const totalPages = Math.ceil(totalItems / itemsPerPage);\n\n  const handlePrevPage = () => {\n    props.onPageChange?.(Math.max(0, currentPage - 1));\n  };\n\n  const handleNextPage = () => {\n    props.onPageChange?.(Math.min(currentPage + 1, totalPages - 1));\n  };\n\n  //  Utility to change button icon\n  const iconDefinition = useMemo(() => {\n    if (!isDropdownVisible) {\n      return {\n        default: 'agora-solid-chevron-down',\n        hover: 'agora-line-chevron-down'\n      };\n    }\n\n    return {\n      default: 'agora-solid-chevron-up',\n      hover: 'agora-line-chevron-up'\n    };\n  }, [isDropdownVisible]);\n\n  return (\n    <div className=\"agora-table-pagination\" ref={ref}>\n      <div className=\"section-items\" ref={dropdownWrapperRef}>\n        <Button\n          ref={buttonRef}\n          appearance=\"link\"\n          hasIcon\n          trailingIcon={iconDefinition.default}\n          trailingIconHover={iconDefinition.hover}\n          aria-label={buttonDropdownAriaLabel}\n          role=\"combobox\"\n          aria-controls={generatedId}\n          aria-expanded={isDropdownVisible}\n          onClick={onDropdownButtonClickHandler}\n          onKeyDown={onDropdownButtonKeydownHandler}\n        >\n          {itemsPerPageLabel} {itemsPerPage}\n        </Button>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            id={generatedId}\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            type=\"text\"\n            onHide={onHideDropDownHandler}\n            onShow={onShowDropdownHandler}\n            onChange={onDropdownChangeHandler}\n            hideSectionNames\n            aria-label={dropdownListAriaLabel}\n          >\n            <DropdownSection label=\"pagination\" name=\"page-size-dropdown\">\n              {availablePageSizes.map((ps) => {\n                return (\n                  <DropdownOption key={ps} value={String(ps)}>\n                    {String(ps)}\n                  </DropdownOption>\n                );\n              })}\n            </DropdownSection>\n          </Dropdown>\n        </div>\n      </div>\n      <div className=\"action-buttons\">\n        <div className=\"prev_box\">\n          <Button\n            variant=\"neutral\"\n            darkMode\n            className=\"prev\"\n            hasIcon\n            iconOnly\n            trailingIcon=\"agora-solid-chevron-left\"\n            trailingIconHover=\"agora-line-chevron-left\"\n            onClick={handlePrevPage}\n            disabled={currentPage === 0}\n            aria-label={prevButtonAriaLabel}\n          />\n        </div>\n        <div className=\"next_box\">\n          <Button\n            variant=\"neutral\"\n            darkMode\n            className=\"next\"\n            hasIcon\n            iconOnly\n            trailingIcon=\"agora-solid-chevron-right\"\n            trailingIconHover=\"agora-line-chevron-right\"\n            onClick={handleNextPage}\n            disabled={currentPage === totalPages - 1}\n            aria-label={nextButtonAriaLabel}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { TablePagination };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement } from 'react';\nimport { TableLayout } from './models/table-layout.type';\nimport { TableBodyProps } from './table-body';\nimport { TableCaptionProps } from './table-caption';\nimport { TableFooterProps } from './table-footer';\nimport { TableHeaderProps } from './table-header';\nimport { TablePagination, TablePaginationProps } from './table-pagination';\nimport './table.css';\n\nexport interface TableProps extends ComponentProps<'table'> {\n  /**\n   * Table children content\n   */\n  children?:\n    | ReactElement<TableCaptionProps>\n    | ReactElement<TableHeaderProps>\n    | ReactElement<TableBodyProps>\n    | ReactElement<TableFooterProps>\n    | Array<\n        ReactElement<TableCaptionProps> | ReactElement<TableHeaderProps> | ReactElement<TableBodyProps> | ReactElement<TableFooterProps>\n      >;\n  /**\n   * Define layout for mobile breakpoint\n   */\n  mobileLayout?: TableLayout;\n  /**\n   * Define layout for tablet breakpoint\n   */\n  tabletLayout?: TableLayout;\n  /**\n   * Define layout for desktop breakpoint\n   */\n  desktopLayout?: TableLayout;\n  /**\n   * Configurations used for pagination\n   */\n  paginationProps?: TablePaginationProps;\n  /**\n   * Alternative text describing the current sort applied.\n   */\n  sortDescription?: string;\n}\n\nconst Table: FC<TableProps> = ({\n  ref = null,\n  className = '',\n  mobileLayout = 'list',\n  tabletLayout = 'table',\n  desktopLayout = 'table',\n  children,\n  paginationProps,\n  sortDescription = '',\n  ...props\n}) => {\n  const tableClassNames = classNames(\n    'agora-table-container',\n    {\n      'layout-table-mobile': mobileLayout === 'table',\n      'layout-list-mobile': mobileLayout === 'list',\n      'layout-table-tablet': tabletLayout === 'table',\n      'layout-list-tablet': tabletLayout === 'list',\n      'layout-table-desktop': desktopLayout === 'table',\n      'layout-list-desktop': desktopLayout === 'list'\n    },\n    className\n  );\n\n  return (\n    <div className=\"agora-table\">\n      <table {...props} className={tableClassNames} ref={ref}>\n        {children}\n      </table>\n      {paginationProps && <TablePagination {...paginationProps} />}\n      <span className=\"sr-only\" aria-live=\"polite\">\n        {sortDescription}\n      </span>\n    </div>\n  );\n};\n\nexport { Table };\n","import { Button } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport './tag.css';\n\nexport interface TagProps extends ComponentProps<'button'> {\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the icon to use.\n   */\n  icon?: string;\n  /**\n   * Defines the name of the icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  iconHover?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Add a darkMode to the button tag.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst Tag: FC<TagProps> = ({ ref = null, darkMode = false, icon = '', iconHover = '', children, className = '', ...props }) => {\n  const tagClassName = classNames('agora-btn-tag', className);\n\n  const currentIcon = icon || 'no-icon';\n  const currentIconHover = iconHover || 'no-icon';\n\n  return (\n    <Button\n      {...props}\n      hasIcon\n      ref={ref}\n      fullWidth={false}\n      variant=\"neutral\"\n      appearance=\"outline\"\n      className={tagClassName}\n      trailingIcon=\"agora-line-x\"\n      trailingIconHover=\"agora-solid-x\"\n      darkMode={stringToBoolean(darkMode)}\n      leadingIcon={stringToBoolean(props.hasIcon) ? currentIcon : undefined}\n      leadingIconHover={stringToBoolean(props.hasIcon) ? currentIconHover : undefined}\n    >\n      {children}\n    </Button>\n  );\n};\n\nexport { Tag };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport './timeline-event.css';\n\nexport interface TimelineEventProps extends ComponentPropsWithoutRef<'button'> {\n  /**\n   * Hide the label\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Label for the event\n   */\n  label?: string;\n  /**\n   * Additional class names\n   */\n  className?: string;\n  /**\n   * Is the event active\n   */\n  active?: boolean;\n  /**\n   * Has an icon\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Icon name\n   */\n  icon?: string;\n  /**\n   * Icon alt text\n   */\n  altIcon?: string;\n  /**\n   * Determines if the timeline event is interactive or not\n   */\n  interactive?: BooleanProp;\n  /**\n   * Children\n   */\n  children: ReactNode;\n}\n\nexport const TimelineEvent: FC<TimelineEventProps> = ({ label, hideLabel, active, className, interactive, ...props }) => {\n  const timelineEventClassNames = classNames('agora-timeline-step', className, { active: stringToBoolean(active) });\n  const timelineLabelClassNames = classNames('timeline-label', { 'invisible h-0 overflow-hidden': stringToBoolean(hideLabel) });\n\n  const propsClone = { ...props };\n  delete propsClone.children;\n\n  return (\n    <button\n      {...propsClone}\n      className={timelineEventClassNames}\n      tabIndex={interactive ? 0 : -1}\n      aria-current={stringToBoolean(active)}\n      aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n    >\n      {label && !stringToBoolean(hideLabel) && (\n        <div className={timelineLabelClassNames} aria-labelledby={label}>\n          {label}\n        </div>\n      )}\n      <div className=\"timeline-event-container\">\n        <div className=\"timeline-event-left-indicator\" />\n        <div className=\"timeline-event-dot\">\n          <div className=\"timeline-event\" />\n        </div>\n        <div className=\"timeline-event-right-indicator\" />\n      </div>\n    </button>\n  );\n};\n","import React, { FC } from 'react';\nimport { Icon } from '@/components/icon';\nimport { stringToBoolean } from '@/utils';\nimport { TimelineEventProps } from '../timeline-event/timeline-event';\nimport './timeline-event-vertical.css';\n\nexport const TimelineEventVertical: FC<TimelineEventProps> = ({ hasIcon, icon, altIcon, children }) => {\n  return (\n    <li className=\"agora-timeline-item\">\n      <div className=\"timeline-event\">\n        {!stringToBoolean(hasIcon) ? (\n          <div className=\"timeline-dot\" />\n        ) : (\n          <div className=\"timeline-icon\">\n            <Icon name={icon} alt={altIcon} aria-hidden={!altIcon} />\n          </div>\n        )}\n        <div className=\"timeline-line\" />\n      </div>\n      <div className=\"timeline-content\">{children}</div>\n    </li>\n  );\n};\n","import React, { Children, ComponentPropsWithoutRef, FC, ReactElement, useEffect, useId, useState } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { TimelineEventVertical } from '../shared/timeline-event-vertical';\nimport { TimelineEventProps } from '../shared/timeline-event/timeline-event';\nimport './timeline-vertical.css';\n\nexport interface TimelineVerticalProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Hide the labels\n   */\n  hideLabels: BooleanProp;\n  /**\n   * Timeline events\n   */\n  children: ReactElement<TimelineEventProps> | Array<ReactElement<TimelineEventProps>>;\n}\n\nexport const TimelineVertical: FC<TimelineVerticalProps> = ({ hideLabels, ...props }) => {\n  const generateId = useId();\n  const [events, setEvents] = useState<Array<Array<ReactElement<TimelineEventProps>>>>([]);\n\n  useEffect(() => {\n    const sortedEvents = Children.toArray(props.children) as Array<ReactElement<TimelineEventProps>>;\n\n    const groupedEvents = sortedEvents.reduce(\n      (grouped, event) => {\n        const label = event.props.label ?? '';\n        grouped[label] = grouped[label] || [];\n        grouped[label].push(event);\n        return grouped;\n      },\n      {} as Record<string, ReactElement<TimelineEventProps>[]>\n    );\n\n    const groupedEventsArray = Object.values(groupedEvents);\n\n    setEvents(groupedEventsArray);\n  }, [props.children]);\n\n  return (\n    <div {...props} className={classNames('agora-timeline-vertical')}>\n      {events.map((group, groupIndex) => {\n        const keyGroup = `timeline-group-${groupIndex}-${generateId}`;\n\n        const groupClassNames = classNames('timeline-group', { 'has-label': !stringToBoolean(hideLabels) });\n\n        return (\n          <div key={keyGroup} className={groupClassNames}>\n            {!stringToBoolean(hideLabels) && group[0]?.props.label && (\n              <div className=\"timeline-label-wrapper\">\n                <div className=\"timeline-label\">{group[0].props.label}</div>\n              </div>\n            )}\n            <ul className=\"timeline-items\">\n              {group.map((event, eventIndex) => {\n                const keyEvent = `timeline-event-${groupIndex}-${eventIndex}-${generateId}`;\n                return (\n                  <TimelineEventVertical key={keyEvent} hasIcon={event.props.hasIcon} icon={event.props.icon} altIcon={event.props.altIcon}>\n                    {event.props.children}\n                  </TimelineEventVertical>\n                );\n              })}\n            </ul>\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, useEffect, useLayoutEffect, useState } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Button } from '@/components/button';\nimport { TimelineEvent, TimelineEventProps } from '../shared/timeline-event/timeline-event';\nimport { TimelineVertical } from '../timeline-vertical';\nimport './timeline-horizontal.css';\n\nexport interface TimelineHorizontalProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Label for the next button\n   **/\n  nextLabel: string;\n  /**\n   * Label for the previous button\n   **/\n  previousLabel: string;\n  /**\n   * Determines if the timeline is interactive or not\n   **/\n  interactive?: BooleanProp;\n  /**\n   * Timeline events\n   **/\n  children: ReactElement<TimelineEventProps> | Array<ReactElement<TimelineEventProps>>;\n}\n\nexport const TimelineHorizontal: FC<TimelineHorizontalProps> = ({\n  children,\n  nextLabel,\n  previousLabel,\n  interactive = true,\n  className,\n  ...props\n}) => {\n  const [isMobile, setIsMobile] = useState(window.innerWidth < 768);\n  const maxVisibleEvents = 6;\n  const [events, setEvents] = useState<Array<ReactElement<TimelineEventProps>>>([]);\n  const [activeEvent, setActiveEvent] = useState<number>(0);\n\n  const [startIndex, setStartIndex] = useState<number>(0);\n  const [endIndex, setEndIndex] = useState<number>(maxVisibleEvents);\n\n  useEffect(() => {\n    const eventChildren = Children.toArray(children) as Array<ReactElement<TimelineEventProps>>;\n    setEvents(eventChildren);\n    const activeIndex = eventChildren.findIndex((child) => child.props.active);\n    setActiveEvent(activeIndex !== -1 ? activeIndex : 0);\n  }, [children]);\n\n  const handleClickEvent = (index: number) => {\n    setActiveEvent(index);\n  };\n\n  const getTimelineStepClasses = (index: number, currentActiveEvent: number) => {\n    return index < currentActiveEvent ? 'completed' : '';\n  };\n\n  const handleNextButtonClick = () => {\n    const newEvent = Math.min(activeEvent + 1, Children.count(children) - 1);\n    setActiveEvent(newEvent);\n\n    if (newEvent >= endIndex) {\n      setStartIndex(startIndex + 1);\n      setEndIndex(endIndex + 1);\n    }\n  };\n\n  const handlePreviousButtonClick = () => {\n    const newEvent = Math.max(activeEvent - 1, 0);\n    setActiveEvent(newEvent);\n\n    if (newEvent < startIndex) {\n      setStartIndex(startIndex - 1);\n      setEndIndex(endIndex - 1);\n    }\n  };\n\n  const selectedContentEvent = Children.map(children, (child, index) => {\n    return index === activeEvent ? child.props.children : null;\n  });\n\n  const visibleEvents = events.slice(startIndex, endIndex);\n\n  useEffect(() => {\n    if (activeEvent > endIndex - 1 || activeEvent < startIndex) {\n      const newStartIndex = Math.max(0, activeEvent - Math.floor(maxVisibleEvents / 2));\n      const newEndIndex = newStartIndex + maxVisibleEvents;\n\n      if (newEndIndex > events.length) {\n        setStartIndex(events.length - maxVisibleEvents);\n        setEndIndex(events.length);\n      } else {\n        setStartIndex(newStartIndex);\n        setEndIndex(newEndIndex);\n      }\n    }\n  }, [activeEvent, events, maxVisibleEvents, startIndex, endIndex]);\n\n  useLayoutEffect(() => {\n    function updateSize() {\n      setIsMobile(window.innerWidth < 768);\n    }\n    window.addEventListener('resize', updateSize);\n    updateSize();\n    return () => window.removeEventListener('resize', updateSize);\n  }, []);\n\n  const renderTimelineActions = () => {\n    const isPreviousButtonDisabled = activeEvent === 0;\n    const isLastButtonDisabled = activeEvent === Children.count(children) - 1;\n\n    return (\n      <div className=\"timeline-actions\">\n        <Button\n          appearance=\"link\"\n          variant=\"primary\"\n          hasIcon\n          leadingIcon=\"agora-line-arrow-left-circle\"\n          leadingIconHover=\"agora-line-arrow-left-circle\"\n          className=\"button-previous\"\n          onClick={handlePreviousButtonClick}\n          disabled={isPreviousButtonDisabled}\n        >\n          {previousLabel}\n        </Button>\n        <Button\n          appearance=\"link\"\n          variant=\"primary\"\n          hasIcon\n          trailingIcon=\"agora-line-arrow-right-circle\"\n          trailingIconHover=\"agora-line-arrow-right-circle\"\n          className=\"button-next\"\n          onClick={handleNextButtonClick}\n          disabled={isLastButtonDisabled}\n        >\n          {nextLabel}\n        </Button>\n      </div>\n    );\n  };\n\n  const timelineClasses = classNames(\n    'agora-timeline-horizontal',\n    {\n      'event-static': !stringToBoolean(interactive)\n    },\n    className\n  );\n\n  return (\n    <div>\n      {isMobile ? (\n        <TimelineVertical {...props} hideLabels={false}>\n          {children}\n        </TimelineVertical>\n      ) : (\n        <div {...props} className={timelineClasses}>\n          <div className=\"timeline-steps\">\n            {visibleEvents.map((event, index) => {\n              const isFirstVisibleEvent = index + startIndex === 0;\n              const isLastVisibleEvent = index + startIndex === endIndex - 1;\n\n              const hasMoreEventsLeft = startIndex > 0;\n              const hasMoreEventsRight = endIndex < events.length;\n\n              const eventClassNames = classNames(getTimelineStepClasses(index + startIndex, activeEvent), {\n                'first-event': isFirstVisibleEvent,\n                'last-event': isLastVisibleEvent && index + startIndex === events.length - 1,\n                'has-more-events-left': hasMoreEventsLeft,\n                'has-more-events-right': hasMoreEventsRight\n              });\n\n              return (\n                <TimelineEvent\n                  key={event.props.id ?? index}\n                  {...event.props}\n                  active={index + startIndex === activeEvent}\n                  onClick={() => handleClickEvent(index + startIndex)}\n                  interactive={stringToBoolean(interactive)}\n                  className={eventClassNames}\n                >\n                  {event.props.children}\n                </TimelineEvent>\n              );\n            })}\n          </div>\n          {stringToBoolean(interactive) && events.length > maxVisibleEvents && renderTimelineActions()}\n          <div className=\"timeline-content\">{selectedContentEvent}</div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { createContext, useContext } from 'react';\nimport { ToastProps } from './toast';\nimport './toast.css';\n\nexport interface ToastContextProps {\n  showToast: (data: ToastProps, duration?: number) => void;\n  removeToast: (data: ToastProps) => void;\n}\n\nconst ToastContext = createContext<ToastContextProps>({} as ToastContextProps);\n\nconst useToastContext = (): ToastContextProps => {\n  const context = useContext(ToastContext);\n  return context;\n};\n\nexport { ToastContext, useToastContext };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { useToastContext } from './toast-context';\nimport './toast.css';\n\nexport type ToastType = 'success' | 'failure' | 'warning' | 'info';\n\nexport interface ToastProps extends Omit<ComponentPropsWithoutRef<'div'>, 'id' | 'title'> {\n  /**\n   * The id of the toast\n   */\n  id: number | string;\n  /**\n   * Title of the toast\n   */\n  title: ReactNode;\n  /**\n   * Description of the toast\n   */\n  description: ReactNode;\n  /**\n   * Type variant of the toast\n   */\n  type: ToastType;\n  /**\n   * Alternative text to apply to the toast close button\n   */\n  closeLabel: string;\n  /**\n   * Callback that's invoked when the toast is dismissed\n   */\n  onDismiss?: () => void;\n}\n\nexport const Toast: FC<ToastProps> = ({ className, id, title, description, type, closeLabel, onDismiss }: ToastProps) => {\n  const { removeToast } = useToastContext();\n\n  const getIconNameForType = (selectedType: ToastType): string => {\n    switch (selectedType) {\n      case 'success':\n        return 'agora-solid-check-circle';\n      case 'failure':\n        return 'agora-solid-alert-triangle';\n      case 'warning':\n        return 'agora-solid-info-mark';\n      default:\n        return 'agora-solid-info-mark';\n    }\n  };\n\n  const handleCloseClick = () => {\n    removeToast({\n      id,\n      type,\n      title,\n      description,\n      closeLabel,\n      onDismiss\n    } as ToastProps);\n  };\n\n  const toastContainerClassnames = classNames('agora-toast', { [`agora-toast-${type}`]: type }, className);\n\n  return (\n    <div className={toastContainerClassnames} role=\"alert\" key={id} aria-label={type}>\n      <Icon className=\"toast-icon mt-[10px]\" name={getIconNameForType(type)} dimensions=\"m\" aria-hidden />\n\n      <div className=\"toast-messages flex flex-col gap-8\">\n        <div className=\"toast-title mt-8\">{title}</div>\n        <div className=\"toast-description\">{description}</div>\n      </div>\n\n      <Button\n        className=\"toast-close-button\"\n        appearance=\"link\"\n        variant=\"neutral\"\n        onClick={handleCloseClick}\n        aria-label={closeLabel}\n        hasIcon\n        iconOnly\n        trailingIcon=\"agora-line-x\"\n        trailingIconHover=\"agora-solid-x\"\n      ></Button>\n    </div>\n  );\n};\n","import { useCallback, useState } from 'react';\nimport { ToastProps } from './toast';\nimport { asyncTrigger } from '@/utils';\n\nconst useToast = () => {\n  const [toasts, setToasts] = useState<ToastProps[]>([]);\n\n  const removeToast = useCallback((toast: ToastProps) => {\n    setToasts((prevToasts) => prevToasts.filter((t) => t.id !== toast.id));\n    toast.onDismiss?.();\n  }, []);\n\n  const showToast = useCallback(\n    (toast: ToastProps, duration?: number) => {\n      setToasts((prevToasts) => {\n        return [...prevToasts, toast];\n      });\n\n      if (duration && duration > 0) {\n        asyncTrigger(() => {\n          removeToast(toast);\n        }, duration);\n      }\n    },\n    [removeToast]\n  );\n\n  return { toasts, showToast, removeToast };\n};\n\nexport { useToast };\n","import React, { FC, ReactNode, useMemo } from 'react';\nimport { Toast } from './toast';\nimport { ToastContext } from './toast-context';\nimport './toast.css';\nimport { useToast } from './use-toast';\nimport { useWindowSize } from '@/hooks';\n\nexport type ToastPositions = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\nexport interface ToastProviderProps {\n  children?: ReactNode;\n  position?: ToastPositions;\n}\nconst ToastProvider: FC<ToastProviderProps> = ({ children, position = 'bottom-right' }: ToastProviderProps) => {\n  const { toasts, showToast, removeToast } = useToast();\n  const { width } = useWindowSize();\n\n  const contextValue = useMemo(\n    () => ({\n      showToast,\n      removeToast\n    }),\n    [showToast, removeToast]\n  );\n\n  const memoToast = useMemo(() => {\n    const VISIBLE_TOAST_NUMBER_MOBILE = 3;\n    const VISIBLE_TOAST_NUMBER_DESKTOP = 5;\n    const isMobile = width < 768;\n    const visibleToastsCount = isMobile ? VISIBLE_TOAST_NUMBER_MOBILE : VISIBLE_TOAST_NUMBER_DESKTOP;\n\n    if (position.includes('bottom')) {\n      return [...toasts].slice(-1 * visibleToastsCount);\n    }\n\n    return [...toasts].reverse().slice(0, visibleToastsCount);\n  }, [position, toasts, width]);\n\n  return (\n    <ToastContext value={contextValue}>\n      {children}\n      <div className={`agora-toast-list toast-list-${position}`} aria-live=\"assertive\" aria-atomic=\"true\">\n        {memoToast.map((toast) => {\n          return <Toast key={toast.id} {...toast} />;\n        })}\n      </div>\n    </ToastContext>\n  );\n};\n\nexport { ToastProvider };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, useId } from 'react';\nimport './file-list.css';\nimport { Button, ButtonProps } from '@/components/button';\nimport { Feedback } from '@/components/shared/feedback/';\nimport { stringToBoolean } from '@/index';\n\nexport interface FileListProps extends ComponentPropsWithoutRef<'div'> {\n  files: File[];\n\n  removeFileButtonLabel: string;\n  onFileRemove?: (fileRemoved: File) => void;\n\n  replaceFileButtonLabel: string;\n  onFileReplace?: (fileReplaced: File) => void;\n\n  messages?: { [fileName: string]: { text: string; hasError: boolean } };\n}\n\nconst FileList: FC<FileListProps> = ({\n  files = [],\n\n  removeFileButtonLabel,\n  onFileRemove,\n\n  replaceFileButtonLabel,\n  onFileReplace,\n\n  messages = {},\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const handleReplaceFile = (fileToReplace: File) => {\n    onFileReplace?.(fileToReplace);\n  };\n\n  const handleRemoveFile = (fileToRemoved: File) => {\n    onFileRemove?.(fileToRemoved);\n  };\n\n  const getParsedSizeString = (bytes: number, decimals = 0) => {\n    const k = 1024;\n    const decimalCases = decimals < 0 ? 0 : decimals;\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n    return `${parseFloat((bytes / Math.pow(k, i)).toFixed(decimalCases))} ${sizes[i]}`;\n  };\n\n  const getAvailableFileActions = (file: File, fileMessage?: { text: string; hasError: boolean }): ButtonProps[] => {\n    return [\n      {\n        'className': 'replace-action',\n        'hasIcon': true,\n        'iconOnly': true,\n        'appearance': 'link',\n        'variant': 'neutral',\n        'leadingIcon': 'agora-line-refresh-ccw',\n        'leadingIconHover': 'agora-solid-refresh-ccw',\n        'onClick': () => handleReplaceFile(file),\n        'aria-label': `${replaceFileButtonLabel} ${file.name}`,\n        'type': 'button'\n      },\n      {\n        'className': `delete-action ${!stringToBoolean(fileMessage?.hasError) ? '' : 'error'}`,\n        'hasIcon': true,\n        'iconOnly': true,\n        'appearance': 'link',\n        'variant': 'neutral',\n        'leadingIcon': 'agora-line-trash',\n        'leadingIconHover': 'agora-solid-trash',\n        'onClick': () => handleRemoveFile(file),\n        'aria-label': `${removeFileButtonLabel} ${file.name}`,\n        'type': 'button'\n      }\n    ] as ButtonProps[];\n  };\n\n  const fileListClassNames = classNames('agora-file-list', props.className);\n\n  return (\n    <ul className={fileListClassNames} aria-live=\"polite\">\n      {files.map((file, index) => {\n        const fileIndex = `${generatedId}-${file.name}-${index}`;\n\n        const fileMessage = messages[file.name] || messages[index];\n\n        const actions = getAvailableFileActions(file, fileMessage);\n\n        return (\n          <li className=\"file\" key={fileIndex}>\n            <div className=\"file-item\">\n              <div className=\"file-info\">\n                <div className=\"name\">{file.name}</div>\n                <div className=\"size\">{getParsedSizeString(file.size)}</div>\n              </div>\n\n              {actions.length > 0 && (\n                <div className=\"actions\">\n                  {actions.map((actionBtnProps, actionIndex) => {\n                    const actionKey = `${fileIndex}-action-${actionIndex}`;\n                    return <Button key={actionKey} {...actionBtnProps} />;\n                  })}\n                </div>\n              )}\n            </div>\n            {fileMessage && (\n              <Feedback feedbackState={!stringToBoolean(fileMessage.hasError) ? 'info' : 'danger'} feedbackText={fileMessage.text} />\n            )}\n            <div className=\"file-divider\" />\n          </li>\n        );\n      })}\n    </ul>\n  );\n};\n\nexport { FileList };\n","import { asyncTrigger } from '@/utils';\nimport { useEffect, useRef, useState } from 'react';\n\nconst isFileExtensionAllowed = (fileName: string, extensionWhitelist: string[]): boolean => {\n  if (extensionWhitelist.length == 0) {\n    return true;\n  }\n\n  const lastPoint = fileName.lastIndexOf('.');\n  const fileExtension = fileName.substring(lastPoint);\n  const isAllowed = extensionWhitelist.includes(fileExtension);\n\n  return isAllowed;\n};\n\nconst isNotDuplicated = (filename: string, files: File[]): boolean => {\n  return files.findIndex((f) => f.name === filename) < 0;\n};\n\nconst getFileInput = (\n  multiple: boolean,\n  extensionWhiteList: string[],\n  onChangeHandler: (event: Event) => void,\n  fileToReplace?: string\n): HTMLInputElement => {\n  const input = document.createElement('input');\n  input.type = 'file';\n  input.onchange = onChangeHandler;\n  input.multiple = multiple;\n  input.accept = extensionWhiteList.join(',');\n\n  if (fileToReplace) {\n    input.dataset.replaceFile = fileToReplace;\n  }\n\n  return input;\n};\n\nconst validateFiles = (\n  lastFiles: File[],\n  newFiles: File[],\n  maxCount: number,\n  maxSize: number,\n  extensionWhitelist: string[],\n  replaceValidation = false\n): FileUploadError => {\n  let hasErrors = false;\n  const duplicatedFiles: string[] = [];\n  const sizeExceededFiles: string[] = [];\n  const extensionForbiddenFiles: string[] = [];\n\n  const maxCountExceeded = !replaceValidation && maxCount < lastFiles.length + newFiles.length;\n  if (maxCountExceeded) {\n    hasErrors = true;\n  }\n\n  newFiles.forEach((file) => {\n    if (!isNotDuplicated(file.name, lastFiles)) {\n      hasErrors = true;\n      duplicatedFiles.push(file.name);\n    }\n\n    if (file.size > maxSize) {\n      hasErrors = true;\n      sizeExceededFiles.push(file.name);\n    }\n\n    if (!isFileExtensionAllowed(file.name, extensionWhitelist)) {\n      hasErrors = true;\n      extensionForbiddenFiles.push(file.name);\n    }\n  });\n\n  return {\n    hasErrors,\n    maxCountExceeded,\n    duplicatedFiles,\n    sizeExceededFiles,\n    extensionForbiddenFiles\n  } as FileUploadError;\n};\n\nexport interface FileUploadError {\n  hasErrors: boolean;\n  maxCountExceeded: boolean;\n  duplicatedFiles: string[];\n  sizeExceededFiles: string[];\n  extensionForbiddenFiles: string[];\n}\n\nexport interface IUseFileUpload {\n  files: File[];\n  errors: FileUploadError | null;\n  onAddFiles: () => void;\n  onRemoveFile: (file: File) => void;\n  onReplaceFile: (file: File) => void;\n  onPasteFiles: (files: File[]) => void;\n  onReset: (files: File[]) => void;\n}\n\nexport const useFileUpload = (\n  maxFileCount: number,\n  maxFileSize: number,\n  extensionWhitelist: string[],\n  multiple: boolean,\n  onChange: (files: File[], errors: FileUploadError | null) => void,\n  defaultFiles?: File[]\n): IUseFileUpload => {\n  const [files, setFiles] = useState<File[]>([]);\n  const lastErrors = useRef<FileUploadError | null>(null);\n\n  const getParsedMaxCount = () => {\n    return multiple ? maxFileCount : 1;\n  };\n\n  const triggerOnChange = (newFiles: File[], errors: FileUploadError | null) => {\n    asyncTrigger(() => onChange(newFiles, errors));\n  };\n\n  const resetFiles = (initialFiles: File[]) => {\n    const validationErrors = validateFiles([], initialFiles, getParsedMaxCount(), maxFileSize, extensionWhitelist);\n\n    const newFiles = [];\n\n    if (!validationErrors.hasErrors) {\n      lastErrors.current = null;\n      newFiles.push(...initialFiles);\n    } else {\n      lastErrors.current = validationErrors;\n    }\n\n    setFiles(newFiles);\n    triggerOnChange(newFiles, lastErrors.current);\n  };\n\n  const addFiles = (filesToAdd: File[]) => {\n    if (filesToAdd.length == 0) {\n      return;\n    }\n\n    setFiles((prevFiles) => {\n      const validationErrors = validateFiles(prevFiles, filesToAdd, getParsedMaxCount(), maxFileSize, extensionWhitelist);\n\n      const newFiles = [...prevFiles];\n\n      if (!validationErrors.hasErrors) {\n        lastErrors.current = null;\n        newFiles.push(...filesToAdd);\n      } else {\n        lastErrors.current = validationErrors;\n      }\n\n      triggerOnChange(newFiles, lastErrors.current);\n      return newFiles;\n    });\n  };\n\n  const removeFile = (file: File) => {\n    lastErrors.current = null;\n    setFiles((prevFiles) => {\n      const newFiles = prevFiles.filter((f) => f.name !== file.name);\n      triggerOnChange(newFiles, lastErrors.current);\n      return newFiles;\n    });\n  };\n\n  const replaceFile = (replaceFileName: string, filesToAdd: File[]) => {\n    if (!replaceFileName || filesToAdd.length == 0) {\n      return;\n    }\n\n    const validationErrors = validateFiles(files, [filesToAdd[0]], getParsedMaxCount(), maxFileSize, extensionWhitelist, true);\n\n    const newFiles = [...files];\n\n    if (!validationErrors.hasErrors) {\n      lastErrors.current = null;\n\n      const targetIndex = newFiles.findIndex((f) => f.name === replaceFileName);\n\n      if (targetIndex >= 0) {\n        newFiles.splice(targetIndex, 1, filesToAdd[0]);\n      }\n    } else {\n      lastErrors.current = validationErrors;\n    }\n\n    setFiles(newFiles);\n    triggerOnChange(newFiles, lastErrors.current);\n  };\n\n  const handleInputFileChangeOnAdd = (event: Event) => {\n    const target = event.currentTarget as HTMLInputElement;\n\n    const selectedFiles = Array.from(target.files ?? []);\n    addFiles(selectedFiles);\n  };\n\n  const handleInputFileChangeOnReplace = (event: Event) => {\n    const target = event.currentTarget as HTMLInputElement;\n    const selectedFiles = Array.from(target.files ?? []);\n    replaceFile(target.dataset.replaceFile ?? '', selectedFiles);\n  };\n\n  useEffect(() => {\n    if (defaultFiles) {\n      setFiles(defaultFiles);\n    }\n  }, [defaultFiles]);\n\n  const onAddFiles = () => {\n    const input = getFileInput(multiple, extensionWhitelist, handleInputFileChangeOnAdd);\n    input.click();\n  };\n\n  const onRemoveFile = (file: File) => {\n    removeFile(file);\n  };\n\n  const onReplaceFile = (file: File) => {\n    const input = getFileInput(multiple, extensionWhitelist, handleInputFileChangeOnReplace, file.name);\n    input.click();\n  };\n\n  const onPasteFiles = (newFiles: File[]) => {\n    addFiles(newFiles);\n  };\n\n  return { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles, onReset: resetFiles } as IUseFileUpload;\n};\n","/* eslint-disable jsx-a11y/label-has-for */\nimport { Button } from '@/components/button/';\nimport { Feedback } from '@/components/shared/feedback/';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { FileList } from '../shared/file-list';\nimport { FileUploadError, useFileUpload } from '../shared/use-file-upload';\n\nimport './button-uploader.css';\n\nexport interface ButtonUploaderElement extends HTMLInputElement {\n  input: HTMLInputElement | null;\n  reset: () => void;\n}\n\nexport interface ButtonUploaderProps extends ComponentProps<'input'> {\n  /**\n   * Label for the input file uploader.\n   */\n  label?: string;\n  /**\n   * Label for the button file uploader after files selected.\n   */\n  selectedFilesLabel?: string;\n  /**\n   * Label for the button file uploader.\n   */\n  inputLabel?: string;\n  /**\n   * Hides the button labels.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Alternative text for the delete file button of the file list.\n   */\n  removeFileButtonLabel: string;\n  /**\n   *  Alternative text for the replace file button of the file list.\n   */\n  replaceFileButtonLabel: string;\n  /**\n   *  Instruction text for the button uploader.\n   */\n  extensionsInstructions?: ReactNode;\n  /**\n   *  Max number of files to upload.\n   */\n  maxCount?: number;\n  /**\n   *  Max size in bytes of each file.\n   */\n  maxSize?: number;\n  /**\n   *  Max count exceeded error message.\n   */\n  maxCountExceededErrorLabel?: string;\n  /**\n   *  Max size exceeded error message.\n   */\n  maxSizeExceededErrorLabel?: string;\n  /**\n   *  Forbidden error message.\n   */\n  forbiddenExtensionErrorLabel?: string;\n  /**\n   *  Duplicated error message.\n   */\n  duplicatedFileErrorLabel?: string;\n  /**\n   *  Initial default files.\n   */\n  files?: File[];\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below button uploader.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlights the button uploader with some error indication.\n   */\n  hasError?: BooleanProp;\n}\n\nconst ButtonUploader: FC<ButtonUploaderProps> = ({\n  ref = null,\n  label,\n  inputLabel,\n  selectedFilesLabel,\n  hideLabel,\n\n  required = true,\n\n  removeFileButtonLabel,\n  replaceFileButtonLabel,\n\n  extensionsInstructions,\n  accept = '',\n  maxSize = Number.MAX_SAFE_INTEGER,\n  maxCount = Number.MAX_SAFE_INTEGER,\n\n  maxCountExceededErrorLabel = '',\n  maxSizeExceededErrorLabel = '',\n  forbiddenExtensionErrorLabel = '',\n  duplicatedFileErrorLabel = '',\n\n  multiple,\n  disabled,\n  onChange,\n\n  files: defaultFiles,\n\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n\n  id,\n  ...props\n}) => {\n  const generatedId = useId();\n  const customId = id || generatedId;\n  const inputId = `button-uploader-input-${customId}`;\n\n  const isRequired = disabled ? false : required;\n\n  const innerButtonRef = useRef<HTMLButtonElement>(null);\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  const [labelText, setLabelText] = useState(inputLabel);\n\n  const [errorMessages, setErrorMessages] = useState([] as string[]);\n\n  const [fileMessages, setFileMessages] = useState<{ [fileName: string]: { text: string; hasError: boolean } }>({});\n\n  const updateErrors = (errors: FileUploadError | null) => {\n    if (!errors) {\n      setErrorMessages([]);\n      setFileMessages({});\n      return;\n    }\n\n    const parsedErrors: string[] = [];\n\n    const newFileMessages: { [fileName: string]: { text: string; hasError: boolean } } = {};\n\n    errors.duplicatedFiles.forEach((fileName) => {\n      newFileMessages[fileName] = {\n        text: duplicatedFileErrorLabel,\n        hasError: true\n      };\n    });\n\n    errors.sizeExceededFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${maxSizeExceededErrorLabel}`);\n    });\n\n    errors.sizeExceededFiles.forEach((fileName) => {\n      newFileMessages[fileName] = {\n        text: `${fileName} - ${maxSizeExceededErrorLabel}`,\n        hasError: true\n      };\n    });\n\n    errors.extensionForbiddenFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${forbiddenExtensionErrorLabel}`);\n    });\n\n    if (errors.maxCountExceeded) {\n      parsedErrors.push(maxCountExceededErrorLabel);\n    }\n\n    setErrorMessages(parsedErrors);\n    setFileMessages(newFileMessages);\n  };\n\n  const handleOnChangeFiles = (files: File[], errors: FileUploadError | null) => {\n    if (innerInputRef.current) {\n      const list = new DataTransfer();\n\n      files.forEach((f) => {\n        list.items.add(f);\n      });\n\n      innerInputRef.current.files = list.files;\n\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n\n    updateErrors(errors);\n  };\n\n  const { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles, onReset } = useFileUpload(\n    maxCount,\n    maxSize,\n    accept ? accept.split(',') : [],\n    !!multiple,\n    handleOnChangeFiles,\n    defaultFiles\n  );\n\n  useImperativeHandle(\n    ref,\n    () =>\n      ({\n        input: innerInputRef.current,\n        reset: () => {\n          if (innerInputRef.current) {\n            innerInputRef.current.value = '';\n          }\n          onReset([]);\n        }\n      }) as ButtonUploaderElement\n  );\n\n  const canUpload = useMemo(() => {\n    if (multiple) {\n      return !disabled && files.length < maxCount;\n    }\n\n    return !disabled && files.length === 0;\n  }, [disabled, multiple, files]);\n\n  const handleFileReplace = (newFileToReplace: File) => {\n    onReplaceFile(newFileToReplace);\n  };\n\n  const handleFileRemove = (fileToRemove: File) => {\n    onRemoveFile(fileToRemove);\n  };\n\n  useEffect(() => {\n    const handlePaste = (e: Event) => {\n      if (!canUpload) {\n        return;\n      }\n\n      if (innerButtonRef.current && innerButtonRef.current === document.activeElement) {\n        const { clipboardData } = e as ClipboardEvent;\n        if (clipboardData && clipboardData.files.length > 0) {\n          const clipboardFiles = Array.from(clipboardData.files) ?? [];\n          onPasteFiles(clipboardFiles);\n        }\n      }\n    };\n\n    window.addEventListener('paste', handlePaste);\n\n    return () => {\n      window.removeEventListener('paste', handlePaste);\n    };\n  }, []);\n\n  const containerClassNames = classNames(\n    'agora-button-file-uploader',\n    { 'cannot-upload': !canUpload },\n    { 'has-error': hasError },\n    { 'has-error': errorMessages.length },\n    props.className\n  );\n\n  const buttonContainerClassNames = classNames('button-file-uploader-container');\n\n  const fileListClassNames = classNames('file-list-container', { 'p-16': files.length > 0 });\n\n  useEffect(() => {\n    if (files.length > 0) {\n      setLabelText(`${files.length} ${selectedFilesLabel}`);\n    } else {\n      setLabelText(inputLabel);\n    }\n  }, [files]);\n\n  useEffect(() => {\n    if (!isRequired) return;\n\n    const form = innerInputRef.current?.form;\n    if (!form) return;\n\n    const handleSubmit = (e: Event) => {\n      if (files.length === 0) {\n        e.preventDefault();\n        innerButtonRef.current?.focus();\n      }\n    };\n\n    form.addEventListener('submit', handleSubmit);\n    return () => {\n      form.removeEventListener('submit', handleSubmit);\n    };\n  }, [isRequired, files]);\n\n  // this is part of a fix for an issue that occurs when a file is selected and the upload button changes color until the cursor is moved\n  if (innerButtonRef.current) {\n    innerButtonRef.current.onmouseenter = () => {\n      innerButtonRef.current!.style.backgroundColor = '';\n    };\n  }\n\n  return (\n    <div className={containerClassNames}>\n      {label && (\n        <div className=\"button-uploader-label-wrapper\">\n          <label htmlFor={inputId} hidden={stringToBoolean(hideLabel)} className=\"button-uploader-label\">\n            {label}\n          </label>\n        </div>\n      )}\n\n      <input\n        id={inputId}\n        ref={innerInputRef}\n        type=\"file\"\n        tabIndex={-1}\n        className=\"sr-only\"\n        aria-describedby={\n          (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText ? `button-uploader-${customId}-feedback` : undefined\n        }\n        aria-invalid={stringToBoolean(hasError) || undefined}\n        aria-label={stringToBoolean(hideLabel) ? label : undefined}\n      />\n\n      <div className={buttonContainerClassNames}>\n        <Button\n          id={customId}\n          ref={innerButtonRef}\n          type=\"button\"\n          fullWidth\n          iconOnly={stringToBoolean(hideLabel)}\n          hasIcon\n          trailingIcon=\"agora-line-upload\"\n          trailingIconHover=\"agora-solid-upload\"\n          variant={errorMessages.length > 0 || stringToBoolean(hasError) ? 'danger' : 'neutral'}\n          disabled={!canUpload}\n          onClick={() => {\n            // this is part of a fix for an issue that occurs when a file is selected and the upload button changes color until the cursor is moved\n            innerButtonRef.current!.style.backgroundColor = 'var(--color-neutral-700)';\n            onAddFiles();\n          }}\n        >\n          {labelText}\n        </Button>\n\n        <div className=\"extension-instructions\">{extensionsInstructions}</div>\n      </div>\n\n      {errorMessages.length > 0 && (\n        <div className=\"errors-container\">\n          {errorMessages.map((message, index) => {\n            const errorKey = `error-message-${generatedId}-${index}`;\n            return <Feedback key={errorKey} feedbackState={'danger'} feedbackText={message} />;\n          })}\n        </div>\n      )}\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`button-uploader-${customId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n        />\n      )}\n      <div className={fileListClassNames}>\n        <FileList\n          files={files}\n          onFileReplace={handleFileReplace}\n          onFileRemove={handleFileRemove}\n          removeFileButtonLabel={removeFileButtonLabel}\n          replaceFileButtonLabel={replaceFileButtonLabel}\n          messages={fileMessages}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { ButtonUploader };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button } from '@/components/button/button';\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport { FileList } from '../shared/file-list';\nimport { FileUploadError, useFileUpload } from '../shared/use-file-upload';\n\nimport './drag-and-drop-uploader.css';\n\nexport interface DragAndDropUploaderProps extends ComponentProps<'input'> {\n  /**\n   * Label for the drag and drop file uploader.\n   */\n  dragAndDropLabel?: string;\n  /**\n   * Label for the input file uploader.\n   */\n  label?: string;\n  /**\n   * Label for the drag and drop file uploader after files selected.\n   */\n  selectedFilesLabel?: string;\n  /**\n   * Label for the drag and drop file button uploader.\n   */\n  inputLabel?: string;\n  /**\n   * Hides the drag and drop button labels.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Instruction text for the button uploader.\n   */\n  extensionsInstructions?: ReactNode;\n  /**\n   *  Text that separates instructions label from the button.\n   */\n  separatorLabel?: ReactNode;\n  /**\n   *  Alternative text for the delete file button of the file list.\n   */\n  removeFileButtonLabel: string;\n  /**\n   *  Alternative text for the replace file button of the file list.\n   */\n  replaceFileButtonLabel: string;\n  /**\n   *  Max number of files to upload.\n   */\n  maxCount?: number;\n  /**\n   *  Max size in bytes of each file.\n   */\n  maxSize?: number;\n  /**\n   *  Max count exceeded error message.\n   */\n  maxCountExceededErrorLabel?: string;\n  /**\n   *  Max size exceeded error message.\n   */\n  maxSizeExceededErrorLabel?: string;\n  /**\n   *  Forbidden error message.\n   */\n  forbiddenExtensionErrorLabel?: string;\n  /**\n   *  Duplicated error message.\n   */\n  duplicatedFileErrorLabel?: string;\n  /**\n   *  Initial default files.\n   */\n  files?: File[];\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below button uploader.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlights the button uploader with some error indication.\n   */\n  hasError?: BooleanProp;\n}\n\nconst DragAndDropUploader: FC<DragAndDropUploaderProps> = ({\n  ref = null,\n  label,\n  dragAndDropLabel,\n  inputLabel,\n  selectedFilesLabel,\n  hideLabel,\n\n  required = true,\n\n  extensionsInstructions,\n  separatorLabel,\n\n  removeFileButtonLabel,\n  replaceFileButtonLabel,\n\n  accept,\n  maxSize = Number.MAX_SAFE_INTEGER,\n  maxCount = Number.MAX_SAFE_INTEGER,\n\n  maxCountExceededErrorLabel = '',\n  maxSizeExceededErrorLabel = '',\n  forbiddenExtensionErrorLabel = '',\n  duplicatedFileErrorLabel = '',\n\n  multiple,\n  disabled,\n  onChange,\n\n  files: defaultFiles,\n\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n\n  ...props\n}) => {\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = disabled ? false : required;\n\n  const innerButtonRef = useRef<HTMLButtonElement>(null);\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n  useImperativeHandle(ref, () => innerInputRef.current as HTMLInputElement);\n\n  const dragAreaRef = useRef<HTMLDivElement | null>(null);\n\n  const [labelText, setLabelText] = useState(inputLabel);\n  const [isDraggingOver, setIsDraggingOver] = useState(false);\n\n  const [errorMessages, setErrorMessages] = useState([] as string[]);\n  const [fileMessages, setFileMessages] = useState<{ [fileName: string]: { text: string; hasError: boolean } }>({});\n\n  const updateErrors = (errors: FileUploadError | null) => {\n    if (!errors) {\n      setErrorMessages([]);\n      setFileMessages({});\n      return;\n    }\n\n    const parsedErrors: string[] = [];\n    const newFileMessages: { [fileName: string]: { text: string; hasError: boolean } } = {};\n\n    if (errors.maxCountExceeded) {\n      parsedErrors.push(maxCountExceededErrorLabel);\n    }\n\n    errors.duplicatedFiles.forEach((fileName) => {\n      newFileMessages[fileName] = {\n        text: duplicatedFileErrorLabel,\n        hasError: true\n      };\n    });\n\n    errors.sizeExceededFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${maxSizeExceededErrorLabel}`);\n    });\n\n    errors.sizeExceededFiles.forEach((fileName) => {\n      newFileMessages[fileName] = {\n        text: `${fileName} - ${maxSizeExceededErrorLabel}`,\n        hasError: true\n      };\n    });\n\n    errors.extensionForbiddenFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${forbiddenExtensionErrorLabel}`);\n    });\n\n    setErrorMessages(parsedErrors);\n    setFileMessages(newFileMessages);\n  };\n\n  const handleOnChangeFiles = (files: File[], errors: FileUploadError | null) => {\n    if (files.length > 0) {\n      setLabelText(`${files.length} ${selectedFilesLabel}`);\n    } else {\n      setLabelText(inputLabel);\n    }\n\n    if (innerInputRef.current) {\n      const list = new DataTransfer();\n\n      files.forEach((f) => {\n        list.items.add(f);\n      });\n\n      innerInputRef.current.files = list.files;\n\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n\n    updateErrors(errors);\n  };\n\n  const { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles } = useFileUpload(\n    maxCount,\n    maxSize,\n    accept ? accept.split(',') : [],\n    !!multiple,\n    handleOnChangeFiles,\n    defaultFiles\n  );\n\n  const canUpload = useMemo(() => {\n    if (multiple) {\n      return !disabled && files.length < maxCount;\n    }\n\n    return !disabled && files.length === 0;\n  }, [disabled, multiple, files]);\n\n  const handleFileReplace = (newFileToReplace: File) => {\n    onReplaceFile(newFileToReplace);\n  };\n\n  const handleFileRemove = (fileToRemove: File) => {\n    onRemoveFile(fileToRemove);\n  };\n\n  useEffect(() => {\n    const handlePaste = (e: Event) => {\n      if (!canUpload) {\n        return;\n      }\n\n      if (innerButtonRef.current && innerButtonRef.current === document.activeElement) {\n        const { clipboardData } = e as ClipboardEvent;\n        if (clipboardData && clipboardData.files.length > 0) {\n          const clipboardFiles = Array.from(clipboardData.files) ?? [];\n          onPasteFiles(clipboardFiles);\n        }\n      }\n    };\n\n    window.addEventListener('paste', handlePaste);\n\n    return () => {\n      window.removeEventListener('paste', handlePaste);\n    };\n  }, []);\n\n  const handleDragOver = (evt: DragEvent) => {\n    if (!canUpload) {\n      return;\n    }\n\n    evt.preventDefault();\n    evt.stopPropagation();\n\n    setIsDraggingOver(true);\n\n    if (evt.dataTransfer) {\n      evt.dataTransfer.dropEffect = 'copy';\n    }\n  };\n\n  const handleDragLeave = () => {\n    setIsDraggingOver(false);\n  };\n\n  const handleDrop = (evt: DragEvent) => {\n    if (!canUpload) {\n      return;\n    }\n\n    evt.preventDefault();\n    evt.stopPropagation();\n\n    setIsDraggingOver(false);\n\n    if (evt.dataTransfer) {\n      const droppedFiles = Array.from(evt.dataTransfer.files ?? []);\n      onPasteFiles(droppedFiles);\n    }\n  };\n\n  useEffect(() => {\n    const handleClick = (evt: MouseEvent) => {\n      if (innerButtonRef.current && innerButtonRef.current !== evt.target && !innerButtonRef.current.contains(evt.target as HTMLElement)) {\n        onAddFiles();\n      }\n    };\n\n    if (dragAreaRef.current) {\n      dragAreaRef.current.addEventListener('click', handleClick);\n      dragAreaRef.current.addEventListener('dragover', handleDragOver);\n      dragAreaRef.current.addEventListener('dragleave', handleDragLeave);\n      dragAreaRef.current.addEventListener('drop', handleDrop);\n    }\n\n    return () => {\n      if (dragAreaRef.current) {\n        dragAreaRef.current.removeEventListener('click', handleClick);\n        dragAreaRef.current.removeEventListener('dragover', handleDragOver);\n        dragAreaRef.current.removeEventListener('dragleave', handleDragLeave);\n        dragAreaRef.current.removeEventListener('drop', handleDrop);\n      }\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!isRequired) return;\n\n    const form = innerInputRef.current?.form;\n    if (!form) return;\n\n    const handleSubmit = (e: Event) => {\n      if (files.length === 0) {\n        e.preventDefault();\n        innerButtonRef.current?.focus();\n      }\n    };\n\n    form.addEventListener('submit', handleSubmit);\n    return () => {\n      form.removeEventListener('submit', handleSubmit);\n    };\n  }, [isRequired, files]);\n\n  const containerClassNames = classNames(\n    'agora-drag-and-drop-file-uploader',\n    { 'cannot-upload': !canUpload },\n    { hasError: errorMessages.length > 0 || stringToBoolean(hasError) },\n    props.className\n  );\n\n  const dragAndDropClassNames = classNames('drag-and-drop-area', { 'drag-over': isDraggingOver });\n  const fileListClassNames = classNames('file-list-container', { 'py-8': files.length > 0 });\n\n  return (\n    <div className={containerClassNames}>\n      {label && (\n        <div className=\"drag-and-drop-label-wrapper\">\n          <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"drag-and-drop-label\">\n            {label}\n          </label>\n        </div>\n      )}\n      <div className=\"drag-and-drop-input-wrapper\">\n        <input ref={innerInputRef} type=\"file\" style={{ display: 'none' }} tabIndex={-1} />\n\n        <div ref={dragAreaRef} className={dragAndDropClassNames}>\n          <Icon className=\"download-icon\" name=\"agora-line-download\" aria-hidden />\n\n          {(dragAndDropLabel || extensionsInstructions) && (\n            <div className=\"instructions\">\n              {dragAndDropLabel && <div className=\"drag-and-drop-label\">{dragAndDropLabel}</div>}\n              {extensionsInstructions && <div className=\"extension-instructions\">{extensionsInstructions}</div>}\n            </div>\n          )}\n\n          {separatorLabel && <div className=\"separator-label\">{separatorLabel}</div>}\n\n          <Button\n            id={propsClone.id}\n            ref={innerButtonRef}\n            fullWidth\n            iconOnly={stringToBoolean(hideLabel)}\n            hasIcon\n            trailingIcon=\"agora-line-upload\"\n            trailingIconHover=\"agora-solid-upload\"\n            variant={'neutral'}\n            disabled={!canUpload}\n            onClick={onAddFiles}\n            aria-describedby={\n              (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText\n                ? `drag-and-drop-${propsClone.id}-feedback`\n                : undefined\n            }\n          >\n            {labelText}\n          </Button>\n        </div>\n      </div>\n\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`drag-and-drop-uploader-${propsClone.id}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n        />\n      )}\n      {errorMessages.length > 0 && (\n        <div className=\"errors-container\">\n          {errorMessages.map((message, index) => {\n            const errorKey = `error-message-${generatedId}-${index}`;\n            return <Feedback key={errorKey} feedbackState={'danger'} feedbackText={message} />;\n          })}\n        </div>\n      )}\n      <div className={fileListClassNames}>\n        <FileList\n          files={files}\n          onFileReplace={handleFileReplace}\n          onFileRemove={handleFileRemove}\n          removeFileButtonLabel={removeFileButtonLabel}\n          replaceFileButtonLabel={replaceFileButtonLabel}\n          messages={fileMessages}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { DragAndDropUploader };\n","import { createContext, ReactElement } from 'react';\nimport { FinancingSectionContainer, LinksSectionContainer, LogoSectionContainer } from './index';\n\ntype ChildType = ReactElement | ReactElement[] | undefined;\n\nexport type FooterChildren =\n  | ReactElement<typeof LogoSectionContainer>\n  | ReactElement<typeof FinancingSectionContainer>\n  | ReactElement<typeof LinksSectionContainer>;\n\nexport type FooterVariant = 'white' | 'neutral-100' | 'primary-700' | 'primary-900';\n\nexport function getChildrenOfType<T>(childType: T, children: ChildType) {\n  if (!children) {\n    return null;\n  }\n\n  let childrenArray: ReactElement[];\n\n  if (Array.isArray(children)) {\n    childrenArray = children;\n  } else {\n    childrenArray = [children];\n  }\n\n  const childFound = childrenArray.find((child) => child.type === childType);\n\n  return childFound || null;\n}\n\nexport function getAllChildrenOfType<T>(childType: T, children: ChildType) {\n  if (!children) {\n    return [];\n  }\n\n  let childrenArray: ReactElement[];\n\n  if (Array.isArray(children)) {\n    childrenArray = children;\n  } else {\n    childrenArray = [children];\n  }\n\n  return childrenArray.filter((child) => child.type === childType);\n}\n\nexport const FooterContext = createContext<{ isLightVariant: boolean }>({ isLightVariant: true });\n","import React, { FC, HTMLAttributes } from 'react';\nimport { FooterChildren, FooterContext, FooterVariant, getChildrenOfType } from './helpers';\nimport { FinancingSectionContainer, LinksSectionContainer, LogoSectionContainer } from './index';\n\nexport interface FooterProps extends HTMLAttributes<HTMLElement> {\n  variant?: FooterVariant;\n  children?: FooterChildren | FooterChildren[];\n}\n\nexport const Footer: FC<FooterProps> = ({ children, variant = 'white', ...props }) => {\n  const logoSectionContainer = getChildrenOfType(LogoSectionContainer, children);\n  const financingSectionContainer = getChildrenOfType(FinancingSectionContainer, children);\n  const linksSectionContainer = getChildrenOfType(LinksSectionContainer, children);\n\n  const bgColorClass = {\n    'white': 'bg-[var(--color-white)]',\n    'neutral-100': 'bg-[var(--color-neutral-100)]',\n    'primary-700': 'bg-[var(--color-primary-700)]',\n    'primary-900': 'bg-[var(--color-primary-900)]'\n  };\n\n  const isLightVariant = variant === 'white' || variant === 'neutral-100';\n\n  return (\n    <div className={`agora-footer w-full ${bgColorClass[variant]}`} {...props}>\n      <FooterContext value={{ isLightVariant }}>\n        {logoSectionContainer}\n        {financingSectionContainer}\n        {linksSectionContainer}\n      </FooterContext>\n    </div>\n  );\n};\n","import './logo-section-container.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\nimport classNames from 'classnames';\n\nimport { FooterDisclaimer, FooterGenericLogo, LogoSectionAccessibilityLogo, LogoSectionFreestyle, LogoSectionMainLogo } from '../../index';\nimport { FooterContext, getAllChildrenOfType, getChildrenOfType } from '../../helpers';\n\ntype LogoSectionContainerChildren =\n  | ReactElement<typeof LogoSectionFreestyle>\n  | ReactElement<typeof LogoSectionMainLogo>\n  | ReactElement<typeof FooterGenericLogo>\n  | ReactElement<typeof FooterDisclaimer>\n  | ReactElement<typeof LogoSectionAccessibilityLogo>;\n\nexport interface LogoSectionContainerProps extends HTMLAttributes<HTMLDivElement> {\n  children?: LogoSectionContainerChildren | LogoSectionContainerChildren[];\n}\n\nexport const LogoSectionContainer: FC<LogoSectionContainerProps> = (props) => {\n  const logoSectionMainLogo = getChildrenOfType(LogoSectionMainLogo, props.children);\n  const footerGenericLogos = getAllChildrenOfType(FooterGenericLogo, props.children);\n  const footerDisclaimer = getChildrenOfType(FooterDisclaimer, props.children);\n  const logoSectionAccessibilityLogo = getChildrenOfType(LogoSectionAccessibilityLogo, props.children);\n  const { isLightVariant } = useContext(FooterContext);\n\n  const logoSectionFreestyle = getChildrenOfType(LogoSectionFreestyle, props.children);\n\n  const hasMain = logoSectionMainLogo || footerGenericLogos?.length || footerDisclaimer || logoSectionAccessibilityLogo;\n\n  const hasFooterGenericLogos = !!footerGenericLogos?.length;\n\n  const containerMainClass = classNames('agora-footer-logo-section-container-main', {\n    'main-without-section-freestyle': !logoSectionFreestyle,\n    'xl:border-r-2 border-black/5': isLightVariant && logoSectionFreestyle,\n    'xl:border-r-2 border-white/5': !isLightVariant && logoSectionFreestyle\n  });\n\n  const containerLogosClass = classNames('agora-footer-logo-section-container-logos', {\n    'no-footer-generic-logos': hasFooterGenericLogos || logoSectionAccessibilityLogo\n  });\n\n  return (\n    <div className=\"agora-footer-logo-section-container\" {...props}>\n      {hasMain && (\n        <div className={containerMainClass}>\n          <ul className={containerLogosClass}>\n            {logoSectionMainLogo} {footerGenericLogos}\n          </ul>\n          {footerDisclaimer && <div className=\"agora-footer-logo-section-container-disclaimer\">{footerDisclaimer}</div>}\n\n          {logoSectionAccessibilityLogo && <>{logoSectionAccessibilityLogo}</>}\n        </div>\n      )}\n\n      {logoSectionFreestyle && <>{logoSectionFreestyle}</>}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport { FooterContext } from '../../helpers';\nimport './logo-section-freestyle.css';\nimport React, { FC, HTMLAttributes, ReactNode, useContext } from 'react';\n\nexport interface LogoSectionFreestyleProps extends HTMLAttributes<HTMLDivElement> {\n  children?: ReactNode;\n}\n\nexport const LogoSectionFreestyle: FC<LogoSectionFreestyleProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  const containerMainClass = classNames('agora-logo-section-freestyle', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerMainClass} {...props}>\n      {props.children}\n    </div>\n  );\n};\n\nexport default LogoSectionFreestyle;\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface LogoSectionMainLogoProps extends HTMLAttributes<HTMLLIElement> {\n  children?: ReactNode;\n}\n\nexport const LogoSectionMainLogo: FC<LogoSectionMainLogoProps> = (props) => (\n  <li className=\"agora-footer-logo-section-main-logo\" {...props}>\n    {props.children}\n  </li>\n);\n\nexport default LogoSectionMainLogo;\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface LogoSectionAccessibilityLogoProps extends HTMLAttributes<HTMLDivElement> {\n  children?: ReactNode;\n}\n\nexport const LogoSectionAccessibilityLogo: FC<LogoSectionAccessibilityLogoProps> = (props) => (\n  <div className=\"agora-footer-logo-section-accessibility-logo\" {...props}>\n    {props.children}\n  </div>\n);\n\nexport default LogoSectionAccessibilityLogo;\n","import './financing-section-container.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\n\nimport { FooterDisclaimer, FooterGenericLogo } from '../index';\nimport { FooterContext, getAllChildrenOfType, getChildrenOfType } from '../helpers';\nimport classNames from 'classnames';\n\ntype FinancingSectionContainerChildren = ReactElement<typeof FooterDisclaimer> | ReactElement<typeof FooterGenericLogo>;\n\nexport interface FinancingSectionContainerProps extends HTMLAttributes<HTMLDivElement> {\n  children?: FinancingSectionContainerChildren | FinancingSectionContainerChildren[];\n  financingSectionAriaLabel?: string;\n}\n\nexport const FinancingSectionContainer: FC<FinancingSectionContainerProps> = (props) => {\n  const disclaimer = getChildrenOfType(FooterDisclaimer, props.children);\n  const genericLogos = getAllChildrenOfType(FooterGenericLogo, props.children);\n  const { isLightVariant } = useContext(FooterContext);\n\n  const genericLogosClassName = classNames('agora-footer-financing-section-generic-logos-container', {\n    'xl:justify-end': !!disclaimer\n  });\n\n  const containerClassNames = classNames('agora-footer-financing-section-container', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerClassNames} {...props}>\n      {disclaimer && <>{disclaimer}</>}\n\n      {genericLogos?.length > 0 && (\n        <nav className=\"agora-footer-financing-section-generic-logos\" aria-label={props.financingSectionAriaLabel}>\n          <ul className={genericLogosClassName}>{genericLogos}</ul>\n        </nav>\n      )}\n    </div>\n  );\n};\n","import './links-section-container.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\n\nimport { FooterContext, getChildrenOfType } from '../../helpers';\nimport { LinksSectionRelatedLinks, LinksSectionSocialLinks } from '../../index';\nimport classNames from 'classnames';\n\ntype LinksSectionContainerChildren = ReactElement<typeof LinksSectionRelatedLinks> | ReactElement<typeof LinksSectionSocialLinks>;\n\nexport interface LinksSectionContainerProps extends HTMLAttributes<HTMLDivElement> {\n  children?: LinksSectionContainerChildren | LinksSectionContainerChildren[];\n}\n\nexport const LinksSectionContainer: FC<LinksSectionContainerProps> = (props) => {\n  const socialLinksSection = getChildrenOfType(LinksSectionSocialLinks, props.children);\n  const relatedLinksSection = getChildrenOfType(LinksSectionRelatedLinks, props.children);\n  const hasBothSections = !!socialLinksSection && !!relatedLinksSection;\n  const { isLightVariant } = useContext(FooterContext);\n\n  const containerClassNames = classNames('agora-footer-links-section-container', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  const dividerClassNames = classNames('agora-footer-links-section-container-divider', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerClassNames} {...props}>\n      {socialLinksSection}\n\n      {hasBothSections && <div className={dividerClassNames} />}\n\n      {relatedLinksSection}\n    </div>\n  );\n};\n","import './links-section-social-links.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\n\nimport { FooterLink, LinksSectionSocialLinksLabel } from '../../index';\nimport { FooterContext, getAllChildrenOfType, getChildrenOfType } from '../../helpers';\nimport classNames from 'classnames';\n\ntype LinksSectionSocialLinksChildren = ReactElement<typeof LinksSectionSocialLinksLabel> | ReactElement<typeof FooterLink>;\n\nexport interface LinksSectionSocialLinksProps extends HTMLAttributes<HTMLDivElement> {\n  children?: LinksSectionSocialLinksChildren | LinksSectionSocialLinksChildren[];\n  linksSectionSocialAriaLabel?: string;\n}\n\nexport const LinksSectionSocialLinks: FC<LinksSectionSocialLinksProps> = (props) => {\n  const socialLinksLabel = getChildrenOfType(LinksSectionSocialLinksLabel, props.children);\n  const links = getAllChildrenOfType(FooterLink, props.children);\n  const { isLightVariant } = useContext(FooterContext);\n\n  const containerClassNames = classNames('agora-footer-links-section-social-links', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerClassNames} {...props}>\n      {socialLinksLabel}\n\n      <nav aria-label={props.linksSectionSocialAriaLabel}>\n        <ul className=\"links-container\">{links}</ul>\n      </nav>\n    </div>\n  );\n};\n","import './links-section-related-links.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\n\nimport { FooterLink, LinksSectionRelatedLinksCopyright } from '../../index';\nimport { FooterContext, getAllChildrenOfType, getChildrenOfType } from '../../helpers';\nimport classNames from 'classnames';\n\ntype LinksSectionRelatedLinksChildren = ReactElement<typeof FooterLink> | ReactElement<typeof LinksSectionRelatedLinksCopyright>;\n\nexport interface LinksSectionRelatedLinksProps extends HTMLAttributes<HTMLDivElement> {\n  children?: LinksSectionRelatedLinksChildren | LinksSectionRelatedLinksChildren[];\n  linksSectionRelatedAriaLabel?: string;\n}\n\nexport const LinksSectionRelatedLinks: FC<LinksSectionRelatedLinksProps> = (props) => {\n  const links = getAllChildrenOfType(FooterLink, props.children);\n  const copyright = getChildrenOfType(LinksSectionRelatedLinksCopyright, props.children);\n  const { isLightVariant } = useContext(FooterContext);\n\n  const containerClassNames = classNames('agora-footer-links-section-related-links', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerClassNames} {...props}>\n      {links.length > 0 && (\n        <nav aria-label={props.linksSectionRelatedAriaLabel}>\n          <ul className=\"links-container\">{links}</ul>\n        </nav>\n      )}\n\n      {copyright && <>{copyright}</>}\n    </div>\n  );\n};\n","import './links-section-related-links-copyright.css';\nimport React, { FC, HTMLAttributes, ReactNode, useContext } from 'react';\nimport { FooterContext } from '../../../helpers';\nimport classNames from 'classnames';\n\nexport interface LinksSectionRelatedLinksCopyrightProps extends HTMLAttributes<HTMLSpanElement> {\n  children?: ReactNode;\n}\n\nexport const LinksSectionRelatedLinksCopyright: FC<LinksSectionRelatedLinksCopyrightProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  const copyrightClassName = classNames('agora-footer-links-section-related-links-copyright', {\n    'text-[var(--color-neutral-700)]': isLightVariant,\n    'text-[var(--color-neutral-500)]': !isLightVariant\n  });\n\n  return (\n    <span className={copyrightClassName} {...props}>\n      {props.children}\n    </span>\n  );\n};\n","import './links-section-social-links-label.css';\nimport React, { FC, HTMLAttributes, ReactNode, useContext } from 'react';\nimport { FooterContext } from '../../../helpers';\nimport classNames from 'classnames';\n\nexport interface LinksSectionSocialLinksLabelProps extends HTMLAttributes<HTMLSpanElement> {\n  children?: ReactNode;\n}\n\nexport const LinksSectionSocialLinksLabel: FC<LinksSectionSocialLinksLabelProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  const labelClassName = classNames('agora-footer-links-section-social-links-label', {\n    'text-[var(--color-neutral-900)]': isLightVariant,\n    'text-[var(--color-neutral-500)]': !isLightVariant\n  });\n\n  return (\n    <span className={labelClassName} {...props}>\n      {props.children}\n    </span>\n  );\n};\n","import './footer-disclaimer.css';\nimport React, { FC, HTMLAttributes, ReactNode, useContext } from 'react';\nimport { FooterContext } from '../../helpers';\nimport classNames from 'classnames';\n\nexport interface FooterDisclaimerProps extends HTMLAttributes<HTMLSpanElement> {\n  children?: ReactNode;\n}\n\nexport const FooterDisclaimer: FC<FooterDisclaimerProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  const copyrightClassName = classNames('agora-footer-disclaimer', {\n    'text-[var(--color-neutral-700)]': isLightVariant,\n    'text-[var(--color-neutral-500)]': !isLightVariant\n  });\n\n  return (\n    <span className={copyrightClassName} {...props}>\n      {props.children}\n    </span>\n  );\n};\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface FooterGenericLogoProps extends HTMLAttributes<HTMLLIElement> {\n  children?: ReactNode;\n}\n\nexport const FooterGenericLogo: FC<FooterGenericLogoProps> = (props) => (\n  <li className=\"agora-footer-generic-logo\" {...props}>\n    {props.children}\n  </li>\n);\n","import './footer-link.css';\nimport React, { FC, useContext } from 'react';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { FooterContext } from '../../helpers';\n\nexport interface FooterLinkProps extends AnchorProps {}\n\nexport const FooterLink: FC<FooterLinkProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  return (\n    <li className=\"agora-footer-link\">\n      <Anchor darkMode={!isLightVariant} {...props} />\n    </li>\n  );\n};\n"],"names":["AgoraTailwindConfig","addComponents","addBase","theme","extractColorVars","colorObj","colorGroup","vars","colorKey","value","extractedColorVar","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","newClass","module","iconList","lazy","allIcons","c","isBundledIcon","name","iconsCache","loadIcon","cachedIcon","lazyComponent","InternalIcon","dimensions","onIconLoad","onIconError","props","applyFillColor","_a","onLoad","onError","React","LazyComponent","fullProps","Suspense","Icon","memo","prevProps","nextProps","IconItem","state","IconSet","ref","className","children","Children","child","isValidElement","childState","childProps","iconClassName","createSyntheticEvent","target","eventType","event","isDefaultPrevented","isPropagationStopped","preventDefault","stopPropagation","debounce","func","timeout","timer","args","useDebounceHook","useRef","setArgs","useState","useEffect","getDateString","d","dayString","monthString","yearString","normalizeText","text","stringToBoolean","useExpandedRef","innerRef","data","deps","externalRef","useImperativeHandle","_","safeData","asyncTrigger","useWindowSize","fallback","size","setSize","updateSize","useBreakpointScreenValues","xsScreen","mdScreen","xlScreen","Accordion","hasIcon","leadingIcon","leadingIconHover","darkMode","headingTitle","Component","defaultExpanded","expandedFromProps","onExpanded","onCollapsed","onChange","ariaLabel","generatedId","useId","isControlled","hasDefaultValue","internalExpandedValue","setInternalExpandedValue","activeState","setActiveState","width","isMobile","expanded","eventToTrigger","setEventToTrigger","expand","silentExpand","collapse","silentCollapse","toggle","silentToggle","expandedEvt","collapsedEvt","changeEvt","AccordionClassName","AccordionBodyClassName","AccordionIconClassName","onClickHandler","onKeyDownHandler","evt","onKeyUpHandler","onMouseDownHandler","onMouseUpHandler","onMouseLeaveHandler","onMouseEnterHandler","AccordionGroup","generatedAccordionGroupId","accordionsRefMap","useMemo","updateRefMap","id","acc","renderAccordions","index","newRef","createRef","_b","AccordionGroupClassName","Anchor","appearance","variant","fullWidth","iconOnly","leadingIconActive","trailingIcon","trailingIconHover","trailingIconActive","inline","anchorClassName","handleClick","isTouchDevice","handleMouseEnter","handleMouseLeave","handleMouseDown","handleMouseUp","onBlur","TOOLTIP_CHANGE_EVENT_NAME","Tooltip","hasTitle","position","alignment","title","description","top","setTop","left","setLeft","setWidth","height","setHeight","setDimensions","useCallback","rect","propsClone","TooltipContainerClassName","TooltipClassName","visibility","setVisibility","showTooltip","hideTooltip","handleEscapeKey","handleTooltipMouseLeave","handleTooltipChange","customEventArgs","parsedChildren","cloneElement","relatedElement","cb","topPositioning","bottomPositioning","leftPositioning","rightPositioning","tooltipPosition","TooltipContent","memoPortal","createPortal","Button","innerButtonRef","buttonClassName","_c","_d","shouldTriggerClick","InteractiveAvatar","onActivate","alt","ariaHasPopup","ariaExpanded","ariaCurrent","role","tabIndex","NonInteractiveAvatar","Avatar","avatarType","srcPath","hasBadge","information","badgePosition","badgeVariant","badgeAppearance","badgeSize","tooltipAlignment","interactive","containerClasses","memoContent","avatarClasses","badgeClasses","InternalDropdownContext","createContext","useInternalDropdownContext","useContext","InternalDropdownFilterSection","debounceTimeout","dropdownContext","applyFilter","hide","next","currentFilter","setCurrentFilter","debouncedApplyFilter","onInputChange","resetFilter","inputRef","onKeyDownCaptureHandler","onMouseDownCaptureHandler","dropdownFilterClasses","InternalNoResults","label","OptionComponent","type","icon","InternalDropdownOption","disabled","selected","filtered","iconPosition","onRangeSelection","sectionOptionId","internalDropdownOptionRef","parsedIconName","iconName","setIconName","selectOption","options","last","first","prev","optionWrapperClasses","select","option","opt","handleRangeSelectionAndSelect","isShiftClick","code","onMouseDownCapture","clickHandler","applySolidIcon","lastIconName","applyLineIcon","optionHeight","InternalDropdownSection","hideLabel","lastSelectedOption","setLastSelectedOption","sectionNameRef","sectionClassNames","handleRangeSelection","currentOptionId","sectionOptions","lastIndex","currentIndex","startIndex","endIndex","shouldSelect","optionClassNames","sectionNameHeight","labelVisible","InternalDropdownSelectAllSection","isAllDisabled","isAllSelected","selectAll","onKeydown","currentRef","handler","dropdownselectAllSectionClassNames","dropdownAllOptionClassNames","InternalDropdown","selectAllLabel","searchPlaceholder","searchAriaLabel","searchable","optionsVisible","noSearchResults","context","activeFilter","sections","filterRef","isOpenRef","maxHeightStyleProp","setMaxHeightStyleProp","getFilterSectionHeight","elem","val","getSelectAllSectionHeight","getVisibleSectionNamesHeight","visibleSections","heightCount","sectionName","getVisibleOptionsHeight","visibleOptions","visibleOptionsKeys","optionId","getListboxBorderWidths","computedStyle","borderTopWidth","borderBottomWidth","containedOptions","maxHeight","dropdownClasses","hasOptions","hasSectionsWithResults","allSectionResultsDisabled","visibleResults","sectionWithResults","s","section","useDropdownState","internalDropdownRef","hideSectionNames","onSearchChange","onShow","onHide","setSections","setOptions","backupOptions","setBackupOptions","parsedSectionProps","parsedOptionProps","sec","setActiveFilter","newFilter","lastFilter","lastOptions","newOptions","childrenVal","notFound","results","focusElem","inputFilter","opts","domOptions","idx","current","show","triggerOnChange","selectedOptions","o","isMultiSelection","isProvidedOption","isAllSectionOptionsSelected","availableOptions","hasOptionsUnselected","selectSectionOptions","allOptionsSelected","isInSectionProvided","hasSectionOptionsToInteract","hasOptionsNotDisabled","showDropdownHandler","showDropdown","dropdownState","Dropdown","firstCall","sectionChild","optionChild","DropdownSection","DropdownOption","handleWithAvailableSpace","containerDropdownRef","containerRef","distanceFromLeft","result","VisibleCountAvatarGroup","avatarCount","visibleCount","visibleCountAriaLabel","hoverBridgeClassname","countValue","avatarCountList","avatar","dropdownRef","buttonRef","isDropdownVisible","setIsDropdownVisible","handleKeydown","currentContainerRef","avatarKey","AvatarGroup","generatedAvatarGroupId","avatarGroupClasses","totalVisibleAvatars","renderAvatarListItem","BackToTop","tooltipVariant","hasTooltipTitle","tooltipTitle","tooltipDescription","backToTopClassName","goToTop","BreadcrumbDesktop","items","BreadcrumbClassName","link","BreadcrumbMobile","sectionTitle","isExpanded","setIsExpanded","listRef","breadcrumbIndents","closeMenuClickHandler","handleTabKey","linkList","liParentNode","setKeyboardKeydownBehavior","firstLink","expandMenu","breadcrumbItemIndent","Breadcrumb","baseClasses","desktopBreadcrumbClassnames","mobileBreadcrumbClassnames","useHandlerOrientationChange","ignoreHandlerOrientation","orientationState","setOrientationState","componentWidth","setComponentWidth","currentComponentWidth","ToggleGroup","orientation","multiple","valueFromProps","defaultValue","onChangeFromProps","toggleGroupClassName","parsedDefaultValue","internalValue","setInternalValue","parsedChildValue","isChecked","cv","newVals","v","newVal","ButtonGroup","childrenButtons","ret","buttonGroupClasses","buttonGroupContainer","Pill","circular","pillClassName","useBlockedLink","parentCardRef","anchorRef","blockedLink","activateLink","onClickCaptureHandler","anchorElement","parentCardElem","CardArticle","hasPill","pill","mainAnchor","image","Heading","subtitle","cardArticleRef","cardArticleAnchorRef","onlyAnchor","headingPlacement","anchorPlacement","mainAnchorClone","buildText","anchorProps","isAnchor","isHeading","cardClassNames","anchorContainerClassNames","CardCollection","cardCollectionRef","cardCollectionAnchorRef","CardCollectionClass","CardEmphasize","mainButton","cardEmphasizeClasseNames","iconProps","buttonProps","LinkWrapper","anchorContainerClassName","CardError","backLink","statusCodeMessage","CardLinksClasses","BookmarkIcon","fill","fillTop","newProps","cardExpandableButtonVariantsMap","CardAccordion","previousEventToTrigger","DarkBackground","CardExpandable","cardTitle","cardSubtitle","showBookmarkIcon","accordionHeadingLevel","accordionHeadingTitle","cardExpandableClasses","useBlockedLinkV2","mainLinkRef","a","mainLinkElement","CardFrame","mainLink","linkPosition","cardFrameRef","mainAnchorElementRef","mainLinkElementRef","cardFrameClassNames","cardFrameContainerClass","CardFullImage","cardFullImageClassName","CardHeroHelper","helpTopics","CardHeroHelperClasses","block","CardHeroIndex","CardExpandableClasses","cardIndex","CardHeroSitemap","anchors","highlightedLink","arrayLink","CardHeroSitemapClasses","InnerHighlightCard","links","CardHighlight","highlightAreaPosition","cardPosition","cardSize","cardHighlightClassName","isTablet","cardInfoRef","cardContentRef","spaceBetweenElements","marginTop","heightLessDefaultValue","CardHighlightNewsletter","cardHighlightNewsletterClassName","CardHighlightSingle","actionButton","CardHighLightClasses","CardLinks","category","date","topics","padding","cardLinksRef","cardLinksClasses","pseudoDarkMode","imageOverlayClassNames","anchorKey","topic","Item","List","listStyle","startNumber","ComponentType","mappedLIElements","stringOrReactNode","CardNoResults","hasAnchor","valueAnchor","anchorLeadingIcon","anchorLeadingIconHover","anchorTrailingIcon","anchorTrailingIconHover","itemList","anchorHref","hasList","anchorTarget","extraDescription","cardNoResultsClasses","mainContentClasses","hasAnyAnchorIcon","item","CardSingle","cardSingleRef","cardSingleAnchorRef","CardSingleClasses","CardTopic","statusLabel","status","variantMemo","cardTopicRef","cardTopicAnchorRef","cardTopicClasseNames","cardStatusClasseNames","cardActionVariantsMap","CardAction","isCardHorizontal","titleText","descriptionText","button","buttonFullWidth","buttonVariant","buttonDarkMode","cardActionContainerClassNames","cardActionClassNames","iconLogoClassNames","buttonClassNames","cardIllustrativeAnchorVariantsMap","getSVGElement","getImageElement","CardIllustrative","subtitleText","imageFilter","bgIllustration","bgIllustrationHover","cardIllustrativeRef","anchorVariant","anchorDarkMode","cardIllustrativeContainerClassNames","cardInnerContainerClassNames","svgElem","svgElemHover","imgElem","pillVariant","CardGeneral","anchor","pillText","iconHover","statusText","iconActive","imageIndent","iconDefault","isBlockedLink","cardRef","cardHorizontal","imageHasIndent","isSimple","isSimpleHorizontal","isVerticalWithImage","isHorizontalWithImage","isVerticalWithIcon","isHorizontalWithIcon","cardGeneralClassNames","imageClassNames","cardGeneralIconClassNames","iconClassNames","containerContentClassNames","contentClassNames","StatusCard","showIcon","anchorOnRightSide","statusCard","cardType","pillProps","statusCardClassNames","iconMap","Feedback","feedbackState","feedbackText","feedbackWrapperClasses","feedbackIconWrapperClasses","feedbackTextClasses","feedbackStateIconsMap","iconWrapperClasses","HelperText","helperText","helperTextWrapperClasses","helperTextClasses","Checkbox","hasError","required","hasFeedback","hasHelperText","hasFeedbackText","hasHelperTextValue","currentChecked","setCurrentChecked","isRequired","inputWrapper","handleChange","checked","ariaDescribedByText","CardNotification","hasAvatar","avatarProps","hasCheckbox","rest","variantValue","isDarkVariant","isReadVariant","allowBadgeForVariant","showNotificationCircle","showAvatar","showCheckbox","hasHeaderMedia","isHorizontal","isVertical","isMobileInlineTexts","notificationCircleClassNames","checkboxAriaLabel","CheckboxGroup","legend","hidden","fieldsetProps","innerOnChange","mappedCheckbox","colorLegend","Dialog","visible","fullScreen","dismissOnBackdropClick","dismissOnEscape","onClickedOutside","onEscape","isVisible","setIsVisible","innerDialogRef","handleKeyDown","focusableElements","b","firstElement","lastElement","handleClickOutside","autoFocusIndex","e","containerClassNames","Drawer","ariaLabelledby","open","setOpen","dialogRef","drawerClassNames","handleClose","fn","_f","_e","handleOpen","RatingButtons","likeButton","dislikeButton","pressedButton","setPressedButton","handleToggleButton","buttonType","createButton","ratingButtonClasses","ratingButtonWrapperClasses","parsedLikeButton","parsedDislikeButton","RatingIcons","readOnly","iconElements","startWrapperRef","selectedIndex","setSelectedIndex","hoverIndex","setHoverIndex","onkeyDownHandler","handleFocusIcon","dataValue","focusedIcon","ratingIconClasses","iconReactElement","iconValue","isHovered","isSelected","clonedIcon","iconKey","tabIndexValue","ratingButtons","message","showMessage","setShowMessage","feedbackClasses","parsedRatingButtons","FooterBrandBadge","brandImage","badgeImage","FooterCaptionPartners","caption","partnersLogos","partnersLogosAriaLabel","textColor","anchorTextColor","_i","partner","FooterSocialUsefulCopyright","socialsLink","usefulLinks","copyright","socialsLinkAriaLabel","usefulLinksAriaLabel","borderColorClass","copyrightTextColorClass","social","MainFooter","bgColorClass","FederatedFooterCard","FederatedFooter","card","isDarkMode","PublicFooterContacts","contacts","contactsOnly","hasCardLinks","contactsClassName","contact","PublicFooterHighlightCard","cardClassName","cardHelpClassName","setCardLinkVW","vw","PublicFooterHighlightCardLinks","cardLinks","textColorClass","PublicFooterHighlight","footerHighlightClassName","cardFooterClassName","PublicFooterMainPlusCardLinks","PublicFooter","GlossaryLetters","letters","lettersComponents","letter","isDisabled","letterClassName","href","HeaderDataContext","useHeaderDataContext","Area","Areas","GeneralBar","hasVisibleAreasProps","generalBarReactElement","areasReactElement","areaReactElements","getParseAreasAriaLabel","getParsedOnAreaChange","getParsedAvailableAreaProps","areas","p","getParsedActiveAreaProps","AuthenticatedFooterAction","AuthenticatedHeader","Authenticated","AuthenticatedBody","AuthenticatedBodyLink","AuthenticatedFooter","getParsedAuthenticatedProps","authenticatedReactElement","getParsedAuthenticatedHeaderProps","authenticatedHeaderReactElement","getParsedAuthenticatedBodyLinkProps","authenticatedBodyReactElement","getParsedAuthenticatedFooterActionProps","authenticatedFooterReactElement","Brand","Institutional","Logo","getParsedInstitutionalPhrase","brandReactElement","institutionalElement","getParsedLogo","logoElement","getParsedGeneralBarAriaLabel","Language","Languages","getLanguagesProps","hasLanguagesProps","getParsedLanguagesAriaLabel","languagesReactElement","getParsedOnLanguageChange","getParsedAvailableLanguageProps","languageReactElements","getParsedCheckedLanguageProps","lang","NavigationBar","NavigationFreestyle","NavigationLink","NavigationRoot","getParsedNavigationBarProps","navigationBarReactElement","getParsedNavigationBarId","countParsedNavigationItems","getParsedNavigationItems","getParsedModalMenuLabel","getParsedModalAriaLabel","getParsedModalCloseLabel","getParsedResponsiveMenuLabel","getParsedResponsiveMenuAriaLabel","getParsedResponsiveMenuBackToRootLabel","hasNavigationBarInternal","CustomSearch","DefaultSearch","Search","SearchInputContainer","SearchRelatedLink","SearchRelatedLinks","SearchRelatedLinksTitle","SearchTitle","Equalizer","InputSearchBar","hasVoiceActionButton","voiceActionAltText","searchActionAltText","isVoiceActive","onVoiceActivate","onSearchActivate","searchButtonRef","voiceButtonRef","currentTarget","setCurrentTarget","handleChangeEvent","onVoiceButtonClick","onSearchButtonClick","inputWrapperClassNames","labelSectionClasses","MIN_SEARCH_LENGTH","hasSearchProps","getSearchButtonLabel","searchPropsElement","hasDefaultSearchProps","defaultSearchPropsElement","getParsedDefaultSearchTitle","defaultSearchTitleElem","getParsedDefaultSearchInputBar","defaultSearchInputSearchBarElement","inputSearchBarElement","getParsedCustomSearchInputBar","getParsedDefaultSearchRelatedLinksTitle","defaultSearchRelatedLinksElem","defaultSearchRelatedLinksTitleElem","getParsedDefaultSearchRelatedLinks","hasCustomSearchProps","customSearchPropsElement","getParsedCustomSearchProps","customSearchProps","Unauthenticated","UnauthenticatedLink","getParsedUnauthenticatedProps","unAuthenticatedReactElement","getParsedUnauthenticatedLinks","unauthenticatedProps","useHeaderDataController","maxNavigationItems","getGeneralBarAriaLabel","getInstitutionalPhrase","getLogoImage","hasVisibleAreas","getAreasAriaLabel","getAreas","getActiveArea","onAreaChange","area","hasLanguages","getLanguagesAriaLabel","onLanguageChange","getCheckedLanguage","getLanguages","getAuthenticated","getAuthenticatedHeader","getAuthenticatedBodyLinks","getAuthenticatedFooterActions","getUnauthenticated","getUnauthenticatedLinks","hasSearch","getSearchLabel","hasDefaultSearch","getDefaultSearchTitle","getDefaultSearchInputBar","getCustomSearchInputBar","getDefaultSearchRelatedLinksTitle","getDefaultSearchRelatedLinks","hasCustomSearch","getCustomSearch","countNavigationItems","getNavigationId","getResponsiveMenuLabel","getResponsiveMenuAriaLabel","getResponsiveMenuBackToRootLabel","getModalMenuLabel","getModalAriaLabel","getModalCloseLabel","hasNavigationBar","getNavigationItems","MenuTypeEnum","useHeaderExternalController","headerMenuContext","focusActiveArea","menuRef","activeAreaBtn","setActiveArea","areaValue","btn","focusLanguages","openLanguages","focusSearch","openSearch","focusUnauthenticated","openUnauthenticated","focusAuthenticated","openAuthenticated","focusBurgerMenu","openBurgerMenu","focusModalMenu","openModalMenu","focusNavigationMenuOption","k","openNavigationMenuOption","closeAll","HeaderMenuContext","useHeaderMenuContext","useScrolling","scrolling","setScrolling","scrollingTimerRef","evaluateScrollingValue","listener","useHeaderMenuController","menuRefMap","expandedMenu","setExpandedMenu","openedSubmenu","setOpenedSubmenu","focusController","CustomHeaderLink","dataAutoFocus","linkClassNames","handleMouseUpOrLeave","elemClassNames","InternalAuthenticatedDrawerBody","bodyLinkProps","InternalAuthenticatedDrawerFooter","footerActions","action","InternalAuthenticatedDrawerHeader","headerProps","InternalAuthenticatedDrawer","authenticatedProps","drawerAriaLabel","PanelMenu","isDrawerPanel","iconsCollapsed","iconsExpanded","portalRefType","panelMenuId","headerContext","portalRef","portalContent","setPortalContent","buttonChildComponent","linkWrapperChildComponent","layoutChildComponent","hasButton","hasLinkWrapper","hasPanel","innerPanelRef","linkWrapperRef","drawerButtonRef","drawerRef","portalElem","handleButtonClick","panelClassNames","panelButtonClassNames","panelLinkWrapperClassNames","panelDrawerButtonClassNames","onKeyDown","onClick","containerElement","memoLeadingIcon","memoLeadingIconHover","memoTrailingIcon","memoTrailingIconHover","RelatedNavigationLink","InternalNavigationBurgerPanel","linksAriaLabel","relatedLinksAriaLabel","backLabel","isOpened","setIsOpened","navigationFreestyle","navigationFreestyleComponent","highlightedLinks","burgerMenuItem","burgerPanelRef","close","burgerRef","handleClickBack","handleClickButton","navigationBurgerLinksLayoutClassNames","InternalNavigationBurgerLayout","headerDataContext","currentArea","otherAreas","menubarRef","focusIndex","setFocusIndex","availableMenuItems","nextIndex","nextElem","handleAreaClick","InternalNavigationBurger","navigationId","menuLabel","menuAriaLabel","InternalInstitutional","InternalArea","active","areasClassNames","InternalAreas","visibleAreas","handleKeyDownCapture","availableAreas","activeIndex","el","InternalAuthenticated","InternalLanguage","InternalLanguagesLayout","languagesRef","InternalLanguages","checkedLanguage","buttonChildren","InternalCustomSearchLayout","content","InternalSearchLayout","searchTitle","defaultInputSearchBarProps","customInputSearchBarProps","relatedLinksTitle","relatedLinks","linkProps","InternalSearch","InternalUnauthenticatedLayout","l","InternalUnauthenticated","unauthenticatedButtonProps","isSingleAuth","panelChildren","panelIconProps","InternalGeneralBar","generalBarClassNames","isDesktop","InternalLogo","logoClassNames","InternalNavigationLinksLayout","navigationLinksLayoutClassName","InternalNavigationList","list","activeAreaSelector","CustomModalContext","useCustomModalContext","ModalMenu","openLabel","closeLabel","modalAriaLabel","modalContext","modalContentChildComponent","focus","handleKeyUp","modalMenuClassNames","menuButtonClassNames","InternalModalContent","contentTitle","activeMenuItemLinks","activeMenuItemRelatedLinks","InternalModalNavbar","onActiveChange","activeMenuItem","setActiveMenuItem","itemClassNames","autoFocusProp","InternalNavigationModalLayout","setActiveIndex","handleActiveChange","newIndex","navigationModalLayoutClassNames","InternalNavigationModal","InternalNavigationBar","navigationBarClassNames","activeArea","tabAccessibleProps","InternalHeader","generalBarPortalRef","navigationBarPortalRef","headerClassNames","generalBarBGClassNames","navigationBarBGClassNames","CustomModalDialog","CustomModalProvider","dialogChildren","setDialogChildren","dialogConfigs","setDialogConfigs","currentDialogChildren","configs","handleOnShow","handleOnHide","contextValue","Header","headerDataController","headerMenuController","screenWidth","handleResize","DatePickerStateContext","isSameDay","date1","date2","Direction","getClosestAvailableDay","startingDate","disabledDates","direction","availableDate","convertedDisabledDates","directionValue","isDayBeforeStartDate","startDate","parsedDate","parsedStartDate","isDayAfterEndDate","endDate","parsedEndDate","isStartDateOneMonthOrMore","isEndDateOneMonthOrMore","isStartDateOneYearOrMore","isEndDateOneYearOrMore","DEFAULT_MONTHS","DEFAULT_WEEK_DAYS","useDatePickerStateContext","ctx","months","weekDays","mapMonths","getAbbrWeekDays","wd","focusedMonth","focusedYear","moveFocusInDays","numberOfDays","focusedDate","newDate","isBeforeStartDate","isAfterEndDate","closestAvailableDay","moveFocusInMonths","numberOfMonths","moveFocusInYears","numberOfYears","isDateInSameMonthOfYear","isDayOnArray","datesArray","convertedDate","parseInputDate","parts","day","month","year","DialogBody","isCalendarActive","setIsCalendarActive","parseDateFromTarget","dateString","focusAndSelectTargetDate","targetDate","parsedTargetDate","parsedDateFromTarget","onKeydownHandler","shiftKey","onFocusHandler","onBlurHandler","buildDay","currentDay","weekNumber","dayNumber","isInCurrentMonth","isFocusedDate","isSelectedDate","isDisabledDate","isToday","stringDate","tdDayClasses","dayClasses","trTdKey","ariaLabelForDay","labels","dayLabel","buildWeek","firstDayOfMonth","dayOfWeek","memoGrid","trCount","trKey","focusDay","DialogFooter","todayDate","isTodayDisabled","onOkPressed","parsedFocusedDate","additionalTodayProps","additionalCancelProps","additionalOkProps","DialogHeader","isPreviousMonthButtonEnabled","setIsPreviousMonthButtonEnabled","isPreviousYearButtonEnabled","setIsPreviousYearButtonEnabled","isNextMonthButtonEnabled","setIsNextMonthButtonEnabled","isNextYearButtonEnabled","setIsNextYearButtonEnabled","DatePickerDropdown","setEndDate","setStartDate","onCancel","isDateDisabled","initialDate","selectedDate","setSelectedDate","setFocusedDate","disabledDatesState","setDisabledDatesState","cancel","managerMemo","wrapperClassNames","datePickerDropdownContainerRef","formatDayOrMonth","number","isLeapYear","parseDate","currentMonth","currentYear","newDay","DateText","dayInputPlaceholder","monthInputPlaceholder","yearInputPlaceholder","inputClassNames","validateDate","targetValue","dateParts","newChangeEvt","allowedKeys","callbackWith","setInputWrapperHovered","InputDate","errorFeedbackText","calendarIconAriaLabel","previousYearAriaLabel","previousMonthAriaLabel","nextMonthAriaLabel","nextYearAriaLabel","monthsLabels","weekdaysLabels","focusedDayAriaLabel","selectedDayAriaLabel","todayDayAriaLabel","todayLabel","todayAriaLabel","cancelLabel","cancelAriaLabel","okLabel","okAriaLabel","innerInputRef","wrapperRef","currentValue","setCurrentValue","lastValueTriggered","trigger","setTrigger","overlayVisible","setOverlayVisible","showOverlay","hideOverlay","toggleOverlay","handleOnDismiss","handleInputDateKeydown","handleDatePickerCancel","keydownHandler","onOverlayChangeHandler","onInputDateChange","syntheticEvent","dropdownDatePickerLabels","inputAriaDescribedBy","iconState","setIconState","currentIconState","EMAIL_REGEXP","InputEmailBar","onSendHandler","pattern","email","setEmail","isValidEmail","setIsValidEmail","onSendButtonClick","labelClasses","inputContainerClassNames","InputNumber","increaseButtonAltText","decreaseButtonAltText","min","max","inputWrapperRef","hasCurrentValue","inputElem","setIsHovered","darkModeClass","inputClassBuilder","inputWrapperClasses","inputClasses","leadingIconWrapperClasses","handleStepUp","handleStepDown","handleMouseHoovering","isHover","InputPassword","togglePasswordAltIconText","showPassword","setShowPassword","hasValue","setHasValue","toggleAriaLabel","handleTogglePassword","FlagsList","separateCountryByCode","country","singleCode","flagsListByCode","PhoneCountryCodes","PhoneCountryISOs","InputPhone","defaultISO","defaultCode","searchInputAriaLabel","searchInputPlaceholder","searchNoResultsText","dropdownAriaLabel","acronymForDirectDialing","customCountriesList","onCountryChange","internalCountriesList","computeCountry","currentCountry","setCurrentCountry","onDropdownChange","selectedISO","selectedCode","selectedCountry","f","handleInputKeydownCapture","handleInputChange","toggleVisibility","handleDropdownControlKeydown","handleDropdownControlClick","optionKey","InputRange","currentVal","setCurrentVal","prevPropValue","innerRefs1","innerRefs2","values","handleRangeChange","firstValue","secondValue","currentBgVal","setCurrentBgVal","primaryColor","secondaryColor","percent","percent0","percent1","RangeStyle","RailClassName","InputSearch","getEnabledItemsCount","count","getEnabledOptions","getSelectedData","newSelectedData","InputSelect","placeholder","pluralSelectedPlaceholder","pillLabel","allSelectedLabel","onSearchInputChange","controlWrapperRef","controlRef","selectedData","setSelectedData","resetSelection","mainWrapperClasses","controlClasses","selection","useLayoutEffect","enabledItemsCount","stringOutputMemo","allItemsSelected","onClickLabel","onDropDownChange","toggleDropdown","onDropDownClickHandler","onDropdownControlKeyDownHandler","enabledOptions","nextOption","InputText","InputTextArea","showCharCounter","charCounterClasses","FULL_TIME_TEXT_REGEX_WITH_PERIOD","FULL_TIME_TEXT_REGEX_WITHOUT_PERIOD","DEFAULT_PLACEHOLDER","timePeriod","startTime","formatHour","hour","minHour","maxHour","numericValue","formatMinute","minute","minMinute","maxMinute","formatFullTime","hasPeriod","selectedHour","selectedMinute","selectedPeriod","parseFullTime","fullTimeText","hourFormat","period","match","isTimeTextValid","timeText","TimeInputContext","TimeInputContextProvider","initialValues","setSelectedHour","setSelectedMinute","setSelectedPeriod","selectedTime","setSelectedTime","providerValue","useTimeInputContext","TimeText","setInputTextValue","hourInputPlaceholder","minuteInputPlaceholder","periodInputPlaceholder","timeCtx","parsePlaceholder","input","hourPlaceholder","minutePlaceholder","periodPlaceholder","fullInputPlaceholder","validateInputTimeText","acceptPlaceholder","emptyValueOnError","isValid","isHourWithPlaceholder","isMinuteWithPlaceholder","isPeriodWithPlaceholder","handleBlur","clickPos","handleFocus","isMouseFocus","handleSlot","periodValues","start","end","minValue","maxValue","updateSlot","slotStart","slotEnd","updateSlotValue","newValue","handleArrowUpDown","isArrowUp","handleNumberInput","parsedNewValue","isValueTwoDigit","isSecondDigitGreaterThanMaxValue","handlePeriodInput","isModifierKeyPressed","handleTab","selectionStart","nextElement","handleShiftTab","prevElement","handleTabNavigation","handleTimeSelection","selectionEnd","handleHourSlot","handleMinuteSlot","handlePeriodSlot","selectedText","Toggle","checkedFromProps","defaultChecked","hasDefaultChecked","internalChecked","setInternalChecked","toggleButtonClassName","fakeEvent","hourInputRef","handleHourUp","prevValue","handleHourDown","handleMinuteUp","handleMinuteDown","handleHourInputChange","formattedHour","handleHourFocus","handleHourKeyDown","handleMinuteInputChange","formattedMinute","handleMinuteFocus","handleMinuteKeyDown","handleSelectedPeriod","timeWithPeriodContainerClassName","inputNumberClasses","onCancelPressed","selectedTimeText","TimePickerDropdown","hasTimepickerMessage","textCurrentValue","isReady","setIsReady","additionalTimepickerMessageProps","InputTime","format","clockIconAriaLabel","timepickerMessageLabel","timepickerMessageAriaLabel","handleTimePickerCancel","clickedOnInputElement","onInputTimeChange","firstRender","dropdownTimePickerLabels","timeCtxInitialValues","LoaderDialog","loaderClass","LoaderDialogContext","useLoaderDialogContext","LoaderDialogProvider","loaderRef","dialogProps","setDialogProps","ariaLiveMessage","setAriaLiveMessage","showLoader","currentDialogProps","getText","hideLoader","ModalContext","useModalContext","ModalDialog","configurations","ModalProvider","dialogConfig","setDialogConfig","config","convertContentToNode","ContentComponent","handleIcons","PanelSwitcherDesktop","buttonListRef","panelRef","activeButton","activateButton","buttonsHeaderData","buttonsBodyData","isPressed","setIsPressed","panelSwitcherWrapperClassName","panelSwitcherTabsListClassNames","selectedButton","focusTab","buttons","newState","buttonsHeader","isActive","ModalContent","PanelSwitcherMobileInternal","modalCloseButtonLabel","buttonsRef","focusedButton","setFocusedButton","panelSwitcherMobileClassName","panelButtonListClassNames","openModalHandler","modalConfig","currentFocus","isFocusOnPanelButtons","prevBtn","currentButton","totalButtons","newPressedState","PanelSwitcherMobile","PanelSwitcherContainer","setActiveButton","setButtonsHeaderData","setButtonsBodyData","isMobileOrTablet","header","body","element","headerChild","bodyChild","TabBody","TabHeader","Tab","TabsDesktop","vertically","tabListRef","tabPanelRef","activeTab","activateTab","currentType","tabPanelClassName","tabsHeaderData","tabsBodyData","tabsClassName","tabListClassNames","desktopActiveTab","tabListItemClassNames","TabsMobile","isTabletOrMobile","Tabs","automaticActivation","onTabActivation","desktopTabListRef","mobileTabListRef","setActiveTab","focusedTab","setFocusedTab","setTabsHeaderData","setTabsBodyData","navigationArrowRight","currentTabList","newFocusedTab","navigationArrowLeft","navigationArrowDown","navigationArrowUp","navigationHome","navigationEnd","handleTabListItemKeyDown","eventTargetTag","eventTargetParentRole","tabs","PanelSwitcher","panel","contentNode","PopupContext","usePopupContext","PopupDialog","popupContainerRef","popupHeaderRef","containerMaxHeight","setContainerMaxHeight","setMaxHeight","dialogClassNames","titleClassNames","containerElem","headerElem","margins","containerHeight","headerHeight","PopupProvider","currentDialogConfigs","ProgressBar","hidePercentageValue","isFirst","isLast","isMiddle","progressPercentage","labelsClasses","percentageClasses","ProgressBarGroup","hidePercentageValues","sequential","progressBars","activeCurrent","foundCurrent","currentCount","firstNotCompletedIndex","sumMaxValues","renderProgressBars","isCurrent","isSingle","getProgressValue","progressValue","Fragment","RadioButton","QuizOption","isChildrenSelected","QuizOptionsClassName","QuizOptions","QuizItemSummary","QuizItemSummaryClassName","RadioButtonGroup","mappedRadioButtons","scribblesList","allScribbles","isBundledScribbles","scribblesCache","loadScribbles","cachedScribbles","lazyScribble","Scribbles","onScribblesLoad","onScribblesError","LazyScribble","SearchPage","pageNumber","SearchPaginationNumberOverlay","SearchPagination","totalPages","hidePreviousPageButton","hideNextPageButton","boundaryCount","siblingCount","nextPageAriaLabel","previousPageAriaLabel","activePage","setActivePage","navArrowsClasses","prevPage","pages","showAllPagesContent","page","page_index","paginationContent","leftSiblingIndex","rightSiblingIndex","leftRange","middleRange","rightRange","visiblePages","shouldShowLeftDots","shouldShowRightDots","openOnCurrentItem","sidebarRef","flat","agoraSidebar","currentTreeItem","initialPrevItem","_g","_h","elements","_k","_j","_l","_n","_m","SidebarItemNavigationMobile","sidebarMenuLabel","backButtonLabel","refDialog","backButtonHandler","openButtonHandler","treeItems","hasAriaCurrent","itemTree","sidebarNavigationMobileClassName","sidebarItemNavigationMobileMenuClassName","sidebarItemNavigationMobileBackButtonClassName","sidebarItemNavigationMobileDialogClassName","Sidebar","newSidebarItem","listSidebarItem","generateId","isMobileAndTablet","trailingFilter","setTrailingFilter","leadingFilter","setLeadingFilter","sidebarClassName","onBodyFocus","navigationHandler","loadHandler","filterHandler","checkLeading","checkTrailing","itemProps","foundedLeadingIcon","foundedTrailingIcon","t","j","setIconsExpandCollapsed","setInitialSidebarItem","sidebarItemChildren","toggleSidebarItem","sidebarItem","sidebarItemExpanded","toggleSidebarItemChildren","SidebarItemFilter","pillValue","pillAriaLabel","buttonItemRef","contentItemRef","setAriaExpanded","buttonItemClassName","contentItemClassName","toggleItemContent","toggleItemExpand","onMouseClickHandler","icons","newItem","getParentTreeItem","nodeContent","node","toggleParentItemExpand","parentNode","navigationSidebarItemHandler","sidebar","toggleExpandAllSiblingItems","contentParent","adsItem","navigationEnterSpace","getAllVisibleItems","allVisibleItems","navigationUp","prevItem","visibleItem","navigateAndFocusUntilCurrent","nextItem","navigationDown","navigationRight","navigationLeft","navigationTab","setFocusByFirstCharacter","char","ti","defaultPrintableCharacters","SidebarItemNavigation","newSidebarItemChildren","listInnerSidebarItem","listSidebarItemChildren","showIconHover","setShowIconHover","anchorItemRef","handleAnchorClick","handleOnKeyUp","isPrintableCharacter","str","handleRightArrow","handleLeftArrow","handleOnKeyDown","handleClickIcon","handleMouseEnterIcon","handleMouseLeaveIcon","isLinkedSidebarItem","getFinalFlat","childData","final","getFlatNotDirectAnchor","ariaOwns","getFlatSidebarItem","anchorIconWrapper","cloneAnchorElement","dataChildren","getFinal","insideLoopElements","getNotDirectAnchor","getSidebarItem","getSidebarItemChildren","agoraSidebarButtonItemClassName","SidebarItem","sidebarItemClassName","SkipNavigationMultiple","containerSkipNavRef","multipleLinks","skipOptionsRef","ariaExpand","setAriaExpand","allSkipMenuItems","currentIndexFocus","mi","handleSkipOptionControlKeyDownCapture","handleButtonSkipClick","handleButtonFocus","handleButtonBlur","handleButtonKeyUp","handleButtonControlKeyDownCapture","lvl","initLink","isLink","groupAnchors","recursiveLinks","level","getKeys","keyIndex","newLink","init","initLength","menuSkipNavigation","singleLink","buildAnchor","newSingleLink","SkipNavigationSingle","SkipNavigation","navigationClassName","StepList","stepListClass","getInteractiveIconSet","getNonInteractiveIcon","Step","Stepper","Switch","reverse","handleCustomSwitchKeydown","handleCustomSwitchClick","switchWrapperClasses","markerClasses","switchLabelClasses","TableBody","TableCaption","TableCell","headerKey","headerLabel","TableFooter","TableHeader","DESCENDING_ICON_NAMES","ASCENDING_ICON_NAMES","TableHeaderCell","sortType","sortOrder","onSortChange","circularSortOrder","currentSortOrderIndex","order","sortIconName","ariaSortValue","applySort","nextSortOrder","TableRow","TablePagination","itemsPerPageLabel","itemsPerPage","totalItems","availablePageSizes","currentPage","buttonDropdownAriaLabel","dropdownListAriaLabel","prevButtonAriaLabel","nextButtonAriaLabel","dropdownWrapperRef","onDropdownButtonClickHandler","onDropdownButtonKeydownHandler","onShowDropdownHandler","onHideDropDownHandler","onDropdownChangeHandler","handlePrevPage","handleNextPage","iconDefinition","ps","Table","mobileLayout","tabletLayout","desktopLayout","paginationProps","sortDescription","tableClassNames","Tag","tagClassName","currentIcon","currentIconHover","TimelineEvent","timelineEventClassNames","timelineLabelClassNames","TimelineEventVertical","altIcon","TimelineVertical","hideLabels","events","setEvents","groupedEvents","grouped","groupedEventsArray","group","groupIndex","keyGroup","groupClassNames","eventIndex","keyEvent","TimelineHorizontal","nextLabel","previousLabel","setIsMobile","maxVisibleEvents","activeEvent","setActiveEvent","setStartIndex","setEndIndex","eventChildren","handleClickEvent","getTimelineStepClasses","currentActiveEvent","handleNextButtonClick","newEvent","handlePreviousButtonClick","selectedContentEvent","visibleEvents","newStartIndex","newEndIndex","renderTimelineActions","isPreviousButtonDisabled","isLastButtonDisabled","timelineClasses","isFirstVisibleEvent","isLastVisibleEvent","hasMoreEventsLeft","hasMoreEventsRight","eventClassNames","ToastContext","useToastContext","Toast","onDismiss","removeToast","getIconNameForType","selectedType","handleCloseClick","toastContainerClassnames","useToast","toasts","setToasts","toast","prevToasts","showToast","duration","ToastProvider","memoToast","visibleToastsCount","FileList","files","removeFileButtonLabel","onFileRemove","replaceFileButtonLabel","onFileReplace","messages","handleReplaceFile","fileToReplace","handleRemoveFile","fileToRemoved","getParsedSizeString","bytes","decimals","decimalCases","sizes","getAvailableFileActions","file","fileMessage","fileListClassNames","fileIndex","actions","actionBtnProps","actionIndex","actionKey","isFileExtensionAllowed","fileName","extensionWhitelist","lastPoint","fileExtension","isNotDuplicated","filename","getFileInput","extensionWhiteList","onChangeHandler","validateFiles","lastFiles","newFiles","maxCount","maxSize","replaceValidation","hasErrors","duplicatedFiles","sizeExceededFiles","extensionForbiddenFiles","maxCountExceeded","useFileUpload","maxFileCount","maxFileSize","defaultFiles","setFiles","lastErrors","getParsedMaxCount","errors","resetFiles","initialFiles","validationErrors","addFiles","filesToAdd","prevFiles","removeFile","replaceFile","replaceFileName","targetIndex","handleInputFileChangeOnAdd","selectedFiles","handleInputFileChangeOnReplace","ButtonUploader","inputLabel","selectedFilesLabel","extensionsInstructions","accept","maxCountExceededErrorLabel","maxSizeExceededErrorLabel","forbiddenExtensionErrorLabel","duplicatedFileErrorLabel","customId","inputId","labelText","setLabelText","errorMessages","setErrorMessages","fileMessages","setFileMessages","updateErrors","parsedErrors","newFileMessages","handleOnChangeFiles","onAddFiles","onRemoveFile","onReplaceFile","onPasteFiles","onReset","canUpload","handleFileReplace","newFileToReplace","handleFileRemove","fileToRemove","handlePaste","clipboardData","clipboardFiles","buttonContainerClassNames","form","handleSubmit","errorKey","DragAndDropUploader","dragAndDropLabel","separatorLabel","dragAreaRef","isDraggingOver","setIsDraggingOver","handleDragOver","handleDragLeave","handleDrop","droppedFiles","dragAndDropClassNames","getChildrenOfType","childType","childrenArray","getAllChildrenOfType","FooterContext","Footer","logoSectionContainer","LogoSectionContainer","financingSectionContainer","FinancingSectionContainer","linksSectionContainer","LinksSectionContainer","isLightVariant","logoSectionMainLogo","LogoSectionMainLogo","footerGenericLogos","FooterGenericLogo","footerDisclaimer","FooterDisclaimer","logoSectionAccessibilityLogo","LogoSectionAccessibilityLogo","logoSectionFreestyle","LogoSectionFreestyle","hasMain","hasFooterGenericLogos","containerMainClass","containerLogosClass","disclaimer","genericLogos","genericLogosClassName","socialLinksSection","LinksSectionSocialLinks","relatedLinksSection","LinksSectionRelatedLinks","hasBothSections","dividerClassNames","socialLinksLabel","LinksSectionSocialLinksLabel","FooterLink","LinksSectionRelatedLinksCopyright","copyrightClassName","labelClassName"],"mappings":";;AAGA,MAAMA,KAAsB;AAAA,EAC1B,SAAS,CAAA;AAAA,EACT,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,aAAa;AAAA,QACX,SAAS;AAAA,QACT,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,MAAA;AAAA,MAEL,SAAS;AAAA,QACP,OAAO;AAAA,MAAA;AAAA,MAET,kBAAkB;AAAA,QAChB,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG;AAAA,QACH,IAAI;AAAA,MAAA;AAAA,MAEN,qBAAqB;AAAA,QACnB,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,MAEb,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,MAEN,UAAU;AAAA,QACR,SAAS;AAAA,MAAA;AAAA,MAEX,UAAU;AAAA,QACR,SAAS;AAAA,MAAA;AAAA,MAEX,WAAW;AAAA,QACT,SAAS;AAAA,MAAA;AAAA,MAEX,WAAW;AAAA,QACT,SAAS;AAAA,MAAA;AAAA,MAEX,QAAQ;AAAA,QACN,UAAU;AAAA,QACV,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,YAAY;AAAA,MACV,MAAM,CAAC,aAAa,YAAY;AAAA,IAAA;AAAA,IAElC,UAAU;AAAA,MACR,MAAQ;AAAA;AAAA,MAER,aAAa,CAAC,YAAY,EAAE,YAAY,UAAU,eAAe,KAAK,YAAY,OAAO;AAAA,MACzF,YAAY,CAAC,YAAY,EAAE,YAAY,UAAU,eAAe,KAAK,YAAY,OAAO;AAAA,MACxF,cAAc,CAAC,YAAY,EAAE,YAAY,UAAU,eAAe,KAAK,YAAY,OAAO;AAAA,MAC1F,UAAU,CAAC,YAAY,EAAE,YAAY,UAAU,eAAe,KAAK,YAAY,OAAO;AAAA;AAAA,MAEtF,WAAW,CAAC,QAAQ,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACpF,aAAa,CAAC,QAAQ,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACtF,YAAY,CAAC,QAAQ,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACrF,cAAc,CAAC,QAAQ,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACvF,UAAU,CAAC,QAAQ,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA;AAAA,MAEnF,WAAW,CAAC,WAAW,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA,MACpF,aAAa,CAAC,WAAW,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA,MACtF,YAAY,CAAC,WAAW,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA,MACrF,cAAc,CAAC,WAAW,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA,MACvF,UAAU,CAAC,WAAW,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA;AAAA,MAEnF,YAAY,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACvF,cAAc,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACzF,aAAa,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACxF,eAAe,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MAC1F,WAAW,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA;AAAA,MAEtF,aAAa,CAAC,QAAQ,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA,MACnF,eAAe,CAAC,QAAQ,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA,MACrF,cAAc,CAAC,QAAQ,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA,MACpF,gBAAgB,CAAC,QAAQ,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA,MACtF,YAAY,CAAC,QAAQ,EAAE,YAAY,QAAQ,eAAe,KAAK,YAAY,OAAO;AAAA;AAAA,MAElF,aAAa,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACxF,eAAe,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MAC1F,cAAc,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MACzF,gBAAgB,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,OAAO;AAAA,MAC3F,YAAY,CAAC,UAAU,EAAE,YAAY,WAAW,eAAe,KAAK,YAAY,MAAA,CAAO;AAAA,IAAA;AAAA,IAEzF,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,IAAA;AAAA,IAER,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,QACJ,OAAS;AAAA,QACT,eAAe;AAAA,QACf,eAAe;AAAA,QACf,iBAAiB;AAAA,MAAA;AAAA,MAEnB,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MAAA;AAAA,MAEP,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MAAA;AAAA,MAEP,WAAW;AAAA,QACT,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MAAA;AAAA,MAEP,aAAa;AAAA,QACX,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MAAA;AAAA,MAEP,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MAAA;AAAA,MAEP,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MAAA;AAAA,MAEP,QAAQ;AAAA,QACN,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MAAA;AAAA,IACP;AAAA,IAEF,SAAS;AAAA,MACP,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAQ;AAAA,MACR,SAAW;AAAA,IAAA;AAAA,IAEb,WAAW;AAAA,MACT,MAAQ;AAAA,MACR,aAAa;AAAA,MACb,WAAW;AAAA,MACX,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,OAAS;AAAA,IAAA;AAAA,IAEX,oBAAoB;AAAA,MAClB,SAAS;AAAA,IAAA;AAAA,IAEX,WAAW;AAAA,MACT,SAAS;AAAA,QACP,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,EACF;AAAA,EAEF,SAAS;AAAA;AAAA,IAEP,CAAC,EAAE,eAAAC,EAAA,MAA+B;AAChC,MAAAA,EAAc;AAAA,QACZ,cAAc;AAAA,UACZ,UAAU;AAAA,QAAA;AAAA,MACZ,CACD;AAAA,IACH;AAAA;AAAA;AAAA,IAIA,SAAU,EAAE,SAAAC,GAAS,OAAAC,KAAoB;AAKvC,eAASC,EAAiBC,GAAuBC,IAAa,IAAiB;AAC7E,eAAO,OAAO,KAAKD,CAAQ,EAAE,OAAO,CAACE,GAAMC,MAAa;AACtD,gBAAMC,IAAQJ,EAASG,CAAQ;AAE/B,cAAI,OAAOC,KAAU;AACnB,mBAAO;AAAA,cACL,GAAGF;AAAA,cACH,CAAC,UAAUD,CAAU,IAAIE,CAAQ,EAAE,GAAGC;AAAA,YAAA;AAI1C,gBAAMC,IAAoBN,EAAiBK,GAAO,IAAID,CAAQ,EAAE;AAEhE,iBAAO,EAAE,GAAGD,GAAM,GAAGG,EAAA;AAAA,QACvB,GAAG,CAAA,CAAE;AAAA,MACP;AAEA,MAAAR,EAAQ;AAAA,QACN,4BAA4BE,EAAiBD,EAAM,QAAQ,CAAC;AAAA,MAAA,CAC7D;AAAA,IACH;AAAA,EAAA;AAAA,EAEF,UAAU;AAAA,IACR;AAAA;AAAA,MAEE,SAAS;AAAA,MACT,UAAU,CAAC,SAAS,SAAS,MAAM,MAAM,IAAI;AAAA,IAAA;AAAA,EAC/C;AAEJ;;;;;;;;;;;ACtTA,GAAC,WAAY;AAGZ,QAAIQ,IAAS,CAAA,EAAG;AAEhB,aAASC,IAAc;AAGtB,eAFIC,IAAU,IAELC,IAAI,GAAGA,IAAI,UAAU,QAAQA,KAAK;AAC1C,YAAIC,IAAM,UAAUD,CAAC;AACrB,QAAIC,MACHF,IAAUG,EAAYH,GAASI,EAAWF,CAAG,CAAC;AAAA,MAElD;AAEE,aAAOF;AAAA,IACT;AAEC,aAASI,EAAYF,GAAK;AACzB,UAAI,OAAOA,KAAQ,YAAY,OAAOA,KAAQ;AAC7C,eAAOA;AAGR,UAAI,OAAOA,KAAQ;AAClB,eAAO;AAGR,UAAI,MAAM,QAAQA,CAAG;AACpB,eAAOH,EAAW,MAAM,MAAMG,CAAG;AAGlC,UAAIA,EAAI,aAAa,OAAO,UAAU,YAAY,CAACA,EAAI,SAAS,SAAQ,EAAG,SAAS,eAAe;AAClG,eAAOA,EAAI,SAAQ;AAGpB,UAAIF,IAAU;AAEd,eAASK,KAAOH;AACf,QAAIJ,EAAO,KAAKI,GAAKG,CAAG,KAAKH,EAAIG,CAAG,MACnCL,IAAUG,EAAYH,GAASK,CAAG;AAIpC,aAAOL;AAAA,IACT;AAEC,aAASG,EAAaP,GAAOU,GAAU;AACtC,aAAKA,IAIDV,IACIA,IAAQ,MAAMU,IAGfV,IAAQU,IAPPV;AAAA,IAQV;AAEC,IAAqCW,EAAO,WAC3CR,EAAW,UAAUA,GACrBQ,EAAA,UAAiBR,KAOjB,OAAO,aAAaA;AAAA,EAEtB;;;kCCzEaS,KAA6E;AAAA;AAAA,EAExF,wBAAwBC,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,kBAAkBA,EAAkC,MAAM,OAAO,yBAAiB,CAAC;AAAA,EACnF,mBAAmBA,EAAkC,MAAM,OAAO,0BAAmB,CAAC;AAAA;AAAA,EAEtF,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,2BAA2BA,EAAkC,MAAM,OAAO,kCAA0B,CAAC;AAAA,EACrG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA4B,CAAC;AAAA,EACxG,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA;AAAA,EAE9F,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,8BAA8BA,EAAkC,MAAM,OAAO,qCAA6B,CAAC;AAAA,EAC3G,+BAA+BA,EAAkC,MAAM,OAAO,sCAA+B,CAAC;AAAA,EAC9G,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA;AAAA,EAEtG,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA;AAAA,EAExF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA;AAAA,EAEpG,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,2BAA2BA,EAAkC,MAAM,OAAO,kCAA0B,CAAC;AAAA,EACrG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA4B,CAAC;AAAA,EACxG,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,gCAAgCA,EAAkC,MAAM,OAAO,uCAA+B,CAAC;AAAA,EAC/G,iCAAiCA,EAAkC,MAAM,OAAO,wCAAiC,CAAC;AAAA,EAClH,8BAA8BA,EAAkC,MAAM,OAAO,qCAA6B,CAAC;AAAA,EAC3G,+BAA+BA,EAAkC,MAAM,OAAO,sCAA+B,CAAC;AAAA,EAC9G,8BAA8BA,EAAkC,MAAM,OAAO,qCAA6B,CAAC;AAAA,EAC3G,+BAA+BA,EAAkC,MAAM,OAAO,sCAA+B,CAAC;AAAA,EAC9G,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA;AAAA,EAExF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA;AAAA,EAE5F,gCAAgCA,EAAkC,MAAM,OAAO,uCAA+B,CAAC;AAAA,EAC/G,iCAAiCA,EAAkC,MAAM,OAAO,wCAAiC,CAAC;AAAA,EAClH,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA;AAAA,EAExF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,kBAAkBA,EAAkC,MAAM,OAAO,yBAAiB,CAAC;AAAA,EACnF,mBAAmBA,EAAkC,MAAM,OAAO,0BAAmB,CAAC;AAAA,EACtF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA;AAAA,EAExF,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA;AAAA,EAEpG,gCAAgCA,EAAkC,MAAM,OAAO,uCAA+B,CAAC;AAAA,EAC/G,iCAAiCA,EAAkC,MAAM,OAAO,wCAAiC,CAAC;AAAA,EAClH,8BAA8BA,EAAkC,MAAM,OAAO,qCAA6B,CAAC;AAAA,EAC3G,+BAA+BA,EAAkC,MAAM,OAAO,sCAA+B,CAAC;AAAA,EAC9G,iCAAiCA,EAAkC,MAAM,OAAO,wCAAgC,CAAC;AAAA,EACjH,kCAAkCA,EAAkC,MAAM,OAAO,yCAAkC,CAAC;AAAA,EACpH,gCAAgCA,EAAkC,MAAM,OAAO,uCAA+B,CAAC;AAAA,EAC/G,iCAAiCA,EAAkC,MAAM,OAAO,wCAAiC,CAAC;AAAA,EAClH,gCAAgCA,EAAkC,MAAM,OAAO,uCAA+B,CAAC;AAAA,EAC/G,iCAAiCA,EAAkC,MAAM,OAAO,wCAAiC,CAAC;AAAA,EAClH,8BAA8BA,EAAkC,MAAM,OAAO,qCAA6B,CAAC;AAAA,EAC3G,+BAA+BA,EAAkC,MAAM,OAAO,sCAA+B,CAAC;AAAA,EAC9G,iCAAiCA,EAAkC,MAAM,OAAO,wCAAgC,CAAC;AAAA,EACjH,kCAAkCA,EAAkC,MAAM,OAAO,yCAAkC,CAAC;AAAA,EACpH,gCAAgCA,EAAkC,MAAM,OAAO,uCAA+B,CAAC;AAAA,EAC/G,iCAAiCA,EAAkC,MAAM,OAAO,wCAAiC,CAAC;AAAA,EAClH,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA0B,CAAC;AAAA,EACrG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA4B,CAAC;AAAA,EACxG,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,2BAA2BA,EAAkC,MAAM,OAAO,kCAA0B,CAAC;AAAA,EACrG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA4B,CAAC;AAAA,EACxG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,0BAA0BA,EAAkC,MAAM,OAAO,iCAAyB,CAAC;AAAA,EACnG,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,6BAA6BA,EAAkC,MAAM,OAAO,oCAA4B,CAAC;AAAA,EACzG,8BAA8BA,EAAkC,MAAM,OAAO,qCAA8B,CAAC;AAAA;AAAA,EAE5G,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,kBAAkBA,EAAkC,MAAM,OAAO,yBAAiB,CAAC;AAAA,EACnF,mBAAmBA,EAAkC,MAAM,OAAO,0BAAmB,CAAC;AAAA,EACtF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA;AAAA,EAE9F,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,8BAA8BA,EAAkC,MAAM,OAAO,qCAA6B,CAAC;AAAA,EAC3G,+BAA+BA,EAAkC,MAAM,OAAO,sCAA+B,CAAC;AAAA;AAAA,EAE9G,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAuB,CAAC;AAAA,EAC9F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA;AAAA,EAEhG,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,gBAAgBA,EAAkC,MAAM,OAAO,uBAAe,CAAC;AAAA,EAC/E,iBAAiBA,EAAkC,MAAM,OAAO,wBAAiB,CAAC;AAAA,EAClF,2BAA2BA,EAAkC,MAAM,OAAO,kCAA0B,CAAC;AAAA,EACrG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA4B,CAAC;AAAA,EACxG,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,2BAA2BA,EAAkC,MAAM,OAAO,kCAA0B,CAAC;AAAA,EACrG,4BAA4BA,EAAkC,MAAM,OAAO,mCAA4B,CAAC;AAAA,EACxG,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA4B,CAAC;AAAA,EACzG,8BAA8BA,EAAkC,MAAM,OAAO,qCAA8B,CAAC;AAAA,EAC5G,qBAAqBA,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAsB,CAAC;AAAA,EAC5F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAuB,CAAC;AAAA,EAC/F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA;AAAA,EAElG,kBAAkBA,EAAkC,MAAM,OAAO,yBAAiB,CAAC;AAAA,EACnF,mBAAmBA,EAAkC,MAAM,OAAO,0BAAmB,CAAC;AAAA,EACtF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA;AAAA,EAE1F,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA,EAChG,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA;AAAA,EAE1F,yBAAyBA,EAAkC,MAAM,OAAO,gCAAwB,CAAC;AAAA,EACjG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA,EACrF,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA;AAAA,EAExF,4BAA4BA,EAAkC,MAAM,OAAO,mCAA2B,CAAC;AAAA,EACvG,6BAA6BA,EAAkC,MAAM,OAAO,oCAA6B,CAAC;AAAA,EAC1G,mBAAmBA,EAAkC,MAAM,OAAO,0BAAmB,CAAC;AAAA;AAAA,EAEtF,kBAAkBA,EAAkC,MAAM,OAAO,yBAAiB,CAAC;AAAA,EACnF,mBAAmBA,EAAkC,MAAM,OAAO,0BAAmB,CAAC;AAAA;AAAA,EAEtF,WAAWA,EAAkC,MAAM,OAAO,sBAAe,CAAC;AAAA,EAC1E,gBAAgBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AACtF,GAEaC,KAAW,OAAO,KAAKF,EAAQ,EAAE,OAAO,CAACG,MAAMA,MAAM,aAAaA,MAAM,cAAc,GAItFC,KAAgB,CAACC,MACrB,CAAC,CAACH,GAAS,KAAK,CAACT,MAAMA,MAAMY,CAAI,GC3SpCC,KAAiF,CAAA,GAEjFC,KAAW,CAACF,MAAqE;AACrF,QAAMG,IAAaF,GAAWD,CAAI;AAElC,MAAIG;AACF,WAAOA;AAGT,QAAMC,IAAgBT,GAASK,CAAI;AAEnC,SAAAC,GAAWD,CAAI,IAAII,GAEZA;AACT,GA4BMC,KAA8B,CAAC,EAAE,YAAAC,IAAa,KAAK,MAAAN,IAAO,WAAW,YAAAO,GAAY,aAAAC,GAAa,GAAGC,QAAY;;AACjH,QAAMC,IAAiB,GAACC,IAAAF,EAAM,cAAN,QAAAE,EAAiB,MAAM,aAAYX,MAAS,gBAE9Db,IAAUD;AAAA,IACd;AAAA,IACA;AAAA,MACE,CAAC,QAAQoB,KAAA,gBAAAA,EAAY,aAAa,EAAE,GAAGA;AAAA,MACvC,mCAAmCI;AAAA,IAAA;AAAA,IAErCD,EAAM;AAAA,EAAA,GAGFG,IAAS,MAAM;AACnB,IAAAL,KAAA,QAAAA;AAAA,EACF,GAEMM,IAAU,MAAM;AACpB,IAAAL,KAAA,QAAAA;AAAA,EACF;AAKA,MAH0BR,MAAS,aAAaA,MAAS,kBAAkB,CAACD,GAAcC,CAAI;AAK5F,WAAO,gBAAAc,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,KAAKT,GAAM,KAAKS,EAAM,KAAK,WAAWtB,GAAS,QAAAyB,GAAgB,SAAAC,GAAkB;AAG1G,QAAME,IAAgBb,GAASF,CAAI,GAE7BgB,IAAY;AAAA,IAChB,GAAGP;AAAA,IACH,WAAWtB;AAAA,IACX,OAAOsB,EAAM,SAASA,EAAM;AAAA,EAAA;AAG9B,SACEM,KACE,gBAAAD,EAAA,cAACG,IAAA,sCACEF,GAAA,EAAe,GAAGC,GAAW,CAChC;AAGN,GAEaE,KAAOC,GAAKd,IAAc,CAACe,GAAWC,MAC1CD,EAAU,SAASC,EAAU,QAAQD,EAAU,cAAcC,EAAU,aAAaD,EAAU,eAAeC,EAAU,UAC/H,GC1FYC,IAA8B,CAAC,EAAE,OAAAC,GAAO,GAAGd,QAC/C,gBAAAK,EAAA,cAACI,IAAA,EAAK,cAAYK,GAAQ,GAAGd,GAAO,GAQvCe,KAA4B,CAAC,EAAE,KAAAC,IAAM,MAAM,WAAAC,GAAW,OAAAH,IAAQ,WAAW,UAAAI,GAAU,GAAGlB,QAExF,gBAAAK,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,KAAAgB,GAAU,WAAAC,EAAA,GACvBE,EAAS,QAAQD,CAAQ,EAAE,IAAI,CAACE,MAAU;AACzC,MAAI,CAACC,EAA8BD,CAAK;AACtC,WAAO;AAGT,QAAM,EAAE,OAAOE,GAAY,GAAGC,EAAA,IAAeH,EAAM,OAE7CI,IAAgB,GAAGJ,EAAM,MAAM,SAAS,IAAIE,MAAeR,IAAQ,WAAW,SAAS;AAE7F,SAAO,gBAAAT,EAAA,cAACI,MAAM,GAAGc,GAAY,eAAW,IAAC,KAAKD,GAAY,WAAWE,EAAA,CAAe;AACtF,CAAC,CACH;AC9BG,SAASC,GAAwBC,GAAWC,GAAsC;AACvF,QAAMC,IAAQ,IAAI,MAAMD,GAAW,EAAE,SAAS,IAAM;AAEpD,SAAO,eAAeC,GAAO,UAAU,EAAE,UAAU,IAAO,OAAOF,GAAQ;AAEzE,MAAIG,IAAqB,IACrBC,IAAuB;AAE3B,QAAMC,IAAiB,MAAM;AAC3B,IAAAF,IAAqB,IACrBD,EAAM,eAAA;AAAA,EACR,GAEMI,IAAkB,MAAM;AAC5B,IAAAF,IAAuB,IACvBF,EAAM,gBAAA;AAAA,EACR;AAEA,SAAO;AAAA,IACL,aAAaA;AAAA,IACb,eAAeA,EAAM;AAAA,IACrB,QAAQA,EAAM;AAAA,IACd,SAASA,EAAM;AAAA,IACf,YAAYA,EAAM;AAAA,IAClB,kBAAkBA,EAAM;AAAA,IACxB,YAAYA,EAAM;AAAA,IAClB,WAAWA,EAAM;AAAA,IACjB,gBAAAG;AAAA,IACA,oBAAoB,MAAMF;AAAA,IAC1B,iBAAAG;AAAA,IACA,sBAAsB,MAAMF;AAAA,IAC5B,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,WAAWF,EAAM;AAAA,IACjB,MAAMA,EAAM;AAAA,EAAA;AAEhB;AC/BA,MAAMK,KAAW,CAACC,GAAoBC,IAAU,QAAQ;AACtD,MAAIC;AAEJ,SAAO,CAACC,MAAiB;AACvB,IAAID,MACF,aAAaA,CAAK,GAClBA,IAAQ,SAGVA,IAAQ,WAAW,MAAM;AACvB,MAAAF,EAAKG,CAAI;AAAA,IACX,GAAGF,CAAO;AAAA,EACZ;AACF,GAIaG,KAAkB,CAACJ,GAAoBC,IAAU,QAAQ;AACpE,QAAMC,IAAQG,EAAc,IAAI,GAC1B,CAACF,GAAMG,CAAO,IAAIC,EAAiB,EAAE;AAE3C,SAAAC,EAAU,OACJN,EAAM,WACR,aAAaA,EAAM,OAAO,GAG5BA,EAAM,UAAU,WAAW,MAAM;AAC/B,IAAAF,EAAKG,CAAI;AAAA,EACX,GAAGF,CAAO,GAEH,MAAM;AACX,IAAIC,EAAM,WACR,aAAaA,EAAM,OAAO;AAAA,EAE9B,IACC,CAACF,GAAMC,GAASE,CAAI,CAAC,GAEjB;AAAA,IACL,SAAAG;AAAA,EAAA;AAEJ,GC9CaG,KAAgB,CAACC,MAAY;AACxC,MAAIC,IAAYD,EAAE,QAAA,EAAU,SAAA;AAE5B,EAAIC,EAAU,SAAS,MACrBA,IAAY,IAAIA,CAAS;AAG3B,MAAIC,KAAeF,EAAE,SAAA,IAAa,GAAG,SAAA;AACrC,EAAIE,EAAY,SAAS,MACvBA,IAAc,IAAIA,CAAW;AAG/B,QAAMC,IAAaH,EAAE,YAAA;AAErB,SAAO,GAAGC,CAAS,IAAIC,CAAW,IAAIC,CAAU;AAClD,GCfMC,KAAgB,CAACC,MACdA,EACJ,oBACA,UAAU,KAAK,EACf,QAAQ,oBAAoB,EAAE,GCD7BC,IAAkB,CAAC5E,MAEnB,OAAOA,IAAU,MACZ,KAIL,OAAOA,KAAU,YACZA,IAGFA,MAAU;ACZZ,SAAS6E,GACdnC,GACAoC,GACAC,GACAC,GACqB;AACrB,QAAMC,IAAchB,EAAU,IAAI;AAElC,SAAAiB;AAAA,IACExC;AAAA,IACA,MAAM;AAGJ,UAFAuC,EAAY,UAAUH,EAAS,SAE3BG,EAAY,SAAS;AACvB,cAAM,EAAE,OAAOE,GAAG,GAAGC,MAAaL;AAClC,eAAO,OAAOE,EAAY,SAASG,CAAQ;AAAA,MAC7C;AAEA,aAAOH,EAAY;AAAA,IACrB;AAAA,IACAD;AAAA,EAAA,GAGKC;AACT;ACzBA,MAAMI,KAAe,CAACzB,GAAgBC,IAAU,OAAO;AACrD,aAAWD,GAAMC,CAAO;AAC1B,GCDMyB,KAAgB,CAACC,IAAW,EAAE,OAAO,MAAM,QAAQ,WAAW;AAClE,QAAM,CAACC,GAAMC,CAAO,IAAItB,EAAS,MAC3B,OAAO,SAAW,MACb,EAAE,OAAO,OAAO,YAAY,QAAQ,OAAO,YAAA,IAE7CoB,CACR;AAED,SAAAnB,EAAU,MAAM;AACd,UAAMsB,IAAa,MAAM;AACvB,MAAAD,EAAQ,EAAE,OAAO,OAAO,YAAY,QAAQ,OAAO,aAAa;AAAA,IAClE;AAEA,WAAAC,EAAA,GACA,OAAO,iBAAiB,UAAUA,CAAU,GACrC,MAAM,OAAO,oBAAoB,UAAUA,CAAU;AAAA,EAC9D,GAAG,CAAA,CAAE,GAEEF;AACT,GCnBMG,KAA4B,MAAM;AACtC,QAAMC,IAAW,OAAOrG,GAAoB,MAAM,QAAQ,GAAG,WAAW,MAAM,EAAE,CAAC,GAC3EsG,IAAW,OAAOtG,GAAoB,MAAM,QAAQ,GAAG,WAAW,MAAM,EAAE,CAAC,GAC3EuG,IAAW,OAAOvG,GAAoB,MAAM,QAAQ,GAAG,WAAW,MAAM,EAAE,CAAC;AAEjF,SAAO;AAAA,IACL,UAAAqG;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,EAAA;AAEJ,GCiGMC,KAAgC,CAAC;AAAA,EACrC,KAAArD,IAAM;AAAA,EACN,UAAAE;AAAA,EACA,SAAAoD;AAAA,EACA,aAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,cAAAC;AAAA,EACA,cAAgBC,IAAY;AAAA,EAC5B,WAAA1D,IAAY;AAAA,EACZ,iBAAA2D;AAAA,EACA,UAAYC;AAAA,EACZ,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAcC;AAAA,EACd,GAAGjF;AACL,MAAoB;AAClB,QAAMkF,IAAcC,GAAA,GAEdC,IAAe,OAAOP,IAAqB,KAE3CQ,IAAkB,OAAOT,IAAmB,KAE5C,CAACU,GAAuBC,CAAwB,IAAI9C,EAAS4C,IAAkBnC,EAAgB0B,CAAe,IAAI,EAAK,GACvH,CAACY,GAAaC,CAAc,IAAIhD,EAAuB,SAAS,GAEhE,EAAE,OAAAiD,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAO,EAAA,IAAaF,GAAA,GACf0B,IAAWD,IAAQvB,GAGnByB,IAAWR,IAAelC,EAAgB2B,CAAiB,IAAIS,GAE/D,CAACO,GAAgBC,CAAiB,IAAIrD,EAA6B,EAAE,MAAM,MAAM,GAEjFsD,IAAS,MAAM;AACnB,IAAKX,KACHG,EAAyB,EAAI,GAG/BO,EAAkB,EAAE,MAAM,UAAU;AAAA,EACtC,GAEME,IAAe,MAAM;AACzB,IAAKZ,KACHG,EAAyB,EAAI;AAAA,EAEjC,GAEMU,IAAW,MAAM;AACrB,IAAKb,KACHG,EAAyB,EAAK,GAGhCO,EAAkB,EAAE,MAAM,YAAY;AAAA,EACxC,GAEMI,IAAiB,MAAM;AAC3B,IAAKd,KACHG,EAAyB,EAAK;AAAA,EAElC,GAEMY,IAAS,MAAM;AAEnB,IAAKf,KACHG,EAAyB,CAACK,CAAQ,GAGhCA,KACFE,EAAkB,EAAE,MAAM,YAAY,GAGnCF,KACHE,EAAkB,EAAE,MAAM,UAAU;AAAA,EAExC,GAEMM,IAAe,MAAM;AAEzB,IAAKhB,KACHG,EAAyB,CAACK,CAAQ;AAAA,EAEtC,GAEMxC,IAAWb,EAAuB,IAAI,GACtCgB,IAAcJ;AAAA,IAClBnC;AAAA,IACAoC;AAAA,IACA;AAAA,MACE,YAAYwC;AAAA,MACZ,QAAAG;AAAA,MACA,cAAAC;AAAA,MACA,UAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,QAAAC;AAAA,MACA,cAAAC;AAAA,IAAA;AAAA,IAEF,CAAChD,GAAUwC,CAAQ;AAAA,EAAA;AAGrB,EAAAlD,EAAU,MAAM;AACd,QAAImD,EAAe,SAAS,UAAU;AACpC,YAAMQ,KAAc5E,GAAmD8B,EAAY,WAAW,QAAW,QAAQ;AACjH,MAAAuB,KAAA,QAAAA,EAAauB;AAAA,IACf;AAEA,QAAIR,EAAe,SAAS,YAAY;AACtC,YAAMS,KAAe7E,GAAmD8B,EAAY,WAAW,QAAW,UAAU;AACpH,MAAAwB,KAAA,QAAAA,EAAcuB;AAAA,IAChB;AAEA,UAAMC,KAAY9E,GAAmD8B,EAAY,WAAW,QAAW,QAAQ;AAC/G,IAAAyB,KAAA,QAAAA,EAAWuB;AAAA,EACb,GAAG,CAACV,CAAc,CAAC;AAEnB,QAAMW,IAAqB/H,EAAW,mBAAmBwC,GAAW;AAAA,IAClE,kBAAkB2E;AAAA,IAClB,gBAAgBJ,MAAgB;AAAA,IAChC,QAAUG;AAAA,IACV,aAAazC,EAAgBuB,CAAQ;AAAA,EAAA,CACtC,GAEKgC,KAAyBhI,EAAW,kBAAkB,EAAE,wBAAwBmH,GAAU,GAC1Fc,IAAyBjI,EAAW,qBAAqB,EAAE,qBAAqBmH,GAAU,GAE1Fe,IAAiB,MAAM;AAC3B,IAAAR,EAAA,GACAV,EAAe,SAAS;AAAA,EAC1B,GAEMmB,IAAmB,CAACC,OAA0C;AAClE,IAAIA,GAAI,SAAS,WACfpB,EAAe,QAAQ;AAAA,EAE3B,GAEMqB,IAAiB,CAACD,OAA0C;AAChE,IAAIA,GAAI,SAAS,WACfpB,EAAe,SAAS;AAAA,EAE5B,GAEMsB,IAAqB,MAAM;AAC/B,IAAAtB,EAAe,QAAQ;AAAA,EACzB,GAEMuB,IAAmB,MAAM;AAC7B,IAAAvB,EAAe,SAAS;AAAA,EAC1B,GAEMwB,KAAsB,MAAM;AAChC,IAAAxB,EAAe,SAAS;AAAA,EAC1B,GAEMyB,KAAsB,MAAM;AAChC,IAAAzB,EAAe,OAAO;AAAA,EACxB;AAEA,SACE,gBAAApF,EAAA,cAAC,OAAA,EAAI,WAAWmG,GAAqB,GAAGxG,GAAO,KAAKoD,EAAA,GAClD,gBAAA/C,EAAA,cAACsE,GAAA,EAAU,WAAU,yCAAA,GACnB,gBAAAtE,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAY4E;AAAA,MACZ,MAAK;AAAA,MACL,WAAU;AAAA,MACV,iBAAeW;AAAA,MACf,IAAI,mBAAmBV,CAAW;AAAA,MAClC,iBAAe,mBAAmBA,CAAW;AAAA,MAC7C,SAASyB;AAAA,MACT,WAAWC;AAAA,MACX,SAASE;AAAA,MACT,aAAaC;AAAA,MACb,WAAWC;AAAA,MACX,cAAcC;AAAA,MACd,cAAcC;AAAA,IAAA;AAAA,IAEd,gBAAA7G,EAAA,cAAC,OAAA,EAAI,WAAU,qCACZ6C,EAAgBoB,CAAO,MAAMC,KAAeC,sCAC1CzD,IAAA,EAAQ,WAAU,wBAAuB,OAAOyE,KAC/C,gBAAAnF,EAAA,cAACQ,GAAA,EAAS,WAAU,wBAAuB,OAAM,WAAU,MAAM0D,KAAeC,GAAkB,eAAW,GAAA,CAAC,GAC9G,gBAAAnE,EAAA,cAACQ,KAAS,WAAU,sBAAqB,OAAM,SAAQ,MAAM2D,KAAoBD,GAAa,eAAW,GAAA,CAAC,GAC1G,gBAAAlE,EAAA,cAACQ,GAAA,EAAS,WAAU,uBAAsB,OAAM,UAAS,MAAM0D,KAAeC,GAAkB,eAAW,GAAA,CAAC,CAC9G,GAGDE,KAAgB,gBAAArE,EAAA,cAAC,QAAA,EAAK,WAAU,WAASqE,CAAa,GAEvD,gBAAArE,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAA,GACb,gBAAAA,EAAA,cAACI,IAAA,EAAK,WAAWiG,GAAwB,MAAK,2BAA0B,eAAW,GAAA,CAAC,CACtF,CACF;AAAA,EAAA,CAEJ,GACA,gBAAArG,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWoG;AAAA,MACX,IAAI,mBAAmBvB,CAAW;AAAA,MAClC,MAAK;AAAA,MACL,mBAAiB,mBAAmBA,CAAW;AAAA,IAAA;AAAA,IAE/C,gBAAA7E,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GAAoBa,CAAS;AAAA,EAAA,CAEhD;AAEJ,GC5RMiG,KAA0C,CAAC,EAAE,WAAAlG,IAAY,IAAI,UAAAC,GAAU,UAAAuD,IAAW,IAAO,GAAGzE,QAAY;AAC5G,QAAMoH,IAA4BjC,GAAA,GAE5BkC,IAAmBC,GAAQ,0BAAU,IAAA,GAAmD,CAAA,CAAE,GAE1FC,IAAe,CAACC,MAAe;AACnC,IAAAH,EAAiB,QAAQ,CAACI,GAAK1I,MAAQ;;AACrC,MAAIA,MAAQyI,OACVtH,IAAAuH,EAAI,YAAJ,QAAAvH,EAAa;AAAA,IAEjB,CAAC;AAAA,EACH,GAEMwH,IAAmBvG,EAAS,QAAQD,CAAQ,EAAE,IAAI,CAACE,GAAOuG,MAAU;AACxE,QAAI,CAACtG,EAA+BD,CAAK;AACvC,aAAO;AAGT,UAAMoG,IAAK,mBAAmBJ,CAAyB,cAAcO,CAAK,IACpEC,IAASC,GAAA;AACf,IAAAR,EAAiB,IAAIG,GAAII,CAAM;AAE/B,UAAM9C,IAAa,CAAC+B,MAAsD;;AACxE,MAAAU,EAAaC,CAAE,IACfM,KAAA5H,IAAAkB,EAAM,OAAM,eAAZ,QAAA0G,EAAA,KAAA5H,GAAyB2G;AAAA,IAC3B;AAEA,WACE,gBAAAxG,EAAA,cAAC,MAAA,EAAG,KAAKmH,EAAA,GACP,gBAAAnH,EAAA,cAACgE,IAAA,EAAW,GAAGjD,EAAM,OAAO,KAAKwG,GAAQ,YAAA9C,GAAwB,UAAAL,GAAoB,CACvF;AAAA,EAEJ,CAAC,GAEKsD,IAA0BtJ,EAAW,yBAAyB,mBAAmBwC,GAAW;AAAA,IAChG,aAAaiC,EAAgBuB,CAAQ;AAAA,EAAA,CACtC;AAED,yCACG,MAAA,EAAG,WAAWsD,GAA0B,GAAG/H,KACzC0H,CACH;AAEJ,GCSMM,KAA0B,CAAC;AAAA,EAC/B,KAAAhH,IAAM;AAAA,EACN,UAAAyD,IAAW;AAAA,EACX,YAAAwD,IAAa;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,SAAA7D,IAAU;AAAA,EACV,UAAA8D,IAAW;AAAA,EACX,aAAA7D;AAAA,EACA,kBAAAC;AAAA,EACA,mBAAA6D;AAAA,EACA,cAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAtH;AAAA,EACA,WAAAD,IAAY;AAAA,EACZ,QAAAwH,IAAS;AAAA,EACT,GAAGzI;AACL,MAAoB;AAClB,QAAMoD,IAAWb,EAA0B,IAAI;AAC/C,EAAAY,GAAkCnC,GAAKoC,GAAU,CAAA,GAAyB,CAACA,EAAS,OAAO,CAAC;AAE5F,QAAMsF,IAAkBjK;AAAA,IACtB;AAAA,IAEA,gBAAgBwJ,CAAU,IAAIC,CAAO;AAAA,IAErC,EAAE,qBAAqBC,EAAA;AAAA,IAEvB,EAAE,4BAA4B,CAACnI,EAAM,OAAA;AAAA,IAErC,EAAE,iDAAiD,CAACkD,EAAgBuF,CAAM,EAAA;AAAA,IAE1E,EAAE,iBAAiBvF,EAAgBuF,CAAM,EAAA;AAAA,IAEzC,EAAE,0BAA0BvF,EAAgBoB,CAAO,KAAKpB,EAAgBkF,CAAQ,EAAA;AAAA,IAEhF,EAAE,gBAAgBlF,EAAgBkF,CAAQ,EAAA;AAAA,IAE1C,EAAE,aAAalF,EAAgBuB,CAAQ,EAAA;AAAA,IAEvCxD;AAAA,EAAA,GAGI,CAACuE,GAAaC,CAAc,IAAIhD,EAAuB,SAAS,GAEhEkG,IAAc,CAAC9B,MAAuC;;AAC1D,UAAM+B,IAAgB,OAAO,WAAW,mBAAmB,EAAE;AAC7D,IAAAnD,EAAemD,IAAgB,YAAY,OAAO,IAElD1I,IAAAF,EAAM,YAAN,QAAAE,EAAA,KAAAF,GAAgB6G;AAAA,EAClB,GAEMgC,IAAmB,CAAChC,MAAuC;;AAG/D,IAFsB,OAAO,WAAW,mBAAmB,EAAE,WAG3DpB,EAAe,OAAO,IAGxBvF,IAAAF,EAAM,iBAAN,QAAAE,EAAA,KAAAF,GAAqB6G;AAAA,EACvB,GAEMiC,IAAmB,CAACjC,MAAuC;;AAG/D,IAFsB,OAAO,WAAW,mBAAmB,EAAE,WAG3DpB,EAAe,SAAS,IAG1BvF,IAAAF,EAAM,iBAAN,QAAAE,EAAA,KAAAF,GAAqB6G;AAAA,EACvB,GAEMkC,IAAkB,CAAClC,MAAuC;;AAG9D,IAFsB,OAAO,WAAW,mBAAmB,EAAE,WAG3DpB,EAAe,QAAQ,IAGzBvF,IAAAF,EAAM,gBAAN,QAAAE,EAAA,KAAAF,GAAoB6G;AAAA,EACtB,GAEMmC,IAAgB,CAACnC,MAAuC;;AAG5D,IAFsB,OAAO,WAAW,mBAAmB,EAAE,WAG3DpB,EAAe,SAAS,IAG1BvF,IAAAF,EAAM,cAAN,QAAAE,EAAA,KAAAF,GAAkB6G;AAAA,EACpB,GAEMoC,IAAS,MAAM;;AACnB,KAAA/I,IAAAkD,EAAS,YAAT,QAAAlD,EAAkB,UAAU,OAAO,WACnCuF,EAAe,SAAS;AAAA,EAC1B;AAEA,SACE,gBAAApF,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,WAAW0I;AAAA,MACX,KAAKtF;AAAA,MACL,SAASuF;AAAA,MACT,cAAcE;AAAA,MACd,cAAcC;AAAA,MACd,aAAaC;AAAA,MACb,WAAWC;AAAA,MACX,QAAAC;AAAA,MACA,WAAWjJ,EAAM;AAAA,IAAA;AAAA,IAEhBsE,MAAYC,KAAeC,MAC1B,gBAAAnE,EAAA,cAACU,MAAQ,WAAU,wBAAuB,OAAOyE,EAAA,GAC/C,gBAAAnF,EAAA,cAACQ,KAAS,WAAU,wBAAuB,OAAM,WAAU,MAAM0D,KAAe,WAAW,eAAW,IAAC,GACvG,gBAAAlE,EAAA,cAACQ,KAAS,WAAU,sBAAqB,OAAM,SAAQ,MAAM2D,KAAoB,WAAW,eAAW,IAAC,GACxG,gBAAAnE,EAAA,cAACQ,KAAS,WAAU,uBAAsB,OAAM,UAAS,MAAMwH,KAAqB9D,KAAe,WAAW,eAAW,GAAA,CAAC,CAC5H;AAAA,IAGD,CAAC6D,KAAYlH,qCAAa,QAAA,EAAK,WAAU,sBAAoBA,CAAS;AAAA,IAEtEoD,MAAYgE,KAAgBC,MAC3B,gBAAAlI,EAAA,cAACU,MAAQ,WAAU,yBAAwB,OAAOyE,EAAA,GAChD,gBAAAnF,EAAA,cAACQ,KAAS,WAAU,yBAAwB,OAAM,WAAU,MAAMyH,KAAgB,WAAW,eAAW,IAAC,GACzG,gBAAAjI,EAAA,cAACQ,KAAS,WAAU,uBAAsB,OAAM,SAAQ,MAAM0H,KAAqB,WAAW,eAAW,IAAC,GAC1G,gBAAAlI,EAAA,cAACQ,KAAS,WAAU,wBAAuB,OAAM,UAAS,MAAM2H,KAAsBF,KAAgB,WAAW,eAAW,GAAA,CAAC,CAC/H;AAAA,EAAA;AAIR,GC3LMY,KAA4B,2BAwDrBC,KAA4B,CAAC;AAAA,EACxC,UAAAC;AAAA,EACA,SAAAlB,IAAU;AAAA,EACV,UAAAmB,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAtI;AAAA,EACA,GAAGlB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdnE,IAAMuB,EAAoB,IAAI,GAE9B,CAACkH,GAAKC,CAAM,IAAIjH,EAAS,CAAC,GAC1B,CAACkH,GAAMC,CAAO,IAAInH,EAAS,CAAC,GAC5B,CAACiD,GAAOmE,CAAQ,IAAIpH,EAAS,CAAC,GAC9B,CAACqH,GAAQC,CAAS,IAAItH,EAAS,CAAC,GAEhCuH,IAAgBC,GAAY,MAAM;;AACtC,QAAIjJ,EAAI,SAAS;AACf,YAAMkJ,KAAOhK,IAAAc,EAAI,YAAJ,gBAAAd,EAAa;AAE1B,MAAIgK,MACFR,EAAOQ,EAAK,MAAM,OAAO,OAAO,GAChCN,EAAQM,EAAK,OAAO,OAAO,OAAO,GAClCL,EAASK,EAAK,KAAK,GACnBH,EAAUG,EAAK,MAAM;AAAA,IAEzB;AAAA,EACF,GAAG,CAAA,CAAE,GAECC,IAAa7C,GAAQ,OAAO,EAAE,GAAGtH,MAAU,CAACA,CAAK,CAAC;AAExD,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAMkF,IAA4B3L,EAAW,wCAAwCuB,EAAM,SAAS,GAE9FqK,IAAmB5L,EAAW,WAAW;AAAA,IAC7C,CAAC,YAAYyJ,CAAO,EAAE,GAAGA;AAAA,IACzB,CAAC,YAAYmB,CAAQ,KAAKC,CAAS,EAAE,GAAGD,KAAYC;AAAA,EAAA,CACrD,GAEK,CAACgB,GAAYC,CAAa,IAAI9H,EAAS,EAAK,GAE5C+H,IAAc,MAAM;AACxB,IAAAD,EAAc,EAAI;AAClB,UAAM3I,IAAQ,IAAI,YAAgCsH,IAA2B,EAAE,QAAQiB,EAAW,IAAI;AACtG,aAAS,cAAcvI,CAAK;AAAA,EAC9B,GAEM6I,IAAc,MAAM;AACxB,IAAAF,EAAc,EAAK;AAAA,EACrB,GAEMG,IAAkB,CAAC9I,MAAyB;AAChD,IAAIA,EAAM,QAAQ,YAChB2I,EAAc,EAAK;AAAA,EAEvB,GAEMI,IAA0B,MAAM;AACpC,IAAAF,EAAA;AAAA,EACF;AAEA,EAAA/H,EAAU,MAAM;AACd,aAAS,iBAAiB,WAAWgI,CAAe;AAEpD,UAAME,IAAsB,CAACC,MAAiC;AAC5D,MAAIA,EAAgB,WAAWV,EAAW,MACxCI,EAAc,EAAK;AAAA,IAEvB;AAEA,oBAAS,iBAAiBrB,IAA2B0B,CAAoC,GAElF,MAAM;AACX,eAAS,oBAAoB,WAAWF,CAAe,GACvD,SAAS,oBAAoBxB,IAA2B0B,CAAoC;AAAA,IAC9F;AAAA,EACF,GAAG,CAACT,EAAW,EAAE,CAAC;AAElB,QAAMW,IAAiB3J,EAAS,IAAID,GAAU,CAACE,MACxCC,EAAiCD,CAAK,IAuCpC2J,GAA+B3J,GAAO,EAAE,KAAAJ,GAAK,cAnC/B,CAAC6F,MAAoB;;AACxC,IAAAmD,EAAA,GAEAQ,EAAA,IAEA1C,KAAA5H,IAAAkB,EAAM,OAAM,iBAAZ,QAAA0G,EAAA,KAAA5H,GAA2B2G;AAAA,EAC7B,GA6BkE,cA3B7C,CAACA,MAAoB;;AACxC,UAAMmE,IAAiBnE,EAAI;AAK3B,IAFEmE,KAAkB,CAACA,EAAe,UAAU,SAAS,SAAS,KAAK,CAACA,EAAe,UAAU,SAAS,0BAA0B,KAGhIP,EAAA,IAGF3C,MAAA5H,IAAAkB,EAAM,OAAM,iBAAZ,QAAA0G,GAAA,KAAA5H,GAA2B2G;AAAA,EAC7B,GAgBgF,SAdhE,CAACA,MAAoB;;AACnC,IAAAmD,EAAA,GAEAQ,EAAA,IAEA1C,KAAA5H,IAAAkB,EAAM,OAAM,YAAZ,QAAA0G,EAAA,KAAA5H,GAAsB2G;AAAA,EACxB,GAQyF,QAN1E,CAACA,MAAoB;;AAClC,IAAA4D,EAAA,IAEA3C,KAAA5H,IAAAkB,EAAM,OAAM,WAAZ,QAAA0G,EAAA,KAAA5H,GAAqB2G;AAAA,EACvB,GAEiG,oBAAoBsD,EAAW,GAAA,CAAI,IAtC3H/I,CAuCV;AAED,EAAAsB,EAAU,MAAM;AACd,UAAMuI,IAAK,MAAM;AACf,MAAAjB,EAAA;AAAA,IACF;AAEA,oBAAS,iBAAiB,UAAUiB,CAAE,GAE/B,MAAM;AACX,eAAS,oBAAoB,UAAUA,CAAE;AAAA,IAC3C;AAAA,EACF,GAAG,CAACjB,CAAa,CAAC;AAElB,QAAMkB,IAAiB5D,GAAQ,MAAM;AACnC,QAAIgC,MAAc;AAChB,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAIf,QAAIA,MAAc;AAChB,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM,GAAG5D,IAAQ,CAAC;AAAA,QAClB,WAAW;AAAA,MAAA;AAIf,QAAI4D,MAAc;AAChB,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM,GAAG5D,CAAK;AAAA,QACd,WAAW;AAAA,MAAA;AAAA,EAGjB,GAAG,CAAC4D,GAAW5D,CAAK,CAAC,GAEfyF,IAAoB7D,GAAQ,MAAM;AACtC,QAAIgC,MAAc;AAChB,aAAO;AAAA,QACL,KAAK,GAAGQ,IAAS,EAAE;AAAA,QACnB,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAIf,QAAIR,MAAc;AAChB,aAAO;AAAA,QACL,KAAK,GAAGQ,IAAS,EAAE;AAAA,QACnB,MAAM,GAAGpE,IAAQ,CAAC;AAAA,QAClB,WAAW;AAAA,MAAA;AAIf,QAAI4D,MAAc;AAChB,aAAO;AAAA,QACL,KAAK,GAAGQ,IAAS,EAAE;AAAA,QACnB,MAAM,GAAGpE,CAAK;AAAA,QACd,WAAW;AAAA,MAAA;AAAA,EAGjB,GAAG,CAAC4D,GAAWQ,GAAQpE,CAAK,CAAC,GAEvB0F,IAAkB9D,GAAQ,MAAM;AACpC,QAAIgC,MAAc;AAChB,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAIf,QAAIA,MAAc;AAChB,aAAO;AAAA,QACL,KAAK,GAAGQ,IAAS,CAAC;AAAA,QAClB,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAIf,QAAIR,MAAc;AAChB,aAAO;AAAA,QACL,KAAK,GAAGQ,CAAM;AAAA,QACd,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAAA,EAGjB,GAAG,CAACR,GAAWQ,CAAM,CAAC,GAEhBuB,IAAmB/D,GAAQ,MAAM;AACrC,QAAIgC,MAAc;AAChB,aAAO;AAAA,QACL,KAAK;AAAA,QACL,MAAM,GAAG5D,IAAQ,EAAE;AAAA,QACnB,WAAW;AAAA,MAAA;AAIf,QAAI4D,MAAc;AAChB,aAAO;AAAA,QACL,KAAK,GAAGQ,IAAS,CAAC;AAAA,QAClB,MAAM,GAAGpE,IAAQ,EAAE;AAAA,QACnB,WAAW;AAAA,MAAA;AAIf,QAAI4D,MAAc;AAChB,aAAO;AAAA,QACL,KAAK,GAAGQ,CAAM;AAAA,QACd,MAAM,GAAGpE,IAAQ,EAAE;AAAA,QACnB,WAAW;AAAA,MAAA;AAAA,EAGjB,GAAG,CAAC4D,GAAWQ,GAAQpE,CAAK,CAAC,GAEvB4F,IAAkBhE,GAAQ,MAAM;AACpC,YAAQ+B,GAAA;AAAA,MACN,KAAK;AACH,eAAO6B;AAAA,MACT,KAAK;AACH,eAAOC;AAAA,MACT,KAAK;AACH,eAAOC;AAAA,MACT,KAAK;AACH,eAAOC;AAAA,IAAA;AAAA,EAEb,GAAG,CAAChC,GAAU6B,GAAgBC,GAAmBC,GAAiBC,CAAgB,CAAC,GAE7EE,IAAiBjE,GAAQ,MAE3B,gBAAAjH,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW+J;AAAA,MACX,OAAO;AAAA,QACL,KAAK,GAAGX,CAAG;AAAA,QACX,MAAM,GAAGE,CAAI;AAAA,MAAA;AAAA,MAEf,cAAcgB;AAAA,MACd,MAAK;AAAA,IAAA;AAAA,oCAEJ,OAAA,EAAI,WAAU,4BACb,gBAAAtK,EAAA,cAAC,OAAA,EAAK,GAAG8J,GAAY,OAAO,EAAE,GAAGmB,EAAA,GAAmB,IAAInB,EAAW,IAAI,WAAWE,GAAkB,MAAK,UAAA,GACtGnH,EAAgBkG,CAAQ,qCAAM,OAAA,EAAI,WAAU,WAASG,CAAM,mCAC3D,KAAA,EAAE,WAAU,iBAAeC,CAAY,mCACvC,OAAA,EAAI,WAAU,4BAA2B,MAAK,OAAA,CAAO,CACxD,CACF;AAAA,EAAA,GAGH,CAACa,GAAkBb,GAAaJ,GAAUG,GAAOY,GAAYmB,GAAiB7B,GAAKE,CAAI,CAAC,GAErF6B,IAAalE,GAAQ,MACrBgD,IACKmB,GAAaF,GAAgB,SAAS,IAAI,IAE5C,MACN,CAACjB,GAAYiB,CAAc,CAAC;AAE/B,SACE,gBAAAlL,EAAA,cAAAA,EAAA,UAAA,MACGyK,GACAU,CACH;AAEJ,GC3SME,KAA0B,CAAC;AAAA,EAC/B,KAAA1K,IAAM;AAAA,EACN,UAAAyD,IAAW;AAAA,EACX,YAAAwD,IAAa;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,SAAA7D,IAAU;AAAA,EACV,UAAA8D,IAAW;AAAA,EACX,aAAA7D;AAAA,EACA,kBAAAC;AAAA,EACA,cAAA8D;AAAA,EACA,mBAAAC;AAAA,EACA,UAAArH;AAAA,EACA,WAAAD,IAAY;AAAA,EACZ,GAAGjB;AACL,MAAM;AACJ,QAAM2L,IAAiBpJ,EAAiC,IAAI;AAC5D,EAAAiB,GAAoBxC,GAAK,MAAM2K,EAAe,OAA4B;AAC1E,QAAM,CAACnG,GAAaC,CAAc,IAAIhD,EAAuB,SAAS,GAEhEmJ,IAAkBnN;AAAA,IACtB,EAAE,mDAAmD,CAACuB,EAAM,OAAA;AAAA,IAE5D,aAAamI,IAAY,mBAAmB,EAAE,cAAcF,CAAU,IAAIC,CAAO;AAAA,IAEjF;AAAA,MACG,uBAAwBhF,EAAgBoB,CAAO;AAAA,MAChD,gBAAgBpB,EAAgBkF,CAAQ;AAAA,IAAA;AAAA,IAG1C,EAAE,UAAUlF,EAAgBuB,CAAQ,EAAA;AAAA,IACpCxD;AAAA,EAAA,GAGI2F,IAAmB,CAACC,MAA0C;;AAClE,KAAIA,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,cACrE3G,IAAAyL,EAAe,YAAf,QAAAzL,EAAwB,UAAU,IAAI,WAEtCuF,EAAe,QAAQ,KAGzBqC,IAAA9H,EAAM,cAAN,QAAA8H,EAAA,KAAA9H,GAAkB6G;AAAA,EACpB,GAEMC,IAAiB,CAACD,MAA0C;;AAChE,KAAIA,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,cACrE3G,IAAAyL,EAAe,YAAf,QAAAzL,EAAwB,UAAU,OAAO,WACzCuF,EAAe,SAAS,IAExBqC,IAAA6D,EAAe,YAAf,QAAA7D,EAAwB,aAAa,+BAA+B,UACpE+D,IAAAF,EAAe,YAAf,QAAAE,EAAwB,WAG1BC,IAAA9L,EAAM,YAAN,QAAA8L,EAAA,KAAA9L,GAAgB6G;AAAA,EAClB,GAEMK,IAAsB,CAACL,MAAuC;;AAGlE,IAFsB,OAAO,WAAW,mBAAmB,EAAE,YAM7DpB,EAAe,OAAO,IAEtBvF,IAAAF,EAAM,iBAAN,QAAAE,EAAA,KAAAF,GAAqB6G;AAAA,EACvB,GAEMI,IAAsB,CAACJ,MAAuC;;AAGlE,IAFsB,OAAO,WAAW,mBAAmB,EAAE,YAM7DpB,EAAe,SAAS,IAExBvF,IAAAyL,EAAe,YAAf,QAAAzL,EAAwB,UAAU,OAAO,YAEzC4H,IAAA9H,EAAM,iBAAN,QAAA8H,EAAA,KAAA9H,GAAqB6G;AAAA,EACvB,GAGME,IAAqB,CAACF,MAAuC;;AAIjE,IAHAA,EAAI,eAAA,GAEkB,QAAO,WAAW,mBAAmB,EAAE,YAK7DpB,EAAe,QAAQ,IACvBvF,IAAAyL,EAAe,YAAf,QAAAzL,EAAwB,UAAU,IAAI,YACtC4H,IAAA9H,EAAM,gBAAN,QAAA8H,EAAA,KAAA9H,GAAoB6G;AAAA,EACtB,GAGMG,IAAmB,CAACH,MAAuC;;AAI/D,IAHAA,EAAI,eAAA,GAEkB,QAAO,WAAW,mBAAmB,EAAE,YAK7DpB,EAAe,SAAS,IAExBvF,IAAAyL,EAAe,YAAf,QAAAzL,EAAwB,UAAU,OAAO,YACzC4H,IAAA9H,EAAM,cAAN,QAAA8H,EAAA,KAAA9H,GAAkB6G;AAAA,EACpB,GAEMF,IAAiB,CAACE,MAAuC;;AAC7D,UAAM+B,IAAgB,OAAO,WAAW,mBAAmB,EAAE;AAG7D,QAAI/B,EAAI,SAAS,GAAG;AAClB,MAAApB,EAAemD,IAAgB,YAAY,OAAO,IAClD1I,IAAAF,EAAM,YAAN,QAAAE,EAAA,KAAAF,GAAgB6G;AAChB;AAAA,IACF;AAOA,UAAMkF,MAAqBjE,IAAA6D,EAAe,YAAf,gBAAA7D,EAAwB,aAAa,oCAAmC;AAGnG,SAFA+D,IAAAF,EAAe,YAAf,QAAAE,EAAwB,gBAAgB,gCAEpC,CAACE,GAAoB;AACvB,MAAAlF,EAAI,eAAA;AACJ;AAAA,IACF;AAEA,IAAApB,EAAe,SAAS,IACxBqG,IAAA9L,EAAM,YAAN,QAAA8L,EAAA,KAAA9L,GAAgB6G;AAAA,EAClB;AAEA,SACE,gBAAAxG,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,WAAW4L;AAAA,MACX,KAAKD;AAAA,MACL,SAAShF;AAAA,MACT,WAAWC;AAAA,MACX,SAASE;AAAA,MACT,aAAaC;AAAA,MACb,WAAWC;AAAA,MACX,cAAcC;AAAA,MACd,cAAcC;AAAA,IAAA;AAAA,IAEb5C,MAAYC,KAAeC,MAC1B,gBAAAnE,EAAA,cAACU,MAAQ,WAAU,wBAAuB,OAAOyE,EAAA,GAC/C,gBAAAnF,EAAA,cAACQ,KAAS,WAAU,wBAAuB,OAAM,WAAU,MAAM0D,KAAe,WAAW,eAAW,IAAC,GACvG,gBAAAlE,EAAA,cAACQ,KAAS,WAAU,sBAAqB,OAAM,SAAQ,MAAM2D,KAAoB,WAAW,eAAW,IAAC,GACxG,gBAAAnE,EAAA,cAACQ,KAAS,WAAU,uBAAsB,OAAM,UAAS,MAAM0D,KAAe,WAAW,eAAW,IAAC,CACvG;AAAA,IAGD,CAAC6D,KAAYlH,qCAAa,QAAA,EAAK,WAAU,sBAAoBA,CAAS;AAAA,IAEtEoD,MAAYgE,KAAgBC,MAC3B,gBAAAlI,EAAA,cAACU,MAAQ,WAAU,yBAAwB,OAAOyE,EAAA,GAChD,gBAAAnF,EAAA,cAACQ,KAAS,WAAU,yBAAwB,OAAM,WAAU,MAAMyH,KAAgB,WAAW,eAAW,IAAC,GACzG,gBAAAjI,EAAA,cAACQ,KAAS,WAAU,uBAAsB,OAAM,SAAQ,MAAM0H,KAAqB,WAAW,eAAW,IAAC,GAC1G,gBAAAlI,EAAA,cAACQ,KAAS,WAAU,wBAAuB,OAAM,UAAS,MAAMyH,KAAgB,WAAW,eAAW,IAAC,CACzG;AAAA,EAAA;AAIR,GCtOM0D,KAAgD,CAAC;AAAA,EACrD,KAAAhL,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,YAAAgL;AAAA,EACA,UAAA/K;AAAA,EACA,KAAAgL;AAAA,EACA,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,gBAAgBC;AAAA,EAChB,cAAcpH;AAAA,EACd,MAAAqH;AAAA,EACA,UAAAC;AAAA,EACA,GAAGvM;AACL,MAAoB;AAClB,QAAM2G,IAAiB,MAAM;AAC3B,IAAAsF,KAAA,QAAAA;AAAA,EACF;AAEA,SACE,gBAAA5L,EAAA,cAAC,OAAA,EAAI,KAAAW,GAAW,GAAGhB,GAAO,WAAAiB,KACxB,gBAAAZ,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACE,GAAIS,MAAiB,SAAY,EAAE,iBAAiBA,EAAA,IAAiB,CAAA;AAAA,MACrE,GAAIC,MAAiB,SAAY,EAAE,iBAAiBA,EAAA,IAAiB,CAAA;AAAA,MACrE,GAAIC,MAAgB,SAAY,EAAE,gBAAgBA,EAAA,IAAgB,CAAA;AAAA,MAClE,GAAIC,MAAS,SAAY,EAAE,MAAMA,EAAK,SAAA,EAAS,IAAM,CAAA;AAAA,MACrD,GAAIC,MAAa,SAAY,EAAE,UAAAA,EAAA,IAAuB,CAAA;AAAA,MACvD,cAAYL,KAAOjH;AAAA,MACnB,MAAK;AAAA,MACL,WAAAhE;AAAA,MACA,SAAS0F;AAAA,IAAA;AAAA,IAERzF;AAAA,EAAA,CAEL;AAEJ,GCtCMsL,KAAsD,CAAC,EAAE,KAAAxL,IAAM,MAAM,WAAAC,GAAW,UAAAC,GAAU,KAAAgL,GAAK,GAAGlM,QAEpG,gBAAAK,EAAA,cAAC,OAAA,EAAI,KAAAW,GAAW,GAAGhB,GAAO,MAAMkM,IAAM,QAAQ,QAAW,cAAYA,GAAK,WAAAjL,EAAA,GACvEC,CACH,GCwFEuL,KAA0B,CAAC;AAAA,EAC/B,KAAAzL,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,YAAAyL,IAAa;AAAA,EACb,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,cAAAC,IAAe;AAAA,EACf,iBAAAC,IAAkB;AAAA,EAClB,WAAAC,IAAY;AAAA,EACZ,iBAAA3B,IAAkB;AAAA,EAClB,kBAAA4B,IAAmB;AAAA,EACnB,aAAAC;AAAA,EACA,UAAA1I;AAAA,EACA,YAAAwH;AAAA,EACA,GAAGjM;AACL,MAAoB;AAClB,QAAMoN,IAAmB3O,EAAW,gBAAgBwC,GAAW;AAAA,IAC7D,aAAAkM;AAAA,IACA,aAAajK,EAAgBuB,CAAQ;AAAA,EAAA,CACtC,GAEK4I,IAAc/F,GAAQ,MAAM;AAGhC,UAAMgG,IAAgB7O,EAAW,iBAFRkO,IAAUD,IAAa,MAEkB,EAAE,GAE9Da,IAAe9O,EAAWwC,GAAW;AAAA,MACzC,CAAC,eAAe6L,CAAa,UAAUG,CAAS,UAAUD,CAAe,IAAID,CAAY,EAAE,GAAG7J,EAAgB0J,CAAQ;AAAA,IAAA,CACvH;AAED,WAAIF,MAAe,cAAcC,KAAWA,EAAQ,KAAA,EAAO,WAAW,sDAGhE,gBAAAtM,EAAA,cAAC,OAAA,EAAI,WAAWiN,EAAA,GAAgBX,EAAQ,MAAM,GAAG,CAAC,CAAE,GACnDzJ,EAAgB0J,CAAQ,qCAAM,OAAA,EAAI,WAAWW,GAAc,CAC9D,IAIAb,MAAe,4DAGb,gBAAArM,EAAA,cAACI,IAAA,EAAK,MAAK,cAAa,WAAW6M,GAAe,eAAW,GAAA,CAAC,GAC7DpK,EAAgB0J,CAAQ,qCAAM,OAAA,EAAI,WAAWW,GAAc,CAC9D,sDAMA,gBAAAlN,EAAA,cAACI,IAAA,EAAK,MAAMkM,GAAS,WAAWW,GAAe,eAAW,GAAA,CAAC,GAC1DpK,EAAgB0J,CAAQ,qCAAM,OAAA,EAAI,WAAWW,GAAc,CAC9D;AAAA,EAEJ,GAAG,CAACtM,GAAWyL,GAAYC,GAASC,GAAUE,GAAeC,GAAcC,GAAiBC,CAAS,CAAC;AAEtG,SAAI/J,EAAgBiK,CAAW,IAE3B,gBAAA9M,EAAA,cAAC,OAAA,EAAI,WAAU,0BAAyB,KAAAW,KACtC,gBAAAX,EAAA;AAAA,IAAC8I;AAAA,IAAA;AAAA,MACC,WAAW+D;AAAA,MACX,WAAU;AAAA,MACV,aAAaL;AAAA,MACb,UAAUvB;AAAA,MACV,SAASpI,EAAgBuB,CAAQ,IAAI,SAAS;AAAA,IAAA;AAAA,oCAE7CuH,IAAA,EAAmB,GAAGhM,GAAO,WAAWoN,GAAkB,YAAAnB,KACxDoB,CACH;AAAA,EAAA,CAEJ,IAKF,gBAAAhN,EAAA,cAAC,OAAA,EAAI,WAAU,0BAAyB,KAAAW,KACtC,gBAAAX,EAAA,cAACmM,IAAA,EAAsB,GAAGxM,GAAO,WAAWoN,EAAA,GACzCC,CACH,CACF;AAEJ,GClJaG,KAA0BC,GAA4C,EAAkC,GAExGC,KAA6B,MACjCC,GAAWH,EAAuB,GCVrCI,KAAwE,CAAC;AAAA,EAC7E,iBAAAC,IAAkB;AAAA,EAClB,KAAA7M,IAAM;AAAA,EACN,UAAAyD;AAAA,EACA,WAAAxD;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAM8N,IAAkBJ,GAAA,GAClBpD,IAAawD,EAAgB,YAC7BC,IAAcD,EAAgB,aAC9BE,IAAOF,EAAgB,MACvBG,IAAOH,EAAgB,MAEvB,CAACI,GAAeC,CAAgB,IAAI1L,EAAS,EAAE,GAE/C2L,IAAuB9L,GAAgByL,GAAaF,CAAe,GAEnEQ,IAAgB,CAACxH,MAAuC;AAC5D,IAAAsH,EAAiBtH,EAAI,OAAO,KAAK;AAAA,EACnC;AAEA,EAAAnE,EAAU,MAAM;AACd,IAAAyL,EAAiBL,EAAgB,YAAY;AAAA,EAC/C,GAAG,CAACA,EAAgB,YAAY,CAAC,GAEjCpL,EAAU,MAAM;AACd,IAAA0L,EAAqB,QAAQF,EAAc,aAAa;AAAA,EAC1D,GAAG,CAACA,GAAeE,CAAoB,CAAC;AAExC,QAAME,IAAc,MAAM;AACxB,IAAAH,EAAiB,EAAE;AAAA,EACrB,GAEMI,IAAWhM,EAAyB,IAAI,GACxCa,IAAWb,EAAsB,IAAI;AAC3C,EAAAiB,GAAoBxC,GAAK,OAChB;AAAA,IACL,SAASuN,EAAS;AAAA,IAClB,YAAYnL,EAAS;AAAA,IACrB,aAAAkL;AAAA,EAAA,IAED,CAAClL,CAAQ,CAAC;AAEb,QAAMoL,IAA0B,CAAC3H,MAAyC;AAGxE,IAFaA,EAAI,SAEJ,UACXA,EAAI,eAAA,GACJA,EAAI,gBAAA,GAEJmH,EAAA;AAAA,EAEJ,GAEMpH,IAAmB,CAACC,MAAyC;AAGjE,YAFaA,EAAI,MAET;AAAA,MACN,KAAK;AAGH,QAAAmH,EAAA;AACA;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAC,EAAA;AACA;AAAA,IAAA;AAAA,EAEN,GAEMQ,IAA4B,CAAC5H,MAAmD;;AACpF,IAAAA,EAAI,eAAA,IACJ3G,IAAAqO,EAAS,YAAT,QAAArO,EAAkB;AAAA,EACpB;AAEA,EAAAwC,EAAU,MAAM;AACd,QAAIU,EAAS,WAAWkH,GAAY;AAClC,YAAM,EAAE,QAAAR,EAAA,IAAW1G,EAAS,QAAQ,sBAAA;AACpC,MAAAA,EAAS,QAAQ,aAAa,8BAA8B,GAAG0G,CAAM,EAAE;AAAA,IACzE;AAAA,EACF,GAAG,CAACQ,CAAU,CAAC;AAEf,QAAMoE,IAAwBjQ,EAAW,iCAAiCwC,GAAW,EAAE,aAAaiC,EAAgBuB,CAAQ,GAAG;AAE/H,SACE,gBAAApE,EAAA,cAAC,MAAA,EAAG,WAAWqO,GAAuB,MAAK,eAAA,GACzC,gBAAArO,EAAA,cAAC,MAAA,EAAG,WAAU,sCAAqC,KAAK+C,GAAU,MAAK,kBACrE,gBAAA/C,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKkO;AAAA,MACJ,GAAGvO;AAAA,MACJ,WAAW;AAAA,MACX,MAAK;AAAA,MACL,OAAOkO;AAAA,MACP,UAAUG;AAAA,MACV,kBAAkBG;AAAA,MAClB,WAAW5H;AAAA,IAAA;AAAA,EAAA,GAEb,gBAAAvG,EAAA,cAACI,IAAA,EAAK,WAAU,cAAa,MAAK,qBAAoB,eAAW,IAAC,oBAAoBgO,EAAA,CAA2B,CACnH,CACF;AAEJ,GCzHaE,KAAgD,CAAC,EAAE,WAAA1N,GAAW,UAAAwD,GAAU,OAAAmK,GAAO,GAAG5O,QAAY;AACzG,QAAMtB,IAAUD,EAAW,6BAA6BwC,GAAW;AAAA,IACjE,aAAaiC,EAAgBuB,CAAQ;AAAA,EAAA,CACtC;AAED,SACE,gBAAApE,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,WAAWtB,EAAA,GACzB,gBAAA2B,EAAA,cAAC,OAAA,EAAI,WAAU,QAAA,GAASuO,CAAM,CAChC;AAEJ,GCZMC,KAAyG,CAAC;AAAA,EAC9G,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAzK;AAAA,EACA,UAAApD;AACF,MACM4N,MAAS,aAET,gBAAAzO,EAAA,cAAC,QAAA,EAAK,WAAU,oBAAA,GACd,gBAAAA,EAAA,cAACI,IAAA,EAAK,WAAU,iBAAgB,MAAK,oBAAmB,eAAW,GAAA,CAAC,GACpE,gBAAAJ,EAAA,cAAC,QAAA,EAAK,WAAU,iBAAA,GAAkBa,CAAS,GAC1CgC,EAAgBoB,CAAO,KAAK,gBAAAjE,EAAA,cAACI,IAAA,EAAK,WAAU,eAAc,MAAMsO,GAAM,eAAW,IAAC,CACrF,IAIC7L,EAAgBoB,CAAO,IAK1B,gBAAAjE,EAAA,cAAAA,EAAA,UAAA,MACE,gBAAAA,EAAA,cAACI,IAAA,EAAK,WAAU,eAAc,MAAMsO,GAAM,eAAW,IAAC,GACtD,gBAAA1O,EAAA,cAAC,QAAA,EAAK,WAAU,iBAAA,GAAkBa,CAAS,CAC7C,IAPO,gBAAAb,EAAA,cAAC,QAAA,EAAK,WAAU,iBAAA,GAAkBa,CAAS,GA2BhD8N,KAA0D,CAAC;AAAA,EAC/D,KAAAhO,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,UAAAwD;AAAA,EACA,UAAAwK;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAA7K;AAAA,EACA,MAAAyK;AAAA,EACA,cAAAK,IAAe;AAAA,EACf,UAAAlO;AAAA,EACA,MAAA3B;AAAA,EACA,OAAAjB;AAAA,EACA,kBAAA+Q;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGtP;AACL,MAAM;AACJ,QAAMuP,IAA4BhN,EAA6B,IAAI;AACnE,EAAAiB,GAAoBxC,GAAK,MAAMuO,EAA0B,OAAwB;AAEjF,QAAMC,IAAiBT,KAAA,gBAAAA,EAAM,QAAQ,SAAS,SACxC,CAACU,GAAUC,CAAW,IAAIjN,EAAS+M,KAAkB,EAAE,GAEvD1B,IAAkBJ,GAAA,GAClBiC,IAAe7B,EAAgB,cAC/B8B,IAAU9B,EAAgB,SAC1B+B,IAAO/B,EAAgB,MACvBgC,IAAQhC,EAAgB,OACxBG,IAAOH,EAAgB,MACvBiC,IAAOjC,EAAgB,MACvBgB,IAAOhB,EAAgB,MACvBE,IAAOF,EAAgB,MAEvBkC,IAAuBvR;AAAA,IAC3B;AAAA,IACAwC;AAAA,IAEA,EAAE,CAAC6N,CAAI,GAAGA,EAAA;AAAA,IACV,EAAE,UAAU5L,EAAgB+L,CAAQ,EAAA;AAAA,IACpC,EAAE,UAAU/L,EAAgBgM,CAAQ,EAAA;AAAA,IACpC,EAAE,UAAUhM,EAAgBiM,CAAQ,EAAA;AAAA,IACpC;AAAA,MACE,aAAajM,EAAgBuB,CAAQ;AAAA,MACrC,gBAAgBvB,EAAgBoB,CAAO,KAAK8K,MAAiB;AAAA,MAC7D,iBAAiBlM,EAAgBoB,CAAO,KAAK8K,MAAiB;AAAA,IAAA;AAAA,EAChE,GAGIa,IAAS,MAAM;AACnB,UAAMC,IAASN,EAAQ,KAAK,CAACO,OACpBA,GAAI,UAAU7R,KAAS6R,GAAI,SAAS5Q,CAC5C;AAED,IAAI2Q,KACFP,EAAaO,CAAM;AAAA,EAEvB,GAEME,IAAgC,CAACC,MAA0B;AAE/D,QAAIvB,MAAS,cAAcuB,KAAgBhB,KAAoBC,GAAiB;AAC9E,MAAAD,EAAiBC,GAAiBe,CAAY;AAC9C;AAAA,IACF;AAGA,IAAAJ,EAAA,GAGIZ,KAAoBC,KACtBD,EAAiBC,GAAiB,EAAK;AAAA,EAE3C,GAEMd,IAA0B,CAAC3H,MAAsC;AACrE,UAAMyJ,KAAOzJ,EAAI;AAGjB,KAAIyJ,OAAS,WAAWA,OAAS,WAAWA,OAAS,mBACnDzJ,EAAI,gBAAA,GACJA,EAAI,eAAA,GACJuJ,EAA8BvJ,EAAI,QAAQ,IAGxCyJ,OAAS,UACXzJ,EAAI,gBAAA,GACJA,EAAI,eAAA,GAEJmH,EAAA;AAAA,EAEJ,GAEMpH,IAAmB,CAACC,MAAsC;AAC9D,UAAM,EAAE,MAAAyJ,OAASzJ;AAEjB,YAAQyJ,IAAA;AAAA,MACN,KAAK;AAGH,QAAAtC,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAA+B,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAA9B,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAA6B,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAAD,EAAA;AACA;AAAA,IAAA;AAAA,EAEN,GAEMU,IAAqB,CAAC1J,MAAmC;AAC7D,IAAIoI,MACFpI,EAAI,eAAA,GACJA,EAAI,gBAAA;AAAA,EAER,GAEM2J,IAAe,CAAC3J,MAAmC;AACvD,QAAIoI,GAAU;AACZ,MAAApI,EAAI,eAAA,GACJA,EAAI,gBAAA;AACJ;AAAA,IACF;AAEA,IAAAuJ,EAA8BvJ,EAAI,QAAQ;AAAA,EAC5C,GAEM4J,IAAiB,MAAM;AAC3B,IAAKxB,KACHS,EAAY,CAACgB,MAAiBA,EAAa,QAAQ,QAAQ,OAAO,CAAC;AAAA,EAEvE,GAEMC,IAAgB,MAAM;AAC1B,IAAK1B,KACHS,EAAY,CAACgB,MAAiBA,EAAa,QAAQ,SAAS,MAAM,CAAC;AAAA,EAEvE;AAEA,SAAAhO,EAAU,MAAM;AACd,QAAI,EAAC6M,KAAA,QAAAA,EAA2B,SAAS;AAEzC,UAAMqB,IAAerB,EAA0B,QAAQ,sBAAA,EAAwB;AAC/E,IAAAA,EAA0B,QAAQ,aAAa,8BAA8B,GAAGqB,CAAY,EAAE;AAAA,EAChG,CAAC,GAGC,gBAAAvQ,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKkP;AAAA,MACL,WAAWS;AAAA,MACX,MAAK;AAAA,MACL,UAAUf,IAAW,KAAK;AAAA,MAC1B,iBAAe/L,EAAgBgM,CAAQ;AAAA,MACvC,WAAWtI;AAAA,MACX,kBAAkB4H;AAAA,MAClB,oBAAA+B;AAAA,MACA,SAASC;AAAA,MACT,cAAcC;AAAA,MACd,aAAaA;AAAA,MACb,cAAcE;AAAA,MACd,0BAAwBrB;AAAA,MACvB,GAAGtP;AAAA,IAAA;AAAA,IAEJ,gBAAAK,EAAA,cAACwO,MAAgB,MAAAC,GAAY,SAAS5L,EAAgBoB,CAAO,GAAG,MAAMmL,EAAA,GACnEvO,CACH;AAAA,EAAA;AAGN,GClNa2P,KAA4D,CAAC,EAAE,UAAApM,GAAU,WAAAxD,GAAW,MAAA1B,GAAM,OAAAqP,IAAQ,IAAI,WAAAkC,QAAgB;AACjI,QAAMhD,IAAkBJ,GAAA,GAClBkC,IAAU9B,EAAgB,SAC1BgB,IAAOhB,EAAgB,MACvBxD,IAAawD,EAAgB,YAC7BiD,IAAqBjD,EAAgB,oBACrCkD,IAAwBlD,EAAgB,uBAExCmD,IAAiB1O,EAAsB,IAAI,GAE3C2O,IAAoBzS,EAAW,0BAA0BwC,GAAW,EAAE,aAAaiC,EAAgBuB,CAAQ,GAAG,GAE9G0M,IAAuBlH;AAAA,IAC3B,CAACmH,GAAyBf,MAA0B;AAElD,UAAI,CAACA,GAAc;AACjB,QAAAW,EAAsBI,CAAe;AACrC;AAAA,MACF;AAGA,UAAItC,MAAS,cAAc,CAACiC,GAAoB;AAC9C,QAAAC,EAAsBI,CAAe;AACrC;AAAA,MACF;AAEA,YAAMC,IAAiBzB,EAAQ,OAAO,CAACO,MAAQA,EAAI,SAAS5Q,CAAI,GAC1D+R,IAAYD,EAAe,UAAU,CAAClB,MAAQ,GAAG5Q,CAAI,IAAIuP,CAAI,IAAIqB,EAAI,KAAK,OAAOY,CAAkB,GACnGQ,IAAeF,EAAe,UAAU,CAAClB,MAAQ,GAAG5Q,CAAI,IAAIuP,CAAI,IAAIqB,EAAI,KAAK,OAAOiB,CAAe;AAEzG,UAAIE,MAAc,MAAMC,MAAiB,IAAI;AAC3C,QAAAP,EAAsBI,CAAe;AACrC;AAAA,MACF;AAEA,YAAMI,IAAa,KAAK,IAAIF,GAAWC,CAAY,GAC7CE,IAAW,KAAK,IAAIH,GAAWC,CAAY,GAI3CG,IAAe,CADCL,EAAeE,CAAY,EACb;AAGpC,eAAS5S,IAAI6S,GAAY7S,KAAK8S,GAAU9S,KAAK;AAC3C,cAAMuR,IAASmB,EAAe1S,CAAC;AAG/B,QAAIuR,EAAO,aAAawB,KACtB5D,EAAgB,aAAaoC,CAAM;AAAA,MAEvC;AAGA,MAAAc,EAAsBI,CAAe;AAAA,IACvC;AAAA,IACA,CAACtD,GAAiBiD,GAAoBxR,GAAMyR,GAAuBlC,GAAMc,CAAO;AAAA,EAAA,GAG5EyB,IAAiB/J,GAAQ,MACtBsI,EACJ,OAAO,CAACO,MAAQA,EAAI,SAAS5Q,CAAI,EACjC,IAAI,CAACS,MAAuC;AAC3C,UAAMjB,IAAM,GAAGQ,CAAI,IAAIuP,CAAI,IAAI9O,EAAM,KAAK,IAEpC2R,IAAmBlT,EAAWuB,EAAM,WAAW;AAAA,MACnD,mBAAmB8O,MAAS,cAAc5L,EAAgB4N,CAAS;AAAA,IAAA,CACpE,GAEKlJ,IAASC,GAAA;AAEf,WACE,gBAAAxH,EAAA;AAAA,MAAC2O;AAAA,MAAA;AAAA,QACE,GAAGhP;AAAA,QACJ,KAAAjB;AAAA,QACA,iBAAiBA;AAAA,QACjB,KAAK6I;AAAA,QACL,WAAW+J;AAAA,QACX,UAAAlN;AAAA,QACA,kBAAkB0M;AAAA,MAAA;AAAA,IAAA;AAAA,EAGxB,CAAC,GACF,CAACvB,GAASrQ,GAAMuP,GAAMqC,GAAsBL,GAAWrM,CAAQ,CAAC;AAEnE,EAAA/B,EAAU,MAAM;AACd,QAAIuO,EAAe,WAAW3G,GAAY;AACxC,YAAMsH,IAAoBX,EAAe,QAAQ,sBAAA,EAAwB;AACzE,MAAAA,EAAe,QAAQ,aAAa,4BAA4B,GAAGW,CAAiB,EAAE;AAAA,IACxF;AAAA,EACF,GAAG,CAACtH,GAAYwE,CAAI,CAAC;AAErB,QAAM+C,IAAe,CAAC3O,EAAgB4N,CAAS;AAE/C,SACE,gBAAAzQ,EAAA,cAAC,MAAA,EAAG,WAAW6Q,GAAmB,MAAK,SAAS,GAAIW,IAAe,EAAE,mBAAmBtS,EAAA,IAAS,CAAA,EAAC,GAC/FsS,KACC,gBAAAxR,EAAA,cAAC,MAAA,EAAG,KAAK4Q,GAAgB,WAAU,gBAAe,IAAI1R,GAAM,MAAK,eAAA,GAC9DqP,CACH,GAEDyC,CACH;AAEJ,GC1GaS,KAA8E,CAAC,EAAE,UAAArN,GAAU,WAAAxD,GAAW,OAAA2N,QAAY;AAC7H,QAAM5N,IAAMuB,EAAsB,IAAI,GAEhCuL,IAAkBJ,GAAA,GAClBpD,IAAawD,EAAgB,YAC7BiE,IAAgBjE,EAAgB,eAChCkE,IAAgBlE,EAAgB,eAChCmE,IAAYnE,EAAgB,WAC5B+B,IAAO/B,EAAgB,MACvBgC,IAAQhC,EAAgB,OACxBG,IAAOH,EAAgB,MACvBiC,IAAOjC,EAAgB,MACvBE,IAAOF,EAAgB,MAEvBoE,IAAY,CAACrL,MAA8C;AAC/D,UAAM,EAAE,MAAAyJ,MAASzJ;AAEjB,YAAQyJ,GAAA;AAAA,MACN,KAAK;AAGH,QAAAtC,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAA+B,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAA9B,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAA6B,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAAD,EAAA;AACA;AAAA,MACF,KAAK;AACH,QAAAhJ,EAAI,eAAA,GACJoL,EAAA;AACA;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAAA,EAAA;AACA;AAAA,IAAA;AAAA,EAEN,GAEMzB,IAAe,MAAM;AACzB,IAAAyB,EAAA;AAAA,EACF;AACA,EAAAvP,EAAU,MAAM;AACd,UAAMyP,IAAanR,EAAI,SAEjBoR,IAAU,CAACvL,MAAuB;AACtC,MAAIA,EAAI,SAAS,UACfA,EAAI,gBAAA,GACJA,EAAI,eAAA,GAEJmH,EAAA;AAAA,IAEJ;AAEA,WAAImE,KACFA,EAAW,iBAAiB,WAAWC,GAAS,EAAI,GAG/C,MAAM;AACX,MAAID,KACFA,EAAW,oBAAoB,WAAWC,GAAS,EAAI;AAAA,IAE3D;AAAA,EACF,GAAG,CAACpE,CAAI,CAAC,GAETtL,EAAU,MAAM;AACd,UAAMyP,IAAanR,EAAI;AAEvB,QAAImR,KAAc7H,GAAY;AAC5B,YAAM,EAAE,QAAAR,EAAA,IAAWqI,EAAW,sBAAA;AAC9B,MAAAA,EAAW,aAAa,kCAAkC,GAAGrI,CAAM,EAAE;AAAA,IACvE;AAAA,EACF,GAAG,CAACQ,CAAU,CAAC;AAEf,QAAM+H,IAAqC5T,EAAW,qCAAqCwC,GAAW;AAAA,IACpG,aAAaiC,EAAgBuB,CAAQ;AAAA,EAAA,CACtC,GAEK6N,IAA8B7T,EAAW,6BAA6B;AAAA,IAC1E,eAAeuT;AAAA,EAAA,CAChB;AAED,SACE,gBAAA3R,EAAA,cAAC,MAAA,EAAG,WAAWgS,GAAoC,MAAK,eAAA,GACtD,gBAAAhS,EAAA,cAAC,MAAA,EAAG,KAAAW,GAAU,WAAWsR,GAA6B,MAAK,eAAc,wBAAqB,OAC5F,gBAAAjS,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAU;AAAA,MACV,MAAK;AAAA,MACL,gBAAc2R;AAAA,MACd,iBAAeD;AAAA,MACf,WAAWG;AAAA,MACX,SAAS1B;AAAA,IAAA;AAAA,IAET,gBAAAnQ,EAAA,cAACI,IAAA,EAAK,MAAK,oBAAmB,eAAW,IAAC;AAAA,IAC1C,gBAAAJ,EAAA,cAAC,cAAMuO,CAAM;AAAA,EAAA,CAEjB,CACF;AAEJ,GCrFM2D,KAA8C,CAAC;AAAA,EACnD,KAAAvR,IAAM;AAAA,EACN,UAAAyD;AAAA,EACA,gBAAA+N;AAAA,EACA,mBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,iBAAAC,IAAkB;AAAA,EAClB,GAAG7S;AACL,MAA6B;AAC3B,QAAM8S,IAAUpF,GAAA,GACVpD,IAAawI,EAAQ,YACrBC,IAAeD,EAAQ,cACvBE,IAAWF,EAAQ,UACnBlD,IAAUkD,EAAQ,SAClBhE,IAAOgE,EAAQ,MAEfG,IAAY1Q,EAAyC,IAAI,GACzD+L,IAAcrE,GAAY,MAAM;AACpC,IAAI0I,KAAcM,EAAU,WAC1BA,EAAU,QAAQ,YAAA;AAAA,EAEtB,GAAG,CAACN,CAAU,CAAC,GAETvP,IAAWb,EAAuB,IAAI;AAC5C,EAAAY,GAAwCnC,GAAqCoC,GAAU,EAAE,aAAAkL,EAAA,GAA0C;AAAA,IACjIA;AAAA,EAAA,CACD;AAED,QAAM4E,IAAY3Q,EAAO,EAAK,GAExB,CAAC4Q,GAAoBC,CAAqB,IAAI3Q,EAAS,EAAE,GAEzDyC,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAMmO,IAAyBpJ,GAAY,MAAM;AAC/C,QAAI7G,EAAS,WAAWuP,GAAY;AAGlC,YAAMW,IAFelQ,EAAS,QAAQ,iBAAiB,qCAAqC,EAEjE,CAAC,KAAwB;AAEpD,UAAIkQ,GAAM;AACR,cAAMC,IAAMD,EAAK,aAAa,4BAA4B;AAC1D,eAAOC,IAAM,OAAOA,CAAG,IAAI;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAACZ,CAAU,CAAC,GAETa,IAA4BvJ,GAAY,MAAM;AAClD,QAAI7G,EAAS,WAAW0L,MAAS,YAAY;AAG3C,YAAMwE,IAFelQ,EAAS,QAAQ,iBAAiB,4BAA4B,EAExD,CAAC,KAAwB;AAEpD,UAAIkQ,GAAM;AACR,cAAMC,IAAMD,EAAK,aAAa,gCAAgC;AAC9D,eAAOC,IAAM,OAAOA,CAAG,IAAI;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAACzE,CAAI,CAAC,GAEH2E,IAA+BxJ,GAAY,CAACyJ,MAA8B;AAC9E,QAAIC,IAAc;AAElB,WAAIvQ,EAAS,WACUA,EAAS,QAAQ,iBAAiB,uCAAuC,EAEjF,QAAQ,CAACkQ,MAAS;AAC7B,YAAMM,IAAcN,EAAK,aAAa,wBAAwB;AAE9D,UAAIM,KAAeF,EAAgB,SAASE,CAAW,GAAG;AACxD,cAAML,KAAMD,EAAK,aAAa,0BAA0B;AACxD,QAAAK,IAAcA,KAAeJ,KAAM,OAAOA,EAAG,IAAI;AAAA,MACnD;AAAA,IACF,CAAC,GAGII;AAAA,EACT,GAAG,CAAA,CAAE,GAECE,IAA0B5J;AAAA,IAC9B,CAAC6J,MAAkD;AACjD,UAAIH,IAAc;AAElB,UAAIvQ,EAAS,SAAS;AACpB,cAAM2Q,IAAqBD,EAAe,IAAI,CAAC3D,MAAQ,GAAGA,EAAI,IAAI,IAAIrB,CAAI,IAAIqB,EAAI,KAAK,EAAE;AAIzF,QAFqB/M,EAAS,QAAQ,iBAAiB,gDAAgD,EAE1F,QAAQ,CAACkQ,MAAS;AAC7B,gBAAMU,KAAWV,EAAK,aAAa,wBAAwB;AAE3D,cAAIU,MAAYD,EAAmB,SAASC,EAAQ,GAAG;AACrD,kBAAMT,IAAMD,EAAK,aAAa,4BAA4B;AAC1D,YAAAK,IAAcA,KAAeJ,IAAM,OAAOA,CAAG,IAAI;AAAA,UACnD;AAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAOI;AAAA,IACT;AAAA,IACA,CAAC7E,CAAI;AAAA,EAAA,GAGDmF,IAAyBhK,GAAY,MAAM;AAC/C,QAAI,CAAC7G,EAAS;AACZ,aAAO;AAGT,UAAM8Q,IAAgB,iBAAiB9Q,EAAS,OAAO;AAEvD,QAAI8Q,GAAe;AACjB,YAAMC,IAAiB,WAAWD,EAAc,cAAc,GACxDE,IAAoB,WAAWF,EAAc,iBAAiB;AACpE,aAAOC,IAAiBC;AAAA,IAC1B;AAEA,WAAO;AAAA,EACT,GAAG,CAAChR,CAAQ,CAAC;AAEb,EAAAV,EAAU,MAAM;AACd,IAAI4H,MACF4I,EAAU,UAAU;AAAA,EAExB,GAAG,CAAC5I,CAAU,CAAC,GAEf5H,EAAU,MAAM;AACd,QAAI,CAAC4H,EAAY;AAEjB,IAAI4I,EAAU,WAAW9P,EAAS,YAChCA,EAAS,QAAQ,YAAY;AAG/B,UAAM0Q,IAAiBlE,EAAQ,OAAO,CAACO,MAAQ,CAACA,EAAI,QAAQ;AAE5D,QAAI2D,EAAe,SAASlB,GAAgB;AAC1C,YAAMyB,IAAmBP,EAAe,MAAM,GAAGlB,CAAc,GACzDc,IAAkB,CAAC,GAAG,IAAI,IAAIW,EAAiB,IAAI,CAAClE,MAAQA,EAAI,QAAQ,EAAE,EAAE,OAAO,CAACA,MAAQ,CAAC,CAACA,CAAG,CAAC,CAAC;AAEzG,UAAImE,IAAY;AAChB,MAAAA,KAAajB,EAAA,GACbiB,KAAad,EAAA,GACbc,KAAab,EAA6BC,CAAe,GACzDY,KAAaT,EAAwBQ,CAAgB,GAEjDC,IAAY,KACdA,KAAaL,EAAA,GACbb,EAAsB,GAAGkB,CAAS,IAAI,KAEtClB,EAAsB,MAAM;AAAA,IAEhC;AACE,MAAAA,EAAsB,MAAM;AAG9B,IAAAF,EAAU,UAAU;AAAA,EACtB,GAAG;AAAA,IACD5I;AAAA,IACAwE;AAAA,IACAiE;AAAA,IACAnD;AAAA,IACAgD;AAAA,IACAS;AAAA,IACAG;AAAA,IACAC;AAAA,IACAI;AAAA,IACAI;AAAA,EAAA,CACD;AAED,QAAMM,IAAkB9V,EAAW,kBAAkB0L,EAAW,WAAW,EAAE,SAASG,GAAY,GAE5FkK,IAAalN,GAAQ,MAAMsI,EAAQ,SAAS,GAAG,CAACA,CAAO,CAAC,GACxD6E,IAAyBnN,GAAQ,MAAMsI,EAAQ,KAAK,CAACO,MAAQ,CAACA,EAAI,QAAQ,GAAG,CAACP,CAAO,CAAC,GACtF8E,IAA4BpN,GAAQ,MAAM;AAC9C,UAAMqN,IAAiB/E,EAAQ,OAAO,CAACO,MAAQ,CAACA,EAAI,QAAQ;AAC5D,WAAOsE,KAA0BE,EAAe,UAAU,CAACxE,MAAQ,CAACA,EAAI,QAAQ,MAAM;AAAA,EACxF,GAAG,CAACsE,GAAwB7E,CAAO,CAAC,GAC9BgF,IAAqBtN,GAAQ,MAAMsI,EAAQ,OAAO,CAACO,MAAQ,CAACA,EAAI,QAAQ,EAAE,IAAI,CAACA,MAAQA,EAAI,IAAI,GAAG,CAACP,CAAO,CAAC;AAEjH,SACE,gBAAAvP,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWkU;AAAA,MACX,KAAKnR;AAAA,MACL,OAAO;AAAA,QACL,WAAW+P,MAAuB,KAAK,QAAQA;AAAA,QAC/C,WAAWA,MAAuB,KAAK,WAAW;AAAA,MAAA;AAAA,IACpD;AAAA,oCAEC,OAAA,EAAK,GAAGhJ,GAAY,MAAK,aACvBwI,KACC,gBAAAtS,EAAA;AAAA,MAACuN;AAAA,MAAA;AAAA,QACC,KAAKqF;AAAA,QACL,UAAAxO;AAAA,QACA,cAAYiO;AAAA,QACZ,aAAaD;AAAA,MAAA;AAAA,IAAA,GAIhB3D,MAAS,cAAc2F,KAA0B,CAACC,KAA6BlC,KAC9E,gBAAAnS,EAAA,cAACyR,IAAA,EAAiC,UAAArN,GAAoB,OAAO+N,EAAA,CAAgB,GAG9EiC,KACCzB,EACG,OAAO,CAAC6B,MAAMD,EAAmB,QAAQC,EAAE,IAAI,KAAK,CAAC,EACrD,IAAI,CAACC,GAASnN,MAAU;AACvB,YAAM5I,IAAM,yBAAyBoL,EAAW,EAAE,IAAIxC,CAAK;AAC3D,aAAO,gBAAAtH,EAAA,cAACwQ,IAAA,EAAwB,UAAApM,GAAoB,KAAA1F,GAAW,GAAG+V,GAAS;AAAA,IAC7E,CAAC,IAEH,CAACN,KAAc,CAACC,MAA2B,gBAAApU,EAAA,cAACsO,IAAA,EAAkB,UAAAlK,GAAoB,OAAOoO,EAAA,CAAiB,CAC9G;AAAA,EAAA;AAGN,GCzPakC,KAAmB,CAC9BC,GACAlG,GACAmG,GACAjQ,GACAkQ,GACAC,GACAC,GACAlU,MACG;AAEH,QAAM,CAAC8R,GAAUqC,CAAW,IAAI5S,EAA8C,CAAA,CAAE,GAC1E,CAACmN,GAAS0F,CAAU,IAAI7S,EAA6C,CAAA,CAAE,GACvE,CAAC8S,GAAeC,CAAgB,IAAI/S,EAAwC,CAAA,CAAE,GAC9E,CAACsO,GAAoBC,CAAqB,IAAIvO,EAA6B,MAAS;AAE1F,EAAAC,EAAU,MAAM;AACd,UAAM+S,IAA0D,CAAA,GAC1DC,IAAwD,CAAA;AAE9D,IAAIxU,MACG,MAAM,QAAQA,CAAQ,IAMzBC,EAAS,QAAQD,GAAU,CAAC7B,MAAM;AAChC,MAAAoW,EAAmB,KAAK;AAAA,QACtB,GAAGpW,EAAE;AAAA,QACL,WAAW4V;AAAA,MAAA,CACoB;AAAA,IACnC,CAAC,IAVDQ,EAAmB,KAAK;AAAA,MACtB,GAAGvU,EAAS;AAAA,MACZ,WAAW+T;AAAA,IAAA,CACoB,IAWrCQ,EAAmB,QAAQ,CAACE,MAAQ;AAClC,MAAAxU,EAAS,QAAQwU,EAAI,UAAU,CAACxF,MAAQ;AACtC,QAAAuF,EAAkB,KAAK;AAAA,UACrB,GAAGvF,EAAI;AAAA,UACP,MAAMwF,EAAI;AAAA,QAAA,CACX;AAAA,MACH,CAAC;AAAA,IACH,CAAC,GAEDN,EAAYI,CAAkB,GAC9BH,EAAWI,CAAiB,GAC5BF,EAAiBE,CAAiB;AAAA,EACpC,GAAG,CAACxU,GAAU4N,GAAMmG,CAAgB,CAAC;AAKrC,QAAM,CAAClC,GAAc6C,CAAe,IAAInT,EAAS,EAAE,GAE7CsL,IAAc,CAAC8H,MAAsB;AACzC,IAAAD,EAAgB,CAACE,MACXA,MAAeD,IACVC,KAGTR,EAAW,CAACS,MAAgB;AAC1B,YAAMC,IAAaD,EAAY,IAAI,CAAC5F,MAAQ;;AAC1C,YAAI0F,MAAc;AAEhB,iBAAO,EAAE,GAAG1F,GAAK,UAAU,GAAA;AAG7B,cAAMoD,IAAMpD,EAAI,MAAM,YAAA,GAChB8F,MAAc/V,KAAAiQ,EAAI,aAAJ,gBAAAjQ,GAAc,WAAW,eAEvCgW,KAAW,CAAC3C,EAAI,SAASsC,CAAS,KAAK,EAACI,MAAA,QAAAA,GAAa,WAAW,SAASJ;AAE/E,eAAO;AAAA,UACL,GAAG1F;AAAA,UACH,UAAU+F;AAAA,QAAA;AAAA,MAEd,CAAC;AAED,UAAIhB,GAAgB;AAClB,cAAMiB,IAAUH,EAAW,OAAO,CAAC7F,MAAQ,CAACA,EAAI,QAAQ;AACxD,QAAA+E,EAAeW,GAAWM,CAAO;AAAA,MACnC;AAEA,aAAOH;AAAA,IACT,CAAC,GAEMH,EACR;AAAA,EACH,GAEMvH,IAAcrE,GAAY,MAAY;AAC1C,IAAA2L,EAAgB,EAAE,GAClBN,EAAWC,CAAa;AAAA,EAC1B,GAAG,CAACA,CAAa,CAAC,GAMZa,IAAY,CAAC9C,MAAuB;AACxC,IAAIA,MACFA,EAAK,MAAA,GACLA,EAAK,eAAe,EAAE,UAAU,WAAW,OAAO,UAAU,QAAQ,SAAS;AAAA,EAEjF,GAEMxD,IAAQ7F,GAAY,MAAM;;AAC9B,QAAI+K,EAAoB,SAAS;AAC/B,YAAMqB,IAAc,MAAM,OAAKnW,IAAA8U,EAAoB,YAApB,gBAAA9U,EAA6B,iBAAiB,qBAAoB,EAAE,GAC7F+R,IAAY,MAAM,OAAKnK,IAAAkN,EAAoB,YAApB,gBAAAlN,EAA6B,iBAAiB,uCAAsC,EAAE,GAC7GwO,IAAO,MAAM,OAAKzK,IAAAmJ,EAAoB,YAApB,gBAAAnJ,EAA6B,iBAAiB,sCAAqC,EAAE,GACvG0K,KAAa,CAAC,GAAGF,GAAa,GAAGpE,GAAW,GAAGqE,CAAI,GAEnDE,KAAM,MAAM,KAAKD,EAAU,EAAE,UAAU,CAACpG,OACpCA,GAAoB,aAAa,CAC1C;AAED,MAAIqG,MAAO,KACTJ,EAAUG,GAAWC,EAAG,CAAgB;AAAA,IAE5C;AAAA,EACF,GAAG,CAACxB,CAAmB,CAAC,GAElBnF,IAAO5F,GAAY,MAAM;;AAC7B,QAAI+K,EAAoB,SAAS;AAC/B,YAAMqB,IAAc,MAAM,OAAKnW,IAAA8U,EAAoB,YAApB,gBAAA9U,EAA6B,iBAAiB,qBAAoB,EAAE,GAC7F+R,IAAY,MAAM,OAAKnK,IAAAkN,EAAoB,YAApB,gBAAAlN,EAA6B,iBAAiB,uCAAsC,EAAE,GAC7GwO,IAAO,MAAM,OAAKzK,IAAAmJ,EAAoB,YAApB,gBAAAnJ,EAA6B,iBAAiB,sCAAqC,EAAE,GACvG0K,KAAa,CAAC,GAAGF,GAAa,GAAGpE,GAAW,GAAGqE,CAAI;AAEzD,UAAIC,GAAW,SAAS,GAAG;AACzB,cAAMC,KAAM,MAAM,KAAKD,EAAU,EAAE,cAAc,CAACpG,OACxCA,GAAoB,aAAa,CAC1C;AAED,QAAIqG,MAAO,KACTJ,EAAUG,GAAWC,EAAG,CAAgB;AAAA,MAE5C;AAAA,IACF;AAAA,EACF,GAAG,CAACxB,CAAmB,CAAC,GAElB/G,IAAOhE,GAAY,MAAY;;AACnC,QAAI+K,EAAoB,SAAS;AAC/B,YAAMyB,IAAU,SAAS,eACnBJ,IAAc,MAAM,OAAKnW,IAAA8U,EAAoB,YAApB,gBAAA9U,EAA6B,iBAAiB,qBAAoB,EAAE,GAC7F+R,IAAY,MAAM,OAAKnK,IAAAkN,EAAoB,YAApB,gBAAAlN,EAA6B,iBAAiB,uCAAsC,EAAE,GAC7GwO,KAAO,MAAM,OAAKzK,IAAAmJ,EAAoB,YAApB,gBAAAnJ,EAA6B,iBAAiB,sCAAqC,EAAE,GACvG0K,KAAa,CAAC,GAAGF,GAAa,GAAGpE,GAAW,GAAGqE,EAAI;AAEzD,UAAIC,GAAW,SAAS,GAAG;AACzB,cAAMhF,KAAe,MAAM,KAAKgF,EAAU,EAAE,UAAU,CAACpG,OAC9CA,GAAI,YAAYsG,CAAO,CAC/B,GAEKD,KAAM,MAAM,KAAKD,EAAU,EAAE,UAAU,CAACpG,IAAKxR,OAC1CA,KAAI4S,MAAiBpB,GAAoB,aAAa,CAC9D;AAED,QAAIqG,MAAO,KACTJ,EAAUG,GAAWC,EAAG,CAAgB;AAAA,MAE5C;AAAA,IACF;AAAA,EACF,GAAG,CAACxB,CAAmB,CAAC,GAElBjF,IAAO9F,GAAY,MAAY;;AACnC,QAAI+K,EAAoB,SAAS;AAC/B,YAAMyB,IAAU,SAAS,eACnBJ,IAAc,MAAM,OAAKnW,IAAA8U,EAAoB,YAApB,gBAAA9U,EAA6B,iBAAiB,qBAAoB,EAAE,GAC7F+R,IAAY,MAAM,OAAKnK,IAAAkN,EAAoB,YAApB,gBAAAlN,EAA6B,iBAAiB,uCAAsC,EAAE,GAC7GwO,KAAO,MAAM,OAAKzK,IAAAmJ,EAAoB,YAApB,gBAAAnJ,EAA6B,iBAAiB,sCAAqC,EAAE,GACvG0K,KAAa,CAAC,GAAGF,GAAa,GAAGpE,GAAW,GAAGqE,EAAI;AAEzD,UAAIC,GAAW,SAAS,GAAG;AACzB,cAAMhF,KAAe,MAAM,KAAKgF,EAAU,EAAE,UAAU,CAACpG,OAC9CA,GAAI,YAAYsG,CAAO,CAC/B,GAEKD,KAAM,MAAM,KAAKD,EAAU,EAAE,cAAc,CAACpG,IAAKxR,OAC9CA,KAAI4S,MAAiBpB,GAAoB,aAAa,CAC9D;AAED,QAAIqG,MAAO,KACTJ,EAAUG,GAAWC,EAAG,CAAgB;AAAA,MAE5C;AAAA,IACF;AAAA,EACF,GAAG,CAACxB,CAAmB,CAAC,GAKlB,CAAC1K,GAAYC,CAAa,IAAI9H,EAAS,EAAK,GAE5CiU,IAAOzM,GAAY,MAAM;;AAC7B,IAAI+K,EAAoB,YACtBG,KAAA,QAAAA,MACArN,KAAA5H,IAAA8U,EAAoB,YAApB,gBAAA9U,EAA6B,aAA7B,QAAA4H,EAAA,KAAA5H,GAAwC,GAAG,KAG7CqK,EAAc,EAAI;AAAA,EACpB,GAAG,CAAC4K,GAAQH,CAAmB,CAAC,GAE1BhH,IAAO/D,GAAY,MAAM;AAC7B,IAAAmL,KAAA,QAAAA,KACA7K,EAAc,EAAK,GACnB+D,EAAA;AAAA,EACF,GAAG,CAACA,GAAa8G,CAAM,CAAC,GAKlBuB,IAAkB1M;AAAA,IACtB,CAAC+L,MAA8C;AAC7C,YAAMY,IAAkBZ,EACrB,OAAO,CAACa,MAAMA,EAAE,QAAQ,EACxB,IAAI,CAACA,OACG;AAAA,QACL,UAAUA,EAAE;AAAA,QACZ,OAAOA,EAAE;AAAA,QACT,WAAWA,EAAE;AAAA,QACb,UAAUA,EAAE;AAAA,QACZ,SAASA,EAAE;AAAA,QACX,MAAMA,EAAE;AAAA,QACR,cAAcA,EAAE;AAAA,QAChB,UAAUA,EAAE;AAAA,MAAA,EAEf;AAEH,MAAI/H,MAAS,UAAU8H,EAAgB,SAAS,KAC9C5I,EAAA,GAMFrK,GAAa,MAAMqB,KAAA,gBAAAA,EAAW4R,EAAgB;AAAA,IAChD;AAAA,IACA,CAAC5R,GAAUgJ,GAAMc,CAAI;AAAA,EAAA,GAGjBgI,IAAmBxP,GAAQ,MACxBwH,MAAS,YACf,CAACA,CAAI,CAAC,GAEHa,IAAe1F;AAAA,IACnB,CAACiG,MAA8C;AAC7C,MAAIA,EAAO,YAAYA,EAAO,YAI9BoF,EAAW,CAACS,MAAgB;AAC1B,cAAMC,IAAaD,EAAY,IAAI,CAAC5F,MAAQ;AAC1C,gBAAM4G,IAAmB7G,EAAO,SAASC,EAAI,QAAQD,EAAO,UAAUC,EAAI;AAE1E,iBAAI2G,IACK;AAAA,YACL,GAAG3G;AAAA,YACH,UAAU4G,IAAmB,CAAC5G,EAAI,WAAWA,EAAI;AAAA,UAAA,IAI9C;AAAA,YACL,GAAGA;AAAA,YACH,UAAU4G,IAAmB,CAAC5G,EAAI,WAAW;AAAA,UAAA;AAAA,QAEjD,CAAC;AAED,eAAAwG,EAAgBX,CAAU,GAEnBA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACV,GAAYwB,GAAkBH,CAAe;AAAA,EAAA,GAG1CK,IAA8B/M;AAAA,IAClC,CAAC2J,MAAiC;AAChC,YAAMqD,IAAmBrH,EAAQ,OAAO,CAACO,MAAQA,EAAI,SAASyD,KAAe,CAACzD,EAAI,YAAY,CAACA,EAAI,QAAQ,GACrG+G,IAAuBD,EAAiB,KAAK,CAAC9G,MAAQ,CAACA,EAAI,QAAQ;AACzE,aAAO8G,EAAiB,SAAS,KAAK,CAACC;AAAA,IACzC;AAAA,IACA,CAACtH,CAAO;AAAA,EAAA,GAGJuH,IAAuBlN;AAAA,IAC3B,CAAC2J,MAA8B;AAC7B,MAAA0B,EAAW,CAACS,MAAgB;AAC1B,cAAMqB,IAAqBJ,EAA4BpD,CAAW,GAE5DoC,IAAaD,EAAY,IAAI,CAAC5F,MAAQ;AAC1C,gBAAMkH,IAAsBzD,MAAgBzD,EAAI;AAChD,iBAAO;AAAA,YACL,GAAGA;AAAA,YACH,UAAU,CAACA,EAAI,YAAY,CAACA,EAAI,YAAYkH,IAAsB,CAACD,IAAqBjH,EAAI;AAAA,UAAA;AAAA,QAEhG,CAAC;AAED,eAAAwG,EAAgBX,CAAU,GAEnBA;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACV,GAAY0B,GAA6BL,CAAe;AAAA,EAAA,GAGrDW,IAA8BrN;AAAA,IAClC,CAAC2J,MAC0BhE,EAAQ,OAAO,CAACO,MAAQA,EAAI,SAASyD,KAAe,CAACzD,EAAI,YAAY,CAACA,EAAI,QAAQ,EACnF,SAAS;AAAA,IAEnC,CAACP,CAAO;AAAA,EAAA,GAGJoC,IAAgB1K,GAAQ,MAAM;AAClC,UAAM2P,IAAmBrH,EAAQ,OAAO,CAACO,MAAQ,CAACA,EAAI,YAAY,CAACA,EAAI,QAAQ,GACzE+G,IAAuBD,EAAiB,KAAK,CAAC9G,MAAQ,CAACA,EAAI,QAAQ;AACzE,WAAO8G,EAAiB,SAAS,KAAK,CAACC;AAAA,EACzC,GAAG,CAACtH,CAAO,CAAC,GAENmC,IAAgBzK,GAAQ,MAAM;AAClC,UAAM2P,IAAmBrH,EAAQ,OAAO,CAACO,MAAQ,CAACA,EAAI,QAAQ,GACxDoH,IAAwBN,EAAiB,KAAK,CAAC9G,MAAQ,CAACA,EAAI,QAAQ;AAC1E,WAAO8G,EAAiB,SAAS,KAAK,CAACM;AAAA,EACzC,GAAG,CAAC3H,CAAO,CAAC,GAENgH,IAAkBtP,GAAQ,MACLsI,EAAQ,OAAO,CAACO,MAAQ,CAACA,EAAI,YAAY,CAACA,EAAI,QAAQ,EACvD,OAAO,CAACA,MAAQA,EAAI,QAAQ,GACnD,CAACP,CAAO,CAAC,GAENqC,KAAYhI,GAAY,MAAY;AACxC,IAAAqL,EAAW,CAACS,MAAgB;AAC1B,YAAMC,IAAaD,EAAY,IAAI,CAAC5F,OAC3B;AAAA,QACL,GAAGA;AAAA,QACH,UAAU,CAACA,EAAI,YAAY,CAACA,EAAI,WAAW,CAAC6B,IAAgB7B,EAAI;AAAA,MAAA,EAEnE;AAED,aAAAwG,EAAgBX,CAAU,GAEnBA;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAACV,GAAYtD,GAAe2E,CAAe,CAAC;AAI/C,SAAO;AAAA,IACL,MAAA7H;AAAA,IACA,UAAAkE;AAAA,IACA,SAAApD;AAAA,IACA,iBAAAgH;AAAA,IAEA,YAAAtM;AAAA,IACA,MAAAoM;AAAA,IACA,MAAA1I;AAAA,IAEA,OAAA8B;AAAA,IACA,MAAAC;AAAA,IACA,MAAA9B;AAAA,IACA,MAAA4B;AAAA,IAEA,cAAAF;AAAA,IACA,6BAAA2H;AAAA,IACA,sBAAAH;AAAA,IACA,6BAAAH;AAAA,IAEA,eAAAjF;AAAA,IACA,eAAAC;AAAA,IACA,WAAAC;AAAA,IAEA,aAAAlE;AAAA,IACA,cAAAgF;AAAA,IACA,aAAAzE;AAAA,IACA,oBAAAyC;AAAA,IACA,uBAAAC;AAAA,EAAA;AAEJ,GC7SawG,KAAsB,CAACC,GAAmCC,MAAgD;AACrH,EAAID,MAAiB,WAEjBA,IACFC,EAAc,KAAA,IAEdA,EAAc,KAAA;AAElB,GAEMC,KAA8B,CAAC;AAAA,EACnC,cAAAF;AAAA,EACA,KAAAzW,IAAM;AAAA,EACN,UAAAyD,IAAW;AAAA,EACX,MAAAqK,IAAO;AAAA,EACP,UAAA9J;AAAA,EACA,gBAAAkQ;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAlU;AAAA,EACA,kBAAA+T,IAAmB;AAAA,EACnB,GAAGjV;AACL,MAAM;AACJ,QAAMoD,IAAWb,EAAgC,IAAK,GAEhDmV,IAAgB3C;AAAA,IACpB3R;AAAA,IACA0L;AAAA,IACA5L,EAAgB+R,CAAgB;AAAA,IAChCjQ;AAAA,IACAkQ;AAAA,IACAC;AAAA,IACAC;AAAA,IACAlU;AAAA,EAAA;AAGF,EAAAwB,EAAU,MAAM8U,GAAoBC,GAAcC,CAAa,GAAG,CAACA,GAAeD,CAAY,CAAC;AAG/F,QAAMG,IAAYrV,EAAO,EAAK;AAC9B,SAAAG,EAAU,MAAM;AACd,QAAI,CAACkV,EAAU,SAAS;AACtB,MAAAA,EAAU,UAAU;AAEpB,YAAMhI,IAAiC,CAAA;AAEvC,MAAAzO,EAAS,QAAQD,GAAU,CAAC2W,MAAiB;AAC3C,QAAIxW,EAAqCwW,CAAY,KACnD1W,EAAS,QAAQ0W,EAAa,MAAM,UAAU,CAACC,MAAgB;AAC7D,UAAIzW,EAAoCyW,CAAW,KAAKA,EAAY,MAAM,YACxElI,EAAQ,KAAKkI,EAAY,KAAK;AAAA,QAElC,CAAC;AAAA,MAEL,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC5W,CAAQ,CAAC,GAGbwB,EAAU,MAAM;AACd,UAAMqG,IAAkB,CAAClC,MAAoB;;AAC3C,UAAI,CAAC6Q,EAAc,WAAY;AAE/B,YAAMhW,IAASmF,EAAI;AACnB,MAAKnF,OAEDxB,IAAAkD,EAAS,YAAT,QAAAlD,EAAkB,SAASwB,MAG3BA,EAAO,QAAQ,mBAAmB,KAEtCgW,EAAc,KAAA;AAAA,IAChB;AAEA,oBAAS,iBAAiB,aAAa3O,CAAe,GAE/C,MAAM;AACX,eAAS,oBAAoB,aAAaA,CAAe;AAAA,IAC3D;AAAA,EACF,GAAG,CAAC2O,CAAa,CAAC,GAElBvU;AAAA,IACEnC;AAAA,IACAoC;AAAA,IACA;AAAA,MACE,YAAYsU,EAAc;AAAA,MAC1B,MAAMA,EAAc;AAAA,MACpB,MAAMA,EAAc;AAAA,MACpB,OAAOA,EAAc;AAAA,MACrB,MAAMA,EAAc;AAAA,MACpB,iBAAiBA,EAAc;AAAA,MAC/B,aAAaA,EAAc;AAAA,MAC3B,aAAaA,EAAc;AAAA,IAAA;AAAA,IAE7B;AAAA,MACEA,EAAc;AAAA,MACdA,EAAc;AAAA,MACdA,EAAc;AAAA,MACdA,EAAc;AAAA,MACdA,EAAc;AAAA,MACdA,EAAc;AAAA,MACdA,EAAc;AAAA,MACdA,EAAc;AAAA,IAAA;AAAA,EAChB,GAIA,gBAAArX,EAAA,cAACmN,IAAA,EAAwB,OAAOkK,EAAA,GAC9B,gBAAArX,EAAA,cAACkS,IAAA,EAAkB,GAAGvS,GAAO,KAAKoD,GAAU,UAAAqB,EAAA,GACzCvD,CACH,CACF;AAEJ,GCpLa6W,KAA4C,MAAM,gBAAA1X,EAAA,cAAAA,EAAA,UAAA,IAAE,GCgBpD2X,KAA0C,MAAM,gBAAA3X,EAAA,cAAAA,EAAA,UAAA,IAAE,GCZlD4X,KAA2B,CAACC,GAA6CC,MAAwC;AAC5H,MAAI,CAACD,KAAwB,CAACC;AAC5B,WAAO;AAGT,QAAMC,IAAmBD,EAAa,sBAAA,EAAwB,QAAQ,GAEhEE,IADY,OAAO,aAAaD,IACXF,EAAqB;AAEhD,SAAAA,EAAqB,MAAM,OAAO,GAAGG,KAAU,IAAI,IAAIA,CAAM,MACtD;AACT,GAEaC,KAA4D,CAAC;AAAA,EACxE,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,UAAAvX;AACF,MAAM;AACJ,QAAMgX,IAAuB3V,EAAuB,IAAI,GAElDmW,IAAuB,SAEvBxT,IAAcC,GAAA,GAEdwT,IAAaH,KAAgB,IAAI,IAAID,IAAcC,CAAY,KAAK,IAAID,CAAW,IAEnFK,IAAkBzX,EAAS,IAAID,GAAU,CAAC2X,GAAQlR,MAClDA,KAAS6Q,KAAgBnX,EAAewX,CAAM,IACzC9N,GAAa8N,CAAM,IAGrB,IACR,GAEKC,IAAcvW,EAAwB,IAAI,GAC1CwW,IAAYxW,EAA0B,IAAI,GAE1C,CAACyW,GAAmBC,CAAoB,IAAIxW,EAAS,EAAK,GAE1D2S,IAAS,MAAM;;AACnB,IAAA6D,EAAqB,EAAK,IAC1B/Y,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB;AAAA,EACrB,GAEMiV,IAAS,MAAM;;AACnB,IAAA8D,EAAqB,EAAI,IACzB/Y,IAAA4Y,EAAY,YAAZ,QAAA5Y,EAAqB;AAAA,EACvB,GAEMgZ,IAAgB,CAACrS,MAA0C;AAE/D,IADaA,EAAI,SACJ,YAAYiS,EAAY,WACnCA,EAAY,QAAQ,KAAA;AAAA,EAExB,GAEMnQ,IAAc,MAAM;;AACxB,KAAIzI,IAAA4Y,EAAY,YAAZ,QAAA5Y,EAAqB,cACvB4H,IAAAgR,EAAY,YAAZ,QAAAhR,EAAqB,UAErB+D,IAAAiN,EAAY,YAAZ,QAAAjN,EAAqB;AAAA,EAEzB,GAEMsM,IAAe5V,EAAuB,IAAI,GAE1C2E,IAAsB,MAAM;;AAChC,KAAAhH,IAAA4Y,EAAY,YAAZ,QAAA5Y,EAAqB;AAAA,EACvB,GAEM+G,IAAsB,MAAM;;AAChC,KAAA/G,IAAA4Y,EAAY,YAAZ,QAAA5Y,EAAqB;AAAA,EACvB;AAEA,SAAAwC,EAAU,MAAM;AACd,UAAMyW,IAAsBhB,EAAa;AAEzC,WAAIgB,MACFA,EAAoB,iBAAiB,cAAcjS,CAAmB,GACtEiS,EAAoB,iBAAiB,cAAclS,CAAmB,IAGjE,MAAM;AACX,MAAIkS,MACFA,EAAoB,oBAAoB,cAAcjS,CAAmB,GACzEiS,EAAoB,oBAAoB,cAAclS,CAAmB;AAAA,IAE7E;AAAA,EACF,GAAG,CAAA,CAAE,GAGH,gBAAA5G,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK8X;AAAA,MACL,WAAU;AAAA,MACV,aAAa,MAAMF,GAAyBC,EAAqB,SAASC,EAAa,OAAO;AAAA,MAC9F,SAAS,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,IAEhB,gBAAA9X,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACC,KAAKqN;AAAA,QACL,WAAU;AAAA,QACV,SAASpQ;AAAA,QACT,WAAWuQ;AAAA,QACX,MAAK;AAAA,QACL,iBAAeF;AAAA,QACf,iBAAe,GAAG9T,CAAW;AAAA,QAC7B,cAAYyT;AAAA,MAAA;AAAA,MAEZ,gBAAAtY,EAAA,cAAC,QAAA,EAAK,eAAW,GAAA,GAAEsY,CAAW;AAAA,IAAA;AAAA,IAGhC,gBAAAtY,EAAA,cAAC,SAAI,WAAWqY,EAAA,mCACb,OAAA,EAAI,KAAKR,GAAsB,WAAU,gDAAA,GACxC,gBAAA7X,EAAA;AAAA,MAACsX;AAAA,MAAA;AAAA,QACC,IAAI,GAAGzS,CAAW;AAAA,QAClB,KAAK4T;AAAA,QACL,QAAA1D;AAAA,QACA,QAAAD;AAAA,QACA,MAAK;AAAA,QACL,kBAAgB;AAAA,MAAA;AAAA,MAEhB,gBAAA9U,EAAA,cAAC0X,IAAA,EAAgB,MAAM,eAAe7S,CAAW,IAAI,cAAYuT,EAAA,GAC9DG,EAAgB,IAAI,CAACC,GAAQlR,MAAU;;AACtC,cAAMyR,IAAY,gBAAgBlU,CAAW,WAAWyC,CAAK;AAC7D,eAAIkR,EAAO,MAAM,eAAe,aAE5B,gBAAAxY,EAAA;AAAA,UAAC2X;AAAA,UAAA;AAAA,YACC,KAAKoB;AAAA,YACL,SAAOlZ,IAAA2Y,EAAO,MAAM,gBAAb,gBAAA3Y,EAA0B,eAAc;AAAA,YAC/C,SAAO;AAAA,YACP,MAAM2Y,EAAO,MAAM;AAAA,YACnB,cAAa;AAAA,UAAA;AAAA,UAEZA,EAAO,MAAM;AAAA,QAAA,IAKhB,gBAAAxY,EAAA,cAAC2X,IAAA,EAAe,KAAKoB,GAAW,SAAOtR,IAAA+Q,EAAO,MAAM,gBAAb,gBAAA/Q,EAA0B,eAAc,GAAA,GAC7E,gBAAAzH,EAAA,cAAC,SAAI,WAAU,0BAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,uBAAA,GAAwBwY,CAAO,GAC7CA,EAAO,MAAM,WAChB,CACF;AAAA,MAGN,CAAC,CACH;AAAA,IAAA,CAEJ,CACF;AAAA,EAAA;AAGN,GCxJMQ,KAAoC,CAAC;AAAA,EACzC,WAAApY;AAAA,EACA,UAAAC;AAAA,EACA,cAAAsX;AAAA,EACA,UAAA/T;AAAA,EACA,uBAAAgU;AAAA,EACA,GAAGzY;AACL,MAAoB;AAClB,QAAMsZ,IAAyBnU,GAAA,GAEzBoU,IAAqB9a,EAAW,gBAAgBwC,GAAW;AAAA,IAC/D,aAAaiC,EAAgBuB,CAAQ;AAAA,EAAA,CACtC,GAEK8T,IAAcpX,EAAS,QAAQD,CAAQ,EAAE,QACzCsY,IAAsBhB,KAAgBD,GAEtCkB,IAAuB,CAACrY,GAAkCuG,MAAkB;AAChF,UAAMH,IAAK,gBAAgB8R,CAAsB,WAAW3R,CAAK;AAEjE,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAKmH,EAAA,GACNuD,GAA0B3J,GAAO;AAAA,MAChC,UAAAqD;AAAA,IAAA,CACc,CAClB;AAAA,EAEJ;AAEA,SACE,gBAAApE,EAAA,cAAC,MAAA,EAAI,GAAGL,GAAO,WAAWuZ,EAAA,GACvBpY,EAAS,IAAID,GAAU,CAACE,GAAOuG,MAC1BA,IAAQ6R,KAAuBnY,EAAeD,CAAK,IAC9CqY,EAAqBrY,GAAOuG,CAAK,IAGnC,IACR,GACA4Q,IAAciB,qCACZ,MAAA,EAAG,KAAK,gBAAgBF,CAAsB,iBAAA,GAC7C,gBAAAjZ,EAAA;AAAA,IAACiY;AAAA,IAAA;AAAA,MACC,cAAckB;AAAA,MACd,aAAAjB;AAAA,MACA,uBAAAE;AAAA,IAAA;AAAA,IAECvX;AAAA,EAAA,CAEL,CAEJ;AAEJ,GC5CMwY,KAAgC,CAAC;AAAA,EACrC,KAAA1Y,IAAM;AAAA,EACN,gBAAA2Y,IAAiB;AAAA,EACjB,kBAAAzM,IAAmB;AAAA,EACnB,iBAAA5B,IAAkB;AAAA,EAClB,iBAAAsO;AAAA,EACA,cAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,GAAG9Z;AACL,MAAoB;AAClB,QAAM+Z,IAAqBtb,EAAW,sCAAsCuB,EAAM,SAAS,GACrFkF,IAAcC,GAAA,GACdgF,IAAa,EAAE,GAAGnK,EAAA;AACxB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM8U,IAAU,MAAM;AACpB,WAAO,SAAS;AAAA,MACd,KAAK;AAAA,MACL,UAAU;AAAA,IAAA,CACX;AAAA,EACH;AAEA,SACE,gBAAA3Z,EAAA;AAAA,IAAC8I;AAAA,IAAA;AAAA,MACC,IAAI,WAAWgB,EAAW,EAAE;AAAA,MAC5B,SAASwP;AAAA,MACT,WAAWzM;AAAA,MACX,UAAU5B;AAAA,MACV,UAAUsO;AAAA,MACV,OAAOC;AAAA,MACP,aAAaC;AAAA,IAAA;AAAA,IAEb,gBAAAzZ,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACE,GAAGvB;AAAA,QACJ,KAAAnJ;AAAA,QACA,SAAO;AAAA,QACP,aAAY;AAAA,QACZ,kBAAiB;AAAA,QACjB,UAAQ;AAAA,QACR,SAASgZ;AAAA,QACT,WAAWD;AAAA,MAAA;AAAA,IAAA;AAAA,EACb;AAGN,GCpEaE,KAAyC,CAAC,EAAE,OAAAC,GAAO,UAAAzV,GAAU,GAAGzE,QAAY;AACvF,QAAMkF,IAAcC,GAAA,GAEdF,IAAYjF,EAAM,YAAY,KAAK,cAEnCma,IAAsB1b,EAAWuB,EAAM,WAAW,0BAA0B,GAC5EwB,IAAgB/C,EAAW,YAAY;AAAA,IAC3C,cAAcgG;AAAA,IACd,mCAAmC,CAACA;AAAA,EAAA,CACrC;AAED,SACE,gBAAApE,EAAA,cAAC,OAAA,EAAI,WAAW8Z,GAAqB,cAAYlV,KAC/C,gBAAA5E,EAAA,cAAC,MAAA,EAAG,WAAU,sCAAA,GACX6Z,EAAM,IAAI,CAACE,GAAMzS,MAAU;AAC1B,UAAM5I,IAAM,GAAGmG,CAAW,IAAIyC,CAAK;AAEnC,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAAtB,GAAU,WAAU,6BAAA,GACrB4I,MAAU,KAAK,gBAAAtH,EAAA,cAACI,IAAA,EAAK,MAAK,4BAA2B,YAAW,KAAI,eAAY,QAAO,WAAWe,EAAA,CAAe,GACjHmG,MAAUuS,EAAM,SAAS,KAAK,CAACE,EAAK,MACnC,gBAAA/Z,EAAA,cAAC,QAAA,EAAK,gBAAa,OAAA,GAAQ+Z,EAAK,KAAM,IAEtC,gBAAA/Z,EAAA;AAAA,MAAC2H;AAAA,MAAA;AAAA,QACC,UAAAvD;AAAA,QACA,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,MAAM2V,EAAK;AAAA,QACX,WAAU;AAAA,MAAA;AAAA,MAETA,EAAK;AAAA,IAAA,CAGZ;AAAA,EAEJ,CAAC,CACH,CACF;AAEJ,GCrCaC,KAAwC,CAAC,EAAE,cAAAC,GAAc,OAAAJ,GAAO,UAAAzV,GAAU,GAAGzE,QAAY;;AACpG,QAAMkF,IAAcC,GAAA,GACd,CAACoV,GAAYC,CAAa,IAAI/X,EAAS,EAAK,GAC5CsW,IAAYxW,EAA0B,IAAI,GAC1CkY,IAAUlY,EAAyB,IAAI,GACvC4X,IAAsB1b,EAAWuB,EAAM,WAAW,yBAAyB,GAC3E0a,IAAoB,MAAM,KAAK,EAAE,QAAQR,EAAM,OAAA,GAAU,CAACzW,GAAGkE,MAAU,GAAGA,IAAQ,CAAC,IAAI,GAEvF1C,IAAYjF,EAAM,YAAY,KAAK,cAKnC2a,IAAwB,CAAC9T,MAAoB;AACjD,IAAI4T,KAAA,QAAAA,EAAS,WAAW5T,EAAI,UAAU,CAAC4T,EAAQ,QAAQ,SAAS5T,EAAI,MAAqB,KACvF2T,EAAc,EAAK;AAAA,EAEvB,GAEMI,IAAe,CAAC/T,MAA+C;;AACnE,UAAMgU,KAAW3a,IAAAua,EAAQ,YAAR,gBAAAva,EAAiB,iBAAiB,MAE7C4a,IADSjU,EAAI,OACS;AAE5B,IAAIgU,KAAYA,EAAS,SAAS,MAC5BhU,EAAI,WACegU,EAAS,CAAC,EAAE,eACZC,MACnBjU,EAAI,eAAA,IACJiB,IAAA+S,EAASA,EAAS,SAAS,CAAC,MAA5B,QAAA/S,EAA+B,WAGH+S,EAASA,EAAS,SAAS,CAAC,EAAE,eAC9BC,MAC5BjU,EAAI,eAAA,IACJgF,IAAAgP,EAAS,CAAC,MAAV,QAAAhP,EAAa;AAAA,EAIrB,GAKMkP,IAA6B,CAAClU,MAA+C;;AACjF,KAAIA,EAAI,QAAQ,YAAYA,EAAI,QAAQ,WACtC2T,EAAc,EAAK,IACnBta,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB,UAGjB2G,EAAI,QAAQ,SACd+T,EAAa/T,CAAG,GAGdA,EAAI,QAAQ,WACd2T,EAAc,EAAK;AAAA,EAEvB;AAKA,EAAA9X,EAAU,MAAM;;AACd,QAAI6X,GAAY;AACd,eAAS,iBAAiB,aAAaI,CAAqB;AAK5D,YAAMK,KAAY9a,IAAAua,EAAQ,YAAR,gBAAAva,EAAiB,iBAAiB;AACpD,MAAI8a,MAAaA,KAAA,gBAAAA,EAAW,UAAS,OACnClT,IAAAkT,EAAU,CAAC,MAAX,QAAAlT,EAAc;AAAA,IAElB;AAEA,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa6S,CAAqB;AAAA,IACjE;AAAA,EACF,GAAG,CAACJ,CAAU,CAAC;AAKf,QAAMU,IAAa,MAAM;AACvB,IAAAT,EAAc,CAAC5U,MACN,CAACA,CACT;AAAA,EACH;AAEA,SACE,gBAAAvF,EAAA,cAAC,OAAA,EAAI,cAAY4E,GAAW,WAAWkV,KACrC,gBAAA9Z,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,KAAKqN;AAAA,MACL,iBAAewB;AAAA,MACf,iBAAe,gCAAgCrV,CAAW;AAAA,MAC1D,SAAS+V;AAAA,MACT,SAAO;AAAA,MACP,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,UAAU/X,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,KAEjCvE,IAAAga,EAAM,GAAG,EAAE,MAAX,gBAAAha,EAAc;AAAA,EAAA,GAGjB,gBAAAG,EAAA,cAAC,MAAA,EAAG,IAAI,gCAAgC6E,CAAW,IAAI,WAAW,GAAIqV,IAAwB,SAAX,QAAiB,IAAI,KAAKE,EAAA,GAC1GH,KACC,gBAAAja,EAAA,cAAC,MAAA,MACC,gBAAAA,EAAA,cAAC,KAAA,EAAE,WAAU,+GAAA,GACVia,CACH,CACF,GAEDJ,EAAM,IAAI,CAACE,GAAMzS,MAAU;AAC1B,UAAMH,IAAK,gCAAgCtC,CAAW,GAAGyC,CAAK,IACxDuT,IAAuBR,EAAkB/S,CAAK;AAEpD,WAAIA,MAAUuS,EAAM,SAAS,KAAK,CAACE,EAAK,sCAEnC,MAAA,EAAG,IAAA5S,GAAQ,KAAKA,GAAI,OAAO,EAAE,aAAa0T,EAAA,KACzC,gBAAA7a,EAAA,cAAC,UAAK,gBAAa,QAAO,WAAU,wCAAA,GACjC+Z,EAAK,KACR,CACF,IAKF,gBAAA/Z,EAAA,cAAC,QAAG,IAAAmH,GAAQ,KAAKA,GAAI,OAAO,EAAE,aAAa0T,EAAA,EAAqB,GAC9D,gBAAA7a,EAAA,cAAC2H,MAAO,SAAQ,WAAU,YAAW,QAAO,MAAMoS,EAAK,KAAK,WAAWW,EAAA,GACpEX,EAAK,KACR,CACF;AAAA,EAEJ,CAAC,CACH,CACF;AAEJ,GCpHae,KAAkC,CAAC,EAAE,OAAAjB,GAAO,GAAGla,QAAY;AACtE,QAAMob,IAAc3c,EAAW,oBAAoBuB,EAAM,WAAW;AAAA,IAClE,aAAakD,EAAgBlD,EAAM,QAAQ;AAAA,EAAA,CAC5C,GAEKqb,IAA8B5c,EAAW2c,GAAa,mBAAmB,GACzEE,IAA6B7c,EAAW2c,GAAa,mBAAmB;AAE9E,2DAEI,gBAAA/a,EAAA,cAAC4Z,IAAA,EAAmB,GAAGja,GAAO,OAAAka,GAAc,WAAWmB,GAA6B,GACpF,gBAAAhb,EAAA,cAACga,MAAkB,GAAGra,GAAO,OAAAka,GAAc,WAAWoB,GAA4B,CACpF;AAEJ,GC6BaC,KAA8B,CACzCC,GACApY,GACAqY,GACAC,GACAC,GACAC,MACG;;AACH,QAAM,EAAE,OAAAlW,EAAA,IAAU9B,GAAA;AAClB,MAAI4X,EAA0B;AAC9B,QAAMK,MAAwB3b,IAAAkD,EAAS,YAAT,gBAAAlD,EAAkB,gBAAe;AAE/D,EAAI2b,IAAwBF,KAC1BC,EAAkBC,CAAqB,GAGrCF,IAAiBjW,KAAS+V,MAAqB,gBACjDC,EAAoB,UAAU,GAG5BC,KAAkBjW,KAAS+V,MAAqB,cAClDC,EAAoB,YAAY;AAEpC,GAEMI,KAAoC,CAAC;AAAA,EACzC,KAAA9a,IAAM;AAAA,EACN,YAAAiH,IAAa;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAA1D,IAAW;AAAA,EACX,aAAAsX,IAAc;AAAA,EACd,UAAAC,IAAW;AAAA,EACX,OAAOC;AAAA,EACP,cAAAC;AAAA,EACA,UAAUC;AAAA,EACV,WAAAlb;AAAA,EACA,UAAAC;AAAA,EACA,GAAGlB;AACL,MAAM;AACJ,QAAM,CAACyb,GAAkBC,CAAmB,IAAIjZ,EAASsZ,CAAW,GAC9D,CAACJ,GAAgBC,CAAiB,IAAInZ,EAAS,CAAC,GAEhDyC,IAAcC,GAAA,GACdiX,IAAuB3d;AAAA,IAC3B;AAAA,IACAgd;AAAA,IACA,EAAE,SAASxT,MAAe,SAAA;AAAA,IAC1B,EAAE,OAAOA,MAAe,OAAA;AAAA,IACxB,EAAE,cAAc/E,EAAgBiF,CAAS,EAAA;AAAA,IACzClH;AAAA,EAAA,GAGImE,IAAe,OAAO6W,IAAmB,KAEzC5W,IAAkB,OAAO6W,IAAiB,KAC1CG,IAAqBhX,IAAoB,MAAM,QAAQ6W,CAAY,IAAqBA,IAAjB,CAACA,CAAY,IAAoB,CAAA,GAExG,CAACI,GAAeC,CAAgB,IAAI9Z,EAAS4C,IAAkBgX,IAAqB,EAAE,GAEtF/d,IAAQ8G,IAAiB,MAAM,QAAQ6W,CAAc,IAAuBA,IAAnB,CAACA,CAAc,IAAsBK,GAE9FxR,IAAiB3J,EAAS,IAAID,GAAU,CAACE,GAAOuG,MAAU;AAC9D,QAAI,CAACtG,EAA4BD,CAAK;AACpC,aAAO;AAGT,UAAMob,IAAmBpb,EAAM,MAAM,SAAS,GAAG8D,CAAW,MAAMyC,CAAK,IAIjE8U,IAAY,CAAC,EAFGvZ,EAAgB8Y,CAAQ,IAAI1d,IAAQ,CAACA,EAAM,CAAC,CAAC,GAEjC,KAAK,CAACoe,MAAOA,MAAOF,CAAgB,GAEhExX,IAAW,CAAC6B,MAAuC;AACvD,UAAI3D,EAAgB8Y,CAAQ,GAAG;AAC7B,YAAIW,IAAU,CAAC,GAAGre,CAAK;AACvB,QAAIqe,EAAQ,KAAK,CAACC,MAAMA,MAAM/V,EAAI,OAAO,KAAK,IAC5C8V,IAAUA,EAAQ,OAAO,CAACC,MAAMA,MAAM/V,EAAI,OAAO,KAAK,IAEtD8V,EAAQ,KAAK9V,EAAI,OAAO,KAAK,GAG/B0V,EAAiBI,CAAO,GAExBR,KAAA,QAAAA,EAAoBQ;AAAA,MACtB,OAAO;AACL,cAAME,IAAS,CAAChW,EAAI,OAAO,KAAK;AAChC,QAAAsV,KAAA,QAAAA,EAAoBU,IACpBN,EAAiBM,CAAM;AAAA,MACzB;AAAA,IACF;AAEA,WAAO9R,GAAa3J,GAAO;AAAA,MACzB,YAAA6G;AAAA,MACA,SAAAC;AAAA,MACA,WAAWhF,EAAgBiF,CAAS;AAAA,MACpC,UAAUjF,EAAgBuB,CAAQ;AAAA,MAClC,OAAO+X;AAAA,MACP,SAASC;AAAA,MACT,gBAAgB;AAAA,MAChB,UAAAzX;AAAA,IAAA,CACD;AAAA,EACH,CAAC,GAEK5B,IAAWb,EAAuB,IAAI;AAC5C,SAAAY;AAAA,IACEnC;AAAA,IACAoC;AAAA,IACA;AAAA,MACE,OAAOkZ;AAAA,IAAA;AAAA,IAET,CAACA,CAAa;AAAA,EAAA,GAKhBf,GAFiC,CAAC,EAAEQ,MAAgB,cAAc5T,IAEZ/E,GAAUqY,GAAkBC,GAAqBC,GAAgBC,CAAiB,GAGtI,gBAAAvb,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,KAAKoD,GAAU,WAAWgZ,GAAsB,MAAMlZ,EAAgB8Y,CAAQ,IAAI,UAAU,gBACzGlR,CACH;AAEJ,GC9JMgS,KAAoC,CAAC;AAAA,EACzC,SAAA5U,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAAjH;AAAA,EACA,UAAAuD;AAAA,EACA,aAAAsX,IAAc;AAAA,EACd,GAAG/b;AACL,MAAM;AACJ,QAAM,CAACyb,GAAkBC,CAAmB,IAAIjZ,EAASsZ,CAAW,GAC9D,CAACJ,GAAgBC,CAAiB,IAAInZ,EAAS,CAAC,GAChDyC,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM6X,IAAoDzV,GAAQ,MAAM;AACtE,UAAM0V,IAAwC,CAAA;AAE9C,WAAI,MAAM,QAAQ9b,CAAQ,IACxBA,EAAS,QAAQ,CAACE,MAAU;AAC1B,MAAIC,EAA4BD,CAAK,KACnC4b,EAAI,KAAK5b,CAAK;AAAA,IAElB,CAAC,IACQC,EAA4BH,CAAQ,KAC7C8b,EAAI,KAAK9b,CAAQ,GAGZ8b;AAAA,EACT,GAAG,CAAC9b,CAAQ,CAAC,GAEP+b,IAAqBxe;AAAA,IACzB;AAAA,IACA0L,EAAW;AAAA,IACXsR;AAAA,IACA,EAAE,MAAMvY,EAAgBiF,CAAS,EAAA;AAAA,IACjC,EAAE,UAAUjF,EAAgBuB,CAAQ,EAAA;AAAA,EAAE,GAGlCyY,IAAuBze,EAAW,sBAAsB,EAAE,SAAS,CAACyE,EAAgBiF,CAAS,GAAG,GAEhG/E,IAAWb,EAAO,IAAI;AAI5B,SAAAgZ,GAFiC,CAAC,EAAEQ,MAAgB,cAAc5T,IAEZ/E,GAAUqY,GAAkBC,GAAqBC,GAAgBC,CAAiB,GAGtI,gBAAAvb,EAAA,cAAC,OAAA,EAAI,KAAK+C,GAAU,WAAW8Z,EAAA,GAE7B,gBAAA7c,EAAA,cAAC,OAAA,EAAK,GAAG8J,GAAY,WAAW8S,GAAoB,MAAK,SAAQ,cAAY9S,EAAW,YAAY,GAAG,IAAIA,EAAW,GAAA,GACnHhJ,EAAS,IAAI4b,GAAiB,CAAC3b,GAAOuG,MAC9BoD,GAA0B3J,GAAO;AAAA,IACtC,GAAGA,EAAM;AAAA,IACT,IAAIA,EAAM,MAAM,MAAM,GAAG+I,EAAW,EAAE,WAAWxC,CAAK;AAAA,IACtD,SAAAO;AAAA,IACA,YAAY;AAAA,IACZ,SAAS,CAACrB,MAAQ;;AAChB,OAAAiB,KAAA5H,IAAAkB,EAAM,OAAM,YAAZ,QAAA0G,EAAA,KAAA5H,GAAsB2G;AAAA,IACxB;AAAA,IACA,UAAU3D,EAAgBuB,CAAQ;AAAA,EAAA,CACpB,CACjB,CACH,CACF;AAEJ,GC5Da0Y,KAAsB,CAAC;AAAA,EAClC,YAAAlV,IAAa;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,UAAAhH;AAAA,EACA,WAAAD;AAAA,EACA,UAAAmc,IAAW;AAAA,EACX,MAAAtZ,IAAO;AAAA,EACP,UAAAW,IAAW;AAAA,EACX,GAAGzE;AACL,MAAM;AAIJ,QAAMqd,IAAgB5e;AAAA,IACpB;AAAA,MACE,2CAA2C,CAACuB,EAAM;AAAA,MAClD,uBAAuBkD,EAAgBka,CAAQ;AAAA,MAC/C,oBAAoBtZ,MAAS;AAAA,MAC7B,aAAaZ,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,IAGvC,yBAAyBwD,CAAU,IAAIC,CAAO;AAAA,IAC9CjH;AAAA,EAAA;AAGF,SACE,gBAAAZ,EAAA,cAAC,QAAA,EAAK,WAAWgd,GAAgB,GAAGrd,EAAA,GAClC,gBAAAK,EAAA,cAAC,QAAA,EAAK,WAAU,mBAAA,GAAoBa,CAAS,CAC/C;AAEJ,GCzEMoc,KAAiB,CAAC,EAAE,eAAAC,GAAe,WAAAC,GAAW,aAAAC,IAAc,SAA6B;AAC7F,QAAMC,IAAezT,GAAY,MAAM;;AACrC,UAAMrI,IAAQ,IAAI,WAAW,SAAS;AAAA,MACpC,QAAQ;AAAA,IAAA,CACT;AAED,KAAA1B,IAAAsd,EAAU,YAAV,QAAAtd,EAAmB,cAAc0B;AAAA,EACnC,GAAG,CAAC4b,CAAS,CAAC,GAERG,IAAwB1T;AAAA,IAC5B,CAACpD,MAAoB;AACnB,YAAMnF,IAASmF,EAAI;AACnB,MAAInF,EAAO,YAAY,OAAO,CAACA,EAAO,QAAQ,KAAK,MAKjDmF,EAAI,gBAAA,GACJA,EAAI,eAAA,GACJ6W,EAAA;AAAA,IAEJ;AAAA,IACA,CAACA,CAAY;AAAA,EAAA,GAGTxW,IAAsB+C,GAAY,MAAM;AAC5C,KAACuT,KAAA,gBAAAA,EAAW,SAA8B,UAAU,IAAI,OAAO;AAAA,EACjE,GAAG,CAACA,CAAS,CAAC,GAERvW,IAAsBgD,GAAY,MAAM;AAC5C,KAACuT,KAAA,gBAAAA,EAAW,SAA8B,UAAU,OAAO,OAAO;AAAA,EACpE,GAAG,CAACA,CAAS,CAAC;AAEd,EAAA9a,EAAU,MAAM;AACd,UAAMkb,IAAgBJ,KAAA,gBAAAA,EAAW,SAC3BK,IAAiBN,KAAA,gBAAAA,EAAe;AAEtC,WAAIM,KAAkBD,MAChBH,KACFI,EAAe,UAAU,IAAI,cAAc,GAC3CA,EAAe,iBAAiB,SAASF,GAAuB,EAAI,GACpEE,EAAe,iBAAiB,cAAc3W,CAAmB,GACjE2W,EAAe,iBAAiB,aAAa3W,CAAmB,GAChE2W,EAAe,iBAAiB,cAAc5W,CAAmB,MAEjE4W,EAAe,UAAU,OAAO,cAAc,GAC9CA,EAAe,oBAAoB,SAASF,GAAuB,EAAI,GACvEE,EAAe,oBAAoB,cAAc3W,CAAmB,GACpE2W,EAAe,oBAAoB,cAAc5W,CAAmB,KAIjE,MAAM;AACX,MAAI4W,MACFA,EAAe,UAAU,OAAO,cAAc,GAC9CA,EAAe,oBAAoB,SAASF,GAAuB,EAAI,GACvEE,EAAe,oBAAoB,cAAc3W,CAAmB,GACpE2W,EAAe,oBAAoB,aAAa3W,CAAmB,GACnE2W,EAAe,oBAAoB,cAAc5W,CAAmB;AAAA,IAExE;AAAA,EACF,GAAG,CAACsW,GAAeC,GAAWC,GAAaC,GAAcC,GAAuBzW,GAAqBD,CAAmB,CAAC;AAC3H,GChBa6W,KAAoC,CAAC;AAAA,EAChD,SAAAC,IAAU;AAAA,EACV,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAR,IAAc;AAAA,EACd,UAAAvc;AAAA,EACA,OAAAgd;AAAA,EACA,cAAcC,IAAU;AAAA,EACxB,OAAA5U;AAAA,EACA,UAAA6U;AAAA,EACA,SAAAlW,IAAU;AAAA,EACV,WAAAjH;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAMqe,IAAiB9b,EAA8B,IAAI,GACnD+b,IAAuB/b,EAAiC,IAAI,GAE5Dgc,IAAa,CAAChV,KAAS,CAAC6U,KAAY,CAACld,KAAY,CAAC6c,KAAW,CAAC,CAACE,KAAc,CAACA,EAAW,QAEzFO,IAAmB;AAAA,IACvB,OAAO,CAAC,CAACjV;AAAA,IACT,UAAU,CAACA,KAAS,CAAC,CAAC6U;AAAA,IACtB,UAAU,CAAC7U,KAAS,CAAC6U,KAAY,CAAC,CAACld;AAAA,IACnC,MAAM,CAACqI,KAAS,CAAC6U,KAAY,CAACld,KAAY,CAAC,CAAC6c;AAAA,IAC5C,QAAQQ;AAAA,EAAA,GAGJE,IAAkB;AAAA,IACtB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,IACV,UAAU;AAAA,IACV,MAAM;AAAA,EAAA;AAGR,MAAIC,IAA+B,EAAE,GAAGT,EAAA;AAExC,EAAIA,MACFS,IAAkB;AAAA,IAChB,GAAGT;AAAA,EAAA,GAGDS,EAAgB,WAAW,CAACA,EAAgB,gBAAgB,CAACA,EAAgB,gBAC/EA,EAAgB,eAAe,iCAC/BA,EAAgB,oBAAoB,mCAGlCT,EAAW,UAEb,OAAOS,EAAgB,QAGvBD,EAAgB,QAAQ,CAAC,CAAClV,GAC1BkV,EAAgB,WAAW,CAAClV,KAAS,CAAC,CAAC6U,GACvCK,EAAgB,WAAW,CAAClV,KAAS,CAAC6U,KAAY,CAAC,CAACld,GACpDud,EAAgB,OAAO,CAAClV,KAAS,CAAC6U,KAAY,CAACld,KAAY,CAAC,CAAC6c,KAE7DU,EAAgB,SAAS;AAI7B,QAAME,IAAY,CAAC1b,GAAiB2b,GAA0BC,GAAmBC,MAC1ED,IAKH,gBAAAxe,EAAA,cAAAA,EAAA,UAAA,MACGye,KACC,gBAAAze,EAAA,cAAC8d,GAAA,MACC,gBAAA9d,EAAA,cAAC2H,IAAA,EAAQ,GAAG4W,GAAa,YAAW,QAAO,KAAKN,EAAA,GAC7Crb,CACH,CACF,GAED,CAAC6b,KACA,gBAAAze,EAAA,cAAC2H,IAAA,EAAQ,GAAG4W,GAAa,YAAW,QAAO,KAAKN,EAAA,GAC7Crb,CACH,CAEJ,IAjBO6b,IAAY,gBAAAze,EAAA,cAAC8d,GAAA,MAASlb,CAAK,IAAaA;AAqBnD,EAAAqa,GAAe;AAAA,IACb,eAAee;AAAA,IACf,WAAWC;AAAA,IACX,aAAapb,EAAgBua,CAAW;AAAA,EAAA,CACzC;AAED,QAAMsB,IAAiBtgB;AAAA,IACrB;AAAA,IACA,EAAE,UAAUyJ,MAAY,WAAA;AAAA,IACxB,EAAE,SAASA,MAAY,UAAA;AAAA,IACvBjH;AAAA,IACA,EAAE,aAAa,CAAC,CAACid,EAAA;AAAA,IACjB,EAAE,eAAeK,EAAA;AAAA,EAAW,GAGxBS,IAA4BvgB;AAAA,IAChC;AAAA,IACA,EAAE,aAAaigB,KAAA,gBAAAA,EAAiB,SAAA;AAAA,IAChC,EAAE,gBAAgB,CAACH,EAAA;AAAA,EAAW;AAGhC,SACE,gBAAAle,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,MAAK,gBAAe,KAAKqe,GAAgB,WAAWU,EAAA,GACjEb,KACC,gBAAA7d,EAAA,cAAC,SAAI,WAAU,yBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAK6d,EAAM,KAAK,WAAU,qBAAoB,KAAKA,EAAM,KAAK,CACrE,GAGF,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GACZ0d,KAAWC,qCACT,OAAA,EAAI,WAAU,iBAAA,GACb,gBAAA3d,EAAA,cAAC8c,IAAA,EAAM,GAAGa,KAAOW,EAAUX,EAAK,UAAUU,GAAiBD,EAAgB,MAAMD,EAAiB,IAAI,CAAE,CAC1G,GAGDJ,KACC,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAA,GACZse,EAAUP,GAAUM,GAAiBD,EAAgB,UAAUD,EAAiB,QAAQ,CAC3F,GAGDjV,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,kBAAA,GAAmBse,EAAUpV,GAAOmV,GAAiBD,EAAgB,OAAOD,EAAiB,KAAK,CAAE,GAE5Htd,KACC,gBAAAb,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAA,GACZse,EAAUzd,GAAUwd,GAAiBD,EAAgB,UAAUD,EAAiB,QAAQ,CAC3F,GAGDC,EAAgB,UACf,gBAAApe,EAAA,cAAC,SAAI,WAAW2e,EAAA,GACbL,EAAUD,EAAgB,UAAUA,GAAiBD,EAAgB,QAAQD,EAAiB,MAAM,CACvG,CAEJ,CACF;AAEJ,GClKaS,KAA0C,CAAC;AAAA,EACtD,cAAcd,IAAU;AAAA,EACxB,UAAAC;AAAA,EACA,OAAA7U;AAAA,EACA,YAAA0U;AAAA,EACA,aAAAR,IAAc;AAAA,EACd,WAAAxc;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAMkf,IAAoB3c,EAA8B,IAAI,GAEtD4c,IAA0B5c,EAAiC,IAAI,GAE/D6c,IAAsB3gB,EAAW,yBAAyBwC,CAAS,GAEnEud,IAAmB;AAAA,IACvB,OAAO,CAAC,CAACjV;AAAA,IACT,UAAU,CAACA,KAAS,CAAC,CAAC6U;AAAA,IACtB,QAAQ,CAAC7U,KAAS,CAAC6U,KAAY,CAAC,CAACH,KAAc,CAACA,EAAW;AAAA,EAAA,GAGvDQ,IAAkB;AAAA,IACtB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,EAAA;AAGZ,MAAIC,IAA+B,EAAE,GAAGT,EAAA;AAExC,EAAIA,MACFS,IAAkB;AAAA,IAChB,GAAGT;AAAA,EAAA,GAGDS,EAAgB,WAAW,CAACA,EAAgB,gBAAgB,CAACA,EAAgB,gBAC/EA,EAAgB,eAAe,iCAC/BA,EAAgB,oBAAoB,mCAGlCT,EAAW,UAEb,OAAOS,EAAgB,QAGvBD,EAAgB,QAAQ,CAAC,CAAClV,GAC1BkV,EAAgB,WAAW,CAAClV,KAAS,CAAC,CAAC6U,KAEvCK,EAAgB,SAAS;AAI7B,QAAME,IAAY,CAAC1b,GAAiB2b,GAA0BC,GAAmBC,MAC1ED,IAKH,gBAAAxe,EAAA,cAAAA,EAAA,UAAA,MACGye,KACC,gBAAAze,EAAA,cAAC8d,GAAA,sCACEnW,IAAA,EAAQ,GAAG4W,GAAa,SAAQ,WAAU,UAAQ,IAAC,YAAW,QAAO,KAAKO,EAAA,GACxElc,CACH,CACF,GAED,CAAC6b,KACA,gBAAAze,EAAA,cAAC2H,IAAA,EAAQ,GAAG4W,GAAa,SAAQ,WAAU,UAAQ,IAAC,YAAW,QAAO,KAAKO,KACxElc,CACH,CAEJ,IAjBO6b,IAAY,gBAAAze,EAAA,cAAC8d,GAAA,MAASlb,CAAK,IAAaA;AAqBnD,EAAAqa,GAAe;AAAA,IACb,eAAe4B;AAAA,IACf,WAAWC;AAAA,IACX,aAAajc,EAAgBua,CAAW;AAAA,EAAA,CACzC;AAED,QAAMuB,IAA4BvgB,EAAW,oBAAoB,EAAE,aAAaigB,KAAA,gBAAAA,EAAiB,UAAU;AAE3G,SACE,gBAAAre,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,MAAK,gBAAe,KAAKkf,GAAmB,WAAWE,KACrE,gBAAA/e,EAAA,cAAC,OAAA,EAAI,WAAU,YAAA,GACZ+d,KACC,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAA,GACZse,EAAUP,GAAUM,GAAiBD,EAAgB,UAAUD,EAAiB,QAAQ,CAC3F,GAGDjV,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAmBse,EAAUpV,GAAOmV,GAAiBD,EAAgB,OAAOD,EAAiB,KAAK,CAAE,GAE5HC,EAAgB,UACf,gBAAApe,EAAA,cAAC,OAAA,EAAI,WAAW2e,EAAA,GACbL,EAAUD,EAAgB,UAAUA,GAAiBD,EAAgB,QAAQD,EAAiB,MAAM,CACvG,CAEJ,GACA,gBAAAne,EAAA,cAAC,OAAA,EAAI,WAAU,iLAAA,GACb,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,eAAW;AAAA,MACX,OAAM;AAAA,MACN,MAAK;AAAA,IAAA;AAAA,oCAEJ,KAAA,EAAE,SAAQ,QAAO,QAAO,SAAQ,aAAY,MAAK,kBAAiB,WAAU,eAAc,QAAA,GACzF,gBAAAA,EAAA,cAAC,QAAA,EAAK,GAAE,4VAA2V,CACrW;AAAA,EAAA,CAEJ,CACF;AAEJ,GCjHagf,KAAwC,CAAC;AAAA,EACpD,MAAAtQ;AAAA,EACA,OAAAxF;AAAA,EACA,aAAAC;AAAA,EACA,YAAA8V;AAAA,EACA,WAAAhW,IAAY;AAAA,EACZ,WAAArI;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAMuf,IAA2B9gB,EAAW,wBAAwB,QAAQ6K,CAAS,IAAIrI,CAAS,GAE5Fue,IAAY;AAAA,IAChB,GAAGzQ;AAAA,IACH,WAAWtQ,EAAW,uBAAuBsQ,KAAA,gBAAAA,EAAM,SAAS;AAAA,EAAA,GAGxD0Q,IAAc;AAAA,IAClB,GAAGH;AAAA,IACH,WAAW7gB,EAAW,yBAAyB6gB,KAAA,gBAAAA,EAAY,SAAS;AAAA,EAAA;AAGtE,SACE,gBAAAjf,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,MAAK,gBAAe,WAAWuf,EAAA,GAC5CxQ,KAAQ,gBAAA1O,EAAA,cAACI,IAAA,EAAM,GAAG+e,GAAW,GAC7BjW,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,uBAAA,GAAwBkJ,CAAM,GACtDC,qCAAgB,OAAA,EAAI,WAAU,gCAA8BA,CAAY,GACxE8V,KAAc,gBAAAjf,EAAA,cAACqL,IAAA,EAAQ,GAAG+T,GAAa,CAC1C;AAEJ,GCvBMC,KAAoC,CAAC;AAAA,EACzC,KAAA1e,IAAM;AAAA,EACN,UAAAyD,IAAW;AAAA,EACX,YAAAwD,IAAa;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAAjH;AAAA,EACA,WAAAD,IAAY;AAAA,EACZ,QAAAwH,IAAS;AAAA,EACT,GAAGzI;AACL,MAAM;AACJ,QAAM2f,IAA2BlhB;AAAA,IAC/B;AAAA,IACA,sBAAsBwJ,CAAU,IAAIC,CAAO;AAAA,IAC3C,EAAE,aAAahF,EAAgBuB,CAAQ,EAAA;AAAA,IAEvC,EAAE,cAAc0D,EAAA;AAAA,IAEhB,EAAE,4BAA4B,CAACnI,EAAM,OAAA;AAAA,IACrC,EAAE,iDAAiD,CAACkD,EAAgBuF,CAAM,EAAA;AAAA,IAC1E,EAAE,iBAAiBvF,EAAgBuF,CAAM,EAAA;AAAA,IAEzCxH;AAAA,EAAA;AAGF,yCACG,QAAA,EAAM,GAAGjB,GAAO,KAAAgB,GAAU,WAAW2e,KACnCze,CACH;AAEJ,GChCa0e,KAAgC,CAAC;AAAA,EAC5C,MAAA7Q;AAAA,EACA,OAAAxF;AAAA,EACA,UAAA6U;AAAA,EACA,aAAA5U;AAAA,EACA,UAAAqW;AAAA,EACA,mBAAAC;AAAA,EACA,UAAArb,IAAW;AAAA,EACX,WAAAxD,IAAY;AAAA,EACZ,GAAGjB;AACL,MAAM;AACJ,QAAM+f,IAAmBthB,EAAW,cAAcyE,EAAgBuB,CAAQ,IAAI,SAAS,WAAWxD,CAAS;AAE3G,SACE,gBAAAZ,EAAA,cAAC,OAAA,EAAI,WAAW0f,GAAmB,GAAG/f,EAAA,GACnC+O,KAAQ,gBAAA1O,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GAAkB0O,CAAK,GAC9CxF,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,QAAA,GAASkJ,CAAM,GACvC6U,KAAY,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,WAAA,GAAY+d,CAAS,GAChD5U,KAAe,gBAAAnJ,EAAA,cAAC,OAAA,EAAI,WAAU,cAAA,GAAemJ,CAAY,GACzDqW,KACC,gBAAAxf,EAAA,cAAC,OAAA,EAAI,WAAU,aACb,gBAAAA,EAAA,cAACqf,IAAA,EAAY,UAAUxc,EAAgBuB,CAAQ,GAAG,SAASvB,EAAgBuB,CAAQ,IAAI,YAAY,UAAA,GAChGob,CACH,CACF,GAEDC,KAAqB,gBAAAzf,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GAAuByf,CAAkB,CAChF;AAEJ,GC/DaE,KAAe,CAAC,EAAE,MAAAC,IAAO,WAAW,SAAAC,IAAU,WAAW,GAAGlgB,QAA+B;AACtG,QAAMmgB,IAAW,EAAE,GAAGngB,EAAA;AACtB,gBAAOmgB,EAAS,KAChB,OAAOA,EAAS,OAChB,OAAOA,EAAS,OAGd,gBAAA9f,EAAA,cAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG8f,GAAU,MAAK,MAAA,GAC/GngB,EAAM,SAAS,gBAAAK,EAAA,cAAC,SAAA,MAAOL,EAAM,KAAM,GACpC,gBAAAK,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,UAAS;AAAA,MACT,GAAE;AAAA,MACF,MAAA4f;AAAA,IAAA;AAAA,EAAA,GAEF,gBAAA5f,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,UAAS;AAAA,MACT,GAAE;AAAA,MACF,MAAM6f;AAAA,IAAA;AAAA,EAAA,CAEV;AAEJ,GCpBaE,KAAmE;AAAA,EAC9E,OAAS;AAAA,IACP,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,iBAAiB;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,iBAAiB;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAEpB,GCyDMC,KAAwC,CAAC;AAAA,EAC7C,KAAArf,IAAM;AAAA,EACN,UAAAE;AAAA,EACA,SAAAgH,IAAU;AAAA,EACV,cAAAxD;AAAA,EACA,cAAgBC,IAAY;AAAA,EAC5B,WAAA1D,IAAY;AAAA,EACZ,iBAAA2D;AAAA,EACA,UAAYC;AAAA,EACZ,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAcC;AAAA,EACd,YAAAqa;AAAA,EACA,GAAGtf;AACL,MAAoB;AAClB,QAAMkF,IAAcC,GAAA,GAEdC,IAAe,OAAOP,IAAqB,KAE3CQ,IAAkB,OAAOT,IAAmB,KAE5C,CAACU,GAAuBC,CAAwB,IAAI9C,EAAS4C,IAAkBnC,EAAgB0B,CAAe,IAAI,EAAK,GAEvH,EAAE,OAAAc,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAO,EAAA,IAAaF,GAAA,GACf0B,IAAWD,IAAQvB,GAGnByB,IAAWR,IAAelC,EAAgB2B,CAAiB,IAAIS,GAE/Dgb,IAAyB/d,EAA2B,EAAE,MAAM,MAAM,GAClE,CAACsD,GAAgBC,CAAiB,IAAIrD,EAA6B,EAAE,MAAM,MAAM,GAEjFsD,IAAS,MAAM;AACnB,IAAKX,KACHG,EAAyB,EAAI,GAG/BO,EAAkB,EAAE,MAAM,UAAU;AAAA,EACtC,GAEMG,IAAW,MAAM;AACrB,IAAKb,KACHG,EAAyB,EAAK,GAGhCO,EAAkB,EAAE,MAAM,YAAY;AAAA,EACxC,GAEMK,IAAS,MAAM;AAEnB,IAAKf,KACHG,EAAyB,CAACK,CAAQ,GAGhCA,KACFE,EAAkB,EAAE,MAAM,YAAY,GAGnCF,KACHE,EAAkB,EAAE,MAAM,UAAU;AAAA,EAExC,GAEM1C,IAAWb,EAAuB,IAAI,GACtCgB,IAAcJ;AAAA,IAClBnC;AAAA,IACAoC;AAAA,IACA;AAAA,MACE,YAAYwC;AAAA,MACZ,QAAAG;AAAA,MACA,UAAAE;AAAA,MACA,QAAAE;AAAA,IAAA;AAAA,IAEF,CAAC/C,GAAUwC,CAAQ;AAAA,EAAA;AAGrB,MAAIC,EAAe,SAAS,UAAU;AACpC,UAAMQ,IAAc5E,GAAuD8B,EAAY,WAAW,QAAW,QAAQ;AACrH,IAAAuB,KAAA,QAAAA,EAAauB;AAAA,EACf;AAEA,MAAIR,EAAe,SAAS,YAAY;AACtC,UAAMS,IAAe7E,GAAuD8B,EAAY,WAAW,QAAW,UAAU;AACxH,IAAAwB,KAAA,QAAAA,EAAcuB;AAAA,EAChB;AAEA,MAAIT,EAAe,SAASya,EAAuB,QAAQ,MAAM;AAC/D,IAAAA,EAAuB,QAAQ,OAAOza,EAAe;AAErD,UAAMU,IAAY9E,GAAuD8B,EAAY,WAAW,QAAW,QAAQ;AACnH,IAAAyB,KAAA,QAAAA,EAAWuB;AAAA,EACb;AAEA,QAAMC,IAAqB/H;AAAA,IACzB;AAAA,IACAwC;AAAA,IACA;AAAA,MACE,uBAAuB2E;AAAA,MACvB,QAAUD;AAAA,IAAA;AAAA,IAEZuC;AAAA,EAAA,GAEIqY,IAAiBrY,KAAW,iBAAiBA,KAAW,iBAAiBA,KAAW,eACpFzB,IAAyBhI,EAAW,uBAAuB;AAAA,IAC/D,6BAA6BmH;AAAA,IAC7B,mBAAmB2a;AAAA,EAAA,CACpB,GAEK5Z,IAAiB,MAAM;AAC3B,IAAAR,EAAA;AAAA,EACF,GAEMsZ,IAAc;AAAA,IAClB,MAAQ;AAAA,IACR,cAAcxa;AAAA,IACd,YAAc;AAAA,IACd,WAAa;AAAA,IACb,iBAAiBW;AAAA,IACjB,IAAM,wBAAwBV,CAAW;AAAA,IACzC,iBAAiB,wBAAwBA,CAAW;AAAA,IACpD,SAAWyB;AAAA,IACX,SAAWyZ,GAAgClY,CAAO,EAAE;AAAA,IACpD,UAAYkY,GAAgClY,CAAO,EAAE;AAAA,IACrD,SAAW;AAAA,IACX,aAAe;AAAA,IACf,kBAAoB;AAAA,IACpB,GAAGoX;AAAA,EAAA;AAGL,yCACG,OAAA,EAAI,WAAW9Y,GAAqB,GAAGxG,GAAO,KAAKoD,EAAA,GAClD,gBAAA/C,EAAA,cAACsE,GAAA,EAAU,WAAU,4CACnB,gBAAAtE,EAAA,cAACqL,IAAA,EAAQ,GAAG+T,EAAA,GAAc/a,CAAa,CACzC,GACA,gBAAArE,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWoG;AAAA,MACX,IAAI,wBAAwBvB,CAAW;AAAA,MACvC,MAAK;AAAA,MACL,mBAAiB,wBAAwBA,CAAW;AAAA,IAAA;AAAA,IAEpD,gBAAA7E,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GAAoBa,CAAS;AAAA,EAAA,CAEhD;AAEJ,GCxJMsf,KAA0C,CAAC;AAAA,EAC/C,KAAAxf,IAAM;AAAA,EACN,SAAAkH,IAAU;AAAA,EACV,kBAAkBvD,IAAY;AAAA,EAC9B,WAAA8b;AAAA,EACA,cAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,SAAArc;AAAA,EACA,aAAAC;AAAA,EACA,UAAArD;AAAA,EACA,uBAAA0f,IAAwB;AAAA,EACxB,uBAAAC;AAAA,EACA,UAAAjb;AAAA,EACA,iBAAAhB;AAAA,EACA,YAAAE;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAA/D,IAAY;AAAA,EACZ,YAAAqe;AAAA,EACA,GAAGtf;AACL,MAAoB;AAClB,QAAM8gB,IAAwBriB,EAAW,yBAAyB,GAAGyJ,CAAO,IAAIjH,CAAS;AAEzF,SACE,gBAAAZ,EAAA,cAAC,SAAI,WAAWygB,GAAwB,GAAG9gB,EAAA,GACxCkD,EAAgByd,CAAgB,KAAK,gBAAAtgB,EAAA,cAAC2f,IAAA,EAAa,WAAU,iBAAgB,eAAW,GAAA,CAAC,GAE1F,gBAAA3f,EAAA,cAAC,OAAA,EAAI,WAAU,0BAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,yBAAA,GACb,gBAAAA,EAAA,cAAC,SAAI,WAAU,yBAAA,GACZ6C,EAAgBoB,CAAO,KAAKC,qCAAgB9D,IAAA,EAAK,MAAM8D,EAAA,CAAa,GACrE,gBAAAlE,EAAA,cAACsE,GAAA,EAAU,WAAU,eAAA,GAAgB8b,CAAU,CACjD,GACCC,KAAgB,gBAAArgB,EAAA,cAAC,SAAI,WAAU,kBAAA,GAAmBqgB,CAAa,CAClE,GAEA,gBAAArgB,EAAA;AAAA,IAACggB;AAAA,IAAA;AAAA,MACC,SAAAnY;AAAA,MACA,cAAc0Y;AAAA,MACd,cAAcC;AAAA,MACd,UAAAjb;AAAA,MACA,iBAAAhB;AAAA,MACA,YAAAE;AAAA,MACA,aAAAC;AAAA,MACA,UAAAC;AAAA,MACA,KAAAhE;AAAA,MACA,YAAAse;AAAA,IAAA;AAAA,IAECpe;AAAA,EAAA,CAEL,CACF;AAEJ,GC9IM6f,KAAmB,CAAC,EAAE,eAAAxD,GAAe,WAAAC,GAAW,aAAAwD,GAAa,aAAAvD,IAAc,SAA6B;AAC5G,QAAMC,IAAezT,GAAY,MAAM;;AACrC,UAAMrI,IAAQ,IAAI,WAAW,SAAS;AAAA,MACpC,QAAQ;AAAA,IAAA,CACT;AAED,IAAIof,KAAA,QAAAA,EAAa,UACfA,EAAY,QAAQ,iBAAiB,GAAG,EAAE,QAAQ,CAACC,GAAGtZ,MAAU;AAC9D,MAAIA,MAAU,KACZsZ,EAAE,cAAcrf,CAAK;AAAA,IAEzB,CAAC,KAED1B,IAAAsd,EAAU,YAAV,QAAAtd,EAAmB,cAAc0B;AAAA,EAErC,GAAG,CAAC4b,GAAWwD,CAAW,CAAC,GAErBrD,IAAwB1T;AAAA,IAC5B,CAACpD,MAAoB;AACnB,YAAMnF,IAASmF,EAAI;AACnB,MAAInF,EAAO,YAAY,OAAO,CAACA,EAAO,QAAQ,KAAK,MAKjDmF,EAAI,gBAAA,GACJA,EAAI,eAAA,GACJ6W,EAAA;AAAA,IAEJ;AAAA,IACA,CAACA,CAAY;AAAA,EAAA,GAGTxW,IAAsB+C,GAAY,MAAM;AAC5C,IAAI+W,KAAA,QAAAA,EAAa,UACfA,EAAY,QAAQ,iBAAiB,GAAG,EAAE,QAAQ,CAACC,MAAM;AACvD,MAAAA,EAAE,UAAU,IAAI,OAAO;AAAA,IACzB,CAAC,KAEAzD,KAAA,gBAAAA,EAAW,SAA8B,UAAU,IAAI,OAAO;AAAA,EAEnE,GAAG,CAACA,GAAWwD,CAAW,CAAC,GAErB/Z,IAAsBgD,GAAY,MAAM;AAC5C,IAAI+W,KAAA,QAAAA,EAAa,UACfA,EAAY,QAAQ,iBAAiB,GAAG,EAAE,QAAQ,CAACC,MAAM;AACvD,MAAAA,EAAE,UAAU,OAAO,OAAO,GAC1BA,EAAE,UAAU,OAAO,QAAQ;AAAA,IAC7B,CAAC,MAEAzD,KAAA,gBAAAA,EAAW,SAA8B,UAAU,OAAO,OAAO,IACjEA,KAAA,gBAAAA,EAAW,SAA8B,UAAU,OAAO,QAAQ;AAAA,EAEvE,GAAG,CAACA,GAAWwD,CAAW,CAAC,GAErBja,IAAqBkD;AAAA,IACzB,CAACpD,MAAoB;AACnB,YAAMnF,IAASmF,EAAI;AACnB,MAAInF,EAAO,YAAY,OAAO,CAACA,EAAO,QAAQ,KAAK,MAC7Csf,KAAA,QAAAA,EAAa,UAEfA,EAAY,QAAQ,iBAAiB,GAAG,EAAE,QAAQ,CAACC,MAAM;AACvD,QAAAA,EAAE,UAAU,IAAI,QAAQ;AAAA,MAC1B,CAAC,KAEAzD,KAAA,gBAAAA,EAAW,SAA8B,UAAU,IAAI,QAAQ;AAAA,IAGtE;AAAA,IACA,CAACA,GAAWwD,CAAW;AAAA,EAAA,GAGnBha,IAAmBiD,GAAY,MAAM;AACzC,IAAI+W,KAAA,QAAAA,EAAa,UAEfA,EAAY,QAAQ,iBAAiB,GAAG,EAAE,QAAQ,CAACC,MAAM;AACvD,MAAAA,EAAE,UAAU,OAAO,QAAQ;AAAA,IAC7B,CAAC,KAEAzD,KAAA,gBAAAA,EAAW,SAA8B,UAAU,OAAO,QAAQ;AAAA,EAEvE,GAAG,CAACA,GAAWwD,CAAW,CAAC;AAE3B,EAAAte,EAAU,MAAM;AACd,UAAMmb,IAAiBN,KAAA,gBAAAA,EAAe,SAChCK,IAAgBJ,KAAA,gBAAAA,EAAW,SAC3B0D,IAAkBF,KAAA,gBAAAA,EAAa;AAErC,WAAInD,MAAmBqD,KAAmBtD,OACpCH,KACFI,EAAe,UAAU,IAAI,cAAc,GAC3CA,EAAe,iBAAiB,SAASF,GAAuB,EAAI,GACpEE,EAAe,iBAAiB,cAAc3W,CAAmB,GACjE2W,EAAe,iBAAiB,aAAa3W,CAAmB,GAChE2W,EAAe,iBAAiB,cAAc5W,CAAmB,GACjE4W,EAAe,iBAAiB,aAAa9W,CAAkB,GAC/D8W,EAAe,iBAAiB,WAAW7W,CAAgB,MAE3D6W,EAAe,UAAU,OAAO,cAAc,GAC9CA,EAAe,oBAAoB,SAASF,GAAuB,EAAI,GACvEE,EAAe,oBAAoB,cAAc3W,CAAmB,GACpE2W,EAAe,oBAAoB,aAAa3W,CAAmB,GACnE2W,EAAe,oBAAoB,cAAc5W,CAAmB,GACpE4W,EAAe,oBAAoB,aAAa9W,CAAkB,GAClE8W,EAAe,oBAAoB,WAAW7W,CAAgB,KAI3D,MAAM;AACX,MAAI6W,MACFA,EAAe,UAAU,OAAO,cAAc,GAC9CA,EAAe,oBAAoB,SAASF,GAAuB,EAAI,GACvEE,EAAe,oBAAoB,cAAc3W,CAAmB,GACpE2W,EAAe,oBAAoB,aAAa3W,CAAmB,GACnE2W,EAAe,oBAAoB,cAAc5W,CAAmB,GACpE4W,EAAe,oBAAoB,aAAa9W,CAAkB,GAClE8W,EAAe,oBAAoB,WAAW7W,CAAgB;AAAA,IAElE;AAAA,EACF,GAAG;AAAA,IACDuW;AAAA,IACAC;AAAA,IACAC;AAAA,IACAuD;AAAA,IACAha;AAAA,IACAD;AAAA,IACAE;AAAA,IACAC;AAAA,IACAyW;AAAA,IACAD;AAAA,EAAA,CACD;AACH,GClGayD,KAAgC,CAAC;AAAA,EAC5C,WAAAlgB;AAAA,EACA,OAAA2N;AAAA,EACA,cAAcuP,IAAU;AAAA,EACxB,YAAAF;AAAA,EACA,UAAAmD;AAAA,EACA,aAAA3D,IAAc;AAAA,EACd,cAAA4D,IAAe;AAAA,EACf,UAAAngB;AAAA,EACA,GAAGlB;AACL,MAAM;AACJ,QAAMshB,IAAe/e,EAA8B,IAAI,GACjDgf,IAAuBhf,EAAiC,IAAI,GAC5Dif,IAAqBjf,EAA+B,IAAI,GACxDkf,IAAsBhjB,EAAW,oBAAoBwC,CAAS;AAEpE,EAAA8f,GAAiB;AAAA,IACf,eAAeO;AAAA,IACf,WAAWC;AAAA,IACX,aAAaC;AAAA,IACb,aAAate,EAAgBua,CAAW;AAAA,EAAA,CACzC;AAED,QAAMiE,IAA0BjjB,EAAW,kBAAkB,QAAQ4iB,CAAY,IAAIpgB,CAAS;AAE9F,SACE,gBAAAZ,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,MAAK,gBAAe,KAAKshB,GAAc,WAAWG,EAAA,GAC/D7S,KACC,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAU,kBAAA,GACb,gBAAAA,EAAA,cAAC8d,GAAA,MAASvP,CAAM,CAClB,GAGF,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAWqhB,EAAA,GACbxgB,KAAY,gBAAAb,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAsBa,CAAS,GAE1D,CAACkgB,KAAYnD,KACZ,gBAAA5d,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GACb,gBAAAA,EAAA,cAAC2H,IAAA,EAAQ,GAAGiW,GAAY,YAAW,QAAO,KAAKsD,EAAA,CAAsB,CACvE,GAGDH,KACC,gBAAA/gB,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GACb,gBAAAA,EAAA,cAACqf,IAAA,EAAY,KAAK8B,GAAoB,YAAW,UAC9CJ,CACH,CACF,CAEJ,CACF;AAEJ,GCzEaO,KAAwC,CAAC,EAAE,OAAAzD,GAAO,GAAGle,QAAY;AAC5E,QAAM4hB,IAAyBnjB,EAAW,yBAAyBuB,EAAM,SAAS;AAElF,SACE,gBAAAK,EAAA,cAAC,SAAI,WAAWuhB,GAAyB,GAAG5hB,EAAA,GAC1C,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAU,kBAAA,GACb,gBAAAA,EAAA,cAAC,SAAI,WAAU,uBAAA,mCACZ,OAAA,EAAI,WAAU,cAAa,KAAK6d,EAAM,KAAK,KAAKA,EAAM,KAAK,eAAaA,EAAM,aAAa,KAAK,GAAA,CAAM,CACzG,CACF,GACA,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACb,gBAAAA,EAAA,cAAC,SAAI,WAAU,8DAAA,mCACZ,OAAA,EAAI,WAAU,8DAA4DL,EAAM,QAAS,CAC5F,CACF,CACF;AAEJ,GCRa6hB,KAA0C,CAAC;AAAA,EACtD,UAAAzD;AAAA,EACA,cAAcD,IAAU;AAAA,EACxB,OAAA5U;AAAA,EACA,YAAAuY,IAAa,CAAA;AAAA,EACb,WAAA7gB;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEd4c,IAAwBtjB,EAAW,0BAA0BwC,CAAS,GAEtEud,IAAmB;AAAA,IACvB,OAAO,CAAC,CAACjV;AAAA,IACT,UAAU,CAACA,KAAS,CAAC,CAAC6U;AAAA,EAAA,GAGlBO,IAAY,CAAC1b,GAAiB6b,MAC3BA,IAAY,gBAAAze,EAAA,cAAC8d,GAAA,MAASlb,CAAK,IAAaA;AAGjD,SACE,gBAAA5C,EAAA,cAAC,SAAI,WAAW0hB,GAAwB,GAAG/hB,EAAA,IACvCoe,KAAY7U,MACZ,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GACZ+d,qCAAa,OAAA,EAAI,WAAU,wBAAsBO,EAAUP,GAAUI,EAAiB,QAAQ,CAAE,GAChGjV,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,kBAAA,GAAmBse,EAAUpV,GAAOiV,EAAiB,KAAK,CAAE,CACvF,GAGDsD,EAAW,SAAS,qCAClB,MAAA,EAAG,WAAU,oDACXA,KAAA,gBAAAA,EAAY,IAAI,CAACE,GAAOra,MAAU;AACjC,UAAM5I,IAAM,oBAAoBmG,CAAW,sBAAsByC,CAAK;AACtE,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAAtB,GAAU,WAAU,oDACtB,gBAAAsB,EAAA,cAAC,OAAA,MAAK2hB,EAAM,WAAY,GACxB,gBAAA3hB,EAAA,cAAC2H,IAAA,EAAQ,GAAGga,KAAA,gBAAAA,EAAO,QAAQ,CAC7B;AAAA,EAEJ,EACF,CAEJ;AAEJ,GCnDaC,KAAwC,CAAC,EAAE,OAAA1Y,GAAO,cAAc4U,IAAU,MAAM,OAAAxW,GAAO,WAAA1G,GAAW,GAAGjB,QAAY;AAC5H,QAAMkF,IAAcC,GAAA,GAEd+c,IAAwBzjB,EAAW,yBAAyBwC,CAAS;AAE3E,SACE,gBAAAZ,EAAA,cAAC,OAAA,EAAI,WAAW6hB,GAAwB,GAAGliB,KACxCuJ,KAAS,gBAAAlJ,EAAA,cAAC8d,GAAA,EAAQ,WAAU,wBAAA,GAAyB5U,CAAM,GAE3D5B,EAAM,SAAS,KACd,gBAAAtH,EAAA,cAAC,MAAA,EAAG,WAAU,gBACXsH,EAAM,IAAI,CAACwa,GAAW3L,MAAQ;AAC7B,UAAMzX,IAAM,cAAcmG,CAAW,eAAesR,CAAG;AACvD,WACE,gBAAAnW,EAAA,cAAC,MAAA,EAAG,KAAAtB,KACF,gBAAAsB,EAAA,cAAC2H,IAAA,EAAQ,GAAGma,GAAW,YAAW,QAAO,SAAQ,aAC9CA,EAAU,QACb,CACF;AAAA,EAEJ,CAAC,CACH,CAEJ;AAEJ,GCjBaC,KAA4C,CAAC;AAAA,EACxD,aAAA5Y;AAAA,EACA,cAAc2U,IAAU;AAAA,EACxB,OAAA5U;AAAA,EACA,SAAA8Y;AAAA,EACA,iBAAAC;AAAA,EACA,WAAArhB;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GACdod,IAAYF,EAAQ,MAAM,GAAG,CAAC,GAE9BG,IAAyB/jB,EAAW,2BAA2BwC,CAAS,GAExEud,IAAmB;AAAA,IACvB,OAAO,CAAC,CAACjV;AAAA,IACT,aAAa,CAACA,KAAS,CAAC,CAACC;AAAA,EAAA,GAGrBmV,IAAY,CAAC1b,GAAiB6b,MAC3BA,IAAY,gBAAAze,EAAA,cAAC8d,GAAA,MAASlb,CAAK,IAAaA;AAGjD,SACE,gBAAA5C,EAAA,cAAC,SAAI,WAAWmiB,GAAyB,GAAGxiB,EAAA,IACxCuJ,KAASC,MACT,gBAAAnJ,EAAA,cAAC,OAAA,EAAI,WAAU,uCAAA,GACZkJ,qCAAU,OAAA,EAAI,WAAU,qBAAmBoV,EAAUpV,GAAOiV,EAAiB,KAAK,CAAE,GACpFhV,KAAe,gBAAAnJ,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAA,GAAyBse,EAAUnV,GAAagV,EAAiB,WAAW,CAAE,CAC/G,GAGD+D,EAAU,SAAS,qCACjB,MAAA,EAAG,WAAU,mDACXA,KAAA,gBAAAA,EAAW,IAAI,CAACnI,GAAMzS,MAAU;AAC/B,UAAM5I,IAAM,qBAAqBmG,CAAW,sBAAsByC,CAAK;AACvE,2CACG,MAAA,EAAG,KAAA5I,EAAA,mCACDiJ,IAAA,EAAQ,GAAGoS,GAAM,CACpB;AAAA,EAEJ,EACF,GAGDkI,KACC,gBAAAjiB,EAAA;AAAA,IAAC2H;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACV,GAAGsa;AAAA,MACJ,SAASA,EAAgB,WAAW;AAAA,MACpC,cAAcA,EAAgB,gBAAgB;AAAA,MAC9C,mBAAmBA,EAAgB,gBAAgB;AAAA,MAClD,GAAI,EAACA,KAAA,QAAAA,EAAiB,aAAY,EAAE,WAAW,SAAA;AAAA,IAAS;AAAA,EAAA,CAG/D;AAEJ,GC5DaG,KAAkD,CAAC;AAAA,EAC9D,OAAAlZ;AAAA,EACA,UAAA6U;AAAA,EACA,aAAA5U;AAAA,EACA,OAAAkZ;AAAA,EACA,cAAcvE,IAAU;AAAA,EACxB,GAAGne;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdqZ,IAAmB;AAAA,IACvB,OAAO,CAAC,CAACjV;AAAA,IACT,UAAU,CAACA,KAAS,CAAC,CAAC6U;AAAA,IACtB,aAAa,CAAC7U,KAAS,CAAC6U,KAAY,CAAC,CAAC5U;AAAA,EAAA,GAGlCmV,IAAY,CAAC1b,GAAiB6b,MAC3BA,IAAY,gBAAAze,EAAA,cAAC8d,GAAA,MAASlb,CAAK,IAAaA;AAGjD,SACE,gBAAA5C,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAwB,GAAGL,EAAA,IACtCoe,KAAY7U,KAASC,MACrB,gBAAAnJ,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GACZ+d,KAAY,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAA,GAAsBse,EAAUP,GAAUI,EAAiB,QAAQ,CAAE,GAChGjV,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,kBAAA,GAAmBse,EAAUpV,GAAOiV,EAAiB,KAAK,CAAE,GACpFhV,KAAe,gBAAAnJ,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAA,GAAyBse,EAAUnV,GAAagV,EAAiB,WAAW,CAAE,CAC/G,IAGDkE,KAAA,gBAAAA,EAAO,UAAS,KACf,gBAAAriB,EAAA,cAAC,MAAA,EAAG,WAAU,qBACXqiB,KAAA,gBAAAA,EAAO,IAAI,CAACtI,GAAMzS,MAAU;AAC3B,UAAM5I,IAAM,6BAA6BmG,CAAW,IAAIyC,CAAK;AAC7D,WACE,gBAAAtH,EAAA,cAAC,QAAG,KAAAtB,EAAA,GACF,gBAAAsB,EAAA;AAAA,MAAC2H;AAAA,MAAA;AAAA,QACC,YAAW;AAAA,QACX,SAAO;AAAA,QACP,cAAa;AAAA,QACb,mBAAkB;AAAA,QACjB,GAAGoS;AAAA,MAAA;AAAA,IAAA,CAER;AAAA,EAEJ,EACF,CAEJ;AAEJ,GCzBauI,KAAwC,CAAC;AAAA,EACpD,OAAAzE;AAAA,EACA,OAAA3U;AAAA,EACA,UAAA6U;AAAA,EACA,aAAA5U;AAAA,EACA,uBAAAoZ,IAAwB;AAAA,EACxB,cAAczE,IAAU;AAAA,EACxB,OAAAuE;AAAA,EACA,cAAAG,IAAe;AAAA,EACf,UAAAC,IAAW;AAAA,EACX,WAAA7hB;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAM+iB,IAAyBtkB,EAAW,wBAAwBokB,GAAc,QAAQC,CAAQ,IAAI7hB,CAAS,GACvG,EAAE,OAAAyE,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAO,GAAU,UAAAC,EAAA,IAAaH,GAAA,GAEzB+e,IAAWtd,KAASvB,KAAYuB,IAAQtB,GACxCuB,IAAWD,IAAQvB,GAEnBqa,IAAmB;AAAA,IACvB,OAAO,CAAC,CAACjV;AAAA,IACT,UAAU,CAACA,KAAS,CAAC,CAAC6U;AAAA,EAExB,GAEMO,IAAY,CAAC1b,GAAiB6b,MAC3BA,IAAY,gBAAAze,EAAA,cAAC8d,GAAA,MAASlb,CAAK,IAAaA,GAG3CggB,IAAc1gB,EAAuB,IAAI,GACzC2gB,IAAiB3gB,EAAuB,IAAI;AAElD,SAAAG,EAAU,MAAM;;AAKd,QAJI,CAACwgB,EAAe,YAEpBA,EAAe,QAAQ,MAAM,YAAY,IAErCxd,IAAQtB,KAAYye,MAAiB,YAAYD,MAA0B,YAAY;AAE3F,UAAM9Y,MAAS5J,IAAA+iB,EAAY,YAAZ,gBAAA/iB,EAAqB,iBAAgB,GAC9CijB,IAAuB,IACvBC,IAAY,MACZC,IAAyBvZ,IAAS,KAClCuO,IAAS+K,IAAYD,IAAuBE;AAElD,IAAAH,EAAe,QAAQ,MAAM,YAAY,GAAG7K,CAAM;AAAA,EACpD,GAAG,CAAC9O,GAAO6U,GAAU1Y,GAAOmd,GAAcD,GAAuBxe,CAAQ,CAAC,mCAGvE,OAAA,EAAI,WAAW2e,GAAyB,GAAG/iB,KAC1C,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAU,uBAAA,mCACZ,OAAA,EAAI,WAAU,cAAc,GAAG6d,GAAO,KAAKA,EAAM,KAAK,KAAKA,EAAM,KAAK,eAAaA,EAAM,aAAa,KAAK,IAAM,CACpH,IACE3U,KAAS6U,MAAawE,MAA0B,cAAc,CAACjd,KAAY,CAACqd,qCAC3E,OAAA,EAAI,WAAU,uBACb,gBAAA3iB,EAAA,cAAC,SAAI,KAAK4iB,GAAa,WAAU,YAAA,GAC9B7E,KAAY,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAsBse,EAAUP,GAAUI,EAAiB,QAAQ,CAAE,GAChGjV,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAmBse,EAAUpV,GAAOiV,EAAiB,KAAK,CAAE,CACvF,CACF,GAEF,gBAAAne,EAAA,cAAC,OAAA,EAAI,KAAK6iB,GAAgB,WAAU,kBAClC,gBAAA7iB,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GACb,gBAAAA,EAAA;AAAA,IAACoiB;AAAA,IAAA;AAAA,MACC,cAActE;AAAA,MACb,GAAIyE,MAA0B,cAAcI,KAAYrd,IAAW,EAAE,OAAA4D,GAAO,UAAA6U,MAAa;AAAA,MAC1F,aAAA5U;AAAA,MACA,OAAAkZ;AAAA,IAAA;AAAA,EAAA,CAEJ,CACF,CACF;AAEJ,GCrGaY,KAA4D,CAAC,EAAE,OAAA/Z,GAAO,UAAA6U,GAAU,OAAAF,GAAO,GAAGle,QAAY;AACjH,QAAMujB,IAAmC9kB,EAAW,mCAAmCuB,EAAM,SAAS;AAEtG,SACE,gBAAAK,EAAA,cAAC,SAAI,WAAWkjB,GAAkC,OAAO,EAAE,iBAAiB,OAAOrF,EAAM,GAAG,IAAA,GAAQ,GAAGle,EAAA,mCACpG,OAAA,EAAI,WAAU,oBACb,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACZkJ,KAAS,gBAAAlJ,EAAA,cAAC,SAAI,WAAU,QAAA,GAASkJ,CAAM,GACvC6U,qCAAa,OAAA,EAAI,WAAU,WAAA,GAAYA,CAAS,CACnD,mCACC,OAAA,EAAI,WAAU,kBAAA,GACb,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,eAAaL,EAAM,QAAS,CAC7C,CACF,CACF;AAEJ,GCbawjB,KAAoD,CAAC;AAAA,EAChE,OAAAja;AAAA,EACA,UAAA6U;AAAA,EACA,cAAAqF;AAAA,EACA,kBAAA9C;AAAA,EACA,WAAA1f,IAAY;AAAA,EACZ,GAAGjB;AACL,MAAM;AACJ,QAAM0jB,IAAuBjlB,EAAW,+BAA+BwC,CAAS;AAEhF,SACE,gBAAAZ,EAAA,cAAC,SAAI,WAAWqjB,GAAuB,GAAG1jB,EAAA,GACxC,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAU,uBAAA,GACb,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,eAAW;AAAA,MACX,OAAM;AAAA,MACN,MAAK;AAAA,IAAA;AAAA,oCAEJ,KAAA,EAAE,SAAQ,QAAO,QAAO,SAAQ,aAAY,MAAK,kBAAiB,WAAU,eAAc,QAAA,GACzF,gBAAAA,EAAA,cAAC,QAAA,EAAK,GAAE,4VAA2V,CACrW;AAAA,EAAA,CAEJ,GACA,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,kBACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,UAAA,GACZ6C,EAAgByd,CAAgB,KAAK,gBAAAtgB,EAAA,cAAC2f,IAAA,EAAa,WAAU,8BAA6B,eAAW,GAAA,CAAC,GACvG,gBAAA3f,EAAA,cAAC,OAAA,EAAI,WAAU,aAAA,GAAckJ,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,QAAA,GAASkJ,CAAM,CAAO,GAC3E,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,cAAA,GACZ+d,KAAY,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,WAAA,GAAY+d,CAAS,GACjD,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAA,GACb,gBAAAA,EAAA,cAACqL,IAAA,EAAQ,GAAG+X,EAAA,CAAc,CAC5B,CACF,CACF,CACF,CACF;AAEJ,GCOaE,KAAgC,CAAC;AAAA,EAC5C,cAAcxF,IAAU;AAAA,EACxB,UAAAyF;AAAA,EACA,aAAApa;AAAA,EACA,OAAA0U;AAAA,EACA,MAAA2F;AAAA,EACA,OAAAta;AAAA,EACA,YAAA0U;AAAA,EACA,UAAAmD;AAAA,EACA,OAAAsB,IAAQ,CAAA;AAAA,EACR,QAAAoB,IAAS,CAAA;AAAA,EACT,WAAA7iB;AAAA,EACA,aAAAwc;AAAA,EACA,SAAAvV,IAAU;AAAA,EACV,SAAA6b,IAAU;AAAA,EACV,GAAG/jB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEd6e,IAAezhB,EAA8B,IAAI,GACjDif,IAAqBjf,EAA+B,IAAI,GACxDib,IAAYjb,EAAiC,IAAI,GAEjD0hB,IAAmBxlB;AAAA,IACvB;AAAA,IACA,CAACyJ,CAAO;AAAA,IACR;AAAA,MACE,gBAAgBhF,EAAgBua,CAAW;AAAA,MAC3C,QAAQva,EAAgB6gB,CAAO;AAAA,IAAA;AAAA,IAEjC9iB;AAAA,EAAA,GAGIijB,IAAiBhc,MAAY,iBAAiBA,MAAY,iBAAiBA,MAAY;AAE7F,EAAA6Y,GAAiB;AAAA,IACf,WAAAvD;AAAA,IACA,eAAewG;AAAA,IACf,aAAaxC;AAAA,IACb,aAAa,CAACjY,KAASrG,EAAgBua,CAAW;AAAA,EAAA,CACnD;AAED,QAAM0G,IAAyB1lB,EAAW,EAAE,kBAAiByf,KAAA,gBAAAA,EAAO,QAAOT,GAAa;AAExF,SACE,gBAAApd,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,KAAKgkB,GAAc,MAAK,gBAAe,WAAWC,KAChE,gBAAA5jB,EAAA,cAAC,OAAA,EAAI,WAAU,0BACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAA,GACZujB,KAAY,gBAAAvjB,EAAA,cAAC,OAAA,EAAI,WAAU,cAAYujB,CAAS,GAEjD,gBAAAvjB,EAAA,cAAC,OAAA,EAAI,WAAU,UAAA,GACZ6d,KACC,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAK6d,EAAM,KAAK,KAAKA,EAAM,KAAM,GAAGA,EAAA,CAAO,GAChD,gBAAA7d,EAAA,cAAC,SAAI,WAAW8jB,EAAA,CAAwB,CAC1C,mCAGD,OAAA,EAAI,WAAU,eAAA,GACZN,KAAQ,gBAAAxjB,EAAA,cAAC,OAAA,EAAI,WAAU,OAAA,GAAQwjB,CAAK,GAErC,gBAAAxjB,EAAA,cAAC,OAAA,EAAI,WAAU,WACZkJ,KAAS,gBAAAlJ,EAAA,cAAC8d,GAAA,MAAS5U,CAAM,GAEzB,CAACA,KAAS6X,KACT,gBAAA/gB,EAAA,cAAC8d,GAAA,MACC,gBAAA9d,EAAA,cAACqf,IAAA,EAAY,QAAM,IAAC,YAAW,QAAO,UAAUwE,GAAgB,SAAQ,WAAU,KAAK1C,EAAA,GACpFJ,CACH,CACF,GAGD,CAAC7X,KAAS,CAAC6X,KAAYnD,KACtB,gBAAA5d,EAAA,cAAC8d,SACC,gBAAA9d,EAAA,cAAC2H,IAAA,EAAQ,GAAGiW,GAAY,QAAM,IAAC,YAAW,QAAO,UAAUiG,GAAgB,SAAQ,WAAU,KAAK1G,EAAA,CAAW,CAC/G,CAEJ,GAEChU,qCAAgB,OAAA,EAAI,WAAU,cAAA,GAAeA,CAAY,CAC5D,CACF,CACF,IAEEkZ,EAAM,SAAS,KAAKoB,EAAO,SAAS,MACpC,gBAAAzjB,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GACZqiB,EAAM,SAAS,KACd,gBAAAriB,EAAA,cAAC,MAAA,EAAG,WAAU,WACXqiB,EAAM,IAAI,CAACtI,GAAMzS,MAAU;AAC1B,UAAMyc,IAAY,aAAalf,CAAW,SAASyC,CAAK;AACxD,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAK+jB,GAAW,WAAU,oBAC5B,gBAAA/jB,EAAA;AAAA,MAAC2H;AAAA,MAAA;AAAA,QACE,GAAGoS;AAAA,QACJ,YAAW;AAAA,QACX,QAAQA,EAAK;AAAA,QACb,MAAMA,EAAK;AAAA,QACX,UAAU8J;AAAA,QACV,SAASA,IAAiB,YAAY;AAAA,QACtC,SAAS9J,EAAK,WAAW;AAAA,QACzB,cAAcA,EAAK,gBAAgB;AAAA,QACnC,mBAAmBA,EAAK,qBAAqB;AAAA,QAC7C,oBAAoBA,EAAK,sBAAsB;AAAA,MAAA;AAAA,MAE9CA,EAAK;AAAA,IAAA,CAEV;AAAA,EAEJ,CAAC,CACH,GAGD0J,EAAO,SAAS,KACf,gBAAAzjB,EAAA,cAAC,OAAA,EAAI,WAAU,aAAA,GACZyjB,EAAO,IAAI,CAACO,GAAO1c,MAClB,gBAAAtH,EAAA,cAAC,SAAI,KAAK,OAAO,OAAOsH,CAAK,CAAC,IAAI,WAAU,gBACzCA,IAAQ,qCAAMlH,IAAA,EAAK,eAAW,IAAC,MAAK,sBAAqB,GACzD4jB,CACH,CACD,CACH,CAEJ,CAEJ,CACF;AAEJ,GCnMaC,KAAsB,CAAC,EAAE,MAAAvV,GAAM,GAAG/O,EAAA,MAC7C,gBAAAK,EAAA,cAAC,MAAA,EAAI,GAAGL,EAAA,GACL,CAAC,CAAC+O,KAAQ,gBAAA1O,EAAA,cAACI,IAAA,EAAK,MAAMsO,GAAM,eAAW,GAAA,CAAC,GACzC,gBAAA1O,EAAA,cAAC,OAAA,EAAI,WAAU,aAAA,GAAcL,EAAM,QAAS,CAC9C,GCoBWukB,KAAsB,CAAC,EAAE,WAAAC,IAAY,QAAQ,aAAAC,IAAc,GAAG,UAAAvjB,GAAU,MAAA6N,GAAM,UAAAtK,IAAW,IAAO,GAAGzE,QAAY;AAC1H,QAAM0kB,IAAgBF,MAAc,WAAW,OAAO,MAChDtf,IAAcC,GAAA,GACdgF,IAAa,EAAE,GAAGnK,EAAA;AACxB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAMxG,IAAUD,EAAW,mBAAmB+lB,CAAS,IAAIra,EAAW,WAAW;AAAA,IAC/E,aAAajH,EAAgBuB,CAAQ;AAAA,EAAA,CACtC,GAEKkgB,IAAmBxjB,EAAS,IAAID,GAAU,CAACE,MAAU;AACzD,QAAI,CAACC,EAA0BD,CAAK;AAClC,aAAO;AAGT,UAAMG,IAAa;AAAA,MACjB,GAAGH,EAAM;AAAA,IAAA;AAGX,WAAI2N,MACFxN,EAAW,OAAOwN,IAGb,gBAAA1O,EAAA,cAACikB,IAAA,EAAM,GAAG/iB,EAAA,CAAY;AAAA,EAC/B,CAAC;AAED,SACE,gBAAAlB,EAAA;AAAA,IAACqkB;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,OAAO,EAAE,iBAAiBD,EAAA;AAAA,MAC1B,OAAOA;AAAA,MACP,WAAW/lB;AAAA,MACX,IAAIyL,EAAW;AAAA,IAAA;AAAA,IAEdwa;AAAA,EAAA;AAGP,GCWaC,KAAoB,CAACtmB,GAA2B2C,MACvD,OAAO3C,KAAU,WACZ,gBAAA+B,EAAA,cAAC,OAAA,EAAI,WAAAY,EAAA,GAAuB3C,CAAM,IAGvC+C,EAAe/C,CAAK,IACfyM,GAAazM,GAA6B,EAAE,WAAA2C,GAAoC,IAGlF,MAGI4jB,KAAwC,CAAC;AAAA,EACpD,MAAA9V;AAAA,EACA,OAAAxF;AAAA,EACA,UAAA6U;AAAA,EACA,aAAA5U;AAAA,EACA,UAAA/E,IAAW;AAAA,EACX,UAAA4E,IAAW;AAAA,EACX,WAAApI,IAAY;AAAA,EACZ,WAAA6jB;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,UAAAC,IAAW,CAAA;AAAA,EACX,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,kBAAAC;AAAA,EACA,GAAGxlB;AACL,MAAM;AACJ,QAAMylB,IAAuBhnB,EAAW,yBAAyByE,EAAgBuB,CAAQ,IAAI,SAAS,WAAWxD,CAAS,GAEpHykB,IAAqBjnB,EAAW,gBAAgB;AAAA,IACpD,gBAAgB4K,MAAa;AAAA,IAC7B,eAAeA,MAAa;AAAA,IAC5B,eAAeA,MAAa;AAAA,EAAA,CAC7B,GAEKsc,IAAmB,CAAC,CAACX,KAAqB,CAAC,CAACC,KAA0B,CAAC,CAACC,KAAsB,CAAC,CAACC;AAEtG,SACE,gBAAA9kB,EAAA,cAAC,OAAA,EAAI,WAAWolB,GAAuB,GAAGzlB,EAAA,GACxC,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAWqlB,EAAA,GACb3W,KAAQ,gBAAA1O,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GAAkB0O,CAAK,GAE9CxF,KAASqb,GAAkBrb,GAAO,OAAO,GAEzC6U,KAAYwG,GAAkBxG,GAAU,UAAU,GAElD5U,KAAeob,GAAkBpb,GAAa,aAAa,GAE3Dgc,KAAoBZ,GAAkBY,GAAkB,mBAAmB,GAE3EF,KACC,gBAAAjlB,EAAA,cAACkkB,IAAA,EAAK,WAAU,QAAO,WAAU,UAAS,UAAA9f,EAAA,GACvC2gB,KAAA,gBAAAA,EAAU,IAAI,CAACQ,GAAMje,MACpB,gBAAAtH,EAAA,cAACikB,IAAA,EAAK,KAAK3c,EAAA,GAAQie,CAAK,EAE5B,GAGDd,KAAaC,KACZ,gBAAA1kB,EAAA;AAAA,IAAC2H;AAAA,IAAA;AAAA,MACC,QAAQud;AAAA,MACR,MAAMF;AAAA,MACN,UAAA5gB;AAAA,MACA,SAASA,IAAW,YAAY;AAAA,MAChC,WAAU;AAAA,MACV,SAASkhB;AAAA,MACT,aAAaX;AAAA,MACb,kBAAkBC;AAAA,MAClB,cAAcC;AAAA,MACd,mBAAmBC;AAAA,IAAA;AAAA,IAElBJ;AAAA,EAAA,CAGP,CACF;AAEJ,GCpHac,KAAkC,CAAC;AAAA,EAC9C,SAAA3d,IAAU;AAAA,EACV,MAAA6G;AAAA,EACA,cAAcoP,IAAU;AAAA,EACxB,OAAA5U;AAAA,EACA,aAAAC;AAAA,EACA,YAAAyU;AAAA,EACA,aAAAR;AAAA,EACA,WAAAxc;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAM8lB,IAAgBvjB,EAA8B,IAAI,GAClDwjB,IAAsBxjB,EAAiC,IAAI,GAE3Dkc,IAAkB;AAAA,IACtB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAGf,MAAIC,IAA+B,EAAE,GAAGT,EAAA;AAExC,EAAIA,MACFS,IAAkB;AAAA,IAChB,GAAGT;AAAA,EAAA,GAGDS,EAAgB,WAAW,CAACA,EAAgB,gBAAgB,CAACA,EAAgB,gBAC/EA,EAAgB,eAAe,iCAC/BA,EAAgB,oBAAoB,mCAGlCT,EAAW,UAEb,OAAOS,EAAgB,QAGvBD,EAAgB,QAAQ,CAAC,CAAClV,GAC1BkV,EAAgB,cAAc,MAE9BA,EAAgB,SAAS,KAI7BnB,GAAe;AAAA,IACb,eAAewI;AAAA,IACf,WAAWC;AAAA,IACX,aAAa7iB,EAAgBua,CAAW;AAAA,EAAA,CACzC;AAED,QAAMuI,IAAoBvnB,EAAW,eAAe,QAAQyJ,CAAO,IAAIjH,CAAS,GAE1E0d,IAAY,CAAC1b,GAAiB2b,GAA0BC,GAAmBC,MAC1ED,IAKH,gBAAAxe,EAAA,cAAAA,EAAA,UAAA,MACGye,KACC,gBAAAze,EAAA,cAAC8d,GAAA,MACC,gBAAA9d,EAAA,cAAC2H,IAAA,EAAQ,GAAG4W,GAAa,YAAW,QAAO,KAAKmH,EAAA,GAC7C9iB,CACH,CACF,GAED,CAAC6b,KACA,gBAAAze,EAAA,cAAC2H,IAAA,EAAQ,GAAG4W,GAAa,YAAW,QAAO,KAAKmH,EAAA,GAC7C9iB,CACH,CAEJ,IAjBO6b,IAAY,gBAAAze,EAAA,cAAC8d,GAAA,MAASlb,CAAK,IAAaA,GAoB7C+b,IAA4BvgB,EAAW,oBAAoB,EAAE,aAAaigB,KAAA,gBAAAA,EAAiB,UAAU;AAE3G,SACE,gBAAAre,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,KAAK8lB,GAAe,MAAK,gBAAe,WAAWE,EAAA,GAChEjX,KACC,gBAAA1O,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GACb,gBAAAA,EAAA,cAACI,IAAA,EAAM,GAAGsO,GAAM,WAAU,oBAAmB,YAAW,KAAI,CAC9D,GAGF,gBAAA1O,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GACZkJ,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,kBAAA,GAAmBse,EAAUpV,GAAOmV,GAAiBD,EAAgB,OAAO,EAAI,CAAE,GAE1GjV,KACC,gBAAAnJ,EAAA,cAAC,OAAA,EAAI,WAAU,2BAAyBse,EAAUnV,GAAakV,GAAiBD,EAAgB,aAAa,EAAK,CAAE,CAExH,GAECA,EAAgB,UACf,gBAAApe,EAAA,cAAC,SAAI,WAAW2e,KACbL,EAAUD,EAAgB,UAAUA,GAAiBD,EAAgB,QAAQ,EAAK,CACrF,CAEJ;AAEJ,GCjFawH,KAAgC,CAAC;AAAA,EAC5C,cAAc9H,IAAU;AAAA,EACxB,SAAAjW,IAAU;AAAA,EACV,OAAAqB;AAAA,EACA,aAAAC;AAAA,EACA,SAAAuU,IAAU;AAAA,EACV,MAAAC;AAAA,EACA,aAAAkI;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,YAAAlI;AAAA,EACA,aAAAR,IAAc;AAAA,EACd,WAAAxc;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAMomB,IAAc9e,GAAQ,MACtBY,MAAY,aAAaA,MAAY,UAChC,YAGFA,GACN,CAACA,CAAO,CAAC,GAENme,IAAe9jB,EAA8B,IAAI,GACjD+jB,IAAqB/jB,EAAiC,IAAI,GAE1Dic,IAAmB;AAAA,IACvB,OAAO,CAAC,CAACjV;AAAA,IACT,aAAa,CAACA,KAAS,CAAC,CAACC;AAAA,IACzB,MAAM,CAACD,KAAS,CAACC,KAAe,CAAC,CAACuU;AAAA,IAClC,QAAQ,CAACxU,KAAS,CAACC,KAAe,CAACuU,KAAW,CAAC,CAACE,KAAc,CAACA,EAAW;AAAA,EAAA,GAGtEQ,IAAkB;AAAA,IACtB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EAAA;AAGR,MAAIC,IAA+B,EAAE,GAAGT,EAAA;AAExC,EAAIA,MACFS,IAAkB;AAAA,IAChB,GAAGT;AAAA,EAAA,GAGDS,EAAgB,WAAW,CAACA,EAAgB,gBAAgB,CAACA,EAAgB,gBAC/EA,EAAgB,eAAe,iCAC/BA,EAAgB,oBAAoB,mCAGlCT,EAAW,UAEb,OAAOS,EAAgB,QAGvBD,EAAgB,QAAQ,CAAC,CAAClV,GAC1BkV,EAAgB,cAAc,CAAClV,KAAS,CAAC,CAACC,GAC1CiV,EAAgB,OAAO,CAAClV,KAAS,CAACC,KAAe,CAAC,CAACuU,KAEnDU,EAAgB,SAAS;AAI7B,QAAME,IAAY,CAAC1b,GAAiB2b,GAA0BC,GAAmBC,MAC1ED,IAKH,gBAAAxe,EAAA,cAAAA,EAAA,UAAA,MACGye,KACC,gBAAAze,EAAA,cAAC8d,GAAA,MACC,gBAAA9d,EAAA,cAAC2H,IAAA,EAAQ,GAAG4W,GAAa,YAAW,QAAO,SAASwH,GAAa,KAAKE,EAAA,GACnErjB,CACH,CACF,GAED,CAAC6b,KACA,gBAAAze,EAAA,cAAC2H,IAAA,EAAQ,GAAG4W,GAAa,YAAW,QAAO,SAASwH,GAAa,KAAKE,EAAA,GACnErjB,CACH,CAEJ,IAjBO6b,IAAY,gBAAAze,EAAA,cAAC8d,GAAA,MAASlb,CAAK,IAAaA;AAqBnD,EAAAqa,GAAe;AAAA,IACb,eAAe+I;AAAA,IACf,WAAWC;AAAA,IACX,aAAapjB,EAAgBua,CAAW;AAAA,EAAA,CACzC;AAED,QAAM8I,IAAuB9nB,EAAW,oBAAoB,QAAQyJ,CAAO,IAAI,EAAE,oBAAoB,EAAC+V,KAAA,QAAAA,EAAY,UAAA,GAAYhd,CAAS,GACjIulB,IAAwB/nB,EAAW,qBAAqB,qBAAqB0nB,CAAM,EAAE,GACrFnH,IAA4BvgB,EAAW,qBAAqB,EAAE,aAAaigB,KAAA,gBAAAA,EAAiB,UAAU;AAE5G,SACE,gBAAAre,EAAA,cAAC,SAAK,GAAGL,GAAO,MAAK,gBAAe,WAAWumB,GAAsB,KAAKF,EAAA,mCACvE,OAAA,EAAI,WAAU,kBACZtI,KAAWC,qCACT,OAAA,EAAI,WAAU,qBACb,gBAAA3d,EAAA,cAAC8c,IAAA,EAAM,GAAGa,EAAA,GAAOW,EAAUX,EAAK,UAAUU,GAAiBD,EAAgB,MAAMD,EAAiB,IAAI,GAAE,GAAC,CAC3G,GAGDjV,qCACE,OAAA,EAAI,WAAU,sBAAoBoV,EAAUpV,GAAOmV,GAAiBD,EAAgB,OAAOD,EAAiB,KAAK,CAAE,GAGrH0H,KACC,gBAAA7lB,EAAA,cAAC,OAAA,EAAI,WAAU,0BAAA,GACb,gBAAAA,EAAA,cAAC,SAAI,WAAWmmB,EAAA,CAAuB,GACvC,gBAAAnmB,EAAA,cAAC,OAAA,MAAK6lB,CAAY,CACpB,GAGD1c,KACC,gBAAAnJ,EAAA,cAAC,OAAA,EAAI,WAAU,yBAAA,GACZse,EAAUnV,GAAakV,GAAiBD,EAAgB,aAAaD,EAAiB,WAAW,CACpG,CAEJ,GAECC,EAAgB,UACf,gBAAApe,EAAA,cAAC,OAAA,EAAI,WAAW2e,KACbL,EAAUD,EAAgB,UAAUA,GAAiBD,EAAgB,QAAQD,EAAiB,MAAM,CACvG,CAEJ;AAEJ,GC5LaiI,KAA+C;AAAA,EAC1D,OAAS;AAAA,IACP,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,iBAAiB;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,iBAAiB;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,cAAc;AAAA,IACZ,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,oBAAoB;AAAA,IAClB,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAEpB,GCOaC,KAAkC,CAAC;AAAA,EAC9C,SAAAxe,IAAU;AAAA,EACV,WAAAoB,IAAY;AAAA,EACZ,kBAAAqd;AAAA,EACA,MAAA5X;AAAA,EACA,WAAA6X;AAAA,EACA,iBAAAC;AAAA,EACA,OAAA3I;AAAA,EACA,QAAA4I;AAAA,EACA,iBAAAC;AAAA,EACA,WAAA9lB;AAAA,EACA,GAAGjB;AACL,MAAM;;AACJ,QAAMgnB,MAAgB9mB,IAAAumB,GAAsBve,CAAO,MAA7B,gBAAAhI,EAAgC,kBAAiB,WACjE+mB,MAAiBnf,IAAA2e,GAAsBve,CAAO,MAA7B,gBAAAJ,EAAgC,mBAAkB,IAEnEof,IAAgCzoB,EAAW,yBAAyB,GAAGyJ,CAAO,IAAIjH,GAAW;AAAA,IACjG,YAAWid,KAAA,gBAAAA,EAAO,QAAOyI;AAAA,IACzB,0BAA0BA;AAAA,EAAA,CAC3B,GAEKQ,IAAuB1oB,EAAW,eAAe;AAAA,IACrD,gBAAgB6K,MAAc;AAAA,IAC9B,eAAeA,MAAc;AAAA,IAC7B,aAAaA,MAAc;AAAA,IAC3B,cAAcA,MAAc;AAAA,EAAA,CAC7B,GAEK8d,IAAqB3oB,EAAW,aAAa;AAAA,IACjD,kBAAkB6K,MAAc;AAAA,IAChC,eAAeA,MAAc;AAAA,EAAA,CAC9B,GAEK+d,IAAmB5oB,EAAW,qBAAqB;AAAA,IACvD,kBAAkB6K,MAAc;AAAA,IAChC,eAAeA,MAAc;AAAA,EAAA,CAC9B,GAEKkW,IAAY;AAAA,IAChB,GAAGzQ;AAAA,IACH,WAAWtQ,EAAWsQ,KAAA,gBAAAA,EAAM,WAAW;AAAA,MACrC,kBAAkBzF,MAAc;AAAA,MAChC,eAAeA,MAAc;AAAA,IAAA,CAC9B;AAAA,EAAA;AAGH,SACE,gBAAAjJ,EAAA,cAAC,OAAA,EAAI,WAAW6mB,GAAgC,GAAGlnB,MAChDke,KAAA,gBAAAA,EAAO,QAAO,gBAAA7d,EAAA,cAAC,OAAA,EAAK,GAAG6d,GAAO,MAAKA,KAAA,gBAAAA,EAAO,QAAO,qBAAqB,WAAU,oBAAA,CAAoB,GAErG,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAW8mB,EAAA,GACd,gBAAA9mB,EAAA,cAAC,OAAA,EAAI,WAAU,kBAAA,GACZ0O,KAAQ,EAACmP,KAAA,QAAAA,EAAO,QACf,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAW+mB,KACd,gBAAA/mB,EAAA,cAACI,IAAA,EAAM,GAAG+e,EAAA,CAAW,CACvB,GAGF,gBAAAnf,EAAA,cAAC,UAAK,WAAU,QAAA,GAASumB,CAAU,GAEnC,gBAAAvmB,EAAA,cAAC,KAAA,MAAGwmB,CAAgB,CACtB,GAEA,gBAAAxmB,EAAA,cAAC,OAAA,EAAI,WAAWgnB,EAAA,GACd,gBAAAhnB,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACE,GAAGob;AAAA,MACJ,WAAWC;AAAA,MACX,SAASC;AAAA,MACT,UAAUC;AAAA,MACV,WAAU;AAAA,IAAA;AAAA,EAAA,CAEd,CACF,CACF;AAEJ,GC/HaK,KAAuE;AAAA,EAClF,OAAS;AAAA,IACP,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,iBAAiB;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,iBAAiB;AAAA,IACf,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,eAAe;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAAA,EAElB,OAAS;AAAA,IACP,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA;AAEpB,GCjDaC,KAAgB,CAACrmB,MACrBG,EAA2BH,CAAQ,KAAKA,EAAS,SAAS,QAAQA,IAAW,MAGzEsmB,KAAkB,CAACtmB,MACvBG,EAAiCH,CAAQ,KAAKA,EAAS,SAAS,QAAQA,IAAW,MCkE/EumB,KAA8C,CAAC;AAAA,EAC1D,OAAOb;AAAA,EACP,UAAUc;AAAA,EACV,aAAab;AAAA,EACb,SAAA3e,IAAU;AAAA,EACV,aAAAyf;AAAA,EACA,kBAAAhB;AAAA,EACA,kBAAAhG;AAAA,EACA,gBAAAiH;AAAA,EACA,qBAAAC;AAAA,EACA,YAAA5J;AAAA,EACA,UAAAmD;AAAA,EACA,WAAAngB;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAM8nB,IAAsBvlB,EAA8B,IAAI,GACxDgf,IAAuBhf,EAAiC,IAAI,GAC5Dif,IAAqBjf,EAA+B,IAAI,GAExDwlB,IAAgBT,GAAkCpf,CAAO,EAAE,eAC3D8f,IAAiBV,GAAkCpf,CAAO,EAAE,gBAE5D+f,IAAsCxpB,EAAW,2BAA2B,GAAGyJ,CAAO,IAAIjH,GAAW;AAAA,IACzG,YAAY0lB;AAAA,IACZ,CAAC,gBAAgBgB,CAAW,EAAE,GAAGA;AAAA,EAAA,CAClC,GAEKO,IAA+BzpB,EAAW,wBAAwB;AAAA,IACtE,YAAckoB;AAAA,IACd,kBAAkB,CAACE;AAAA,EAAA,CACpB,GAEKsB,IAAUZ,GAAcK,CAAc,GACtCQ,IAAeb,GAAcM,CAAmB,GAChDQ,IAAUb,GAAgBI,CAAc;AAE9C,SAAA7G,GAAiB;AAAA,IACf,eAAe+G;AAAA,IACf,WAAWvG;AAAA,IACX,aAAaC;AAAA,IACb,aAAa;AAAA,EAAA,CACd,GAGC,gBAAAnhB,EAAA,cAAC,OAAA,EAAI,WAAW4nB,GAAqC,KAAKH,GAAsB,GAAG9nB,EAAA,GACjF,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAU,4BAAA,IACX8nB,KAAWC,MACX,gBAAA/nB,EAAA,cAAC,OAAA,EAAI,WAAU,WAAA,GACZ8nB,KAAW,gBAAA9nB,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GAAoB8nB,CAAQ,GACtDC,KAAgB,gBAAA/nB,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GAAkB+nB,CAAa,CACjE,GAEDC,KAAWngB,MAAY,WACtB,gBAAA7H,EAAA,cAAC,OAAA,EAAI,WAAU,aAAA,GACZgoB,GACAV,KAAe,gBAAAtnB,EAAA,cAAC,OAAA,EAAI,WAAU,YAAA,CAAY,CAC7C,CAEJ,GAEC6C,EAAgByd,CAAgB,KAAK,gBAAAtgB,EAAA,cAAC2f,IAAA,EAAa,WAAU,iBAAgB,eAAW,IAAC,mCAEzF,OAAA,EAAI,WAAU,OAAA,GACZ0H,KAAgB,gBAAArnB,EAAA,cAAC,OAAA,EAAI,WAAU,cAAYqnB,CAAa,GAExDd,KAAa,gBAAAvmB,EAAA,cAAC,OAAA,EAAI,WAAU,QAAA,GAASumB,CAAU,GAEhD,gBAAAvmB,EAAA,cAAC,OAAA,EAAI,WAAW6nB,EAAA,GACbrB,KAAmB,gBAAAxmB,EAAA,cAAC,OAAA,EAAI,WAAU,cAAA,GAAewmB,CAAgB,GAElE,gBAAAxmB,EAAA,cAAC,OAAA,EAAI,WAAU,cAAA,GACZ,CAAC+gB,KAAYnD,KACZ,gBAAA5d,EAAA,cAAC2H,IAAA,EAAQ,GAAGiW,GAAY,SAAS,IAAM,SAAS8J,GAAe,UAAUC,GAAgB,KAAKzG,EAAA,CAAsB,GAErHH,KACC,gBAAA/gB,EAAA,cAACqf,IAAA,EAAY,KAAK8B,GAAoB,YAAW,OAAA,GAC9CJ,CACH,CAEJ,CACF,CACF,CACF;AAEJ,GC/IakH,KAA4D;AAAA,EACvE,OAAS,EAAE,YAAY,SAAS,UAAU,GAAA;AAAA,EAC1C,eAAe,EAAE,YAAY,SAAS,UAAU,GAAA;AAAA,EAChD,eAAe,EAAE,YAAY,SAAS,UAAU,GAAA;AAAA,EAChD,iBAAiB,EAAE,YAAY,SAAS,UAAU,GAAA;AAAA,EAClD,eAAe,EAAE,YAAY,WAAW,UAAU,GAAA;AAAA,EAClD,iBAAiB,EAAE,YAAY,WAAW,UAAU,GAAA;AAAA,EACpD,eAAe,EAAE,YAAY,SAAS,UAAU,GAAA;AAAA,EAChD,eAAe,EAAE,YAAY,SAAS,UAAU,GAAA;AAAA,EAChD,eAAe,EAAE,YAAY,SAAS,UAAU,GAAA;AAAA,EAChD,iBAAiB,EAAE,YAAY,SAAS,UAAU,GAAA;AAAA,EAClD,mBAAmB,EAAE,YAAY,SAAS,UAAU,GAAA;AACtD,GAEaP,KAAgE;AAAA,EAC3E,OAAS,EAAE,UAAU,IAAO,SAAS,UAAA;AAAA,EACrC,eAAe,EAAE,UAAU,IAAO,SAAS,UAAA;AAAA,EAC3C,eAAe,EAAE,UAAU,IAAO,SAAS,UAAA;AAAA,EAC3C,iBAAiB,EAAE,UAAU,IAAO,SAAS,UAAA;AAAA,EAC7C,eAAe,EAAE,UAAU,IAAO,SAAS,UAAA;AAAA,EAC3C,iBAAiB,EAAE,UAAU,IAAO,SAAS,UAAA;AAAA,EAC7C,eAAe,EAAE,UAAU,IAAM,SAAS,UAAA;AAAA,EAC1C,eAAe,EAAE,UAAU,IAAM,SAAS,UAAA;AAAA,EAC1C,eAAe,EAAE,UAAU,IAAM,SAAS,UAAA;AAAA,EAC1C,iBAAiB,EAAE,UAAU,IAAO,SAAS,UAAA;AAAA,EAC7C,mBAAmB,EAAE,UAAU,IAAM,SAAS,UAAA;AAChD,GCiDaQ,KAAoC,CAAC;AAAA,EAChD,OAAArK;AAAA,EACA,QAAAsK;AAAA,EACA,QAAArC;AAAA,EACA,UAAAsC;AAAA,EACA,WAAA7B;AAAA,EACA,WAAA8B;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAApB;AAAA,EACA,eAAAqB;AAAA,EACA,iBAAAlC;AAAA,EACA,kBAAAF;AAAA,EACA,SAAAze,IAAU;AACZ,MAAM;AACJ,QAAM8gB,IAAUzmB,EAA8B,IAAI,GAC5Cib,IAAYjb,EAAiC,IAAI;AAEvD,EAAAwe,GAAiB;AAAA,IACf,eAAeiI;AAAA,IACf,WAAAxL;AAAA,IACA,aAAauL,KAAiB;AAAA,EAAA,CAC/B;AAED,QAAM,EAAE,OAAArjB,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAO,EAAA,IAAaF,GAAA,GAEfglB,IADWvjB,IAAQvB,IACS,KAAQwiB,GAEpCuC,IAAiBL,KAAe,IAEhCvkB,IAAU,EAAC4Z,KAAA,QAAAA,EAAO,QAAO,CAAC,EAAE4K,KAAeJ,KAAaE,IACxDO,IAAW,CAAC7kB,KAAW,CAAC2kB,GACxBG,IAAqB,CAAC9kB,KAAW2kB,GACjCI,IAAsB,CAACJ,KAAkB,CAAC,EAAC/K,KAAA,QAAAA,EAAO,MAClDoL,IAAwBL,KAAkB,CAAC,EAAC/K,KAAA,QAAAA,EAAO,MACnDqL,IAAqB,CAACN,KAAkB3kB,GACxCklB,IAAuBP,KAAkB3kB,GAEzCmlB,IAAwBhrB,EAAW,gBAAgB,gBAAgByJ,CAAO,IAAI;AAAA,IAClF,kBAAkB6gB;AAAA,IAClB,iBAAiBE;AAAA,IACjB,gBAAkBC;AAAA,IAClB,4BAA4BH;AAAA,IAC5B,SAASG,KAAkB,CAACD;AAAA,IAC5B,sBAAsB,CAACC,KAAkBH;AAAA,EAAA,CAC1C,GAEKW,IAAkBjrB,EAAW,SAAS;AAAA,IAC1C,gBAAkByqB;AAAA,IAClB,yBAAyBA,KAAkB,CAACD;AAAA,IAC5C,2BAA2BC,KAAkBD;AAAA,EAAA,CAC9C,GAEK9E,IAAyB1lB,EAAW,EAAE,kBAAiByf,KAAA,gBAAAA,EAAO,QAAO6K,GAAe,GAEpFY,IAA4BlrB,EAAW,kBAAkB;AAAA,IAC7D,eAAewqB;AAAA,IACf,qBAAqB,CAACA;AAAA,EAAA,CACvB,GAEKW,IAAiBnrB,EAAW,YAAY;AAAA,IAC5C,kBAAkBsqB;AAAA,EAAA,CACnB,GAEKc,IAA6BprB,EAAW,WAAW;AAAA,IACvD,iBAAiBsqB;AAAA,IACjB,iBAAiBE;AAAA,IACjB,gBAAkBC;AAAA,IAClB,SAASA,KAAkBD;AAAA,IAC3B,SAASC,KAAkBD;AAAA,IAC3B,SAASC,KAAkB,CAACD;AAAA,IAC5B,yCAAyCC;AAAA,EAAA,CAC1C,GAEKY,IAAoBrrB,EAAW;AAAA,IACnC,QAAQ+qB;AAAA,IACR,eAAeD;AAAA,IACf,cAAcJ,KAAYE;AAAA,IAC1B,cAAcC,KAAyBF;AAAA,EAAA,CACxC,GAEK1gB,IAAkBjK,EAAW,UAAU;AAAA,IAC3C,eAAe,CAACwqB;AAAA,IAChB,sBAAsBF;AAAA,IACtB,6BAA6BE;AAAA,EAAA,CAC9B;AAED,yCACG,OAAA,EAAI,KAAKD,GAAS,WAAWS,GAAuB,UAAUV,IAAgB,IAAI,WAChF7K,KAAA,gBAAAA,EAAO,QACN,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAWqpB,GAAiB,OAAO,EAAE,OAAOxL,EAAM,SAAS,QAAQ,QAAQA,EAAM,UAAU,SAAO,GACrG,gBAAA7d,EAAA,cAAC,SAAK,GAAG6d,GAAO,KAAKA,EAAM,KAAK,KAAKA,EAAM,KAAK,OAAM,QAAO,QAAO,QAAO,WAAU,sBAAA,CAAsB,mCAC1G,OAAA,EAAI,WAAWiG,GAAwB,CAC1C,GAGD7f,KACC,gBAAAjE,EAAA,cAAC,OAAA,EAAI,WAAWspB,EAAA,mCACb5oB,IAAA,EAAQ,WAAW6oB,KAClB,gBAAAvpB,EAAA,cAACQ,GAAA,EAAS,OAAM,WAAU,WAAU,wBAAuB,MAAMioB,KAAe,gBAAgB,eAAW,IAAC,GAC5G,gBAAAzoB,EAAA,cAACQ,KAAS,OAAM,SAAQ,WAAU,sBAAqB,MAAM6nB,KAAa,WAAW,eAAW,GAAA,CAAC,mCAChG7nB,GAAA,EAAS,OAAM,UAAS,WAAU,uBAAsB,MAAM+nB,KAAc,WAAW,eAAW,IAAC,CACtG,CACF,GAGF,gBAAAvoB,EAAA,cAAC,OAAA,EAAI,WAAWwpB,EAAA,GACd,gBAAAxpB,EAAA,cAAC,SAAI,WAAWypB,EAAA,GACbrB,KACC,gBAAApoB,EAAA,cAAC8c,IAAA,EAAK,MAAK,SAAQ,WAAU,QAAO,UAAUmL,GAAYpgB,CAAO,EAAE,UAAU,YAAYogB,GAAYpgB,CAAO,EAAE,cAC3GugB,CACH,GAGDf,KAAgB,gBAAArnB,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAA,GAAiBqnB,CAAa,GAE9D,gBAAArnB,EAAA,cAAC,SAAI,WAAU,aAAA,GAAcumB,CAAU,GAEtC+B,qCACE,OAAA,EAAI,WAAU,SAAA,GACb,gBAAAtoB,EAAA,cAAC,SAAI,WAAW,2BAA2B8lB,KAAU,SAAS,GAAA,CAAI,GAClE,gBAAA9lB,EAAA,cAAC,OAAA,EAAI,WAAU,OAAA,GAAQsoB,CAAW,CACpC,mCAGD,OAAA,EAAI,WAAU,iBAAe9B,CAAgB,CAChD,IAEC2B,KAAA,gBAAAA,EAAQ,cAAa,UAAaA,EAAO,aAAa,QACrD,gBAAAnoB,EAAA,cAAC,OAAA,EAAI,WAAWqI,EAAA,GACd,gBAAArI,EAAA;AAAA,IAAC2H;AAAA,IAAA;AAAA,MACE,GAAGwgB;AAAA,MACJ,KAAKhL;AAAA,MACL,UAAUyL;AAAA,MACV,eAAaF;AAAA,MACb,UAAUA,IAAgB,KAAK;AAAA,MAC/B,SAAShB,GAAc7f,CAAO,EAAE;AAAA,MAChC,UAAU6f,GAAc7f,CAAO,EAAE;AAAA,MACjC,SAAS6gB,IAAgB,MAAA;;AAAM,gBAAA7oB,IAAA8oB,EAAQ,YAAR,gBAAA9oB,EAAiB;AAAA,UAAU;AAAA,IAAA;AAAA,KAEzDsoB,KAAA,gBAAAA,EAAQ,aAAY;AAAA,EAAA,CAEzB,CAEJ,CACF;AAEJ,GC5KauB,KAAkC,CAAC;AAAA,EAC9C,OAAAxgB;AAAA,EACA,QAAAif;AAAA,EACA,UAAA/jB;AAAA,EACA,UAAAulB;AAAA,EACA,UAAAvB;AAAA,EACA,aAAAjf;AAAA,EACA,mBAAAygB;AAAA,EACA,aAAAxM,IAAc;AAAA,EACd,SAAAvV,IAAU;AACZ,MAAM;AACJ,QAAMgiB,IAAa3nB,EAA8B,IAAI,GAC/Cib,IAAYjb,EAAiC,IAAI,GACjD4nB,IAAWjnB,EAAgBuB,CAAQ,IAAI,SAAS,SAEhD2lB,IAAuB;AAAA,IAC3B,MAAM;AAAA,IACN,UAAA3lB;AAAA,IACA,UAAUgkB;AAAA,IACV,YAAY;AAAA,IACZ,SAASvgB,KAAA,gBAAAA,EAAS,QAAQ,YAAY;AAAA,EAAE,GAGpC4c,KAAY0D,KAAA,gBAAAA,EAAQ,UAAS,UAAaA,EAAO,SAAS,MAE1D6B,IAAuB5rB,EAAW,qBAAqB;AAAA,IAC3D,iCAAiCgf,KAAeqH;AAAA,EAAA,CACjD,GAEK8E,IAAiBnrB,EAAW,oBAAoB;AAAA,IACpD,YAAYgqB;AAAA,IACZ,YAAY,CAACA;AAAA,EAAA,CACd,GAEKqB,IAAoBrrB,EAAW,WAAW;AAAA,IAC9C,YAAY,CAACwrB;AAAA,IACb,gBAAgBA;AAAA,EAAA,CACjB;AAED,EAAAlJ,GAAiB;AAAA,IACf,WAAAvD;AAAA,IACA,eAAe0M;AAAA,IACf,aAAAzM;AAAA,EAAA,CACD;AAED,QAAM6M,IAA0C;AAAA,IAC9C,aAAe;AAAA,IACf,SAAW;AAAA,IACX,SAAW;AAAA,IACX,QAAU;AAAA,IACV,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,EAAA,GAGdtC,IAAiB9f,MAAY,YAAY,KAAQzD;AAEvD,yCACG,OAAA,EAAI,KAAKylB,GAAY,WAAW,GAAGG,CAAoB,IAAIniB,CAAO,IAAIiiB,CAAQ,MAC5EjnB,EAAgB8mB,CAAQ,KACvB,gBAAA3pB,EAAA,cAACU,IAAA,sCACEF,GAAA,EAAS,WAAW+oB,GAAgB,OAAM,WAAU,MAAMU,EAAQpiB,CAAO,EAAA,CAAG,CAC/E,GAGF,gBAAA7H,EAAA,cAAC,OAAA,EAAI,WAAWypB,EAAA,mCACb,OAAA,EAAI,WAAU,mBACZrB,KACC,gBAAApoB,EAAA,cAAC,SAAI,WAAU,OAAA,GACb,gBAAAA,EAAA,cAAC8c,IAAA,EAAM,GAAGiN,EAAA,CAAW,CACvB,GAGD7gB,KAAS,gBAAAlJ,EAAA,cAAC,SAAI,WAAU,QAAA,GAASkJ,CAAM,GAEvCC,KAAe,gBAAAnJ,EAAA,cAAC,OAAA,EAAI,WAAU,cAAA,GAAemJ,CAAY,CAC5D,GAECsb,KACC,gBAAAzkB,EAAA,cAAC,OAAA,EAAI,WAAU,YACb,gBAAAA,EAAA,cAAC2H,MAAQ,GAAGwgB,GAAQ,KAAKhL,GAAW,SAAQ,WAAU,UAAUwK,GAAgB,UAAUiC,EAAA,IACvFzB,KAAA,gBAAAA,EAAQ,aAAY,EACvB,CACF,CAEJ,CACF;AAEJ,GCtIM+B,KAA8B,CAAC,EAAE,KAAAvpB,IAAM,MAAM,WAAAC,GAAW,eAAAupB,IAAgB,QAAQ,cAAAC,GAAc,UAAAhmB,GAAU,GAAGzE,EAAA,MAAY;AAC3H,QAAM0qB,IAAyBjsB,EAAW,YAAYwC,CAAS,GACzD0pB,IAA6BlsB,EAAW,yBAAyB,yBAAyB+rB,CAAa,IAAI;AAAA,IAC/G,MAAMtnB,EAAgBuB,CAAQ;AAAA,EAAA,CAC/B,GACKmmB,IAAsBnsB,EAAW,iBAAiByE,EAAgBuB,CAAQ,IAAI,uBAAuB,qBAAqB,GAI1HomB,IAAwB;AAAA,IAC5B,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,EAAA,GAGLC,IAAqBrsB,EAAWksB,GAA4B;AAAA,IAChE,oBAAoBH,MAAkB;AAAA,EAAA,CACvC;AAED,SACE,gBAAAnqB,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,WAAW0qB,GAAwB,KAAA1pB,EAAA,GACjD,gBAAAX,EAAA,cAAC,QAAA,EAAK,WAAWyqB,EAAA,GACf,gBAAAzqB,EAAA,cAACI,IAAA,EAAK,MAAMoqB,EAAsBL,CAAa,GAAG,YAAW,KAAI,eAAW,GAAA,CAAC,CAC/E,GACA,gBAAAnqB,EAAA,cAAC,KAAA,EAAE,WAAWuqB,EAAA,GAAsBH,CAAa,CACnD;AAEJ,GClCMM,KAAkC,CAAC,EAAE,KAAA/pB,IAAM,MAAM,WAAAC,GAAW,YAAA+pB,GAAY,UAAAvmB,GAAU,GAAGzE,QAAY;AACrG,QAAMirB,IAA2BxsB,EAAW,UAAUwC,CAAS,GACzDiqB,IAAoBzsB,EAAW,eAAeyE,EAAgBuB,CAAQ,IAAI,qBAAqB,mBAAmB;AAExH,SACE,gBAAApE,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,WAAWirB,GAA0B,KAAAjqB,EAAA,GACnD,gBAAAX,EAAA,cAAC,KAAA,EAAE,WAAW6qB,EAAA,GAAoBF,CAAW,CAC/C;AAEJ,GC0BMG,KAA8B,CAAC;AAAA,EACnC,KAAAnqB,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,OAAA2N;AAAA,EACA,UAAAwc;AAAA,EACA,WAAAta;AAAA,EACA,UAAAua,IAAW;AAAA,EACX,aAAAC;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,cAAAC;AAAA,EACA,UAAAhmB;AAAA,EACA,eAAA8mB;AAAA,EACA,YAAAP;AAAA,EACA,UAAA9pB;AAAA,EACA,GAAGlB;AACL,MAAoB;AAClB,QAAMuO,IAAWhM,EAAyB,IAAI;AAC9C,EAAAiB,GAAoBxC,GAAK,MAAMuN,EAAS,OAA2B;AAEnE,QAAMrJ,IAAcC,GAAA,GAEdqmB,KAAmBtoB,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,GACjFgB,IAAqBvoB,EAAgBqoB,CAAa,KAAKP,GACvD7gB,IAAa,EAAE,GAAGnK,EAAA;AACxB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,CAACwmB,GAAgBC,CAAiB,IAAIlpB,EAASS,EAAgBiH,EAAW,WAAWA,EAAW,cAAc,CAAC,GAE/GyhB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAExDQ,IAAeptB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAYuB,EAAM;AAAA,MAClB,SAAW0rB;AAAA,MACX,MAAQxoB,EAAgBuB,CAAQ;AAAA,MAEhC,aAAavB,EAAgBkoB,CAAQ;AAAA,MACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,MAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,IAAA;AAAA,IAEjEvpB;AAAA,EAAA,GAGI6qB,IAAe,CAACjlB,MAA6C;;AACjE,KAAA3G,IAAAiK,EAAW,aAAX,QAAAjK,EAAA,KAAAiK,GAAsBtD,IACtB8kB,EAAkB9kB,EAAI,cAAc,OAAO;AAAA,EAC7C;AAEA,EAAAnE,EAAU,MAAM;AACd,UAAMqpB,IAAU5hB,EAAW,WAAWA,EAAW;AACjD,IAAI4hB,MAAY,UACdJ,EAAkBI,CAAO;AAAA,EAE7B,GAAG,CAAC5hB,EAAW,SAASA,EAAW,cAAc,CAAC;AAElD,MAAI6hB;AAEJ,SAAIR,IACFQ,IAAsB,YAAY7hB,EAAW,EAAE,cACtCshB,IACTO,IAAsB,YAAY7hB,EAAW,EAAE,iBAE/C6hB,IAAsB7hB,EAAW,kBAAkB,GAInD,gBAAA9J,EAAA,cAAC,OAAA,MACC,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAWwrB,EAAA,GACd,gBAAAxrB,EAAA,cAAC,SAAA,EAAM,WAAU,kBAAiB,SAAS8J,EAAW,MACpD,gBAAA9J,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,WAAU;AAAA,MACV,MAAK;AAAA,MACL,KAAKoE;AAAA,MACL,UAAUud;AAAA,MACV,oBAAkBE;AAAA,MAClB,iBAAeJ;AAAA,MACf,gBAAc1oB,EAAgBkoB,CAAQ;AAAA,MACtC,cAAYloB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,IAAA;AAAA,EAAA,mCAEvG,QAAA,EAAK,WAAU,UAAQuhB,KAAkB,gBAAArrB,EAAA,cAACI,IAAA,EAAK,MAAK,oBAAmB,eAAW,IAAC,CAAG,GACtF,CAACqQ,KAAa,gBAAAzQ,EAAA,cAAC,QAAA,EAAK,WAAU,QAAA,GAASa,KAAY0N,CAAM,CAC5D,CACF,IACE4c,KAAmBD,MACnB,gBAAAlrB,EAAA,cAAC,OAAA,EAAI,WAAU,8BAAA,GAEZkrB,qCACE,OAAA,EAAI,WAAU,gDAAA,GACb,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,IAAI,YAAY5gB,EAAW,EAAE,gBAAgB,YAAA6gB,GAAwB,UAAAvmB,EAAA,CAAoB,CACvG,GAGD+mB,KACC,gBAAAnrB,EAAA,cAAC,OAAA,EAAI,WAAU,sCAAA,GACb,gBAAAA,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,YAAYpgB,EAAW,EAAE;AAAA,MAC7B,eAAgBjH,EAAgBkoB,CAAQ,IAAoB,WAAhBZ;AAAA,MAC5C,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAEtC,CAEJ,CAEJ;AAEJ,GCxHawnB,KAA8C,CAAC;AAAA,EAC1D,UAAA/qB;AAAA,EACA,UAAA0L,IAAW;AAAA,EACX,WAAAsf,IAAY;AAAA,EACZ,aAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,aAAArQ,IAAc;AAAA,EACd,SAAA7T,IAAU;AAAA,EACV,WAAAjH;AAAA,EACA,GAAGorB;AACL,MAAM;AACJ,QAAMC,IAAepkB,GACfqkB,IAAgBD,MAAiB,iBAAiBA,MAAiB,eACnEE,IAAgBF,MAAiB,WAAWA,MAAiB,eAE7DG,IAAuBH,MAAiB,iBAAiBA,MAAiB,eAC1EI,IAAyBxpB,EAAgB0J,CAAQ,KAAK6f,GAEtDE,IAAazpB,EAAgBgpB,CAAS,KAAK,CAAC,CAACC,GAC7CS,IAAe1pB,EAAgBkpB,CAAW,GAE1CS,IAAiBF,KAAcC,GAC/BE,IAAe/Q,MAAgB,cAC/BgR,IAAahR,MAAgB,YAC7BiR,IAAsBF,KAAgBH,KAAcC,GAEpD7N,IAAiBtgB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,iCAAiCsd,MAAgB;AAAA,MACjD,+BAA+BA,MAAgB;AAAA,MAC/C,2BAA2BwQ;AAAA,MAC3B,2BAA2BC;AAAA,MAC3B,6BAA6B,CAACA;AAAA,IAAA;AAAA,IAEhCvrB;AAAA,EAAA,GAGIgsB,IAA+BxuB,EAAW,yCAAyC;AAAA,IACvF,kDAAkDiuB;AAAA,EAAA,CACnD,GAEKQ,IAAoB,OAAOb,EAAK,YAAY,KAAM,WAAWA,EAAK,YAAY,IAAI;AAExF,SACE,gBAAAhsB,EAAA,cAAC,SAAI,WAAW0e,GAAiB,GAAGsN,EAAA,GAClC,gBAAAhsB,EAAA,cAAC,OAAA,EAAI,WAAU,0BAAA,GACb,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW5B,EAAW,4BAA4B;AAAA,QAChD,2CAA2CuuB;AAAA,MAAA,CAC5C;AAAA,IAAA;AAAA,IAEAH,KACC,gBAAAxsB,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW5B,EAAW,iCAAiC;AAAA,UACrD,6CAA6CquB;AAAA,UAC7C,2CAA2CC;AAAA,QAAA,CAC5C;AAAA,MAAA;AAAA,MAEAJ,KACC,gBAAAtsB,EAAA,cAAC,OAAA,EAAI,WAAU,yBAAA,mCACZoM,IAAA,EAAQ,GAAG0f,GAAa,UAAUI,GAAe,WAAW9tB,EAAW0tB,KAAA,gBAAAA,EAAa,SAAS,GAAG,CACnG;AAAA,MAGDS,KACC,gBAAAvsB,EAAA,cAAC8qB,IAAA,EAAS,WAAS,IAAC,UAAUoB,GAAe,cAAYW,GAAmB,WAAU,6BAAA,CAA6B;AAAA,IAAA;AAAA,IAKzH,gBAAA7sB,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW5B,EAAW,2BAA2B;AAAA,UAC/C,0CAA0CuuB;AAAA,QAAA,CAC3C;AAAA,MAAA;AAAA,MAEA9rB;AAAA,IAAA;AAAA,IAGH,gBAAAb,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW5B,EAAW,kCAAkC;AAAA,UACtD,iDAAiDuuB;AAAA,QAAA,CAClD;AAAA,MAAA;AAAA,MAED,gBAAA3sB,EAAA,cAAC,OAAA,EAAI,WAAW4sB,EAAA,CAA8B;AAAA,IAAA;AAAA,EAChD,CAEJ,CACF;AAEJ,GC9EME,KAAwC,CAAC;AAAA,EAC7C,WAAAlsB;AAAA,EACA,QAAAmsB;AAAA,EACA,UAAAhC;AAAA,EACA,aAAAE;AAAA,EACA,cAAAb;AAAA,EACA,eAAAD,IAAgB;AAAA,EAChB,UAAAxlB;AAAA,EACA,UAAA9D;AAAA,EACA,eAAAqqB;AAAA,EACA,YAAAP;AAAA,EACA,UAAAvmB;AAAA,EACA,GAAGzE;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdqmB,KAAmBtoB,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,GAEjF,EAAE,QAAA4C,GAAQ,GAAGC,EAAA,IAAkBttB,GAC/ButB,IAAgB,CAAC1mB,MAAuC;AAC5D,IAAA7B,KAAA,QAAAA,EAAW6B;AAAA,EACb,GAEMuG,IAAmB3O,EAAW,wBAAwBwC,CAAS,GAE/DusB,IAAiBrsB,EAAS;AAAA,IAC9BA,EAAS,IAAID,GAAU,CAACE,MACjBC,EAA8BD,CAAK,IAKtC,gBAAAf,EAAA,cAAC,MAAA,MACE0K,GAA4B3J,GAAO;AAAA,MAClC,UAAAqD;AAAA,MACA,UAAY8oB;AAAA,MACZ,UAAYrqB,EAAgBkoB,CAAQ;AAAA,MACpC,aAAeloB,EAAgBooB,CAAW;AAAA,MAC1C,oBAAoBE,IAAkB,kBAAkBtmB,CAAW,cAAc;AAAA,IAAA,CACjE,CACpB,IAZO,IAcV;AAAA,EAAA,GAGGuoB,IAAchpB,IAAW,eAAe;AAE9C,yCACG,OAAA,EAAI,WAAW2I,GAAkB,QAAAigB,EAAA,GAChC,gBAAAhtB,EAAA,cAAC,cAAU,GAAGitB,EAAA,GACXF,KAAU,gBAAA/sB,EAAA,cAAC,YAAO,WAAW,GAAGotB,CAAW,sBAAA,GAAwBL,CAAO,GAC1E7B,KACC,gBAAAlrB,EAAA;AAAA,IAAC0qB;AAAA,IAAA;AAAA,MACC,UAAAtmB;AAAA,MACA,YAAAumB;AAAA,MACA,WAAU;AAAA,MACV,IAAI,kBAAkB9lB,CAAW;AAAA,IAAA;AAAA,EAAA,GAGpCsoB,EAAe,SAAS,qCAAM,MAAA,MAAIA,CAAe,CACpD,GAEChC,KACC,gBAAAnrB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,UAAA9lB;AAAA,MACA,IAAI,kBAAkBS,CAAW;AAAA,MACjC,eAAgBhC,EAAgBkoB,CAAQ,IAAoB,WAAhBZ;AAAA,MAC5C,cAAAC;AAAA,IAAA;AAAA,EAAA,CAGN;AAEJ,GCnEMiD,KAA0B,CAAC;AAAA,EAC/B,KAAA1sB,IAAM;AAAA,EACN,SAAA2sB,IAAU;AAAA,EACV,YAAAC,IAAa;AAAA,EACb,wBAAAC,IAAyB;AAAA,EACzB,iBAAAC,IAAkB;AAAA,EAClB,UAAA5sB;AAAA,EACA,WAAAD;AAAA,EACA,kBAAA8sB;AAAA,EACA,UAAAC;AAAA,EACA,QAAA7Y;AAAA,EACA,QAAAC;AAAA,EACA,GAAGpV;AACL,MAAM;AACJ,QAAM,CAACiuB,GAAWC,CAAY,IAAIzrB,EAASS,EAAgByqB,CAAO,CAAC,GAE7DjX,IAAOzM,GAAY,MAAY;AACnC,IAAIgkB,MAIJC,EAAa,EAAI,GAEjBvqB,GAAa,MAAM;AACjB,MAAAwR,KAAA,QAAAA;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAACA,GAAQ8Y,CAAS,CAAC,GAEhBjgB,IAAO/D,GAAY,MAAY;AACnC,IAAKgkB,MAILC,EAAa,EAAK,GAElBvqB,GAAa,MAAM;AACjB,MAAAyR,KAAA,QAAAA;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAACA,GAAQ6Y,CAAS,CAAC,GAEhBE,IAAiB5rB,EAAuB,IAAI;AAClD,EAAAY;AAAA,IACEnC;AAAA,IACAmtB;AAAA,IACA;AAAA,MACE,SAASF;AAAA,MACT,MAAAvX;AAAA,MACA,MAAA1I;AAAA,IAAA;AAAA,IAEF,CAACmgB,GAAgBngB,GAAM0I,GAAMuX,CAAS;AAAA,EAAA;AAGxC,QAAMG,IAAgBnkB;AAAA,IACpB,CAACpD,MAAuB;AACtB,UAAI,GAAConB,KAAa,CAACE,EAAe,UAIlC;AAAA,YAAItnB,EAAI,QAAQ,YAAY3D,EAAgB4qB,CAAe,KAAKG,GAAW;AACzE,UAAApnB,EAAI,eAAA,GACJmH,EAAA,GACAggB,KAAA,QAAAA;AACA;AAAA,QACF;AAEA,YAAInnB,EAAI,QAAQ,OAAO;AACrB,gBAAMwnB,IAAmC,MAAM;AAAA,YAC7CF,EAAe,QAAQ;AAAA,cACrB;AAAA,YAAA;AAAA,UACF;AAGF,UAAAE,EAAkB,KAAK,CAACpN,GAAGqN,MAAMA,EAAE,WAAWrN,EAAE,QAAQ;AAExD,gBAAMsN,IAAeF,EAAkB,CAAC,GAClCG,IAAcH,EAAkBA,EAAkB,SAAS,CAAC;AAElE,UAAIxnB,EAAI,YAAY,SAAS,kBAAkB0nB,MAC7C1nB,EAAI,eAAA,GACJ2nB,EAAY,MAAA,IAGV,CAAC3nB,EAAI,YAAY,SAAS,kBAAkB2nB,MAC9C3nB,EAAI,eAAA,GACJ0nB,EAAa,MAAA;AAAA,QAEjB;AAAA;AAAA,IACF;AAAA,IACA,CAACT,GAAiB9f,GAAMigB,GAAWD,CAAQ;AAAA,EAAA,GAGvCS,IAAqBxkB;AAAA,IACzB,CAACrI,MAAsB;AACrB,MAAKA,EAAM,OAAuB,UAAU,SAAS,uBAAuB,MAC1EoM,EAAA,GACA+f,KAAA,QAAAA;AAAA,IAEJ;AAAA,IACA,CAAC/f,GAAM+f,CAAgB;AAAA,EAAA;AAGzB,EAAArrB,EAAU,OACR,6BAAU,iBAAiB,WAAW0rB,IAElC,CAAClrB,EAAgB0qB,CAAU,KAAK1qB,EAAgB2qB,CAAsB,MACxE,6BAAU,iBAAiB,SAASY,KAG/B,MAAM;AACX,iCAAU,oBAAoB,WAAWL,IAErC,CAAClrB,EAAgB0qB,CAAU,KAAK1qB,EAAgB2qB,CAAsB,MACxE,6BAAU,oBAAoB,SAASY;AAAA,EAE3C,IACC,CAACX,GAAiBF,GAAYC,GAAwBY,GAAoBL,CAAa,CAAC,GAE3F1rB,EAAU,MAAM;AACd,QAAIurB,KAAaE,EAAe,SAAS;AACvC,eAAS,KAAK,UAAU,IAAI,iBAAiB;AAE7C,YAAME,IAAmC,MAAM;AAAA,QAC7CF,EAAe,QAAQ;AAAA,UACrB;AAAA,QAAA;AAAA,MACF;AAGF,MAAAE,EAAkB,KAAK,CAACpN,GAAGqN,MAAMA,EAAE,WAAWrN,EAAE,QAAQ;AAExD,YAAMyN,IAAiBL,EAAkB,UAAU,CAACM,MAAA;;AAAM,eAAAzrB,GAAgBhD,IAAAyuB,EAAE,aAAa,gBAAgB,MAA/B,gBAAAzuB,EAAkC,UAAU;AAAA,OAAC,GAEjHquB,IAAeG,KAAkB,IAAIL,EAAkBK,CAAc,IAAIL,EAAkB,CAAC;AAElG,MAAIE,KACFA,EAAa,MAAA;AAAA,IAEjB;AACE,eAAS,KAAK,UAAU,OAAO,iBAAiB;AAAA,EAEpD,GAAG,CAACN,CAAS,CAAC;AAEd,QAAMW,IAAsBnwB;AAAA,IAC1B;AAAA,IACA;AAAA,MACE,QAAQ,CAACwvB;AAAA,IAAA;AAAA,IAEXhtB;AAAA,EAAA;AAGF,yCACG,OAAA,EAAI,KAAKktB,GAAgB,WAAWS,GAAqB,cAAW,QAAO,MAAK,UAAU,GAAG5uB,EAAA,GAC3F,CAAC4tB,KAAc,gBAAAvtB,EAAA,cAAC,SAAI,WAAU,wBAAA,CAAwB,GACtDa,CACH;AAEJ,GCjJM2tB,KAA0B,CAAC;AAAA,EAC/B,KAAA7tB,IAAM;AAAA,EACN,UAAAE;AAAA,EACA,iBAAA4sB,IAAkB;AAAA,EAClB,wBAAAD,IAAyB;AAAA,EACzB,UAAAppB,IAAW;AAAA,EACX,UAAA4E,IAAW;AAAA,EACX,kBAAA0kB;AAAA,EACA,UAAAC;AAAA,EACA,QAAA7Y;AAAA,EACA,QAAAC;AAAA,EACA,WAAAnU;AAAA,EACA,cAAcgE;AAAA,EACd,mBAAmB6pB;AAAA,EACnB,GAAG9uB;AACL,MAAM;AACJ,QAAM,CAAC+uB,GAAMC,CAAO,IAAIvsB,EAAS,EAAK,GAEhCwsB,IAAY1sB,EAAsB,IAAI,GAEtC2sB,IAAmBzwB;AAAA,IACvB;AAAA,IAEA,EAAE,2BAA2B4K,MAAa,UAAUA,MAAa,QAAA;AAAA,IACjE,EAAE,yBAAyBA,MAAa,SAASA,MAAa,SAAA;AAAA,IAE9D,EAAE,CAAC,uBAAuBA,CAAQ,GAAG0lB,EAAA;AAAA,IACrC,EAAE,CAAC,wBAAwB1lB,CAAQ,GAAG,CAAC0lB,EAAA;AAAA,IACvC,EAAE,aAAa7rB,EAAgBuB,CAAQ,EAAA;AAAA,EAAE,GAGrC0qB,IAAcllB,GAAY,MAAM;;AACpC,QAAI,CAAC8kB;AACH;AAGF,UAAMK,IAAK,MAAM;;AACf,MAAAJ,EAAQ,EAAK,IACb9uB,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB,SACnB4L,KAAAD,KAAA/D,IAAAmnB,EAAU,YAAV,gBAAAnnB,EAAmB,cAAc,qBAAjC,gBAAA+D,EAAmD,cAAnD,QAAAC,EAA8D,OAAO,sBAAsBzC,CAAQ,MACnGgmB,KAAAC,IAAAL,EAAU,YAAV,gBAAAK,EAAmB,cAAc,qBAAjC,QAAAD,EAAmD,oBAAoB,gBAAgBD,IAEvFha,KAAA,QAAAA;AAAA,IACF;AAEA,KAAAtN,KAAA5H,IAAA+uB,EAAU,YAAV,gBAAA/uB,EAAmB,cAAc,qBAAjC,QAAA4H,EAAmD,iBAAiB,gBAAgBsnB,KACpFtjB,KAAAD,IAAAojB,EAAU,YAAV,gBAAApjB,EAAmB,cAAc,qBAAjC,QAAAC,EAAmD,UAAU,IAAI,sBAAsBzC,CAAQ;AAAA,EACjG,GAAG,CAAC+L,GAAQ2Z,GAAM1lB,CAAQ,CAAC,GAErBkmB,IAAa,MAAM;;AACvB,QAAIR;AACF;AAGF,UAAMK,IAAK,MAAM;;AACf,OAAAtnB,KAAA5H,IAAA+uB,EAAU,YAAV,gBAAA/uB,EAAmB,cAAc,qBAAjC,QAAA4H,EAAmD,oBAAoB,gBAAgBsnB,IACvFja,KAAA,QAAAA;AAAA,IACF;AAEA,KAAArN,KAAA5H,IAAA+uB,EAAU,YAAV,gBAAA/uB,EAAmB,cAAc,qBAAjC,QAAA4H,EAAmD,iBAAiB,gBAAgBsnB,IAEpFJ,EAAQ,EAAI,IACZnjB,IAAAojB,EAAU,YAAV,QAAApjB,EAAmB;AAAA,EACrB;AAEA,EAAA1I;AAAA,IACEnC;AAAA,IACAiuB;AAAA,IACA;AAAA,MACE,QAAQF;AAAA,MACR,MAAMQ;AAAA,MACN,OAAOJ;AAAA,IAAA;AAAA,IAET,CAACF,GAAWM,GAAYJ,GAAaJ,CAAI;AAAA,EAAA;AAG3C,QAAMX,IAAgBnkB;AAAA,IACpB,CAACpD,MAAuB;AACtB,UAAIA,EAAI,QAAQ,UAAU;AACxB,QAAAA,EAAI,eAAA,GACJsoB,EAAA,GACAnB,KAAA,QAAAA;AACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAACmB,GAAanB,CAAQ;AAAA,EAAA,GAGlBS,IAAqBxkB;AAAA,IACzB,CAACrI,MAAsB;AACrB,MAAKA,EAAM,OAAuB,UAAU,SAAS,uBAAuB,MAC1EutB,EAAA,GACApB,KAAA,QAAAA;AAAA,IAEJ;AAAA,IACA,CAACoB,GAAapB,CAAgB;AAAA,EAAA;AAGhC,SAAArrB,EAAU,OACJQ,EAAgB4qB,CAAe,MACjC,6BAAU,iBAAiB,WAAWM,KAEpClrB,EAAgB2qB,CAAsB,MACxC,6BAAU,iBAAiB,SAASY,KAG/B,MAAM;AACX,IAAIvrB,EAAgB4qB,CAAe,MACjC,6BAAU,oBAAoB,WAAWM,KAEvClrB,EAAgB2qB,CAAsB,MACxC,6BAAU,oBAAoB,SAASY;AAAA,EAE3C,IACC,CAACX,GAAiBD,GAAwBY,GAAoBL,CAAa,CAAC,GAG7E,gBAAA/tB,EAAA;AAAA,IAACqtB;AAAA,IAAA;AAAA,MACC,cAAYzoB;AAAA,MACZ,mBAAiB6pB;AAAA,MACjB,KAAKG;AAAA,MACL,WAAAhuB;AAAA,MACA,wBAAwB;AAAA,MACxB,iBAAiB;AAAA,IAAA;AAAA,oCAEhB,OAAA,EAAK,GAAGjB,GAAO,WAAWkvB,KACxBhuB,CACH;AAAA,EAAA;AAGN,GC3JMsuB,KAAwC,CAAC;AAAA,EAC7C,KAAAxuB,IAAM;AAAA,EACN,YAAAyuB;AAAA,EACA,eAAAC;AAAA,EACA,UAAAtnB,IAAW;AAAA,EACX,UAAA3D,IAAW;AAAA,EACX,SAAAyD;AAAA,EACA,WAAAjH,IAAY;AAAA,EACZ,UAAA+D;AAAA,EACA,GAAGhF;AACL,MAAM;;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,CAACyqB,GAAeC,CAAgB,IAAIntB,EAAuB,SAAS,GAEpEotB,IAAqB,CAACC,MAA6B;AACvD,IAAAF,EAAiB,CAAC/f,MAAUA,MAASigB,IAAa,YAAYA,CAAW;AAAA,EAC3E;AAEA,EAAAptB,EAAU,MAAM;AACd,IAAAiB,GAAa,MAAMqB,KAAA,gBAAAA,EAAW2qB,EAAc;AAAA,EAC9C,GAAG,CAACA,CAAa,CAAC;AAElB,QAAMI,IAAe,CAACtQ,GAA0BqQ,MAA6B;AAC3E,UAAM5gB,IAAWygB,MAAkBG;AACnC,WACE,gBAAAzvB,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACE,GAAG+T;AAAA,QACJ,IAAI,GAAGtV,EAAW,EAAE,IAAI2lB,CAAU;AAAA,QAClC,SAAS,MAAMD,EAAmBC,CAAU;AAAA,QAC5C,YAAY5gB,IAAW,UAAU;AAAA,QACjC,gBAAcygB,MAAkBG,IAAa,SAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAG5D,GAEME,IAAsBvxB,EAAW,kBAAkByE,EAAgBuB,CAAQ,IAAI,SAAS,IAAIxD,CAAS,GACrGgvB,IAA6BxxB,EAAW,0BAA0B2J,IAAW,cAAc,IAAInH,CAAS,GAExGmC,IAAWb,EAAuB,IAAI;AAC5C,EAAAY;AAAA,IACEnC;AAAA,IACAoC;AAAA,IACA;AAAA,MACE,QAAQusB;AAAA,IAAA;AAAA,IAEV,CAACA,CAAa;AAAA,EAAA;AAGhB,QAAMO,IAAmB;AAAA,IACvB,GAAGT;AAAA,IACH,WAAa;AAAA,IACb,SAAW;AAAA,IACX,cAAgB;AAAA,IAChB,mBAAqB;AAAA,IACrB,SAAWvnB,MAAWunB,KAAA,gBAAAA,EAAY;AAAA,IAClC,UAAYhrB;AAAA,IACZ,UAAY2D;AAAA,IACZ,cAAcA,KAAWlI,IAAAuvB,KAAA,gBAAAA,EAAY,aAAZ,gBAAAvvB,EAAsB,aAAa;AAAA,EAAA,GAGxDiwB,IAAsB;AAAA,IAC1B,GAAGT;AAAA,IACH,WAAa;AAAA,IACb,SAAW;AAAA,IACX,cAAgB;AAAA,IAChB,mBAAqB;AAAA,IACrB,SAAWxnB,MAAWwnB,KAAA,gBAAAA,EAAe;AAAA,IACrC,UAAYjrB;AAAA,IACZ,UAAY2D;AAAA,IACZ,cAAcA,KAAWN,IAAA4nB,KAAA,gBAAAA,EAAe,aAAf,gBAAA5nB,EAAyB,aAAa;AAAA,EAAA;AAGjE,SACE,gBAAAzH,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,WAAWgwB,GAAqB,KAAK5sB,EAAA,GACnD,gBAAA/C,EAAA,cAAC,MAAA,EAAG,WAAW4vB,EAAA,GACb,gBAAA5vB,EAAA,cAAC,YAAG,KAAE,CAAC,CAACovB,KAAcM,EAAaG,GAAkB,MAAM,CAAE,GAC7D,gBAAA7vB,EAAA,cAAC,MAAA,MAAI,CAAC,CAACqvB,KAAiBK,EAAaI,GAAqB,SAAS,CAAE,CACvE,CACF;AAEJ,GCrDMC,KAAoC,CAAC;AAAA,EACzC,KAAApvB,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,WAAAkC;AAAA,EACA,UAAArM,IAAW;AAAA,EACX,UAAA4rB,IAAW;AAAA,EACX,WAAApvB,IAAY;AAAA,EACZ,OAAA3C;AAAA,EACA,UAAA0G;AAAA,EACA,UAAAomB,IAAW;AAAA,EACX,aAAAE,IAAc;AAAA,EACd,eAAAd,IAAgB;AAAA,EAChB,cAAAC,IAAe;AAAA,EACf,UAAAvpB;AAAA,EACA,GAAGlB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAMorB,IAA0CnvB,EAAS,QAAQD,CAAQ,EAAE,OAAO,CAACE,MAC1EC,EAA0BD,CAAK,KAAMA,EAAuB,SAASX,EAC7E,GAEK8vB,IAAkBhuB,EAAuB,IAAI,GAE7C,CAACiuB,GAAeC,CAAgB,IAAIhuB,EAAiBnE,KAAS,CAAC,GAE/D,CAACoyB,GAAYC,CAAa,IAAIluB,EAAiB,CAAC,GAEhDsG,IAAkB,CAAClC,MAAoC;AAC3D,IAAI3D,EAAgBmtB,CAAQ,MAC1BxpB,EAAI,eAAA,GACJA,EAAI,gBAAA;AAAA,EAER,GAEMgC,IAAmB,CAAClB,MACjB,MAAM;AACX,IAAKzE,EAAgBmtB,CAAQ,KAC3BM,EAAchpB,CAAK;AAAA,EAEvB,GAGImB,IAAmB,MAAM;AAC7B,IAAK5F,EAAgBmtB,CAAQ,KAC3BM,EAAc,CAAC;AAAA,EAEnB,GAEMhoB,IAAc,CAAChB,MACZ,MAAM;AACX,IAAKzE,EAAgBmtB,CAAQ,KAC3BI,EAAiB9oB,CAAK;AAAA,EAE1B,GAGIipB,IAAmB,CAAC/pB,MAAuC;AAC/D,QAAI3D,EAAgBmtB,CAAQ;AAC1B;AAGF,UAAM,EAAE,MAAA/f,MAASzJ;AAEjB,IAAA4pB,EAAiB,CAAC5gB,MACZS,MAAS,cACJT,IAAO,IAAIA,IAAO,IAAIygB,EAAa,SAGxChgB,MAAS,eACJT,KAAQygB,EAAa,SAAS,IAAIzgB,IAAO,IAG3CA,CACR;AAAA,EACH,GAEMghB,IAAkB,CAAChqB,MAAoC;AAC3D,UAAMiqB,IAAY,SAASjqB,EAAI,OAAO,aAAa,iBAAiB,KAAK,KAAK,EAAE;AAChF,IAAA4pB,EAAiBK,CAAS;AAAA,EAC5B;AAEA,EAAApuB,EAAU,MAAM;;AACd,SAAIxC,IAAA,SAAS,kBAAT,QAAAA,EAAwB,UAAU,SAAS,kBAAkBqwB,EAAgB,SAAS;AACxF,YAAMQ,IAAcR,EAAgB,QAAQ,cAAc,mCAAmCC,CAAa,IAAI;AAC7G,MAAAO,KAAA,QAAAA,EAA6B;AAAA,IAChC;AAEA,IAAAptB,GAAa,MAAMqB,KAAA,gBAAAA,EAAWwrB,EAAc;AAAA,EAC9C,GAAG,CAACA,CAAa,CAAC,GAElB9tB,EAAU,MAAM;AACd,IAAIpE,KACFmyB,EAAiBnyB,CAAK;AAAA,EAE1B,GAAG,CAACA,CAAK,CAAC;AAEV,QAAM0yB,IAAoBvyB;AAAA,IACxB;AAAA,IACA,EAAE,MAAMyE,EAAgBuB,CAAQ,EAAA;AAAA,IAChC,EAAE,aAAavB,EAAgBmtB,CAAQ,EAAA;AAAA,IACvC;AAAA,MACE,aAAantB,EAAgBkoB,CAAQ;AAAA,MACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,MAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,IAAA;AAAA,IAEjEvpB;AAAA,EAAA,GAGImC,IAAWb,EAAuB,IAAI;AAC5C,SAAAY;AAAA,IACEnC;AAAA,IACAoC;AAAA,IACA;AAAA,MACE,QAAQotB;AAAA,IAAA;AAAA,IAEV,CAACA,CAAa;AAAA,EAAA,GAId,gBAAAnwB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK+C;AAAA,MACL,WAAW4tB;AAAA,MACV,GAAGhxB;AAAA,MACJ,MAAK;AAAA,MACJ,GAAIkD,EAAgB4N,CAAS,IAAI,EAAE,cAAclC,KAAA,gBAAAA,EAAO,WAAS,IAAM,EAAE,mBAAmB,SAAS1J,CAAW,GAAA;AAAA,IAAG;AAAA,IAEpH,gBAAA7E,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GACZ,CAAC6C,EAAgB4N,CAAS,KACzB,gBAAAzQ,EAAA,cAAC,OAAA,EAAI,IAAI,SAAS6E,CAAW,IAAI,WAAU,eAAA,GACxC0J,CACH,GAGF,gBAAAvO,EAAA,cAAC,OAAA,EAAI,KAAKkwB,GAAiB,WAAU,oBAClCD,EAAa,IAAI,CAACW,GAAkBtpB,MAAU;;AAC7C,YAAMupB,IAAYvpB,IAAQ,GACpBwpB,IAAYD,KAAaR,GACzBU,IAAaZ,MAAkB,QAAQU,KAAaV,GAEpDa,IAAatmB,GAAwBkmB,GAAkB;AAAA,QAC3D,MACEE,KAAaC,KACTlxB,KAAA+wB,EAAiB,MAAM,SAAvB,gBAAA/wB,GAA6B,QAAQ,QAAQ,YAC7C4H,IAAAmpB,EAAiB,MAAM,SAAvB,gBAAAnpB,EAA6B,QAAQ,SAAS;AAAA,MAAM,CAC3D,GAEKwpB,IAAU,GAAGpsB,CAAW,SAASyC,CAAK;AAC5C,UAAI4pB,IAAgB;AACpB,aAAIruB,EAAgBmtB,CAAQ,IAC1BkB,IAAgB,KACPf,KAAiB,IAC1Be,IAAgB5pB,MAAU,IAAI,IAAI,KAElC4pB,IAAgBf,MAAkBU,IAAY,IAAI,IAIlD,gBAAA7wB,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKixB;AAAA,UACL,IAAI,GAAGpsB,CAAW,IAAIgsB,CAAS;AAAA,UAC/B,WAAU;AAAA,UACV,MAAK;AAAA,UACL,gBAAcV,MAAkBU;AAAA,UAChC,UAAUK;AAAA,UACV,oBAAoBxoB;AAAA,UACpB,cAAcF,EAAiBqoB,CAAS;AAAA,UACxC,cAAcpoB;AAAA,UACd,SAASH,EAAYuoB,CAAS;AAAA,UAC9B,WAAWN;AAAA,UACX,SAASC;AAAA,UACT,mBAAiBK;AAAA,UACjB,qBACGhuB,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,IAC3D,gBAAgBtgB,EAAW,EAAE,cAC7B;AAAA,QAAA;AAAA,QAGLknB;AAAA,MAAA;AAAA,IAGP,CAAC,CACH,CACF;AAAA,KAGEnuB,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,KAC9D,gBAAApqB,EAAA;AAAA,MAACkqB;AAAAA,MAAA;AAAA,QACC,IAAI,gBAAgBpgB,EAAW,EAAE;AAAA,QACjC,eAAgBjH,EAAgBkoB,CAAQ,IAAoB,WAAhBZ;AAAA,QAC5C,cAAAC;AAAA,QACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,oCAKrC,OAAA,EAAI,OAAO,EAAE,SAAS,YACrB,gBAAApE,EAAA,cAAC,QAAA,MACC,gBAAAA,EAAA,cAAC,YAAO,IAAG,gBAAe,GAAE,QAAO,GAAE,QAAO,OAAM,QAAO,QAAO,UAC9D,gBAAAA,EAAA,cAAC,YAAA,EAAS,IAAG,KAAI,IAAG,IAAA,CAAI,GACxB,gBAAAA,EAAA,cAAC,kBAAA,EAAe,cAAa,KAAI,QAAO,eAAc,mCACrD,eAAA,EAAY,UAAS,OAAM,IAAG,iBAAgB,KAAI,eAAc,QAAO,WAAU,GAClF,gBAAAA,EAAA,cAAC,WAAA,EAAQ,YAAW,SAAQ,cAAa,QAAO,QAAO,QAAA,CAAQ,mCAC9D,eAAA,EAAY,UAAS,MAAK,IAAG,SAAQ,KAAI,WAAU,QAAO,UAAS,GACpE,gBAAAA,EAAA,cAAC,eAAA,EAAY,UAAS,QAAO,IAAG,UAAS,KAAI,gBAAA,CAAgB,CAC/D,CACF,CACF;AAAA,EAAA;AAGN,GC5PakqB,KAA8B,CAAC;AAAA,EAC1C,OAAAhhB;AAAA,EACA,UAAA6U;AAAA,EACA,eAAAoT;AAAA,EACA,SAAAC;AAAA,EACA,UAAAhtB,IAAW;AAAA,EACX,WAAAxD;AAAA,EACA,cAAckd,IAAU;AAAA,EACxB,GAAGne;AACL,MAAM;AACJ,QAAM,CAAC0xB,GAAaC,CAAc,IAAIlvB,EAAS,EAAK,GAE9CqpB,IAAe,CAAC3F,MAAyB;;AAC7C,IAAAwL,EAAexL,MAAW,SAAS,IACnCjmB,IAAAsxB,KAAA,gBAAAA,EAAe,aAAf,QAAAtxB,EAAA,KAAAsxB,GAA0BrL;AAAA,EAC5B,GAEMyL,IAAkBnzB,EAAW,kBAAkByE,EAAgBuB,CAAQ,IAAI,aAAa,IAAIxD,CAAS,GAErG4wB,IAA0C;AAAA,IAC9C,GAAGL;AAAA,IACH,UAAUtuB,EAAgBuB,CAAQ;AAAA,EAAA;AAGpC,SACE,gBAAApE,EAAA,cAAC,OAAA,EAAI,WAAWuxB,GAAkB,GAAG5xB,MACjCuJ,KAAS6U,MACT,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAU,4CAAA,GACZkJ,KAAS,gBAAAlJ,EAAA,cAAC8d,GAAA,EAAQ,WAAU,WAAS5U,CAAM,GAC3C6U,KAAY,gBAAA/d,EAAA,cAAC,KAAA,EAAE,WAAU,cAAY+d,CAAS,CACjD,GAEDoT,KACC,gBAAAnxB,EAAA,cAAC,OAAA,EAAI,WAAU,4CAAA,GACb,gBAAAA,EAAA,cAACmvB,MAAe,GAAGqC,GAAqB,UAAU/F,GAAc,CAClE,GAED4F,KAAeD,KACd,gBAAApxB,EAAA,cAAC,OAAA,EAAI,WAAU,4CAAA,GACb,gBAAAA,EAAA,cAAC,OAAE,WAAU,UAAA,GAAWoxB,CAAQ,CAClC,CAEJ;AAEJ,GC7EMK,KAGD,CAAC,EAAE,YAAAC,GAAY,YAAAC,QAEhB,gBAAA3xB,EAAA,cAAC,OAAA,EAAI,WAAU,6GAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,4CAAA,GACZ0xB,EAAW,QAAQA,EAAW,SAC7B,gBAAA1xB,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,GAAG0xB,EAAW;AAAA,IACf,WAAU;AAAA,EAAA;AAAA,EAEV,gBAAA1xB,EAAA,cAAC,SAAI,KAAK0xB,EAAW,MAAM,KAAM,GAAGA,EAAW,MAAA,CAAO;AAAA,GAGzD,CAACA,EAAW,QAAQA,EAAW,SAAS,gBAAA1xB,EAAA,cAAC,OAAA,EAAK,GAAG0xB,EAAW,OAAO,KAAKA,EAAW,MAAM,IAAA,CAAK,CACjG,GACA,gBAAA1xB,EAAA,cAAC,OAAA,EAAI,WAAU,6DAAA,IACZ2xB,KAAA,gBAAAA,EAAY,UAAQA,KAAA,gBAAAA,EAAY,UAC/B,gBAAA3xB,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACE,GAAG2xB,EAAW;AAAA,IACf,WAAU;AAAA,EAAA;AAAA,EAEV,gBAAA3xB,EAAA,cAAC,SAAI,KAAK2xB,EAAW,MAAM,KAAM,GAAGA,EAAW,MAAA,CAAO;AAAA,GAGzDA,KAAc,CAACA,EAAW,QAAQA,EAAW,SAAS,gBAAA3xB,EAAA,cAAC,OAAA,EAAK,GAAG2xB,EAAW,OAAO,KAAKA,EAAW,MAAM,IAAA,CAAK,CAC/G,CACF,GC5BEC,KAKD,CAAC,EAAE,SAAAC,GAAS,eAAAC,GAAe,wBAAAC,GAAwB,UAAA3tB,QAAe;AACrE,QAAM4tB,IAAY5tB,IAAW,oCAAoC,mCAC3D6tB,IAAkB7tB,IACpB,0EACA;AAEJ,yCACG,OAAA,EAAI,WAAU,6CAAA,GACb,gBAAApE,EAAA,cAAC,SAAI,WAAU,+CAAA,GACb,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAW,kBAAkBgyB,CAAS,MAAKH,CAAQ,CAC3D,GAEA,gBAAA7xB,EAAA,cAAC,OAAA,EAAI,WAAU,4CAA2C,cAAY+xB,EAAA,GACpE,gBAAA/xB,EAAA,cAAC,MAAA,EAAG,WAAU,0CACX8xB,EACE,OAAO,CAACI,GAAI5qB,MAAUA,IAAQ,EAAE,EAChC,IAAI,CAAC6qB,GAAS7qB,MAAU;AACvB,UAAM5I,IAAM,QAAQ4I,CAAK;AAEzB,2CACG,MAAA,EAAG,KAAA5I,EAAA,IACDyzB,KAAA,gBAAAA,EAAS,UAAQA,KAAA,gBAAAA,EAAS,UACzB,gBAAAnyB,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAGmyB,EAAQ;AAAA,QACZ,WAAW,GAAGF,CAAe;AAAA,MAAA;AAAA,MAE7B,gBAAAjyB,EAAA,cAAC,SAAI,KAAKmyB,EAAQ,MAAM,KAAM,GAAGA,EAAQ,MAAA,CAAO;AAAA,IAAA,GAGnD,EAACA,KAAA,QAAAA,EAAS,UAAQA,KAAA,gBAAAA,EAAS,UAAS,gBAAAnyB,EAAA,cAAC,OAAA,EAAK,GAAGmyB,KAAA,gBAAAA,EAAS,OAAO,KAAKA,KAAA,gBAAAA,EAAS,MAAM,KAAK,CACzF;AAAA,EAEJ,CAAC,CACL,CACF,CACF;AAEJ,GCxCMC,KAOD,CAAC,EAAE,aAAAC,GAAa,aAAAC,GAAa,WAAAC,GAAW,sBAAAC,GAAsB,sBAAAC,GAAsB,UAAAruB,QAAe;AACtG,QAAMsuB,IAAmBtuB,IAAW,mBAAmB,kBACjDuuB,IAA0BvuB,IAAW,oCAAoC;AAE/E,SACE,gBAAApE,EAAA,cAAC,OAAA,EAAI,WAAU,oDAAA,GACZqyB,KACC,gBAAAryB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,gEAAgE0yB,CAAgB;AAAA,MAC3F,cAAYF;AAAA,IAAA;AAAA,IAEZ,gBAAAxyB,EAAA,cAAC,MAAA,EAAG,WAAU,mDAAA,GACXqyB,EACE,OAAO,CAACH,GAAI5qB,MAAUA,IAAQ,EAAE,EAChC,IAAI,CAACsrB,MAAW;;AACf,YAAMl0B,IAAM,YAAUmB,IAAA+yB,EAAO,SAAP,gBAAA/yB,EAAa,UAAS+yB,EAAO,IAAI;AAEvD,aACE,gBAAA5yB,EAAA,cAAC,QAAG,KAAAtB,EAAA,GACF,gBAAAsB,EAAA;AAAA,QAAC2H;AAAA,QAAA;AAAA,UACC,SAAO;AAAA,UACP,UAAQ;AAAA,UACR,YAAW;AAAA,UACX,SAAQ;AAAA,UACR,UAAAvD;AAAA,UACA,OAAMqD,IAAAmrB,EAAO,SAAP,gBAAAnrB,EAAa;AAAA,UACnB,QAAO+D,IAAAonB,EAAO,SAAP,gBAAApnB,EAAa;AAAA,UACpB,aAAaonB,KAAA,gBAAAA,EAAQ;AAAA,UACrB,SAAQnnB,IAAAmnB,EAAO,SAAP,gBAAAnnB,EAAa;AAAA,UACrB,kBAAkBmnB,KAAA,gBAAAA,EAAQ;AAAA,QAAA;AAAA,MAAA,CAE9B;AAAA,IAEJ,CAAC,CACL;AAAA,EAAA,GAIJ,gBAAA5yB,EAAA,cAAC,OAAA,EAAI,WAAU,yEAAA,GACZsyB,KACC,gBAAAtyB,EAAA,cAAC,OAAA,EAAI,WAAU,SAAQ,cAAYyyB,EAAA,GACjC,gBAAAzyB,EAAA,cAAC,MAAA,EAAG,WAAU,+HAAA,GACXsyB,EACE,OAAO,CAACJ,GAAI5qB,MAAUA,IAAQ,CAAC,EAC/B,IAAI,CAACyS,GAAMzS,MAAU;AACpB,UAAM5I,IAAM,UAAU4I,CAAK;AAC3B,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAAtB,GAAU,WAAU,uBACtB,gBAAAsB,EAAA,cAAC2H,IAAA,EAAQ,GAAGoS,GAAM,UAAA3V,GAAoB,YAAW,QAAO,SAAQ,WAAU,CAC5E;AAAA,EAEJ,CAAC,CACL,CACF,GAGF,gBAAApE,EAAA,cAAC,SAAI,WAAU,iBAAA,GACb,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAW,kBAAkB2yB,CAAuB,4CAA2CJ,CAAU,CACjH,CACF,CACF;AAEJ,GCnEMM,KAA2D,CAAC;AAAA,EAChE,YAAAnB;AAAA,EACA,YAAAC;AAAA,EACA,SAAAE;AAAA,EACA,eAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,aAAAM;AAAA,EACA,sBAAAG;AAAA,EACA,aAAAF;AAAA,EACA,sBAAAG;AAAA,EACA,WAAAF;AAAA,EACA,UAAAnuB;AACF,MAAM;AACJ,QAAM0uB,IAAe1uB,IAAW,kCAAkC,iCAC5DsuB,IAAmBtuB,IAAW,mBAAmB;AAEvD,SACE,gBAAApE,EAAA,cAAC,SAAI,WAAW8yB,EAAA,mCACb,OAAA,EAAI,WAAU,uBACb,gBAAA9yB,EAAA,cAACyxB,IAAA,EAAiB,YAAAC,GAAwB,YAAAC,EAAA,CAAwB,mCAEjE,MAAA,EAAG,eAAW,IAAC,WAAW,YAAYe,CAAgB,0BAAA,CAA2B,GAElF,gBAAA1yB,EAAA;AAAA,IAAC4xB;AAAA,IAAA;AAAA,MACC,UAAAxtB;AAAA,MACA,SAAAytB;AAAA,MACA,eAAAC;AAAA,MACA,wBAAAC;AAAA,IAAA;AAAA,EAAA,mCAGD,MAAA,EAAG,eAAW,IAAC,WAAW,YAAYW,CAAgB,0BAAA,CAA2B,GAElF,gBAAA1yB,EAAA;AAAA,IAACoyB;AAAA,IAAA;AAAA,MACC,UAAAhuB;AAAA,MACA,aAAAiuB;AAAA,MACA,sBAAAG;AAAA,MACA,aAAAF;AAAA,MACA,sBAAAG;AAAA,MACA,WAAAF;AAAA,IAAA;AAAA,EAAA,CAEJ,CACF;AAEJ,GC7CMQ,KAA2C,CAAC,EAAE,OAAA7pB,GAAO,aAAAC,GAAa,OAAAkZ,GAAO,UAAAje,QAAe;AAC5F,QAAM0uB,IAAe1uB,IAAW,yBAAyB;AAEzD,SACE,gBAAApE,EAAA,cAAC,OAAA,EAAI,WAAW,mBAAmB8yB,CAAY,sBAAA,GAC7C,gBAAA9yB,EAAA,cAAC,OAAA,EAAI,WAAU,oBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,uEAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,6EAAA,CAA6E,GAC5F,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,4LACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,2DAAA,GACb,gBAAAA,EAAA,cAAC2f,IAAA,EAAa,eAAW,IAAC,WAAU,QAAA,CAAQ,GAC3CzW,KAAS,gBAAAlJ,EAAA,cAAC,MAAA,EAAG,WAAU,gEAAA,GAAiEkJ,CAAM,GAC9FC,KAAe,gBAAAnJ,EAAA,cAAC,KAAA,EAAE,WAAU,uDAAA,GAAwDmJ,CAAY,CACnG,GACCkZ,KACC,gBAAAriB,EAAA,cAAC,MAAA,EAAG,WAAU,gIAAA,GACXqiB,EACE,OAAO,CAAC6P,GAAI5qB,MAAUA,IAAQ,CAAC,EAC/B,IAAI,CAACyS,GAAMzS,MAAU;AACpB,UAAM5I,IAAM,QAAQ4I,CAAK;AACzB,WACE,gBAAAtH,EAAA,cAAC,QAAG,KAAAtB,EAAA,GACF,gBAAAsB,EAAA;AAAA,MAAC2H;AAAA,MAAA;AAAA,QACE,GAAGoS;AAAA,QACJ,WAAU;AAAA,QACV,YAAW;AAAA,QACX,SAAQ;AAAA,QACR,SAAO;AAAA,QACP,cAAa;AAAA,QACb,mBAAkB;AAAA,MAAA;AAAA,IAAA,CAEtB;AAAA,EAEJ,CAAC,CACL,CAEJ,CACF,CACF,CACF;AAEJ,GC2BMiZ,KAA4C,CAAC;AAAA,EACjD,MAAAC;AAAA,EACA,YAAAvB;AAAA,EACA,YAAAC;AAAA,EACA,SAAAE;AAAA,EACA,eAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,aAAAM;AAAA,EACA,sBAAAG;AAAA,EACA,aAAAF;AAAA,EACA,sBAAAG;AAAA,EACA,WAAAF;AAAA,EACA,UAAAnuB;AACF,MAAM;AAEJ,QAAM8uB,IAAa9uB,MAAa,SAAY,KAAOA;AAEnD,SACE,gBAAApE,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACZizB,KAAQ,gBAAAjzB,EAAA,cAAC+yB,IAAA,EAAoB,UAAUG,GAAa,GAAGD,EAAA,CAAM,GAC9D,gBAAAjzB,EAAA;AAAA,IAAC6yB;AAAA,IAAA;AAAA,MACC,UAAUK;AAAA,MACV,YAAAxB;AAAA,MACA,YAAAC;AAAA,MACA,SAAAE;AAAA,MACA,eAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,aAAAM;AAAA,MACA,sBAAAG;AAAA,MACA,aAAAF;AAAA,MACA,sBAAAG;AAAA,MACA,WAAAF;AAAA,IAAA;AAAA,EAAA,CAEJ;AAEJ,GCxGMY,KAA8G,CAAC;AAAA,EACnH,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AACF,MAAM;AACJ,QAAMC,IAAoBn1B,EAAW,2DAA2D;AAAA,IAC9F,8BAA8Bi1B;AAAA,IAC9B,0FAA0F,CAACC;AAAA,IAC3F,0FAA0F,CAACD,KAAgBC;AAAA,EAAA,CAC5G;AACD,SACE,gBAAAtzB,EAAA,cAAC,OAAA,EAAI,WAAWuzB,EAAA,GACbH,KAAA,gBAAAA,EACG,OAAO,CAAClB,GAAI5qB,MAAUA,IAAQ,GAC/B,IAAI,CAACksB,GAASlsB,MAAU;;AACvB,UAAM5I,IAAM,YAAY4I,CAAK;AAC7B,WACE,gBAAAtH,EAAA,cAAC,SAAI,KAAAtB,GAAU,WAAU,+CACvB,gBAAAsB,EAAA,cAAC,OAAA,EAAI,WAAU,sDAAoDwzB,EAAQ,KAAM,GACjF,gBAAAxzB,EAAA,cAAC,SAAI,WAAU,iDAAA,GAAkDwzB,EAAQ,WAAY,GACpFA,EAAQ,UACP,gBAAAxzB,EAAA,cAAC,OAAA,MACEwzB,EAAQ,OAAO,CAAC,KACf,gBAAAxzB,EAAA,cAAC,KAAA,EAAE,MAAM,OAAOwzB,EAAQ,OAAO,CAAC,CAAC,MAC/B,gBAAAxzB,EAAA,cAAC,QAAA,EAAK,WAAU,8CAAA,IAA+CH,IAAA2zB,EAAQ,OAAO,CAAC,EAAE,MAAM,SAAS,MAAjC,gBAAA3zB,EAAoC,KAAK,MAAK,GAAC,CAChH,GAED2zB,EAAQ,OAAO,CAAC,qCAAM,QAAA,EAAK,WAAU,oDAAkD,IAAIA,EAAQ,OAAO,CAAC,CAAC,GAAI,GAChHA,EAAQ,OAAO,CAAC,KACf,gBAAAxzB,EAAA,cAAC,OAAE,MAAM,OAAOwzB,EAAQ,OAAO,CAAC,CAAC,MAC/B,gBAAAxzB,EAAA,cAAC,QAAA,EAAK,WAAU,8CAAA,IAA+CyH,IAAA+rB,EAAQ,OAAO,CAAC,EAAE,MAAM,SAAS,MAAjC,gBAAA/rB,EAAoC,KAAK,IAAK,CAC/G,CAEJ,CAEJ;AAAA,EAEJ,EACJ;AAEJ,GCnCMgsB,KAAqH,CAAC;AAAA,EAC1H,MAAAR;AAAA,EACA,UAAAG;AAAA,EACA,cAAAE;AACF,MAAM;AACJ,QAAMI,IAAgBt1B;AAAA,IACpB;AAAA,IACA;AAAA,MACE,SAAS,CAACg1B;AAAA,IAAA;AAAA,EACZ,GAGIO,IAAoBv1B,EAAW,kBAAkB;AAAA,IACrD,6CAA6Ck1B;AAAA,IAC7C,6CAA6C,CAACA;AAAA,EAAA,CAC/C,GAEKC,IAAoBn1B,EAAW,0FAA0F;AAAA,IAC7H,qHACE60B,KAAQK,KAAgBF;AAAA,IAC1B,qHACEH,KAAQ,CAACK,KAAgBF;AAAA,IAC3B,sHACE,CAACH,KAAQ,CAACK,KAAgBF;AAAA,EAAA,CAC7B;AAED,SAAA/wB,EAAU,MAAM;AACd,UAAMuxB,IAAgB,MAAM;AAG1B,YAAMC,IAAK,SAAS,gBAAgB;AACpC,eAAS,gBAAgB,MAAM,YAAY,mBAAmB,GAAGA,CAAE,IAAI;AAAA,IACzE;AAEA,WAAIP,MACF,OAAO,iBAAiB,UAAUM,CAAa,GAC/CA,EAAA,IAGc,MAAM;AACpB,aAAO,oBAAoB,UAAUA,CAAa;AAAA,IACpD;AAAA,EAGF,GAAG,CAACN,CAAY,CAAC,qDAIZL,KACC,gBAAAjzB,EAAA,cAAC,OAAA,EAAI,WAAW0zB,KACbJ,KACC,gBAAAtzB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAW;AAAA,MACX,WAAU;AAAA,IAAA;AAAA,EAAA,mCAGb,OAAA,EAAI,WAAW2zB,KACd,gBAAA3zB,EAAA,cAAC2f,IAAA,EAAa,eAAW,IAAC,WAAU,QAAA,CAAQ,IAC3CsT,KAAA,gBAAAA,EAAM,0CAAU,MAAA,EAAG,WAAU,mEAAiEA,EAAK,KAAM,IACzGA,KAAA,gBAAAA,EAAM,gBAAe,gBAAAjzB,EAAA,cAAC,SAAI,WAAU,uDAAA,GAAwDizB,EAAK,WAAY,CAChH,GACCA,EAAK,SACJ,gBAAAjzB,EAAA,cAAC,MAAA,EAAG,WAAU,0HAAA,GACXizB,EAAK,MACH,OAAO,CAACf,GAAI5qB,MAAUA,IAAQ,CAAC,EAC/B,IAAI,CAACyS,GAAMzS,MAAU;AACpB,UAAM5I,IAAM,QAAQ4I,CAAK;AACzB,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAAtB,GAAU,WAAU,UACtB,gBAAAsB,EAAA;AAAA,MAAC2H;AAAA,MAAA;AAAA,QACE,GAAGoS;AAAA,QACJ,WAAU;AAAA,QACV,YAAW;AAAA,QACX,SAAQ;AAAA,QACR,SAAO;AAAA,QACP,cAAa;AAAA,QACb,mBAAkB;AAAA,MAAA;AAAA,IAAA,CAEtB;AAAA,EAEJ,CAAC,CACL,CAEJ,GAEDqZ,KACC,gBAAApzB,EAAA,cAAC,OAAA,EAAI,WAAWuzB,EAAA,GACbH,qCAAaD,IAAA,EAAqB,UAAAC,GAAoB,cAAc,CAACH,KAAQ,CAACK,GAAc,cAAAA,EAAA,CAA4B,CAC3H,CAEJ;AAEJ,GChGMQ,KAAsD,CAACC,MAAc;AACzE,QAAMC,IAAiBD,EAAU,WAAW,eAAe;AAE3D,SACE,gBAAA/zB,EAAA,cAAAA,EAAA,UAAA,OACG+zB,KAAA,gBAAAA,EAAW,UAAS,gBAAA/zB,EAAA,cAAC,QAAG,WAAW,iCAAiCg0B,CAAc,GAAA,GAAKD,EAAU,KAAM,IACvGA,KAAA,gBAAAA,EAAW,0CACT,OAAA,EAAI,cAAYA,EAAU,MAAA,mCACxB,MAAA,EAAG,WAAU,QAAA,GACXA,EAAU,MACR,OAAO,CAAC7B,GAAI5qB,MAAUA,IAAQ,CAAC,EAC/B,IAAI,CAACyS,GAAMzS,MAAU;AACpB,UAAM5I,IAAM,QAAQ4I,CAAK;AACzB,2CACG,MAAA,EAAG,KAAA5I,GAAU,WAAU,OAAA,mCACrBiJ,IAAA,EAAQ,GAAGoS,GAAM,UAAUga,EAAU,UAAU,YAAW,QAAO,SAAQ,WAAU,CACtF;AAAA,EAEJ,CAAC,CACL,CACF,CAEJ;AAEJ,GCrBME,KAKD,CAAC,EAAE,MAAAhB,GAAM,WAAAc,GAAW,UAAAX,GAAU,UAAAhvB,QAAe;AAChD,QAAM0uB,IAAe1uB,IAAW,kCAAkC,iCAE5D8vB,IAA2B91B,EAAW;AAAA,IAC1C,oBAAoBgG;AAAA,IACpB,8BAA8BA,KAAY6uB,KAAQG,KAAY,CAACW;AAAA,IAC/D,8BAA8B3vB,KAAY6uB,KAAQ,CAACG,KAAY,CAACW;AAAA,IAChE,kCAAkC3vB,KAAY,CAAC6uB,KAAQG,KAAY,CAACW;AAAA,IAEpE,0BAA0B,CAAC3vB;AAAA,IAC3B,oCAAoC,CAACA,KAAY6uB,KAAQG,KAAY,CAACW;AAAA,IACtE,oCAAoC,CAAC3vB,KAAY6uB,KAAQ,CAACG,KAAY,CAACW;AAAA,IACvE,wCAAwC,CAAC3vB,KAAY,CAAC6uB,KAAQG,KAAY,CAACW;AAAA,EAAA,CAC5E,GAEKI,IAAsB/1B,EAAW,8EAA8E;AAAA,IACnH,oBAAoB60B,KAAQc;AAAA,IAC5B,oBAAoBd,KAAQ,CAACc;AAAA,EAAA,CAC9B;AAED,SACE,gBAAA/zB,EAAA,cAAC,SAAI,WAAWk0B,EAAA,mCACb,OAAA,EAAI,WAAU,uBACb,gBAAAl0B,EAAA,cAAC,OAAA,EAAI,WAAWm0B,EAAA,GACd,gBAAAn0B,EAAA,cAACyzB,MAA0B,MAAAR,GAAY,UAAAG,GAAoB,cAAc,CAAC,CAACW,EAAA,CAAW,GACrFA,KACC,gBAAA/zB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,sHAAsH8yB,CAAY;AAAA,IAAA;AAAA,oCAE5I,OAAA,EAAI,eAAW,IAAC,WAAW,wEAAwEA,CAAY,OAAA,CAAQ;AAAA,IACxH,gBAAA9yB,EAAA,cAAC,SAAI,WAAU,uGAAA,mCACZ8zB,IAAA,EAA+B,UAAA1vB,GAAqB,GAAG2vB,EAAA,CAAW,CACrE;AAAA,EAAA,CAGN,CACF,CACF;AAEJ,GC7CMK,KAaD,CAAC;AAAA,EACJ,YAAA1C;AAAA,EACA,YAAAC;AAAA,EACA,SAAAE;AAAA,EACA,eAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,aAAAM;AAAA,EACA,sBAAAG;AAAA,EACA,aAAAF;AAAA,EACA,sBAAAG;AAAA,EACA,WAAAF;AAAA,EACA,WAAAwB;AAAA,EACA,UAAA3vB;AACF,MAAM;AACJ,QAAM0uB,IAAe1uB,IAAW,kCAAkC,iCAC5DsuB,IAAmBtuB,IAAW,mBAAmB,kBACjD6tB,IAAkB7tB,IACpB,0EACA;AAEJ,SACE,gBAAApE,EAAA,cAAC,SAAI,WAAW8yB,EAAA,mCACb,OAAA,EAAI,WAAU,oBAAA,GACb,gBAAA9yB,EAAA,cAAC,OAAA,EAAI,WAAU,+DACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,8DAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,QAAA,GACZ0xB,EAAW,QAAQA,EAAW,SAC7B,gBAAA1xB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG0xB,EAAW;AAAA,MACf,WAAU;AAAA,IAAA;AAAA,IAEV,gBAAA1xB,EAAA,cAAC,SAAI,KAAK0xB,EAAW,MAAM,KAAM,GAAGA,EAAW,MAAA,CAAO;AAAA,EAAA,GAGzD,CAACA,EAAW,QAAQA,EAAW,SAAS,gBAAA1xB,EAAA,cAAC,OAAA,EAAK,GAAG0xB,EAAW,OAAO,KAAKA,EAAW,MAAM,IAAA,CAAK,CACjG,GACA,gBAAA1xB,EAAA,cAAC,OAAA,EAAI,WAAU,WACb,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,oDAAkD6xB,CAAQ,CAC5E,GACCF,KACC,gBAAA3xB,EAAA,cAAC,SAAI,WAAU,QAAA,IACZ2xB,KAAA,gBAAAA,EAAY,UAAQA,KAAA,gBAAAA,EAAY,UAC/B,gBAAA3xB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG2xB,EAAW;AAAA,MACf,WAAU;AAAA,IAAA;AAAA,IAEV,gBAAA3xB,EAAA,cAAC,SAAI,KAAK2xB,EAAW,MAAM,KAAM,GAAGA,EAAW,MAAA,CAAO;AAAA,EAAA,GAGzDA,KAAc,CAACA,EAAW,QAAQA,EAAW,SAAS,gBAAA3xB,EAAA,cAAC,OAAA,EAAK,GAAG2xB,EAAW,OAAO,KAAKA,EAAW,MAAM,KAAK,CAC/G,CAEJ,GACA,gBAAA3xB,EAAA,cAAC,OAAA,EAAI,WAAU,0FAAA,GACb,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAW;AAAA,MACX,WAAW,YAAY0yB,CAAgB;AAAA,IAAA;AAAA,EAAA,CAE3C,GACA,gBAAA1yB,EAAA,cAAC,OAAA,EAAI,WAAU,iEACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,gHAAA,GACb,gBAAAA,EAAA,cAAC8zB,IAAA,EAAgC,GAAGC,GAAW,UAAA3vB,EAAA,CAAoB,CACrE,CACF,CACF,GAEA,gBAAApE,EAAA,cAAC,MAAA,EAAG,eAAW,IAAC,WAAW,YAAY0yB,CAAgB,0BAAA,CAA2B,GAClF,gBAAA1yB,EAAA,cAAC,OAAA,EAAI,WAAU,yIAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,8CAA6C,cAAY+xB,EAAA,GACrED,KACC,gBAAA9xB,EAAA,cAAC,MAAA,EAAG,WAAU,yCAAA,GACX8xB,EACE,OAAO,CAACI,GAAI5qB,MAAUA,IAAQ,EAAE,EAChC,IAAI,CAAC6qB,GAAS7qB,MAAU;AACvB,UAAM5I,IAAM,QAAQ4I,CAAK;AAEzB,2CACG,MAAA,EAAG,KAAA5I,EAAA,IACDyzB,KAAA,gBAAAA,EAAS,UAAQA,KAAA,gBAAAA,EAAS,UACzB,gBAAAnyB,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAGmyB,EAAQ;AAAA,QACZ,WAAW,GAAGF,CAAe;AAAA,MAAA;AAAA,MAE7B,gBAAAjyB,EAAA,cAAC,SAAI,KAAKmyB,EAAQ,MAAM,KAAM,GAAGA,EAAQ,MAAA,CAAO;AAAA,IAAA,GAGnD,EAACA,KAAA,QAAAA,EAAS,UAAQA,KAAA,gBAAAA,EAAS,UAAS,gBAAAnyB,EAAA,cAAC,OAAA,EAAK,GAAGmyB,KAAA,gBAAAA,EAAS,OAAO,KAAKA,KAAA,gBAAAA,EAAS,MAAM,KAAK,CACzF;AAAA,EAEJ,CAAC,CACL,CAEJ,CACF,GACA,gBAAAnyB,EAAA,cAAC,MAAA,EAAG,eAAW,IAAC,WAAW,YAAY0yB,CAAgB,2BAA2B,GAElF,gBAAA1yB,EAAA;AAAA,IAACoyB;AAAA,IAAA;AAAA,MACC,UAAAhuB;AAAA,MACA,aAAAiuB;AAAA,MACA,aAAAC;AAAA,MACA,WAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,sBAAAC;AAAA,IAAA;AAAA,EAAA,CAEJ,CACF;AAEJ,GC1CM4B,KAAsC,CAAC;AAAA,EAC3C,MAAApB;AAAA,EACA,UAAAG;AAAA,EACA,WAAAW;AAAA,EACA,YAAArC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAE;AAAA,EACA,eAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,aAAAM;AAAA,EACA,sBAAAG;AAAA,EACA,aAAAF;AAAA,EACA,sBAAAG;AAAA,EACA,WAAAF;AAAA,EACA,UAAAnuB;AACF,MAAM;AAEJ,QAAM8uB,IAAa9uB,MAAa,SAAY,KAAOA;AAEnD,yCACG,OAAA,EAAI,WAAU,mBACX6uB,KAAQG,KAAY,CAACW,MACrB,gBAAA/zB,EAAA,cAAAA,EAAA,UAAA,sCACGi0B,IAAA,EAAsB,MAAAhB,GAAY,WAAAc,GAAsB,UAAAX,GAAoB,UAAUF,GAAY,IACjGD,KAAQc,KAAaX,MACrB,gBAAApzB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAW;AAAA,MACX,WAAU;AAAA,IAAA;AAAA,EAAA,GAGd,gBAAAA,EAAA;AAAA,IAAC6yB;AAAA,IAAA;AAAA,MACC,UAAUK;AAAA,MACV,YAAAxB;AAAA,MACA,YAAAC;AAAA,MACA,SAAAE;AAAA,MACA,eAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,aAAAM;AAAA,MACA,sBAAAG;AAAA,MACA,aAAAF;AAAA,MACA,sBAAAG;AAAA,MACA,WAAAF;AAAA,IAAA;AAAA,EAAA,CAEJ,GAED,CAACU,KAAQc,KACR,gBAAA/zB,EAAA;AAAA,IAACo0B;AAAA,IAAA;AAAA,MACC,UAAUlB;AAAA,MACV,WAAAa;AAAA,MACA,YAAArC;AAAA,MACA,YAAAC;AAAA,MACA,SAAAE;AAAA,MACA,eAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,aAAAM;AAAA,MACA,sBAAAG;AAAA,MACA,aAAAF;AAAA,MACA,sBAAAG;AAAA,MACA,WAAAF;AAAA,IAAA;AAAA,EAAA,CAGN;AAEJ,GCpHM+B,KAA4C,CAAC,EAAE,KAAA3zB,IAAM,MAAM,SAAA4zB,GAAS,GAAG50B,QAAY;AACvF,QAAM60B,IAAoBD,KAAA,gBAAAA,EAAS,IAAI,CAAC,EAAE,QAAAE,GAAQ,QAAA3O,GAAQ,GAAGvH,QAAkB;AAC7E,UAAMmW,IAAa5O,MAAW,YAExBiL,IAAajL,MAAW,YAExB1hB,IAAWzE,EAAM,YAAY,IAE7Bg1B,IAAkBv2B,EAAW,UAAU;AAAA,MAC3C,mBAAmBs2B;AAAA,MACnB,mBAAmB3D,KAAc,CAAC3sB;AAAA,MAElC,eAAeA;AAAA,MACf,wBAAwB2sB,KAAc3sB;AAAA,IAAA,CACvC,GAEKwwB,IAAO,IAAIH,CAAM;AAEvB,WAAIC,IAEA,gBAAA10B,EAAA,cAAC,QAAA,EAAK,KAAK,GAAGy0B,CAAM,IAAIG,CAAI,IAAI,WAAWD,GAAiB,iBAAc,OAAA,GACvEF,CACH,IAKF,gBAAAz0B,EAAA,cAAC,KAAA,EAAE,KAAK,GAAGy0B,CAAM,IAAIG,CAAI,IAAK,GAAGrW,GAAa,WAAWoW,GAAiB,MAAAC,KACvEH,CACH;AAAA,EAEJ;AAEA,SACE,gBAAAz0B,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,WAAU,cAAa,KAAAgB,EAAA,GACrC,gBAAAX,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAA,GAAsBw0B,CAAkB,CACzD;AAEJ,GCCaK,KAAoBznB,GAAsC,EAA4B,GAEtF0nB,KAAuB,MAC3BxnB,GAAWunB,EAAiB,GClExBE,KAAsB,MAAM,gBAAA/0B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCD9Bg1B,KAAwB,MAAM,gBAAAh1B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCIhCi1B,KAAkC,MAAM,gBAAAj1B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCN1Ck1B,KAAuB,CAACr0B,MAAiD;AACpF,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIG,IAAqD;AACzD,EAAID,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFC,IAAoBt0B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACzEC,EAA2BD,CAAK,KAAMA,EAAuB,SAASi0B,EAC9E;AAGH,MAAIK,IAA+C,CAAA;AACnD,SAAID,KAAqBp0B,EAA2Bo0B,CAAiB,MACnEC,IAAoBv0B,EAAS,QAAQs0B,EAAkB,MAAM,QAAQ,EAAE,IAAI,CAACr0B,MAAU;AACpF,QAAIC,EAA0BD,CAAK,KAAMA,EAAuB,SAASg0B;AACvE,aAAOh0B;AAAA,EAEX,CAAC,IAGIs0B,EAAkB,SAAS;AACpC,GAEaC,KAAyB,CAACz0B,MAAgD;AACrF,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIG,IAAqD;AACzD,SAAID,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFC,IAAoBt0B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACzEC,EAA2BD,CAAK,KAAMA,EAAuB,SAASi0B,EAC9E,KAGII,KAAA,gBAAAA,EAAmB,MAAM,kBAAiB;AACnD,GAEaG,KAAwB,CAAC10B,MAA2F;AAC/H,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIG,IAAqD;AAMzD,MALID,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFC,IAAoBt0B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACzEC,EAA2BD,CAAK,KAAMA,EAAuB,SAASi0B,EAC9E,IAECI;AACF,WAAOA,EAAkB,MAAM;AAEnC,GAEaI,KAA8B,CAAC30B,MAA6D;AACvG,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIG,IAAqD;AACzD,EAAID,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFC,IAAoBt0B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACzEC,EAA2BD,CAAK,KAAMA,EAAuB,SAASi0B,EAC9E;AAGH,MAAIK,IAA+C,CAAA;AACnD,EAAID,KAAqBp0B,EAA2Bo0B,CAAiB,MACnEC,IAAoBv0B,EAAS,QAAQs0B,EAAkB,MAAM,QAAQ,EAAE,IAAI,CAACr0B,MAAU;AACpF,QAAIC,EAA0BD,CAAK,KAAMA,EAAuB,SAASg0B;AACvE,aAAOh0B;AAAA,EAEX,CAAC;AAGH,MAAI00B,IAAQJ,EACT,IAAI,CAACK,MACA10B,EAA0B00B,CAAC,IACtBA,KAAA,gBAAAA,EAAG,QAGL,IACR,EACA,OAAO,CAACA,MAAM,CAAC,CAACA,CAAC;AAEpB,SAAID,EAAM,SAAS,KAAK,CAACA,EAAM,KAAK,CAAC7U,MAAMA,EAAE,MAAM,MACjD6U,IAAQA,EAAM,IAAI,CAAC7U,GAAGtZ,OACb;AAAA,IACL,GAAGsZ;AAAA,IACH,QAAQtZ,KAAS;AAAA,EAAA,EAEpB,IAGImuB;AACT,GAEaE,KAA2B,CAAC90B,MAChC20B,GAA4B30B,CAAQ,EACxC,OAAO,CAAC,MAAM,EAAE,MAAM,EACtB,GAAG,CAAC,GCxGI+0B,KAAgE,MAAM,gBAAA51B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCCxE61B,KAAoD,MAAM,gBAAA71B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCM5D81B,KAAwC,MAAM,gBAAA91B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCLhD+1B,KAAgD,MAAM,gBAAA/1B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCwBxDg2B,KAAwD,MAAM,gBAAAh2B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCxBhEi2B,KAAoD,MAAM,gBAAAj2B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCO5Dk2B,KAA8B,CAACr1B,MAAmE;AAC7G,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIkB,IAAqE;AACzE,SAAIhB,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFgB,IAA4Br1B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACjFC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+0B,EACtF,IAGIK,IAA4BA,EAA0B,QAAQ;AACvE,GAEaC,KAAoC,CAACv1B,MAAyE;AACzH,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIkB,IAAqE;AACzE,EAAIhB,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFgB,IAA4Br1B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACjFC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+0B,EACtF;AAGH,MAAIO,IAAiF;AACrF,SAAIF,KAA6Bn1B,EAAmCm1B,CAAyB,MAC3FE,IAAkCv1B,EAAS,QAAQq1B,EAA0B,MAAM,QAAQ,EAAE,KAAK,CAACp1B,MAC1FC,EAAyCD,CAAK,KAAMA,EAAuB,SAAS80B,EAC5F,GACGQ,KACKA,EAAgC,QAIpC;AACT,GAEaC,KAAsC,CAACz1B,MAAsE;AACxH,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIkB,IAAqE;AACzE,EAAIhB,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFgB,IAA4Br1B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACjFC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+0B,EACtF;AAGH,MAAIS,IAA6E;AAOjF,SANIJ,KAA6Bn1B,EAAmCm1B,CAAyB,MAC3FI,IAAgCz1B,EAAS,QAAQq1B,EAA0B,MAAM,QAAQ,EAAE,KAAK,CAACp1B,MACxFC,EAAuCD,CAAK,KAAMA,EAAuB,SAASg1B,EAC1F,IAGCQ,IACKz1B,EAAS,QAAQy1B,EAA8B,MAAM,QAAQ,EACjE,IAAI,CAACx1B,MAAU;AACd,QAAIC,EAA2CD,CAAK,KAAMA,EAAuB,SAASi1B;AACxF,aAAOj1B,EAAM;AAAA,EAEjB,CAAC,EACA,OAAO,CAAC/B,MAAM,CAAC,CAACA,CAAC,IAGf,CAAA;AACT,GAEaw3B,KAA0C,CAAC31B,MAA0E;AAChI,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIkB,IAAqE;AACzE,EAAIhB,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFgB,IAA4Br1B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACjFC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+0B,EACtF;AAGH,MAAIW,IAAiF;AAOrF,SANIN,KAA6Bn1B,EAAmCm1B,CAAyB,MAC3FM,IAAkC31B,EAAS,QAAQq1B,EAA0B,MAAM,QAAQ,EAAE,KAAK,CAACp1B,MAC1FC,EAAyCD,CAAK,KAAMA,EAAuB,SAASk1B,EAC5F,IAGCQ,IACK31B,EAAS,QAAQ21B,EAAgC,MAAM,QAAQ,EACnE,IAAI,CAAC11B,MAAU;AACd,QAAIC,EAA+CD,CAAK,KAAMA,EAAuB,SAAS60B;AAC5F,aAAO70B,EAAM;AAAA,EAEjB,CAAC,EACA,OAAO,CAAC/B,MAAM,CAAC,CAACA,CAAC,IAGf,CAAA;AACT,GC3Ga03B,KAAwB,MAAM,gBAAA12B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCJhC22B,KAAwC,MAAM,gBAAA32B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCAhD42B,KAAsB,MAAM,gBAAA52B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCE9B62B,KAA+B,CAACh2B,MAAmD;AAC9F,QAAMi2B,IAAoBh2B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAClDC,EAA2BD,CAAK,KAAMA,EAAuB,SAAS21B,EAC9E;AAED,MAAIK,IAAgE;AACpE,SAAID,KAAqB91B,EAA2B81B,CAAiB,MACnEC,IAAuBj2B,EAAS,QAAQg2B,EAAkB,MAAM,QAAQ,EAAE,KAAK,CAAC/1B,MACvEC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS41B,EACtF,IAGII,IAAuBA,EAAqB,MAAM,WAAW;AACtE,GAEaC,KAAgB,CAACn2B,MAAmD;AAC/E,QAAMi2B,IAAoBh2B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAClDC,EAA2BD,CAAK,KAAMA,EAAuB,SAAS21B,EAC9E;AAED,MAAIO,IAA8C;AAClD,SAAIH,KAAqB91B,EAA2B81B,CAAiB,MACnEG,IAAcn2B,EAAS,QAAQg2B,EAAkB,MAAM,QAAQ,EAAE,KAAK,CAAC/1B,MAC9DC,EAA0BD,CAAK,KAAMA,EAAuB,SAAS61B,EAC7E,IAGIK,IAAcA,EAAY,MAAM,WAAW;AACpD,GC9BaC,KAA+B,CAACr2B,MAAgD;AAC3F,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,UAAOE,KAAA,gBAAAA,EAAwB,MAAM,kBAAiB;AACxD,GCDagC,KAA8B,MAAM,gBAAAn3B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCDtCo3B,KAAgC,MAAM,gBAAAp3B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCFxCq3B,KAAoB,CAACx2B,MAA6E;AAC7G,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,SAAIE,KAA0Bn0B,EAAgCm0B,CAAsB,IAC3Er0B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC5DC,EAA+BD,CAAK,KAAMA,EAAuB,SAASq2B,EAClF,IAGI;AACT,GAEaE,KAAoB,CAACz2B,MACzB,CAAC,CAACw2B,GAAkBx2B,CAAQ,GAGxB02B,KAA8B,CAAC12B,MAAgD;AAC1F,QAAM22B,IAAwBH,GAAkBx2B,CAAQ;AACxD,UAAO22B,KAAA,gBAAAA,EAAuB,MAAM,kBAAiB;AACvD,GAEaC,KAA4B,CAAC52B,MAA+F;AACvI,QAAM22B,IAAwBH,GAAkBx2B,CAAQ;AACxD,MAAI22B;AACF,WAAOA,EAAsB,MAAM;AAEvC,GAEaE,KAAkC,CAAC72B,MAAyD;AACvG,QAAM22B,IAAwBH,GAAkBx2B,CAAQ;AAExD,MAAI82B,IAAuD,CAAA;AAC3D,SAAIH,KAAyBx2B,EAA+Bw2B,CAAqB,MAC/EG,IAAwB72B,EAAS,QAAQ02B,EAAsB,MAAM,QAAQ,EAAE,IAAI,CAACz2B,MAAU;AAC5F,QAAIC,EAA8BD,CAAK,KAAMA,EAAuB,SAASo2B;AAC3E,aAAOp2B;AAAA,EAEX,CAAC,IAGI42B,EACJ,IAAI,CAACjC,MAAM;AACV,QAAI10B,EAA8B00B,CAAC;AACjC,aAAOA,KAAA,gBAAAA,EAAG;AAAA,EAEd,CAAC,EACA,OAAO,CAACA,MAAM,CAAC,CAACA,CAAC;AACtB,GAEakC,KAAgC,CAAC/2B,MAAyD;AACrG,QAAM22B,IAAwBH,GAAkBx2B,CAAQ;AAExD,MAAI82B,IAAuD,CAAA;AAS3D,SARIH,KAAyBx2B,EAA+Bw2B,CAAqB,MAC/EG,IAAwB72B,EAAS,QAAQ02B,EAAsB,MAAM,QAAQ,EAAE,IAAI,CAACz2B,MAAU;AAC5F,QAAIC,EAA8BD,CAAK,KAAMA,EAAuB,SAASo2B;AAC3E,aAAOp2B;AAAA,EAEX,CAAC,IAGC42B,EAAsB,SAAS,IAC1BA,EACJ,OAAO,CAACE,MACA72B,EAA8B62B,CAAI,KAAKA,EAAK,MAAM,OAC1D,EACA,IAAI,CAACA,MAASA,EAAK,KAAK,IAGtB,CAAA;AACT,GCvDaC,KAAwC,MAAM,gBAAA93B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCjBhD+3B,KAAoD,MAAM,gBAAA/3B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCwB5Dg4B,KAA0C,MAAM,gBAAAh4B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCjBlDi4B,KAA0C,MAAM,gBAAAj4B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCNlDk4B,KAA8B,CAACr3B,MAAmE;AAC7G,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,SAAOK,KAAA,gBAAAA,EAA2B;AACpC,GAEaC,KAA2B,CAACv3B,MAAgD;AACvF,QAAMs3B,IAA4BD,GAA4Br3B,CAAQ;AACtE,UAAOs3B,KAAA,gBAAAA,EAA2B,OAAM;AAC1C,GAEaE,KAA6B,CAACx3B,MAAgD;AACzF,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,SAAOh3B,EAAS,SAAQq3B,KAAA,gBAAAA,EAA2B,MAAM,aAAY,CAAA,CAAE,EAAE;AAC3E,GAEaG,KAA2B,CACtCz3B,MACyF;AACzF,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,SAAOh3B,EAAS,QAAQq3B,EAA0B,MAAM,QAAQ,EAC7D,IAAI,CAACp3B,MACAC,EAAyCD,CAAK,KAAMA,EAAuB,SAASg3B,MAIpF/2B,EAAoCD,CAAK,KAAMA,EAAuB,SAASk3B,MAI/Ej3B,EAAoCD,CAAK,KAAMA,EAAuB,SAASi3B,KAC1Ej3B,IAGF,IACR,EACA,OAAO,CAAC/B,MAAM,CAAC,CAACA,CAAC;AACtB,GAIau5B,KAA0B,CAAC13B,MAAgD;AACtF,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,UAAOK,KAAA,gBAAAA,EAA2B,MAAM,mBAAkB;AAC5D,GAEaK,KAA0B,CAAC33B,MAAgD;AACtF,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,UAAOK,KAAA,gBAAAA,EAA2B,MAAM,mBAAkB;AAC5D,GAEaM,KAA2B,CAAC53B,MAAgD;AACvF,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,UAAOK,KAAA,gBAAAA,EAA2B,MAAM,oBAAmB;AAC7D,GAMaO,KAA+B,CAAC73B,MAAgD;AAC3F,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,UAAOK,KAAA,gBAAAA,EAA2B,MAAM,wBAAuB;AACjE,GAEaQ,KAAmC,CAAC93B,MAAgD;AAC/F,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,UAAOK,KAAA,gBAAAA,EAA2B,MAAM,4BAA2B;AACrE,GAEaS,KAAyC,CAAC/3B,MAAgD;AACrG,QAAMs3B,IAA4Br3B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAmCD,CAAK,KAAMA,EAAuB,SAAS+2B,EACtF;AAED,UAAOK,KAAA,gBAAAA,EAA2B,MAAM,kCAAiC;AAC3E,GAEaU,KAA2B,CAACh4B,MAClC,MAAM,QAAQA,CAAQ,IAEpBA,EAAS,KAAK,CAACE,MAAUA,EAAM,SAAS+2B,EAAa,IAFvB,ICzG1BgB,KAAsC,MAAM,gBAAA94B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCO9C+4B,KAAwC,MAAM,gBAAA/4B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCHhDg5B,KAA0B,MAAM,gBAAAh5B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCDlCi5B,KAAsD,MAAM,gBAAAj5B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCwB9Dk5B,KAAgD,MAAM,gBAAAl5B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCrBxDm5B,KAAkD,MAAM,gBAAAn5B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCN1Do5B,KAA4D,MAAM,gBAAAp5B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCApEq5B,KAAoC,MAAM,gBAAAr5B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCC5Cs5B,KAAsC,MAE/C,gBAAAt5B,EAAA,cAAC,QAAA,EAAK,WAAU,YAAA,GACd,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,gBAAA,GACd,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,eAAc,GAC9B,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,cAAA,CAAc,GAC9B,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,cAAA,CAAc,GAC9B,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,cAAA,CAAc,CAChC,CACF,GCmEEu5B,KAA0C,CAAC;AAAA,EAC/C,KAAA54B,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,OAAA2N;AAAA,EACA,WAAAkC;AAAA,EACA,UAAArM;AAAA,EACA,SAAAH;AAAA,EACA,eAAAinB;AAAA,EACA,YAAAP;AAAA,EACA,MAAAjc;AAAA,EACA,sBAAA8qB,IAAuB;AAAA,EACvB,oBAAAC,IAAqB;AAAA,EACrB,qBAAAC,IAAsB;AAAA,EACtB,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAl1B;AAAA,EACA,GAAGhF;AACL,MAAM;;AACJ,QAAMoD,IAAWb,EAAyB,IAAI,GACxC43B,IAAkB53B,EAA0B,IAAI,GAChD63B,IAAiB73B,EAA0B,IAAI,GAE/C,CAACiD,GAAaC,CAAc,IAAIhD,EAAuB,SAAS;AAEtE,EAAAU;AAAA,IACEnC;AAAA,IACAoC;AAAA,IACA;AAAA,MACE,oBAAoB+2B;AAAA,MACpB,mBAAmBC;AAAA,IAAA;AAAA,IAErB,CAACh3B,GAAU+2B,GAAiBC,CAAc;AAAA,EAAA;AAG5C,QAAMl1B,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,CAACm1B,GAAeC,CAAgB,IAAI73B,EAAS0H,EAAW,KAAK,GAE7DowB,IAAoB,CAAC1zB,MAAuC;AAChE,UAAM,EAAE,OAAAvI,OAAUuI,EAAI;AACtB,IAAAyzB,EAAiBh8B,EAAK,GACtB0G,KAAA,QAAAA,EAAW6B;AAAA,EACb,GAEM2zB,IAAqB,MAAM;AAC/B,IAAAP,KAAA,QAAAA;AAAA,EACF,GAEM/yB,IAAsB,MAAM;AAChC,IAAAzB,EAAe,OAAO;AAAA,EACxB,GAEMwB,IAAsB,MAAM;AAChC,IAAAxB,EAAe,SAAS;AAAA,EAC1B,GAEMsB,IAAqB,MAAM;AAC/B,IAAAtB,EAAe,QAAQ;AAAA,EACzB,GAEMuB,IAAmB,MAAM;AAC7B,IAAAvB,EAAe,OAAO;AAAA,EACxB,GAEMg1B,IAAsB,MAAM;AAChC,IAAAP,KAAA,QAAAA,GAAmBG,KAAA,gBAAAA,EAAe,eAAc;AAAA,EAClD,GAEMK,IAAyBj8B,EAAW,0BAA0B,EAAE,aAAagG,EAAA,GAAYxD,CAAS,GAElG05B,IAAsBl8B,EAAW,sCAAsC;AAAA,IAC3E,SAASmQ,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,IAC5C,eAAe,CAAClC,KAAS1L,EAAgB4N,CAAS;AAAA,IAClD,mBAAmBlC,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,EAAA,CACvD,GAEK8pB,IAAoBzwB,EAAW,YAAYA,EAAW,YAAY,IAAI;AAE5E,SAAAzH,EAAU,MAAM;AACd,IAAA43B,EAAiBnwB,EAAW,KAAK;AAAA,EACnC,GAAG,CAACA,EAAW,KAAK,CAAC,mCAGlB,OAAA,EAAI,QAAQ,CAAC,CAACA,EAAW,QAAQ,WAAWuwB,EAAA,GAE3C,gBAAAr6B,EAAA,cAAC,SAAI,WAAWs6B,KACd,gBAAAt6B,EAAA,cAAC,SAAA,EAAM,QAAQ6C,EAAgB4N,CAAS,GAAG,SAAS3G,EAAW,IAAI,WAAU,yBAAA,GAC1EyE,CACH,CACF,GAEA,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAU,gCACZiE,KACC,gBAAAjE,EAAA,cAACU,IAAA,EAAQ,OAAOyE,KACd,gBAAAnF,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,WAAU,wBAAuB,OAAM,WAAU,MAAMkO,KAAQ,UAAA,CAAW,GAChG,gBAAA1O,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,WAAU,sBAAqB,OAAM,SAAQ,OAAMkO,KAAA,gBAAAA,EAAM,QAAQ,QAAQ,aAAY,WAAW,GACtH,gBAAA1O,EAAA,cAACQ,KAAS,eAAW,IAAC,WAAU,uBAAsB,OAAM,UAAS,MAAMkO,KAAQ,UAAA,CAAW,CAChG,GAEF,gBAAA1O,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,WAAU;AAAA,MACV,KAAK/G;AAAA,MACL,MAAK;AAAA,MACL,UAAU,CAAC,CAAC+G,EAAW;AAAA,MACvB,UAAUowB;AAAA,MACV,cAAYr3B,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,oBAAkBjH,EAAgBqoB,CAAa,KAAKP,IAAa,oBAAoB7gB,EAAW,EAAE,iBAAiB;AAAA,IAAA;AAAA,EAAA,GAGrH,gBAAA9J,EAAA,cAAC,OAAA,EAAI,WAAU,yCAAA,GACZ6C,EAAgB22B,CAAoB,KACnC,gBAAAx5B,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,KAAK0uB;AAAA,MACL,WAAU;AAAA,MACV,YAAW;AAAA,MACX,cAAYN;AAAA,MACZ,SAASU;AAAA,MACT,cAActzB;AAAA,MACd,cAAcD;AAAA,MACd,WAAWD;AAAA,MACX,aAAaD;AAAA,IAAA;AAAA,IAEZ7D,EAAgB22B,CAAoB,KAAKG,IACxC,gBAAA35B,EAAA,cAACs5B,QAAU,IAEX,gBAAAt5B,EAAA,cAACU,IAAA,EAAQ,WAAU,wBAAuB,OAAOyE,EAAA,mCAC9C3E,GAAA,EAAS,eAAW,IAAC,OAAM,WAAU,MAAK,oBAAA,CAAoB,GAC/D,gBAAAR,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,OAAM,SAAQ,MAAK,qBAAA,CAAqB,GAC9D,gBAAAR,EAAA,cAACQ,KAAS,eAAW,IAAC,OAAM,UAAS,MAAK,qBAAoB,CAChE;AAAA,EAAA,GAIN,gBAAAR,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,KAAKyuB;AAAA,MACL,WAAU;AAAA,MACV,YAAW;AAAA,MACX,UAAQ;AAAA,MACR,SAAO;AAAA,MACP,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,cAAYJ;AAAA,MACZ,SAASU;AAAA,MACT,aAAWv6B,IAAAm6B,KAAA,gBAAAA,EAAe,eAAf,gBAAAn6B,EAA2B,WAAU,MAAM06B;AAAA,IAAA;AAAA,EAAA,CAE1D,CACF,GAEC13B,EAAgBqoB,CAAa,KAAKP,KACjC,gBAAA3qB,EAAA,cAAC0qB,IAAA,EAAW,IAAI,oBAAoB5gB,EAAW,EAAE,gBAAgB,YAAA6gB,GAAwB,UAAAvmB,GAAoB,CAEjH;AAEJ,GCpOao2B,KAAiB,CAAC35B,MAAiD;AAC9E,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,SAAIE,KAA0Bn0B,EAAgCm0B,CAAsB,IAK3E,CAAC,CAJmBr0B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAChFC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E,IAKI;AACT,GAEayB,KAAuB,CAAC55B,MAAgD;AACnF,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF;AACJ,SAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E,KAGI0B,KAAA,gBAAAA,EAAoB,MAAM,UAAS;AAC5C,GAEaC,KAAwB,CAAC95B,MAAiD;AACrF,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF,IAAuD;AAC3D,EAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E;AAGH,MAAI4B,IAAqE;AACzE,SAAIF,KAAsB15B,EAAmC05B,KAAA,gBAAAA,EAAoB,MAAM,QAAQ,KAC7FE,IAA4B95B,EAAS,QAAQ45B,EAAmB,MAAM,QAAQ,EAAE,KAAK,CAAC35B,MAC7EC,EAAmCD,CAAK,KAAMA,EAAuB,SAASg4B,EACtF,GAEM,CAAC,CAAC6B,KAGJ;AACT,GAEaC,KAA8B,CAACh6B,MAAiE;AAC3G,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF,IAAuD;AAC3D,EAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E;AAGH,MAAI4B,IAAqE;AACzE,EAAIF,MACFE,IAA4B95B,EAAS,QAAQ45B,EAAmB,MAAM,QAAQ,EAAE,KAAK,CAAC35B,MAC7EC,EAAmCD,CAAK,KAAMA,EAAuB,SAASg4B,EACtF;AAGH,MAAI+B,IAAgE;AACpE,SAAIF,MACFE,IAAyBh6B,EAAS,QAAQ85B,EAA0B,MAAM,QAAQ,EAAE,KAAK,CAAC75B,MACjFC,EAAiCD,CAAK,KAAMA,EAAuB,SAASs4B,EACpF,IAGIyB,KAAA,gBAAAA,EAAwB;AACjC,GAEaC,KAAiC,CAACl6B,MAAoE;AACjH,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF,IAAuD;AAC3D,EAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E;AAGH,MAAI4B,IAAqE;AACzE,EAAIF,MACFE,IAA4B95B,EAAS,QAAQ45B,EAAmB,MAAM,QAAQ,EAAE,KAAK,CAAC35B,MAC7EC,EAAmCD,CAAK,KAAMA,EAAuB,SAASg4B,EACtF;AAGH,MAAIiC,IAAqF;AACzF,EAAIJ,MACFI,IAAqCl6B,EAAS,QAAQ85B,EAA0B,MAAM,QAAQ,EAAE,KAAK,CAAC75B,MAC7FC,EAA0CD,CAAK,KAAMA,EAAuB,SAASk4B,EAC7F;AAGH,MAAIgC,IAAkE;AAEtE,SAAID,MACFC,IAAwBn6B,EAAS,QAAQk6B,EAAmC,MAAM,QAAQ,EAAE,KAAK,CAACj6B,MACzFC,EAAoCD,CAAK,KAAMA,EAAuB,SAASw4B,EACvF,KAGI0B,KAAA,gBAAAA,EAAuB,UAAS;AACzC,GAEaC,KAAgC,CAACr6B,MAAmD;AAC/F,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF,IAAuD;AAC3D,EAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E;AAGH,MAAI4B,IAAqE;AACzE,EAAIF,MACFE,IAA4B95B,EAAS,QAAQ45B,EAAmB,MAAM,QAAQ,EAAE,KAAK,CAAC35B,MAC7EC,EAAmCD,CAAK,KAAMA,EAAuB,SAASg4B,EACtF;AAGH,MAAIiC,IAAqF;AACzF,SAAIJ,MACFI,IAAqCl6B,EAAS,QAAQ85B,EAA0B,MAAM,QAAQ,EAAE,KAAK,CAAC75B,MAC7FC,EAA0CD,CAAK,KAAMA,EAAuB,SAASk4B,EAC7F,IAGI+B,KAAA,gBAAAA,EAAoC,MAAM;AACnD,GAEaG,KAA0C,CAACt6B,MAA6E;AACnI,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF,IAAuD;AAC3D,EAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E;AAGH,MAAI4B,IAAqE;AACzE,EAAIF,MACFE,IAA4B95B,EAAS,QAAQ45B,EAAmB,MAAM,QAAQ,EAAE,KAAK,CAAC35B,MAC7EC,EAAmCD,CAAK,KAAMA,EAAuB,SAASg4B,EACtF;AAGH,MAAIqC,IAA8E;AAClF,EAAIR,MACFQ,IAAgCt6B,EAAS,QAAQ85B,EAA0B,MAAM,QAAQ,EAAE,KAAK,CAAC75B,MACxFC,EAAwCD,CAAK,KAAMA,EAAuB,SAASo4B,EAC3F;AAGH,MAAIkC,IAAwF;AAC5F,SAAID,MACFC,IAAqCv6B,EAAS,QAAQs6B,EAA8B,MAAM,QAAQ,EAAE,KAAK,CAACr6B,MACjGC,EAA6CD,CAAK,KAAMA,EAAuB,SAASq4B,EAChG,IAGIiC,KAAA,gBAAAA,EAAoC;AAC7C,GAEaC,KAAqC,CAACz6B,MAAkE;AACnH,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF,IAAuD;AAC3D,EAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E;AAGH,MAAI4B,IAAqE;AACzE,EAAIF,MACFE,IAA4B95B,EAAS,QAAQ45B,EAAmB,MAAM,QAAQ,EAAE,KAAK,CAAC35B,MAC7EC,EAAmCD,CAAK,KAAMA,EAAuB,SAASg4B,EACtF;AAGH,MAAIqC,IAA8E;AAOlF,SANIR,MACFQ,IAAgCt6B,EAAS,QAAQ85B,EAA0B,MAAM,QAAQ,EAAE,KAAK,CAAC75B,MACxFC,EAAwCD,CAAK,KAAMA,EAAuB,SAASo4B,EAC3F,IAGCiC,IACKt6B,EAAS,QAAQs6B,EAA8B,MAAM,QAAQ,EACjE,IAAI,CAACr6B,MACAC,EAAuCD,CAAK,KAAMA,EAAuB,SAASm4B,KAC7En4B,EAAM,QAGR,IACR,EACA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAGf,CAAA;AACT,GAEaw6B,KAAuB,CAAC16B,MAAiD;AACpF,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF,IAAuD;AAC3D,EAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E;AAGH,MAAIwC,IAAmE;AACvE,SAAId,KAAsB15B,EAAkC05B,EAAmB,MAAM,QAAQ,MAC3Fc,IAA2B16B,EAAS,QAAQ45B,EAAmB,MAAM,QAAQ,EAAE,KAAK,CAAC35B,MAC5EC,EAAkCD,CAAK,KAAMA,EAAuB,SAAS+3B,EACrF,IAGI,CAAC,CAAC0C;AACX,GAEaC,KAA6B,CAAC56B,MAAkE;AAC3G,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAIyF,IAAuD;AAC3D,EAAIvF,KAA0Bn0B,EAAgCm0B,CAAsB,MAClFuF,IAAqB55B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MAC1EC,EAA4BD,CAAK,KAAMA,EAAuB,SAASi4B,EAC/E;AAGH,MAAI0C,IAA4D;AAChE,SAAIhB,MACFgB,IAAoB56B,EAAS,QAAQ45B,EAAmB,MAAM,QAAQ,EAAE,KAAK,CAAC35B,MACrEC,EAAkCD,CAAK,KAAMA,EAAuB,SAAS+3B,EACrF,IAGI4C,KAAA,gBAAAA,EAAmB;AAC5B,GClRaC,KAA4C,MAAM,gBAAA37B,EAAA,cAAAA,EAAA,UAAA,IAAE,GCyBpD47B,KAAoD,MAAM,gBAAA57B,EAAA,cAAAA,EAAA,UAAA,IAAE,GC3B5D67B,KAAgC,CAACh7B,MAAqE;AACjH,QAAMs0B,IAAyBr0B,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACvDC,EAAgCD,CAAK,KAAMA,EAAuB,SAASk0B,EACnF;AAED,MAAI6G,IAAyE;AAC7E,SAAI3G,KAA0Bn0B,EAAgCm0B,CAAsB,MAClF2G,IAA8Bh7B,EAAS,QAAQq0B,EAAuB,MAAM,QAAQ,EAAE,KAAK,CAACp0B,MACnFC,EAAqCD,CAAK,KAAMA,EAAuB,SAAS46B,EACxF,IAGIG,IAA8BA,EAA4B,QAAQ;AAC3E,GAEaC,KAAgC,CAACl7B,MAAoE;AAChH,QAAMm7B,IAAuBH,GAA8Bh7B,CAAQ;AAEnE,SAAIm7B,KAAA,QAAAA,EAAsB,WACjBl7B,EAAS,QAAQk7B,EAAqB,QAAQ,EAClD,IAAI,CAACj7B,MAAU;AACd,QAAIC,EAAyCD,CAAK,KAAMA,EAAuB,SAAS66B;AACtF,aAAO76B,EAAM;AAAA,EAEjB,CAAC,EACA,OAAO,CAAC/B,MAAM,CAAC,CAACA,CAAC,IAGf,CAAA;AACT,GCiCai9B,KAA0B,CAACt8B,MAA+C;AACrF,QAAM,EAAE,UAAAyE,GAAU,oBAAA83B,IAAqB,GAAG,UAAAr7B,MAAalB,GAEjDw8B,IAAyB,MACtBjF,GAA6Br2B,CAAQ,GAGxCu7B,IAAyB,MACtBvF,GAA6Bh2B,CAAQ,GAGxCw7B,IAAe,MACZrF,GAAcn2B,CAAQ,GAGzBy7B,IAAkB,MACfpH,GAAqBr0B,CAAQ,GAGhC07B,IAAoB,MACjBjH,GAAuBz0B,CAAQ,GAGlC27B,IAAW,MACRhH,GAA4B30B,CAAQ,GAGvC47B,IAAgB,MACb9G,GAAyB90B,CAAQ,GAGpC67B,IAAe,CAACC,MAAiB;AACrC,UAAM5qB,IAAUwjB,GAAsB10B,CAAQ;AAC9C,WAAOkR,KAAA,gBAAAA,EAAU4qB;AAAA,EACnB,GAEMC,IAAe,MACZtF,GAAkBz2B,CAAQ,GAG7Bg8B,IAAwB,MACrBtF,GAA4B12B,CAAQ,GAGvCi8B,IAAmB,CAACjF,MAAiB;AACzC,UAAM9lB,IAAU0lB,GAA0B52B,CAAQ;AAClD,WAAOkR,KAAA,gBAAAA,EAAU8lB;AAAA,EACnB,GAEMkF,IAAqB,MAClBnF,GAA8B/2B,CAAQ,GAGzCm8B,IAAe,MACZtF,GAAgC72B,CAAQ,GAG3Co8B,IAAmB,MAChB/G,GAA4Br1B,CAAQ,GAGvCq8B,IAAyB,MACtB9G,GAAkCv1B,CAAQ,GAG7Cs8B,IAA4B,MACzB7G,GAAoCz1B,CAAQ,GAG/Cu8B,IAAgC,MAC7B5G,GAAwC31B,CAAQ,GAGnDw8B,IAAqB,MAClBxB,GAA8Bh7B,CAAQ,GAGzCy8B,IAA0B,MACvBvB,GAA8Bl7B,CAAQ,GAGzC08B,IAAY,MACT/C,GAAe35B,CAAQ,GAG1B28B,IAAiB,MACd/C,GAAqB55B,CAAQ,GAGhC48B,IAAmB,MAChB9C,GAAsB95B,CAAQ,GAGjC68B,IAAwB,MACrB7C,GAA4Bh6B,CAAQ,GAGvC88B,IAA2B,MACxB5C,GAA+Bl6B,CAAQ,GAG1C+8B,IAA0B,MACvB1C,GAA8Br6B,CAAQ,GAGzCg9B,IAAoC,MACjC1C,GAAwCt6B,CAAQ,GAGnDi9B,IAA+B,MAC5BxC,GAAmCz6B,CAAQ,GAG9Ck9B,IAAkB,MACfxC,GAAqB16B,CAAQ,GAGhCm9B,IAAkB,MACfvC,GAA2B56B,CAAQ,GAGtCo9B,IAAuB,MACpB5F,GAA2Bx3B,CAAQ,GAGtCq9B,IAAkB,MACf9F,GAAyBv3B,CAAQ,GAIpCs9B,IAAyB,MACtBzF,GAA6B73B,CAAQ,GAExCu9B,IAA6B,MAC1BzF,GAAiC93B,CAAQ,GAE5Cw9B,IAAmC,MAChCzF,GAAuC/3B,CAAQ,GAMlDy9B,KAAoB,MACjB/F,GAAwB13B,CAAQ,GAEnC09B,IAAoB,MACjB/F,GAAwB33B,CAAQ,GAEnC29B,IAAqB,MAClB/F,GAAyB53B,CAAQ,GAKpC49B,IAAmB,MAChB5F,GAAyBh4B,CAAQ,GAGpC69B,IAAqB,MAClBpG,GAAyBz3B,CAAQ;AAG1C,SAAOoG,GAAQ,OACN;AAAA,IACL,wBAAAk1B;AAAA,IAEA,wBAAAC;AAAA,IACA,cAAAC;AAAA,IAEA,iBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,cAAAC;AAAA,IAEA,cAAAE;AAAA,IACA,uBAAAC;AAAA,IACA,oBAAAE;AAAA,IACA,cAAAC;AAAA,IACA,kBAAAF;AAAA,IAEA,kBAAAG;AAAA,IACA,wBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,+BAAAC;AAAA,IAEA,oBAAAC;AAAA,IACA,yBAAAC;AAAA,IAEA,WAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,yBAAAC;AAAA,IACA,mCAAAC;AAAA,IACA,8BAAAC;AAAA,IAEA,iBAAAC;AAAA,IACA,iBAAAC;AAAA,IAEA,sBAAAC;AAAA,IACA,oBAAA/B;AAAA,IAEA,iBAAAgC;AAAA,IACA,kBAAAO;AAAA,IACA,oBAAAC;AAAA,IACA,wBAAAP;AAAA,IACA,4BAAAC;AAAA,IACA,kCAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IAEA,UAAU37B,EAAgBuB,CAAQ;AAAA,EAAA,IAEnC,CAACzE,CAAK,CAAC;AACZ;AC9RO,IAAKg/B,uBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,QAAQ,SACRA,EAAA,SAAS,UACTA,EAAA,YAAY,aACZA,EAAA,gBAAgB,iBAChBA,EAAA,SAAS,UACTA,EAAA,kBAAkB,mBAClBA,EAAA,OAAO,QACPA,EAAA,WAAW,YACXA,EAAA,aAAa,cACbA,EAAA,QAAQ,SACRA,EAAA,iBAAiB,kBACjBA,EAAA,yBAAyB,0BACzBA,EAAA,mBAAmB,oBACnBA,EAAA,sBAAsB,uBAfZA,IAAAA,MAAA,CAAA,CAAA;ACKL,MAAMC,KAA8B,CAACj+B,GAAkCk+B,MAA8C;AAE1H,QAAMC,IAAkB,MAAM;AAC5B,UAAMC,IAAUF,EAAkB,WAAW,IAAIF,GAAa,KAAK;AAEnE,QAAII,KAAA,QAAAA,EAAS,SAAS;AACpB,YAAMC,IAAiBD,EAAQ,QAAwB,cAAc,gBAAgB;AACrF,MAAIC,KACDA,EAA8B,MAAA;AAAA,IAEnC;AAAA,EACF,GAEMC,IAAgB,CAACC,MAAsB;AAC3C,UAAMH,IAAUF,EAAkB,WAAW,IAAIF,GAAa,KAAK;AAEnE,IAAII,KAAA,QAAAA,EAAS,WACUA,EAAQ,QAAwB,iBAAiB,OAAO,EAEjE,QAAQ,CAAC9rB,MAAS;AAC5B,YAAMksB,IAAMlsB;AAEZ,MAAIksB,EAAI,aAAa,YAAY,MAAMD,MACrCC,EAAI,MAAA,GACJA,EAAI,MAAA;AAAA,IAER,CAAC;AAAA,EAEL,GAGMC,IAAiB,MAAM;AAC3B,IAAAP,EAAkB,UAAUF,GAAa,SAAS;AAAA,EACpD,GAEMU,IAAgB,MAAM;AAC1B,IAAAR,EAAkB,WAAWF,GAAa,SAAS;AAAA,EACrD,GAGMW,IAAc,MAAM;AACxB,IAAAT,EAAkB,UAAUF,GAAa,MAAM;AAAA,EACjD,GAEMY,IAAa,MAAM;AACvB,IAAAV,EAAkB,WAAWF,GAAa,MAAM;AAAA,EAClD,GAGMa,IAAuB,MAAM;AACjC,IAAAX,EAAkB,UAAUF,GAAa,eAAe;AAAA,EAC1D,GAEMc,IAAsB,MAAM;AAChC,IAAAZ,EAAkB,WAAWF,GAAa,eAAe;AAAA,EAC3D,GAGMe,IAAqB,MAAM;AAC/B,IAAAb,EAAkB,UAAUF,GAAa,aAAa;AAAA,EACxD,GAEMgB,IAAoB,MAAM;AAC9B,IAAAd,EAAkB,WAAWF,GAAa,aAAa;AAAA,EACzD,GAGMiB,IAAkB,MAAM;AAC5B,IAAAf,EAAkB,UAAUF,GAAa,UAAU;AAAA,EACrD,GAEMkB,IAAiB,MAAM;AAC3B,IAAAhB,EAAkB,WAAWF,GAAa,UAAU;AAAA,EACtD,GAGMmB,IAAiB,MAAM;AAC3B,IAAAjB,EAAkB,UAAUF,GAAa,KAAK;AAAA,EAChD,GAEMoB,IAAgB,MAAM;AAC1B,IAAAlB,EAAkB,WAAWF,GAAa,KAAK;AAAA,EACjD,GAGMqB,IAA4B,CAAC14B,MAAkB;AAKnD,UAAM5I,IAJiC,MAAM,KAAKmgC,EAAkB,WAAW,KAAA,CAAM,EAAE;AAAA,MACrF,CAACoB,MAAcA,EAAE,QAAQtB,GAAa,cAAc,KAAK;AAAA,IAAA,EAG1Br3B,CAAK;AACtC,IAAAu3B,EAAkB,UAAUngC,CAAG;AAAA,EACjC,GAEMwhC,IAA2B,CAAC54B,MAAkB;AAKlD,UAAM5I,IAJiC,MAAM,KAAKmgC,EAAkB,WAAW,KAAA,CAAM,EAAE;AAAA,MACrF,CAACoB,MAAcA,EAAE,QAAQtB,GAAa,cAAc,KAAK;AAAA,IAAA,EAG1Br3B,CAAK;AACtC,IAAAu3B,EAAkB,WAAWngC,CAAG;AAAA,EAClC,GAGMyhC,IAAW,MAAM;AACrB,IAAAtB,EAAkB,iBAAA;AAAA,EACpB;AAEA,EAAA17B,GAAoBxC,GAAK,OAChB;AAAA,IACL,iBAAAm+B;AAAA,IACA,eAAAG;AAAA,IACA,gBAAAG;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAE;AAAA,IAEA,UAAAC;AAAA,EAAA,IAED,CAAA,CAAE;AACP,GC1GaC,KAAoBhzB,GAAsC,EAA4B,GAEtFizB,KAAuB,MAC3B/yB,GAAW8yB,EAAiB,GC9B/BE,KAAe,MAAM;AACzB,QAAM,CAACC,GAAWC,CAAY,IAAIp+B,EAAS,EAAK,GAE1Cq+B,IAAoBv+B,EAA8B,IAAI;AAE5D,SAAAG,EAAU,MAAM;AACd,UAAMq+B,IAAyB,MAAM;AACnC,MAAAF,EAAa,OAAO,UAAU,CAAC;AAAA,IACjC,GAEMG,IAAW,MAAM;AACrB,MAAIF,EAAkB,YAAY,SAIlCA,EAAkB,UAAU,WAAW,MAAM;AAC3C,QAAAA,EAAkB,UAAU,MAC5BC,EAAA;AAAA,MACF,GAAG,GAAG;AAAA,IACR;AAEA,WAAAA,EAAA,GAEA,OAAO,iBAAiB,UAAUC,CAAQ,GAEnC,MAAM;AACX,aAAO,oBAAoB,UAAUA,CAAQ;AAAA,IAC/C;AAAA,EACF,GAAG,CAAA,CAAE,GAEE,EAAE,WAAAJ,EAAA;AACX,GCxBaK,KAA0B,MAA8B;AACnE,QAAMC,IAAa3+B,EAKjB,oBAAI,KAAK,GACL,EAAE,WAAAq+B,EAAA,IAAcD,GAAA,GAChB,CAACQ,GAAcC,CAAe,IAAI3+B,EAAS,EAAK,GAChD,CAAC4+B,GAAeC,CAAgB,IAAI7+B,EAAS,EAAK;AA4FxD,SAAO;AAAA,IACL,kBA3FuB,MAAY;AACnC,MAAAy+B,EAAW,QAAQ,QAAQ,CAAC5iC,MAAU;;AACnC,SAAAwJ,KAAA5H,IAAA5B,EAAM,YAAN,gBAAA4B,EAAwD,UAAxD,QAAA4H,EAAA,KAAA5H,KACA4L,KAAAD,IAAAvN,EAAM,YAAN,gBAAAuN,EAAoC,aAApC,QAAAC,EAAA,KAAAD,GAA+C,MAC/CwjB,KAAAC,IAAAhxB,EAAM,YAAN,gBAAAgxB,EAAoC,UAApC,QAAAD,EAAA,KAAAC;AAAA,MACH,CAAC,GAED8R,EAAgB,EAAK,GACrBE,EAAiB,EAAK;AAAA,IACxB;AAAA,IAmFE,cAjFmB,CAAC95B,GAA2B+5B,MAAmC;;AAClF,MAAAL,EAAW,QAAQ,QAAQ,CAAC5iC,MAAU;;AACpC,QAAKA,EAAM,aAGVwJ,KAAA5H,IAAA5B,EAAM,SAAiD,UAAvD,QAAAwJ,EAAA,KAAA5H,KACA4L,KAAAD,IAAAvN,EAAM,SAA6B,aAAnC,QAAAwN,EAAA,KAAAD,GAA8C,MAC9CwjB,KAAAC,IAAAhxB,EAAM,SAA6B,UAAnC,QAAA+wB,EAAA,KAAAC;AAAA,MACH,CAAC,GAEGiS,OACFz5B,KAAA5H,IAAAghC,EAAW,QAAQ,IAAI15B,CAAE,MAAzB,gBAAAtH,EAA4B,YAA5B,QAAA4H,EAAqC,UAGvCs5B,EAAgB,EAAK,GACrBE,EAAiB,EAAK;AAAA,IACxB;AAAA,IAkEE,YAhEiB,CAAC95B,MAAoC;;AACtD,MAAA05B,EAAW,QAAQ,QAAQ,CAAC5iC,MAAU;;AACpC,QAAKA,EAAM,aAGVwJ,KAAA5H,IAAA5B,EAAM,SAAiD,UAAvD,QAAAwJ,EAAA,KAAA5H,KACA4L,KAAAD,IAAAvN,EAAM,SAA6B,aAAnC,QAAAwN,EAAA,KAAAD,GAA8C,MAC9CwjB,KAAAC,IAAAhxB,EAAM,SAA6B,UAAnC,QAAA+wB,EAAA,KAAAC;AAAA,MACH,CAAC;AAED,YAAMtuB,IAAMkgC,EAAW,QAAQ,IAAI15B,CAAE;AAErC,MAAIxG,KAAA,QAAAA,EAAK,aACN8G,KAAA5H,IAAAc,EAAI,SAA6B,WAAjC,QAAA8G,EAAA,KAAA5H,KACA4L,KAAAD,IAAA7K,EAAI,SAA6B,SAAjC,QAAA8K,EAAA,KAAAD,KAGHu1B,EAAgB,EAAI;AAAA,IACtB;AAAA,IA+CE,WA7CgB,CAAC55B,MAAoC;;AACrD,YAAMxG,IAAMkgC,EAAW,QAAQ,IAAI15B,CAAE;AAErC,MAAIxG,KAAA,QAAAA,EAAK,aACN8G,KAAA5H,IAAAc,EAAI,SAA6B,UAAjC,QAAA8G,EAAA,KAAA5H,KACA4L,KAAAD,IAAA7K,EAAI,SAA6B,UAAjC,QAAA8K,EAAA,KAAAD;AAAA,IAEL;AAAA,IAuCE,iBAjBsB,MACfs1B;AAAA,IAiBP,aAtCkB,CAAC35B,MAAoC;;AACvD,YAAMxG,IAAMkgC,EAAW,QAAQ,IAAI15B,CAAE;AAErC,MAAIxG,KAAA,QAAAA,EAAK,aACN8G,KAAA5H,IAAAc,EAAI,SAAiD,UAArD,QAAA8G,EAAA,KAAA5H,KAGHohC,EAAiB,EAAK;AAAA,IACxB;AAAA,IA+BE,aA7BkB,CAAC95B,MAAoC;;AACvD,YAAMxG,IAAMkgC,EAAW,QAAQ,IAAI15B,CAAE;AAErC,MAAIxG,KAAA,QAAAA,EAAK,aACN8G,KAAA5H,IAAAc,EAAI,SAAiD,SAArD,QAAA8G,EAAA,KAAA5H,KAGHohC,EAAiB,EAAI;AAAA,IACvB;AAAA,IAsBE,gBAhBqB,MACdD;AAAA,IAgBP,aAbkB,MACXT;AAAA,IAcP,YAAYM,EAAW;AAAA,EAAA;AAE3B,GCvGMM,KAA8C,CAAC;AAAA,EACnD,KAAAxgC,IAAM;AAAA,EACN,SAAAkH,IAAU;AAAA,EACV,SAAA5D;AAAA,EACA,UAAA8D;AAAA,EACA,aAAA7D;AAAA,EACA,kBAAAC;AAAA,EACA,cAAA8D;AAAA,EACA,mBAAAC;AAAA,EACA,WAAAtH;AAAA,EACA,UAAAC;AAAA,EACA,WAAAiH,IAAY;AAAA,EACZ,MAAAmE;AAAA,EACA,iBAAiBH;AAAA,EACjB,kBAAkBs1B;AAAA,EAClB,UAAAl1B;AAAA,EACA,GAAGvM;AACL,MAAM;AACJ,QAAM,CAACwF,GAAaC,CAAc,IAAIhD,EAAuB,SAAS,GAEhEi/B,IAAiBjjC,EAAW,8BAA8BwC,CAAS,GAEnE0H,IAAc,MAAM;AACxB,UAAMC,IAAgB,OAAO,WAAW,mBAAmB,EAAE;AAC7D,IAAAnD,EAAemD,IAAgB,YAAY,OAAO;AAAA,EACpD,GAEMC,IAAmB,MAAM;AAG7B,IAFsB,OAAO,WAAW,mBAAmB,EAAE,WAG3DpD,EAAe,OAAO;AAAA,EAE1B,GAEMsD,IAAkB,MAAM;AAG5B,IAFsB,OAAO,WAAW,mBAAmB,EAAE,WAG3DtD,EAAe,QAAQ;AAAA,EAE3B,GAEMk8B,IAAuB,MAAM;AAGjC,IAFsB,OAAO,WAAW,mBAAmB,EAAE,WAG3Dl8B,EAAe,SAAS;AAAA,EAE5B;AAEA,yCACGia,IAAA,EAAa,GAAG1f,GAAO,KAAAgB,GAAU,WAAAmH,GAAsB,SAAAD,GAAkB,YAAW,QAAO,WAAWw5B,KACpGvgC,EAAS,QAAQD,CAAQ,EAAE,IAAI,CAACE,MAAU;AACzC,QAAIC,EAAgCD,CAAK,GAAG;AAC1C,YAAMwgC,IAAiBnjC;AAAA,QACrB,EAAE,kBAAkByE,EAAgBoB,CAAO,KAAKpB,EAAgBkF,CAAQ,EAAA;AAAA,QACxE,EAAE,aAAalF,EAAgBkF,CAAQ,EAAA;AAAA,MAAE;AAG3C,aAAO2C;AAAA,QACL3J;AAAA,QACA;AAAA,UACE,WAAawgC;AAAA,UACb,MAAAt1B;AAAA,UACA,iBAAiBH;AAAA,UACjB,kBAAkBs1B;AAAA,UAClB,UAAAl1B;AAAA,UACA,SAAW5D;AAAA,UACX,cAAgBE;AAAA,UAChB,cAAgB84B;AAAA,UAChB,aAAe54B;AAAA,UACf,WAAa44B;AAAA,QAAA;AAAA,QAEf,gBAAAthC,EAAA,cAAAA,EAAA,UAAA,MACGiE,MAAYC,KAAeC,sCACzBzD,IAAA,EAAQ,WAAU,wBAAuB,OAAOyE,EAAA,GAC/C,gBAAAnF,EAAA,cAACQ,KAAS,WAAU,wBAAuB,OAAM,WAAU,MAAM0D,KAAe,WAAW,eAAW,GAAA,CAAC,GACvG,gBAAAlE,EAAA,cAACQ,GAAA,EAAS,WAAU,sBAAqB,OAAM,SAAQ,MAAM2D,KAAoB,WAAW,eAAW,GAAA,CAAC,GACxG,gBAAAnE,EAAA,cAACQ,GAAA,EAAS,WAAU,uBAAsB,OAAM,UAAS,MAAM0D,KAAe,WAAW,eAAW,GAAA,CAAC,CACvG,GAGD,CAAC6D,KAAYhH,EAAM,MAAM,4CAAa,QAAA,EAAK,WAAU,sBAAoBA,EAAM,MAAM,QAAS,GAE9FkD,MAAYgE,KAAgBC,MAC3B,gBAAAlI,EAAA,cAACU,IAAA,EAAQ,WAAU,yBAAwB,OAAOyE,EAAA,GAChD,gBAAAnF,EAAA,cAACQ,GAAA,EAAS,WAAU,yBAAwB,OAAM,WAAU,MAAMyH,KAAgB,WAAW,eAAW,IAAC,GACzG,gBAAAjI,EAAA,cAACQ,GAAA,EAAS,WAAU,uBAAsB,OAAM,SAAQ,MAAM0H,KAAqB,WAAW,eAAW,GAAA,CAAC,mCACzG1H,GAAA,EAAS,WAAU,wBAAuB,OAAM,UAAS,MAAMyH,KAAgB,WAAW,eAAW,GAAA,CAAC,CACzG,CAEJ;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF,CAAC,CACH;AAEJ,GC/Gau5B,KAAsC,MAAM;AACvD,QAAM38B,IAAcC,GAAA,GAEd28B,IADoB3M,GAAA,EACc,0BAAA;AAExC,SACE,gBAAA90B,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,MACC,gBAAAA,EAAA,cAAC,MAAA,MACEyhC,EAAc,IAAI,CAAC1nB,GAAkCzS,MAElD,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAK,GAAG6E,CAAW,IAAIyC,CAAK,GAAA,GAC9B,gBAAAtH,EAAA,cAACmhC,IAAA,EAAkB,GAAGpnB,EAAA,CAAM,CAC9B,CAEH,CACH,CACF,CACF;AAEJ,GCpBa2nB,KAAwC,MAAM;AACzD,QAAM78B,IAAcC,GAAA,GAId68B,IAFoB7M,GAAA,EAEc,8BAAA;AAExC,SAAI6M,EAAc,UAAU,IACnB,OAIP,gBAAA3hC,EAAA,cAAC,OAAA,EAAI,WAAU,uBAAA,GACb,gBAAAA,EAAA,cAAC,YACE2hC,EAAc,IAAI,CAACC,GAAQt6B,MAAU;AACpC,UAAM0f,IAAmB5oB,EAAWwjC,EAAO,WAAW,eAAe;AAErE,WACE,gBAAA5hC,EAAA,cAAC,QAAG,KAAK,GAAG6E,CAAW,IAAIyC,CAAK,MAC9B,gBAAAtH,EAAA,cAACqL,IAAA,EAAQ,GAAGu2B,GAAQ,WAAW5a,GAAkB,YAAW,QAAO,SAAQ,WAAU,WAAS,IAAC,CACjG;AAAA,EAEJ,CAAC,CACH,CACF;AAEJ,GCzBa6a,KAAwC,MAAM;AACzD,QAAMh9B,IAAcC,GAAA,GACd+5B,IAAoBwB,GAAA,GAEpByB,IADoBhN,GAAA,EACY,uBAAA,GAEhCxsB,IAAc,MAAM;AACxB,IAAAu2B,EAAkB,aAAaF,GAAa,eAAe,EAAI;AAAA,EACjE;AAEA,SACE,gBAAA3+B,EAAA,cAAC,OAAA,EAAI,WAAU,uBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,IAAI6E,GAAa,WAAU,OAAA,GAC7Bi9B,KAAA,gBAAAA,EAAa,QAChB,GACA,gBAAA9hC,EAAA,cAAC,UAAA,EAAO,cAAY8hC,KAAA,gBAAAA,EAAa,gBAAgB,oBAAkBj9B,GAAa,WAAU,SAAQ,SAASyD,EAAA,GACzG,gBAAAtI,EAAA,cAACI,IAAA,EAAK,MAAK,4BAA2B,eAAW,GAAA,CAAC,CACpD,CACF;AAEJ,GCjBa2hC,KAAkC,MAAM;AACnD,QAAMlD,IAAoBwB,GAAA,GAEpB2B,IADoBlN,GAAA,EACmB,iBAAA,GAEvCmN,IAAkBD,IAAqBA,EAAmB,YAAY,IAAI,IAE1ErhC,IAAM6G,GAAA;AAIZ,SAFAq3B,EAAkB,WAAW,IAAIF,GAAa,QAAQh+B,CAAG,GAEpDqhC,oCAMFxT,IAAA,EAAO,KAAA7tB,GAAU,UAAS,SAAQ,iBAAiB,IAAO,wBAAwB,IAAO,cAAYshC,EAAA,GACpG,gBAAAjiC,EAAA,cAAC6hC,QAAkC,GACnC,gBAAA7hC,EAAA,cAACwhC,QAAgC,GACjC,gBAAAxhC,EAAA,cAAC0hC,QAAkC,CACrC,IARO;AAUX,GCoBMQ,KAAgC,CAAC;AAAA,EACrC,KAAAvhC,IAAM;AAAA,EACN,IAAAwG;AAAA,EACA,eAAAg7B,IAAgB;AAAA,EAChB,WAAAvhC;AAAA,EACA,UAAAC;AAAA,EACA,gBAAAuhC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AACF,MAAM;;AACJ,QAAMC,IAAcp7B,GACdq7B,IAAgB1N,GAAA,GAChB+J,IAAoBwB,GAAA,GACpBoC,IAAY5D,EAAkB,WAAW,IAAIF,GAAa2D,CAAa,CAAC,GAExE,CAACpoB,GAAYC,CAAa,IAAI/X,EAAS,EAAK,GAC5C,CAACsgC,GAAeC,CAAgB,IAAIvgC,kDAAW,CAAG,GAElDwgC,IAAuB9hC,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACrDC,EAA4BD,CAAK,KAAMA,EAAuB,SAASsK,EAC/E,GAEKw3B,IAA4B/hC,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC1DC,EAAsCD,CAAK,KAAMA,EAAuB,SAASogC,EACzF,GAEK2B,IAAuBhiC,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MACrDC,EAA4BD,CAAK,KAAMA,EAAuB,SAASsK,EAC/E,GAEK03B,IAAY,CAAC,CAACH,GAEdI,IAAiB,CAAC,CAACH,GAEnBI,IAAW,CAAC,CAACH,GAEbI,IAAgBhhC,EAAuB,IAAI,GAC3CwW,IAAYxW,EAA0B,IAAI,GAC1CihC,IAAiBjhC,EAAwB,IAAI,GAC7CkhC,IAAkBlhC,EAA0B,IAAI,GAEhDwD,IAAS,MAAM;AACnB,QAAI,CAAAwU,GAIJ;AAAA,UAAIioB,GAAe;AACjB,cAAMkB,IAAYxE,EAAkB,WAAW,IAAIF,GAAa,MAAM;AAEtE,YAAI0E,GAAW;AACb,gBAAMpwB,IAAOowB,EAAU;AACvB,UAAAlpB,EAAc,EAAI,GAClBlH,EAAK,KAAA;AAAA,QACP;AAEA;AAAA,MACF;AAEA,UAAIgwB,GAAU;AACZ,QAAA9oB,EAAc,EAAI;AAElB,cAAMmpB,IAAab,KAAA,gBAAAA,EAAW;AAC9B,QAAIa,MACFA,EAAW,UAAU,IAAI,UAAU,GACnCX,EAAiBv3B,GAAa03B,GAAsBQ,CAAU,CAAC,GAE/DhgC,GAAa,MAAM;AAKjB,gBAAM4qB,IAJoBoV,EAAW;AAAA,YACnC;AAAA,UAAA,EAGqC,CAAC;AACxC,UAAApV,KAAA,QAAAA,EAAc;AAAA,QAChB,CAAC;AAAA,MAEL;AAAA;AAAA,EACF,GAEMtoB,IAAW,MAAM;;AACrB,QAAKsU,GAIL;AAAA,UAAIioB,GAAe;AACjB,cAAMkB,IAAYxE,EAAkB,WAAW,IAAIF,GAAa,MAAM;AAEtE,QAAI0E,MACWA,EAAU,QAClB,MAAA,GACLlpB,EAAc,EAAK,KAGrBta,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB;AAEnB;AAAA,MACF;AAEA,MAAIojC,MACF9oB,EAAc,EAAK,GACnBwoB,kDAAmB,CAAG,IACtBl7B,IAAAg7B,KAAA,gBAAAA,EAAW,YAAX,QAAAh7B,EAAoB,UAAU,OAAO,cACrC+D,IAAAkN,EAAU,YAAV,QAAAlN,EAAmB;AAAA;AAAA,EAEvB;AAgBA,EAAA1I;AAAA,IACEnC;AAAA,IACAuiC;AAAA,IACA;AAAA,MACE,YAAAhpB;AAAA,MACA,QAAAxU;AAAA,MACA,UAAAE;AAAA,MACA,OArBU,MAAM;;AAClB,QAAIm9B,MACEZ,KACFtiC,IAAAujC,EAAgB,YAAhB,QAAAvjC,EAAyB,WAEzB4H,IAAAiR,EAAU,YAAV,QAAAjR,EAAmB,UAInB07B,KAAA,QAAAA,EAAgB,aACjB33B,IAAA23B,EAAe,QAAwB,cAAc,GAAG,MAAxD,QAAA33B,EAA2D;AAAA,MAEhE;AAAA,IASI;AAAA,IAEF,CAAC03B,GAAehpB,GAAYxU,GAAQE,CAAQ;AAAA,EAAA;AAG9C,QAAM29B,IAAoB,CAAC/8B,MAA4C;;AACrE,IAAI0T,IACF2kB,EAAkB,aAAa0D,GAAa,EAAI,IAEhD1D,EAAkB,WAAW0D,CAAW,IAE1C96B,KAAA5H,IAAA+iC,EAAqB,OAAM,YAA3B,QAAAn7B,EAAA,KAAA5H,GAAqC2G;AAAA,EACvC,GAEMg9B,IAAkBplC,EAAW,cAAcwC,GAAW,EAAE,aAAa4hC,EAAc,UAAU,GAE7FiB,IAAwBrlC;AAAA,IAC5B;AAAA,IACA,EAAE,aAAa6kC,EAAA;AAAA,IACf,EAAE,UAAU/oB,GAAY,WAAW,CAACA,EAAA;AAAA,KACpCra,KAAA+iC,KAAA,gBAAAA,EAAsB,UAAtB,gBAAA/iC,GAA6B;AAAA,EAAA,GAGzB6jC,IAA6BtlC,EAAW,4BAA2BqJ,IAAAo7B,KAAA,gBAAAA,EAA2B,UAA3B,gBAAAp7B,EAAkC,SAAS,GAE9Gk8B,IAA8BvlC,EAAW,qBAAqB;AAGpE,EAAAiE,EAAU,MAAM;AACd,UAAMuhC,IAAY,CAACp9B,MAAuB;AACxC,MAAIA,EAAI,SAAS,YAAY0T,KAC3B2kB,EAAkB,aAAa0D,GAAa,EAAI;AAAA,IAEpD;AAEA,YAAIU,KAAYd,MACd,OAAO,SAAS,iBAAiB,WAAWyB,CAAS,GAGhD,MAAM;AACX,aAAO,SAAS,oBAAoB,WAAWA,CAAS;AAAA,IAC1D;AAAA,EACF,GAAG,CAACX,GAAUd,GAAejoB,GAAY2kB,GAAmB0D,CAAW,CAAC,GAGxElgC,EAAU,MAAM;AACd,UAAMwhC,IAAU,CAACr9B,MAAoB;AACnC,UAAI,CAAC0T;AACH;AAGF,YAAM4pB,IAAmBrB,KAAA,gBAAAA,EAAW,SAE9BphC,IAASmF,EAAI;AAEnB,MAAIs9B,MAAqBziC,EAAO,UAAU,SAAS,qBAAqB,KAAKA,EAAO,UAAU,SAAS,uBAAuB,MAC5Hw9B,EAAkB,aAAa0D,GAAa,EAAI;AAAA,IAEpD;AAEA,YAAIU,KAAYd,MACd,OAAO,SAAS,iBAAiB,SAAS0B,CAAO,GAG5C,MAAM;AACX,aAAO,SAAS,oBAAoB,SAASA,CAAO;AAAA,IACtD;AAAA,EACF,GAAG,CAACZ,GAAUd,GAAejoB,GAAY2kB,GAAmB0D,GAAaE,CAAS,CAAC,GAGnFpgC,EAAU,MAAM;AACd,UAAM0rB,IAAgB,CAACvnB,MAAuB;AAC5C,UAAI,GAAC0T,KAAc,EAACuoB,KAAA,QAAAA,EAAW,aAI3Bj8B,EAAI,QAAQ,OAAO;AACrB,cAAMwnB,IAAoByU,EAAU,QAAQ;AAAA,UAC1C;AAAA,QAAA,GAGIvU,IAAeF,EAAkB,CAAC,GAClCG,IAAcH,EAAkBA,EAAkB,SAAS,CAAC;AAElE,QAAIxnB,EAAI,YAAY,SAAS,kBAAkB0nB,KAC7CtoB,EAAA,GAGE,CAACY,EAAI,YAAY,SAAS,kBAAkB2nB,KAC9CvoB,EAAA;AAAA,MAEJ;AAAA,IACF;AAEA,WAAIq9B,MACF,6BAAU,iBAAiB,WAAWlV,KAGjC,MAAM;AACX,mCAAU,oBAAoB,WAAWA;AAAA,IAC3C;AAAA,EACF,GAAG,CAAC7T,GAAY+oB,GAAUR,GAAW78B,CAAQ,CAAC;AAE9C,QAAMm+B,IAAkB98B,GAAQ,MACvBiT,KAAcmoB,KAAA,gBAAAA,EAAe,gBAAe,MAAOD,KAAA,gBAAAA,EAAgB,gBAAe,IACxF,CAACA,GAAgBC,GAAenoB,CAAU,CAAC,GAExC8pB,IAAuB/8B,GAAQ,MAC5BiT,KAAcmoB,KAAA,gBAAAA,EAAe,qBAAoB,MAAOD,KAAA,gBAAAA,EAAgB,qBAAoB,IAClG,CAACA,GAAgBC,GAAenoB,CAAU,CAAC,GAExC+pB,IAAmBh9B,GAAQ,MACxBiT,KAAcmoB,KAAA,gBAAAA,EAAe,iBAAgB,MAAOD,KAAA,gBAAAA,EAAgB,iBAAgB,IAC1F,CAACA,GAAgBC,GAAenoB,CAAU,CAAC,GAExCgqB,IAAwBj9B,GAAQ,MAC7BiT,KAAcmoB,KAAA,gBAAAA,EAAe,sBAAqB,MAAOD,KAAA,gBAAAA,EAAgB,sBAAqB,IACpG,CAACA,GAAgBC,GAAenoB,CAAU,CAAC;AAE9C,yCACG,OAAA,EAAI,KAAKgpB,GAAe,WAAWM,KACjCR,KACC,gBAAAhjC,EAAA;AAAA,IAACmhC;AAAA,IAAA;AAAA,MACE,GAAG0B,EAA0B;AAAA,MAC9B,UAAUL,EAAc;AAAA,MACxB,KAAKW;AAAA,MACL,WAAWO;AAAA,IAAA;AAAA,EAAA,GAIdX,KAAa,CAACZ,KACb,gBAAAniC,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACE,GAAGu3B,EAAqB;AAAA,MACzB,KAAKlqB;AAAA,MACL,WAAW+qB;AAAA,MACX,SAASF;AAAA,MACT,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,UAAUf,EAAc;AAAA,MACvB,GAAIS,KAAY,EAAE,iBAAiB,iBAAiBV,CAAW,IAAI,iBAAiBroB,EAAA;AAAA,MACrF,SAASrX,EAAgB+/B,EAAqB,MAAM,OAAO;AAAA,MAC1D,GAAIK,KAAYpgC,EAAgB+/B,EAAqB,MAAM,OAAO,KAAKmB,KAAmBC,IACvF,EAAE,aAAaD,GAAiB,kBAAkBC,EAAA,IAClD,CAAA;AAAA,MACH,GAAIf,KAAYpgC,EAAgB+/B,EAAqB,MAAM,OAAO,KAAKqB,KAAoBC,IACxF,EAAE,cAAcD,GAAkB,mBAAmBC,EAAA,IACrD,CAAA;AAAA,IAAC;AAAA,IAEJtB,EAAqB,MAAM;AAAA,EAAA,GAI/BG,KAAaZ,KACZ,gBAAAniC,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACE,GAAGu3B,EAAqB;AAAA,MACzB,iBAAe1oB;AAAA,MACf,KAAKkpB;AAAA,MACL,UAAUZ,EAAc;AAAA,MACxB,WAAWmB;AAAA,MACX,SAASJ;AAAA,IAAA;AAAA,IAERX,EAAqB,MAAM;AAAA,EAAA,GAI/BK,KAAY,CAACd,KAAiBjoB,KAAc,gBAAAla,EAAA,cAAAA,EAAA,UAAA,MAAG0iC,CAAc,CAChE;AAEJ,GCvVayB,KAAwD,MAAM,gBAAAnkC,EAAA,cAAAA,EAAA,UAAA,IAAE,GC+BvEokC,KAAwE,CAAC;AAAA,EAC7E,KAAAzjC,IAAM;AAAA,EACN,IAAAwG;AAAA,EACA,gBAAAk9B;AAAA,EACA,uBAAAC;AAAA,EACA,OAAAp7B;AAAA,EACA,aAAAkW;AAAA,EACA,UAAAve;AACF,MAAM;;AACJ,QAAM2hC,IAAgB1N,GAAA,GAChB+J,IAAoBwB,GAAA,GACpBkE,IAAY/B,EAAc,iCAAA,GAC1B39B,IAAcC,GAAA,GAEd,CAAC0/B,GAAUC,CAAW,IAAIriC,EAAS,EAAK,GAExCsiC,IAAsB5jC,EAAS,QAAQD,CAAQ,EAAE,OAAO,CAACE,MACtDC,EAAyCD,CAAK,KAAMA,EAAuB,SAASg3B,EAC5F,GAEK4M,IAA+BD,EAAoB,SAAS,KAAIj9B,KAAA5H,IAAA6kC,KAAA,gBAAAA,EAAsB,OAAtB,gBAAA7kC,EAA0B,UAA1B,gBAAA4H,EAAiC,WAAW,MAE5G4a,IAAQvhB,EAAS,QAAQD,CAAQ,EAAE,OAAO,CAACE,MACxCC,EAAoCD,CAAK,KAAMA,EAAuB,SAASi3B,EACvF,GAEK4M,IAAmB9jC,EAAS,QAAQD,CAAQ,EAAE,OAAO,CAACE,MACnDC,EAA2CD,CAAK,KAAMA,EAAuB,SAASojC,EAC9F,GAEKU,IAAiB3iC,EAA0B,IAAI,GAC/C4iC,IAAiB5iC,EAAuB,IAAI,GAE5CwsB,IAAO,MAAM;AACjB,IAAK8V,MACHC,EAAY,EAAI,GAChBnhC,GAAa,MAAM;;AACjB,YAAM0qB,KAAoBnuB,IAAAilC,EAAe,YAAf,gBAAAjlC,EAAwB;AAAA,QAChD;AAAA,SAGIquB,IAAeF,KAAA,gBAAAA,EAAoB;AACzC,MAAAE,KAAA,QAAAA,EAAc;AAAA,IAChB,CAAC;AAAA,EAEL,GAEM6W,IAAQ,MAAM;AAClB,QAAIP,GAAU;AACZ,MAAAC,EAAY,EAAK;AACjB,YAAMO,IAAYnG,EAAkB,WAAW,IAAI,QAAQ;AAC3D,MAAAv7B,GAAa,MAAM;;AACjB,cAAM0qB,KAAoBnuB,IAAAmlC,KAAA,gBAAAA,EAAW,YAAX,gBAAAnlC,EAAoB;AAAA,UAC5C;AAAA,WAGIquB,IAAeF,KAAA,gBAAAA,EAAoB;AACzC,QAAAE,KAAA,QAAAA,EAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,EAAAprB;AAAA,IACEnC;AAAA,IACAmkC;AAAA,IACA;AAAA,MACE,UAAAN;AAAA,MACA,MAAA9V;AAAA,MACA,OAAAqW;AAAA,IAAA;AAAA,IAEF,CAACD,GAAgBN,GAAU9V,GAAMqW,CAAK;AAAA,EAAA;AAGxC,QAAME,IAAkB,MAAM;;AAC5B,IAAApG,EAAkB,YAAY13B,CAAE,IAChCtH,IAAAglC,EAAe,YAAf,QAAAhlC,EAAwB;AAAA,EAC1B,GAEMqlC,IAAoB,MAAM;AAC9B,IAAArG,EAAkB,YAAY13B,CAAE;AAAA,EAClC;AAGA,EAAA9E,EAAU,MAAM;AACd,UAAM0rB,IAAgB,CAACvnB,MAAuB;AAC5C,UAAI,GAACg+B,KAAY,CAACM,EAAe,YAI7Bt+B,EAAI,SAAS,OAAO;AACtB,cAAMwnB,IAAoB8W,EAAe,QAAQ;AAAA,UAC/C;AAAA,QAAA,GAGI5W,IAAeF,EAAkB,CAAC,GAClCG,IAAcH,EAAkBA,EAAkB,SAAS,CAAC;AAElE,QAAIxnB,EAAI,YAAY,SAAS,kBAAkB0nB,MAC7C1nB,EAAI,eAAA,GACJ2nB,EAAY,MAAA,IAGV,CAAC3nB,EAAI,YAAY,SAAS,kBAAkB2nB,MAC9C3nB,EAAI,eAAA,GACJ0nB,EAAa,MAAA;AAAA,MAEjB;AAAA,IACF;AAEA,wCAAU,iBAAiB,WAAWH,IAE/B,MAAM;AACX,mCAAU,oBAAoB,WAAWA;AAAA,IAC3C;AAAA,EACF,GAAG,CAACyW,CAAQ,CAAC;AAEb,QAAMW,IAAwC/mC,EAAW,2BAA2B,EAAE,QAAQ,CAAComC,GAAU,MAAMA,GAAU;AAEzH,SACE,gBAAAxkC,EAAA,cAAAA,EAAA,UAAA,MACE,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACE,GAAG+T;AAAA,MACJ,KAAKylB;AAAA,MACL,WAAU;AAAA,MACV,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,SAAO;AAAA,MACP,WAAS;AAAA,MACT,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,SAASK;AAAA,MACT,iBAAc;AAAA,MACd,iBAAe/9B;AAAA,MACf,iBAAeq9B;AAAA,IAAA;AAAA,IAEdt7B;AAAA,EAAA,GAGH,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,KAAK8kC,GAAgB,WAAWK,GAAuC,IAAAh+B,EAAA,GAC1E,gBAAAnH,EAAA,cAAC,OAAA,EAAI,WAAU,0BACZukC,KACC,gBAAAvkC,EAAA,cAAC,OAAA,EAAI,WAAU,oBAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,UAAUm3B,EAAc;AAAA,MACxB,SAAO;AAAA,MACP,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,SAASyC;AAAA,IAAA;AAAA,IAERV;AAAA,EAAA,CAEL,CAEJ,mCACC,OAAA,EAAI,WAAU,0BACZr7B,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,6BAA2BkJ,CAAM,GAEzDy7B,KAAgC,gBAAA3kC,EAAA,cAAC,OAAA,EAAI,WAAU,YAAA,GAAa2kC,CAA6B,GAEzFtiB,EAAM,SAAS,KAAK,CAACsiB,KACpB,gBAAA3kC,EAAA,cAAC,OAAA,EAAI,WAAU,iDACb,gBAAAA,EAAA,cAAC,MAAA,EAAG,WAAU,6DAA4D,cAAYqkC,EAAA,GACnFhiB,EAAM,IAAI,CAACtI,GAAMzS,MAAU;AAC1B,UAAM5I,IAAM,GAAGmG,CAAW,UAAUyC,CAAK;AACzC,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,WAAU,0DAAyD,KAAAtB,KACrE,gBAAAsB,EAAA,cAACmhC,IAAA,EAAkB,GAAGpnB,EAAK,OAAO,SAAQ,UAAA,CAAU,CACtD;AAAA,EAEJ,CAAC,CACH,CACF,CAEJ,GAEC6qB,EAAiB,SAAS,KAAK,CAACD,KAC/B,gBAAA3kC,EAAA,cAAC,OAAA,EAAI,WAAU,gDAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,8BAAA,GACb,gBAAAA,EAAA,cAAC,MAAA,EAAG,WAAU,6DAA4D,cAAYskC,EAAA,GACnFM,EAAiB,IAAI,CAAC7qB,GAAMzS,MAAU;AACrC,UAAM5I,IAAM,GAAGmG,CAAW,sBAAsByC,CAAK;AAErD,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,WAAU,0DAAyD,KAAAtB,KACrE,gBAAAsB,EAAA,cAACmhC,IAAA,EAAkB,GAAGpnB,EAAK,OAAO,SAAQ,UAAA,CAAU,CACtD;AAAA,EAEJ,CAAC,CACH,CACF,CACF,CAEJ,CACF;AAEJ,GC3NaqrB,KAAkD,MAAM;AACnE,QAAMC,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpB5K,IAAQ4P,EAAkB,SAAA,GAC1BC,IAAc7P,EAAM,KAAK,CAACkH,MAASA,EAAK,MAAM,GAC9C4I,IAAa9P,EAAM,OAAO,CAACkH,MAAS,CAACA,EAAK,MAAM,GAChD93B,IAAcC,GAAA,GAEd0gC,IAAatjC,EAAyB,IAAI,GAC1C,CAACujC,GAAYC,CAAa,IAAItjC,EAAS,CAAC,GAExC2rB,IAAgB,CAACvnB,MAAoC;AACzD,UAAM,EAAE,MAAAyJ,MAASzJ;AAEjB,QAAIg/B,EAAW,SAAS;AACtB,YAAMG,IAAqB,MAAM,KAAKH,EAAW,QAAQ,iBAAiB,iBAAiB,CAAC;AAE5F,UAAII,IAAY;AAShB,UARI31B,MAAS,cACX21B,IAAYH,IAAa,IAAIA,IAAa,IAAIE,EAAmB,SAAS,IAGxE11B,MAAS,gBACX21B,IAAYH,MAAeE,EAAmB,SAAS,IAAI,IAAIF,IAAa,IAG1EG,MAAc,MAAM;AACtB,cAAMC,IAAWF,EAAmBC,CAAS;AAE7C,YAAIC,EAAS,aAAa,eAAe,MAAM;AAC7C,UAAAA,EAAS,MAAA;AAAA,aACJ;AACL,gBAAM1d,IAAS0d,EAAS,cAAc,GAAG;AACzC,UAAI1d,KACDA,EAAuB,MAAA;AAAA,QAE5B;AAEA,QAAAud,EAAcE,CAAS;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAEME,IAAkB,CAACt/B,GAAoCm2B,MAA4B;;AAKvF,SAJA98B,IAAAwlC,EAAkB,iBAAlB,QAAAxlC,EAAA,KAAAwlC,GAAiC1I,EAAK,SAEtCl1B,IAAAk1B,EAAK,YAAL,QAAAl1B,EAAA,KAAAk1B,GAAen2B,IAEXg/B,EAAW,SAAS;AACtB,YAAMG,IAAqB,MAAM,KAAKH,EAAW,QAAQ,iBAAiB,iBAAiB,CAAC;AAE5F,UAAIG,EAAmB,SAAS,GAAG;AACjC,cAAM1yB,IAAO0yB,EAAmB,CAAC;AAEjC,YAAI1yB,EAAK,aAAa,eAAe,MAAM;AACzC,UAAAA,EAAK,MAAA;AAAA,aACA;AACL,gBAAMkV,IAASlV,EAAK,cAAc,GAAG;AACrC,UAAIkV,KACDA,EAAuB,MAAA;AAAA,QAE5B;AAEA,QAAAud,EAAc,CAAC;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAA1lC,EAAA,cAAC,OAAA,EAAI,WAAU,2BAAA,GACZslC,KACC,gBAAAtlC,EAAA,cAAC,OAAA,EAAI,IAAG,kCAAiC,WAAU,kBAChDslC,EAAY,KACf,GAGF,gBAAAtlC,EAAA,cAAC,OAAA,EAAI,WAAU,8CAA6C,mBAAgB,iCAAA,GAC1E,gBAAAA,EAAA,cAAC,MAAA,EAAG,KAAKwlC,EAAA,GACNH,EAAkB,mBAAA,EAAqB,IAAI,CAAC9f,GAAMje,MAAU;;AAC3D,UAAMH,IAAK,GAAGw3B,GAAa,sBAAsB,IAAIr3B,CAAK,IAEpD3G,IAAM6G,GAAA;AAGZ,QAFAq3B,EAAkB,WAAW,IAAI13B,GAAIxG,CAAG,GAEpCK,EAAoCukB,CAAI,KAAMA,EAAsB,SAAS0S;AAC/E,aACE,gBAAAj4B,EAAA,cAAC,MAAA,EAAG,KAAKmH,EAAA,GACP,gBAAAnH,EAAA;AAAA,QAACokC;AAAA,QAAA;AAAA,UACC,KAAAzjC;AAAA,UACA,IAAAwG;AAAA,UACA,QAAOtH,IAAA0lB,EAAK,MAAM,UAAX,gBAAA1lB,EAAkB;AAAA,UACzB,gBAAgB0lB,EAAK,MAAM,kBAAkB;AAAA,UAC7C,uBAAuBA,EAAK,MAAM,yBAAyB;AAAA,UAC3D,aACE;AAAA,YACE,UAAYkgB,MAAen+B,IAAQ,IAAI;AAAA,YACvC,WAAaymB;AAAA,YACb,iBAAiB;AAAA,UAAA;AAAA,QACnB;AAAA,QAGDxI,EAAK,MAAM;AAAA,MAAA,CAEhB;AAIJ,QAAIvkB,EAAoCukB,CAAI,KAAMA,EAAsB,SAASyS,IAAgB;AAC/F,YAAMqJ,IAAiBjjC,EAAW,yBAAyBmnB,EAAK,MAAM,SAAS;AAE/E,aACE,gBAAAvlB,EAAA,cAAC,MAAA,EAAG,KAAKmH,EAAA,GACP,gBAAAnH,EAAA;AAAA,QAACmhC;AAAA,QAAA;AAAA,UACE,GAAG5b,EAAK;AAAA,UACT,iBAAc;AAAA,UACd,WAAW8b;AAAA,UACX,WAAWtT;AAAA,UACX,UAAU0X,MAAen+B,IAAQ,IAAI;AAAA,QAAA;AAAA,MAAA,CAEzC;AAAA,IAEJ;AAAA,EACF,CAAC,CACH,CACF,GAEC+9B,EAAkB,gBAAA,MAAqBE,KAAA,gBAAAA,EAAY,UAAS,KAAKA,KAChE,gBAAAvlC,EAAA,cAAC,OAAA,EAAI,WAAU,oDAAmD,cAAYqlC,EAAkB,kBAAA,EAAkB,GAChH,gBAAArlC,EAAA,cAAC,MAAA,EAAG,WAAU,sBAAA,GACXulC,EAAW,IAAI,CAAC5I,GAAMr1B,MAAU;AAC/B,UAAMH,IAAK,GAAGtC,CAAW,IAAIyC,CAAK;AAClC,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAKmH,EAAA,GACP,gBAAAnH,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,YAAW;AAAA,QACX,SAAQ;AAAA,QACR,WAAS;AAAA,QACT,SAAS,CAAC7E,MAAuC;AAC/C,UAAAs/B,EAAgBt/B,GAAKm2B,CAAI;AAAA,QAC3B;AAAA,MAAA;AAAA,MAECA,EAAK;AAAA,IAAA,CAEV;AAAA,EAEJ,CAAC,CACH,CACF,CAEJ;AAEJ,GC7JaoJ,KAA+B,MAAM;AAChD,QAAMV,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpB1/B,IAAM6G,GAAA;AACZ,EAAAq3B,EAAkB,WAAW,IAAIF,GAAa,YAAYh+B,CAAG;AAE7D,QAAM,EAAE,OAAA0E,EAAA,IAAU9B,GAAA,GACZ+B,IAAWD,IAAQ,KAEnB2gC,IAAeX,EAAkB,gBAAA,GACjCY,IAAYZ,EAAkB,uBAAA,GAC9Ba,IAAgBb,EAAkB,2BAAA;AAExC,SACE,gBAAArlC,EAAA,cAAC,OAAA,EAAI,cAAYkmC,GAAgB,GAAIF,IAAe,EAAE,IAAIA,EAAA,IAAiB,CAAA,EAAC,GAC1E,gBAAAhmC,EAAA,cAAC,MAAA,sCACE,MAAA,MACC,gBAAAA,EAAA;AAAA,IAACkiC;AAAA,IAAA;AAAA,MACC,IAAIvD,GAAa;AAAA,MACjB,KAAAh+B;AAAA,MACA,WAAU;AAAA,MACV,gBAAgB,EAAE,aAAa,mBAAmB,kBAAkB,mBAAA;AAAA,MACpE,eAAe,EAAE,aAAa,gBAAgB,kBAAkB,gBAAA;AAAA,MAChE,eAAeg+B,GAAa;AAAA,IAAA;AAAA,IAE5B,gBAAA3+B,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAO;AAAA,QACN,GAAI/F,IAAW,EAAE,cAAc2gC,KAAA,gBAAAA,EAAW,WAAS,IAAM,CAAA;AAAA,QACzD,GAAI3gC,IAAW,EAAE,UAAU,OAAS,EAAE,UAAU,GAAA;AAAA,MAAM;AAAA,MAEtD2gC;AAAA,IAAA;AAAA,oCAEFb,IAAA,IAA+B;AAAA,EAAA,CAEpC,CACF,CACF;AAEJ,GC3Cae,KAAwD,CAAC,EAAE,WAAAvlC,QAAgB;AACtF,QAAMykC,IAAoBvQ,GAAA,GAEpBvG,IAAsBnwB,EAAW,kCAAkC,EAAE,aAAainC,EAAkB,SAAA,GAAYzkC,CAAS;AAE/H,SACE,gBAAAZ,EAAA,cAAC,OAAA,EAAI,WAAWuuB,EAAA,GACd,gBAAAvuB,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAA,GAAiBqlC,EAAkB,uBAAA,CAAyB,CAC7E;AAEJ,GCVae,KAAsC,CAAC,EAAE,QAAAC,IAAS,IAAO,OAAApoC,GAAO,OAAAsQ,GAAO,SAAAs1B,GAAS,GAAGlkC,QAAY;AAC1G,QAAM2mC,IAAkBloC,EAAW,QAAQ,EAAE,UAAUioC,GAAQ;AAE/D,SACE,gBAAArmC,EAAA,cAAC,YAAQ,GAAGL,GAAO,WAAW2mC,GAAiB,SAAAzC,GAAkB,cAAY5lC,EAAA,GAC1EsQ,CACH;AAEJ,GCLag4B,KAAyC,MAAM;AAC1D,QAAMlB,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpB1/B,IAAMuB,EAAuB,IAAI;AACvC,EAAA28B,EAAkB,WAAW,IAAIF,GAAa,OAAOh+B,CAAG;AAExD,QAAM6lC,IAAenB,EAAkB,gBAAA,GAEjCiB,IAAkBloC,EAAW,SAAS,EAAE,aAAainC,EAAkB,YAAY,EAAE,WAAW,CAACmB,EAAA,CAAc,GAE/GV,IAAkB,CAACt/B,GAAoCm2B,MAA4B;;AACvF,IAAK6J,MAIL3H,EAAkB,iBAAA,IAElBh/B,IAAAwlC,EAAkB,iBAAlB,QAAAxlC,EAAA,KAAAwlC,GAAiC1I,EAAK,SAEtCl1B,IAAAk1B,EAAK,YAAL,QAAAl1B,EAAA,KAAAk1B,GAAen2B;AAAA,EACjB,GAEMigC,IAAuB,CAACjgC,MAA0C;AACtE,UAAM,EAAE,MAAAyJ,MAASzJ;AAEjB,QAAI,CAACggC,KAAgB,CAAC7lC,EAAI,WAAYsP,MAAS,eAAeA,MAAS;AACrE;AAGF,UAAMy2B,IAAiB,MAAM,KAAK/lC,EAAI,QAAQ,iBAAiB,OAAO,CAAC,GACjEgmC,IAAcD,EAAe,UAAU,CAACE,MAAOA,EAAG,UAAU,SAAS,UAAU,CAAC;AAEtF,QAAIf;AACJ,IAAI51B,MAAS,gBACX41B,IAAWa,EAAeC,IAAc,IAAIA,IAAc,IAAID,EAAe,SAAS,CAAC,GACvFb,EAAS,MAAA,GACTA,EAAS,MAAA,IAGP51B,MAAS,iBACX41B,IAAWa,EAAeC,MAAgBD,EAAe,SAAS,IAAI,IAAIC,IAAc,CAAC,GACzFd,EAAS,MAAA,GACTA,EAAS,MAAA;AAAA,EAEb,GAEMpQ,IAAQ4P,EAAkB,SAAA,KAAc,CAAA;AAE9C,SAAI5P,EAAM,WAAW,IAAU,OAG7B,gBAAAz1B,EAAA,cAAC,OAAA,EAAI,WAAWsmC,GAAiB,KAAA3lC,GAAU,cAAY0kC,EAAkB,kBAAA,GAAqB,MAAK,UAAA,GAChG5P,EAAM,IAAI,CAACkH,MAER,gBAAA38B,EAAA;AAAA,IAAComC;AAAA,IAAA;AAAA,MACE,GAAGzJ;AAAA,MACJ,KAAKA,EAAK;AAAA,MACV,MAAK;AAAA,MACL,iBAAc;AAAA,MACd,iBAAeA,EAAK;AAAA,MACpB,IAAIA,EAAK;AAAA,MACT,UAAU6J,KAAgB7J,EAAK,SAAS,IAAI;AAAA,MAC5C,SAAS,CAACn2B,MAAuC;AAC/C,QAAAs/B,EAAgBt/B,GAAKm2B,CAAI;AAAA,MAC3B;AAAA,MACA,kBAAkB8J;AAAA,IAAA;AAAA,EAAA,CAGvB,CACH;AAEJ,GC9DaI,KAAwD,MAAM;;AACzE,QAAMxB,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpB1/B,IAAM6G,GAAA;AAEZ,EAAAq3B,EAAkB,WAAW,IAAIF,GAAa,eAAeh+B,CAAG;AAEhE,QAAMqhC,IAAqBqD,EAAkB,iBAAA;AAE7C,SACE,gBAAArlC,EAAA;AAAA,IAACkiC;AAAA,IAAA;AAAA,MACC,IAAIvD,GAAa;AAAA,MACjB,WAAU;AAAA,MACV,KAAAh+B;AAAA,MACA,eAAa;AAAA,MACb,eAAeg+B,GAAa;AAAA,IAAA;AAAA,IAE5B,gBAAA3+B,EAAA,cAACqL,IAAA,EAAO,QAAOxL,IAAAmiC,EAAmB,gBAAnB,gBAAAniC,EAAgC,YAAY,iBAAc,SAAA,GACtEmiC,EAAmB,eAAe,cAAcA,EAAmB,SACnEA,EAAmB,eAAe,cAAc,gBAAAhiC,EAAA,cAACI,IAAA,EAAK,eAAW,IAAC,MAAM4hC,EAAmB,QAAA,CAAS,CACvG;AAAA,EAAA;AAGN,GClCa8E,KAA8C,CAAC,EAAE,MAAAp4B,GAAM,SAAAgd,GAAS,OAAAnd,GAAO,SAAAs1B,QAEhF,gBAAA7jC,EAAA;AAAA,EAACqL;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,gBAAcqgB;AAAA,IACd,YAAW;AAAA,IACX,SAAQ;AAAA,IACR,WAAU;AAAA,IACV,SAAAmY;AAAA,IACC,GAAIn1B,KAAQgd,IAAU,EAAE,SAAS,GAAA,IAAS,CAAA;AAAA,IAC1C,GAAIhd,IAAO,EAAE,aAAaA,GAAM,kBAAkBA,EAAA,IAAS,CAAA;AAAA,IAC3D,GAAIgd,IAAU,EAAE,cAAc,oBAAoB,mBAAmB,oBAAA,IAAwB,CAAA;AAAA,EAAC;AAAA,EAE9Fnd;AAAA,GCdMw4B,KAA2C,CAACpnC,MAAU;AACjE,QAAM0lC,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpB5U,IAAe,CAACoM,MAAiB;;AACrC,UAAMmP,IAAenI,EAAkB,WAAW,IAAI,WAAW;AAEjE,QAAImI,GAAc;AAChB,OAAAnnC,IAAAwlC,EAAkB,qBAAlB,QAAAxlC,EAAA,KAAAwlC,GAAqCxN;AAErC,YAAM5kB,IAAO+zB,EAAa;AAC1B,MAAA/zB,KAAA,QAAAA,EAAM,YACNA,KAAA,QAAAA,EAAM;AAAA,IACR;AAAA,EACF;AAEA,yCACG,OAAA,EAAK,GAAGtT,GAAO,WAAU,oBAAmB,cAAY0lC,EAAkB,sBAAA,GAAyB,MAAK,UACtGA,EAAkB,aAAA,EAAe,IAAI,CAACxN,GAAqBvwB,MAExD,gBAAAtH,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAqB,KAAK,GAAGL,EAAM,EAAE,IAAI2H,CAAK,IAAI,MAAK,WAAA,mCACnEw/B,IAAA,EAAiB,SAAS,CAAC,CAACjP,EAAK,SAAS,OAAOA,EAAK,OAAO,MAAMA,EAAK,MAAM,SAAS,MAAMpM,EAAaoM,EAAK,KAAK,GAAG,CAC1H,CAEH,CACH;AAEJ,GC1BaoP,KAAwB,MAAM;AACzC,QAAM,EAAE,OAAA5hC,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAO,GAAU,UAAAC,EAAA,IAAaH,GAAA,GAEzB0B,IAAWD,IAAQvB,GACnB6e,IAAWtd,KAASvB,KAAYuB,IAAQtB,GAExCy+B,IAAgB1N,GAAA,GAChB+J,IAAoBwB,GAAA,GAEpB6G,IAAkB1E,EAAc,mBAAA,EAAqB,SAAS,IAAIA,EAAc,mBAAA,EAAqB,CAAC,IAAI;AAEhH,MAAI2E,IAA4B;AAEhC,EAAID,MAAoB5hC,KAAYqd,KAClCwkB,oCAAkB,QAAA,EAAK,cAAYD,EAAgB,MAAA,GAAQA,EAAgB,IAAK,IACvEA,KAAmB,CAAC5hC,IAC7B6hC,IAAiBD,EAAgB,QAEjCC,IAAiB,gBAAAnnC,EAAA,cAAC,cAAM,KAAM;AAGhC,QAAMW,IAAM6G,GAAA;AACZ,SAAAq3B,EAAkB,WAAW,IAAIF,GAAa,WAAWh+B,CAAG,GAG1D,gBAAAX,EAAA;AAAA,IAACkiC;AAAA,IAAA;AAAA,MACC,IAAIvD,GAAa;AAAA,MACjB,KAAAh+B;AAAA,MACA,WAAU;AAAA,MACV,gBAAgB,EAAE,cAAc,2BAA2B,mBAAmB,0BAAA;AAAA,MAC9E,eAAe,EAAE,cAAc,yBAAyB,mBAAmB,wBAAA;AAAA,MAC3E,eAAeg+B,GAAa;AAAA,IAAA;AAAA,IAE5B,gBAAA3+B,EAAA,cAACqL,MAAO,WAAU,oBAAmB,SAAO,IAAC,iBAAc,aACxD87B,CACH;AAAA,oCACCJ,IAAA,IAAwB;AAAA,EAAA;AAG/B,GC7CaK,KAA8C,CAACznC,MAAU;;AAGpE,QAAM0nC,KAAUxnC,IAFUi1B,GAAA,EAEQ,gBAAA,MAAlB,gBAAAj1B,EAAqC;AAErD,yCACG,OAAA,EAAK,GAAGF,GAAO,WAAU,0BACvB0nC,CACH;AAEJ,GCPaC,KAAwC,CAAC3nC,MAAU;AAC9D,QAAM0lC,IAAoBvQ,GAAA,GAEpByS,IAAclC,EAAkB,sBAAA,GAEhCmC,IAA6BnC,EAAkB,yBAAA,GAE/CoC,IAA4BpC,EAAkB,wBAAA,GAE9CqC,IAAoBrC,EAAkB,kCAAA,GAEtCsC,IAAetC,EAAkB,6BAAA;AAEvC,SACE,gBAAArlC,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,WAAU,gBAAA,GACvB4nC,KAAe,gBAAAvnC,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GAAgBunC,KAAA,gBAAAA,EAAa,QAAS,GAEpEC,KACC,gBAAAxnC,EAAA,cAAC,OAAA,EAAI,WAAU,6BAAA,GACb,gBAAAA,EAAA,cAACu5B,IAAA,EAAgB,GAAGiO,GAA4B,UAAUnC,EAAkB,SAAA,CAAU,CACxF,GAGD,CAACmC,KAA8BC,KAC9B,gBAAAznC,EAAA,cAAC,OAAA,EAAI,WAAU,0CAAA,GAA2CynC,CAA0B,GAGrFC,KAAqBC,KACpB,gBAAA3nC,EAAA,cAAC,OAAA,EAAI,WAAU,iCAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,6CACZ0nC,KAAA,gBAAAA,EAAmB,aAAY,gBAAA1nC,EAAA,cAAC,OAAA,EAAI,WAAU,uBAAqB0nC,KAAA,gBAAAA,EAAmB,QAAS,GAChG,gBAAA1nC,EAAA,cAACkkB,IAAA,EAAK,WAAU,cAAA,GACbyjB,EAAa,IAAI,CAACC,GAAWtgC,MAAU;AACtC,UAAM5I,IAAM,GAAGiB,EAAM,EAAE,IAAI2H,CAAK;AAEhC,WACE,gBAAAtH,EAAA,cAAC,MAAA,EAAG,KAAAtB,EAAA,GACF,gBAAAsB,EAAA,cAACmhC,IAAA,EAAkB,GAAGyG,GAAW,SAAQ,WAAU,YAAW,OAAA,CAAO,CACvE;AAAA,EAEJ,CAAC,CACH,CACF,CACF,CAEJ;AAEJ,GC1CaC,KAA0C,CAAC,EAAE,WAAAjnC,QAAgB;AACxE,QAAMykC,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpB1/B,IAAM6G,GAAA;AACZ,EAAAq3B,EAAkB,WAAW,IAAIF,GAAa,QAAQh+B,CAAG;AAEzD,QAAM6iC,IAAkBplC,EAAW,qBAAqBwC,CAAS;AAEjE,SACE,gBAAAZ,EAAA;AAAA,IAACkiC;AAAA,IAAA;AAAA,MACC,IAAIvD,GAAa;AAAA,MACjB,KAAAh+B;AAAA,MACA,WAAW6iC;AAAA,MACX,gBAAgB,EAAE,aAAa,qBAAqB,kBAAkB,qBAAA;AAAA,MACtE,eAAe,EAAE,aAAa,gBAAgB,kBAAkB,gBAAA;AAAA,MAChE,eAAe7E,GAAa;AAAA,IAAA;AAAA,IAE5B,gBAAA3+B,EAAA,cAACqL,IAAA,EAAO,WAAU,oBAAmB,SAAO,IAAC,iBAAc,SAAA,GACxDg6B,EAAkB,eAAA,CACrB;AAAA,IAEA,gBAAArlC,EAAA,cAAAA,EAAA,UAAA,MACGqlC,EAAkB,gBAAA,KAAqB,gBAAArlC,EAAA,cAAConC,IAAA,IAA2B,GACnE/B,EAAkB,iBAAA,KAAsB,gBAAArlC,EAAA,cAACsnC,IAAA,IAAqB,CACjE;AAAA,EAAA;AAGN,GCnCaQ,KAAiD,MAAM;AAClE,QAAMjjC,IAAcC,GAAA,GAEdud,IADoByS,GAAA,EACM,wBAAA;AAEhC,SACE,gBAAA90B,EAAA,cAAC,SAAI,WAAU,yBAAA,GACZqiB,EAAM,IAAI,CAAC0lB,GAAGzgC,MAAkB;AAC/B,UAAM5I,IAAM,GAAGmG,CAAW,IAAIyC,CAAK;AACnC,2CAAQ65B,IAAA,EAAkB,GAAG4G,GAAG,WAAW,IAAO,KAAArpC,GAAU;AAAA,EAC9D,CAAC,CACH;AAEJ,GCRaspC,KAA8B,MAAM;AAC/C,QAAM3C,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpB1/B,IAAM6G,GAAA;AACZ,EAAAq3B,EAAkB,WAAW,IAAIF,GAAa,iBAAiBh+B,CAAG;AAElE,QAAM0hB,IAAQgjB,EAAkB,wBAAA,GAC1B4C,IAA6B5C,EAAkB,mBAAA;AAErD,MAAIhjB,EAAM,SAAS,KAAK,CAAC4lB;AACvB,WAAO;AAGT,QAAMC,IAAe7lB,EAAM,WAAW;AAEtC,MAAI8lB,IAAgB,MAChBC,IAAiB;AAErB,MAAIF,GAAc;AAChB,UAAMnuB,IAAOsI,EAAM,CAAC;AACpB,IAAA8lB,IAAgB,gBAAAnoC,EAAA,cAACmhC,MAAkB,GAAGpnB,GAAM,UAAUlX,EAAgBkX,EAAK,QAAQ,EAAA,CAAG;AAAA,EACxF;AACE,IAAAquB,IAAiB;AAAA,MACf,gBAAgB;AAAA,QACd,aAAaH,EAA2B;AAAA,QACxC,kBAAkBA,EAA2B;AAAA,QAC7C,cAAcA,EAA2B;AAAA,QACzC,mBAAmBA,EAA2B;AAAA,MAAA;AAAA,MAEhD,eAAe;AAAA,QACb,aAAaA,EAA2B,cAAc,iBAAiB;AAAA,QACvE,kBAAkBA,EAA2B,mBAAmB,iBAAiB;AAAA,QACjF,cAAcA,EAA2B,eAAe,iBAAiB;AAAA,QACzE,mBAAmBA,EAA2B,oBAAoB,iBAAiB;AAAA,MAAA;AAAA,IACrF,GAGFE,IAAgB;AAAA,MACd,gBAAAnoC,EAAA;AAAA,QAACqL;AAAA,QAAA;AAAA,UACE,GAAG48B;AAAA,UACJ,KAAK;AAAA,UACL,SAAO;AAAA,UACP,UAAUA,EAA2B,YAAY;AAAA,UACjD,iBAAc;AAAA,QAAA;AAAA,QAEbA,EAA2B,SAAS;AAAA,MAAA;AAAA,MAEvC,gBAAAjoC,EAAA,cAAC8nC,IAAA,EAA8B,KAAK,iCAAA,CAAkC;AAAA,IAAA;AAI1E,SACE,gBAAA9nC,EAAA;AAAA,IAACkiC;AAAA,IAAA;AAAA,MACC,IAAIvD,GAAa;AAAA,MACjB,KAAAh+B;AAAA,MACA,WAAU;AAAA,MACV,eAAeg+B,GAAa;AAAA,MAC3B,GAAGyJ;AAAA,IAAA;AAAA,IAEHD;AAAA,EAAA;AAGP,GC7DaE,KAAyB,MAAM;AAC1C,QAAMhD,IAAoBvQ,GAAA,GAEpBwT,IAAuBlqC,EAAW,eAAe,EAAE,aAAainC,EAAkB,UAAU,GAE5F,EAAE,OAAAhgC,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAO,GAAU,UAAAC,EAAA,IAAaH,GAAA,GAEzB2kC,IAAYljC,KAAStB,GACrBuB,IAAWD,IAAQvB;AAEzB,yCACG,OAAA,EAAI,WAAWwkC,KACd,gBAAAtoC,EAAA,cAAC,OAAA,EAAI,WAAU,eAAc,cAAYqlC,EAAkB,uBAAA,KACzD,gBAAArlC,EAAA,cAAC,MAAA,MACEqlC,EAAkB,aAAA,qCAChB,MAAA,MACC,gBAAArlC,EAAA,cAACinC,IAAA,IAAkB,CACrB,GAGD5B,EAAkB,UAAA,KACjB,gBAAArlC,EAAA,cAAC,MAAA,sCACE6nC,IAAA,IAAe,CAClB,GAGD,CAAC,CAACxC,EAAkB,iBAAA,qCAClB,MAAA,MACC,gBAAArlC,EAAA,cAAC6mC,QAAsB,CACzB,GAGD,CAAC,CAACxB,EAAkB,mBAAA,qCAClB,MAAA,MACC,gBAAArlC,EAAA,cAACgoC,QAAwB,CAC3B,CAEJ,CACF,mCAEC,OAAA,MACEO,qCAAchC,IAAA,IAAc,GAE5BgC,KAAa,CAAClD,EAAkB,qDAAsBc,IAAA,IAAsB,GAE5E7gC,KAAY,gBAAAtF,EAAA,cAACmmC,IAAA,EAAsB,WAAU,WAAU,GAEvD,CAACoC,KAAa,CAAC,CAAClD,EAAkB,qBAAA,KAA0B,gBAAArlC,EAAA,cAAC+lC,IAAA,IAAyB,CACzF,CACF;AAEJ,GC1DayC,KAAsC,CAAC,EAAE,WAAA5nC,QAAgB;AACpE,QAAM4hC,IAAgB1N,GAAA,GAEhB2T,IAAiBrqC,EAAW,QAAQwC,CAAS;AAEnD,yCAAQ,OAAA,EAAI,WAAW6nC,EAAA,GAAiBjG,EAAc,cAAe;AACvE,GCMakG,KAAwE,CAAC;AAAA,EACpF,OAAAx/B;AAAA,EACA,gBAAAm7B;AAAA,EACA,uBAAAC;AAAA,EACA,UAAAzjC;AACF,MAAM;;AACJ,QAAMgE,IAAcC,GAAA,GAEd4/B,IAAsB5jC,EAAS,QAAQD,CAAQ,EAAE,OAAO,CAACE,MACtDC,EAAyCD,CAAK,KAAMA,EAAuB,SAASg3B,EAC5F,GAEK1V,IAAQvhB,EAAS,QAAQD,CAAQ,EAAE,OAAO,CAACE,MACxCC,EAAoCD,CAAK,KAAMA,EAAuB,SAASi3B,EACvF,GAEK4M,IAAmB9jC,EAAS,QAAQD,CAAQ,EAAE,OAAO,CAACE,MACnDC,EAA2CD,CAAK,KAAMA,EAAuB,SAASojC,EAC9F,GAEKwE,IAAiCvqC,EAAW,2BAA2BwmC,EAAiB,SAAS,IAAI,UAAU,EAAE,GAEjHD,IAA+BD,EAAoB,SAAS,KAAIj9B,KAAA5H,IAAA6kC,KAAA,gBAAAA,EAAsB,OAAtB,gBAAA7kC,EAA0B,UAA1B,gBAAA4H,EAAiC,WAAW;AAElH,SACE,gBAAAzH,EAAA,cAAC,OAAA,EAAI,WAAW2oC,KACbz/B,KAAS,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,WAASkJ,CAAM,GAEvCy7B,KAAgC,gBAAA3kC,EAAA,cAAC,OAAA,EAAI,WAAU,YAAA,GAAa2kC,CAA6B,GAEzFtiB,EAAM,SAAS,KAAK,CAACsiB,KACpB,gBAAA3kC,EAAA,cAAC,SAAI,WAAU,SAAQ,MAAK,QAAO,cAAYqkC,EAAA,GAC5ChiB,EAAM,IAAI,CAACtI,GAAMzS,MAAU;AAC1B,UAAM5I,IAAM,GAAGmG,CAAW,UAAUyC,CAAK;AAEzC,WACE,gBAAAtH,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAe,KAAAtB,GAAU,MAAK,WAAA,GAC3C,gBAAAsB,EAAA,cAACmhC,IAAA,EAAkB,GAAGpnB,EAAK,OAAO,SAAQ,WAAU,CACtD;AAAA,EAEJ,CAAC,CACH,GAGD6qB,EAAiB,SAAS,KAAK,CAACD,KAC/B,gBAAA3kC,EAAA,cAAC,OAAA,EAAI,WAAU,8BAAA,mCACZ,OAAA,EAAI,WAAU,qBAAoB,MAAK,QAAO,cAAYskC,KACxDM,EAAiB,IAAI,CAAC7qB,GAAMzS,MAAU;AACrC,UAAM5I,IAAM,GAAGmG,CAAW,sBAAsByC,CAAK;AAErD,WACE,gBAAAtH,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAe,KAAAtB,GAAU,MAAK,WAAA,GAC3C,gBAAAsB,EAAA,cAACmhC,IAAA,EAAkB,GAAGpnB,EAAK,MAAA,CAAO,CACpC;AAAA,EAEJ,CAAC,CACH,CACF,CAEJ;AAEJ,GCnEa6uB,KAA6B,MAAM;AAC9C,QAAMvD,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GACpBwI,IAAOxD,EAAkB,mBAAA,GAEzByD,IAAqBzD,EAAkB,cAAA,GACvCW,IAAeX,EAAkB,gBAAA;AAEvC,SACE,gBAAArlC,EAAA,cAAC,SAAI,WAAU,4BAA2B,mBAAiB8oC,KAAA,gBAAAA,EAAoB,OAAQ,GAAI9C,IAAe,EAAE,IAAIA,EAAA,IAAiB,CAAA,EAAC,GAChI,gBAAAhmC,EAAA,cAAC,YACE6oC,EAAK,IAAI,CAACtjB,GAAMje,MAAU;;AACzB,UAAMH,IAAK,GAAGw3B,GAAa,cAAc,IAAIr3B,CAAK,IAE5C3G,IAAM6G,GAAA;AAGZ,QAFAq3B,EAAkB,WAAW,IAAI13B,GAAIxG,CAAG,GAEpCK,EAAoCukB,CAAI,KAAMA,EAAsB,SAAS0S;AAC/E,aACE,gBAAAj4B,EAAA,cAAC,MAAA,EAAG,KAAKmH,EAAA,GACP,gBAAAnH,EAAA;AAAA,QAACkiC;AAAA,QAAA;AAAA,UACC,IAAA/6B;AAAA,UACA,KAAAxG;AAAA,UACA,WAAU;AAAA,UACV,gBAAgB,EAAE,cAAc,2BAA2B,mBAAmB,0BAAA;AAAA,UAC9E,eAAe,EAAE,cAAc,yBAAyB,mBAAmB,wBAAA;AAAA,UAC3E,eAAeg+B,GAAa;AAAA,QAAA;AAAA,QAE5B,gBAAA3+B,EAAA;AAAA,UAACqL;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAO;AAAA,YACP,iBAAc;AAAA,YACd,kBAAexL,IAAAc,EAAI,YAAJ,gBAAAd,EAAa;AAAA,UAAA;AAAA,UAE3B0lB,EAAK,MAAM;AAAA,QAAA;AAAA,QAEd,gBAAAvlB,EAAA;AAAA,UAAC0oC;AAAA,UAAA;AAAA,YACC,gBAAgBnjB,EAAK,MAAM;AAAA,YAC3B,uBAAuBA,EAAK,MAAM;AAAA,YAClC,OAAOA,EAAK,MAAM;AAAA,UAAA;AAAA,UAEjBA,EAAK,MAAM;AAAA,QAAA;AAAA,MACd,CAEJ;AAIJ,QAAIvkB,EAAoCukB,CAAI,KAAMA,EAAsB,SAASyS,IAAgB;AAC/F,YAAMqJ,IAAiBjjC,EAAW,uCAAuCmnB,EAAK,MAAM,SAAS;AAC7F,aACE,gBAAAvlB,EAAA,cAAC,QAAG,KAAKmH,GAAI,WAAU,WAAA,GACrB,gBAAAnH,EAAA,cAACkiC,MAAU,IAAA/6B,GAAQ,KAAAxG,GAAU,eAAeg+B,GAAa,uDACtDwC,IAAA,EAAkB,GAAG5b,EAAK,OAAO,WAAW8b,EAAA,CAAgB,CAC/D,CACF;AAAA,IAEJ;AAAA,EACF,CAAC,CACH,CACF;AAEJ,GCrDM0H,KAAqB37B,GAAuC,EAA6B,GAEzF47B,KAAwB,MACrB17B,GAAWy7B,EAAkB,GCYhCE,KAAgC,CAAC;AAAA,EACrC,KAAAtoC,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,WAAAsoC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAhlC,IAAW;AAAA,EACX,UAAAvD;AAAA,EACA,GAAGlB;AACL,MAAM;AACJ,QAAM6iC,IAAgB1N,GAAA,GAEhBuU,IAAeL,GAAA,GAEfM,IAA6BxoC,EAAS,QAAQD,CAAQ,EAAE,KAAK,CAACE,MAC3DC,EAAsCD,CAAK,KAAMA,EAAuB,SAASsK,EACzF,GAEKqN,IAAYxW,EAA0B,IAAI,GAE1CqnC,IAAQ,MAAM;;AAClB,KAAA1pC,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB;AAAA,EACrB,GAEM6uB,IAAO,MAAM;AACjB,IAAA2a,EAAa,KAAKC,GAA4B;AAAA,MAC5C,kBAAkBH,KAAA,gBAAAA,EAAY;AAAA,MAC9B,WAAWC;AAAA,MACX,QAAQG;AAAA,IAAA,CACmB;AAAA,EAC/B,GAEMxE,IAAQ,MAAM;AAClB,IAAAsE,EAAa,KAAA;AAAA,EACf,GAEMtmC,IAAWb,EAAuB,IAAI;AAE5C,EAAAY;AAAA,IACEnC;AAAA,IACAoC;AAAA,IACA;AAAA,MACE,QAAQsmC,EAAa;AAAA,MACrB,MAAA3a;AAAA,MACA,OAAAqW;AAAA,MACA,OAAAwE;AAAA,IAAA;AAAA,IAEF,CAACxmC,GAAUsmC,EAAa,YAAY3a,GAAMqW,CAAK;AAAA,EAAA;AAGjD,QAAMxB,IAAoB,MAAM;AAC9B,IAAA7U,EAAA;AAAA,EACF,GAEMX,IAAgB,CAACvnB,MAA0C;AAC/D,KAAIA,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,aACrEA,EAAI,eAAA,GACJA,EAAI,gBAAA;AAAA,EAER,GAEMgjC,IAAc,CAAChjC,MAA0C;AAC7D,KAAIA,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,aACrEA,EAAI,eAAA,GACJA,EAAI,gBAAA,GACJkoB,EAAA;AAAA,EAEJ,GAEM+a,IAAsBrrC,EAAW,cAAcwC,GAAW,EAAE,aAAawD,GAAU,GAEnFslC,IAAuBtrC,EAAW,qBAAqB,EAAE,UAAUirC,EAAa,YAAY,WAAW,CAACA,EAAa,WAAA,CAAY;AAEvI,SACE,gBAAArpC,EAAA,cAAC,OAAA,EAAI,KAAK+C,GAAU,WAAW0mC,KAC7B,gBAAAzpC,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACE,GAAG1L;AAAA,MACJ,KAAK+Y;AAAA,MACL,WAAWgxB;AAAA,MACX,SAASnG;AAAA,MACT,kBAAkBxV;AAAA,MAClB,gBAAgByb;AAAA,MAChB,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,SAAO;AAAA,MACP,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,UAAUhH,EAAc;AAAA,IAAA;AAAA,IAEvB0G;AAAA,EAAA,CAEL;AAEJ,GCtHaS,KAAsD,CAAC,EAAE,MAAApkB,QAAW;;AAC/E,QAAM1gB,IAAcC,GAAA;AAEpB,MAAI8kC,IAAe,IACfvF,IAAiB,IACjBC,IAAwB;AAC5B,EAAItjC,EAAoCukB,CAAI,KAAMA,EAAsB,SAAS0S,OAC/E2R,IAAerkB,EAAK,MAAM,OAC1B8e,IAAiB9e,EAAK,MAAM,kBAAkB,IAC9C+e,IAAwB/e,EAAK,MAAM,yBAAyB;AAG9D,QAAMmf,IAAsB5jC,EAAS,QAAQykB,EAAK,MAAM,QAAQ,EAAE,OAAO,CAACxkB,MACjEC,EAAyCD,CAAK,KAAMA,EAAuB,SAASg3B,EAC5F,GAEK4M,IAA+BD,EAAoB,SAAS,KAAIj9B,KAAA5H,IAAA6kC,KAAA,gBAAAA,EAAsB,OAAtB,gBAAA7kC,EAA0B,UAA1B,gBAAA4H,EAAiC,WAAW,MAE5GoiC,IAA2D/oC,EAAS,QAAQykB,EAAK,MAAM,QAAQ,EAAE,OAAO,CAACwiB,MACtG/mC,EAAoC+mC,CAAC,KAAMA,EAAmB,SAAS/P,EAC/E,GAEK8R,IAAyEhpC,EAAS,QAAQykB,EAAK,MAAM,QAAQ,EAAE,OAAO,CAACwiB,MACpH/mC,EAA2C+mC,CAAC,KAAMA,EAAmB,SAAS5D,EACtF;AAED,SACE,gBAAAnkC,EAAA,cAAAA,EAAA,UAAA,MACG2kC,KACC,gBAAA3kC,EAAA,cAAC,OAAA,EAAI,WAAU,kBACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,aACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,QAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,cAAA,GAAe4pC,CAAa,GAC3C,gBAAA5pC,EAAA,cAAC,OAAA,EAAI,WAAU,0BAAA,GAA2B2kC,CAA6B,CACzE,CACF,CACF,GAGDkF,EAAoB,SAAS,KAAK,CAAClF,KAClC,gBAAA3kC,EAAA,cAAAA,EAAA,UAAA,MACE,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,UAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,WACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAe4pC,CAAa,GAC3C,gBAAA5pC,EAAA,cAAC,OAAA,EAAI,WAAU,cAAa,MAAK,QAAO,cAAYqkC,KACjDwF,EAAoB,IAAI,CAAC9B,GAAGzgC,MAAU;AACrC,UAAM5I,IAAM,GAAGmG,CAAW,SAASyC,CAAK;AACxC,WACE,gBAAAtH,EAAA,cAAC,OAAA,EAAI,KAAAtB,GAAU,MAAK,cAClB,gBAAAsB,EAAA,cAACmhC,IAAA,EAAkB,GAAG4G,EAAE,OAAO,SAAQ,UAAA,CAAU,CACnD;AAAA,EAEJ,CAAC,CACH,CACF,CACF,CACF,GAEC+B,EAA2B,SAAS,KACnC,gBAAA9pC,EAAA,cAAC,SAAI,WAAU,oBAAA,mCACZ,OAAA,EAAI,WAAU,aACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,mDACZ,OAAA,EAAI,WAAU,uBAAsB,mCACpC,OAAA,EAAI,WAAU,sBAAqB,MAAK,QAAO,cAAYskC,KACzDwF,EAA2B,IAAI,CAAC/B,GAAGzgC,MAAU;AAC5C,UAAM5I,IAAM,GAAGmG,CAAW,SAASyC,CAAK;AACxC,WACE,gBAAAtH,EAAA,cAAC,OAAA,EAAI,KAAAtB,GAAU,MAAK,cAClB,gBAAAsB,EAAA,cAACmhC,IAAA,EAAkB,GAAG4G,EAAE,OAAO,SAAQ,UAAA,CAAU,CACnD;AAAA,EAEJ,CAAC,CACH,CACF,CACF,CACF,CAEJ,CAEJ;AAEJ,GCjFagC,KAAoD,CAAC,EAAE,gBAAAC,QAAqB;AACvF,QAAMnlC,IAAcC,GAAA,GAEd0gC,IAAatjC,EAAyB,IAAI,GAE1CmjC,IAAoBvQ,GAAA,GAEpB+T,IAAOxD,EAAkB,mBAAA,GAEzB,CAAC4E,GAAgBC,CAAiB,IAAI9nC,EAAS,CAAC;AAEtD,EAAAC,EAAU,MAAM;AACd,IAAA2nC,EAAeC,CAAc;AAAA,EAC/B,GAAG,CAACA,CAAc,CAAC;AAEnB,QAAM,CAACxE,GAAYC,CAAa,IAAItjC,EAAS,CAAC,GAExC2rB,IAAgB,CAACvnB,MAAoC;AACzD,UAAM,EAAE,MAAAyJ,MAASzJ;AAEjB,QAAIg/B,EAAW,SAAS;AACtB,YAAMG,IAAqB,MAAM,KAAKH,EAAW,QAAQ,iBAAiB,iBAAiB,CAAC;AAE5F,UAAII,IAAY;AAShB,UARI31B,MAAS,cACX21B,IAAYH,IAAa,IAAIA,IAAa,IAAIE,EAAmB,SAAS,IAGxE11B,MAAS,gBACX21B,IAAYH,MAAeE,EAAmB,SAAS,IAAI,IAAIF,IAAa,IAG1EG,MAAc,MAAM;AACtB,cAAMC,IAAWF,EAAmBC,CAAS;AAE7C,YAAIC,EAAS,aAAa,eAAe,MAAM;AAC7C,UAAAA,EAAS,MAAA;AAAA,aACJ;AACL,gBAAM1d,IAAS0d,EAAS,cAAc,GAAG;AACzC,UAAI1d,KACDA,EAAuB,MAAA;AAAA,QAE5B;AAEA,QAAAud,EAAcE,CAAS;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAA5lC,EAAA,cAAC,OAAA,EAAI,WAAU,SAAA,GACZqlC,EAAkB,uBACjB,gBAAArlC,EAAA,cAAC,OAAA,EAAI,IAAG,+BAA8B,WAAU,eAAA,GAC7CqlC,EAAkB,mBACrB,GAEF,gBAAArlC,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAe,mBAAgB,iCAC5C,gBAAAA,EAAA,cAAC,MAAA,EAAG,KAAKwlC,GAAY,mBAAgB,8BAAA,GAClCqD,EAAK,IAAI,CAACd,GAAGzgC,MAAU;AACtB,UAAM5I,IAAM,GAAGmG,CAAW,IAAIyC,CAAK,IAE7B6iC,IAAiB/rC,EAAW,4BAA4B,EAAE,UAAU6rC,MAAmB3iC,GAAO,GAE9Fi8B,IAAoB,MAAM;AAC9B,MAAA2G,EAAkB5iC,CAAK;AAAA,IACzB,GAEM8iC,IAAgB9iC,MAAUm+B;AAEhC,QAAIzkC,EAAoC+mC,CAAC,KAAMA,EAAmB,SAAS9P;AACzE,aACE,gBAAAj4B,EAAA,cAAC,QAAG,KAAAtB,EAAA,GACF,gBAAAsB,EAAA;AAAA,QAACqL;AAAA,QAAA;AAAA,UACC,kBAAgB++B;AAAA,UAChB,WAAS;AAAA,UACT,YAAW;AAAA,UACX,SAAQ;AAAA,UACR,iBAAc;AAAA,UACd,WAAWD;AAAA,UACX,SAAS5G;AAAA,UACT,WAAWxV;AAAA,UACX,UAAU0X,MAAen+B,IAAQ,IAAI;AAAA,QAAA;AAAA,QAEpCygC,EAAE,MAAM;AAAA,MAAA,CAEb;AAIJ,QAAI/mC,EAAoC+mC,CAAC,KAAMA,EAAmB,SAAS/P;AACzE,aACE,gBAAAh4B,EAAA,cAAC,QAAG,KAAAtB,EAAA,GACF,gBAAAsB,EAAA;AAAA,QAACmhC;AAAA,QAAA;AAAA,UACE,GAAG4G,EAAE;AAAA,UACN,iBAAc;AAAA,UACd,WAAWoC;AAAA,UACX,kBAAgBC;AAAA,UAChB,WAAWrc;AAAA,UACX,UAAU0X,MAAen+B,IAAQ,IAAI;AAAA,QAAA;AAAA,MAAA,CAEzC;AAAA,EAGN,CAAC,CACH,CACF,CACF;AAEJ,GC7Ga+iC,KAAiD,MAAM;AAClE,QAAMhF,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpBwI,IAAOxD,EAAkB,mBAAA,GAEzB,CAACsB,GAAa2D,CAAc,IAAIloC,EAAS,CAAC,GAE1CmoC,IAAqB,CAACC,MAAqB;AAC/C,IAAAF,EAAeE,CAAQ;AAAA,EACzB,GAEMliC,IAAc,MAAM;AACxB,UAAM3H,IAAMk+B,EAAkB,WAAW,IAAI,OAAO;AAEpD,IAAIl+B,KAAA,QAAAA,EAAK,WACNA,EAAI,QAA6B,MAAA;AAAA,EAEtC,GAEM8pC,IAAkCrsC,EAAW,2BAA2B,EAAE,aAAainC,EAAkB,UAAU;AAEzH,yCACG,OAAA,EAAI,WAAWoF,EAAA,GACd,gBAAAzqC,EAAA,cAAC,SAAI,WAAU,OAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACb,gBAAAA,EAAA,cAAC,SAAI,WAAU,UAAA,mCACZ+pC,IAAA,EAAoB,gBAAgBQ,EAAA,CAAoB,CAC3D,CACF,CACF,mCACC,OAAA,EAAI,WAAU,UACb,gBAAAvqC,EAAA,cAAC,OAAA,EAAI,WAAU,kDACZ,OAAA,EAAI,WAAU,aACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,YAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,WAAU;AAAA,MACV,SAAO;AAAA,MACP,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,SAAQ;AAAA,MACR,YAAW;AAAA,MACX,UAAUg6B,EAAkB;AAAA,MAC5B,SAAS/8B;AAAA,IAAA;AAAA,IAER+8B,EAAkB,mBAAA;AAAA,EAAmB,CAE1C,CACF,CACF,GACA,gBAAArlC,EAAA,cAAC,SAAI,WAAU,mBAAA,GACb,gBAAAA,EAAA,cAAC2pC,IAAA,EAAqB,MAAMd,EAAKlC,CAAW,EAAA,CAAG,CACjD,CACF,CACF;AAEJ,GC/Da+D,KAA8B,MAAM;AAC/C,QAAMrF,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GAEpB1/B,IAAM6G,GAAA;AAEZ,EAAAq3B,EAAkB,WAAW,IAAIF,GAAa,OAAOh+B,CAAG;AAExD,QAAMmoC,IAAqBzD,EAAkB,cAAA,GACvCW,IAAeX,EAAkB,gBAAA;AAEvC,yCACG,OAAA,EAAI,WAAU,4BAA2B,mBAAiByD,KAAA,gBAAAA,EAAoB,OAAQ,GAAI9C,IAAe,EAAE,IAAIA,MAAiB,MAC/H,gBAAAhmC,EAAA,cAAC,MAAA,sCACE,MAAA,MACC,gBAAAA,EAAA;AAAA,IAACipC;AAAA,IAAA;AAAA,MACC,KAAAtoC;AAAA,MACA,WAAW0kC,EAAkB,kBAAA;AAAA,MAC7B,gBAAgBA,EAAkB,kBAAA;AAAA,MAClC,YAAYA,EAAkB,mBAAA;AAAA,IAAmB;AAAA,oCAEhDgF,IAAA,IAA8B;AAAA,EAAA,CAEnC,CACF,CACF;AAEJ,GCvBaM,KAA4B,MAAM;AAC7C,QAAMtF,IAAoBvQ,GAAA,GAEpB,EAAE,OAAAzvB,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAO,GAAU,UAAAC,EAAA,IAAaH,GAAA,GAEzB2kC,IAAYljC,KAAStB,GACrB4e,IAAWtd,KAASvB,KAAYuB,IAAQtB,GAExC6mC,IAA0BxsC,EAAW,gBAAgB,GAErDysC,IAAaxF,EAAkB,cAAA,GAE/ByF,IAAqB;AAAA,IACzB,MAAQ;AAAA,IACR,IAAM;AAAA,IACN,mBAAmBD,KAAA,gBAAAA,EAAY;AAAA,EAAA;AAGjC,SACE,gBAAA7qC,EAAA,cAAC,SAAI,WAAW4qC,GAA0B,GAAIrC,IAAYuC,IAAqB,CAAA,EAAC,GAC7EvC,KAAalD,EAAkB,qBAAqB,gBAAArlC,EAAA,cAACmmC,IAAA,IAAsB,GAE5E,gBAAAnmC,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GACb,gBAAAA,EAAA,cAACwoC,IAAA,IAAa,GACbD,KAAalD,EAAkB,yBAAyB,uDAEpDA,EAAkB,qBAAA,IAAyBA,EAAkB,sBAAsB,gBAAArlC,EAAA,cAAC0qC,IAAA,IAAwB,GAC5GrF,EAAkB,0BAA0BA,EAAkB,sBAAsB,gBAAArlC,EAAA,cAAC4oC,IAAA,IAAuB,CAC/G,CAEJ,GAECjmB,KAAY,gBAAA3iB,EAAA,cAACmmC,IAAA,IAAsB,CACtC;AAEJ,GCpCa4E,KAAqB,MAAM;AACtC,QAAM1F,IAAoBvQ,GAAA,GACpB+J,IAAoBwB,GAAA,GACpB5B,IAAmB4G,EAAkB,iBAAA,GAErCtiC,IAAWb,EAAuB,IAAI,GACtC8oC,IAAsB9oC,EAAuB,IAAI,GACjD+oC,IAAyB/oC,EAAuB,IAAI;AAE1D,EAAA28B,EAAkB,WAAW,IAAIF,GAAa,QAAQ57B,CAAqC,GAC3F87B,EAAkB,WAAW,IAAIF,GAAa,kBAAkBqM,CAAgD,GAChHnM,EAAkB,WAAW,IAAIF,GAAa,qBAAqBsM,CAAmD;AAEtH,QAAMC,IAAmB9sC,EAAW,cAAc,GAE5C+sC,IAAyB/sC,EAAW,kBAAkB;AAAA,IAC1D,iCAAiC,CAACinC,EAAkB;AAAA,IACpD,iCAAiCA,EAAkB;AAAA,EAAA,CACpD,GAEK+F,IAA4BhtC,EAAW,qBAAqB;AAAA,IAChE,YAAY,CAACinC,EAAkB;AAAA,IAC/B,iCAAiCA,EAAkB;AAAA,EAAA,CACpD;AAED,yCACG,OAAA,EAAI,WAAW6F,GAAkB,KAAKnoC,KACrC,gBAAA/C,EAAA,cAAC,OAAA,EAAI,WAAWmrC,EAAA,mCACb9C,IAAA,IAAmB,GACpB,gBAAAroC,EAAA,cAAC,OAAA,EAAI,KAAKgrC,GAAqB,WAAU,qBAAA,CAAqB,CAChE,GAECvM,KACC,gBAAAz+B,EAAA,cAAC,OAAA,EAAI,WAAWorC,KACd,gBAAAprC,EAAA,cAAC2qC,IAAA,IAAsB,GACvB,gBAAA3qC,EAAA,cAAC,SAAI,KAAKirC,GAAwB,WAAU,wBAAA,CAAwB,CACtE,CAEJ;AAEJ,GC/CaI,KAA+C,CAAC,EAAE,UAAAxqC,QACtD,gBAAAb,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GAAuBa,CAAS,GCOlDyqC,KAAiD,CAAC,EAAE,UAAAzqC,QAAe;AACvE,QAAM+tB,IAAY1sB,EAAsB,IAAI,GAEtC,CAACqpC,GAAgBC,CAAiB,IAAIppC,EAAA,GAEtC,CAACqpC,GAAeC,CAAgB,IAAItpC,EAAmC;AAAA,IAC3E,kBAAkB;AAAA,IAClB,WAAW;AAAA,EAAA,CACgB,GAEvBiU,IAAOzM;AAAA,IACX,CAAC+hC,GAAkCC,MAAsC;;AACvE,MAAAJ,EAAkBG,CAAqB,GACvCD,EAAiBE,CAAO,IACxB/rC,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,IACrB;AAAA,IACA,CAAC2rC,GAAmBE,CAAgB;AAAA,EAAA,GAGhC/9B,IAAO/D,GAAY,MAAY;;AACnC,KAAA/J,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,EACrB,GAAG,CAAA,CAAE,GAECgsC,IAAe,MAAM;;AACzB,KAAAhsC,IAAA4rC,EAAc,WAAd,QAAA5rC,EAAA,KAAA4rC;AAAA,EACF,GAEMK,IAAe,MAAM;;AACzB,KAAAjsC,IAAA4rC,EAAc,WAAd,QAAA5rC,EAAA,KAAA4rC;AAAA,EACF,GAEMM,IAAe9kC;AAAA,IACnB,MAAA;;AACG;AAAA,QACC,SAAS2nB,EAAU;AAAA,QACnB,YAAY,CAAC,GAAC/uB,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,QACjC,MAAAwW;AAAA,QACA,MAAA1I;AAAA,MAAA;AAAA;AAAA,IAEJ,CAAC0I,GAAM1I,CAAI;AAAA,EAAA;AAGb,SACE,gBAAA3N,EAAA,cAAC+oC,IAAA,EAAmB,OAAOgD,EAAA,GACzB,gBAAA/rC,EAAA;AAAA,IAACqtB;AAAA,IAAA;AAAA,MACC,KAAKuB;AAAA,MACL,YAAU;AAAA,MACV,wBAAwB;AAAA,MACxB,iBAAiB;AAAA,MACjB,cAAY6c,EAAc;AAAA,MAC1B,QAAQI;AAAA,MACR,QAAQC;AAAA,IAAA;AAAA,IAER,gBAAA9rC,EAAA,cAACqrC,UAAmBE,CAAe;AAAA,EAAA,GAEpC1qC,CACH;AAEJ,GCLMmrC,KAA0B,CAAC,EAAE,KAAArrC,IAAM,MAAM,GAAGhB,QAAY;AAC5D,QAAMssC,IAAuBhQ,GAAwB,EAAE,KAAAt7B,GAAK,GAAGhB,GAAO,GAChEusC,IAAuBtL,GAAA;AAE7B,EAAAhC,GAA4Bj+B,GAAKurC,CAAoB;AAErD,QAAMC,IAAcjqC,EAAO,CAAC;AAE5B,SAAAG,EAAU,MAAM;AACd,UAAM+pC,IAAe,MAAM;AACzB,MAAID,EAAY,YAAY,OAAO,eACjCD,EAAqB,iBAAA,GACrBC,EAAY,UAAU,OAAO;AAAA,IAEjC;AAEA,kBAAO,iBAAiB,UAAUC,CAAY,GAE9C,WAAW,MAAM;AACf,MAAAD,EAAY,UAAU,OAAO;AAAA,IAC/B,GAAG,EAAE,GAEE,MAAM;AACX,aAAO,oBAAoB,UAAUC,CAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAA,CAAE,mCAGFvX,IAAA,EAAkB,OAAOoX,EAAA,GACxB,gBAAAjsC,EAAA,cAACogC,MAAkB,OAAO8L,EAAA,GACxB,gBAAAlsC,EAAA,cAACsrC,IAAA,sCACEP,IAAA,IAAe,mCACfhJ,IAAA,IAA4B,CAC/B,CACF,CACF;AAEJ,GC5DasK,KAAyBj/B,GAAsD,MAAS,GC1CxFk/B,KAAY,CAACC,GAAaC,MAC9BD,EAAM,YAAA,MAAkBC,EAAM,YAAA,KAAiBD,EAAM,SAAA,MAAeC,EAAM,cAAcD,EAAM,QAAA,MAAcC,EAAM,QAAA;ACCpH,IAAWC,uBAAAA,OAChBA,EAAA,UAAU,WACVA,EAAA,WAAW,YAFKA,IAAAA,MAAA,CAAA,CAAA;AAWX,MAAMC,KAAyB,CAAC;AAAA,EACrC,cAAAC,wBAAmB,KAAA;AAAA,EACnB,eAAAC;AAAA,EACA,WAAAC,IAAY;AAAA;AACd,MAA0C;AACxC,QAAMC,IAAgBH,GAChBI,IAAyBH,EAAc,IAAI,CAACrqC,MAAO,OAAOA,KAAM,WAAW,IAAI,KAAK,OAAOA,CAAC,CAAC,IAAIA,CAAE,GACnGyqC,IAAiBH,MAAc,aAAqB,KAAK;AAE/D,SAAOE,EAAuB,KAAK,CAACxqC,MAAM+pC,GAAUQ,GAAevqC,CAAC,CAAC;AACnE,IAAAuqC,EAAc,QAAQA,EAAc,QAAA,IAAYE,CAAc;AAGhE,SAAOF;AACT,GC3BaG,KAAuB,CAACzpB,GAAqB0pB,MAAsC;AAC9F,QAAMC,IAAa,IAAI,KAAK,OAAO3pB,KAAS,WAAW,IAAI,KAAKA,CAAI,IAAIA,CAAI,GACtE4pB,IAAkB,IAAI,KAAK,OAAOF,KAAc,WAAW,IAAI,KAAKA,CAAS,IAAIA,CAAS;AAEhG,SAAAC,EAAW,SAAS,GAAG,GAAG,GAAG,CAAC,GAC9BC,EAAgB,SAAS,GAAG,GAAG,GAAG,CAAC,GAE5BD,IAAaC;AACtB,GAEaC,KAAoB,CAAC7pB,GAAqB8pB,MAAoC;AACzF,QAAMH,IAAa,IAAI,KAAK,OAAO3pB,KAAS,WAAW,IAAI,KAAKA,CAAI,IAAIA,CAAI,GACtE+pB,IAAgB,IAAI,KAAK,OAAOD,KAAY,WAAW,IAAI,KAAKA,CAAO,IAAIA,CAAO;AAExF,SAAAH,EAAW,SAAS,GAAG,GAAG,GAAG,CAAC,GAC9BI,EAAc,SAAS,GAAG,GAAG,GAAG,CAAC,GAE1BJ,IAAaI;AACtB,GAGaC,KAA4B,CAAChqB,GAAqB0pB,MAAsC;AACnG,QAAMC,IAAa,IAAI,KAAK,OAAO3pB,KAAS,WAAW,IAAI,KAAKA,CAAI,IAAIA,CAAI,GACtE4pB,IAAkB,IAAI,KAAK,OAAOF,KAAc,WAAW,IAAI,KAAKA,CAAS,IAAIA,CAAS;AAEhG,SAAAC,EAAW,SAAS,GAAG,GAAG,GAAG,CAAC,GAC9BC,EAAgB,SAAS,GAAG,GAAG,GAAG,CAAC,IAEZD,EAAW,YAAA,IAAgBC,EAAgB,YAAA,KACzB,KAAKD,EAAW,SAAA,IAAaC,EAAgB,SAAA,KAE5D;AAC5B,GAGaK,KAA0B,CAACjqB,GAAqB8pB,MAAoC;AAC/F,QAAMH,IAAa,IAAI,KAAK,OAAO3pB,KAAS,WAAW,IAAI,KAAKA,CAAI,IAAIA,CAAI,GACtE+pB,IAAgB,IAAI,KAAK,OAAOD,KAAY,WAAW,IAAI,KAAKA,CAAO,IAAIA,CAAO;AAExF,SAAAH,EAAW,SAAS,GAAG,GAAG,GAAG,CAAC,GAC9BI,EAAc,SAAS,GAAG,GAAG,GAAG,CAAC,IAEVA,EAAc,YAAA,IAAgBJ,EAAW,YAAA,KACvB,KAAKI,EAAc,SAAA,IAAaJ,EAAW,SAAA,KAE1D;AAC5B,GAGaO,KAA2B,CAAClqB,GAAqB0pB,MAAsC;AAClG,QAAMC,IAAa,IAAI,KAAK,OAAO3pB,KAAS,WAAW,IAAI,KAAKA,CAAI,IAAIA,CAAI,GACtE4pB,IAAkB,IAAI,KAAK,OAAOF,KAAc,WAAW,IAAI,KAAKA,CAAS,IAAIA,CAAS;AAEhG,SAAAC,EAAW,SAAS,GAAG,GAAG,GAAG,CAAC,GAC9BC,EAAgB,SAAS,GAAG,GAAG,GAAG,CAAC,GAEZD,EAAW,YAAA,IAAgBC,EAAgB,YAAA,KAEzC;AAC3B,GAGaO,KAAyB,CAACnqB,GAAqB8pB,MAAoC;AAC9F,QAAMH,IAAa,IAAI,KAAK,OAAO3pB,KAAS,WAAW,IAAI,KAAKA,CAAI,IAAIA,CAAI,GACtE+pB,IAAgB,IAAI,KAAK,OAAOD,KAAY,WAAW,IAAI,KAAKA,CAAO,IAAIA,CAAO;AAExF,SAAAH,EAAW,SAAS,GAAG,GAAG,GAAG,CAAC,GAC9BI,EAAc,SAAS,GAAG,GAAG,GAAG,CAAC,GAEVA,EAAc,YAAA,IAAgBJ,EAAW,YAAA,KAEvC;AAC3B,GCjEMS,KAAiB;AAAA,EACrB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP,GAEMC,KAAoB;AAAA,EACxB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP,GAEMC,KAA4B,MAAM;AACtC,QAAMC,IAAMzgC,GAAW++B,EAAsB;AAE7C,MAAI,CAAC0B;AACH,UAAM,IAAI,MAAM,yCAAyC;AAG3D,QAAMC,IAASD,EAAI,OAAO,gBAAgBH,IAEpCK,IAAWF,EAAI,OAAO,kBAAkBF,IAExCK,wBAAgB,IAAA;AACtB,SAAO,OAAOF,CAAM,EAAE,QAAQ,CAAC/vC,GAAeqJ,MAAU;AACtD,IAAA4mC,EAAU,IAAI5mC,GAAOrJ,CAAK;AAAA,EAC5B,CAAC;AAED,QAAMkwC,IAAkB,MACf,OAAO,OAAOF,CAAQ,EAAE,IAAI,CAACG,MAAeA,EAAG,UAAU,GAAG,CAAC,CAAC,GAGjEC,IAAepnC,GAAQ,MACpBinC,EAAU,IAAIH,EAAI,YAAY,UAAU,GAC9C,CAACA,EAAI,WAAW,CAAC,GAEdO,IAAcrnC,GAAQ,MACnB8mC,EAAI,YAAY,YAAA,GACtB,CAACA,EAAI,WAAW,CAAC,GAEdQ,IAAkB,CAAC,EAAE,cAAAC,IAAe,GAAG,WAAA3B,IAAYJ,GAAU,cAAoB;AACrF,UAAMgC,IAAc,IAAI,KAAKV,EAAI,YAAY,SAAS,GAChDW,IAAUD,GACVzB,IAAiBH,MAAcJ,GAAU,WAAW,CAAC+B,IAAeA;AAE1E,IAAAE,EAAQ,QAAQA,EAAQ,QAAA,IAAY1B,CAAc;AAElD,UAAM2B,IAAoBZ,EAAI,YAAYd,GAAqByB,GAASX,EAAI,SAAS,IAAI,IACnFa,IAAiBb,EAAI,UAAUV,GAAkBqB,GAASX,EAAI,OAAO,IAAI;AAE/E,QAAI,CAACY,KAAqB,CAACC,GAAgB;AACzC,YAAMC,IAAsBnC,GAAuB;AAAA,QACjD,cAAc+B;AAAA,QACd,eAAeV,EAAI;AAAA,QACnB,WAAAlB;AAAA,MAAA,CACD;AAED,MAAAkB,EAAI,eAAe,IAAI,KAAKc,CAAmB,CAAC;AAAA,IAClD;AAAA,EACF,GAEMC,IAAoB,CAAC,EAAE,gBAAAC,IAAiB,GAAG,WAAAlC,IAAYJ,GAAU,cAAoB;AACzF,UAAMgC,IAAc,IAAI,KAAKV,EAAI,YAAY,SAAS,GAChDW,IAAUD,GACVzB,IAAiBH,MAAcJ,GAAU,WAAW,CAACsC,IAAiBA;AAE5E,IAAAL,EAAQ,SAASA,EAAQ,SAAA,IAAa1B,CAAc;AAEpD,UAAMI,IAAkB,OAAOW,EAAI,aAAc,WAAW,IAAI,KAAKA,EAAI,SAAS,IAAIA,EAAI,WACpFR,IAAgB,OAAOQ,EAAI,WAAY,WAAW,IAAI,KAAKA,EAAI,OAAO,IAAIA,EAAI;AAEpF,QAAIX,KAAmBsB,IAAUtB,GAAiB;AAChD,MAAAW,EAAI,eAAe,IAAI,KAAKX,CAAe,CAAC;AAC5C;AAAA,IACF;AAEA,QAAIG,KAAiBmB,IAAUnB,GAAe;AAC5C,MAAAQ,EAAI,eAAe,IAAI,KAAKR,CAAa,CAAC;AAC1C;AAAA,IACF;AAEA,UAAMoB,IAAoBvB,IAAkBH,GAAqByB,GAAStB,CAAe,IAAI,IACvFwB,IAAiBrB,IAAgBF,GAAkBqB,GAASnB,CAAa,IAAI;AAEnF,QAAI,CAACoB,KAAqB,CAACC,GAAgB;AACzC,YAAMC,IAAsBnC,GAAuB;AAAA,QACjD,cAAc+B;AAAA,QACd,eAAeV,EAAI;AAAA,QACnB,WAAAlB;AAAA,MAAA,CACD;AAED,MAAAkB,EAAI,eAAe,IAAI,KAAKc,CAAmB,CAAC;AAAA,IAClD;AAAA,EACF,GAEMG,IAAmB,CAAC,EAAE,eAAAC,IAAgB,GAAG,WAAApC,IAAYJ,GAAU,cAAoB;AACvF,UAAMgC,IAAc,IAAI,KAAKV,EAAI,YAAY,SAAS,GAChDW,IAAUD,GACVzB,IAAiBH,MAAcJ,GAAU,WAAW,CAACwC,IAAgBA;AAE3E,IAAAP,EAAQ,YAAYA,EAAQ,YAAA,IAAgB1B,CAAc;AAE1D,UAAMI,IAAkB,OAAOW,EAAI,aAAc,WAAW,IAAI,KAAKA,EAAI,SAAS,IAAIA,EAAI,WACpFR,IAAgB,OAAOQ,EAAI,WAAY,WAAW,IAAI,KAAKA,EAAI,OAAO,IAAIA,EAAI;AAEpF,QAAIX,KAAmBsB,IAAUtB,GAAiB;AAChD,MAAAW,EAAI,eAAe,IAAI,KAAKX,CAAe,CAAC;AAC5C;AAAA,IACF;AAEA,QAAIG,KAAiBmB,IAAUnB,GAAe;AAC5C,MAAAQ,EAAI,eAAe,IAAI,KAAKR,CAAa,CAAC;AAC1C;AAAA,IACF;AAEA,UAAMoB,IAAoBvB,IAAkBH,GAAqByB,GAAStB,CAAe,IAAI,IACvFwB,IAAiBrB,IAAgBF,GAAkBqB,GAASnB,CAAa,IAAI;AAEnF,QAAI,CAACoB,KAAqB,CAACC,GAAgB;AACzC,YAAMC,IAAsBnC,GAAuB;AAAA,QACjD,cAAc+B;AAAA,QACd,eAAeV,EAAI;AAAA,QACnB,WAAAlB;AAAA,MAAA,CACD;AAED,MAAAkB,EAAI,eAAe,IAAI,KAAKc,CAAmB,CAAC;AAAA,IAClD;AAAA,EACF;AAgEA,SAAO;AAAA,IACL,GAAGd;AAAA,IACH,WANgB,MACTA,EAAI;AAAA,IAOX,iBAAAI;AAAA,IAEA,cAAAE;AAAA,IACA,aAAAC;AAAA,IAEA,oBA3DyB,MAAMU,EAAiB,EAAE,eAAe,GAAG,WAAWvC,GAAU,UAAU;AAAA,IA4DnG,qBA7D0B,MAAMqC,EAAkB,EAAE,gBAAgB,GAAG,WAAWrC,GAAU,UAAU;AAAA,IA8DtG,iBAnEsB,MAAMqC,EAAkB,EAAE,gBAAgB,GAAG,WAAWrC,GAAU,SAAS;AAAA,IAoEjG,gBAnEqB,MAAMuC,EAAiB,EAAE,eAAe,GAAG,WAAWvC,GAAU,SAAS;AAAA,IAqE9F,eAxEoB,MAAM8B,EAAgB,EAAE,cAAc,GAAG,WAAW9B,GAAU,SAAS;AAAA,IAyE3F,gBAxEqB,MAAM8B,EAAgB,EAAE,cAAc,GAAG,WAAW9B,GAAU,SAAS;AAAA,IAyE5F,mBArEwB,MAAM8B,EAAgB,EAAE,cAAc,GAAG,WAAW9B,GAAU,UAAU;AAAA,IAsEhG,oBArEyB,MAAM8B,EAAgB,EAAE,cAAc,GAAG,WAAW9B,GAAU,UAAU;AAAA,IAsEjG,sBAlE2B,MAAY;AACvC,YAAMgC,IAAc,IAAI,KAAKV,EAAI,YAAY,SAAS,GAChDW,IAAUD;AAEhB,MAAAC,EAAQ,QAAQA,EAAQ,QAAA,IAAYA,EAAQ,QAAQ;AAEpD,YAAMC,IAAoBZ,EAAI,YAAYd,GAAqByB,GAASX,EAAI,SAAS,IAAI,IACnFa,IAAiBb,EAAI,UAAUV,GAAkBqB,GAASX,EAAI,OAAO,IAAI;AAE/E,UAAI,CAACY,KAAqB,CAACC,GAAgB;AACzC,cAAMC,IAAsBnC,GAAuB;AAAA,UACjD,cAAc+B;AAAA,UACd,eAAeV,EAAI;AAAA,UACnB,WAAWtB,GAAU;AAAA,QAAA,CACtB;AAED,QAAAsB,EAAI,eAAe,IAAI,KAAKc,CAAmB,CAAC;AAAA,MAClD;AAAA,IACF;AAAA,IAiDE,qBA/C0B,MAAY;AACtC,YAAMJ,IAAc,IAAI,KAAKV,EAAI,YAAY,SAAS,GAChDW,IAAUD;AAEhB,MAAAC,EAAQ,QAAQA,EAAQ,QAAA,KAAa,IAAIA,EAAQ,SAAS;AAE1D,YAAMC,IAAoBZ,EAAI,YAAYd,GAAqByB,GAASX,EAAI,SAAS,IAAI,IACnFa,IAAiBb,EAAI,UAAUV,GAAkBqB,GAASX,EAAI,OAAO,IAAI;AAE/E,UAAI,CAACY,KAAqB,CAACC,GAAgB;AACzC,cAAMC,IAAsBnC,GAAuB;AAAA,UACjD,cAAc+B;AAAA,UACd,eAAeV,EAAI;AAAA,UACnB,WAAWtB,GAAU;AAAA,QAAA,CACtB;AAED,QAAAsB,EAAI,eAAe,IAAI,KAAKc,CAAmB,CAAC;AAAA,MAClD;AAAA,IACF;AAAA,IA8BE,mBA5BwB,MAAY;AACpC,MAAAd,EAAI,gBAAgBA,EAAI,WAAW;AAAA,IACrC;AAAA,IA4BE,YApFiB,MAAY;AAC7B,MAAAA,EAAI,eAAe,oBAAI,MAAM;AAAA,IAC/B;AAAA,EAkFE;AAEJ,GC3OamB,KAA0B,CAAC3C,GAAaC,MAC5CD,EAAM,SAAA,MAAeC,EAAM,cAAcD,EAAM,YAAA,MAAkBC,EAAM,YAAA,GCCnE2C,KAAe,CAAC3rB,GAAY4rB,MAChCA,EAAW,KAAK,CAAC7sC,MAAM;AAC5B,MAAI8sC;AAEJ,SAAI,OAAO9sC,KAAM,WACY,QAAQ,KAAKA,CAAC,IAEvC8sC,IAAgB,IAAI,KAAK,OAAO9sC,CAAC,CAAC,IAElC8sC,IAAgB,IAAI,KAAK9sC,CAAC,IAG5B8sC,IAAgB9sC,GAGX+pC,GAAU9oB,GAAM6rB,CAAa;AACtC,CAAC,GChBUC,KAAiB,CAACp8B,MAA0C;AACvE,MAAKA,KAID,0BAA0B,KAAKA,CAAG,GAAG;AACvC,UAAMq8B,IAAQr8B,EAAI,MAAM,GAAG;AAC3B,QAAIq8B,GAAO;AACT,YAAMC,IAAM,CAACD,EAAM,CAAC,GACdE,IAAQ,CAACF,EAAM,CAAC,GAChBG,IAAO,CAACH,EAAM,CAAC,GACfpC,IAAa,IAAI,KAAKuC,GAAMD,IAAQ,GAAGD,CAAG;AAEhD,aADyBltC,GAAc6qC,CAAU,MACrBj6B,IAAMi6B,IAAa;AAAA,IACjD;AAAA,EACF;AAGF,GCVawC,KAAiB,MAAM;AAClC,QAAM5B,IAAMD,GAAA,GAENntC,IAAMuB,EAAO,IAAI,GAEjB,CAAC0tC,GAAkBC,CAAmB,IAAIztC,EAAS,EAAK,GAExD0tC,IAAsB,CAACzuC,MAA0C;AACrE,UAAM0uC,IAAa1uC,EAAO,aAAa,WAAW;AAClD,WAAOiuC,GAAeS,CAAU;AAAA,EAClC,GAEMC,IAA2B,CAACC,MAAiC;AACjE,QAAIA,KAAcf,GAAwBnB,EAAI,aAAakC,CAAU,KAAK,CAACd,GAAac,GAAYlC,EAAI,aAAa,GAAG;AACtH,YAAMmC,IAAmB,IAAI,KAAKD,CAAU;AAC5C,MAAAlC,EAAI,eAAemC,CAAgB,GACnCnC,EAAI,gBAAgBmC,CAAgB;AAAA,IACtC;AAAA,EACF,GAEM5pC,IAAiB,CAACE,MAA0C;AAChE,UAAM2pC,IAAuBL,EAAoBtpC,EAAI,MAAqB,GAEpEmoC,IAAoBZ,EAAI,aAAaoC,IAAuBlD,GAAqBkD,GAAsBpC,EAAI,SAAS,IAAI,IACxHa,IAAiBb,EAAI,WAAWoC,IAAuB9C,GAAkB8C,GAAsBpC,EAAI,OAAO,IAAI;AAEpH,IAAI,CAACY,KAAqB,CAACC,KACzBoB,EAAyBG,CAAoB;AAAA,EAEjD,GAEMC,IAAmB,CAAC5pC,MAA6C;AACrE,UAAM,EAAE,UAAA6pC,MAAa7pC,GACf,EAAE,QAAAnF,MAAWmF,GACb,EAAE,MAAAyJ,MAASzJ;AAEjB,QAAIyJ,MAAS;AAMb,cAFAzJ,EAAI,eAAA,GAEIA,EAAI,MAAA;AAAA,QACV,KAAK;AACH,UAAAunC,EAAI,mBAAA;AACJ;AAAA,QACF,KAAK;AACH,UAAAA,EAAI,eAAA;AACJ;AAAA,QACF,KAAK;AACH,UAAAA,EAAI,kBAAA;AACJ;AAAA,QACF,KAAK;AACH,UAAAA,EAAI,cAAA;AACJ;AAAA,QACF,KAAK;AACH,UAAIsC,IACFtC,EAAI,mBAAA,IAEJA,EAAI,oBAAA;AAEN;AAAA,QACF,KAAK;AACH,UAAIsC,IACFtC,EAAI,eAAA,IAEJA,EAAI,gBAAA;AAEN;AAAA,QACF,KAAK;AACH,UAAAA,EAAI,qBAAA;AACJ;AAAA,QACF,KAAK;AACH,UAAAA,EAAI,oBAAA;AACJ;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAiC,EAAyBF,EAAoBzuC,CAAqB,CAAC;AACnE;AAAA,MAEA;AAAA,EAEN,GAEMivC,IAAiB,MAAM;AAC3B,IAAAT,EAAoB,EAAI;AAAA,EAC1B,GAEMU,IAAgB,MAAM;AAC1B,IAAAV,EAAoB,EAAK;AAAA,EAC3B,GAEMW,IAAW,CAACC,GAAkBC,GAAoBC,MAAsB;AAC5E,IAAAF,EAAW,QAAQA,EAAW,QAAA,IAAY,CAAC;AAE3C,UAAMG,IAAmBH,EAAW,SAAA,MAAe1C,EAAI,YAAY,SAAA,GAC7D8C,IAAgBvE,GAAUmE,GAAY1C,EAAI,WAAW,GACrD+C,IAAiBxE,GAAUmE,GAAY1C,EAAI,YAAY,GACvDY,IAAoBZ,EAAI,YAAYd,GAAqBwD,GAAY1C,EAAI,SAAS,IAAI,IACtFa,IAAiBb,EAAI,UAAUV,GAAkBoD,GAAY1C,EAAI,OAAO,IAAI,IAC5EgD,IAAiB5B,GAAasB,GAAY1C,EAAI,aAAa,KAAKY,KAAqBC,GACrFoC,IAAU1E,GAAUmE,GAAY,oBAAI,MAAM,GAE1CQ,IAAa3uC,GAAcmuC,CAAU,GAErCS,IAAe9yC;AAAA,MACnB;AAAA;AAAA,MAEA;AAAA,QACE,mCAAmC,CAAC4yC,KAAW,CAACD;AAAA,MAAA;AAAA;AAAA,MAGlD;AAAA,QACE,sBAAsB,CAACD,KAAkB,CAACD;AAAA,MAAA;AAAA;AAAA,MAG5C;AAAA,QACE,6LACED,KAAoB,CAACG;AAAA,MAAA;AAAA;AAAA,MAGzB;AAAA,QACE,6DAA6DA;AAAA,MAAA;AAAA;AAAA,MAG/D;AAAA,QACE,+CAA+CC,KAAW,CAACF,KAAkB,CAACC;AAAA,MAAA;AAAA;AAAA,MAGhF;AAAA,QACE,4CAA4CD,KAAkB,CAACC;AAAA,MAAA;AAAA;AAAA,MAGjE;AAAA,QACE,qCAAqC,CAACD,KAAkBD,KAAiB,CAACjB,KAAoBgB,KAAoB,CAACG;AAAA,MAAA;AAAA;AAAA,MAGrH;AAAA,QACE,oEAAoEnB,KAAoBiB,KAAiBD;AAAA,MAAA;AAAA,IAC3G,GAGIO,IAAa/yC,EAAW,mCAAmC,EAAE,cAAc,CAACwyC,GAAkB,GAE9FQ,IAAU,aAAaV,CAAU,IAAIC,CAAS,IAE9CU,KAAmB,MAAM;AAC7B,YAAMC,IAASvD,EAAI,UAAA;AAEnB,UAAIwD,IAAWd,EAAW,mBAAmB,QAAW,EAAE,SAAS,QAAQ,MAAM,WAAW,OAAO,QAAQ,KAAK,WAAW;AAE3H,aAAIO,KAAWM,EAAO,sBACpBC,IAAW,GAAGD,EAAO,iBAAiB,KAAKC,CAAQ,KAGjDV,KAAiBS,EAAO,wBAC1BC,IAAW,GAAGA,CAAQ,KAAKD,EAAO,mBAAmB,KAGnDR,KAAkBQ,EAAO,yBAC3BC,IAAW,GAAGA,CAAQ,KAAKD,EAAO,oBAAoB,KAGjDC;AAAA,IACT,GAAA;AAEA,WACE,gBAAAvxC,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKoxC;AAAA,QACL,WAAWF;AAAA,QACX,MAAK;AAAA,QACL,aAAWD;AAAA,QACX,cAAYI;AAAA,QACZ,iBAAeR;AAAA,QACf,iBAAeE;AAAA,QACf,UAAUH,KAAoBC,KAAiB,CAACE,IAAiB,IAAI;AAAA,QACrE,WAAWX;AAAA,QACX,SAAS9pC;AAAA,QACT,SAASgqC;AAAA,QACT,QAAQC;AAAA,MAAA;AAAA,MAER,gBAAAvwC,EAAA,cAAC,SAAI,eAAW,IAAC,WAAWmxC,EAAA,GACzBV,EAAW,SACd;AAAA,IAAA;AAAA,EAGN,GAEMe,IAAY,CAACd,MAAuB;AACxC,UAAMe,IAAkB,IAAI,KAAK1D,EAAI,YAAY,YAAA,GAAeA,EAAI,YAAY,SAAA,GAAY,CAAC,GAEvF2D,IAAYD,EAAgB,OAAA,IAAW;AAE7C,WAAAA,EAAgB,QAAQA,EAAgB,QAAA,IAAYC,CAAS,GAC7DD,EAAgB,QAAQA,EAAgB,QAAA,IAAYf,IAAa,CAAC,GAE3D,MAAM,KAAK,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAACC,MAC/BH,EAASiB,GAAiBf,GAAYC,CAAS,CACvD;AAAA,EACH,GAEMgB,IAAW1qC,GAAQ,MAChB,MAAM,KAAK,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC2qC,MAAY;AAClD,UAAMC,IAAQ,UAAUD,CAAO;AAC/B,WACE,gBAAA5xC,EAAA,cAAC,OAAA,EAAI,MAAK,OAAM,WAAU,gCAA+B,KAAK6xC,EAAA,GAC3DL,EAAUI,CAAO,CACpB;AAAA,EAEJ,CAAC,GACA,CAAC7D,EAAI,aAAaA,EAAI,cAAc6B,CAAgB,CAAC,GAElDkC,IAAW,MAAM;AACrB,QAAInxC,EAAI,SAAS;AACf,YAAMsS,IAAO,MAAM,KAAMtS,EAAI,QAAwB,iBAAiB,oBAAoB,CAAC,EAAE,MAAA;AAE7F,MAAIsS,KACDA,EAAqB,MAAA;AAAA,IAE1B;AAAA,EACF;AAGA,SAAA5Q,EAAU,MAAMyvC,EAAA,GAAY,EAAE,GAG9BzvC,EAAU,MAAM;AACd,IAAIutC,KACFkC,EAAA;AAAA,EAEJ,GAAG,CAAClC,CAAgB,CAAC,GAGrBvtC,EAAU,MAAMyvC,EAAA,GAAY,CAAC/D,EAAI,WAAW,CAAC,GAG3C,gBAAA/tC,EAAA,cAAC,SAAI,WAAU,QAAA,mCACZ,OAAA,EAAI,MAAK,QAAO,WAAU,4CACxB,OAAA,EAAI,MAAK,aAAY,WAAU,+BAAA,GAC7B+tC,EAAI,gBAAA,EAAkB,IAAI,CAACxrC,MAExB,gBAAAvC,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,KAAKuC;AAAA,MACL,WAAU;AAAA,MACV,eAAW;AAAA,IAAA;AAAA,IAEVA;AAAA,EAAA,CAGN,CACH,GACA,gBAAAvC,EAAA,cAAC,OAAA,EAAI,KAAAW,GAAU,MAAK,cACjBgxC,CACH,CACF,CACF;AAEJ,GCvQaI,KAAmB,MAAM;AACpC,QAAMhE,IAAMD,GAAA,GAENkE,wBAAgB,KAAA,GAChBpF,IAAgBmB,EAAI;AAC1B,MAAIkE,IAAkB9C,GAAa6C,GAAWpF,CAAa;AAE3D,EAAImB,EAAI,aAAad,GAAqB+E,GAAWjE,EAAI,SAAS,MAChEkE,IAAkB,KAGhBlE,EAAI,WAAWV,GAAkB2E,GAAWjE,EAAI,OAAO,MACzDkE,IAAkB;AAGpB,QAAMC,IAAc,MAAM;AACxB,UAAMC,IAAoB,IAAI,KAAKpE,EAAI,WAAW;AAClD,IAAAA,EAAI,gBAAgBoE,CAAiB,GACjCpE,EAAI,YACNA,EAAI,SAASoE,CAAiB,GAE5BpE,EAAI,UACNA,EAAI,OAAA;AAAA,EAER,GAEMuD,IAASvD,EAAI,UAAA,GAEbqE,IAAkD;AAAA,IACtD,cAAc,GAAGd,EAAO,UAAU,KAAKA,EAAO,cAAc;AAAA,EAAA;AAE9D,EAAKA,EAAO,kBACV,OAAOc,EAAqB,YAAY;AAG1C,QAAMC,IAAmD;AAAA,IACvD,cAAc,GAAGf,EAAO,WAAW,KAAKA,EAAO,eAAe;AAAA,EAAA;AAEhE,EAAKA,EAAO,mBACV,OAAOe,EAAsB,YAAY;AAG3C,QAAMC,IAA+C;AAAA,IACnD,cAAc,GAAGhB,EAAO,OAAO,KAAKA,EAAO,WAAW;AAAA,EAAA;AAExD,SAAKA,EAAO,eACV,OAAOgB,EAAkB,YAAY,GAIrC,gBAAAtyC,EAAA,cAAC,OAAA,EAAI,WAAU,oCAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,QAAA,GACb,gBAAAA,EAAA,cAACqL,IAAA,EAAO,MAAK,UAAS,YAAW,QAAO,SAAS0iC,EAAI,YAAY,UAAUkE,GAAkB,GAAGG,EAAA,GAC7Fd,EAAO,UACV,CACF,GACA,gBAAAtxC,EAAA,cAAC,OAAA,EAAI,WAAU,gCACb,gBAAAA,EAAA,cAACqL,IAAA,EAAO,MAAK,UAAS,YAAW,WAAU,SAAS0iC,EAAI,QAAS,GAAGsE,KACjEf,EAAO,WACV,mCACCjmC,IAAA,EAAO,MAAK,UAAS,YAAW,SAAQ,SAAS6mC,GAAc,GAAGI,EAAA,GAChEhB,EAAO,OACV,CACF,CACF;AAEJ,GC7DaiB,KAAmB,MAAM;AACpC,QAAMxE,IAAMD,GAAA,GAEN,CAAC0E,GAA8BC,CAA+B,IAAIrwC,EAAkB,EAAI,GACxF,CAACswC,GAA6BC,CAA8B,IAAIvwC,EAAkB,EAAI,GACtF,CAACwwC,GAA0BC,CAA2B,IAAIzwC,EAAkB,EAAI,GAChF,CAAC0wC,GAAyBC,CAA0B,IAAI3wC,EAAkB,EAAI;AAEpF,SAAAC,EAAU,MAAM;AACd,IAAAowC,EAAgC1E,EAAI,YAAYP,GAA0BO,EAAI,aAAaA,EAAI,SAAS,IAAI,EAAI,GAChH4E,EAA+B5E,EAAI,YAAYL,GAAyBK,EAAI,aAAaA,EAAI,SAAS,IAAI,EAAI,GAC9G8E,EAA4B9E,EAAI,UAAUN,GAAwBM,EAAI,aAAaA,EAAI,OAAO,IAAI,EAAI,GACtGgF,EAA2BhF,EAAI,UAAUJ,GAAuBI,EAAI,aAAaA,EAAI,OAAO,IAAI,EAAI;AAAA,EACtG,GAAG,CAACA,EAAI,aAAaA,EAAI,WAAWA,EAAI,OAAO,CAAC,GAG9C,gBAAA/tC,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAA,GACb,gBAAAA,EAAA,cAAC,QAAG,WAAU,iFAAgF,aAAU,YACrG,GAAG+tC,EAAI,YAAY,IAAIA,EAAI,WAAW,EACzC,GAEA,gBAAA/tC,EAAA,cAAC,OAAA,EAAI,WAAU,gCAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,4BAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAW;AAAA,MACX,SAAS0iC,EAAI;AAAA,MACb,cAAYA,EAAI,UAAA,EAAY;AAAA,MAC5B,UAAU,CAAC2E;AAAA,IAAA;AAAA,oCAEVtyC,IAAA,EAAK,MAAK,4BAA2B,YAAW,KAAI,eAAW,GAAA,CAAC;AAAA,EAAA,GAGnE,gBAAAJ,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAW;AAAA,MACX,SAAS0iC,EAAI;AAAA,MACb,cAAYA,EAAI,UAAA,EAAY;AAAA,MAC5B,UAAU,CAACyE;AAAA,IAAA;AAAA,oCAEVpyC,IAAA,EAAK,MAAK,2BAA0B,YAAW,KAAI,eAAW,GAAA,CAAC;AAAA,EAAA,CAEpE,GAEA,gBAAAJ,EAAA,cAAC,OAAA,EAAI,WAAU,4BAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAW;AAAA,MACX,SAAS0iC,EAAI;AAAA,MACb,cAAYA,EAAI,UAAA,EAAY;AAAA,MAC5B,UAAU,CAAC6E;AAAA,IAAA;AAAA,oCAEVxyC,IAAA,EAAK,MAAK,4BAA2B,YAAW,KAAI,eAAW,GAAA,CAAC;AAAA,EAAA,GAGnE,gBAAAJ,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAW;AAAA,MACX,SAAS0iC,EAAI;AAAA,MACb,cAAYA,EAAI,UAAA,EAAY;AAAA,MAC5B,UAAU,CAAC+E;AAAA,IAAA;AAAA,oCAEV1yC,IAAA,EAAK,MAAK,6BAA4B,YAAW,KAAI,eAAW,GAAA,CAAC;AAAA,EAAA,CAEtE,CACF,CACF;AAEJ,GCvCa4yC,KAAkD,CAAC;AAAA,EAC9D,MAAAxvB,wBAAW,KAAA;AAAA,EACX,eAAAopB,IAAgB,CAAA;AAAA,EAChB,SAAAU,IAAU;AAAA,EACV,WAAAJ,IAAY;AAAA,EACZ,YAAA+F;AAAA,EACA,cAAAC;AAAA,EACA,UAAAvuC;AAAA,EACA,UAAAwuC;AAAA,EACA,QAAA7B;AAAA,EACA,WAAA1wC;AACF,MAAM;AACJ,QAAMwyC,IAAiBjE,GAAa3rB,GAAMopB,CAAa;AACvD,MAAIyG,IAAc,IAAI,KAAKD,IAAiB1G,GAAuB,EAAE,eAAAE,EAAA,CAAe,IAAIppB,CAAI;AAE5F,EAAI0pB,KAAaD,GAAqBoG,GAAanG,CAAS,MAC1DmG,IAAc,IAAI,KAAKnG,CAAS,IAG9BI,KAAWD,GAAkBgG,GAAa/F,CAAO,MACnD+F,IAAc,IAAI,KAAK/F,CAAO;AAGhC,QAAM,CAACgG,GAAcC,CAAe,IAAInxC,EAASixC,CAAW,GACtD,CAAC5E,GAAa+E,CAAc,IAAIpxC,EAASixC,CAAW,GACpD,CAACI,GAAoBC,CAAqB,IAAItxC,EAASwqC,CAAa,GAEpE+G,IAAS,MAAM;AACnB,IAAAR,EAAA;AAAA,EACF,GAEMS,IAAc3sC,GAAQ,OACnB;AAAA,IACL,aAAAwnC;AAAA,IACA,cAAA6E;AAAA,IACA,eAAeG;AAAA,IACf,SAAAnG;AAAA,IACA,WAAAJ;AAAA,IACA,gBAAAsG;AAAA,IACA,iBAAAD;AAAA,IACA,kBAAkBG;AAAA,IAClB,YAAYT,MAAe,MAAM;AAAA,IAAC;AAAA,IAClC,cAAcC,MAAiB,MAAM;AAAA,IAAC;AAAA,IACtC,QAAAS;AAAA,IACA,UAAAhvC;AAAA,IACA,QAAA2sC;AAAA,EAAA,IAED,CAACgC,GAAc7E,GAAagF,GAAoBnG,GAASJ,GAAWoE,GAAQ3sC,GAAUsuC,GAAYC,CAAY,CAAC,GAE5GW,IAAoBz1C;AAAA,IACxBwC;AAAA,IACA;AAAA,EAAA,GAGIkzC,IAAiC5xC,EAAuB,IAAI,GAE5D6rB,IAAgBnkB,GAAY,CAACpD,MAAuB;AACxD,QAAIA,EAAI,QAAQ,UAAU;AACxB,MAAAA,EAAI,eAAA,GACJ2sC,EAAA;AACA;AAAA,IACF;AAEA,QAAI3sC,EAAI,QAAQ,SAASstC,EAA+B,SAAS;AAC/D,YAAM9lB,IAAoB8lB,EAA+B,QAAQ;AAAA,QAC/D;AAAA,MAAA,GAGI5lB,IAAeF,EAAkB,CAAC,GAClCG,IAAcH,EAAkBA,EAAkB,SAAS,CAAC;AAElE,MAAIxnB,EAAI,YAAY,SAAS,kBAAkB0nB,KAC7C1nB,EAAI,eAAA,GACJ2nB,EAAY,MAAA,KACH,CAAC3nB,EAAI,YAAY,SAAS,kBAAkB2nB,MACrD3nB,EAAI,eAAA,GACJ0nB,EAAa,MAAA;AAAA,IAEjB;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,SAAA7rB,EAAU,OACR,6BAAU,iBAAiB,WAAW0rB,IAE/B,MAAM;AACX,iCAAU,oBAAoB,WAAWA;AAAA,EAC3C,IACC,CAACA,CAAa,CAAC,GAGhB,gBAAA/tB,EAAA,cAACqsC,IAAA,EAAuB,OAAOuH,EAAA,GAC7B,gBAAA5zC,EAAA,cAAC,SAAI,KAAK8zC,GAAgC,WAAWD,EAAA,GACnD,gBAAA7zC,EAAA,cAACuyC,IAAA,IAAa,GACd,gBAAAvyC,EAAA,cAAC2vC,IAAA,IAAW,GACZ,gBAAA3vC,EAAA,cAAC,OAAA,EAAI,WAAU,8CAA6C,GAC5D,gBAAAA,EAAA,cAAC+xC,IAAA,IAAa,CAChB,CACF;AAEJ,GC3IagC,KAAmB,CAACC,MAC3BA,MAAW,KACNA,IAGFA,EAAO,WAAW,IAAI,IAAIA,CAAM,KAAKA,GAGjCC,KAAa,CAACvE,MAClBA,IAAO,MAAM,MAAMA,IAAO,QAAQ,KAAKA,IAAO,QAAQ,IAGlDwE,KAAY,CAACzD,GAAoB0D,GAAsBC,MAAgC;AAClG,QAAMC,IAAS,KAAK,IAAI5D,GAAY,CAAC,GAC/BhuC,IAAcsxC,GAAiBI,EAAa,SAAA,CAAU,GACtDzxC,IAAa0xC,EAAY,SAAA;AAE/B,SAAID,MAAiB,IAEfF,GAAWG,CAAW,KAAKC,KAAU,KAChC,MAAM5xC,CAAW,IAAIC,CAAU,KAGpC2xC,IAAS,KACJ,MAAM5xC,CAAW,IAAIC,CAAU,KAGjC,GAAGqxC,GAAiBM,EAAO,SAAA,CAAU,CAAC,IAAI5xC,CAAW,IAAIC,CAAU,KAGxE,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,QAAQyxC,CAAY,KAAK,IAElC,GAAGJ,GAAiB,KAAK,IAAI,IAAIM,CAAM,EAAE,SAAA,CAAU,CAAC,IAAI5xC,CAAW,IAAIC,CAAU,KAInF,GAAGqxC,GAAiB,KAAK,IAAI,IAAIM,CAAM,EAAE,SAAA,CAAU,CAAC,IAAI5xC,CAAW,IAAIC,CAAU;AAC1F,GCxBM4xC,KAA8B,CAAC;AAAA,EACnC,KAAA3zC,IAAM;AAAA,EACN,WAAAC,IAAY;AAAA,EACZ,qBAAA2zC,IAAsB;AAAA,EACtB,uBAAAC,IAAwB;AAAA,EACxB,sBAAAC,IAAuB;AAAA,EACvB,GAAG90C;AACL,MAAM;AACJ,QAAM+0C,IAAkBt2C,EAAW,oBAAoBwC,CAAS,GAE1D+zC,IAAe,CAACnuC,MAAsC;AAC1D,UAAMouC,IAAepuC,EAAI,OAA4B;AAGrD,QAAI,CAAC,0BAA0B,KAAKouC,CAAW;AAC7C,MAAApuC,EAAI,OAAO,QAAQ;AAAA,SACd;AACL,YAAMquC,IAAYD,EAAY,MAAM,GAAG,EAAE,IAAI,CAACryC,MAAM,SAASA,GAAG,EAAE,CAAC;AACnE,MAAAiE,EAAI,OAAO,QAAQ0tC,GAAUW,EAAU,CAAC,GAAGA,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC;AAAA,IACvE;AAEA,UAAMC,IAAe1zC,GAAuCoF,EAAI,QAAQ,QAAQ;AAChF,IAAAlD,GAAa,MAAA;;AAAM,cAAAzD,IAAAF,EAAM,aAAN,gBAAAE,EAAA,KAAAF,GAAiBm1C;AAAA,KAA8C;AAAA,EACpF,GAEM/mB,IAAgB,CAACvnB,MAA+C;;AAEpE,UAAMuuC,IAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,GAEIr2C,IAAM8H,EAAI;AAEhB,QAAIuuC,EAAY,SAASr2C,CAAG,GAAG;AAC7B,OAAIA,MAAQ,WAAWA,MAAQ,UAC7BmB,IAAAF,EAAM,cAAN,QAAAE,EAAA,KAAAF,GAAkB6G;AAEpB;AAAA,IACF;AAEA,IAAI,CAACuuC,EAAY,SAASr2C,CAAG,KAAK,CAAC,QAAQ,KAAKA,CAAG,KACjD8H,EAAI,eAAA;AAAA,EAER;AAEA,SACE,gBAAAxG,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,WAAW+0C;AAAA,MACX,KAAA/zC;AAAA,MACA,MAAK;AAAA,MACL,aAAa,GAAG4zC,CAAmB,IAAIC,CAAqB,IAAIC,CAAoB;AAAA,MACpF,WAAW1mB;AAAA,MACX,QAAQ4mB;AAAA,IAAA;AAAA,EAAA;AAGd,GCmFaK,KAAe,CAACC,GAAsEh3C,MAAwB,MAAM;AAC/H,EAAAg3C,EAAuBh3C,CAAK;AAC9B,GAEMi3C,KAAgC,CAAC;AAAA,EACrC,KAAAv0C,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,OAAA2N;AAAA,EACA,WAAAkC;AAAA,EACA,eAAAm8B,IAAgB,CAAA;AAAA,EAChB,WAAAM,IAAY;AAAA,EACZ,SAAAI,IAAU;AAAA,EACV,UAAAtiB,IAAW;AAAA,EACX,UAAAD;AAAA,EACA,aAAAE;AAAA,EACA,cAAAb;AAAA,EACA,eAAAD,IAAgB;AAAA,EAChB,mBAAAgrB;AAAA,EACA,eAAAjqB;AAAA,EACA,YAAAP;AAAA,EACA,UAAAvmB;AAAA,EACA,SAAAH;AAAA,EACA,MAAAyK;AAAA,EACA,qBAAA6lC;AAAA,EACA,uBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,uBAAAW;AAAA,EACA,uBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAl4C;AAAA,EACA,cAAA4d;AAAA,EACA,UAAAlX;AAAA,EACA,GAAGhF;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM0mB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAExDorB,IAAgBl0C,EAAgC,IAAI;AAE1D,EAAAiB,GAAoBxC,GAAK,MAChBy1C,EAAc,SACpB,CAACA,EAAc,OAAO,CAAC;AAE1B,QAAMC,KAAan0C,EAAuB,IAAI,GAExC,CAACo0C,IAAcC,EAAe,IAAIn0C,GAAiBnE,KAAA,gBAAAA,EAAO,gBAAc4d,MAAA,gBAAAA,GAAc,eAAc,EAAE,GAEtG26B,KAAqBt0C,EAAe,OAAO,GAC3C,CAACu0C,IAASC,EAAU,IAAIt0C,EAAS,CAAC,oBAAI,MAAM,GAE5C,CAACu0C,IAAgBC,EAAiB,IAAIx0C,EAAS,EAAK,GAEpDy0C,KAAc,MAAM;AACxB,IAAAD,GAAkB,EAAI;AAAA,EACxB,GAEME,KAAc,MAAM;;AACxB,IAAAF,GAAkB,EAAK,IACvB/2C,KAAAu2C,EAAc,YAAd,QAAAv2C,GAAuB;AAAA,EACzB,GAEMk3C,KAAgB,MAAM;AAC1B,IAAIJ,KACFG,GAAA,IAEAD,GAAA;AAAA,EAEJ,GAEMG,KAAkB,MAAM;AAC5B,IAAAF,GAAA;AAAA,EACF,GAGMG,KAAyB,CAACzwC,OAA8C;;AAC5E,IAAI3D,EAAgBiH,EAAW,QAAQ,KAAKjH,EAAgBiH,EAAW,QAAQ,OAI3EtD,GAAI,SAAS,WAAWA,GAAI,SAAS,WAAWA,GAAI,SAAS,mBAC/DA,GAAI,eAAA,GACJqwC,GAAA,KAGFh3C,KAAAiK,EAAW,cAAX,QAAAjK,GAAA,KAAAiK,GAAuBtD;AAAA,EACzB,GAEM0wC,KAAyB,MAAM;AACnC,IAAAF,GAAA;AAAA,EACF,GAEM1gC,KAAkB,CAAC9G,OAAiB;AACxC,IAAIA,OAASgnC,GAAmB,YAC9BA,GAAmB,UAAUhnC,IAC7BknC,GAAW,CAAC,oBAAI,MAAM;AAAA,EAE1B;AAGA,EAAAr0C,EAAU,MAAM;AACd,UAAM+rB,KAAqB,CAAC7sB,OAAsB;;AAChD,MAAKo1C,QAIA92C,KAAAw2C,GAAW,YAAX,QAAAx2C,GAAoB,SAAS0B,GAAM,WACtCy1C,GAAA;AAAA,IAEJ;AAEA,oBAAS,iBAAiB,SAAS5oB,EAAkB,GAE9C,MAAM;AACX,eAAS,oBAAoB,SAASA,EAAkB;AAAA,IAC1D;AAAA,EACF,GAAG,CAACuoB,EAAc,CAAC,GAGnBt0C,EAAU,MAAM;;AACd,UAAM80C,KAAiB,CAAC3wC,OAAuB;AAC7C,MAAIA,GAAI,QAAQ,aACdA,GAAI,eAAA,GACJwwC,GAAA;AAAA,IAEJ;AAEA,YAAAn3C,KAAAw2C,GAAW,YAAX,QAAAx2C,GAAoB,iBAAiB,WAAWs3C,KAEzC,MAAM;;AACX,OAAAt3C,KAAAw2C,GAAW,YAAX,QAAAx2C,GAAoB,oBAAoB,WAAWs3C;AAAA,IACrD;AAAA,EACF,GAAG,CAAA,CAAE,GAEL90C,EAAU,MAAM;AACd,IAAIwZ,OAIJ06B,IAAgBt4C,KAAA,gBAAAA,EAAO,eAAc,EAAE,GACvCqY,IAAgBrY,KAAA,gBAAAA,EAAO,eAAc,EAAE;AAAA,EACzC,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMm5C,KAAyB,CAAC5zB,OAAe;AAC7C,IAAAwzB,GAAA;AAEA,UAAMjH,KAAaztC,GAAckhB,EAAI;AACrC,IAAA+yB,GAAgBxG,EAAU,GAC1Bz5B,GAAgBy5B,EAAU;AAAA,EAC5B,GAEMsH,KAAoB,CAAC7wC,OAAuC;AAChE,IAAA+vC,GAAgB/vC,GAAI,OAAO,KAAK,GAChC8P,GAAgB9P,GAAI,OAAO,KAAK;AAAA,EAClC;AAEA,EAAAnE,EAAU,MAAM;AACd,QAAI+zC,EAAc,SAAS;AACzB,YAAMkB,KAAiBl2C,GAAuCg1C,EAAc,SAAS,QAAQ;AAC7F,MAAA9yC,GAAa,MAAMqB,KAAA,gBAAAA,EAAW2yC,GAAgD;AAAA,IAChF;AAAA,EACF,GAAG,CAACb,EAAO,CAAC;AAEZ,QAAMc,KAA2B;AAAA,IAC/B,uBAAAlC;AAAA,IACA,wBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,GAGItC,KAAoBz1C,EAAW,qBAAqBwC,GAAW;AAAA,IACnE,aAAa01C,GAAa,SAAS;AAAA,IACnC,UAAYzzC,EAAgBiH,EAAW,QAAQ;AAAA,IAC/C,aAAajH,EAAgBiH,EAAW,QAAQ;AAAA,IAChD,aAAajH,EAAgBuB,CAAQ;AAAA,IACrC,aAAavB,EAAgBkoB,CAAQ;AAAA,EAAA,CACtC;AAED,MAAIysB;AACJ,EAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,KAAuB,cAAc1tC,EAAW,EAAE,cACzCjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,KAAuB,cAAc1tC,EAAW,EAAE,oBAElD0tC,KAAuB;AAGzB,QAAM,CAACC,IAAWC,EAAY,IAAIt1C,EAAuB,SAAS,GAC5Du1C,KAAmB,CAACh4C,EAAM,YAAY,CAACA,EAAM,WAAW83C,KAAY;AAE1E,SACE,gBAAAz3C,EAAA,cAAC,OAAA,EAAI,QAAQ,CAAC,CAAC8J,EAAW,QAAQ,WAAW+pC,IAAmB,KAAKwC,GAAA,GAEnE,gBAAAr2C,EAAA,cAAC,WAAM,QAAQ,CAAC,CAAC6C,EAAgB4N,CAAS,GAAG,SAAS3G,EAAW,IAAI,WAAU,mBAAA,GAC5EyE,CACH,GAGA,gBAAAvO,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,cAAcg1C,GAAa0C,IAAc,OAAO;AAAA,MAChD,cAAc1C,GAAa0C,IAAc,SAAS;AAAA,MAClD,WAAW1C,GAAa0C,IAAc,QAAQ;AAAA,MAC9C,SAAS1C,GAAa0C,IAAc,SAAS;AAAA,IAAA;AAAA,IAG5CzzC,qCACE,OAAA,EAAI,WAAU,wBACb,gBAAAjE,EAAA,cAACU,IAAA,EAAQ,OAAOi3C,GAAA,GACd,gBAAA33C,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,WAAU,wBAAuB,OAAM,WAAU,MAAMkO,KAAQ,UAAA,CAAW,GAChG,gBAAA1O,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,WAAU,sBAAqB,OAAM,SAAQ,OAAMkO,KAAA,gBAAAA,EAAM,QAAQ,QAAQ,aAAY,UAAA,CAAW,mCACrHlO,GAAA,EAAS,eAAW,IAAC,WAAU,uBAAsB,OAAM,UAAS,MAAMkO,KAAQ,UAAA,CAAW,CAChG,CACF;AAAA,IAGF,gBAAA1O,EAAA;AAAA,MAACs0C;AAAA,MAAA;AAAA,QACC,KAAK8B;AAAA,QACL,IAAItsC,EAAW;AAAA,QACf,qBAAAyqC;AAAA,QACA,uBAAAC;AAAA,QACA,sBAAAC;AAAA,QACA,WAAWwC;AAAA,QACX,OAAOX;AAAA,QACP,UAAUe;AAAA,QACV,UAAUvtC,EAAW;AAAA,QACrB,UAAUA,EAAW;AAAA,QACrB,UAAUyhB;AAAA,QACV,oBAAkBisB;AAAA,QAClB,MAAM73C,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAId,gBAAAK,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU,CAAC,CAAC8J,EAAW,YAAY,CAAC,CAACA,EAAW;AAAA,QAChD,SAASitC;AAAA,QACT,WAAU;AAAA,QACV,cAAY3B;AAAA,MAAA;AAAA,MAEZ,gBAAAp1C,EAAA,cAACU,IAAA,EAAQ,OAAOi3C,GAAA,GACd,gBAAA33C,EAAA,cAACQ,KAAS,eAAW,IAAC,WAAU,yBAAwB,OAAM,WAAU,MAAK,sBAAA,CAAsB,GACnG,gBAAAR,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,WAAU,uBAAsB,OAAM,SAAQ,MAAK,uBAAA,CAAuB,CAClG;AAAA,IAAA;AAAA,IAGDm2C,MACC,gBAAA32C,EAAA;AAAA,MAACgzC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,QAAQuE;AAAA,QACR,MAAMjI,GAAegH,EAAY;AAAA,QACjC,eAAA1J;AAAA,QACA,WAAAM;AAAA,QACA,SAAAI;AAAA,QACA,UAAU8J;AAAA,QACV,UAAUF;AAAA,MAAA;AAAA,IAAA;AAAA,EACZ,GAKHr0C,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,GAG1FvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,cAAcpgB,EAAW,EAAE;AAAA,MAC/B,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,cAAcpgB,EAAW,EAAE;AAAA,MAC/B,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC;AAEJ,GCrdMwzC,KAAe,8BAiDfC,KAAwC,CAAC;AAAA,EAC7C,KAAAl3C,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,WAAA6P;AAAA,EACA,OAAAlC;AAAA,EACA,aAAA0c;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,UAAA/lB;AAAA,EACA,cAAAgmB;AAAA,EACA,UAAAW;AAAA,EACA,mBAAAoqB;AAAA,EACA,eAAAjqB;AAAA,EACA,YAAAP;AAAA,EACA,eAAAmtB;AAAA,EACA,SAAAC,IAAUH;AAAA,EACV,GAAGj4C;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,EAAE,UAAAF,MAAamF,GAEf,CAACkuC,GAAOC,CAAQ,IAAI71C,EAAiB,EAAE,GACvC,CAAC81C,GAAcC,CAAe,IAAI/1C,EAAkB,EAAK,GAEzD83B,IAAoBtwB;AAAA,IACxB,CAACpD,MAAuC;AACtC,YAAM,EAAE,OAAAvI,MAAUuI,EAAI;AACtB,MAAAyxC,EAASh6C,CAAK,GACdk6C,EAAgB,IAAI,OAAOJ,CAAO,EAAE,KAAK95C,CAAK,CAAC,GAC/C0G,KAAA,QAAAA,EAAW6B;AAAA,IACb;AAAA,IACA,CAAC7B,GAAUozC,CAAO;AAAA,EAAA,GAGdK,IAAoBxuC,GAAY,MAAM;AAC1C,IAAIkuC,KAAiB,IAAI,OAAOC,CAAO,EAAE,KAAKC,CAAK,KACjDF,EAAcE,CAAK;AAAA,EAEvB,GAAG,CAACF,GAAeC,GAASC,CAAK,CAAC,GAE5B3d,IAAyBj8B;AAAA,IAC7B;AAAA,IACA,EAAE,MAAMyE,EAAgBuB,CAAQ,EAAA;AAAA,IAChC;AAAA,MACE,iBAAiB,CAAC0F,EAAW;AAAA,MAC7B,kBAAkB,CAAC,CAACA,EAAW;AAAA,MAE/B,aAAajH,EAAgBkoB,CAAQ;AAAA,MACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,MAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,IAAA;AAAA,IAEjEvpB;AAAA,EAAA,GAEI05B,IAAsBl8B,EAAW,sCAAsC;AAAA,IAC3E,SAASmQ,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,IAC5C,eAAe,CAAClC,KAAS1L,EAAgB4N,CAAS;AAAA,IAClD,mBAAmBlC,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,EAAA,CACvD,GACK4nC,IAAej6C,EAAW,+BAA+B,EAAE,MAAMyE,EAAgBuB,CAAQ,GAAG,GAC5Fk0C,IAA2Bl6C,EAAW,mCAAmC;AAAA,IAC7E,UAAU0L,EAAW;AAAA,EAAA,CACtB;AAED,MAAI0tC;AACJ,SAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,IAAuB,mBAAmB1tC,EAAW,EAAE,cAC9CjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,IAAuB,mBAAmB1tC,EAAW,EAAE,oBAEvD0tC,IAAuB,QAIvB,gBAAAx3C,EAAA,cAAC,OAAA,EAAI,QAAQ,CAAC,CAAC8J,EAAW,QAAQ,WAAWuwB,EAAA,GAC3C,gBAAAr6B,EAAA,cAAC,OAAA,EAAI,WAAWs6B,KACd,gBAAAt6B,EAAA,cAAC,SAAA,EAAM,QAAQ6C,EAAgB4N,CAAS,GAAG,WAAW4nC,GAAc,SAASvuC,EAAW,GAAA,GACrFyE,CACH,CACF,GAEA,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAWs4C,EAAA,GACd,gBAAAt4C,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,WAAU;AAAA,MACV,KAAAnJ;AAAA,MACA,MAAK;AAAA,MACL,UAAU,CAAC,CAACmJ,EAAW;AAAA,MACvB,UAAUowB;AAAA,MACV,oBAAkBsd;AAAA,IAAA;AAAA,EAAA,GAGpB,gBAAAx3C,EAAA,cAAC,OAAA,EAAI,WAAU,oBAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,YAAW;AAAA,MACX,UAAQ;AAAA,MACR,SAAO;AAAA,MACP,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,cAAYxI,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,SAASsuC;AAAA,MACT,UAAU,CAACF;AAAA,IAAA;AAAA,EAAA,CAEf,CACF,GAECr1C,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,GAG1FvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,mBAAmBpgB,EAAW,EAAE;AAAA,MACpC,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,mBAAmBpgB,EAAW,EAAE;AAAA,MACpC,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC;AAEJ,GCzHMm0C,KAAoC,CAAC;AAAA,EACzC,KAAA53C,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,WAAAkC;AAAA,EACA,UAAAsa;AAAA,EACA,uBAAAytB,IAAwB;AAAA,EACxB,uBAAAC,IAAwB;AAAA,EACxB,aAAAxtB;AAAA,EACA,eAAAd;AAAA,EACA,UAAA/lB;AAAA,EACA,cAAAgmB;AAAA,EACA,mBAAA+qB;AAAA,EACA,SAAAlxC;AAAA,EACA,MAAAyK;AAAA,EACA,eAAAwc;AAAA,EACA,YAAAP;AAAA,EACA,WAAA/pB;AAAA,EACA,UAAAoqB,IAAW;AAAA,EACX,GAAGrrB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,EAAE,UAAAF,GAAU,KAAA+zC,GAAK,KAAAC,GAAK,cAAA98B,MAAiB/R,GAEvC8uC,IAAkB12C,EAAyB,IAAI,GAE/C,CAACo0C,GAAcC,CAAe,IAAIn0C,EAAS0H,EAAW,KAAK,GAE3DyhB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAExD6tB,IAAkBvC,KAAgBA,EAAa,SAAA,EAAW,SAAS,GAEnEtxC,IAAkB6W,KAAgBA,EAAa,SAAA,EAAW,SAAS,GAKnEqe,IAAoB,CAAC1zB,OAAuC;;AAChE,UAAM,EAAE,OAAAvI,OAAUuI,GAAI;AAMtB,QAJA+vC,EAAgBt4C,EAAK,GAErB0G,KAAA,QAAAA,EAAW6B,KAEPmyC,MAAQ,WAAW16C,GAAM,SAAA,CAAU,KAAKy6C,MAAQ,WAAWz6C,GAAM,SAAA,CAAU,GAAG;AAChF,YAAM66C,MAAYj5C,KAAA+4C,EAAgB,YAAhB,gBAAA/4C,GAAyB,cAAc;AACzD,MAAIi5C,MACFA,GAAU,MAAA;AAAA,IAEd;AAAA,EACF,GAEM,CAAChoB,GAAWioB,CAAY,IAAI32C,EAAS,EAAK,GAE1C42C,IAAgBn2C,EAAgBuB,CAAQ,IAAI,SAAS,IAKrD60C,IAAoB,OACjB;AAAA;AAAA,IAEL,qBAAqB76C,EAAW,8BAA8B46C,GAAe;AAAA,MAC3E,iBAAiB,CAAClvC,EAAW;AAAA,MAC7B,kBAAkB,CAAC,CAACA,EAAW;AAAA,MAC/B,cAAcgnB;AAAA,MACd,aAAajuB,EAAgBkoB,CAAQ;AAAA,MACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,MAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,IAAA,CAChE;AAAA;AAAA,IAED,qBAAqB/rB;AAAA,MACnB;AAAA,MAEA;AAAA,QACE,QAAQmQ,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,QAC3C,eAAe,CAAClC,KAAS1L,EAAgB4N,CAAS;AAAA,QAClD,mBAAmBlC,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,MAAA;AAAA,IACxD;AAAA;AAAA,IAGF,cAAcrS;AAAA,MACZ;AAAA,MACA;AAAA,QACE,oBAAoB6F;AAAA;AAAA,QACpB,aAAa40C,KAAmB7zC;AAAA,MAAA;AAAA,MAElCpE;AAAA,IAAA;AAAA,IAGF,2BAA2BxC,EAAW,oBAAoB;AAAA,EAAA,IAIxD,EAAE,qBAAA86C,GAAqB,qBAAA5e,GAAqB,cAAA6e,GAAc,2BAAAC,GAAA,IAA8BH,EAAA,GAKxFI,IAAe,MAAM;;AACzB,UAAMP,MAAYj5C,KAAA+4C,EAAgB,YAAhB,gBAAA/4C,GAAyB,cAAc;AAEzD,IAAIi5C,OACFA,GAAU,OAAA,GACVA,GAAU,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,GAAA,CAAM,CAAC;AAAA,EAElE,GAKMQ,IAAiB,MAAM;;AAC3B,UAAMR,MAAYj5C,KAAA+4C,EAAgB,YAAhB,gBAAA/4C,GAAyB,cAAc;AAEzD,IAAIi5C,OACFA,GAAU,SAAA,GACVA,GAAU,cAAc,IAAI,MAAM,UAAU,EAAE,SAAS,GAAA,CAAM,CAAC;AAAA,EAElE,GAKMS,IAAuB,CAACC,OAAqB;AACjD,IAAAT,EAAaS,EAAO;AAAA,EACtB,GAEMnB,IAAej6C,EAAW,sBAAsB46C,CAAa;AAEnE,MAAIxB;AACJ,EAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,IAAuB,gBAAgB1tC,EAAW,EAAE,cAC3CjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,IAAuB,gBAAgB1tC,EAAW,EAAE,oBAEpD0tC,IAAuB;AAGzB,QAAM,CAACC,GAAWC,EAAY,IAAIt1C,EAAuB,SAAS,GAC5Du1C,KAAmB,CAACh4C,EAAM,YAAY,CAACA,EAAM,WAAW83C,IAAY;AAE1E,SACE,gBAAAz3C,EAAA,cAAC,OAAA,EAAI,QAAQ,CAAC,CAAC8J,EAAW,QAAQ,WAAWovC,EAAA,GAE3C,gBAAAl5C,EAAA,cAAC,OAAA,EAAI,WAAWs6B,EAAA,mCACb,SAAA,EAAM,QAAQz3B,EAAgB4N,CAAS,GAAG,SAAS3G,EAAW,IAAI,WAAWuuC,EAAA,GAC3E9pC,CACH,CACF,GAGA,gBAAAvO,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,cAAcg1C,GAAa0C,IAAc,OAAO;AAAA,MAChD,cAAc1C,GAAa0C,IAAc,SAAS;AAAA,MAClD,WAAW1C,GAAa0C,IAAc,QAAQ;AAAA,MAC9C,SAAS1C,GAAa0C,IAAc,SAAS;AAAA,MAC7C,KAAKkB;AAAA,IAAA;AAAA,IAEL,gBAAA54C,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG8J;AAAA,QACJ,MAAK;AAAA,QACL,WAAWqvC;AAAA,QACX,UAAU,CAAC,CAACrvC,EAAW;AAAA,QACvB,gBAAcjH,EAAgBkoB,CAAQ;AAAA,QACtC,aAAWloB,EAAgBooB,CAAW,KAAKd,MAAkB;AAAA,QAC7D,cAAYtnB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,QACtG,oBAAkB0tC;AAAA,QAClB,KAAA72C;AAAA,QACA,UAAU4qB;AAAA,QACV,UAAU2O;AAAA,MAAA;AAAA,IAAA;AAAA,IAIXj2B,KACC,gBAAAjE,EAAA,cAAC,OAAA,EAAI,WAAWo5C,GAAA,GACd,gBAAAp5C,EAAA,cAACU,MAAQ,OAAOi3C,sCACbn3C,GAAA,EAAS,eAAW,IAAC,OAAM,WAAU,MAAMkO,KAAQ,UAAA,CAAW,GAC/D,gBAAA1O,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,OAAM,SAAQ,OAAMkO,KAAA,gBAAAA,EAAM,QAAQ,QAAQ,aAAY,UAAA,CAAW,mCACtFlO,GAAA,EAAS,eAAW,IAAC,OAAM,UAAS,MAAMkO,KAAQ,UAAA,CAAW,CAChE,CACF;AAAA,IAIF,gBAAA1O,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,SAAS,MAAM;AAAA,QAAC;AAAA,QAChB,aAAa,MAAMu5C,EAAqB,EAAI;AAAA,QAC5C,cAAc,MAAMA,EAAqB,EAAK;AAAA,MAAA;AAAA,MAE9C,gBAAAv5C,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAU04C,MAAQ,YAAWpC,KAAA,gBAAAA,EAAc,eAAc,GAAG,KAAK,CAAC,CAACxsC,EAAW,YAAY,CAAC,CAACA,EAAW;AAAA,UACvG,MAAK;AAAA,UACL,SAASwvC;AAAA,UACT,cAAYb;AAAA,QAAA;AAAA,wCAEX/3C,IAAA,EAAQ,OAAOi3C,IAAkB,WAAU,sCAC1C,gBAAA33C,EAAA,cAACQ,GAAA,EAAS,OAAM,WAAU,MAAK,2BAA0B,eAAW,IAAC,WAAU,+BAA8B,GAC7G,gBAAAR,EAAA,cAACQ,GAAA,EAAS,OAAM,SAAQ,MAAK,4BAA2B,eAAW,IAAC,WAAU,6BAA4B,GAC1G,gBAAAR,EAAA,cAACQ,GAAA,EAAS,OAAM,UAAS,MAAK,2BAA0B,eAAW,IAAC,WAAU,+BAA8B,CAC9G;AAAA,MAAA;AAAA,MAEF,gBAAAR,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAU24C,MAAQ,YAAWrC,KAAA,gBAAAA,EAAc,eAAc,GAAG,KAAK,CAAC,CAACxsC,EAAW,YAAY,CAAC,CAACA,EAAW;AAAA,UACvG,MAAK;AAAA,UACL,SAASuvC;AAAA,UACT,cAAYb;AAAA,QAAA;AAAA,wCAEX93C,IAAA,EAAQ,OAAOi3C,IAAkB,WAAU,sCAC1C,gBAAA33C,EAAA,cAACQ,GAAA,EAAS,OAAM,WAAU,MAAK,0BAAyB,eAAW,IAAC,WAAU,+BAA8B,GAC5G,gBAAAR,EAAA,cAACQ,GAAA,EAAS,OAAM,SAAQ,MAAK,2BAA0B,eAAW,IAAC,WAAU,6BAA4B,GACzG,gBAAAR,EAAA,cAACQ,GAAA,EAAS,OAAM,UAAS,MAAK,0BAAyB,eAAW,IAAC,WAAU,+BAA8B,CAC7G;AAAA,MAAA;AAAA,IACF;AAAA,EACF,GAIDqC,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,GAG1FvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,gBAAgBpgB,EAAW,EAAE;AAAA,MACjC,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,gBAAgBpgB,EAAW,EAAE;AAAA,MACjC,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC;AAEJ,GCpPMq1C,KAAwC,CAAC;AAAA,EAC7C,KAAA94C,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,WAAAkC;AAAA,EACA,UAAAsa;AAAA,EACA,aAAAE;AAAA,EACA,eAAAd;AAAA,EACA,mBAAAgrB;AAAA,EACA,UAAA/wC;AAAA,EACA,cAAAgmB;AAAA,EACA,SAAAnmB;AAAA,EACA,MAAAyK;AAAA,EACA,eAAAwc;AAAA,EACA,YAAAP;AAAA,EACA,WAAA/pB;AAAA,EACA,UAAAoqB,IAAW;AAAA,EACX,2BAAA0uB;AAAA,EACA,GAAG/5C;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,EAAE,UAAAF,MAAamF,GAEf8uC,IAAkB12C,EAAyB,IAAI,GAE/C,CAACy3C,GAAcC,CAAe,IAAIx3C,EAAS,EAAK,GAEhD,CAACy3C,GAAUC,CAAW,IAAI13C,EAAkB0H,EAAW,QAAQA,EAAW,MAAM,SAAA,EAAW,SAAS,IAAI,EAAK,GAE7GyhB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAExD+uB,IAAkBL,KAAA,gBAAAA,EAA4BC,IAAe,SAAS,SAKtEK,IAAuB,MAAM;;AACjC,IAAI,CAAClwC,EAAW,YAAY,CAACA,EAAW,aACtC8vC,EAAgB,CAACD,CAAY,GAEzBf,KAAA,QAAAA,EAAiB,aACnB/4C,IAAA+4C,EAAgB,QAAQ,cAAc,OAAO,MAA7C,QAAA/4C,EAAgD;AAAA,EAGtD,GAKMq6B,IAAoB,CAAC1zB,MAAuC;AAChE,IAAAszC,EAAYtzC,EAAI,cAAc,MAAM,SAAS,CAAC,GAC9C7B,KAAA,QAAAA,EAAW6B;AAAA,EACb,GAKMyyC,IAAoB,OACjB;AAAA;AAAA,IAEL,qBAAqB76C;AAAA,MACnB;AAAA,MACA,EAAE,MAAMyE,EAAgBuB,CAAQ,EAAA;AAAA,MAChC;AAAA,QACE,iBAAiB,CAAC0F,EAAW;AAAA,QAC7B,kBAAkB,CAAC,CAACA,EAAW;AAAA,QAC/B,aAAajH,EAAgBkoB,CAAQ;AAAA,QACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,QAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,MAAA;AAAA,IACjE;AAAA;AAAA,IAGF,qBAAqB/rB;AAAA,MACnB;AAAA,MAEA;AAAA,QACE,QAAQmQ,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,QAC3C,eAAe,CAAClC,KAAS1L,EAAgB4N,CAAS;AAAA,QAClD,mBAAmBlC,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,MAAA;AAAA,IACxD;AAAA;AAAA,IAGF,cAAcrS;AAAA,MACZ;AAAA,MACA;AAAA,QACE,oBAAoB6F;AAAA;AAAA,QACpB,aAAa41C;AAAA,MAAA;AAAA,MAEfj5C;AAAA,IAAA;AAAA,IAEF,2BAA2BxC,EAAW,oBAAoB;AAAA,EAAA,IAIxD,EAAE,qBAAA86C,GAAqB,qBAAA5e,GAAqB,cAAA6e,GAAc,2BAAAC,EAAA,IAA8BH,EAAA,GAExFZ,IAAej6C,EAAW,wBAAwB,EAAE,MAAMyE,EAAgBuB,CAAQ,GAAG;AAE3F,MAAIozC;AACJ,EAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,IAAuB,kBAAkB1tC,EAAW,EAAE,cAC7CjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,IAAuB,kBAAkB1tC,EAAW,EAAE,oBAEtD0tC,IAAuB;AAGzB,QAAM,CAACC,GAAWC,CAAY,IAAIt1C,EAAuB,SAAS,GAC5Du1C,KAAmB,CAACh4C,EAAM,YAAY,CAACA,EAAM,WAAW83C,IAAY;AAE1E,SACE,gBAAAz3C,EAAA,cAAC,OAAA,EAAI,QAAQ,CAAC,CAAC8J,EAAW,QAAQ,WAAWovC,EAAA,GAE3C,gBAAAl5C,EAAA,cAAC,OAAA,EAAI,WAAWs6B,qCACb,SAAA,EAAM,QAAQz3B,EAAgB4N,CAAS,GAAG,SAAS3G,EAAW,IAAI,WAAWuuC,EAAA,GAC3E9pC,CACH,CACF,GAGA,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAU,4CAA2C,KAAK44C,KAC7D,gBAAA54C,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,MAAM6vC,IAAe,SAAS;AAAA,MAC9B,WAAWR;AAAA,MACX,UAAU,CAAC,CAACrvC,EAAW;AAAA,MACvB,UAAU,CAAC,CAACA,EAAW;AAAA,MACvB,gBAAcjH,EAAgBkoB,CAAQ;AAAA,MACtC,aAAWloB,EAAgBooB,CAAW,KAAKd,MAAkB;AAAA,MAC7D,cAAYtnB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,oBAAkB0tC;AAAA,MAClB,KAAA72C;AAAA,MACA,UAAU4qB;AAAA,MACV,UAAU2O;AAAA,MACV,cAAc8a,GAAa0C,GAAc,OAAO;AAAA,MAChD,cAAc1C,GAAa0C,GAAc,SAAS;AAAA,MAClD,WAAW1C,GAAa0C,GAAc,QAAQ;AAAA,MAC9C,SAAS1C,GAAa0C,GAAc,SAAS;AAAA,IAAA;AAAA,EAAA,GAI9CzzC,KACC,gBAAAjE,EAAA,cAAC,OAAA,EAAI,WAAWo5C,EAAA,GACd,gBAAAp5C,EAAA,cAACU,MAAQ,OAAOi3C,sCACbn3C,GAAA,EAAS,eAAW,IAAC,OAAM,WAAU,MAAMkO,KAAQ,UAAA,CAAW,GAC/D,gBAAA1O,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,OAAM,SAAQ,OAAMkO,KAAA,gBAAAA,EAAM,QAAQ,QAAQ,aAAY,UAAA,CAAW,mCACtFlO,GAAA,EAAS,eAAW,IAAC,OAAM,UAAS,MAAMkO,KAAQ,UAAA,CAAW,CAChE,CACF,GAIF,gBAAA1O,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAASg6C;AAAA,MACT,cAAYD;AAAA,MACZ,UAAUjwC,EAAW,YAAYA,EAAW;AAAA,IAAA;AAAA,IAE5C,gBAAA9J,EAAA,cAACU,MAAQ,OAAOi3C,GAAA,mCACbn3C,GAAA,EAAS,OAAM,WAAU,MAAM,cAAcm5C,IAAe,YAAY,KAAK,IAAI,eAAW,IAAC,WAAU,oBAAmB,GAC3H,gBAAA35C,EAAA,cAACQ,GAAA,EAAS,OAAM,SAAQ,MAAM,eAAem5C,IAAe,YAAY,KAAK,IAAI,eAAW,IAAC,WAAU,iBAAA,CAAiB,GACxH,gBAAA35C,EAAA,cAACQ,GAAA,EAAS,OAAM,UAAS,MAAM,cAAcm5C,IAAe,YAAY,KAAK,IAAI,eAAW,IAAC,WAAU,mBAAA,CAAmB,CAC5H;AAAA,EAAA,CAEJ,GAGC92C,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,GAG1FvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,kBAAkBpgB,EAAW,EAAE;AAAA,MACnC,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,kBAAkBpgB,EAAW,EAAE;AAAA,MACnC,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC;AAEJ,GC7QM61C,KAAiC;AAAA,EACrC;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,IACN,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAEV,GCn0CMC,KAAwB,CAACrR,MAC7BA,EAAK,QAAQ,CAACsR,MACEA,EAAQ,KAAK,MAAM,IAAI,EAAE,IAAI,CAACn7C,MAAMA,CAAC,EACtC,IAAI,CAACo7C,OAAgB;AAAA,EAChC,GAAGD;AAAA,EACH,MAAMC;AAAA,EACN,CACH,GAEGC,KAAkBH,GAAsBD,EAAS,GAE1CK,KAAoBD,GAAgB,IAAI,CAACtS,MAAMA,EAAE,IAAI,GAErDwS,KAAmBF,GAAgB,IAAI,CAACtS,MAAMA,EAAE,GAAG,GAmG1DyS,KAAkC,CAAC;AAAA,EACvC,KAAA75C,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,YAAAksC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAjqC;AAAA,EACA,UAAAsa;AAAA,EACA,aAAAE;AAAA,EACA,cAAAb;AAAA,EACA,eAAAD,IAAgB;AAAA,EAChB,mBAAAgrB;AAAA,EACA,UAAA/wC;AAAA,EACA,WAAAxD,IAAY;AAAA,EACZ,sBAAA+5C;AAAA,EACA,wBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,cAAA1iC;AAAA,EACA,UAAA6S,IAAW;AAAA,EACX,YAAA1Y;AAAA,EACA,mBAAAwoC;AAAA,EACA,yBAAAC,IAA0B;AAAA,EAC1B,qBAAAC;AAAA,EACA,eAAA9vB;AAAA,EACA,YAAAP;AAAA,EACA,UAAAhmB;AAAA,EACA,iBAAAs2C;AAAA,EAEA,GAAGt7C;AACL,MAAM;AACJ,QAAMu7C,IAAwBj0C,GAAQ,MAC7B+zC,IAAsBd,GAAsBc,CAAmB,IAAIX,IACzE,CAACW,CAAmB,CAAC,GAElBG,IAAiBvxC,GAAY,MAAM;AACvC,QAAIoO,KAA4BkjC,EAAsB,CAAC;AAIvD,YAFsBT,KAAcC,OAGlC1iC,KACEkjC,EAAsB,KAAK,CAACf,OACtBM,IACKN,GAAQ,IAAI,kBAAA,MAAwBM,EAAW,wBAAwB,CAACC,KAAeP,GAAQ,SAASO,KAExGP,GAAQ,SAASO,CAE3B,KAAK1iC,KAGHA;AAAA,EACT,GAAG,CAACyiC,GAAYC,GAAaQ,CAAqB,CAAC,GAE7Cr2C,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAMwxC,IAAan0C,EAAuB,IAAI,GAExCgM,IAAWhM,EAAyB,IAAI,GAExCwW,IAAYxW,EAA0B,IAAI,GAE1CuW,IAAcvW,EAAwB,IAAI,GAE1C,CAACyW,GAAmBC,CAAoB,IAAIxW,EAAS,EAAK,GAE1D,CAACy3C,GAAUC,CAAW,IAAI13C,EAAkB0H,EAAW,QAAQA,EAAW,MAAM,SAAA,EAAW,SAAS,IAAI,EAAK,GAE7GyhB,KAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAExD,CAACowB,GAAgBC,CAAiB,IAAIj5C,EAA4B+4C,CAAc;AAGtF,EAAA94C,EAAU,MAAM;AACd,IAAAg5C,EAAkBF,GAAgB;AAAA,EACpC,GAAG,CAACV,GAAYC,GAAaQ,GAAuBC,CAAc,CAAC,GAEnEr4C;AAAA,IACEnC;AAAA,IACAuN;AAAA,IACA;AAAA,MACE,KAAKktC,EAAe;AAAA,MACpB,MAAMA,EAAe;AAAA,IAAA;AAAA,IAEvB,CAACtxC,GAAYoE,EAAS,SAASktC,CAAc;AAAA,EAAA;AAG/C,QAAMrmC,IAAS,MAAM;;AACnB,IAAA6D,EAAqB,EAAK,IACtB/Y,KAAAw2C,EAAW,YAAX,QAAAx2C,GAAoB,SAAS,SAAS,oBACxC4H,KAAAyG,EAAS,YAAT,QAAAzG,GAAkB;AAAA,EAEtB,GAEMqN,IAAS,MAAM;;AACnB,IAAA8D,EAAqB,EAAI,IACzB/Y,KAAA4Y,EAAY,YAAZ,QAAA5Y,GAAqB;AAAA,EACvB,GAEMy7C,IAAmB,CAAC/rC,OAAmC;AAC3D,QAAI,CAACA,GAAQ,OAAQ;AAErB,UAAM,CAACgsC,IAAaC,EAAY,IAAIjsC,GAAQ,CAAC,EAAE,MAAM,MAAM,GAAG,GAExDksC,KAAkBP,EAAsB,KAAK,CAACQ,OAAMA,GAAE,QAAQH,MAAeG,GAAE,SAASF,EAAY;AAE1G,IAAIC,OACFJ,EAAkBI,EAAe,GACjCR,KAAA,QAAAA,EAAkBQ;AAAA,EAEtB,GAEME,IAA4B,CAACn1C,OAAyC;AAmB1E,QAlBsB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,EAGgB,QAAQA,GAAI,IAAI,KAAK;AACrC;AAKF,IAFkB,KAAK,KAAKA,GAAI,GAAG,MAGjCA,GAAI,eAAA,GACJA,GAAI,gBAAA;AAAA,EAER,GAEMo1C,KAAoB,CAACp1C,OAAuC;AAChE,UAAM,EAAE,OAAAvI,OAAUuI,GAAI;AAEtB,IAAAszC,EAAY77C,GAAM,SAAS,CAAC,GAE5B0G,KAAA,QAAAA,EAAW6B;AAAA,EACb,GAEMq1C,KAAmB,MAAM;;AAC7B,KAAIh8C,KAAA4Y,EAAY,YAAZ,QAAA5Y,GAAqB,cACvB4H,KAAAgR,EAAY,YAAZ,QAAAhR,GAAqB,UAErB+D,KAAAiN,EAAY,YAAZ,QAAAjN,GAAqB;AAAA,EAEzB,GAEMswC,KAA+B,CAACt1C,OAA0C;;AAC9E,QAAIsD,EAAW,YAAYA,EAAW;AACpC;AAGF,UAAMmG,KAAOzJ,GAAI;AAEjB,IAAIyJ,OAAS,cAAYpQ,KAAA4Y,EAAY,YAAZ,QAAA5Y,GAAqB,eAC5C4Y,EAAY,QAAQ,KAAA,IAGlBxI,OAAS,WAAWA,OAAS,WAAWA,OAAS,kBACnD4rC,GAAA;AAAA,EAEJ,GAEME,KAA6B,CAACv1C,OAA4C;AAC9E,IAAIsD,EAAW,YAAYA,EAAW,YAIlC,OAAOtD,GAAI,UAAW,YAAYA,GAAI,WAAW,KAMrDq1C,GAAA;AAAA,EACF;AAEA,EAAAx5C,EAAU,MAAM;AACd,UAAM+rB,KAAqB,CAAC5nB,OAAoB;;AAC9C,OAAK3G,KAAA4Y,EAAY,YAAZ,QAAA5Y,GAAqB,gBAIrB4H,KAAA4uC,EAAW,YAAX,QAAA5uC,GAAoB,SAASjB,GAAI,WACpCiS,EAAY,QAAQ,KAAA;AAAA,IAExB;AAEA,wCAAU,iBAAiB,SAAS2V,KAE7B,MAAM;AACX,mCAAU,oBAAoB,SAASA;AAAA,IACzC;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAM4qB,KAAgBn2C,EAAgBuB,CAAQ,IAAI,SAAS,IAErDyvC,KAAoBz1C,EAAW,qBAAqBwC,GAAWo4C,EAAa,GAE5E3e,KAAyBj8B,EAAW,uBAAuB46C,IAAe;AAAA,IAC9E,aAAaa;AAAA,IACb,UAAY/vC,EAAW;AAAA,IACvB,UAAYA,EAAW;AAAA,IACvB,aAAajH,EAAgBkoB,CAAQ;AAAA,IACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,IAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,EAAA,CAChE,GAEKkuB,KAAej6C,EAAW,qBAAqB46C,EAAa;AAElE,MAAIxB;AACJ,SAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,KAAuB,eAAe1tC,EAAW,EAAE,cAC1CjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,KAAuB,eAAe1tC,EAAW,EAAE,oBAEnD0tC,KAAuB,QAIvB,gBAAAx3C,EAAA,cAAC,OAAA,EAAI,QAAQ,CAAC,CAAC8J,EAAW,QAAQ,WAAW+pC,IAAmB,KAAKwC,EAAA,GAElE9nC,KAAS,CAAC1L,EAAgB4N,CAAS,KAClC,gBAAAzQ,EAAA,cAAC,SAAA,EAAM,SAAS8J,EAAW,IAAI,WAAWuuC,MACvC9pC,CACH,GAIF,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAWq6B,GAAA,GACd,gBAAAr6B,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,KAAK0Y;AAAA,MACL,UAAU5O,EAAW,YAAYA,EAAW,WAAW,KAAK;AAAA,MAC5D,SAASiyC;AAAA,MACT,WAAWD;AAAA,MACX,MAAK;AAAA,MACL,iBAAe,GAAGhyC,EAAW,EAAE;AAAA,MAC/B,iBAAe6O;AAAA,MACf,iBAAc;AAAA,MACd,iBAAe4S;AAAA,MACf,cAAY,GAAGwvB,CAAuB,IAAIK,KAAA,gBAAAA,EAAgB,OAAO,KAAKA,KAAA,gBAAAA,EAAgB,IAAI;AAAA,MAC1F,UAAUtxC,EAAW;AAAA,IAAA;AAAA,IAErB,gBAAA9J,EAAA,cAAC,OAAA,EAAI,WAAU,4BAA2B,KAAK,GAAGo7C,EAAe,IAAI,IAAI,KAAKA,EAAe,SAAS,OAAO,IAAI,eAAW,IAAC;AAAA,IAC7H,gBAAAp7C,EAAA,cAACU,IAAA,EAAQ,OAAOiY,IAAoB,WAAW,WAAW,WAAW,kBAAkBA,IAAoB,gBAAgB,EAAE,GAAA,GAC3H,gBAAA3Y,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,OAAM,WAAU,MAAK,yBAAA,CAAyB,GACpE,gBAAAR,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,OAAM,UAAS,MAAK,0BAAyB,CACrE;AAAA,EAAA,GAGF,gBAAAR,EAAA,cAAC,OAAA,EAAI,WAAU,wBACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAe,IAAI,eAAe8J,EAAW,EAAE,mBAC5D,gBAAA9J,EAAA,cAAC,QAAA,MAAK,MAAGo7C,KAAA,gBAAAA,EAAgB,MAAK,GAAC,GAC/B,gBAAAp7C,EAAA,cAAC,UAAK,WAAU,WAAU,aAAU,SAAA,GAAU,GAAGo7C,KAAA,gBAAAA,EAAgB,OAAO,EAAG,CAC7E,GAEA,gBAAAp7C,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,KAAKoE;AAAA,MACL,MAAK;AAAA,MACL,IAAIpE,EAAW;AAAA,MACf,WAAU;AAAA,MACV,UAAUA,EAAW;AAAA,MACrB,UAAUA,EAAW;AAAA,MACrB,UAAUyhB;AAAA,MACV,gBAAc1oB,EAAgBkoB,CAAQ;AAAA,MACtC,aAAWloB,EAAgBooB,CAAW,KAAKd,MAAkB;AAAA,MAC7D,iBAAetnB,EAAgBiH,EAAW,QAAQ;AAAA,MAClD,iBAAeyhB;AAAA,MACf,oBAAkB,CAAC,eAAezhB,EAAW,EAAE,iBAAiB0tC,EAAoB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAC9G,UAAUoE;AAAA,MACV,kBAAkBD;AAAA,IAAA;AAAA,EAAA,CAEtB,GAEA,gBAAA37C,EAAA,cAAC,OAAA,EAAI,WAAU,+CAAA,GACb,gBAAAA,EAAA;AAAA,IAACsX;AAAA,IAAA;AAAA,MACC,KAAKmB;AAAA,MACL,QAAA1D;AAAA,MACA,QAAAD;AAAA,MACA,UAAUwmC;AAAA,MACV,MAAK;AAAA,MACL,YAAAhpC;AAAA,MACA,iBAAiBqoC;AAAA,MACjB,mBAAmBC;AAAA,MACnB,iBAAiBC;AAAA,MACjB,gBAAgB1iC;AAAA,MAChB,cAAY2iC;AAAA,MACZ,kBAAgB;AAAA,MAChB,UAAA12C;AAAA,IAAA;AAAA,IAEA,gBAAApE,EAAA,cAAC0X,IAAA,EAAgB,OAAM,UAAS,MAAM,eAAe5N,EAAW,EAAE,iCAC/DoxC,EAAsB,IAAI,CAACf,IAAS7yC,OAAU;AAC7C,YAAM00C,KAAY,eAAelyC,EAAW,EAAE,+BAA+BqwC,GAAQ,GAAG,IAAIA,GAAQ,IAAI,IAAI7yC,EAAK,IAC3GypB,KAAaopB,GAAQ,SAASiB,EAAe;AAEnD,aACE,gBAAAp7C,EAAA;AAAA,QAAC2X;AAAA,QAAA;AAAA,UACC,KAAKqkC;AAAA,UACL,OAAO,GAAG7B,GAAQ,GAAG,IAAIA,GAAQ,IAAI;AAAA,UACrC,UAAUppB;AAAA,UACV,SAAO;AAAA,UACP,MAAMopB,GAAQ;AAAA,UACd,UAAUppB;AAAA,QAAA;AAAA,QACV,KAAKopB,GAAQ,IAAI,KAAKA,GAAQ,OAAO;AAAA,MAAA;AAAA,IAE3C,CAAC,CACH;AAAA,EAAA,CAEJ,CACF,GAECt3C,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,GAG1FvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,eAAepgB,EAAW,EAAE;AAAA,MAChC,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,eAAepgB,EAAW,EAAE;AAAA,MAChC,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC;AAEJ,GCzZM63C,KAAkC,CAAC;AAAA,EACvC,KAAAt7C,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,WAAAkC;AAAA,EACA,MAAAhC,IAAO;AAAA,EACP,UAAAG;AAAA,EAEA,OAAA3Q,IAAQ,CAAC,GAAG,CAAC;AAAA,EAEb,UAAA8sB;AAAA,EACA,aAAAE;AAAA,EACA,cAAAb;AAAA,EACA,eAAAD,IAAgB;AAAA,EAChB,mBAAAgrB;AAAA,EACA,eAAAjqB;AAAA,EACA,YAAAP;AAAA,EAEA,GAAGhrB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,EAAE,UAAAF,MAAamF,GAEf,CAACoyC,GAAYC,CAAa,IAAI/5C,EAAmB,CAACnE,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,CAAC,GAErEm+C,IAAgBl6C,EAAiBjE,CAAK,GAEtC6Z,IAAe5V,EAAuB,IAAI,GAE1Cm6C,IAAan6C,EAAyB,IAAI,GAC1Co6C,IAAap6C,EAAyB,IAAI;AAEhD,EAAAY;AAAA,IACEnC;AAAA,IACAmX;AAAA,IACA;AAAA,MACE,SAASrJ,MAAS,WAAW,CAAC4tC,EAAW,OAAO,IAAI,CAACA,EAAW,SAASC,EAAW,OAAO;AAAA,IAAA;AAAA,IAE7F,CAAC7tC,GAAMqJ,EAAa,SAASukC,EAAW,SAASC,EAAW,OAAO;AAAA,EAAA,GAGrEj6C,EAAU,MAAM;AACd,QAAI+5C,EAAc,QAAQ,CAAC,MAAMn+C,EAAM,CAAC,KAAKm+C,EAAc,QAAQ,CAAC,MAAMn+C,EAAM,CAAC,GAAG;AAClF,YAAMs+C,IAAS,CAAC,GAAGt+C,CAAK;AAExB,MAAIwQ,MAAS,aACX8tC,EAAO,CAAC,IAAI,OAAOzyC,EAAW,GAAG,IAGnCqyC,EAAcI,CAAM,GAEpBH,EAAc,UAAUG;AAAA,IAC1B;AAAA,EACF,GAAG,CAACt+C,CAAK,CAAC;AAEV,QAAMu+C,IAAoB,CAACD,MAA2B;AACpD,UAAM,CAACE,GAAYC,CAAW,IAAIH;AAMlC,QAJI9tC,MAAS,YACX0tC,EAAcI,CAAM,GAGlB9tC,MAAS,UAAU;AACrB,UAAIguC,IAAaC,KAAeA,IAAcD,KAAcA,MAAeC;AACzE;AAEF,MAAAP,EAAcI,CAAM;AAAA,IACtB;AAEA,IAAA53C,KAAA,QAAAA,EAAW43C;AAAA,EACb,GAEM5zC,IAAgB,MAAM;;AAC1B,KAAA9I,IAAAw8C,EAAW,YAAX,QAAAx8C,EAAoB,UAAU,OAAO,WACrC4H,IAAA60C,EAAW,YAAX,QAAA70C,EAAoB,UAAU,OAAO;AAAA,EACvC,GAEMiB,IAAkB,CAAClC,MAAsC;AAC7D,IAAAmC,EAAA,GAEenC,EAAI,OACZ,UAAU,IAAI,OAAO;AAAA,EAC9B,GAEM+nB,IAAsBnwB,EAAW,qBAAqB;AAAA,IAC1D,aAAa,CAACyE,EAAgB4N,CAAS;AAAA,IACvC,aAAa5N,EAAgBkoB,CAAQ;AAAA,EAAA,CACtC,GAEK,CAAC4xB,GAAcC,CAAe,IAAIx6C,EAAiB,SAAS;AAElE,EAAAC,EAAU,MAAM;AACd,UAAMw6C,IAAe,iBAAiB,SAAS,eAAe,EAAE,iBAAiB,qBAAqB,GAChGC,IAAiB,iBAAiB,SAAS,eAAe,EAAE,iBAAiB,qBAAqB,GAClGpE,IAAM,OAAO5uC,EAAW,GAAG,GAC3B6uC,IAAM,OAAO7uC,EAAW,GAAG;AAEjC,QAAI2E,MAAS,YAAY,CAACG,GAAU;AAClC,UAAImuC,KAAYb,EAAW,CAAC,IAAIxD,MAAQC,IAAMD,KAAQ;AACtD,MAAAqE,IAAU,KAAK,IAAIA,GAAS,GAAG,GAC/BH,EAAgB,6BAA6BC,CAAY,IAAIE,CAAO,MAAMD,CAAc,IAAIC,CAAO,MAAMD,CAAc,SAAS;AAChI;AAAA,IACF;AAEA,QAAIruC,MAAS,YAAY,CAACG,GAAU;AAClC,UAAIouC,KAAad,EAAW,CAAC,IAAIxD,MAAQC,IAAMD,KAAQ,KACnDuE,KAAaf,EAAW,CAAC,IAAIxD,MAAQC,IAAMD,KAAQ;AACvD,MAAAsE,IAAW,KAAK,IAAIA,GAAU,GAAG,GACjCC,IAAW,KAAK,IAAIA,GAAU,GAAG,GAEjCL;AAAA,QACE,6BAA6BE,CAAc,IAAIE,CAAQ,MAAMH,CAAY,IAAIG,CAAQ,MAAMH,CAAY,IAAII,CAAQ,MAAMH,CAAc,IAAIG,CAAQ;AAAA,MAAA;AAErJ;AAAA,IACF;AAEA,IAAAL,EAAgBE,CAAc;AAAA,EAChC,GAAG,CAAChzC,CAAU,CAAC;AAEf,QAAMozC,IAAa;AAAA,IACjB,YAAYP;AAAA,EAAA,GAGRQ,IAAgB/+C,EAAW,+CAA+C;AAEhF,MAAIo5C;AACJ,SAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,IAAuB,eAAe1tC,EAAW,EAAE,cAC1CjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,IAAuB,eAAe1tC,EAAW,EAAE,oBAEnD0tC,IAAuB,QAIvB,gBAAAx3C,EAAA,cAAC,OAAA,EAAI,WAAWuuB,GAAqB,KAAKzW,EAAA,GACxC,gBAAA9X,EAAA,cAAC,SAAA,EAAM,QAAQ6C,EAAgB4N,CAAS,GAAG,SAAS,GAAG3G,EAAW,EAAE,MAAM,WAAU,oBAAA,GACjFyE,CACH,mCAEC,OAAA,EAAI,WAAU,iBAAA,GACb,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAWm9C,GAAe,OAAOD,GAAY,GAClD,gBAAAl9C,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,WAAU;AAAA,MACV,MAAK;AAAA,MACL,IAAI,GAAGmK,EAAW,EAAE;AAAA,MACpB,UAAA8E;AAAA,MACA,UAAU,CAACrN,MAAUi7C,EAAkB,CAAC,OAAOj7C,EAAM,OAAO,KAAK,GAAG26C,EAAW,CAAC,CAAC,CAAC;AAAA,MAClF,OAAOA,EAAW,CAAC;AAAA,MACnB,KAAKG;AAAA,MACL,gBAAcx5C,EAAgBkoB,CAAQ;AAAA,MACtC,cAAYloB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,oBAAkB0tC;AAAA,MAClB,aAAa9uC;AAAA,MACb,WAAWC;AAAA,IAAA;AAAA,EAAA,GAGb,gBAAA3I,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,WAAU;AAAA,MACV,QAAQ8O,MAAS;AAAA,MACjB,MAAK;AAAA,MACL,IAAI,GAAG3E,EAAW,EAAE;AAAA,MACpB,UAAA8E;AAAA,MACA,UAAU,CAACrN,MAAUi7C,EAAkB,CAACN,EAAW,CAAC,GAAG,OAAO36C,EAAM,OAAO,KAAK,CAAC,CAAC;AAAA,MAClF,OAAO26C,EAAW,CAAC;AAAA,MACnB,KAAKI;AAAA,MACL,gBAAcz5C,EAAgBkoB,CAAQ;AAAA,MACtC,cAAYloB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,aAAapB;AAAA,MACb,WAAWC;AAAA,IAAA;AAAA,EAAA,CAEf,GAEC9F,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,EAAA,CAAwB,GAGtE9nB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA,cAACkqB,IAAA,EAAS,IAAI,eAAepgB,EAAW,EAAE,aAAa,eAAAqgB,GAA8B,cAAAC,GAA4B,WAAU,OAAA,CAAO,GAInIvnB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,eAAepgB,EAAW,EAAE;AAAA,MAChC,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,WAAU;AAAA,IAAA;AAAA,EAAA,CAGhB;AAEJ,GC5NMiI,KAAoC,CAAC;AAAA,EACzC,KAAAz8C,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,WAAAkC;AAAA,EACA,UAAAsa;AAAA,EACA,aAAAE;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,mBAAAgrB;AAAA,EACA,UAAA/wC;AAAA,EACA,cAAAgmB;AAAA,EACA,SAAAnmB;AAAA,EACA,MAAAyK;AAAA,EACA,eAAAwc;AAAA,EACA,YAAAP;AAAA,EACA,WAAA/pB;AAAA,EACA,UAAAoqB,IAAW;AAAA,EACX,UAAArmB;AAAA,EACA,GAAGhF;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,CAACg1C,GAAUC,CAAW,IAAI13C,EAAkB0H,EAAW,QAAQA,EAAW,MAAM,SAAA,EAAW,SAAS,IAAI,EAAK,GAE7GyhB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAKxDkP,IAAoB,CAAC1zB,MAAuC;AAChE,IAAAszC,EAAYtzC,EAAI,cAAc,MAAM,SAAS,CAAC,GAC9C7B,KAAA,QAAAA,EAAW6B;AAAA,EACb,GAEMwyC,IAAgBn2C,EAAgBuB,CAAQ,IAAI,SAAS,IAKrD60C,IAAoB,OACjB;AAAA;AAAA,IAEL,qBAAqB76C,EAAW,8BAA8B46C,GAAe;AAAA,MAC3E,iBAAiB,CAAClvC,EAAW;AAAA,MAC7B,kBAAkB,CAAC,CAACA,EAAW;AAAA,MAC/B,aAAajH,EAAgBkoB,CAAQ;AAAA,MAErC,gBAAgBloB,EAAgBooB,CAAW;AAAA,MAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,IAAA,CAChE;AAAA;AAAA,IAED,qBAAqB/rB;AAAA,MACnB;AAAA,MAEA;AAAA,QACE,QAAQmQ,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,QAC3C,eAAe,CAAClC,KAAS1L,EAAgB4N,CAAS;AAAA,QAClD,mBAAmBlC,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,MAAA;AAAA,IACxD;AAAA;AAAA,IAGF,cAAcrS;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,QACE,oBAAoB6F;AAAA;AAAA,QACpB,aAAa41C;AAAA,MAAA;AAAA,MAEfj5C;AAAA,IAAA;AAAA,IAGF,2BAA2BxC,EAAW,oBAAoB;AAAA,EAAA,IAIxD,EAAE,qBAAA86C,GAAqB,qBAAA5e,GAAqB,cAAA6e,GAAc,2BAAAC,EAAA,IAA8BH,EAAA,GAExFZ,IAAej6C,EAAW,sBAAsB46C,CAAa;AAEnE,MAAIxB;AACJ,EAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,IAAuB,gBAAgB1tC,EAAW,EAAE,cAC3CjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,IAAuB,gBAAgB1tC,EAAW,EAAE,oBAEpD0tC,IAAuB;AAGzB,QAAM,CAACC,GAAWC,CAAY,IAAIt1C,EAAuB,SAAS,GAC5Du1C,IAAmB,CAACh4C,EAAM,YAAY,CAACA,EAAM,WAAW83C,IAAY;AAE1E,SACE,gBAAAz3C,EAAA,cAAC,OAAA,EAAI,QAAQ,CAAC,CAAC8J,EAAW,QAAQ,WAAWovC,EAAA,GAE3C,gBAAAl5C,EAAA,cAAC,OAAA,EAAI,WAAWs6B,KACd,gBAAAt6B,EAAA,cAAC,SAAA,EAAM,QAAQ6C,EAAgB4N,CAAS,GAAG,SAAS3G,EAAW,IAAI,WAAWuuC,EAAA,GAC3E9pC,CACH,CACF,GAGA,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAU,oEAAA,GACb,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,MAAK;AAAA,MACL,WAAWqvC;AAAA,MACX,UAAU,CAAC,CAACrvC,EAAW;AAAA,MACvB,gBAAcjH,EAAgBkoB,CAAQ;AAAA,MACtC,cAAYloB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,oBAAkB0tC;AAAA,MAClB,KAAA72C;AAAA,MACA,UAAU4qB;AAAA,MACV,UAAU2O;AAAA,MACV,cAAc8a,GAAa0C,GAAc,OAAO;AAAA,MAChD,cAAc1C,GAAa0C,GAAc,SAAS;AAAA,MAClD,WAAW1C,GAAa0C,GAAc,QAAQ;AAAA,MAC9C,SAAS1C,GAAa0C,GAAc,SAAS;AAAA,IAAA;AAAA,EAAA,GAI9CzzC,KACC,gBAAAjE,EAAA,cAAC,OAAA,EAAI,WAAWo5C,EAAA,GACd,gBAAAp5C,EAAA,cAACU,MAAQ,OAAOi3C,EAAA,mCACbn3C,GAAA,EAAS,eAAW,IAAC,WAAU,wBAAuB,OAAM,WAAU,MAAMkO,KAAQ,UAAA,CAAW,GAChG,gBAAA1O,EAAA,cAACQ,KAAS,eAAW,IAAC,WAAU,sBAAqB,OAAM,SAAQ,OAAMkO,KAAA,gBAAAA,EAAM,QAAQ,QAAQ,aAAY,UAAA,CAAW,mCACrHlO,GAAA,EAAS,eAAW,IAAC,WAAU,uBAAsB,OAAM,UAAS,MAAMkO,KAAQ,WAAW,CAChG,CACF,GAGF,gBAAA1O,EAAA,cAAC,OAAA,EAAI,WAAU,6BAAA,GACb,gBAAAA,EAAA,cAACU,MAAQ,OAAOi3C,EAAA,mCACbn3C,GAAA,EAAS,OAAM,WAAU,MAAK,qBAAoB,eAAW,IAAC,WAAU,sBAAA,CAAsB,GAC/F,gBAAAR,EAAA,cAACQ,GAAA,EAAS,OAAM,SAAQ,MAAK,sBAAqB,eAAW,IAAC,WAAU,oBAAA,CAAoB,CAC9F,CACF,CACF,GAECqC,EAAgBqoB,CAAa,qCAAMR,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,GAAoB,GAG1FvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,gBAAgBpgB,EAAW,EAAE;AAAA,MACjC,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,gBAAgBpgB,EAAW,EAAE;AAAA,MACjC,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC;AAEJ,GCzLMi5C,KAAuB,CAACx8C,MAAwF;AACpH,MAAIy8C,IAAQ;AAEZ,SAAAx8C,EAAS,QAAQD,GAAU,CAAC2W,MAAiB;AAC3C,IAAIxW,EAAqCwW,CAAY,KACnD1W,EAAS,QAAQ0W,EAAa,MAAM,UAAU,CAACC,MAAgB;AAC7D,MAAIzW,EAAoCyW,CAAW,MACjD6lC,IAAQ7lC,EAAY,MAAM,WAAW6lC,IAAQA,IAAQ;AAAA,IAEzD,CAAC;AAAA,EAEL,CAAC,GAEMA;AACT,GAEMC,KAAoB,CAAC18C,MAAwF;AACjH,QAAM0O,IAAU,CAAA;AAEhB,SAAAzO,EAAS,QAAQD,GAAU,CAAC2W,MAAiB;AAC3C,IAAIxW,EAAqCwW,CAAY,KACnD1W,EAAS,QAAQ0W,EAAa,MAAM,UAAU,CAACC,MAAgB;AAC7D,MAAIzW,EAAoCyW,CAAW,KAAK,CAACA,EAAY,MAAM,YACzElI,EAAQ,KAAKkI,EAAY,KAAK;AAAA,IAElC,CAAC;AAAA,EAEL,CAAC,GAEMlI;AACT,GAEMiuC,KAAkB,CAAC38C,MAAwF;AAC/G,QAAM48C,IAAkB,CAAA;AAExB,SAAA38C,EAAS,QAAQD,GAAU,CAAC2W,MAAiB;AAC3C,IAAIxW,EAAqCwW,CAAY,KACnD1W,EAAS,QAAQ0W,EAAa,MAAM,UAAU,CAACC,MAAgB;AAC7D,MAAIzW,EAAoCyW,CAAW,KAC7CA,EAAY,MAAM,YACpBgmC,EAAgB,KAAKhmC,EAAY,KAAK;AAAA,IAG5C,CAAC;AAAA,EAEL,CAAC,GAEMgmC;AACT,GAyHMC,KAAoC,CAAC;AAAA,EACzC,KAAA/8C,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,WAAAkC;AAAA,EACA,aAAAktC,IAAc;AAAA,EACd,2BAAAC,IAA4B;AAAA,EAC5B,cAAAzlC,IAAe;AAAA,EACf,kBAAAvD;AAAA,EACA,SAAA3Q;AAAA,EACA,MAAAyK;AAAA,EACA,WAAAmvC;AAAA,EACA,aAAA5yB;AAAA,EACA,cAAAb;AAAA,EACA,eAAAD;AAAA,EACA,mBAAAgrB;AAAA,EACA,UAAA/wC;AAAA,EACA,UAAA2mB;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAArmB;AAAA,EACA,YAAA2N;AAAA,EACA,gBAAAH;AAAA,EACA,kBAAA2rC,IAAmB;AAAA,EACnB,wBAAAlD;AAAA,EACA,sBAAAD;AAAA,EACA,qBAAAE;AAAA,EACA,UAAAh6C,IAAW,CAAA;AAAA,EACX,qBAAAk9C;AAAA,EACA,MAAAtvC,IAAO;AAAA,EACP,mBAAAqsC;AAAA,EACA,eAAA5vB;AAAA,EACA,YAAAP;AAAA,EACA,GAAGhrB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,CAAC8T,GAAmBC,CAAoB,IAAIxW,EAAS,EAAK,GAE1D47C,IAAoB97C,EAAuB,IAAI,GAE/C+7C,IAAa/7C,EAAuB,IAAI,GAExCuW,IAAcvW,EAAwB,IAAI,GAG1C,CAACg8C,IAAcC,CAAe,IAAI/7C,EAAgC,CAAA,CAAE,GAEpEmpB,IAAa5rB,EAAM,WAAW,KAAQqrB,GAEtC,CAACysB,GAAWC,CAAY,IAAIt1C,EAAuB,SAAS,GAC5Du1C,IAAoBh4C,EAAM,WAAuB,YAAZ83C,GAErC2G,IAAiB,MAAM;AAC3B,IAAAD,EAAgB,CAAA,CAAE,GAClBx5C,KAAA,QAAAA,EAAW,CAAA;AAAA,EACb;AAEA,EAAAxB,GAAoBxC,GAAK,OAChB;AAAA,IACL,iBAAiBu9C;AAAA,IACjB,sBAAsBE;AAAA,EAAA,IAEvB,CAACF,EAAY,CAAC;AAEjB,QAAMG,KAAqBjgD;AAAA,IACzB;AAAA,IACA,EAAE,MAAMyE,EAAgBuB,CAAQ,EAAA;AAAA,IAChC;AAAA,MACE,UAAYvB,EAAgBiH,EAAW,QAAQ;AAAA,MAC/C,aAAao0C,GAAa,SAAS;AAAA,MACnC,aAAar7C,EAAgBkoB,CAAQ;AAAA,MACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,MAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,IAAA;AAAA,EACjE,GAGIm0B,KAAiBlgD,EAAW,8BAA8B;AAAA,IAC9D,mBAAmBua;AAAA,IACnB,oBAAoB1U;AAAA;AAAA,EAAA,CACrB;AAED,EAAA5B,EAAU,MAAM;AACd,UAAMk8C,KAAYf,GAAgB38C,CAAQ;AAC1C,IAAAs9C,EAAgBI,EAAS;AAAA,EAC3B,GAAG,CAAC19C,CAAQ,CAAC,GAEb29C,GAAgB,MAAM;;AACpB,IAAI7lC,OAAmB9Y,KAAA4Y,EAAY,YAAZ,QAAA5Y,GAAqB;AAAA,EAC9C,GAAG,CAAC8Y,CAAiB,CAAC;AAEtB,QAAM8lC,KAAoBpB,GAAqBx8C,CAAQ,GAEjD69C,KAAmBz3C,GAAQ,MAAM;;AACrC,UAAM03C,KAAmBT,GAAa,WAAWO;AAGjD,WAAIP,GAAa,SAAS,IACjBP,IAILO,GAAa,WAAW,MACnBr+C,KAAAq+C,GAAa,CAAC,EAAE,aAAhB,gBAAAr+C,GAA0B,eAAc,KAI5C8+C,KAKEb,IAJE,GAAGI,GAAa,MAAM,IAAIN,CAAyB;AAAA,EAK9D,GAAG,CAACD,GAAaC,GAA2BE,GAAkBI,EAAY,CAAC,GAErEU,KAAe,MAAM;;AACzB,IAAK90C,EAAW,aACdjK,KAAAo+C,EAAW,YAAX,QAAAp+C,GAAoB;AAAA,EAExB,GAEMkV,KAAS,MAAM;;AACnB,IAAA6D,EAAqB,EAAK,IAC1B/Y,KAAAo+C,EAAW,YAAX,QAAAp+C,GAAoB;AAAA,EACtB,GAEMiV,KAAS,MAAM;AACnB,IAAA8D,EAAqB,EAAI;AAAA,EAC3B,GAEMimC,KAAmB,CAACtC,OAAkC;AAC1D,IAAA4B,EAAgB5B,EAAM,GACtB53C,KAAA,QAAAA,EAAW43C;AAAA,EACb,GAEMuC,KAAiB,MAAM;;AAC3B,KAAIj/C,KAAA4Y,EAAY,YAAZ,QAAA5Y,GAAqB,cACvB4H,KAAAgR,EAAY,YAAZ,QAAAhR,GAAqB,UAErB+D,KAAAiN,EAAY,YAAZ,QAAAjN,GAAqB;AAAA,EAEzB,GAEMuzC,KAAyB,MAAM;AACnC,IAAAD,GAAA;AAAA,EACF,GAEME,KAAkC,CAACx4C,OAAuC;AAC9E,UAAMyJ,KAAOzJ,GAAI;AACjB,QAAI,CAAAsD,EAAW,UAMf;AAAA,WAJImG,OAAS,WAAWA,OAAS,iBAAiBA,OAAS,YACzD6uC,GAAA,IAGG7uC,OAAS,eAAeA,OAAS,cAAc,CAAC0I,GAAmB;AACtE,QAAAnS,GAAI,eAAA;AAEJ,cAAMy4C,KAAiB1B,GAAkB18C,CAAQ;AACjD,YAAIo+C,GAAe,WAAW,EAAG;AAEjC,cAAM/tC,KAAe+tC,GAAe,UAAU,CAACnvC,OAAQouC,GAAa,CAAC,KAAKpuC,GAAI,UAAUouC,GAAa,CAAC,EAAE,KAAK;AAE7G,YAAItY;AAQJ,YANI31B,OAAS,cACX21B,KAAY10B,KAAe+tC,GAAe,SAAS,IAAI/tC,KAAe,IAAIA,KAE1E00B,KAAY10B,KAAe,IAAIA,KAAe,IAAI,GAGhD00B,OAAc10B,MAAgBgtC,GAAa,WAAW,GAAG;AAC3D,gBAAMgB,KAAaD,GAAerZ,MAAa,IAAIA,KAAY,CAAC;AAChE,UAAAuY,EAAgB,CAACe,EAAU,CAAC,GAC5Bv6C,KAAA,QAAAA,EAAW,CAACu6C,EAAU;AAAA,QACxB;AAAA,MACF;AAEA,MAAAxH,EAAa,QAAQ;AAAA;AAAA,EACvB;AAEA,EAAAr1C,EAAU,MAAM;AACd,UAAM+rB,KAAqB,CAAC5nB,OAAoB;;AAC9C,OAAI3G,KAAA4Y,EAAY,YAAZ,QAAA5Y,GAAqB,cAAc,GAAC4H,KAAAu2C,EAAkB,YAAlB,QAAAv2C,GAA2B,SAASjB,GAAI,YAC9EiS,EAAY,QAAQ,KAAA;AAAA,IAExB;AAEA,wCAAU,iBAAiB,SAAS2V,KAE7B,MAAM;AACX,mCAAU,oBAAoB,SAASA;AAAA,IACzC;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAMiqB,KAAej6C,EAAW,4BAA4B,EAAE,MAAMyE,EAAgBuB,CAAQ,GAAG;AAE/F,MAAIozC;AACJ,SAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,KAAuB,gBAAgB1tC,EAAW,EAAE,cAC3CjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,KAAuB,gBAAgB1tC,EAAW,EAAE,oBAEpD0tC,KAAuB,QAIvB,gBAAAx3C,EAAA,cAAC,OAAA,EAAI,WAAWq+C,IAAoB,QAAQ,CAAC,CAACv0C,EAAW,OAAA,GACtD,CAACjH,EAAgB4N,CAAS,KACzB,gBAAAzQ,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI,sBAAsB8J,EAAW,EAAE;AAAA,MACvC,SAAS,sBAAsBA,EAAW,EAAE;AAAA,MAC5C,WAAWuuC;AAAA,MACX,gBAAgBuG;AAAA,IAAA;AAAA,IAEfrwC;AAAA,EAAA,GAIL,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAU,sCAAqC,KAAKg+C,KACvD,gBAAAh+C,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKi+C;AAAA,MACL,IAAI,sBAAsBn0C,EAAW,EAAE;AAAA,MACvC,mBAAiB,sBAAsBA,EAAW,EAAE;AAAA,MACpD,MAAK;AAAA,MACL,gBAAcjH,EAAgBkoB,CAAQ;AAAA,MACtC,iBAAeloB,EAAgBiH,EAAW,QAAQ;AAAA,MAClD,iBAAe6O;AAAA,MACf,iBAAe7O,EAAW;AAAA,MAC1B,iBAAeyhB;AAAA,MACf,cAAY1oB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,oBAAkB0tC;AAAA,MAClB,WAAW8G;AAAA,MACX,UAAUx0C,EAAW,WAAW,KAAK;AAAA,MACrC,SAASi1C;AAAA,MACT,WAAWC;AAAA,MACX,cAAchK,GAAa0C,GAAc,OAAO;AAAA,MAChD,cAAc1C,GAAa0C,GAAc,SAAS;AAAA,MAClD,SAAS1C,GAAa0C,GAAc,SAAS;AAAA,IAAA;AAAA,IAE7C,gBAAA13C,EAAA,cAAC,OAAA,EAAI,WAAU,aACZiE,KACC,gBAAAjE,EAAA,cAAC,OAAA,EAAI,WAAU,mEACZU,IAAA,EAAQ,OAAOi3C,EAAA,GACd,gBAAA33C,EAAA,cAACQ,KAAS,eAAW,IAAC,WAAU,wBAAuB,OAAM,WAAU,MAAMkO,KAAQ,WAAW,GAChG,gBAAA1O,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,WAAU,sBAAqB,OAAM,SAAQ,OAAMkO,KAAA,gBAAAA,EAAM,QAAQ,QAAQ,aAAY,WAAW,GACtH,gBAAA1O,EAAA,cAACQ,KAAS,eAAW,IAAC,WAAU,uBAAsB,OAAM,UAAS,MAAMkO,KAAQ,UAAA,CAAW,CAChG,CACF,GAGF,gBAAA1O,EAAA,cAAC,QAAA,EAAK,WAAU,gBAAA,GAAiB0+C,EAAiB,GAEjDb,KACC,gBAAA79C,EAAA,cAAC8c,IAAA,EAAK,MAAK,SAAQ,YAAW,WAAU,SAAQ,WAAU,UAAA1Y,KACvDy5C,CACH,CAEJ;AAAA,IAEA,gBAAA79C,EAAA,cAAC,OAAA,EAAI,WAAU,+CACZU,IAAA,EAAQ,OAAOiY,IAAoB,WAAW,UAAA,GAC7C,gBAAA3Y,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,WAAU,wBAAuB,OAAM,WAAU,MAAK,0BAAyB,GACrG,gBAAAR,EAAA,cAACQ,KAAS,eAAW,IAAC,WAAU,uBAAsB,OAAM,UAAS,MAAK,uBAAA,CAAuB,CACnG,CACF;AAAA,EAAA,GAGF,gBAAAR,EAAA,cAAC,OAAA,EAAI,WAAU,+CAAA,GACb,gBAAAA,EAAA;AAAA,IAACsX;AAAA,IAAA;AAAA,MACC,KAAKmB;AAAA,MACL,IAAI3O,EAAW;AAAA,MACf,cAAYgxC;AAAA,MACZ,MAAArsC;AAAA,MACA,gBAAA0D;AAAA,MACA,gBAAgBgG;AAAA,MAChB,kBAAAvD;AAAA,MACA,YAAAtC;AAAA,MACA,iBAAiBqoC;AAAA,MACjB,mBAAmBC;AAAA,MACnB,iBAAiBC;AAAA,MACjB,gBAAgBkD;AAAA,MAChB,UAAUc;AAAA,MACV,QAAA9pC;AAAA,MACA,QAAAD;AAAA,MACA,UAAA1Q;AAAA,IAAA;AAAA,IAECvD;AAAA,EAAA,CAEL,GACCgC,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,CAC7F,GAECvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,gBAAgBpgB,EAAW,EAAE;AAAA,MACjC,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,gBAAgBpgB,EAAW,EAAE;AAAA,MACjC,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC;AAEJ,GC7cM+6C,KAAgC,CAAC;AAAA,EACrC,KAAAx+C,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,WAAAkC;AAAA,EACA,UAAAsa;AAAA,EACA,aAAAE;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,mBAAAgrB;AAAA,EACA,UAAA/wC;AAAA,EACA,cAAAgmB;AAAA,EACA,SAAAnmB;AAAA,EACA,MAAAyK;AAAA,EACA,eAAAwc;AAAA,EACA,YAAAP;AAAA,EACA,WAAA/pB;AAAA,EACA,UAAAoqB,IAAW;AAAA,EACX,UAAArmB;AAAA,EACA,GAAGhF;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,CAACg1C,GAAUC,CAAW,IAAI13C,EAAkB0H,EAAW,QAAQA,EAAW,MAAM,SAAA,EAAW,SAAS,IAAI,EAAK,GAE7GyhB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAKxDkP,IAAoB,CAAC1zB,MAAuC;AAChE,IAAAszC,EAAYtzC,EAAI,cAAc,MAAM,SAAS,CAAC,GAC9C7B,KAAA,QAAAA,EAAW6B;AAAA,EACb,GAKMyyC,IAAoB,OACjB;AAAA;AAAA,IAEL,qBAAqB76C;AAAA,MACnB;AAAA,MACA,EAAE,MAAMyE,EAAgBuB,CAAQ,EAAA;AAAA,MAChC;AAAA,QACE,iBAAiB,CAAC0F,EAAW;AAAA,QAC7B,kBAAkB,CAAC,CAACA,EAAW;AAAA,QAE/B,aAAajH,EAAgBkoB,CAAQ;AAAA,QACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,QAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,MAAA;AAAA,IACjE;AAAA;AAAA,IAGF,qBAAqB/rB;AAAA,MACnB;AAAA,MAEA;AAAA,QACE,QAAQmQ,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,QAC3C,eAAe,CAAClC,KAAS1L,EAAgB4N,CAAS;AAAA,QAClD,mBAAmBlC,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,MAAA;AAAA,IACxD;AAAA;AAAA,IAGF,cAAcrS;AAAA,MACZ;AAAA,MACA;AAAA,QACE,oBAAoB6F;AAAA;AAAA,QACpB,aAAa41C;AAAA,MAAA;AAAA,MAEfj5C;AAAA,IAAA;AAAA,IAEF,2BAA2BxC,EAAW,oBAAoB;AAAA,EAAA,IAIxD,EAAE,qBAAA86C,GAAqB,qBAAA5e,GAAqB,cAAA6e,GAAc,2BAAAC,EAAA,IAA8BH,EAAA,GAExFZ,IAAej6C,EAAW,oBAAoB,EAAE,MAAMyE,EAAgBuB,CAAQ,GAAG;AAEvF,MAAIozC;AACJ,EAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,IAAuB,cAAc1tC,EAAW,EAAE,cACzCjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,IAAuB,cAAc1tC,EAAW,EAAE,oBAElD0tC,IAAuB;AAGzB,QAAM,CAACC,GAAWC,CAAY,IAAIt1C,EAAuB,SAAS,GAC5Du1C,IAAmB,CAACh4C,EAAM,YAAY,CAACA,EAAM,WAAW83C,IAAY;AAE1E,SACE,gBAAAz3C,EAAA,cAAC,OAAA,EAAI,QAAQ,CAAC,CAAC8J,EAAW,QAAQ,WAAWovC,EAAA,GAE3C,gBAAAl5C,EAAA,cAAC,OAAA,EAAI,WAAWs6B,EAAA,mCACb,SAAA,EAAM,QAAQz3B,EAAgB4N,CAAS,GAAG,SAAS3G,EAAW,IAAI,WAAWuuC,EAAA,GAC3E9pC,CACH,CACF,GAGA,gBAAAvO,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,cAAcg1C,GAAa0C,GAAc,OAAO;AAAA,MAChD,cAAc1C,GAAa0C,GAAc,SAAS;AAAA,MAClD,WAAW1C,GAAa0C,GAAc,QAAQ;AAAA,MAC9C,SAAS1C,GAAa0C,GAAc,SAAS;AAAA,IAAA;AAAA,IAE7C,gBAAA13C,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG8J;AAAA,QACJ,MAAK;AAAA,QACL,WAAWqvC;AAAA,QACX,UAAU,CAAC,CAACrvC,EAAW;AAAA,QACvB,gBAAcjH,EAAgBkoB,CAAQ;AAAA,QACtC,aAAWloB,EAAgBooB,CAAW,KAAKd,MAAkB;AAAA,QAC7D,cAAYtnB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,QACtG,oBAAkB0tC;AAAA,QAClB,KAAA72C;AAAA,QACA,UAAU4qB;AAAA,QACV,UAAU2O;AAAA,MAAA;AAAA,IAAA;AAAA,IAIXj2B,KACC,gBAAAjE,EAAA,cAAC,OAAA,EAAI,WAAWo5C,EAAA,GACd,gBAAAp5C,EAAA,cAACU,MAAQ,OAAOi3C,qCACbn3C,GAAA,EAAS,eAAW,IAAC,OAAM,WAAU,MAAMkO,KAAQ,UAAA,CAAW,GAC/D,gBAAA1O,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,OAAM,SAAQ,OAAMkO,KAAA,gBAAAA,EAAM,QAAQ,QAAQ,aAAY,WAAW,mCACtFlO,GAAA,EAAS,eAAW,IAAC,OAAM,UAAS,MAAMkO,KAAQ,UAAA,CAAW,CAChE,CACF;AAAA,EAAA,GAIH7L,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,GAG1FvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,cAAcpgB,EAAW,EAAE;AAAA,MAC/B,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,cAAcpgB,EAAW,EAAE;AAAA,MAC/B,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC;AAEJ,GCtKMg7C,KAAwC,CAAC;AAAA,EAC7C,KAAAz+C,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,WAAAkC;AAAA,EACA,UAAAsa;AAAA,EACA,aAAAE;AAAA,EACA,iBAAAo0B;AAAA,EACA,cAAAj1B;AAAA,EACA,eAAAD,IAAgB;AAAA,EAChB,mBAAAgrB;AAAA,EACA,UAAA/wC;AAAA,EACA,eAAA8mB;AAAA,EACA,YAAAP;AAAA,EACA,WAAA/pB;AAAA,EACA,UAAAoqB,IAAW;AAAA,EACX,UAAUlP;AAAA,EACV,OAAOF;AAAA,EACP,cAAAC;AAAA,EACA,GAAGlc;AACL,MAAM;;AAEJ,QAAMoF,IAAe,OAAO6W,IAAkB,KACxC5W,IAAkB,OAAO6W,IAAgB,KAEzC,CAACI,GAAeC,CAAgB,IAAI9Z,EAAS4C,IAAkB6W,IAAe,EAAE,GAEhF5d,IAAQ8G,IAAe6W,IAAiBK,GAGxCtX,IAAW,CAAC2pB,MAAwC;AAGxD,IAAIxS,KACFA,EAAkBwS,CAAC,GAIhBvpB,KACHmX,EAAiBoS,EAAE,OAAO,KAAK;AAAA,EAEnC,GAEMzpB,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,GAAO,OAAA1B,EAAA;AAE/B,EAAA6L,EAAW,KAAKA,EAAW,MAAMjF,GAEjCiF,EAAW,OAAO,KAAK,IAAIA,EAAW,QAAQ,GAAG,CAAC;AAElD,QAAM,CAAC+vC,GAAUC,CAAW,IAAI13C,EAAkB0H,EAAW,QAAQA,EAAW,MAAM,SAAA,EAAW,SAAS,IAAI,EAAK,GAE7GyhB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAKxDkP,IAAoB,CAAC1zB,MAA0C;AACnE,IAAAszC,EAAYtzC,EAAI,cAAc,MAAM,SAAS,CAAC,GAC9C7B,EAAS6B,CAAG;AAAA,EACd,GAEMwyC,IAAgBn2C,EAAgBuB,CAAQ,IAAI,SAAS,IAKrD60C,IAAoB,OACjB;AAAA;AAAA,IAEL,qBAAqB76C,EAAW,gCAAgC46C,GAAe;AAAA,MAC7E,iBAAiB,CAAClvC,EAAW;AAAA,MAC7B,kBAAkBA,EAAW;AAAA,MAC7B,aAAajH,EAAgBkoB,CAAQ;AAAA,MACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,MAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,IAAA,CAChE;AAAA;AAAA,IAED,qBAAqB/rB,EAAW,uBAAuB,QAAQ,aAAa;AAAA,MAC1E,QAAQmQ,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,MAC3C,eAAe,CAAClC,KAAS1L,EAAgB4N,CAAS;AAAA,MAClD,mBAAmBlC,KAAS,CAAC1L,EAAgB4N,CAAS;AAAA,IAAA,CACvD;AAAA;AAAA,IAED,cAAcrS;AAAA,MACZ;AAAA,MACA;AAAA,QACE,aAAay7C;AAAA,MAAA;AAAA,MAEfj5C;AAAA,IAAA;AAAA,EACF,IAIE,EAAE,qBAAAs4C,GAAqB,qBAAA5e,GAAqB,cAAA6e,EAAA,IAAiBF,EAAA,GAE7DZ,IAAej6C,EAAW,wBAAwB46C,CAAa,GAE/DsG,IAAqBlhD,EAAW,gBAAgB46C,CAAa;AAEnE,MAAIxB;AACJ,SAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,IAAuB,kBAAkB1tC,EAAW,EAAE,cAC7CjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,IAAuB,kBAAkB1tC,EAAW,EAAE,oBAEtD0tC,IAAuB,QAIvB,gBAAAx3C,EAAA,cAAC,OAAA,EAAI,QAAQ8J,EAAW,QAAQ,WAAWovC,EAAA,GAEzC,gBAAAl5C,EAAA,cAAC,OAAA,EAAI,WAAWs6B,KACd,gBAAAt6B,EAAA,cAAC,SAAA,EAAM,QAAQ6C,EAAgB4N,CAAS,GAAG,SAAS3G,EAAW,IAAI,WAAWuuC,EAAA,GAC3E9pC,CACH,CACF,GAGA,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAU,2CAAA,GACb,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,WAAWqvC;AAAA,MACX,gBAAct2C,EAAgBkoB,CAAQ;AAAA,MACtC,cAAYloB,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,oBAAkB0tC;AAAA,MAClB,UAAUjsB;AAAA,MACV,KAAA5qB;AAAA,MACA,UAAUu5B;AAAA,MACV,OAAAj8B;AAAA,IAAA;AAAA,EAAA,CAEJ,GAEC4E,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,IAGzFvB,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,KAAKloB,EAAgBw8C,CAAe,MAC5F,gBAAAr/C,EAAA,cAAC,OAAA,EAAI,WAAU,0BACb,gBAAAA,EAAA,cAAC,OAAA,MAEE6C,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,kBAAkBpgB,EAAW,EAAE;AAAA,MACnC,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,kBAAkBpgB,EAAW,EAAE;AAAA,MACnC,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC,GAGCvB,EAAgBw8C,CAAe,KAC9B,gBAAAr/C,EAAA,cAAC,OAAA,EAAI,WAAWs/C,EAAA,GACd,gBAAAt/C,EAAA,cAAC,QAAA,MAAM,KAAGH,KAAA5B,KAAA,gBAAAA,EAAO,eAAP,gBAAA4B,GAAmB,WAAU,CAAC,EAAG,GAC1CiK,EAAW,aAAa,gBAAA9J,EAAA,cAAC,QAAA,MAAM,MAAM8J,EAAW,SAAS,EAAG,CAC/D,CAEJ,CAEJ;AAEJ,GCnOay1C,KAAmC,8BACnCC,KAAsC,qBAEtCC,KAAsB;AAAA,EACjC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV,GAEaC,KAAa;AAAA,EACxB,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,KAAY;AAAA,EACvB,QAAQ;AAAA,EACR,QAAQD,GAAW;AACrB,GAEaE,KAAa,CAACC,GAAuBC,GAAiBC,MAAoB;AACrF,MAAIC,IAAe,SAASH,GAAgB,EAAE;AAE9C,SAAI,MAAMG,CAAY,KAEXA,IAAeF,IADxBE,IAAeF,IAGNE,IAAeD,MACxBC,IAAeD,IAGVC,EAAa,SAAA,EAAW,SAAS,GAAG,GAAG;AAChD,GAEaC,KAAe,CAACC,GAAyBC,GAAmBC,MAAsB;AAC7F,MAAIJ,IAAe,SAASE,GAAkB,EAAE;AAEhD,SAAI,MAAMF,CAAY,KAEXA,IAAeG,IADxBH,IAAeG,IAGNH,IAAeI,MACxBJ,IAAeI,IAGVJ,EAAa,SAAA,EAAW,SAAS,GAAG,GAAG;AAChD,GAEaK,KAAiB,CAC5BC,GACAC,GACAC,GACAC,MACG,GAAGF,CAAY,IAAIC,CAAc,GAAGF,IAAY,IAAIG,KAAA,gBAAAA,EAAgB,aAAa,KAAK,EAAE,IAEhFC,KAAgB,CAACJ,GAAoBK,GAAsBC,MAA2B;AACjG,MAAIf,IAAOe,MAAe,OAAO,OAAO,MACpCV,IAASP,GAAU,QACnBkB,IAASlB,GAAU;AAEvB,QAAMmB,IAAQR,IAAYf,GAAiC,KAAKoB,CAAY,IAAInB,GAAoC,KAAKmB,CAAY;AAErI,SAAIG,MACFjB,IAAOiB,EAAM,CAAC,GACdZ,IAASY,EAAM,CAAC,GAChBD,IAASC,EAAM,CAAC,IAGX;AAAA,IACL,cAAc,SAASjB,GAAM,EAAE,EAAE,WAAW,SAAS,GAAG,GAAG;AAAA,IAC3D,gBAAgB,SAASK,GAAQ,EAAE,EAAE,WAAW,SAAS,GAAG,GAAG;AAAA,IAC/D,gBAAgBW,KAAA,gBAAAA,EAAQ;AAAA,EAAY;AAExC,GAEaE,KAAkB,CAC7BT,GACAU,GACAlB,GACAC,GACAI,GACAC,MACY;AACZ,MAAI,OAAOY,KAAa;AACtB,WAAO;AAGT,MAAIA,MAAa;AACf,WAAO;AAGT,QAAMF,IAAQR,IAAYf,GAAiC,KAAKyB,CAAQ,IAAIxB,GAAoC,KAAKwB,CAAQ;AAE7H,MAAI,CAACF;AACH,WAAO;AAGT,QAAMjB,IAAO,SAASiB,EAAM,CAAC,GAAG,EAAE,GAC5BZ,IAAS,SAASY,EAAM,CAAC,GAAG,EAAE;AAEpC,SAAOjB,KAAQC,KAAWD,KAAQE,KAAWG,KAAUC,KAAaD,KAAUE;AAChF,GCjEaa,KAAmB7zC,GAAsD,MAAS,GAOlF8zC,KAA6D,CAAC,EAAE,eAAAC,GAAe,UAAAtgD,QAAe;AACzG,QAAM,CAAC0/C,GAAca,CAAe,IAAIh/C,EAAS++C,EAAc,mBAAmB,OAAO,OAAO,IAAI,GAC9F,CAACX,GAAgBa,CAAiB,IAAIj/C,EAASu9C,GAAU,MAAM,GAC/D,CAACc,GAAgBa,CAAiB,IAAIl/C,EAAqBu9C,GAAU,MAAoB,GACzF,CAAC4B,GAAcC,CAAe,IAAIp/C,EAAS++C,EAAc,YAAY,GAErEM,IAAgBx6C;AAAA,IACpB,OAAO;AAAA,MACL,GAAGk6C;AAAA,MACH,cAAAZ;AAAA,MACA,iBAAAa;AAAA,MACA,gBAAAZ;AAAA,MACA,mBAAAa;AAAA,MACA,gBAAAZ;AAAA,MACA,mBAAAa;AAAA,MACA,cAAAC;AAAA,MACA,iBAAAC;AAAA,IAAA;AAAA,IAEF,CAACL,GAAeZ,GAAcC,GAAgBC,GAAgBc,CAAY;AAAA,EAAA;AAG5E,SAAO,gBAAAvhD,EAAA,cAACihD,IAAA,EAAiB,OAAOQ,EAAA,GAAgB5gD,CAAS;AAC3D,GAEa6gD,KAAsB,MAAM;AACvC,QAAMjvC,IAAUnF,GAAW2zC,EAAgB;AAC3C,MAAI,CAACxuC;AACH,UAAM,IAAI,MAAM,oEAAoE;AAEtF,SAAOA;AACT,GC3DMkvC,KAA8B,CAAC;AAAA,EACnC,KAAAhhD,IAAM;AAAA,EACN,mBAAAihD;AAAA,EACA,WAAAhhD;AAAA,EACA,sBAAAihD;AAAA,EACA,wBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,GAAGpiD;AACL,MAAM;AACJ,QAAMqiD,IAAUN,GAAA,GAEVxzC,IAAWhM,EAAgC,IAAI,GAE/Co+C,IAAY0B,EAAQ,mBAAmB;AAE7C,EAAA7+C,GAAoBxC,GAAK,MAChBuN,EAAS,SACf,CAACA,EAAS,OAAO,CAAC,GAGrB7L,EAAU,MAAM;AACd,UAAMqG,IAAkB,MAAQ,OAA8C,cAAc,IACtFC,IAAgB,MAAQ,OAA8C,cAAc;AAE1F,kBAAO,iBAAiB,aAAaD,CAAe,GACpD,OAAO,iBAAiB,WAAWC,CAAa,GACzC,MAAM;AACX,aAAO,oBAAoB,aAAaD,CAAe,GACvD,OAAO,oBAAoB,WAAWC,CAAa;AAAA,IACrD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAM+rC,IAAkBt2C,EAAW,oBAAoBwC,CAAS,GAE1DqhD,IAAmB,CAACC,GAA2BrmC,MAC/CqmC,IACEA,EAAM,WAAW,IAEZA,EAAM,OAAO,CAAC,IACZA,EAAM,SAAS,IAEjBA,EAAM,MAAM,GAAG,CAAC,IAElBA,IAGArmC,GAILsmC,IAAkBF,EAAiBJ,GAAsBpC,GAAoB,IAAI,GACjF2C,IAAoBH,EAAiBH,GAAwBrC,GAAoB,MAAM,GACvF4C,IAAoBJ,EAAiBF,GAAwBtC,GAAoB,MAAM,GAEvF6C,IAAuB,GAAGH,CAAe,IAAIC,CAAiB,GAAG9B,IAAY,IAAI+B,CAAiB,KAAK,EAAE,IAEzGE,IAAwB,CAAC,EAAE,mBAAAC,IAAoB,IAAO,mBAAAC,IAAoB,SAAY;;AAC1F,UAAM7N,MAAc/0C,IAAAqO,EAAS,YAAT,gBAAArO,EAAkB,UAAS;AAwB/C,SAtBoB,MAAM;AACxB,UAAI6iD,IAAU3B,GAAgBT,GAAW1L,GAAaoN,EAAQ,UAAUA,EAAQ,UAAUA,EAAQ,YAAYA,EAAQ,UAAU;AAGhI,UAAIQ,GAAmB;AACrB,cAAMG,IAAwB/N,EAAY,MAAM,GAAG,CAAC,MAAMuN,GACpDS,IAA0BhO,EAAY,MAAM,GAAG,CAAC,MAAMwN,GACtDS,IAA0BvC,IAAY1L,EAAY,MAAM,GAAG,CAAC,MAAMyN,IAAoB;AAE5F,QAAAK,IAAUA,KAAWC,KAAyBC,KAA2BC;AAAA,MAC3E;AAEA,aAAOH;AAAA,IACT,QAGEd,EAAkBhN,CAAW,GAC7BoN,EAAQ,gBAAgBpN,CAAW,KAC1B1mC,EAAS,WAAWu0C,MAC7Bv0C,EAAS,QAAQ,QAAQ,KAGvBA,EAAS,SAAS;AACpB,YAAM4mC,IAAe1zC,GAAuC8M,EAAS,SAAS,QAAQ;AACtF,MAAA5K,GAAa,MAAA;;AAAM,gBAAAzD,IAAAF,EAAM,aAAN,gBAAAE,EAAA,KAAAF,GAAiBm1C;AAAA,OAA8C;AAAA,IACpF;AAAA,EACF,GAEMgO,IAAa,MAAM;AACvB,IAAKnjD,EAAM,YACT4iD,EAAsB,CAAA,CAAE;AAAA,EAE5B,GAEMj6C,IAAc,CAAC9B,MAA4C;AAC/D,QAAI,CAAC7G,EAAM,UAAU;AACnB,YAAMuiD,IAAQ17C,EAAI,QACZu8C,IAAWb,EAAM;AAEvB,MAAIa,KAAY,IACdb,EAAM,kBAAkB,GAAG,CAAC,IACnBa,KAAY,KAAKA,KAAY,IACtCb,EAAM,kBAAkB,GAAG,CAAC,IACnBa,KAAY,KACrBb,EAAM,kBAAkB,GAAG,CAAC;AAAA,IAEhC;AAAA,EACF,GAEMc,IAAc,CAACx8C,MAAsC;;AACzD,QAAI,CAAC7G,EAAM,UAAU;AACnB,YAAMuiD,IAAQ17C,EAAI,QACZy8C,MACHpjD,IAAA2G,KAAA,gBAAAA,EAAgG,uBAAhG,gBAAA3G,EACG,sBAAqB,MAAU,OAA8C;AAEnF,MAAKqiD,EAAM,UACTA,EAAM,QAAQI,IAGXW,KACHf,EAAM,kBAAkB,GAAG,CAAC;AAAA,IAEhC;AAAA,EACF,GAEMgB,IAAa,CACjB3G,GACA/1C,GACA28C,MACS;AACT,UAAM,EAAE,OAAAjB,GAAO,OAAAkB,GAAO,KAAAC,GAAK,aAAA1F,GAAa,UAAA2F,GAAU,UAAAC,GAAU,KAAA7kD,MAAQ69C,GAE9DiH,IAAa,CAACC,GAAmBC,GAAiBzlD,MAAkB;AACxE,MAAAikD,EAAM,QAAQ,GAAGA,EAAM,MAAM,MAAM,GAAGuB,CAAS,CAAC,GAAGxlD,CAAK,GAAGikD,EAAM,MAAM,MAAMwB,CAAO,CAAC,IACrFxB,EAAM,kBAAkBuB,GAAWC,CAAO;AAAA,IAC5C,GAEMC,IAAkB,CAACC,MAA2B;AAClD,MAAAJ;AAAA,QACEJ;AAAA,QACAC;AAAA,QACA,KAAK,IAAI,KAAK,IAAI,SAASO,CAAQ,GAAGN,CAAQ,GAAGC,CAAQ,EACtD,SAAA,EACA,SAAS,GAAG,GAAG;AAAA,MAAA;AAAA,IAEtB,GAEMM,KAAoB,CAACC,MAA6B;AACtD,YAAMxN,IAAe,SAAS4L,EAAM,MAAM,MAAMkB,GAAOC,CAAG,CAAC,KAAK,GAC1DO,IAAWE,IAEPxN,KAAgBiN,IACXD,IAEAhN,IAAe,IAIpBA,KAAgBgN,IACXC,IAEAjN,IAAe;AAI9B,MAAAqN,EAAgBC,EAAS,UAAU;AAAA,IACrC,GAEMG,IAAoB,MAAY;AACpC,YAAMzN,IAAe4L,EAAM,MAAM,MAAMkB,GAAOC,CAAG,GAC3CO,IACJtN,MAAiB,QAAQ,CAACA,EAAa,WAAW,GAAG,KAAKA,MAAiBqH,IAAc,IAAIj/C,CAAG,KAAK43C,EAAa,OAAO,CAAC,IAAI53C;AAEhI,MAAAilD,EAAgBC,CAAQ;AAExB,YAAMI,IAAiB,SAASJ,CAAQ,GAClCK,IAAkBD,KAAkB,IACpCE,KAAmCF,IAAiB,MAAMT;AAChE,OAAIU,KAAmBC,OAErBhC,EAAM,kBAAkBmB,IAAM,GAAGA,IAAM,CAAC;AAAA,IAE5C,GAEMc,IAAoB,MAAY;AACpC,UAAI,CAAC7D,EAAW;AAEhB,YAAM8D,IAAuB59C,EAAI,WAAWA,EAAI,UAAUA,EAAI;AAE9D,OAAK9H,MAAQ,OAAOA,MAAQ,QAAQ,CAAC0lD,KACnC59C,EAAI,eAAA,GACJg9C,EAAWJ,GAAOC,GAAKF,EAAc,GAAG,aAAa,MAC3CzkD,MAAQ,OAAOA,MAAQ,QAAQ,CAAC0lD,MAC1C59C,EAAI,eAAA,GACJg9C,EAAWJ,GAAOC,GAAKF,EAAc,GAAG,aAAa;AAAA,IAEzD;AAEA,QAAIzkD,MAAQ;AACV,MAAA8H,EAAI,eAAA,GACJg9C,EAAWJ,GAAOC,GAAK1F,CAAW;AAAA,aACzB,KAAK,KAAKj/C,CAAG,GAAG;AAGzB,UAFA8H,EAAI,eAAA,GAEA28C,EAAc;AAClB,MAAAY,EAAA;AAAA,IACF,WAAWrlD,MAAQ,aAAaA,MAAQ,aAAa;AAEnD,UADA8H,EAAI,eAAA,GACA28C,GAAc;AAChB,cAAM7M,IAAe4L,EAAM,MAAM,MAAM,GAAG,CAAC,EAAE,YAAA;AAC7C,QAAAsB,EAAW,GAAG,GAAGlN,MAAiB6M,EAAa,GAAG,YAAA,IAAgBA,EAAa,GAAG,YAAA,IAAgBA,EAAa,GAAG,aAAa;AAC/H;AAAA,MACF;AACA,MAAAU,GAAkBnlD,MAAQ,SAAS;AAAA,IACrC,MAAA,CAAWA,MAAQ,cAEjBwjD,EAAM,kBAAkBkB,IAAQ,GAAGA,IAAQ,CAAC,IACnC1kD,MAAQ,eAEjBwjD,EAAM,kBAAkBmB,IAAM,GAAGA,IAAM,CAAC,IAC/B/C,KAAa6C,KACtBgB,EAAA;AAAA,EAEJ,GAEME,IAAY,CAAC79C,GAAsC07C,GAAyBoC,MAA2B;;AAC3G,QAAIA,KAAkB,GAAG;AAEvB,MAAA99C,EAAI,eAAA,GACJ07C,EAAM,KAAA;AACN,YAAMqC,KAAc1kD,IAAAqO,EAAS,YAAT,gBAAArO,EAAkB;AACtC,MAAI0kD,KAAeA,aAAuB,eAAaA,EAAY,MAAA;AAAA,IACrE,MAAA,CAAWD,IAAiB,KAE1B99C,EAAI,eAAA,GACJ07C,EAAM,kBAAkB,GAAG,CAAC,KACnBoC,KAAkB,KAAKA,IAAiB,MAEjD99C,EAAI,eAAA,GACJ07C,EAAM,kBAAkB,GAAG,CAAC;AAAA,EAEhC,GAEMsC,IAAiB,CAACh+C,GAAsC07C,GAAyBoC,MAA2B;;AAChH,QAAIA,IAAiB,GAAG;AAEtB,MAAA99C,EAAI,eAAA,GACJ07C,EAAM,KAAA;AACN,YAAMuC,KAAc5kD,IAAAqO,EAAS,YAAT,gBAAArO,EAAkB;AACtC,MAAI4kD,KAAeA,aAAuB,eAAaA,EAAY,MAAA;AAAA,IACrE,MAAA,CAAWH,KAAkB,KAAKA,IAAiB,KAEjD99C,EAAI,eAAA,GACJ07C,EAAM,kBAAkB,GAAG,CAAC,KACnBoC,KAAkB,MAE3B99C,EAAI,eAAA,GACJ07C,EAAM,kBAAkB,GAAG,CAAC;AAAA,EAEhC,GAEMwC,IAAsB,CAACl+C,GAAsC07C,GAAyBoC,MAA2B;AACrH,IAAI99C,EAAI,YAAYA,EAAI,QAAQ,SAC9Bg+C,EAAeh+C,GAAK07C,GAAOoC,CAAc,GAEvC,CAAC99C,EAAI,YAAYA,EAAI,QAAQ,SAC/B69C,EAAU79C,GAAK07C,GAAOoC,CAAc;AAAA,EAExC,GAEMK,IAAsB,CAC1BL,GACAM,GACAC,GACAC,GACAC,MACG;AACH,IAAIT,IAAiB,KAAKM,KAAgB,IACxCC,EAAA,IACSP,KAAkB,KAAKM,KAAgB,IAChDE,EAAA,IACSR,KAAkB,KAAKM,KAAgB,IAChDG,EAAA,IAEAF,EAAA;AAAA,EAEJ,GAEM92B,IAAgB,CAACvnB,MAAyC;AAC9D,QAAI,CAAC7G,EAAM,UAAU;AACnB,YAAMuiD,IAAQ17C,EAAI,QACZ89C,IAAiBpC,EAAM,gBACvB0C,IAAe1C,EAAM,cACrBxjD,IAAM8H,EAAI;AAgChB,UATAm+C,EAAoBL,GAAgBM,GArBb,MAAY;AACjC,QAAA1B;AAAA,UACE,EAAE,OAAAhB,GAAO,OAAO,GAAG,KAAK,GAAG,aAAaC,GAAiB,UAAUH,EAAQ,UAAU,UAAUA,EAAQ,UAAU,KAAAtjD,EAAA;AAAA,UACjH8H;AAAA,QAAA;AAAA,MAEJ,GAEyB,MAAY;AACnC,QAAA08C;AAAA,UACE,EAAE,OAAAhB,GAAO,OAAO,GAAG,KAAK,GAAG,aAAaE,GAAmB,UAAUJ,EAAQ,YAAY,UAAUA,EAAQ,YAAY,KAAAtjD,EAAA;AAAA,UACvH8H;AAAA,QAAA;AAAA,MAEJ,GAEyB,MAAY;AACnC,QAAA08C,EAAW,EAAE,OAAAhB,GAAO,OAAO,GAAG,KAAK,GAAG,aAAaG,GAAmB,UAAU,GAAG,UAAU,GAAG,KAAA3jD,EAAA,GAAO8H,GAAK;AAAA,UAC1G,IAAIk5C,GAAW,GAAG,YAAA;AAAA,UAClB,IAAIA,GAAW,GAAG,YAAA;AAAA,QAAY,CAC/B;AAAA,MACH,CAEoG,GAEpGgF,EAAoBl+C,GAAK07C,GAAOoC,CAAc,GAE1C99C,EAAI,WAAW9H,MAAQ,QACzB8H,EAAI,eAAA,GACJ07C,EAAM,OAAA,IAGJ17C,EAAI,WAAW9H,MAAQ,KAAK;AAC9B,QAAA8H,EAAI,eAAA;AACJ,cAAMw+C,IAAe9C,EAAM,MAAM,UAAUoC,GAAgBM,CAAY;AACvE,QAAK,UAAU,UAAU,UAAUI,CAAY;AAAA,MACjD;AAEA,MAAAx+C,EAAI,eAAA,GAEJ+7C,EAAsB,EAAE,mBAAmB,IAAM;AAAA,IACnD;AAAA,EACF;AAEA,SACE,gBAAAviD,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,WAAW+0C;AAAA,MACX,KAAKxmC;AAAA,MACL,MAAK;AAAA,MACL,aAAao0C;AAAA,MACb,QAAQQ;AAAA,MACR,SAASx6C;AAAA,MACT,SAAS06C;AAAA,MACT,WAAWj1B;AAAA,IAAA;AAAA,EAAA;AAGjB,GC7SMk3B,KAA0B,CAAC;AAAA,EAC/B,KAAAtkD,IAAM;AAAA,EACN,YAAAiH,IAAa;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAA1D,IAAW;AAAA,EACX,WAAAxD,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,UAAUib;AAAA,EACV,SAASopC;AAAA,EACT,gBAAAC;AAAA,EACA,UAAAv2C;AAAA,EACA,SAAA3K;AAAA,EACA,UAAA8D;AAAA,EACA,aAAA7D;AAAA,EACA,kBAAAC;AAAA,EACA,cAAA8D;AAAA,EACA,mBAAAC;AAAA,EACA,GAAGvI;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GACdC,IAAe,OAAOmgD,IAAqB,KAC3CE,IAAoB,OAAOD,IAAmB,KAC9C,CAACE,GAAiBC,CAAkB,IAAIljD,EAASgjD,IAAoBD,IAAiB,EAAK,GAC3Fz5B,IAAU3mB,IAAemgD,IAAmBG,GAE5C,CAAClgD,GAAaC,CAAc,IAAIhD,EAAuB,SAAS,GAEhEuC,IAAW,CAAC2pB,MAAqC;AACrD,IAAIxS,KACFA,EAAkBwS,CAAC,GAGhBvpB,KACHugD,EAAmBh3B,EAAE,OAAO,OAAO;AAAA,EAEvC,GAEMi3B,IAAwBnnD;AAAA,IAC5B;AAAA,IACA,gBAAgBwJ,CAAU;AAAA,IAC1B,gBAAgBA,CAAU,IAAIC,CAAO;AAAA,IACrC,EAAE,QAAQ1C,KAAe,SAAA;AAAA,IACzB,EAAE,SAAAumB,EAAA;AAAA,IACF,EAAE,UAAA9c,EAAA;AAAA,IACF,EAAE,cAAc/L,EAAgBiF,CAAS,EAAA;AAAA,IACzC,EAAE,aAAajF,EAAgBuB,CAAQ,EAAA;AAAA,IACvC,EAAE,YAAYvB,EAAgBoB,CAAO,EAAA;AAAA,IACrC,EAAE,aAAapB,EAAgBkF,CAAQ,EAAA;AAAA,IACvCnH;AAAA,EAAA,GAGI0F,IAAiB,CAACE,MAAsC;;AAC5D,UAAM+B,IAAgB,OAAO,WAAW,mBAAmB,EAAE;AAC7D,IAAAnD,EAAemD,IAAgB,YAAY,OAAO,IAClD1I,IAAAF,EAAM,YAAN,QAAAE,EAAA,KAAAF,GAAgB6G;AAAA,EAClB,GAEMG,IAAmB,CAACH,MAAsC;;AAI9D,IAHAA,EAAI,eAAA,GAEkB,QAAO,WAAW,mBAAmB,EAAE,YAK7DpB,EAAe,SAAS,IAExBvF,IAAAF,EAAM,cAAN,QAAAE,EAAA,KAAAF,GAAkB6G;AAAA,EACpB,GAEME,IAAqB,CAACF,MAAsC;;AAIhE,IAHAA,EAAI,eAAA,GAEkB,QAAO,WAAW,mBAAmB,EAAE,YAK7DpB,EAAe,QAAQ,IACvBvF,IAAAF,EAAM,gBAAN,QAAAE,EAAA,KAAAF,GAAoB6G;AAAA,EACtB,GAEMK,IAAsB,CAACL,MAAsC;;AAGjE,IAFsB,OAAO,WAAW,mBAAmB,EAAE,YAM7DpB,EAAe,OAAO,IAEtBvF,IAAAF,EAAM,iBAAN,QAAAE,EAAA,KAAAF,GAAqB6G;AAAA,EACvB,GAEMI,IAAsB,CAACJ,MAAsC;;AAGjE,IAFsB,OAAO,WAAW,mBAAmB,EAAE,YAM7DpB,EAAe,SAAS,IAExBvF,IAAAF,EAAM,iBAAN,QAAAE,EAAA,KAAAF,GAAqB6G;AAAA,EACvB,GAEMD,IAAmB,CAACC,MAAyC;;AACjE,KAAIA,EAAI,SAAS,WAAWA,EAAI,SAAS,aACvCA,EAAI,eAAA,GACJpB,EAAe,QAAQ,KAGzBvF,IAAAF,EAAM,cAAN,QAAAE,EAAA,KAAAF,GAAkB6G;AAAA,EACpB,GAEMC,IAAiB,CAACD,MAAyC;;AAC/D,QAAIA,EAAI,SAAS,WAAWA,EAAI,SAAS,SAAS;AAChD,MAAApB,EAAe,SAAS;AAExB,YAAMogD,IAAY;AAAA,QAChB,GAAGh/C;AAAA,QACH,QAAQA,EAAI;AAAA,MAAA;AAGd,MAAKzB,KACHugD,EAAmB,CAAC51C,OAAS,CAACA,EAAI,GAGpC/K,EAAS6gD,CAAS;AAAA,IACpB;AAEA,KAAA3lD,IAAAF,EAAM,YAAN,QAAAE,EAAA,KAAAF,GAAgB6G;AAAA,EAClB;AACA,SACE,gBAAAxG,EAAA,cAAC,OAAA,EAAI,WAAWulD,EAAA,GACd,gBAAAvlD,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,SAAS2G;AAAA,MACT,WAAWK;AAAA,MACX,aAAaD;AAAA,MACb,cAAcG;AAAA,MACd,cAAcD;AAAA,MACd,SAASH;AAAA,MACT,WAAWF;AAAA,MACX,mBAAiB1B;AAAA,MACjB,KAAAlE;AAAA,MACA,MAAK;AAAA,MACL,UAAAgE;AAAA,MACA,SAAA+mB;AAAA,MACA,UAAA9c;AAAA,IAAA;AAAA,EAAA,GAED/L,EAAgBoB,CAAO,MAAMC,KAAeC,MAC3C,gBAAAnE,EAAA,cAACU,IAAA,EAAQ,WAAU,wBAAuB,OAAOyE,KAC/C,gBAAAnF,EAAA,cAACQ,GAAA,EAAS,WAAU,wBAAuB,OAAM,WAAU,MAAM0D,KAAe,WAAW,eAAW,GAAA,CAAC,GACvG,gBAAAlE,EAAA,cAACQ,KAAS,WAAU,sBAAqB,OAAM,SAAQ,MAAM2D,KAAoB,WAAW,eAAW,GAAA,CAAC,GACxG,gBAAAnE,EAAA,cAACQ,GAAA,EAAS,WAAU,uBAAsB,OAAM,UAAS,MAAM0D,KAAe,WAAW,eAAW,GAAA,CAAC,CACvG,GAGF,gBAAAlE,EAAA,cAAC,OAAA,EAAI,WAAU,oBAAmB,IAAI6E,EAAA,GACnChE,CACH,GAECgC,EAAgBoB,CAAO,MAAMgE,KAAgBC,MAC5C,gBAAAlI,EAAA,cAACU,IAAA,EAAQ,WAAU,yBAAwB,OAAOyE,EAAA,GAChD,gBAAAnF,EAAA,cAACQ,GAAA,EAAS,WAAU,yBAAwB,OAAM,WAAU,MAAMyH,KAAgB,WAAW,eAAW,GAAA,CAAC,GACzG,gBAAAjI,EAAA,cAACQ,GAAA,EAAS,WAAU,uBAAsB,OAAM,SAAQ,MAAM0H,KAAqB,WAAW,eAAW,GAAA,CAAC,mCACzG1H,GAAA,EAAS,WAAU,wBAAuB,OAAM,UAAS,MAAMyH,KAAgB,WAAW,eAAW,GAAA,CAAC,CACzG,CAEJ;AAEJ,GCjOa0nC,KAAiB,MAAM;AAClC,QAAMqS,IAAUN,GAAA,GAEV,EAAE,OAAAr8C,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAO,EAAA,IAAaF,GAAA,GAEf0B,IAAWD,IAAQvB,GAEnB2hD,IAAevjD,EAAyB,IAAI;AAElD,EAAAG,EAAU,MAAM;;AACd,KAAAxC,IAAA4lD,EAAa,YAAb,QAAA5lD,EAAsB;AAAA,EACxB,GAAG,CAAA,CAAE;AAEL,QAAM6lD,IAAe,MAAM;AACzB,IAAA1D,EAAQ;AAAA,MAAgB,CAAC2D,MACvB,SAASA,CAAS,KAAK3D,EAAQ,WAC3BpC,GAAWoC,EAAQ,UAAUA,EAAQ,UAAUA,EAAQ,QAAQ,IAC/DpC,GAAW,SAAS+F,CAAS,IAAI,GAAG3D,EAAQ,UAAUA,EAAQ,QAAQ;AAAA,IAAA;AAAA,EAE9E,GAEM4D,IAAiB,MAAM;AAC3B,IAAA5D,EAAQ;AAAA,MAAgB,CAAC2D,MACvB,SAASA,CAAS,KAAK3D,EAAQ,WAC3BpC,GAAWoC,EAAQ,UAAUA,EAAQ,UAAUA,EAAQ,QAAQ,IAC/DpC,GAAW,SAAS+F,CAAS,IAAI,GAAG3D,EAAQ,UAAUA,EAAQ,QAAQ;AAAA,IAAA;AAAA,EAE9E,GAEM6D,IAAiB,MAAM;AAC3B,IAAA7D,EAAQ;AAAA,MAAkB,CAAC2D,MACzB,SAASA,CAAS,KAAK3D,EAAQ,aAC3B/B,GAAa+B,EAAQ,YAAYA,EAAQ,YAAYA,EAAQ,UAAU,IACvE/B,GAAa,SAAS0F,CAAS,IAAI,GAAG3D,EAAQ,YAAYA,EAAQ,UAAU;AAAA,IAAA;AAAA,EAEpF,GAEM8D,IAAmB,MAAM;AAC7B,IAAA9D,EAAQ;AAAA,MAAkB,CAAC2D,MACzB,SAASA,CAAS,KAAK3D,EAAQ,aAC3B/B,GAAa+B,EAAQ,YAAYA,EAAQ,YAAYA,EAAQ,UAAU,IACvE/B,GAAa,SAAS0F,CAAS,IAAI,GAAG3D,EAAQ,YAAYA,EAAQ,UAAU;AAAA,IAAA;AAAA,EAEpF,GAEM+D,IAAwB,CAACz3B,MAA2C;AACxE,UAAM,EAAE,OAAArwB,MAAUqwB,EAAE,QACd03B,IAAgBpG,GAAW3hD,GAAO+jD,EAAQ,UAAUA,EAAQ,QAAQ;AAE1E,IAAAA,EAAQ,gBAAgBgE,CAAa;AAAA,EACvC,GAEMC,IAAkB,CAAC33B,MAA0CA,EAAE,OAAO,OAAA,GAEtE43B,IAAoB,CAAC53B,MAA6C;AACtE,IAAIA,EAAE,QAAQ,cACZA,EAAE,eAAA,GACFo3B,EAAA,IAEEp3B,EAAE,QAAQ,gBACZA,EAAE,eAAA,GACFs3B,EAAA;AAAA,EAEJ,GAEMO,IAA0B,CAAC73B,MAA2C;AAC1E,UAAM,EAAE,OAAArwB,MAAUqwB,EAAE,QACd83B,IAAkBnG,GAAahiD,GAAO+jD,EAAQ,YAAYA,EAAQ,UAAU;AAElF,IAAAA,EAAQ,kBAAkBoE,CAAe;AAAA,EAC3C,GAEMC,IAAoB,CAAC/3B,MAA0CA,EAAE,OAAO,OAAA,GAExEg4B,IAAsB,CAACh4B,MAA6C;AACxE,IAAIA,EAAE,QAAQ,cACZA,EAAE,eAAA,GACFu3B,EAAA,IAEEv3B,EAAE,QAAQ,gBACZA,EAAE,eAAA,GACFw3B,EAAA;AAAA,EAEJ,GAEMS,IAAuB,CAACtoD,MAAoB;AAChD,IAAA+jD,EAAQ,kBAAkB,MAAM/jD,EAAM,CAAC,CAAe;AAAA,EACxD,GAEMuoD,IAAmCpoD,EAAW,8BAA8B;AAAA,IAChF,sCAAsCkH;AAAA,EAAA,CACvC,GAEKmhD,IAAqBroD,EAAW,gBAAgB,EAAE,sBAAsByE,EAAgBm/C,EAAQ,mBAAmB,IAAI,GAAG,GAE1HtmC,IAAcpW,IAAW,eAAe;AAE9C,SACE,gBAAAtF,EAAA,cAAC,OAAA,EAAI,WAAU,0CACZ,OAAA,EAAI,WAAWwmD,EAAA,GACd,gBAAAxmD,EAAA,cAAC,SAAI,WAAU,wBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,yBAAA,GACb,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKylD;AAAA,MACL,WAAWgB;AAAA,MACX,MAAK;AAAA,MACL,KAAKzE,EAAQ;AAAA,MACb,KAAKA,EAAQ;AAAA,MACb,OAAOA,EAAQ;AAAA,MACf,UAAU+D;AAAA,MACV,SAASE;AAAA,MACT,WAAWC;AAAA,IAAA;AAAA,EAAA,mCAEZ,OAAA,EAAI,WAAU,mCACb,gBAAAlmD,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAqB,SAAS0lD,GAAc,eAAW,GAAA,mCACnEtlD,IAAA,EAAK,MAAK,wBAAuB,CACpC,mCACC,OAAA,EAAI,WAAU,sBAAqB,SAASwlD,GAAgB,eAAW,GAAA,GACtE,gBAAA5lD,EAAA,cAACI,MAAK,MAAK,yBAAA,CAAyB,CACtC,CACF,CACF,GAEA,gBAAAJ,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GAAsB,GAAC,GAEtC,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,yBAAA,GACb,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWymD;AAAA,MACX,MAAK;AAAA,MACL,KAAKzE,EAAQ;AAAA,MACb,KAAKA,EAAQ;AAAA,MACb,OAAOA,EAAQ;AAAA,MACf,UAAUmE;AAAA,MACV,SAASE;AAAA,MACT,WAAWC;AAAA,IAAA;AAAA,EAAA,GAEb,gBAAAtmD,EAAA,cAAC,OAAA,EAAI,WAAU,gCAAA,mCACZ,OAAA,EAAI,WAAU,sBAAqB,SAAS6lD,GAAgB,eAAW,sCACrEzlD,IAAA,EAAK,MAAK,wBAAuB,CACpC,GACA,gBAAAJ,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAqB,SAAS8lD,GAAkB,eAAW,MACxE,gBAAA9lD,EAAA,cAACI,IAAA,EAAK,MAAK,yBAAA,CAAyB,CACtC,CACF,CACF,CACF,GAEC4hD,EAAQ,mBAAmB,QAC1B,gBAAAhiD,EAAA;AAAA,IAACyb;AAAA,IAAA;AAAA,MACC,KAAKC;AAAA,MACL,OAAOsmC,EAAQ;AAAA,MACf,UAAU;AAAA,MACV,UAAUuE;AAAA,MACV,WAAU;AAAA,MACV,aAAA7qC;AAAA,IAAA;AAAA,IAEA,gBAAA1b,EAAA,cAACilD,MAAO,OAAOvF,GAAW,MAAKA,GAAW,GAAG,aAAc;AAAA,IAC3D,gBAAA1/C,EAAA,cAACilD,MAAO,OAAOvF,GAAW,MAAKA,GAAW,GAAG,aAAc;AAAA,EAAA,CAGjE,CACF;AAEJ,GCtKa3N,KAAkD,CAAC,EAAE,mBAAA6P,QAAwB;AACxF,QAAMI,IAAUN,GAAA,GAEVpB,IAAY0B,EAAQ,mBAAmB,MAEvC0E,IAAkB,MAAM;AAC5B,IAAA1E,EAAQ,OAAOA,EAAQ,YAAY;AAAA,EACrC,GAGM9P,IAAc,MAAM;AACxB,UAAMyU,IAAmBtG,GAAeC,GAAW0B,EAAQ,cAAcA,EAAQ,gBAAgBA,EAAQ,cAAc;AACvH,IAAAJ,EAAkB+E,CAAgB,GAClC3E,EAAQ,gBAAgB2E,CAAgB,GACxC3E,EAAQ,OAAO2E,CAAgB;AAAA,EACjC,GAEMrV,IAAS0Q,EAAQ,QAEjB3P,IAAmD;AAAA,IACvD,cAAc,GAAGf,EAAO,WAAW,KAAKA,EAAO,eAAe;AAAA,EAAA;AAEhE,EAAKA,EAAO,mBACV,OAAOe,EAAsB,YAAY;AAG3C,QAAMC,IAA+C;AAAA,IACnD,cAAc,GAAGhB,EAAO,OAAO,KAAKA,EAAO,WAAW;AAAA,EAAA;AAExD,SAAKA,EAAO,eACV,OAAOgB,EAAkB,YAAY,GAIrC,gBAAAtyC,EAAA,cAAC,OAAA,EAAI,WAAU,yCAAA,GACb,gBAAAA,EAAA,cAACqL,IAAA,EAAO,YAAW,QAAO,SAAQ,WAAU,SAASq7C,GAAkB,GAAGrU,EAAA,GACvEf,EAAO,WACV,GACA,gBAAAtxC,EAAA,cAACqL,IAAA,EAAO,YAAW,QAAO,SAAS6mC,GAAc,GAAGI,EAAA,GACjDhB,EAAO,OACV,CACF;AAEJ,GC/BasV,KAAkD,CAAC;AAAA,EAC9D,mBAAAhF;AAAA,EACA,UAAAj9C;AAAA,EACA,QAAA2sC;AAAA,EACA,sBAAAuV;AAAA,EACA,kBAAAC;AAAA,EACA,WAAAlmD;AACF,MAAM;AACJ,QAAMohD,IAAUN,GAAA,GAEV,CAACqF,GAASC,CAAU,IAAI5kD,EAAS,EAAK,GAEtCk+C,IAAY0B,EAAQ,mBAAmB,MAEvCnO,IAAoBz1C;AAAA,IACxBwC;AAAA,IACA;AAAA,EAAA,GAGIkzC,IAAiC5xC,EAAuB,IAAI;AAuBlE,MArBAG,EAAU,MAAM;AAEd,QAAI2/C,EAAQ,cAAc;AAExB,UAAI,CAAC8E;AACH,QAAA9E,EAAQ,gBAAgBA,EAAQ,mBAAmB,OAAO,OAAO,IAAI,GACrEA,EAAQ,kBAAkBrC,GAAU,MAAM,GAC1CqC,EAAQ,kBAAkB1B,IAAaX,GAAU,SAAwB,MAAS;AAAA,WAC7E;AACL,cAAM,EAAE,cAAAY,GAAc,gBAAAC,GAAgB,gBAAAC,MAAmBC,GAAcJ,GAAW0B,EAAQ,cAAcA,EAAQ,cAAc;AAC9H,QAAAA,EAAQ,gBAAgBzB,CAAY,GACpCyB,EAAQ,kBAAkBxB,CAAc,GACxCwB,EAAQ,kBAAkB1B,IAAYG,IAAiB,MAAS;AAAA,MAClE;AAEA,MAAAn9C,GAAa,MAAMqB,EAASq9C,EAAQ,YAAY,CAAC,GACjDgF,EAAW,EAAI;AAAA,IACjB;AAAA,EACF,GAAG,CAAChF,EAAQ,cAAcA,EAAQ,iBAAiBA,EAAQ,mBAAmBA,EAAQ,iBAAiB,CAAC,GAGpG,CAAC+E,KAAW/E,EAAQ;AACtB,WAAO;AAGT,QAAMiF,IAA8D;AAAA,IAClE,cAAc,GAAG3V,EAAO,sBAAsB,KAAKA,EAAO,0BAA0B;AAAA,EAAA;AAEtF,SAAKA,EAAO,mBACV,OAAO2V,EAAiC,YAAY,GAIpD,gBAAAjnD,EAAA,cAAC,SAAI,KAAK8zC,GAAgC,WAAWD,EAAA,GACnD,gBAAA7zC,EAAA,cAAC2vC,IAAA,IAAW,GACZ,gBAAA3vC,EAAA,cAAC,OAAA,EAAI,WAAU,6CAAA,CAA6C,mCAC3D,OAAA,EAAI,WAAU,WACb,gBAAAA,EAAA,cAAC+xC,IAAA,EAAa,mBAAA6P,EAAA,CAAsC,CACtD,GACC/+C,EAAgBgkD,CAAoB,KACnC,gBAAA7mD,EAAA,cAAC,SAAI,WAAU,sBAAsB,GAAGinD,EAAA,GACtC,gBAAAjnD,EAAA,cAACI,IAAA,EAAK,MAAK,4BAA2B,WAAU,4BAA2B,KAAKkxC,EAAO,2BAAA,CAA4B,GACnH,gBAAAtxC,EAAA,cAAC,OAAA,EAAI,WAAU,2BAAA,GAA4BsxC,EAAO,sBAAuB,CAC3E,CAEJ;AAEJ,GC2BM4V,KAAgC,CAAC;AAAA,EACrC,KAAAvmD,IAAM;AAAA,EACN,WAAAC;AAAA,EACA,QAAAumD,IAAS;AAAA,EACT,UAAA/iD;AAAA,EACA,OAAAmK;AAAA,EACA,WAAAkC;AAAA,EACA,UAAAua,IAAW;AAAA,EACX,UAAAD;AAAA,EACA,aAAAE;AAAA,EACA,cAAAb;AAAA,EACA,eAAAD,IAAgB;AAAA,EAChB,mBAAAgrB;AAAA,EACA,MAAAzmC;AAAA,EACA,SAAAzK;AAAA,EACA,wBAAA69C,IAAyBrC,GAAoB;AAAA,EAC7C,sBAAAoC,IAAuBpC,GAAoB;AAAA,EAC3C,wBAAAsC,IAAyBtC,GAAoB;AAAA,EAC7C,oBAAA2H;AAAA,EACA,aAAApR;AAAA,EACA,iBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAl4C;AAAA,EACA,cAAA4d;AAAA,EACA,UAAAlX;AAAA,EACA,sBAAAkiD,IAAuB;AAAA,EACvB,wBAAAQ;AAAA,EACA,4BAAAC;AAAA,EACA,eAAAp8B;AAAA,EACA,YAAAP;AAAA,EACA,GAAGhrB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM0mB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAExDorB,IAAgBl0C,EAAgC,IAAI;AAE1D,EAAAiB,GAAoBxC,GAAK,MAChBy1C,EAAc,SACpB,CAACA,EAAc,OAAO,CAAC;AAE1B,QAAMC,IAAan0C,EAAuB,IAAI,GAExC,CAACo0C,GAAcC,CAAe,IAAIn0C,GAAiBnE,KAAA,gBAAAA,EAAO,gBAAc4d,KAAA,gBAAAA,EAAc,eAAc,EAAE,GAEtG26B,KAAqBt0C,EAAe,OAAO,GAC3C,CAACu0C,GAASC,CAAU,IAAIt0C,EAAS,CAAC,oBAAI,MAAM,GAE5C,CAACu0C,GAAgBC,CAAiB,IAAIx0C,EAAS,EAAK,GAEpDy0C,IAAc,MAAM;AACxB,IAAKl3C,EAAM,YACTi3C,EAAkB,EAAI;AAAA,EAE1B,GAEME,IAAc,MAAM;AACxB,IAAAF,EAAkB,EAAK;AAAA,EACzB,GAEMG,KAAgB,MAAM;AAC1B,IAAIJ,IACFG,EAAA,IAEAD,EAAA;AAAA,EAEJ,GAEMG,KAAkB,MAAM;AAC5B,IAAAF,EAAA;AAAA,EACF,GAEMxgC,KAAkB,CAAC9G,OAAiB;AACxC,IAAIA,OAASgnC,GAAmB,YAC9BA,GAAmB,UAAUhnC,IAC7BknC,EAAW,CAAC,oBAAI,MAAM;AAAA,EAE1B,GAEM6Q,KAAyB,CAAChG,OAAyB;AACvD,IAAAhL,EAAgBgL,EAAY,GAC5BjrC,GAAgBirC,EAAY,GAE5BvK,GAAA;AAAA,EACF;AAGA,EAAA30C,EAAU,MAAM;AACd,UAAM+rB,KAAqB,CAAC7sB,OAAsB;;AAChD,UAAI,CAACo1C;AACH;AAGF,YAAM6Q,KAAwBjmD,GAAM,UAAWA,GAAM,OAAuB,QAAQ,mBAAmB;AAEvG,OAAI,GAAC1B,KAAAw2C,EAAW,YAAX,QAAAx2C,GAAoB,SAAS0B,GAAM,YAA6BimD,OACnExQ,GAAA;AAAA,IAEJ;AAEA,oBAAS,iBAAiB,SAAS5oB,EAAkB,GAE9C,MAAM;AACX,eAAS,oBAAoB,SAASA,EAAkB;AAAA,IAC1D;AAAA,EACF,GAAG,CAACuoB,CAAc,CAAC,GAGnBt0C,EAAU,MAAM;;AACd,UAAM80C,KAAiB,CAAC3wC,OAAuB;AAC7C,MAAIA,GAAI,QAAQ,aACdA,GAAI,eAAA,GACJwwC,GAAA;AAAA,IAEJ;AAEA,YAAAn3C,KAAAw2C,EAAW,YAAX,QAAAx2C,GAAoB,iBAAiB,WAAWs3C,KAEzC,MAAM;;AACX,OAAAt3C,KAAAw2C,EAAW,YAAX,QAAAx2C,GAAoB,oBAAoB,WAAWs3C;AAAA,IACrD;AAAA,EACF,GAAG,CAAA,CAAE,GAEL90C,EAAU,MAAM;AACd,IAAIwZ,MAIJ06B,GAAgBt4C,KAAA,gBAAAA,EAAO,eAAc,EAAE,GACvCqY,IAAgBrY,KAAA,gBAAAA,EAAO,eAAc,EAAE;AAAA,EACzC,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMm5C,KAAyB,CAACmK,OAAyB;AACvD,IAAAjrC,GAAgBirC,EAAY;AAAA,EAC9B,GAEMkG,KAAoB,CAACjhD,OAAuC;AAChE,IAAA+vC,EAAgB/vC,GAAI,OAAO,KAAK,GAChC8P,GAAgB9P,GAAI,OAAO,KAAK;AAAA,EAClC;AAEA,EAAAnE,EAAU,MAAM;AACd,QAAI+zC,EAAc,SAAS;AACzB,YAAMkB,KAAiBl2C,GAAuCg1C,EAAc,SAAS,QAAQ;AAC7F,MAAA9yC,GAAa,MAAMqB,KAAA,gBAAAA,EAAW2yC,GAAgD;AAAA,IAChF;AAAA,EACF,GAAG,CAACb,CAAO,CAAC;AAEZ,QAAMiR,KAAcxlD,EAAO,EAAI;AAC/B,EAAAG,EAAU,MAAM;AACd,QAAI,CAACs0C,KAAkBP,EAAc,SAAS;AAC5C,UAAIsR,GAAY,SAAS;AACvB,QAAAA,GAAY,UAAU;AACtB;AAAA,MACF;AACA,MAAAtR,EAAc,QAAQ,MAAA,GACtBA,EAAc,QAAQ,kBAAkB,GAAG,CAAC;AAAA,IAC9C;AAAA,EACF,GAAG,CAACO,CAAc,CAAC;AAEnB,QAAMgR,KAA2B;AAAA,IAC/B,aAAA3R;AAAA,IACA,iBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,wBAAAkR;AAAA,IACA,4BAAAC;AAAA,EAAA,GAGIzT,KAAoBz1C,EAAW,qBAAqBwC,GAAW;AAAA,IACnE,aAAaiC,EAAgBuB,CAAQ;AAAA,IACrC,aAAakyC,EAAa,SAAS;AAAA,IACnC,UAAYzzC,EAAgBiH,EAAW,QAAQ;AAAA,IAC/C,aAAajH,EAAgBiH,EAAW,QAAQ;AAAA,IAChD,aAAajH,EAAgBkoB,CAAQ;AAAA,IACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,IAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,EAAA,CAChE,GAEKy9B,KAAuB3gD,GAAQ,OAC5B;AAAA,IACL,gBAAgBkgD;AAAA,IAChB,eAActrC,KAAA,gBAAAA,EAAc,gBAAc5d,KAAA,gBAAAA,EAAO,eAAc;AAAA,IAC/D,UAAUkpD,MAAW,OAAO,IAAI;AAAA,IAChC,UAAUA,MAAW,OAAO,KAAK;AAAA,IACjC,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,QAAQI;AAAA,IACR,QAAQI;AAAA,EAAA,IAET,CAAA,CAAE;AAEL,MAAInQ;AACJ,EAAI30C,EAAgBooB,CAAW,KAAKb,IAClCotB,KAAuB,cAAc1tC,EAAW,EAAE,cACzCjH,EAAgBkoB,CAAQ,KAAKoqB,IACtCqC,KAAuB,cAAc1tC,EAAW,EAAE,oBAElD0tC,KAAuB;AAGzB,QAAM,CAACC,IAAWC,EAAY,IAAIt1C,EAAuB,SAAS,GAC5Du1C,KAAmB,CAACh4C,EAAM,YAAY,CAACA,EAAM,WAAW83C,KAAY;AAE1E,SACE,gBAAAz3C,EAAA,cAACkhD,IAAA,EAAyB,eAAe0G,GAAA,mCACtC,OAAA,EAAI,QAAQ,CAAC,CAAC99C,EAAW,QAAQ,WAAW+pC,IAAmB,KAAKwC,KAEnE,gBAAAr2C,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAQ,CAAC,CAAC6C,EAAgB4N,CAAS;AAAA,MACnC,SAAS3G,EAAW;AAAA,MACpB,WAAU;AAAA,MACV,cAAckrC,GAAa0C,IAAc,OAAO;AAAA,MAChD,cAAc1C,GAAa0C,IAAc,SAAS;AAAA,IAAA;AAAA,IAEjDnpC;AAAA,EAAA,GAIH,gBAAAvO,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,WAAWg1C,GAAa0C,IAAc,QAAQ;AAAA,MAC9C,SAAS1C,GAAa0C,IAAc,SAAS;AAAA,MAC7C,cAAc1C,GAAa0C,IAAc,OAAO;AAAA,MAChD,cAAc1C,GAAa0C,IAAc,SAAS;AAAA,IAAA;AAAA,IAGjD70C,EAAgBoB,CAAO,KACtB,gBAAAjE,EAAA,cAAC,SAAI,WAAU,qBAAA,mCACZU,IAAA,EAAQ,OAAOi3C,MACd,gBAAA33C,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,OAAM,WAAU,MAAMkO,KAAQ,WAAW,GAC/D,gBAAA1O,EAAA,cAACQ,KAAS,eAAW,IAAC,OAAM,SAAQ,OAAMkO,KAAA,gBAAAA,EAAM,QAAQ,QAAQ,aAAY,WAAW,GACvF,gBAAA1O,EAAA,cAACQ,GAAA,EAAS,eAAW,IAAC,OAAM,UAAS,MAAMkO,KAAQ,UAAA,CAAW,CAChE,CACF;AAAA,IAGF,gBAAA1O,EAAA;AAAA,MAAC2hD;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAKvL;AAAA,QACL,IAAItsC,EAAW;AAAA,QACf,wBAAAg4C;AAAA,QACA,sBAAAD;AAAA,QACA,wBAAAE;AAAA,QACA,OAAOzL;AAAA,QACP,mBAAmBC;AAAA,QACnB,UAAUkR;AAAA,QACV,UAAU39C,EAAW;AAAA,QACrB,UAAUA,EAAW;AAAA,QACrB,UAAUyhB;AAAA,QACV,oBAAkBisB;AAAA,MAAA;AAAA,IAAA;AAAA,IAIpB,gBAAAx3C,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU,CAAC,CAAC8J,EAAW,YAAY,CAAC,CAACA,EAAW;AAAA,QAChD,SAASitC;AAAA,QACT,WAAU;AAAA,QACV,cAAYqQ;AAAA,MAAA;AAAA,sCAEX1mD,IAAA,EAAQ,OAAOi3C,GAAA,GACd,gBAAA33C,EAAA,cAACQ,KAAS,OAAM,WAAU,MAAK,oBAAmB,eAAW,IAAC,WAAU,qBAAA,CAAqB,mCAC5FA,GAAA,EAAS,OAAM,SAAQ,MAAK,qBAAoB,eAAW,IAAC,WAAU,mBAAA,CAAmB,GAC1F,gBAAAR,EAAA,cAACQ,GAAA,EAAS,OAAM,UAAS,MAAK,oBAAmB,eAAW,IAAC,WAAU,sBAAqB,CAC9F;AAAA,IAAA;AAAA,IAGDm2C,KACC,gBAAA32C,EAAA;AAAA,MAAC4mD;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,QAAQe;AAAA,QACR,UAAUvQ;AAAA,QACV,UAAUmQ;AAAA,QACV,sBAAAV;AAAA,QACA,mBAAmBtQ;AAAA,QACnB,kBAAkBD;AAAA,MAAA;AAAA,IAAA;AAAA,EACpB,GAIHzzC,EAAgBqoB,CAAa,KAAK,gBAAAlrB,EAAA,cAAC0qB,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,EAAA,CAAoB,GAG1FvB,EAAgBooB,CAAW,KAAKb,KAC/B,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,cAAcpgB,EAAW,EAAE;AAAA,MAC/B,eAAAqgB;AAAA,MACA,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,GAKrCvB,EAAgBkoB,CAAQ,KAAKoqB,KAC5B,gBAAAn1C,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,cAAcpgB,EAAW,EAAE;AAAA,MAC/B,eAAc;AAAA,MACd,cAAcqrC;AAAA,MACd,UAAUtyC,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAGxC,CACF;AAEJ,GC7ZayjD,KAAsC,CAAC,EAAE,OAAA3+C,GAAO,UAAA6U,GAAU,GAAGpe,QAAY;AACpF,QAAMmoD,IAAc1pD,EAAW,qBAAqB;AAEpD,yCACG,OAAA,EAAK,GAAGuB,GAAO,WAAU,uGAAA,mCACvB,OAAA,EAAI,WAAU,kEACXuJ,KAAS6U,sCACR,OAAA,EAAI,WAAU,kGACZ7U,KACC,gBAAAlJ,EAAA,cAAC,SAAI,WAAU,2HAAA,GACZkJ,CACH,GAED6U,qCACE,OAAA,EAAI,WAAU,oHACZA,CACH,CAEJ,GAEF,gBAAA/d,EAAA,cAAC,OAAA,EAAI,WAAW8nD,GAAa,MAAK,YAChC,gBAAA9nD,EAAA,cAAC,QAAA,EAAK,WAAU,wGAAA,CAAwG,CAC1H,CACF,CACF;AAEJ,GC9BM+nD,KAAsB36C,GAAwC,CAAA,CAA8B,GAE5F46C,KAAyB,MACb16C,GAAWy6C,EAAmB,GCH1CE,KAAsD,CAAC,EAAE,UAAApnD,QAAe;AAC5E,QAAM+tB,IAAY1sB,EAAsB,IAAI,GACtCgmD,IAAYhmD,EAAuB,IAAI,GAEvC,CAACimD,GAAaC,CAAc,IAAIhmD,EAAA,GAChC,CAACimD,GAAiBC,CAAkB,IAAIlmD,EAAS,EAAE,GAEnDmmD,IAAa3+C,GAAY,CAAC4+C,MAA0C;;AACxE,QAAIA,EAAmB,YAAY;AACjC,MAAAF,EAAmBE,EAAmB,YAAY,CAAC;AAAA,aAC1CA,EAAmB,iBAAiB,GAAG;AAEhD,YAAMt1C,IADMs1C,EAAmB,iBAAiB,EAAE,MAAM,GAAG,EAExD,IAAI,CAACrhD,MAAA;;AAAO,iBAAAM,KAAA5H,IAAAqoD,EAAU,YAAV,gBAAAroD,EAAmB,cAA2B,IAAIsH,CAAE,QAApD,gBAAAM,EAAyD,cAAa;AAAA,OAAE,EACpF,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,MAAA6gD,EAAmBp1C,CAAG;AAAA,IACxB,OAAO;AACL,YAAMu1C,IAAU,CAACxqD,MACX,OAAOA,KAAU,YAAY,OAAOA,KAAU,WAAiBA,EAAM,SAAA,IAClE;AAET,MAAAqqD,EAAmB,GAAGG,EAAQD,EAAmB,KAAK,CAAC,IAAIC,EAAQD,EAAmB,QAAQ,CAAC,EAAE;AAAA,IACnG;AAEA,IAAAJ,EAAeI,CAAkB,IACjC3oD,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,EACrB,GAAG,CAAA,CAAE,GAEC6oD,IAAa9+C,GAAY,MAAY;;AACzC,IAAA0+C,EAAmB,EAAE,IACrBzoD,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,EACrB,GAAG,CAAA,CAAE,GAECksC,IAAe9kC;AAAA,IACnB,MAAA;;AACG;AAAA,QACC,YAAAshD;AAAA,QACA,SAAS35B,EAAU;AAAA,QACnB,YAAY,CAAC,GAAC/uB,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,QACjC,YAAA6oD;AAAA,MAAA;AAAA;AAAA,IAEJ,CAACH,GAAYG,CAAU;AAAA,EAAA;AAGzB,yCACGX,IAAA,EAAoB,OAAOhc,KAC1B,gBAAA/rC,EAAA,cAAC,OAAA,EAAI,aAAU,aAAY,WAAU,UAAA,GAClCqoD,CACH,GACA,gBAAAroD,EAAA,cAACqtB,IAAA,EAAO,KAAKuB,GAAW,YAAU,IAAC,wBAAwB,IAAO,iBAAiB,IAAO,aAAU,OAAA,GACjG,CAAC,CAACu5B,KACD,gBAAAnoD,EAAA,cAAC,SAAI,WAAU,kBAAiB,KAAKkoD,qCAClCL,IAAA,EAAc,GAAGM,GAAa,CACjC,CAEJ,GACCtnD,CACH;AAEJ,GClDM8nD,KAAev7C,GAAiC,CAAA,CAAuB,GAEvEw7C,KAAkB,MACft7C,GAAWq7C,EAAY,GCJ1BE,KAAoC,CAAC,EAAE,gBAAAC,GAAgB,UAAAjoD,QAAe;AAC1E,QAAM,EAAE,MAAA8M,EAAA,IAASi7C,GAAA,GAEXr6B,IAAsBnwB,EAAW,gCAAgC0qD,EAAe,WAAW;AAAA,IAC/F,aAAajmD,EAAgBimD,EAAe,YAAY,EAAI;AAAA,EAAA,CAC7D;AAED,SACE,gBAAA9oD,EAAA,cAAC,OAAA,EAAI,WAAWuuB,EAAA,GACd,gBAAAvuB,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,+BACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAASsC;AAAA,MACT,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,UAAU9K,EAAgBimD,EAAe,YAAY,EAAI;AAAA,MACzD,SAAO;AAAA,MACP,cAAa;AAAA,MACb,mBAAkB;AAAA,IAAA;AAAA,IAEjBA,EAAe;AAAA,EAAA,CAEpB,GACA,gBAAA9oD,EAAA,cAAC,OAAA,EAAI,WAAU,6BACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,kCAAA,GAAmCa,CAAS,CAC7D,CACF,CACF;AAEJ,GCjCMkoD,KAAwC,CAAC,EAAE,iBAAAt7B,IAAkB,IAAM,UAAA5sB,QAAe;AACtF,QAAM+tB,IAAY1sB,EAAsB,IAAI,GAEtC,CAACqpC,GAAgBC,CAAiB,IAAIppC,EAAA,GACtC,CAAC4mD,GAAcC,CAAe,IAAI7mD,EAAA,GAElCiU,IAAO,CAACs1B,GAAkCud,MAA+B;AAC7E,IAAA1d,EAAkBG,CAAqB,GAEvCsd,EAAgBC,CAAM,GAEtB5lD,GAAa,MAAA;;AAAM,cAAAzD,IAAA+uB,EAAU,YAAV,gBAAA/uB,EAAmB;AAAA,KAAM;AAAA,EAC9C,GAEM8N,IAAO,MAAY;;AACvB,KAAA9N,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,EACrB,GAEMksC,IAAe9kC,GAAQ,OACpB;AAAA,IACL,SAAS2nB,EAAU;AAAA,IACnB,WAAW,MAAA;;AAAM,cAAC,GAAC/uB,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA;AAAA,IACtC,MAAAwW;AAAA,IACA,MAAA1I;AAAA,EAAA,IAED,CAAC0I,GAAM1I,CAAI,CAAC;AAEf,SACE,gBAAA3N,EAAA,cAAC2oD,IAAA,EAAa,OAAO5c,EAAA,GACnB,gBAAA/rC,EAAA;AAAA,IAACqtB;AAAA,IAAA;AAAA,MACC,KAAKuB;AAAA,MACL,YAAU;AAAA,MACV,wBAAwB;AAAA,MACxB,iBAAiB/rB,EAAgB4qB,CAAe;AAAA,MAChD,cAAYu7B,KAAA,gBAAAA,EAAe;AAAA,MAC3B,QAAQA,KAAA,gBAAAA,EAAc;AAAA,MACtB,QAAQA,KAAA,gBAAAA,EAAc;AAAA,IAAA;AAAA,IAErB,CAAC,CAACA,qCAAiBH,IAAA,EAAY,gBAAgBG,KAAezd,CAAe;AAAA,EAAA,GAE/E1qC,CACH;AAEJ,GC1BasoD,KAAuB,CAAC9hB,GAAwBjjC,MAAkC;AAC7F,MAAI,OAAOijC,KAAY,YAAY;AACjC,UAAM+hB,IAAmB/hB;AACzB,WAAO,gBAAArnC,EAAA,cAACopD,KAAiB,UAAAhlD,EAAA,CAAoB;AAAA,EAC/C;AAEA,SAAOsG,GAAa28B,GAAyB,EAAE,UAAAjjC,GAAqC;AACtF,GAEailD,KAAc,CAACplD,GAAkByK,GAAcxK,MACrDD,IAMEyK,MAAS,KAAKA,IAFFxK,IAAc,iBAAiB,YAHhD,QC5BSolD,KAAsD,CAAC;AAAA,EAClE,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAxlD;AACF,MAAM;AACJ,QAAMS,IAAcC,GAAA,GACd,CAAC+kD,GAAWC,CAAY,IAAI1nD,EAAoB,IAAI,MAAMunD,EAAkB,MAAM,EAAE,KAAK,EAAK,CAAC,GAE/FI,IAAgC3rD,EAAW,uCAAuC,GAClF4rD,IAAkC5rD,EAAW,4BAA4B,GAEzE6rD,IAAiB,KAAK,IAAIR,GAAc,CAAC,GAEzCS,IAAW,CAAC5iD,MAAkB;;AAClC,UAAM6iD,KAAUtqD,IAAA0pD,EAAc,YAAd,gBAAA1pD,EAAuB,iBAAiB;AACxD,IAAIsqD,KAAWA,EAAQ7iD,CAAK,KAC1B6iD,EAAQ7iD,CAAK,EAAE,MAAA;AAAA,EAEnB,GAEMymB,IAAgB,CAACxsB,GAA4B+F,MAAkB;;AACnE,YAAQ/F,EAAM,MAAA;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAA,EAAM,eAAA,GACNuoD,EAAa,CAACp6C,MAAS;AACrB,gBAAM06C,IAAW,CAAC,GAAG16C,CAAI;AACzB,iBAAA06C,EAAS9iD,CAAK,IAAI,IACX8iD;AAAA,QACT,CAAC;AACD;AAAA,MACF,KAAK;AACH,QAAAF,GAAU5iD,IAAQ,IAAIqiD,EAAkB,UAAUA,EAAkB,MAAM,GAC1EpoD,EAAM,eAAA;AACN;AAAA,MACF,KAAK;AACH,QAAA2oD,GAAU5iD,IAAQ,KAAKqiD,EAAkB,MAAM,GAC/CpoD,EAAM,eAAA;AACN;AAAA,MACF,KAAK;AACH,QAAKA,EAAM,aACTA,EAAM,eAAA,IACN1B,IAAA2pD,EAAS,YAAT,QAAA3pD,EAAkB;AAEpB;AAAA,IAEA;AAAA,EAEN,GAEM2pC,IAAc,CAACjoC,GAA4B+F,MAAkB;AACjE,YAAQ/F,EAAM,MAAA;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAmoD,EAAepiD,CAAK,GACpBwiD,EAAa,CAACp6C,MAAS;AACrB,gBAAM06C,IAAW,CAAC,GAAG16C,CAAI;AACzB,iBAAA06C,EAAS9iD,CAAK,IAAI,IACX8iD;AAAA,QACT,CAAC;AACD;AAAA,IAAA;AAAA,EAEN,GAEM1hD,IAAkB,CAACpB,MAAkB;AACzC,IAAAwiD,EAAa,CAACp6C,MAAS;AACrB,YAAM06C,IAAW,CAAC,GAAG16C,CAAI;AACzB,aAAA06C,EAAS9iD,CAAK,IAAI,IACX8iD;AAAA,IACT,CAAC;AAAA,EACH,GAEMzhD,IAAgB,CAACrB,MAAkB;AACvC,IAAAoiD,EAAepiD,CAAK,GAEpBwiD,EAAa,CAACp6C,MAAS;AACrB,YAAM06C,IAAW,CAAC,GAAG16C,CAAI;AACzB,aAAA06C,EAAS9iD,CAAK,IAAI,IACX8iD;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SACE,gBAAApqD,EAAA,cAAC,OAAA,EAAI,WAAW+pD,EAAA,GACd,gBAAA/pD,EAAA,cAAC,SAAI,WAAU,kDAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,gBAAA,mCACZ,OAAA,EAAI,KAAKupD,GAAe,MAAK,WAAU,WAAWS,KAChDL,EAAkB,IAAI,CAACU,GAAkC/iD,MAAU;;AAClE,UAAMgjD,IAAWL,MAAmB3iD,GAC9B5I,IAAM,gBAAgBmG,CAAW,IAAIyC,CAAK,IAE1CrD,IAAUomD,EAAc,UACxBnmD,IAAcmmD,EAAc,aAC5BlmD,IAAmBkmD,EAAc,kBAEjC5mB,IAAwBrlC,EAAW,gBAAgB;AAAA,MACvD,aAAaksD;AAAA,MACb,yBAAyBlmD;AAAA,IAAA,CAC1B;AAED,WACE,gBAAApE,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACC,IAAI3M;AAAA,QACJ,KAAAA;AAAA,QACA,MAAK;AAAA,QACL,UAAA0F;AAAA,QACA,WAAWq/B;AAAA,QACX,YAAW;AAAA,QACX,SAAQ;AAAA,QACR,SAAS;AAAA,QACT,aAAa4lB,GAAYplD,GAASC,GAAa,EAAI;AAAA,QACnD,kBAAkBmlD,GAAYplD,GAASE,GAAkB,EAAK;AAAA,QAC9D,cAAc0lD,EAAUviD,CAAK,IAAI,mCAAmC;AAAA,QACpE,mBAAkB;AAAA,QAClB,UAAUgjD,IAAW,IAAI;AAAA,QACzB,SAAS,MAAM;AACb,UAAAZ,EAAepiD,CAAK;AAAA,QACtB;AAAA,QACA,WAAW,CAACd,MAAQunB,EAAcvnB,GAAKc,CAAK;AAAA,QAC5C,SAAS,CAACd,MAAQgjC,EAAYhjC,GAAKc,CAAK;AAAA,QACxC,aAAa,MAAMoB,EAAgBpB,CAAK;AAAA,QACxC,WAAW,MAAMqB,EAAcrB,CAAK;AAAA,QACpC,iBAAegjD;AAAA,MAAA;AAAA,OAEd7iD,KAAA5H,IAAAwqD,KAAA,gBAAAA,EAAe,UAAf,gBAAAxqD,EAAsB,UAAtB,gBAAA4H,EAA6B;AAAA,IAAA;AAAA,EAGpC,CAAC,CACH,CACF,GACA,gBAAAzH,EAAA,cAAC,SAAI,WAAU,sCAAA,GACZ4pD,EAAgBK,CAAc,KAC7B,gBAAAjqD,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,KAAKwpD;AAAA,MACJ,GAAI3mD,EAAgB+mD,EAAgBK,CAAc,EAAE,MAAM,gBAAgB,IAAI,EAAE,UAAU,EAAA,IAAM,EAAE,UAAU,GAAA;AAAA,MAC7G,mBAAiB,eAAeplD,CAAW,IAAIolD,CAAc;AAAA,IAAA;AAAA,IAE5DL,EAAgBK,CAAc,EAAE,MAAM;AAAA,EAAA,CAG7C,CACF,CACF;AAEJ,GCzJaM,KAAiD,CAAC,EAAE,SAAAljB,QACxD,gBAAArnC,EAAA,cAAC,aAAKqnC,CAAQ,GAGVmjB,KAA4D,CAAC;AAAA,EACxE,uBAAAC;AAAA,EACA,eAAAlB;AAAA,EACA,mBAAAI;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAH;AAAA,EACA,UAAArlD;AACF,MAAM;AACJ,QAAMS,IAAcC,GAAA,GACd,EAAE,MAAAuR,EAAA,IAASuyC,GAAA,GACX8B,IAAaxoD,EAAqC,EAAE,GACpD,CAAC2nD,GAAWC,CAAY,IAAI1nD,EAAoB,IAAI,MAAMunD,EAAkB,MAAM,EAAE,KAAK,EAAK,CAAC,GAC/F,CAACgB,GAAeC,CAAgB,IAAIxoD,EAA6BqnD,CAAY,GAE7EoB,IAA+BzsD,EAAW,uBAAuB,GACjE0sD,IAA4B1sD,EAAW,0BAA0B,GAEjE2sD,IAAmB,CAACzjD,MAAkB;AAC1C,UAAMoR,IAAYgyC,EAAW,QAAQpjD,CAAK,GACpC+/B,IAAUuiB,EAAgBtiD,CAAK,EAAE,MAAM,UACvC0jD,IAAkC;AAAA,MACtC,kBAAkB,GAAGP,CAAqB;AAAA,MAC1C,UAAArmD;AAAA,MACA,QAAQ,MAAM;AACZ,QAAAsU,KAAA,QAAAA,EAAW;AAAA,MACb;AAAA,IAAA;AAEF,IAAArC,EAAK,gBAAArW,EAAA,cAACuqD,IAAA,EAAa,SAAAljB,EAAA,CAAkB,GAAI2jB,CAAW;AAAA,EACtD;AAEA,EAAA3oD,EAAU,MAAM;;AACd,IAAIsoD,MAAkB,UAAaD,EAAW,QAAQC,CAAa,OACjE9qD,IAAA6qD,EAAW,QAAQC,CAAa,MAAhC,QAAA9qD,EAAmC;AAAA,EAEvC,GAAG,CAAC8qD,CAAa,CAAC;AAElB,QAAM58B,IAAgB,CAACvnB,GAAoBc,MAAmB;;AAC5D,UAAM2jD,IAAe,SAAS,eACxBC,IAAwBR,EAAW,QAAQ,SAASO,CAAiC;AAE3F,KAAKzkD,EAAI,SAAS,aAAaA,EAAI,SAAS,gBAAgB0kD,MAC1D1kD,EAAI,eAAA,GAEJokD,EAAiB,CAACO,MAAY;AAC5B,YAAMC,IAAgBD,KAAW,GAC3BE,IAAe1B,EAAkB;AAEvC,UAAInjD,EAAI,SAAS;AACf,gBAAQ4kD,IAAgB,IAAIC,KAAgBA;AAC9C,UAAW7kD,EAAI,SAAS;AACtB,gBAAQ4kD,IAAgB,KAAKC;AAAA,IAEjC,CAAC,IAGC7kD,EAAI,SAAS,SACDA,EAAI,SAAS,SAEd0kD,MACP1kD,EAAI,YACN3G,IAAA6qD,EAAW,QAAQ,CAAC,MAApB,QAAA7qD,EAAuB,WAEvB4H,IAAAijD,EAAW,QAAQA,EAAW,QAAQ,SAAS,CAAC,MAAhD,QAAAjjD,EAAmD,WAKpDjB,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,YAAY0kD,KAClFpB,EAAa,CAACp6C,MAAS;AACrB,YAAM47C,IAAkB,CAAC,GAAG57C,CAAI;AAChC,aAAIpI,MAAU,WAAWgkD,EAAgBhkD,CAAK,IAAI,KAC3CgkD;AAAA,IACT,CAAC;AAAA,EAEL,GAEM9hB,IAAc,CAAChjC,GAAoBc,MAAkB;AACzD,KAAId,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,aACrEA,EAAI,eAAA,GACJsjD,EAAa,CAACp6C,MAAS;AACrB,YAAM47C,IAAkB,CAAC,GAAG57C,CAAI;AAChC,aAAA47C,EAAgBhkD,CAAK,IAAI,IAClBgkD;AAAA,IACT,CAAC;AAAA,EAEL,GAEM5iD,IAAkB,CAACpB,MAAkB;AACzC,IAAAwiD,EAAa,CAACp6C,MAAS;AACrB,YAAM47C,IAAkB,CAAC,GAAG57C,CAAI;AAChC,aAAA47C,EAAgBhkD,CAAK,IAAI,IAClBgkD;AAAA,IACT,CAAC;AAAA,EACH,GAEM3iD,IAAgB,CAACrB,MAAkB;AACvC,IAAAyjD,EAAiBzjD,CAAK,GAEtBwiD,EAAa,CAACp6C,MAAS;AACrB,YAAM47C,IAAkB,CAAC,GAAG57C,CAAI;AAChC,aAAA47C,EAAgBhkD,CAAK,IAAI,IAClBgkD;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SACE,gBAAAtrD,EAAA,cAAC,OAAA,EAAI,WAAW6qD,EAAA,mCACb,OAAA,EAAI,KAAKtB,GAAe,WAAWuB,EAAA,GACjCnB,EAAkB,IAAI,CAACU,GAAkC/iD,MAAU;;AAClE,UAAM5I,IAAM,gBAAgBmG,CAAW,IAAIyC,CAAK,IAE1CrD,IAAUomD,EAAc,UACxBnmD,IAAcmmD,EAAc,aAC5BlmD,IAAmBkmD,EAAc,kBAEjC5mB,IAAwBrlC,EAAW,gBAAgB;AAAA,MACvD,yBAAyBgG;AAAA,IAAA,CAC1B;AAED,WACE,gBAAApE,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACC,KAAK,CAACu7B,MAAO;AACX,UAAA8jB,EAAW,QAAQpjD,CAAK,IAAIs/B;AAAA,QAC9B;AAAA,QACA,KAAAloC;AAAA,QACA,IAAIA;AAAA,QACJ,WAAW+kC;AAAA,QACX,YAAW;AAAA,QACX,SAAQ;AAAA,QACR,SAAS;AAAA,QACT,aAAa4lB,GAAYplD,GAASC,GAAa,EAAI;AAAA,QACnD,kBAAkBmlD,GAAYplD,GAASE,GAAkB,EAAK;AAAA,QAC9D,cAAc0lD,EAAUviD,CAAK,IAAI,4BAA4B;AAAA,QAC7D,mBAAkB;AAAA,QAClB,SAAS,MAAMyjD,EAAiBzjD,CAAK;AAAA,QACrC,WAAW,CAACd,MAAQunB,EAAcvnB,GAAKc,CAAK;AAAA,QAC5C,SAAS,CAACd,MAAQgjC,EAAYhjC,GAAKc,CAAK;AAAA,QACxC,MAAK;AAAA,QACL,UAAAlD;AAAA,QACA,aAAa,MAAMsE,EAAgBpB,CAAK;AAAA,QACxC,WAAW,MAAMqB,EAAcrB,CAAK;AAAA,MAAA;AAAA,OAEnCG,KAAA5H,IAAAwqD,KAAA,gBAAAA,EAAe,UAAf,gBAAAxqD,EAAsB,UAAtB,gBAAA4H,EAA6B;AAAA,IAAA;AAAA,EAGpC,CAAC,CACH,CACF;AAEJ,GAEa8jD,KAAoD,CAAC5rD,sCAE7DopD,IAAA,MACC,gBAAA/oD,EAAA,cAACwqD,IAAA,EAA6B,GAAG7qD,GAAO,CAC1C,GCvJS6rD,KAA0D,CAAC,EAAE,MAAAxoD,GAAM,UAAAnC,GAAU,uBAAA4pD,GAAuB,UAAArmD,QAAe;AAC9H,QAAMolD,IAAWtnD,EAA8B,IAAI,GAC7CqnD,IAAgBrnD,EAA8B,IAAI,GAElD,CAACunD,GAAcgC,CAAe,IAAIrpD,EAAS,CAAC,GAC5C,CAACunD,GAAmB+B,CAAoB,IAAItpD,EAAmC,CAAA,CAAE,GACjF,CAACwnD,GAAiB+B,CAAkB,IAAIvpD,EAA4C,CAAA,CAAE,GAEtF,EAAE,OAAAiD,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAQ,EAAA,IAAaH,GAAA,GACfgoD,IAAmBvmD,IAAQtB,GAE3B2lD,IAAiB,CAACpiD,MAAkB;AACxC,IAAAmkD,EAAgBnkD,CAAK;AAAA,EACvB;AAEA,SAAAjF,EAAU,MAAM;AACd,UAAMoI,IAAiB3J,EAAS,QAAQD,CAAQ,GAC1CgrD,IAAmC,CAAA,GACnCC,IAA0C,CAAA;AAEhD,IAAArhD,EAAe,QAAQ,CAACshD,GAASzkD,MAAU;;AACzC,UAAI,MAAM,QAAQykD,EAAQ,MAAM,QAAQ,GAAG;AACzC,cAAM,CAACC,GAAaC,CAAS,IAAIF,EAAQ,MAAM;AAE/C,QAAIC,KAAehrD,EAAegrD,CAAW,KAC3CH,EAAO,KAAK;AAAA,UACV,OAAOG;AAAA,UACP,YAAUnsD,IAAAmD,KAAA,gBAAAA,EAAOsE,OAAP,gBAAAzH,EAAe,aAAY;AAAA,UACrC,eAAa4H,IAAAzE,KAAA,gBAAAA,EAAOsE,OAAP,gBAAAG,EAAe,gBAAe;AAAA,UAC3C,oBAAkB+D,IAAAxI,KAAA,gBAAAA,EAAOsE,OAAP,gBAAAkE,EAAe,qBAAoB;AAAA,QAAA,CACtD,GAGCygD,KAAajrD,EAAeirD,CAAS,KACvCH,EAAK,KAAKG,CAAuC;AAAA,MAErD;AAAA,IACF,CAAC,GAEDP,EAAqBG,CAAM,GAC3BF,EAAmBG,CAAI;AAAA,EACzB,GAAG,CAACjrD,GAAUmC,CAAI,CAAC,GAGjB,gBAAAhD,EAAA,cAAAA,EAAA,UAAA,MACI4rD,IAWA,gBAAA5rD,EAAA;AAAA,IAACurD;AAAA,IAAA;AAAA,MACC,UAAAnnD;AAAA,MACA,cAAAqlD;AAAA,MACA,eAAAF;AAAA,MACA,iBAAAK;AAAA,MACA,mBAAAD;AAAA,MACA,uBAAAc;AAAA,IAAA;AAAA,EAAA,IAhBF,gBAAAzqD,EAAA;AAAA,IAACspD;AAAA,IAAA;AAAA,MACC,UAAAE;AAAA,MACA,UAAAplD;AAAA,MACA,cAAAqlD;AAAA,MACA,eAAAF;AAAA,MACA,gBAAAG;AAAA,MACA,iBAAAE;AAAA,MACA,mBAAAD;AAAA,IAAA;AAAA,EAAA,CAYN;AAEJ,GChFauC,KAA4B,CAACvsD,MAAwB,gBAAAK,EAAA,cAAC,OAAA,EAAK,GAAGL,EAAA,CAAO,GCLrEwsD,KAAgC,CAACxsD,MAA0B,gBAAAK,EAAA,cAAC,OAAA,EAAK,GAAGL,EAAA,CAAO,GCO3EysD,KAAoB,CAACzsD,MAAoB,gBAAAK,EAAA,cAAC,OAAA,EAAK,GAAGL,EAAA,CAAO,GCOzD0sD,KAAoC,CAAC;AAAA,EAChD,WAAAvkD;AAAA,EACA,WAAAlH;AAAA,EACA,YAAA0rD;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAvkB;AACF,MAAM;AACJ,QAAM1jC,IAAcC,GAAA,GAEdioD,IAAgB3uD;AAAA,IACpB;AAAA,IACA,EAAE,cAAcyE,EAAgBiF,CAAS,GAAG,YAAcjF,EAAgBypD,CAAU,EAAA;AAAA,IACpF1rD;AAAA,EAAA,GAGIosD,IAAoB5uD,EAAW,kBAAkB,GAGjD6uD,IAAmB,KAAK,IAAIR,GAAW,CAAC;AAE9C,SACE,gBAAAzsD,EAAA,cAAC,SAAI,QAAQ,CAACuoC,GAAW,WAAWwkB,EAAA,mCACjC,OAAA,EAAI,KAAKR,GAAY,MAAK,WAAU,WAAWS,EAAA,GAC7ClsD,EAAS,IAAI+rD,GAAgB,CAAC9rD,GAAqCuG,MAAU;AAC5E,UAAMgjD,IAAW2C,MAAqB3lD,GAEhC5I,IAAM,aAAamG,CAAW,IAAIyC,CAAK,IACvC4lD,IAAwB9uD,EAAW,iBAAiB;AAAA,MACxD,eAAekuD;AAAA,MACf,gBAAgB,CAACA,KAAczpD,EAAgBiF,CAAS;AAAA,MACxD,QAAUwiD;AAAA,MACV,mBAAmBqC,MAAgB;AAAA,MACnC,mBAAmBA,MAAgB;AAAA,MACnC,qBAAqBA,MAAgB;AAAA,IAAA,CACtC;AAED,WACE,gBAAA3sD,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAItB;AAAA,QACJ,KAAAA;AAAA,QACA,MAAK;AAAA,QACL,UAAU4rD,IAAW,IAAI;AAAA,QACzB,SAAS,CAAC9jD,MAAQ;AAChB,UAAAA,EAAI,cAAc,KAAA,GAClBkmD,EAAYplD,CAAK;AAAA,QACnB;AAAA,QACA,iBAAegjD;AAAA,QACf,WAAW4C;AAAA,MAAA;AAAA,MAEVnsD,EAAM,MAAM;AAAA,IAAA;AAAA,EAGnB,CAAC,CACH,GAEC+rD,EAAaG,CAAgB,KAC5B,gBAAAjtD,EAAA,cAAC,OAAA,EAAI,MAAK,YAAW,WAAW4sD,GAAmB,mBAAiB,aAAa/nD,CAAW,IAAIooD,CAAgB,MAC9G,gBAAAjtD,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,KAAKwsD;AAAA,MACJ,GAAI3pD,EAAgBiqD,EAAaG,CAAgB,EAAE,MAAM,gBAAgB,IAAI,EAAE,UAAU,MAAM,EAAE,UAAU,GAAA;AAAA,IAAG;AAAA,IAE9GH,EAAaG,CAAgB,EAAE,MAAM;AAAA,EAAA,CAE1C,CAEJ;AAEJ,GC3EaE,KAAkC,CAAC;AAAA,EAC9C,WAAArlD;AAAA,EACA,WAAAlH;AAAA,EACA,YAAA2rD;AAAA,EACA,WAAAE;AAAA,EACA,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAE;AAAA,EACA,cAAAC;AAAA,EACA,kBAAAM;AACF,MAAM;AACJ,QAAMvoD,IAAcC,GAAA,GAEdioD,IAAgB3uD,EAAW,qBAAqB,EAAE,cAAcyE,EAAgBiF,CAAS,EAAA,GAAKlH,CAAS,GAEvGosD,IAAoB5uD,EAAW,iBAAiB;AAEtD,SACE,gBAAA4B,EAAA,cAAC,SAAI,QAAQ,CAACotD,GAAkB,WAAWL,EAAA,mCACxC,OAAA,EAAI,KAAKR,GAAY,WAAWS,EAAA,mCAC9BlmD,IAAA,MACEhG,EAAS,IAAI+rD,GAAgB,CAAC9rD,GAAqCuG,MAAU;AAC5E,UAAMgjD,IAAWmC,MAAcnlD,GACzB5I,IAAM,aAAamG,CAAW,IAAIyC,CAAK,IACvC4lD,IAAwB9uD,EAAW,wBAAwB;AAAA,MAC/D,QAAUksD;AAAA,MACV,mBAAmBqC,MAAgB;AAAA,MACnC,mBAAmBA,MAAgB;AAAA,MACnC,qBAAqBA,MAAgB;AAAA,IAAA,CACtC;AAED,WACE,gBAAA3sD,EAAA;AAAA,MAACgE;AAAA,MAAA;AAAA,QACC,IAAItF;AAAA,QACJ,KAAAA;AAAA,QACA,YAAY,MAAM;AAChB,UAAAguD,EAAYplD,CAAK;AAAA,QACnB;AAAA,QACA,aAAa,MAAM;AACjB,UAAAolD,EAAY,EAAE;AAAA,QAChB;AAAA,QACA,WAAWQ;AAAA,QACX,cAAcnsD,EAAM,MAAM;AAAA,QAC1B,UAAUupD;AAAA,MAAA;AAAA,MAETwC,EAAaxlD,CAAK,EAAE,MAAM;AAAA,IAAA;AAAA,EAGjC,CAAC,CACH,CACF,CACF;AAEJ,GCxBa+lD,KAAsB,CAAC;AAAA,EAClC,UAAAxsD;AAAA,EACA,qBAAAysD,IAAsB;AAAA,EACtB,WAAAxlD,IAAY;AAAA,EACZ,WAAAlH,IAAY;AAAA,EACZ,YAAA0rD;AAAA,EACA,iBAAAiB;AAAA,EACA,aAAAZ,IAAc;AAAA,EACd,GAAGhtD;AACL,MAAM;AACJ,QAAM6sD,IAActqD,EAA8B,IAAI,GAEhDsrD,IAAoBtrD,EAA8B,IAAI,GACtDurD,IAAmBvrD,EAA8B,IAAI,GAErD,CAACuqD,GAAWiB,CAAY,IAAItrD,EAAS,CAAC,GACtC,CAACurD,GAAYC,CAAa,IAAIxrD,EAAS,CAAC,GACxC,CAACyqD,GAAgBgB,CAAiB,IAAIzrD,EAA8C,CAAA,CAAE,GACtF,CAAC0qD,GAAcgB,CAAe,IAAI1rD,EAA4C,CAAA,CAAE,GAEhF,EAAE,OAAAiD,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAQ,EAAA,IAAaH,GAAA,GACfwpD,IAAmB/nD,IAAQtB,GAC3BwkC,IAAYljC,KAAStB,GAErB2oD,IAAc9iD;AAAA,IAClB,CAACtC,MAAkB;AACjB,MAAAomD,EAAapmD,CAAK,GAClBimD,KAAA,QAAAA,EAAkBjmD;AAAA,IACpB;AAAA,IACA,CAACimD,CAAe;AAAA,EAAA;AAGlB,EAAAlrD,EAAU,MAAM;AACd,UAAMwpD,IAA8C,CAAA,GAC9CC,IAA0C,CAAA,GAE1CrhD,IAAiB3J,EAAS,QAAQD,CAAQ;AAEhD,IAAAC,EAAS,QAAQ2J,GAAgB,CAACshD,GAAiCzkD,MAAU;;AAC3E,MAAKtG,EAAe+qD,CAAO,MAIvBlpD,EAAgBkpD,EAAQ,MAAM,MAAM,KACtCW,EAAYplD,CAAK,GAGnBukD,EAAO,MAAKpkD,MAAA5H,IAAAksD,EAAQ,UAAR,gBAAAlsD,EAAe,aAAf,gBAAA4H,GAA0B,EAAkC,GACxEqkD,EAAK,MAAKrgD,KAAAD,IAAAugD,EAAQ,UAAR,gBAAAvgD,EAAe,aAAf,gBAAAC,EAA0B,EAAgC;AAAA,IACtE,CAAC,GAEDoiD,EAAkBhC,CAAM,GACxBiC,EAAgBhC,CAAI;AAAA,EACtB,GAAG,CAACjrD,GAAU6rD,CAAW,CAAC;AAE1B,QAAMqB,IAAuB,CAACC,MAAwC;;AAEpE,QAAI,GADgBnuD,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,UAAU,SAAS;AAE7D;AAGF,QAAIouD,IAAgBN;AACpB,IAAI,CAAC9qD,EAAgBypD,CAAU,KAAK,CAACc,MAC/BO,MAAeK,EAAe,SAAS,KACzCA,EAAe,CAAC,EAAE,MAAA,GAClBC,IAAgB,MAEhBA,IAAgBN,IAAa,GAC7BK,EAAeC,CAAa,EAAE,MAAA,IAGhCL,EAAcK,CAAa,GACvBprD,EAAgByqD,CAAmB,KACrCZ,EAAYuB,CAAa;AAAA,EAG/B,GAEMC,IAAsB,CAACF,MAAwC;;AAEnE,QAAI,GADgBnuD,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,UAAU,SAAS;AAE7D;AAGF,QAAIouD,IAAgBN;AACpB,IAAI,CAAC9qD,EAAgBypD,CAAU,KAAK,CAACc,MAC/BO,MAAe,KACjBK,EAAeA,EAAe,SAAS,CAAC,EAAE,MAAA,GAC1CC,IAAgBD,EAAe,SAAS,MAExCC,IAAgBN,IAAa,GAC7BK,EAAeC,CAAa,EAAE,MAAA,IAGhCL,EAAcK,CAAa,GACvBprD,EAAgByqD,CAAmB,KACrCZ,EAAYuB,CAAa;AAAA,EAG/B,GAEME,IAAsB,CAACH,MAAwC;;AAEnE,QAAI,GADgBnuD,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,UAAU,SAAS;AAE7D;AAGF,QAAIouD,IAAgBN;AACpB,KAAI9qD,EAAgBypD,CAAU,KAAKc,OAC7BO,MAAeK,EAAe,SAAS,KACzCA,EAAe,CAAC,EAAE,MAAA,GAClBC,IAAgB,MAEhBA,IAAgBN,IAAa,GAC7BK,EAAeC,CAAa,EAAE,MAAA,IAGhCL,EAAcK,CAAa,GACvBprD,EAAgByqD,CAAmB,KACrCZ,EAAYuB,CAAa;AAAA,EAG/B,GAEMG,IAAoB,CAACJ,MAAwC;;AAEjE,QAAI,GADgBnuD,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,UAAU,SAAS;AAE7D;AAGF,QAAIouD,IAAgBN;AACpB,KAAI9qD,EAAgBypD,CAAU,KAAKc,OAC7BO,MAAe,KACjBK,EAAeA,EAAe,SAAS,CAAC,EAAE,MAAA,GAC1CC,IAAgBD,EAAe,SAAS,MAExCC,IAAgBN,IAAa,GAC7BK,EAAeC,CAAa,EAAE,MAAA,IAGhCL,EAAcK,CAAa,GACvBprD,EAAgByqD,CAAmB,KACrCZ,EAAYuB,CAAa;AAAA,EAG/B,GAEMI,IAAiB,CAACL,MAAwC;;AAE9D,QAAI,GADgBnuD,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,UAAU,SAAS;AAE7D;AAGF,UAAMouD,IAAgB;AAEtB,IAAID,EAAeC,CAAa,MAC9BD,EAAeC,CAAa,EAAE,MAAA,GAC9BL,EAAcK,CAAa,GACvBprD,EAAgByqD,CAAmB,KACrCZ,EAAYuB,CAAa;AAAA,EAG/B,GAEMK,IAAgB,CAACN,MAAwC;;AAE7D,QAAI,GADgBnuD,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,UAAU,SAAS;AAE7D;AAGF,UAAMouD,IAAgBD,EAAe,SAAS;AAE9C,IAAIA,EAAeC,CAAa,MAC9BD,EAAeC,CAAa,EAAE,MAAA,GAC9BL,EAAcK,CAAa,GACvBprD,EAAgByqD,CAAmB,KACrCZ,EAAYuB,CAAa;AAAA,EAG/B,GAEMM,IAA2B,CAAC/nD,MAAuC;;AACvE,UAAMgoD,IAAkBhoD,EAAI,OAAuB,SAC7CioD,KAAyB5uD,IAAA2G,EAAI,OAAuB,kBAA3B,gBAAA3G,EAA0C;AAEzE,QAAIutD;AACF;AAGF,UAAMsB,IAAO,MAAM,OAAKjnD,IAAA+lD,EAAkB,YAAlB,gBAAA/lD,EAA2B,iBAAiB,sBAAqB,CAAA,CAAE,EAAE,IAAI,CAAC+O,MAAMA,CAAsB;AAC9H,QAAIk4C,EAAK,UAAU,GAInB;AAAA,UAAIloD,EAAI,SAAS,OAAO;AAEtB,cADoBgF,KAAA,SAAS,kBAAT,gBAAAA,GAAwB,UAAU,SAAS,qBAC5C,CAAChF,EAAI,UAAU;AAChC,UAAAA,EAAI,eAAA,IACJiF,IAAA+gD,EAAY,YAAZ,QAAA/gD,EAAqB;AACrB;AAAA,QACF;AAGA,YADqB+gD,EAAY,YAAY,SAAS,iBAClChmD,EAAI,UAAU;AAChC,UAAAA,EAAI,eAAA,GAEAkoD,EAAKjC,CAAS,KAChBiC,EAAKjC,CAAS,EAAE,MAAA;AAElB;AAAA,QACF;AAEA;AAAA,MACF;AAEA,cAAQjmD,EAAI,MAAA;AAAA,QACV,KAAK;AACH,UAAA6nD,EAAeK,CAAI;AACnB;AAAA,QAEF,KAAK;AACH,UAAAJ,EAAcI,CAAI;AAClB;AAAA,QAEF,KAAK;AACH,UAAAX,EAAqBW,CAAI;AACzB;AAAA,QAEF,KAAK;AACH,UAAAR,EAAoBQ,CAAI;AACxB;AAAA,QAEF,KAAK;AACH,UAAAP,EAAoBO,CAAI;AACxB;AAAA,QAEF,KAAK;AACH,UAAAN,EAAkBM,CAAI;AACtB;AAAA,QAEF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,cAAIF,MAAmB,YAAYC,MAA0B,WAAW;AACtE,YAAAjoD,EAAI,eAAA,GACJkmD,EAAYiB,CAAU;AACtB;AAAA,UACF;AACA;AAAA,MAEA;AAAA;AAAA,EAEN,GAEMf,IAAoBxuD,EAAW,aAAa;AAAA,IAChD,mBAAmBuuD,MAAgB;AAAA,IACnC,mBAAmBA,MAAgB;AAAA,IACnC,qBAAqBA,MAAgB;AAAA,EAAA,CACtC;AAED,yCACG,OAAA,EAAK,GAAGhtD,GAAO,MAAK,QAAO,WAAW4uD,EAAA,GACrC,gBAAAvuD,EAAA;AAAA,IAACqsD;AAAA,IAAA;AAAA,MACC,WAAA9jB;AAAA,MACA,WAAA3nC;AAAA,MACA,WAAAkH;AAAA,MACA,YAAAwkD;AAAA,MACA,YAAYkB;AAAA,MACZ,aAAAhB;AAAA,MACA,WAAAC;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,cAAAC;AAAA,IAAA;AAAA,EAAA,GAGF,gBAAA9sD,EAAA;AAAA,IAACmtD;AAAA,IAAA;AAAA,MACC,kBAAAC;AAAA,MACA,WAAAxsD;AAAA,MACA,WAAAkH;AAAA,MACA,YAAY2lD;AAAA,MACZ,WAAAhB;AAAA,MACA,aAAAC;AAAA,MACA,aAAAC;AAAA,MACA,gBAAAE;AAAA,MACA,cAAAC;AAAA,IAAA;AAAA,EAAA,CAEJ;AAEJ,GClVa6B,KAAwC,CAAC,EAAE,MAAA3rD,GAAM,UAAAoB,IAAW,IAAO,GAAGzE,EAAA,MACjF,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAU,0BACb,gBAAAA,EAAA,cAACwrD,IAAA,EAAuB,MAAAxoD,GAAY,UAAAoB,GAAqB,GAAGzE,KACzDqD,KAAA,gBAAAA,EAAM,IAAI,CAAC4rD,GAAOtnD,MAAU;AAC3B,QAAM5I,IAAM,OAAO4I,CAAK,IAClBunD,IAAc1F,GAAqByF,EAAM,SAASxqD,CAAQ;AAEhE,SACE,gBAAApE,EAAA,cAACosD,IAAA,EAAI,KAAA1tD,KACH,gBAAAsB,EAAA,cAACmsD,IAAA,MAAWyC,EAAM,IAAK,GACvB,gBAAA5uD,EAAA,cAACksD,IAAA,MAAS2C,CAAY,CACxB;AAEJ,EACF,CACF,GCGIC,KAAe1hD,GAAiC,CAAA,CAAuB,GAEvE2hD,KAAkB,MACfzhD,GAAWwhD,EAAY,GCNnBE,KAAoC,CAAC,EAAE,gBAAAlG,GAAgB,UAAAjoD,QAAe;AACjF,QAAM,EAAE,QAAA4I,GAAQ,OAAApE,EAAA,IAAU9B,GAAA,GAEpB0rD,IAAoB/sD,EAAuB,IAAI,GAC/CgtD,IAAiBhtD,EAAuB,IAAI,GAE5C,CAACitD,GAAoBC,CAAqB,IAAIhtD,EAAS,EAAE,GACzD,CAAC6R,GAAWo7C,CAAY,IAAIjtD,EAAS,EAAE,GAEvC,EAAE,MAAAuL,EAAA,IAASohD,GAAA,GAEXO,IAAmBlxD,EAAW,iDAAiD,sBAAsB0qD,EAAe,UAAU,IAAI;AAAA,IACtI,aAAajmD,EAAgBimD,EAAe,QAAQ;AAAA,EAAA,CACrD,GAEKyG,IAAkBnxD,EAAW,6CAA6C;AAEhF,SAAAiE,EAAU,MAAM;AACd,UAAMmtD,IAAgBP,EAAkB,SAClCQ,IAAaP,EAAe;AAElC,QAAIM,KAAiBC,GAAY;AAC/B,UAAIC,IAAU;AAEd,MAAIrqD,KAAS,QACXqqD,IAAU,MAAM;AAGlB,YAAMC,IAAkBlmD,IAASimD,GAC3B,EAAE,QAAQE,MAAkBH,EAA2B,sBAAA;AAE7D,MAAAL,EAAsB,GAAGO,CAAe,IAAI,GAC5CN,EAAa,GAAGM,IAAkBC,IAAe,KAAK,EAAE,IAAI;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC/uD,GAAUwE,GAAOoE,CAAM,CAAC,GAG1B,gBAAAzJ,EAAA,cAAC,OAAA,EAAI,WAAU,kFAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAKivD,GAAmB,WAAWK,GAAkB,OAAO,EAAE,WAAWH,KAAsB,OAAA,EAAO,GACzG,gBAAAnvD,EAAA,cAAC,OAAA,EAAI,KAAKkvD,GAAgB,WAAU,sEAClC,gBAAAlvD,EAAA,cAAC,OAAA,EAAI,WAAWuvD,EAAA,GAAkBzG,EAAe,KAAM,GACvD,gBAAA9oD,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,SAASsC;AAAA,MACT,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,UAAQ;AAAA,MACR,SAAO;AAAA,MACP,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,cAAYm7C,EAAe;AAAA,MAC3B,UAAUA,EAAe;AAAA,IAAA;AAAA,EAAA,CAE7B,GACA,gBAAA9oD,EAAA,cAAC,OAAA,EAAI,OAAO,EAAE,WAAWiU,KAAa,OAAA,GAAU,WAAW,0CAAA,GACxDpT,CACH,CACF,CACF;AAEJ,GCvDMgvD,KAAwC,CAAC,EAAE,wBAAAriC,IAAyB,IAAM,iBAAAC,IAAkB,IAAM,UAAA5sB,QAAe;AACrH,QAAM+tB,IAAY1sB,EAAsB,IAAI,GAEtC,CAACqpC,GAAgBC,CAAiB,IAAIppC,EAAA,GACtC,CAACqpC,GAAeC,CAAgB,IAAItpC,EAAA,GAEpCiU,IAAOzM;AAAA,IACX,CAAC+hC,GAAkCmkB,MAA6C;;AAC9E,MAAAtkB,EAAkBG,CAAqB,GACvCD,EAAiBokB,CAAoB,IACrCjwD,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,IACrB;AAAA,IACA,CAAC2rC,GAAmBE,CAAgB;AAAA,EAAA,GAGhC/9B,IAAO/D,GAAY,MAAY;;AACnC,KAAA/J,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,EACrB,GAAG,CAAA,CAAE,GAECksC,IAAe9kC;AAAA,IACnB,MAAA;;AACG;AAAA,QACC,SAAS2nB,EAAU;AAAA,QACnB,YAAY,CAAC,GAAC/uB,IAAA+uB,EAAU,YAAV,QAAA/uB,EAAmB;AAAA,QACjC,MAAAwW;AAAA,QACA,MAAA1I;AAAA,MAAA;AAAA;AAAA,IAEJ,CAAC0I,GAAM1I,CAAI;AAAA,EAAA;AAGb,SACE,gBAAA3N,EAAA,cAAC8uD,IAAA,EAAa,OAAO/iB,EAAA,GACnB,gBAAA/rC,EAAA;AAAA,IAACqtB;AAAA,IAAA;AAAA,MACC,KAAKuB;AAAA,MACL,YAAY;AAAA,MACZ,wBAAwB/rB,EAAgB2qB,CAAsB;AAAA,MAC9D,iBAAiB3qB,EAAgB4qB,CAAe;AAAA,MAChD,cAAYge,KAAA,gBAAAA,EAAgB;AAAA,IAAY;AAAA,IAEvC,CAAC,CAACA,qCAAkBujB,IAAA,EAAY,gBAAgBvjB,KAAgBF,CAAe;AAAA,EAAA,GAEjF1qC,CACH;AAEJ,GCbakvD,KAAoC,CAAC;AAAA,EAChD,OAAA9xD,IAAQ;AAAA,EACR,KAAA06C,IAAM;AAAA,EACN,WAAA/3C;AAAA,EACA,OAAA2N;AAAA,EACA,WAAAkC;AAAA,EACA,qBAAAu/C;AAAA,EACA,SAAA55C;AAAA,EACA,UAAA2U;AAAA,EACA,SAAAklC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAA/rD,IAAW;AAAA,EACX,GAAGzE;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GACdgF,IAAa,EAAE,GAAGnK,EAAA;AACxB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAMurD,IAAqBzX,MAAQ,KAAM16C,IAAQ06C,IAAO,KAAK,QAAQ,CAAC,IAAI,GAEpEt6C,IAAUD,EAAW,sBAAsBwC,GAAW;AAAA,IAC1D,kBAAkBiC,EAAgBkoB,CAAQ;AAAA,IAC1C,qBAAqB9sB,IAAQ,KAAKA,MAAU06C;AAAA,IAC5C,kBAAkB16C,MAAU;AAAA,IAC5B,qBAAqB4E,EAAgBuT,CAAO,KAAKnY,IAAQ06C;AAAA,IACzD,iBAAiB,CAAC91C,EAAgBuT,CAAO,KAAKnY,IAAQ06C;AAAA,IACtD,4BAA4BsX;AAAA,IAC5B,6BAA6BC;AAAA,IAC7B,kCAAkC,CAACD,KAAW,CAACC,KAAU,CAACC;AAAA,IAC1D,aAAa/rD;AAAA,EAAA,CACd,GAEKisD,IAAgBjyD,EAAW,0CAA0C;AAAA,IACzE,aAAagG;AAAA,EAAA,CACd,GAEKksD,IAAoBlyD,EAAWiyD,GAAe;AAAA,IAClD,WAAWxtD,EAAgBmtD,CAAmB;AAAA,IAC9C,eAAe,CAACntD,EAAgBmtD,CAAmB;AAAA,EAAA,CACpD;AAED,yCACG,OAAA,EAAI,WAAW3xD,GAAU,GAAGsB,EAAA,GAC1B,CAACkD,EAAgB4N,CAAS,KACzB,gBAAAzQ,EAAA,cAAC,WAAM,SAAS8J,EAAW,IAAI,WAAWumD,EAAA,GACvC9hD,CACH,GAEF,gBAAAvO,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI8J,EAAW;AAAA,MACf,WAAU;AAAA,MACV,OAAA7L;AAAA,MACA,KAAA06C;AAAA,MACA,kBAAgB,GAAG16C,CAAK,IAAI06C,CAAG;AAAA,MAC/B,cAAY91C,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,IAAA;AAAA,EAAA,mCAEvG,KAAA,EAAE,WAAWwmD,GAAmB,MAAK,SAAA,GACnCF,GAAmB,GACtB,CACF;AAEJ,GCjFaG,KAA8C,CAAC;AAAA,EAC1D,OAAAhiD;AAAA,EACA,WAAAkC;AAAA,EACA,sBAAA+/C;AAAA,EACA,UAAA3vD;AAAA,EACA,YAAA4vD;AAAA,EACA,UAAArsD,IAAW;AAAA,EACX,GAAGzE;AACL,MAAoB;AAClB,QAAM+wD,IAAe5vD,EAAS,QAAQD,CAAQ,GAExC8vD,IAAgB1pD,GAAQ,MAAM;AAClC,QAAI2pD,IAAe,IACfC,IAAe;AAWnB,QATAH,EAAa,QAAQ,CAACh7B,MAAM;AAC1B,MAAI10B,EAAiC00B,CAAC,KAChCA,EAAE,MAAM,YACVm7B,KAAgB,GAChBD,IAAe;AAAA,IAGrB,CAAC,GAEG,CAACA;AACH,aAAO;AAGT,QAAIA,KAAgBC,MAAiB;AACnC,aAAOH,EAAa,UAAU,CAACh7B,MAAM10B,EAAiC00B,CAAC,KAAKA,EAAE,MAAM,OAAO;AAG7F,UAAMo7B,IAAyBJ,EAAa,UAAU,CAACh7B,MACjD10B,EAAiC00B,CAAC,IACb,KAAK,IAAI,GAAG,KAAK,IAAIA,EAAE,MAAM,SAAS,GAAGA,EAAE,MAAM,OAAO,CAAC,CAAC,KAExDA,EAAE,MAAM,OAAO,KAGnC,EACR;AAED,WAAOo7B,IAAyB,IAAIJ,EAAa,SAAS,IAAII;AAAA,EAChE,GAAG,CAACJ,CAAY,CAAC,GAEXK,IAAe9pD,GAAQ,MAAM;AACjC,QAAI4pD,IAAe;AAEnB,WAAAH,EAAa,QAAQ,CAACh7B,MAAM;AAC1B,MAAI10B,EAAiC00B,CAAC,MACpCm7B,KAAgBn7B,EAAE,MAAM,OAAO;AAAA,IAEnC,CAAC,GAEMm7B;AAAA,EACT,GAAG,CAACH,CAAY,CAAC,GAGXM,IAAqB,CAACjwD,GAAuCuG,MAAkB;AACnF,UAAM2pD,IAAY3pD,MAAUqpD;AAC5B,QAAIzU,IAAan7C,EAAM,MAAM,SAAS;AAEtC,IAAI0vD,MACFvU,IAAayU,IAAgBrpD,IAAQ,IAAI40C;AAE3C,UAAM+T,IAAU3oD,MAAU,GACpB4oD,IAAS5oD,MAAUopD,EAAa,SAAS,GACzCQ,IAAWR,EAAa,WAAW;AAGzC,WAAOhmD,GAA+B3J,GAAO;AAAA,MAC3C,SAAWkwD;AAAA,MACX,OAAS/U;AAAA,MACT,eAAe;AAAA,MACf,SAAA+T;AAAA,MACA,QAAAC;AAAA,MACA,UARe,CAACD,KAAW,CAACC,KAAU,CAACgB;AAAA,MASvC,UAAA9sD;AAAA,IAAA,CACD;AAAA,EACH,GAGM+sD,IAAmB,MAAM;AAC7B,QAAIlzD,IAAQ;AACZ,WAAA6C,EAAS,QAAQD,GAAU,CAACE,GAAOuG,MAAU;AAC3C,MAAItG,EAAiCD,CAAK,KACpCA,EAAM,MAAM,UAAU,UAAaA,EAAM,MAAM,QAAQ,WACrD,CAAC0vD,KAAcnpD,KAASqpD,OAC1B1yD,KAAS,KAAK,IAAI8C,EAAM,MAAM,OAAOA,EAAM,MAAM,GAAG;AAAA,IAI5D,CAAC,GACM,KAAK,MAAO9C,IAAQ8yD,IAAgB,GAAG;AAAA,EAChD,GAEMV,IAAgBjyD,EAAW,0CAA0C;AAAA,IACzE,aAAagG;AAAA,EAAA,CACd,GAEKksD,IAAoBlyD,EAAWiyD,GAAe;AAAA,IAClD,WAAWG;AAAA,IACX,eAAe,CAACA;AAAA,EAAA,CACjB,GAEKY,IAAgBD,EAAA;AAEtB,SACE,gBAAAnxD,EAAA,cAAC,OAAA,EAAK,GAAGL,KACN,CAAC8Q,KACA,gBAAAzQ,EAAA,cAAC,OAAA,EAAI,eAAW,IAAC,WAAWqwD,EAAA,GACzB9hD,CACH,GAEF,gBAAAvO,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,iBAAeoxD;AAAA,MACf,kBAAgB,GAAGA,CAAa;AAAA,MAChC,iBAAe;AAAA,MACf,cAAY7iD;AAAA,IAAA;AAAA,IAEXzN,EAAS;AAAA,MAAID;AAAA,MAAU,CAACE,GAAOuG,MAC9BtG,EAAiCD,CAAK,IACpC,gBAAAf,EAAA,cAACqxD,IAAA,EAAS,KAAKtwD,EAAM,MAAM,MAAMuG,EAAA,GAAQ0pD,EAAmBjwD,GAAOuG,CAAK,CAAE,IACxE;AAAA,IAAA;AAAA,EACN,GAED,CAACkpD,KACA,gBAAAxwD,EAAA,cAAC,OAAA,EAAI,WAAWswD,GAAmB,MAAK,SAAA,GACrCc,GAAc,GACjB,CAEJ;AAEJ,GCpHME,KAAoC,CAAC;AAAA,EACzC,KAAA3wD,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,UAAAwc;AAAA,EACA,WAAAta;AAAA,EACA,UAAAua,IAAW;AAAA,EACX,aAAAC;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,cAAAC;AAAA,EACA,UAAAhmB;AAAA,EACA,eAAA8mB;AAAA,EACA,YAAAP;AAAA,EACA,UAAA9pB;AAAA,EACA,WAAAD,IAAY;AAAA,EACZ,GAAGjB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdqmB,KAAmBtoB,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,GAEjFtgB,IAAa,EAAE,GAAGnK,EAAA;AACxB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM0mB,IAAa5rB,EAAM,YAAYA,EAAM,WAAW,KAAQqrB,GAExDQ,IAAeptB;AAAA,IACnB;AAAA,IACA;AAAA,MACE,UAAUuB,EAAM;AAAA,MAChB,OAAOkD,EAAgBkoB,CAAQ;AAAA,MAC/B,MAAMloB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,IAEhCxD;AAAA,EAAA;AAGF,2DAEI,gBAAAZ,EAAA,cAAC,OAAA,EAAI,QAAQ8J,EAAW,QAAQ,WAAW0hB,EAAA,GACzC,gBAAAxrB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,oBAAkBqhB,IAAkB,SAASrhB,EAAW,EAAE,cAAeA,EAAW,kBAAkB,KAAK;AAAA,MAC3G,WAAU;AAAA,MACV,MAAK;AAAA,MACL,cAAYjH,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,MACtG,KAAAnJ;AAAA,MACA,UAAU4qB;AAAA,MACV,UAAUzhB,EAAW,WAAW,KAAK;AAAA,MACrC,UAAUA,EAAW;AAAA,IAAA;AAAA,EAAA,mCAGtB,OAAA,EAAI,WAAU,mBACb,gBAAA9J,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACb,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,OAAA,CAAO,CACzB,GACC,CAACyQ,qCACC,SAAA,EAAM,WAAU,iBAAgB,SAAS3G,EAAW,GAAA,mCAClD,QAAA,EAAK,WAAU,WAASjJ,KAAY0N,CAAM,CAC7C,CAEJ,CACF,GAEC1L,EAAgBqoB,CAAa,qCAAMR,IAAA,EAAW,YAAAC,GAAwB,UAAAvmB,GAAoB,WAAU,kBAAA,CAAkB,GAGtH+mB,KACC,gBAAAnrB,EAAA,cAAC,OAAA,EAAI,WAAU,mCAAA,GACb,gBAAAA,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,SAASpgB,EAAW,EAAE;AAAA,MAC1B,eAAgBjH,EAAgBkoB,CAAQ,IAAoB,WAAhBZ;AAAA,MAC5C,cAAAC;AAAA,MACA,UAAUvnB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EAAA,CAEtC,CAEJ;AAEJ,GCtHamtD,KAAkC,CAAC,EAAE,UAAA1wD,GAAU,WAAAD,IAAY,IAAI,GAAGjB,QAAY;AACzF,MAAI6xD,IAAqB;AAEzB,EAAIxwD,EAAiCH,CAAQ,KAAMA,EAA0B,SAASywD,OACpFE,IAAqB,CAAC,CAAC3wD,EAAS,MAAM,UAGpCG,EAA8BH,CAAQ,KAAMA,EAA0B,SAASiqB,OACjF0mC,IAAqB,CAAC,CAAC3wD,EAAS,MAAM;AAKxC,QAAM4wD,IAAuBrzD,EAAWwC,GAAW,qBAAqB;AAAA,IACtE,UAAU4wD;AAAA,EAAA,CACX;AAED,yCACG,OAAA,EAAI,WAAWC,GAAuB,GAAG9xD,KACvCkB,CACH;AAEJ,GC1Ba6wD,KAAoC,CAAC,EAAE,GAAG/xD,QAC9C,gBAAAK,EAAA,cAAC,OAAA,EAAK,GAAGL,EAAA,GAAQA,EAAM,QAAS,GCW5BgyD,KAA4C,CAAC,EAAE,UAAA9wD,GAAU,UAAAuD,IAAW,IAAO,UAAAob,GAAU,WAAA5e,IAAY,IAAI,GAAGjB,QAAY;AAC/H,QAAMiyD,IAA2BxzD,EAAWwC,GAAW,8EAA8E;AAErI,SACE,gBAAAZ,EAAA,cAAC,SAAI,WAAW4xD,GAA2B,GAAGjyD,EAAA,GAC5C,gBAAAK,EAAA,cAAC,OAAA,MAAKa,CAAS,GACf,gBAAAb,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,SAAO;AAAA,MACP,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,SAAQ;AAAA,MACR,YAAW;AAAA,MACX,UAAUxI,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,IAEjCob;AAAA,EAAA,CAEL;AAEJ,GCKMqyC,KAA8C,CAAC;AAAA,EACnD,WAAAjxD;AAAA,EACA,QAAAmsB;AAAA,EACA,UAAAhC;AAAA,EACA,aAAAE;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,cAAAC;AAAA,EACA,UAAAzlB;AAAA,EAEA,UAAA9D;AAAA,EACA,MAAA3B;AAAA,EACA,GAAGS;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdqmB,KAAmBtoB,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,GAEjF8C,IAAgB,CAAC1mB,MAAuC;AAC5D,IAAA7B,KAAA,QAAAA,EAAW6B;AAAA,EACb,GAEMuG,IAAmB3O,EAAW,4BAA4BwC,CAAS,GAEnEkxD,IAAqBhxD,EAAS,IAAID,GAAU,CAACE,MAC5CC,EAAiCD,CAAK,IAIpC2J,GAA+B3J,GAAO;AAAA,IAC3C,UAAYmsB;AAAA,IACZ,MAAQhuB,KAAQ2F;AAAA,IAChB,UAAYhC,EAAgBkoB,CAAQ;AAAA,IACpC,aAAeloB,EAAgBooB,CAAW;AAAA,IAC1C,oBAAoBE,IAAkB,eAAetmB,CAAW,cAAc;AAAA,EAAA,CAC3D,IATZ,IAUV;AAED,yCACG,OAAA,EAAI,WAAWkI,KACd,gBAAA/M,EAAA,cAAC,cAAU,GAAGL,EAAA,GACXotB,KAAU,gBAAA/sB,EAAA,cAAC,YAAO,WAAU,qDAAA,GAAsD+sB,CAAO,GAEzF+kC,CACH,GAGC3mC,KACC,gBAAAnrB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,eAAerlB,CAAW;AAAA,MAC9B,eAAgBhC,EAAgBkoB,CAAQ,IAAoB,WAAhBZ;AAAA,MAC5C,cAAAC;AAAA,IAAA;AAAA,EAAA,CAGN;AAEJ,GCjGa2nC,KAAkF;AAAA;AAAA,EAE7F,qBAAqBjzD,EAAkC,MAAM,OAAO,4BAAoB,CAAC;AAAA,EACzF,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA;AAAA,EAG3F,sBAAsBA,EAAkC,MAAM,OAAO,6BAAuB,CAAC;AAAA,EAC7F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAsB,CAAC;AAAA,EAC3F,qBAAqBA,EAAkC,MAAM,OAAO,4BAAsB,CAAC;AAAA,EAC3F,yBAAyBA,EAAkC,MAAM,OAAO,gCAA0B,CAAC;AAAA,EACnG,0BAA0BA,EAAkC,MAAM,OAAO,iCAA2B,CAAC;AAAA;AAAA,EAGrG,qBAAqBA,EAAkC,MAAM,OAAO,4BAAqB,CAAC;AAAA,EAC1F,2BAA2BA,EAAkC,MAAM,OAAO,kCAA2B,CAAC;AAAA,EACtG,yBAAyBA,EAAkC,MAAM,OAAO,gCAAyB,CAAC;AAAA,EAClG,oBAAoBA,EAAkC,MAAM,OAAO,2BAAoB,CAAC;AAAA,EACxF,0BAA0BA,EAAkC,MAAM,OAAO,iCAA0B,CAAC;AAAA,EACpG,wBAAwBA,EAAkC,MAAM,OAAO,+BAAwB,CAAC;AAAA;AAAA,EAGhG,oBAAoBA,EAAkC,MAAM,OAAO,2BAAmB,CAAC;AAAA,EACvF,mBAAmBA,EAAkC,MAAM,OAAO,0BAAkB,CAAC;AAAA;AAAA,EAGrF,uBAAuBA,EAAkC,MAAM,OAAO,8BAAsB,CAAC;AAAA,EAC7F,sBAAsBA,EAAkC,MAAM,OAAO,6BAAqB,CAAC;AAAA,EAC3F,kBAAkBA,EAAkC,MAAM,OAAO,yBAAiB,CAAC;AAAA;AAAA,EAGnF,wBAAwBA,EAAkC,MAAM,OAAO,+BAAyB,CAAC;AAAA,EACjG,uBAAuBA,EAAkC,MAAM,OAAO,8BAAwB,CAAC;AAAA,EAC/F,0BAA0BA,EAAkC,MAAM,OAAO,iCAA2B,CAAC;AAAA,EACrG,yBAAyBA,EAAkC,MAAM,OAAO,gCAA0B,CAAC;AACrG,GAEakzD,KAAe,OAAO,KAAKD,EAAa,GAIxCE,KAAqB,CAAC/yD,MAC1B,CAAC,CAAC8yD,GAAa,KAAK,CAAC1zD,MAAMA,MAAMY,CAAI,GCtCxCgzD,KAA0F,CAAA,GAE1FC,KAAgB,CAACjzD,MAA0E;AAC/F,QAAMkzD,IAAkBF,GAAehzD,CAAI;AAE3C,MAAIkzD;AACF,WAAOA;AAGT,QAAMC,IAAeN,GAAc7yD,CAAI;AAEvC,SAAAgzD,GAAehzD,CAAI,IAAImzD,GAEhBA;AACT,GAwBaC,KAAgC,CAAC,EAAE,MAAApzD,GAAM,UAAAkF,GAAU,iBAAAmuD,GAAiB,kBAAAC,GAAkB,GAAG7yD,QAAY;AAChH,QAAMtB,IAAUD,EAAW,mBAAmBuB,EAAM,WAAWT,GAAM;AAAA,IACnE,aAAa2D,EAAgBuB,CAAQ;AAAA,EAAA,CACtC,GAEKtE,IAAS,MAAM;AACnB,IAAAyyD,KAAA,QAAAA;AAAA,EACF,GAEMxyD,IAAU,MAAM;AACpB,IAAAyyD,KAAA,QAAAA;AAAA,EACF;AAIA,MAAI,EADgBtzD,MAAS,MAAM+yD,GAAmB/yD,CAAI,IACxC;AAChB,IAAAa,EAAA;AACA;AAAA,EACF;AAGA,QAAM0yD,IAAeN,GAAcjzD,CAAI,GAEjCgB,IAAY;AAAA,IAChB,GAAGP;AAAA,IACH,WAAWtB;AAAA,IACX,OAAOsB,EAAM,SAASA,EAAM;AAAA,EAAA;AAG9B,SAAAG,EAAA,GAGE2yD,KACE,gBAAAzyD,EAAA,cAACG,IAAA,sCACEsyD,GAAA,EAAc,GAAGvyD,GAAW,CAC/B;AAGN,GCjEMwyD,KAAkC,CAAC,EAAE,KAAA/xD,IAAM,MAAM,WAAAC,GAAW,SAAAwV,GAAS,YAAAu8C,GAAY,GAAGhzD,QAAY;AACpG,QAAMoN,IAAmB3O,EAAW,eAAewC,GAAW;AAAA,IAC5D,SAASiC,EAAgBuT,CAAO;AAAA,EAAA,CACjC;AAED,SACE,gBAAApW,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,KAAAgB,EAAA,GACd,gBAAAX,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,WAAW0B;AAAA,MACX,YAAW;AAAA,MACX,cAAY4lD,KAAA,gBAAAA,EAAY;AAAA,MACvB,GAAI9vD,EAAgBuT,CAAO,IAAI,EAAE,gBAAgB,OAAA,IAAW,CAAA;AAAA,IAAC;AAAA,IAE7Du8C;AAAA,EAAA,CAEL;AAEJ,GCzBMC,KAAwE,CAAC,EAAE,KAAAjyD,IAAM,MAAM,WAAAC,GAAW,OAAA3C,GAAO,GAAG0B,QAAY;AAC5H,QAAMtB,IAAUD,EAAW,sBAAsBwC,CAAS;AAE1D,yCACG,OAAA,EAAK,GAAGjB,GAAO,KAAAgB,GAAU,WAAWtC,KAClCJ,CACH;AAEJ,GCuCM40D,KAA8C,CAAC;AAAA,EACnD,KAAAlyD,IAAM;AAAA,EACN,YAAAmyD,IAAa;AAAA,EACb,WAAAlyD;AAAA,EACA,wBAAAmyD;AAAA,EACA,oBAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,cAAAC,IAAe;AAAA,EACf,OAAA3kD;AAAA,EACA,mBAAA4kD;AAAA,EACA,uBAAAC;AAAA,EACA,UAAAzuD;AAAA,EACA,GAAGhF;AACL,MAAM;AACJ,QAAM,EAAE,OAAA0F,EAAA,IAAU9B,GAAA,GACZ,CAAC8vD,GAAYC,CAAa,IAAIlxD,EAAS,CAAC,GACxCmxD,IAAmBn1D,EAAW,YAAY;AAGhD,EAAIiH,IAAQ,QACV4tD,IAAgB,GAChBC,IAAe,IAGjB7wD,EAAU,MAAM;AACd,IAAAiB,GAAa,MAAMqB,KAAA,gBAAAA,EAAW0uD,EAAW;AAAA,EAC3C,GAAG,CAACA,CAAU,CAAC;AAEf,QAAM3jD,IAAO,MAAM;AACjB,IAAI2jD,IAAa,KACfC,EAAc,CAACE,MAAaA,IAAW,CAAC;AAAA,EAE5C,GAEM5lD,IAAO,MAAM;AACjB,IAAIylD,IAAaP,IAAa,KAC5BQ,EAAc,CAACE,MAAaA,IAAW,CAAC;AAAA,EAE5C,GAEMC,IAAQ,MAAM,KAAK,EAAE,QAAQX,EAAA,GAAc,CAAC1vD,GAAGkE,sCAC3CorD,IAAA,EAAW,KAAKprD,GAAO,YAAYA,IAAQ,GAAG,CACvD,GAEKosD,IAAsBzsD,GAAQ,MAC3BwsD,KAAA,gBAAAA,EAAO,IAAI,CAACE,GAAMC,MAChBlpD,GAA8BipD,GAAM;AAAA,IACzC,GAAGA,EAAK;AAAA,IACR,SAAS,MAAML,EAAcM,CAAU;AAAA,IACvC,SAAS/wD,EAAgBwwD,MAAeO,CAAU;AAAA,EAAA,CAChC,IAErB,CAAChzD,GAAWkyD,GAAYG,GAAeC,GAAcG,CAAU,CAAC,GAE7DQ,IAAoB5sD,GAAQ,MAAM;AAEtC,UAAM6sD,IAAmB,KAAK,IAAIT,IAAaH,GAAc,CAAC,GACxDa,IAAoB,KAAK,IAAIV,IAAaH,GAAcJ,CAAU,GAGlEkB,IAAYP,EAAM,MAAM,GAAGR,CAAa,GACxCgB,IAAcR,EAAM,MAAMK,GAAkBC,IAAoB,CAAC,GACjEG,IAAaT,EAAM,MAAMX,IAAaG,GAAeH,CAAU,GAC/DqB,IAAe,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAGH,GAAW,GAAGC,GAAa,GAAGC,CAAU,CAAC,CAAC,GAGzEE,IAAqBN,IAAmBb,GACxCoB,IAAsBN,IAAoBjB,KAAcG,IAAgB;AAE9E,WAAOQ,KAAA,gBAAAA,EAAO,IAAI,CAACE,GAAMC,MAAe;AACtC,UAAIO,EAAa,KAAK,CAAC5uC,MAASouC,KAAQpuC,CAAI;AAC1C,eAAO7a,GAA8BipD,GAAM;AAAA,UACzC,GAAGA,EAAK;AAAA,UACR,SAAS,MAAML,EAAcM,CAAU;AAAA,UACvC,SAAS/wD,EAAgBwwD,MAAeO,CAAU;AAAA,QAAA,CAChC;AAGtB,UAAIQ,KAAsBR,KAAcX;AACtC,eAAO,gBAAAjzD,EAAA,cAAC4yD,IAAA,EAA8B,KAAI,aAAY,OAAM,OAAM;AAGpE,UAAIyB,KAAuBT,KAAcd,IAAaG,IAAgB;AACpE,eAAO,gBAAAjzD,EAAA,cAAC4yD,IAAA,EAA8B,KAAI,cAAa,OAAM,OAAM;AAAA,IAEvE;AAAA,EACF,GAAG,CAAChyD,GAAWkyD,GAAYG,GAAeC,GAAcG,CAAU,CAAC;AAEnE,SACE,gBAAArzD,EAAA,cAAC,SAAK,GAAGL,GAAO,cAAY4O,GAAO,WAAU,2BAA0B,KAAA5N,EAAA,GACrE,gBAAAX,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,SAASqE;AAAA,MACT,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,UAAS;AAAA,MACT,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,UAAU2jD,MAAe;AAAA,MACzB,WAAW,GAAGE,CAAgB,IAAI1wD,EAAgBkwD,CAAsB,IAAI,eAAe,YAAY;AAAA,MACvG,cAAYK;AAAA,IAAA;AAAA,EAAA,GAEd,gBAAApzD,EAAA,cAAC,OAAA,EAAI,WAAU,YAAA,GAAaizD,MAAkB,KAAKC,MAAiB,IAAIQ,IAAsBG,CAAkB,GAChH,gBAAA7zD,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,SAASuC;AAAA,MACT,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,UAAS;AAAA,MACT,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,UAAUylD,MAAeP,IAAa;AAAA,MACtC,WAAW,GAAGS,CAAgB,IAAI1wD,EAAgBmwD,CAAkB,IAAI,eAAe,YAAY;AAAA,MACnG,cAAYG;AAAA,IAAA;AAAA,EAAA,CAEhB;AAEJ,GCvKamB,KAAoB,CAACC,GAAyCC,MAAsB;;AAC/F,QAAMC,IAAwCF,EAAW,SAEnDG,IAAkB,CAAC,GADPD,KAAA,gBAAAA,EAAc,iBAAiB,oBACZ,EAAE,KAAK,CAACnmC,MAAMA,EAAE,gBAAgB,MAAM;AAE3E,MAAIzrB,EAAgB2xD,CAAI;AACtB,KAAA/sD,KAAA5H,IAAA60D,KAAA,gBAAAA,EAAiB,kBAAjB,gBAAA70D,EAAgC,cAAhC,QAAA4H,EAA2C,IAAI;AAAA,OAC1C;AACL,QAAIktD;AACJ,KAAIlpD,KAAAD,IAAAkpD,KAAA,gBAAAA,EAAiB,QAAQ,mCAAzB,gBAAAlpD,EAAyD,2BAAzD,QAAAC,EAAiF,UAAU,SAAS,iCACtGwjB,IAAAylC,KAAA,gBAAAA,EAAiB,kBAAjB,QAAAzlC,EAAgC,UAAU,IAAI,sCAC9C0lC,KAAkB3lC,IAAA0lC,KAAA,gBAAAA,EAAiB,QAAQ,mCAAzB,gBAAA1lC,EAAyD,4BAE3E4lC,IAAAF,KAAA,gBAAAA,EAAiB,QAAQ,2BAAzB,QAAAE,EAAiD,UAAU,IAAI,sCAC/DD,KAAkBziC,KAAA2iC,IAAAH,KAAA,gBAAAA,EACd,QAAQ,mCADM,gBAAAG,EAEd,2BAFc,gBAAA3iC,EAEU,cAAc;AAE5C,QAAI4iC,IAA0B,CAAKH,CAAgB;AACnD,WAAOA;AACL,OACGI,KAAAC,IAAAL,KAAA,gBAAAA,EACG,QAAQ,mCADX,gBAAAK,EAEG,2BAFH,QAAAD,EAE2B,UAAU,SAAS,+BAE/CJ,KAAmBM,IAAAN,KAAA,gBAAAA,EAAiC,QAAQ,mCAAzC,gBAAAM,EAAyE,yBAE5FN,KAAmBO,KAAAC,IAAAR,KAAA,gBAAAA,EACf,QAAQ,mCADO,gBAAAQ,EAEf,2BAFe,gBAAAD,EAES,cAAc,sBAGxCP,MACFG,IAAW,CAAC,GAAGA,GAAUH,CAA8B;AAG3D,IAAAG,IAAWA,EAAS,QAAA,GAEpBA,EAAS,QAAQ,CAACluB,MAAoB;;AACpC,MAAIA,KAAA,QAAAA,EAAI,UAAU,SAAS,gCAAgC,CAAC/jC,GAAgB+jC,KAAA,gBAAAA,EAAI,iBAAgB,EAAE,KAChGA,EAAG,aAAa,+BAA+B,MAAM,GACrDA,EAAG,MAAA,KACO/jC,GAAgB+jC,KAAA,gBAAAA,EAAI,iBAAgB,EAAE,MAC/C/mC,IAAA+mC,KAAA,gBAAAA,EAAI,cAAc,qBAAlB,QAAA/mC,EAAoD;AAAA,IAEzD,CAAC;AAAA,EACH;AACF,GC3Cau1D,KAA8F,CAAC;AAAA,EAC1G,UAAAv0D;AAAA,EACA,UAAAuD;AAAA,EACA,MAAAowD;AAAA,EACA,kBAAAa;AAAA,EACA,iBAAAC;AAAA,EACA,YAAAf;AACF,MAAM;AACJ,QAAMgB,IAAYrzD,EAAsB,IAAI,GACtCszD,IAAoB,MAAM;;AAC9B,KAAA31D,IAAA01D,EAAU,YAAV,QAAA11D,EAAmB;AAAA,EACrB,GACM41D,IAAoB,MAAM;;AAE9B,SADA51D,IAAA01D,EAAU,YAAV,QAAA11D,EAAmB,QACf00D,EAAW,SAAS;AAEtB,YAAMmB,IAAanB,EAAW,QAAwB,iBAAiB,mBAAmB,GACpFoB,IAAiB,CAAC,CAAEpB,EAAW,QAAwB,iBAAiB,uBAAuB;AACrG,MAAAmB,KAAA,QAAAA,EAAW,QAAQ,CAACE,GAAUz/C,MAAQ;AACpC,QAAIy/C,EAAS,aAAa,cAAc,KAAKD,KAElC,CAACA,KAAkBx/C,MAAQ,IADpCy/C,EAAS,aAAa,YAAY,GAAG,IAIrCA,EAAS,aAAa,YAAY,IAAI;AAAA,MAE1C,IACAtB,GAAkBC,GAAYC,KAAQ,OAAO;AAAA,IAC/C;AAAA,EACF,GAEMqB,IAAmCz3D;AAAA,IACvC;AAAA,IACA;AAAA,MACE,UAAUyE,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,EACpC,GAGI0xD,IAA2C13D,EAAW,kBAAkB,EAAE,UAAUyE,EAAgBuB,CAAQ,GAAG,GAE/G2xD,IAAiD33D,EAAW,wBAAwB,EAAE,UAAUyE,EAAgBuB,CAAQ,GAAG,GAE3H4xD,IAA6C53D,EAAW,6CAA6C;AAAA,IACzG,YAAY,CAACyE,EAAgBuB,CAAQ;AAAA,IACrC,iCAAiCvB,EAAgBuB,CAAQ;AAAA,EAAA,CAC1D;AAED,yCACG,OAAA,EAAI,WAAWyxD,KACd,gBAAA71D,EAAA,cAAC,OAAA,EAAI,WAAU,6CAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,WAAWyqD;AAAA,MACX,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,WAAS;AAAA,MACT,SAAO;AAAA,MACP,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,SAASL;AAAA,IAAA;AAAA,IAERJ;AAAA,EAAA,GAEH,gBAAAr1D,EAAA,cAACqtB,IAAA,EAAO,KAAKkoC,GAAW,WAAU,eAChC,gBAAAv1D,EAAA,cAAC,OAAA,EAAI,WAAWg2D,qCACb,OAAA,EAAI,WAAU,sFACb,gBAAAh2D,EAAA,cAAC,OAAA,EAAI,WAAU,6CAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,SAAO;AAAA,MACP,aAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,SAASmqD;AAAA,MACT,WAAWO;AAAA,IAAA;AAAA,IAEVT;AAAA,EAAA,CAEL,GACA,gBAAAt1D,EAAA,cAAC,OAAA,EAAI,WAAU,2DAAA,GAA4Da,CAAS,CACtF,CACF,CACF,CACF,CACF;AAEJ,GCtCao1D,KAA4B,CAAC;AAAA,EACxC,WAAAr1D;AAAA,EACA,UAAAC;AAAA,EACA,MAAA2zD,IAAO;AAAA,EACP,SAAA3sD;AAAA,EACA,UAAAzD;AAAA,EACA,kBAAAixD;AAAA,EACA,iBAAAC;AAAA,EACA,GAAG31D;AACL,MAAM;AACJ,MAAIu2D,GACAC,IAAyD,CAAA;AAC7D,QAAMC,IAAatxD,GAAA,GACbyvD,IAAaryD,EAAyB,IAAI,GAC1C,EAAE,OAAAmD,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAQ,EAAA,IAAaH,GAAA,GACfyyD,IAAoBhxD,IAAQtB,GAC5B,CAACuyD,GAAgBC,CAAiB,IAAIn0D,EAAS,EAAK,GACpD,CAACo0D,GAAeC,CAAgB,IAAIr0D,EAAS,EAAK,GAElDs0D,IAAmBt4D,EAAW,iBAAiB,EAAE,UAAUyE,EAAgBuB,CAAQ,EAAA,GAAKxD,CAAS;AAEvG,EAAIC,MACG,MAAM,QAAQA,CAAQ,IAGzBs1D,IAAkBt1D,IAFlB,CAACA,CAAQ,EAAE,QAAQ,CAACE,MAAUo1D,EAAgB,KAAKp1D,CAAK,CAAC,IAMzD8B,EAAgB2xD,CAAI,IACtB0B,IAAiBC,KAAA,gBAAAA,EAAiB,IAAI,CAACnzD,GAAMsE,MAAU;AACrD,UAAM5I,IAAM,MAAM4I,CAAK,IAAI8uD,CAAU;AACrC,WAAO1rD,GAAa1H,GAAM;AAAA,MACxB,MAAMH,EAAgB2xD,CAAI;AAAA,MAC1B,SAAA3sD;AAAA,MACA,KAAAnJ;AAAA,MACA,UAAUmE,EAAgBuB,CAAQ;AAAA,MAClC,WAAW,GAAGkyD,IAAiB,YAAY,EAAE,IAAIE,IAAgB,WAAW,EAAE;AAAA,IAAA,CAC/E;AAAA,EACH,KAEAN,IAAiBC,KAAA,gBAAAA,EAAiB,IAAI,CAACnzD,GAAMsE,MAAU;AACrD,UAAM5I,IAAM,MAAM4I,CAAK,IAAI8uD,CAAU;AACrC,WAAO1rD,GAAa1H,GAAM;AAAA,MACxB,SAAA6E;AAAA,MACA,KAAAnJ;AAAA,MACA,UAAUmE,EAAgBuB,CAAQ;AAAA,MAClC,WAAW,GAAGkyD,IAAiB,YAAY,EAAE,IAAIE,IAAgB,WAAW,EAAE;AAAA,IAAA,CAC/E;AAAA,EACH;AAIF,QAAMG,IAAc,CAACp1D,MAAiB;;AACpC,IAAIgzD,EAAW,aACT10D,IAAA00D,EAAW,YAAX,QAAA10D,EAAoB,SAAS0B,EAAM,WACrCiK,KAAA/D,IAAA8sD,EAAW,YAAX,gBAAA9sD,EAAoB,kBAApB,QAAA+D,EAAmC,UAAU,IAAI,aAEjDyjB,KAAAxjB,IAAA8oD,EAAW,YAAX,gBAAA9oD,EAAoB,kBAApB,QAAAwjB,EAAmC,UAAU,OAAO,UACpDqlC,GAAkBC,GAA2CC,CAAI;AAAA,EAGvE,GAEMoC,IAAoB,MAAM;AAC9B,QAAI/uD,MAAY,gBAAgB,CAACwuD,GAAmB;AAClD,UAAI9B,EAAW,SAAS;AAEtB,cAAMmB,IAAYnB,EAAW,QAAQ,iBAAiB,mBAAmB,GACnEoB,IAAiB,CAAC,CAACpB,EAAW,QAAQ,iBAAiB,uBAAuB;AACpF,QAAAmB,KAAA,QAAAA,EAAW,QAAQ,CAACE,GAAUz/C,MAAQ;AACpC,UAAIy/C,EAAS,aAAa,cAAc,KAAKD,KAElC,CAACA,KAAkBx/C,MAAQ,IADpCy/C,EAAS,aAAa,YAAY,GAAG,IAIrCA,EAAS,aAAa,YAAY,IAAI;AAAA,QAE1C;AAAA,MACF;AAEA,MAAAtB,GAAkBC,GAA2CC,CAAI;AAEjE,YAAMqC,IAAc,MAAM;AACxB,QAAAvC,GAAkBC,GAA2CC,CAAI;AAAA,MACnE;AAEA,sBAAS,iBAAiB,QAAQqC,CAAW,GAC7C,SAAS,iBAAiB,WAAWF,CAAW,GAChD,SAAS,iBAAiB,aAAaA,CAAW,GAE3C,MAAM;AACX,iBAAS,oBAAoB,QAAQE,CAAW,GAChD,SAAS,oBAAoB,WAAWF,CAAW,GACnD,SAAS,oBAAoB,aAAaA,CAAW;AAAA,MACvD;AAAA,IACF;AAAA,EACF,GAEMG,IAAgB,MAAM;AAC1B,QAAIjvD,MAAY,UAAU;AACxB,YAAMkvD,IAA0B,CAAA,GAC1BC,IAA2B,CAAA;AACjC,UAAIzC,EAAW,SAAS;AACtB,cAAM9pD,IAAiB3J,EAAS,QAAQD,CAAQ;AAChD,QAAAC,EAAS,QAAQ2J,GAAgB,CAACshD,MAAY;AAC5C,cAAI,CAAC/qD,EAAe+qD,CAAO;AACzB;AAEF,gBAAMkL,IAAYlL,EAAQ,OACpBmL,IAAqB,CAACD,EAAU,IAAI,EAAE,KAAK,CAACr2C,MAAM,CAAC,CAACA,EAAE,oBAAoB;AAChF,UAAAm2C,EAAa,KAAKG,CAAkB;AACpC,gBAAMC,IAAsB,CAACF,EAAU,IAAI,EAAE,KAAK,CAACr2C,MAAM,CAAC,CAACA,EAAE,qBAAqB;AAClF,UAAAo2C,EAAc,KAAKG,CAAmB;AAAA,QACxC,CAAC,GAEGJ,EAAa,MAAM,CAAChvB,MAAMA,MAAM,EAAK,KAE9BgvB,EAAa,MAAM,CAAChvB,MAAMA,MAAM,EAAI,IAD7C0uB,EAAiB,EAAK,IAGbM,EAAa,KAAK,CAAC92B,MAAMA,CAAC,KACnCw2B,EAAiB,EAAI,GAGnBO,EAAc,MAAM,CAACI,MAAMA,MAAM,EAAK,KAE/BJ,EAAc,MAAM,CAACI,MAAMA,MAAM,EAAI,IAD9Cb,EAAkB,EAAK,IAGdS,EAAc,KAAK,CAACK,MAAMA,CAAC,KACpCd,EAAkB,EAAI;AAAA,MAE1B;AAAA,IACF;AAAA,EACF;AAEA,SAAAl0D,EAAU,MAAM;AACd,IAAAu0D,EAAA,GACAE,EAAA;AAAA,EACF,GAAG,CAACvC,EAAW,OAAO,CAAC,GAGrB,gBAAAv0D,EAAA,cAAAA,EAAA,UAAA,OACI,CAACq2D,KAAqBxuD,MAAY,6CACjC,MAAA,EAAG,KAAK0sD,GAAY,WAAWmC,GAAmB,GAAG/2D,GAAQ,GAAIkI,MAAY,eAAe,EAAE,MAAM,OAAA,IAAW,OAAA,GAC7GquD,CACH,GAEDruD,MAAY,gBAAgBwuD,KAC3B,gBAAAr2D,EAAA;AAAA,IAACo1D;AAAA,IAAA;AAAA,MACE,GAAGz1D;AAAA,MACJ,UAAAyE;AAAA,MACA,SAAAyD;AAAA,MACA,kBAAAwtD;AAAA,MACA,iBAAAC;AAAA,MACA,YAAAf;AAAA,IAAA;AAAA,oCAEC,MAAA,EAAG,KAAKA,GAAY,WAAWmC,GAAmB,GAAG/2D,GAAQ,GAAIkI,MAAY,eAAe,EAAE,MAAM,OAAA,IAAW,UAC7GquD,CACH;AAAA,EAAA,CAGN;AAEJ,GCxNaoB,KAA0B,CAAC/xC,GAAuCxZ,OACtE;AAAA,EACL,aAAalJ,EAAgBkJ,CAAY,IAAIwZ,EAAK,uBAAuBA,EAAK;AAAA,EAC9E,kBAAkB1iB,EAAgBkJ,CAAY,IAAIwZ,EAAK,4BAA4BA,EAAK;AAAA,EACxF,cAAc1iB,EAAgBkJ,CAAY,IAAIwZ,EAAK,wBAAwBA,EAAK;AAAA,EAChF,mBAAmB1iB,EAAgBkJ,CAAY,IAAIwZ,EAAK,6BAA6BA,EAAK;AAAA,ICNjFgyC,KAAwB,CACnC/C,GACAgD,GACA9oC,GACA3iB,MAEKyrD,IAID30D,EAAgB2xD,CAAI,KACtBgD,EAAoB,MAAM,YAAY,SAC/B,MACE30D,EAAgB6rB,CAAI,KAAK7rB,EAAgBkJ,CAAY,KAC9DyrD,EAAoB,MAAM,YAAY,SAC/B30D,EAAgB6rB,CAAI,MACjB7rB,EAAgB6rB,CAAI,MAC9B8oC,EAAoB,MAAM,YAAY,KAC/B30D,EAAgB6rB,CAAI,KAXpB7rB,EAAgB6rB,CAAI,GCRlB+oC,KAAoB,CAACC,MAAuD;AACvF,MAAI,CAACA,EAAY;AACf,WAAO;AAET,QAAMC,IAAsB90D,EAAgB60D,EAAY,YAAY;AACpE,EAAAA,EAAY,aAAa,kBAAkB,CAACC,GAAqB,UAAU;AAC7E,GCJaC,KAA4B,CACvC/vD,GACA2vD,MAEKA,IAIDA,EAAoB,UAAU,SAAS,WAAW,KACpDA,EAAoB,UAAU,OAAO,WAAW,GAChDA,EAAoB,MAAM,YAAY,SAC/B,OAIPA,EAAoB,UAAU,IAAI,WAAW,GAC7CA,EAAoB,MAAM,YAAY,IAClC3vD,MAAY,gBAE8B,CAAC,GADT2vD,EAAoB,iBAAiB,mBAAmB,CACjB,EAAE,QAAA,EAEzC,QAAQ,CAAC5B,MAAa;;AACxD,MAAI,CAACA,EAAS;AACZ,WAAO;AAGT,EAAI/yD,EAAgB+yD,EAAS,YAAY,MACnCA,EAAS,UAAU,SAAS,2BAA2B,KACzDA,EAAS,aAAa,+BAA+B,MAAM,GAC3DA,EAAS,MAAA,MAER/1D,IAAA+1D,EAAS,cAAc,eAAe,MAAtC,QAAA/1D,EAAyD;AAGhE,CAAC,GAEI,MA/BA,ICILg4D,KAA0C,CAAC;AAAA,EAC/C,KAAAl3D,IAAM;AAAA,EACN,UAAAE;AAAA,EACA,MAAA0kB;AAAA,EACA,SAAA7H;AAAA,EACA,WAAAo6C;AAAA,EACA,eAAAC;AAAA,EACA,UAAA3zD;AAAA,EACA,MAAAsqB,IAAO;AAAA,EACP,MAAA8lC,IAAO;AACT,MAAM;AACJ,QAAM4B,IAAatxD,GAAA,GACbkzD,IAAgB91D,EAA0B,IAAI,GAC9C+1D,IAAiB/1D,EAAuB,IAAI,GAE5C,CAAC6J,GAAcmsD,CAAe,IAAI91D,EAAsBS,EAAgB6rB,CAAI,CAAC,GAE7EypC,IAAsB/5D,EAAW,+BAA+B,GAChEg6D,IAAuBh6D,EAAW,8BAA8B;AAAA,IACpE,WAAW,CAACyE,EAAgB6rB,CAAI,KAAK,CAAC7rB,EAAgB2xD,CAAI;AAAA,EAAA,CAC3D,GAEK6D,IAAoB,MAAM;AAC9B,IAAAH,EAAgBN,GAA0B,UAAUK,EAAe,OAAO,CAAC;AAAA,EAC7E,GAEMK,IAAmB,MAAM;AAC7B,IAAIN,EAAc,YAChBP,GAAkBO,EAAc,OAAO,GACvCK,EAAA;AAAA,EAEJ,GAEME,IAAsB,CAAC/xD,MAAuC;;AAClE,IAAA8xD,EAAA,IACCz4D,IAAA0lB,EAAyB,YAAzB,QAAA1lB,EAAA,KAAA0lB,GAAmC/e;AAAA,EACtC;AAEA,EAAAnE,EAAU,MAAM;AACd,IAAA61D,EAAgBX,GAAsB/C,GAAMyD,EAAe,SAASvpC,GAAM3iB,CAAY,CAAC;AAAA,EACzF,GAAG,CAACyoD,CAAI,CAAC,GAETnyD,EAAU,MAAM;AACd,IAAK41D,EAAe,QAAwB,UAAU,SAAS,WAAW,IACxC;AAAA,MAC9B,GAAIA,EAAe,QAAwB;AAAA,QACzC;AAAA,MAAA;AAAA,IACF,EAEsB,QAAQ,CAACrxB,MAAO;AACrC,MAAAA,EAAmB,WAAW;AAAA,IACjC,CAAC,IAE+B;AAAA,MAC9B,GAAIqxB,EAAe,QAAwB;AAAA,QACzC;AAAA,MAAA;AAAA,IACF,EAEsB,QAAQ,CAACrxB,MAAO;AACrC,MAAAA,EAAmB,WAAW;AAAA,IACjC,CAAC;AAAA,EAEL,GAAG,CAAC76B,CAAY,CAAC;AAEjB,QAAMysD,IAAQlB,GAAwB/xC,GAAMxZ,CAAY,GAElD0sD,IAAU,EAAE,GAAGlzC,EAAA;AACrB,gBAAOkzC,EAAQ,UACf,OAAOA,EAAQ,sBACf,OAAOA,EAAQ,2BACf,OAAOA,EAAQ,qBACf,OAAOA,EAAQ,0BACf,OAAOA,EAAQ,uBACf,OAAOA,EAAQ,4BACf,OAAOA,EAAQ,sBACf,OAAOA,EAAQ,2BAEft1D;AAAA,IACExC;AAAA,IACA,OACS;AAAA,MACL,SAASq3D,EAAc;AAAA,MACvB,YAAYjsD;AAAA,IAAA;AAAA,IAGhB,CAACisD,EAAc,SAASjsD,GAAcpL,CAAG;AAAA,EAAA,GAIzC,gBAAAX,EAAA,cAAAA,EAAA,UAAA,sCACG,OAAA,EAAI,WAAU,sBACZ,CAAC6C,EAAgB2xD,CAAI,KACpB,gBAAAx0D,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,YAAY;AAAA,MACZ,SAASxI,EAAgBuB,CAAQ,IAAI,YAAY;AAAA,MACjD,WAAW+zD;AAAA,MACX,WAAS;AAAA,MACR,GAAGK;AAAA,MACH,GAAIC;AAAA,MACL,UAAAr0D;AAAA,MACA,iBAAe2H;AAAA,MACf,iBAAe,yBAAyBqqD,CAAU;AAAA,MAClD,SAASmC;AAAA,MACT,KAAKP;AAAA,MACL,oBAAkB,QAAQ5B,CAAU;AAAA,IAAA;AAAA,IAEpC,gBAAAp2D,EAAA,cAAC,QAAA,MAAMulB,EAAK,QAAS;AAAA,IAEpB7H,KACC,gBAAA1d,EAAA,cAAC,OAAA,EAAI,WAAU,mCAAA,GACb,gBAAAA,EAAA;AAAA,MAAC8c;AAAA,MAAA;AAAA,QACC,IAAI,QAAQs5C,CAAU;AAAA,QACtB,WAAW,SAASrqD,IAAe,aAAa,EAAE;AAAA,QAClD,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,cAAYgsD;AAAA,QACZ,UAAA3zD;AAAA,MAAA;AAAA,MAEC0zD;AAAA,IAAA,CAEL;AAAA,EAAA,CAIR,GAECj1D,EAAgB2xD,CAAI,KACnB,gBAAAx0D,EAAA,cAAC,SAAI,WAAU,6BACb,gBAAAA,EAAA,cAAC,QAAA,MAAMulB,EAAK,QAAS,GACpB7H,KACC,gBAAA1d,EAAA,cAAC,OAAA,EAAI,WAAU,mCAAA,GACb,gBAAAA,EAAA;AAAA,IAAC8c;AAAA,IAAA;AAAA,MACC,IAAI,QAAQs5C,CAAU;AAAA,MACtB,WAAW,SAASrqD,IAAe,aAAa,EAAE;AAAA,MAClD,SAAQ;AAAA,MACR,YAAW;AAAA,MACX,cAAYgsD;AAAA,MACZ,UAAA3zD;AAAA,IAAA;AAAA,IAEC0zD;AAAA,EAAA,CAEL,CAEJ,GAGF,gBAAA93D,EAAA,cAAC,SAAI,WAAWo4D,GAAsB,IAAI,yBAAyBhC,CAAU,OAAO,KAAK6B,EAAA,GACtFp3D,CACH,CACF;AAEJ,GCjKa63D,KAAoB,CAAC9C,GAAuBlwD,MAAwB;;AAC/E,OAAI+B,KAAA5H,IAAA+1D,EAAS,QAAQ,qBAAqB,MAAtC,gBAAA/1D,EAAyC,kBAAzC,QAAA4H,EAAwD,UAAU,SAAS,qBAAqB,CAAC/B;AACnG,WAAOkwD;AAET,QAAM+C,IAAkC/C,EAAS,QAAQ,6BAA6B,GAChFgD,IAA2BD,KAAA,gBAAAA,EAAa;AAC9C,SAAIC,KAAQD,IACNA,EAAY,UAAU,SAAS,WAAW,IACrC,MAEL91D,EAAgB6C,CAAM,MACxBizD,EAAY,UAAU,OAAO,WAAW,GACxCA,EAAY,MAAM,YAAY,UAGzBC,EAAK,cAAc,mBAAmB,KAAKA,KAEhDhD,EAAS,QAAQ,gBAAgB,KAAK,CAAC/yD,EAAgB6C,CAAM,IACxDkwD,IAEF;AACT,GCrBaiD,KAAyB,CAACjD,MAA0B;AAC/D,MAAIkD,IAAaJ,GAAkB9C,GAAU,EAAI;AACjD,SAAOkD;AACL,IAAAA,EAAW,aAAa,iBAAiB,MAAM,GAC/CA,IAAaJ,GAAkBI,GAA2B,EAAI;AAElE,GAEaC,KAA+B,CAC1CvyD,MAGG;AACH,QAAMwyD,IAAmCxyD,EAAI,cAAc,QAAQ,gBAAgB,GAC7EkvD,IAAYsD,KAAA,gBAAAA,EAAS,iBAAiB;AAC5C,EAAAtD,KAAA,QAAAA,EAAW,QAAQ,CAACE,MAAgC;;AAClD,KAAIA,KAAA,gBAAAA,EAAU,UAAUpvD,EAAI,cAAoC,QAAQovD,EAAS,kBAC/E/1D,IAAA+1D,EAAS,QAAQ,qBAAqB,MAAtC,QAAA/1D,EAAyC,UAAU,IAAI,sCACvD+1D,EAAS,aAAa,gBAAgB,MAAM,GAC5CiD,GAAuBjD,CAAQ,GAC/BA,EAAS,aAAa,YAAY,GAAG,KAC5BA,EAAS,mBAClBnuD,IAAAmuD,EAAS,QAAQ,qBAAqB,MAAtC,QAAAnuD,EAAyC,UAAU,OAAO,sCAC1DmuD,EAAS,gBAAgB,cAAc,GACvCA,EAAS,aAAa,YAAY,IAAI;AAAA,EAE1C;AACF,GC3BaqD,KAA8B,CAACrD,MAA4B;AACtE,QAAMsD,IAAgBtD,EAAS,QAAQ,6BAA6B,KAAKA,EAAS,QAAQ,gBAAgB;AAK1G,EAJ4B;AAAA,IAC1B,GAAIsD,KAAA,gBAAAA,EAAe,iBAAiB;AAAA,IACpC,GAAIA,KAAA,gBAAAA,EAAe,iBAAiB;AAAA,EAAuB,EAEzC,QAAQ,CAACC,MAAY;;AACvC,IAAIA,EAAQ,iBAAiB,UAAaA,EAAQ,iBAAiB,SAG/D,CAACt2D,EAAgBs2D,EAAQ,YAAY,KAAMA,EAA8B,QAC1Et5D,IAAAs5D,EAAQ,cAAc,eAAe,MAArC,QAAAt5D,EAAwD,UAC/CgD,EAAgBs2D,EAAQ,YAAY,MAC7CA,KAAA,QAAAA,EAA+B,aAAa,+BAA+B,SAC3EA,KAAA,QAAAA,EAA+B;AAAA,EAEpC,CAAC;AACH,GCZaC,KAAuB,CAAC73D,MAAwC;AAC3E,EAAIA,EAAM,cAAc,UAAU,SAAS,2BAA2B,MAGtEw3D,GAA6Bx3D,CAAK,GAClCA,EAAM,gBAAA,GACNA,EAAM,eAAA;AACR,GAEa83D,KAAqB,CAAC3D,MAA8B;AAC/D,QAAM4D,IAAkB,CAAA;AACxB,aAAW/zC,KAAQmwC;AAEjB,IADmBgD,GAAkBnzC,GAAM,EAAK,KAE9C+zC,EAAgB,KAAK/zC,CAAI;AAG7B,SAAO+zC;AACT,GAEaC,KAAe,CAACh4D,GAAqCm0D,MAA8B;AAC9F,MAAI8D;AAEJ,QAAMF,IAAkBD,GAAmB3D,CAAS;AAEpD,aAAW+D,KAAeH,GAAiB;AACzC,QAAIG,MAAgBl4D,EAAM;AACxB;AAEF,IAAAi4D,IAAWC;AAAA,EACb;AAEA,EAAID,IACFA,EAAS,MAAA,IAETF,EAAgBA,EAAgB,SAAS,CAAC,EAAE,MAAA,GAG9C/3D,EAAM,gBAAA,GACNA,EAAM,eAAA;AACR,GAEMm4D,KAA+B,CAACn4D,GAAqCm0D,MAA8B;AACvG,MAAIiE;AAEJ,QAAML,IAAkBD,GAAmB3D,CAAS;AAEpD,WAASp3D,IAAIg7D,EAAgB,SAAS,GAAGh7D,KAAK,KACxCg7D,EAAgBh7D,CAAC,MAAMiD,EAAM,eADcjD;AAI/C,IAAAq7D,IAAWL,EAAgBh7D,CAAC;AAE9B,EAAIq7D,IACFA,EAAS,MAAA,IAETL,EAAgB,CAAC,EAAE,MAAA;AAEvB,GAEaM,KAAiB,CAACr4D,GAAqCm0D,MAA8B;AAChG,EAAAgE,GAA6Bn4D,GAAOm0D,CAAS,GAC7Cn0D,EAAM,gBAAA,GACNA,EAAM,eAAA;AACR,GAEas4D,KAAkB,CAACt4D,GAAqCm0D,MAA8B;AACjG,EAAAgE,GAA6Bn4D,GAAOm0D,CAAS;AAC/C,GAEaoE,KAAiB,CAACv4D,MAAwC;;AACrE,QAAMi4D,KAAW/xD,KAAA5H,IAAA0B,EAAM,kBAAN,gBAAA1B,EAAqB,QAAQ,mCAA7B,gBAAA4H,EAA6D;AAC9E,EAAI+xD,KAAA,QAAAA,EAAU,UAAU,SAAS,+BAC9BA,KAAA,QAAAA,EAA2C,WAE3ChuD,IAAAguD,KAAA,gBAAAA,EAAU,cAAc,yBAAxB,QAAAhuD,EAA+E;AAEpF,GAEauuD,KAAgB,CAACrE,MAA8B;;AAC1D,QAAMhB,IAAkB,CAAC,GAAGgB,CAAS,EAAE,KAAK,CAACpnC,MAAMA,EAAE,gBAAgB,MAAM;AAC3E,OAAIzuB,IAAA60D,KAAA,gBAAAA,EAAiB,QAAQ,mCAAzB,QAAA70D,EAAyD,UAAU,SAAS,cAAc;AAC5F,QAAI80D;AACJ,KAAInpD,KAAA/D,IAAAitD,KAAA,gBAAAA,EAAiB,QAAQ,mCAAzB,gBAAAjtD,EAAyD,2BAAzD,QAAA+D,EAAiF,UAAU,SAAS,iCACtGC,IAAAipD,KAAA,gBAAAA,EAAiB,kBAAjB,QAAAjpD,EAAgC,UAAU,IAAI,sCAC9CkpD,KAAkB1lC,IAAAylC,KAAA,gBAAAA,EAAiB,QAAQ,mCAAzB,gBAAAzlC,EAAyD,0BAE3E0lC,KAAkBC,KAAA5lC,IAAA0lC,KAAA,gBAAAA,EACd,QAAQ,mCADM,gBAAA1lC,EAEd,2BAFc,gBAAA4lC,EAEU,cAAc;AAE5C,QAAIE,IAA0B,CAAKH,CAAgB;AACnD,WAAOA;AACL,MAAAA,KAAkBziC,KAAA2iC,IAAAF,KAAA,gBAAAA,EACd,QAAQ,mCADM,gBAAAE,EAEd,2BAFc,gBAAA3iC,EAEU,cAAc,sBACtCyiC,MACFG,IAAW,CAAC,GAAGA,GAAUH,CAAe;AAG5C,IAAAG,IAAWA,EAAS,QAAA,GAEpBA,EAAS,QAAQ,CAACluB,MAAoB;;AACpC,MAAKA,KAAA,QAAAA,EAAI,iBAGLA,EAAG,UAAU,SAAS,2BAA2B,KAAK,CAAC/jC,EAAgB+jC,EAAG,YAAY,KACxFA,EAAG,aAAa,+BAA+B,MAAM,GACrDA,EAAG,MAAA,KACO/jC,EAAgB+jC,EAAG,YAAY,MACxC/mC,IAAA+mC,EAAG,cAAc,eAAe,MAAhC,QAAA/mC,EAAmD;AAAA,IAExD,CAAC;AAAA,EACH;AACF,GAEam6D,KAA2B,CAACpE,GAAyBF,GAA2BuE,MAAiB;;AAC5G,QAAMX,IAAkBD,GAAmB3D,CAAS;AAEpD,EAAAuE,IAAOA,EAAK,YAAA,GAEZX,EAAgB,QAAQ,CAACY,MAA+D;;AACtF,IAAID,QAASC,IAAAA,EAAG,gBAAHA,gBAAAA,EAAgB,OAAO,GAAG,wBACrCA,EAAG,MAAA;AAAA,EAEP,CAAC;AAED,MAAI57D,GACF47D,GACA5yD,IAAQ;AACV,QAAM87C,IAAQkW,EAAgB,QAAQ1D,CAAQ,IAAI,KAAK0D,EAAgB,SAAS,IAAIA,EAAgB,QAAQ1D,CAAQ,IAAI;AAExH,OAAKt3D,IAAI8kD,GAAO9kD,IAAIg7D,EAAgB,QAAQh7D;AAE1C,QADA47D,IAAKZ,EAAgBh7D,CAAC,GAClB27D,QAASp6D,IAAAq6D,EAAG,gBAAH,gBAAAr6D,EAAgB,OAAO,GAAG,gBAAe;AACpD,MAAAyH,IAAQhJ;AACR;AAAA,IACF;AAGF,MAAIgJ,MAAU;AACZ,SAAKhJ,IAAI,GAAGA,IAAI8kD,GAAO9kD;AAErB,UADA47D,IAAKZ,EAAgBh7D,CAAC,GAClB27D,QAASxyD,IAAAyyD,EAAG,gBAAH,gBAAAzyD,EAAgB,OAAO,GAAG,gBAAe;AACpD,QAAAH,IAAQhJ;AACR;AAAA,MACF;AAAA;AAIJ,EAAIgJ,IAAQ,MACVgyD,EAAgBhyD,CAAK,EAAE,MAAA;AAE3B,GAEa6yD,KAA6B,CAAC54D,GAAqCizD,GAAmBkB,MAA8B;AAC/H,EAAIn0D,EAAM,OAAO,OAAO,CAACsB,EAAgB2xD,CAAI,KAC3CyE,GAA4B13D,EAAM,aAAa,GAC/CA,EAAM,gBAAA,GACNA,EAAM,eAAA,KAENy4D,GAAyBz4D,EAAM,eAAem0D,GAAWn0D,EAAM,GAAG;AAEtE,GAEa8sD,KAAiB,CAAC9sD,GAAqCm0D,MAA8B;AAChG,EAAIA,KACFA,EAAU,CAAC,EAAE,MAAA,GAEfn0D,EAAM,gBAAA,GACNA,EAAM,eAAA;AACR,GAEa+sD,KAAgB,CAAC/sD,GAAqCm0D,MAA8B;AAC/F,MAAIA,GAAW;AACb,UAAM4D,IAAkBD,GAAmB3D,CAAS;AACpD,IAAA4D,EAAgBA,EAAgB,SAAS,CAAC,EAAE,MAAA;AAAA,EAC9C;AACA,EAAA/3D,EAAM,gBAAA,GACNA,EAAM,eAAA;AACR,GCtJa64D,KAA8C,CAAC,EAAE,UAAAv5D,GAAU,SAAAgH,GAAS,MAAA0d,GAAM,MAAAmJ,IAAO,IAAO,MAAA8lC,IAAO,IAAO,UAAApwD,QAAe;AAChI,QAAMgyD,IAAatxD,GAAA;AAEnB,MAAIoxD,GACAmE,GACAC,IAA0D,CAAA,GAC1DC,IAA4D,CAAA;AAEhE,QAAM,CAACxuD,GAAcmsD,CAAe,IAAI91D,EAAsBS,EAAgB6rB,CAAI,CAAC,GAC7E,CAAC8rC,GAAeC,CAAgB,IAAIr4D,EAAkB,EAAK,GAE3Dg2D,IAAuBh6D,EAAW,8BAA8B;AAAA,IACpE,WAAW,CAACyE,EAAgB6rB,CAAI,KAAK,CAAC7rB,EAAgB2xD,CAAI;AAAA,EAAA,CAC3D,GAEKkG,IAAgBx4D,EAA0B,IAAI,GAC9C81D,IAAgB91D,EAA0B,IAAI,GAC9C+1D,IAAiB/1D,EAAyB,IAAI,GAE9Cm2D,IAAoB,MAAM;AAC9B,IAAAH,EAAgBN,GAA0B,cAAcK,EAAe,OAAO,CAAC;AAAA,EACjF,GAEMK,IAAmB,MAAM;AAC7B,IAAIoC,EAAc,YAChBjD,GAAkBiD,EAAc,OAAO,GACvCrC,EAAA,IAEEL,EAAc,YAChBP,GAAkBO,EAAc,OAAO,GACvCK,EAAA;AAAA,EAEJ,GAEMsC,IAAoB,CAACn0D,GAAoCxD,MAAuC;;AACpG,IAAA+1D,GAA6BvyD,CAAG,IAChC3G,IAAAmD,EAAK,YAAL,QAAAnD,EAAA,KAAAmD,GAAewD;AAAA,EACjB,GAEMo0D,IAAgB,CAACr5D,MAAiF;AACtG,QAAIA,EAAM,UAAUA,EAAM,WAAWA,EAAM;AACzC;AAEF,UAAMkzD,IAAwClzD,EAAM,cAAc,QAAQ,gBAAgB,GACpFm0D,IAAYjB,KAAA,gBAAAA,EAAc,iBAAiB,sBAI3CoG,IAAuB,CAACC,OACrBA,GAAI,WAAW,KAAK,OAAO,IAAI,EAAE,KAAKA,EAAG,GAG5CC,IAAmB,MAAM;AAC7B,MAAIx5D,EAAM,cAAc,aAAa,eAAe,MAAM,UAAU,CAACsB,EAAgB2xD,CAAI,IACvFqF,GAAgBt4D,GAAOm0D,CAAS,IACtB7yD,EAAgB2xD,CAAI,KAC9B8D,EAAA,GAEF/2D,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,IACR,GAEMy5D,KAAkB,MAAM;AAC5B,MAAIz5D,EAAM,cAAc,aAAa,eAAe,MAAM,UAAU,CAACsB,EAAgB2xD,CAAI,IACvF8D,EAAA,IACUz1D,EAAgB2xD,CAAI,KAC9BsF,GAAev4D,CAAK,GAEtBA,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,IACR;AAEA,QAAIA,EAAM;AACR,MAAIA,EAAM,QAAQ,WAAWA,EAAM,QAAQ,WACzCA,EAAM,gBAAA,IACGs5D,EAAqBt5D,EAAM,GAAG,KACvC44D,GAA2B54D,GAAOizD,GAAMkB,CAAS;AAAA;AAGnD,cAAQn0D,EAAM,MAAA;AAAA,QACZ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAA63D,GAAqB73D,CAAK;AAC1B;AAAA,QAEF,KAAK;AAAA,QACL,KAAK,WAAW;AACd,UAAAg4D,GAAah4D,GAAOm0D,CAAS;AAC7B;AAAA,QACF;AAAA,QAEA,KAAK;AAAA,QACL,KAAK,aAAa;AAChB,UAAAkE,GAAer4D,GAAOm0D,CAAS;AAC/B;AAAA,QACF;AAAA,QAEA,KAAK;AAAA,QACL,KAAK;AACH,UAAAqF,EAAA;AACA;AAAA,QAEF,KAAK;AAAA,QACL,KAAK;AACH,UAAAC,GAAA;AACA;AAAA,QAEF,KAAK;AACH,UAAA3M,GAAe9sD,GAAOm0D,CAAS;AAC/B;AAAA,QAEF,KAAK,OAAO;AACV,UAAApH,GAAc/sD,GAAOm0D,CAAS;AAC9B;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AACV,UAAAqE,GAAcrE,CAAS;AACvB;AAAA,QACF;AAAA,QAEA;AACE,UAAImF,EAAqBt5D,EAAM,GAAG,KAChC44D,GAA2B54D,GAAOizD,GAAMkB,CAAS;AAEnD;AAAA,MAAA;AAAA,EAGR,GACMuF,IAAkB,CAAC15D,MAAiF;AACxG,YAAQA,EAAM,MAAA;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAAA,EAAM,gBAAA,GACNA,EAAM,eAAA;AAEN;AAAA,IAAA;AAAA,EAEN,GAEM25D,IAAkB,CAAC35D,GAAoDyB,MAAsD;;AACjI,IAAAzB,EAAM,eAAA,GACNA,EAAM,gBAAA,GACN+2D,EAAA,IACAz4D,IAAAmD,KAAA,gBAAAA,EAAM,YAAN,QAAAnD,EAAA,KAAAmD,GAAgBzB;AAAA,EAClB,GAEM45D,IAAuB,CAAC55D,MAAsB;AAClD,IAAAA,EAAM,eAAA,GACNA,EAAM,gBAAA,GACNk5D,EAAiB,EAAI;AAAA,EACvB,GAEMW,IAAuB,CAAC75D,MAAsB;AAClD,IAAAA,EAAM,eAAA,GACNA,EAAM,gBAAA,GACNk5D,EAAiB,EAAK;AAAA,EACxB,GAEM/xD,IAAkB,CAACnH,GAAoDyB,MAAsD;;AACjI,IAAAzB,EAAM,eAAA,IACN1B,IAAAmD,KAAA,gBAAAA,EAAM,gBAAN,QAAAnD,EAAA,KAAAmD,GAAoBzB;AAAA,EACtB;AAEA,EAAIV,MACG,MAAM,QAAQA,CAAQ,IAGzB05D,IAA0B15D,IAF1B,CAACA,CAAQ,EAAE,QAAQ,CAACE,MAAUw5D,EAAwB,KAAKx5D,CAAuC,CAAC,IAKnGwkB,EAAK,aACF,MAAM,QAAQA,EAAK,QAAQ,IAG9B+0C,IAAuB/0C,EAAK,WAF5B,CAACA,EAAK,QAAQ,EAAE,QAAQ,CAACxkB,MAAUu5D,EAAqB,KAAKv5D,CAAwC,CAAC;AAO1G,MAAIs6D,IAAsB;AAC1B,QAAMC,IAAe,CAACxG,GAA0ByG,GAAyB78D,MAAgB;AACvF,QAAI88D;AACJ,aAASltC,IAAI,GAAGA,IAAIwmC,EAAS,QAAQxmC;AACnC,MAAIA,MAAM,IACRktC,IAAQ9wD,GAAaoqD,EAAS,CAAC,GAAG;AAAA,QAChC,UAAUyG;AAAA,QACV,KAAA78D;AAAA,MAAA,CAC0B,IACnB4vB,IAAI,KACTktC,MACFA,IAAQ9wD,GAAaoqD,EAASxmC,CAAC,GAAG,EAAE,UAAUktC,GAAO,KAAA98D,GAAgC;AAI3F,WAAO88D;AAAA,EACT,GACMC,IAAyB,CAACz4D,GAAoB04D,GAAkBh9D,MAAgB;;AAEpF,QAAI68D,IAAiCv4D,GACjC8xD,IAA2B,CAAA;AAE/B,WAAOyG,MAAc;AACnB,WAAK17D,KAAA07D,EAAU,UAAV,QAAA17D,GAA6C;AAChD,YAAK07D,EAAU,MAAkC,MAAM;AAErD,UAAAF,IAAsB,IACtBE,IAAY7wD,GAAa6wD,GAAW;AAAA,YAClC,MAAQ;AAAA,YACR,iBAAiBxvD;AAAA,YACjB,aAAa2vD;AAAA,YACb,KAAAh9D;AAAA,YACA,WACE;AAAA,YACF,KAAOg8D;AAAA,UAAA,CACmB,GAE5B5F,IAAWA,EAAS,QAAA;AACpB,gBAAM0G,KAAQF,EAAaxG,GAAUyG,GAAW78D,CAAG;AAEnD,iBAAA68D,IAAY,MACLC;AAAA,QACT;AAEE,UAAA1G,IAAW,CAAC,GAAGA,GAAUyG,CAAS,GAClCA,IAAaA,EAAU,MAAkC;AAAA;AAG3D,QAAAA,IAAY;AAKhB,WAAO7wD,GAAa1H,GAAM;AAAA,MACxB,KAAAtE;AAAA,MACA,WACE;AAAA,IAAA,CACwB;AAAA,EAC9B,GAEMi9D,IAAqB,MAClBrB,KAAA,gBAAAA,EAAsB,IAAI,CAACt3D,GAAMsE,MAAU;AAChD,UAAM5I,IAAM,QAAQ4I,CAAK,IAAI8uD,CAAU,IACjCsF,IAAW,YAAYtF,CAAU;AACvC,WAAMpzD,EAAK,MAAkC,QAI3Cq4D,IAAsB,IACf3wD,GAAa1H,GAAM;AAAA,MACxB,SAAW,CAACzB,MAAyCo5D,EAAkBp5D,GAAOyB,EAAK,KAAqC;AAAA,MACxH,SAAW43D;AAAA,MACX,WAAaK;AAAA,MACb,aAAe,CAAC15D,MAAyCmH,EAAgBnH,GAAOyB,EAAK,KAAqC;AAAA,MAC1H,MAAQ;AAAA,MACR,iBAAiB+I;AAAA,MACjB,aAAa2vD;AAAA,MACb,UAAY,gBAAA17D,EAAA,cAAC,QAAA,EAAK,WAAU,sBAAqBgD,EAAK,MAAiC,QAAS;AAAA,MAChG,KAAAtE;AAAA,MACA,WACE;AAAA,MACF,KAAOg8D;AAAA,IAAA,CACwB,KAjB1Be,EAAuBz4D,GAAM04D,GAAUh9D,CAAG;AAAA,EAmBrD,IAGIk9D,IAAoB,CACxBpD,GAMAx1D,MAGE,gBAAAhD,EAAA,cAAAA,EAAA,UAAA,OACIw4D,EAAM,eAAeA,EAAM,qBAC3B,gBAAAx4D,EAAA,cAAC,QAAA,EAAK,WAAU,mCAAkC,MAAK,QAAO,SAASk7D,EAAA,GACpE1C,EAAM,eACL,gBAAAx4D,EAAA,cAACI,IAAA,EAAK,MAAMo4D,EAAM,aAAa,YAAW,KAAI,eAAW,IAAE,GAAIgC,IAAgB,EAAE,OAAO,EAAE,SAAS,OAAA,EAAO,IAAM,GAAA,CAAK,GAGtHhC,EAAM,oBACL,gBAAAx4D,EAAA,cAACI,IAAA,EAAK,MAAMo4D,EAAM,kBAAkB,YAAW,KAAI,eAAW,IAAE,GAAIgC,IAAgB,KAAK,EAAE,OAAO,EAAE,SAAS,OAAA,EAAO,EAAE,CAAI,CAE9H,GAEF,gBAAAx6D,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,yBAAyBw4D,EAAM,eAAeA,EAAM,mBAAmB,KAAK,WAAW,IAAIA,EAAM,gBAAgBA,EAAM,oBAAoB,KAAK,WAAW;AAAA,IAAA;AAAA,IAErK,CAACx1D,EAAK,MAAM,QAAQ,EAAE,IAAI,CAACsrB,MACnBA,CACR;AAAA,EAAA,IAEDkqC,EAAM,gBAAgBA,EAAM,sBAC5B,gBAAAx4D,EAAA,cAAC,QAAA,EAAK,WAAU,oCAAmC,MAAK,QAAO,SAASk7D,EAAA,GACrE1C,EAAM,gBACL,gBAAAx4D,EAAA,cAACI,IAAA,EAAK,MAAMo4D,EAAM,cAAc,YAAW,KAAI,eAAW,IAAE,GAAIgC,IAAgB,EAAE,OAAO,EAAE,SAAS,OAAA,EAAO,IAAM,GAAA,CAAK,GAEvHhC,EAAM,qBACL,gBAAAx4D,EAAA,cAACI,IAAA,EAAK,MAAMo4D,EAAM,mBAAmB,YAAW,KAAI,eAAW,IAAE,GAAIgC,IAAgB,KAAK,EAAE,OAAO,EAAE,SAAS,OAAA,EAAO,EAAE,CAAI,CAE/H,CAEJ,GAIEqB,IAAqB,CAAC74D,GAAoB04D,GAAkBh9D,GAAao9D,MACtEpxD,GAAa1H,GAAM;AAAA,IACxB,SAAW,CAACzB,MAAyCo5D,EAAkBp5D,GAAOyB,EAAK,KAAqC;AAAA,IACxH,SAAW43D;AAAA,IACX,WAAaK;AAAA,IACb,aAAe,CAAC15D,MAAyCmH,EAAgBnH,GAAOyB,EAAK,KAAqC;AAAA,IAC1H,cAAgBm4D;AAAA,IAChB,cAAgBC;AAAA,IAChB,MAAQ;AAAA,IACR,iBAAiBrvD;AAAA,IACjB,aAAa2vD;AAAA,IACb,KAAAh9D;AAAA,IACA,UAAYo9D;AAAA,IACZ,WACE;AAAA,IACF,KAAOpB;AAAA,EAAA,CACwB,GAG7BqB,IAAW,CACfjH,GACAp2D,GACA85D,GAMAkD,MACG;AACH,QAAIF;AACJ,aAASltC,KAAI,GAAGA,KAAIwmC,EAAS,QAAQxmC,MAAK;AACxC,YAAM0tC,KAAqBlH,GACrBgH,KAAeF,EAAkBpD,GAAOwD,GAAmB,CAAC,CAAC;AACnE,MAAI1tC,OAAM,IACRktC,IAAQK,EAAmBG,GAAmB,CAAC,GAAGN,GAAUh9D,GAAKo9D,EAAY,IACpExtC,KAAI,KACTktC,MACFA,IAAQ9wD,GAAaoqD,EAASxmC,EAAC,GAAG,EAAE,UAAUktC,GAAO,KAAA98D,GAAgC;AAAA,IAG3F;AACA,WAAO88D;AAAA,EACT,GAEMS,IAAqB,CACzBj5D,GACA04D,GACAh9D,GACA85D,MAMG;;AAEH,QAAI+C,IAAoDv4D,GACpD8xD,KAA8C,CAAA;AAElD,WAAOyG,MAAc;AACnB,WAAK17D,KAAA07D,EAAU,UAAV,QAAA17D,GAA6C,UAAU;AAC1D,YAAK07D,EAAU,MAAkC;AAE/C,iBAAAF,IAAsB,IACtBvG,KAAW,CAAC,GAAGA,IAAUyG,CAAS,GAClCzG,KAAWA,GAAS,QAAA,GAEpByG,IAAY,MACEQ,EAASjH,IAAUp2D,GAAK85D,GAAOkD,CAAQ;AAKrD,QAAA5G,KAAW,CAAC,GAAGA,IAAUyG,CAAS,GAC9BA,MAAeA,EAAU,MAAkC,WAC7DA,IAAY,OAEZA,IAAaA,EAAU,MAAkC;AAAA,MAG/D;AACE,QAAAA,IAAY;AAGhB,QAAIF,GAAqB;AACvB,YAAMS,KAAeF,EAAkBpD,GAAOx1D,CAAI;AAClD,aAAO64D,EAAmB74D,GAAM04D,GAAUh9D,GAAKo9D,EAAY;AAAA,IAC7D;AACE,aAAOpxD,GAAa1H,GAAM,EAAE,KAAAtE,GAAK;AAAA,EAErC,GAEMw9D,IAAiB,MACd5B,KAAA,gBAAAA,EAAsB,IAAI,CAACt3D,GAAMsE,MAAU;AAChD,UAAM5I,IAAM,QAAQ4I,CAAK,IAAI8uD,CAAU,IACjCsF,IAAW,YAAYtF,CAAU,IACjCoC,IAAQlB,GAAwB/xC,GAAMxZ,CAAY;AAExD,QAAM/I,EAAK,MAAkC,MAEtC;AACL,MAAAq4D,IAAsB;AACtB,YAAMS,KAAeF,EAAkBpD,GAAOx1D,CAAI;AAClD,aAAO64D,EAAmB74D,GAAM04D,GAAUh9D,GAAKo9D,EAAY;AAAA,IAC7D;AALE,aAAOG,EAAmBj5D,GAAM04D,GAAUh9D,GAAK85D,CAAK;AAAA,EAMxD,IAGI2D,IAAyB,MACtB5B,KAAA,gBAAAA,EAAyB,IAAI,CAACv3D,GAAsCsE,MAAkB;AAC3F,UAAM5I,IAAM,MAAM4I,CAAK,IAAI8uD,CAAU;AACrC,WAAIpzD,EAAK,MAAM,OACN0H,GAAa1H,GAAM,EAAE,MAAM,GAAGwxD,CAAI,IAAI,SAAA3sD,GAAkB,UAAUhF,EAAgBuB,CAAQ,GAAG,KAAA1F,GAAK,IAGvG,gBAAAsB,EAAA,cAAC,QAAG,KAAAtB,GAAU,MAAK,QAAO,WAAU,qBAAA,GACjCgM,GAAa1H,CAAI,CACpB;AAAA,EAGN;AAIF,EAAIH,EAAgB2xD,CAAI,KACtB0B,IAAiByF,EAAA,GACjBtB,IAAyB8B,EAAA,MAGzBjG,IAAiBgG,EAAA,GACjB7B,IAAyB8B,EAAA,IAG3B95D,EAAU,MAAM;AACd,IAAA61D,EAAgBX,GAAsB/C,GAAMyD,EAAe,SAASvpC,GAAM3iB,CAAY,CAAC;AAAA,EACzF,GAAG,CAAA,CAAE;AAEL,QAAMysD,KAAQlB,GAAwB/xC,GAAMxZ,CAAY,GAElDqwD,IAAkCh+D,EAAW,6BAA6B;AAAA,IAC9E,cAAco6D,GAAM,gBAAgB;AAAA,IACpC,cAAcA,GAAM,iBAAiB;AAAA,EAAA,CACtC;AAED,SACE,gBAAAx4D,EAAA,cAAAA,EAAA,UAAA,MACGq7D,KAAuBnF,EAAe,SAAS,KAC9C,gBAAAl2D,EAAA;AAAA,IAACqf;AAAA,IAAA;AAAA,MACC,SAASxc,EAAgBuB,CAAQ,IAAI,YAAY;AAAA,MACjD,YAAW;AAAA,MACX,WAAS;AAAA,MACT,WAAU;AAAA,MACV,UAAUvB,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,IAEjC8xD;AAAA,EAAA,GAGJ,CAACmF,KAAuBnF,EAAe,SAAS,KAAK,CAACrzD,EAAgB2xD,CAAI,KACzE,gBAAAx0D,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAW;AAAA,MACX,SAASxI,EAAgBuB,CAAQ,IAAI,YAAY;AAAA,MACjD,WAAWg4D;AAAA,MACX,WAAS;AAAA,MACR,GAAIv5D,EAAgB2xD,CAAI,IAAI,SAAY,EAAE,SAAS,GAAA;AAAA,MACnD,GAAGgE;AAAA,MACJ,iBAAezsD;AAAA,MACf,aAAW,YAAYqqD,CAAU;AAAA,MACjC,SAAS,CAAC70D,MAAyC25D,EAAgB35D,GAAOgkB,CAAoC;AAAA,MAC9G,SAASq1C;AAAA,MACT,WAAWK;AAAA,MACX,KAAKjD;AAAA,MACL,UAAUn1D,EAAgBuB,CAAQ;AAAA,IAAA;AAAA,IAEjC8xD;AAAA,EAAA,GAGJ,CAACmF,KAAuBx4D,EAAgB2xD,CAAI,KAAKjvC,EAAK,YACrD,gBAAAvlB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,iBAAe;AAAA,MACf,UAAU;AAAA,MACV,WAAU;AAAA,MACV,iBAAe+L;AAAA,MACf,aAAW,YAAYqqD,CAAU;AAAA,MACjC,SAASwE;AAAA,MACT,WAAWK;AAAA,MACX,aAAavyD;AAAA,IAAA;AAAA,IAEZ6c,EAAK;AAAA,EAAA,GAIT80C,KACC,gBAAAr6D,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKi4D;AAAA,MACL,WAAWG;AAAA,MACX,IAAI,YAAYhC,CAAU;AAAA,MAC1B,MAAK;AAAA,MACL,cAAY7wC,EAAK,YAAY;AAAA,IAAA;AAAA,IAE5B80C;AAAA,EAAA,CAGP;AAEJ,GC3gBMgC,KAAoC,CAAC,EAAE,KAAA17D,IAAM,MAAM,WAAAC,GAAW,SAAAiH,GAAS,MAAA0d,GAAM,UAAAnhB,GAAU,GAAGzE,QAAY;AAC1G,QAAM28D,IAAuBl+D,EAAW,sBAAsBwC,CAAS;AAEvE,yCACG,MAAA,EAAG,WAAW07D,GAAuB,GAAIz0D,MAAY,eAAe,EAAE,MAAM,OAAA,IAAW,OAAA,GACrFA,MAAY,YAAY,gBAAA7H,EAAA,cAAC63D,MAAmB,GAAGl4D,GAAO,UAAAyE,GAAoB,MAAAmhB,GAAY,KAAA5kB,GAAU,GAChGkH,MAAY,gBACX,gBAAA7H,EAAA,cAACo6D,MAAuB,GAAGz6D,GAAO,UAAAyE,GAAqB,GAAIyD,IAAU,EAAE,SAAAA,EAAA,IAAqB,QAAY,MAAA0d,GAAY,CAExH;AAEJ,GC7Bag3C,KAA0D,CAAC,EAAE,WAAA37D,GAAW,qBAAA47D,GAAqB,eAAAC,GAAe,GAAG98D,QAAY;AACtI,QAAM+8D,IAAiBx6D,EAAuB,IAAI,GAE5C,CAACy6D,GAAYC,CAAa,IAAIx6D,EAAS,EAAK,GAE5CkG,IAAc,MAAM;;AACxB,KAAAzI,IAAA68D,EAAe,YAAf,QAAA78D,EAAwB,UAAU,IAAI,YACtC4H,IAAA+0D,EAAoB,YAApB,QAAA/0D,EAA6B,UAAU,OAAO,SAC9Cm1D,EAAc,EAAK;AAAA,EACrB,GAEM5Z,IAAc,CAACx8C,MAAoC;;AACvD,KAAA3G,IAAA28D,EAAoB,YAApB,QAAA38D,EAA6B,UAAU,IAAI,UAC3C4H,IAAA9H,EAAM,YAAN,QAAA8H,EAAA,KAAA9H,GAAgB6G;AAAA,EAClB,GAEMs8C,IAAa,CAACt8C,MAAoC;;AACtD,IAAKm2D,MACHn2D,EAAI,cAAc,MAAA,IAClB3G,IAAA28D,EAAoB,YAApB,QAAA38D,EAA6B,UAAU,OAAO,WAEhD4H,IAAA9H,EAAM,WAAN,QAAA8H,EAAA,KAAA9H,GAAe6G;AAAA,EACjB,GAEMgjC,IAAc,CAAChjC,MAAuC;;AAC1D,UAAMyJ,IAAOzJ,EAAI,MAEXq2D,KAAkCh9D,IAAA28D,EAAoB,YAApB,gBAAA38D,EAA6B,iBAAiB,sBAChFi9D,IAAoB,CAAC,GAAGD,CAAgB,EAAE,UAAU,CAACE,MAAOA,MAAOv2D,EAAI,aAAa;AAC1F,IAAIyJ,MAAS,gBACP6sD,IAAoB,MAAMD,EAAiB,SAC7CA,EAAiBC,IAAoB,CAAC,EAAE,MAAA,IAExCD,EAAiB,CAAC,EAAE,MAAA,IAIpB5sD,MAAS,cACP6sD,IAAoB,MAAMD,EAAiB,UAAUC,IAAoB,KAAK,IAChFD,EAAiBC,IAAoB,CAAC,EAAE,MAAA,IAExCD,EAAiBA,EAAiB,SAAS,CAAC,EAAE,MAAA,KAIlDp1D,IAAA9H,EAAM,YAAN,QAAA8H,EAAA,KAAA9H,GAAgB6G;AAAA,EAClB,GAEMw2D,IAAwC,CAACx2D,MAAuC;;AACpF,QAAKk2D,EAAe,WAIhBC;AACF,cAAQn2D,EAAI,MAAA;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AACH,WAAA3G,IAAA28D,EAAoB,YAApB,QAAA38D,EAA6B,UAAU,OAAO,SAC9C68D,EAAe,QAAQ,UAAU,IAAI,QAAQ,GAC7CE,EAAc,EAAK;AACnB;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAEH,UAAAp2D,EAAI,eAAA,GACJA,EAAI,gBAAA;AACJ;AAAA,MAAA;AAAA,EAGR,GAEMy2D,IAAwB,MAAM;AAClC,IAAIP,EAAe,WAAW,CAACC,KAC7BD,EAAe,QAAQ,UAAU,OAAO,QAAQ,GAChDE,EAAc,EAAI,KACTF,EAAe,WAAWC,MACnCD,EAAe,QAAQ,UAAU,IAAI,QAAQ,GAC7CE,EAAc,EAAK;AAAA,EAEvB,GACMM,IAAoB,MAAM;;AAC9B,KAAAr9D,IAAA28D,EAAoB,YAApB,QAAA38D,EAA6B,UAAU,IAAI,SACvC68D,EAAe,YACjBA,EAAe,QAAQ,UAAU,OAAO,QAAQ,GAChDE,EAAc,EAAI,IACjBnxD,KAAAD,KAAA/D,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,uBAAxB,gBAAA+D,EAA4C,iBAAiB,qBAAqB,OAAlF,QAAAC,EAAsG;AAAA,EAE3G,GACM0xD,IAAmB,MAAM;;AAC7B,KAAAt9D,IAAA28D,EAAoB,YAApB,QAAA38D,EAA6B,UAAU,OAAO;AAAA,EAChD,GAEMu9D,IAAoB,CAAC52D,MAA0C;;AACnE,QAAIk2D,EAAe;AACjB,cAAQl2D,EAAI,MAAA;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AACH,UAAAk2D,EAAe,QAAQ,UAAU,IAAI,QAAQ,GAC7CE,EAAc,EAAK;AACnB;AAAA,QACF,KAAK;AACH,UAAID,OACDnxD,KAAA/D,KAAA5H,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,uBAAxB,gBAAA4H,EAA4C,iBAAiB,qBAAqB,OAAlF,QAAA+D,EAAsG;AAEzG;AAAA,QACF,KAAK;AACH,UAAImxD,OAEA9H,KAAAD,KAAAnpD,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,uBAAxB,gBAAAmpD,EAA4C,iBAAiB,uBAC3D5lC,KAAAC,IAAA,SAAS,kBAAT,gBAAAA,EAAwB,uBAAxB,gBAAAD,EAA4C,iBAAiB,qBAAqB,UAAS,OAD7F,QAAA6lC,EAGC;AAEL;AAAA,MAAA;AAAA,EAGR,GAEMwI,IAAoC,CAAC72D,MAA0C;AACnF,UAAMyJ,IAAOzJ,EAAI;AAEjB,IAAKk2D,EAAe,YAIhBC,MACE1sD,MAAS,SAASA,MAAS,eAAeA,MAAS,eAErDzJ,EAAI,eAAA,GACJA,EAAI,gBAAA,KAIJA,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,aACjEk2D,EAAe,WAAW,CAACC,IAC7BD,EAAe,QAAQ,UAAU,OAAO,QAAQ,IACvCA,EAAe,WAAWC,KACnCD,EAAe,QAAQ,UAAU,IAAI,QAAQ;AAAA,EAGnD,GAEMX,IAAW,CAACjH,GAA0BwI,MAAgB;AAC1D,QAAI9B;AACJ,aAASltC,IAAI,GAAGA,IAAIwmC,EAAS,QAAQxmC;AACnC,MAAIA,MAAM,IACRktC,IAAQ9wD,GAAaoqD,EAAS,CAAC,GAAmD;AAAA,QAChF,MAAM;AAAA,QACN,WAAW,cAAcwI,CAAG;AAAA,QAC5B,SAASh1D;AAAA,QACT,SAAS,CAAC9B,MAAoCw8C,EAAYx8C,CAAG;AAAA,QAC7D,QAAQ,CAACA,MAAoCs8C,EAAWt8C,CAAG;AAAA,QAC3D,SAAS,CAACA,MAAuCgjC,EAAYhjC,CAAG;AAAA,QAChE,kBAAkB,CAACA,MAAuCw2D,EAAsCx2D,CAAG;AAAA,MAAA,CACpG,IACQ8nB,IAAI,KACTktC,MACFA,IAAQ9wD,GAAaoqD,EAASxmC,CAAC,GAAmD,EAAE,UAAUktC,GAAO;AAI3G,WAAOA;AAAA,EACT,GAEMS,IAAqB,CAACsB,GAAwBD,MAAgB;;AAClE,QAAI/B,IAAiCgC,GACjCzI,IAA2B,CAAA,GAC3B0I,IAAkB,IAClBhC;AACJ,WAAOD,MAAc;AACnB,OAAK17D,IAAA07D,EAAU,UAAV,QAAA17D,EAA6C,WAC3C07D,EAAU,MAAkC,QAC/CiC,IAAS,IACT1I,IAAW,CAAC,GAAGA,GAAUyG,CAAS,GAClCzG,IAAWA,EAAS,QAAA,GACpB0G,IAAQO,EAASjH,GAAUwI,CAAG,GAC9B/B,IAAY,SAEZzG,IAAW,CAAC,GAAGA,GAAUyG,CAAS,GAC9BA,MAAeA,EAAU,MAAkC,WAC7DA,IAAY,OAEZA,IAAaA,EAAU,MAAkC,YAI7DA,IAAY;AAGhB,WAAIiC,IACKhC,IAEA+B;AAAA,EAEX;AAIA,MAAIE,IAA+B,CAAA;AACnC,QAAMC,IAAiB,CAACr7C,GAA4Bi7C,IAAc,MAAM;AACtE,IAAAj7C,EAAM,QAAQ,CAACs7C,GAA0Br2D,MAAU;;AACjD,YAAMs2D,IAAU,OAAO,KAAKD,CAAK,GAC3BE,IAAWD,EAAQ,UAAU,CAACpnD,MAAMA,KAAK,MAAM,GAC/C9X,IAAMk/D,EAAQC,CAAQ;AAE5B,UAAIC;AACJ,YAAMC,IAAOJ,EAAMj/D,CAAG,GAChB6+D,IAAWQ,EAAK,MAChBC,IAAa,OAAO,KAAKD,CAAI,EAAE;AAErC,OAAKl+D,IAAA09D,KAAA,gBAAAA,EAAU,UAAV,QAAA19D,EAA6C,OAChDi+D,IAAUpzD,GAAaqzD,EAAK,MAAM;AAAA,QAChC,MAAM;AAAA,QACN,WAAW,cAAcT,CAAG;AAAA,QAC5B,SAASh1D;AAAA,QACT,SAAS,CAAC9B,MAAoCw8C,EAAYx8C,CAAG;AAAA,QAC7D,QAAQ,CAACA,MAAoCs8C,EAAWt8C,CAAG;AAAA,QAC3D,SAAS,CAACA,MAAuCgjC,EAAYhjC,CAAG;AAAA,QAChE,kBAAkB,CAACA,MAAuCw2D,EAAsCx2D,CAAG;AAAA,MAAA,CACvE,IAE9Bs3D,IAAU7B,EAAmBsB,GAAUD,CAAG;AAG5C,YAAMnnD,IAAM,YAAYmnD,CAAG,IAAIh2D,CAAK;AACpC,MAAI02D,IAAa,KACfP,IAAe;AAAA,QACb,GAAGA;AAAA,QACH,gBAAAz9D,EAAA,cAACqf,IAAA,EAAY,KAAKlJ,GAAK,YAAW,QAAO,SAAQ,WAAU,WAAU,cAAA,GAClE2nD,CACH;AAAA,MAAA,GAGFJ,EAAe,CAACK,CAAoC,GAAGT,IAAM,CAAC,KAE9DG,IAAe;AAAA,QACb,GAAGA;AAAA,QACH,gBAAAz9D,EAAA,cAACqf,IAAA,EAAY,KAAKlJ,GAAK,YAAW,QAAO,SAAQ,WAAU,WAAU,cAAA,GAClE2nD,CACH;AAAA,MAAA;AAAA,IAGN,CAAC;AAAA,EACH,GAEMG,IAAqB,MACZxB,KAAA,gBAAAA,EAAe,SAAS,IAAI,CAAC1Q,GAASzkD,MAAU;AAC3D,IAAAm2D,IAAe,CAAA;AACf,UAAMtnD,IAAM7O,GACN+a,IAAQ0pC,EAAQ;AACtB,WAAA2R,EAAer7C,GAAO,CAAC,GAErB,gBAAAriB,EAAA,cAACqxD,IAAA,EAAS,KAAKl7C,EAAA,GACb,gBAAAnW,EAAA,cAAC,OAAA,EAAI,MAAK,aAAY,IAAI,kBAAkBmW,CAAG,IAAI,WAAU,yBAAA,GAC1D41C,EAAQ,YACX,GACA,gBAAA/rD,EAAA,cAAC,OAAA,EAAI,MAAK,SAAQ,mBAAiB,kBAAkBmW,CAAG,IAAI,WAAU,gBAAA,GACnEsnD,CACH,CACF;AAAA,EAEJ,IAIIrvC,IAAqBxkB,GAAY,CAACpD,MAAoB;;AAC1D,KAAK3G,IAAA28D,EAAoB,YAApB,QAAA38D,EAA6B,SAAS2G,EAAI,aAC7CiB,IAAAi1D,EAAe,YAAf,QAAAj1D,EAAwB,UAAU,IAAI,YACtC+D,IAAAgxD,EAAoB,YAApB,QAAAhxD,EAA6B,UAAU,OAAO,SAC9CoxD,EAAc,EAAK;AAAA,EAEvB,GAAG,CAAA,CAAE;AAEL,SAAAv6D,EAAU,OACR,6BAAU,iBAAiB,SAAS+rB,IAE7B,MAAM;AACX,iCAAU,oBAAoB,SAASA;AAAA,EACzC,IACC,CAAA,CAAE,mCAGF,OAAA,EAAI,WAAAxtB,GAAsB,KAAK47D,GAAsB,GAAG78D,KACvD,gBAAAK,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACE,GAAGoxD,EAAc;AAAA,MAClB,YAAW;AAAA,MACX,WAAU;AAAA,MACV,iBAAeE,IAAa,SAAS;AAAA,MACrC,SAASM;AAAA,MACT,SAASC;AAAA,MACT,QAAQC;AAAA,MACR,SAASC;AAAA,MACT,kBAAkBC;AAAA,IAAA;AAAA,EAAA,GAEpB,gBAAAr9D,EAAA,cAAC,OAAA,EAAI,MAAK,QAAO,cAAYy8D,EAAc,eAAe,WAAU,uBAAsB,KAAKC,EAAA,GAC5FuB,EAAA,CACH,CACF;AAEJ,GChTM31D,KAAc,CAAC9B,GAAsC7G,MAAqC;;AAC9F,GAAA8H,KAAA5H,IAAAF,EAAM,cAAN,gBAAAE,EAAiB,YAAjB,QAAA4H,EAA0B,UAC1B+D,IAAA7L,EAAM,YAAN,QAAA6L,EAAA,KAAA7L,GAAgB6G;AAClB,GAEMw8C,KAAc,CAACx8C,GAAiCg2D,GAAgD78D,MAAqC;;AACzI,GAAAE,IAAA28D,EAAoB,YAApB,QAAA38D,EAA6B,UAAU,IAAI,UAC3C4H,IAAA9H,EAAM,YAAN,QAAA8H,EAAA,KAAA9H,GAAgB6G;AAClB,GAEMs8C,KAAa,CAACt8C,GAAiCg2D,GAAgD78D,MAAqC;;AACxI,GAAAE,IAAA28D,EAAoB,YAApB,QAAA38D,EAA6B,UAAU,OAAO,UAC9C4H,IAAA9H,EAAM,WAAN,QAAA8H,EAAA,KAAA9H,GAAe6G;AACjB,GAEMu1D,KAAW,CAACjH,GAA0B0H,GAAgD78D,MAAqC;AAC/H,MAAI67D;AACJ,WAASltC,IAAI,GAAGA,IAAIwmC,EAAS,QAAQxmC;AACnC,IAAIA,MAAM,IACRktC,IAAQ9wD,GAAaoqD,EAAS,CAAC,GAAmD;AAAA,MAChF,WAAW;AAAA,MACX,SAAS,CAACtuD,MAAyC8B,GAAY9B,GAAK7G,CAAK;AAAA,MACzE,SAAS,CAAC6G,MAAoCw8C,GAAYx8C,GAAKg2D,GAAqB78D,CAAK;AAAA,MACzF,QAAQ,CAAC6G,MAAoCs8C,GAAWt8C,GAAKg2D,GAAqB78D,CAAK;AAAA,IAAA,CACxF,IACQ2uB,IAAI,KACTktC,MACFA,IAAQ9wD,GAAaoqD,EAASxmC,CAAC,GAAmD,EAAE,UAAUktC,GAAO;AAI3G,SAAOA;AACT,GAEMS,KAAqB,CAACiC,GAA0B1B,GAAgD78D,MAAqC;;AACzI,MAAI47D,IAAiC2C,GACjCpJ,IAA2B,CAAA,GAC3B0I,IAAkB,IAClBhC;AAEJ,SAAOD,MAAc;AACnB,KAAK17D,IAAA07D,EAAU,UAAV,QAAA17D,EAA6C,WAC3C07D,EAAU,MAAkC,QAC/CiC,IAAS,IACT1I,IAAW,CAAC,GAAGA,GAAUyG,CAAS,GAClCzG,IAAWA,EAAS,QAAA,GACpB0G,IAAQO,GAASjH,GAAU0H,GAAqB78D,CAAK,GACrD47D,IAAY,SAEZzG,IAAW,CAAC,GAAGA,GAAUyG,CAAS,GAC9BA,MAAeA,EAAU,MAAkC,WAC7DA,IAAY,OAEZA,IAAaA,EAAU,MAAkC,YAI7DA,IAAY;AAGhB,SAAIiC,IACKhC,IAEA0C;AAEX,GAEMC,KAAc,CAACD,GAA0B1B,GAAgD78D,MAAqC;AAClI,MAAIy+D;AAEJ,SAAIF,MAAeA,KAAA,gBAAAA,EAAY,OAAkC,OAC/DE,IAAgB1zD,GAAawzD,GAA4D;AAAA,IACvF,WAAW;AAAA,IACX,SAAS,CAAC13D,MAAyC8B,GAAY9B,GAAK7G,CAAK;AAAA,IACzE,SAAS,CAAC6G,MAAoCw8C,GAAYx8C,GAAKg2D,GAAqB78D,CAAK;AAAA,IACzF,QAAQ,CAAC6G,MAAoCs8C,GAAWt8C,GAAKg2D,GAAqB78D,CAAK;AAAA,EAAA,CACxF,IAEDy+D,IAAgBnC,GAAmBiC,GAAY1B,GAAqB78D,CAAK,GAGpEy+D;AACT,GAEaC,KAAsD,CAAC,EAAE,WAAAz9D,GAAW,qBAAA47D,GAAqB,YAAA0B,GAAY,GAAGv+D,QAAY;AAC/H,QAAMy+D,IAAgBD,GAAYD,GAAY1B,GAAqB,EAAE,WAAA57D,GAAW,qBAAA47D,GAAqB,YAAA0B,GAAY,GAAGv+D,GAAO;AAE3H,SACE,gBAAAK,EAAA,cAAAA,EAAA,UAAA,MACGo+D,KACC,gBAAAp+D,EAAA,cAAC,OAAA,EAAI,WAAAY,GAAsB,KAAK47D,GAAsB,GAAG78D,qCACtD0f,IAAA,EAAY,QAAQ,MAAO++C,CAAc,CAC5C,CAEJ;AAEJ,GCpEME,KAA0C,CAAC,EAAE,KAAA39D,IAAM,MAAM,UAAAgb,IAAW,SAAS,YAAAuiD,GAAY,eAAAzB,GAAe,GAAG98D,QAAY;AAC3H,QAAM68D,IAAsBt6D,EAAuB,IAAI;AAEvD,EAAAiB,GAAoBxC,GAAK,MAAM67D,EAAoB,OAAyB;AAE5E,QAAM+B,IAAsBngE,EAAW,mCAAmCuB,EAAM,SAAS;AAEzF,SACE,gBAAAK,EAAA,cAAAA,EAAA,UAAA,MACG6C,EAAgB8Y,CAAQ,KAAK8gD,KAC5B,gBAAAz8D,EAAA;AAAA,IAACu8D;AAAA,IAAA;AAAA,MACC,WAAWgC;AAAA,MACX,qBAAA/B;AAAA,MACA,eAAAC;AAAA,IAAA;AAAA,EAAA,GAGH,CAAC55D,EAAgB8Y,CAAQ,KAAKuiD,KAC7B,gBAAAl+D,EAAA;AAAA,IAACq+D;AAAA,IAAA;AAAA,MACC,WAAWE;AAAA,MACX,qBAAA/B;AAAA,MACA,YAAA0B;AAAA,MACC,GAAGv+D;AAAA,IAAA;AAAA,EAAA,CAGV;AAEJ,GCzDa6+D,KAA8B,CAAC,EAAE,UAAA39D,GAAU,UAAAuD,GAAU,GAAGzE,QAAY;AAC/E,QAAM8+D,IAAgBrgE,EAAW,mBAAmB,EAAE,aAAayE,EAAgBuB,CAAQ,GAAG;AAE9F,yCACG,MAAA,EAAG,WAAWq6D,GAAgB,GAAG9+D,KAC/BkB,CACH;AAEJ,GCMM69D,KAAwB,CAC5Bv5D,GACA2gB,GACAtmB,wDAIKsmB,MAAW,WACV,gBAAA9lB,EAAA,cAACU,IAAA,EAAQ,WAAU,yBAAwB,OAAOyE,KAChD,gBAAAnF,EAAA,cAACQ,KAAS,YAAAhB,GAAwB,OAAM,WAAU,MAAK,mBAAkB,eAAW,GAAA,CAAC,GACrF,gBAAAQ,EAAA,cAACQ,KAAS,YAAAhB,GAAwB,OAAM,SAAQ,MAAK,oBAAmB,eAAW,GAAA,CAAC,GACpF,gBAAAQ,EAAA,cAACQ,KAAS,YAAAhB,GAAwB,OAAM,UAAS,MAAK,oBAAmB,eAAW,GAAA,CAAC,CACvF,GAEDsmB,MAAW,aACV,gBAAA9lB,EAAA,cAACU,IAAA,EAAQ,WAAU,yBAAwB,OAAOyE,EAAA,GAChD,gBAAAnF,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,WAAU,MAAK,mBAAkB,eAAW,GAAA,CAAC,GACrF,gBAAAQ,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,SAAQ,MAAK,oBAAmB,eAAW,IAAC,GACpF,gBAAAQ,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,UAAS,MAAK,oBAAmB,eAAW,IAAC,CACvF,GAEDsmB,MAAW,UACV,gBAAA9lB,EAAA,cAACU,IAAA,EAAQ,WAAU,yBAAwB,OAAOyE,EAAA,GAChD,gBAAAnF,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,WAAU,MAAK,oBAAmB,eAAW,IAAC,GACtF,gBAAAQ,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,SAAQ,MAAK,qBAAoB,eAAW,IAAC,GACrF,gBAAAQ,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,UAAS,MAAK,qBAAoB,eAAW,IAAC,CACxF,GAEDsmB,MAAW,2CACTplB,IAAA,EAAQ,WAAU,yBAAwB,OAAOyE,KAChD,gBAAAnF,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,WAAU,MAAK,6BAA4B,eAAW,GAAA,CAAC,GAC/F,gBAAAQ,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,SAAQ,MAAK,8BAA6B,eAAW,GAAA,CAAC,GAC9F,gBAAAQ,EAAA,cAACQ,GAAA,EAAS,YAAAhB,GAAwB,OAAM,UAAS,MAAK,8BAA6B,eAAW,GAAA,CAAC,CACjG,CAEJ,GAIEm/D,KAAwB,CAAC74C,GAAwBtmB,wDAGhDsmB,MAAW,2CAAY1lB,IAAA,EAAK,YAAAZ,GAAwB,MAAK,mBAAkB,eAAW,GAAA,CAAC,GACvFsmB,MAAW,aAAa,gBAAA9lB,EAAA,cAACI,MAAK,YAAAZ,GAAwB,MAAK,mBAAkB,eAAW,IAAC,GACzFsmB,MAAW,UAAU,gBAAA9lB,EAAA,cAACI,IAAA,EAAK,YAAAZ,GAAwB,MAAK,oBAAmB,eAAW,IAAC,GACvFsmB,MAAW,2CAAY1lB,IAAA,EAAK,YAAAZ,GAAwB,MAAK,6BAA4B,eAAW,IAAC,CACpG,GAISo/D,KAAsB,CAAC,EAAE,aAAA9xD,IAAc,IAAO,QAAAgZ,IAAS,WAAW,UAAA1hB,IAAW,IAAO,UAAAvD,GAAU,GAAGlB,EAAA,MAAY;AACxH,QAAM,EAAE,OAAA0F,EAAA,IAAU9B,GAAA,GACZ,EAAE,UAAAQ,EAAA,IAAaH,GAAA,GAEfgoD,IAAmBvmD,IAAQtB,GAE3B2U,IAAYxW,EAA0B,IAAI,GAE1C,CAACiD,GAAaC,CAAc,IAAIhD,EAAuB,SAAS,GAEhE/D,IAAUD,EAAW,QAAQ0nB,GAAQ,EAAE,aAAa,CAACjjB,EAAgBiK,CAAW,GAAG,aAAajK,EAAgBuB,CAAQ,GAAG,GAE3HmC,IAAmB,CAACC,MAA0C;;AAClE,KAAIA,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,cACrE3G,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB,UAAU,IAAI,WAEjCuF,EAAe,QAAQ,KAGzBqC,IAAA9H,EAAM,cAAN,QAAA8H,EAAA,KAAA9H,GAAkB6G;AAAA,EACpB,GAEMC,IAAiB,CAACD,MAA0C;;AAChE,KAAIA,EAAI,SAAS,WAAWA,EAAI,SAAS,iBAAiBA,EAAI,SAAS,cACrE3G,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB,UAAU,OAAO,WAEpCuF,EAAe,SAAS,IAExBqC,IAAAiR,EAAU,YAAV,QAAAjR,EAAmB,aAAa,+BAA+B,UAC/D+D,IAAAkN,EAAU,YAAV,QAAAlN,EAAmB,WAGrBC,IAAA9L,EAAM,YAAN,QAAA8L,EAAA,KAAA9L,GAAgB6G;AAAA,EAClB,GAEMK,IAAsB,CAACL,MAAuC;;AAGlE,IAFsB,OAAO,WAAW,mBAAmB,EAAE,YAM7DpB,EAAe,OAAO,IAEtBvF,IAAAF,EAAM,iBAAN,QAAAE,EAAA,KAAAF,GAAqB6G;AAAA,EACvB,GAEMI,IAAsB,CAACJ,MAAuC;;AAGlE,IAFsB,OAAO,WAAW,mBAAmB,EAAE,YAM7DpB,EAAe,SAAS,IAExBvF,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB,UAAU,OAAO,YAEpC4H,IAAA9H,EAAM,iBAAN,QAAA8H,EAAA,KAAA9H,GAAqB6G;AAAA,EACvB,GAGME,IAAqB,CAACF,MAAuC;;AAIjE,IAHAA,EAAI,eAAA,GAEkB,QAAO,WAAW,mBAAmB,EAAE,YAK7DpB,EAAe,QAAQ,IAEvBvF,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB,UAAU,IAAI,YAEjC4H,IAAA9H,EAAM,gBAAN,QAAA8H,EAAA,KAAA9H,GAAoB6G;AAAA,EACtB,GAGMG,IAAmB,CAACH,MAAuC;;AAK/D,IAJAA,EAAI,eAAA,GAEkB,QAAO,WAAW,mBAAmB,EAAE,YAM7DpB,EAAe,SAAS,IAExBvF,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB,UAAU,OAAO,YAEpC4H,IAAA9H,EAAM,cAAN,QAAA8H,EAAA,KAAA9H,GAAkB6G;AAAA,EACpB,GAEMF,IAAiB,CAACE,MAAuC;;AAC7D,UAAM+B,IAAgB,OAAO,WAAW,mBAAmB,EAAE;AAG7D,QAAI/B,EAAI,SAAS,GAAG;AAClB,MAAApB,EAAemD,IAAgB,YAAY,OAAO,IAClD1I,IAAAF,EAAM,YAAN,QAAAE,EAAA,KAAAF,GAAgB6G;AAChB;AAAA,IACF;AAOA,UAAMkF,MAAqBjE,IAAAiR,EAAU,YAAV,gBAAAjR,EAAmB,aAAa,oCAAmC;AAG9F,SAFA+D,IAAAkN,EAAU,YAAV,QAAAlN,EAAmB,gBAAgB,gCAE/B,CAACE,GAAoB;AACvB,MAAAlF,EAAI,eAAA;AACJ;AAAA,IACF;AAEA,IAAApB,EAAe,SAAS,IACxBqG,IAAA9L,EAAM,YAAN,QAAA8L,EAAA,KAAA9L,GAAgB6G;AAAA,EAClB;AAEA,SACE,gBAAAxG,EAAA,cAAC,MAAA,EAAG,WAAW3B,GAAU,GAAIynB,MAAW,YAAY,EAAE,gBAAgB,OAAA,IAAW,CAAA,EAAC,GAChF,gBAAA9lB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGL;AAAA,MACJ,KAAK+Y;AAAA,MACL,MAAK;AAAA,MACL,UAAUoN,MAAW;AAAA,MACpB,GAAI,CAACjjB,EAAgBiK,CAAW,KAAKgZ,MAAW,aAC7C,EAAE,UAAU,OACZ;AAAA,QACE,SAASxf;AAAA,QACT,WAAWC;AAAA,QACX,SAASE;AAAA,QACT,aAAaC;AAAA,QACb,WAAWC;AAAA,QACX,cAAcC;AAAA,QACd,cAAcC;AAAA,MAAA;AAAA,IAChB;AAAA,IAEJ,gBAAA7G,EAAA,cAAC,QAAA,EAAK,WAAU,OAAA,CAAO;AAAA,IAEtB6C,EAAgBiK,CAAW,KAC1B,gBAAA9M,EAAA,cAAC,QAAA,EAAK,WAAU,UAAA,GAAW0+D,GAAsBv5D,GAAa2gB,GAAQ8lC,IAAmB,OAAO,GAAG,CAAE;AAAA,IAGtG,CAAC/oD,EAAgBiK,CAAW,KAAK,gBAAA9M,EAAA,cAAC,QAAA,EAAK,WAAU,UAAA,GAAW2+D,GAAsB74C,GAAQ8lC,IAAmB,OAAO,GAAG,CAAE;AAAA,IAE1H,gBAAA5rD,EAAA,cAAC,QAAA,EAAK,WAAU,UAAA,GAAWa,CAAS;AAAA,EAAA,CAExC;AAEJ,GCnNMg+D,KAA4B,CAAC,EAAE,KAAAl+D,IAAM,MAAM,WAAAC,GAAW,UAAAC,GAAU,aAAAiM,IAAc,IAAO,UAAA1I,IAAW,IAAO,GAAGzE,QAAY;AAC1H,QAAMkF,IAAcC,GAAA,GAEdzG,IAAUD,EAAW,iBAAiB0O,GAAa1I,GAAU,EAAE,aAAavB,EAAgBuB,CAAQ,EAAA,GAAKxD,CAAS;AAExH,SACE,gBAAAZ,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,KAAAgB,GAAU,WAAWtC,EAAA,GACnC,gBAAA2B,EAAA,cAAC,MAAA,MACEc,EAAS,IAAID,GAAU,CAAC7B,GAAGsI,MAAU;AACpC,QAAI,CAACtG,EAA0BhC,CAAC;AAC9B,aAAO;AAGT,UAAMN,IAAM,iBAAiBmG,CAAW,IAAIyC,CAAK;AAEjD,WACE,gBAAAtH,EAAA;AAAA,MAAC4+D;AAAA,MAAA;AAAA,QACE,GAAG5/D,EAAE;AAAA,QACN,KAAAN;AAAA,QACA,aAAkDmE,EAArC,OAAOiK,IAAgB,MAA8BA,IAA+B9N,EAAE,MAAM,WAA5B;AAAA,QAC7E,UAA4C6D,EAAlC,OAAOuB,IAAa,MAA8BA,IAA4BpF,EAAE,MAAM,QAA5B;AAAA,MAAoC;AAAA,IAAA;AAAA,EAG9G,CAAC,CACH,CACF;AAEJ,GCIM8/D,KAA0B,CAAC;AAAA,EAC/B,KAAAn+D,IAAM;AAAA,EACN,UAAAyD,IAAW;AAAA,EACX,WAAAxD;AAAA,EACA,OAAA2N;AAAA,EACA,WAAAkC;AAAA,EACA,UAAA7B;AAAA,EACA,SAAAmwD;AAAA,EACA,UAAA/1D;AAAA,EACA,WAAAlB;AAAA,EACA,aAAAmjB;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,cAAAC;AAAA,EACA,UAAAW;AAAA,EACA,UAAApmB;AAAA,EACA,GAAGhF;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdgF,IAAa,EAAE,GAAGnK,EAAA;AAExB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM,CAACwmB,GAAgBC,CAAiB,IAAIlpB,EAASS,EAAgBiH,EAAW,WAAWA,EAAW,cAAc,CAAC,GAE/GusC,IAAan0C,EAAuB,IAAI,GAExCupB,IAAe,CAACjlB,MAAuC;AAC3D,IAAA8kB,EAAkB,CAAC9b,MAAS,CAACA,CAAI,GACjClM,GAAa,MAAMqB,KAAA,gBAAAA,EAAW6B,EAAI;AAAA,EACpC;AAEA,EAAAnE,EAAU,MAAM;AACd,UAAMqpB,IAAU5hB,EAAW,WAAWA,EAAW;AACjD,IAAI4hB,MAAY,UACdJ,EAAkBI,CAAO;AAAA,EAE7B,GAAG,CAAC5hB,EAAW,SAASA,EAAW,cAAc,CAAC;AAElD,QAAMk1D,IAA4B,CAACx4D,MAAuC;;AACxE,IAAI6vC,MAAe,SAAS7vC,EAAI,SAAS,WAAWA,EAAI,SAAS,WAAWA,EAAI,SAAS,mBACvFA,EAAI,eAAA,IACJiB,KAAA5H,IAAAw2C,EAAW,YAAX,gBAAAx2C,EAAoB,cAAc,aAAlC,QAAA4H,EAA4C;AAAA,EAEhD,GAEMw3D,IAA0B,CAACz4D,MAAoC;;AACnE,IAAI6vC,MAAe,SACjB7vC,EAAI,eAAA,IACJiB,KAAA5H,IAAAw2C,EAAW,YAAX,gBAAAx2C,EAAoB,cAAc,aAAlC,QAAA4H,EAA4C;AAAA,EAEhD,GAEMy3D,IAAuB9gE,EAAW,wBAAwBwC,GAAW;AAAA,IACzE,aAAaiC,EAAgBuB,CAAQ;AAAA,IACrC,eAAevB,EAAgBk8D,CAAO;AAAA,IACtC,CAAC,UAAU/1D,CAAQ,EAAE,GAAGA;AAAA,IACxB,qBAAqBnG,EAAgBiF,CAAS;AAAA,IAC9C,mBAAmB8G;AAAA,IACnB,gBAAgB6B;AAAA,IAChB,sBAAsB,CAACA;AAAA,IACvB,aAAa5N,EAAgBkoB,CAAQ;AAAA,IACrC,gBAAgBloB,EAAgBooB,CAAW;AAAA,IAC3C,CAAC,cAAcd,CAAa,GAAGtnB,EAAgBooB,CAAW,KAAKd;AAAA,EAAA,CAChE,GAEKg1C,IAAgB/gE,EAAW,eAAe;AAAA,IAC9C,iBAAiBwQ;AAAA,IACjB,YAAY,CAACyc,KAAkB,CAACzc;AAAA,EAAA,CACjC,GAEKwwD,IAAqBhhE,EAAW,gBAAgB;AAAA,IACpD,kBAAkBwQ;AAAA,EAAA,CACnB,GAEKhK,IAAYjF,EAAM,YAAY,KAAK4O;AAEzC,SACE,gBAAAvO,EAAA,cAAC,aACC,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAKq2C,GAAY,WAAW6oB,EAAA,GAC/B,gBAAAl/D,EAAA,cAAC,SAAA,EAAO,GAAG8J,GAAY,MAAK,YAAW,UAAU,IAAI,UAAA8E,GAAoB,UAAU6c,GAAc,KAAA9qB,GAAU,IAAImJ,EAAW,GAAA,CAAI,GAC9H,gBAAA9J,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,iBAAiBqrB,IAAiB,OAAO,KAAK,IAAIzc,IAAW,2BAA2B,EAAE;AAAA,MACrG,MAAK;AAAA,MACL,gBAAcyc,IAAiB,SAAS;AAAA,MACxC,UAAWzc,IAAe,KAAJ;AAAA,MACtB,cAAYhK;AAAA,MACZ,qBACG/B,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,IAAe,UAAUtgB,EAAW,EAAE,cAAc;AAAA,MAErH,SAASm1D;AAAA,MACT,WAAWD;AAAA,IAAA;AAAA,IAEX,gBAAAh/D,EAAA,cAAC,QAAA,EAAK,WAAWm/D,EAAA,GACd9zC,IACC,gBAAArrB,EAAA,cAACI,IAAA,EAAK,MAAK,qBAAoB,eAAW,IAAC,WAAU,MAAK,YAAW,KAAA,CAAK,IAE1E,gBAAAJ,EAAA,cAACI,IAAA,EAAK,MAAK,iBAAgB,eAAW,IAAC,WAAU,OAAM,YAAW,MAAK,CAE3E;AAAA,EAAA,GAED,CAACqQ,KAAalC,qCACZ,SAAA,EAAM,SAASzE,EAAW,IAAI,WAAWs1D,KACvC7wD,CACH,CAEJ,IAEE1L,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,KAC9D,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,UAAUpgB,EAAW,EAAE;AAAA,MAC3B,eAAgBjH,EAAgBkoB,CAAQ,IAAoB,WAAhBZ;AAAA,MAC5C,cAAAC;AAAA,MACA,WAAU;AAAA,IAAA;AAAA,EAAA,CAGhB;AAEJ,GCpKMi1C,KAAgC,CAAC,EAAE,UAAAx+D,GAAU,GAAGlB,QAC7C,gBAAAK,EAAA,cAAC,SAAA,EAAO,GAAGL,EAAA,GAAQkB,CAAS,GCF/By+D,KAAsC,CAAC,EAAE,UAAAz+D,GAAU,GAAGlB,QACnD,gBAAAK,EAAA,cAAC,WAAA,EAAS,GAAGL,EAAA,GAAQkB,CAAS,GCWjC0+D,KAAgC,CAAC,EAAE,UAAA1+D,GAAU,WAAA2+D,IAAY,IAAI,aAAAC,GAAa,GAAG9/D,QAE/E,gBAAAK,EAAA,cAAC,QAAI,GAAGL,GAAO,mBAAiB6/D,GAAW,cAAYC,KACpD5+D,CACH,GChBE6+D,KAAoC,CAAC,EAAE,UAAA7+D,GAAU,GAAGlB,QACjD,gBAAAK,EAAA,cAAC,SAAA,EAAO,GAAGL,EAAA,GAAQkB,CAAS,GCA/B8+D,KAAoC,CAAC,EAAE,UAAA9+D,GAAU,GAAGlB,QACjD,gBAAAK,EAAA,cAAC,SAAA,EAAO,GAAGL,EAAA,GAAQkB,CAAS,GCF/B++D,KAAkD;AAAA,EACtD,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AACX,GAEMC,KAAiD;AAAA,EACrD,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AACX,GAkBMC,KAA4C,CAAC,EAAE,UAAAC,GAAU,WAAAC,IAAY,QAAQ,cAAAC,GAAc,UAAAp/D,GAAU,GAAGlB,QAAY;AACxH,QAAMugE,IAAoB,CAAC,QAAQ,aAAa,YAAY,GACtDC,IAAwBD,EAAkB,UAAU,CAACE,MAAUA,MAAUJ,CAAS,GAElFK,IAAep5D,GAAQ,MACtB84D,IAIDC,MAAc,cACTH,GAAqBE,CAAQ,IAGlCC,MAAc,eACTJ,GAAsBG,CAAQ,IAGhC,8BAXE,IAYR,CAACA,GAAUC,CAAS,CAAC,GAElBM,IAAgBr5D,GAAQ,MACvB84D,IAIDC,MAAc,cACT,cAGLA,MAAc,eACT,eAGF,SAXE,QAYR,CAACD,GAAUC,CAAS,CAAC,GAElBO,IAAY,MAAM;AACtB,QAAI,CAACR;AACH,aAAO;AAGT,QAAIS,IAAgBL,IAAwB;AAE5C,IAAIK,KAAiBN,EAAkB,WACrCM,IAAgB,IAGlBP,KAAA,QAAAA,EAAeC,EAAkBM,CAAa;AAAA,EAChD;AAEA,SACE,gBAAAxgE,EAAA,cAAC,QAAI,GAAGL,GAAO,WAAWA,EAAM,WAAW,aAAW2gE,EAAA,GACnDP,KACC,gBAAA//D,EAAA,cAACqL,MAAO,WAAU,qBAAoB,YAAW,QAAO,SAAQ,WAAU,cAAW,WAAU,SAASk1D,EAAA,GACtG,gBAAAvgE,EAAA,cAAC,QAAA,EAAK,WAAU,6BAAA,GACd,gBAAAA,EAAA,cAACI,MAAK,MAAMigE,GAAc,eAAW,GAAA,CAAC,GACtC,gBAAArgE,EAAA,cAAC,QAAA,EAAK,WAAU,mBAAA,GAAoBa,CAAS,CAC/C,CACF,GAGD,CAACk/D,qCAAa,QAAA,EAAK,WAAU,oBAAA,GAAqBl/D,CAAS,CAC9D;AAEJ,GC3FM4/D,KAA8B,CAAC,EAAE,UAAA5/D,GAAU,GAAGlB,QAC3C,gBAAAK,EAAA,cAAC,MAAA,EAAI,GAAGL,EAAA,GAAQkB,CAAS,GCwD5B6/D,KAA4C,CAAC;AAAA,EACjD,KAAA//D,IAAM;AAAA,EACN,mBAAAggE;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,GAAGxhE;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEd4T,IAAYxW,EAA0B,IAAI,GAC1CuW,IAAcvW,EAAwB,IAAI,GAC1Ck/D,IAAqBl/D,EAAuB,IAAI,GAEhD,CAACyW,GAAmBC,CAAoB,IAAIxW,EAAS,EAAK,GAE1Dy5C,IAAmB,MAAM;;AAC7B,KAAIh8C,IAAA4Y,EAAY,YAAZ,QAAA5Y,EAAqB,cACvB4H,IAAAgR,EAAY,YAAZ,QAAAhR,EAAqB,UAErB+D,IAAAiN,EAAY,YAAZ,QAAAjN,EAAqB,SAGvBC,IAAAiN,EAAU,YAAV,QAAAjN,EAAmB,UAAU,OAAO;AAAA,EACtC,GAEM41D,IAA+B,CAAC76D,MAA4C;AAChF,IAAI,OAAOA,EAAI,UAAW,YAAYA,EAAI,WAAW,KAMrDq1C,EAAA;AAAA,EACF,GAEMylB,IAAiC,CAAC96D,MAA0C;;AAChF,UAAMyJ,IAAOzJ,EAAI;AAEjB,IAAIyJ,MAAS,cAAYpQ,IAAA4Y,EAAY,YAAZ,QAAA5Y,EAAqB,eAC5C4Y,EAAY,QAAQ,KAAA,IAGlBxI,MAAS,WAAWA,MAAS,WAAWA,MAAS,kBACnD4rC,EAAA;AAAA,EAEJ,GAEM0lB,IAAwB,MAAM;AAClC,IAAA3oD,EAAqB,EAAI,GACzBtV,GAAa,MAAM;;AACjB,OAAAzD,IAAA4Y,EAAY,YAAZ,QAAA5Y,EAAqB;AAAA,IACvB,CAAC;AAAA,EACH,GAEM2hE,IAAwB,MAAM;AAClC,IAAA5oD,EAAqB,EAAK,GAC1BtV,GAAa,MAAM;;AACjB,OAAAzD,IAAA6Y,EAAU,YAAV,QAAA7Y,EAAmB;AAAA,IACrB,CAAC;AAAA,EACH,GAEM4hE,IAA0B,CAAClyD,MAAmC;;AAClE,QAAIA,EAAQ,SAAS,GAAG;AACtB,YAAMM,IAASN,EAAQ,CAAC;AACxB,OAAA1P,IAAAF,EAAM,qBAAN,QAAAE,EAAA,KAAAF,GAAyB,CAACkQ,EAAO;AAAA,IACnC;AAAA,EACF;AAEA,EAAAxN,EAAU,MAAM;AACd,UAAM+rB,IAAqB,CAAC5nB,MAAoB;;AAC9C,OAAI3G,IAAA4Y,EAAY,YAAZ,QAAA5Y,EAAqB,cAAc,GAAC4H,IAAA25D,EAAmB,YAAnB,QAAA35D,EAA4B,SAASjB,EAAI,YAC/EiS,EAAY,QAAQ,KAAA;AAAA,IAExB;AAEA,wCAAU,iBAAiB,SAAS2V,IAE7B,MAAM;AACX,mCAAU,oBAAoB,SAASA;AAAA,IACzC;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAM0kC,IAAa,KAAK,KAAK+N,IAAaD,CAAY,GAEhDc,IAAiB,MAAM;;AAC3B,KAAA7hE,IAAAF,EAAM,iBAAN,QAAAE,EAAA,KAAAF,GAAqB,KAAK,IAAI,GAAGohE,IAAc,CAAC;AAAA,EAClD,GAEMY,IAAiB,MAAM;;AAC3B,KAAA9hE,IAAAF,EAAM,iBAAN,QAAAE,EAAA,KAAAF,GAAqB,KAAK,IAAIohE,IAAc,GAAGjO,IAAa,CAAC;AAAA,EAC/D,GAGM8O,IAAiB36D,GAAQ,MACxB0R,IAOE;AAAA,IACL,SAAS;AAAA,IACT,OAAO;AAAA,EAAA,IARA;AAAA,IACL,SAAS;AAAA,IACT,OAAO;AAAA,EAAA,GAQV,CAACA,CAAiB,CAAC;AAEtB,SACE,gBAAA3Y,EAAA,cAAC,OAAA,EAAI,WAAU,0BAAyB,KAAAW,qCACrC,OAAA,EAAI,WAAU,iBAAgB,KAAKygE,EAAA,GAClC,gBAAAphE,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,KAAKqN;AAAA,MACL,YAAW;AAAA,MACX,SAAO;AAAA,MACP,cAAckpD,EAAe;AAAA,MAC7B,mBAAmBA,EAAe;AAAA,MAClC,cAAYZ;AAAA,MACZ,MAAK;AAAA,MACL,iBAAen8D;AAAA,MACf,iBAAe8T;AAAA,MACf,SAAS0oD;AAAA,MACT,WAAWC;AAAA,IAAA;AAAA,IAEVX;AAAA,IAAkB;AAAA,IAAEC;AAAA,EAAA,GAGvB,gBAAA5gE,EAAA,cAAC,OAAA,EAAI,WAAU,+CAAA,GACb,gBAAAA,EAAA;AAAA,IAACsX;AAAA,IAAA;AAAA,MACC,IAAIzS;AAAA,MACJ,KAAK4T;AAAA,MACL,MAAK;AAAA,MACL,QAAQ+oD;AAAA,MACR,QAAQD;AAAA,MACR,UAAUE;AAAA,MACV,kBAAgB;AAAA,MAChB,cAAYR;AAAA,IAAA;AAAA,IAEZ,gBAAAjhE,EAAA,cAAC0X,MAAgB,OAAM,cAAa,MAAK,wBACtCopD,EAAmB,IAAI,CAACe,MAErB,gBAAA7hE,EAAA,cAAC2X,IAAA,EAAe,KAAKkqD,GAAI,OAAO,OAAOA,CAAE,EAAA,GACtC,OAAOA,CAAE,CACZ,CAEH,CACH;AAAA,EAAA,CAEJ,CACF,GACA,gBAAA7hE,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,WAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,UAAQ;AAAA,MACR,WAAU;AAAA,MACV,SAAO;AAAA,MACP,UAAQ;AAAA,MACR,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,SAASq2D;AAAA,MACT,UAAUX,MAAgB;AAAA,MAC1B,cAAYG;AAAA,IAAA;AAAA,EAAA,CAEhB,GACA,gBAAAlhE,EAAA,cAAC,OAAA,EAAI,WAAU,WAAA,GACb,gBAAAA,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,UAAQ;AAAA,MACR,WAAU;AAAA,MACV,SAAO;AAAA,MACP,UAAQ;AAAA,MACR,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,SAASs2D;AAAA,MACT,UAAUZ,MAAgBjO,IAAa;AAAA,MACvC,cAAYqO;AAAA,IAAA;AAAA,EAAA,CAEhB,CACF,CACF;AAEJ,GC/MMW,KAAwB,CAAC;AAAA,EAC7B,KAAAnhE,IAAM;AAAA,EACN,WAAAC,IAAY;AAAA,EACZ,cAAAmhE,IAAe;AAAA,EACf,cAAAC,IAAe;AAAA,EACf,eAAAC,IAAgB;AAAA,EAChB,UAAAphE;AAAA,EACA,iBAAAqhE;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,GAAGxiE;AACL,MAAM;AACJ,QAAMyiE,IAAkBhkE;AAAA,IACtB;AAAA,IACA;AAAA,MACE,uBAAuB2jE,MAAiB;AAAA,MACxC,sBAAsBA,MAAiB;AAAA,MACvC,uBAAuBC,MAAiB;AAAA,MACxC,sBAAsBA,MAAiB;AAAA,MACvC,wBAAwBC,MAAkB;AAAA,MAC1C,uBAAuBA,MAAkB;AAAA,IAAA;AAAA,IAE3CrhE;AAAA,EAAA;AAGF,SACE,gBAAAZ,EAAA,cAAC,OAAA,EAAI,WAAU,cAAA,GACb,gBAAAA,EAAA,cAAC,SAAA,EAAO,GAAGL,GAAO,WAAWyiE,GAAiB,KAAAzhE,EAAA,GAC3CE,CACH,GACCqhE,KAAmB,gBAAAliE,EAAA,cAAC0gE,IAAA,EAAiB,GAAGwB,EAAA,CAAiB,GAC1D,gBAAAliE,EAAA,cAAC,QAAA,EAAK,WAAU,WAAU,aAAU,SAAA,GACjCmiE,CACH,CACF;AAEJ,GCjDME,KAAoB,CAAC,EAAE,KAAA1hE,IAAM,MAAM,UAAAyD,IAAW,IAAO,MAAAsK,IAAO,IAAI,WAAA2Z,IAAY,IAAI,UAAAxnB,GAAU,WAAAD,IAAY,IAAI,GAAGjB,QAAY;AAC7H,QAAM2iE,IAAelkE,EAAW,iBAAiBwC,CAAS,GAEpD2hE,IAAc7zD,KAAQ,WACtB8zD,IAAmBn6C,KAAa;AAEtC,SACE,gBAAAroB,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACE,GAAG1L;AAAA,MACJ,SAAO;AAAA,MACP,KAAAgB;AAAA,MACA,WAAW;AAAA,MACX,SAAQ;AAAA,MACR,YAAW;AAAA,MACX,WAAW2hE;AAAA,MACX,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,UAAUz/D,EAAgBuB,CAAQ;AAAA,MAClC,aAAavB,EAAgBlD,EAAM,OAAO,IAAI4iE,IAAc;AAAA,MAC5D,kBAAkB1/D,EAAgBlD,EAAM,OAAO,IAAI6iE,IAAmB;AAAA,IAAA;AAAA,IAErE3hE;AAAA,EAAA;AAGP,GCTa4hE,KAAwC,CAAC,EAAE,OAAAl0D,GAAO,WAAAkC,GAAW,QAAA41B,GAAQ,WAAAzlC,GAAW,aAAAkM,GAAa,GAAGnN,QAAY;AACvH,QAAM+iE,IAA0BtkE,EAAW,uBAAuBwC,GAAW,EAAE,QAAQiC,EAAgBwjC,CAAM,GAAG,GAC1Gs8B,IAA0BvkE,EAAW,kBAAkB,EAAE,iCAAiCyE,EAAgB4N,CAAS,GAAG,GAEtH3G,IAAa,EAAE,GAAGnK,EAAA;AACxB,gBAAOmK,EAAW,UAGhB,gBAAA9J,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG8J;AAAA,MACJ,WAAW44D;AAAA,MACX,UAAU51D,IAAc,IAAI;AAAA,MAC5B,gBAAcjK,EAAgBwjC,CAAM;AAAA,MACpC,cAAYxjC,EAAgB4N,CAAS,IAAK3G,EAAW,YAAY,KAAKyE,IAASzE,EAAW,YAAY;AAAA,IAAA;AAAA,IAErGyE,KAAS,CAAC1L,EAAgB4N,CAAS,KAClC,gBAAAzQ,EAAA,cAAC,OAAA,EAAI,WAAW2iE,GAAyB,mBAAiBp0D,EAAA,GACvDA,CACH;AAAA,IAEF,gBAAAvO,EAAA,cAAC,SAAI,WAAU,2BAAA,mCACZ,OAAA,EAAI,WAAU,gCAAA,CAAgC,GAC/C,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,qBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,CAAiB,CAClC,GACA,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,kCAAiC,CAClD;AAAA,EAAA;AAGN,GCpEa4iE,KAAgD,CAAC,EAAE,SAAA3+D,GAAS,MAAAyK,GAAM,SAAAm0D,GAAS,UAAAhiE,wCAEnF,MAAA,EAAG,WAAU,yBACZ,gBAAAb,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GACX6C,EAAgBoB,CAAO,IAGvB,gBAAAjE,EAAA,cAAC,SAAI,WAAU,gBAAA,mCACZI,IAAA,EAAK,MAAMsO,GAAM,KAAKm0D,GAAS,eAAa,CAACA,EAAA,CAAS,CACzD,oCAJC,OAAA,EAAI,WAAU,gBAAe,GAMhC,gBAAA7iE,EAAA,cAAC,SAAI,WAAU,gBAAA,CAAgB,CACjC,GACA,gBAAAA,EAAA,cAAC,SAAI,WAAU,mBAAA,GAAoBa,CAAS,CAC9C,GCDSiiE,KAA8C,CAAC,EAAE,YAAAC,GAAY,GAAGpjE,QAAY;AACvF,QAAMy2D,IAAatxD,GAAA,GACb,CAACk+D,GAAQC,CAAS,IAAI7gE,EAAyD,CAAA,CAAE;AAEvF,SAAAC,EAAU,MAAM;AAGd,UAAM6gE,IAFepiE,EAAS,QAAQnB,EAAM,QAAQ,EAEjB;AAAA,MACjC,CAACwjE,GAAS5hE,MAAU;AAClB,cAAMgN,IAAQhN,EAAM,MAAM,SAAS;AACnC,eAAA4hE,EAAQ50D,CAAK,IAAI40D,EAAQ50D,CAAK,KAAK,CAAA,GACnC40D,EAAQ50D,CAAK,EAAE,KAAKhN,CAAK,GAClB4hE;AAAA,MACT;AAAA,MACA,CAAA;AAAA,IAAC,GAGGC,IAAqB,OAAO,OAAOF,CAAa;AAEtD,IAAAD,EAAUG,CAAkB;AAAA,EAC9B,GAAG,CAACzjE,EAAM,QAAQ,CAAC,GAGjB,gBAAAK,EAAA,cAAC,OAAA,EAAK,GAAGL,GAAO,WAAWvB,EAAW,yBAAyB,EAAA,GAC5D4kE,EAAO,IAAI,CAACK,GAAOC,MAAe;;AACjC,UAAMC,IAAW,kBAAkBD,CAAU,IAAIlN,CAAU,IAErDoN,IAAkBplE,EAAW,kBAAkB,EAAE,aAAa,CAACyE,EAAgBkgE,CAAU,GAAG;AAElG,2CACG,OAAA,EAAI,KAAKQ,GAAU,WAAWC,KAC5B,CAAC3gE,EAAgBkgE,CAAU,OAAKljE,IAAAwjE,EAAM,CAAC,MAAP,gBAAAxjE,EAAU,MAAM,UAC/C,gBAAAG,EAAA,cAAC,SAAI,WAAU,yBAAA,GACb,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,oBAAkBqjE,EAAM,CAAC,EAAE,MAAM,KAAM,CACxD,GAEF,gBAAArjE,EAAA,cAAC,QAAG,WAAU,oBACXqjE,EAAM,IAAI,CAAC9hE,GAAOkiE,MAAe;AAChC,YAAMC,IAAW,kBAAkBJ,CAAU,IAAIG,CAAU,IAAIrN,CAAU;AACzE,6CACGwM,IAAA,EAAsB,KAAKc,GAAU,SAASniE,EAAM,MAAM,SAAS,MAAMA,EAAM,MAAM,MAAM,SAASA,EAAM,MAAM,WAC9GA,EAAM,MAAM,QACf;AAAA,IAEJ,CAAC,CACH,CACF;AAAA,EAEJ,CAAC,CACH;AAEJ,GC1CaoiE,KAAkD,CAAC;AAAA,EAC9D,UAAA9iE;AAAA,EACA,WAAA+iE;AAAA,EACA,eAAAC;AAAA,EACA,aAAA/2D,IAAc;AAAA,EACd,WAAAlM;AAAA,EACA,GAAGjB;AACL,MAAM;AACJ,QAAM,CAAC2F,GAAUw+D,CAAW,IAAI1hE,EAAS,OAAO,aAAa,GAAG,GAC1D2hE,IAAmB,GACnB,CAACf,GAAQC,CAAS,IAAI7gE,EAAkD,CAAA,CAAE,GAC1E,CAAC4hE,GAAaC,CAAc,IAAI7hE,EAAiB,CAAC,GAElD,CAAC+O,GAAY+yD,CAAa,IAAI9hE,EAAiB,CAAC,GAChD,CAACgP,GAAU+yD,CAAW,IAAI/hE,EAAiB2hE,CAAgB;AAEjE,EAAA1hE,EAAU,MAAM;AACd,UAAM+hE,IAAgBtjE,EAAS,QAAQD,CAAQ;AAC/C,IAAAoiE,EAAUmB,CAAa;AACvB,UAAMz9B,IAAcy9B,EAAc,UAAU,CAACrjE,MAAUA,EAAM,MAAM,MAAM;AACzE,IAAAkjE,EAAet9B,MAAgB,KAAKA,IAAc,CAAC;AAAA,EACrD,GAAG,CAAC9lC,CAAQ,CAAC;AAEb,QAAMwjE,IAAmB,CAAC/8D,MAAkB;AAC1C,IAAA28D,EAAe38D,CAAK;AAAA,EACtB,GAEMg9D,IAAyB,CAACh9D,GAAei9D,MACtCj9D,IAAQi9D,IAAqB,cAAc,IAG9CC,IAAwB,MAAM;AAClC,UAAMC,IAAW,KAAK,IAAIT,IAAc,GAAGljE,EAAS,MAAMD,CAAQ,IAAI,CAAC;AACvE,IAAAojE,EAAeQ,CAAQ,GAEnBA,KAAYrzD,MACd8yD,EAAc/yD,IAAa,CAAC,GAC5BgzD,EAAY/yD,IAAW,CAAC;AAAA,EAE5B,GAEMszD,IAA4B,MAAM;AACtC,UAAMD,IAAW,KAAK,IAAIT,IAAc,GAAG,CAAC;AAC5C,IAAAC,EAAeQ,CAAQ,GAEnBA,IAAWtzD,MACb+yD,EAAc/yD,IAAa,CAAC,GAC5BgzD,EAAY/yD,IAAW,CAAC;AAAA,EAE5B,GAEMuzD,IAAuB7jE,EAAS,IAAID,GAAU,CAACE,GAAOuG,MACnDA,MAAU08D,IAAcjjE,EAAM,MAAM,WAAW,IACvD,GAEK6jE,IAAgB5B,EAAO,MAAM7xD,GAAYC,CAAQ;AAEvD,EAAA/O,EAAU,MAAM;AACd,QAAI2hE,IAAc5yD,IAAW,KAAK4yD,IAAc7yD,GAAY;AAC1D,YAAM0zD,IAAgB,KAAK,IAAI,GAAGb,IAAc,KAAK,MAAMD,IAAmB,CAAC,CAAC,GAC1Ee,IAAcD,IAAgBd;AAEpC,MAAIe,IAAc9B,EAAO,UACvBkB,EAAclB,EAAO,SAASe,CAAgB,GAC9CI,EAAYnB,EAAO,MAAM,MAEzBkB,EAAcW,CAAa,GAC3BV,EAAYW,CAAW;AAAA,IAE3B;AAAA,EACF,GAAG,CAACd,GAAahB,GAAQe,GAAkB5yD,GAAYC,CAAQ,CAAC,GAEhEotC,GAAgB,MAAM;AACpB,aAAS76C,IAAa;AACpB,MAAAmgE,EAAY,OAAO,aAAa,GAAG;AAAA,IACrC;AACA,kBAAO,iBAAiB,UAAUngE,CAAU,GAC5CA,EAAA,GACO,MAAM,OAAO,oBAAoB,UAAUA,CAAU;AAAA,EAC9D,GAAG,CAAA,CAAE;AAEL,QAAMohE,IAAwB,MAAM;AAClC,UAAMC,IAA2BhB,MAAgB,GAC3CiB,IAAuBjB,MAAgBljE,EAAS,MAAMD,CAAQ,IAAI;AAExE,WACE,gBAAAb,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GACb,gBAAAA,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACC,YAAW;AAAA,QACX,SAAQ;AAAA,QACR,SAAO;AAAA,QACP,aAAY;AAAA,QACZ,kBAAiB;AAAA,QACjB,WAAU;AAAA,QACV,SAASq5D;AAAA,QACT,UAAUM;AAAA,MAAA;AAAA,MAETnB;AAAA,IAAA,GAEH,gBAAA7jE,EAAA;AAAA,MAACqL;AAAA,MAAA;AAAA,QACC,YAAW;AAAA,QACX,SAAQ;AAAA,QACR,SAAO;AAAA,QACP,cAAa;AAAA,QACb,mBAAkB;AAAA,QAClB,WAAU;AAAA,QACV,SAASm5D;AAAA,QACT,UAAUS;AAAA,MAAA;AAAA,MAETrB;AAAA,IAAA,CAEL;AAAA,EAEJ,GAEMsB,IAAkB9mE;AAAA,IACtB;AAAA,IACA;AAAA,MACE,gBAAgB,CAACyE,EAAgBiK,CAAW;AAAA,IAAA;AAAA,IAE9ClM;AAAA,EAAA;AAGF,SACE,gBAAAZ,EAAA,cAAC,OAAA,MACEsF,IACC,gBAAAtF,EAAA,cAAC8iE,IAAA,EAAkB,GAAGnjE,GAAO,YAAY,GAAA,GACtCkB,CACH,IAEA,gBAAAb,EAAA,cAAC,SAAK,GAAGL,GAAO,WAAWulE,EAAA,GACzB,gBAAAllE,EAAA,cAAC,OAAA,EAAI,WAAU,iBAAA,GACZ4kE,EAAc,IAAI,CAACrjE,GAAO+F,MAAU;AACnC,UAAM69D,IAAsB79D,IAAQ6J,MAAe,GAC7Ci0D,IAAqB99D,IAAQ6J,MAAeC,IAAW,GAEvDi0D,IAAoBl0D,IAAa,GACjCm0D,IAAqBl0D,IAAW4xD,EAAO,QAEvCuC,IAAkBnnE,EAAWkmE,EAAuBh9D,IAAQ6J,GAAY6yD,CAAW,GAAG;AAAA,MAC1F,eAAemB;AAAA,MACf,cAAcC,KAAsB99D,IAAQ6J,MAAe6xD,EAAO,SAAS;AAAA,MAC3E,wBAAwBqC;AAAA,MACxB,yBAAyBC;AAAA,IAAA,CAC1B;AAED,WACE,gBAAAtlE,EAAA;AAAA,MAACyiE;AAAA,MAAA;AAAA,QACC,KAAKlhE,EAAM,MAAM,MAAM+F;AAAA,QACtB,GAAG/F,EAAM;AAAA,QACV,QAAQ+F,IAAQ6J,MAAe6yD;AAAA,QAC/B,SAAS,MAAMK,EAAiB/8D,IAAQ6J,CAAU;AAAA,QAClD,aAAatO,EAAgBiK,CAAW;AAAA,QACxC,WAAWy4D;AAAA,MAAA;AAAA,MAEVhkE,EAAM,MAAM;AAAA,IAAA;AAAA,EAGnB,CAAC,CACH,GACCsB,EAAgBiK,CAAW,KAAKk2D,EAAO,SAASe,KAAoBgB,EAAA,GACrE,gBAAA/kE,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GAAoB2kE,CAAqB,CAC1D,CAEJ;AAEJ,GCzLMa,KAAep4D,GAAiC,CAAA,CAAuB,GAEvEq4D,KAAkB,MACNn4D,GAAWk4D,EAAY,GCwB5BE,KAAwB,CAAC,EAAE,WAAA9kE,GAAW,IAAAuG,GAAI,OAAA+B,GAAO,aAAAC,GAAa,MAAAsF,GAAM,YAAA06B,GAAY,WAAAw8B,QAA4B;AACvH,QAAM,EAAE,aAAAC,EAAA,IAAgBH,GAAA,GAElBI,IAAqB,CAACC,MAAoC;AAC9D,YAAQA,GAAA;AAAA,MACN,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IAAA;AAAA,EAEb,GAEMC,IAAmB,MAAM;AAC7B,IAAAH,EAAY;AAAA,MACV,IAAAz+D;AAAA,MACA,MAAAsH;AAAA,MACA,OAAAvF;AAAA,MACA,aAAAC;AAAA,MACA,YAAAggC;AAAA,MACA,WAAAw8B;AAAA,IAAA,CACa;AAAA,EACjB,GAEMK,IAA2B5nE,EAAW,eAAe,EAAE,CAAC,eAAeqQ,CAAI,EAAE,GAAGA,EAAA,GAAQ7N,CAAS;AAEvG,yCACG,OAAA,EAAI,WAAWolE,GAA0B,MAAK,SAAQ,KAAK7+D,GAAI,cAAYsH,qCACzErO,IAAA,EAAK,WAAU,wBAAuB,MAAMylE,EAAmBp3D,CAAI,GAAG,YAAW,KAAI,eAAW,IAAC,GAElG,gBAAAzO,EAAA,cAAC,SAAI,WAAU,qCAAA,mCACZ,OAAA,EAAI,WAAU,mBAAA,GAAoBkJ,CAAM,GACzC,gBAAAlJ,EAAA,cAAC,OAAA,EAAI,WAAU,uBAAqBmJ,CAAY,CAClD,GAEA,gBAAAnJ,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,YAAW;AAAA,MACX,SAAQ;AAAA,MACR,SAAS06D;AAAA,MACT,cAAY58B;AAAA,MACZ,SAAO;AAAA,MACP,UAAQ;AAAA,MACR,cAAa;AAAA,MACb,mBAAkB;AAAA,IAAA;AAAA,EAAA,CAEtB;AAEJ,GCnFM88B,KAAW,MAAM;AACrB,QAAM,CAACC,GAAQC,CAAS,IAAI/jE,EAAuB,CAAA,CAAE,GAE/CwjE,IAAch8D,GAAY,CAACw8D,MAAsB;;AACrD,IAAAD,EAAU,CAACE,MAAeA,EAAW,OAAO,CAACjP,MAAMA,EAAE,OAAOgP,EAAM,EAAE,CAAC,IACrEvmE,IAAAumE,EAAM,cAAN,QAAAvmE,EAAA,KAAAumE;AAAA,EACF,GAAG,CAAA,CAAE,GAECE,IAAY18D;AAAA,IAChB,CAACw8D,GAAmBG,MAAsB;AACxC,MAAAJ,EAAU,CAACE,MACF,CAAC,GAAGA,GAAYD,CAAK,CAC7B,GAEGG,KAAYA,IAAW,KACzBjjE,GAAa,MAAM;AACjB,QAAAsiE,EAAYQ,CAAK;AAAA,MACnB,GAAGG,CAAQ;AAAA,IAEf;AAAA,IACA,CAACX,CAAW;AAAA,EAAA;AAGd,SAAO,EAAE,QAAAM,GAAQ,WAAAI,GAAW,aAAAV,EAAA;AAC9B,GCfMY,KAAwC,CAAC,EAAE,UAAA3lE,GAAU,UAAAmI,IAAW,qBAAyC;AAC7G,QAAM,EAAE,QAAAk9D,GAAQ,WAAAI,GAAW,aAAAV,EAAA,IAAgBK,GAAA,GACrC,EAAE,OAAA5gE,EAAA,IAAU9B,GAAA,GAEZwoC,IAAe9kC;AAAA,IACnB,OAAO;AAAA,MACL,WAAAq/D;AAAA,MACA,aAAAV;AAAA,IAAA;AAAA,IAEF,CAACU,GAAWV,CAAW;AAAA,EAAA,GAGnBa,IAAYx/D,GAAQ,MAAM;AAI9B,UAAMy/D,IADWrhE,IAAQ,MACa,IAA8B;AAEpE,WAAI2D,EAAS,SAAS,QAAQ,IACrB,CAAC,GAAGk9D,CAAM,EAAE,MAAM,KAAKQ,CAAkB,IAG3C,CAAC,GAAGR,CAAM,EAAE,UAAU,MAAM,GAAGQ,CAAkB;AAAA,EAC1D,GAAG,CAAC19D,GAAUk9D,GAAQ7gE,CAAK,CAAC;AAE5B,yCACGmgE,IAAA,EAAa,OAAOz5B,KAClBlrC,GACD,gBAAAb,EAAA,cAAC,SAAI,WAAW,+BAA+BgJ,CAAQ,IAAI,aAAU,aAAY,eAAY,UAC1Fy9D,EAAU,IAAI,CAACL,sCACNV,IAAA,EAAM,KAAKU,EAAM,IAAK,GAAGA,GAAO,CACzC,CACH,CACF;AAEJ,GC7BMO,KAA8B,CAAC;AAAA,EACnC,OAAAC,IAAQ,CAAA;AAAA,EAER,uBAAAC;AAAA,EACA,cAAAC;AAAA,EAEA,wBAAAC;AAAA,EACA,eAAAC;AAAA,EAEA,UAAAC,IAAW,CAAA;AAAA,EACX,GAAGtnE;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GAEdoiE,IAAoB,CAACC,MAAwB;AACjD,IAAAH,KAAA,QAAAA,EAAgBG;AAAA,EAClB,GAEMC,IAAmB,CAACC,MAAwB;AAChD,IAAAP,KAAA,QAAAA,EAAeO;AAAA,EACjB,GAEMC,IAAsB,CAACC,GAAeC,IAAW,MAAM;AAE3D,UAAMC,IAAeD,IAAW,IAAI,IAAIA,GAClCE,IAAQ,CAAC,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAEhEppE,IAAI,KAAK,MAAM,KAAK,IAAIipE,CAAK,IAAI,KAAK,IAAI,IAAC,CAAC;AAElD,WAAO,GAAG,YAAYA,IAAQ,KAAK,IAAI,MAAGjpE,CAAC,GAAG,QAAQmpE,CAAY,CAAC,CAAC,IAAIC,EAAMppE,CAAC,CAAC;AAAA,EAClF,GAEMqpE,IAA0B,CAACC,GAAYC,MACpC;AAAA,IACL;AAAA,MACE,WAAa;AAAA,MACb,SAAW;AAAA,MACX,UAAY;AAAA,MACZ,YAAc;AAAA,MACd,SAAW;AAAA,MACX,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,SAAW,MAAMX,EAAkBU,CAAI;AAAA,MACvC,cAAc,GAAGb,CAAsB,IAAIa,EAAK,IAAI;AAAA,MACpD,MAAQ;AAAA,IAAA;AAAA,IAEV;AAAA,MACE,WAAa,iBAAkB/kE,EAAgBglE,KAAA,gBAAAA,EAAa,QAAQ,IAAS,UAAL,EAAY;AAAA,MACpF,SAAW;AAAA,MACX,UAAY;AAAA,MACZ,YAAc;AAAA,MACd,SAAW;AAAA,MACX,aAAe;AAAA,MACf,kBAAoB;AAAA,MACpB,SAAW,MAAMT,EAAiBQ,CAAI;AAAA,MACtC,cAAc,GAAGf,CAAqB,IAAIe,EAAK,IAAI;AAAA,MACnD,MAAQ;AAAA,IAAA;AAAA,EACV,GAIEE,IAAqB1pE,EAAW,mBAAmBuB,EAAM,SAAS;AAExE,SACE,gBAAAK,EAAA,cAAC,MAAA,EAAG,WAAW8nE,GAAoB,aAAU,YAC1ClB,EAAM,IAAI,CAACgB,GAAMtgE,MAAU;AAC1B,UAAMygE,IAAY,GAAGljE,CAAW,IAAI+iE,EAAK,IAAI,IAAItgE,CAAK,IAEhDugE,IAAcZ,EAASW,EAAK,IAAI,KAAKX,EAAS3/D,CAAK,GAEnD0gE,IAAUL,EAAwBC,GAAMC,CAAW;AAEzD,2CACG,MAAA,EAAG,WAAU,QAAO,KAAKE,EAAA,mCACvB,OAAA,EAAI,WAAU,eACb,gBAAA/nE,EAAA,cAAC,OAAA,EAAI,WAAU,YAAA,GACb,gBAAAA,EAAA,cAAC,SAAI,WAAU,OAAA,GAAQ4nE,EAAK,IAAK,GACjC,gBAAA5nE,EAAA,cAAC,OAAA,EAAI,WAAU,OAAA,GAAQsnE,EAAoBM,EAAK,IAAI,CAAE,CACxD,GAECI,EAAQ,SAAS,KAChB,gBAAAhoE,EAAA,cAAC,SAAI,WAAU,UAAA,GACZgoE,EAAQ,IAAI,CAACC,GAAgBC,MAAgB;AAC5C,YAAMC,IAAY,GAAGJ,CAAS,WAAWG,CAAW;AACpD,aAAO,gBAAAloE,EAAA,cAACqL,IAAA,EAAO,KAAK88D,GAAY,GAAGF,GAAgB;AAAA,IACrD,CAAC,CACH,CAEJ,GACCJ,KACC,gBAAA7nE,EAAA,cAACkqB,IAAA,EAAS,eAAgBrnB,EAAgBglE,EAAY,QAAQ,IAAa,WAAT,QAAmB,cAAcA,EAAY,KAAA,CAAM,GAEvH,gBAAA7nE,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,CAAe,CAChC;AAAA,EAEJ,CAAC,CACH;AAEJ,GClHMooE,KAAyB,CAACC,GAAkBC,MAA0C;AAC1F,MAAIA,EAAmB,UAAU;AAC/B,WAAO;AAGT,QAAMC,IAAYF,EAAS,YAAY,GAAG,GACpCG,IAAgBH,EAAS,UAAUE,CAAS;AAGlD,SAFkBD,EAAmB,SAASE,CAAa;AAG7D,GAEMC,KAAkB,CAACC,GAAkB9B,MAClCA,EAAM,UAAU,CAAClrB,MAAMA,EAAE,SAASgtB,CAAQ,IAAI,GAGjDC,KAAe,CACnBhtD,GACAitD,GACAC,GACA1B,MACqB;AACrB,QAAMjlB,IAAQ,SAAS,cAAc,OAAO;AAC5C,SAAAA,EAAM,OAAO,QACbA,EAAM,WAAW2mB,GACjB3mB,EAAM,WAAWvmC,GACjBumC,EAAM,SAAS0mB,EAAmB,KAAK,GAAG,GAEtCzB,MACFjlB,EAAM,QAAQ,cAAcilB,IAGvBjlB;AACT,GAEM4mB,KAAgB,CACpBC,GACAC,GACAC,GACAC,GACAZ,GACAa,IAAoB,OACA;AACpB,MAAIC,IAAY;AAChB,QAAMC,IAA4B,CAAA,GAC5BC,IAA8B,CAAA,GAC9BC,IAAoC,CAAA,GAEpCC,IAAmB,CAACL,KAAqBF,IAAWF,EAAU,SAASC,EAAS;AACtF,SAAIQ,MACFJ,IAAY,KAGdJ,EAAS,QAAQ,CAACpB,MAAS;AACzB,IAAKa,GAAgBb,EAAK,MAAMmB,CAAS,MACvCK,IAAY,IACZC,EAAgB,KAAKzB,EAAK,IAAI,IAG5BA,EAAK,OAAOsB,MACdE,IAAY,IACZE,EAAkB,KAAK1B,EAAK,IAAI,IAG7BQ,GAAuBR,EAAK,MAAMU,CAAkB,MACvDc,IAAY,IACZG,EAAwB,KAAK3B,EAAK,IAAI;AAAA,EAE1C,CAAC,GAEM;AAAA,IACL,WAAAwB;AAAA,IACA,kBAAAI;AAAA,IACA,iBAAAH;AAAA,IACA,mBAAAC;AAAA,IACA,yBAAAC;AAAA,EAAA;AAEJ,GAoBaE,KAAgB,CAC3BC,GACAC,GACArB,GACA3sD,GACAhX,GACAilE,MACmB;AACnB,QAAM,CAAChD,GAAOiD,CAAQ,IAAIznE,EAAiB,CAAA,CAAE,GACvC0nE,IAAa5nE,EAA+B,IAAI,GAEhD6nE,IAAoB,MACjBpuD,IAAW+tD,IAAe,GAG7BpzD,IAAkB,CAAC0yD,GAAkBgB,MAAmC;AAC5E,IAAA1mE,GAAa,MAAMqB,EAASqkE,GAAUgB,CAAM,CAAC;AAAA,EAC/C,GAEMC,IAAa,CAACC,MAAyB;AAC3C,UAAMC,IAAmBrB,GAAc,CAAA,GAAIoB,GAAcH,EAAA,GAAqBJ,GAAarB,CAAkB,GAEvGU,IAAW,CAAA;AAEjB,IAAKmB,EAAiB,YAIpBL,EAAW,UAAUK,KAHrBL,EAAW,UAAU,MACrBd,EAAS,KAAK,GAAGkB,CAAY,IAK/BL,EAASb,CAAQ,GACjB1yD,EAAgB0yD,GAAUc,EAAW,OAAO;AAAA,EAC9C,GAEMM,IAAW,CAACC,MAAuB;AACvC,IAAIA,EAAW,UAAU,KAIzBR,EAAS,CAACS,MAAc;AACtB,YAAMH,IAAmBrB,GAAcwB,GAAWD,GAAYN,EAAA,GAAqBJ,GAAarB,CAAkB,GAE5GU,IAAW,CAAC,GAAGsB,CAAS;AAE9B,aAAKH,EAAiB,YAIpBL,EAAW,UAAUK,KAHrBL,EAAW,UAAU,MACrBd,EAAS,KAAK,GAAGqB,CAAU,IAK7B/zD,EAAgB0yD,GAAUc,EAAW,OAAO,GACrCd;AAAA,IACT,CAAC;AAAA,EACH,GAEMuB,IAAa,CAAC3C,MAAe;AACjC,IAAAkC,EAAW,UAAU,MACrBD,EAAS,CAACS,MAAc;AACtB,YAAMtB,IAAWsB,EAAU,OAAO,CAAC5uB,MAAMA,EAAE,SAASksB,EAAK,IAAI;AAC7D,aAAAtxD,EAAgB0yD,GAAUc,EAAW,OAAO,GACrCd;AAAA,IACT,CAAC;AAAA,EACH,GAEMwB,IAAc,CAACC,GAAyBJ,MAAuB;AACnE,QAAI,CAACI,KAAmBJ,EAAW,UAAU;AAC3C;AAGF,UAAMF,IAAmBrB,GAAclC,GAAO,CAACyD,EAAW,CAAC,CAAC,GAAGN,EAAA,GAAqBJ,GAAarB,GAAoB,EAAI,GAEnHU,IAAW,CAAC,GAAGpC,CAAK;AAE1B,QAAKuD,EAAiB;AASpB,MAAAL,EAAW,UAAUK;AAAA,SATU;AAC/B,MAAAL,EAAW,UAAU;AAErB,YAAMY,IAAc1B,EAAS,UAAU,CAACttB,MAAMA,EAAE,SAAS+uB,CAAe;AAExE,MAAIC,KAAe,KACjB1B,EAAS,OAAO0B,GAAa,GAAGL,EAAW,CAAC,CAAC;AAAA,IAEjD;AAIA,IAAAR,EAASb,CAAQ,GACjB1yD,EAAgB0yD,GAAUc,EAAW,OAAO;AAAA,EAC9C,GAEMa,IAA6B,CAACppE,MAAiB;AACnD,UAAMF,IAASE,EAAM,eAEfqpE,IAAgB,MAAM,KAAKvpE,EAAO,SAAS,CAAA,CAAE;AACnD,IAAA+oE,EAASQ,CAAa;AAAA,EACxB,GAEMC,IAAiC,CAACtpE,MAAiB;AACvD,UAAMF,IAASE,EAAM,eACfqpE,IAAgB,MAAM,KAAKvpE,EAAO,SAAS,CAAA,CAAE;AACnD,IAAAmpE,EAAYnpE,EAAO,QAAQ,eAAe,IAAIupE,CAAa;AAAA,EAC7D;AAEA,SAAAvoE,EAAU,MAAM;AACd,IAAIunE,KACFC,EAASD,CAAY;AAAA,EAEzB,GAAG,CAACA,CAAY,CAAC,GAoBV,EAAE,OAAAhD,GAAO,YAlBG,MAAM;AAEvB,IADc+B,GAAahtD,GAAU2sD,GAAoBqC,CAA0B,EAC7E,MAAA;AAAA,EACR,GAe4B,cAbP,CAAC/C,MAAe;AACnC,IAAA2C,EAAW3C,CAAI;AAAA,EACjB,GAW0C,eATpB,CAACA,MAAe;AAEpC,IADce,GAAahtD,GAAU2sD,GAAoBuC,GAAgCjD,EAAK,IAAI,EAC5F,MAAA;AAAA,EACR,GAMyD,cAJpC,CAACoB,MAAqB;AACzC,IAAAoB,EAASpB,CAAQ;AAAA,EACnB,GAEuE,SAASiB,EAAA;AAClF,GCzIMa,KAA0C,CAAC;AAAA,EAC/C,KAAAnqE,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,YAAAw8D;AAAA,EACA,oBAAAC;AAAA,EACA,WAAAv6D;AAAA,EAEA,UAAAua,IAAW;AAAA,EAEX,uBAAA67C;AAAA,EACA,wBAAAE;AAAA,EAEA,wBAAAkE;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,SAAAhC,IAAU,OAAO;AAAA,EACjB,UAAAD,IAAW,OAAO;AAAA,EAElB,4BAAAkC,IAA6B;AAAA,EAC7B,2BAAAC,IAA4B;AAAA,EAC5B,8BAAAC,IAA+B;AAAA,EAC/B,0BAAAC,IAA2B;AAAA,EAE3B,UAAA3vD;AAAA,EACA,UAAA/M;AAAA,EACA,UAAAjK;AAAA,EAEA,OAAOilE;AAAA,EAEP,UAAA7+C;AAAA,EACA,aAAAE;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,cAAAC;AAAA,EAEA,IAAAjjB;AAAA,EACA,GAAGxH;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GACdymE,IAAWpkE,KAAMtC,GACjB2mE,IAAU,yBAAyBD,CAAQ,IAE3ChgD,IAAa3c,IAAW,KAAQoc,GAEhC1f,IAAiBpJ,EAA0B,IAAI,GAC/Ck0C,IAAgBl0C,EAAgC,IAAI,GAEpD,CAACupE,GAAWC,CAAY,IAAItpE,EAAS2oE,CAAU,GAE/C,CAACY,GAAeC,CAAgB,IAAIxpE,EAAS,CAAA,CAAc,GAE3D,CAACypE,GAAcC,CAAe,IAAI1pE,EAAsE,CAAA,CAAE,GAE1G2pE,KAAe,CAAC/B,OAAmC;AACvD,QAAI,CAACA,IAAQ;AACX,MAAA4B,EAAiB,CAAA,CAAE,GACnBE,EAAgB,CAAA,CAAE;AAClB;AAAA,IACF;AAEA,UAAME,KAAyB,CAAA,GAEzBC,KAA+E,CAAA;AAErF,IAAAjC,GAAO,gBAAgB,QAAQ,CAAC3B,OAAa;AAC3C,MAAA4D,GAAgB5D,EAAQ,IAAI;AAAA,QAC1B,MAAMiD;AAAA,QACN,UAAU;AAAA,MAAA;AAAA,IAEd,CAAC,GAEDtB,GAAO,kBAAkB,QAAQ,CAACtuB,OAAM;AACtC,MAAAswB,GAAa,KAAK,GAAGtwB,EAAC,MAAM0vB,CAAyB,EAAE;AAAA,IACzD,CAAC,GAEDpB,GAAO,kBAAkB,QAAQ,CAAC3B,OAAa;AAC7C,MAAA4D,GAAgB5D,EAAQ,IAAI;AAAA,QAC1B,MAAM,GAAGA,EAAQ,MAAM+C,CAAyB;AAAA,QAChD,UAAU;AAAA,MAAA;AAAA,IAEd,CAAC,GAEDpB,GAAO,wBAAwB,QAAQ,CAACtuB,OAAM;AAC5C,MAAAswB,GAAa,KAAK,GAAGtwB,EAAC,MAAM2vB,CAA4B,EAAE;AAAA,IAC5D,CAAC,GAEGrB,GAAO,oBACTgC,GAAa,KAAKb,CAA0B,GAG9CS,EAAiBI,EAAY,GAC7BF,EAAgBG,EAAe;AAAA,EACjC,GAEMC,IAAsB,CAACtF,IAAeoD,OAAmC;AAC7E,QAAI5zB,EAAc,SAAS;AACzB,YAAMvN,KAAO,IAAI,aAAA;AAEjB+9B,MAAAA,GAAM,QAAQ,CAAClrB,OAAM;AACnB,QAAA7S,GAAK,MAAM,IAAI6S,EAAC;AAAA,MAClB,CAAC,GAEDtF,EAAc,QAAQ,QAAQvN,GAAK;AAEnC,YAAMyO,KAAiBl2C,GAAuCg1C,EAAc,SAAS,QAAQ;AAC7F,MAAA9yC,GAAa,MAAMqB,KAAA,gBAAAA,EAAW2yC,GAAgD;AAAA,IAChF;AAEA,IAAAy0B,GAAa/B,EAAM;AAAA,EACrB,GAEM,EAAE,OAAApD,GAAO,YAAAuF,GAAY,cAAAC,GAAc,eAAAC,GAAe,cAAAC,GAAc,SAAAC,OAAY9C;AAAA,IAChFR;AAAA,IACAC;AAAA,IACAgC,IAASA,EAAO,MAAM,GAAG,IAAI,CAAA;AAAA,IAC7B,CAAC,CAACvvD;AAAA,IACFuwD;AAAA,IACAtC;AAAA,EAAA;AAGF,EAAAzmE;AAAA,IACExC;AAAA,IACA,OACG;AAAA,MACC,OAAOy1C,EAAc;AAAA,MACrB,OAAO,MAAM;AACX,QAAIA,EAAc,YAChBA,EAAc,QAAQ,QAAQ,KAEhCm2B,GAAQ,CAAA,CAAE;AAAA,MACZ;AAAA,IAAA;AAAA,EACF;AAGJ,QAAMC,KAAYvlE,GAAQ,MACpB0U,IACK,CAAC/M,KAAYg4D,EAAM,SAASqC,IAG9B,CAACr6D,KAAYg4D,EAAM,WAAW,GACpC,CAACh4D,GAAU+M,GAAUirD,CAAK,CAAC,GAExB6F,KAAoB,CAACC,OAA2B;AACpD,IAAAL,EAAcK,EAAgB;AAAA,EAChC,GAEMC,KAAmB,CAACC,OAAuB;AAC/C,IAAAR,EAAaQ,EAAY;AAAA,EAC3B;AAEA,EAAAvqE,EAAU,MAAM;AACd,UAAMwqE,KAAc,CAACv+C,OAAa;AAChC,UAAKk+C,MAIDlhE,EAAe,WAAWA,EAAe,YAAY,SAAS,eAAe;AAC/E,cAAM,EAAE,eAAAwhE,OAAkBx+C;AAC1B,YAAIw+C,MAAiBA,GAAc,MAAM,SAAS,GAAG;AACnD,gBAAMC,KAAiB,MAAM,KAAKD,GAAc,KAAK,KAAK,CAAA;AAC1D,UAAAR,EAAaS,EAAc;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAEA,kBAAO,iBAAiB,SAASF,EAAW,GAErC,MAAM;AACX,aAAO,oBAAoB,SAASA,EAAW;AAAA,IACjD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAMt+C,KAAsBnwB;AAAA,IAC1B;AAAA,IACA,EAAE,iBAAiB,CAACouE,GAAA;AAAA,IACpB,EAAE,aAAazhD,EAAA;AAAA,IACf,EAAE,aAAa4gD,EAAc,OAAA;AAAA,IAC7BhsE,EAAM;AAAA,EAAA,GAGFqtE,KAA4B5uE,EAAW,gCAAgC,GAEvE0pE,KAAqB1pE,EAAW,uBAAuB,EAAE,QAAQwoE,EAAM,SAAS,GAAG;AAEzF,SAAAvkE,EAAU,MAAM;AACd,IAAIukE,EAAM,SAAS,IACjB8E,EAAa,GAAG9E,EAAM,MAAM,IAAIoE,CAAkB,EAAE,IAEpDU,EAAaX,CAAU;AAAA,EAE3B,GAAG,CAACnE,CAAK,CAAC,GAEVvkE,EAAU,MAAM;;AACd,QAAI,CAACkpB,EAAY;AAEjB,UAAM0hD,MAAOptE,KAAAu2C,EAAc,YAAd,gBAAAv2C,GAAuB;AACpC,QAAI,CAACotE,GAAM;AAEX,UAAMC,KAAe,CAAC5+C,OAAa;;AACjC,MAAIs4C,EAAM,WAAW,MACnBt4C,GAAE,eAAA,IACFzuB,KAAAyL,EAAe,YAAf,QAAAzL,GAAwB;AAAA,IAE5B;AAEA,WAAAotE,GAAK,iBAAiB,UAAUC,EAAY,GACrC,MAAM;AACX,MAAAD,GAAK,oBAAoB,UAAUC,EAAY;AAAA,IACjD;AAAA,EACF,GAAG,CAAC3hD,GAAYq7C,CAAK,CAAC,GAGlBt7D,EAAe,YACjBA,EAAe,QAAQ,eAAe,MAAM;AAC1C,IAAAA,EAAe,QAAS,MAAM,kBAAkB;AAAA,EAClD,IAIA,gBAAAtL,EAAA,cAAC,SAAI,WAAWuuB,GAAA,GACbhgB,KACC,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAU,gCAAA,GACb,gBAAAA,EAAA,cAAC,WAAM,SAASwrE,GAAS,QAAQ3oE,EAAgB4N,CAAS,GAAG,WAAU,wBAAA,GACpElC,CACH,CACF,GAGF,gBAAAvO,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAIwrE;AAAA,MACJ,KAAKp1B;AAAA,MACL,MAAK;AAAA,MACL,UAAU;AAAA,MACV,WAAU;AAAA,MACV,qBACGvzC,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,IAAe,mBAAmBmhD,CAAQ,cAAc;AAAA,MAEzH,gBAAc1oE,EAAgBkoB,CAAQ,KAAK;AAAA,MAC3C,cAAYloB,EAAgB4N,CAAS,IAAIlC,IAAQ;AAAA,IAAA;AAAA,EAAA,GAGnD,gBAAAvO,EAAA,cAAC,OAAA,EAAI,WAAWgtE,GAAA,GACd,gBAAAhtE,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,IAAIkgE;AAAA,MACJ,KAAKjgE;AAAA,MACL,MAAK;AAAA,MACL,WAAS;AAAA,MACT,UAAUzI,EAAgB4N,CAAS;AAAA,MACnC,SAAO;AAAA,MACP,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,SAASk7D,EAAc,SAAS,KAAK9oE,EAAgBkoB,CAAQ,IAAI,WAAW;AAAA,MAC5E,UAAU,CAACyhD;AAAA,MACX,SAAS,MAAM;AAEb,QAAAlhE,EAAe,QAAS,MAAM,kBAAkB,4BAChD6gE,EAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAECV;AAAA,EAAA,GAGH,gBAAAzrE,EAAA,cAAC,OAAA,EAAI,WAAU,yBAAA,GAA0BirE,CAAuB,CAClE,GAECU,EAAc,SAAS,KACtB,gBAAA3rE,EAAA,cAAC,SAAI,WAAU,sBACZ2rE,EAAc,IAAI,CAACv6C,IAAS9pB,OAAU;AACrC,UAAM6lE,KAAW,iBAAiBtoE,CAAW,IAAIyC,EAAK;AACtD,2CAAQ4iB,IAAA,EAAS,KAAKijD,IAAU,eAAe,UAAU,cAAc/7C,IAAS;AAAA,EAClF,CAAC,CACH,IAGAvuB,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,KAC9D,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,mBAAmBqhD,CAAQ;AAAA,MAC/B,eAAgB1oE,EAAgBkoB,CAAQ,IAAoB,WAAhBZ;AAAA,MAC5C,cAAAC;AAAA,IAAA;AAAA,EAAA,GAGJ,gBAAApqB,EAAA,cAAC,OAAA,EAAI,WAAW8nE,GAAA,GACd,gBAAA9nE,EAAA;AAAA,IAAC2mE;AAAA,IAAA;AAAA,MACC,OAAAC;AAAA,MACA,eAAe6F;AAAA,MACf,cAAcE;AAAA,MACd,uBAAA9F;AAAA,MACA,wBAAAE;AAAA,MACA,UAAU8E;AAAA,IAAA;AAAA,EAAA,CAEd,CACF;AAEJ,GC7RMuB,KAAoD,CAAC;AAAA,EACzD,KAAAzsE,IAAM;AAAA,EACN,OAAA4N;AAAA,EACA,kBAAA8+D;AAAA,EACA,YAAAtC;AAAA,EACA,oBAAAC;AAAA,EACA,WAAAv6D;AAAA,EAEA,UAAAua,IAAW;AAAA,EAEX,wBAAAigD;AAAA,EACA,gBAAAqC;AAAA,EAEA,uBAAAzG;AAAA,EACA,wBAAAE;AAAA,EAEA,QAAAmE;AAAA,EACA,SAAAhC,IAAU,OAAO;AAAA,EACjB,UAAAD,IAAW,OAAO;AAAA,EAElB,4BAAAkC,IAA6B;AAAA,EAC7B,2BAAAC,IAA4B;AAAA,EAC5B,8BAAAC,IAA+B;AAAA,EAC/B,0BAAAC,IAA2B;AAAA,EAE3B,UAAA3vD;AAAA,EACA,UAAA/M;AAAA,EACA,UAAAjK;AAAA,EAEA,OAAOilE;AAAA,EAEP,UAAA7+C;AAAA,EACA,aAAAE;AAAA,EACA,eAAAd,IAAgB;AAAA,EAChB,cAAAC;AAAA,EAEA,GAAGzqB;AACL,MAAM;AACJ,QAAMkF,IAAcC,GAAA,GACdgF,IAAa,EAAE,GAAGnK,EAAA;AACxB,EAAAmK,EAAW,KAAKA,EAAW,MAAMjF;AAEjC,QAAM0mB,IAAa3c,IAAW,KAAQoc,GAEhC1f,IAAiBpJ,EAA0B,IAAI,GAC/Ck0C,IAAgBl0C,EAAgC,IAAI;AAC1D,EAAAiB,GAAoBxC,GAAK,MAAMy1C,EAAc,OAA2B;AAExE,QAAMm3B,IAAcrrE,EAA8B,IAAI,GAEhD,CAACupE,GAAWC,CAAY,IAAItpE,EAAS2oE,CAAU,GAC/C,CAACyC,GAAgBC,CAAiB,IAAIrrE,EAAS,EAAK,GAEpD,CAACupE,GAAeC,EAAgB,IAAIxpE,EAAS,CAAA,CAAc,GAC3D,CAACypE,GAAcC,CAAe,IAAI1pE,EAAsE,CAAA,CAAE,GAE1G2pE,IAAe,CAAC/B,OAAmC;AACvD,QAAI,CAACA,IAAQ;AACX,MAAA4B,GAAiB,CAAA,CAAE,GACnBE,EAAgB,CAAA,CAAE;AAClB;AAAA,IACF;AAEA,UAAME,KAAyB,CAAA,GACzBC,KAA+E,CAAA;AAErF,IAAIjC,GAAO,oBACTgC,GAAa,KAAKb,CAA0B,GAG9CnB,GAAO,gBAAgB,QAAQ,CAAC3B,OAAa;AAC3C,MAAA4D,GAAgB5D,EAAQ,IAAI;AAAA,QAC1B,MAAMiD;AAAA,QACN,UAAU;AAAA,MAAA;AAAA,IAEd,CAAC,GAEDtB,GAAO,kBAAkB,QAAQ,CAACtuB,OAAM;AACtC,MAAAswB,GAAa,KAAK,GAAGtwB,EAAC,MAAM0vB,CAAyB,EAAE;AAAA,IACzD,CAAC,GAEDpB,GAAO,kBAAkB,QAAQ,CAAC3B,OAAa;AAC7C,MAAA4D,GAAgB5D,EAAQ,IAAI;AAAA,QAC1B,MAAM,GAAGA,EAAQ,MAAM+C,CAAyB;AAAA,QAChD,UAAU;AAAA,MAAA;AAAA,IAEd,CAAC,GAEDpB,GAAO,wBAAwB,QAAQ,CAACtuB,OAAM;AAC5C,MAAAswB,GAAa,KAAK,GAAGtwB,EAAC,MAAM2vB,CAA4B,EAAE;AAAA,IAC5D,CAAC,GAEDO,GAAiBI,EAAY,GAC7BF,EAAgBG,EAAe;AAAA,EACjC,GAEMC,IAAsB,CAACtF,IAAeoD,OAAmC;AAO7E,QANIpD,GAAM,SAAS,IACjB8E,EAAa,GAAG9E,GAAM,MAAM,IAAIoE,CAAkB,EAAE,IAEpDU,EAAaX,CAAU,GAGrB30B,EAAc,SAAS;AACzB,YAAMvN,KAAO,IAAI,aAAA;AAEjB+9B,MAAAA,GAAM,QAAQ,CAAClrB,OAAM;AACnB,QAAA7S,GAAK,MAAM,IAAI6S,EAAC;AAAA,MAClB,CAAC,GAEDtF,EAAc,QAAQ,QAAQvN,GAAK;AAEnC,YAAMyO,KAAiBl2C,GAAuCg1C,EAAc,SAAS,QAAQ;AAC7F,MAAA9yC,GAAa,MAAMqB,KAAA,gBAAAA,EAAW2yC,GAAgD;AAAA,IAChF;AAEA,IAAAy0B,EAAa/B,EAAM;AAAA,EACrB,GAEM,EAAE,OAAApD,GAAO,YAAAuF,GAAY,cAAAC,IAAc,eAAAC,IAAe,cAAAC,OAAiB7C;AAAA,IACvER;AAAA,IACAC;AAAA,IACAgC,IAASA,EAAO,MAAM,GAAG,IAAI,CAAA;AAAA,IAC7B,CAAC,CAACvvD;AAAA,IACFuwD;AAAA,IACAtC;AAAA,EAAA,GAGI4C,KAAYvlE,GAAQ,MACpB0U,IACK,CAAC/M,KAAYg4D,EAAM,SAASqC,IAG9B,CAACr6D,KAAYg4D,EAAM,WAAW,GACpC,CAACh4D,GAAU+M,GAAUirD,CAAK,CAAC,GAExB6F,KAAoB,CAACC,OAA2B;AACpD,IAAAL,GAAcK,EAAgB;AAAA,EAChC,GAEMC,KAAmB,CAACC,OAAuB;AAC/C,IAAAR,GAAaQ,EAAY;AAAA,EAC3B;AAEA,EAAAvqE,EAAU,MAAM;AACd,UAAMwqE,KAAc,CAACv+C,OAAa;AAChC,UAAKk+C,MAIDlhE,EAAe,WAAWA,EAAe,YAAY,SAAS,eAAe;AAC/E,cAAM,EAAE,eAAAwhE,OAAkBx+C;AAC1B,YAAIw+C,MAAiBA,GAAc,MAAM,SAAS,GAAG;AACnD,gBAAMC,KAAiB,MAAM,KAAKD,GAAc,KAAK,KAAK,CAAA;AAC1D,UAAAR,GAAaS,EAAc;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAEA,kBAAO,iBAAiB,SAASF,EAAW,GAErC,MAAM;AACX,aAAO,oBAAoB,SAASA,EAAW;AAAA,IACjD;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAMa,KAAiB,CAAClnE,OAAmB;AACzC,IAAKgmE,OAILhmE,GAAI,eAAA,GACJA,GAAI,gBAAA,GAEJinE,EAAkB,EAAI,GAElBjnE,GAAI,iBACNA,GAAI,aAAa,aAAa;AAAA,EAElC,GAEMmnE,KAAkB,MAAM;AAC5B,IAAAF,EAAkB,EAAK;AAAA,EACzB,GAEMG,KAAa,CAACpnE,OAAmB;AACrC,QAAKgmE,OAILhmE,GAAI,eAAA,GACJA,GAAI,gBAAA,GAEJinE,EAAkB,EAAK,GAEnBjnE,GAAI,eAAc;AACpB,YAAMqnE,KAAe,MAAM,KAAKrnE,GAAI,aAAa,SAAS,EAAE;AAC5D,MAAA8lE,GAAauB,EAAY;AAAA,IAC3B;AAAA,EACF;AAEA,EAAAxrE,EAAU,MAAM;AACd,UAAMiG,KAAc,CAAC9B,OAAoB;AACvC,MAAI8E,EAAe,WAAWA,EAAe,YAAY9E,GAAI,UAAU,CAAC8E,EAAe,QAAQ,SAAS9E,GAAI,MAAqB,KAC/H2lE,EAAA;AAAA,IAEJ;AAEA,WAAIoB,EAAY,YACdA,EAAY,QAAQ,iBAAiB,SAASjlE,EAAW,GACzDilE,EAAY,QAAQ,iBAAiB,YAAYG,EAAc,GAC/DH,EAAY,QAAQ,iBAAiB,aAAaI,EAAe,GACjEJ,EAAY,QAAQ,iBAAiB,QAAQK,EAAU,IAGlD,MAAM;AACX,MAAIL,EAAY,YACdA,EAAY,QAAQ,oBAAoB,SAASjlE,EAAW,GAC5DilE,EAAY,QAAQ,oBAAoB,YAAYG,EAAc,GAClEH,EAAY,QAAQ,oBAAoB,aAAaI,EAAe,GACpEJ,EAAY,QAAQ,oBAAoB,QAAQK,EAAU;AAAA,IAE9D;AAAA,EACF,GAAG,CAAA,CAAE,GAELvrE,EAAU,MAAM;;AACd,QAAI,CAACkpB,EAAY;AAEjB,UAAM0hD,MAAOptE,KAAAu2C,EAAc,YAAd,gBAAAv2C,GAAuB;AACpC,QAAI,CAACotE,GAAM;AAEX,UAAMC,KAAe,CAAC5+C,OAAa;;AACjC,MAAIs4C,EAAM,WAAW,MACnBt4C,GAAE,eAAA,IACFzuB,KAAAyL,EAAe,YAAf,QAAAzL,GAAwB;AAAA,IAE5B;AAEA,WAAAotE,GAAK,iBAAiB,UAAUC,EAAY,GACrC,MAAM;AACX,MAAAD,GAAK,oBAAoB,UAAUC,EAAY;AAAA,IACjD;AAAA,EACF,GAAG,CAAC3hD,GAAYq7C,CAAK,CAAC;AAEtB,QAAMr4C,KAAsBnwB;AAAA,IAC1B;AAAA,IACA,EAAE,iBAAiB,CAACouE,GAAA;AAAA,IACpB,EAAE,UAAUb,EAAc,SAAS,KAAK9oE,EAAgBkoB,CAAQ,EAAA;AAAA,IAChEprB,EAAM;AAAA,EAAA,GAGFmuE,KAAwB1vE,EAAW,sBAAsB,EAAE,aAAaovE,GAAgB,GACxF1F,KAAqB1pE,EAAW,uBAAuB,EAAE,QAAQwoE,EAAM,SAAS,GAAG;AAEzF,yCACG,OAAA,EAAI,WAAWr4C,MACbhgB,qCACE,OAAA,EAAI,WAAU,8BAAA,GACb,gBAAAvO,EAAA,cAAC,WAAM,QAAQ6C,EAAgB4N,CAAS,GAAG,SAAS3G,EAAW,IAAI,WAAU,yBAC1EyE,CACH,CACF,GAEF,gBAAAvO,EAAA,cAAC,SAAI,WAAU,iEACZ,SAAA,EAAM,KAAKo2C,GAAe,MAAK,QAAO,OAAO,EAAE,SAAS,UAAU,UAAU,GAAA,CAAI,GAEjF,gBAAAp2C,EAAA,cAAC,OAAA,EAAI,KAAKutE,GAAa,WAAWO,MAChC,gBAAA9tE,EAAA,cAACI,IAAA,EAAK,WAAU,iBAAgB,MAAK,uBAAsB,eAAW,IAAC,IAErEitE,KAAoBpC,MACpB,gBAAAjrE,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACZqtE,KAAoB,gBAAArtE,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GAAuBqtE,CAAiB,GAC3EpC,KAA0B,gBAAAjrE,EAAA,cAAC,SAAI,WAAU,4BAA0BirE,CAAuB,CAC7F,GAGDqC,KAAkB,gBAAAttE,EAAA,cAAC,SAAI,WAAU,kBAAA,GAAmBstE,CAAe,GAEpE,gBAAAttE,EAAA;AAAA,IAACqL;AAAA,IAAA;AAAA,MACC,IAAIvB,EAAW;AAAA,MACf,KAAKwB;AAAA,MACL,WAAS;AAAA,MACT,UAAUzI,EAAgB4N,CAAS;AAAA,MACnC,SAAO;AAAA,MACP,cAAa;AAAA,MACb,mBAAkB;AAAA,MAClB,SAAS;AAAA,MACT,UAAU,CAAC+7D;AAAA,MACX,SAASL;AAAA,MACT,qBACGtpE,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,IAC3D,iBAAiBtgB,EAAW,EAAE,cAC9B;AAAA,IAAA;AAAA,IAGL2hE;AAAA,EAAA,CAEL,CACF,IAGE5oE,EAAgBooB,CAAW,KAAKpoB,EAAgBkoB,CAAQ,MAAMX,KAC9D,gBAAApqB,EAAA;AAAA,IAACkqB;AAAAA,IAAA;AAAA,MACC,IAAI,0BAA0BpgB,EAAW,EAAE;AAAA,MAC3C,eAAgBjH,EAAgBkoB,CAAQ,IAAoB,WAAhBZ;AAAA,MAC5C,cAAAC;AAAA,IAAA;AAAA,EAAA,GAGHuhD,EAAc,SAAS,KACtB,gBAAA3rE,EAAA,cAAC,OAAA,EAAI,WAAU,mBAAA,GACZ2rE,EAAc,IAAI,CAACv6C,IAAS9pB,OAAU;AACrC,UAAM6lE,KAAW,iBAAiBtoE,CAAW,IAAIyC,EAAK;AACtD,2CAAQ4iB,IAAA,EAAS,KAAKijD,IAAU,eAAe,UAAU,cAAc/7C,IAAS;AAAA,EAClF,CAAC,CACH,GAEF,gBAAApxB,EAAA,cAAC,OAAA,EAAI,WAAW8nE,MACd,gBAAA9nE,EAAA;AAAA,IAAC2mE;AAAA,IAAA;AAAA,MACC,OAAAC;AAAA,MACA,eAAe6F;AAAA,MACf,cAAcE;AAAA,MACd,uBAAA9F;AAAA,MACA,wBAAAE;AAAA,MACA,UAAU8E;AAAA,IAAA;AAAA,EAAA,CAEd,CACF;AAEJ;AC9ZO,SAASkC,GAAqBC,GAAcntE,GAAqB;AACtE,MAAI,CAACA;AACH,WAAO;AAGT,MAAIotE;AAEJ,SAAI,MAAM,QAAQptE,CAAQ,IACxBotE,IAAgBptE,IAEhBotE,IAAgB,CAACptE,CAAQ,GAGRotE,EAAc,KAAK,CAACltE,MAAUA,EAAM,SAASitE,CAAS,KAEpD;AACvB;AAEO,SAASE,GAAwBF,GAAcntE,GAAqB;AACzE,MAAI,CAACA;AACH,WAAO,CAAA;AAGT,MAAIotE;AAEJ,SAAI,MAAM,QAAQptE,CAAQ,IACxBotE,IAAgBptE,IAEhBotE,IAAgB,CAACptE,CAAQ,GAGpBotE,EAAc,OAAO,CAACltE,MAAUA,EAAM,SAASitE,CAAS;AACjE;AAEO,MAAMG,KAAgB/gE,GAA2C,EAAE,gBAAgB,IAAM,GCrCnFghE,KAA0B,CAAC,EAAE,UAAAvtE,GAAU,SAAAgH,IAAU,SAAS,GAAGlI,QAAY;AACpF,QAAM0uE,IAAuBN,GAAkBO,IAAsBztE,CAAQ,GACvE0tE,IAA4BR,GAAkBS,IAA2B3tE,CAAQ,GACjF4tE,IAAwBV,GAAkBW,IAAuB7tE,CAAQ,GAEzEiyB,IAAe;AAAA,IACnB,OAAS;AAAA,IACT,eAAe;AAAA,IACf,eAAe;AAAA,IACf,eAAe;AAAA,EAAA,GAGX67C,IAAiB9mE,MAAY,WAAWA,MAAY;AAE1D,yCACG,OAAA,EAAI,WAAW,uBAAuBirB,EAAajrB,CAAO,CAAC,IAAK,GAAGlI,KAClE,gBAAAK,EAAA,cAACmuE,IAAA,EAAc,OAAO,EAAE,gBAAAQ,EAAA,KACrBN,GACAE,GACAE,CACH,CACF;AAEJ,GCdaH,KAAsD,CAAC3uE,MAAU;AAC5E,QAAMivE,IAAsBb,GAAkBc,IAAqBlvE,EAAM,QAAQ,GAC3EmvE,IAAqBZ,GAAqBa,IAAmBpvE,EAAM,QAAQ,GAC3EqvE,IAAmBjB,GAAkBkB,IAAkBtvE,EAAM,QAAQ,GACrEuvE,IAA+BnB,GAAkBoB,IAA8BxvE,EAAM,QAAQ,GAC7F,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7CiB,IAAuBrB,GAAkBsB,IAAsB1vE,EAAM,QAAQ,GAE7E2vE,IAAUV,MAAuBE,KAAA,gBAAAA,EAAoB,WAAUE,KAAoBE,GAEnFK,IAAwB,CAAC,EAACT,KAAA,QAAAA,EAAoB,SAE9CU,IAAqBpxE,EAAW,4CAA4C;AAAA,IAChF,kCAAkC,CAACgxE;AAAA,IACnC,gCAAgCT,KAAkBS;AAAA,IAClD,gCAAgC,CAACT,KAAkBS;AAAA,EAAA,CACpD,GAEKK,IAAsBrxE,EAAW,6CAA6C;AAAA,IAClF,2BAA2BmxE,KAAyBL;AAAA,EAAA,CACrD;AAED,SACE,gBAAAlvE,EAAA,cAAC,OAAA,EAAI,WAAU,uCAAuC,GAAGL,EAAA,GACtD2vE,KACC,gBAAAtvE,EAAA,cAAC,OAAA,EAAI,WAAWwvE,EAAA,GACd,gBAAAxvE,EAAA,cAAC,MAAA,EAAG,WAAWyvE,KACZb,GAAoB,KAAEE,CACzB,GACCE,KAAoB,gBAAAhvE,EAAA,cAAC,OAAA,EAAI,WAAU,oDAAkDgvE,CAAiB,GAEtGE,KAAgC,gBAAAlvE,EAAA,cAAAA,EAAA,UAAA,MAAGkvE,CAA6B,CACnE,GAGDE,KAAwB,gBAAApvE,EAAA,cAAAA,EAAA,UAAA,MAAGovE,CAAqB,CACnD;AAEJ,GChDaC,KAAsD,CAAC1vE,MAAU;AAC5E,QAAM,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7CqB,IAAqBpxE,EAAW,gCAAgC;AAAA,IACpE,kBAAkBuwE;AAAA,IAClB,kBAAkB,CAACA;AAAA,EAAA,CACpB;AAED,yCACG,OAAA,EAAI,WAAWa,GAAqB,GAAG7vE,EAAA,GACrCA,EAAM,QACT;AAEJ,GChBakvE,KAAoD,CAAClvE,MAChE,gBAAAK,EAAA,cAAC,MAAA,EAAG,WAAU,uCAAuC,GAAGL,EAAA,GACrDA,EAAM,QACT,GCHWwvE,KAAsE,CAACxvE,MAClF,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAU,gDAAgD,GAAGL,EAAA,GAC/DA,EAAM,QACT,GCKW6uE,KAAgE,CAAC7uE,MAAU;AACtF,QAAM+vE,IAAa3B,GAAkBkB,IAAkBtvE,EAAM,QAAQ,GAC/DgwE,IAAezB,GAAqBa,IAAmBpvE,EAAM,QAAQ,GACrE,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7CyB,IAAwBxxE,EAAW,0DAA0D;AAAA,IACjG,kBAAkB,CAAC,CAACsxE;AAAA,EAAA,CACrB,GAEKnhD,IAAsBnwB,EAAW,4CAA4C;AAAA,IACjF,kBAAkBuwE;AAAA,IAClB,kBAAkB,CAACA;AAAA,EAAA,CACpB;AAED,SACE,gBAAA3uE,EAAA,cAAC,OAAA,EAAI,WAAWuuB,GAAsB,GAAG5uB,EAAA,GACtC+vE,KAAc,gBAAA1vE,EAAA,cAAAA,EAAA,UAAA,MAAG0vE,CAAW,IAE5BC,KAAA,gBAAAA,EAAc,UAAS,qCACrB,OAAA,EAAI,WAAU,gDAA+C,cAAYhwE,EAAM,0BAAA,GAC9E,gBAAAK,EAAA,cAAC,MAAA,EAAG,WAAW4vE,EAAA,GAAwBD,CAAa,CACtD,CAEJ;AAEJ,GC1BajB,KAAwD,CAAC/uE,MAAU;AAC9E,QAAMkwE,IAAqB9B,GAAkB+B,IAAyBnwE,EAAM,QAAQ,GAC9EowE,IAAsBhC,GAAkBiC,IAA0BrwE,EAAM,QAAQ,GAChFswE,IAAkB,CAAC,CAACJ,KAAsB,CAAC,CAACE,GAC5C,EAAE,gBAAApB,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7C5/C,IAAsBnwB,EAAW,wCAAwC;AAAA,IAC7E,kBAAkBuwE;AAAA,IAClB,kBAAkB,CAACA;AAAA,EAAA,CACpB,GAEKuB,IAAoB9xE,EAAW,gDAAgD;AAAA,IACnF,kBAAkBuwE;AAAA,IAClB,kBAAkB,CAACA;AAAA,EAAA,CACpB;AAED,SACE,gBAAA3uE,EAAA,cAAC,OAAA,EAAI,WAAWuuB,GAAsB,GAAG5uB,KACtCkwE,GAEAI,KAAmB,gBAAAjwE,EAAA,cAAC,OAAA,EAAI,WAAWkwE,EAAA,CAAmB,GAEtDH,CACH;AAEJ,GCxBaD,KAA4D,CAACnwE,MAAU;AAClF,QAAMwwE,IAAmBpC,GAAkBqC,IAA8BzwE,EAAM,QAAQ,GACjF0iB,IAAQ6rD,GAAqBmC,IAAY1wE,EAAM,QAAQ,GACvD,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7C5/C,IAAsBnwB,EAAW,2CAA2C;AAAA,IAChF,kBAAkBuwE;AAAA,IAClB,kBAAkB,CAACA;AAAA,EAAA,CACpB;AAED,yCACG,OAAA,EAAI,WAAWpgD,GAAsB,GAAG5uB,EAAA,GACtCwwE,GAED,gBAAAnwE,EAAA,cAAC,OAAA,EAAI,cAAYL,EAAM,+BACrB,gBAAAK,EAAA,cAAC,MAAA,EAAG,WAAU,qBAAmBqiB,CAAM,CACzC,CACF;AAEJ,GCnBa2tD,KAA8D,CAACrwE,MAAU;AACpF,QAAM0iB,IAAQ6rD,GAAqBmC,IAAY1wE,EAAM,QAAQ,GACvD4yB,IAAYw7C,GAAkBuC,IAAmC3wE,EAAM,QAAQ,GAC/E,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7C5/C,IAAsBnwB,EAAW,4CAA4C;AAAA,IACjF,kBAAkBuwE;AAAA,IAClB,kBAAkB,CAACA;AAAA,EAAA,CACpB;AAED,SACE,gBAAA3uE,EAAA,cAAC,OAAA,EAAI,WAAWuuB,GAAsB,GAAG5uB,KACtC0iB,EAAM,SAAS,KACd,gBAAAriB,EAAA,cAAC,OAAA,EAAI,cAAYL,EAAM,6BAAA,GACrB,gBAAAK,EAAA,cAAC,MAAA,EAAG,WAAU,kBAAA,GAAmBqiB,CAAM,CACzC,GAGDkQ,KAAa,gBAAAvyB,EAAA,cAAAA,EAAA,UAAA,MAAGuyB,CAAU,CAC7B;AAEJ,GC1Ba+9C,KAAgF,CAAC3wE,MAAU;AACtG,QAAM,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7CoC,IAAqBnyE,EAAW,sDAAsD;AAAA,IAC1F,mCAAmCuwE;AAAA,IACnC,mCAAmC,CAACA;AAAA,EAAA,CACrC;AAED,yCACG,QAAA,EAAK,WAAW4B,GAAqB,GAAG5wE,EAAA,GACtCA,EAAM,QACT;AAEJ,GCbaywE,KAAsE,CAACzwE,MAAU;AAC5F,QAAM,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7CqC,IAAiBpyE,EAAW,iDAAiD;AAAA,IACjF,mCAAmCuwE;AAAA,IACnC,mCAAmC,CAACA;AAAA,EAAA,CACrC;AAED,yCACG,QAAA,EAAK,WAAW6B,GAAiB,GAAG7wE,EAAA,GAClCA,EAAM,QACT;AAEJ,GCbasvE,KAA8C,CAACtvE,MAAU;AACpE,QAAM,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa,GAE7CoC,IAAqBnyE,EAAW,2BAA2B;AAAA,IAC/D,mCAAmCuwE;AAAA,IACnC,mCAAmC,CAACA;AAAA,EAAA,CACrC;AAED,yCACG,QAAA,EAAK,WAAW4B,GAAqB,GAAG5wE,EAAA,GACtCA,EAAM,QACT;AAEJ,GChBaovE,KAAgD,CAACpvE,MAC5D,gBAAAK,EAAA,cAAC,MAAA,EAAG,WAAU,6BAA6B,GAAGL,EAAA,GAC3CA,EAAM,QACT,GCFW0wE,KAAkC,CAAC1wE,MAAU;AACxD,QAAM,EAAE,gBAAAgvE,EAAA,IAAmBrhE,GAAW6gE,EAAa;AAEnD,SACE,gBAAAnuE,EAAA,cAAC,MAAA,EAAG,WAAU,oBAAA,GACZ,gBAAAA,EAAA,cAAC2H,IAAA,EAAO,UAAU,CAACgnE,GAAiB,GAAGhvE,EAAA,CAAO,CAChD;AAEJ;","x_google_ignoreList":[1]}