@rossigee/clarity-angular 18.2.1-fixed → 18.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/clr-angular-accordion.mjs +355 -0
- package/fesm2022/clr-angular-accordion.mjs.map +1 -0
- package/fesm2022/clr-angular-button.mjs +713 -0
- package/fesm2022/clr-angular-button.mjs.map +1 -0
- package/fesm2022/clr-angular-collapsible-panel.mjs +201 -0
- package/fesm2022/clr-angular-collapsible-panel.mjs.map +1 -0
- package/fesm2022/clr-angular-data-datagrid.mjs +7635 -0
- package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -0
- package/fesm2022/clr-angular-data-stack-view.mjs +442 -0
- package/fesm2022/clr-angular-data-stack-view.mjs.map +1 -0
- package/fesm2022/clr-angular-data-tree-view.mjs +1106 -0
- package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -0
- package/fesm2022/clr-angular-data.mjs +40 -0
- package/fesm2022/clr-angular-data.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-alert.mjs +624 -0
- package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-badge.mjs +69 -0
- package/fesm2022/clr-angular-emphasis-badge.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-common.mjs +25 -0
- package/fesm2022/clr-angular-emphasis-common.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-label.mjs +105 -0
- package/fesm2022/clr-angular-emphasis-label.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis.mjs +41 -0
- package/fesm2022/clr-angular-emphasis.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-checkbox.mjs +270 -0
- package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-combobox.mjs +1775 -0
- package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-common.mjs +1251 -0
- package/fesm2022/clr-angular-forms-common.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-datalist.mjs +263 -0
- package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-datepicker.mjs +3274 -0
- package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-file-input.mjs +826 -0
- package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-input.mjs +153 -0
- package/fesm2022/clr-angular-forms-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-number-input.mjs +236 -0
- package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-password.mjs +233 -0
- package/fesm2022/clr-angular-forms-password.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-radio.mjs +231 -0
- package/fesm2022/clr-angular-forms-radio.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-range.mjs +186 -0
- package/fesm2022/clr-angular-forms-range.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-select.mjs +153 -0
- package/fesm2022/clr-angular-forms-select.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-textarea.mjs +136 -0
- package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -0
- package/fesm2022/clr-angular-forms.mjs +100 -0
- package/fesm2022/clr-angular-forms.mjs.map +1 -0
- package/fesm2022/clr-angular-icon.mjs +7397 -0
- package/fesm2022/clr-angular-icon.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-breadcrumbs.mjs +120 -0
- package/fesm2022/clr-angular-layout-breadcrumbs.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-main-container.mjs +100 -0
- package/fesm2022/clr-angular-layout-main-container.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-nav.mjs +582 -0
- package/fesm2022/clr-angular-layout-nav.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-tabs.mjs +807 -0
- package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-vertical-nav.mjs +507 -0
- package/fesm2022/clr-angular-layout-vertical-nav.mjs.map +1 -0
- package/fesm2022/clr-angular-layout.mjs +44 -0
- package/fesm2022/clr-angular-layout.mjs.map +1 -0
- package/fesm2022/clr-angular-modal.mjs +617 -0
- package/fesm2022/clr-angular-modal.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-common.mjs +1082 -0
- package/fesm2022/clr-angular-popover-common.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-dropdown.mjs +492 -0
- package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-signpost.mjs +494 -0
- package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-tooltip.mjs +293 -0
- package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -0
- package/fesm2022/clr-angular-popover.mjs +41 -0
- package/fesm2022/clr-angular-popover.mjs.map +1 -0
- package/fesm2022/clr-angular-progress-progress-bars.mjs +217 -0
- package/fesm2022/clr-angular-progress-progress-bars.mjs.map +1 -0
- package/fesm2022/clr-angular-progress-spinner.mjs +132 -0
- package/fesm2022/clr-angular-progress-spinner.mjs.map +1 -0
- package/fesm2022/clr-angular-stepper.mjs +694 -0
- package/fesm2022/clr-angular-stepper.mjs.map +1 -0
- package/fesm2022/clr-angular-timeline.mjs +316 -0
- package/fesm2022/clr-angular-timeline.mjs.map +1 -0
- package/fesm2022/clr-angular-utils-conditional.mjs +351 -0
- package/fesm2022/clr-angular-utils-conditional.mjs.map +1 -0
- package/fesm2022/clr-angular-utils-loading.mjs +107 -0
- package/fesm2022/clr-angular-utils-loading.mjs.map +1 -0
- package/fesm2022/clr-angular-utils.mjs +2079 -0
- package/fesm2022/clr-angular-utils.mjs.map +1 -0
- package/fesm2022/clr-angular-wizard.mjs +3074 -0
- package/fesm2022/clr-angular-wizard.mjs.map +1 -0
- package/fesm2022/{rossigee-clarity-angular.mjs → clr-angular.mjs} +2 -2
- package/fesm2022/clr-angular.mjs.map +1 -0
- package/package.json +105 -103
- package/schematics/ng-update/index.d.ts +2 -0
- package/schematics/ng-update/index.js +69 -0
- package/schematics/ng-update/index.js.map +1 -0
- package/schematics/ng-update/migrations/css-migration.d.ts +6 -0
- package/schematics/ng-update/migrations/css-migration.js +177 -0
- package/schematics/ng-update/migrations/css-migration.js.map +1 -0
- package/schematics/ng-update/migrations/import-migration.d.ts +4 -0
- package/schematics/ng-update/migrations/import-migration.js +187 -0
- package/schematics/ng-update/migrations/import-migration.js.map +1 -0
- package/schematics/ng-update/migrations/template-migration.d.ts +6 -0
- package/schematics/ng-update/migrations/template-migration.js +261 -0
- package/schematics/ng-update/migrations/template-migration.js.map +1 -0
- package/schematics/ng-update/replacements/css-replacements.d.ts +17 -0
- package/schematics/ng-update/replacements/css-replacements.js +74 -0
- package/schematics/ng-update/replacements/css-replacements.js.map +1 -0
- package/schematics/ng-update/replacements/import-replacements.d.ts +13 -0
- package/schematics/ng-update/replacements/import-replacements.js +108 -0
- package/schematics/ng-update/replacements/import-replacements.js.map +1 -0
- package/schematics/ng-update/replacements/symbol-replacements.d.ts +12 -0
- package/schematics/ng-update/replacements/symbol-replacements.js +67 -0
- package/schematics/ng-update/replacements/symbol-replacements.js.map +1 -0
- package/schematics/ng-update/replacements/template-replacements.d.ts +19 -0
- package/schematics/ng-update/replacements/template-replacements.js +57 -0
- package/schematics/ng-update/replacements/template-replacements.js.map +1 -0
- package/schematics/ng-update/tests/test-helpers.d.ts +6 -0
- package/schematics/ng-update/tests/test-helpers.js +34 -0
- package/schematics/ng-update/tests/test-helpers.js.map +1 -0
- package/schematics/ng-update/utils/file-visitor.d.ts +8 -0
- package/schematics/ng-update/utils/file-visitor.js +44 -0
- package/schematics/ng-update/utils/file-visitor.js.map +1 -0
- package/schematics/ng-update/utils/regexp-utils.d.ts +16 -0
- package/schematics/ng-update/utils/regexp-utils.js +34 -0
- package/schematics/ng-update/utils/regexp-utils.js.map +1 -0
- package/schematics/vitest.config.d.ts +2 -0
- package/schematics/vitest.config.js +17 -0
- package/schematics/vitest.config.js.map +1 -0
- package/types/clr-angular-accordion.d.ts +100 -0
- package/types/clr-angular-button.d.ts +169 -0
- package/types/clr-angular-collapsible-panel.d.ts +73 -0
- package/types/clr-angular-data-datagrid.d.ts +1843 -0
- package/types/clr-angular-data-stack-view.d.ts +87 -0
- package/types/clr-angular-data-tree-view.d.ts +229 -0
- package/types/clr-angular-data.d.ts +15 -0
- package/types/clr-angular-emphasis-alert.d.ts +175 -0
- package/types/clr-angular-emphasis-badge.d.ts +25 -0
- package/types/clr-angular-emphasis-common.d.ts +6 -0
- package/types/clr-angular-emphasis-label.d.ts +29 -0
- package/types/clr-angular-emphasis.d.ts +15 -0
- package/types/clr-angular-forms-checkbox.d.ts +69 -0
- package/types/clr-angular-forms-combobox.d.ts +353 -0
- package/types/clr-angular-forms-common.d.ts +339 -0
- package/types/clr-angular-forms-datalist.d.ts +59 -0
- package/types/clr-angular-forms-datepicker.d.ts +986 -0
- package/types/clr-angular-forms-file-input.d.ts +193 -0
- package/types/clr-angular-forms-input.d.ts +29 -0
- package/types/clr-angular-forms-number-input.d.ts +43 -0
- package/types/clr-angular-forms-password.d.ts +52 -0
- package/types/clr-angular-forms-radio.d.ts +50 -0
- package/types/clr-angular-forms-range.d.ts +37 -0
- package/types/clr-angular-forms-select.d.ts +36 -0
- package/types/clr-angular-forms-textarea.d.ts +29 -0
- package/types/clr-angular-forms.d.ts +36 -0
- package/types/clr-angular-icon.d.ts +1498 -0
- package/types/clr-angular-layout-breadcrumbs.d.ts +45 -0
- package/types/clr-angular-layout-main-container.d.ts +28 -0
- package/types/clr-angular-layout-nav.d.ts +142 -0
- package/types/clr-angular-layout-tabs.d.ts +158 -0
- package/types/clr-angular-layout-vertical-nav.d.ts +128 -0
- package/types/clr-angular-layout.d.ts +19 -0
- package/types/clr-angular-modal.d.ts +160 -0
- package/types/clr-angular-popover-common.d.ts +254 -0
- package/types/clr-angular-popover-dropdown.d.ts +123 -0
- package/types/clr-angular-popover-signpost.d.ts +157 -0
- package/types/clr-angular-popover-tooltip.d.ts +83 -0
- package/types/clr-angular-popover.d.ts +16 -0
- package/types/clr-angular-progress-progress-bars.d.ts +57 -0
- package/types/clr-angular-progress-spinner.d.ts +44 -0
- package/types/clr-angular-stepper.d.ts +179 -0
- package/types/clr-angular-timeline.d.ts +86 -0
- package/types/clr-angular-utils-conditional.d.ts +132 -0
- package/types/clr-angular-utils-loading.d.ts +38 -0
- package/types/clr-angular-utils.d.ts +913 -0
- package/types/clr-angular-wizard.d.ts +1508 -0
- package/fesm2022/rossigee-clarity-angular.mjs.map +0 -1
- /package/types/{rossigee-clarity-angular.d.ts → clr-angular.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clr-angular-forms-datepicker.mjs","sources":["../../../projects/angular/forms/datepicker/providers/date-form-control.service.ts","../../../projects/angular/forms/datepicker/model/day.model.ts","../../../projects/angular/forms/datepicker/utils/constants.ts","../../../projects/angular/forms/datepicker/utils/date-utils.ts","../../../projects/angular/forms/datepicker/enums/weekday.enum.ts","../../../projects/angular/forms/datepicker/providers/locale-helper.service.ts","../../../projects/angular/forms/datepicker/providers/date-io.service.ts","../../../projects/angular/forms/datepicker/model/calendar.model.ts","../../../projects/angular/forms/datepicker/providers/date-navigation.service.ts","../../../projects/angular/forms/datepicker/providers/datepicker-enabled.service.ts","../../../projects/angular/forms/datepicker/providers/view-manager.service.ts","../../../projects/angular/forms/datepicker/providers/datepicker-focus.service.ts","../../../projects/angular/forms/datepicker/monthpicker.ts","../../../projects/angular/forms/datepicker/model/year-range.model.ts","../../../projects/angular/forms/datepicker/yearpicker.ts","../../../projects/angular/forms/datepicker/model/day-view.model.ts","../../../projects/angular/forms/datepicker/model/calendar-view.model.ts","../../../projects/angular/forms/datepicker/day.ts","../../../projects/angular/forms/datepicker/calendar.ts","../../../projects/angular/forms/datepicker/calendar.html","../../../projects/angular/forms/datepicker/daypicker.ts","../../../projects/angular/forms/datepicker/daypicker.html","../../../projects/angular/forms/datepicker/datepicker-action-buttons.ts","../../../projects/angular/forms/datepicker/datepicker-view-manager.ts","../../../projects/angular/forms/datepicker/datepicker-view-manager.html","../../../projects/angular/forms/datepicker/date-container.ts","../../../projects/angular/forms/datepicker/date-input.ts","../../../projects/angular/forms/datepicker/date-single-input.ts","../../../projects/angular/forms/datepicker/date-start-input.ts","../../../projects/angular/forms/datepicker/date-end-input.ts","../../../projects/angular/forms/datepicker/date-input.validator.ts","../../../projects/angular/forms/datepicker/interfaces/day-of-week.interface.ts","../../../projects/angular/forms/datepicker/datepicker.module.ts","../../../projects/angular/forms/datepicker/index.ts","../../../projects/angular/forms/datepicker/clr-angular-forms-datepicker.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class DateFormControlService {\n disabled: boolean;\n\n private _touchedChange = new Subject<void>();\n private _dirtyChange = new Subject<void>();\n\n get touchedChange(): Observable<void> {\n return this._touchedChange.asObservable();\n }\n\n get dirtyChange(): Observable<void> {\n return this._dirtyChange.asObservable();\n }\n\n markAsTouched(): void {\n this._touchedChange.next();\n }\n\n markAsDirty(): void {\n this._dirtyChange.next();\n }\n\n // friendly wrapper\n setDisabled(state: boolean) {\n this.disabled = state;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport class DayModel {\n constructor(\n readonly year: number,\n readonly month: number,\n readonly date: number\n ) {}\n\n /**\n * Checks if the passed CalendarDate is equal to itself.\n */\n isEqual(day: DayModel) {\n if (day) {\n return this.year === day.year && this.month === day.month && this.date === day.date;\n }\n return false;\n }\n\n toDate(): Date {\n return new Date(this.year, this.month, this.date);\n }\n\n /**\n * Returns a new DayModel which is incremented based on the value passed.\n */\n incrementBy(value: number): DayModel {\n // Creating new Javascript Date object to increment because\n // it will automatically take care of switching to next or previous\n // months & years without we having to worry about it.\n const date: Date = new Date(this.year, this.month, this.date + value);\n return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Clones the current day model.\n */\n clone(): DayModel {\n return new DayModel(this.year, this.month, this.date);\n }\n\n toComparisonString(): string {\n return `${this.year}${this.pad(this.month)}${this.pad(this.date)}`;\n }\n\n toDateString(): string {\n return this.toDate().toLocaleDateString(undefined, {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n });\n }\n\n /**\n * Compares the dates and returns boolean value based on the value passed\n */\n isBefore(day: DayModel, dayInclusive = false) {\n return dayInclusive\n ? this.toDate().getTime() <= day?.toDate().getTime()\n : this.toDate().getTime() < day?.toDate().getTime();\n }\n\n /**\n * Compares the dates and returns boolean value based on the value passed\n */\n isAfter(day: DayModel, dayInclusive = false) {\n return dayInclusive\n ? this.toDate().getTime() >= day?.toDate().getTime()\n : this.toDate().getTime() > day?.toDate().getTime();\n }\n\n private pad(num: number): string {\n return num < 10 ? `0${num}` : `${num}`;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * This is the en-001 short locale date format. Setting as default.\n */\nexport const DEFAULT_LOCALE_FORMAT = 'dd/MM/y';\n\n// https://en.wikipedia.org/wiki/Date_format_by_country\nexport const LITTLE_ENDIAN_REGEX = /d+.+m+.+y+/i;\nexport const MIDDLE_ENDIAN_REGEX = /m+.+d+.+y+/i;\n// No need for BIG_ENDIAN_REGEX because anything that doesn't satisfy the above 2\n// is automatically BIG_ENDIAN\n\nexport const DELIMITER_REGEX = /d+|m+|y+/i;\n\nexport const USER_INPUT_REGEX = /\\d+/g;\n\nexport const MOBILE_USERAGENT_REGEX = /Mobi/i;\n\nexport const RTL_REGEX = /\\u200f/g;\n\nexport const YEAR = 'YYYY';\nexport const MONTH = 'MM';\nexport const DATE = 'DD';\n\nexport type FormatType = 'LITTLE_ENDIAN' | 'MIDDLE_ENDIAN' | 'BIG_ENDIAN';\n\nexport type InputDateDisplayFormat = {\n readonly name: FormatType;\n readonly format: [string, string, string];\n};\n\nexport const LITTLE_ENDIAN: InputDateDisplayFormat = {\n name: 'LITTLE_ENDIAN',\n format: [DATE, MONTH, YEAR],\n};\n\nexport const MIDDLE_ENDIAN: InputDateDisplayFormat = {\n name: 'MIDDLE_ENDIAN',\n format: [MONTH, DATE, YEAR],\n};\n\nexport const BIG_ENDIAN: InputDateDisplayFormat = {\n name: 'BIG_ENDIAN',\n format: [YEAR, MONTH, DATE],\n};\n\nexport const NO_OF_DAYS_IN_A_WEEK = 7;\nexport const NO_OF_ROWS_IN_CALENDAR_VIEW = 6;\nexport const TOTAL_DAYS_IN_DAYS_VIEW: number = NO_OF_DAYS_IN_A_WEEK * NO_OF_ROWS_IN_CALENDAR_VIEW;\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { WeekDay } from '@angular/common';\n\n/**\n * Returns the number of days in a month.\n */\nexport function getNumberOfDaysInTheMonth(year: number, month: number): number {\n // If we go to the next month, but use a day of 0, it returns the last day from the previous month\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Returns the day for the corresponding date where 0 represents Sunday.\n */\nexport function getDay(year: number, month: number, date: number): WeekDay {\n return new Date(year, month, date).getDay();\n}\n\n/**\n * Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.\n * Window of 80 years before and 20 years after the present year.\n * Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js\n */\nexport function parseToFourDigitYear(year: number): number {\n if (year > 9999 || (year > 100 && year < 999) || year < 10) {\n return -1;\n }\n if (year > 999) {\n return year;\n }\n const currYear: number = new Date().getFullYear();\n const century: number = Math.floor(currYear / 100) * 100;\n let result: number = year + century;\n if (result > currYear + 20) {\n result = result - 100;\n }\n return result;\n}\n\nexport function datesAreEqual(date1: Date, date2: Date) {\n if (date1 instanceof Date && date2 instanceof Date) {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n } else {\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * Index of the day of the week, matching JavaScript's Date.getDay() convention.\n * Used to override the locale-derived first day of the week in the date picker.\n */\nexport enum ClrWeekday {\n Sunday = 0,\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n FormatWidth,\n FormStyle,\n getLocaleDateFormat,\n getLocaleDayNames,\n getLocaleFirstDayOfWeek,\n getLocaleMonthNames,\n TranslationWidth,\n} from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\n\nimport { ClrWeekday } from '../enums/weekday.enum';\nimport { ClrDayOfWeek } from '../interfaces/day-of-week.interface';\n\n/**\n * This service extracts the Angular CLDR data needed by the datepicker.\n */\n@Injectable()\nexport class LocaleHelperService {\n private _firstDayOfWeek: number = ClrWeekday.Sunday;\n private _localeDays: ReadonlyArray<ClrDayOfWeek>;\n private _localeMonthsAbbreviated: ReadonlyArray<string>;\n private _localeMonthsWide: ReadonlyArray<string>;\n private _localeDateFormat: string;\n\n constructor(@Inject(LOCALE_ID) public locale: string) {\n this.initializeLocaleData();\n }\n\n get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n get localeDays(): ReadonlyArray<ClrDayOfWeek> {\n return this._localeDays;\n }\n\n // leave for backward compatibility\n get localeDaysNarrow(): ReadonlyArray<string> {\n return this._localeDays.map(day => day.narrow);\n }\n\n get localeMonthsAbbreviated(): ReadonlyArray<string> {\n return this._localeMonthsAbbreviated;\n }\n\n get localeMonthsWide(): ReadonlyArray<string> {\n return this._localeMonthsWide;\n }\n\n get localeDateFormat(): string {\n return this._localeDateFormat;\n }\n\n /**\n * Overrides the first day of the week regardless of locale.\n * Accepts a `ClrWeekday` value (Sunday=0 through Saturday=6), or null to revert to locale default.\n * Incorrect values will revert to default value (Sunday).\n */\n updateFirstDayOfWeek(day: ClrWeekday | null): void {\n if (day === null || day < ClrWeekday.Sunday || day > ClrWeekday.Saturday) {\n this.initializeLocaleFirstDayOfWeek();\n this.initializeLocaleDays();\n\n return;\n }\n\n this._firstDayOfWeek = day;\n\n this.initializeLocaleDays();\n }\n\n /**\n * Initializes the locale data.\n */\n private initializeLocaleData(): void {\n // Order in which these functions is called is very important.\n this.initializeLocaleFirstDayOfWeek();\n this.initializeLocaleDateFormat();\n this.initializeLocaleMonthsAbbreviated();\n this.initializeLocaleMonthsWide();\n this.initializeLocaleDays();\n }\n\n /**\n * Initialize day names based on the locale.\n * eg: [{day: Sunday, narrow: S}, {day: Monday, narrow: M}...] for en-US.\n */\n private initializeLocaleDays(): void {\n // Get locale day names starting with Sunday\n const tempArr = [];\n const tempWideArr: string[] = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();\n const tempNarrowArr: string[] = getLocaleDayNames(\n this.locale,\n FormStyle.Standalone,\n TranslationWidth.Narrow\n ).slice();\n\n for (let i = 0; i < 7; i++) {\n tempArr.push({ day: tempWideArr[i], narrow: tempNarrowArr[i] });\n }\n\n // Rearrange the tempArr to start with the first day of the week based on the locale (default or override).\n if (this.firstDayOfWeek > ClrWeekday.Sunday) {\n const prevDays: { day: string; narrow: string }[] = tempArr.splice(0, this.firstDayOfWeek);\n tempArr.push(...prevDays);\n }\n\n this._localeDays = tempArr;\n }\n\n /**\n * Initializes the array of month names in the TranslationWidth.Abbreviated format.\n * e.g. `[Jan, Feb, ...]` for en-US\n */\n private initializeLocaleMonthsAbbreviated(): void {\n this._localeMonthsAbbreviated = getLocaleMonthNames(\n this.locale,\n FormStyle.Standalone,\n TranslationWidth.Abbreviated\n ).slice();\n }\n\n /**\n * Initializes the array of month names in the TranslationWidth.Wide format.\n * e.g. `[January, February, ...]` for en-US\n */\n private initializeLocaleMonthsWide(): void {\n this._localeMonthsWide = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();\n }\n\n /**\n * Initializes the first day of the week based on the locale.\n */\n private initializeLocaleFirstDayOfWeek(): void {\n this._firstDayOfWeek = getLocaleFirstDayOfWeek(this.locale);\n }\n\n private initializeLocaleDateFormat(): void {\n this._localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { LocaleHelperService } from './locale-helper.service';\nimport { DateRange, DateRangeOption } from '../interfaces/date-range.interface';\nimport { DayModel } from '../model/day.model';\nimport {\n BIG_ENDIAN,\n DEFAULT_LOCALE_FORMAT,\n DELIMITER_REGEX,\n InputDateDisplayFormat,\n LITTLE_ENDIAN,\n LITTLE_ENDIAN_REGEX,\n MIDDLE_ENDIAN,\n MIDDLE_ENDIAN_REGEX,\n RTL_REGEX,\n USER_INPUT_REGEX,\n} from '../utils/constants';\nimport { getNumberOfDaysInTheMonth, parseToFourDigitYear } from '../utils/date-utils';\n\n@Injectable()\nexport class DateIOService {\n /**\n * This is the default range. It approximates the beginning of time to the end of time.\n * The disabled dates are the dates that are not allowed to be selected.\n * The min date is the earliest date that can be selected.\n * The max date is the latest date that can be selected.\n * Unless a minDate or maxDate is set with the native HTML5 api the range is all dates\n */\n disabledDates: DateRange = {\n minDate: new DayModel(0, 0, 1),\n maxDate: new DayModel(9999, 11, 31),\n };\n\n cldrLocaleDateFormat: string = DEFAULT_LOCALE_FORMAT;\n minDateChange = new Subject<DayModel>();\n maxDateChange = new Subject<DayModel>();\n\n private dateRangeOptions;\n private localeDisplayFormat: InputDateDisplayFormat = LITTLE_ENDIAN;\n private delimiters: [string, string] = ['/', '/'];\n\n constructor(localeHelperService: LocaleHelperService) {\n this.cldrLocaleDateFormat = localeHelperService.localeDateFormat;\n this.initializeLocaleDisplayFormat();\n }\n\n get placeholderText(): string {\n const format: [string, string, string] = this.localeDisplayFormat.format;\n return format[0] + this.delimiters[0] + format[1] + this.delimiters[1] + format[2];\n }\n\n setMinDate(date: string): void {\n // NOTE: I'm expecting consumers to pass one of four things here:\n // A proper date string(2019-11-11), null, undefined or empty string ('')\n if (!date) {\n // attribute binding was removed, reset back to the beginning of time\n this.disabledDates.minDate = new DayModel(0, 0, 1);\n } else {\n const [year, month, day] = date.split('-').map(n => parseInt(n, 10));\n this.disabledDates.minDate = new DayModel(year, month - 1, day);\n }\n this.minDateChange.next(this.disabledDates.minDate);\n }\n\n setMaxDate(date: string): void {\n // NOTE: I'm expecting consumers to pass one of four things here:\n // A proper date string(2019-11-11), null, undefined or empty string ('')\n if (!date) {\n // attribute binding was removed, reset forward to the end of time\n this.disabledDates.maxDate = new DayModel(9999, 11, 31);\n } else {\n const [year, month, day] = date.split('-').map(n => parseInt(n, 10));\n this.disabledDates.maxDate = new DayModel(year, month - 1, day);\n }\n this.maxDateChange.next(this.disabledDates.maxDate);\n }\n\n setRangeOptions(rangeOptions: DateRangeOption[]) {\n const validatedRangeOption = this.validateDateRangeOptions(rangeOptions);\n this.dateRangeOptions = validatedRangeOption || [];\n }\n\n getRangeOptions() {\n return this.dateRangeOptions;\n }\n\n toLocaleDisplayFormatString(date: Date): string {\n if (date) {\n if (isNaN(date.getTime())) {\n return '';\n }\n const dateNo: number = date.getDate();\n const monthNo: number = date.getMonth() + 1;\n const dateStr: string = dateNo > 9 ? dateNo.toString() : '0' + dateNo;\n const monthStr: string = monthNo > 9 ? monthNo.toString() : '0' + monthNo;\n if (this.localeDisplayFormat === LITTLE_ENDIAN) {\n return dateStr + this.delimiters[0] + monthStr + this.delimiters[1] + date.getFullYear();\n } else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {\n return monthStr + this.delimiters[0] + dateStr + this.delimiters[1] + date.getFullYear();\n } else {\n return date.getFullYear() + this.delimiters[0] + monthStr + this.delimiters[1] + dateStr;\n }\n }\n return '';\n }\n\n getDateValueFromDateString(date: string): Date {\n if (!date || typeof date !== 'string') {\n return null;\n }\n const dateParts: string[] = date.match(USER_INPUT_REGEX);\n if (!dateParts || dateParts.length !== 3) {\n return null;\n }\n const [firstPart, secondPart, thirdPart] = dateParts;\n if (this.localeDisplayFormat === LITTLE_ENDIAN) {\n // secondPart is month && firstPart is date\n return this.validateAndGetDate(thirdPart, secondPart, firstPart);\n } else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {\n // firstPart is month && secondPart is date\n return this.validateAndGetDate(thirdPart, firstPart, secondPart);\n } else {\n // secondPart is month && thirdPart is date\n return this.validateAndGetDate(firstPart, secondPart, thirdPart);\n }\n }\n\n private validateDateRangeOptions(rangeOptions: DateRangeOption[]): DateRangeOption[] {\n const validOptions = [];\n rangeOptions?.forEach((rangeOption: DateRangeOption) => {\n if (\n rangeOption?.value?.length !== 2 ||\n Object.prototype.toString.call(rangeOption?.value[0]) !== '[object Date]' ||\n Object.prototype.toString.call(rangeOption?.value[1]) !== '[object Date]'\n ) {\n return;\n }\n validOptions.push(rangeOption);\n });\n return validOptions;\n }\n\n private initializeLocaleDisplayFormat(): void {\n const format: string = this.cldrLocaleDateFormat.toLocaleLowerCase();\n if (LITTLE_ENDIAN_REGEX.test(format)) {\n this.localeDisplayFormat = LITTLE_ENDIAN;\n } else if (MIDDLE_ENDIAN_REGEX.test(format)) {\n this.localeDisplayFormat = MIDDLE_ENDIAN;\n } else {\n // everything else is set to BIG-ENDIAN FORMAT\n this.localeDisplayFormat = BIG_ENDIAN;\n }\n this.extractDelimiters();\n }\n\n private extractDelimiters(): void {\n if (this.cldrLocaleDateFormat) {\n // Sanitize Date Format. Remove RTL characters.\n // FIXME: When we support RTL, remove this and handle it correctly.\n const localeFormat: string = this.cldrLocaleDateFormat.replace(RTL_REGEX, '');\n const delimiters: string[] = localeFormat.split(DELIMITER_REGEX);\n\n // NOTE: The split from the CLDR date format should always result\n // in an arary with 4 elements. The 1st and the 2nd values are the delimiters\n // we will use in order.\n // Eg: \"dd/MM/y\".split(/d+|m+|y+/i) results in [\"\", \"/\", \"/\", \"\"]\n if (delimiters && delimiters.length === 4) {\n this.delimiters = [delimiters[1], delimiters[2]];\n } else {\n console.error('Unexpected date format received. Delimiters extracted: ', delimiters);\n }\n }\n }\n\n /**\n * Checks if the month entered by the user is valid or not.\n * Note: Month is 0 based.\n */\n private isValidMonth(month: number): boolean {\n return month > -1 && month < 12;\n }\n\n /**\n * Checks if the date is valid depending on the year and month provided.\n */\n private isValidDate(year: number, month: number, date: number): boolean {\n return date > 0 && date <= getNumberOfDaysInTheMonth(year, month);\n }\n\n /**\n * Validates the parameters provided and returns the date.\n * If the parameters are not\n * valid then return null.\n * NOTE: (Month here is 1 based since the user has provided that as an input)\n */\n private validateAndGetDate(year: string, month: string, date: string): Date {\n // I don't know whats wrong with the TS compiler. It throws an error if I write\n // the below if statement. The error is:\n // Operator '!==' cannot be applied to types '2' and '4'\n // More info here: https://github.com/Microsoft/TypeScript/issues/12794#issuecomment-270342936\n /*\n if (year.length !== 2 || year.length !== 4) {\n return null;\n }\n */\n\n // Instead I have to write the logic like this x-(\n const y: number = +year;\n const m: number = +month - 1; // month is 0 based\n const d: number = +date;\n if (!this.isValidMonth(m) || !this.isValidDate(y, m, d)) {\n return null;\n }\n const result: number = parseToFourDigitYear(y);\n return result !== -1 ? new Date(result, m, d) : null;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DayModel } from './day.model';\nimport { getNumberOfDaysInTheMonth } from '../utils/date-utils';\n\nexport class CalendarModel {\n days: DayModel[];\n\n constructor(\n readonly year: number,\n readonly month: number\n ) {\n this.initializeDaysInCalendar();\n }\n\n /**\n * Checks if the calendar passed is equal to the current calendar.\n */\n isEqual(calendar: CalendarModel) {\n if (calendar) {\n return this.year === calendar.year && this.month === calendar.month;\n }\n return false;\n }\n\n /**\n * Checks if a DayModel is in the Calendar\n */\n isDayInCalendar(day: DayModel): boolean {\n if (day) {\n return this.year === day.year && this.month === day.month;\n }\n return false;\n }\n\n /**\n * Returns CalendarModel of the previous month.\n */\n previousMonth(): CalendarModel {\n if (this.month === 0) {\n return new CalendarModel(this.year - 1, 11);\n } else {\n return new CalendarModel(this.year, this.month - 1);\n }\n }\n\n /**\n * Returns CalendarModel of the next month.\n */\n nextMonth(): CalendarModel {\n if (this.month === 11) {\n return new CalendarModel(this.year + 1, 0);\n } else {\n return new CalendarModel(this.year, this.month + 1);\n }\n }\n\n /**\n * Returns CalendarModel of the previous year.\n */\n previousYear(): CalendarModel {\n return new CalendarModel(this.year - 1, this.month);\n }\n\n /**\n * Returns CalendarModel of the next year.\n */\n nextYear(): CalendarModel {\n return new CalendarModel(this.year + 1, this.month);\n }\n\n /**\n * Populates the days array with the DayModels in the current Calendar.\n */\n private initializeDaysInCalendar(): void {\n const noOfDaysInCalendar: number = getNumberOfDaysInTheMonth(this.year, this.month);\n this.days = Array(noOfDaysInCalendar)\n .fill(null)\n .map((_date, index) => {\n return new DayModel(this.year, this.month, index + 1);\n });\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, tap } from 'rxjs';\n\nimport { DateRangeInput } from '../interfaces/date-range.interface';\nimport { CalendarModel } from '../model/calendar.model';\nimport { DayModel } from '../model/day.model';\n\n/**\n * This service is responsible for:\n * 1. Initializing the displayed calendar.\n * 2. Moving the calendar to the next, previous or current months\n * 3. Managing the focused and selected day models.\n */\n@Injectable()\nexport class DateNavigationService {\n persistedDate: DayModel;\n persistedEndDate: DayModel;\n selectedDay: DayModel;\n selectedEndDay: DayModel;\n focusedDay: DayModel;\n hoveredDay: DayModel;\n hoveredMonth: number;\n hoveredYear: number;\n isRangePicker = false;\n hasActionButtons = false;\n\n private _displayedCalendar: CalendarModel;\n private _todaysFullDate: Date = new Date();\n private _today: DayModel;\n private _selectedDayChange = new Subject<DayModel>();\n private _selectedEndDayChange = new Subject<DayModel>();\n private _displayedCalendarChange = new Subject<void>();\n private _focusOnCalendarChange = new Subject<void>();\n private _refreshCalendarView = new Subject<void>();\n private _focusedDayChange = new Subject<DayModel>();\n\n get today(): DayModel {\n return this._today;\n }\n\n get displayedCalendar(): CalendarModel {\n return this._displayedCalendar;\n }\n\n get selectedDayChange(): Observable<DayModel> {\n return this._selectedDayChange.asObservable();\n }\n\n get selectedEndDayChange(): Observable<DayModel> {\n return this._selectedEndDayChange.asObservable();\n }\n\n /**\n * This observable lets the subscriber know that the displayed calendar has changed.\n */\n get displayedCalendarChange(): Observable<void> {\n return this._displayedCalendarChange.asObservable();\n }\n\n /**\n * This observable lets the subscriber know that the focus should be applied on the calendar.\n */\n get focusOnCalendarChange(): Observable<void> {\n return this._focusOnCalendarChange.asObservable();\n }\n\n /**\n * This observable lets the subscriber know that the focused day in the displayed calendar has changed.\n */\n get focusedDayChange(): Observable<DayModel> {\n return this._focusedDayChange.asObservable().pipe(tap((day: DayModel) => (this.focusedDay = day)));\n }\n\n /**\n * This observable lets the subscriber know that the displayed calendar has changed.\n */\n get refreshCalendarView(): Observable<void> {\n return this._refreshCalendarView.asObservable();\n }\n\n /**\n * Notifies that the selected day has changed so that the date can be emitted to the user.\n */\n notifySelectedDayChanged(dayObject: DayModel | DateRangeInput, { emitEvent } = { emitEvent: true }): void {\n if (this.isRangePicker) {\n const { startDate, endDate } = dayObject as DateRangeInput;\n if (startDate && endDate) {\n this.setSelectedDay(startDate, emitEvent);\n this.setSelectedEndDay(endDate, emitEvent);\n } else {\n if (endDate !== null) {\n this.setSelectedEndDay(endDate, emitEvent);\n }\n if (startDate !== null) {\n this.setSelectedDay(startDate, emitEvent);\n }\n }\n } else {\n const day = dayObject as DayModel;\n this.setSelectedDay(day, emitEvent);\n }\n this._refreshCalendarView.next();\n }\n\n /**\n * Initializes the calendar based on the selected day.\n */\n initializeCalendar(): void {\n this.focusedDay = null; // Can be removed later on the store focus\n this.initializeTodaysDate();\n if (this.selectedDay) {\n this._displayedCalendar = new CalendarModel(this.selectedDay.year, this.selectedDay.month);\n } else {\n this._displayedCalendar = new CalendarModel(this.today.year, this.today.month);\n }\n }\n\n changeMonth(month: number): void {\n this.setDisplayedCalendar(new CalendarModel(this._displayedCalendar.year, month));\n }\n\n changeYear(year: number): void {\n this.setDisplayedCalendar(new CalendarModel(year, this._displayedCalendar.month));\n }\n\n /**\n * Moves the displayed calendar to the next month.\n */\n moveToNextMonth(): void {\n this.setDisplayedCalendar(this._displayedCalendar.nextMonth());\n }\n\n /**\n * Moves the displayed calendar to the previous month.\n */\n moveToPreviousMonth(): void {\n this.setDisplayedCalendar(this._displayedCalendar.previousMonth());\n }\n\n /**\n * Moves the displayed calendar to the next year.\n */\n moveToNextYear(): void {\n this.setDisplayedCalendar(this._displayedCalendar.nextYear());\n }\n\n /**\n * Moves the displayed calendar to the previous year.\n */\n moveToPreviousYear(): void {\n this.setDisplayedCalendar(this._displayedCalendar.previousYear());\n }\n\n /**\n * Moves the displayed calendar to the current month and year.\n */\n moveToCurrentMonth(): void {\n if (!this.displayedCalendar.isDayInCalendar(this.today)) {\n this.setDisplayedCalendar(new CalendarModel(this.today.year, this.today.month));\n }\n this._focusOnCalendarChange.next();\n }\n\n moveToSpecificMonth(day: DayModel) {\n if (!this.displayedCalendar.isDayInCalendar(day)) {\n this.setDisplayedCalendar(new CalendarModel(day.year, day.month));\n }\n }\n\n incrementFocusDay(value: number): void {\n this.hoveredDay = this.focusedDay = this.focusedDay.incrementBy(value);\n if (this._displayedCalendar.isDayInCalendar(this.focusedDay)) {\n this._focusedDayChange.next(this.focusedDay);\n } else {\n this.setDisplayedCalendar(new CalendarModel(this.focusedDay.year, this.focusedDay.month));\n }\n this._focusOnCalendarChange.next();\n }\n\n resetSelectedDay() {\n this.selectedDay = this.persistedDate;\n this.selectedEndDay = this.persistedEndDate;\n }\n\n convertDateToDayModel(date: Date): DayModel {\n return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n private setSelectedDay(dayModel: DayModel | undefined, emitEvent): void {\n this.selectedDay = dayModel;\n if (emitEvent) {\n this._selectedDayChange.next(dayModel);\n }\n }\n\n private setSelectedEndDay(dayModel: DayModel | undefined, emitEvent): void {\n this.selectedEndDay = dayModel;\n if (emitEvent) {\n this._selectedEndDayChange.next(dayModel);\n }\n }\n\n // not a setter because i want this to remain private\n private setDisplayedCalendar(value: CalendarModel) {\n if (!this._displayedCalendar.isEqual(value)) {\n this._displayedCalendar = value;\n this._displayedCalendarChange.next();\n }\n }\n\n private initializeTodaysDate(): void {\n this._todaysFullDate = new Date();\n this._today = new DayModel(\n this._todaysFullDate.getFullYear(),\n this._todaysFullDate.getMonth(),\n this._todaysFullDate.getDate()\n );\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT, Inject, Injectable } from '@angular/core';\nimport { DATEPICKER_ENABLE_BREAKPOINT } from '@clr/angular/utils';\n\nimport { MOBILE_USERAGENT_REGEX } from '../utils/constants';\n\n@Injectable()\nexport class DatepickerEnabledService {\n private _isUserAgentMobile = false;\n private _innerWidth: number;\n\n constructor(@Inject(DOCUMENT) private _document: any) {\n if (_document) {\n this._isUserAgentMobile = MOBILE_USERAGENT_REGEX.test(_document.defaultView.navigator.userAgent);\n this._innerWidth = _document.defaultView.innerWidth;\n }\n }\n\n /**\n * Returns if the calendar should be active or not.\n * If the user agent is mobile and the screen width is less than DATEPICKER_ACTIVE_BREAKPOINT\n * then the calendar is inactive.\n */\n get isEnabled(): boolean {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent\n // What they recommend is:\n //\"In summary, we recommend looking for the string 'Mobi'\n // anywhere in the User Agent to detect a mobile device.\"\n if (this._document) {\n if (this._innerWidth < DATEPICKER_ENABLE_BREAKPOINT && this._isUserAgentMobile) {\n return false;\n }\n }\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ClrPopoverPosition } from '@clr/angular/popover/common';\n\nconst enum DatepickerViewEnum {\n MONTHVIEW = 'MONTHVIEW',\n YEARVIEW = 'YEARVIEW',\n DAYVIEW = 'DAYVIEW',\n}\n\n/**\n * This service manages which view is visible in the datepicker popover.\n */\n@Injectable()\nexport class ViewManagerService {\n position = ClrPopoverPosition.BOTTOM_LEFT;\n\n private _currentView: DatepickerViewEnum = DatepickerViewEnum.DAYVIEW;\n\n get isDayView(): boolean {\n return this._currentView === DatepickerViewEnum.DAYVIEW;\n }\n\n get isYearView(): boolean {\n return this._currentView === DatepickerViewEnum.YEARVIEW;\n }\n\n get isMonthView(): boolean {\n return this._currentView === DatepickerViewEnum.MONTHVIEW;\n }\n\n changeToMonthView(): void {\n this._currentView = DatepickerViewEnum.MONTHVIEW;\n }\n\n changeToYearView(): void {\n this._currentView = DatepickerViewEnum.YEARVIEW;\n }\n\n changeToDayView(): void {\n this._currentView = DatepickerViewEnum.DAYVIEW;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';\nimport { filter, first } from 'rxjs/operators';\n\n/**\n * This service focuses the day that is focusable in the calendar.\n */\n@Injectable()\nexport class DatepickerFocusService {\n constructor(\n private _ngZone: NgZone,\n @Inject(PLATFORM_ID) private platformId: any\n ) {}\n\n focusCell(elRef: ElementRef<HTMLElement>): void {\n this._ngZone.runOutsideAngular(() => {\n this.ngZoneIsStableInBrowser().subscribe(() => {\n const focusEl = elRef.nativeElement.querySelector<HTMLElement>('[tabindex=\"0\"]');\n if (focusEl) {\n focusEl.focus();\n }\n });\n });\n }\n\n focusInput(element: HTMLInputElement): void {\n this._ngZone.runOutsideAngular(() => this.ngZoneIsStableInBrowser().subscribe(() => element.focus()));\n }\n\n elementIsFocused(element: HTMLInputElement) {\n return isPlatformBrowser(this.platformId) && document.activeElement === element;\n }\n\n private ngZoneIsStableInBrowser() {\n // Credit: Material: https://github.com/angular/material2/blob/master/src/lib/datepicker/calendar.ts\n return this._ngZone.onStable.asObservable().pipe(\n first(),\n filter(() => isPlatformBrowser(this.platformId))\n );\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\nimport { ClrCommonStringsService, Keys } from '@clr/angular/utils';\n\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n@Component({\n selector: 'clr-monthpicker',\n template: `\n <div class=\"calendar-header in-monthpicker\">\n <div class=\"year-view-switcher\">\n <button\n class=\"calendar-btn yearpicker-trigger\"\n type=\"button\"\n (click)=\"changeToYearView()\"\n [attr.aria-label]=\"yearAttrString\"\n [attr.title]=\"yearAttrString\"\n >\n {{ calendarYear }}\n </button>\n </div>\n <div class=\"calendar-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousYear()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentYear()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextYear()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></cds-icon>\n </button>\n </div>\n </div>\n <div class=\"months\">\n @for (month of monthNames; track month; let monthIndex = $index) {\n <button\n type=\"button\"\n class=\"calendar-btn month\"\n (click)=\"changeMonth(monthIndex)\"\n [class.is-selected]=\"isSelected(monthIndex)\"\n [class.is-start-range]=\"getIsRangeStartMonth(monthIndex)\"\n [class.is-end-range]=\"getIsRangeEndMonth(monthIndex)\"\n [class.in-range]=\"isInRange(monthIndex)\"\n [attr.tabindex]=\"getTabIndex(monthIndex)\"\n [class.is-today]=\"calendarYear === currentCalendarYear && monthIndex === currentCalendarMonth\"\n (mouseenter)=\"onHover(monthIndex)\"\n >\n {{ month }}\n </button>\n }\n </div>\n `,\n host: {\n '[class.monthpicker]': 'true',\n role: 'application',\n },\n standalone: false,\n})\nexport class ClrMonthpicker implements AfterViewInit {\n /**\n * Keeps track of the current focused month.\n */\n private _focusedMonthIndex: number;\n\n constructor(\n private _localeHelperService: LocaleHelperService,\n private _dateNavigationService: DateNavigationService,\n private _datepickerFocusService: DatepickerFocusService,\n private _elRef: ElementRef,\n private _viewManagerService: ViewManagerService,\n public commonStrings: ClrCommonStringsService\n ) {\n this._focusedMonthIndex = this.calendarMonthIndex;\n }\n /**\n * Gets the months array which is used to rendered the monthpicker view.\n * Months are in the TranslationWidth.Wide format.\n */\n get monthNames(): ReadonlyArray<string> {\n return this._localeHelperService.localeMonthsWide;\n }\n /**\n * Gets the month value of the Calendar.\n */\n get calendarMonthIndex(): number {\n return this._dateNavigationService.displayedCalendar.month;\n }\n\n /**\n * Gets the year which the user is currently on.\n */\n get calendarEndMonthIndex(): number {\n return this._dateNavigationService.selectedEndDay?.month;\n }\n\n get yearAttrString(): string {\n return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectYearText, {\n CALENDAR_YEAR: this.calendarYear.toString(),\n });\n }\n\n /**\n * Returns the year value of the calendar.\n */\n get calendarYear(): number {\n return this._dateNavigationService.displayedCalendar.year;\n }\n\n get currentCalendarYear(): number {\n return new Date().getFullYear();\n }\n\n get currentCalendarMonth(): number {\n return new Date().getMonth();\n }\n\n getIsRangeStartMonth(monthIndex: number): boolean {\n return (\n this._dateNavigationService.isRangePicker &&\n this.calendarYear === this._dateNavigationService.selectedDay?.year &&\n monthIndex === this._dateNavigationService.selectedDay?.month\n );\n }\n\n getIsRangeEndMonth(monthIndex: number): boolean {\n return (\n this._dateNavigationService.isRangePicker &&\n this.calendarYear === this._dateNavigationService.selectedEndDay?.year &&\n monthIndex === this._dateNavigationService.selectedEndDay?.month\n );\n }\n\n /**\n * Calls the ViewManagerService to change to the yearpicker view.\n */\n changeToYearView(): void {\n this._viewManagerService.changeToYearView();\n }\n\n /**\n * Focuses on the current calendar month when the View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Handles the Keyboard arrow navigation for the monthpicker.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // NOTE: Didn't move this to the date navigation service because\n // the logic is fairly simple and it didn't make sense for me\n // to create extra observables just to move this logic to the service.\n if (event) {\n const key = event.key;\n if (key === Keys.ArrowUp && this._focusedMonthIndex > 1) {\n event.preventDefault();\n this._focusedMonthIndex -= 2;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowDown && this._focusedMonthIndex < 10) {\n event.preventDefault();\n this._focusedMonthIndex += 2;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowRight && this._focusedMonthIndex < 11) {\n event.preventDefault();\n this._focusedMonthIndex++;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 0) {\n event.preventDefault();\n this._focusedMonthIndex--;\n this._datepickerFocusService.focusCell(this._elRef);\n }\n }\n }\n\n isSelected(monthIndex: number): boolean {\n return (\n (this._dateNavigationService.selectedDay?.year === this.calendarYear &&\n monthIndex === this._dateNavigationService.selectedDay?.month) ||\n (this._dateNavigationService.selectedEndDay?.year === this.calendarYear &&\n monthIndex === this.calendarEndMonthIndex)\n );\n }\n\n /**\n * Calls the DateNavigationService to update the hovered month value of the calendar\n */\n onHover(monthIndex: number): void {\n this._dateNavigationService.hoveredMonth = monthIndex;\n }\n\n /**\n * Calls the DateNavigationService to update the month value of the calendar.\n * Also changes the view to the daypicker.\n */\n changeMonth(monthIndex: number) {\n this._dateNavigationService.changeMonth(monthIndex);\n this._viewManagerService.changeToDayView();\n }\n\n /**\n * Compares the month passed to the focused month and returns the tab index.\n */\n getTabIndex(monthIndex: number): number {\n return monthIndex === this._focusedMonthIndex ? 0 : -1;\n }\n\n /**\n * Calls the DateNavigationService to move to the next month.\n */\n nextYear(): void {\n this._dateNavigationService.moveToNextYear();\n }\n\n /**\n * Calls the DateNavigationService to move to the previous month.\n */\n previousYear(): void {\n this._dateNavigationService.moveToPreviousYear();\n }\n\n /**\n * Calls the DateNavigationService to move to the current month.\n */\n currentYear(): void {\n this._dateNavigationService.moveToCurrentMonth();\n }\n\n /**\n * Applicable only to date range picker\n * Compares the month passed is in between the start and end date range\n */\n isInRange(monthIndex: number): boolean {\n if (!this._dateNavigationService.isRangePicker) {\n return false;\n }\n if (this._dateNavigationService.selectedDay && this._dateNavigationService.selectedEndDay) {\n return (\n (this.calendarYear === this._dateNavigationService.selectedDay.year &&\n monthIndex > this._dateNavigationService.selectedDay.month &&\n this.calendarYear === this._dateNavigationService.selectedEndDay.year &&\n monthIndex < this._dateNavigationService.selectedEndDay.month) ||\n (this._dateNavigationService.selectedDay.year !== this._dateNavigationService.selectedEndDay.year &&\n this.calendarYear === this._dateNavigationService.selectedDay.year &&\n monthIndex > this._dateNavigationService.selectedDay.month) ||\n (this._dateNavigationService.selectedDay.year !== this._dateNavigationService.selectedEndDay.year &&\n this.calendarYear === this._dateNavigationService.selectedEndDay.year &&\n monthIndex < this._dateNavigationService.selectedEndDay.month) ||\n (this.calendarYear > this._dateNavigationService.selectedDay.year &&\n this.calendarYear < this._dateNavigationService.selectedEndDay.year)\n );\n } else if (this._dateNavigationService.selectedDay && !this._dateNavigationService.selectedEndDay) {\n return (\n (this.calendarYear === this._dateNavigationService.selectedDay.year &&\n monthIndex > this._dateNavigationService.selectedDay.month &&\n monthIndex < this._dateNavigationService.hoveredMonth) ||\n (this.calendarYear > this._dateNavigationService.selectedDay.year &&\n monthIndex < this._dateNavigationService.hoveredMonth)\n );\n } else {\n return false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nconst YEARS_TO_DISPLAY = 10;\n\nexport class YearRangeModel {\n yearRange: number[] = [];\n\n constructor(private readonly year: number) {\n this.generateYearRange();\n }\n\n /**\n * Gets the number in the middle of the range.\n */\n get middleYear(): number {\n return this.yearRange[Math.floor(this.yearRange.length / 2)];\n }\n\n /**\n * Generates the YearRangeModel for the next decade.\n */\n nextDecade(): YearRangeModel {\n return new YearRangeModel(this.year + 10);\n }\n\n /**\n * Generates the YearRangeModel for the previous decade.\n */\n previousDecade(): YearRangeModel {\n return new YearRangeModel(this.year - 10);\n }\n\n /**\n * Generates the YearRangeModel for the current decade.\n */\n currentDecade(): YearRangeModel {\n return new YearRangeModel(new Date().getFullYear());\n }\n\n /**\n * Checks if the value is in the YearRangeModel.\n */\n inRange(value: number): boolean {\n return this.yearRange.indexOf(value) > -1;\n }\n\n /**\n * Generates the year range based on the year parameter.\n * eg: If 2018 is passed the output will be [2010, 2011, ..., 2019]\n */\n private generateYearRange() {\n const remainder: number = this.year % YEARS_TO_DISPLAY;\n const floor: number = this.year - remainder;\n const ceil: number = floor + YEARS_TO_DISPLAY;\n this.yearRange = this.generateRange(floor, ceil);\n }\n\n /**\n * Function which generate a range of numbers from floor to ceil.\n */\n private generateRange(floor: number, ceil: number): number[] {\n return Array.from({ length: ceil - floor }, (_v, k) => k + floor);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\nimport { ClrCommonStringsService, Keys } from '@clr/angular/utils';\n\nimport { YearRangeModel } from './model/year-range.model';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-yearpicker',\n template: `\n <div class=\"calendar-header\">\n <div class=\"calendar-pickers\">\n <button class=\"calendar-btn yearpicker-trigger year-range\" type=\"button\" (click)=\"changeToDayView()\">\n {{ yearRangeModel.yearRange[0] }} - {{ yearRangeModel.yearRange[yearRangeModel.yearRange.length - 1] }}\n </button>\n </div>\n <div class=\"year-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousDecade\"\n >\n <cds-icon\n shape=\"angle\"\n direction=\"left\"\n [attr.title]=\"commonStrings.keys.datepickerPreviousDecade\"\n ></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentDecade\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentDecade\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextDecade\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextDecade\"></cds-icon>\n </button>\n </div>\n </div>\n\n <div class=\"years\">\n @for (year of yearRangeModel.yearRange; track year) {\n <button\n type=\"button\"\n class=\"calendar-btn year\"\n [attr.tabindex]=\"getTabIndex(year)\"\n [class.is-selected]=\"year === selectedStartYear || year === selectedEndYear\"\n [class.is-start-range]=\"getIsRangeStartYear(year)\"\n [class.is-end-range]=\"getIsRangeEndYear(year)\"\n [class.in-range]=\"isInRange(year)\"\n [class.is-today]=\"isCurrentCalendarYear(year)\"\n (click)=\"changeYear(year)\"\n (mouseenter)=\"onHover(year)\"\n >\n {{ year }}\n </button>\n }\n </div>\n `,\n host: {\n '[class.yearpicker]': 'true',\n role: 'application',\n },\n standalone: false,\n})\nexport class ClrYearpicker implements AfterViewInit {\n /**\n * YearRangeModel which is used to build the YearPicker view.\n */\n yearRangeModel: YearRangeModel;\n\n /**\n * Keeps track of the current focused year.\n */\n private _focusedYear: number;\n\n constructor(\n private _dateNavigationService: DateNavigationService,\n private _viewManagerService: ViewManagerService,\n private _datepickerFocusService: DatepickerFocusService,\n private _elRef: ElementRef<HTMLElement>,\n public commonStrings: ClrCommonStringsService\n ) {\n this.yearRangeModel = new YearRangeModel(this.calendarYear);\n this._focusedYear = this.calendarYear;\n }\n\n get selectedStartYear(): number {\n return this._dateNavigationService.selectedDay?.year;\n }\n\n get selectedEndYear(): number {\n return this._dateNavigationService.selectedEndDay?.year;\n }\n\n /**\n * Gets the year which the user is currently on.\n */\n get calendarYear(): number {\n return this._dateNavigationService.displayedCalendar.year;\n }\n\n isCurrentCalendarYear(year: number): boolean {\n return year === new Date().getFullYear();\n }\n\n getIsRangeStartYear(year: number): boolean {\n return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedDay?.year;\n }\n\n getIsRangeEndYear(year: number): boolean {\n return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedEndDay?.year;\n }\n\n /**\n * Focuses on the current calendar year when the View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Handles the Keyboard arrow navigation for the yearpicker.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // NOTE: Didn't move this to the date navigation service because\n // the logic is fairly simple and it didn't make sense for me\n // to create extra observables just to move this logic to the service.\n if (event) {\n const key = event.key;\n if (key === Keys.ArrowUp) {\n event.preventDefault();\n this.incrementFocusYearBy(-2);\n } else if (key === Keys.ArrowDown) {\n event.preventDefault();\n this.incrementFocusYearBy(2);\n } else if (key === Keys.ArrowRight) {\n event.preventDefault();\n this.incrementFocusYearBy(1);\n } else if (key === Keys.ArrowLeft) {\n event.preventDefault();\n this.incrementFocusYearBy(-1);\n }\n }\n }\n\n /**\n * Calls the DateNavigationService to update the year value of the calendar.\n * Also changes the view to the daypicker.\n */\n changeYear(year: number): void {\n this._dateNavigationService.changeYear(year);\n this._viewManagerService.changeToDayView();\n }\n\n /**\n * Calls the DateNavigationService to update the hovered year value of the calendar\n */\n onHover(year: number): void {\n this._dateNavigationService.hoveredYear = year;\n }\n\n /**\n * Updates the YearRangeModel to the previous decade.\n */\n previousDecade(): void {\n this.yearRangeModel = this.yearRangeModel.previousDecade();\n // Year in the yearpicker is not focused because while navigating to a different decade,\n // you want the focus to remain on the decade switcher arrows.\n }\n\n /**\n * Updates the YearRangeModel to the current decade.\n */\n currentDecade(): void {\n if (!this.yearRangeModel.inRange(this._dateNavigationService.today.year)) {\n this.yearRangeModel = this.yearRangeModel.currentDecade();\n }\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Updates the YearRangeModel to the next decade.\n */\n nextDecade(): void {\n this.yearRangeModel = this.yearRangeModel.nextDecade();\n // Year in the yearpicker is not focused because while navigating to a different decade,\n // you want the focus to remain on the decade switcher arrows.\n }\n\n /**\n * Compares the year passed to the focused year and returns the tab index.\n */\n getTabIndex(year: number): number {\n if (!this.yearRangeModel.inRange(this._focusedYear)) {\n if (this.yearRangeModel.inRange(this.calendarYear)) {\n this._focusedYear = this.calendarYear;\n } else if (this.yearRangeModel.inRange(this.selectedEndYear)) {\n this._focusedYear = this.selectedEndYear;\n } else {\n this._focusedYear = this.yearRangeModel.middleYear;\n }\n }\n return this._focusedYear === year ? 0 : -1;\n }\n\n /**\n * Applicable only to date range picker\n * Compares the year passed is in between the start and end date range\n */\n isInRange(year: number): boolean {\n if (!this._dateNavigationService.isRangePicker) {\n return false;\n }\n if (this._dateNavigationService.selectedDay?.year && this.selectedEndYear) {\n return year > this.selectedStartYear && year < this.selectedEndYear;\n } else if (this._dateNavigationService.selectedDay?.year && !this.selectedEndYear) {\n return year > this.selectedStartYear && year < this._dateNavigationService.hoveredYear;\n } else {\n return false;\n }\n }\n\n changeToDayView() {\n this._viewManagerService.changeToDayView();\n }\n\n /**\n * Increments the focus year by the value passed. Updates the YearRangeModel if the\n * new value is not in the current decade.\n */\n private incrementFocusYearBy(value: number): void {\n this._focusedYear = this._focusedYear + value;\n if (!this.yearRangeModel.inRange(this._focusedYear)) {\n if (value > 0) {\n this.yearRangeModel = this.yearRangeModel.nextDecade();\n } else {\n this.yearRangeModel = this.yearRangeModel.previousDecade();\n }\n }\n this._datepickerFocusService.focusCell(this._elRef);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DayModel } from './day.model';\n\nexport class DayViewModel {\n constructor(\n public dayModel: DayModel,\n public isTodaysDate: boolean = false,\n public isExcluded: boolean = false,\n public isDisabled: boolean = false,\n public isSelected: boolean = false,\n public isFocusable: boolean = false,\n public isRangeStartDay: boolean = false,\n public isRangeEndDay: boolean = false\n ) {}\n\n /**\n * Gets the tab index based on the isFocusable flag.\n */\n get tabIndex(): number {\n return this.isFocusable ? 0 : -1;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CalendarModel } from './calendar.model';\nimport { DayViewModel } from './day-view.model';\nimport { DayModel } from './day.model';\nimport { DateRange } from '../interfaces/date-range.interface';\nimport { NO_OF_DAYS_IN_A_WEEK, NO_OF_ROWS_IN_CALENDAR_VIEW, TOTAL_DAYS_IN_DAYS_VIEW } from '../utils/constants';\nimport { getDay } from '../utils/date-utils';\n\nexport class CalendarViewModel {\n private currMonthDayViews: DayViewModel[] = [];\n private _calendarView: DayViewModel[][];\n\n constructor(\n public calendar: CalendarModel,\n public selectedDay: DayModel,\n public selectedEndDay: DayModel,\n private focusableDay: DayModel,\n private today: DayModel,\n public firstDayOfWeek: number,\n private excludedDates: DateRange\n ) {\n this.initializeCalendarView();\n }\n\n /**\n * DayViewModel matrix. Size 6x7\n */\n get calendarView(): DayViewModel[][] {\n return this._calendarView;\n }\n\n /**\n * Updates the focusable day in the calendar.\n */\n updateFocusableDay(day: DayModel): void {\n this.setFocusableFlag(this.focusableDay, false);\n this.setFocusableFlag(day, true);\n this.focusableDay = day;\n }\n\n /**\n * Updates the selected day in the calendar\n */\n updateSelectedDay(day: DayModel | undefined): void {\n this.setSelectedDay(this.selectedDay, false);\n this.selectedDay = day;\n this.setSelectedDay(day, true);\n }\n\n /**\n * Updates the selected end day in the calendar\n */\n updateSelectedEndDay(day: DayModel | undefined): void {\n this.setSelectedDay(this.selectedEndDay, false);\n this.selectedEndDay = day;\n this.setSelectedDay(day, true);\n }\n\n /**\n * Generates a 6x7 matrix of DayViewModel based on the Calendar.\n * The 6x7 matrix is structured according to the first day of the week.\n * 6 rows to accommodate months which might have dates spanning over 6 weeks.\n * 7 columns because there are 7 days in a week :P :D\n */\n private initializeCalendarView(): void {\n // Generate prev and next month calendar models.\n const prevMonthCalendar: CalendarModel = this.calendar.previousMonth();\n const nextMonthCalendar: CalendarModel = this.calendar.nextMonth();\n\n // Get no of days from prev and next months.\n const daysFromPrevMonthInCalView: number = this.numDaysFromPrevMonthInCalView(\n this.calendar.year,\n this.calendar.month\n );\n const daysFromNextMonthInCalView: number =\n TOTAL_DAYS_IN_DAYS_VIEW - (this.calendar.days.length + daysFromPrevMonthInCalView);\n\n // Generate prev, curr and next day view models\n let prevMonthDayViews: DayViewModel[] = [];\n let nextMonthDayViews: DayViewModel[] = [];\n\n if (daysFromPrevMonthInCalView > 0) {\n prevMonthDayViews = this.generateDayViewModels(\n prevMonthCalendar.days.slice(-1 * daysFromPrevMonthInCalView),\n true,\n false\n );\n }\n\n this.currMonthDayViews = this.generateDayViewModels(this.calendar.days, false, true);\n\n if (daysFromNextMonthInCalView > 0) {\n nextMonthDayViews = this.generateDayViewModels(\n nextMonthCalendar.days.slice(0, daysFromNextMonthInCalView),\n true,\n false\n );\n }\n\n // Generate calendar view and initialize flags\n this._calendarView = this.generateCalendarView(prevMonthDayViews, this.currMonthDayViews, nextMonthDayViews);\n this.initializeSelectedDay();\n this.initializeFocusableDay();\n }\n\n private isDateExcluded(date: DayModel) {\n const { minDate, maxDate }: DateRange = this.excludedDates;\n const from = minDate.toComparisonString();\n const to = maxDate.toComparisonString();\n const today = date.toComparisonString();\n\n return !(today >= from && today <= to);\n }\n\n /**\n * Generates a DayViewModel array based on the DayModel passed\n */\n private generateDayViewModels(days: DayModel[], isExcluded: boolean, isCurrentCalendar: boolean): DayViewModel[] {\n const dayViews: DayViewModel[] = days.map(day => {\n return new DayViewModel(day, false, isExcluded, this.isDateExcluded(day), false, false);\n });\n if (isCurrentCalendar && this.calendar.isDayInCalendar(this.today)) {\n dayViews[this.today.date - 1].isTodaysDate = true;\n }\n return dayViews;\n }\n\n /**\n * Gets the first day of the current month to figure out how many dates of previous month\n * are needed to complete the Calendar View based on the first day of the week.\n * eg: Assuming locale en-US, the first day of the week is Sunday,\n * if first day of the current month lands on Wednesday, then\n * (this.getDay function would return 3 since\n * first day of the week is 0), we need the 3 days from the previous month.\n */\n private numDaysFromPrevMonthInCalView(currentYear: number, currentMonth: number): number {\n const firstDayOfCurrMonth: number = getDay(currentYear, currentMonth, 1);\n\n if (firstDayOfCurrMonth >= this.firstDayOfWeek) {\n return firstDayOfCurrMonth - this.firstDayOfWeek;\n } else {\n return NO_OF_DAYS_IN_A_WEEK + firstDayOfCurrMonth - this.firstDayOfWeek;\n }\n }\n\n /**\n * Checks if the Day passed is in the CalendarView.\n */\n private isDayInCalendarView(day: DayModel): boolean {\n if (!this.calendar.isDayInCalendar(day)) {\n return false;\n }\n return true;\n }\n\n /**\n * Using the DayViewModels from the previous, current and next month, this function\n * generates the CalendarView.\n */\n private generateCalendarView(prev: DayViewModel[], curr: DayViewModel[], next: DayViewModel[]): DayViewModel[][] {\n const combinationArr: DayViewModel[] = [...prev, ...curr, ...next];\n\n const calendarView: DayViewModel[][] = [];\n for (let i = 0; i < NO_OF_ROWS_IN_CALENDAR_VIEW; i++) {\n calendarView[i] = combinationArr.slice(i * NO_OF_DAYS_IN_A_WEEK, (i + 1) * NO_OF_DAYS_IN_A_WEEK);\n }\n return calendarView;\n }\n\n /**\n * Initialize the selected day if the day is in the calendar.\n */\n private initializeSelectedDay(): void {\n this.setSelectedDay(this.selectedDay, true);\n this.setSelectedDay(this.selectedEndDay, true);\n }\n\n /**\n * Initializes the focusable day if the day is in the calendar. If focusable day is not set, then\n * we check for the selected day. If selected day is not set then check if today is in the current\n * calendar. If not then just set the 15th of the current calendar month.\n */\n private initializeFocusableDay(): void {\n if (this.focusableDay && this.isDayInCalendarView(this.focusableDay)) {\n this.setFocusableFlag(this.focusableDay, true);\n } else if (this.selectedDay && this.isDayInCalendarView(this.selectedDay)) {\n this.setFocusableFlag(this.selectedDay, true);\n this.focusableDay = this.selectedDay.clone();\n } else if (this.selectedEndDay && this.isDayInCalendarView(this.selectedEndDay)) {\n this.setFocusableFlag(this.selectedEndDay, true);\n this.focusableDay = this.selectedEndDay.clone();\n } else if (this.isDayInCalendarView(this.today)) {\n this.setFocusableFlag(this.today, true);\n this.focusableDay = this.today.clone();\n } else {\n this.focusableDay = new DayModel(this.calendar.year, this.calendar.month, 15);\n this.setFocusableFlag(this.focusableDay, true);\n }\n }\n\n private setFocusableFlag(day: DayModel, flag: boolean): void {\n if (day) {\n this.currMonthDayViews[day.date - 1].isFocusable = flag;\n }\n }\n\n private setSelectedDay(day: DayModel, flag: boolean) {\n if (day && this.isDayInCalendarView(day)) {\n this.currMonthDayViews[day?.date - 1].isSelected = flag;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DayViewModel } from './model/day-view.model';\nimport { DayModel } from './model/day.model';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Component({\n selector: 'clr-day',\n template: `\n <button\n class=\"day-btn\"\n type=\"button\"\n [class.is-today]=\"dayView.isTodaysDate\"\n [class.is-excluded]=\"dayView.isExcluded\"\n [class.is-disabled]=\"dayView.isDisabled\"\n [class.is-selected]=\"dayView.isSelected\"\n [class.in-range]=\"isInRange()\"\n [class.is-start-range]=\"isRangeStartDay\"\n [class.is-end-range]=\"isRangeEndDay\"\n [attr.tabindex]=\"dayView.tabIndex\"\n (click)=\"selectDay()\"\n (focus)=\"onDayViewFocus()\"\n [attr.aria-current]=\"dayView.isTodaysDate ? 'date' : 'false'\"\n [attr.aria-label]=\"dayString\"\n [attr.aria-selected]=\"dayView.isSelected\"\n >\n {{ dayView.dayModel.date }}\n </button>\n `,\n host: { '[class.day]': 'true' },\n standalone: false,\n})\nexport class ClrDay {\n @Output('selectDay') onSelectDay = new EventEmitter<DayModel>();\n\n private _dayView: DayViewModel;\n\n constructor(\n private _dateNavigationService: DateNavigationService,\n private commonStrings: ClrCommonStringsService\n ) {}\n\n /**\n * DayViewModel input which is used to build the Day View.\n */\n\n @Input('clrDayView')\n get dayView(): DayViewModel {\n return this._dayView;\n }\n set dayView(day: DayViewModel) {\n this._dayView = day;\n }\n\n get dayString(): string {\n return this.dayView.isSelected\n ? this.commonStrings.parse(this.commonStrings.keys.datepickerSelectedLabel, {\n FULL_DATE: this._dayView.dayModel.toDateString(),\n })\n : this._dayView.dayModel.toDateString();\n }\n\n get isRangeStartDay(): boolean {\n return (\n this._dateNavigationService.isRangePicker &&\n this.dayView?.dayModel?.toComparisonString() === this._dateNavigationService.selectedDay?.toComparisonString()\n );\n }\n\n get isRangeEndDay(): boolean {\n return (\n this._dateNavigationService.isRangePicker &&\n this.dayView?.dayModel?.toComparisonString() === this._dateNavigationService.selectedEndDay?.toComparisonString()\n );\n }\n\n /**\n * Calls the DateNavigationService to update the hovered day value of the calendar\n */\n @HostListener('mouseenter')\n hoverListener(): void {\n if (!this.dayView.isDisabled) {\n this._dateNavigationService.hoveredDay = this.dayView.dayModel;\n }\n }\n\n /**\n * Updates the focusedDay in the DateNavigationService when the ClrDay is focused.\n */\n onDayViewFocus() {\n this._dateNavigationService.focusedDay = this.dayView.dayModel;\n }\n\n /**\n * Updates the selectedDay when the ClrDay is selected and closes the datepicker popover.\n */\n selectDay(): void {\n if (this.dayView.isDisabled) {\n return;\n }\n const day: DayModel = this.dayView.dayModel;\n this.onSelectDay.emit(day);\n }\n\n /**\n * Applicable only to date range picker\n * Compares whether the day is in between the start and end date range\n */\n isInRange(): boolean {\n if (!this._dateNavigationService.isRangePicker) {\n return false;\n }\n if (this._dateNavigationService.selectedDay && this._dateNavigationService.selectedEndDay) {\n return (\n this._dayView.dayModel?.isAfter(this._dateNavigationService.selectedDay) &&\n this._dayView.dayModel?.isBefore(this._dateNavigationService.selectedEndDay)\n );\n } else if (this._dateNavigationService.selectedDay && !this._dateNavigationService.selectedEndDay) {\n return (\n this._dayView.dayModel?.isAfter(this._dateNavigationService.selectedDay) &&\n this._dayView.dayModel?.isBefore(this._dateNavigationService.hoveredDay, true)\n );\n } else {\n return false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, HostListener, OnDestroy } from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { Keys } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { DateRangeInput } from './interfaces/date-range.interface';\nimport { ClrDayOfWeek } from './interfaces/day-of-week.interface';\nimport { CalendarViewModel } from './model/calendar-view.model';\nimport { CalendarModel } from './model/calendar.model';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { NO_OF_DAYS_IN_A_WEEK } from './utils/constants';\n\n@Component({\n selector: 'clr-calendar',\n templateUrl: './calendar.html',\n standalone: false,\n})\nexport class ClrCalendar implements OnDestroy {\n /**\n * Calendar View Model to generate the Calendar.\n */\n calendarViewModel: CalendarViewModel;\n\n private _subs: Subscription[] = [];\n\n constructor(\n private _localeHelperService: LocaleHelperService,\n private _dateNavigationService: DateNavigationService,\n private _datepickerFocusService: DatepickerFocusService,\n private _dateIOService: DateIOService,\n private _elRef: ElementRef<HTMLElement>,\n private _dateFormControlService: DateFormControlService,\n private _popoverService: ClrPopoverService\n ) {\n this.generateCalendarView();\n this.initializeSubscriptions();\n }\n\n /**\n * Gets the locale days according to the TranslationWidth.Narrow format.\n */\n get localeDays(): ReadonlyArray<ClrDayOfWeek> {\n return this._localeHelperService.localeDays;\n }\n\n get calendar(): CalendarModel {\n return this._dateNavigationService.displayedCalendar;\n }\n\n get selectedDay(): DayModel {\n return this._dateNavigationService.selectedDay;\n }\n\n get selectedEndDay(): DayModel {\n return this._dateNavigationService.selectedEndDay;\n }\n\n get focusedDay(): DayModel {\n return this._dateNavigationService.focusedDay;\n }\n\n get today(): DayModel {\n return this._dateNavigationService.today;\n }\n\n /**\n * Focuses on the focusable day when the Calendar View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Unsubscribe from subscriptions.\n */\n ngOnDestroy(): void {\n this._subs.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n /**\n * Delegates Keyboard arrow navigation to the DateNavigationService.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (event && this.focusedDay) {\n switch (event.key) {\n case Keys.ArrowUp:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);\n break;\n case Keys.ArrowDown:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);\n break;\n case Keys.ArrowLeft:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(-1);\n break;\n case Keys.ArrowRight:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(1);\n break;\n default:\n break; // No default case. ESLint x-(\n }\n }\n }\n\n setSelectedDay(day: DayModel) {\n const hasActionButtons = this._dateNavigationService.hasActionButtons;\n const selectedDates: DayModel | DateRangeInput = this.updateCalendarViewModal(day);\n this._dateNavigationService.notifySelectedDayChanged(selectedDates, { emitEvent: !hasActionButtons });\n if (!hasActionButtons) {\n this._dateFormControlService.markAsDirty();\n this.validateAndCloseDatePicker();\n }\n }\n\n /**\n * Initialize subscriptions to:\n * 1. update the calendar view model.\n * 2. update the focusable day in the calendar view model.\n * 3. focus on the focusable day in the calendar.\n */\n private initializeSubscriptions(): void {\n this._subs.push(\n this._dateNavigationService.displayedCalendarChange.subscribe(() => {\n this.generateCalendarView();\n })\n );\n\n this._subs.push(\n this._dateNavigationService.focusedDayChange.subscribe((focusedDay: DayModel) => {\n this.calendarViewModel.updateFocusableDay(focusedDay);\n })\n );\n\n this._subs.push(\n this._dateNavigationService.focusOnCalendarChange.subscribe(() => {\n this._datepickerFocusService.focusCell(this._elRef);\n })\n );\n\n this._subs.push(\n this._dateNavigationService.refreshCalendarView.subscribe(() => {\n this.refreshCalendarViewModal();\n })\n );\n }\n\n private validateAndCloseDatePicker() {\n if (\n (this._dateNavigationService.isRangePicker &&\n this._dateNavigationService.selectedDay &&\n this._dateNavigationService.selectedEndDay) ||\n (!this._dateNavigationService.isRangePicker && this._dateNavigationService.selectedDay)\n ) {\n this._popoverService.open = false;\n }\n }\n\n private updateCalendarViewModal(day: DayModel): DayModel | DateRangeInput {\n const startDate = this.calendarViewModel.selectedDay || null,\n isRangePicker = this._dateNavigationService.isRangePicker;\n let endDate = this.calendarViewModel.selectedEndDay || null;\n\n if (isRangePicker) {\n if (!startDate || (!!startDate && !!endDate) || (!!startDate && day?.isBefore(startDate))) {\n this.calendarViewModel.updateSelectedDay(day);\n if (endDate) {\n endDate = undefined;\n this.calendarViewModel.updateSelectedEndDay(endDate);\n }\n } else {\n this.calendarViewModel.updateSelectedEndDay(day);\n }\n } else {\n this.calendarViewModel.updateSelectedDay(day);\n }\n\n return isRangePicker\n ? { startDate: this.calendarViewModel.selectedDay, endDate: this.calendarViewModel.selectedEndDay }\n : this.calendarViewModel.selectedDay;\n }\n\n private refreshCalendarViewModal() {\n this.calendarViewModel.updateSelectedDay(this._dateNavigationService.selectedDay);\n if (this._dateNavigationService.isRangePicker) {\n this.calendarViewModel.updateSelectedEndDay(this._dateNavigationService.selectedEndDay);\n }\n }\n\n /**\n * Generates the Calendar View based on the calendar retrieved from the DateNavigationService.\n */\n private generateCalendarView(): void {\n this.calendarViewModel = new CalendarViewModel(\n this.calendar,\n this.selectedDay,\n this.selectedEndDay,\n this.focusedDay,\n this.today,\n this._localeHelperService.firstDayOfWeek,\n this._dateIOService.disabledDates\n );\n }\n}\n","<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<table class=\"calendar-table\" role=\"presentation\">\n <tr class=\"calendar-row weekdays\">\n @for (day of localeDays; track day) {\n <th class=\"calendar-cell weekday\">\n <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\n </th>\n }\n </tr>\n @for (row of calendarViewModel.calendarView; track row) {\n <tr class=\"calendar-row\">\n @for (dayView of row; track dayView) {\n <td class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\" (selectDay)=\"setSelectedDay($event)\"></clr-day>\n </td>\n }\n </tr>\n }\n</table>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-daypicker',\n templateUrl: './daypicker.html',\n host: { '[class.daypicker]': 'true', role: 'application' },\n standalone: false,\n})\nexport class ClrDaypicker {\n constructor(\n private _viewManagerService: ViewManagerService,\n private _dateNavigationService: DateNavigationService,\n private _localeHelperService: LocaleHelperService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get monthAttrString(): string {\n return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectMonthText, {\n CALENDAR_MONTH: this.calendarMonth,\n });\n }\n\n get yearAttrString(): string {\n return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectYearText, {\n CALENDAR_YEAR: this.calendarYear.toString(),\n });\n }\n\n /**\n * Returns the month value of the calendar in the TranslationWidth.Abbreviated format.\n */\n get calendarMonth(): string {\n return this._localeHelperService.localeMonthsAbbreviated[this._dateNavigationService.displayedCalendar.month];\n }\n\n /**\n * Returns the year value of the calendar.\n */\n get calendarYear(): number {\n return this._dateNavigationService.displayedCalendar.year;\n }\n\n /**\n * Calls the ViewManagerService to change to the monthpicker view.\n */\n changeToMonthView(): void {\n this._viewManagerService.changeToMonthView();\n }\n\n /**\n * Calls the ViewManagerService to change to the yearpicker view.\n */\n changeToYearView(): void {\n this._viewManagerService.changeToYearView();\n }\n\n /**\n * Calls the DateNavigationService to move to the next month.\n */\n nextMonth(): void {\n this._dateNavigationService.moveToNextMonth();\n }\n\n /**\n * Calls the DateNavigationService to move to the previous month.\n */\n previousMonth(): void {\n this._dateNavigationService.moveToPreviousMonth();\n }\n\n /**\n * Calls the DateNavigationService to move to the current month.\n */\n currentMonth(): void {\n this._dateNavigationService.moveToCurrentMonth();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n<div class=\"calendar-header\">\n <div class=\"calendar-pickers\">\n <button\n class=\"calendar-btn monthpicker-trigger\"\n type=\"button\"\n (click)=\"changeToMonthView()\"\n [attr.aria-label]=\"monthAttrString\"\n [attr.title]=\"monthAttrString\"\n >\n {{calendarMonth}}\n </button>\n <button\n class=\"calendar-btn yearpicker-trigger\"\n type=\"button\"\n (click)=\"changeToYearView()\"\n [attr.aria-label]=\"yearAttrString\"\n [attr.title]=\"yearAttrString\"\n >\n {{calendarYear}}\n </button>\n </div>\n <div class=\"calendar-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></cds-icon>\n </button>\n </div>\n</div>\n<clr-calendar></clr-calendar>\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Component({\n selector: 'clr-datepicker-actions',\n template: `\n <button class=\"btn btn-outline\" (click)=\"cancel()\">{{ commonStrings.keys.cancel }}</button>\n <button class=\"btn btn-primary\" (click)=\"apply()\">{{ commonStrings.keys.apply }}</button>\n `,\n host: {\n '[class.datepicker-actions]': 'true',\n },\n standalone: false,\n})\nexport class ClrDatepickerActions {\n constructor(\n protected commonStrings: ClrCommonStringsService,\n private popoverService: ClrPopoverService,\n private dateNavigationService: DateNavigationService,\n private dateFormControlService: DateFormControlService\n ) {}\n\n protected apply() {\n if (\n this.dateNavigationService.isRangePicker &&\n this.dateNavigationService.selectedDay &&\n this.dateNavigationService.selectedEndDay\n ) {\n this.dateNavigationService.notifySelectedDayChanged({\n startDate: this.dateNavigationService.selectedDay,\n endDate: this.dateNavigationService.selectedEndDay,\n });\n this.dateFormControlService.markAsDirty();\n } else if (!this.dateNavigationService.isRangePicker && this.dateNavigationService.selectedDay) {\n this.dateNavigationService.notifySelectedDayChanged(this.dateNavigationService.selectedDay);\n this.dateFormControlService.markAsDirty();\n }\n this.popoverService.open = false;\n }\n\n protected cancel() {\n this.dateNavigationService.resetSelectedDay();\n this.popoverService.open = false;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-datepicker-view-manager',\n templateUrl: './datepicker-view-manager.html',\n providers: [DatepickerFocusService],\n host: {\n '[class.datepicker]': 'true',\n '[class.has-range-option]': 'hasRangeOptions',\n '[class.has-action-buttons]': 'hasActionButtons',\n '[attr.aria-modal]': 'true',\n '[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',\n role: 'dialog',\n },\n standalone: false,\n})\nexport class ClrDatepickerViewManager {\n constructor(\n public commonStrings: ClrCommonStringsService,\n private viewManagerService: ViewManagerService,\n private dateNavigationService: DateNavigationService,\n private dateIOService: DateIOService\n ) {}\n\n /**\n * Returns if the current view is the monthpicker.\n */\n get isMonthView(): boolean {\n return this.viewManagerService.isMonthView;\n }\n\n /**\n * Returns if the current view is the yearpicker.\n */\n get isYearView(): boolean {\n return this.viewManagerService.isYearView;\n }\n\n /**\n * Returns if the current view is the daypicker.\n */\n get isDayView(): boolean {\n return this.viewManagerService.isDayView;\n }\n\n get hasRangeOptions() {\n return !!this.dateNavigationService?.isRangePicker && !!this.dateRangeOptions?.length;\n }\n\n protected get hasActionButtons() {\n return this.dateNavigationService.hasActionButtons;\n }\n\n protected get dateRangeOptions() {\n return this.dateIOService.getRangeOptions();\n }\n\n onRangeOptionSelect(selectedRange) {\n const startDate = this.dateNavigationService.convertDateToDayModel(selectedRange?.value[0]),\n endDate = this.dateNavigationService.convertDateToDayModel(selectedRange?.value[1]);\n this.dateNavigationService.notifySelectedDayChanged({ startDate, endDate }, { emitEvent: !this.hasActionButtons });\n this.dateNavigationService.moveToSpecificMonth(startDate);\n }\n}\n","<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n@if (hasRangeOptions) {\n<clr-vertical-nav class=\"clr-date-range-picker-nav\">\n @for (option of dateRangeOptions; track option) {\n <a\n clrVerticalNavLink\n href=\"javascript:void(0)\"\n [attr.aria-label]=\"option?.label\"\n tabindex=\"0\"\n (keyup.enter)=\"onRangeOptionSelect(option)\"\n (click)=\"onRangeOptionSelect(option)\"\n >\n {{option.label}}\n </a>\n }\n</clr-vertical-nav>\n<ng-container *ngTemplateOutlet=\"calendarView\"></ng-container>\n} @else {\n<div class=\"datepicker-view-manager\">\n @if (isMonthView) {\n <clr-monthpicker></clr-monthpicker>\n } @if (isYearView) {\n <clr-yearpicker></clr-yearpicker>\n } @if (isDayView) {\n <clr-daypicker></clr-daypicker>\n } @if (hasActionButtons) {\n <clr-datepicker-actions></clr-datepicker-actions>\n }\n</div>\n}\n\n<ng-template #calendarView>\n <div class=\"datepicker-view-manager\">\n @if (isMonthView) {\n <clr-monthpicker></clr-monthpicker>\n } @if (isYearView) {\n <clr-yearpicker></clr-yearpicker>\n } @if (isDayView) {\n <clr-daypicker></clr-daypicker>\n } @if (hasActionButtons) {\n <clr-datepicker-actions></clr-datepicker-actions>\n }\n </div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, Input, Optional, Renderer2, ViewChild } from '@angular/core';\nimport {\n ClrAbstractContainer,\n ControlClassService,\n ControlIdService,\n FormsFocusService,\n LayoutService,\n NgControlService,\n} from '@clr/angular/forms/common';\nimport {\n ClrPopoverHostDirective,\n ClrPopoverPosition,\n ClrPopoverService,\n ClrPopoverType,\n DROPDOWN_POSITIONS,\n} from '@clr/angular/popover/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { startWith } from 'rxjs/operators';\n\nimport { ClrWeekday } from './enums/weekday.enum';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerEnabledService } from './providers/datepicker-enabled.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-date-container, clr-date-range-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n @if (!label && addGrid()) {\n <label></label>\n }\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\" clrPopoverOrigin>\n <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n <!-- render range inputs only if using clr-date-range-container -->\n @if (isRangePicker) {\n <ng-content select=\"[clrStartDate]\"></ng-content>\n <span class=\"date-range-separator\">-</span>\n <ng-content select=\"[clrEndDate]\"></ng-content>\n }\n <!-- no @if for the singe-date input because it breaks the \"auto-wrapped\" date picker -->\n <ng-content select=\"[clrDate]\"></ng-content>\n @if (isEnabled) {\n <button\n #actionButton\n type=\"button\"\n clrPopoverOpenCloseButton\n class=\"clr-input-group-icon-action\"\n [disabled]=\"isInputDateDisabled\"\n >\n <cds-icon status=\"info\" shape=\"calendar\"></cds-icon>\n </button>\n }\n <clr-datepicker-view-manager\n *clrPopoverContent=\"\n open;\n at: popoverPosition;\n type: popoverType;\n outsideClickToClose: true;\n scrollToClose: true\n \"\n cdkTrapFocus\n ></clr-datepicker-view-manager>\n </div>\n </div>\n @if (showHelper) {\n <ng-content select=\"clr-control-helper\"></ng-content>\n }\n @if (showInvalid) {\n <ng-content select=\"clr-control-error\"></ng-content>\n }\n @if (showValid) {\n <ng-content select=\"clr-control-success\"></ng-content>\n }\n </div>\n `,\n providers: [\n ControlIdService,\n LocaleHelperService,\n ControlClassService,\n FormsFocusService,\n NgControlService,\n DateIOService,\n DateNavigationService,\n DatepickerEnabledService,\n DateFormControlService,\n ViewManagerService,\n ],\n hostDirectives: [ClrPopoverHostDirective],\n host: {\n '[class.clr-date-container]': 'true',\n '[class.clr-form-control-disabled]': 'isInputDateDisabled',\n '[class.clr-form-control]': 'true',\n '[class.clr-row]': 'addGrid()',\n },\n standalone: false,\n})\nexport class ClrDateContainer extends ClrAbstractContainer implements AfterViewInit {\n focus = false;\n\n protected popoverType = ClrPopoverType.DROPDOWN;\n private toggleButton: ElementRef<HTMLButtonElement>;\n\n constructor(\n protected renderer: Renderer2,\n protected elem: ElementRef,\n private popoverService: ClrPopoverService,\n private dateNavigationService: DateNavigationService,\n private datepickerEnabledService: DatepickerEnabledService,\n private dateFormControlService: DateFormControlService,\n private dateIOService: DateIOService,\n public commonStrings: ClrCommonStringsService,\n focusService: FormsFocusService,\n private viewManagerService: ViewManagerService,\n protected override controlClassService: ControlClassService,\n @Optional() protected override layoutService: LayoutService,\n protected override ngControlService: NgControlService,\n private localeHelperService: LocaleHelperService\n ) {\n super(layoutService, controlClassService, ngControlService);\n\n this.subscriptions.push(\n focusService.focusChange.subscribe(state => {\n this.focus = state;\n })\n );\n\n this.subscriptions.push(\n popoverService.openChange.subscribe(() => {\n dateFormControlService.markAsTouched();\n })\n );\n\n if (dateNavigationService) {\n const tagName = elem.nativeElement.tagName.toLowerCase();\n dateNavigationService.hasActionButtons = dateNavigationService.isRangePicker =\n tagName === 'clr-date-range-container';\n }\n }\n\n /**\n * Overrides the locale-derived first day of the week for the calendar.\n * Accepts a `ClrWeekday` value (Sunday=0 through Saturday=6).\n * When not set, the first day of the week is determined by the Angular locale.\n */\n @Input('clrFirstDayOfWeek')\n set firstDayOfWeek(value: ClrWeekday | null) {\n this.localeHelperService.updateFirstDayOfWeek(value ?? null);\n }\n\n /**\n * For date range picker actions buttons are shown by default\n */\n @Input('showActionButtons')\n set showActionButtons(flag: boolean) {\n if (this.dateNavigationService.isRangePicker && !flag) {\n console.error('Error! The date range picker requires action buttons, [showActionButtons] cannot be turned off.');\n } else {\n this.dateNavigationService.hasActionButtons = flag;\n }\n }\n\n @Input('clrPosition')\n set clrPosition(position: string | ClrPopoverPosition) {\n if (!position) {\n return;\n }\n\n const posIndex = DROPDOWN_POSITIONS.indexOf(position as ClrPopoverPosition);\n\n if (posIndex === -1) {\n return;\n }\n\n this.viewManagerService.position = DROPDOWN_POSITIONS[posIndex];\n }\n\n @Input()\n set rangeOptions(rangeOptions) {\n this.dateIOService.setRangeOptions(rangeOptions);\n }\n\n @Input()\n set min(dateString: string) {\n if (this.dateNavigationService.isRangePicker) {\n this.dateIOService.setMinDate(dateString);\n } else {\n console.error(\n 'Error! The date container [min] input only works for date range pickers. Use the native `min` attribute/property for single-date inputs.'\n );\n }\n }\n\n @Input()\n set max(dateString: string) {\n if (this.dateNavigationService.isRangePicker) {\n this.dateIOService.setMaxDate(dateString);\n } else {\n console.error(\n 'Error! The date container [max] input only works for date range pickers. Use the native `max` attribute/property for single-date inputs.'\n );\n }\n }\n\n @ViewChild('actionButton')\n set actionButton(button: ElementRef<HTMLButtonElement>) {\n this.toggleButton = button;\n }\n\n get popoverPosition(): ClrPopoverPosition {\n return this.viewManagerService.position;\n }\n\n get open() {\n return this.popoverService.open;\n }\n\n /**\n * Returns if the Datepicker is enabled or not. If disabled, hides the datepicker trigger.\n */\n get isEnabled(): boolean {\n return this.datepickerEnabledService.isEnabled;\n }\n\n /**\n * Return if Datepicker is diabled or not as Form Control\n */\n get isInputDateDisabled(): boolean {\n /* clrForm wrapper or without clrForm */\n return (\n (this.control && this.control.disabled) || (this.dateFormControlService && this.dateFormControlService.disabled)\n );\n }\n\n protected get isRangePicker(): boolean {\n return this.dateNavigationService.isRangePicker;\n }\n\n ngAfterViewInit(): void {\n this.dateRangeStructuralChecks();\n this.subscriptions.push(\n this.popoverService.openChange.subscribe(open => {\n if (open) {\n this.initializeCalendar();\n } else {\n this.toggleButton.nativeElement.focus();\n this.dateNavigationService.resetSelectedDay();\n }\n })\n );\n\n this.subscriptions.push(this.listenForDateChanges());\n }\n\n /**\n * Return the label for the toggle button.\n * If there's a selected date, the date is included in the label.\n */\n private getToggleButtonLabel(day: DayModel): string {\n if (day) {\n const formattedDate = this.dateIOService.toLocaleDisplayFormatString(day.toDate());\n\n return this.commonStrings.parse(this.commonStrings.keys.datepickerToggleChangeDateLabel, {\n SELECTED_DATE: formattedDate,\n });\n }\n return this.commonStrings.keys.datepickerToggleChooseDateLabel;\n }\n\n private listenForDateChanges() {\n // because date-input.ts initializes the input in ngAfterViewInit,\n // using a databound attribute to change the button labels results in ExpressionChangedAfterItHasBeenCheckedError.\n // so instead, update the attribute directly on the element\n return this.dateNavigationService.selectedDayChange\n .pipe(startWith(this.dateNavigationService.selectedDay))\n .subscribe(day => {\n if (this.isEnabled) {\n const label = this.getToggleButtonLabel(day);\n const toggleEl = this.toggleButton.nativeElement;\n this.renderer.setAttribute(toggleEl, 'aria-label', label);\n this.renderer.setAttribute(toggleEl, 'title', label);\n }\n });\n }\n\n /**\n * Processes the user input and Initializes the Calendar everytime the datepicker popover is open.\n */\n private initializeCalendar(): void {\n this.dateNavigationService.initializeCalendar();\n }\n\n private dateRangeStructuralChecks() {\n if (this.dateNavigationService.isRangePicker) {\n const inputs: HTMLElement[] = Array.from(this.elem.nativeElement.querySelectorAll('input'));\n if (inputs.some(input => input.classList.contains('clr-date-input'))) {\n console.error('Error! clr-date-range-container must contain clrStartDate and clrEndDate inputs');\n }\n if (!inputs.some(input => input.classList.contains('clr-date-start-input'))) {\n console.error('Error! clr-date-range-container must contain clrStartDate input');\n }\n if (!inputs.some(input => input.classList.contains('clr-date-end-input'))) {\n console.error('Error! clr-date-range-container must contain clrEndDate input');\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n PLATFORM_ID,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { FormsFocusService, WrappedFormControl } from '@clr/angular/forms/common';\nimport { isBooleanAttributeSet } from '@clr/angular/utils';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrDateContainer } from './date-container';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerEnabledService } from './providers/datepicker-enabled.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { datesAreEqual } from './utils/date-utils';\n\n// There are four ways the datepicker value is set\n// 1. Value set by user typing into text input as a string ex: '01/28/2015'\n// 2. Value set explicitly by Angular Forms APIs as a string ex: '01/28/2015'\n// 3. Value set by user via datepicker UI as a Date Object\n// 4. Value set via `clrDate` input as a Date Object\n\n@Directive()\nexport abstract class ClrDateInputBase\n extends WrappedFormControl<ClrDateContainer>\n implements OnInit, AfterViewInit, OnDestroy\n{\n static ngAcceptInputType_date: Date | null | string;\n\n @Input() placeholder: string;\n\n protected override index = 1;\n\n private initialClrDateInputValue: Date;\n private previousDateChange: Date;\n\n protected abstract dateChange: EventEmitter<Date>;\n\n constructor(\n viewContainerRef: ViewContainerRef,\n injector: Injector,\n protected override el: ElementRef<HTMLInputElement>,\n protected override renderer: Renderer2,\n @Self()\n @Optional()\n protected control: NgControl,\n @Optional() @Inject(forwardRef(() => ClrDateContainer)) private container: ClrDateContainer,\n @Optional() protected dateIOService: DateIOService,\n @Optional() protected dateNavigationService: DateNavigationService,\n @Optional() private datepickerEnabledService: DatepickerEnabledService,\n @Optional() private dateFormControlService: DateFormControlService,\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional() private focusService: FormsFocusService,\n protected datepickerFocusService: DatepickerFocusService\n ) {\n super(viewContainerRef, ClrDateContainer, injector, control, renderer, el);\n }\n\n get disabled() {\n if (this.dateFormControlService) {\n return this.dateFormControlService.disabled || !!this.control?.control?.disabled;\n }\n return null;\n }\n\n @Input('disabled')\n @HostBinding('disabled')\n set disabled(value: boolean | string) {\n if (this.dateFormControlService) {\n this.dateFormControlService.setDisabled(isBooleanAttributeSet(value));\n }\n }\n\n @HostBinding('attr.placeholder')\n get placeholderText(): string {\n return this.placeholder ? this.placeholder : this.dateIOService.placeholderText;\n }\n\n @HostBinding('attr.type')\n get inputType(): string {\n return isPlatformBrowser(this.platformId) && this.usingNativeDatepicker() ? 'date' : 'text';\n }\n\n protected abstract get userSelectedDayChange(): Observable<DayModel>;\n\n override ngOnInit() {\n super.ngOnInit();\n this.populateServicesFromContainerComponent();\n\n this.subscriptions.push(\n this.listenForUserSelectedDayChanges(),\n this.listenForControlValueChanges(),\n this.listenForTouchChanges(),\n this.listenForDirtyChanges(),\n this.listenForInputRefocus()\n );\n }\n\n ngAfterViewInit() {\n // I don't know why I have to do this but after using the new HostWrapping Module I have to delay the processing\n // of the initial Input set by the user to here. If I do not 2 issues occur:\n // 1. The Input setter is called before ngOnInit. ngOnInit initializes the services without which the setter fails.\n // 2. The Renderer doesn't work before ngAfterViewInit (It used to before the new HostWrapping Module for some reason).\n // I need the renderer to set the value property on the input to make sure that if the user has supplied a Date\n // input object, we reflect it with the right date on the input field using the IO service. I am not sure if\n // these are major issues or not but just noting them down here.\n this.processInitialInputs();\n }\n\n @HostListener('focus')\n setFocusStates() {\n this.setFocus(true);\n }\n\n override triggerValidation() {\n super.triggerValidation();\n this.setFocus(false);\n }\n\n @HostListener('change', ['$event.target'])\n onValueChange(target: HTMLInputElement) {\n const validDateValue = this.dateIOService.getDateValueFromDateString(target.value);\n if (this.usingClarityDatepicker() && validDateValue) {\n this.updateDate(validDateValue, true);\n } else if (this.usingNativeDatepicker()) {\n const [year, month, day] = target.value.split('-');\n this.updateDate(new Date(+year, +month - 1, +day), true);\n } else {\n this.emitDateOutput(null);\n }\n }\n\n protected datepickerHasFormControl() {\n return !!this.control;\n }\n\n protected setDate(date: Date | string) {\n if (typeof date === 'string') {\n date = new Date(date);\n }\n\n if (this.previousDateChange !== date) {\n this.updateDate(date);\n }\n\n if (!this.initialClrDateInputValue) {\n this.initialClrDateInputValue = date;\n }\n }\n\n protected triggerControlInputValidation() {\n if (this.datepickerHasFormControl()) {\n this.control.control?.updateValueAndValidity({ emitEvent: false });\n this.control.control?.setErrors(this.control.control.errors);\n }\n }\n\n private usingClarityDatepicker() {\n return this.datepickerEnabledService.isEnabled;\n }\n\n private usingNativeDatepicker() {\n return !this.datepickerEnabledService.isEnabled;\n }\n\n private setFocus(focus: boolean) {\n if (this.focusService) {\n this.focusService.focused = focus;\n }\n }\n\n private populateServicesFromContainerComponent() {\n if (!this.container) {\n this.dateIOService = this.getProviderFromContainer(DateIOService);\n this.dateNavigationService = this.getProviderFromContainer(DateNavigationService);\n this.datepickerEnabledService = this.getProviderFromContainer(DatepickerEnabledService);\n this.dateFormControlService = this.getProviderFromContainer(DateFormControlService);\n }\n }\n\n private processInitialInputs() {\n if (this.datepickerHasFormControl()) {\n this.updateDate(this.dateIOService.getDateValueFromDateString(this.control.value));\n } else {\n this.updateDate(this.initialClrDateInputValue);\n }\n }\n\n private updateDate(value: Date, setByUserInteraction = false) {\n const date = this.getValidDateValueFromDate(value);\n if (setByUserInteraction) {\n this.emitDateOutput(date);\n } else {\n this.previousDateChange = date;\n }\n\n if (this.dateNavigationService) {\n const dayModel = date ? new DayModel(date.getFullYear(), date.getMonth(), date.getDate()) : null;\n\n this.updateDayModel(dayModel);\n }\n\n this.updateInput(date);\n }\n\n private updateInput(date: Date) {\n if (date) {\n const dateString = this.dateIOService.toLocaleDisplayFormatString(date);\n if (this.usingNativeDatepicker()) {\n // valueAsDate expects UTC, date from input is time-zoned\n date.setMinutes(date.getMinutes() - date.getTimezoneOffset());\n this.renderer.setProperty(this.el.nativeElement, 'valueAsDate', date);\n } else if (this.datepickerHasFormControl() && dateString !== this.control.value) {\n this.control.control.setValue(dateString);\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', dateString);\n }\n this.validateDateRange();\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n }\n }\n\n private getValidDateValueFromDate(date: Date) {\n if (this.dateIOService) {\n const dateString = this.dateIOService.toLocaleDisplayFormatString(date);\n return this.dateIOService.getDateValueFromDateString(dateString);\n } else {\n return null;\n }\n }\n\n private emitDateOutput(date: Date) {\n if (!datesAreEqual(date, this.previousDateChange)) {\n this.dateChange.emit(date);\n this.previousDateChange = date;\n } else if (!date && this.previousDateChange) {\n this.dateChange.emit(null);\n this.previousDateChange = null;\n }\n }\n\n private listenForControlValueChanges() {\n if (this.datepickerHasFormControl()) {\n return this.control.valueChanges\n .pipe(\n // only update date value if not being set by user\n filter(() => !this.datepickerFocusService.elementIsFocused(this.el.nativeElement))\n )\n .subscribe((value: string) => this.updateDate(this.dateIOService.getDateValueFromDateString(value)));\n } else {\n return null;\n }\n }\n\n private listenForUserSelectedDayChanges() {\n return this.userSelectedDayChange.subscribe(dayModel => this.updateDate(dayModel?.toDate(), true));\n }\n\n private listenForTouchChanges() {\n return this.dateFormControlService.touchedChange\n .pipe(filter(() => this.datepickerHasFormControl()))\n .subscribe(() => this.control.control.markAsTouched());\n }\n\n private listenForDirtyChanges() {\n return this.dateFormControlService.dirtyChange\n .pipe(filter(() => this.datepickerHasFormControl()))\n .subscribe(() => this.control.control.markAsDirty());\n }\n\n private listenForInputRefocus() {\n return this.dateNavigationService.selectedDayChange\n .pipe(filter(date => !!date && !this.dateNavigationService.isRangePicker))\n .subscribe(() => this.datepickerFocusService.focusInput(this.el.nativeElement));\n }\n\n /**\n * In case of date range error, both start & end date field validation has to be triggered\n * if either of the field gets updated\n */\n private validateDateRange() {\n if (this.dateNavigationService.isRangePicker) {\n const controls = this.ngControlService?.controls;\n const isValid = this.dateNavigationService.selectedDay?.isBefore(this.dateNavigationService.selectedEndDay, true);\n if (isValid && controls?.some(control => control.hasError('range'))) {\n controls.forEach((ngControl: NgControl) => {\n ngControl?.control?.updateValueAndValidity({ emitEvent: false });\n });\n }\n }\n }\n\n protected abstract updateDayModel(dayModel: DayModel): void;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n selector: '[clrDate]',\n host: {\n '[class.clr-input]': 'true',\n '[class.clr-date-input]': 'true',\n },\n providers: [DatepickerFocusService],\n standalone: false,\n})\nexport class ClrDateInput extends ClrDateInputBase {\n @Output('clrDateChange') override dateChange = new EventEmitter<Date>(false);\n\n @Input('clrDate')\n set date(date: Date | string) {\n this.setDate(date);\n }\n\n @Input()\n set min(dateString: string) {\n this.dateIOService.setMinDate(dateString);\n }\n\n @Input()\n set max(dateString: string) {\n this.dateIOService.setMaxDate(dateString);\n }\n\n protected override get userSelectedDayChange() {\n return this.dateNavigationService.selectedDayChange;\n }\n\n protected override updateDayModel(dayModel: DayModel) {\n this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = dayModel;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EventEmitter, HostBinding, Input, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n selector: '[clrStartDate]',\n host: {\n '[class.clr-input]': 'true',\n '[class.clr-date-start-input]': 'true',\n '[style.text-align]': \"'right'\",\n },\n providers: [DatepickerFocusService],\n standalone: false,\n})\nexport class ClrStartDateInput extends ClrDateInputBase {\n @Output('clrStartDateChange') override dateChange = new EventEmitter<Date>(false);\n\n @Input('inputWidth') inputWidth = 13;\n\n @Input('clrStartDate')\n set date(date: Date | string) {\n this.setDate(date);\n }\n\n @HostBinding('attr.size')\n get inputSize() {\n return this.inputWidth;\n }\n\n protected override get userSelectedDayChange() {\n return this.dateNavigationService.selectedDayChange;\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.subscriptions.push(this.dateIOService.minDateChange.subscribe(() => this.triggerControlInputValidation()));\n }\n\n protected override updateDayModel(dayModel: DayModel) {\n this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = dayModel;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EventEmitter, HostBinding, Input, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n selector: '[clrEndDate]',\n host: {\n '[class.clr-input]': 'true',\n '[class.clr-date-end-input]': 'true',\n },\n providers: [DatepickerFocusService],\n standalone: false,\n})\nexport class ClrEndDateInput extends ClrDateInputBase {\n @Output('clrEndDateChange') override dateChange = new EventEmitter<Date>(false);\n\n @Input('inputWidth') inputWidth = 13;\n\n @Input('clrEndDate')\n set date(date: Date | string) {\n this.setDate(date);\n }\n\n @HostBinding('attr.size')\n get inputSize() {\n return this.inputWidth;\n }\n\n protected override get userSelectedDayChange() {\n return this.dateNavigationService.selectedEndDayChange;\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.subscriptions.push(this.dateIOService.maxDateChange.subscribe(() => this.triggerControlInputValidation()));\n }\n\n protected override updateDayModel(dayModel: DayModel) {\n this.dateNavigationService.persistedEndDate = this.dateNavigationService.selectedEndDay = dayModel;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Directive({\n selector: '[clrDate], [clrStartDate], [clrEndDate]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }],\n standalone: false,\n})\nexport class ClrDateInputValidator implements Validator {\n constructor(@Optional() private dateIOService: DateIOService) {}\n\n validate(control: AbstractControl): ValidationErrors {\n if (this.dateIOService) {\n const value = this.dateIOService.getDateValueFromDateString(control.value);\n const minDate = this.dateIOService.disabledDates.minDate.toDate();\n const maxDate = this.dateIOService.disabledDates.maxDate.toDate();\n\n if (value && value < minDate) {\n return { min: { min: minDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n } else if (value && value > maxDate) {\n return { max: { max: maxDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n }\n }\n\n return null;\n }\n}\n\n@Directive({\n selector: '[clrStartDate]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ClrStartDateInputValidator, multi: true }],\n standalone: false,\n})\nexport class ClrStartDateInputValidator implements Validator {\n constructor(\n @Optional() private dateIOService: DateIOService,\n @Optional() private dateNavigationService: DateNavigationService\n ) {}\n\n validate(control: AbstractControl): ValidationErrors {\n if (this.dateIOService) {\n const value = this.dateIOService.getDateValueFromDateString(control.value);\n const endDate = this.dateNavigationService?.selectedEndDay?.toDate();\n\n if (value && endDate && value > endDate) {\n return { range: { startDate: value, endDate } };\n }\n }\n\n return null;\n }\n}\n\n@Directive({\n selector: '[clrEndDate]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ClrEndDateInputValidator, multi: true }],\n standalone: false,\n})\nexport class ClrEndDateInputValidator implements Validator {\n constructor(\n @Optional() private dateIOService: DateIOService,\n @Optional() private dateNavigationService: DateNavigationService\n ) {}\n\n validate(control: AbstractControl): ValidationErrors {\n if (this.dateIOService) {\n const value = this.dateIOService.getDateValueFromDateString(control.value);\n const startDate = this.dateNavigationService?.selectedDay?.toDate();\n\n if (value && startDate && value < startDate) {\n return { range: { startDate, endDate: value } };\n }\n }\n\n return null;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDayOfWeek {\n readonly day: string;\n readonly narrow: string;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrCommonFormsModule } from '@clr/angular/forms/common';\nimport {\n angleIcon,\n calendarIcon,\n ClarityIcons,\n ClrIcon,\n errorStandardIcon,\n eventIcon,\n successStandardIcon,\n} from '@clr/angular/icon';\nimport { ClrVerticalNavModule } from '@clr/angular/layout/vertical-nav';\nimport { ClrPopoverModuleNext } from '@clr/angular/popover/common';\nimport { CdkTrapFocusModule, ClrConditionalModule, ClrHostWrappingModule } from '@clr/angular/utils';\n\nimport { ClrCalendar } from './calendar';\nimport { ClrDateContainer } from './date-container';\nimport { ClrEndDateInput } from './date-end-input';\nimport { ClrDateInputValidator, ClrEndDateInputValidator, ClrStartDateInputValidator } from './date-input.validator';\nimport { ClrDateInput } from './date-single-input';\nimport { ClrStartDateInput } from './date-start-input';\nimport { ClrDatepickerActions } from './datepicker-action-buttons';\nimport { ClrDatepickerViewManager } from './datepicker-view-manager';\nimport { ClrDay } from './day';\nimport { ClrDaypicker } from './daypicker';\nimport { ClrMonthpicker } from './monthpicker';\nimport { ClrYearpicker } from './yearpicker';\n\nexport const CLR_DATEPICKER_DIRECTIVES: Type<any>[] = [\n ClrDateInput,\n ClrDay,\n ClrDateContainer,\n ClrDateInputValidator,\n ClrStartDateInput,\n ClrEndDateInput,\n ClrStartDateInputValidator,\n ClrEndDateInputValidator,\n ClrDatepickerViewManager,\n ClrMonthpicker,\n ClrYearpicker,\n ClrDaypicker,\n ClrCalendar,\n ClrDatepickerActions,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n CdkTrapFocusModule,\n ClrHostWrappingModule,\n ClrConditionalModule,\n ClrPopoverModuleNext,\n ClrIcon,\n ClrCommonFormsModule,\n ClrVerticalNavModule,\n ],\n declarations: [CLR_DATEPICKER_DIRECTIVES],\n exports: [CLR_DATEPICKER_DIRECTIVES],\n})\nexport class ClrDatepickerModule {\n constructor() {\n ClarityIcons.addIcons(successStandardIcon, errorStandardIcon, angleIcon, eventIcon, calendarIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './date-input';\nexport * from './date-single-input';\nexport * from './date-start-input';\nexport * from './date-end-input';\nexport * from './date-input.validator';\nexport * from './date-container';\nexport * from './datepicker-view-manager';\nexport * from './daypicker';\nexport * from './monthpicker';\nexport * from './yearpicker';\nexport * from './calendar';\nexport * from './day';\nexport * from './datepicker-action-buttons';\nexport * from './interfaces/day-of-week.interface';\nexport * from './enums/weekday.enum';\n\nexport * from './datepicker.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.LocaleHelperService","i2.DateNavigationService","i3.DatepickerFocusService","i4.ViewManagerService","i5","i6","i1.DateNavigationService","i2.ViewManagerService","i2","i4.DateIOService","i5.DateFormControlService","i7.ClrDay","i1.ViewManagerService","i3.LocaleHelperService","i6.ClrCalendar","i1","i3.DateNavigationService","i4.DateFormControlService","i7.ClrMonthpicker","i8.ClrYearpicker","i9.ClrDaypicker","i10.ClrDatepickerActions","i3.DatepickerEnabledService","i5.DateIOService","i8.ViewManagerService","i9.LocaleHelperService","i10","i11","i12.ClrDatepickerViewManager","i2.DateIOService","i4.DatepickerEnabledService","i7.DatepickerFocusService","i1.DateIOService"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;MAMU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;AACpC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAsB3C,IAAA;AApBC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IAC3C;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;IACzC;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;;AAGA,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;8GAzBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACVD;;;;;AAKG;MAEU,QAAQ,CAAA;AACnB,IAAA,WAAA,CACW,IAAY,EACZ,KAAa,EACb,IAAY,EAAA;QAFZ,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;IACZ;AAEH;;AAEG;AACH,IAAA,OAAO,CAAC,GAAa,EAAA;QACnB,IAAI,GAAG,EAAE;YACP,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;QACrF;AACA,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;IACnD;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;;;;AAIvB,QAAA,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACrE,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1E;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;IACvD;IAEA,kBAAkB,GAAA;QAChB,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;IACpE;IAEA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE;AACjD,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,IAAI,EAAE,SAAS;AAChB,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,QAAQ,CAAC,GAAa,EAAE,YAAY,GAAG,KAAK,EAAA;AAC1C,QAAA,OAAO;AACL,cAAE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,OAAO;AAClD,cAAE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE;IACvD;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,GAAa,EAAE,YAAY,GAAG,KAAK,EAAA;AACzC,QAAA,OAAO;AACL,cAAE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,OAAO;AAClD,cAAE,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE;IACvD;AAEQ,IAAA,GAAG,CAAC,GAAW,EAAA;AACrB,QAAA,OAAO,GAAG,GAAG,EAAE,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,CAAA,EAAG,GAAG,EAAE;IACxC;AACD;;AChFD;;;;;AAKG;AAEH;;AAEG;AACI,MAAM,qBAAqB,GAAG,SAAS;AAE9C;AACO,MAAM,mBAAmB,GAAG,aAAa;AACzC,MAAM,mBAAmB,GAAG,aAAa;AAChD;AACA;AAEO,MAAM,eAAe,GAAG,WAAW;AAEnC,MAAM,gBAAgB,GAAG,MAAM;AAE/B,MAAM,sBAAsB,GAAG,OAAO;AAEtC,MAAM,SAAS,GAAG,SAAS;AAE3B,MAAM,IAAI,GAAG,MAAM;AACnB,MAAM,KAAK,GAAG,IAAI;AAClB,MAAM,IAAI,GAAG,IAAI;AASjB,MAAM,aAAa,GAA2B;AACnD,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;CAC5B;AAEM,MAAM,aAAa,GAA2B;AACnD,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;CAC5B;AAEM,MAAM,UAAU,GAA2B;AAChD,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;CAC5B;AAEM,MAAM,oBAAoB,GAAG,CAAC;AAC9B,MAAM,2BAA2B,GAAG,CAAC;AACrC,MAAM,uBAAuB,GAAW,oBAAoB,GAAG,2BAA2B;;ACtDjG;;;;;AAKG;AAIH;;AAEG;AACG,SAAU,yBAAyB,CAAC,IAAY,EAAE,KAAa,EAAA;;AAEnE,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AAC/C;AAEA;;AAEG;SACa,MAAM,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;AAC9D,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE;AAC7C;AAEA;;;;AAIG;AACG,SAAU,oBAAoB,CAAC,IAAY,EAAA;AAC/C,IAAA,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE;QAC1D,OAAO,CAAC,CAAC;IACX;AACA,IAAA,IAAI,IAAI,GAAG,GAAG,EAAE;AACd,QAAA,OAAO,IAAI;IACb;IACA,MAAM,QAAQ,GAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACjD,IAAA,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG;AACxD,IAAA,IAAI,MAAM,GAAW,IAAI,GAAG,OAAO;AACnC,IAAA,IAAI,MAAM,GAAG,QAAQ,GAAG,EAAE,EAAE;AAC1B,QAAA,MAAM,GAAG,MAAM,GAAG,GAAG;IACvB;AACA,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,aAAa,CAAC,KAAW,EAAE,KAAW,EAAA;IACpD,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI,EAAE;QAClD,QACE,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;AAC3C,YAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACrC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;IAEvC;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;;ACvDA;;;;;AAKG;AAEH;;;AAGG;IACS;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACd,CAAC,EARW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;ACXtB;;;;;AAKG;AAgBH;;AAEG;MAEU,mBAAmB,CAAA;AAO9B,IAAA,WAAA,CAAsC,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;AANpC,QAAA,IAAA,CAAA,eAAe,GAAW,UAAU,CAAC,MAAM;QAOjD,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;IAC7B;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;IACzB;;AAGA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;IAChD;AAEA,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,wBAAwB;IACtC;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;IAC/B;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;IAC/B;AAEA;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,GAAsB,EAAA;AACzC,QAAA,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE;YACxE,IAAI,CAAC,8BAA8B,EAAE;YACrC,IAAI,CAAC,oBAAoB,EAAE;YAE3B;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG;QAE1B,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEA;;AAEG;IACK,oBAAoB,GAAA;;QAE1B,IAAI,CAAC,8BAA8B,EAAE;QACrC,IAAI,CAAC,0BAA0B,EAAE;QACjC,IAAI,CAAC,iCAAiC,EAAE;QACxC,IAAI,CAAC,0BAA0B,EAAE;QACjC,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEA;;;AAGG;IACK,oBAAoB,GAAA;;QAE1B,MAAM,OAAO,GAAG,EAAE;AAClB,QAAA,MAAM,WAAW,GAAa,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACjH,QAAA,MAAM,aAAa,GAAa,iBAAiB,CAC/C,IAAI,CAAC,MAAM,EACX,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,MAAM,CACxB,CAAC,KAAK,EAAE;AAET,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE;;QAGA,IAAI,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM,EAAE;AAC3C,YAAA,MAAM,QAAQ,GAAsC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC;AAC1F,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC3B;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO;IAC5B;AAEA;;;AAGG;IACK,iCAAiC,GAAA;QACvC,IAAI,CAAC,wBAAwB,GAAG,mBAAmB,CACjD,IAAI,CAAC,MAAM,EACX,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,WAAW,CAC7B,CAAC,KAAK,EAAE;IACX;AAEA;;;AAGG;IACK,0BAA0B,GAAA;QAChC,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;IAChH;AAEA;;AAEG;IACK,8BAA8B,GAAA;QACpC,IAAI,CAAC,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7D;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC;IAC9E;AA1HW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAOV,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAPlB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;0BAQc,MAAM;2BAAC,SAAS;;;AChC/B;;;;;AAKG;MAuBU,aAAa,CAAA;AAqBxB,IAAA,WAAA,CAAY,mBAAwC,EAAA;AApBpD;;;;;;AAMG;AACH,QAAA,IAAA,CAAA,aAAa,GAAc;YACzB,OAAO,EAAE,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,OAAO,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC;QAED,IAAA,CAAA,oBAAoB,GAAW,qBAAqB;AACpD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAY;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAY;QAG/B,IAAA,CAAA,mBAAmB,GAA2B,aAAa;AAC3D,QAAA,IAAA,CAAA,UAAU,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;AAG/C,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,gBAAgB;QAChE,IAAI,CAAC,6BAA6B,EAAE;IACtC;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,MAAM,MAAM,GAA6B,IAAI,CAAC,mBAAmB,CAAC,MAAM;AACxE,QAAA,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACpF;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;;;QAGrB,IAAI,CAAC,IAAI,EAAE;;AAET,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;QACjE;QACA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACrD;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;;;QAGrB,IAAI,CAAC,IAAI,EAAE;;AAET,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;QACzD;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;QACjE;QACA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACrD;AAEA,IAAA,eAAe,CAAC,YAA+B,EAAA;QAC7C,MAAM,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,IAAI,EAAE;IACpD;IAEA,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA,IAAA,2BAA2B,CAAC,IAAU,EAAA;QACpC,IAAI,IAAI,EAAE;YACR,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACzB,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,MAAM,MAAM,GAAW,IAAI,CAAC,OAAO,EAAE;YACrC,MAAM,OAAO,GAAW,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC3C,YAAA,MAAM,OAAO,GAAW,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,MAAM;AACrE,YAAA,MAAM,QAAQ,GAAW,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,OAAO;AACzE,YAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE;gBAC9C,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;YAC1F;AAAO,iBAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE;gBACrD,OAAO,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;YAC1F;iBAAO;gBACL,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;YAC1F;QACF;AACA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,0BAA0B,CAAC,IAAY,EAAA;QACrC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,YAAA,OAAO,IAAI;QACb;QACA,MAAM,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACxD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI;QACb;QACA,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,SAAS;AACpD,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE;;YAE9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;QAClE;AAAO,aAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE;;YAErD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;QAClE;aAAO;;YAEL,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;QAClE;IACF;AAEQ,IAAA,wBAAwB,CAAC,YAA+B,EAAA;QAC9D,MAAM,YAAY,GAAG,EAAE;AACvB,QAAA,YAAY,EAAE,OAAO,CAAC,CAAC,WAA4B,KAAI;AACrD,YAAA,IACE,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAChC,gBAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,eAAe;AACzE,gBAAA,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,eAAe,EACzE;gBACA;YACF;AACA,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,YAAY;IACrB;IAEQ,6BAA6B,GAAA;QACnC,MAAM,MAAM,GAAW,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE;AACpE,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,mBAAmB,GAAG,aAAa;QAC1C;AAAO,aAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,mBAAmB,GAAG,aAAa;QAC1C;aAAO;;AAEL,YAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU;QACvC;QACA,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;;;AAG7B,YAAA,MAAM,YAAY,GAAW,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7E,MAAM,UAAU,GAAa,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;;;;;YAMhE,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;YAClD;iBAAO;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,UAAU,CAAC;YACtF;QACF;IACF;AAEA;;;AAGG;AACK,IAAA,YAAY,CAAC,KAAa,EAAA;QAChC,OAAO,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE;IACjC;AAEA;;AAEG;AACK,IAAA,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;AAC3D,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC;IACnE;AAEA;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;;;;;AAKlE;;;;AAIM;;AAGN,QAAA,MAAM,CAAC,GAAW,CAAC,IAAI;QACvB,MAAM,CAAC,GAAW,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7B,QAAA,MAAM,CAAC,GAAW,CAAC,IAAI;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACvD,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,MAAM,GAAW,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IACtD;8GAnMW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;AC3BD;;;;;AAKG;MAKU,aAAa,CAAA;IAGxB,WAAA,CACW,IAAY,EACZ,KAAa,EAAA;QADb,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,KAAK,GAAL,KAAK;QAEd,IAAI,CAAC,wBAAwB,EAAE;IACjC;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,QAAuB,EAAA;QAC7B,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;QACrE;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;AACH,IAAA,eAAe,CAAC,GAAa,EAAA;QAC3B,IAAI,GAAG,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;QAC3D;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACpB,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QAC7C;aAAO;AACL,YAAA,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACrD;IACF;AAEA;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;YACrB,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C;aAAO;AACL,YAAA,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACrD;IACF;AAEA;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;IACrD;AAEA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;IACrD;AAEA;;AAEG;IACK,wBAAwB,GAAA;AAC9B,QAAA,MAAM,kBAAkB,GAAW,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AACnF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,kBAAkB;aACjC,IAAI,CAAC,IAAI;AACT,aAAA,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACpB,YAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AACvD,QAAA,CAAC,CAAC;IACN;AACD;;ACvFD;;;;;AAKG;AASH;;;;;AAKG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;QAUE,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAGhB,QAAA,IAAA,CAAA,eAAe,GAAS,IAAI,IAAI,EAAE;AAElC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAY;AAC5C,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAY;AAC/C,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,OAAO,EAAQ;AAC9C,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAQ;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAQ;AAC1C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAY;AAwLpD,IAAA;AAtLC,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB;IAChC;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IAC/C;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE;IAClD;AAEA;;AAEG;AACH,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;IACrD;AAEA;;AAEG;AACH,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE;IACnD;AAEA;;AAEG;AACH,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAa,MAAM,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;IACpG;AAEA;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;IACjD;AAEA;;AAEG;IACH,wBAAwB,CAAC,SAAoC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAAA;AAChG,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,SAA2B;AAC1D,YAAA,IAAI,SAAS,IAAI,OAAO,EAAE;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC;AACzC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC;YAC5C;iBAAO;AACL,gBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC;gBAC5C;AACA,gBAAA,IAAI,SAAS,KAAK,IAAI,EAAE;AACtB,oBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC;gBAC3C;YACF;QACF;aAAO;YACL,MAAM,GAAG,GAAG,SAAqB;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC;QACrC;AACA,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE;IAClC;AAEA;;AAEG;IACH,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC5F;aAAO;AACL,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAChF;IACF;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnF;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnF;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;IAChE;AAEA;;AAEG;IACH,mBAAmB,GAAA;QACjB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;IACpE;AAEA;;AAEG;IACH,cAAc,GAAA;QACZ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IAC/D;AAEA;;AAEG;IACH,kBAAkB,GAAA;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;IACnE;AAEA;;AAEG;IACH,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvD,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjF;AACA,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE;IACpC;AAEA,IAAA,mBAAmB,CAAC,GAAa,EAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACnE;IACF;AAEA,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;QACtE,IAAI,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC5D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9C;aAAO;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3F;AACA,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE;IACpC;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa;AACrC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB;IAC7C;AAEA,IAAA,qBAAqB,CAAC,IAAU,EAAA;AAC9B,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1E;IAEQ,cAAc,CAAC,QAA8B,EAAE,SAAS,EAAA;AAC9D,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ;QAC3B,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC;IACF;IAEQ,iBAAiB,CAAC,QAA8B,EAAE,SAAS,EAAA;AACjE,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;QAC9B,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3C;IACF;;AAGQ,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QAC/C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAC/B,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE;QACtC;IACF;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CACxB,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EAClC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAC/B;IACH;8GA3MW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACpBD;;;;;AAKG;MAQU,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAsC,SAAc,EAAA;QAAd,IAAA,CAAA,SAAS,GAAT,SAAS;QAHvC,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAIhC,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC;YAChG,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU;QACrD;IACF;AAEA;;;;AAIG;AACH,IAAA,IAAI,SAAS,GAAA;;;;;AAKX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,IAAI,CAAC,WAAW,GAAG,4BAA4B,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC9E,gBAAA,OAAO,KAAK;YACd;QACF;AACA,QAAA,OAAO,IAAI;IACb;AA3BW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAIf,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJjB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;0BAKc,MAAM;2BAAC,QAAQ;;;ACjB9B;;;;;AAKG;AAWH;;AAEG;MAEU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,QAAQ,GAAG,kBAAkB,CAAC,WAAW;AAEjC,QAAA,IAAA,CAAA,YAAY,GAAA,SAAA;AAyBrB,IAAA;AAvBC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,KAAA,SAAA;IAC1B;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,YAAY,KAAA,UAAA;IAC1B;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,KAAA,WAAA;IAC1B;IAEA,iBAAiB,GAAA;QACf,IAAI,CAAC,YAAY,GAAA,WAAA;IACnB;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,YAAY,GAAA,UAAA;IACnB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,GAAA,SAAA;IACnB;8GA3BW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACnBD;;;;;AAKG;AAMH;;AAEG;MAEU,sBAAsB,CAAA;IACjC,WAAA,CACU,OAAe,EACM,UAAe,EAAA;QADpC,IAAA,CAAA,OAAO,GAAP,OAAO;QACc,IAAA,CAAA,UAAU,GAAV,UAAU;IACtC;AAEH,IAAA,SAAS,CAAC,KAA8B,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,MAAK;gBAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAc,gBAAgB,CAAC;gBAChF,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,KAAK,EAAE;gBACjB;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,OAAyB,EAAA;QAClC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvG;AAEA,IAAA,gBAAgB,CAAC,OAAyB,EAAA;AACxC,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO;IACjF;IAEQ,uBAAuB,GAAA;;QAE7B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAC9C,KAAK,EAAE,EACP,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CACjD;IACH;AA/BW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,wCAGvB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAHV,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;0BAII,MAAM;2BAAC,WAAW;;;AClBvB;;;;;AAKG;MA4EU,cAAc,CAAA;IAMzB,WAAA,CACU,oBAAyC,EACzC,sBAA6C,EAC7C,uBAA+C,EAC/C,MAAkB,EAClB,mBAAuC,EACxC,aAAsC,EAAA;QALrC,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACpB,IAAA,CAAA,aAAa,GAAb,aAAa;AAEpB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;IACnD;AACA;;;AAGG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB;IACnD;AACA;;AAEG;AACH,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,KAAK;IAC5D;AAEA;;AAEG;AACH,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,KAAK;IAC1D;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChF,YAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5C,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI;IAC3D;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACjC;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC9B;AAEA,IAAA,oBAAoB,CAAC,UAAkB,EAAA;AACrC,QAAA,QACE,IAAI,CAAC,sBAAsB,CAAC,aAAa;YACzC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI;YACnE,UAAU,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK;IAEjE;AAEA,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AACnC,QAAA,QACE,IAAI,CAAC,sBAAsB,CAAC,aAAa;YACzC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI;YACtE,UAAU,KAAK,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,KAAK;IAEpE;AAEA;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;IAC7C;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACrD;AAEA;;AAEG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;QAI5B,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AACrB,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE;gBACvD,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC;gBAC5B,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACrD;AAAO,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE,EAAE;gBACjE,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC;gBAC5B,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACrD;AAAO,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE,EAAE;gBAClE,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACrD;AAAO,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE;gBAChE,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACrD;QACF;IACF;AAEA,IAAA,UAAU,CAAC,UAAkB,EAAA;AAC3B,QAAA,QACE,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC,YAAY;YAClE,UAAU,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK;aAC9D,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI,KAAK,IAAI,CAAC,YAAY;AACrE,gBAAA,UAAU,KAAK,IAAI,CAAC,qBAAqB,CAAC;IAEhD;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,sBAAsB,CAAC,YAAY,GAAG,UAAU;IACvD;AAEA;;;AAGG;AACH,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC;AACnD,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE;IAC5C;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,OAAO,UAAU,KAAK,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC;IACxD;AAEA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE;IAC9C;AAEA;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE;IAClD;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE;IAClD;AAEA;;;AAGG;AACH,IAAA,SAAS,CAAC,UAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE;AAC9C,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,IAAI,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE;AACzF,YAAA,QACE,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI;AACjE,gBAAA,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,KAAK;gBAC1D,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI;gBACrE,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK;AAC/D,iBAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI;oBAC/F,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI;oBAClE,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7D,iBAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI;oBAC/F,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI;oBACrE,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC;iBAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI;AAC/D,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC;QAE1E;AAAO,aAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE;AACjG,YAAA,QACE,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI;AACjE,gBAAA,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,KAAK;AAC1D,gBAAA,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY;iBACtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI;oBAC/D,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;QAE5D;aAAO;AACL,YAAA,OAAO,KAAK;QACd;IACF;8GA7MW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAOU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnE1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,IAAI,EAAE,aAAa;AACpB,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBA4FE,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AC5KrC;;;;;AAKG;AAEH,MAAM,gBAAgB,GAAG,EAAE;MAEd,cAAc,CAAA;AAGzB,IAAA,WAAA,CAA6B,IAAY,EAAA;QAAZ,IAAA,CAAA,IAAI,GAAJ,IAAI;QAFjC,IAAA,CAAA,SAAS,GAAa,EAAE;QAGtB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D;AAEA;;AAEG;IACH,UAAU,GAAA;QACR,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IAC3C;AAEA;;AAEG;IACH,cAAc,GAAA;QACZ,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IAC3C;AAEA;;AAEG;IACH,aAAa,GAAA;QACX,OAAO,IAAI,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,KAAa,EAAA;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C;AAEA;;;AAGG;IACK,iBAAiB,GAAA;AACvB,QAAA,MAAM,SAAS,GAAW,IAAI,CAAC,IAAI,GAAG,gBAAgB;AACtD,QAAA,MAAM,KAAK,GAAW,IAAI,CAAC,IAAI,GAAG,SAAS;AAC3C,QAAA,MAAM,IAAI,GAAW,KAAK,GAAG,gBAAgB;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;IAClD;AAEA;;AAEG;IACK,aAAa,CAAC,KAAa,EAAE,IAAY,EAAA;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACnE;AACD;;ACpED;;;;;AAKG;MA4EU,aAAa,CAAA;IAWxB,WAAA,CACU,sBAA6C,EAC7C,mBAAuC,EACvC,uBAA+C,EAC/C,MAA+B,EAChC,aAAsC,EAAA;QAJrC,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,MAAM,GAAN,MAAM;QACP,IAAA,CAAA,aAAa,GAAb,aAAa;QAEpB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;IACvC;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI;IACtD;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI;IACzD;AAEA;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI;IAC3D;AAEA,IAAA,qBAAqB,CAAC,IAAY,EAAA;QAChC,OAAO,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IAC1C;AAEA,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,IAAI,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI;IAC5G;AAEA,IAAA,iBAAiB,CAAC,IAAY,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,IAAI,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI;IAC/G;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACrD;AAEA;;AAEG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;QAI5B,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AACrB,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE;gBACxB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC/B;AAAO,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE;gBACjC,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9B;AAAO,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE;gBAClC,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9B;AAAO,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE;gBACjC,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC/B;QACF;IACF;AAEA;;;AAGG;AACH,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE;IAC5C;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,GAAG,IAAI;IAChD;AAEA;;AAEG;IACH,cAAc,GAAA;QACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;;;IAG5D;AAEA;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACxE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;QAC3D;QACA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACrD;AAEA;;AAEG;IACH,UAAU,GAAA;QACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;;;IAGxD;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACnD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAClD,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;YACvC;iBAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AAC5D,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe;YAC1C;iBAAO;gBACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;YACpD;QACF;AACA,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C;AAEA;;;AAGG;AACH,IAAA,SAAS,CAAC,IAAY,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE;AAC9C,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;YACzE,OAAO,IAAI,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe;QACrE;AAAO,aAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACjF,YAAA,OAAO,IAAI,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW;QACxF;aAAO;AACL,YAAA,OAAO,KAAK;QACd;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE;IAC5C;AAEA;;;AAGG;AACK,IAAA,oBAAoB,CAAC,KAAa,EAAA;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACnD,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YACxD;iBAAO;gBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;YAC5D;QACF;QACA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACrD;8GAjLW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAOU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAlEzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,IAAI,EAAE,aAAa;AACpB,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBA4DE,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AC5IrC;;;;;AAKG;MAIU,YAAY,CAAA;IACvB,WAAA,CACS,QAAkB,EAClB,YAAA,GAAwB,KAAK,EAC7B,UAAA,GAAsB,KAAK,EAC3B,UAAA,GAAsB,KAAK,EAC3B,UAAA,GAAsB,KAAK,EAC3B,WAAA,GAAuB,KAAK,EAC5B,eAAA,GAA2B,KAAK,EAChC,aAAA,GAAyB,KAAK,EAAA;QAP9B,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,aAAa,GAAb,aAAa;IACnB;AAEH;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC;AACD;;AC3BD;;;;;AAKG;MASU,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CACS,QAAuB,EACvB,WAAqB,EACrB,cAAwB,EACvB,YAAsB,EACtB,KAAe,EAChB,cAAsB,EACrB,aAAwB,EAAA;QANzB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,cAAc,GAAd,cAAc;QACb,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,KAAK,GAAL,KAAK;QACN,IAAA,CAAA,cAAc,GAAd,cAAc;QACb,IAAA,CAAA,aAAa,GAAb,aAAa;QAVf,IAAA,CAAA,iBAAiB,GAAmB,EAAE;QAY5C,IAAI,CAAC,sBAAsB,EAAE;IAC/B;AAEA;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA;;AAEG;AACH,IAAA,kBAAkB,CAAC,GAAa,EAAA;QAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;IACzB;AAEA;;AAEG;AACH,IAAA,iBAAiB,CAAC,GAAyB,EAAA;QACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;IAChC;AAEA;;AAEG;AACH,IAAA,oBAAoB,CAAC,GAAyB,EAAA;QAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;IAChC;AAEA;;;;;AAKG;IACK,sBAAsB,GAAA;;QAE5B,MAAM,iBAAiB,GAAkB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;QACtE,MAAM,iBAAiB,GAAkB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;;AAGlE,QAAA,MAAM,0BAA0B,GAAW,IAAI,CAAC,6BAA6B,CAC3E,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,CACpB;AACD,QAAA,MAAM,0BAA0B,GAC9B,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC;;QAGpF,IAAI,iBAAiB,GAAmB,EAAE;QAC1C,IAAI,iBAAiB,GAAmB,EAAE;AAE1C,QAAA,IAAI,0BAA0B,GAAG,CAAC,EAAE;YAClC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAC5C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,EAC7D,IAAI,EACJ,KAAK,CACN;QACH;AAEA,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAEpF,QAAA,IAAI,0BAA0B,GAAG,CAAC,EAAE;YAClC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAC5C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,EAC3D,IAAI,EACJ,KAAK,CACN;QACH;;AAGA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QAC5G,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,sBAAsB,EAAE;IAC/B;AAEQ,IAAA,cAAc,CAAC,IAAc,EAAA;QACnC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAc,IAAI,CAAC,aAAa;AAC1D,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,EAAE;AACzC,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAEvC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;IACxC;AAEA;;AAEG;AACK,IAAA,qBAAqB,CAAC,IAAgB,EAAE,UAAmB,EAAE,iBAA0B,EAAA;QAC7F,MAAM,QAAQ,GAAmB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;YAC9C,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;AACzF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClE,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI;QACnD;AACA,QAAA,OAAO,QAAQ;IACjB;AAEA;;;;;;;AAOG;IACK,6BAA6B,CAAC,WAAmB,EAAE,YAAoB,EAAA;QAC7E,MAAM,mBAAmB,GAAW,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;AAExE,QAAA,IAAI,mBAAmB,IAAI,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAA,OAAO,mBAAmB,GAAG,IAAI,CAAC,cAAc;QAClD;aAAO;AACL,YAAA,OAAO,oBAAoB,GAAG,mBAAmB,GAAG,IAAI,CAAC,cAAc;QACzE;IACF;AAEA;;AAEG;AACK,IAAA,mBAAmB,CAAC,GAAa,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;AACvC,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACK,IAAA,oBAAoB,CAAC,IAAoB,EAAE,IAAoB,EAAE,IAAoB,EAAA;AAC3F,QAAA,MAAM,cAAc,GAAmB,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAElE,MAAM,YAAY,GAAqB,EAAE;AACzC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,EAAE,CAAC,EAAE,EAAE;YACpD,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,oBAAoB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC;QAClG;AACA,QAAA,OAAO,YAAY;IACrB;AAEA;;AAEG;IACK,qBAAqB,GAAA;QAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;IAChD;AAEA;;;;AAIG;IACK,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACpE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;QAChD;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACzE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QAC9C;AAAO,aAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAC/E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;YAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;QACjD;aAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QACxC;aAAO;YACL,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YAC7E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;QAChD;IACF;IAEQ,gBAAgB,CAAC,GAAa,EAAE,IAAa,EAAA;QACnD,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI;QACzD;IACF;IAEQ,cAAc,CAAC,GAAa,EAAE,IAAa,EAAA;QACjD,IAAI,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI;QACzD;IACF;AACD;;ACzND;;;;;AAKG;MAmCU,MAAM,CAAA;IAKjB,WAAA,CACU,sBAA6C,EAC7C,aAAsC,EAAA;QADtC,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,aAAa,GAAb,aAAa;AANF,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAY;IAO5D;AAEH;;AAEG;AAEH,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IACA,IAAI,OAAO,CAAC,GAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;IACrB;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC;AAClB,cAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACxE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE;aACjD;cACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE;IAC3C;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,QACE,IAAI,CAAC,sBAAsB,CAAC,aAAa;AACzC,YAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,kBAAkB,EAAE;IAElH;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,QACE,IAAI,CAAC,sBAAsB,CAAC,aAAa;AACzC,YAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,kBAAkB,EAAE;IAErH;AAEA;;AAEG;IAEH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC5B,IAAI,CAAC,sBAAsB,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;QAChE;IACF;AAEA;;AAEG;IACH,cAAc,GAAA;QACZ,IAAI,CAAC,sBAAsB,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;IAChE;AAEA;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B;QACF;AACA,QAAA,MAAM,GAAG,GAAa,IAAI,CAAC,OAAO,CAAC,QAAQ;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;AAEA;;;AAGG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE;AAC9C,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,IAAI,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE;AACzF,YAAA,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;AACxE,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;QAEhF;AAAO,aAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE;AACjG,YAAA,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;AACxE,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC;QAElF;aAAO;AACL,YAAA,OAAO,KAAK;QACd;IACF;8GA7FW,MAAM,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBP;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAIU,MAAM,EAAA,UAAA,EAAA,CAAA;kBA1BlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;AAC/B,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAEE,MAAM;uBAAC,WAAW;;sBAalB,KAAK;uBAAC,YAAY;;sBAiClB,YAAY;uBAAC,YAAY;;;ACvF5B;;;;;AAKG;MAwBU,WAAW,CAAA;AAQtB,IAAA,WAAA,CACU,oBAAyC,EACzC,sBAA6C,EAC7C,uBAA+C,EAC/C,cAA6B,EAC7B,MAA+B,EAC/B,uBAA+C,EAC/C,eAAkC,EAAA;QANlC,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACvB,IAAA,CAAA,eAAe,GAAf,eAAe;QATjB,IAAA,CAAA,KAAK,GAAmB,EAAE;QAWhC,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEA;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU;IAC7C;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB;IACtD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW;IAChD;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc;IACnD;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU;IAC/C;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK;IAC1C;AAEA;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACrD;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAiB,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;IAC9D;AAEA;;AAEG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,QAAQ,KAAK,CAAC,GAAG;gBACf,KAAK,IAAI,CAAC,OAAO;oBACf,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;oBACxE;gBACF,KAAK,IAAI,CAAC,SAAS;oBACjB,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC;oBACnE;gBACF,KAAK,IAAI,CAAC,SAAS;oBACjB,KAAK,CAAC,cAAc,EAAE;oBACtB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBACjD;gBACF,KAAK,IAAI,CAAC,UAAU;oBAClB,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBAChD;AACF,gBAAA;AACE,oBAAA,MAAM;;QAEZ;IACF;AAEA,IAAA,cAAc,CAAC,GAAa,EAAA;AAC1B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB;QACrE,MAAM,aAAa,GAA8B,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;AAClF,QAAA,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACrG,IAAI,CAAC,gBAAgB,EAAE;AACrB,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,0BAA0B,EAAE;QACnC;IACF;AAEA;;;;;AAKG;IACK,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAK;YACjE,IAAI,CAAC,oBAAoB,EAAE;QAC7B,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAoB,KAAI;AAC9E,YAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,UAAU,CAAC;QACvD,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAK;YAC/D,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QACrD,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAK;YAC7D,IAAI,CAAC,wBAAwB,EAAE;QACjC,CAAC,CAAC,CACH;IACH;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IACE,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa;YACxC,IAAI,CAAC,sBAAsB,CAAC,WAAW;AACvC,YAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc;AAC5C,aAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EACvF;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,KAAK;QACnC;IACF;AAEQ,IAAA,uBAAuB,CAAC,GAAa,EAAA;AAC3C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,IAAI,IAAI,EAC1D,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa;QAC3D,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,IAAI,IAAI;QAE3D,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;AACzF,gBAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,CAAC;gBAC7C,IAAI,OAAO,EAAE;oBACX,OAAO,GAAG,SAAS;AACnB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBACtD;YACF;iBAAO;AACL,gBAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,CAAC;YAClD;QACF;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAC/C;AAEA,QAAA,OAAO;AACL,cAAE,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,cAAc;AACjG,cAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW;IACxC;IAEQ,wBAAwB,GAAA;QAC9B,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;AACjF,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE;YAC7C,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;QACzF;IACF;AAEA;;AAEG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,oBAAoB,CAAC,cAAc,EACxC,IAAI,CAAC,cAAc,CAAC,aAAa,CAClC;IACH;8GA5LW,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,kIC7BxB,02BAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDKa,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAEZ,KAAK,EAAA,QAAA,EAAA,02BAAA,EAAA;;sBAmEhB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AE9FrC;;;;;AAKG;MAeU,YAAY,CAAA;AACvB,IAAA,WAAA,CACU,mBAAuC,EACvC,sBAA6C,EAC7C,oBAAyC,EAC1C,aAAsC,EAAA;QAHrC,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACrB,IAAA,CAAA,aAAa,GAAb,aAAa;IACnB;AAEH,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjF,cAAc,EAAE,IAAI,CAAC,aAAa;AACnC,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChF,YAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5C,SAAA,CAAC;IACJ;AAEA;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC;IAC/G;AAEA;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI;IAC3D;AAEA;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE;IAC9C;AAEA;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;IAC7C;AAEA;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE;IAC/C;AAEA;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,EAAE;IACnD;AAEA;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE;IAClD;8GAnEW,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,sKCpBzB,whEAyDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDrCa,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACE,eAAe,EAAA,IAAA,EAEnB,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAA,UAAA,EAC9C,KAAK,EAAA,QAAA,EAAA,whEAAA,EAAA;;;AElBnB;;;;;AAKG;MAoBU,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CACY,aAAsC,EACxC,cAAiC,EACjC,qBAA4C,EAC5C,sBAA8C,EAAA;QAH5C,IAAA,CAAA,aAAa,GAAb,aAAa;QACf,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;IAC7B;IAEO,KAAK,GAAA;AACb,QAAA,IACE,IAAI,CAAC,qBAAqB,CAAC,aAAa;YACxC,IAAI,CAAC,qBAAqB,CAAC,WAAW;AACtC,YAAA,IAAI,CAAC,qBAAqB,CAAC,cAAc,EACzC;AACA,YAAA,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC;AAClD,gBAAA,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW;AACjD,gBAAA,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,cAAc;AACnD,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;QAC3C;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,IAAI,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;YAC9F,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;AAC3F,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;QAC3C;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,KAAK;IAClC;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,KAAK;IAClC;8GA7BW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATrB;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAMU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;AAGT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,4BAA4B,EAAE,MAAM;AACrC,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;ACxBD;;;;;AAKG;MAwBU,wBAAwB,CAAA;AACnC,IAAA,WAAA,CACS,aAAsC,EACrC,kBAAsC,EACtC,qBAA4C,EAC5C,aAA4B,EAAA;QAH7B,IAAA,CAAA,aAAa,GAAb,aAAa;QACZ,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,aAAa,GAAb,aAAa;IACpB;AAEH;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW;IAC5C;AAEA;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU;IAC3C;AAEA;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS;IAC1C;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM;IACvF;AAEA,IAAA,IAAc,gBAAgB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB;IACpD;AAEA,IAAA,IAAc,gBAAgB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;IAC7C;AAEA,IAAA,mBAAmB,CAAC,aAAa,EAAA;AAC/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EACzF,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClH,QAAA,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,CAAC;IAC3D;8GA9CW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,0CAAA,EAAA,EAAA,EAAA,SAAA,EAXxB,CAAC,sBAAsB,CAAC,0BClBrC,49CAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,2BAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDrBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,SAAA,EAE5B,CAAC,sBAAsB,CAAC,EAAA,IAAA,EAC7B;AACJ,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,0BAA0B,EAAE,iBAAiB;AAC7C,wBAAA,4BAA4B,EAAE,kBAAkB;AAChD,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,mBAAmB,EAAE,0CAA0C;AAC/D,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,49CAAA,EAAA;;;AE3BnB;;;;;AAKG;AAuGG,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;IAMxD,WAAA,CACY,QAAmB,EACnB,IAAgB,EAClB,cAAiC,EACjC,qBAA4C,EAC5C,wBAAkD,EAClD,sBAA8C,EAC9C,aAA4B,EAC7B,aAAsC,EAC7C,YAA+B,EACvB,kBAAsC,EAC3B,mBAAwC,EAC5B,aAA4B,EACxC,gBAAkC,EAC7C,mBAAwC,EAAA;AAEhD,QAAA,KAAK,CAAC,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;QAfjD,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,IAAI,GAAJ,IAAI;QACN,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACtB,IAAA,CAAA,aAAa,GAAb,aAAa;QACd,IAAA,CAAA,aAAa,GAAb,aAAa;QAEZ,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QACP,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACP,IAAA,CAAA,aAAa,GAAb,aAAa;QACzB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAC3B,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QAnB7B,IAAA,CAAA,KAAK,GAAG,KAAK;AAEH,QAAA,IAAA,CAAA,WAAW,GAAG,cAAc,CAAC,QAAQ;AAqB7C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAG;AACzC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QACpB,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YACvC,sBAAsB,CAAC,aAAa,EAAE;QACxC,CAAC,CAAC,CACH;QAED,IAAI,qBAAqB,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE;AACxD,YAAA,qBAAqB,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,aAAa;gBAC1E,OAAO,KAAK,0BAA0B;QAC1C;IACF;AAEA;;;;AAIG;IACH,IACI,cAAc,CAAC,KAAwB,EAAA;QACzC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,KAAK,IAAI,IAAI,CAAC;IAC9D;AAEA;;AAEG;IACH,IACI,iBAAiB,CAAC,IAAa,EAAA;QACjC,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,IAAI,CAAC,IAAI,EAAE;AACrD,YAAA,OAAO,CAAC,KAAK,CAAC,iGAAiG,CAAC;QAClH;aAAO;AACL,YAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,GAAG,IAAI;QACpD;IACF;IAEA,IACI,WAAW,CAAC,QAAqC,EAAA;QACnD,IAAI,CAAC,QAAQ,EAAE;YACb;QACF;QAEA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAA8B,CAAC;AAE3E,QAAA,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnB;QACF;QAEA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IACjE;IAEA,IACI,YAAY,CAAC,YAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,YAAY,CAAC;IAClD;IAEA,IACI,GAAG,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE;AAC5C,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;QAC3C;aAAO;AACL,YAAA,OAAO,CAAC,KAAK,CACX,0IAA0I,CAC3I;QACH;IACF;IAEA,IACI,GAAG,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE;AAC5C,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;QAC3C;aAAO;AACL,YAAA,OAAO,CAAC,KAAK,CACX,0IAA0I,CAC3I;QACH;IACF;IAEA,IACI,YAAY,CAAC,MAAqC,EAAA;AACpD,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;IAC5B;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ;IACzC;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI;IACjC;AAEA;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS;IAChD;AAEA;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;;QAErB,QACE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAM,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;IAEpH;AAEA,IAAA,IAAc,aAAa,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,aAAa;IACjD;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,yBAAyB,EAAE;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;YAC9C,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,kBAAkB,EAAE;YAC3B;iBAAO;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;AACvC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;YAC/C;QACF,CAAC,CAAC,CACH;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACtD;AAEA;;;AAGG;AACK,IAAA,oBAAoB,CAAC,GAAa,EAAA;QACxC,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAElF,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA+B,EAAE;AACvF,gBAAA,aAAa,EAAE,aAAa;AAC7B,aAAA,CAAC;QACJ;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA+B;IAChE;IAEQ,oBAAoB,GAAA;;;;AAI1B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC;aAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;aACtD,SAAS,CAAC,GAAG,IAAG;AACf,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;AAC5C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa;gBAChD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC;YACtD;AACF,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE;IACjD;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE;AAC5C,YAAA,MAAM,MAAM,GAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC3F,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;AACpE,gBAAA,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC;YAClG;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,EAAE;AAC3E,gBAAA,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC;YAClF;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE;AACzE,gBAAA,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC;YAChF;QACF;IACF;8GAhNW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAmB,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,mBAAA,EAAA,gBAAA,CAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EArBhB;YACT,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;YACjB,gBAAgB;YAChB,aAAa;YACb,qBAAqB;YACrB,wBAAwB;YACxB,sBAAsB;YACtB,kBAAkB;SACnB,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7DS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,qCAAA,EAAA,uBAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAsBU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzE5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDT,EAAA,CAAA;AACD,oBAAA,SAAS,EAAE;wBACT,gBAAgB;wBAChB,mBAAmB;wBACnB,mBAAmB;wBACnB,iBAAiB;wBACjB,gBAAgB;wBAChB,aAAa;wBACb,qBAAqB;wBACrB,wBAAwB;wBACxB,sBAAsB;wBACtB,kBAAkB;AACnB,qBAAA;oBACD,cAAc,EAAE,CAAC,uBAAuB,CAAC;AACzC,oBAAA,IAAI,EAAE;AACJ,wBAAA,4BAA4B,EAAE,MAAM;AACpC,wBAAA,mCAAmC,EAAE,qBAAqB;AAC1D,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;0BAmBI;;sBA8BF,KAAK;uBAAC,mBAAmB;;sBAQzB,KAAK;uBAAC,mBAAmB;;sBASzB,KAAK;uBAAC,aAAa;;sBAenB;;sBAKA;;sBAWA;;sBAWA,SAAS;uBAAC,cAAc;;;ACvN3B;;;;;AAKG;AAqCH;AACA;AACA;AACA;AACA;AAGM,MAAgB,gBACpB,SAAQ,kBAAoC,CAAA;IAc5C,WAAA,CACE,gBAAkC,EAClC,QAAkB,EACC,EAAgC,EAChC,QAAmB,EAG5B,OAAkB,EACoC,SAA2B,EACrE,aAA4B,EAC5B,qBAA4C,EAC9C,wBAAkD,EAClD,sBAA8C,EACrC,UAAe,EACxB,YAA+B,EACzC,sBAA8C,EAAA;AAExD,QAAA,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;QAdvD,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAGjB,IAAA,CAAA,OAAO,GAAP,OAAO;QAC+C,IAAA,CAAA,SAAS,GAAT,SAAS;QACnD,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACvB,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QACxB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACb,IAAA,CAAA,UAAU,GAAV,UAAU;QACnB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACtB,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QAtBf,IAAA,CAAA,KAAK,GAAG,CAAC;IAyB5B;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ;QAClF;AACA,QAAA,OAAO,IAAI;IACb;IAEA,IAEI,QAAQ,CAAC,KAAuB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACvE;IACF;AAEA,IAAA,IACI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe;IACjF;AAEA,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,GAAG,MAAM,GAAG,MAAM;IAC7F;IAIS,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,sCAAsC,EAAE;AAE7C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,+BAA+B,EAAE,EACtC,IAAI,CAAC,4BAA4B,EAAE,EACnC,IAAI,CAAC,qBAAqB,EAAE,EAC5B,IAAI,CAAC,qBAAqB,EAAE,EAC5B,IAAI,CAAC,qBAAqB,EAAE,CAC7B;IACH;IAEA,eAAe,GAAA;;;;;;;;QAQb,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAGA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACrB;IAES,iBAAiB,GAAA;QACxB,KAAK,CAAC,iBAAiB,EAAE;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtB;AAGA,IAAA,aAAa,CAAC,MAAwB,EAAA;AACpC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC;AAClF,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,IAAI,cAAc,EAAE;AACnD,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC;QACvC;AAAO,aAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AACvC,YAAA,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAC1D;aAAO;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC3B;IACF;IAEU,wBAAwB,GAAA;AAChC,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO;IACvB;AAEU,IAAA,OAAO,CAAC,IAAmB,EAAA;AACnC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;QACvB;AAEA,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACvB;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAClC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;QACtC;IACF;IAEU,6BAA6B,GAAA;AACrC,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAClE,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9D;IACF;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS;IAChD;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS;IACjD;AAEQ,IAAA,QAAQ,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK;QACnC;IACF;IAEQ,sCAAsC,GAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC;YACjE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC;YACjF,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC;YACvF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC;QACrF;IACF;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC;QAChD;IACF;AAEQ,IAAA,UAAU,CAAC,KAAW,EAAE,oBAAoB,GAAG,KAAK,EAAA;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAClD,IAAI,oBAAoB,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC3B;aAAO;AACL,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAChC;AAEA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;AAEhG,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACxB;AAEQ,IAAA,WAAW,CAAC,IAAU,EAAA;QAC5B,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACvE,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;;AAEhC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7D,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;YACvE;AAAO,iBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,IAAI,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBAC/E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC3C;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC;YACvE;YACA,IAAI,CAAC,iBAAiB,EAAE;QAC1B;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;QAC/D;IACF;AAEQ,IAAA,yBAAyB,CAAC,IAAU,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC;YACvE,OAAO,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,UAAU,CAAC;QAClE;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;AAEQ,IAAA,cAAc,CAAC,IAAU,EAAA;QAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAChC;AAAO,aAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAChC;IACF;IAEQ,4BAA4B,GAAA;AAClC,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC;iBACjB,IAAI;;AAEH,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;iBAEnF,SAAS,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;QACxG;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;IAEQ,+BAA+B,GAAA;QACrC,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;IACpG;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC;aAChC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClD,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IAC1D;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC;aAChC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClD,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACxD;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC;AAC/B,aAAA,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC;AACxE,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACnF;AAEA;;;AAGG;IACK,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE;AAC5C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ;AAChD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC;AACjH,YAAA,IAAI,OAAO,IAAI,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;AACnE,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAoB,KAAI;oBACxC,SAAS,EAAE,OAAO,EAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAClE,gBAAA,CAAC,CAAC;YACJ;QACF;IACF;8GA5QoB,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAuBd,UAAU,CAAC,MAAM,gBAAgB,CAAC,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAK9C,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA0B,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGA5BD,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBADrC;;0BAqBI;;0BACA;;0BAEA;;0BAAY,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,gBAAgB,CAAC;;0BACrD;;0BACA;;0BACA;;0BACA;;0BACA,MAAM;2BAAC,WAAW;;0BAClB;;sBAvBF;;sBAoCA,KAAK;uBAAC,UAAU;;sBAChB,WAAW;uBAAC,UAAU;;sBAOtB,WAAW;uBAAC,kBAAkB;;sBAK9B,WAAW;uBAAC,WAAW;;sBA+BvB,YAAY;uBAAC,OAAO;;sBAUpB,YAAY;uBAAC,QAAQ,EAAE,CAAC,eAAe,CAAC;;;ACjJ3C;;;;;AAKG;AAiBG,MAAO,YAAa,SAAQ,gBAAgB,CAAA;AATlD,IAAA,WAAA,GAAA;;AAUoC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAO,KAAK,CAAC;AAwB7E,IAAA;IAtBC,IACI,IAAI,CAAC,IAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;IAEA,IACI,GAAG,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;IAC3C;IAEA,IACI,GAAG,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;IAC3C;AAEA,IAAA,IAAuB,qBAAqB,GAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB;IACrD;AAEmB,IAAA,cAAc,CAAC,QAAkB,EAAA;AAClD,QAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,QAAQ;IAC9F;8GAxBW,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAHZ,CAAC,sBAAsB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGxB,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AACjC,qBAAA;oBACD,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACnC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAEE,MAAM;uBAAC,eAAe;;sBAEtB,KAAK;uBAAC,SAAS;;sBAKf;;sBAKA;;;ACnCH;;;;;AAKG;AAkBG,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AAVvD,IAAA,WAAA,GAAA;;AAWyC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAO,KAAK,CAAC;QAE5D,IAAA,CAAA,UAAU,GAAG,EAAE;AAwBrC,IAAA;IAtBC,IACI,IAAI,CAAC,IAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;AAEA,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,IAAuB,qBAAqB,GAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB;IACrD;IAES,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;IACjH;AAEmB,IAAA,cAAc,CAAC,QAAkB,EAAA;AAClD,QAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,QAAQ;IAC9F;8GA1BW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAHjB,CAAC,sBAAsB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGxB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,8BAA8B,EAAE,MAAM;AACtC,wBAAA,oBAAoB,EAAE,SAAS;AAChC,qBAAA;oBACD,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACnC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAEE,MAAM;uBAAC,oBAAoB;;sBAE3B,KAAK;uBAAC,YAAY;;sBAElB,KAAK;uBAAC,cAAc;;sBAKpB,WAAW;uBAAC,WAAW;;;ACjC1B;;;;;AAKG;AAiBG,MAAO,eAAgB,SAAQ,gBAAgB,CAAA;AATrD,IAAA,WAAA,GAAA;;AAUuC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAO,KAAK,CAAC;QAE1D,IAAA,CAAA,UAAU,GAAG,EAAE;AAwBrC,IAAA;IAtBC,IACI,IAAI,CAAC,IAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;AAEA,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA,IAAA,IAAuB,qBAAqB,GAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,oBAAoB;IACxD;IAES,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;IACjH;AAEmB,IAAA,cAAc,CAAC,QAAkB,EAAA;AAClD,QAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,GAAG,QAAQ;IACpG;8GA1BW,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAHf,CAAC,sBAAsB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGxB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,4BAA4B,EAAE,MAAM;AACrC,qBAAA;oBACD,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACnC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAEE,MAAM;uBAAC,kBAAkB;;sBAEzB,KAAK;uBAAC,YAAY;;sBAElB,KAAK;uBAAC,YAAY;;sBAKlB,WAAW;uBAAC,WAAW;;;AChC1B;;;;;AAKG;MAaU,qBAAqB,CAAA;AAChC,IAAA,WAAA,CAAgC,aAA4B,EAAA;QAA5B,IAAA,CAAA,aAAa,GAAb,aAAa;IAAkB;AAE/D,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC;AAC1E,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;AACjE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;AAEjE,YAAA,IAAI,KAAK,IAAI,KAAK,GAAG,OAAO,EAAE;AAC5B,gBAAA,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAE,EAAE;YAC3F;AAAO,iBAAA,IAAI,KAAK,IAAI,KAAK,GAAG,OAAO,EAAE;AACnC,gBAAA,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAE,EAAE;YAC3F;QACF;AAEA,QAAA,OAAO,IAAI;IACb;8GAjBW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,SAAA,EAHrB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAG7E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAA,qBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxF,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;0BAEc;;MAwBF,0BAA0B,CAAA;IACrC,WAAA,CACsB,aAA4B,EAC5B,qBAA4C,EAAA;QAD5C,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;IACxC;AAEH,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC;YAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE,cAAc,EAAE,MAAM,EAAE;YAEpE,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,GAAG,OAAO,EAAE;gBACvC,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACjD;QACF;AAEA,QAAA,OAAO,IAAI;IACb;8GAjBW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA/B,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAH1B,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,0BAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGlF,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAA,0BAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7F,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;0BAGI;;0BACA;;MAsBQ,wBAAwB,CAAA;IACnC,WAAA,CACsB,aAA4B,EAC5B,qBAA4C,EAAA;QAD5C,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;IACxC;AAEH,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC;YAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,EAAE;YAEnE,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,GAAG,SAAS,EAAE;gBAC3C,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACjD;QACF;AAEA,QAAA,OAAO,IAAI;IACb;8GAjBW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA+B,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA/B,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAHxB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGhF,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAA,wBAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC3F,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;0BAGI;;0BACA;;;ACvEL;;;;;AAKG;;ACLH;;;;;AAKG;AA+BI,MAAM,yBAAyB,GAAgB;IACpD,YAAY;IACZ,MAAM;IACN,gBAAgB;IAChB,qBAAqB;IACrB,iBAAiB;IACjB,eAAe;IACf,0BAA0B;IAC1B,wBAAwB;IACxB,wBAAwB;IACxB,cAAc;IACd,aAAa;IACb,YAAY;IACZ,WAAW;IACX,oBAAoB;;MAiBT,mBAAmB,CAAA;AAC9B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;IACnG;8GAHW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBA9B9B,YAAY;YACZ,MAAM;YACN,gBAAgB;YAChB,qBAAqB;YACrB,iBAAiB;YACjB,eAAe;YACf,0BAA0B;YAC1B,wBAAwB;YACxB,wBAAwB;YACxB,cAAc;YACd,aAAa;YACb,YAAY;YACZ,WAAW;AACX,YAAA,oBAAoB,aAKlB,YAAY;YACZ,kBAAkB;YAClB,qBAAqB;YACrB,oBAAoB;YACpB,oBAAoB;YACpB,OAAO;YACP,oBAAoB;AACpB,YAAA,oBAAoB,aAzBtB,YAAY;YACZ,MAAM;YACN,gBAAgB;YAChB,qBAAqB;YACrB,iBAAiB;YACjB,eAAe;YACf,0BAA0B;YAC1B,wBAAwB;YACxB,wBAAwB;YACxB,cAAc;YACd,aAAa;YACb,YAAY;YACZ,WAAW;YACX,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAiBT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAZ5B,YAAY;YACZ,kBAAkB;YAClB,qBAAqB;YACrB,oBAAoB;YACpB,oBAAoB;YACpB,OAAO;YACP,oBAAoB;YACpB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FAKX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,qBAAqB;wBACrB,oBAAoB;wBACpB,oBAAoB;wBACpB,OAAO;wBACP,oBAAoB;wBACpB,oBAAoB;AACrB,qBAAA;oBACD,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA;;;AClED;;;;;AAKG;;ACLH;;AAEG;;;;"}
|