{"version":3,"file":"datepicker.js","sources":["../../packages/material/datepicker/coerce-date-property.js","../../packages/material/datepicker/datepicker-errors.js","../../packages/material/datepicker/datepicker-intl.js","../../packages/material/datepicker/calendar-body.js","../../packages/material/datepicker/month-view.js","../../packages/material/datepicker/year-view.js","../../packages/material/datepicker/calendar.js","../../packages/material/datepicker/datepicker.js","../../packages/material/datepicker/datepicker-input.js","../../packages/material/datepicker/datepicker-toggle.js","../../packages/material/datepicker/datepicker-module.js","../../packages/material/datepicker/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Function that attempts to coerce a value to a date using a DateAdapter. Date instances, null,\n * and undefined will be passed through. Empty strings will be coerced to null. Valid ISO 8601\n * strings (https://www.ietf.org/rfc/rfc3339.txt) will be coerced to dates. All other values will\n * result in an error being thrown.\n * @throws Throws when the value cannot be coerced.\n * @template D\n * @param {?} adapter The date adapter to use for coercion\n * @param {?} value The value to coerce.\n * @return {?} A date object coerced from the value.\n */\nexport function coerceDateProperty(adapter, value) {\n if (typeof value === 'string') {\n if (value == '') {\n value = null;\n }\n else {\n value = adapter.fromIso8601(value) || value;\n }\n }\n if (value == null || adapter.isDateInstance(value)) {\n return value;\n }\n throw Error(`Datepicker: Value must be either a date object recognized by the DateAdapter or ` +\n `an ISO 8601 string. Instead got: ${value}`);\n}\n//# sourceMappingURL=coerce-date-property.js.map","/**\n * \\@docs-private\n * @param {?} provider\n * @return {?}\n */\nexport function createMissingDateImplError(provider) {\n return Error(`MatDatepicker: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: MatNativeDateModule, or provide a custom implementation.`);\n}\n//# sourceMappingURL=datepicker-errors.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs/Subject';\n/**\n * Datepicker data that requires internationalization.\n */\nexport class MatDatepickerIntl {\n constructor() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n /**\n * A label for the calendar popup (used by screen readers).\n */\n this.calendarLabel = 'Calendar';\n /**\n * A label for the button used to open the calendar popup (used by screen readers).\n */\n this.openCalendarLabel = 'Open calendar';\n /**\n * A label for the previous month button (used by screen readers).\n */\n this.prevMonthLabel = 'Previous month';\n /**\n * A label for the next month button (used by screen readers).\n */\n this.nextMonthLabel = 'Next month';\n /**\n * A label for the previous year button (used by screen readers).\n */\n this.prevYearLabel = 'Previous year';\n /**\n * A label for the next year button (used by screen readers).\n */\n this.nextYearLabel = 'Next year';\n /**\n * A label for the 'switch to month view' button (used by screen readers).\n */\n this.switchToMonthViewLabel = 'Change to month view';\n /**\n * A label for the 'switch to year view' button (used by screen readers).\n */\n this.switchToYearViewLabel = 'Change to year view';\n }\n}\nMatDatepickerIntl.decorators = [\n { type: Injectable },\n];\n/**\n * @nocollapse\n */\nMatDatepickerIntl.ctorParameters = () => [];\nfunction MatDatepickerIntl_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDatepickerIntl.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDatepickerIntl.ctorParameters;\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n * @type {?}\n */\n MatDatepickerIntl.prototype.changes;\n /**\n * A label for the calendar popup (used by screen readers).\n * @type {?}\n */\n MatDatepickerIntl.prototype.calendarLabel;\n /**\n * A label for the button used to open the calendar popup (used by screen readers).\n * @type {?}\n */\n MatDatepickerIntl.prototype.openCalendarLabel;\n /**\n * A label for the previous month button (used by screen readers).\n * @type {?}\n */\n MatDatepickerIntl.prototype.prevMonthLabel;\n /**\n * A label for the next month button (used by screen readers).\n * @type {?}\n */\n MatDatepickerIntl.prototype.nextMonthLabel;\n /**\n * A label for the previous year button (used by screen readers).\n * @type {?}\n */\n MatDatepickerIntl.prototype.prevYearLabel;\n /**\n * A label for the next year button (used by screen readers).\n * @type {?}\n */\n MatDatepickerIntl.prototype.nextYearLabel;\n /**\n * A label for the 'switch to month view' button (used by screen readers).\n * @type {?}\n */\n MatDatepickerIntl.prototype.switchToMonthViewLabel;\n /**\n * A label for the 'switch to year view' button (used by screen readers).\n * @type {?}\n */\n MatDatepickerIntl.prototype.switchToYearViewLabel;\n}\n//# sourceMappingURL=datepicker-intl.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * \\@docs-private\n */\nexport class MatCalendarCell {\n /**\n * @param {?} value\n * @param {?} displayValue\n * @param {?} ariaLabel\n * @param {?} enabled\n */\n constructor(value, displayValue, ariaLabel, enabled) {\n this.value = value;\n this.displayValue = displayValue;\n this.ariaLabel = ariaLabel;\n this.enabled = enabled;\n }\n}\nfunction MatCalendarCell_tsickle_Closure_declarations() {\n /** @type {?} */\n MatCalendarCell.prototype.value;\n /** @type {?} */\n MatCalendarCell.prototype.displayValue;\n /** @type {?} */\n MatCalendarCell.prototype.ariaLabel;\n /** @type {?} */\n MatCalendarCell.prototype.enabled;\n}\n/**\n * An internal component used to display calendar data in a table.\n * \\@docs-private\n */\nexport class MatCalendarBody {\n constructor() {\n /**\n * The number of columns in the table.\n */\n this.numCols = 7;\n /**\n * Whether to allow selection of disabled cells.\n */\n this.allowDisabledSelection = false;\n /**\n * The cell number of the active cell in the table.\n */\n this.activeCell = 0;\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n this.cellAspectRatio = 1;\n /**\n * Emits when a new value is selected.\n */\n this.selectedValueChange = new EventEmitter();\n }\n /**\n * @param {?} cell\n * @return {?}\n */\n _cellClicked(cell) {\n if (!this.allowDisabledSelection && !cell.enabled) {\n return;\n }\n this.selectedValueChange.emit(cell.value);\n }\n /**\n * The number of blank cells to put at the beginning for the first row.\n * @return {?}\n */\n get _firstRowOffset() {\n return this.rows && this.rows.length && this.rows[0].length ?\n this.numCols - this.rows[0].length : 0;\n }\n /**\n * @param {?} rowIndex\n * @param {?} colIndex\n * @return {?}\n */\n _isActiveCell(rowIndex, colIndex) {\n let /** @type {?} */ cellNumber = rowIndex * this.numCols + colIndex;\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n return cellNumber == this.activeCell;\n }\n}\nMatCalendarBody.decorators = [\n { type: Component, args: [{selector: '[mat-calendar-body]',\n template: \"{{label}}{{_firstRowOffset >= labelMinRequiredCells ? label : ''}}
{{item.displayValue}}
\",\n styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.71429%;padding-right:4.71429%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:0;cursor:pointer}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}[dir=rtl] .mat-calendar-body-label{text-align:right}\"],\n host: {\n 'class': 'mat-calendar-body',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n];\n/**\n * @nocollapse\n */\nMatCalendarBody.ctorParameters = () => [];\nMatCalendarBody.propDecorators = {\n 'label': [{ type: Input },],\n 'rows': [{ type: Input },],\n 'todayValue': [{ type: Input },],\n 'selectedValue': [{ type: Input },],\n 'labelMinRequiredCells': [{ type: Input },],\n 'numCols': [{ type: Input },],\n 'allowDisabledSelection': [{ type: Input },],\n 'activeCell': [{ type: Input },],\n 'cellAspectRatio': [{ type: Input },],\n 'selectedValueChange': [{ type: Output },],\n};\nfunction MatCalendarBody_tsickle_Closure_declarations() {\n /** @type {?} */\n MatCalendarBody.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatCalendarBody.ctorParameters;\n /** @type {?} */\n MatCalendarBody.propDecorators;\n /**\n * The label for the table. (e.g. \"Jan 2017\").\n * @type {?}\n */\n MatCalendarBody.prototype.label;\n /**\n * The cells to display in the table.\n * @type {?}\n */\n MatCalendarBody.prototype.rows;\n /**\n * The value in the table that corresponds to today.\n * @type {?}\n */\n MatCalendarBody.prototype.todayValue;\n /**\n * The value in the table that is currently selected.\n * @type {?}\n */\n MatCalendarBody.prototype.selectedValue;\n /**\n * The minimum number of free cells needed to fit the label in the first row.\n * @type {?}\n */\n MatCalendarBody.prototype.labelMinRequiredCells;\n /**\n * The number of columns in the table.\n * @type {?}\n */\n MatCalendarBody.prototype.numCols;\n /**\n * Whether to allow selection of disabled cells.\n * @type {?}\n */\n MatCalendarBody.prototype.allowDisabledSelection;\n /**\n * The cell number of the active cell in the table.\n * @type {?}\n */\n MatCalendarBody.prototype.activeCell;\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n * @type {?}\n */\n MatCalendarBody.prototype.cellAspectRatio;\n /**\n * Emits when a new value is selected.\n * @type {?}\n */\n MatCalendarBody.prototype.selectedValueChange;\n}\n//# sourceMappingURL=calendar-body.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation, ChangeDetectorRef, } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { MatCalendarCell } from './calendar-body';\nimport { coerceDateProperty } from './coerce-date-property';\nimport { createMissingDateImplError } from './datepicker-errors';\nconst /** @type {?} */ DAYS_PER_WEEK = 7;\n/**\n * An internal component used to display a single month in the datepicker.\n * \\@docs-private\n */\nexport class MatMonthView {\n /**\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _changeDetectorRef\n */\n constructor(_dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Emits when a new date is selected.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Emits when any date is selected.\n */\n this._userSelection = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n // Rotate the labels for days of the week based on the configured first day of the week.\n let weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i] };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n this._activeDate = this._dateAdapter.today();\n }\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n * @return {?}\n */\n get activeDate() { return this._activeDate; }\n /**\n * @param {?} value\n * @return {?}\n */\n set activeDate(value) {\n let /** @type {?} */ oldActiveDate = this._activeDate;\n this._activeDate = coerceDateProperty(this._dateAdapter, value) || this._dateAdapter.today();\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n }\n /**\n * The currently selected date.\n * @return {?}\n */\n get selected() { return this._selected; }\n /**\n * @param {?} value\n * @return {?}\n */\n set selected(value) {\n this._selected = coerceDateProperty(this._dateAdapter, value);\n this._selectedDate = this._getDateInCurrentMonth(this._selected);\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this._init();\n }\n /**\n * Handles when a new date is selected.\n * @param {?} date\n * @return {?}\n */\n _dateSelected(date) {\n if (this._selectedDate != date) {\n const /** @type {?} */ selectedYear = this._dateAdapter.getYear(this.activeDate);\n const /** @type {?} */ selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n const /** @type {?} */ selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n this.selectedChange.emit(selectedDate);\n }\n this._userSelection.emit();\n }\n /**\n * Initializes this month view.\n * @return {?}\n */\n _init() {\n this._selectedDate = this._getDateInCurrentMonth(this.selected);\n this._todayDate = this._getDateInCurrentMonth(this._dateAdapter.today());\n this._monthLabel =\n this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)]\n .toLocaleUpperCase();\n let /** @type {?} */ firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset =\n (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) -\n this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Creates MatCalendarCells for the dates in this month.\n * @return {?}\n */\n _createWeekCells() {\n let /** @type {?} */ daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n let /** @type {?} */ dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (let /** @type {?} */ i = 0, /** @type {?} */ cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n let /** @type {?} */ date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n let /** @type {?} */ enabled = !this.dateFilter ||\n this.dateFilter(date);\n let /** @type {?} */ ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n this._weeks[this._weeks.length - 1]\n .push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled));\n }\n }\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n * @param {?} date\n * @return {?}\n */\n _getDateInCurrentMonth(date) {\n return date && this._hasSameMonthAndYear(date, this.activeDate) ?\n this._dateAdapter.getDate(date) : null;\n }\n /**\n * Checks whether the 2 dates are non-null and fall within the same month of the same year.\n * @param {?} d1\n * @param {?} d2\n * @return {?}\n */\n _hasSameMonthAndYear(d1, d2) {\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n }\n}\nMatMonthView.decorators = [\n { type: Component, args: [{selector: 'mat-month-view',\n template: \"
{{day.narrow}}
\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n];\n/**\n * @nocollapse\n */\nMatMonthView.ctorParameters = () => [\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n];\nMatMonthView.propDecorators = {\n 'activeDate': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n '_userSelection': [{ type: Output },],\n};\nfunction MatMonthView_tsickle_Closure_declarations() {\n /** @type {?} */\n MatMonthView.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatMonthView.ctorParameters;\n /** @type {?} */\n MatMonthView.propDecorators;\n /** @type {?} */\n MatMonthView.prototype._activeDate;\n /** @type {?} */\n MatMonthView.prototype._selected;\n /**\n * A function used to filter which dates are selectable.\n * @type {?}\n */\n MatMonthView.prototype.dateFilter;\n /**\n * Emits when a new date is selected.\n * @type {?}\n */\n MatMonthView.prototype.selectedChange;\n /**\n * Emits when any date is selected.\n * @type {?}\n */\n MatMonthView.prototype._userSelection;\n /**\n * The label for this month (e.g. \"January 2017\").\n * @type {?}\n */\n MatMonthView.prototype._monthLabel;\n /**\n * Grid of calendar cells representing the dates of the month.\n * @type {?}\n */\n MatMonthView.prototype._weeks;\n /**\n * The number of blank cells in the first row before the 1st of the month.\n * @type {?}\n */\n MatMonthView.prototype._firstWeekOffset;\n /**\n * The date of the month that the currently selected Date falls on.\n * Null if the currently selected Date is in another month.\n * @type {?}\n */\n MatMonthView.prototype._selectedDate;\n /**\n * The date of the month that today falls on. Null if today is in another month.\n * @type {?}\n */\n MatMonthView.prototype._todayDate;\n /**\n * The names of the weekdays.\n * @type {?}\n */\n MatMonthView.prototype._weekdays;\n /** @type {?} */\n MatMonthView.prototype._dateAdapter;\n /** @type {?} */\n MatMonthView.prototype._dateFormats;\n /** @type {?} */\n MatMonthView.prototype._changeDetectorRef;\n}\n//# sourceMappingURL=month-view.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation, ChangeDetectorRef, } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { MatCalendarCell } from './calendar-body';\nimport { coerceDateProperty } from './coerce-date-property';\nimport { createMissingDateImplError } from './datepicker-errors';\n/**\n * An internal component used to display a single year in the datepicker.\n * \\@docs-private\n */\nexport class MatYearView {\n /**\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _changeDetectorRef\n */\n constructor(_dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Emits when a new month is selected.\n */\n this.selectedChange = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n this._activeDate = this._dateAdapter.today();\n }\n /**\n * The date to display in this year view (everything other than the year is ignored).\n * @return {?}\n */\n get activeDate() { return this._activeDate; }\n /**\n * @param {?} value\n * @return {?}\n */\n set activeDate(value) {\n let /** @type {?} */ oldActiveDate = this._activeDate;\n this._activeDate = coerceDateProperty(this._dateAdapter, value) || this._dateAdapter.today();\n if (this._dateAdapter.getYear(oldActiveDate) != this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n }\n /**\n * The currently selected date.\n * @return {?}\n */\n get selected() { return this._selected; }\n /**\n * @param {?} value\n * @return {?}\n */\n set selected(value) {\n this._selected = coerceDateProperty(this._dateAdapter, value);\n this._selectedMonth = this._getMonthInCurrentYear(this._selected);\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this._init();\n }\n /**\n * Handles when a new month is selected.\n * @param {?} month\n * @return {?}\n */\n _monthSelected(month) {\n let /** @type {?} */ daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1));\n this.selectedChange.emit(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n /**\n * Initializes this month view.\n * @return {?}\n */\n _init() {\n this._selectedMonth = this._getMonthInCurrentYear(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n let /** @type {?} */ monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n * @param {?} date\n * @return {?}\n */\n _getMonthInCurrentYear(date) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ?\n this._dateAdapter.getMonth(date) : null;\n }\n /**\n * Creates an MatCalendarCell for the given month.\n * @param {?} month\n * @param {?} monthName\n * @return {?}\n */\n _createCellForMonth(month, monthName) {\n let /** @type {?} */ ariaLabel = this._dateAdapter.format(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1), this._dateFormats.display.monthYearA11yLabel);\n return new MatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));\n }\n /**\n * Whether the given month is enabled.\n * @param {?} month\n * @return {?}\n */\n _isMonthEnabled(month) {\n if (!this.dateFilter) {\n return true;\n }\n let /** @type {?} */ firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n // If any date in the month is enabled count the month as enabled.\n for (let /** @type {?} */ date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n}\nMatYearView.decorators = [\n { type: Component, args: [{selector: 'mat-year-view',\n template: \"
\",\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n];\n/**\n * @nocollapse\n */\nMatYearView.ctorParameters = () => [\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n];\nMatYearView.propDecorators = {\n 'activeDate': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n};\nfunction MatYearView_tsickle_Closure_declarations() {\n /** @type {?} */\n MatYearView.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatYearView.ctorParameters;\n /** @type {?} */\n MatYearView.propDecorators;\n /** @type {?} */\n MatYearView.prototype._activeDate;\n /** @type {?} */\n MatYearView.prototype._selected;\n /**\n * A function used to filter which dates are selectable.\n * @type {?}\n */\n MatYearView.prototype.dateFilter;\n /**\n * Emits when a new month is selected.\n * @type {?}\n */\n MatYearView.prototype.selectedChange;\n /**\n * Grid of calendar cells representing the months of the year.\n * @type {?}\n */\n MatYearView.prototype._months;\n /**\n * The label for this year (e.g. \"2017\").\n * @type {?}\n */\n MatYearView.prototype._yearLabel;\n /**\n * The month in this year that today falls on. Null if today is in a different year.\n * @type {?}\n */\n MatYearView.prototype._todayMonth;\n /**\n * The month in this year that the selected Date falls on.\n * Null if the selected Date is in a different year.\n * @type {?}\n */\n MatYearView.prototype._selectedMonth;\n /** @type {?} */\n MatYearView.prototype._dateAdapter;\n /** @type {?} */\n MatYearView.prototype._dateFormats;\n /** @type {?} */\n MatYearView.prototype._changeDetectorRef;\n}\n//# sourceMappingURL=year-view.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW, } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, NgZone, Optional, Output, ViewEncapsulation, ViewChild, } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { first } from 'rxjs/operator/first';\nimport { coerceDateProperty } from './coerce-date-property';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { MatDatepickerIntl } from './datepicker-intl';\nimport { MatMonthView } from './month-view';\nimport { MatYearView } from './year-view';\n/**\n * A calendar that is used as part of the datepicker.\n * \\@docs-private\n */\nexport class MatCalendar {\n /**\n * @param {?} _elementRef\n * @param {?} _intl\n * @param {?} _ngZone\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} changeDetectorRef\n */\n constructor(_elementRef, _intl, _ngZone, _dateAdapter, _dateFormats, changeDetectorRef) {\n this._elementRef = _elementRef;\n this._intl = _intl;\n this._ngZone = _ngZone;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n /**\n * Whether the calendar should be started in month or year view.\n */\n this.startView = 'month';\n /**\n * Emits when the currently selected date changes.\n */\n this.selectedChange = new EventEmitter();\n /**\n * Emits when any date is selected.\n */\n this._userSelection = new EventEmitter();\n /**\n * Date filter for the month and year views.\n */\n this._dateFilterForViews = (date) => {\n return !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0);\n };\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n this._intlChanges = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());\n }\n /**\n * A date representing the period (month or year) to start the calendar in.\n * @return {?}\n */\n get startAt() { return this._startAt; }\n /**\n * @param {?} value\n * @return {?}\n */\n set startAt(value) { this._startAt = coerceDateProperty(this._dateAdapter, value); }\n /**\n * The currently selected date.\n * @return {?}\n */\n get selected() { return this._selected; }\n /**\n * @param {?} value\n * @return {?}\n */\n set selected(value) { this._selected = coerceDateProperty(this._dateAdapter, value); }\n /**\n * The minimum selectable date.\n * @return {?}\n */\n get minDate() { return this._minDate; }\n /**\n * @param {?} value\n * @return {?}\n */\n set minDate(value) { this._minDate = coerceDateProperty(this._dateAdapter, value); }\n /**\n * The maximum selectable date.\n * @return {?}\n */\n get maxDate() { return this._maxDate; }\n /**\n * @param {?} value\n * @return {?}\n */\n set maxDate(value) { this._maxDate = coerceDateProperty(this._dateAdapter, value); }\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n * @return {?}\n */\n get _activeDate() { return this._clampedActiveDate; }\n /**\n * @param {?} value\n * @return {?}\n */\n set _activeDate(value) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n }\n /**\n * The label for the current calendar view.\n * @return {?}\n */\n get _periodButtonText() {\n return this._monthView ?\n this._dateAdapter.format(this._activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase() :\n this._dateAdapter.getYearName(this._activeDate);\n }\n /**\n * @return {?}\n */\n get _periodButtonLabel() {\n return this._monthView ? this._intl.switchToYearViewLabel : this._intl.switchToMonthViewLabel;\n }\n /**\n * The label for the the previous button.\n * @return {?}\n */\n get _prevButtonLabel() {\n return this._monthView ? this._intl.prevMonthLabel : this._intl.prevYearLabel;\n }\n /**\n * The label for the the next button.\n * @return {?}\n */\n get _nextButtonLabel() {\n return this._monthView ? this._intl.nextMonthLabel : this._intl.nextYearLabel;\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this._activeDate = this.startAt || this._dateAdapter.today();\n this._focusActiveCell();\n this._monthView = this.startView != 'year';\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n const /** @type {?} */ change = changes.minDate || changes.maxDate || changes.dateFilter;\n if (change && !change.firstChange) {\n const /** @type {?} */ view = this.monthView || this.yearView;\n if (view) {\n view._init();\n }\n }\n }\n /**\n * Handles date selection in the month view.\n * @param {?} date\n * @return {?}\n */\n _dateSelected(date) {\n if (!this._dateAdapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n }\n /**\n * @return {?}\n */\n _userSelected() {\n this._userSelection.emit();\n }\n /**\n * Handles month selection in the year view.\n * @param {?} month\n * @return {?}\n */\n _monthSelected(month) {\n this._activeDate = month;\n this._monthView = true;\n }\n /**\n * Handles user clicks on the period label.\n * @return {?}\n */\n _currentPeriodClicked() {\n this._monthView = !this._monthView;\n }\n /**\n * Handles user clicks on the previous button.\n * @return {?}\n */\n _previousClicked() {\n this._activeDate = this._monthView ?\n this._dateAdapter.addCalendarMonths(this._activeDate, -1) :\n this._dateAdapter.addCalendarYears(this._activeDate, -1);\n }\n /**\n * Handles user clicks on the next button.\n * @return {?}\n */\n _nextClicked() {\n this._activeDate = this._monthView ?\n this._dateAdapter.addCalendarMonths(this._activeDate, 1) :\n this._dateAdapter.addCalendarYears(this._activeDate, 1);\n }\n /**\n * Whether the previous period button is enabled.\n * @return {?}\n */\n _previousEnabled() {\n if (!this.minDate) {\n return true;\n }\n return !this.minDate || !this._isSameView(this._activeDate, this.minDate);\n }\n /**\n * Whether the next period button is enabled.\n * @return {?}\n */\n _nextEnabled() {\n return !this.maxDate || !this._isSameView(this._activeDate, this.maxDate);\n }\n /**\n * Handles keydown events on the calendar body.\n * @param {?} event\n * @return {?}\n */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n if (this._monthView) {\n this._handleCalendarBodyKeydownInMonthView(event);\n }\n else {\n this._handleCalendarBodyKeydownInYearView(event);\n }\n }\n /**\n * Focuses the active cell after the microtask queue is empty.\n * @return {?}\n */\n _focusActiveCell() {\n this._ngZone.runOutsideAngular(() => {\n first.call(this._ngZone.onStable.asObservable()).subscribe(() => {\n this._elementRef.nativeElement.querySelector('.mat-calendar-body-active').focus();\n });\n });\n }\n /**\n * Whether the two dates represent the same view in the current view mode (month or year).\n * @param {?} date1\n * @param {?} date2\n * @return {?}\n */\n _isSameView(date1, date2) {\n return this._monthView ?\n this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2) :\n this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n /**\n * Handles keydown events on the calendar body when calendar is in month view.\n * @param {?} event\n * @return {?}\n */\n _handleCalendarBodyKeydownInMonthView(event) {\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1);\n break;\n case UP_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this._activeDate = this._dateAdapter.addCalendarDays(this._activeDate, (this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n this._dateAdapter.getDate(this._activeDate)));\n break;\n case PAGE_UP:\n this._activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, -1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this._activeDate = event.altKey ?\n this._dateAdapter.addCalendarYears(this._activeDate, 1) :\n this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n if (this._dateFilterForViews(this._activeDate)) {\n this._dateSelected(this._activeDate);\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /**\n * Handles keydown events on the calendar body when calendar is in year view.\n * @param {?} event\n * @return {?}\n */\n _handleCalendarBodyKeydownInYearView(event) {\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case RIGHT_ARROW:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case UP_ARROW:\n this._activeDate = this._prevMonthInSameCol(this._activeDate);\n break;\n case DOWN_ARROW:\n this._activeDate = this._nextMonthInSameCol(this._activeDate);\n break;\n case HOME:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this._activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this._activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this._activeDate =\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n this._monthSelected(this._activeDate);\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /**\n * Determine the date for the month that comes before the given month in the same column in the\n * calendar table.\n * @param {?} date\n * @return {?}\n */\n _prevMonthInSameCol(date) {\n // Determine how many months to jump forward given that there are 2 empty slots at the beginning\n // of each year.\n let /** @type {?} */ increment = this._dateAdapter.getMonth(date) <= 4 ? -5 :\n (this._dateAdapter.getMonth(date) >= 7 ? -7 : -12);\n return this._dateAdapter.addCalendarMonths(date, increment);\n }\n /**\n * Determine the date for the month that comes after the given month in the same column in the\n * calendar table.\n * @param {?} date\n * @return {?}\n */\n _nextMonthInSameCol(date) {\n // Determine how many months to jump forward given that there are 2 empty slots at the beginning\n // of each year.\n let /** @type {?} */ increment = this._dateAdapter.getMonth(date) <= 4 ? 7 :\n (this._dateAdapter.getMonth(date) >= 7 ? 5 : 12);\n return this._dateAdapter.addCalendarMonths(date, increment);\n }\n}\nMatCalendar.decorators = [\n { type: Component, args: [{selector: 'mat-calendar',\n template: \"
\",\n styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:0}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-next-button,.mat-calendar-previous-button{position:relative}.mat-calendar-next-button::after,.mat-calendar-previous-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:'';margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-next-button,[dir=rtl] .mat-calendar-previous-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:'';position:absolute;top:0;left:-8px;right:-8px;height:1px}\"],\n host: {\n 'class': 'mat-calendar',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n];\n/**\n * @nocollapse\n */\nMatCalendar.ctorParameters = () => [\n { type: ElementRef, },\n { type: MatDatepickerIntl, },\n { type: NgZone, },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: ChangeDetectorRef, },\n];\nMatCalendar.propDecorators = {\n 'startAt': [{ type: Input },],\n 'startView': [{ type: Input },],\n 'selected': [{ type: Input },],\n 'minDate': [{ type: Input },],\n 'maxDate': [{ type: Input },],\n 'dateFilter': [{ type: Input },],\n 'selectedChange': [{ type: Output },],\n '_userSelection': [{ type: Output },],\n 'monthView': [{ type: ViewChild, args: [MatMonthView,] },],\n 'yearView': [{ type: ViewChild, args: [MatYearView,] },],\n};\nfunction MatCalendar_tsickle_Closure_declarations() {\n /** @type {?} */\n MatCalendar.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatCalendar.ctorParameters;\n /** @type {?} */\n MatCalendar.propDecorators;\n /** @type {?} */\n MatCalendar.prototype._intlChanges;\n /** @type {?} */\n MatCalendar.prototype._startAt;\n /**\n * Whether the calendar should be started in month or year view.\n * @type {?}\n */\n MatCalendar.prototype.startView;\n /** @type {?} */\n MatCalendar.prototype._selected;\n /** @type {?} */\n MatCalendar.prototype._minDate;\n /** @type {?} */\n MatCalendar.prototype._maxDate;\n /**\n * A function used to filter which dates are selectable.\n * @type {?}\n */\n MatCalendar.prototype.dateFilter;\n /**\n * Emits when the currently selected date changes.\n * @type {?}\n */\n MatCalendar.prototype.selectedChange;\n /**\n * Emits when any date is selected.\n * @type {?}\n */\n MatCalendar.prototype._userSelection;\n /**\n * Reference to the current month view component.\n * @type {?}\n */\n MatCalendar.prototype.monthView;\n /**\n * Reference to the current year view component.\n * @type {?}\n */\n MatCalendar.prototype.yearView;\n /**\n * Date filter for the month and year views.\n * @type {?}\n */\n MatCalendar.prototype._dateFilterForViews;\n /** @type {?} */\n MatCalendar.prototype._clampedActiveDate;\n /**\n * Whether the calendar is in month view.\n * @type {?}\n */\n MatCalendar.prototype._monthView;\n /** @type {?} */\n MatCalendar.prototype._elementRef;\n /** @type {?} */\n MatCalendar.prototype._intl;\n /** @type {?} */\n MatCalendar.prototype._ngZone;\n /** @type {?} */\n MatCalendar.prototype._dateAdapter;\n /** @type {?} */\n MatCalendar.prototype._dateFormats;\n}\n//# sourceMappingURL=calendar.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { first } from '@angular/cdk/rxjs';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Inject, InjectionToken, Input, NgZone, Optional, Output, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';\nimport { DateAdapter } from '@angular/material/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { MatCalendar } from './calendar';\nimport { coerceDateProperty } from './coerce-date-property';\nimport { createMissingDateImplError } from './datepicker-errors';\n/**\n * Used to generate a unique ID for each datepicker instance.\n */\nlet datepickerUid = 0;\n/**\n * Injection token that determines the scroll handling while the calendar is open.\n */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken('mat-datepicker-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nexport function MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/**\n * \\@docs-private\n */\nexport const MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * MatCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * \\@docs-private\n */\nexport class MatDatepickerContent {\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this._calendar._focusActiveCell();\n }\n /**\n * Handles keydown event on datepicker content.\n * @param {?} event The event.\n * @return {?}\n */\n _handleKeydown(event) {\n if (event.keyCode === ESCAPE) {\n this.datepicker.close();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\nMatDatepickerContent.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker-content',\n template: \"\",\n styles: [\".mat-datepicker-content{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);display:block}.mat-calendar{width:296px;height:354px}.mat-datepicker-content-touch{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);display:block;max-height:80vh;overflow:auto;margin:-24px}.mat-datepicker-content-touch .mat-calendar{min-width:250px;min-height:312px;max-width:750px;max-height:788px}@media all and (orientation:landscape){.mat-datepicker-content-touch .mat-calendar{width:64vh;height:80vh}}@media all and (orientation:portrait){.mat-datepicker-content-touch .mat-calendar{width:80vw;height:100vw}}\"],\n host: {\n 'class': 'mat-datepicker-content',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n '(keydown)': '_handleKeydown($event)',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n];\n/**\n * @nocollapse\n */\nMatDatepickerContent.ctorParameters = () => [];\nMatDatepickerContent.propDecorators = {\n '_calendar': [{ type: ViewChild, args: [MatCalendar,] },],\n};\nfunction MatDatepickerContent_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDatepickerContent.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDatepickerContent.ctorParameters;\n /** @type {?} */\n MatDatepickerContent.propDecorators;\n /** @type {?} */\n MatDatepickerContent.prototype.datepicker;\n /** @type {?} */\n MatDatepickerContent.prototype._calendar;\n}\n/**\n * Component responsible for managing the datepicker popup/dialog.\n */\nexport class MatDatepicker {\n /**\n * @param {?} _dialog\n * @param {?} _overlay\n * @param {?} _ngZone\n * @param {?} _viewContainerRef\n * @param {?} _scrollStrategy\n * @param {?} _dateAdapter\n * @param {?} _dir\n * @param {?} _document\n */\n constructor(_dialog, _overlay, _ngZone, _viewContainerRef, _scrollStrategy, _dateAdapter, _dir, _document) {\n this._dialog = _dialog;\n this._overlay = _overlay;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._scrollStrategy = _scrollStrategy;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._document = _document;\n /**\n * The view that the calendar should start in.\n */\n this.startView = 'month';\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a popup and elements have more padding to allow for bigger touch targets.\n */\n this.touchUi = false;\n /**\n * Emits new selected date when selected date changes.\n * @deprecated Switch to the `dateChange` and `dateInput` binding on the input element.\n */\n this.selectedChanged = new EventEmitter();\n /**\n * Whether the calendar is open.\n */\n this.opened = false;\n /**\n * The id for the datepicker calendar.\n */\n this.id = `mat-datepicker-${datepickerUid++}`;\n this._validSelected = null;\n /**\n * The element that was focused before the datepicker was opened.\n */\n this._focusedElementBeforeOpen = null;\n this._inputSubscription = Subscription.EMPTY;\n /**\n * Emits when the datepicker is disabled.\n */\n this._disabledChange = new Subject();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n }\n /**\n * The date to open the calendar to initially.\n * @return {?}\n */\n get startAt() {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this._datepickerInput ? this._datepickerInput.value : null);\n }\n /**\n * @param {?} date\n * @return {?}\n */\n set startAt(date) { this._startAt = coerceDateProperty(this._dateAdapter, date); }\n /**\n * Whether the datepicker pop-up should be disabled.\n * @return {?}\n */\n get disabled() {\n return this._disabled === undefined && this._datepickerInput ?\n this._datepickerInput.disabled : this._disabled;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) {\n const /** @type {?} */ newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._disabledChange.next(newValue);\n }\n }\n /**\n * The currently selected date.\n * @return {?}\n */\n get _selected() { return this._validSelected; }\n /**\n * @param {?} value\n * @return {?}\n */\n set _selected(value) { this._validSelected = value; }\n /**\n * The minimum selectable date.\n * @return {?}\n */\n get _minDate() {\n return this._datepickerInput && this._datepickerInput.min;\n }\n /**\n * The maximum selectable date.\n * @return {?}\n */\n get _maxDate() {\n return this._datepickerInput && this._datepickerInput.max;\n }\n /**\n * @return {?}\n */\n get _dateFilter() {\n return this._datepickerInput && this._datepickerInput._dateFilter;\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.close();\n this._inputSubscription.unsubscribe();\n this._disabledChange.complete();\n if (this._popupRef) {\n this._popupRef.dispose();\n }\n }\n /**\n * Selects the given date\n * @param {?} date\n * @return {?}\n */\n _select(date) {\n let /** @type {?} */ oldValue = this._selected;\n this._selected = date;\n if (!this._dateAdapter.sameDate(oldValue, this._selected)) {\n this.selectedChanged.emit(date);\n }\n }\n /**\n * Register an input with this datepicker.\n * @param {?} input The datepicker input to register with this datepicker.\n * @return {?}\n */\n _registerInput(input) {\n if (this._datepickerInput) {\n throw Error('An MatDatepicker can only be associated with a single input.');\n }\n this._datepickerInput = input;\n this._inputSubscription =\n this._datepickerInput._valueChange.subscribe((value) => this._selected = value);\n }\n /**\n * Open the calendar.\n * @return {?}\n */\n open() {\n if (this.opened || this.disabled) {\n return;\n }\n if (!this._datepickerInput) {\n throw Error('Attempted to open an MatDatepicker with no associated input.');\n }\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\n this.opened = true;\n }\n /**\n * Close the calendar.\n * @return {?}\n */\n close() {\n if (!this.opened) {\n return;\n }\n if (this._popupRef && this._popupRef.hasAttached()) {\n this._popupRef.detach();\n }\n if (this._dialogRef) {\n this._dialogRef.close();\n this._dialogRef = null;\n }\n if (this._calendarPortal && this._calendarPortal.isAttached) {\n this._calendarPortal.detach();\n }\n if (this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function') {\n this._focusedElementBeforeOpen.focus();\n this._focusedElementBeforeOpen = null;\n }\n this.opened = false;\n }\n /**\n * Open the calendar as a dialog.\n * @return {?}\n */\n _openAsDialog() {\n this._dialogRef = this._dialog.open(MatDatepickerContent, {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'mat-datepicker-dialog',\n });\n this._dialogRef.afterClosed().subscribe(() => this.close());\n this._dialogRef.componentInstance.datepicker = this;\n }\n /**\n * Open the calendar as a popup.\n * @return {?}\n */\n _openAsPopup() {\n if (!this._calendarPortal) {\n this._calendarPortal = new ComponentPortal(MatDatepickerContent, this._viewContainerRef);\n }\n if (!this._popupRef) {\n this._createPopup();\n }\n if (!this._popupRef.hasAttached()) {\n let /** @type {?} */ componentRef = this._popupRef.attach(this._calendarPortal);\n componentRef.instance.datepicker = this;\n // Update the position once the calendar has rendered.\n first.call(this._ngZone.onStable.asObservable()).subscribe(() => {\n this._popupRef.updatePosition();\n });\n }\n this._popupRef.backdropClick().subscribe(() => this.close());\n }\n /**\n * Create the popup.\n * @return {?}\n */\n _createPopup() {\n const /** @type {?} */ overlayConfig = new OverlayConfig({\n positionStrategy: this._createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: 'mat-overlay-transparent-backdrop',\n direction: this._dir ? this._dir.value : 'ltr',\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-datepicker-popup',\n });\n this._popupRef = this._overlay.create(overlayConfig);\n }\n /**\n * Create the popup PositionStrategy.\n * @return {?}\n */\n _createPopupPositionStrategy() {\n return this._overlay.position()\n .connectedTo(this._datepickerInput.getPopupConnectionElementRef(), { originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' })\n .withFallbackPosition({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n .withFallbackPosition({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' })\n .withFallbackPosition({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' });\n }\n}\nMatDatepicker.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker',\n template: '',\n exportAs: 'matDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n },] },\n];\n/**\n * @nocollapse\n */\nMatDatepicker.ctorParameters = () => [\n { type: MatDialog, },\n { type: Overlay, },\n { type: NgZone, },\n { type: ViewContainerRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_DATEPICKER_SCROLL_STRATEGY,] },] },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: Directionality, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n];\nMatDatepicker.propDecorators = {\n 'startAt': [{ type: Input },],\n 'startView': [{ type: Input },],\n 'touchUi': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'selectedChanged': [{ type: Output },],\n};\nfunction MatDatepicker_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDatepicker.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDatepicker.ctorParameters;\n /** @type {?} */\n MatDatepicker.propDecorators;\n /** @type {?} */\n MatDatepicker.prototype._startAt;\n /**\n * The view that the calendar should start in.\n * @type {?}\n */\n MatDatepicker.prototype.startView;\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a popup and elements have more padding to allow for bigger touch targets.\n * @type {?}\n */\n MatDatepicker.prototype.touchUi;\n /** @type {?} */\n MatDatepicker.prototype._disabled;\n /**\n * Emits new selected date when selected date changes.\n * @deprecated Switch to the `dateChange` and `dateInput` binding on the input element.\n * @type {?}\n */\n MatDatepicker.prototype.selectedChanged;\n /**\n * Whether the calendar is open.\n * @type {?}\n */\n MatDatepicker.prototype.opened;\n /**\n * The id for the datepicker calendar.\n * @type {?}\n */\n MatDatepicker.prototype.id;\n /** @type {?} */\n MatDatepicker.prototype._validSelected;\n /**\n * A reference to the overlay when the calendar is opened as a popup.\n * @type {?}\n */\n MatDatepicker.prototype._popupRef;\n /**\n * A reference to the dialog when the calendar is opened as a dialog.\n * @type {?}\n */\n MatDatepicker.prototype._dialogRef;\n /**\n * A portal containing the calendar for this datepicker.\n * @type {?}\n */\n MatDatepicker.prototype._calendarPortal;\n /**\n * The element that was focused before the datepicker was opened.\n * @type {?}\n */\n MatDatepicker.prototype._focusedElementBeforeOpen;\n /** @type {?} */\n MatDatepicker.prototype._inputSubscription;\n /**\n * The input element this datepicker is associated with.\n * @type {?}\n */\n MatDatepicker.prototype._datepickerInput;\n /**\n * Emits when the datepicker is disabled.\n * @type {?}\n */\n MatDatepicker.prototype._disabledChange;\n /** @type {?} */\n MatDatepicker.prototype._dialog;\n /** @type {?} */\n MatDatepicker.prototype._overlay;\n /** @type {?} */\n MatDatepicker.prototype._ngZone;\n /** @type {?} */\n MatDatepicker.prototype._viewContainerRef;\n /** @type {?} */\n MatDatepicker.prototype._scrollStrategy;\n /** @type {?} */\n MatDatepicker.prototype._dateAdapter;\n /** @type {?} */\n MatDatepicker.prototype._dir;\n /** @type {?} */\n MatDatepicker.prototype._document;\n}\n//# sourceMappingURL=datepicker.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, forwardRef, Inject, Input, Optional, Output, Renderer2, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { Subscription } from 'rxjs/Subscription';\nimport { coerceDateProperty } from './coerce-date-property';\nimport { createMissingDateImplError } from './datepicker-errors';\nexport const /** @type {?} */ MAT_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\nexport const /** @type {?} */ MAT_DATEPICKER_VALIDATORS = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true\n};\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\n */\nexport class MatDatepickerInputEvent {\n /**\n * @param {?} target\n * @param {?} targetElement\n */\n constructor(target, targetElement) {\n this.target = target;\n this.targetElement = targetElement;\n this.value = this.target.value;\n }\n}\nfunction MatDatepickerInputEvent_tsickle_Closure_declarations() {\n /**\n * The new value for the target datepicker input.\n * @type {?}\n */\n MatDatepickerInputEvent.prototype.value;\n /** @type {?} */\n MatDatepickerInputEvent.prototype.target;\n /** @type {?} */\n MatDatepickerInputEvent.prototype.targetElement;\n}\n/**\n * Directive used to connect an input to a MatDatepicker.\n */\nexport class MatDatepickerInput {\n /**\n * @param {?} _elementRef\n * @param {?} _renderer\n * @param {?} _dateAdapter\n * @param {?} _dateFormats\n * @param {?} _formField\n */\n constructor(_elementRef, _renderer, _dateAdapter, _dateFormats, _formField) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._formField = _formField;\n /**\n * Emits when a `change` event is fired on this ``.\n */\n this.dateChange = new EventEmitter();\n /**\n * Emits when an `input` event is fired on this ``.\n */\n this.dateInput = new EventEmitter();\n /**\n * Emits when the value changes (either due to user input or programmatic change).\n */\n this._valueChange = new EventEmitter();\n /**\n * Emits when the disabled state has changed\n */\n this._disabledChange = new EventEmitter();\n this._onTouched = () => { };\n this._cvaOnChange = () => { };\n this._validatorOnChange = () => { };\n this._datepickerSubscription = Subscription.EMPTY;\n this._localeSubscription = Subscription.EMPTY;\n /**\n * The form control validator for whether the input parses.\n */\n this._parseValidator = () => {\n return this._lastValueValid ?\n null : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };\n };\n /**\n * The form control validator for the min date.\n */\n this._minValidator = (control) => {\n const controlValue = coerceDateProperty(this._dateAdapter, control.value);\n return (!this.min || !controlValue ||\n this._dateAdapter.compareDate(this.min, controlValue) <= 0) ?\n null : { 'matDatepickerMin': { 'min': this.min, 'actual': controlValue } };\n };\n /**\n * The form control validator for the max date.\n */\n this._maxValidator = (control) => {\n const controlValue = coerceDateProperty(this._dateAdapter, control.value);\n return (!this.max || !controlValue ||\n this._dateAdapter.compareDate(this.max, controlValue) >= 0) ?\n null : { 'matDatepickerMax': { 'max': this.max, 'actual': controlValue } };\n };\n /**\n * The form control validator for the date filter.\n */\n this._filterValidator = (control) => {\n const controlValue = coerceDateProperty(this._dateAdapter, control.value);\n return !this._dateFilter || !controlValue || this._dateFilter(controlValue) ?\n null : { 'matDatepickerFilter': true };\n };\n /**\n * The combined form control validator for this input.\n */\n this._validator = Validators.compose([this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\n /**\n * Whether the last value set on the input was valid.\n */\n this._lastValueValid = false;\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n /**\n * The datepicker that this input is associated with.\n * @param {?} value\n * @return {?}\n */\n set matDatepicker(value) {\n this.registerDatepicker(value);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n registerDatepicker(value) {\n if (value) {\n this._datepicker = value;\n this._datepicker._registerInput(this);\n }\n }\n /**\n * @param {?} filter\n * @return {?}\n */\n set matDatepickerFilter(filter) {\n this._dateFilter = filter;\n this._validatorOnChange();\n }\n /**\n * The value of the input.\n * @return {?}\n */\n get value() {\n return this._value;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set value(value) {\n value = coerceDateProperty(this._dateAdapter, value);\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\n value = this._getValidDateOrNull(value);\n let /** @type {?} */ oldDate = this.value;\n this._value = value;\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '');\n if (!this._dateAdapter.sameDate(oldDate, value)) {\n this._valueChange.emit(value);\n }\n }\n /**\n * The minimum valid date.\n * @return {?}\n */\n get min() { return this._min; }\n /**\n * @param {?} value\n * @return {?}\n */\n set min(value) {\n this._min = coerceDateProperty(this._dateAdapter, value);\n this._validatorOnChange();\n }\n /**\n * The maximum valid date.\n * @return {?}\n */\n get max() { return this._max; }\n /**\n * @param {?} value\n * @return {?}\n */\n set max(value) {\n this._max = coerceDateProperty(this._dateAdapter, value);\n this._validatorOnChange();\n }\n /**\n * Whether the datepicker-input is disabled.\n * @return {?}\n */\n get disabled() { return this._disabled; }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) {\n const /** @type {?} */ newValue = coerceBooleanProperty(value);\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this._disabledChange.emit(newValue);\n }\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n if (this._datepicker) {\n this._datepickerSubscription =\n this._datepicker.selectedChanged.subscribe((selected) => {\n this.value = selected;\n this._cvaOnChange(selected);\n this._onTouched();\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n });\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._datepickerSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this._valueChange.complete();\n this._disabledChange.complete();\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnValidatorChange(fn) {\n this._validatorOnChange = fn;\n }\n /**\n * @param {?} c\n * @return {?}\n */\n validate(c) {\n return this._validator ? this._validator(c) : null;\n }\n /**\n * Gets the element that the datepicker popup should be connected to.\n * @return {?} The element to connect the popup to.\n */\n getPopupConnectionElementRef() {\n return this._formField ? this._formField.underlineRef : this._elementRef;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) {\n this._cvaOnChange = fn;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * @param {?} disabled\n * @return {?}\n */\n setDisabledState(disabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', disabled);\n }\n /**\n * @param {?} event\n * @return {?}\n */\n _onKeydown(event) {\n if (event.altKey && event.keyCode === DOWN_ARROW) {\n this._datepicker.open();\n event.preventDefault();\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n _onInput(value) {\n let /** @type {?} */ date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = !date || this._dateAdapter.isValid(date);\n date = this._getValidDateOrNull(date);\n this._value = date;\n this._cvaOnChange(date);\n this._valueChange.emit(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n /**\n * @return {?}\n */\n _onChange() {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n /**\n * @param {?} obj The object to check.\n * @return {?} The given object if it is both a date instance and valid, otherwise null.\n */\n _getValidDateOrNull(obj) {\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\n }\n}\nMatDatepickerInput.decorators = [\n { type: Directive, args: [{\n selector: 'input[matDatepicker]',\n providers: [MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS],\n host: {\n '[attr.aria-haspopup]': 'true',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onTouched()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'matDatepickerInput',\n },] },\n];\n/**\n * @nocollapse\n */\nMatDatepickerInput.ctorParameters = () => [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: DateAdapter, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] },] },\n { type: MatFormField, decorators: [{ type: Optional },] },\n];\nMatDatepickerInput.propDecorators = {\n 'matDatepicker': [{ type: Input },],\n 'matDatepickerFilter': [{ type: Input },],\n 'value': [{ type: Input },],\n 'min': [{ type: Input },],\n 'max': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'dateChange': [{ type: Output },],\n 'dateInput': [{ type: Output },],\n};\nfunction MatDatepickerInput_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDatepickerInput.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDatepickerInput.ctorParameters;\n /** @type {?} */\n MatDatepickerInput.propDecorators;\n /** @type {?} */\n MatDatepickerInput.prototype._datepicker;\n /** @type {?} */\n MatDatepickerInput.prototype._dateFilter;\n /** @type {?} */\n MatDatepickerInput.prototype._value;\n /** @type {?} */\n MatDatepickerInput.prototype._min;\n /** @type {?} */\n MatDatepickerInput.prototype._max;\n /** @type {?} */\n MatDatepickerInput.prototype._disabled;\n /**\n * Emits when a `change` event is fired on this ``.\n * @type {?}\n */\n MatDatepickerInput.prototype.dateChange;\n /**\n * Emits when an `input` event is fired on this ``.\n * @type {?}\n */\n MatDatepickerInput.prototype.dateInput;\n /**\n * Emits when the value changes (either due to user input or programmatic change).\n * @type {?}\n */\n MatDatepickerInput.prototype._valueChange;\n /**\n * Emits when the disabled state has changed\n * @type {?}\n */\n MatDatepickerInput.prototype._disabledChange;\n /** @type {?} */\n MatDatepickerInput.prototype._onTouched;\n /** @type {?} */\n MatDatepickerInput.prototype._cvaOnChange;\n /** @type {?} */\n MatDatepickerInput.prototype._validatorOnChange;\n /** @type {?} */\n MatDatepickerInput.prototype._datepickerSubscription;\n /** @type {?} */\n MatDatepickerInput.prototype._localeSubscription;\n /**\n * The form control validator for whether the input parses.\n * @type {?}\n */\n MatDatepickerInput.prototype._parseValidator;\n /**\n * The form control validator for the min date.\n * @type {?}\n */\n MatDatepickerInput.prototype._minValidator;\n /**\n * The form control validator for the max date.\n * @type {?}\n */\n MatDatepickerInput.prototype._maxValidator;\n /**\n * The form control validator for the date filter.\n * @type {?}\n */\n MatDatepickerInput.prototype._filterValidator;\n /**\n * The combined form control validator for this input.\n * @type {?}\n */\n MatDatepickerInput.prototype._validator;\n /**\n * Whether the last value set on the input was valid.\n * @type {?}\n */\n MatDatepickerInput.prototype._lastValueValid;\n /** @type {?} */\n MatDatepickerInput.prototype._elementRef;\n /** @type {?} */\n MatDatepickerInput.prototype._renderer;\n /** @type {?} */\n MatDatepickerInput.prototype._dateAdapter;\n /** @type {?} */\n MatDatepickerInput.prototype._dateFormats;\n /** @type {?} */\n MatDatepickerInput.prototype._formField;\n}\n//# sourceMappingURL=datepicker-input.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation, } from '@angular/core';\nimport { MatDatepickerIntl } from './datepicker-intl';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs/Subscription';\nimport { merge } from 'rxjs/observable/merge';\nimport { of as observableOf } from 'rxjs/observable/of';\nexport class MatDatepickerToggle {\n /**\n * @param {?} _intl\n * @param {?} _changeDetectorRef\n */\n constructor(_intl, _changeDetectorRef) {\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._stateChanges = Subscription.EMPTY;\n }\n /**\n * Whether the toggle button is disabled.\n * @return {?}\n */\n get disabled() {\n return this._disabled === undefined ? this.datepicker.disabled : this._disabled;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.datepicker) {\n const /** @type {?} */ datepicker = changes.datepicker.currentValue;\n const /** @type {?} */ datepickerDisabled = datepicker ? datepicker._disabledChange : observableOf();\n const /** @type {?} */ inputDisabled = datepicker && datepicker._datepickerInput ?\n datepicker._datepickerInput._disabledChange :\n observableOf();\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(this._intl.changes, datepickerDisabled, inputDisabled)\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n /**\n * @param {?} event\n * @return {?}\n */\n _open(event) {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n}\nMatDatepickerToggle.decorators = [\n { type: Component, args: [{selector: 'mat-datepicker-toggle',\n template: \"\",\n host: {\n 'class': 'mat-datepicker-toggle',\n },\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n];\n/**\n * @nocollapse\n */\nMatDatepickerToggle.ctorParameters = () => [\n { type: MatDatepickerIntl, },\n { type: ChangeDetectorRef, },\n];\nMatDatepickerToggle.propDecorators = {\n 'datepicker': [{ type: Input, args: ['for',] },],\n 'disabled': [{ type: Input },],\n};\nfunction MatDatepickerToggle_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDatepickerToggle.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDatepickerToggle.ctorParameters;\n /** @type {?} */\n MatDatepickerToggle.propDecorators;\n /** @type {?} */\n MatDatepickerToggle.prototype._stateChanges;\n /**\n * Datepicker instance that the button will toggle.\n * @type {?}\n */\n MatDatepickerToggle.prototype.datepicker;\n /** @type {?} */\n MatDatepickerToggle.prototype._disabled;\n /** @type {?} */\n MatDatepickerToggle.prototype._intl;\n /** @type {?} */\n MatDatepickerToggle.prototype._changeDetectorRef;\n}\n//# sourceMappingURL=datepicker-toggle.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCalendar } from './calendar';\nimport { MatCalendarBody } from './calendar-body';\nimport { MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER, MatDatepicker, MatDatepickerContent, } from './datepicker';\nimport { MatDatepickerInput } from './datepicker-input';\nimport { MatDatepickerIntl } from './datepicker-intl';\nimport { MatDatepickerToggle } from './datepicker-toggle';\nimport { MatMonthView } from './month-view';\nimport { MatYearView } from './year-view';\nexport class MatDatepickerModule {\n}\nMatDatepickerModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n OverlayModule,\n A11yModule,\n ],\n exports: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatMonthView,\n MatYearView,\n ],\n declarations: [\n MatCalendar,\n MatCalendarBody,\n MatDatepicker,\n MatDatepickerContent,\n MatDatepickerInput,\n MatDatepickerToggle,\n MatMonthView,\n MatYearView,\n ],\n providers: [\n MatDatepickerIntl,\n MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [\n MatDatepickerContent,\n ]\n },] },\n];\n/**\n * @nocollapse\n */\nMatDatepickerModule.ctorParameters = () => [];\nfunction MatDatepickerModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDatepickerModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDatepickerModule.ctorParameters;\n}\n//# sourceMappingURL=datepicker-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatDatepickerModule, MatCalendar, MatCalendarCell, MatCalendarBody, coerceDateProperty, MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DATEPICKER_SCROLL_STRATEGY_PROVIDER, MatDatepickerContent, MatDatepicker, MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS, MatDatepickerInputEvent, MatDatepickerInput, MatDatepickerIntl, MatDatepickerToggle, MatMonthView, MatYearView } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["first","observableOf"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;;;;;;;;;;;AAWA,AAAO,SAAS,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,IAAI,KAAK,IAAI,EAAE,EAAE;YACb,KAAK,GAAG,IAAI,CAAC;SAChB;aACI;YACD,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;SAC/C;KACJ;IACD,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,KAAK,CAAC,CAAC,gFAAgF,CAAC;QAC1F,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACpD,AACD;;ACjCA;;;;;AAKA,AAAO,SAAS,0BAA0B,CAAC,QAAQ,EAAE;IACjD,OAAO,KAAK,CAAC,CAAC,qCAAqC,EAAE,QAAQ,CAAC,uCAAuC,CAAC;QAClG,CAAC,0FAA0F,CAAC,CAAC,CAAC;CACrG,AACD;;ACAA;;;AAGA,AAAO,MAAM,iBAAiB,CAAC;IAC3B,WAAW,GAAG;;;;;QAKV,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;;;;QAI7B,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC;;;;QAIhC,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC;;;;QAIzC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC;;;;QAIvC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;;;;QAInC,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;;;;QAIrC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;;;;QAIjC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;;;;QAIrD,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;KACtD;CACJ;AACD,iBAAiB,CAAC,UAAU,GAAG;IAC3B,EAAE,IAAI,EAAE,UAAU,EAAE;CACvB,CAAC;;;;AAIF,iBAAiB,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC,AAC5C,AAsDC,AACD;;AC3GA;;;;AAIA,AAAO,MAAM,eAAe,CAAC;;;;;;;IAOzB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE;QACjD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC1B;CACJ;AACD,AAUA;;;;AAIA,AAAO,MAAM,eAAe,CAAC;IACzB,WAAW,GAAG;;;;QAIV,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;;;;QAIjB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;;;;QAIpC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;;;;;QAKpB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;;;;QAIzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;KACjD;;;;;IAKD,YAAY,CAAC,IAAI,EAAE;QACf,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC/C,OAAO;SACV;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7C;;;;;IAKD,IAAI,eAAe,GAAG;QAClB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;YACvD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KAC9C;;;;;;IAMD,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE;QAC9B,qBAAqB,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;;QAErE,IAAI,QAAQ,EAAE;YACV,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC;SACtC;QACD,OAAO,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;KACxC;CACJ;AACD,eAAe,CAAC,UAAU,GAAG;IACzB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,qBAAqB;gBAC9C,QAAQ,EAAE,44CAA44C;gBACt5C,MAAM,EAAE,CAAC,skBAAskB,CAAC;gBAChlB,IAAI,EAAE;oBACF,OAAO,EAAE,mBAAmB;iBAC/B;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,mBAAmB,EAAE,KAAK;gBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAClD,EAAE,EAAE;CAChB,CAAC;;;;AAIF,eAAe,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC;AAC1C,eAAe,CAAC,cAAc,GAAG;IAC7B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC3B,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC1B,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAChC,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IACnC,uBAAuB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC3C,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC7B,wBAAwB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC5C,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAChC,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IACrC,qBAAqB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;CAC7C,CAAC,AACF,AA6DC,AACD;;AC9KA,MAAuB,aAAa,GAAG,CAAC,CAAC;;;;;AAKzC,AAAO,MAAM,YAAY,CAAC;;;;;;IAMtB,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE;QACxD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;;;;QAI7C,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;;;;QAIzC,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;SACxD;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;;QAEjE,IAAI,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;YACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAChD;;;;;IAKD,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;;;;;IAK7C,IAAI,UAAU,CAAC,KAAK,EAAE;QAClB,qBAAqB,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7F,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;;;;;IAKD,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;;;;;IAKzC,IAAI,QAAQ,CAAC,KAAK,EAAE;QAChB,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACpE;;;;IAID,kBAAkB,GAAG;QACjB,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;;;;;;IAMD,aAAa,CAAC,IAAI,EAAE;QAChB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;YAC5B,uBAAuB,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjF,uBAAuB,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnF,uBAAuB,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YACtG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC1C;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;;;;;IAKD,KAAK,GAAG;QACJ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW;YACZ,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAChF,iBAAiB,EAAE,CAAC;QAC7B,qBAAqB,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7J,IAAI,CAAC,gBAAgB;YACjB,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;gBACzD,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,aAAa,CAAC;QAC/D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;;;;;IAKD,gBAAgB,GAAG;QACf,qBAAqB,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxF,qBAAqB,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAClE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,KAAK,qBAAqB,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YAC1G,IAAI,IAAI,IAAI,aAAa,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI,GAAG,CAAC,CAAC;aACZ;YACD,qBAAqB,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACzJ,qBAAqB,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU;gBAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1B,qBAAqB,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACzG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC9B,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;SAC3E;KACJ;;;;;;;IAOD,sBAAsB,CAAC,IAAI,EAAE;QACzB,OAAO,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC9C;;;;;;;IAOD,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE;QACzB,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KACvE;CACJ;AACD,YAAY,CAAC,UAAU,GAAG;IACtB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,gBAAgB;gBACzC,QAAQ,EAAE,4jBAA4jB;gBACtkB,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,mBAAmB,EAAE,KAAK;gBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAClD,EAAE,EAAE;CAChB,CAAC;;;;AAIF,YAAY,CAAC,cAAc,GAAG,MAAM;IAChC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE;IACnG,EAAE,IAAI,EAAE,iBAAiB,GAAG;CAC/B,CAAC;AACF,YAAY,CAAC,cAAc,GAAG;IAC1B,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAChC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC9B,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAChC,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACrC,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;CACxC,CAAC,AACF,AAkEC,AACD;;AC7OA;;;;AAIA,AAAO,MAAM,WAAW,CAAC;;;;;;IAMrB,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE;QACxD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;;;;QAI7C,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAChD;;;;;IAKD,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;;;;;IAK7C,IAAI,UAAU,CAAC,KAAK,EAAE;QAClB,qBAAqB,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7F,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACzF,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;KACJ;;;;;IAKD,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;;;;;IAKzC,IAAI,QAAQ,CAAC,KAAK,EAAE;QAChB,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrE;;;;IAID,kBAAkB,GAAG;QACjB,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;;;;;;IAMD,cAAc,CAAC,KAAK,EAAE;QAClB,qBAAqB,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3J,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;KAChL;;;;;IAKD,KAAK,GAAG;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,qBAAqB,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;;QAE3E,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7I,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1C;;;;;;;IAOD,sBAAsB,CAAC,IAAI,EAAE;QACzB,OAAO,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YACxF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC/C;;;;;;;IAOD,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE;QAClC,qBAAqB,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC5L,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;KAC5G;;;;;;IAMD,eAAe,CAAC,KAAK,EAAE;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO,IAAI,CAAC;SACf;QACD,qBAAqB,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;;QAEvH,KAAK,qBAAqB,IAAI,GAAG,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YACzI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvB,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;KAChB;CACJ;AACD,WAAW,CAAC,UAAU,GAAG;IACrB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,eAAe;gBACxC,QAAQ,EAAE,ohBAAohB;gBAC9hB,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,mBAAmB,EAAE,KAAK;gBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAClD,EAAE,EAAE;CAChB,CAAC;;;;AAIF,WAAW,CAAC,cAAc,GAAG,MAAM;IAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE;IACnG,EAAE,IAAI,EAAE,iBAAiB,GAAG;CAC/B,CAAC;AACF,WAAW,CAAC,cAAc,GAAG;IACzB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAChC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC9B,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAChC,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;CACxC,CAAC,AACF,AAmDC,AACD;;AChMA;;;;AAIA,AAAO,MAAM,WAAW,CAAC;;;;;;;;;IASrB,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE;QACpF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;;;;QAIjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;;;;QAIzB,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;;;;QAIzC,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;;;;QAIzC,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,KAAK;YACjC,OAAO,CAAC,CAAC,IAAI;iBACR,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBAC1C,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBACxE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SACjF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC;KACvF;;;;;IAKD,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;;;;IAKvC,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE;;;;;IAKpF,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;;;;;IAKzC,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE;;;;;IAKtF,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;;;;IAKvC,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE;;;;;IAKpF,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;;;;;IAKvC,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE;;;;;;IAMpF,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE;;;;;IAKrD,IAAI,WAAW,CAAC,KAAK,EAAE;QACnB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5F;;;;;IAKD,IAAI,iBAAiB,GAAG;QACpB,OAAO,IAAI,CAAC,UAAU;YAClB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC;iBAC/E,iBAAiB,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvD;;;;IAID,IAAI,kBAAkB,GAAG;QACrB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;KACjG;;;;;IAKD,IAAI,gBAAgB,GAAG;QACnB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;KACjF;;;;;IAKD,IAAI,gBAAgB,GAAG;QACnB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;KACjF;;;;IAID,kBAAkB,GAAG;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;KAC9C;;;;IAID,WAAW,GAAG;QACV,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACnC;;;;;IAKD,WAAW,CAAC,OAAO,EAAE;QACjB,uBAAuB,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;QACzF,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC/B,uBAAuB,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC;YAC9D,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;SACJ;KACJ;;;;;;IAMD,aAAa,CAAC,IAAI,EAAE;QAChB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClC;KACJ;;;;IAID,aAAa,GAAG;QACZ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;;;;;;IAMD,cAAc,CAAC,KAAK,EAAE;QAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B;;;;;IAKD,qBAAqB,GAAG;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;KACtC;;;;;IAKD,gBAAgB,GAAG;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;YAC9B,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;KAChE;;;;;IAKD,YAAY,GAAG;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;YAC9B,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KAC/D;;;;;IAKD,gBAAgB,GAAG;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO,IAAI,CAAC;SACf;QACD,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7E;;;;;IAKD,YAAY,GAAG;QACX,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7E;;;;;;IAMD,0BAA0B,CAAC,KAAK,EAAE;;;;QAI9B,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;SACrD;aACI;YACD,IAAI,CAAC,oCAAoC,CAAC,KAAK,CAAC,CAAC;SACpD;KACJ;;;;;IAKD,gBAAgB,GAAG;QACf,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM;YACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;gBAC7D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;aACrF,CAAC,CAAC;SACN,CAAC,CAAC;KACN;;;;;;;IAOD,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;QACtB,OAAO,IAAI,CAAC,UAAU;YAClB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;gBAChE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1E,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5E;;;;;;IAMD,qCAAqC,CAAC,KAAK,EAAE;QACzC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,UAAU;gBACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3E,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC1E,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3E,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC1E,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACxH,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;oBACzH,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClD,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM;oBAC3B,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;oBACxD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM;oBAC3B,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBACvD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC7D,MAAM;YACV,KAAK,KAAK;gBACN,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;oBAErC,KAAK,CAAC,cAAc,EAAE,CAAC;iBAC1B;gBACD,OAAO;YACX;;gBAEI,OAAO;SACd;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;;QAExB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;;;;;;IAMD,oCAAoC,CAAC,KAAK,EAAE;QACxC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,UAAU;gBACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7E,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC5E,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9D,MAAM;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACxH,MAAM;YACV,KAAK,GAAG;gBACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC5H,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,WAAW;oBACZ,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClF,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,WAAW;oBACZ,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBAChF,MAAM;YACV,KAAK,KAAK;gBACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACtC,MAAM;YACV;;gBAEI,OAAO;SACd;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;;QAExB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;;;;;;;IAOD,mBAAmB,CAAC,IAAI,EAAE;;;QAGtB,qBAAqB,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACtE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KAC/D;;;;;;;IAOD,mBAAmB,CAAC,IAAI,EAAE;;;QAGtB,qBAAqB,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;aACrE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KAC/D;CACJ;AACD,WAAW,CAAC,UAAU,GAAG;IACrB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc;gBACvC,QAAQ,EAAE,ivCAAivC;gBAC3vC,MAAM,EAAE,CAAC,27CAA27C,CAAC;gBACr8C,IAAI,EAAE;oBACF,OAAO,EAAE,cAAc;iBAC1B;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,mBAAmB,EAAE,KAAK;gBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAClD,EAAE,EAAE;CAChB,CAAC;;;;AAIF,WAAW,CAAC,cAAc,GAAG,MAAM;IAC/B,EAAE,IAAI,EAAE,UAAU,GAAG;IACrB,EAAE,IAAI,EAAE,iBAAiB,GAAG;IAC5B,EAAE,IAAI,EAAE,MAAM,GAAG;IACjB,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE;IACnG,EAAE,IAAI,EAAE,iBAAiB,GAAG;CAC/B,CAAC;AACF,WAAW,CAAC,cAAc,GAAG;IACzB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC7B,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC/B,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC9B,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC7B,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC7B,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAChC,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACrC,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACrC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE;IAC1D,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE;CAC3D,CAAC,AACF,AAwEC,AACD;;ACxeA;;;AAGA,IAAI,aAAa,GAAG,CAAC,CAAC;;;;AAItB,AAAO,MAAM,8BAA8B,GAAG,IAAI,cAAc,CAAC,gCAAgC,CAAC,CAAC;;;;;;AAMnG,AAAO,SAAS,+CAA+C,CAAC,OAAO,EAAE;IACrE,OAAO,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;CACtD;;;;AAID,AAAO,MAAM,uCAAuC,GAAG;IACnD,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,UAAU,EAAE,+CAA+C;CAC9D,CAAC;;;;;;;;AAQF,AAAO,MAAM,oBAAoB,CAAC;;;;IAI9B,kBAAkB,GAAG;QACjB,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;KACrC;;;;;;IAMD,cAAc,CAAC,KAAK,EAAE;QAClB,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;YAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;CACJ;AACD,oBAAoB,CAAC,UAAU,GAAG;IAC9B,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,wBAAwB;gBACjD,QAAQ,EAAE,iXAAiX;gBAC3X,MAAM,EAAE,CAAC,mqBAAmqB,CAAC;gBAC7qB,IAAI,EAAE;oBACF,OAAO,EAAE,wBAAwB;oBACjC,sCAAsC,EAAE,oBAAoB;oBAC5D,WAAW,EAAE,wBAAwB;iBACxC;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,mBAAmB,EAAE,KAAK;gBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAClD,EAAE,EAAE;CAChB,CAAC;;;;AAIF,oBAAoB,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC;AAC/C,oBAAoB,CAAC,cAAc,GAAG;IAClC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE;CAC5D,CAAC;AACF,AAeA;;;AAGA,AAAO,MAAM,aAAa,CAAC;;;;;;;;;;;IAWvB,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;QACvG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;;;QAI3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;;;;;QAKzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;;;;QAKrB,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;;;;QAI1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;;;QAIpB,IAAI,CAAC,EAAE,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;;;;QAI3B,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC;;;;QAI7C,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;KACJ;;;;;IAKD,IAAI,OAAO,GAAG;;;QAGV,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;KACxF;;;;;IAKD,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE;;;;;IAKlF,IAAI,QAAQ,GAAG;QACX,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB;YACxD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;KACvD;;;;;IAKD,IAAI,QAAQ,CAAC,KAAK,EAAE;QAChB,uBAAuB,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvC;KACJ;;;;;IAKD,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE;;;;;IAK/C,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,EAAE;;;;;IAKrD,IAAI,QAAQ,GAAG;QACX,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;KAC7D;;;;;IAKD,IAAI,QAAQ,GAAG;QACX,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;KAC7D;;;;IAID,IAAI,WAAW,GAAG;QACd,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;KACrE;;;;IAID,WAAW,GAAG;QACV,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;SAC5B;KACJ;;;;;;IAMD,OAAO,CAAC,IAAI,EAAE;QACV,qBAAqB,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;YACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;KACJ;;;;;;IAMD,cAAc,CAAC,KAAK,EAAE;QAClB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,MAAM,KAAK,CAAC,8DAA8D,CAAC,CAAC;SAC/E;QACD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,kBAAkB;YACnB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;KACvF;;;;;IAKD,IAAI,GAAG;QACH,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC9B,OAAO;SACV;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,MAAM,KAAK,CAAC,8DAA8D,CAAC,CAAC;SAC/E;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;SACjE;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACtB;;;;;IAKD,KAAK,GAAG;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,OAAO;SACV;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE;YAChD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;YACzD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,yBAAyB;YAC9B,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,KAAK,UAAU,EAAE;YAC5D,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;SACzC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;;;;;IAKD,aAAa,GAAG;QACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE;YACtD,SAAS,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;YAC9C,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;YACxC,UAAU,EAAE,uBAAuB;SACtC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC;KACvD;;;;;IAKD,YAAY,GAAG;QACX,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAC5F;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE;YAC/B,qBAAqB,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAChF,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;;YAExCA,OAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;gBAC7D,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;aACnC,CAAC,CAAC;SACN;QACD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAChE;;;;;IAKD,YAAY,GAAG;QACX,uBAAuB,aAAa,GAAG,IAAI,aAAa,CAAC;YACrD,gBAAgB,EAAE,IAAI,CAAC,4BAA4B,EAAE;YACrD,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,kCAAkC;YACjD,SAAS,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;YAC9C,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;YACtC,UAAU,EAAE,sBAAsB;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KACxD;;;;;IAKD,4BAA4B,GAAG;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;aAC1B,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;aAClJ,oBAAoB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aACrG,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;aACjG,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC1G;CACJ;AACD,aAAa,CAAC,UAAU,GAAG;IACvB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,gBAAgB;gBACzC,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,eAAe;gBACzB,eAAe,EAAE,uBAAuB,CAAC,MAAM;gBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,mBAAmB,EAAE,KAAK;aAC7B,EAAE,EAAE;CAChB,CAAC;;;;AAIF,aAAa,CAAC,cAAc,GAAG,MAAM;IACjC,EAAE,IAAI,EAAE,SAAS,GAAG;IACpB,EAAE,IAAI,EAAE,OAAO,GAAG;IAClB,EAAE,IAAI,EAAE,MAAM,GAAG;IACjB,EAAE,IAAI,EAAE,gBAAgB,GAAG;IAC3B,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,8BAA8B,EAAE,EAAE,EAAE,EAAE;IAC7F,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3D,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;CAC9F,CAAC;AACF,aAAa,CAAC,cAAc,GAAG;IAC3B,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC7B,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC/B,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC7B,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC9B,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;CACzC,CAAC,AACF,AA2FC,AACD;;AC3dO,MAAuB,6BAA6B,GAAG;IAC1D,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;IACjD,KAAK,EAAE,IAAI;CACd,CAAC;AACF,AAAO,MAAuB,yBAAyB,GAAG;IACtD,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;IACjD,KAAK,EAAE,IAAI;CACd,CAAC;;;;;;AAMF,AAAO,MAAM,uBAAuB,CAAC;;;;;IAKjC,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAClC;CACJ;AACD,AAWA;;;AAGA,AAAO,MAAM,kBAAkB,CAAC;;;;;;;;IAQ5B,WAAW,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE;QACxE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;;;;QAI7B,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;;;;QAIrC,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;;;;QAIpC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;;;;QAIvC,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,CAAC;QAC9B,IAAI,CAAC,kBAAkB,GAAG,MAAM,GAAG,CAAC;QACpC,IAAI,CAAC,uBAAuB,GAAG,YAAY,CAAC,KAAK,CAAC;QAClD,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,KAAK,CAAC;;;;QAI9C,IAAI,CAAC,eAAe,GAAG,MAAM;YACzB,OAAO,IAAI,CAAC,eAAe;gBACvB,IAAI,GAAG,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;SACzF,CAAC;;;;QAIF,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK;YAC9B,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1E,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY;gBAC9B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC;gBAC1D,IAAI,GAAG,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;SAClF,CAAC;;;;QAIF,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,KAAK;YAC9B,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1E,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY;gBAC9B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC;gBAC1D,IAAI,GAAG,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;SAClF,CAAC;;;;QAIF,IAAI,CAAC,gBAAgB,GAAG,CAAC,OAAO,KAAK;YACjC,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;gBACvE,IAAI,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;SAC9C,CAAC;;;;QAIF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;;;;QAI5H,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,aAAa,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,MAAM,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;SACxD;;QAED,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM;YAClE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3B,CAAC,CAAC;KACN;;;;;;IAMD,IAAI,aAAa,CAAC,KAAK,EAAE;QACrB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAClC;;;;;IAKD,kBAAkB,CAAC,KAAK,EAAE;QACtB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACzC;KACJ;;;;;IAKD,IAAI,mBAAmB,CAAC,MAAM,EAAE;QAC5B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;;;;IAKD,IAAI,KAAK,GAAG;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;;;;;IAKD,IAAI,KAAK,CAAC,KAAK,EAAE;QACb,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClE,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxC,qBAAqB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACvJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;KACJ;;;;;IAKD,IAAI,GAAG,GAAG,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;;;;;IAK/B,IAAI,GAAG,CAAC,KAAK,EAAE;QACX,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;;;;IAKD,IAAI,GAAG,GAAG,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;;;;;IAK/B,IAAI,GAAG,CAAC,KAAK,EAAE;QACX,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;;;;IAKD,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;;;;;IAKzC,IAAI,QAAQ,CAAC,KAAK,EAAE;QAChB,uBAAuB,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvC;KACJ;;;;IAID,kBAAkB,GAAG;QACjB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,uBAAuB;gBACxB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK;oBACrD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;oBACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;oBACvF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;iBAC3F,CAAC,CAAC;SACV;KACJ;;;;IAID,WAAW,GAAG;QACV,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;KACnC;;;;;IAKD,yBAAyB,CAAC,EAAE,EAAE;QAC1B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;KAChC;;;;;IAKD,QAAQ,CAAC,CAAC,EAAE;QACR,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACtD;;;;;IAKD,4BAA4B,GAAG;QAC3B,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;KAC5E;;;;;IAKD,UAAU,CAAC,KAAK,EAAE;QACd,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;;;;;IAKD,gBAAgB,CAAC,EAAE,EAAE;QACjB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KAC1B;;;;;IAKD,iBAAiB,CAAC,EAAE,EAAE;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;;;;;IAKD,gBAAgB,CAAC,QAAQ,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;KACpF;;;;;IAKD,UAAU,CAAC,KAAK,EAAE;QACd,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;YAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;KACJ;;;;;IAKD,QAAQ,CAAC,KAAK,EAAE;QACZ,qBAAqB,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9F,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;KAC1F;;;;IAID,SAAS,GAAG;QACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;KAC3F;;;;;IAKD,mBAAmB,CAAC,GAAG,EAAE;QACrB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC;KACjG;CACJ;AACD,kBAAkB,CAAC,UAAU,GAAG;IAC5B,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBACd,QAAQ,EAAE,sBAAsB;gBAChC,SAAS,EAAE,CAAC,6BAA6B,EAAE,yBAAyB,CAAC;gBACrE,IAAI,EAAE;oBACF,sBAAsB,EAAE,MAAM;oBAC9B,kBAAkB,EAAE,iDAAiD;oBACrE,YAAY,EAAE,0CAA0C;oBACxD,YAAY,EAAE,0CAA0C;oBACxD,YAAY,EAAE,UAAU;oBACxB,SAAS,EAAE,+BAA+B;oBAC1C,UAAU,EAAE,aAAa;oBACzB,QAAQ,EAAE,cAAc;oBACxB,WAAW,EAAE,oBAAoB;iBACpC;gBACD,QAAQ,EAAE,oBAAoB;aACjC,EAAE,EAAE;CAChB,CAAC;;;;AAIF,kBAAkB,CAAC,cAAc,GAAG,MAAM;IACtC,EAAE,IAAI,EAAE,UAAU,GAAG;IACrB,EAAE,IAAI,EAAE,SAAS,GAAG;IACpB,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxD,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE;IACnG,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;CAC5D,CAAC;AACF,kBAAkB,CAAC,cAAc,GAAG;IAChC,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IACnC,qBAAqB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IACzC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC3B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IACzB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IACzB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC9B,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IACjC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;CACnC,CAAC,AACF,AA4FC,AACD;;AC7cO,MAAM,mBAAmB,CAAC;;;;;IAK7B,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC;KAC3C;;;;;IAKD,IAAI,QAAQ,GAAG;QACX,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;KACnF;;;;;IAKD,IAAI,QAAQ,CAAC,KAAK,EAAE;QAChB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;;;;;IAKD,WAAW,CAAC,OAAO,EAAE;QACjB,IAAI,OAAO,CAAC,UAAU,EAAE;YACpB,uBAAuB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;YACpE,uBAAuB,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAC,eAAe,GAAGC,EAAY,EAAE,CAAC;YACrG,uBAAuB,aAAa,GAAG,UAAU,IAAI,UAAU,CAAC,gBAAgB;gBAC5E,UAAU,CAAC,gBAAgB,CAAC,eAAe;gBAC3CA,EAAY,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,aAAa,CAAC;iBAC5E,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,CAAC;SAChE;KACJ;;;;IAID,WAAW,GAAG;QACV,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KACpC;;;;;IAKD,KAAK,CAAC,KAAK,EAAE;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;KACJ;CACJ;AACD,mBAAmB,CAAC,UAAU,GAAG;IAC7B,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,uBAAuB;gBAChD,QAAQ,EAAE,+gBAA+gB;gBACzhB,IAAI,EAAE;oBACF,OAAO,EAAE,uBAAuB;iBACnC;gBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,mBAAmB,EAAE,KAAK;gBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;aAClD,EAAE,EAAE;CAChB,CAAC;;;;AAIF,mBAAmB,CAAC,cAAc,GAAG,MAAM;IACvC,EAAE,IAAI,EAAE,iBAAiB,GAAG;IAC5B,EAAE,IAAI,EAAE,iBAAiB,GAAG;CAC/B,CAAC;AACF,mBAAmB,CAAC,cAAc,GAAG;IACjC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE;IAChD,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;CACjC,CAAC,AACF,AAuBC,AACD;;AC9FO,MAAM,mBAAmB,CAAC;CAChC;AACD,mBAAmB,CAAC,UAAU,GAAG;IAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACb,OAAO,EAAE;oBACL,YAAY;oBACZ,eAAe;oBACf,eAAe;oBACf,aAAa;oBACb,aAAa;oBACb,UAAU;iBACb;gBACD,OAAO,EAAE;oBACL,WAAW;oBACX,eAAe;oBACf,aAAa;oBACb,oBAAoB;oBACpB,kBAAkB;oBAClB,mBAAmB;oBACnB,YAAY;oBACZ,WAAW;iBACd;gBACD,YAAY,EAAE;oBACV,WAAW;oBACX,eAAe;oBACf,aAAa;oBACb,oBAAoB;oBACpB,kBAAkB;oBAClB,mBAAmB;oBACnB,YAAY;oBACZ,WAAW;iBACd;gBACD,SAAS,EAAE;oBACP,iBAAiB;oBACjB,uCAAuC;iBAC1C;gBACD,eAAe,EAAE;oBACb,oBAAoB;iBACvB;aACJ,EAAE,EAAE;CAChB,CAAC;;;;AAIF,mBAAmB,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC,AAC9C,AAQC,AACD;;AC5EA;;GAEG,AACH,AAA+b,AAC/b;;"}