{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/mixins/form-selection.js","webpack:///./node_modules/bootstrap-vue/esm/icons/icon.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/td.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./src/services/classroomService.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-validity.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card.js","webpack:///./node_modules/flatpickr/dist/l10n/pt.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./src/services/spinService.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tr.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/has-listener.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-prepend.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-input/form-input.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-stacked.js","webpack:///./node_modules/bootstrap-vue/esm/components/image/img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group.js","webpack:///./node_modules/flatpickr/dist/esm/types/options.js","webpack:///./node_modules/flatpickr/dist/esm/l10n/default.js","webpack:///./node_modules/flatpickr/dist/esm/utils/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dom.js","webpack:///./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dates.js","webpack:///./node_modules/flatpickr/dist/esm/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack:///./node_modules/bootstrap-vue/esm/directives/visible/visible.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/th.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-table-renderer.js","webpack:///./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/constants.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-aside.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-textarea/form-textarea.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tbody.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./src/views/componentes/instituicoes/turmas/TurmasLista.vue?46f1","webpack:///src/views/componentes/instituicoes/turmas/TurmasLista.vue","webpack:///./src/views/componentes/instituicoes/turmas/TurmasLista.vue?9b39","webpack:///./src/views/componentes/instituicoes/turmas/TurmasLista.vue","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack:///./node_modules/vue-flatpickr-component/dist/vue-flatpickr.min.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-append.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-text.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-control.js","webpack:///./node_modules/bootstrap-vue/esm/components/avatar/avatar.js","webpack:///./node_modules/bootstrap-vue/esm/components/badge/badge.js","webpack:///./node_modules/bootstrap-vue/esm/utils/noop.js","webpack:///./src/views/componentes/instituicoes/turmas/TurmasLista.vue?44e7"],"names":["formSelectionMixin","extend","computed","selectionStart","cache","get","this","$refs","input","set","val","selectionEnd","selectionDirection","methods","select","_this$$refs$input","apply","arguments","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","target","i","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","findIconComponent","ctx","iconName","components","$options","iconComponent","$parent","props","icon","stacked","BIcon","name","functional","render","h","_ref","data","parent","replace","concat","parseSpan","spanValidator","colspan","rowspan","stackedHeading","stickyColumn","variant","BTd","mixins","inject","bvTableTr","default","inheritAttrs","tag","inTbody","inThead","inTfoot","isDark","isStacked","isStackedCell","isResponsive","isStickyHeader","hasStickyHeader","isStickyColumn","rowVariant","headVariant","footVariant","tableVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","role","scope","bvAttrs","$content","normalizeSlot","class","attrs","on","bvListeners","BThead","provide","bvTableRowGroup","bvTable","isThead","dark","stickyHeader","theadClasses","theadAttrs","id","inline","novalidate","validated","BForm","children","controller","getAll","axiosIns","utilsService","getQueryParams","then","res","getById","update","put","create","req","post","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","_asyncToGenerator","fn","self","args","err","undefined","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","bottom","end","start","top","BCardImg","src","alt","width","height","baseClass","right","left","cardImgProps","bind","imgSrc","required","card","align","noBody","BCard","_class","slots","scopedSlots","imgLeft","imgRight","imgStart","imgEnd","imgBottom","header","headerHtml","footer","footerHtml","textVariant","bgVariant","borderVariant","$scopedSlots","$slots","slotScope","$imgFirst","$imgLast","$img","$header","hasHeaderSlot","domProps","html","overlay","staticClass","$footer","hasFooterSlot","global","factory","exports","fp","window","flatpickr","l10ns","Portuguese","weekdays","shorthand","longhand","months","rangeSeparator","time_24hr","pt","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","sanitizePerPage","sanitizeTotalRows","ariaControls","perPage","totalRows","BPagination","numberOfPages","result","pageSizeNumberOfPages","watch","newValue","oldValue","currentPage","localNumberOfPages","created","_this","$nextTick","onClick","event","pageNumber","_this2","clickEvt","cancelable","vueTarget","$emit","type","defaultPrevented","$el","contains","focusCurrent","makePage","pageNum","linkProps","showSpinner","document","getElementById","style","display","hideSpinner","BTfoot","isTfoot","tfootClasses","tfootAttrs","bottomRowMixin","renderBottomRow","fields","computedFields","tbodyTrClass","tbodyTrAttr","$createElement","hasNormalizedSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","stopIfBusy","renderBusy","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","stringifyObjectValues","sort","map","k","v","join","row","ignoreFields","includeFields","fieldsObj","formattedRow","reduce","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","Array","from","test","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","filterDebounce","String","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","identity","computedFilterIncluded","computedFilterDebounce","ms","warn","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","clearFilterTimer","deep","handler","newCriteria","timeout","setTimeout","Boolean","beforeDestroy","clearTimeout","item","_this3","regExp","pattern","RegExp","lastIndex","computedFieldsObj","paginationMixin","localPaging","noProviderPaging","paginatedItems","sortedItems","math","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","apiUrl","noProviderSorting","providerMixin","providerTriggerContext","sortBy","sortDesc","localSortBy","localSortDesc","_providerUpdate","mounted","listenOnRoot","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","context","e","message","_props","_watch","SELECT_MODES","noSelectOnClick","selectMode","selectable","selectedVariant","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","idx","beforeMount","selectRow","index","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","selectableRowAttrs","method","selectionHandler","selected","shiftKey","ctrlKey","metaKey","a","b","_ref$sortBy","_ref$formatter","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","f","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","getFieldFormatter","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","topRowMixin","renderTopRow","BTable","LIGHT","DARK","BTr","isTbody","isRowDark","trClasses","trAttrs","hasListenerMixin","hasListener","$listeners","$events","_events","rightAlign","verticalAlign","BMedia","$children","$aside","BInputGroupPrepend","append","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","defaultValue","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","$set","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","label","isRowHeader","formatted","cellTag","cellVariant","tdClass","thAttr","tdAttr","unformatted","toggleDetails","detailsShowing","rowSelected","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","striped","primaryKey","rowShowDetails","hasRowClickHandler","$rows","detailsId","safeId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","tabindex","mouseenter","mouseleave","ref","refInFor","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","tbody","trs","tr","getTbodyTrIndex","el","tagName","indexOf","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTbody","$busy","defaultSlotName","lowercaseSlotName","toLowerCase","handlers","auxclick","contextmenu","dblclick","click","keydown","$tbody","$props","caption","captionHtml","captionMixin","captionId","renderCaption","$caption","hasCaptionSlot","_makeModelMixin","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","ariaInvalid","autocomplete","debounce","lazy","lazyFormatter","number","placeholder","plaintext","readonly","trim","formTextMixin","localValue","vModelValue","modifyValue","computedClass","isRange","isColor","sizeFormClass","stateClass","computedDebounce","hasFormatter","stringifyValue","modifiedValue","clearDebounce","$_inputDebounceTimer","formatValue","force","updateValue","doUpdate","$input","onInput","composing","formattedValue","propagation","onChange","onBlur","focus","disabled","blur","isText","BInputGroupAddon","TYPES","list","max","min","noWheel","step","BFormInput","localType","computedAttrs","form","computedAriaInvalid","computedListeners","change","setWheelStopper","deactivated","activated","onWheelFocus","onWheelBlur","stopWheel","stackedMixin","isStackedAlways","stackedTableClasses","BLANK_TEMPLATE","makeBlankImgSrc","color","encodeURIComponent","blank","blankColor","block","center","fluid","fluidGrow","rounded","sizes","srcset","thumbnail","BImg","title","titleTag","BCardTitle","origFields","sample","memo","itemsMixin","appendHtml","prepend","prependHtml","size","BInputGroup","$prepend","hasPrependSlot","$append","hasAppendSlot","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","navigator","userAgent","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","console","getWeek","givenDate","date","Date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","minuteIncrement","mode","monthSelectorType","nextArrow","noCalendar","now","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","weekNumbers","wrap","english","daysInMonth","firstDayOfWeek","ordinal","nth","s","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","bool","wait","t","arrayify","toggleClass","elem","className","classList","add","remove","createElement","content","textContent","clearNode","node","firstChild","removeChild","findParent","condition","parentNode","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","setAttribute","appendChild","getEventTarget","composedPath","path","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","getHours","parseFloat","H","J","day","K","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","d","minutes","setMinutes","j","l","m","month","u","unixMillSeconds","w","y","tokenRegex","toISOString","options","getMonth","getSeconds","getMinutes","substring","createDateFormatter","_a","_b","config","_c","l10n","_d","isMobile","frmt","overrideLocale","formatDate","split","c","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","parseDate","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","exec","isNaN","Error","compareDates","date1","date2","isBetween","ts","ts1","ts2","calculateSecondsSinceMidnight","hours","parseSeconds","secondsSinceMidnight","floor","duration","DAY","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","__assign","assign","p","hasOwnProperty","__spreadArrays","il","r","jl","DEBOUNCED_CHANGE_MS","FlatpickrInstance","element","instanceConfig","defaultConfig","setupHelperFunctions","utils","getDaysInMonth","yr","currentMonth","currentYear","init","isOpen","parseConfig","setupLocale","setupInputs","setupDates","build","bindEvents","selectedDates","setHoursFromDate","latestSelectedDateObj","setCalendarWidth","isSafari","positionCalendar","triggerEvent","getClosestActiveElement","calendarContainer","getRootNode","activeElement","bindToInstance","requestAnimationFrame","visibility","daysContainer","daysWidth","days","offsetWidth","weekWrapper","removeProperty","updateTime","defaultDate","defaults","getMilliseconds","timeWrapper","prevValue","_input","setHoursFromInputs","_debouncedChange","ampm2military","military2ampm","hourElement","minuteElement","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","onYearInput","eventTarget","delta","changeYear","ev","addEventListener","_handlers","removeEventListener","triggerChange","evt","querySelectorAll","setupMobile","debouncedResize","onResize","onMouseOver","ontouchstart","documentClick","capture","open","monthNav","onMonthNavClick","selectDate","timeContainer","selText","timeIncrement","jumpToDate","jumpDate","jumpTo","oldYear","oldMonth","buildMonthSwitch","redraw","incrementNumInput","inputElem","createEvent","dispatchEvent","fragment","createDocumentFragment","buildMonthNav","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","buildTime","customAppend","appendTo","nodeType","insertBefore","nextSibling","body","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","getNextAvailableDay","current","givenMonth","loopDelta","numMonthDays","abs","changeMonth","focusOnDay","offset","dayFocused","isInView","startElem","buildMonthDays","firstOfMonth","prevMonthDays","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","innerHTML","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","yearElement","getElementsByTagName","buildMonths","prevMonthNav","yearElements","monthElements","nextMonthNav","__hidePrevMonthArrow","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","separator","hourInput","minuteInput","secondInput","getAttribute","weekdayContainer","updateWeekdays","splice","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","clear","triggerChangeEvent","toInitial","mobileInput","_initialDate","close","destroy","lastChild","_type","removeAttribute","isCalendarElem","eventTarget_1","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","enable","parsed","to","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","isTimeObj","preventDefault","focusAndClose","delta_1","stopPropagation","elems","pluginElements","x","charAt","cellClass","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","hoverableCells","dayElem","timestamp","outOfRange","_positionElement","wasOpen","minMaxDateSetter","inverseDateObj","boolOpts","userConfig","JSON","parse","stringify","dataset","formats","_enable","dates","parseDateRules","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","getInputElem","querySelector","customPositionElement","calendarHeight","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","showOnTop","pageYOffset","pageXOffset","isCenter","isRight","rightMost","centerMost","doc","getDocumentStyleSheet","bodyWidth","centerLeft","centerBefore","centerAfter","centerIndex","cssRules","centerStyle","insertRule","editableSheet","styleSheets","sheet","createStyleSheet","head","msMaxTouchPoints","selectedDate","shouldChangeMonth","selectedIndex","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","_createElement","toggle","CALLBACKS","updatePositionElement","option","setSelectedDate","inputDate","rule","preloadedDate","nodeName","inputType","mobileFormatStr","hooks","initEvent","specificFormat","dObj","isPrevMonth","isNextMonth","isKeyDown","curValue","isHourElem","isMinuteElem","_flatpickr","nodeList","nodes","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","localize","setDefaults","jQuery","fp_incr","bodyClass","BCardBody","_ref2","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$title","$subTitle","subTitle","bodyTag","footerClass","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","OBSERVER_PROP_NAME","VisibilityObserver","vnode","callback","margin","once","observer","visible","doneOnce","createObserver","stop","IntersectionObserver","root","rootMargin","threshold","_unused","observe","entries","entry","isIntersecting","intersectionRatio","disconnect","modifiers","mod","_prevModifiers","componentUpdated","unbind","VBVisible","BTh","extends","bordered","borderless","captionTop","fixed","hover","noBorderCollapse","outlined","responsive","small","tableClass","tableRendererMixin","wrapperClasses","wrapperStyles","maxHeight","tableClasses","isTableSimple","border","tableAttrs","adb","ariaAttrs","rowCount","renderColgroup","renderThead","renderTfoot","$table","_i","_loop_1","args_1","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","BMediaAside","BMediaBody","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","stableSort","compareFn","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","reverse","pop","skipTempReset","prev","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","globalThis","Function","maxRows","noAutoShrink","noResize","rows","BFormTextarea","directives","heightInPx","computedStyle","styles","resize","computedRows","overflowY","computedMinRows","computedMaxRows","setHeight","visibleCallback","computeHeight","$isServer","lineHeight","borderTopWidth","borderBottomWidth","padding","paddingTop","paddingBottom","minHeight","oldHeight","scrollHeight","contentRows","COMMON_ALIGNMENT","computeRowColsClass","breakpoint","cols","computeRowColsBreakpoint","rowColsPropList","generateProps","rowColsProps","alignContent","alignH","alignV","noGutters","BRow","_classList$push","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","validator","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","makePageArray","startNumber","classes","sanitizeLimit","limit","sanitizeCurrentPage","page","onSpaceKey","immediatePropagation","currentTarget","ariaLabel","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","pills","prevClass","prevText","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","lastPageNumber","pageList","_this$paginationParam","pages","_i2","_i3","handleKeyNav","isNav","focusFirst","focusPrev","focusLast","focusNext","getButtons","btn","find","_this4","_this5","buttons","_this6","_this7","pageNumbers","_this$paginationParam2","fill","$buttons","isActivePage","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","isDisabled","$btnContent","$inner","makeEllipsis","isLast","makePageButton","active","btnContent","$firstPageBtn","$lastPageBtn","$pagination","formSizeMixin","TABLE_TAG_NAMES","filterEvent","labelFor","headerClass","BCardHeader","headerBgVariant","headerBorderVariant","headerTextVariant","headerTag","subTitleTag","subTitleTextVariant","BCardSubTitle","_vm","_h","_self","_v","$event","fetchClassrooms","model","filtro","$$v","expression","nextPage","fetchedClassrooms","totalItems","onChangePage","tableColumns","isSortDirDesc","_u","resolveUserStatusVariant","_s","resolveUserStatusText","$store","appConfig","isRTL","proxy","params","turmaId","staticRenderFns","BDropdown","BDropdownItem","BBadge","BLink","BAvatar","BFormGroup","BInputGroupAppend","BCol","BButton","flatPickr","$router","prepareRequest","itemsPerPage","schoolId","$route","component","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","hasHeadClickListener","makeCell","labelHtml","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","column","$srLabel","$cells","$trs","__esModule","events","getElem","fpInput","$watch","watchDisabled","immediate","install","textSelectionActive","sel","containsNode","BInputGroupText","colgroupMixin","$colgroup","SELECTOR","autofocus","formControlMixin","handleAutofocus","CLASS_NAME","SIZES","FONT_SIZE_SCALE","BADGE_FONT_SIZE_SCALE","computeSize","badge","badgeLeft","badgeOffset","badgeTop","badgeVariant","button","buttonType","square","text","bvAvatarGroup","localSrc","computedSize","computedVariant","computedRounded","fontStyle","fontSize","marginStyle","overlapScale","marginLeft","marginRight","badgeStyle","onImgError","_class2","link","$badge","hasBadgeSlot","badgeText","componentData","href","pill","noop"],"mappings":"8LAAA,kDAEWA,EAAqB,aAAIC,OAAO,CACzCC,SAAU,CACRC,eAAgB,CAEdC,OAAO,EAGPC,IAAK,WACH,OAAOC,KAAKC,MAAMC,MAAML,gBAI1BM,IAAK,SAAaC,GAChBJ,KAAKC,MAAMC,MAAML,eAAiBO,IAGtCC,aAAc,CAEZP,OAAO,EAGPC,IAAK,WACH,OAAOC,KAAKC,MAAMC,MAAMG,cAI1BF,IAAK,SAAaC,GAChBJ,KAAKC,MAAMC,MAAMG,aAAeD,IAGpCE,mBAAoB,CAElBR,OAAO,EAGPC,IAAK,WACH,OAAOC,KAAKC,MAAMC,MAAMI,oBAI1BH,IAAK,SAAaC,GAChBJ,KAAKC,MAAMC,MAAMI,mBAAqBF,KAI5CG,QAAS,CAEPC,OAAQ,WACN,IAAIC,GAGHA,EAAoBT,KAAKC,MAAMC,OAAOM,OAAOE,MAAMD,EAAmBE,YAIzEC,kBAAmB,WACjB,IAAIC,GAGHA,EAAqBb,KAAKC,MAAMC,OAAOU,kBAAkBF,MAAMG,EAAoBF,YAItFG,aAAc,WACZ,IAAIC,GAGHA,EAAqBf,KAAKC,MAAMC,OAAOY,aAAaJ,MAAMK,EAAoBJ,gB,oCCrErF,uKAASK,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAY3M,IAAII,EAAoB,SAASA,EAAkBC,EAAKC,GACtD,IAAKD,EACH,OAAO,KAGT,IAAIE,GAAcF,EAAIG,UAAY,IAAID,WAClCE,EAAgBF,EAAWD,GAC/B,OAAOG,GAAiBL,EAAkBC,EAAIK,QAASJ,IAI9CK,EAAQ,eAAsB,eAAStB,EAAcA,EAAc,GAAI,eAAK,OAAiB,CAAC,UAAW,aAAc,GAAI,CACpIuB,KAAM,eAAS,QACfC,QAAS,eAAS,QAAmB,MAClC,SAKMC,EAAqB,aAAI1D,OAAO,CACzC2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIC,EAAOD,EAAKC,KACZT,EAAQQ,EAAKR,MACbU,EAASF,EAAKE,OACdT,EAAO,eAAW,eAAKD,EAAMC,MAAQ,KAAKU,QAAQ,OAAgB,IAItE,OAAOJ,EAAEN,GAAOR,EAAkBiB,EAAQ,QAAQE,OAAOX,KAAuB,OAAY,eAAUQ,EAAM,CAC1GT,MAAOtB,EAAcA,EAAc,GAAIsB,GAAQ,GAAI,CACjDC,KAAM,c,oCCjDd,qNAASnC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAe3M,IAAIwB,EAAY,SAAmBvB,GAEjC,OADAA,EAAQ,eAAUA,EAAO,GAClBA,EAAQ,EAAIA,EAAQ,MAKzBwB,EAAgB,SAAuBxB,GACzC,OAAO,eAAkBA,IAAUuB,EAAUvB,GAAS,GAI7CU,EAAQ,eAAsB,CACvCe,QAAS,eAAS,OAAyB,KAAMD,GACjDE,QAAS,eAAS,OAAyB,KAAMF,GACjDG,eAAgB,eAAS,QACzBC,aAAc,eAAS,QAAmB,GAC1CC,QAAS,eAAS,SACjB,SAMQC,EAAmB,aAAI3E,OAAO,CACvC2D,KAAM,QAENiB,OAAQ,CAAC,OAAY,OAAgB,QACrCC,OAAQ,CACNC,UAAW,CACTC,QAEA,WACE,MAAO,MAIbC,cAAc,EACdzB,MAAOA,EACPtD,SAAU,CAERgF,IAAK,WACH,MAAO,MAETC,QAAS,WACP,OAAO7E,KAAKyE,UAAUI,SAExBC,QAAS,WACP,OAAO9E,KAAKyE,UAAUK,SAExBC,QAAS,WACP,OAAO/E,KAAKyE,UAAUM,SAExBC,OAAQ,WACN,OAAOhF,KAAKyE,UAAUO,QAExBC,UAAW,WACT,OAAOjF,KAAKyE,UAAUQ,WAGxBC,cAAe,WACb,OAAOlF,KAAK6E,SAAW7E,KAAKiF,WAE9BE,aAAc,WACZ,OAAOnF,KAAKyE,UAAUU,cAKxBC,eAAgB,WACd,OAAOpF,KAAKyE,UAAUW,gBAIxBC,gBAAiB,WACf,OAAOrF,KAAKyE,UAAUY,iBAOxBC,eAAgB,WACd,OAAQtF,KAAKiF,YAAcjF,KAAKmF,cAAgBnF,KAAKqF,kBAAoBrF,KAAKoE,cAEhFmB,WAAY,WACV,OAAOvF,KAAKyE,UAAUJ,SAExBmB,YAAa,WACX,OAAOxF,KAAKyE,UAAUe,aAExBC,YAAa,WACX,OAAOzF,KAAKyE,UAAUgB,aAExBC,aAAc,WACZ,OAAO1F,KAAKyE,UAAUiB,cAExBC,gBAAiB,WACf,OAAO5B,EAAU/D,KAAKiE,UAExB2B,gBAAiB,WACf,OAAO7B,EAAU/D,KAAKkE,UAIxB2B,YAAa,WACX,IAAIxB,EAAUrE,KAAKqE,QACfmB,EAAcxF,KAAKwF,YACnBF,EAAiBtF,KAAKsF,eAQ1B,QANKjB,GAAWrE,KAAKoF,iBAAmBI,IAAgBnB,GAAWiB,GAAkBtF,KAAK+E,UAAY/E,KAAKyF,cAAgBpB,GAAWiB,GAAkBtF,KAAK8E,UAAYU,IAAgBnB,GAAWiB,GAAkBtF,KAAK6E,WAGzNR,EAAUrE,KAAKuF,YAAcvF,KAAK0F,cAAgB,mBAG7C,CAACrB,EAAU,GAAGP,OAAO9D,KAAKgF,OAAS,KAAO,QAAS,KAAKlB,OAAOO,GAAW,KAAMiB,EAAiB,wBAA0B,OAEpIQ,UAAW,WACT,IAAI3B,EAAiBnE,KAAKmE,eAGtB4B,EAAa/F,KAAK8E,SAAW9E,KAAK+E,QAElCd,EAAUjE,KAAK2F,gBACfzB,EAAUlE,KAAK4F,gBAEfI,EAAO,OACPC,EAAQ,KAaZ,OAVIF,GAEFC,EAAO,eACPC,EAAQhC,EAAU,EAAI,UAAY,OACzB,eAAMjE,KAAK4E,IAAK,QAEzBoB,EAAO,YACPC,EAAQ/B,EAAU,EAAI,WAAa,OAG9BtC,EAAcA,EAAc,CACjCqC,QAASA,EACTC,QAASA,EACT8B,KAAMA,EACNC,MAAOA,GACNjG,KAAKkG,SAAU,GAAI,CAGpB,aAAclG,KAAKkF,gBAAkB,eAAkBf,GAEvD,eAASA,GAAkB,SAIjCX,OAAQ,SAAgBC,GACtB,IAAI0C,EAAW,CAACnG,KAAKoG,iBACrB,OAAO3C,EAAEzD,KAAK4E,IAAK,CACjByB,MAAOrG,KAAK6F,YACZS,MAAOtG,KAAK8F,UAEZS,GAAIvG,KAAKwG,aACR,CAACxG,KAAKkF,cAAgBzB,EAAE,MAAO,CAAC0C,IAAaA,Q,oCCrLpD,mIAASnF,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAIW,EAAQ,eAAsB,CAGvCsC,YAAa,eAAS,SACrB,SAMQiB,EAAsB,aAAI9G,OAAO,CAC1C2D,KAAM,QACNiB,OAAQ,CAAC,OAAY,OAAgB,QACrCmC,QAAS,WACP,MAAO,CACLC,gBAAiB3G,OAGrBwE,OAAQ,CAENoC,QAAS,CACPlC,QAEA,WACE,MAAO,MAIbC,cAAc,EACdzB,MAAOA,EACPtD,SAAU,CAERiH,QAAS,WACP,OAAO,GAGT7B,OAAQ,WACN,OAAOhF,KAAK4G,QAAQE,MAGtB7B,UAAW,WACT,OAAOjF,KAAK4G,QAAQ3B,WAGtBE,aAAc,WACZ,OAAOnF,KAAK4G,QAAQzB,cAMtBC,eAAgB,WACd,OAAQpF,KAAKiF,WAAajF,KAAK4G,QAAQG,cAKzC1B,gBAAiB,WACf,OAAQrF,KAAKiF,WAAajF,KAAK4G,QAAQG,cAGzCrB,aAAc,WACZ,OAAO1F,KAAK4G,QAAQlB,cAEtBsB,aAAc,WACZ,MAAO,CAAChH,KAAKwF,YAAc,SAAS1B,OAAO9D,KAAKwF,aAAe,OAEjEyB,WAAY,WACV,OAAOrF,EAAc,CACnBoE,KAAM,YACLhG,KAAKkG,WAGZ1C,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,QAAS,CAChB4C,MAAOrG,KAAKgH,aACZV,MAAOtG,KAAKiH,WAEZV,GAAIvG,KAAKwG,aACRxG,KAAKoG,qB,oCC7FZ,oIAKWlD,EAAQ,eAAsB,CACvCgE,GAAI,eAAS,QACbC,OAAQ,eAAS,QAAmB,GACpCC,WAAY,eAAS,QAAmB,GACxCC,UAAW,eAAS,QAAmB,IACtC,QAGQC,EAAqB,aAAI3H,OAAO,CACzC2D,KAAM,OACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SACpB,OAAO9D,EAAE,OAAQ,eAAUE,EAAM,CAC/B0C,MAAO,CACL,cAAenD,EAAMiE,OACrB,gBAAiBjE,EAAMmE,WAEzBf,MAAO,CACLY,GAAIhE,EAAMgE,GACVE,WAAYlE,EAAMkE,cAElBG,O,wFC3BFC,EAAa,YAEJ,QACPC,OADO,SACAlG,GAAQ,sKACZmG,OACJ3H,IADI,UACGyH,EADH,YACiBG,OAAaC,eAAerG,KACjDsG,MAAK,SAAAC,GAAG,OAAIA,EAAInE,SAHA,8CAKfoE,QANO,SAMCb,GAAI,sKACTQ,OAAS3H,IAAT,UAAgByH,EAAhB,YAA8BN,IAAMW,MAAK,SAAAC,GAAG,OAAIA,EAAInE,SAD3C,8CAGZqE,OATO,SASAzF,GAAK,sKACTmF,OAASO,IAAIT,EAAYjF,GAAKsF,MAAK,SAAAC,GAAG,OAAIA,EAAInE,SADrC,8CAGZuE,OAZO,SAYAC,GAAK,sKACTT,OAASU,KAAKZ,EAAYW,GAAKN,MAAK,SAAAC,GAAG,OAAIA,EAAInE,SADtC,gD,gFCjBpB,SAAS0E,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQxG,EAAKyG,GACpE,IACE,IAAIC,EAAON,EAAIpG,GAAKyG,GAChBnG,EAAQoG,EAAKpG,MACjB,MAAOqG,GAEP,YADAL,EAAOK,GAILD,EAAKE,KACPP,EAAQ/F,GAERuG,QAAQR,QAAQ/F,GAAOqF,KAAKY,EAAOC,GAIxB,SAASM,EAAkBC,GACxC,OAAO,WACL,IAAIC,EAAOlJ,KACPmJ,EAAOxI,UACX,OAAO,IAAIoI,SAAQ,SAAUR,EAASC,GACpC,IAAIF,EAAMW,EAAGvI,MAAMwI,EAAMC,GAEzB,SAASV,EAAMjG,GACb6F,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQlG,GAGlE,SAASkG,EAAOU,GACdf,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASU,GAGnEX,OAAMY,S,oCC/BZ,kDAEWC,EAAoB,aAAI3J,OAAO,CACxCC,SAAU,CACR2J,SAAU,CAERzJ,OAAO,EAGPC,IAAK,WACH,OAAOC,KAAKC,MAAMC,MAAMqJ,WAG5BC,kBAAmB,CAEjB1J,OAAO,EAGPC,IAAK,WACH,OAAOC,KAAKC,MAAMC,MAAMsJ,oBAG5BC,aAAc,CAEZ3J,OAAO,EAGPC,IAAK,WACH,OAAOC,KAAKC,MAAMC,MAAMuJ,gBAI9BlJ,QAAS,CAEPmJ,kBAAmB,WACjB,IAAIjJ,EAGJ,OAAQA,EAAoBT,KAAKC,MAAMC,OAAOwJ,kBAAkBhJ,MAAMD,EAAmBE,YAI3FgJ,cAAe,WACb,IAAI9I,EAGJ,OAAQA,EAAqBb,KAAKC,MAAMC,OAAOyJ,cAAcjJ,MAAMG,EAAoBF,YAIzFiJ,eAAgB,WACd,IAAI7I,EAGJ,OAAQA,EAAqBf,KAAKC,MAAMC,OAAO0J,eAAelJ,MAAMK,EAAoBJ,gB,kPCtD9F,SAASK,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EASpM,IAAI,EAAQ,eAAsB,eAASX,EAAcA,EAAc,GAAI,eAAK,OAAW,CAAC,MAAO,MAAO,QAAS,SAAU,OAAQ,WAAY,GAAI,CAC1JiI,OAAQ,eAAS,QAAmB,GACpCC,IAAK,eAAS,QAAmB,GACjCC,MAAO,eAAS,QAAmB,GACnCC,IAAK,eAAS,QAAmB,MAC9B,QAGMC,EAAwB,aAAItK,OAAO,CAC5C2D,KAAM,OACNC,YAAY,EACZL,MAAO,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZuG,EAAMhH,EAAMgH,IACZC,EAAMjH,EAAMiH,IACZC,EAAQlH,EAAMkH,MACdC,EAASnH,EAAMmH,OACfC,EAAY,WAYhB,OAVIpH,EAAM8G,IACRM,GAAa,OACJpH,EAAMqH,OAASrH,EAAM4G,IAC9BQ,GAAa,SACJpH,EAAM2G,OACfS,GAAa,WACJpH,EAAMsH,MAAQtH,EAAM6G,SAC7BO,GAAa,SAGR7G,EAAE,MAAO,eAAUE,EAAM,CAC9B0C,MAAOiE,EACPhE,MAAO,CACL4D,IAAKA,EACLC,IAAKA,EACLC,MAAOA,EACPC,OAAQA,SClDhB,SAAS,EAAQpJ,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAK,EAAQV,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAO,EAAgBL,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmB,EAAQZ,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAAS,EAAgBU,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAgB3M,IAAIkI,EAAe,eAAU,EAAe,OAAeC,KAAK,KAAM,QACtED,EAAaE,OAAOC,UAAW,EACxB,IAAI,EAAQ,eAAsB,eAAS,EAAc,EAAc,EAAc,EAAc,EAAc,EAAc,GAAI,QAAiB,QAAmB,QAAmBH,GAAeI,EAAA,MAAY,GAAI,CAC9NC,MAAO,eAAS,QAChBC,OAAQ,eAAS,QAAmB,MACjC,QAGMC,EAAqB,aAAIrL,OAAO,CACzC2D,KAAM,OACNC,YAAY,EACZL,MAAO,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIuH,EAEA/H,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZuH,EAAQxH,EAAKwH,MACbC,EAAczH,EAAKyH,YACnBR,EAASzH,EAAMyH,OACfS,EAAUlI,EAAMkI,QAChBC,EAAWnI,EAAMmI,SACjBC,EAAWpI,EAAMoI,SACjBC,EAASrI,EAAMqI,OACfC,EAAYtI,EAAMsI,UAClBC,EAASvI,EAAMuI,OACfC,EAAaxI,EAAMwI,WACnBC,EAASzI,EAAMyI,OACfC,EAAa1I,EAAM0I,WACnBd,EAAQ5H,EAAM4H,MACde,EAAc3I,EAAM2I,YACpBC,EAAY5I,EAAM4I,UAClBC,EAAgB7I,EAAM6I,cACtBC,EAAeb,GAAe,GAC9Bc,EAASf,IACTgB,EAAY,GACZC,EAAY1I,IACZ2I,EAAW3I,IAEf,GAAIkH,EAAQ,CACV,IAAI0B,EAAO5I,EAAEwG,EAAU,CACrB/G,MAAO,eAAWuH,EAAcvH,EAAO,OAAiBwH,KAAK,KAAM,UAGjEc,EACFY,EAAWC,EAEXF,EAAYE,EAIhB,IAAIC,EAAU7I,IACV8I,EAAgB,eAAkB,OAAkBP,EAAcC,IAElEM,GAAiBd,GAAUC,KAC7BY,EAAU7I,EAAE,OAAa,CACvBP,MAAO,eAAW,OAAkBA,GACpCsJ,SAAUD,EAAgB,GAAK,OAAAE,EAAA,MAAWf,EAAYD,IACrD,eAAc,OAAkBS,EAAWF,EAAcC,KAG9D,IAAI9F,EAAW,eAAc,OAAmB+F,EAAWF,EAAcC,GAEpE/I,EAAM6H,SACT5E,EAAW1C,EAAE,OAAW,CACtBP,MAAO,eAAW,OAAgBA,IACjCiD,GAGCjD,EAAMwJ,SAAW/B,IACnBxE,EAAW1C,EAAE,MAAO,CAClBkJ,YAAa,qBACZ,CAACR,EAAWhG,EAAUiG,IAEzBD,EAAY1I,IACZ2I,EAAW3I,MAIf,IAAImJ,EAAUnJ,IACVoJ,EAAgB,eAAkB,OAAkBb,EAAcC,GAStE,OAPIY,GAAiBlB,GAAUC,KAC7BgB,EAAUnJ,EAAE,OAAa,CACvBP,MAAO,eAAW,OAAkBA,GACpCsJ,SAAUD,EAAgB,GAAK,OAAAE,EAAA,MAAWb,EAAYD,IACrD,eAAc,OAAkBO,EAAWF,EAAcC,KAGvDxI,EAAEP,EAAM0B,IAAK,eAAUjB,EAAM,CAClCgJ,YAAa,OACbtG,OAAQ4E,EAAS,CACf,WAAYG,GAAWE,EACvB,oBAAqBD,GAAYE,MAAaH,GAAWE,IACxD,EAAgBL,EAAQ,QAAQnH,OAAOgH,GAAQA,GAAQ,EAAgBG,EAAQ,MAAMnH,OAAOgI,GAAYA,GAAY,EAAgBb,EAAQ,UAAUnH,OAAOiI,GAAgBA,GAAgB,EAAgBd,EAAQ,QAAQnH,OAAO+H,GAAcA,GAAcZ,KACjQ,CAACkB,EAAWG,EAASnG,EAAUyG,EAASR,Q,wBCnH/C,SAAUU,EAAQC,GAC8CA,EAAQC,IADzE,CAIEhN,GAAM,SAAWgN,GAAW,aAE5B,IAAIC,EAAuB,qBAAXC,aAA+C7D,IAArB6D,OAAOC,UAC3CD,OAAOC,UACP,CACEC,MAAO,IAEXC,EAAa,CACbC,SAAU,CACNC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDC,SAAU,CACN,UACA,gBACA,cACA,eACA,eACA,cACA,WAGRC,OAAQ,CACJF,UAAW,CACP,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,SAAU,CACN,UACA,YACA,QACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,aAGRE,eAAgB,QAChBC,WAAW,GAEfV,EAAGG,MAAMQ,GAAKP,EACd,IAAIO,EAAKX,EAAGG,MAEZJ,EAAQK,WAAaA,EACrBL,EAAQtI,QAAUkJ,EAElBxM,OAAOkB,eAAe0K,EAAS,aAAc,CAAExK,OAAO,Q,oCC/DxD,+LAASxB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAe3M,IAAIsL,EAAmB,GACnBC,EAAqB,EAGrBC,EAAkB,SAAyBvL,GAC7C,OAAO,eAAQ,eAAUA,IAAUqL,EAAkB,IAInDG,EAAoB,SAA2BxL,GACjD,OAAO,eAAQ,eAAUA,IAAUsL,EAAoB,IAI9C5K,EAAQ,eAAsB,eAAStB,EAAcA,EAAc,GAAI,QAAkB,GAAI,CACtGqM,aAAc,eAAS,QACvBC,QAAS,eAAS,OAAyBL,GAC3CM,UAAW,eAAS,OAAyBL,MAC1C,SAGMM,EAA2B,aAAIzO,OAAO,CAC/C2D,KAAM,QAENiB,OAAQ,CAAC,QACTrB,MAAOA,EACPtD,SAAU,CACRyO,cAAe,WACb,IAAIC,EAAS,eAASN,EAAkBhO,KAAKmO,WAAaJ,EAAgB/N,KAAKkO,UAC/E,OAAOI,EAAS,EAAI,EAAIA,GAG1BC,sBAAuB,WACrB,MAAO,CACLL,QAASH,EAAgB/N,KAAKkO,SAC9BC,UAAWH,EAAkBhO,KAAKmO,WAClCE,cAAerO,KAAKqO,iBAI1BG,MAAO,CACLD,sBAAuB,SAA+BE,EAAUC,GACzD,eAAkBA,KACjBD,EAASP,UAAYQ,EAASR,SAAWO,EAASN,YAAcO,EAASP,WAGlEM,EAASJ,gBAAkBK,EAASL,eAAiBrO,KAAK2O,YAAcF,EAASJ,iBAD1FrO,KAAK2O,YAAc,GAQvB3O,KAAK4O,mBAAqBH,EAASJ,gBAGvCQ,QAAS,WACP,IAAIC,EAAQ9O,KAGZA,KAAK4O,mBAAqB5O,KAAKqO,cAE/B,IAAIM,EAAc,eAAU3O,KAAK,QAAkB,GAE/C2O,EAAc,EAChB3O,KAAK2O,YAAcA,EAEnB3O,KAAK+O,WAAU,WAGbD,EAAMH,YAAc,MAI1BpO,QAAS,CAEPyO,QAAS,SAAiBC,EAAOC,GAC/B,IAAIC,EAASnP,KAGb,GAAIkP,IAAelP,KAAK2O,YAAxB,CAIA,IAAI9M,EAASoN,EAAMpN,OAEfuN,EAAW,IAAI,OAAQ,OAAuB,CAChDC,YAAY,EACZC,UAAWtP,KACX6B,OAAQA,IAEV7B,KAAKuP,MAAMH,EAASI,KAAMJ,EAAUF,GAEhCE,EAASK,mBAKbzP,KAAK2O,YAAcO,EAEnBlP,KAAKuP,MAAM,OAAmBvP,KAAK2O,aAEnC3O,KAAK+O,WAAU,WACT,eAAUlN,IAAWsN,EAAOO,IAAIC,SAAS9N,GAC3C,eAAaA,GAEbsN,EAAOS,qBAIbC,SAAU,SAAkBC,GAC1B,OAAOA,GAITC,UAAW,WAET,MAAO,Q,oCCxIN,SAASC,IACdC,SAASC,eAAe,cAAcC,MAAMC,QAAU,QAGjD,SAASC,IACdJ,SAASC,eAAe,cAAcC,MAAMC,QAAU,OALxD,qE,kCCAA,mIAASpP,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAIW,EAAQ,eAAsB,CAEvCuC,YAAa,eAAS,SACrB,SAMQ6K,EAAsB,aAAI3Q,OAAO,CAC1C2D,KAAM,QACNiB,OAAQ,CAAC,OAAY,OAAgB,QACrCmC,QAAS,WACP,MAAO,CACLC,gBAAiB3G,OAGrBwE,OAAQ,CAENoC,QAAS,CACPlC,QAEA,WACE,MAAO,MAIbC,cAAc,EACdzB,MAAOA,EACPtD,SAAU,CAER2Q,QAAS,WACP,OAAO,GAGTvL,OAAQ,WACN,OAAOhF,KAAK4G,QAAQE,MAGtB7B,UAAW,WACT,OAAOjF,KAAK4G,QAAQ3B,WAGtBE,aAAc,WACZ,OAAOnF,KAAK4G,QAAQzB,cAItBC,eAAgB,WACd,OAAO,GAKTC,gBAAiB,WACf,OAAQrF,KAAKiF,WAAajF,KAAK4G,QAAQG,cAGzCrB,aAAc,WACZ,OAAO1F,KAAK4G,QAAQlB,cAEtB8K,aAAc,WACZ,MAAO,CAACxQ,KAAKyF,YAAc,SAAS3B,OAAO9D,KAAKyF,aAAe,OAEjEgL,WAAY,WACV,OAAO7O,EAAcA,EAAc,GAAI5B,KAAKkG,SAAU,GAAI,CACxDF,KAAM,eAIZxC,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,QAAS,CAChB4C,MAAOrG,KAAKwQ,aACZlK,MAAOtG,KAAKyQ,WAEZlK,GAAIvG,KAAKwG,aACRxG,KAAKoG,qB,+MCrFD,EAAQ,GAGRsK,EAAiB,aAAI/Q,OAAO,CACrCuD,MAAO,EACP3C,QAAS,CACPoQ,gBAAiB,WACf,IAAIC,EAAS5Q,KAAK6Q,eACdzN,EAAUpD,KAAKoD,QACf0N,EAAe9Q,KAAK8Q,aACpBC,EAAc/Q,KAAK+Q,YACnBtN,EAAIzD,KAAKgR,eAGb,OAAKhR,KAAKiR,kBAAkB,UAAqC,IAAZ7N,GAAgC,KAAZA,EAIlEK,EAAE,OAAK,CACZkJ,YAAa,qBACbtG,MAAO,CAAC,eAAWyK,GAEnBA,EAAa,KAAM,cAAgBA,GACnCxK,MAAO,eAAWyK,GAElBA,EAAY,KAAM,cAAgBA,EAClC7O,IAAK,gBACJlC,KAAKoG,cAAc,OAAsB,CAC1C8K,QAASN,EAAO7O,OAChB6O,OAAQA,KAdDnN,Q,gDCpBf,SAAStB,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAY3M,IAAI4O,EAAuB,OACvBC,EAAwB,QAA0BD,EAE3C,EAAQhP,EAAgB,GAAIgP,EAAsB,eAAS,QAAmB,IAG9EE,EAAY,aAAI1R,OAAO,CAChCuD,MAAO,EACPS,KAAM,WACJ,MAAO,CACL2N,WAAW,IAGf1R,SAAU,CACR2R,aAAc,WACZ,OAAOvR,KAAKmR,IAAyBnR,KAAKsR,YAG9C9C,MAAO,CACL8C,UAAW,SAAmB7C,EAAUC,GAClCD,IAAaC,GACf1O,KAAKuP,MAAM6B,EAAuB3C,KAIxClO,QAAS,CAEPiR,WAAY,SAAoBvC,GAE9B,QAAIjP,KAAKuR,eACP,eAAUtC,IACH,IAMXwC,WAAY,WACV,IAAIX,EAAe9Q,KAAK8Q,aACpBC,EAAc/Q,KAAK+Q,YACnBtN,EAAIzD,KAAKgR,eAEb,OAAIhR,KAAKuR,cAAgBvR,KAAKiR,kBAAkB,QACvCxN,EAAE,OAAK,CACZkJ,YAAa,oBACbtG,MAAO,CAAC,eAAWyK,GAEnBA,EAAa,KAAM,QAAwBA,GAC3CxK,MAAO,eAAWyK,GAElBA,EAAY,KAAM,QAAwBA,EAC1C7O,IAAK,mBACJ,CAACuB,EAAE,OAAK,CACTP,MAAO,CACLe,QAASjE,KAAK6Q,eAAe9O,QAAU,OAExC,CAAC/B,KAAKoG,cAAc,YAKlB,S,oCChEF,EAAQ,CACjBsL,kBAAmB,eAAS,QAC5BC,kBAAmB,eAAS,OAAkB,8CAC9CC,UAAW,eAAS,QACpBC,UAAW,eAAS,OAAkB,gCACtCC,UAAW,eAAS,QAAmB,IAI9BC,EAAa,aAAIpS,OAAO,CACjCuD,MAAO,EACP3C,QAAS,CACPyR,YAAa,WACX,IAAIC,EAAQjS,KAAKkS,cACbzO,EAAIzD,KAAKgR,eACTmB,EAAS1O,IAEb,GAAIzD,KAAK8R,aAAeG,GAA0B,IAAjBA,EAAMlQ,WAAmB/B,KAAKuR,eAAgBvR,KAAKiR,kBAAkB,SAAwB,CAC5H,IAAIL,EAAS5Q,KAAK6Q,eACduB,EAAapS,KAAKoS,WAClBP,EAAY7R,KAAK6R,UACjBD,EAAY5R,KAAK4R,UACjBD,EAAoB3R,KAAK2R,kBACzBD,EAAoB1R,KAAK0R,kBACzBZ,EAAe9Q,KAAK8Q,aACpBC,EAAc/Q,KAAK+Q,YACvBoB,EAASnS,KAAKoG,cAAcgM,EAAa,OAA0B,OAAiB,CAClFV,kBAAmBA,EACnBC,kBAAmBA,EACnBC,UAAWA,EACXC,UAAWA,EACXjB,OAAQA,EAERqB,MAAOA,IAGJE,IACHA,EAAS1O,EAAE,MAAO,CAChB4C,MAAO,CAAC,cAAe,QACvBmG,SAAU4F,EAAa,OAAA3F,EAAA,MAAWiF,EAAmBC,GAAqB,OAAAlF,EAAA,MAAWmF,EAAWC,MAIpGM,EAAS1O,EAAE,OAAK,CACdP,MAAO,CACLe,QAAS2M,EAAO7O,QAAU,OAE3B,CAAC0B,EAAE,MAAO,CACX6C,MAAO,CACLN,KAAM,QACN,YAAa,WAEd,CAACmM,MACJA,EAAS1O,EAAE,OAAK,CACdkJ,YAAa,oBACbtG,MAAO,CAAC,eAAWyK,GAEnBA,EAAa,KAAM,aAAeA,GAClCxK,MAAO,eAAWyK,GAElBA,EAAY,KAAM,aAAeA,EACjC7O,IAAKkQ,EAAa,uBAAyB,eAC1C,CAACD,IAGN,OAAOA,M,gGC3DF,EAAwB,SAASE,EAAsB7P,GAChE,OAAI,eAAkBA,GACb,GAKL,eAASA,KAAW,eAAOA,GACtB,eAAKA,GAAO8P,OAClBC,KAAI,SAAUC,GACb,OAAOH,EAAsB7P,EAAMgQ,OAClCjR,QAAO,SAAUkR,GAClB,QAASA,KAEVC,KAAK,KAGD,eAASlQ,I,YC3BP,EAAc,SAAqBmQ,EAAKC,EAAcC,GAC/D,IAAIC,EAAYnS,UAAUoB,OAAS,QAAsBsH,IAAjB1I,UAAU,GAAmBA,UAAU,GAAK,GAIhFoS,EAAe,eAAKD,GAAWE,QAAO,SAAU1E,EAAQpM,GAC1D,IAAI+Q,EAAQH,EAAU5Q,GAClBgR,EAAoBD,EAAMC,kBAC1BC,EAAY,eAAWD,GAE3BA,EAAoBA,EAEpBD,EAAME,UAAY,KAMlB,OAJI,eAAWA,KACb7E,EAAOpM,GAAOiR,EAAUR,EAAIzQ,GAAMA,EAAKyQ,IAGlCrE,IACN,eAAMqE,IAKLS,EAAc,eAAKL,GAAcxR,QAAO,SAAUW,GACpD,OAAQ,OAAmBA,MAAU,eAAQ0Q,IAAiBA,EAAa7Q,OAAS,GAAK,OAAAsR,EAAA,MAAcT,EAAc1Q,OAAW,eAAQ2Q,IAAkBA,EAAc9Q,OAAS,IAAM,OAAAsR,EAAA,MAAcR,EAAe3Q,OAEtN,OAAO,eAAK6Q,EAAcK,IC3BjB,EAAwB,SAA+BT,EAAKC,EAAcC,EAAeC,GAClG,OAAO,eAASH,GAAO,EAAsB,EAAYA,EAAKC,EAAcC,EAAeC,IAE3F,ICRF,SAASQ,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI5S,OAAO6S,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAY/Q,MAAgB,QAAN0Q,GAAqB,QAANA,EAAoBM,MAAMC,KAAKV,GAAc,cAANG,GAAqB,2CAA2CQ,KAAKR,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBgB,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYvT,OAAOqT,GAAO,OAAOH,MAAMC,KAAKE,GAE1H,SAASjB,EAAmBD,GAAO,GAAIe,MAAMM,QAAQrB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKsB,IAAkB,MAAPA,GAAeA,EAAMtB,EAAIxR,UAAQ8S,EAAMtB,EAAIxR,QAAQ,IAAK,IAAID,EAAI,EAAGgT,EAAO,IAAIR,MAAMO,GAAM/S,EAAI+S,EAAK/S,IAAOgT,EAAKhT,GAAKyR,EAAIzR,GAAM,OAAOgT,EAkBhL,IAAIC,EAA0B,8FAEnB,EAAQ,CACjBxT,OAAQ,eAAS,GAAGuC,OAAOwP,EAAmB,QAAgC,CAAC,UAC/E0B,eAAgB,eAAS,OAAyB,GAAG,SAAUxS,GAC7D,OAAO,OAAUgS,KAAKS,OAAOzS,OAE/B0S,eAAgB,eAAS,QACzBC,oBAAqB,eAAS,OAAiB,IAC/CC,qBAAsB,eAAS,OAAiB,KAIvCC,EAAiB,aAAI1V,OAAO,CACrCuD,MAAO,EACPS,KAAM,WACJ,MAAO,CAELyO,YAAY,EAGZkD,YAAatV,KAAKuV,eAAevV,KAAKuB,UAG1C3B,SAAU,CACR4V,sBAAuB,WACrB,OAAO,eAAOxV,KAAKmV,qBAAuB,IAAI5T,OAAOkU,EAAA,OAEvDC,uBAAwB,WACtB,OAAO,eAAO1V,KAAKoV,sBAAwB,IAAI7T,OAAOkU,EAAA,OAExDE,uBAAwB,WACtB,IAAIC,EAAK,eAAU5V,KAAKgV,eAAgB,GAOxC,OAJIY,EAAK,GACP,OAAAC,EAAA,MAAKd,EAAyB,SAGzBa,GAETE,eAAgB,WACd,OAAO9V,KAAK+V,eAAgB/V,KAAKgW,qBAGnCC,cAAe,WACb,IAAIC,EAAgBlW,KAAKkW,cACrBC,EAAanW,KAAKmW,WAClBb,EAActV,KAAKsV,YACvB,MAAO,CACLY,cAAeA,EACfC,WAAYA,EACZb,YAAaA,IAIjBc,cAAe,WAEb,IAAIlB,EAAiBlV,KAAKkV,eAC1B,OAAO,eAAgBA,GAAkBA,EAAiB,MAI5DgB,cAAe,WAEb,IAAIjE,EAAQjS,KAAKmW,WACbE,EAAWrW,KAAKsV,YAIhBgB,EAAWtW,KAAK8V,eAAiB9V,KAAKuW,gBAAgBvW,KAAKoW,cAAeC,IAAarW,KAAKwW,uBAAuBH,GAAY,KAEnI,OAAOC,GAAYrE,EAAMlQ,OAAS,EAAIkQ,EAAM1Q,OAAO+U,GAAYrE,IAGnEzD,MAAO,CAELmH,uBAAwB,SAAgClH,IACjDA,GAAYzO,KAAKyW,gBACpBzW,KAAK0W,mBACL1W,KAAKsV,YAActV,KAAKuV,eAAevV,KAAKuB,UAIhDA,OAAQ,CAGNoV,MAAM,EACNC,QAAS,SAAiBC,GACxB,IAAI/H,EAAQ9O,KAER8W,EAAU9W,KAAK2V,uBACnB3V,KAAK0W,mBAEDI,GAAWA,EAAU,EAEvB9W,KAAKyW,cAAgBM,YAAW,WAC9BjI,EAAMwG,YAAcxG,EAAMyG,eAAesB,KACxCC,GAGH9W,KAAKsV,YAActV,KAAKuV,eAAesB,KAM7CZ,cAAe,SAAuBvS,GACpC,IAAIwS,EAAgBxS,EAAKwS,cACrBZ,EAAc5R,EAAK4R,YAEnBlD,GAAa,EAEZkD,EAGM,eAAWA,EAAa,KAAO,eAAWA,EAAa,IAEhElD,GAAa,EACJkD,IAETlD,GAAa,GANbA,GAAa,EASXA,GACFpS,KAAKuP,MAAM,OAAqB2G,EAAeA,EAAcnU,QAG/D/B,KAAKoS,WAAaA,GAEpBA,WAAY,SAAoB3D,EAAUC,GACxC,IAAiB,IAAbD,IAAmC,IAAbC,EAAmB,CAG3C,IAAIyH,EAAanW,KAAKmW,WACtBnW,KAAKuP,MAAM,OAAqB4G,EAAYA,EAAWpU,WAI7D8M,QAAS,WACP,IAAIM,EAASnP,KAGbA,KAAKyW,cAAgB,KAMrBzW,KAAK+O,WAAU,WACbI,EAAOiD,WAAa4E,QAAQ7H,EAAOmG,iBAGvC2B,cAAe,WACbjX,KAAK0W,oBAEPnW,QAAS,CACPmW,iBAAkB,WAChBQ,aAAalX,KAAKyW,eAClBzW,KAAKyW,cAAgB,MAEvBlB,eAAgB,SAAwBc,GAEtC,OAAIrW,KAAK8V,gBAAmB9V,KAAKoW,eAAmB,eAASC,IAAa,eAASA,GAS5E,eAAUA,GANR,IASXE,gBAAiB,SAAyBD,EAAUD,GAOlD,IAAKC,IAAa,eAAWA,KAAcD,GAAY,eAAWA,EAAU,KAAO,eAAWA,EAAU,IACtG,OAAO,KAIT,IAAIpN,EAAK,SAAYkO,GAGnB,OAAOb,EAASa,EAAMd,IAIxB,OAAOpN,GAETuN,uBAAwB,SAAgCH,GACtD,IAAIe,EAASpX,KAIb,IAAKqW,IAAc,eAASA,KAAa,eAASA,GAEhD,OAAO,KAIT,IAAIgB,EAAShB,EAEb,GAAI,eAASgB,GAAS,CAGpB,IAAIC,EAAU,eAAajB,GAAUxS,QAAQ,OAAW,QAGxDwT,EAAS,IAAIE,OAAO,KAAKzT,OAAOwT,EAAS,MAAO,KAIlD,IAAIrO,EAAK,SAAYkO,GAenB,OADAE,EAAOG,UAAY,EACZH,EAAO7C,KAAK,EAAsB2C,EAAMC,EAAO5B,sBAAuB4B,EAAO1B,uBAAwB0B,EAAOK,qBAIrH,OAAOxO,M,wBCpQF,EAAQ,CACjB0F,YAAa,eAAS,OAAyB,GAC/CT,QAAS,eAAS,OAAyB,IAIlCwJ,GAAkB,aAAI/X,OAAO,CACtCuD,MAAO,EACPtD,SAAU,CACR+X,YAAa,WACX,OAAO3X,KAAK+V,eAAgB/V,KAAK4X,kBAEnCC,eAAgB,WACd,IAAI5F,EAAQjS,KAAK8X,aAAe9X,KAAKkW,eAAiBlW,KAAKmW,YAAc,GACrExH,EAAc,OAAAoJ,EAAA,MAAQ,eAAU/X,KAAK2O,YAAa,GAAI,GACtDT,EAAU,OAAA6J,EAAA,MAAQ,eAAU/X,KAAKkO,QAAS,GAAI,GAQlD,OANIlO,KAAK2X,aAAezJ,IAEtB+D,EAAQA,EAAMmC,OAAOzF,EAAc,GAAKT,EAASS,EAAcT,IAI1D+D,M,aCjBT+F,GAA4B,eAAiB,QAAY,QACzDC,GAAiC,eAAuB,QAAY,QAE7D,GAAQ,CAGjBC,OAAQ,eAAS,QAEjBjG,MAAO,eAAS,OAA0B,IAC1C+D,oBAAqB,eAAS,QAAmB,GACjD4B,iBAAkB,eAAS,QAAmB,GAC9CO,kBAAmB,eAAS,QAAmB,IAItCC,GAAgB,aAAIzY,OAAO,CACpC4E,OAAQ,CAAC,SACTrB,MAAO,GACPtD,SAAU,CACRmW,YAAa,WACX,OAAO,eAAW/V,KAAKiS,QAEzBoG,uBAAwB,WAKtB,IAAIzV,EAAM,CACRsV,OAAQlY,KAAKkY,OACb3W,OAAQ,KACR+W,OAAQ,KACRC,SAAU,KACVrK,QAAS,KACTS,YAAa,MAkBf,OAfK3O,KAAKgW,sBAERpT,EAAIrB,OAASvB,KAAKsV,aAGftV,KAAKmY,oBACRvV,EAAI0V,OAAStY,KAAKwY,YAClB5V,EAAI2V,SAAWvY,KAAKyY,eAGjBzY,KAAK4X,mBACRhV,EAAIsL,QAAUlO,KAAKkO,QACnBtL,EAAI+L,YAAc3O,KAAK2O,aAGlB,eAAM/L,KAGjB4L,MAAO,CAELyD,MAAO,SAAexD,IAEhBzO,KAAK+V,aAAe,eAAWtH,KACjCzO,KAAK+O,UAAU/O,KAAK0Y,kBAGxBL,uBAAwB,SAAgC5J,EAAUC,GAE3D,eAAWD,EAAUC,IACxB1O,KAAK+O,UAAU/O,KAAK0Y,mBAI1BC,QAAS,WACP,IAAI7J,EAAQ9O,MAGRA,KAAK+V,aAAiB/V,KAAKmW,YAAyC,IAA3BnW,KAAKmW,WAAWpU,QAE3D/B,KAAK0Y,kBAIP1Y,KAAK4Y,aAAaX,IAAgC,SAAU/Q,GACtDA,IAAO4H,EAAM5H,IAAMA,IAAO4H,GAC5BA,EAAM+J,cAIZtY,QAAS,CACPsY,QAAS,WACP,IAAI5G,EAAQjS,KAAKiS,MACb4G,EAAU7Y,KAAK6Y,QAEnB7Y,KAAK8Y,KAAK,OAAsBD,GAE5B7Y,KAAKuR,aAEHvR,KAAKsR,WAAatR,KAAK+V,aAEzB/V,KAAK+Y,IAAI,OAAsBF,IAGjC7Y,KAAKgZ,gBAEDhZ,KAAK+V,YACP/V,KAAK+O,UAAU/O,KAAK0Y,iBAGpB1Y,KAAKmW,WAAa,eAAQlE,GAASA,EAAMmC,QAAU,KAKzD6E,kBAAmB,SAA2BhH,GAC5CjS,KAAKmW,WAAa,eAAQlE,GAASA,EAAMmC,QAAU,GACnDpU,KAAKsR,WAAY,EACjBtR,KAAKuP,MAAM,QAEPvP,KAAKkH,IACPlH,KAAKkZ,WAAWlB,GAA2BhY,KAAKkH,KAGpDwR,gBAAiB,WACf,IAAIvJ,EAASnP,KAGRA,KAAK+V,cAMN/V,KAAKuR,aAEPvR,KAAK+O,UAAU/O,KAAK6Y,UAKtB7Y,KAAKsR,WAAY,EAEjBtR,KAAK+O,WAAU,WACb,IAEE,IAAIpL,EAAOwL,EAAO8C,MAAM9C,EAAOgK,QAAShK,EAAO8J,mBAE3C,eAAUtV,GAEZA,EAAKkE,MAAK,SAAUoK,GAElB9C,EAAO8J,kBAAkBhH,MAElB,eAAQtO,GAEjBwL,EAAO8J,kBAAkBtV,GAGG,IAAxBwL,EAAO8C,MAAMlQ,SAMf,OAAA8T,EAAA,MAAK,kFAAmF,SACxF1G,EAAOmC,WAAY,GAGvB,MAAO8H,GAKP,OAAAvD,EAAA,MAAK,4BAA4B/R,OAAOsV,EAAE9V,KAAM,MAAMQ,OAAOsV,EAAEC,QAAS,KAAM,SAC9ElK,EAAOmC,WAAY,EAEnBnC,EAAO2J,KAAK,OAAsB3J,EAAO0J,mBCxLnD,SAAS,GAAgBtW,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAa3M,ICbI+W,GAAQC,GDaRC,GAAe,CAAC,QAAS,QAAS,UAE3B,GAAQ,CAEjBC,gBAAiB,eAAS,QAAmB,GAC7CC,WAAY,eAAS,OAAkB,SAAS,SAAUlX,GACxD,OAAO,OAAA6Q,EAAA,MAAcmG,GAAchX,MAErCmX,WAAY,eAAS,QAAmB,GACxCC,gBAAiB,eAAS,OAAkB,WAInCC,GAAkB,aAAIla,OAAO,CACtCuD,MAAO,GACPS,KAAM,WACJ,MAAO,CACLmW,aAAc,GACdC,iBAAkB,IAGtBna,SAAU,CACRoa,aAAc,WACZ,OAAOha,KAAK2Z,YAAc3Z,KAAK0Z,YAEjCO,sBAAuB,WACrB,OAAOja,KAAKga,eAAiBha,KAAKyZ,iBAEpCS,uBAAwB,WACtB,OAAO,GAETC,uBAAwB,WACtB,IAAIL,EAAe9Z,KAAK8Z,aACxB,OAAO9Z,KAAKga,cAAgBF,GAAgBA,EAAa/X,OAAS,GAAK+X,EAAaM,KAAK3E,EAAA,OAE3F4E,wBAAyB,WACvB,OAAOra,KAAKga,cAAgB,OAAA3G,EAAA,MAAc,CAAC,QAAS,SAAUrT,KAAK0Z,aAErEY,uBAAwB,WACtB,IAAI5W,EAEAsW,EAAeha,KAAKga,aACxB,OAAOtW,EAAO,CACZ,qBAAsBsW,GACrB,GAAgBtW,EAAM,kBAAkBI,OAAO9D,KAAK0Z,YAAaM,GAAe,GAAgBtW,EAAM,oBAAqB1D,KAAKma,wBAAyB,GAAgBzW,EAAM,8BAA+BsW,IAAiBha,KAAKia,uBAAwBvW,GAEjQ6W,qBAAsB,WACpB,MAAO,CAIL,uBAAyBva,KAAKga,aAAsBha,KAAKqa,wBAA0B,OAAS,QAA/C,QAInD7L,MAAO,CACL0D,cAAe,SAAuBzD,EAAUC,GAE9C,IAAI8L,GAAQ,EAEZ,GAAIxa,KAAKga,cAAgBha,KAAK8Z,aAAa/X,OAAS,EAAG,CAErDyY,EAAQ,eAAQ/L,IAAa,eAAQC,IAAaD,EAAS1M,SAAW2M,EAAS3M,OAE/E,IAAK,IAAID,EAAI,EAAG0Y,GAAS1Y,EAAI2M,EAAS1M,OAAQD,IAE5C0Y,EAAQ,eAAW,EAAY/L,EAAS3M,IAAK,EAAY4M,EAAS5M,KAIjE0Y,GACHxa,KAAKgZ,iBAGTW,WAAY,SAAoBlL,GAC9BzO,KAAKgZ,gBACLhZ,KAAKya,qBAAqBhM,IAE5BiL,WAAY,WACV1Z,KAAKgZ,iBAEPiB,sBAAuB,SAA+BxL,GACpDzO,KAAKgZ,gBACLhZ,KAAKya,sBAAsBhM,IAE7BqL,aAAc,SAAsBY,EAAehM,GACjD,IAAII,EAAQ9O,KAEZ,GAAIA,KAAKga,eAAiB,eAAWU,EAAehM,GAAW,CAC7D,IAAIuD,EAAQ,GAEZyI,EAAczY,SAAQ,SAAUwQ,EAAGkI,GAC7BlI,GACFR,EAAMtQ,KAAKmN,EAAMoD,cAAcyI,OAInC3a,KAAKuP,MAAM,OAAyB0C,MAI1C2I,YAAa,WAEP5a,KAAKga,cACPha,KAAKya,sBAAqB,IAG9Bla,QAAS,CAEPsa,UAAW,SAAmBC,GAE5B,GAAI9a,KAAKga,cAAgB,eAASc,IAAUA,GAAS,GAAKA,EAAQ9a,KAAKkS,cAAcnQ,SAAW/B,KAAK+a,cAAcD,GAAQ,CACzH,IAAIhB,EAAe9Z,KAAKqa,wBAA0Bra,KAAK8Z,aAAa1F,QAAU,GAC9E0F,EAAagB,IAAS,EACtB9a,KAAKgb,qBAAuB,EAC5Bhb,KAAK8Z,aAAeA,IAGxBmB,YAAa,SAAqBH,GAEhC,GAAI9a,KAAKga,cAAgB,eAASc,IAAU9a,KAAK+a,cAAcD,GAAQ,CACrE,IAAIhB,EAAe9Z,KAAK8Z,aAAa1F,QACrC0F,EAAagB,IAAS,EACtB9a,KAAKgb,qBAAuB,EAC5Bhb,KAAK8Z,aAAeA,IAGxBoB,cAAe,WACb,IAAInZ,EAAS/B,KAAKkS,cAAcnQ,OAE5B/B,KAAKga,cAAgBjY,EAAS,IAChC/B,KAAKgb,qBAAuB,EAC5Bhb,KAAK8Z,aAAe9Z,KAAKqa,wBAA0B,eAAYtY,GAAQ,GAAQ,EAAC,KAGpFgZ,cAAe,SAAuBD,GAEpC,SAAU,eAASA,KAAU9a,KAAK8Z,aAAagB,KAEjD9B,cAAe,WAEbhZ,KAAKgb,qBAAuB,EAC5Bhb,KAAK8Z,aAAe,IAGtBqB,qBAAsB,SAA8BL,GAClD,GAAI9a,KAAKga,cAAgBha,KAAK+a,cAAcD,GAAQ,CAClD,IAAIzW,EAAUrE,KAAK4Z,gBACnB,OAAO,GAAgB,CACrB,wBAAwB,GACvB,GAAG9V,OAAO9D,KAAK8G,KAAO,KAAO,QAAS,KAAKhD,OAAOO,GAAUA,GAGjE,MAAO,IAET+W,mBAAoB,SAA4BN,GAC9C,MAAO,CACL,gBAAkB9a,KAAKga,aAAsBha,KAAK+a,cAAcD,GAAS,OAAS,QAA5C,OAG1CL,qBAAsB,SAA8BlU,GAClD,IAAI8U,EAAS9U,IAAOvG,KAAKyZ,gBAAkB,MAAQ,OAEnDzZ,KAAKqb,GAAQ,OAAwBrb,KAAKsb,kBAE1Ctb,KAAKqb,GAAQ,OAAqBrb,KAAKgZ,eACvChZ,KAAKqb,GAAQ,OAA4Brb,KAAKgZ,gBAEhDsC,iBAAkB,SAA0BnE,EAAM2D,EAAO7L,GAEvD,GAAKjP,KAAKga,eAAgBha,KAAKyZ,gBAA/B,CAMA,IAAIC,EAAa1Z,KAAK0Z,WAClBK,EAAkB/Z,KAAK+Z,gBACvBD,EAAe9Z,KAAK8Z,aAAa1F,QACjCmH,GAAYzB,EAAagB,GAE7B,GAAmB,WAAfpB,EACFI,EAAe,QACV,GAAmB,UAAfJ,EACT,GAAIK,GAAmB,GAAK9K,EAAMuM,SAAU,CAE1C,IAAK,IAAIb,EAAM,OAAA5C,EAAA,MAAQgC,EAAiBe,GAAQH,GAAO,OAAA5C,EAAA,MAAQgC,EAAiBe,GAAQH,IACtFb,EAAaa,IAAO,EAGtBY,GAAW,OAELtM,EAAMwM,SAAWxM,EAAMyM,UAE3B5B,EAAe,GACfyB,GAAW,GAGbvb,KAAK+Z,gBAAkBwB,EAAWT,GAAS,EAI/ChB,EAAagB,GAASS,EACtBvb,KAAK8Z,aAAeA,OA/BlB9Z,KAAKgZ,oB,0BEpLT,GAAiB,SAAwBxW,GAC3C,OAAI,eAAkBA,GACb,GAGL,eAAUA,GACL,eAAQA,EAAOA,GAGjBA,GAYE,GAAqB,SAA4BmZ,EAAGC,GAC7D,IAAIlY,EAAO/C,UAAUoB,OAAS,QAAsBsH,IAAjB1I,UAAU,GAAmBA,UAAU,GAAK,GAC3Ekb,EAAcnY,EAAK4U,OACnBA,OAAyB,IAAhBuD,EAAyB,KAAOA,EACzCC,EAAiBpY,EAAKyP,UACtBA,OAA+B,IAAnB2I,EAA4B,KAAOA,EAC/CC,EAAcrY,EAAKsY,OACnBA,OAAyB,IAAhBD,OAAyB1S,EAAY0S,EAC9CE,EAAqBvY,EAAKwY,cAC1BA,OAAuC,IAAvBD,EAAgC,GAAKA,EACrDE,EAAgBzY,EAAK0Y,SACrBA,OAA6B,IAAlBD,GAAmCA,EAG9CE,EAAK,OAAAtc,GAAA,MAAI4b,EAAGrD,EAAQ,MACpBgE,EAAK,OAAAvc,GAAA,MAAI6b,EAAGtD,EAAQ,MAaxB,OAXI,eAAWnF,KACbkJ,EAAKlJ,EAAUkJ,EAAI/D,EAAQqD,GAC3BW,EAAKnJ,EAAUmJ,EAAIhE,EAAQsD,IAM7BS,EAAK,GAAeA,GACpBC,EAAK,GAAeA,GAEhB,eAAOD,IAAO,eAAOC,IAAO,eAASD,IAAO,eAASC,GAGhDD,EAAKC,GAAM,EAAID,EAAKC,EAAK,EAAI,EAC3BF,GAAmB,KAAPC,GAAoB,KAAPC,EAE3B,EACEF,GAAmB,KAAPC,GAAoB,KAAPC,GAE1B,EAIH,EAAsBD,GAAIE,cAAc,EAAsBD,GAAKN,EAAQE,IDjEpF,SAASlb,GAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,GAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,GAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBL,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,GAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAAS,GAAgBU,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAY3M,IAAIia,GAA0B,SAC1BC,GAA2B,QAA0BD,GACrDE,GAA4B,WAC5BC,GAA6B,QAA0BD,GACvDE,GAAqB,MACrBC,GAAsB,OACtBC,GAAsB,OACtBC,GAAkB,CAACH,GAAoBC,GAAqBC,IAErD,IAASxD,GAAS,CAC3B0D,aAAc,eAAS,OAAkB,2BACzCC,eAAgB,eAAS,OAAkB,0BAC3CC,cAAe,eAAS,OAAkB,4BAC1CC,gBAAiB,eAAS,QAAmB,GAC7CC,eAAgB,eAAS,QAAmB,GAK5CC,YAAa,eAAS,QAAmB,IACxC,GAAgB/D,GAAQkD,GAAyB,eAAS,SAAoB,GAAgBlD,GAAQ,cAAe,eAAS,SAAsB,GAAgBA,GAAQ,oBAAqB,eAAS,SAA0B,GAAgBA,GAAQ,qBAAsB,eAAS,OAAkB,CAC9SgE,SAAS,KACN,GAAgBhE,GAAQoD,GAA2B,eAAS,QAAmB,IAAS,GAAgBpD,GAAQ,gBAAiB,eAAS,OAAkBsD,IAAoB,SAAUpa,GAC7L,OAAO,OAAA6Q,EAAA,MAAc0J,GAAiBva,OACnC,GAAgB8W,GAAQ,eAAgB,eAAS,QAAmB,IAAS,GAAgBA,GAAQ,eAAgB,eAAS,QAAmB,IAASA,IAGpJiE,GAAe,aAAI5d,OAAO,CACnCuD,MAAO,GACPS,KAAM,WACJ,MAAO,CACL6U,YAAaxY,KAAKwc,KAA4B,GAC9C/D,cAAezY,KAAK0c,MAA8B,IAGtD9c,SAAU,CACR4d,aAAc,WACZ,OAAOxd,KAAK+V,cAAgB/V,KAAKmY,mBAAqBnY,KAAKod,gBAE7DK,WAAY,WACV,OAAOzd,KAAK6Q,eAAeuJ,MAAK,SAAUsD,GACxC,OAAOA,EAAEC,aAKb7F,YAAa,WACX,IAAIQ,EAAStY,KAAKwY,YACdD,EAAWvY,KAAKyY,cAChBuD,EAAShc,KAAK4d,kBACdxB,EAAWpc,KAAK6d,aAChBC,EAAc9d,KAAK8d,YACnBN,EAAexd,KAAKwd,aACpBvL,GAASjS,KAAKkW,eAAiBlW,KAAKmW,YAAc,IAAI/B,QAEtD8H,EAAgBta,GAAcA,GAAc,GAAI5B,KAAK+d,oBAAqB,GAAI,CAChFC,MAAO,SAGT,GAAI1F,GAAUkF,EAAc,CAC1B,IAAIvK,EAAQjT,KAAKyX,kBAAkBa,IAAW,GAC1C2F,EAAkBhL,EAAMgL,gBACxB9K,EAAY,eAAW8K,GAE3BA,EAAkBA,EAAkBje,KAAKke,kBAAkB5F,QAAUjP,EAErE,OAAO,gBAAW4I,GAAO,SAAU0J,EAAGC,GACpC,IAAItN,EAAS,KAsBb,OApBI,eAAWwP,KAIbxP,EAASwP,EAAYnC,EAAGC,EAAGtD,EAAQC,EAAUpF,EAAW+I,EAAeF,KAKrE,eAAkB1N,KAAsB,IAAXA,KAC/BA,EAAS,GAAmBqN,EAAGC,EAAG,CAChCtD,OAAQA,EACRnF,UAAWA,EACX6I,OAAQA,EACRE,cAAeA,EACfE,SAAUA,MAKN9N,GAAU,IAAMiK,GAAY,EAAI,MAI5C,OAAOtG,IAGXzD,OAAQ+K,GAAS,CAEfkE,WAAY,SAAoBhP,GAC1BA,EACEzO,KAAKyd,YACPzd,KAAK+Y,IAAI,OAAyB/Y,KAAKme,YAGzCne,KAAK8Y,KAAK,OAAyB9Y,KAAKme,cAG3C,GAAgB5E,GAAQmD,IAA2B,SAAUjO,GAE1DA,IAAazO,KAAKyY,gBAItBzY,KAAKyY,cAAgBhK,IAAY,MAC/B,GAAgB8K,GAAQiD,IAAyB,SAAU/N,GAEzDA,IAAazO,KAAKwY,cAItBxY,KAAKwY,YAAc/J,GAAY,OAC7B,GAAgB8K,GAAQ,iBAAiB,SAAuB9K,EAAUC,GAExED,IAAaC,GACf1O,KAAKuP,MAAMoN,GAA4BlO,MAEvC,GAAgB8K,GAAQ,eAAe,SAAqB9K,EAAUC,GACpED,IAAaC,GACf1O,KAAKuP,MAAMkN,GAA0BhO,MAErC8K,IACJ1K,QAAS,WACH7O,KAAKyd,YACPzd,KAAK+Y,IAAI,OAAyB/Y,KAAKme,aAG3C5d,QAAS,CAGP4d,WAAY,SAAoBjc,EAAK+Q,EAAOhE,EAAOmP,GACjD,IAAItP,EAAQ9O,KAEZ,GAAKA,KAAKyd,cAKNW,IAAUpe,KAAKmd,iBAAnB,CAMA,IAAIkB,GAAc,EAEdC,EAAsB,WACxB,IAAIC,EAAgBtL,EAAMsL,eAAiBzP,EAAMyP,cAE7CA,IAAkB3B,GACpB9N,EAAM2J,eAAgB,EACb8F,IAAkB1B,KAC3B/N,EAAM2J,eAAgB,IAM1B,GAAIxF,EAAM0K,SAAU,CAClB,IAAIa,GAAWxe,KAAKwd,cAAgBvK,EAAMuL,QAAUvL,EAAMuL,QAAUtc,EAEhElC,KAAKwY,cAAgBgG,EAEvBxe,KAAKyY,eAAiBzY,KAAKyY,eAG3BzY,KAAKwY,YAAcgG,EAEnBF,KAGFD,GAAc,OACLre,KAAKwY,cAAgBxY,KAAKqd,cACnCrd,KAAKwY,YAAc,GACnB8F,IACAD,GAAc,GAGZA,GAEFre,KAAKuP,MAAM,OAAyBvP,KAAKmZ,WAI7CsF,mBAAoB,SAA4Bvc,EAAK+Q,EAAOmL,GAC1D,MAAO,CAEL,yBAA0BnL,EAAM0K,UAAY3d,KAAK0e,gBAAkBN,GAAUpe,KAAKmd,mBAGtFwB,iBAAkB,SAA0Bzc,EAAK+Q,EAAOmL,GACtD,IAAKpe,KAAKyd,YAAcW,GAAUpe,KAAKmd,gBAErC,MAAO,GAGT,IAAIQ,EAAW1K,EAAM0K,SAEjBiB,EAAWjB,GAAY3d,KAAKwY,cAAgBtW,EAAMlC,KAAKyY,cAAgB,aAAe,YAAckF,EAAW,OAAS,KAE5H,MAAO,CACL,YAAaiB,IAGjBC,iBAAkB,SAA0B3c,EAAK+Q,EAAOmL,GAEtD,IAAKpe,KAAKyd,YAAcW,GAAUpe,KAAKmd,gBAErC,OAAO,KAGT,IAAIQ,EAAW1K,EAAM0K,SAEjBmB,EAAe,GAEnB,GAAInB,EACF,GAAI3d,KAAKwY,cAAgBtW,EAEvB4c,EAAe9e,KAAKyY,cAAgBzY,KAAKgd,aAAehd,KAAKkd,kBACxD,CAIL4B,EAAe9e,KAAKyY,cAAgBzY,KAAKkd,cAAgBld,KAAKgd,aAE9D,IAAIuB,EAAgBve,KAAKue,eAAiBtL,EAAMsL,cAE5CA,IAAkB3B,GACpBkC,EAAe9e,KAAKgd,aACXuB,IAAkB1B,KAC3BiC,EAAe9e,KAAKkd,oBAGdld,KAAKqd,cAEfyB,EAAe9e,KAAKwY,YAAcxY,KAAKid,eAAiB,IAI1D,OAAO,eAAK6B,IAAiB,S,kEErQxB,GAAQ,GAGRC,GAAc,aAAIpf,OAAO,CAClCY,QAAS,CACPye,aAAc,WACZ,IAAIpO,EAAS5Q,KAAK6Q,eACdzN,EAAUpD,KAAKoD,QACf0N,EAAe9Q,KAAK8Q,aACpBC,EAAc/Q,KAAK+Q,YACnBtN,EAAIzD,KAAKgR,eAGb,OAAKhR,KAAKiR,kBAAkB,WAAkC,IAAZ7N,GAAgC,KAAZA,EAI/DK,EAAE,OAAK,CACZkJ,YAAa,kBACbtG,MAAO,CAAC,eAAWyK,GAAgBA,EAAa,KAAM,WAAaA,GACnExK,MAAO,eAAWyK,GAAeA,EAAY,KAAM,WAAaA,EAChE7O,IAAK,aACJ,CAAClC,KAAKoG,cAAc,QAAmB,CACxC8K,QAASN,EAAO7O,OAChB6O,OAAQA,MAVDnN,QCnBf,SAAS,GAAQxC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAK,GAAQV,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBL,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmB,GAAQZ,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAAS,GAAgBU,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EA4BpM,IAAI,GAAQ,eAAsB,eAAS,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAI2E,EAAA,MAAU,GAAiB,GAAY,QAAe,QAAgB,GAAa,GAAiB,QAAa,GAAkB,IAAgB,IAAkB,IAAe,SAAe,SAAqB,SAAa,SAAa,SAAa,KAAe,SAGrjB+X,GAAsB,aAAItf,OAAO,CAC1C2D,KAAM,QAGNiB,OAAQ,CACR+B,EAAA,KAAY,OAAkBY,EAAA,KAAS,OACvC,OAAY,QAAoB,QAAc,QAAY,QAAY,QACtE,QAAcmO,EAAgBkI,GAAc7F,GAAiB,OAAc,OAAemC,GAAiB9H,EAAYgN,GAAarO,EAAgBW,EAAW+G,IAC/JlV,MAAO,M,oCC3CT,mIAASlC,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAU3M,IAAI2c,EAAQ,QACRC,EAAO,OAEAjc,EAAQ,eAAsB,CACvCmB,QAAS,eAAS,SACjB,SAMQ+a,EAAmB,aAAIzf,OAAO,CACvC2D,KAAM,QACNiB,OAAQ,CAAC,OAAY,OAAgB,QACrCmC,QAAS,WACP,MAAO,CACLjC,UAAWzE,OAGfwE,OAAQ,CACNmC,gBAAiB,CACfjC,QAEA,WACE,MAAO,MAIbC,cAAc,EACdzB,MAAOA,EACPtD,SAAU,CAERiF,QAAS,WACP,OAAO7E,KAAK2G,gBAAgB0Y,SAG9Bva,QAAS,WACP,OAAO9E,KAAK2G,gBAAgBE,SAG9B9B,QAAS,WACP,OAAO/E,KAAK2G,gBAAgB4J,SAG9BvL,OAAQ,WACN,OAAOhF,KAAK2G,gBAAgB3B,QAG9BC,UAAW,WACT,OAAOjF,KAAK2G,gBAAgB1B,WAG9BE,aAAc,WACZ,OAAOnF,KAAK2G,gBAAgBxB,cAI9BC,eAAgB,WACd,OAAOpF,KAAK2G,gBAAgBvB,gBAK9BC,gBAAiB,WACf,OAAQrF,KAAKiF,WAAajF,KAAK2G,gBAAgBtB,iBAGjDK,aAAc,WACZ,OAAO1F,KAAK2G,gBAAgBjB,cAG9BF,YAAa,WACX,OAAOxF,KAAK8E,QAAU9E,KAAK2G,gBAAgBnB,YAAc,MAG3DC,YAAa,WACX,OAAOzF,KAAK+E,QAAU/E,KAAK2G,gBAAgBlB,YAAc,MAE3D6Z,UAAW,WACT,OAAOtf,KAAKwF,cAAgB0Z,GAASlf,KAAKyF,cAAgByZ,IAElDlf,KAAKwF,cAAgB2Z,GAAQnf,KAAKyF,cAAgB0Z,GAEnDnf,KAAKgF,SAEdua,UAAW,WACT,IAAIlb,EAAUrE,KAAKqE,QACnB,MAAO,CAACA,EAAU,GAAGP,OAAO9D,KAAKsf,UAAY,KAAO,QAAS,KAAKxb,OAAOO,GAAW,OAEtFmb,QAAS,WACP,OAAO5d,EAAc,CACnBoE,KAAM,OACLhG,KAAKkG,WAGZ1C,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,KAAM,CACb4C,MAAOrG,KAAKuf,UACZjZ,MAAOtG,KAAKwf,QAEZjZ,GAAIvG,KAAKwG,aACRxG,KAAKoG,qB,oCCnHZ,8DAOWqZ,EAAmB,aAAI9f,OAAO,CACvCY,QAAS,CACPmf,YAAa,SAAqBpc,GAEhC,IAAIqc,EAAa3f,KAAK2f,YAAc,GAIhCC,EAAU5f,KAAK6f,SAAW,GAG9B,OAAQ,eAAYF,EAAWrc,KAAU,eAAQsc,EAAQtc,KAAUsc,EAAQtc,GAAMvB,OAAS,O,oCClBhG,kJASWmB,EAAQ,eAAsB,CACvC6H,OAAQ,eAAS,QAAmB,GACpC+U,WAAY,eAAS,QAAmB,GACxClb,IAAK,eAAS,OAAkB,OAChCmb,cAAe,eAAS,OAAkB,QACzC,SAGQC,EAAsB,aAAIrgB,OAAO,CAC1C2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZuH,EAAQxH,EAAKwH,MACbC,EAAczH,EAAKyH,YACnB5D,EAAW7D,EAAK6D,SAChBwD,EAAS7H,EAAM6H,OACf+U,EAAa5c,EAAM4c,WACnBC,EAAgB7c,EAAM6c,cACtBE,EAAYlV,EAASxD,EAAW,GAEpC,IAAKwD,EAAQ,CACX,IAAImB,EAAY,GACZD,EAASf,IACTc,EAAeb,GAAe,GAClC8U,EAAUte,KAAK8B,EAAE,OAAY,eAAc,OAAmByI,EAAWF,EAAcC,KACvF,IAAIiU,EAAS,eAAc,OAAiBhU,EAAWF,EAAcC,GAEjEiU,GACFD,EAAUH,EAAa,OAAS,WAAWrc,EAAE,OAAa,CACxDP,MAAO,CACLqH,MAAOuV,EACPC,cAAeA,IAEhBG,IAIP,OAAOzc,EAAEP,EAAM0B,IAAK,eAAUjB,EAAM,CAClCgJ,YAAa,UACXsT,O,kCCnDR,uHAASjf,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAQpM,IAAIW,EAAQ,eAAsB,eAAK,OAAuB,CAAC,WAAY,SAGvEid,EAAkC,aAAIxgB,OAAO,CACtD2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAEpB,OAAO9D,EAAE,OAAkB,eAAUE,EAAM,CACzCT,MAAOtB,EAAcA,EAAc,GAAIsB,GAAQ,GAAI,CACjDkd,QAAQ,MAER7Y,O,6VC5BR,SAASvG,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS+Q,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI5S,OAAO6S,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAY/Q,MAAgB,QAAN0Q,GAAqB,QAANA,EAAoBM,MAAMC,KAAKV,GAAc,cAANG,GAAqB,2CAA2CQ,KAAKR,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBgB,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYvT,OAAOqT,GAAO,OAAOH,MAAMC,KAAKE,GAE1H,SAASjB,EAAmBD,GAAO,GAAIe,MAAMM,QAAQrB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKsB,IAAkB,MAAPA,GAAeA,EAAMtB,EAAIxR,UAAQ8S,EAAMtB,EAAIxR,QAAQ,IAAK,IAAID,EAAI,EAAGgT,EAAO,IAAIR,MAAMO,GAAM/S,EAAI+S,EAAK/S,IAAOgT,EAAKhT,GAAKyR,EAAIzR,GAAM,OAAOgT,EAezK,IAAI,EAAQ,CACjBuL,eAAgB,eAAS,QACzBtP,YAAa,eAAS,QACtBD,aAAc,eAAS,GAAGhN,OAAOwP,EAAmB,QAAgC,CAAC,WAI5EgN,EAAgB,aAAI3gB,OAAO,CACpCuD,MAAO,EACP3C,QAAS,CAEPggB,YAAa,SAAqBpJ,EAAMjV,EAAKse,EAASC,GACpD,IAAIxd,EAAUjD,KAAKiD,QAEnB,GAAIud,EAAS,CACX,IAAIhe,EAAQ,OAAAzC,EAAA,MAAIoX,EAAMjV,EAAK,IAE3B,OAAI,eAAWse,GACNA,EAAQhe,EAAON,EAAKiV,GAClB,eAASqJ,IAAY,eAAWvd,EAAQud,IAC1Cvd,EAAQud,GAAShe,EAAON,EAAKiV,GAG/BqJ,EAGT,OAAOC,GAETC,YAAa,SAAqBvJ,EAAMjV,EAAKye,EAASnR,EAAMiR,GAC1D,IAAIxd,EAAUjD,KAAKiD,QAEnB,GAAI0d,EAAS,CACX,IAAIne,EAAQ,OAAAzC,EAAA,MAAIoX,EAAMjV,EAAK,IAE3B,OAAI,eAAWye,GACNA,EAAQne,EAAON,EAAKiV,EAAM3H,GACxB,eAASmR,IAAY,eAAW1d,EAAQ0d,IAC1C1d,EAAQ0d,GAASne,EAAON,EAAKiV,EAAM3H,GAGrCmR,EAGT,OAAOF,GAGTG,kBAAmB,SAA2BzJ,EAAMlE,GAClD,IAAI/Q,EAAM+Q,EAAM/Q,IACZiR,EAAYnT,KAAKke,kBAAkBhc,GACnCM,EAAQ,OAAAzC,EAAA,MAAIoX,EAAMjV,EAAK,MAM3B,OAJI,eAAWiR,KACb3Q,EAAQ2Q,EAAU3Q,EAAON,EAAKiV,IAGzB,eAAkB3U,GAAS,GAAKA,GAGzCqe,qBAAsB,SAA8BC,EAAgB3J,GAClE,IAAIrI,EAAQ9O,KAGZ,OAAO,WACD8gB,GACFhS,EAAMiS,KAAK5J,EAAM,QAAyBA,EAAK,WAKrD6J,WAAY,SAAoB/R,GAGzBjP,KAAKihB,mBAAmBhS,IAE3BjP,KAAKkhB,kBAAkB,OAAwBjS,IAGnDkS,aAAc,SAAsBlS,GAG7BjP,KAAKihB,mBAAmBhS,IAE3BjP,KAAKkhB,kBAAkB,OAA0BjS,IAIrDmS,mBAAoB,SAA4BnO,EAAOoO,EAAUlK,EAAMmK,GACrE,IAAInS,EAASnP,KAETiF,EAAYjF,KAAKiF,UACjB/C,EAAM+Q,EAAM/Q,IACZqf,EAAQtO,EAAMsO,MACdC,EAAcvO,EAAMuO,YACpB/d,EAAIzD,KAAKgR,eACT8P,EAAiB9gB,KAAKiR,kBAAkB,QACxCwQ,EAAYzhB,KAAK4gB,kBAAkBzJ,EAAMlE,GACzC7O,GAAgBa,IAAcjF,KAAKmF,cAAgBnF,KAAK+G,eAAiBkM,EAAM7O,aAI/Esd,EAAUtd,EAAeod,EAAc,OAAM,OAAMA,EAAc,KAAO,KACxEG,EAAcxK,EAAK,SAA2BA,EAAK,QAAwBjV,GAAOiV,EAAK,QAAwBjV,GAAO+Q,EAAM5O,SAAW,KACvIV,EAAO,CAKT0C,MAAO,CAAC4M,EAAM5M,MAAQ4M,EAAM5M,MAAQ,GAAIrG,KAAKugB,YAAYpJ,EAAMjV,EAAK+Q,EAAM2O,QAAS,KACnF1e,MAAO,GACPoD,MAAO1E,EAAc,CACnB,gBAAiBqT,OAAOoM,EAAW,IAClCG,EAAcxhB,KAAK0gB,YAAYvJ,EAAMjV,EAAK+Q,EAAM4O,OAAQ,MAAO,IAAM7hB,KAAKugB,YAAYpJ,EAAMjV,EAAK+Q,EAAM6O,OAAQ,KAClH5f,IAAK,OAAO4B,OAAOwd,EAAU,UAAUxd,OAAOud,EAAU,KAAKvd,OAAO5B,IAGlEkC,EAEFT,EAAKT,MAAQ,CACXiB,eAAgBc,EAAYsc,EAAQ,KACpCnd,cAAc,EACdC,QAASsd,IAKXhe,EAAK2C,MAAM,cAAgBrB,IAAc,eAAkBsc,GAAS,eAASA,GAAS,KACtF5d,EAAK2C,MAAMN,KAAOwb,EAAc,YAAc,OAC9C7d,EAAK2C,MAAML,MAAQub,EAAc,MAAQ,KAErCG,GACFhe,EAAK0C,MAAM1E,KAAK,GAAGmC,OAAO9D,KAAK8G,KAAO,KAAO,QAAS,KAAKhD,OAAO6d,KAItE,IAAIzV,EAAY,CACdiL,KAAMA,EACN2D,MAAOwG,EACPrO,MAAOA,EACP8O,YAAa,OAAAhiB,EAAA,MAAIoX,EAAMjV,EAAK,IAC5BM,MAAOif,EACPO,cAAehiB,KAAK6gB,qBAAqBC,EAAgB3J,GACzD8K,eAAgBjL,QAAQG,EAAK,UAI3BnX,KAAKka,yBACPhO,EAAUgW,YAAcliB,KAAK+a,cAAcuG,GAE3CpV,EAAU2O,UAAY,WACpB,OAAO1L,EAAO0L,UAAUyG,IAG1BpV,EAAU+O,YAAc,WACtB,OAAO9L,EAAO8L,YAAYqG,KAY9B,IAAIa,EAAWniB,KAAKoiB,yBAAyBlgB,GACzCmgB,EAAcF,EAAWniB,KAAKoG,cAAc+b,EAAUjW,GAAa,eAASuV,GAQhF,OANIzhB,KAAKiF,YAEPod,EAAc,CAAC5e,EAAE,MAAO,CAAC4e,MAIpB5e,EAAEie,EAAS/d,EAAM,CAAC0e,KAG3BC,eAAgB,SAAwBnL,EAAMmK,GAC5C,IAAIlK,EAASpX,KAET4Q,EAAS5Q,KAAK6Q,eACd0R,EAAUviB,KAAKuiB,QACfC,EAAaxiB,KAAKwiB,WAClB7T,EAAc3O,KAAK2O,YACnBT,EAAUlO,KAAKkO,QACf4C,EAAe9Q,KAAK8Q,aACpBC,EAAc/Q,KAAK+Q,YACnBtN,EAAIzD,KAAKgR,eACT8P,EAAiB9gB,KAAKiR,kBAAkB,QACxCwR,EAAiBtL,EAAK,SAA2B2J,EACjD4B,EAAqB1iB,KAAK2f,WAAW,SAA2B3f,KAAKia,sBAErE0I,EAAQ,GAIRC,EAAYH,EAAiBziB,KAAK6iB,OAAO,YAAY/e,OAAOwd,EAAU,MAAQ,KAE9EwB,EAAOlS,EAAO2B,KAAI,SAAUU,EAAOoO,GACrC,OAAOjK,EAAOgK,mBAAmBnO,EAAOoO,EAAUlK,EAAMmK,MAGtDyB,EAAe,KAEfpU,GAAeT,GAAWA,EAAU,IACtC6U,EAAe9N,QAAQtG,EAAc,GAAKT,EAAUoT,EAAW,IAOjE,IAAI0B,EAAkB,eAAS,OAAAjjB,EAAA,MAAIoX,EAAMqL,KAAgB,KACrDS,EAASD,GAAmB,eAAS1B,GAGrC4B,EAAQF,EAAkBhjB,KAAK6iB,OAAO,QAAQ/e,OAAOkf,IAAoB,KAEzEG,EAAoBnjB,KAAKmb,qBAAuBnb,KAAKmb,qBAAqBmG,GAAY,GACtF8B,EAAkBpjB,KAAKob,mBAAqBpb,KAAKob,mBAAmBkG,GAAY,GAEhF+B,EAAgB,eAAWvS,GAAgBA,EAAaqG,EAAM,OAASrG,EACvEwS,EAAc,eAAWvS,GAE7BA,EAAYoG,EAAM,OAASpG,EA2B3B,GAzBA4R,EAAMhhB,KAAK8B,EAAE,OAAK,CAChB4C,MAAO,CAACgd,EAAeF,EAAmBV,EAAiB,sBAAwB,IACnFvf,MAAO,CACLmB,QAAS8S,EAAK,SAA0B,MAE1C7Q,MAAO1E,EAAcA,EAAc,CACjCsF,GAAIgc,GACHI,GAAc,GAAI,CAEnBC,SAAUb,EAAqB,IAAM,KACrC,UAAWM,GAAmB,KAC9B,eAAgBJ,EAChB,YAAaA,EACb,gBAAiBG,GAChBK,GACH7c,GAAI,CAEFid,WAAYxjB,KAAKghB,WACjByC,WAAYzjB,KAAKmhB,cAEnBjf,IAAK,iBAAiB4B,OAAOmf,EAAQ,MACrCS,IAAK,YACLC,UAAU,GACTb,IAECL,EAAgB,CAClB,IAAImB,EAAe,CACjBzM,KAAMA,EACN2D,MAAOwG,EACP1Q,OAAQA,EACRoR,cAAehiB,KAAK6gB,qBAAqBC,EAAgB3J,IAIvDnX,KAAKka,yBACP0J,EAAa1B,YAAcliB,KAAK+a,cAAcuG,GAE9CsC,EAAa/I,UAAY,WACvB,OAAOzD,EAAOyD,UAAUyG,IAG1BsC,EAAa3I,YAAc,WACzB,OAAO7D,EAAO6D,YAAYqG,KAK9B,IAAIuC,EAAWpgB,EAAE,OAAK,CACpBP,MAAO,CACLe,QAAS2M,EAAO7O,QAElBsE,MAAOrG,KAAKqgB,gBACX,CAACrgB,KAAKoG,cAAc,OAAuBwd,KAG1CrB,GACFI,EAAMhhB,KACN8B,EAAE,KAAM,CACNkJ,YAAa,SACbrG,MAAO,CACL,cAAe,OACfN,KAAM,gBAER9D,IAAK,6BAA6B4B,OAAOmf,MAK7C,IAAIa,EAAuB,eAAW9jB,KAAK8Q,cAE3C9Q,KAAK8Q,aAAaqG,EAAM,QAAyBnX,KAAK8Q,aAClDiT,EAAqB,eAAW/jB,KAAK+Q,aAEzC/Q,KAAK+Q,YAAYoG,EAAM,QAAyBnX,KAAK+Q,YACrD4R,EAAMhhB,KAAK8B,EAAE,OAAK,CAChBkJ,YAAa,kBACbtG,MAAO,CAACyd,GACR5gB,MAAO,CACLmB,QAAS8S,EAAK,SAA0B,MAE1C7Q,MAAO1E,EAAcA,EAAc,GAAImiB,GAAqB,GAAI,CAE9D7c,GAAI0b,EACJW,SAAU,OAEZrhB,IAAK,sBAAsB4B,OAAOmf,IACjC,CAACY,UACK/C,IAET6B,EAAMhhB,KAAK8B,KAEP8e,GAEFI,EAAMhhB,KAAK8B,MAKf,OAAOkf,MCnWb,SAAS,EAAQ1hB,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAK,EAAQV,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAO,EAAgBL,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmB,EAAQZ,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAAS,EAAgBU,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAgB3M,IAAIyhB,EAAkB,SAAyBxhB,GAC7C,MAAO,QAAQsB,OAAOtB,GAAS,GAAI,MAI1B,EAAQ,eAAS,EAAc,EAAc,EAAc,GAAI,QAAc,GAAgB,GAAI,CAC1GyhB,WAAY,eAAS,WAIZC,EAAa,aAAIvkB,OAAO,CACjC4E,OAAQ,CAAC+b,GACTpd,MAAO,EACP+T,cAAe,WACbjX,KAAKoiB,yBAA2B,MAElC7hB,QAAS,CAKP4jB,YAAa,WACX,IAAIlkB,EAAQD,KAAKC,MACbmkB,EAAQnkB,EAAMmkB,MAAQnkB,EAAMmkB,MAAM1U,KAAOzP,EAAMmkB,MAAQ,KACvDC,GAAOpkB,EAAM,cAAgB,IAAIsS,KAAI,SAAU+R,GACjD,OAAOA,EAAG5U,KAAO4U,KAEnB,OAAOF,GAASA,EAAM7c,UAAY6c,EAAM7c,SAASxF,OAAS,GAAKsiB,GAAOA,EAAItiB,OAAS,EAAI,OAAAsR,EAAA,MAAU+Q,EAAM7c,UAAUhG,QAAO,SAAU+iB,GAChI,OAAO,OAAAjR,EAAA,MAAcgR,EAAKC,MAG5B,IAIFC,gBAAiB,SAAyBC,GAExC,IAAK,eAAUA,GACb,OAAQ,EAGV,IAAIF,EAAoB,OAAfE,EAAGC,QAAmBD,EAAK,eAAQ,KAAMA,GAAI,GACtD,OAAOF,EAAKtkB,KAAKmkB,cAAcO,QAAQJ,IAAO,GAGhDpD,kBAAmB,SAA2B1R,EAAMP,GAClD,GAAIO,GAAQxP,KAAK0f,YAAYlQ,IAASP,GAASA,EAAMpN,OAAQ,CAC3D,IAAIyf,EAAWthB,KAAKukB,gBAAgBtV,EAAMpN,QAE1C,GAAIyf,GAAY,EAAG,CAEjB,IAAInK,EAAOnX,KAAKkS,cAAcoP,GAC9BthB,KAAKuP,MAAMC,EAAM2H,EAAMmK,EAAUrS,MAIvCgS,mBAAoB,SAA4BhS,GAC9C,OAAOjP,KAAKwR,YAAcxR,KAAKwR,WAAWvC,IAG5C0V,kBAAmB,SAA2B1V,GAE5C,IAAIpN,EAASoN,EAAMpN,OACf+iB,EAAU3V,EAAM2V,QAEpB,IAAI5kB,KAAKihB,mBAAmBhS,IAA6B,OAAnBpN,EAAO4iB,SAAqB,eAAgB5iB,IAA+B,IAApBA,EAAOgjB,SAKpG,GAAI,OAAAxR,EAAA,MAAc,CAAC,OAAY,QAAauR,GAE1C,eAAU3V,GACVjP,KAAK8kB,kBAAkB7V,QAClB,GAAI,OAAAoE,EAAA,MAAc,CAAC,OAAS,OAAW,OAAW,QAAWuR,GAAU,CAE5E,IAAItD,EAAWthB,KAAKukB,gBAAgB1iB,GAEpC,GAAIyf,GAAY,EAAG,CACjB,eAAUrS,GACV,IAAIoV,EAAMrkB,KAAKmkB,cACXY,EAAQ9V,EAAMuM,SAEdoJ,IAAY,QAAaG,GAASH,IAAY,OAEhD,eAAaP,EAAI,IACRO,IAAY,QAAYG,GAASH,IAAY,OAEtD,eAAaP,EAAIA,EAAItiB,OAAS,IACrB6iB,IAAY,QAAWtD,EAAW,EAE3C,eAAa+C,EAAI/C,EAAW,IACnBsD,IAAY,QAAatD,EAAW+C,EAAItiB,OAAS,GAE1D,eAAasiB,EAAI/C,EAAW,OAKpCwD,kBAAmB,SAA2B7V,GAGxCjP,KAAKihB,mBAAmBhS,IAAU,eAAYA,IAAU,eAAoBjP,KAAK0P,MAIrF1P,KAAKkhB,kBAAkB,OAAwBjS,IAEjD+V,gCAAiC,SAAyC/V,GACnEjP,KAAKihB,mBAAmBhS,IAA0B,IAAhBA,EAAMgW,OAC3CjlB,KAAKkhB,kBAAkB,OAA+BjS,IAG1DiW,sBAAuB,SAA+BjW,GAC/CjP,KAAKihB,mBAAmBhS,IAC3BjP,KAAKkhB,kBAAkB,OAA4BjS,IAGvDkW,qBAAsB,SAA8BlW,GAC7CjP,KAAKihB,mBAAmBhS,IAAW,eAAYA,IAClDjP,KAAKkhB,kBAAkB,OAA2BjS,IAOtDmW,YAAa,WACX,IAAItW,EAAQ9O,KAERiS,EAAQjS,KAAKkS,cACbT,EAAazR,KAAKyR,WAClBuN,EAAehf,KAAKgf,aACpBhN,EAAchS,KAAKgS,YACnBrB,EAAkB3Q,KAAK2Q,gBACvBlN,EAAIzD,KAAKgR,eACT0R,EAAqB1iB,KAAK0f,YAAY,SAA2B1f,KAAKia,sBAEtE0I,EAAQ,GAER0C,EAAQ5T,EAAaA,IAAe,KAExC,GAAI4T,EAEF1C,EAAMhhB,KAAK0jB,OACN,CAML,IAAIvlB,EAAQ,GACRwlB,EAAkBtB,IACtBsB,EAAkBtlB,KAAKiR,kBAAkBqU,GAAmBA,EAAkB,KAC9EtlB,KAAK6Q,eAAe5O,SAAQ,SAAUgR,GACpC,IAAI/Q,EAAM+Q,EAAM/Q,IACZigB,EAAW6B,EAAgB9hB,GAC3BqjB,EAAoBvB,EAAgB9hB,EAAIsjB,eAC5C1lB,EAAMoC,GAAO4M,EAAMmC,kBAAkBkR,GAAYA,EAAWrT,EAAMmC,kBAAkBsU,GAEpFA,EAAoBD,KAItBtlB,KAAKoiB,yBAA2BtiB,EAGhC6iB,EAAMhhB,KAAKqd,EAAeA,IAAiBvb,KAE3CwO,EAAMhQ,SAAQ,SAAUkV,EAAMmK,GAE5BqB,EAAMhhB,KAAKmN,EAAMwT,eAAenL,EAAMmK,OAGxCqB,EAAMhhB,KAAKqQ,EAAcA,IAAgBvO,KAGzCkf,EAAMhhB,KAAKgP,EAAkBA,IAAoBlN,KAInD,IAAIgiB,EAAW,CACbC,SAAU1lB,KAAKglB,gCAKfW,YAAa3lB,KAAKklB,sBAElBU,SAAU5lB,KAAKmlB,sBAIbzC,IACF+C,EAASI,MAAQ7lB,KAAK8kB,kBACtBW,EAASK,QAAU9lB,KAAK2kB,mBAI1B,IAAIoB,EAAStiB,EAAE,OAAQ,CACrB4C,MAAOrG,KAAKikB,YAAc,KAC1B/gB,MAAO,eAAW,OAAalD,KAAKgmB,QAGpCzf,GAAIkf,EACJ/B,IAAK,SACJf,GAEH,OAAOoD,O,oCCpOb,oIAMW7iB,EAAQ,CACjB+iB,QAAS,eAAS,QAClBC,YAAa,eAAS,SAMbC,EAAe,aAAIxmB,OAAO,CACnCuD,MAAOA,EACPtD,SAAU,CACRwmB,UAAW,WAGT,OAAOpmB,KAAKiF,UAAYjF,KAAK6iB,OAAO,aAAe,OAGvDtiB,QAAS,CACP8lB,cAAe,WACb,IAAIJ,EAAUjmB,KAAKimB,QACfC,EAAclmB,KAAKkmB,YACnBziB,EAAIzD,KAAKgR,eACTsV,EAAW7iB,IACX8iB,EAAiBvmB,KAAKiR,kBAAkB,SAY5C,OAVIsV,GAAkBN,GAAWC,KAC/BI,EAAW7iB,EAAE,UAAW,CACtB6C,MAAO,CACLY,GAAIlH,KAAKomB,WAEX5Z,SAAU+Z,EAAiB,GAAK,eAAWL,EAAaD,GACxD/jB,IAAK,WACJlC,KAAKoG,cAAc,WAGjBkgB,O,oCCzCb,qNAAStlB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAc3M,IAAIikB,EAAkB,eAAe,QAAS,CAC5ChX,KAAM,OACNiR,aAAc,GACdxR,MAAO,UAELwX,EAAaD,EAAgBE,MAC7BC,EAAaH,EAAgBtjB,MAC7B0jB,EAAkBJ,EAAgBK,KAClCC,EAAmBN,EAAgBvX,MAI5B/L,EAAQ,eAAsB,eAAStB,EAAcA,EAAc,GAAI+kB,GAAa,GAAI,CACjGI,YAAa,eAAS,QAA0B,GAChDC,aAAc,eAAS,QAEvBC,SAAU,eAAS,OAAyB,GAC5C9T,UAAW,eAAS,QAEpB+T,KAAM,eAAS,QAAmB,GAClCC,cAAe,eAAS,QAAmB,GAC3CC,OAAQ,eAAS,QAAmB,GACpCC,YAAa,eAAS,QACtBC,UAAW,eAAS,QAAmB,GACvCC,SAAU,eAAS,QAAmB,GACtCC,KAAM,eAAS,QAAmB,MAC/B,oBAGMC,EAAgB,aAAI9nB,OAAO,CACpC4E,OAAQ,CAACkiB,GACTvjB,MAAOA,EACPS,KAAM,WACJ,IAAInB,EAAQxC,KAAK4mB,GACjB,MAAO,CACLc,WAAY,eAASllB,GACrBmlB,YAAa3nB,KAAK4nB,YAAYplB,KAGlC5C,SAAU,CACRioB,cAAe,WACb,IAAIP,EAAYtnB,KAAKsnB,UACjB9X,EAAOxP,KAAKwP,KACZsY,EAAmB,UAATtY,EACVuY,EAAmB,UAATvY,EACd,MAAO,CAAC,CAEN,eAAgBsY,EAEhB,yBAA0BR,IAAcQ,IAAYC,EAGpD,eAAgBA,IAAYT,IAAcQ,GACzC9nB,KAAKgoB,cAAehoB,KAAKioB,aAE9BC,iBAAkB,WAEhB,OAAO,eAAQ,eAAUloB,KAAKinB,SAAU,GAAI,IAE9CkB,aAAc,WACZ,OAAO,eAAgBnoB,KAAKmT,aAGhC3E,MAAOrM,EAAgB,GAAIykB,GAAiB,SAAUnY,GACpD,IAAI2Z,EAAiB,eAAS3Z,GAC1B4Z,EAAgBroB,KAAK4nB,YAAYnZ,GAEjC2Z,IAAmBpoB,KAAK0nB,YAAcW,IAAkBroB,KAAK2nB,cAE/D3nB,KAAKsoB,gBAELtoB,KAAK0nB,WAAaU,EAClBpoB,KAAK2nB,YAAcU,MAGvBxZ,QAAS,WAEP7O,KAAKuoB,qBAAuB,MAE9B5P,QAAS,WAEP3Y,KAAK+Y,IAAI,QAAgC/Y,KAAKsoB,gBAEhDrR,cAAe,WACbjX,KAAKsoB,iBAEP/nB,QAAS,CACP+nB,cAAe,WACbpR,aAAalX,KAAKuoB,sBAClBvoB,KAAKuoB,qBAAuB,MAE9BC,YAAa,SAAqBhmB,EAAOyM,GACvC,IAAIwZ,EAAQ9nB,UAAUoB,OAAS,QAAsBsH,IAAjB1I,UAAU,IAAmBA,UAAU,GAO3E,OANA6B,EAAQ,eAASA,IAEbxC,KAAKmoB,cAAkBnoB,KAAKmnB,gBAAiBsB,IAC/CjmB,EAAQxC,KAAKmT,UAAU3Q,EAAOyM,IAGzBzM,GAETolB,YAAa,SAAqBplB,GAYhC,OAXAA,EAAQ,eAASA,GAEbxC,KAAKwnB,OACPhlB,EAAQA,EAAMglB,QAIZxnB,KAAKonB,SACP5kB,EAAQ,eAAQA,EAAOA,IAGlBA,GAETkmB,YAAa,SAAqBlmB,GAChC,IAAIsM,EAAQ9O,KAERyoB,EAAQ9nB,UAAUoB,OAAS,QAAsBsH,IAAjB1I,UAAU,IAAmBA,UAAU,GACvEumB,EAAOlnB,KAAKknB,KAEhB,IAAIA,GAASuB,EAAb,CAMAzoB,KAAKsoB,gBAGL,IAAIK,EAAW,WAGb,GAFAnmB,EAAQsM,EAAM8Y,YAAYplB,GAEtBA,IAAUsM,EAAM6Y,YAClB7Y,EAAM6Y,YAAcnlB,EAEpBsM,EAAMS,MAAMuX,EAAkBtkB,QACzB,GAAIsM,EAAMqZ,aAAc,CAS7B,IAAIS,EAAS9Z,EAAM7O,MAAMC,MAGrB0oB,GAAUpmB,IAAUomB,EAAOpmB,QAC7BomB,EAAOpmB,MAAQA,KAOjBykB,EAAWjnB,KAAKkoB,iBAEhBjB,EAAW,IAAMC,IAASuB,EAC5BzoB,KAAKuoB,qBAAuBxR,WAAW4R,EAAU1B,GAGjD0B,MAGJE,QAAS,SAAiB5Z,GAMxB,IAAIA,EAAMpN,OAAOinB,UAAjB,CAIA,IAAItmB,EAAQyM,EAAMpN,OAAOW,MACrBumB,EAAiB/oB,KAAKwoB,YAAYhmB,EAAOyM,IAKtB,IAAnB8Z,GAA4B9Z,EAAMQ,iBACpC,eAAUR,EAAO,CACf+Z,aAAa,KAKjBhpB,KAAK0nB,WAAaqB,EAClB/oB,KAAK0oB,YAAYK,GACjB/oB,KAAKuP,MAAM,OAAkBwZ,MAE/BE,SAAU,SAAkBha,GAC1B,IAAIzM,EAAQyM,EAAMpN,OAAOW,MACrBumB,EAAiB/oB,KAAKwoB,YAAYhmB,EAAOyM,IAKtB,IAAnB8Z,GAA4B9Z,EAAMQ,iBACpC,eAAUR,EAAO,CACf+Z,aAAa,KAKjBhpB,KAAK0nB,WAAaqB,EAClB/oB,KAAK0oB,YAAYK,GAAgB,GACjC/oB,KAAKuP,MAAM,OAAmBwZ,KAEhCG,OAAQ,SAAgBja,GAGtB,IAAIzM,EAAQyM,EAAMpN,OAAOW,MACrBumB,EAAiB/oB,KAAKwoB,YAAYhmB,EAAOyM,GAAO,IAE7B,IAAnB8Z,IAGF/oB,KAAK0nB,WAAa,eAAS1nB,KAAK4nB,YAAYmB,IAG5C/oB,KAAK0oB,YAAYK,GAAgB,IAInC/oB,KAAKuP,MAAM,OAAiBN,IAE9Bka,MAAO,WAEAnpB,KAAKopB,UACR,eAAappB,KAAK0P,MAGtB2Z,KAAM,WAECrpB,KAAKopB,UACR,eAAYppB,KAAK0P,U,oCChQzB,gJAMWxM,EAAQ,eAAsB,CACvCkd,OAAQ,eAAS,QAAmB,GACpClZ,GAAI,eAAS,QACboiB,OAAQ,eAAS,QAAmB,GACpC1kB,IAAK,eAAS,OAAkB,QAC/B,SAGQ2kB,EAAgC,aAAI5pB,OAAO,CACpD2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAChB6Y,EAASld,EAAMkd,OACnB,OAAO3c,EAAEP,EAAM0B,IAAK,eAAUjB,EAAM,CAClC0C,MAAO,CACL,qBAAsB+Z,EACtB,uBAAwBA,GAE1B9Z,MAAO,CACLY,GAAIhE,EAAMgE,MAEVhE,EAAMomB,OAAS,CAAC7lB,EAAE,OAAiB8D,IAAaA,O,kCC/BxD,+OAASvG,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAoB3M,IAAIinB,EAAQ,CAAC,OAAQ,WAAY,QAAS,SAAU,MAAO,MAAO,SAAU,QAAS,QAAS,OAAQ,OAAQ,WAAY,iBAAkB,QAAS,QAE1ItmB,EAAQ,eAAsB,eAAStB,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAU,QAAmB,QAAgB,QAAiB,QAAgB,GAAI,CAC1N6nB,KAAM,eAAS,QACfC,IAAK,eAAS,QACdC,IAAK,eAAS,QAEdC,QAAS,eAAS,QAAmB,GACrCC,KAAM,eAAS,QACfra,KAAM,eAAS,OAAkB,QAAQ,SAAUA,GACjD,OAAO,eAAcga,EAAOha,SAE3B,QAGMsa,EAA0B,aAAInqB,OAAO,CAC9C2D,KAAM,OAENiB,OAAQ,CAAC,OAAgB,OAAS,OAAkB,OAAe,OAAgB,OAAe,OAAoB,QACtHrB,MAAOA,EACPtD,SAAU,CACRmqB,UAAW,WAET,IAAIva,EAAOxP,KAAKwP,KAChB,OAAO,eAAcga,EAAOha,GAAQA,EAAO,QAE7Cwa,cAAe,WACb,IAAIxa,EAAOxP,KAAK+pB,UACZzmB,EAAOtD,KAAKsD,KACZ2mB,EAAOjqB,KAAKiqB,KACZb,EAAWppB,KAAKopB,SAChB/B,EAAcrnB,KAAKqnB,YACnBzc,EAAW5K,KAAK4K,SAChB+e,EAAM3pB,KAAK2pB,IACXD,EAAM1pB,KAAK0pB,IACXG,EAAO7pB,KAAK6pB,KAChB,MAAO,CACL3iB,GAAIlH,KAAK6iB,SACTvf,KAAMA,EACN2mB,KAAMA,EACNza,KAAMA,EACN4Z,SAAUA,EACV/B,YAAaA,EACbzc,SAAUA,EACVoc,aAAchnB,KAAKgnB,cAAgB,KACnCO,SAAUvnB,KAAKunB,UAAYvnB,KAAKsnB,UAChCqC,IAAKA,EACLD,IAAKA,EACLG,KAAMA,EACNJ,KAAe,aAATja,EAAsBxP,KAAKypB,KAAO,KACxC,gBAAiB7e,EAAW,OAAS,KACrC,eAAgB5K,KAAKkqB,sBAGzBC,kBAAmB,WACjB,OAAOvoB,EAAcA,EAAc,GAAI5B,KAAKwG,aAAc,GAAI,CAC5DtG,MAAOF,KAAK6oB,QACZuB,OAAQpqB,KAAKipB,SACbI,KAAMrpB,KAAKkpB,WAIjB1a,MAAO,CACLob,QAAS,SAAiBnb,GACxBzO,KAAKqqB,gBAAgB5b,KAGzBkK,QAAS,WACP3Y,KAAKqqB,gBAAgBrqB,KAAK4pB,UAI5BU,YAAa,WAIXtqB,KAAKqqB,iBAAgB,IAIvBE,UAAW,WAITvqB,KAAKqqB,gBAAgBrqB,KAAK4pB,UAE5B3S,cAAe,WAEbjX,KAAKqqB,iBAAgB,IAEvB9pB,QAAS,CACP8pB,gBAAiB,SAAyB9jB,GACxC,IAAIrG,EAAQF,KAAK0P,IAEjB,eAAWnJ,EAAIrG,EAAO,QAASF,KAAKwqB,cACpC,eAAWjkB,EAAIrG,EAAO,OAAQF,KAAKyqB,aAE9BlkB,GACH,eAAS0J,SAAU,QAASjQ,KAAK0qB,YAGrCF,aAAc,WACZ,eAAQva,SAAU,QAASjQ,KAAK0qB,YAElCD,YAAa,WACX,eAASxa,SAAU,QAASjQ,KAAK0qB,YAEnCA,UAAW,SAAmBzb,GAC5B,eAAUA,EAAO,CACf+Z,aAAa,IAEf,eAAYhpB,KAAK0P,OAGrBlM,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,QAAS,CAChB4C,MAAOrG,KAAK6nB,cACZvhB,MAAOtG,KAAKgqB,cACZxd,SAAU,CACRhK,MAAOxC,KAAK0nB,YAEdnhB,GAAIvG,KAAKmqB,kBACTzG,IAAK,c,oCClJX,qHAASvhB,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAMpM,IAAIW,EAAQ,CACjBE,QAAS,eAAS,QAA0B,IAInCunB,EAAe,aAAIhrB,OAAO,CACnCuD,MAAOA,EACPtD,SAAU,CACRqF,UAAW,WACT,IAAI7B,EAAUpD,KAAKoD,QAEnB,MAAmB,KAAZA,GAAwBA,GAEjCwnB,gBAAiB,WACf,OAA0B,IAAnB5qB,KAAKiF,WAEd4lB,oBAAqB,WACnB,IAAID,EAAkB5qB,KAAK4qB,gBAC3B,OAAOzoB,EAAgB,CACrB,kBAAmByoB,GAClB,mBAAmB9mB,OAAO9D,KAAKoD,UAAWwnB,GAAmB5qB,KAAKiF,gB,kCC1B3E,yMAAS9C,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAa3M,IAAIuoB,EAAiB,0LAEjBC,EAAkB,SAAyB3gB,EAAOC,EAAQ2gB,GAC5D,IAAI9gB,EAAM+gB,mBAAmBH,EAAejnB,QAAQ,OAAQ,eAASuG,IAAQvG,QAAQ,OAAQ,eAASwG,IAASxG,QAAQ,OAAQmnB,IAC/H,MAAO,oCAAoClnB,OAAOoG,IAIzChH,EAAQ,eAAsB,CACvCiH,IAAK,eAAS,QACd+gB,MAAO,eAAS,QAAmB,GACnCC,WAAY,eAAS,OAAkB,eACvCC,MAAO,eAAS,QAAmB,GACnCC,OAAQ,eAAS,QAAmB,GACpCC,MAAO,eAAS,QAAmB,GAEnCC,UAAW,eAAS,QAAmB,GACvClhB,OAAQ,eAAS,QACjBG,KAAM,eAAS,QAAmB,GAClCD,MAAO,eAAS,QAAmB,GAUnCihB,QAAS,eAAS,QAA0B,GAC5CC,MAAO,eAAS,QAChBvhB,IAAK,eAAS,QACdwhB,OAAQ,eAAS,QACjBC,UAAW,eAAS,QAAmB,GACvCvhB,MAAO,eAAS,SACf,SAGQwhB,EAAoB,aAAIjsB,OAAO,CACxC2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIuH,EAEA/H,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZwG,EAAMjH,EAAMiH,IACZD,EAAMhH,EAAMgH,IACZkhB,EAAQloB,EAAMkoB,MACdG,EAAYroB,EAAMqoB,UAClBC,EAAUtoB,EAAMsoB,QAChBphB,EAAQ,eAAUlH,EAAMkH,QAAU,KAClCC,EAAS,eAAUnH,EAAMmH,SAAW,KACpCS,EAAQ,KACR4gB,EAAS,eAAOxoB,EAAMwoB,QAAQnqB,OAAO,QAAUmR,KAAK,KACpD+Y,EAAQ,eAAOvoB,EAAMuoB,OAAOlqB,OAAO,QAAUmR,KAAK,KA8BtD,OA5BIxP,EAAMgoB,SACH7gB,GAAUD,EACbC,EAASD,GACCA,GAASC,IACnBD,EAAQC,GAGLD,GAAUC,IACbD,EAAQ,EACRC,EAAS,GAIXH,EAAM6gB,EAAgB3gB,EAAOC,EAAQnH,EAAMioB,YAAc,eAEzDO,EAAS,KACTD,EAAQ,MAGNvoB,EAAMsH,KACRM,EAAQ,aACC5H,EAAMqH,MACfO,EAAQ,cACC5H,EAAMmoB,SACfvgB,EAAQ,UACRsgB,GAAQ,GAGH3nB,EAAE,MAAO,eAAUE,EAAM,CAC9B2C,MAAO,CACL4D,IAAKA,EACLC,IAAKA,EACLC,MAAOA,EAAQ,eAASA,GAAS,KACjCC,OAAQA,EAAS,eAASA,GAAU,KACpCqhB,OAAQA,GAAU,KAClBD,MAAOA,GAAS,MAElBplB,OAAQ4E,EAAS,CACf,gBAAiB/H,EAAMyoB,UACvB,YAAazoB,EAAMooB,OAASC,EAC5B,QAASA,EACTC,QAAqB,KAAZA,IAA8B,IAAZA,GAC1BrpB,EAAgB8I,EAAQ,WAAWnH,OAAO0nB,GAAU,eAASA,IAAwB,KAAZA,GAAiBrpB,EAAgB8I,EAAQH,EAAOA,GAAQ3I,EAAgB8I,EAAQ,UAAWmgB,GAAQngB,U,kCCjHrL,gJAMW/H,EAAQ,eAAsB,CACvC2oB,MAAO,eAAS,QAChBC,SAAU,eAAS,OAAkB,OACpC,QAGQC,EAA0B,aAAIpsB,OAAO,CAC9C2D,KAAM,OACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SACpB,OAAO9D,EAAEP,EAAM4oB,SAAU,eAAUnoB,EAAM,CACvCgJ,YAAa,eACXpF,GAAY,eAASrE,EAAM2oB,Y,wQChB/B,EAAe,SAAsB3pB,EAAKM,GAC5C,IAAIyQ,EAAQ,KA0BZ,OAxBI,eAASzQ,GAEXyQ,EAAQ,CACN/Q,IAAKA,EACLqf,MAAO/e,GAEA,eAAWA,GAEpByQ,EAAQ,CACN/Q,IAAKA,EACLiR,UAAW3Q,GAEJ,eAASA,IAClByQ,EAAQ,eAAMzQ,GACdyQ,EAAM/Q,IAAM+Q,EAAM/Q,KAAOA,IACN,IAAVM,IAITyQ,EAAQ,CACN/Q,IAAKA,IAIF+Q,GAKE,EAAkB,SAAyB+Y,EAAY/Z,GAChE,IAAIrB,EAAS,GA0Bb,GAxBI,eAAQob,IAEVA,EAAWzqB,OAAOkU,EAAA,MAAUxT,SAAQ,SAAUyb,GAC5C,GAAI,eAASA,GACX9M,EAAOjP,KAAK,CACVO,IAAKwb,EACL6D,MAAO,eAAU7D,UAEd,GAAI,eAASA,IAAMA,EAAExb,KAAO,eAASwb,EAAExb,KAE5C0O,EAAOjP,KAAK,eAAM+b,SACb,GAAI,eAASA,IAAyB,IAAnB,eAAKA,GAAG3b,OAAc,CAE9C,IAAIG,EAAM,eAAKwb,GAAG,GACdzK,EAAQ,EAAa/Q,EAAKwb,EAAExb,IAE5B+Q,GACFrC,EAAOjP,KAAKsR,OAOE,IAAlBrC,EAAO7O,QAAgB,eAAQkQ,IAAUA,EAAMlQ,OAAS,EAAG,CAC7D,IAAIkqB,EAASha,EAAM,GACnB,eAAKga,GAAQhqB,SAAQ,SAAUuQ,GACxB,OAAmBA,IACtB5B,EAAOjP,KAAK,CACVO,IAAKsQ,EACL+O,MAAO,eAAU/O,QAOzB,IAAI0Z,EAAO,GACX,OAAOtb,EAAOrP,QAAO,SAAUmc,GAC7B,OAAKwO,EAAKxO,EAAExb,OACVgqB,EAAKxO,EAAExb,MAAO,EACdwb,EAAE6D,MAAQ,eAAS7D,EAAE6D,OAAS7D,EAAE6D,MAAQ,eAAU7D,EAAExb,MAC7C,OCnFb,SAASlB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAc3M,IAAIikB,EAAkB,eAAe,QAAS,CAC5ChX,KAAM,OACNiR,aAAc,KAEZgG,EAAaD,EAAgBE,MAC7BC,EAAaH,EAAgBtjB,MAC7B0jB,EAAkBJ,EAAgBK,KAClCC,EAAmBN,EAAgBvX,MAI5B,EAAQ,eAASrN,EAAcA,EAAc,GAAI+kB,GAAa,GAAIxkB,EAAgB,CAC3FyO,OAAQ,eAAS,OAAiB,MAElCqB,MAAO,eAAS,OAAiB,IAGjCuQ,WAAY,eAAS,SACpBoE,EAAiB,eAAS,OAAiB,OAGnCuF,EAAa,aAAIxsB,OAAO,CACjC4E,OAAQ,CAACkiB,GACTvjB,MAAO,EACPS,KAAM,WACJ,IAAIsO,EAAQjS,KAAKiS,MACjB,MAAO,CAGLkE,WAAY,eAAQlE,GAASA,EAAMmC,QAAU,KAGjDxU,SAAU,CACRiR,eAAgB,WAGd,OAAO,EAAgB7Q,KAAK4Q,OAAQ5Q,KAAKmW,aAE3CsB,kBAAmB,WAKjB,IAAIxU,EAAUjD,KAAKiD,QACnB,OAAOjD,KAAK6Q,eAAemC,QAAO,SAAUzQ,EAAKmb,GAI/C,GAFAnb,EAAImb,EAAExb,KAAO,eAAMwb,GAEfA,EAAEvK,UAAW,CAEf,IAAIA,EAAYuK,EAAEvK,UAEd,eAASA,IAAc,eAAWlQ,EAAQkQ,IAC5CA,EAAYlQ,EAAQkQ,GACV,eAAWA,KAErBA,OAAY9J,GAId9G,EAAImb,EAAExb,KAAKiR,UAAYA,EAGzB,OAAO5Q,IACN,KAEL2P,cAAe,WAEb,OAAQlS,KAAK6X,gBAAkB7X,KAAK8X,aAAe9X,KAAKkW,eAAiBlW,KAAKmW,YAE9E,IAAI/B,SAEN+E,QAAS,WAEP,MAAO,CACL5X,OAAQvB,KAAKsV,YACbgD,OAAQtY,KAAKwY,YACbD,SAAUvY,KAAKyY,cACfvK,QAAS,OAAA6J,EAAA,MAAQ,eAAU/X,KAAKkO,QAAS,GAAI,GAC7CS,YAAa,OAAAoJ,EAAA,MAAQ,eAAU/X,KAAK2O,YAAa,GAAI,GACrDuJ,OAAQlY,KAAKkY,UAInB1J,MAAO,CACLyD,MAAO,SAAexD,GAEpBzO,KAAKmW,WAAa,eAAQ1H,GAAYA,EAAS2F,QAAU,IAG3DlC,cAAe,SAAuBzD,EAAUC,GACzC,eAAWD,EAAUC,IACxB1O,KAAKuP,MAAMuX,EAAkBrY,IAIjC0K,QAAS,SAAiB1K,EAAUC,GAE7B,eAAWD,EAAUC,IACxB1O,KAAKuP,MAAM,OAA4Bd,KAI7CkK,QAAS,WAEP3Y,KAAKuP,MAAMuX,EAAkB9mB,KAAKkS,gBAEpC3R,QAAS,CAEP2d,kBAAmB,SAA2Bhc,GAC5C,IAAI+Q,EAAQjT,KAAKyX,kBAAkBvV,GAGnC,OAAO+Q,EAAQA,EAAME,eAAY9J,O,oCCnIvC,mLAASlH,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAapM,IAAIW,EAAQ,eAAsB,CACvCkd,OAAQ,eAAS,QACjBgM,WAAY,eAAS,QACrBllB,GAAI,eAAS,QACbmlB,QAAS,eAAS,QAClBC,YAAa,eAAS,QACtBC,KAAM,eAAS,QACf3nB,IAAK,eAAS,OAAkB,QAC/B,SAGQ4nB,EAA2B,aAAI7sB,OAAO,CAC/C2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZuH,EAAQxH,EAAKwH,MACbC,EAAczH,EAAKyH,YACnBkhB,EAAUnpB,EAAMmpB,QAChBC,EAAcppB,EAAMopB,YACpBlM,EAASld,EAAMkd,OACfgM,EAAalpB,EAAMkpB,WACnBG,EAAOrpB,EAAMqpB,KACbvgB,EAAeb,GAAe,GAC9Bc,EAASf,IACTgB,EAAY,GACZugB,EAAWhpB,IACXipB,EAAiB,eAAkB,OAAmB1gB,EAAcC,IAEpEygB,GAAkBL,GAAWC,KAC/BG,EAAWhpB,EAAE,OAAoB,CAACipB,EAAiB,eAAc,OAAmBxgB,EAAWF,EAAcC,GAAUxI,EAAE,OAAiB,CACxI+I,SAAU,eAAW8f,EAAaD,QAItC,IAAIM,EAAUlpB,IACVmpB,EAAgB,eAAkB,OAAkB5gB,EAAcC,GAQtE,OANI2gB,GAAiBxM,GAAUgM,KAC7BO,EAAUlpB,EAAE,OAAmB,CAACmpB,EAAgB,eAAc,OAAkB1gB,EAAWF,EAAcC,GAAUxI,EAAE,OAAiB,CACpI+I,SAAU,eAAW4f,EAAYhM,QAI9B3c,EAAEP,EAAM0B,IAAK,eAAUjB,EAAM,CAClCgJ,YAAa,cACbtG,MAAOlE,EAAgB,GAAI,eAAe2B,OAAOyoB,GAAOA,GACxDjmB,MAAO,CACLY,GAAIhE,EAAMgE,IAAM,KAChBlB,KAAM,WAEN,CAACymB,EAAU,eAAc,OAAmBvgB,EAAWF,EAAcC,GAAS0gB,Q,2CClE/E,IAAIE,EAAQ,CACf,WACA,UACA,cACA,YACA,YACA,gBACA,SACA,gBACA,UACA,gBACA,eACA,yBAEO,EAAW,CAClBC,SAAU,GACVC,YAAY,EACZC,qBAAqB,EACrBC,UAAW,SACXC,UAAU,EACVC,cAAe,qBACfC,QAA2B,kBAAXlgB,SACoC,IAAhDA,OAAOmgB,UAAUC,UAAU5I,QAAQ,QACvC6I,eAAgB,SAChBC,qBAAqB,EACrBC,YAAY,EACZC,eAAe,EACfC,YAAa,KACbC,WAAY,QACZC,YAAa,GACbC,cAAe,EACfC,eAAgB,EAChBC,QAAS,GACTC,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,aAAc,SAAUhlB,GACpB,MAA0B,qBAAZilB,SAA2BA,QAAQxY,KAAKzM,IAE1DklB,QAAS,SAAUC,GACf,IAAIC,EAAO,IAAIC,KAAKF,EAAUG,WAC9BF,EAAKG,SAAS,EAAG,EAAG,EAAG,GACvBH,EAAKI,QAAQJ,EAAKK,UAAY,GAAML,EAAKM,SAAW,GAAK,GACzD,IAAIC,EAAQ,IAAIN,KAAKD,EAAKQ,cAAe,EAAG,GAC5C,OAAQ,EACJC,KAAKC,QAAQV,EAAKE,UAAYK,EAAML,WAAa,MAC7C,GACEK,EAAMD,SAAW,GAAK,GACxB,IAEZK,cAAe,EACfC,qBAAsB,GACtBjoB,QAAQ,EACR6U,OAAQ,UACRqT,gBAAiB,EACjBC,KAAM,SACNC,kBAAmB,WACnBC,UAAW,yOACXC,YAAY,EACZC,IAAK,IAAIjB,KACTxF,SAAU,GACV0G,QAAS,GACTC,YAAa,GACbC,UAAW,GACXC,UAAW,GACXC,cAAe,GACfC,OAAQ,GACRC,cAAe,GACfC,QAAS,GACTC,cAAe,GACfC,aAAc,GACdC,sBAAuB,GACvBC,QAAS,GACTC,SAAU,OACVC,qBAAiBnnB,EACjBonB,UAAW,uOACXC,uBAAuB,EACvBC,WAAY,EACZC,QAAQ,EACRjjB,WAAW,EACXkjB,aAAa,EACbC,MAAM,GCjFCC,EAAU,CACjBzjB,SAAU,CACNC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDC,SAAU,CACN,SACA,SACA,UACA,YACA,WACA,SACA,aAGRC,OAAQ,CACJF,UAAW,CACP,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,SAAU,CACN,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGRwjB,YAAa,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC1DC,eAAgB,EAChBC,QAAS,SAAUC,GACf,IAAIC,EAAID,EAAM,IACd,GAAIC,EAAI,GAAKA,EAAI,GACb,MAAO,KACX,OAAQA,EAAI,IACR,KAAK,EACD,MAAO,KACX,KAAK,EACD,MAAO,KACX,KAAK,EACD,MAAO,KACX,QACI,MAAO,OAGnB1jB,eAAgB,OAChB2jB,iBAAkB,KAClBC,YAAa,sBACbC,YAAa,kBACbC,KAAM,CAAC,KAAM,MACbC,cAAe,OACfC,eAAgB,QAChBC,cAAe,OACfC,gBAAiB,SACjBjkB,WAAW,GAEA,ICvEJkkB,EAAM,SAAUzK,EAAQrlB,GAE/B,YADe,IAAXA,IAAqBA,EAAS,IAC1B,MAAQqlB,GAAQhT,OAAgB,EAAVrS,IAEvB,EAAM,SAAU+vB,GAAQ,OAAiB,IAATA,EAAgB,EAAI,GACxD,SAAS7K,EAAShe,EAAI8oB,GACzB,IAAIC,EACJ,OAAO,WACH,IAAIljB,EAAQ9O,KACRmJ,EAAOxI,UACXuW,aAAa8a,GACbA,EAAIjb,YAAW,WAAc,OAAO9N,EAAGvI,MAAMoO,EAAO3F,KAAU4oB,IAG/D,IAAIE,EAAW,SAAU1vB,GAC5B,OAAOA,aAAe+R,MAAQ/R,EAAM,CAACA,ICflC,SAAS2vB,EAAYC,EAAMC,EAAWN,GACzC,IAAa,IAATA,EACA,OAAOK,EAAKE,UAAUC,IAAIF,GAC9BD,EAAKE,UAAUE,OAAOH,GAEnB,SAASI,EAAc5tB,EAAKwtB,EAAWK,GAC1C,IAAIrZ,EAAIlM,OAAO+C,SAASuiB,cAAc5tB,GAMtC,OALAwtB,EAAYA,GAAa,GACzBK,EAAUA,GAAW,GACrBrZ,EAAEgZ,UAAYA,OACE/oB,IAAZopB,IACArZ,EAAEsZ,YAAcD,GACbrZ,EAEJ,SAASuZ,EAAUC,GACtB,MAAOA,EAAKC,WACRD,EAAKE,YAAYF,EAAKC,YAEvB,SAASE,EAAWH,EAAMI,GAC7B,OAAIA,EAAUJ,GACHA,EACFA,EAAKK,WACHF,EAAWH,EAAKK,WAAYD,QADlC,EAIF,SAASE,EAAkBC,EAAgBC,GAC9C,IAAIC,EAAUb,EAAc,MAAO,mBAAoBc,EAAWd,EAAc,QAAS,YAAcW,GAAiBI,EAAUf,EAAc,OAAQ,WAAYgB,EAAYhB,EAAc,OAAQ,aAQtM,IAPiD,IAA7CnF,UAAUC,UAAU5I,QAAQ,YAC5B4O,EAAS9jB,KAAO,UAGhB8jB,EAAS9jB,KAAO,OAChB8jB,EAAShc,QAAU,aAEVjO,IAAT+pB,EACA,IAAK,IAAIlxB,KAAOkxB,EACZE,EAASG,aAAavxB,EAAKkxB,EAAKlxB,IAIxC,OAHAmxB,EAAQK,YAAYJ,GACpBD,EAAQK,YAAYH,GACpBF,EAAQK,YAAYF,GACbH,EAEJ,SAASM,EAAe1kB,GAC3B,IACI,GAAkC,oBAAvBA,EAAM2kB,aAA6B,CAC1C,IAAIC,EAAO5kB,EAAM2kB,eACjB,OAAOC,EAAK,GAEhB,OAAO5kB,EAAMpN,OAEjB,MAAOgH,GACH,OAAOoG,EAAMpN,QClDrB,IAAIiyB,EAAY,aACLC,EAAa,SAAUC,EAAazmB,EAAWyO,GAAU,OAAOA,EAAOvO,OAAOF,EAAY,YAAc,YAAYymB,IACpHC,EAAY,CACnBC,EAAGJ,EACHK,EAAG,SAAUC,EAASC,EAAWrY,GAC7BoY,EAAQE,SAAStY,EAAOvO,OAAOD,SAASkX,QAAQ2P,KAEpDE,EAAG,SAAUH,EAASI,GAClBJ,EAAQzF,UAAUyF,EAAQK,YAAc,GAAK,GAAK,GAAKC,WAAWF,KAEtEG,EAAG,SAAUP,EAASI,GAClBJ,EAAQzF,SAAS+F,WAAWF,KAEhCI,EAAG,SAAUR,EAASS,GAClBT,EAAQxF,QAAQ8F,WAAWG,KAE/BC,EAAG,SAAUV,EAAS5C,EAAMxV,GACxBoY,EAAQzF,SAAUyF,EAAQK,WAAa,GACnC,GAAK,EAAI,IAAIld,OAAOyE,EAAOwV,KAAK,GAAI,KAAKhd,KAAKgd,MAEtDuD,EAAG,SAAUX,EAASY,EAAYhZ,GAC9BoY,EAAQE,SAAStY,EAAOvO,OAAOF,UAAUmX,QAAQsQ,KAErDC,EAAG,SAAUb,EAASc,GAClBd,EAAQe,WAAWT,WAAWQ,KAElCE,EAAG,SAAUC,EAAGC,GAAe,OAAO,IAAI7G,KAA+B,IAA1BiG,WAAWY,KAC1DC,EAAG,SAAUnB,EAASoB,EAASxZ,GAC3B,IAAIyZ,EAAaC,SAASF,GACtBhH,EAAO,IAAIC,KAAK2F,EAAQpF,cAAe,EAAG,EAAuB,GAAlByG,EAAa,GAAQ,EAAG,EAAG,EAAG,GAEjF,OADAjH,EAAKI,QAAQJ,EAAKK,UAAYL,EAAKM,SAAW9S,EAAOiV,gBAC9CzC,GAEXmH,EAAG,SAAUvB,EAASwB,GAClBxB,EAAQyB,YAAYnB,WAAWkB,KAEnCE,EAAG,SAAUT,EAAGU,GAAW,OAAO,IAAItH,KAAKsH,IAC3CC,EAAG,SAAU5B,EAASS,GAClBT,EAAQxF,QAAQ8F,WAAWG,KAE/BpxB,EAAG,SAAU2wB,EAASI,GAClBJ,EAAQzF,UAAUyF,EAAQK,YAAc,GAAK,GAAK,GAAKC,WAAWF,KAEtE1yB,EAAG,SAAUsyB,EAAS6B,GAClB7B,EAAQ8B,WAAWxB,WAAWuB,KAElCE,EAAG,SAAU/B,EAASS,GAClBT,EAAQxF,QAAQ8F,WAAWG,KAE/BuB,EAAGtC,EACHuC,EAAG,SAAUjC,EAASkC,GAClBlC,EAAQE,SAASI,WAAW4B,GAAS,IAEzCtiB,EAAG,SAAUogB,EAASkC,GAClBlC,EAAQE,SAASI,WAAW4B,GAAS,IAEzClF,EAAG,SAAUgD,EAASc,GAClBd,EAAQe,WAAWT,WAAWQ,KAElCqB,EAAG,SAAUlB,EAAGmB,GACZ,OAAO,IAAI/H,KAAKiG,WAAW8B,KAE/BC,EAAG3C,EACH4C,EAAG,SAAUtC,EAASwB,GAClBxB,EAAQyB,YAAY,IAAOnB,WAAWkB,MAGnCe,EAAa,CACpBzC,EAAG,GACHC,EAAG,GACHI,EAAG,eACHI,EAAG,eACHC,EAAG,mBACHE,EAAG,GACHC,EAAG,GACHE,EAAG,eACHG,EAAG,OACHG,EAAG,eACHI,EAAG,WACHG,EAAG,OACHE,EAAG,eACHvyB,EAAG,eACH3B,EAAG,eACHq0B,EAAG,eACHC,EAAG,GACHC,EAAG,eACHriB,EAAG,eACHod,EAAG,eACHmF,EAAG,OACHE,EAAG,eACHC,EAAG,YAEI,EAAU,CACjBZ,EAAG,SAAUtH,GAAQ,OAAOA,EAAKoI,eACjC1C,EAAG,SAAU1F,EAAMxS,EAAQ6a,GACvB,OAAO7a,EAAO1O,SAASC,UAAU,EAAQkpB,EAAEjI,EAAMxS,EAAQ6a,KAE7D1C,EAAG,SAAU3F,EAAMxS,EAAQ6a,GACvB,OAAO9C,EAAW,EAAQ/f,EAAEwa,EAAMxS,EAAQ6a,GAAW,GAAG,EAAO7a,IAEnEuY,EAAG,SAAU/F,EAAMxS,EAAQ6a,GACvB,OAAOhF,EAAI,EAAQpuB,EAAE+qB,EAAMxS,EAAQ6a,KAEvClC,EAAG,SAAUnG,GAAQ,OAAOqD,EAAIrD,EAAKiG,aACrCG,EAAG,SAAUpG,EAAMxS,GACf,YAA0B3S,IAAnB2S,EAAOkV,QACR1C,EAAKK,UAAY7S,EAAOkV,QAAQ1C,EAAKK,WACrCL,EAAKK,WAEfiG,EAAG,SAAUtG,EAAMxS,GAAU,OAAOA,EAAOwV,KAAK,EAAIhD,EAAKiG,WAAa,MACtEM,EAAG,SAAUvG,EAAMxS,GACf,OAAO+X,EAAWvF,EAAKsI,YAAY,EAAM9a,IAE7CiZ,EAAG,SAAUzG,GAAQ,OAAOqD,EAAIrD,EAAKuI,eACrC3B,EAAG,SAAU5G,GAAQ,OAAOA,EAAKE,UAAY,KAC7C6G,EAAG,SAAU/G,EAAM6G,EAAGwB,GAClB,OAAOA,EAAQvI,QAAQE,IAE3BmH,EAAG,SAAUnH,GAAQ,OAAOqD,EAAIrD,EAAKQ,cAAe,IACpDgH,EAAG,SAAUxH,GAAQ,OAAOqD,EAAIrD,EAAKK,YACrCprB,EAAG,SAAU+qB,GAAQ,OAAQA,EAAKiG,WAAa,GAAKjG,EAAKiG,WAAa,GAAK,IAC3E3yB,EAAG,SAAU0sB,GAAQ,OAAOqD,EAAIrD,EAAKwI,eACrCb,EAAG,SAAU3H,GAAQ,OAAOA,EAAKK,WACjCuH,EAAG,SAAU5H,EAAMxS,GACf,OAAOA,EAAO1O,SAASE,SAASghB,EAAKM,WAEzCuH,EAAG,SAAU7H,GAAQ,OAAOqD,EAAIrD,EAAKsI,WAAa,IAClD9iB,EAAG,SAAUwa,GAAQ,OAAOA,EAAKsI,WAAa,GAC9C1F,EAAG,SAAU5C,GAAQ,OAAOA,EAAKuI,cACjCR,EAAG,SAAU/H,GAAQ,OAAOA,EAAKE,WACjC+H,EAAG,SAAUjI,GAAQ,OAAOA,EAAKM,UACjC4H,EAAG,SAAUlI,GAAQ,OAAOvZ,OAAOuZ,EAAKQ,eAAeiI,UAAU,KCjI1DC,EAAsB,SAAUC,GACvC,IAAIC,EAAKD,EAAGE,OAAQA,OAAgB,IAAPD,EAAgB,EAAWA,EAAIE,EAAKH,EAAGI,KAAMA,OAAc,IAAPD,EAAgBvG,EAAUuG,EAAIE,EAAKL,EAAGM,SAAUA,OAAkB,IAAPD,GAAwBA,EACpK,OAAO,SAAUpD,EAASsD,EAAMC,GAC5B,IAAI3b,EAAS2b,GAAkBJ,EAC/B,YAA0BluB,IAAtBguB,EAAOO,YAA6BH,EAGjCC,EACFG,MAAM,IACNtlB,KAAI,SAAUulB,EAAGh2B,EAAGyR,GACrB,OAAO,EAAQukB,IAAqB,OAAfvkB,EAAIzR,EAAI,GACvB,EAAQg2B,GAAG1D,EAASpY,EAAQqb,GACtB,OAANS,EACIA,EACA,MAETplB,KAAK,IAXC2kB,EAAOO,WAAWxD,EAASsD,EAAM1b,KAczC+b,EAAmB,SAAUZ,GACpC,IAAIC,EAAKD,EAAGE,OAAQA,OAAgB,IAAPD,EAAgB,EAAWA,EAAIE,EAAKH,EAAGI,KAAMA,OAAc,IAAPD,EAAgBvG,EAAUuG,EAC3G,OAAO,SAAU9I,EAAMwJ,EAAaC,EAAUC,GAC1C,GAAa,IAAT1J,GAAeA,EAAnB,CAEA,IACI2J,EADAnc,EAASkc,GAAgBX,EAEzBa,EAAW5J,EACf,GAAIA,aAAgBC,KAChB0J,EAAa,IAAI1J,KAAKD,EAAKE,gBAC1B,GAAoB,kBAATF,QACKnlB,IAAjBmlB,EAAK6J,QACLF,EAAa,IAAI1J,KAAKD,QACrB,GAAoB,kBAATA,EAAmB,CAC/B,IAAI8J,EAASN,IAAgBX,GAAU,GAAUzJ,WAC7C2K,EAAUtjB,OAAOuZ,GAAMhH,OAC3B,GAAgB,UAAZ+Q,EACAJ,EAAa,IAAI1J,KACjBwJ,GAAW,OAEV,GAAIZ,GAAUA,EAAOmB,UACtBL,EAAad,EAAOmB,UAAUhK,EAAM8J,QAEnC,GAAI,KAAK9jB,KAAK+jB,IACf,OAAO/jB,KAAK+jB,GACZJ,EAAa,IAAI1J,KAAKD,OAErB,CAED,IADA,IAAIiK,OAAU,EAAQC,EAAM,GACnB52B,EAAI,EAAG62B,EAAa,EAAGC,EAAW,GAAI92B,EAAIw2B,EAAOv2B,OAAQD,IAAK,CACnE,IAAI+2B,EAAQP,EAAOx2B,GACfg3B,EAAwB,OAAVD,EACdE,EAA4B,OAAlBT,EAAOx2B,EAAI,IAAeg3B,EACxC,GAAInC,EAAWkC,KAAWE,EAAS,CAC/BH,GAAYjC,EAAWkC,GACvB,IAAIG,EAAQ,IAAIzhB,OAAOqhB,GAAUK,KAAKzK,GAClCwK,IAAUP,GAAU,IACpBC,EAAc,MAAVG,EAAgB,OAAS,WAAW,CACpC5vB,GAAIgrB,EAAU4E,GACdz4B,IAAK44B,IAAQL,UAIfG,IACNF,GAAY,KAEpBT,EACKd,GAAWA,EAAO5H,WAEb,IAAIhB,MAAK,IAAIA,MAAOE,SAAS,EAAG,EAAG,EAAG,IADtC,IAAIF,MAAK,IAAIA,MAAOO,cAAe,EAAG,EAAG,EAAG,EAAG,EAAG,GAE5D0J,EAAIz2B,SAAQ,SAAUk1B,GAClB,IAAIluB,EAAKkuB,EAAGluB,GAAI7I,EAAM+2B,EAAG/2B,IACzB,OAAQ+3B,EAAalvB,EAAGkvB,EAAY/3B,EAAK4b,IAAWmc,KAExDA,EAAaM,EAAUN,OAAa9uB,GAG5C,GAAM8uB,aAAsB1J,OAASyK,MAAMf,EAAWzJ,WAMtD,OAFiB,IAAbuJ,GACAE,EAAWxJ,SAAS,EAAG,EAAG,EAAG,GAC1BwJ,EALHd,EAAOjJ,aAAa,IAAI+K,MAAM,0BAA4Bf,OAQ/D,SAASgB,EAAaC,EAAOC,EAAOrB,GAEvC,YADiB,IAAbA,IAAuBA,GAAW,IACrB,IAAbA,EACQ,IAAIxJ,KAAK4K,EAAM3K,WAAWC,SAAS,EAAG,EAAG,EAAG,GAChD,IAAIF,KAAK6K,EAAM5K,WAAWC,SAAS,EAAG,EAAG,EAAG,GAE7C0K,EAAM3K,UAAY4K,EAAM5K,UAQ5B,IAAI6K,EAAY,SAAUC,EAAIC,EAAKC,GACtC,OAAOF,EAAKvK,KAAKtF,IAAI8P,EAAKC,IAAQF,EAAKvK,KAAKvF,IAAI+P,EAAKC,IAE9CC,EAAgC,SAAUC,EAAO3D,EAASf,GACjE,OAAe,KAAR0E,EAAyB,GAAV3D,EAAef,GAE9B2E,EAAe,SAAUC,GAChC,IAAIF,EAAQ3K,KAAK8K,MAAMD,EAAuB,MAAO7D,GAAW6D,EAA+B,KAARF,GAAgB,GACvG,MAAO,CAACA,EAAO3D,EAAS6D,EAA+B,KAARF,EAAyB,GAAV3D,IAEvD+D,EAAW,CAClBC,IAAK,OAEF,SAASC,EAAgB7C,GAC5B,IAAIuC,EAAQvC,EAAOxJ,YACfoI,EAAUoB,EAAOvJ,cACjBoH,EAAUmC,EAAOtJ,eACrB,QAAuB1kB,IAAnBguB,EAAO8C,QAAuB,CAC9B,IAAIC,EAAU/C,EAAO8C,QAAQ1F,WACzB4F,EAAahD,EAAO8C,QAAQnD,aAC5BsD,EAAajD,EAAO8C,QAAQpD,aAC5B6C,EAAQQ,IACRR,EAAQQ,GAERR,IAAUQ,GAAWnE,EAAUoE,IAC/BpE,EAAUoE,GAEVT,IAAUQ,GAAWnE,IAAYoE,GAAcnF,EAAUoF,IACzDpF,EAAUmC,EAAO8C,QAAQpD,cAEjC,QAAuB1tB,IAAnBguB,EAAOkD,QAAuB,CAC9B,IAAIC,EAAQnD,EAAOkD,QAAQ9F,WACvBgG,EAAapD,EAAOkD,QAAQvD,aAChC4C,EAAQ3K,KAAKtF,IAAIiQ,EAAOY,GACpBZ,IAAUY,IACVvE,EAAUhH,KAAKtF,IAAI8Q,EAAYxE,IAC/B2D,IAAUY,GAASvE,IAAYwE,IAC/BvF,EAAUmC,EAAOkD,QAAQxD,cAEjC,MAAO,CAAE6C,MAAOA,EAAO3D,QAASA,EAASf,QAASA,G,cC7IlDwF,EAAsC,WAStC,OARAA,EAAWt5B,OAAOu5B,QAAU,SAAS3I,GACjC,IAAK,IAAIZ,EAAGtvB,EAAI,EAAGkS,EAAIrT,UAAUoB,OAAQD,EAAIkS,EAAGlS,IAE5C,IAAK,IAAI84B,KADTxJ,EAAIzwB,UAAUmB,GACAsvB,EAAOhwB,OAAO6S,UAAU4mB,eAAe1mB,KAAKid,EAAGwJ,KACzD5I,EAAE4I,GAAKxJ,EAAEwJ,IAEjB,OAAO5I,GAEJ0I,EAASh6B,MAAMV,KAAMW,YAE5Bm6B,EAAkD,WAClD,IAAK,IAAI1J,EAAI,EAAGtvB,EAAI,EAAGi5B,EAAKp6B,UAAUoB,OAAQD,EAAIi5B,EAAIj5B,IAAKsvB,GAAKzwB,UAAUmB,GAAGC,OACxE,IAAIi5B,EAAI1mB,MAAM8c,GAAI5e,EAAI,EAA3B,IAA8B1Q,EAAI,EAAGA,EAAIi5B,EAAIj5B,IACzC,IAAK,IAAI6Z,EAAIhb,UAAUmB,GAAIq0B,EAAI,EAAG8E,EAAKtf,EAAE5Z,OAAQo0B,EAAI8E,EAAI9E,IAAK3jB,IAC1DwoB,EAAExoB,GAAKmJ,EAAEwa,GACjB,OAAO6E,GASPE,EAAsB,IAC1B,SAASC,EAAkBC,EAASC,GAChC,IAAInyB,EAAO,CACPmuB,OAAQqD,EAASA,EAAS,GAAI,GAAiBvtB,EAAUmuB,eACzD/D,KAAM,GAyBV,SAASgE,IACLryB,EAAKsyB,MAAQ,CACTC,eAAgB,SAAUnF,EAAOoF,GAG7B,YAFc,IAAVpF,IAAoBA,EAAQptB,EAAKyyB,mBAC1B,IAAPD,IAAiBA,EAAKxyB,EAAK0yB,aACjB,IAAVtF,IAAiBoF,EAAK,IAAM,GAAKA,EAAK,MAAQ,GAAMA,EAAK,MAAQ,GAC1D,GACJxyB,EAAKquB,KAAKvG,YAAYsF,KAIzC,SAASuF,IACL3yB,EAAKkyB,QAAUlyB,EAAKhJ,MAAQk7B,EAC5BlyB,EAAK4yB,QAAS,EACdC,KACAC,KACAC,KACAC,KACAX,IACKryB,EAAKuuB,UACN0E,IACJC,KACIlzB,EAAKmzB,cAAct6B,QAAUmH,EAAKmuB,OAAO5H,cACrCvmB,EAAKmuB,OAAOlJ,YACZmO,EAAiBpzB,EAAKmuB,OAAO5H,WAAavmB,EAAKqzB,2BAAwBlzB,GAE3Eqf,IAAY,IAEhB8T,IACA,IAAIC,EAAW,iCAAiCjoB,KAAK6Y,UAAUC,YAC1DpkB,EAAKuuB,UAAYgF,GAClBC,KAEJC,GAAa,WAEjB,SAASC,IACL,IAAIzF,EACJ,OAA2C,QAAjCA,EAAKjuB,EAAK2zB,yBAAsC,IAAP1F,OAAgB,EAASA,EAAG2F,eAC1EC,eAAiB9sB,SAAS8sB,cAEnC,SAASC,EAAe/zB,GACpB,OAAOA,EAAGyB,KAAKxB,GAEnB,SAASszB,IACL,IAAInF,EAASnuB,EAAKmuB,QACS,IAAvBA,EAAOxG,aAA+C,IAAtBwG,EAAO1G,aAGZ,IAAtB0G,EAAO5H,YACZviB,OAAO+vB,uBAAsB,WAKzB,QAJ+B5zB,IAA3BH,EAAK2zB,oBACL3zB,EAAK2zB,kBAAkB1sB,MAAM+sB,WAAa,SAC1Ch0B,EAAK2zB,kBAAkB1sB,MAAMC,QAAU,cAEhB/G,IAAvBH,EAAKi0B,cAA6B,CAClC,IAAIC,GAAal0B,EAAKm0B,KAAKC,YAAc,GAAKjG,EAAO1G,WACrDznB,EAAKi0B,cAAchtB,MAAM/F,MAAQgzB,EAAY,KAC7Cl0B,EAAK2zB,kBAAkB1sB,MAAM/F,MACzBgzB,QAC0B/zB,IAArBH,EAAKq0B,YACAr0B,EAAKq0B,YAAYD,YACjB,GACN,KACRp0B,EAAK2zB,kBAAkB1sB,MAAMqtB,eAAe,cAC5Ct0B,EAAK2zB,kBAAkB1sB,MAAMqtB,eAAe,eAK5D,SAASC,EAAWrkB,GAChB,GAAkC,IAA9BlQ,EAAKmzB,cAAct6B,OAAc,CACjC,IAAI27B,OAAsCr0B,IAAxBH,EAAKmuB,OAAO8C,SAC1Bf,EAAa,IAAI3K,KAAQvlB,EAAKmuB,OAAO8C,UAAY,EAC/C,IAAI1L,KACJ,IAAIA,KAAKvlB,EAAKmuB,OAAO8C,QAAQzL,WAC/BiP,EAAWzD,EAAgBhxB,EAAKmuB,QACpCqG,EAAY/O,SAASgP,EAAS/D,MAAO+D,EAAS1H,QAAS0H,EAASzI,QAASwI,EAAYE,mBACrF10B,EAAKmzB,cAAgB,CAACqB,GACtBx0B,EAAKqzB,sBAAwBmB,OAEvBr0B,IAAN+P,GAA8B,SAAXA,EAAE5J,MACrBquB,GAAYzkB,GAEhB,IAAI0kB,EAAY50B,EAAK60B,OAAOv7B,MAC5Bw7B,IACAtV,KACIxf,EAAK60B,OAAOv7B,QAAUs7B,GACtB50B,EAAK+0B,mBAGb,SAASC,EAAc1J,EAAMhD,GACzB,OAAQgD,EAAO,GAAM,GAAK,EAAIhD,IAAStoB,EAAKquB,KAAK/F,KAAK,IAE1D,SAAS2M,EAAc3J,GACnB,OAAQA,EAAO,IACX,KAAK,EACL,KAAK,GACD,OAAO,GACX,QACI,OAAOA,EAAO,IAG1B,SAASwJ,IACL,QAAyB30B,IAArBH,EAAKk1B,kBAAoD/0B,IAAvBH,EAAKm1B,cAA3C,CAEA,IAAIzE,GAASlE,SAASxsB,EAAKk1B,YAAY57B,MAAM4R,OAAO,GAAI,KAAO,GAAK,GAAI6hB,GAAWP,SAASxsB,EAAKm1B,cAAc77B,MAAO,KAAO,GAAK,GAAI0yB,OAAiC7rB,IAAvBH,EAAKo1B,eAC9I5I,SAASxsB,EAAKo1B,cAAc97B,MAAO,KAAO,GAAK,GAChD,OACY6G,IAAdH,EAAKsoB,OACLoI,EAAQsE,EAActE,EAAO1wB,EAAKsoB,KAAKkB,cAE3C,IAAI6L,OAAwCl1B,IAAxBH,EAAKmuB,OAAOmH,SAC3Bt1B,EAAKmuB,OAAO8C,SACTjxB,EAAKu1B,gBACLv1B,EAAKqzB,uBAED,IADJnD,EAAalwB,EAAKqzB,sBAAuBrzB,EAAKmuB,OAAO8C,SAAS,GAElEuE,OAAwCr1B,IAAxBH,EAAKmuB,OAAOsH,SAC3Bz1B,EAAKmuB,OAAOkD,SACTrxB,EAAK01B,gBACL11B,EAAKqzB,uBAED,IADJnD,EAAalwB,EAAKqzB,sBAAuBrzB,EAAKmuB,OAAOkD,SAAS,GAEtE,QAA4BlxB,IAAxBH,EAAKmuB,OAAOsH,cACYt1B,IAAxBH,EAAKmuB,OAAOmH,SACZt1B,EAAKmuB,OAAOmH,QAAUt1B,EAAKmuB,OAAOsH,QAAS,CAC3C,IAAIE,EAAWlF,EAA8BzwB,EAAKmuB,OAAOmH,QAAQ/J,WAAYvrB,EAAKmuB,OAAOmH,QAAQxH,aAAc9tB,EAAKmuB,OAAOmH,QAAQzH,cAC/H+H,EAAWnF,EAA8BzwB,EAAKmuB,OAAOsH,QAAQlK,WAAYvrB,EAAKmuB,OAAOsH,QAAQ3H,aAAc9tB,EAAKmuB,OAAOsH,QAAQ5H,cAC/HgI,EAAcpF,EAA8BC,EAAO3D,EAASf,GAChE,GAAI6J,EAAcD,GAAYC,EAAcF,EAAU,CAClD,IAAIvwB,EAASurB,EAAagF,GAC1BjF,EAAQtrB,EAAO,GACf2nB,EAAU3nB,EAAO,GACjB4mB,EAAU5mB,EAAO,QAGpB,CACD,GAAIowB,EAAe,CACf,IAAIC,OAAkCt1B,IAAxBH,EAAKmuB,OAAOsH,QACpBz1B,EAAKmuB,OAAOsH,QACZz1B,EAAKmuB,OAAOkD,QAClBX,EAAQ3K,KAAKtF,IAAIiQ,EAAO+E,EAAQlK,YAC5BmF,IAAU+E,EAAQlK,aAClBwB,EAAUhH,KAAKtF,IAAIsM,EAAS0I,EAAQ3H,eACpCf,IAAY0I,EAAQ3H,eACpB9B,EAAUjG,KAAKtF,IAAIuL,EAASyJ,EAAQ5H,eAE5C,GAAIwH,EAAe,CACf,IAAIC,OAAkCn1B,IAAxBH,EAAKmuB,OAAOmH,QACpBt1B,EAAKmuB,OAAOmH,QACZt1B,EAAKmuB,OAAO8C,QAClBP,EAAQ3K,KAAKvF,IAAIkQ,EAAO4E,EAAQ/J,YAC5BmF,IAAU4E,EAAQ/J,YAAcwB,EAAUuI,EAAQxH,eAClDf,EAAUuI,EAAQxH,cAClBf,IAAYuI,EAAQxH,eACpB9B,EAAUjG,KAAKvF,IAAIwL,EAASsJ,EAAQzH,gBAGhDpI,EAASiL,EAAO3D,EAASf,IAE7B,SAASoH,EAAiBlI,GACtB,IAAI5F,EAAO4F,GAAWlrB,EAAKqzB,sBACvB/N,GAAQA,aAAgBC,MACxBE,EAASH,EAAKiG,WAAYjG,EAAKwI,aAAcxI,EAAKuI,cAG1D,SAASpI,EAASiL,EAAO3D,EAASf,QACK7rB,IAA/BH,EAAKqzB,uBACLrzB,EAAKqzB,sBAAsB5N,SAASiL,EAAQ,GAAI3D,EAASf,GAAW,EAAG,GAEtEhsB,EAAKk1B,aAAgBl1B,EAAKm1B,gBAAiBn1B,EAAKuuB,WAErDvuB,EAAKk1B,YAAY57B,MAAQqvB,EAAK3oB,EAAKmuB,OAAO1pB,UAEpCisB,GADE,GAAKA,GAAS,GAAM,GAAK,EAAIA,EAAQ,KAAO,IAEpD1wB,EAAKm1B,cAAc77B,MAAQqvB,EAAIoE,QACb5sB,IAAdH,EAAKsoB,OACLtoB,EAAKsoB,KAAKkB,YAAcxpB,EAAKquB,KAAK/F,KAAK,EAAIoI,GAAS,WAC7BvwB,IAAvBH,EAAKo1B,gBACLp1B,EAAKo1B,cAAc97B,MAAQqvB,EAAIqD,KAEvC,SAAS8J,EAAY/vB,GACjB,IAAIgwB,EAActL,EAAe1kB,GAC7B2mB,EAAOF,SAASuJ,EAAYz8B,QAAUyM,EAAMiwB,OAAS,IACrDtJ,EAAO,IAAO,GACC,UAAd3mB,EAAM/M,MAAoB,QAAQsS,KAAKohB,EAAK1hB,cAC7CirB,GAAWvJ,GAGnB,SAASlrB,EAAK0wB,EAASnsB,EAAO2H,EAASigB,GACnC,OAAI5nB,aAAiBqF,MACVrF,EAAMhN,SAAQ,SAAUm9B,GAAM,OAAO10B,EAAK0wB,EAASgE,EAAIxoB,EAASigB,MACvEuE,aAAmB9mB,MACZ8mB,EAAQn5B,SAAQ,SAAUuiB,GAAM,OAAO9Z,EAAK8Z,EAAIvV,EAAO2H,EAASigB,OAC3EuE,EAAQiE,iBAAiBpwB,EAAO2H,EAASigB,QACzC3tB,EAAKo2B,UAAU39B,KAAK,CAChB4wB,OAAQ,WAAc,OAAO6I,EAAQmE,oBAAoBtwB,EAAO2H,EAASigB,OAGjF,SAAS2I,IACL7C,GAAa,YAEjB,SAASP,IAQL,GAPIlzB,EAAKmuB,OAAOvG,MACZ,CAAC,OAAQ,QAAS,SAAU,SAAS7uB,SAAQ,SAAUw9B,GACnDnrB,MAAML,UAAUhS,QAAQkS,KAAKjL,EAAKkyB,QAAQsE,iBAAiB,SAAWD,EAAM,MAAM,SAAUjb,GACxF,OAAO9Z,EAAK8Z,EAAI,QAAStb,EAAKu2B,UAItCv2B,EAAKuuB,SACLkI,SADJ,CAIA,IAAIC,EAAkB3Y,EAAS4Y,GAAU,IA2BzC,GA1BA32B,EAAK+0B,iBAAmBhX,EAASuY,EAAetE,GAC5ChyB,EAAKi0B,gBAAkB,oBAAoB3oB,KAAK6Y,UAAUC,YAC1D5iB,EAAKxB,EAAKi0B,cAAe,aAAa,SAAU/jB,GACnB,UAArBlQ,EAAKmuB,OAAO/H,MACZwQ,GAAYnM,EAAeva,OAEvC1O,EAAKxB,EAAK60B,OAAQ,UAAWjO,SACEzmB,IAA3BH,EAAK2zB,mBACLnyB,EAAKxB,EAAK2zB,kBAAmB,UAAW/M,IAEvC5mB,EAAKmuB,OAAOlwB,QAAW+B,EAAKmuB,OAAOzG,QACpClmB,EAAKwC,OAAQ,SAAU0yB,QACCv2B,IAAxB6D,OAAO6yB,aACPr1B,EAAKwC,OAAO+C,SAAU,aAAc+vB,IAEpCt1B,EAAKwC,OAAO+C,SAAU,YAAa+vB,IACvCt1B,EAAKwC,OAAO+C,SAAU,QAAS+vB,GAAe,CAAEC,SAAS,KAC1B,IAA3B/2B,EAAKmuB,OAAO5J,aACZ/iB,EAAKxB,EAAK60B,OAAQ,QAAS70B,EAAKg3B,MAChCx1B,EAAKxB,EAAK60B,OAAQ,QAAS70B,EAAKg3B,YAET72B,IAAvBH,EAAKi0B,gBACLzyB,EAAKxB,EAAKi3B,SAAU,QAASC,IAC7B11B,EAAKxB,EAAKi3B,SAAU,CAAC,QAAS,aAAcnB,GAC5Ct0B,EAAKxB,EAAKi0B,cAAe,QAASkD,UAEXh3B,IAAvBH,EAAKo3B,oBACkBj3B,IAAvBH,EAAKm1B,oBACgBh1B,IAArBH,EAAKk1B,YAA2B,CAChC,IAAImC,EAAU,SAAUnnB,GACpB,OAAOua,EAAeva,GAAG5Y,UAE7BkK,EAAKxB,EAAKo3B,cAAe,CAAC,aAAc7C,GACxC/yB,EAAKxB,EAAKo3B,cAAe,OAAQ7C,EAAY,CAAEwC,SAAS,IACxDv1B,EAAKxB,EAAKo3B,cAAe,QAASE,GAClC91B,EAAK,CAACxB,EAAKk1B,YAAal1B,EAAKm1B,eAAgB,CAAC,QAAS,SAAUkC,QACtCl3B,IAAvBH,EAAKo1B,eACL5zB,EAAKxB,EAAKo1B,cAAe,SAAS,WAAc,OAAOp1B,EAAKo1B,eAAiBp1B,EAAKo1B,cAAc99B,iBAClF6I,IAAdH,EAAKsoB,MACL9mB,EAAKxB,EAAKsoB,KAAM,SAAS,SAAUpY,GAC/BqkB,EAAWrkB,MAInBlQ,EAAKmuB,OAAOtK,YACZriB,EAAKxB,EAAK60B,OAAQ,OAAQ7U,KAGlC,SAASuX,EAAWC,EAAUlB,GAC1B,IAAImB,OAAsBt3B,IAAbq3B,EACPx3B,EAAKsvB,UAAUkI,GACfx3B,EAAKqzB,wBACFrzB,EAAKmuB,OAAO8C,SAAWjxB,EAAKmuB,OAAO8C,QAAUjxB,EAAKwmB,IAC7CxmB,EAAKmuB,OAAO8C,QACZjxB,EAAKmuB,OAAOkD,SAAWrxB,EAAKmuB,OAAOkD,QAAUrxB,EAAKwmB,IAC9CxmB,EAAKmuB,OAAOkD,QACZrxB,EAAKwmB,KACnBkR,EAAU13B,EAAK0yB,YACfiF,EAAW33B,EAAKyyB,aACpB,SACmBtyB,IAAXs3B,IACAz3B,EAAK0yB,YAAc+E,EAAO3R,cAC1B9lB,EAAKyyB,aAAegF,EAAO7J,YAGnC,MAAO1d,GACHA,EAAEC,QAAU,0BAA4BsnB,EACxCz3B,EAAKmuB,OAAOjJ,aAAahV,GAEzBomB,GAAiBt2B,EAAK0yB,cAAgBgF,IACtCjE,GAAa,gBACbmE,OAEAtB,GACCt2B,EAAK0yB,cAAgBgF,GAAW13B,EAAKyyB,eAAiBkF,GACvDlE,GAAa,iBAEjBzzB,EAAK63B,SAET,SAASP,EAAcpnB,GACnB,IAAI6lB,EAActL,EAAeva,IAC5B6lB,EAAY7M,UAAU1N,QAAQ,UAC/Bsc,EAAkB5nB,EAAG6lB,EAAY5M,UAAU1iB,SAAS,WAAa,GAAK,GAE9E,SAASqxB,EAAkB5nB,EAAG8lB,EAAO+B,GACjC,IAAIp/B,EAASuX,GAAKua,EAAeva,GAC7BlZ,EAAQ+gC,GACPp/B,GAAUA,EAAOoxB,YAAcpxB,EAAOoxB,WAAWJ,WAClD5jB,EAAQiyB,GAAY,aACxBjyB,EAAMiwB,MAAQA,EACdh/B,GAASA,EAAMihC,cAAclyB,GAEjC,SAASktB,IACL,IAAIiF,EAAWl0B,OAAO+C,SAASoxB,yBAG/B,GAFAn4B,EAAK2zB,kBAAoBrK,EAAc,MAAO,sBAC9CtpB,EAAK2zB,kBAAkBhY,UAAY,GAC9B3b,EAAKmuB,OAAO5H,WAAY,CAGzB,GAFA2R,EAAS1N,YAAY4N,MACrBp4B,EAAKq4B,eAAiB/O,EAAc,MAAO,4BACvCtpB,EAAKmuB,OAAOxG,YAAa,CACzB,IAAIsG,EAAKqK,KAAcjE,EAAcpG,EAAGoG,YAAa1M,EAAcsG,EAAGtG,YACtE3nB,EAAKq4B,eAAe7N,YAAY6J,GAChCr0B,EAAK2nB,YAAcA,EACnB3nB,EAAKq0B,YAAcA,EAEvBr0B,EAAKu4B,WAAajP,EAAc,MAAO,wBACvCtpB,EAAKu4B,WAAW/N,YAAYgO,MACvBx4B,EAAKi0B,gBACNj0B,EAAKi0B,cAAgB3K,EAAc,MAAO,kBAC1CtpB,EAAKi0B,cAActY,UAAY,GAEnC8c,KACAz4B,EAAKu4B,WAAW/N,YAAYxqB,EAAKi0B,eACjCj0B,EAAKq4B,eAAe7N,YAAYxqB,EAAKu4B,YACrCL,EAAS1N,YAAYxqB,EAAKq4B,gBAE1Br4B,EAAKmuB,OAAOlJ,YACZiT,EAAS1N,YAAYkO,MAEzB1P,EAAYhpB,EAAK2zB,kBAAmB,YAAkC,UAArB3zB,EAAKmuB,OAAO/H,MAC7D4C,EAAYhpB,EAAK2zB,kBAAmB,WAAmC,IAAxB3zB,EAAKmuB,OAAOjK,SAC3D8E,EAAYhpB,EAAK2zB,kBAAmB,aAAc3zB,EAAKmuB,OAAO1G,WAAa,GAC3EznB,EAAK2zB,kBAAkBnJ,YAAY0N,GACnC,IAAIS,OAAwCx4B,IAAzBH,EAAKmuB,OAAOyK,eACOz4B,IAAlCH,EAAKmuB,OAAOyK,SAASC,SACzB,IAAI74B,EAAKmuB,OAAOlwB,QAAU+B,EAAKmuB,OAAOzG,UAClC1nB,EAAK2zB,kBAAkBxK,UAAUC,IAAIppB,EAAKmuB,OAAOlwB,OAAS,SAAW,UACjE+B,EAAKmuB,OAAOlwB,UACP06B,GAAgB34B,EAAKkyB,QAAQnI,WAC9B/pB,EAAKkyB,QAAQnI,WAAW+O,aAAa94B,EAAK2zB,kBAAmB3zB,EAAK60B,OAAOkE,kBAC3C54B,IAAzBH,EAAKmuB,OAAOyK,UACjB54B,EAAKmuB,OAAOyK,SAASpO,YAAYxqB,EAAK2zB,oBAE1C3zB,EAAKmuB,OAAOzG,QAAQ,CACpB,IAAIyC,EAAUb,EAAc,MAAO,qBAC/BtpB,EAAKkyB,QAAQnI,YACb/pB,EAAKkyB,QAAQnI,WAAW+O,aAAa3O,EAASnqB,EAAKkyB,SACvD/H,EAAQK,YAAYxqB,EAAKkyB,SACrBlyB,EAAKgkB,UACLmG,EAAQK,YAAYxqB,EAAKgkB,UAC7BmG,EAAQK,YAAYxqB,EAAK2zB,mBAG5B3zB,EAAKmuB,OAAOzG,QAAW1nB,EAAKmuB,OAAOlwB,cACVkC,IAAzBH,EAAKmuB,OAAOyK,SACP54B,EAAKmuB,OAAOyK,SACZ50B,OAAO+C,SAASiyB,MAAMxO,YAAYxqB,EAAK2zB,mBAErD,SAASsF,EAAU/P,EAAW5D,EAAM4T,EAAYtgC,GAC5C,IAAIugC,EAAgBC,GAAU9T,GAAM,GAAO+T,EAAa/P,EAAc,OAAQJ,EAAW5D,EAAKK,UAAU3a,YAuCxG,OAtCAquB,EAAWnO,QAAU5F,EACrB+T,EAAWC,GAAK1gC,EAChBygC,EAAW9O,aAAa,aAAcvqB,EAAK0uB,WAAWpJ,EAAMtlB,EAAKmuB,OAAO9J,kBACnC,IAAjC6E,EAAU1N,QAAQ,WACe,IAAjC0U,EAAa5K,EAAMtlB,EAAKwmB,OACxBxmB,EAAKu5B,cAAgBF,EACrBA,EAAWlQ,UAAUC,IAAI,SACzBiQ,EAAW9O,aAAa,eAAgB,SAExC4O,GACAE,EAAW1d,UAAY,EACnB6d,GAAelU,KACf+T,EAAWlQ,UAAUC,IAAI,YACzBppB,EAAKy5B,iBAAmBJ,EACC,UAArBr5B,EAAKmuB,OAAO/H,OACZ4C,EAAYqQ,EAAY,aAAcr5B,EAAKmzB,cAAc,IACD,IAApDjD,EAAa5K,EAAMtlB,EAAKmzB,cAAc,IAAI,IAC9CnK,EAAYqQ,EAAY,WAAYr5B,EAAKmzB,cAAc,IACC,IAApDjD,EAAa5K,EAAMtlB,EAAKmzB,cAAc,IAAI,IAC5B,iBAAdjK,GACAmQ,EAAWlQ,UAAUC,IAAI,cAKrCiQ,EAAWlQ,UAAUC,IAAI,sBAEJ,UAArBppB,EAAKmuB,OAAO/H,MACRsT,GAAcpU,KAAUkU,GAAelU,IACvC+T,EAAWlQ,UAAUC,IAAI,WAE7BppB,EAAK2nB,aACsB,IAA3B3nB,EAAKmuB,OAAO1G,YACE,iBAAdyB,GACAtwB,EAAI,IAAM,GACVoH,EAAK2nB,YAAYgS,mBAAmB,YAAa,+BAAiC35B,EAAKmuB,OAAO/I,QAAQE,GAAQ,WAElHmO,GAAa,cAAe4F,GACrBA,EAEX,SAASO,EAAeC,GACpBA,EAAW5Z,QACc,UAArBjgB,EAAKmuB,OAAO/H,MACZwQ,GAAYiD,GAEpB,SAASC,EAAqB9D,GAG1B,IAFA,IAAI+D,EAAa/D,EAAQ,EAAI,EAAIh2B,EAAKmuB,OAAO1G,WAAa,EACtDuS,EAAWhE,EAAQ,EAAIh2B,EAAKmuB,OAAO1G,YAAc,EAC5C0F,EAAI4M,EAAY5M,GAAK6M,EAAU7M,GAAK6I,EAIzC,IAHA,IAAI5I,EAAQptB,EAAKi0B,cAAc51B,SAAS8uB,GACpC8M,EAAajE,EAAQ,EAAI,EAAI5I,EAAM/uB,SAASxF,OAAS,EACrDqhC,EAAWlE,EAAQ,EAAI5I,EAAM/uB,SAASxF,QAAU,EAC3CD,EAAIqhC,EAAYrhC,GAAKshC,EAAUthC,GAAKo9B,EAAO,CAChD,IAAIpH,EAAIxB,EAAM/uB,SAASzF,GACvB,IAAuC,IAAnCg2B,EAAE1F,UAAU1N,QAAQ,WAAoB4d,GAAUxK,EAAE1D,SACpD,OAAO0D,GAKvB,SAASuL,EAAoBC,EAASpE,GAMlC,IALA,IAAIqE,GAAqD,IAAxCD,EAAQlR,UAAU1N,QAAQ,SACrC4e,EAAQlP,QAAQ0C,WAChB5tB,EAAKyyB,aACPuH,EAAWhE,EAAQ,EAAIh2B,EAAKmuB,OAAO1G,YAAc,EACjD6S,EAAYtE,EAAQ,EAAI,GAAK,EACxB7I,EAAIkN,EAAar6B,EAAKyyB,aAActF,GAAK6M,EAAU7M,GAAKmN,EAQ7D,IAPA,IAAIlN,EAAQptB,EAAKi0B,cAAc51B,SAAS8uB,GACpC8M,EAAaI,EAAar6B,EAAKyyB,eAAiBtF,EAC9CiN,EAAQd,GAAKtD,EACbA,EAAQ,EACJ5I,EAAM/uB,SAASxF,OAAS,EACxB,EACN0hC,EAAenN,EAAM/uB,SAASxF,OACzBD,EAAIqhC,EAAYrhC,GAAK,GAAKA,EAAI2hC,GAAgB3hC,IAAMo9B,EAAQ,EAAIuE,GAAgB,GAAI3hC,GAAK0hC,EAAW,CACzG,IAAI1L,EAAIxB,EAAM/uB,SAASzF,GACvB,IAAuC,IAAnCg2B,EAAE1F,UAAU1N,QAAQ,WACpB4d,GAAUxK,EAAE1D,UACZnF,KAAKyU,IAAIJ,EAAQd,GAAK1gC,IAAMmtB,KAAKyU,IAAIxE,GACrC,OAAO4D,EAAehL,GAGlC5uB,EAAKy6B,YAAYH,GACjBI,EAAWZ,EAAqBQ,GAAY,GAGhD,SAASI,EAAWN,EAASO,GACzB,IAAI9G,EAAgBH,IAChBkH,EAAaC,GAAShH,GAAiB9sB,SAASiyB,MAChD8B,OAAwB36B,IAAZi6B,EACVA,EACAQ,EACI/G,OAC0B1zB,IAA1BH,EAAKy5B,kBAAkCoB,GAAS76B,EAAKy5B,kBACjDz5B,EAAKy5B,sBACkBt5B,IAAvBH,EAAKu5B,eAA+BsB,GAAS76B,EAAKu5B,eAC9Cv5B,EAAKu5B,cACLO,EAAqBa,EAAS,EAAI,GAAK,QACvCx6B,IAAd26B,EACA96B,EAAK60B,OAAO5U,QAEN2a,EAINT,EAAoBW,EAAWH,GAH/Bf,EAAekB,GAMvB,SAASC,GAAerO,EAAMU,GAK1B,IAJA,IAAI4N,GAAgB,IAAIzV,KAAKmH,EAAMU,EAAO,GAAGxH,SAAW5lB,EAAKquB,KAAKtG,eAAiB,GAAK,EACpFkT,EAAgBj7B,EAAKsyB,MAAMC,gBAAgBnF,EAAQ,EAAI,IAAM,GAAIV,GACjE5E,EAAc9nB,EAAKsyB,MAAMC,eAAenF,EAAOV,GAAOyH,EAAOnwB,OAAO+C,SAASoxB,yBAA0B+C,EAAel7B,EAAKmuB,OAAO1G,WAAa,EAAG0T,EAAoBD,EAAe,sBAAwB,eAAgBE,EAAoBF,EAAe,sBAAwB,eACxRG,EAAYJ,EAAgB,EAAID,EAAcM,EAAW,EACtDD,GAAaJ,EAAeI,IAAaC,IAC5CnH,EAAK3J,YAAYyO,EAAU,iBAAmBkC,EAAmB,IAAI5V,KAAKmH,EAAMU,EAAQ,EAAGiO,GAAYA,EAAWC,IAEtH,IAAKD,EAAY,EAAGA,GAAavT,EAAauT,IAAaC,IACvDnH,EAAK3J,YAAYyO,EAAU,gBAAiB,IAAI1T,KAAKmH,EAAMU,EAAOiO,GAAYA,EAAWC,IAE7F,IAAK,IAAIC,EAASzT,EAAc,EAAGyT,GAAU,GAAKP,IAClB,IAA3Bh7B,EAAKmuB,OAAO1G,YAAoB6T,EAAW,IAAM,GAAIC,IAAUD,IAChEnH,EAAK3J,YAAYyO,EAAU,iBAAmBmC,EAAmB,IAAI7V,KAAKmH,EAAMU,EAAQ,EAAGmO,EAASzT,GAAcyT,EAAQD,IAE9H,IAAIE,EAAelS,EAAc,MAAO,gBAExC,OADAkS,EAAahR,YAAY2J,GAClBqH,EAEX,SAAS/C,KACL,QAA2Bt4B,IAAvBH,EAAKi0B,cAAT,CAGAxK,EAAUzpB,EAAKi0B,eACXj0B,EAAK2nB,aACL8B,EAAUzpB,EAAK2nB,aAEnB,IADA,IAAI8T,EAAO10B,SAASoxB,yBACXv/B,EAAI,EAAGA,EAAIoH,EAAKmuB,OAAO1G,WAAY7uB,IAAK,CAC7C,IAAIk0B,EAAI,IAAIvH,KAAKvlB,EAAK0yB,YAAa1yB,EAAKyyB,aAAc,GACtD3F,EAAE1B,SAASprB,EAAKyyB,aAAe75B,GAC/B6iC,EAAKjR,YAAYuQ,GAAejO,EAAEhH,cAAegH,EAAEc,aAEvD5tB,EAAKi0B,cAAczJ,YAAYiR,GAC/Bz7B,EAAKm0B,KAAOn0B,EAAKi0B,cAActK,WACN,UAArB3pB,EAAKmuB,OAAO/H,MAAkD,IAA9BpmB,EAAKmzB,cAAct6B,QACnD+9B,MAGR,SAASgB,KACL,KAAI53B,EAAKmuB,OAAO1G,WAAa,GACS,aAAlCznB,EAAKmuB,OAAO9H,mBADhB,CAGA,IAAIqV,EAAmB,SAAUtO,GAC7B,aAA4BjtB,IAAxBH,EAAKmuB,OAAO8C,SACZjxB,EAAK0yB,cAAgB1yB,EAAKmuB,OAAO8C,QAAQnL,eACzCsH,EAAQptB,EAAKmuB,OAAO8C,QAAQrD,oBAGCztB,IAAxBH,EAAKmuB,OAAOkD,SACjBrxB,EAAK0yB,cAAgB1yB,EAAKmuB,OAAOkD,QAAQvL,eACzCsH,EAAQptB,EAAKmuB,OAAOkD,QAAQzD,aAEpC5tB,EAAK27B,wBAAwBhgB,UAAY,EACzC3b,EAAK27B,wBAAwBC,UAAY,GACzC,IAAK,IAAIhjC,EAAI,EAAGA,EAAI,GAAIA,IACpB,GAAK8iC,EAAiB9iC,GAAtB,CAEA,IAAIw0B,EAAQ9D,EAAc,SAAU,iCACpC8D,EAAM9zB,MAAQ,IAAIisB,KAAKvlB,EAAK0yB,YAAa95B,GAAGg1B,WAAW5iB,WACvDoiB,EAAM5D,YAAcqB,EAAWjyB,EAAGoH,EAAKmuB,OAAO3G,sBAAuBxnB,EAAKquB,MAC1EjB,EAAMzR,UAAY,EACd3b,EAAKyyB,eAAiB75B,IACtBw0B,EAAM/a,UAAW,GAErBrS,EAAK27B,wBAAwBnR,YAAY4C,KAGjD,SAASyO,KACL,IAEIC,EAFAC,EAAYzS,EAAc,MAAO,mBACjC0S,EAAmBh4B,OAAO+C,SAASoxB,yBAEnCn4B,EAAKmuB,OAAO1G,WAAa,GACS,WAAlCznB,EAAKmuB,OAAO9H,kBACZyV,EAAexS,EAAc,OAAQ,cAGrCtpB,EAAK27B,wBAA0BrS,EAAc,SAAU,kCACvDtpB,EAAK27B,wBAAwBpR,aAAa,aAAcvqB,EAAKquB,KAAK7F,gBAClEhnB,EAAKxB,EAAK27B,wBAAyB,UAAU,SAAUzrB,GACnD,IAAIvX,EAAS8xB,EAAeva,GACxB+rB,EAAgBzP,SAAS7zB,EAAOW,MAAO,IAC3C0G,EAAKy6B,YAAYwB,EAAgBj8B,EAAKyyB,cACtCgB,GAAa,oBAEjBmE,KACAkE,EAAe97B,EAAK27B,yBAExB,IAAIO,EAAYlS,EAAkB,WAAY,CAAE3P,SAAU,OACtD8hB,EAAcD,EAAUE,qBAAqB,SAAS,GAC1DD,EAAY5R,aAAa,aAAcvqB,EAAKquB,KAAK9F,eAC7CvoB,EAAKmuB,OAAO8C,SACZkL,EAAY5R,aAAa,MAAOvqB,EAAKmuB,OAAO8C,QAAQnL,cAAc9a,YAElEhL,EAAKmuB,OAAOkD,UACZ8K,EAAY5R,aAAa,MAAOvqB,EAAKmuB,OAAOkD,QAAQvL,cAAc9a,YAClEmxB,EAAYjc,WACNlgB,EAAKmuB,OAAO8C,SACVjxB,EAAKmuB,OAAO8C,QAAQnL,gBAAkB9lB,EAAKmuB,OAAOkD,QAAQvL,eAEtE,IAAI2M,EAAenJ,EAAc,MAAO,2BAKxC,OAJAmJ,EAAajI,YAAYsR,GACzBrJ,EAAajI,YAAY0R,GACzBF,EAAiBxR,YAAYiI,GAC7BsJ,EAAUvR,YAAYwR,GACf,CACHD,UAAWA,EACXI,YAAaA,EACbL,aAAcA,GAGtB,SAASO,KACL5S,EAAUzpB,EAAKi3B,UACfj3B,EAAKi3B,SAASzM,YAAYxqB,EAAKs8B,cAC3Bt8B,EAAKmuB,OAAO1G,aACZznB,EAAKu8B,aAAe,GACpBv8B,EAAKw8B,cAAgB,IAEzB,IAAK,IAAIrP,EAAIntB,EAAKmuB,OAAO1G,WAAY0F,KAAM,CACvC,IAAIC,EAAQyO,KACZ77B,EAAKu8B,aAAa9jC,KAAK20B,EAAM+O,aAC7Bn8B,EAAKw8B,cAAc/jC,KAAK20B,EAAM0O,cAC9B97B,EAAKi3B,SAASzM,YAAY4C,EAAM2O,WAEpC/7B,EAAKi3B,SAASzM,YAAYxqB,EAAKy8B,cAEnC,SAASrE,KA6BL,OA5BAp4B,EAAKi3B,SAAW3N,EAAc,MAAO,oBACrCtpB,EAAKu8B,aAAe,GACpBv8B,EAAKw8B,cAAgB,GACrBx8B,EAAKs8B,aAAehT,EAAc,OAAQ,wBAC1CtpB,EAAKs8B,aAAaV,UAAY57B,EAAKmuB,OAAO5G,UAC1CvnB,EAAKy8B,aAAenT,EAAc,OAAQ,wBAC1CtpB,EAAKy8B,aAAab,UAAY57B,EAAKmuB,OAAO7H,UAC1C+V,KACAnkC,OAAOkB,eAAe4G,EAAM,sBAAuB,CAC/CnJ,IAAK,WAAc,OAAOmJ,EAAK08B,sBAC/BzlC,IAAK,SAAU2xB,GACP5oB,EAAK08B,uBAAyB9T,IAC9BI,EAAYhpB,EAAKs8B,aAAc,qBAAsB1T,GACrD5oB,EAAK08B,qBAAuB9T,MAIxC1wB,OAAOkB,eAAe4G,EAAM,sBAAuB,CAC/CnJ,IAAK,WAAc,OAAOmJ,EAAK28B,sBAC/B1lC,IAAK,SAAU2xB,GACP5oB,EAAK28B,uBAAyB/T,IAC9BI,EAAYhpB,EAAKy8B,aAAc,qBAAsB7T,GACrD5oB,EAAK28B,qBAAuB/T,MAIxC5oB,EAAK48B,mBAAqB58B,EAAKu8B,aAAa,GAC5CM,KACO78B,EAAKi3B,SAEhB,SAASyB,KACL14B,EAAK2zB,kBAAkBxK,UAAUC,IAAI,WACjCppB,EAAKmuB,OAAO5H,YACZvmB,EAAK2zB,kBAAkBxK,UAAUC,IAAI,cACzC,IAAIqL,EAAWzD,EAAgBhxB,EAAKmuB,QACpCnuB,EAAKo3B,cAAgB9N,EAAc,MAAO,kBAC1CtpB,EAAKo3B,cAAczb,UAAY,EAC/B,IAAImhB,EAAYxT,EAAc,OAAQ,2BAA4B,KAC9DyT,EAAY/S,EAAkB,iBAAkB,CAChD,aAAchqB,EAAKquB,KAAK5F,gBAE5BzoB,EAAKk1B,YAAc6H,EAAUX,qBAAqB,SAAS,GAC3D,IAAIY,EAAchT,EAAkB,mBAAoB,CACpD,aAAchqB,EAAKquB,KAAK3F,kBAyB5B,GAvBA1oB,EAAKm1B,cAAgB6H,EAAYZ,qBAAqB,SAAS,GAC/Dp8B,EAAKk1B,YAAYvZ,SAAW3b,EAAKm1B,cAAcxZ,UAAY,EAC3D3b,EAAKk1B,YAAY57B,MAAQqvB,EAAI3oB,EAAKqzB,sBAC5BrzB,EAAKqzB,sBAAsB9H,WAC3BvrB,EAAKmuB,OAAO1pB,UACRgwB,EAAS/D,MACTuE,EAAcR,EAAS/D,QACjC1wB,EAAKm1B,cAAc77B,MAAQqvB,EAAI3oB,EAAKqzB,sBAC9BrzB,EAAKqzB,sBAAsBvF,aAC3B2G,EAAS1H,SACf/sB,EAAKk1B,YAAY3K,aAAa,OAAQvqB,EAAKmuB,OAAOlI,cAAcjb,YAChEhL,EAAKm1B,cAAc5K,aAAa,OAAQvqB,EAAKmuB,OAAOhI,gBAAgBnb,YACpEhL,EAAKk1B,YAAY3K,aAAa,MAAOvqB,EAAKmuB,OAAO1pB,UAAY,IAAM,KACnEzE,EAAKk1B,YAAY3K,aAAa,MAAOvqB,EAAKmuB,OAAO1pB,UAAY,KAAO,MACpEzE,EAAKk1B,YAAY3K,aAAa,YAAa,KAC3CvqB,EAAKm1B,cAAc5K,aAAa,MAAO,KACvCvqB,EAAKm1B,cAAc5K,aAAa,MAAO,MACvCvqB,EAAKm1B,cAAc5K,aAAa,YAAa,KAC7CvqB,EAAKo3B,cAAc5M,YAAYuS,GAC/B/8B,EAAKo3B,cAAc5M,YAAYsS,GAC/B98B,EAAKo3B,cAAc5M,YAAYwS,GAC3Bh9B,EAAKmuB,OAAO1pB,WACZzE,EAAKo3B,cAAcjO,UAAUC,IAAI,YACjCppB,EAAKmuB,OAAOnJ,cAAe,CAC3BhlB,EAAKo3B,cAAcjO,UAAUC,IAAI,cACjC,IAAI6T,EAAcjT,EAAkB,oBACpChqB,EAAKo1B,cAAgB6H,EAAYb,qBAAqB,SAAS,GAC/Dp8B,EAAKo1B,cAAc97B,MAAQqvB,EAAI3oB,EAAKqzB,sBAC9BrzB,EAAKqzB,sBAAsBxF,aAC3B4G,EAASzI,SACfhsB,EAAKo1B,cAAc7K,aAAa,OAAQvqB,EAAKm1B,cAAc+H,aAAa,SACxEl9B,EAAKo1B,cAAc7K,aAAa,MAAO,KACvCvqB,EAAKo1B,cAAc7K,aAAa,MAAO,MACvCvqB,EAAKo1B,cAAc7K,aAAa,YAAa,KAC7CvqB,EAAKo3B,cAAc5M,YAAYlB,EAAc,OAAQ,2BAA4B,MACjFtpB,EAAKo3B,cAAc5M,YAAYyS,GAUnC,OARKj9B,EAAKmuB,OAAO1pB,YACbzE,EAAKsoB,KAAOgB,EAAc,OAAQ,kBAAmBtpB,EAAKquB,KAAK/F,KAAK,GAAKtoB,EAAKqzB,sBACxErzB,EAAKk1B,YAAY57B,MACjB0G,EAAKmuB,OAAOxJ,aAAe,MACjC3kB,EAAKsoB,KAAK3F,MAAQ3iB,EAAKquB,KAAKhG,YAC5BroB,EAAKsoB,KAAK3M,UAAY,EACtB3b,EAAKo3B,cAAc5M,YAAYxqB,EAAKsoB,OAEjCtoB,EAAKo3B,cAEhB,SAASoB,KACAx4B,EAAKm9B,iBAGN1T,EAAUzpB,EAAKm9B,kBAFfn9B,EAAKm9B,iBAAmB7T,EAAc,MAAO,sBAGjD,IAAK,IAAI1wB,EAAIoH,EAAKmuB,OAAO1G,WAAY7uB,KAAM,CACvC,IAAImjC,EAAYzS,EAAc,MAAO,8BACrCtpB,EAAKm9B,iBAAiB3S,YAAYuR,GAGtC,OADAqB,KACOp9B,EAAKm9B,iBAEhB,SAASC,KACL,GAAKp9B,EAAKm9B,iBAAV,CAGA,IAAIpV,EAAiB/nB,EAAKquB,KAAKtG,eAC3B3jB,EAAWwtB,EAAe5xB,EAAKquB,KAAKjqB,SAASC,WAC7C0jB,EAAiB,GAAKA,EAAiB3jB,EAASvL,SAChDuL,EAAWwtB,EAAextB,EAASi5B,OAAOtV,EAAgB3jB,EAASvL,QAASuL,EAASi5B,OAAO,EAAGtV,KAEnG,IAAK,IAAInvB,EAAIoH,EAAKmuB,OAAO1G,WAAY7uB,KACjCoH,EAAKm9B,iBAAiB9+B,SAASzF,GAAGgjC,UAAY,qDAAuDx3B,EAASoF,KAAK,2CAA6C,2BAGxK,SAAS8uB,KACLt4B,EAAK2zB,kBAAkBxK,UAAUC,IAAI,YACrC,IAAIiL,EAAc/K,EAAc,MAAO,yBACvC+K,EAAY7J,YAAYlB,EAAc,OAAQ,oBAAqBtpB,EAAKquB,KAAKlG,mBAC7E,IAAIR,EAAc2B,EAAc,MAAO,mBAEvC,OADA+K,EAAY7J,YAAY7C,GACjB,CACH0M,YAAaA,EACb1M,YAAaA,GAGrB,SAAS8S,GAAYnhC,EAAOgkC,QACP,IAAbA,IAAuBA,GAAW,GACtC,IAAItH,EAAQsH,EAAWhkC,EAAQA,EAAQ0G,EAAKyyB,aACvCuD,EAAQ,IAAkC,IAA7Bh2B,EAAKu9B,qBAClBvH,EAAQ,IAAkC,IAA7Bh2B,EAAKw9B,sBAEvBx9B,EAAKyyB,cAAgBuD,GACjBh2B,EAAKyyB,aAAe,GAAKzyB,EAAKyyB,aAAe,MAC7CzyB,EAAK0yB,aAAe1yB,EAAKyyB,aAAe,GAAK,GAAK,EAClDzyB,EAAKyyB,cAAgBzyB,EAAKyyB,aAAe,IAAM,GAC/CgB,GAAa,gBACbmE,MAEJa,KACAhF,GAAa,iBACboJ,MAEJ,SAASY,GAAMC,EAAoBC,GAc/B,QAb2B,IAAvBD,IAAiCA,GAAqB,QACxC,IAAdC,IAAwBA,GAAY,GACxC39B,EAAKhJ,MAAMsC,MAAQ,QACG6G,IAAlBH,EAAKgkB,WACLhkB,EAAKgkB,SAAS1qB,MAAQ,SACD6G,IAArBH,EAAK49B,cACL59B,EAAK49B,YAAYtkC,MAAQ,IAC7B0G,EAAKmzB,cAAgB,GACrBnzB,EAAKqzB,2BAAwBlzB,GACX,IAAdw9B,IACA39B,EAAK0yB,YAAc1yB,EAAK69B,aAAa/X,cACrC9lB,EAAKyyB,aAAezyB,EAAK69B,aAAajQ,aAEX,IAA3B5tB,EAAKmuB,OAAOlJ,WAAqB,CACjC,IAAIgJ,EAAK+C,EAAgBhxB,EAAKmuB,QAASuC,EAAQzC,EAAGyC,MAAO3D,EAAUkB,EAAGlB,QAASf,EAAUiC,EAAGjC,QAC5FvG,EAASiL,EAAO3D,EAASf,GAE7BhsB,EAAK63B,SACD6F,GACAjK,GAAa,YAErB,SAASqK,KACL99B,EAAK4yB,QAAS,EACT5yB,EAAKuuB,gBACyBpuB,IAA3BH,EAAK2zB,mBACL3zB,EAAK2zB,kBAAkBxK,UAAUE,OAAO,aAExBlpB,IAAhBH,EAAK60B,QACL70B,EAAK60B,OAAO1L,UAAUE,OAAO,WAGrCoK,GAAa,WAEjB,SAASsK,UACe59B,IAAhBH,EAAKmuB,QACLsF,GAAa,aACjB,IAAK,IAAI76B,EAAIoH,EAAKo2B,UAAUv9B,OAAQD,KAChCoH,EAAKo2B,UAAUx9B,GAAGywB,SAGtB,GADArpB,EAAKo2B,UAAY,GACbp2B,EAAK49B,YACD59B,EAAK49B,YAAY7T,YACjB/pB,EAAK49B,YAAY7T,WAAWH,YAAY5pB,EAAK49B,aACjD59B,EAAK49B,iBAAcz9B,OAElB,GAAIH,EAAK2zB,mBAAqB3zB,EAAK2zB,kBAAkB5J,WACtD,GAAI/pB,EAAKmuB,OAAOzG,QAAU1nB,EAAK2zB,kBAAkB5J,WAAY,CACzD,IAAII,EAAUnqB,EAAK2zB,kBAAkB5J,WAErC,GADAI,EAAQ6T,WAAa7T,EAAQP,YAAYO,EAAQ6T,WAC7C7T,EAAQJ,WAAY,CACpB,MAAOI,EAAQR,WACXQ,EAAQJ,WAAW+O,aAAa3O,EAAQR,WAAYQ,GACxDA,EAAQJ,WAAWH,YAAYO,SAInCnqB,EAAK2zB,kBAAkB5J,WAAWH,YAAY5pB,EAAK2zB,mBAEvD3zB,EAAKgkB,WACLhkB,EAAKhJ,MAAMsP,KAAO,OACdtG,EAAKgkB,SAAS+F,YACd/pB,EAAKgkB,SAAS+F,WAAWH,YAAY5pB,EAAKgkB,iBACvChkB,EAAKgkB,UAEZhkB,EAAKhJ,QACLgJ,EAAKhJ,MAAMsP,KAAOtG,EAAKhJ,MAAMinC,MAC7Bj+B,EAAKhJ,MAAMmyB,UAAUE,OAAO,mBAC5BrpB,EAAKhJ,MAAMknC,gBAAgB,aAE/B,CACI,iBACA,wBACA,sBACA,sBACA,uBACA,uBACA,WACA,SACA,mBACA,iBACA,iBACA,OACA,gBACA,SACA,mBACA,iBACA,aACA,WACA,gBACA,oBACA,mBACA,eACA,eACA,0BACA,sBACA,qBACA,yBACA,mBACA,UACFnlC,SAAQ,SAAUuQ,GAChB,WACWtJ,EAAKsJ,GAEhB,MAAO6iB,QAGf,SAASgS,GAAelV,GACpB,OAAOjpB,EAAK2zB,kBAAkBltB,SAASwiB,GAE3C,SAAS6N,GAAc5mB,GACnB,GAAIlQ,EAAK4yB,SAAW5yB,EAAKmuB,OAAOlwB,OAAQ,CACpC,IAAImgC,EAAgB3T,EAAeva,GAC/BmuB,EAAoBF,GAAeC,GACnCE,EAAUF,IAAkBp+B,EAAKhJ,OACjConC,IAAkBp+B,EAAKgkB,UACvBhkB,EAAKkyB,QAAQzrB,SAAS23B,IACrBluB,EAAEya,MACCza,EAAEya,KAAKnP,WACLtL,EAAEya,KAAKnP,QAAQxb,EAAKhJ,SACjBkZ,EAAEya,KAAKnP,QAAQxb,EAAKgkB,WAC7Bua,GAAaD,IACZD,IACAF,GAAejuB,EAAEsuB,eAClBC,GAAaz+B,EAAKmuB,OAAOjI,qBAAqBhV,MAAK,SAAU+X,GAC7D,OAAOA,EAAKxiB,SAAS23B,MAErBG,GAAaE,IACTz+B,EAAKmuB,OAAOtK,YACZ7jB,EAAK0lB,QAAQ1lB,EAAK60B,OAAOv7B,OAAO,EAAO0G,EAAKmuB,OAAOnK,SAC7ChkB,EAAKmuB,OAAOpK,UACZ/jB,EAAKmuB,OAAOzJ,iBAEKvkB,IAAvBH,EAAKo3B,oBACkBj3B,IAAvBH,EAAKm1B,oBACgBh1B,IAArBH,EAAKk1B,aACgB,KAArBl1B,EAAKhJ,MAAMsC,YACU6G,IAArBH,EAAKhJ,MAAMsC,OACXi7B,IAEJv0B,EAAK89B,QACD99B,EAAKmuB,QACgB,UAArBnuB,EAAKmuB,OAAO/H,MACkB,IAA9BpmB,EAAKmzB,cAAct6B,QACnBmH,EAAKy9B,OAAM,KAI3B,SAASxH,GAAWyI,GAChB,MAAKA,GACA1+B,EAAKmuB,OAAO8C,SAAWyN,EAAU1+B,EAAKmuB,OAAO8C,QAAQnL,eACrD9lB,EAAKmuB,OAAOkD,SAAWqN,EAAU1+B,EAAKmuB,OAAOkD,QAAQvL,eAF1D,CAIA,IAAI6Y,EAAaD,EAASE,EAAY5+B,EAAK0yB,cAAgBiM,EAC3D3+B,EAAK0yB,YAAciM,GAAc3+B,EAAK0yB,YAClC1yB,EAAKmuB,OAAOkD,SACZrxB,EAAK0yB,cAAgB1yB,EAAKmuB,OAAOkD,QAAQvL,cACzC9lB,EAAKyyB,aAAe1M,KAAKtF,IAAIzgB,EAAKmuB,OAAOkD,QAAQzD,WAAY5tB,EAAKyyB,cAE7DzyB,EAAKmuB,OAAO8C,SACjBjxB,EAAK0yB,cAAgB1yB,EAAKmuB,OAAO8C,QAAQnL,gBACzC9lB,EAAKyyB,aAAe1M,KAAKvF,IAAIxgB,EAAKmuB,OAAO8C,QAAQrD,WAAY5tB,EAAKyyB,eAElEmM,IACA5+B,EAAK63B,SACLpE,GAAa,gBACbmE,OAGR,SAASwB,GAAU9T,EAAMyJ,GACrB,IAAId,OACa,IAAbc,IAAuBA,GAAW,GACtC,IAAI8P,EAAc7+B,EAAKsvB,UAAUhK,OAAMnlB,EAAW4uB,GAClD,GAAK/uB,EAAKmuB,OAAO8C,SACb4N,GACA3O,EAAa2O,EAAa7+B,EAAKmuB,OAAO8C,aAAsB9wB,IAAb4uB,EAAyBA,GAAY/uB,EAAKu1B,gBAAkB,GAC1Gv1B,EAAKmuB,OAAOkD,SACTwN,GACA3O,EAAa2O,EAAa7+B,EAAKmuB,OAAOkD,aAAsBlxB,IAAb4uB,EAAyBA,GAAY/uB,EAAK01B,gBAAkB,EAC/G,OAAO,EACX,IAAK11B,EAAKmuB,OAAO2Q,QAAyC,IAA/B9+B,EAAKmuB,OAAOrJ,QAAQjsB,OAC3C,OAAO,EACX,QAAoBsH,IAAhB0+B,EACA,OAAO,EAEX,IADA,IAAIjW,IAAS5oB,EAAKmuB,OAAO2Q,OAAQ30B,EAAsC,QAA7B8jB,EAAKjuB,EAAKmuB,OAAO2Q,cAA2B,IAAP7Q,EAAgBA,EAAKjuB,EAAKmuB,OAAOrJ,QACvGlsB,EAAI,EAAGk0B,OAAI,EAAQl0B,EAAIuR,EAAMtR,OAAQD,IAAK,CAE/C,GADAk0B,EAAI3iB,EAAMvR,GACO,oBAANk0B,GACPA,EAAE+R,GACF,OAAOjW,EACN,GAAIkE,aAAavH,WACFplB,IAAhB0+B,GACA/R,EAAEtH,YAAcqZ,EAAYrZ,UAC5B,OAAOoD,EACN,GAAiB,kBAANkE,EAAgB,CAC5B,IAAIiS,EAAS/+B,EAAKsvB,UAAUxC,OAAG3sB,GAAW,GAC1C,OAAO4+B,GAAUA,EAAOvZ,YAAcqZ,EAAYrZ,UAC5CoD,GACCA,EAEN,GAAiB,kBAANkE,QACI3sB,IAAhB0+B,GACA/R,EAAEzhB,MACFyhB,EAAEkS,IACFH,EAAYrZ,WAAasH,EAAEzhB,KAAKma,WAChCqZ,EAAYrZ,WAAasH,EAAEkS,GAAGxZ,UAC9B,OAAOoD,EAEf,OAAQA,EAEZ,SAASiS,GAAS5R,GACd,YAA2B9oB,IAAvBH,EAAKi0B,iBACyC,IAAtChL,EAAKC,UAAU1N,QAAQ,YACuB,IAAlDyN,EAAKC,UAAU1N,QAAQ,uBACvBxb,EAAKi0B,cAAcxtB,SAASwiB,IAGxC,SAASjJ,GAAO9P,GACZ,IAAIouB,EAAUpuB,EAAEvX,SAAWqH,EAAK60B,OAC5BoK,EAAej/B,EAAK60B,OAAOv7B,MAAM4lC,YAAcC,MAC/Cb,IACAW,GACE/uB,EAAEsuB,eAAiBL,GAAejuB,EAAEsuB,gBACtCx+B,EAAK0lB,QAAQ1lB,EAAK60B,OAAOv7B,OAAO,EAAM4W,EAAEvX,SAAWqH,EAAKgkB,SAClDhkB,EAAKmuB,OAAOpK,UACZ/jB,EAAKmuB,OAAOzJ,YAG1B,SAASkC,GAAU1W,GACf,IAAI6lB,EAActL,EAAeva,GAC7BouB,EAAUt+B,EAAKmuB,OAAOvG,KACpBsK,EAAQzrB,SAASsvB,GACjBA,IAAgB/1B,EAAK60B,OACvBhR,EAAa7jB,EAAKmuB,OAAOtK,WACzBub,EAAep/B,EAAK4yB,UAAY/O,IAAeya,GAC/Ce,EAAqBr/B,EAAKmuB,OAAOlwB,QAAUqgC,IAAYza,EAC3D,GAAkB,KAAd3T,EAAEwL,SAAkB4iB,EAAS,CAC7B,GAAIza,EAKA,OAJA7jB,EAAK0lB,QAAQ1lB,EAAK60B,OAAOv7B,OAAO,EAAMy8B,IAAgB/1B,EAAKgkB,SACrDhkB,EAAKmuB,OAAOpK,UACZ/jB,EAAKmuB,OAAOzJ,YAClB1kB,EAAK89B,QACE/H,EAAY5V,OAGnBngB,EAAKg3B,YAGR,GAAImH,GAAepI,IACpBqJ,GACAC,EAAoB,CACpB,IAAIC,IAAct/B,EAAKo3B,eACnBp3B,EAAKo3B,cAAc3wB,SAASsvB,GAChC,OAAQ7lB,EAAEwL,SACN,KAAK,GACG4jB,GACApvB,EAAEqvB,iBACFhL,IACAiL,MAGArI,GAAWjnB,GACf,MACJ,KAAK,GACDA,EAAEqvB,iBACFC,KACA,MACJ,KAAK,EACL,KAAK,GACGlB,IAAYt+B,EAAKmuB,OAAOtK,aACxB3T,EAAEqvB,iBACFv/B,EAAKy9B,SAET,MACJ,KAAK,GACL,KAAK,GACD,GAAK6B,GAAchB,EAgBVt+B,EAAKk1B,aACVl1B,EAAKk1B,YAAYjV,YAjBO,CACxB/P,EAAEqvB,iBACF,IAAI1L,EAAgBH,IACpB,QAA2BvzB,IAAvBH,EAAKi0B,iBACW,IAAfpQ,GACIgQ,GAAiBgH,GAAShH,IAAkB,CACjD,IAAI4L,EAAwB,KAAdvvB,EAAEwL,QAAiB,GAAK,EACjCxL,EAAEqC,SAGHrC,EAAEwvB,kBACFjF,GAAYgF,GACZ/E,EAAWZ,EAAqB,GAAI,IAJpCY,OAAWv6B,EAAWs/B,IAUlC,MACJ,KAAK,GACL,KAAK,GACDvvB,EAAEqvB,iBACF,IAAIvJ,EAAsB,KAAd9lB,EAAEwL,QAAiB,GAAK,EAC/B1b,EAAKi0B,oBACa9zB,IAAnB41B,EAAYuD,IACZvD,IAAgB/1B,EAAKhJ,OACrB++B,IAAgB/1B,EAAKgkB,SACjB9T,EAAEqC,SACFrC,EAAEwvB,kBACFzJ,GAAWj2B,EAAK0yB,YAAcsD,GAC9B0E,EAAWZ,EAAqB,GAAI,IAE9BwF,GACN5E,OAAWv6B,EAAmB,EAAR61B,GAErBD,IAAgB/1B,EAAK48B,mBAC1B3G,GAAWj2B,EAAK0yB,YAAcsD,GAEzBh2B,EAAKmuB,OAAOlJ,cACZqa,GAAat/B,EAAKk1B,aACnBl1B,EAAKk1B,YAAYjV,QACrBsU,EAAWrkB,GACXlQ,EAAK+0B,oBAET,MACJ,KAAK,EACD,GAAIuK,EAAW,CACX,IAAIK,EAAQ,CACR3/B,EAAKk1B,YACLl1B,EAAKm1B,cACLn1B,EAAKo1B,cACLp1B,EAAKsoB,MAEJ1tB,OAAOoF,EAAK4/B,gBACZvnC,QAAO,SAAUwnC,GAAK,OAAOA,KAC9BjnC,EAAI+mC,EAAMnkB,QAAQua,GACtB,IAAW,IAAPn9B,EAAU,CACV,IAAID,EAASgnC,EAAM/mC,GAAKsX,EAAEoC,UAAY,EAAI,IAC1CpC,EAAEqvB,kBACD5mC,GAAUqH,EAAK60B,QAAQ5U,cAGtBjgB,EAAKmuB,OAAO5H,YAClBvmB,EAAKi0B,eACLj0B,EAAKi0B,cAAcxtB,SAASsvB,IAC5B7lB,EAAEoC,WACFpC,EAAEqvB,iBACFv/B,EAAK60B,OAAO5U,SAEhB,MACJ,QACI,OAGZ,QAAkB9f,IAAdH,EAAKsoB,MAAsByN,IAAgB/1B,EAAKsoB,KAChD,OAAQpY,EAAElX,KACN,KAAKgH,EAAKquB,KAAK/F,KAAK,GAAGwX,OAAO,GAC9B,KAAK9/B,EAAKquB,KAAK/F,KAAK,GAAGwX,OAAO,GAAGxjB,cAC7Btc,EAAKsoB,KAAKkB,YAAcxpB,EAAKquB,KAAK/F,KAAK,GACvCwM,IACAtV,KACA,MACJ,KAAKxf,EAAKquB,KAAK/F,KAAK,GAAGwX,OAAO,GAC9B,KAAK9/B,EAAKquB,KAAK/F,KAAK,GAAGwX,OAAO,GAAGxjB,cAC7Btc,EAAKsoB,KAAKkB,YAAcxpB,EAAKquB,KAAK/F,KAAK,GACvCwM,IACAtV,KACA,OAGR8e,GAAWH,GAAepI,KAC1BtC,GAAa,YAAavjB,GAGlC,SAAS0mB,GAAY3N,EAAM8W,GAEvB,QADkB,IAAdA,IAAwBA,EAAY,iBACN,IAA9B//B,EAAKmzB,cAAct6B,UAClBowB,GACKA,EAAKE,UAAU1iB,SAASs5B,KACtB9W,EAAKE,UAAU1iB,SAAS,uBAHpC,CAUA,IALA,IAAIu5B,EAAY/W,EACVA,EAAKiC,QAAQ1F,UACbxlB,EAAKm0B,KAAK8L,kBAAkB/U,QAAQ1F,UAAW0a,EAAclgC,EAAKsvB,UAAUtvB,EAAKmzB,cAAc,QAAIhzB,GAAW,GAAMqlB,UAAW2a,EAAiBpa,KAAKtF,IAAIuf,EAAWhgC,EAAKmzB,cAAc,GAAG3N,WAAY4a,EAAera,KAAKvF,IAAIwf,EAAWhgC,EAAKmzB,cAAc,GAAG3N,WACjQ6a,GAAmB,EACnBC,EAAW,EAAGC,EAAW,EACpBzX,EAAIqX,EAAgBrX,EAAIsX,EAActX,GAAKgI,EAASC,IACpDqI,GAAU,IAAI7T,KAAKuD,IAAI,KACxBuX,EACIA,GAAqBvX,EAAIqX,GAAkBrX,EAAIsX,EAC/CtX,EAAIoX,KAAiBI,GAAYxX,EAAIwX,GACrCA,EAAWxX,EACNA,EAAIoX,KAAiBK,GAAYzX,EAAIyX,KAC1CA,EAAWzX,IAGvB,IAAI0X,EAAiBp1B,MAAMC,KAAKrL,EAAKu4B,WAAW/B,iBAAiB,kBAAoBx2B,EAAKmuB,OAAO1G,WAAa,QAAUsY,IACxHS,EAAeznC,SAAQ,SAAU0nC,GAC7B,IAAInb,EAAOmb,EAAQvV,QACfwV,EAAYpb,EAAKE,UACjBmb,EAAcL,EAAW,GAAKI,EAAYJ,GACzCC,EAAW,GAAKG,EAAYH,EACjC,GAAII,EAKA,OAJAF,EAAQtX,UAAUC,IAAI,kBACtB,CAAC,UAAW,aAAc,YAAYrwB,SAAQ,SAAU61B,GACpD6R,EAAQtX,UAAUE,OAAOuF,MAIxByR,IAAqBM,IAE9B,CAAC,aAAc,UAAW,WAAY,cAAc5nC,SAAQ,SAAU61B,GAClE6R,EAAQtX,UAAUE,OAAOuF,WAEhBzuB,IAAT8oB,IACAA,EAAKE,UAAUC,IAAI4W,GAAahgC,EAAKmzB,cAAc,GAAG3N,UAChD,aACA,YACF0a,EAAcF,GAAaU,IAAcR,EACzCO,EAAQtX,UAAUC,IAAI,cACjB8W,EAAcF,GAAaU,IAAcR,GAC9CO,EAAQtX,UAAUC,IAAI,YACtBsX,GAAaJ,IACC,IAAbC,GAAkBG,GAAaH,IAChClQ,EAAUqQ,EAAWR,EAAaF,IAClCS,EAAQtX,UAAUC,IAAI,iBAItC,SAASuN,MACD32B,EAAK4yB,QAAW5yB,EAAKmuB,OAAOzG,QAAW1nB,EAAKmuB,OAAOlwB,QACnDu1B,KAER,SAASwD,GAAK9mB,EAAGoX,GAEb,QADwB,IAApBA,IAA8BA,EAAkBtnB,EAAK4gC,mBACnC,IAAlB5gC,EAAKuuB,SAAmB,CACxB,GAAIre,EAAG,CACHA,EAAEqvB,iBACF,IAAIxJ,EAActL,EAAeva,GAC7B6lB,GACAA,EAAY5V,OAQpB,YALyBhgB,IAArBH,EAAK49B,cACL59B,EAAK49B,YAAY3d,QACjBjgB,EAAK49B,YAAYjhB,cAErB8W,GAAa,UAGZ,IAAIzzB,EAAK60B,OAAO3U,WAAYlgB,EAAKmuB,OAAOlwB,OAAxC,CAGL,IAAI4iC,EAAU7gC,EAAK4yB,OACnB5yB,EAAK4yB,QAAS,EACTiO,IACD7gC,EAAK2zB,kBAAkBxK,UAAUC,IAAI,QACrCppB,EAAK60B,OAAO1L,UAAUC,IAAI,UAC1BqK,GAAa,UACbD,GAAiBlM,KAEU,IAA3BtnB,EAAKmuB,OAAOlJ,aAAkD,IAA3BjlB,EAAKmuB,OAAO5H,cAChB,IAA3BvmB,EAAKmuB,OAAOtK,iBACL1jB,IAAN+P,GACIlQ,EAAKo3B,cAAc3wB,SAASyJ,EAAEsuB,gBACnC3wB,YAAW,WAAc,OAAO7N,EAAKk1B,YAAY59B,WAAa,MAI1E,SAASwpC,GAAiBx6B,GACtB,OAAO,SAAUgf,GACb,IAAI4F,EAAWlrB,EAAKmuB,OAAO,IAAM7nB,EAAO,QAAUtG,EAAKsvB,UAAUhK,EAAMtlB,EAAKmuB,OAAOzJ,YAC/Eqc,EAAiB/gC,EAAKmuB,OAAO,KAAgB,QAAT7nB,EAAiB,MAAQ,OAAS,aAC1DnG,IAAZ+qB,IACAlrB,EAAc,QAATsG,EAAiB,iBAAmB,kBACrC4kB,EAAQK,WAAa,GACjBL,EAAQ4C,aAAe,GACvB5C,EAAQ2C,aAAe,GAE/B7tB,EAAKmzB,gBACLnzB,EAAKmzB,cAAgBnzB,EAAKmzB,cAAc96B,QAAO,SAAUy0B,GAAK,OAAOsM,GAAUtM,MAC1E9sB,EAAKmzB,cAAct6B,QAAmB,QAATyN,GAC9B8sB,EAAiBlI,GACrB1L,MAEAxf,EAAKi0B,gBACL4D,UACgB13B,IAAZ+qB,EACAlrB,EAAK48B,mBAAmBt2B,GAAQ4kB,EAAQpF,cAAc9a,WAEtDhL,EAAK48B,mBAAmBsB,gBAAgB53B,GAC5CtG,EAAK48B,mBAAmB1c,WAClB6gB,QACc5gC,IAAZ+qB,GACA6V,EAAejb,gBAAkBoF,EAAQpF,gBAI7D,SAAS+M,KACL,IAAImO,EAAW,CACX,OACA,cACA,aACA,sBACA,aACA,YACA,aACA,aACA,WACA,wBACA,SACA,SACA,gBACA,iBAEAC,EAAazP,EAASA,EAAS,GAAI0P,KAAKC,MAAMD,KAAKE,UAAUlP,EAAQmP,SAAW,MAAOlP,GACvFmP,EAAU,GACdthC,EAAKmuB,OAAOmB,UAAY2R,EAAW3R,UACnCtvB,EAAKmuB,OAAOO,WAAauS,EAAWvS,WACpCx2B,OAAOkB,eAAe4G,EAAKmuB,OAAQ,SAAU,CACzCt3B,IAAK,WAAc,OAAOmJ,EAAKmuB,OAAOoT,SACtCtqC,IAAK,SAAUuqC,GACXxhC,EAAKmuB,OAAOoT,QAAUE,GAAeD,MAG7CtpC,OAAOkB,eAAe4G,EAAKmuB,OAAQ,UAAW,CAC1Ct3B,IAAK,WAAc,OAAOmJ,EAAKmuB,OAAOvK,UACtC3sB,IAAK,SAAUuqC,GACXxhC,EAAKmuB,OAAOvK,SAAW6d,GAAeD,MAG9C,IAAIE,EAA+B,SAApBT,EAAW7a,KAC1B,IAAK6a,EAAWvc,aAAeuc,EAAWhc,YAAcyc,GAAW,CAC/D,IAAIC,EAAoB19B,EAAUmuB,cAAc1N,YAAc,EAAeA,WAC7E4c,EAAQ5c,WACJuc,EAAW1a,YAAcmb,EACnB,OAAST,EAAWjc,cAAgB,KAAO,IAC3C2c,EAAoB,QAAUV,EAAWjc,cAAgB,KAAO,IAE9E,GAAIic,EAAWjd,WACVid,EAAWhc,YAAcyc,KACzBT,EAAWld,UAAW,CACvB,IAAI6d,EAAmB39B,EAAUmuB,cAAcrO,WAAa,EAAeA,UAC3Eud,EAAQvd,UACJkd,EAAW1a,YAAcmb,EACnB,OAAST,EAAWjc,cAAgB,OAAS,MAC7C4c,EAAoB,QAAUX,EAAWjc,cAAgB,KAAO,IAAM,KAEpF9sB,OAAOkB,eAAe4G,EAAKmuB,OAAQ,UAAW,CAC1Ct3B,IAAK,WAAc,OAAOmJ,EAAKmuB,OAAO0T,UACtC5qC,IAAK6pC,GAAiB,SAE1B5oC,OAAOkB,eAAe4G,EAAKmuB,OAAQ,UAAW,CAC1Ct3B,IAAK,WAAc,OAAOmJ,EAAKmuB,OAAO2T,UACtC7qC,IAAK6pC,GAAiB,SAE1B,IAAIiB,EAAmB,SAAUz7B,GAAQ,OAAO,SAAUpP,GACtD8I,EAAKmuB,OAAgB,QAAT7nB,EAAiB,WAAa,YAActG,EAAKsvB,UAAUp4B,EAAK,WAEhFgB,OAAOkB,eAAe4G,EAAKmuB,OAAQ,UAAW,CAC1Ct3B,IAAK,WAAc,OAAOmJ,EAAKmuB,OAAO6T,UACtC/qC,IAAK8qC,EAAiB,SAE1B7pC,OAAOkB,eAAe4G,EAAKmuB,OAAQ,UAAW,CAC1Ct3B,IAAK,WAAc,OAAOmJ,EAAKmuB,OAAO8T,UACtChrC,IAAK8qC,EAAiB,SAEF,SAApBd,EAAW7a,OACXpmB,EAAKmuB,OAAO5H,YAAa,EACzBvmB,EAAKmuB,OAAOlJ,YAAa,GAE7B/sB,OAAOu5B,OAAOzxB,EAAKmuB,OAAQmT,EAASL,GACpC,IAAK,IAAIroC,EAAI,EAAGA,EAAIooC,EAASnoC,OAAQD,IACjCoH,EAAKmuB,OAAO6S,EAASpoC,KACY,IAA7BoH,EAAKmuB,OAAO6S,EAASpoC,KACY,SAA7BoH,EAAKmuB,OAAO6S,EAASpoC,IACjC+qB,EAAMtrB,QAAO,SAAU6pC,GAAQ,YAA6B/hC,IAAtBH,EAAKmuB,OAAO+T,MAAwBnpC,SAAQ,SAAUmpC,GACxFliC,EAAKmuB,OAAO+T,GAAQnZ,EAAS/oB,EAAKmuB,OAAO+T,IAAS,IAAI74B,IAAIyqB,MAE9D9zB,EAAKuuB,UACAvuB,EAAKmuB,OAAOpJ,gBACR/kB,EAAKmuB,OAAOlwB,QACQ,WAArB+B,EAAKmuB,OAAO/H,OACXpmB,EAAKmuB,OAAOrJ,QAAQjsB,SACpBmH,EAAKmuB,OAAO2Q,SACZ9+B,EAAKmuB,OAAOxG,aACb,iEAAiErc,KAAK6Y,UAAUC,WACxF,IAASxrB,EAAI,EAAGA,EAAIoH,EAAKmuB,OAAO/G,QAAQvuB,OAAQD,IAAK,CACjD,IAAIupC,EAAaniC,EAAKmuB,OAAO/G,QAAQxuB,GAAGoH,IAAS,GACjD,IAAK,IAAIhH,KAAOmpC,EACRxe,EAAMnI,QAAQxiB,IAAQ,EACtBgH,EAAKmuB,OAAOn1B,GAAO+vB,EAASoZ,EAAWnpC,IAClCqQ,IAAIyqB,GACJl5B,OAAOoF,EAAKmuB,OAAOn1B,IAEQ,qBAApBioC,EAAWjoC,KACvBgH,EAAKmuB,OAAOn1B,GAAOmpC,EAAWnpC,IAGrCioC,EAAWhd,gBACZjkB,EAAKmuB,OAAOlK,cACRme,KAAelZ,UAAY,IAAMlpB,EAAKmuB,OAAOlK,eAErDwP,GAAa,iBAEjB,SAAS2O,KACL,OAAOpiC,EAAKmuB,OAAOvG,KACbsK,EAAQmQ,cAAc,gBACtBnQ,EAEV,SAASY,KAC6B,kBAAvB9yB,EAAKmuB,OAAOrb,QAC4B,qBAAxC7O,EAAUC,MAAMlE,EAAKmuB,OAAOrb,SACnC9S,EAAKmuB,OAAOjJ,aAAa,IAAI+K,MAAM,6BAA+BjwB,EAAKmuB,OAAOrb,SAClF9S,EAAKquB,KAAOmD,EAASA,EAAS,GAAIvtB,EAAUC,MAAM1I,SAAyC,kBAAvBwE,EAAKmuB,OAAOrb,OAC1E9S,EAAKmuB,OAAOrb,OACW,YAAvB9S,EAAKmuB,OAAOrb,OACR7O,EAAUC,MAAMlE,EAAKmuB,OAAOrb,aAC5B3S,GACVstB,EAAWzC,EAAI,IAAMhrB,EAAKquB,KAAKjqB,SAASC,UAAUmF,KAAK,KAAO,IAC9DikB,EAAWP,EAAI,IAAMltB,EAAKquB,KAAKjqB,SAASE,SAASkF,KAAK,KAAO,IAC7DikB,EAAW5B,EAAI,IAAM7rB,EAAKquB,KAAK9pB,OAAOF,UAAUmF,KAAK,KAAO,IAC5DikB,EAAWxC,EAAI,IAAMjrB,EAAKquB,KAAK9pB,OAAOD,SAASkF,KAAK,KAAO,IAC3DikB,EAAW7B,EAAI,IAAM5rB,EAAKquB,KAAK/F,KAAK,GAAK,IAAMtoB,EAAKquB,KAAK/F,KAAK,GAAK,IAAMtoB,EAAKquB,KAAK/F,KAAK,GAAGhM,cAAgB,IAAMtc,EAAKquB,KAAK/F,KAAK,GAAGhM,cAAgB,IACnJ,IAAI2kB,EAAazP,EAASA,EAAS,GAAIW,GAAiB+O,KAAKC,MAAMD,KAAKE,UAAUlP,EAAQmP,SAAW,WACxElhC,IAAzB8gC,EAAWx8B,gBAC2BtE,IAAtC8D,EAAUmuB,cAAc3tB,YACxBzE,EAAKmuB,OAAO1pB,UAAYzE,EAAKquB,KAAK5pB,WAEtCzE,EAAK0uB,WAAaV,EAAoBhuB,GACtCA,EAAKsvB,UAAYT,EAAiB,CAAEV,OAAQnuB,EAAKmuB,OAAQE,KAAMruB,EAAKquB,OAExE,SAASmF,GAAiB8O,GACtB,GAAoC,oBAAzBtiC,EAAKmuB,OAAO9G,UAGvB,QAA+BlnB,IAA3BH,EAAK2zB,kBAAT,CAEAF,GAAa,yBACb,IAAInM,EAAkBgb,GAAyBtiC,EAAK4gC,iBAChD2B,EAAiBn3B,MAAML,UAAUjB,OAAOmB,KAAKjL,EAAK2zB,kBAAkBt1B,UAAU,SAAWmkC,EAAKC,GAAS,OAAOD,EAAMC,EAAMC,eAAkB,GAAIC,EAAgB3iC,EAAK2zB,kBAAkBS,YAAawO,EAAY5iC,EAAKmuB,OAAO9G,SAASsH,MAAM,KAAMkU,EAAoBD,EAAU,GAAIE,EAAsBF,EAAU/pC,OAAS,EAAI+pC,EAAU,GAAK,KAAMG,EAAczb,EAAgB0b,wBAAyBC,EAAqBj/B,OAAOk/B,YAAcH,EAAYpiC,OAAQwiC,EAAkC,UAAtBN,GAC/b,UAAtBA,GACGI,EAAqBV,GACrBQ,EAAYjiC,IAAMyhC,EACtBzhC,EAAMkD,OAAOo/B,YACbL,EAAYjiC,KACVqiC,GAAgDZ,EAAiB,EAArDjb,EAAgBob,aAAe,GAGjD,GAFA1Z,EAAYhpB,EAAK2zB,kBAAmB,YAAawP,GACjDna,EAAYhpB,EAAK2zB,kBAAmB,cAAewP,IAC/CnjC,EAAKmuB,OAAOlwB,OAAhB,CAEA,IAAIqD,EAAO0C,OAAOq/B,YAAcN,EAAYzhC,KACxCgiC,GAAW,EACXC,GAAU,EACc,WAAxBT,GACAxhC,IAASqhC,EAAgBI,EAAY7hC,OAAS,EAC9CoiC,GAAW,GAEkB,UAAxBR,IACLxhC,GAAQqhC,EAAgBI,EAAY7hC,MACpCqiC,GAAU,GAEdva,EAAYhpB,EAAK2zB,kBAAmB,aAAc2P,IAAaC,GAC/Dva,EAAYhpB,EAAK2zB,kBAAmB,cAAe2P,GACnDta,EAAYhpB,EAAK2zB,kBAAmB,aAAc4P,GAClD,IAAIliC,EAAQ2C,OAAO+C,SAASiyB,KAAK5E,aAC5BpwB,OAAOq/B,YAAcN,EAAY1hC,OAClCmiC,EAAYliC,EAAOqhC,EAAgB3+B,OAAO+C,SAASiyB,KAAK5E,YACxDqP,EAAapiC,EAAQshC,EAAgB3+B,OAAO+C,SAASiyB,KAAK5E,YAE9D,GADApL,EAAYhpB,EAAK2zB,kBAAmB,YAAa6P,IAC7CxjC,EAAKmuB,OAAOzG,OAGhB,GADA1nB,EAAK2zB,kBAAkB1sB,MAAMnG,IAAMA,EAAM,KACpC0iC,EAIA,GAAKC,EAIL,CACD,IAAIC,EAAMC,KACV,QAAYxjC,IAARujC,EACA,OACJ,IAAIE,EAAY5/B,OAAO+C,SAASiyB,KAAK5E,YACjCyP,EAAa9d,KAAKvF,IAAI,EAAGojB,EAAY,EAAIjB,EAAgB,GACzDmB,EAAe,wCACfC,EAAc,uCACdC,EAAcN,EAAIO,SAASprC,OAC3BqrC,EAAc,SAAWnB,EAAYzhC,KAAO,kBAChD0nB,EAAYhpB,EAAK2zB,kBAAmB,aAAa,GACjD3K,EAAYhpB,EAAK2zB,kBAAmB,cAAc,GAClD+P,EAAIS,WAAWL,EAAe,IAAMC,EAAcG,EAAaF,GAC/DhkC,EAAK2zB,kBAAkB1sB,MAAM3F,KAAOuiC,EAAa,KACjD7jC,EAAK2zB,kBAAkB1sB,MAAM5F,MAAQ,YAjBrCrB,EAAK2zB,kBAAkB1sB,MAAM3F,KAAO,OACpCtB,EAAK2zB,kBAAkB1sB,MAAM5F,MAAQA,EAAQ,UAL7CrB,EAAK2zB,kBAAkB1sB,MAAM3F,KAAOA,EAAO,KAC3CtB,EAAK2zB,kBAAkB1sB,MAAM5F,MAAQ,cAzCzBrB,EAAKmuB,OAAO9G,SAASrnB,EAAMsiC,GAgE/C,SAASqB,KAEL,IADA,IAAIS,EAAgB,KACXxrC,EAAI,EAAGA,EAAImO,SAASs9B,YAAYxrC,OAAQD,IAAK,CAClD,IAAI0rC,EAAQv9B,SAASs9B,YAAYzrC,GACjC,GAAK0rC,EAAML,SAAX,CAEA,IACIK,EAAML,SAEV,MAAO/jC,GACH,SAEJkkC,EAAgBE,EAChB,OAEJ,OAAwB,MAAjBF,EAAwBA,EAAgBG,KAEnD,SAASA,KACL,IAAIt9B,EAAQF,SAASuiB,cAAc,SAEnC,OADAviB,SAASy9B,KAAKha,YAAYvjB,GACnBA,EAAMq9B,MAEjB,SAASzM,KACD73B,EAAKmuB,OAAO5H,YAAcvmB,EAAKuuB,WAEnCqJ,KACAiF,KACApE,MAEJ,SAAS+G,KACLx/B,EAAK60B,OAAO5U,SACwC,IAAhDjc,OAAOmgB,UAAUC,UAAU5I,QAAQ,cACJrb,IAA/BgkB,UAAUsgB,iBACV52B,WAAW7N,EAAK89B,MAAO,GAGvB99B,EAAK89B,QAGb,SAAS3G,GAAWjnB,GAChBA,EAAEqvB,iBACFrvB,EAAEwvB,kBACF,IAAI5uB,EAAe,SAAU6a,GACzB,OAAOA,EAAIxC,WACPwC,EAAIxC,UAAU1iB,SAAS,mBACtBklB,EAAIxC,UAAU1iB,SAAS,wBACvBklB,EAAIxC,UAAU1iB,SAAS,eAE5BqiB,EAAIe,EAAWY,EAAeva,GAAIY,GACtC,QAAU3Q,IAAN2oB,EAAJ,CAEA,IAAInwB,EAASmwB,EACT4b,EAAgB1kC,EAAKqzB,sBAAwB,IAAI9N,KAAK5sB,EAAOuyB,QAAQ1F,WACrEmf,GAAqBD,EAAa9W,WAAa5tB,EAAKyyB,cACpDiS,EAAa9W,WACT5tB,EAAKyyB,aAAezyB,EAAKmuB,OAAO1G,WAAa,IAC5B,UAArBznB,EAAKmuB,OAAO/H,KAEhB,GADApmB,EAAKy5B,iBAAmB9gC,EACC,WAArBqH,EAAKmuB,OAAO/H,KACZpmB,EAAKmzB,cAAgB,CAACuR,QACrB,GAAyB,aAArB1kC,EAAKmuB,OAAO/H,KAAqB,CACtC,IAAIwe,EAAgBpL,GAAekL,GAC/BE,EACA5kC,EAAKmzB,cAAckK,OAAO7Q,SAASoY,GAAgB,GAEnD5kC,EAAKmzB,cAAc16B,KAAKisC,OAEF,UAArB1kC,EAAKmuB,OAAO/H,OACiB,IAA9BpmB,EAAKmzB,cAAct6B,QACnBmH,EAAKy9B,OAAM,GAAO,GAEtBz9B,EAAKqzB,sBAAwBqR,EAC7B1kC,EAAKmzB,cAAc16B,KAAKisC,GACwC,IAA5DxU,EAAawU,EAAc1kC,EAAKmzB,cAAc,IAAI,IAClDnzB,EAAKmzB,cAAc/pB,MAAK,SAAUqJ,EAAGC,GAAK,OAAOD,EAAE+S,UAAY9S,EAAE8S,cAGzE,GADAsP,IACI6P,EAAmB,CACnB,IAAI/F,EAAY5+B,EAAK0yB,cAAgBgS,EAAa5e,cAClD9lB,EAAK0yB,YAAcgS,EAAa5e,cAChC9lB,EAAKyyB,aAAeiS,EAAa9W,WAC7BgR,IACAnL,GAAa,gBACbmE,MAEJnE,GAAa,iBAejB,GAbAoJ,KACApE,KACAjZ,KACKmlB,GACoB,UAArB3kC,EAAKmuB,OAAO/H,MACe,IAA3BpmB,EAAKmuB,OAAO1G,gBAEmBtnB,IAA1BH,EAAKy5B,uBACWt5B,IAArBH,EAAKk1B,aACLl1B,EAAKy5B,kBAAoBz5B,EAAKy5B,iBAAiBxZ,QAH/C2Z,EAAejhC,QAKMwH,IAArBH,EAAKk1B,kBACgB/0B,IAArBH,EAAKk1B,aAA6Bl1B,EAAKk1B,YAAYjV,QACnDjgB,EAAKmuB,OAAO3J,cAAe,CAC3B,IAAIqgB,EAA8B,WAArB7kC,EAAKmuB,OAAO/H,OAAsBpmB,EAAKmuB,OAAOlJ,WACvD6f,EAA6B,UAArB9kC,EAAKmuB,OAAO/H,MACU,IAA9BpmB,EAAKmzB,cAAct6B,SAClBmH,EAAKmuB,OAAOlJ,YACb4f,GAAUC,IACVtF,KAGRlJ,KAliDJt2B,EAAKsvB,UAAYT,EAAiB,CAAEV,OAAQnuB,EAAKmuB,OAAQE,KAAMruB,EAAKquB,OACpEruB,EAAKo2B,UAAY,GACjBp2B,EAAK4/B,eAAiB,GACtB5/B,EAAK+kC,cAAgB,GACrB/kC,EAAKglC,MAAQxjC,EACbxB,EAAKilC,kBAAoB7R,EACzBpzB,EAAKklC,kBAAoB1R,GACzBxzB,EAAKy6B,YAAcA,GACnBz6B,EAAKi2B,WAAaA,GAClBj2B,EAAKy9B,MAAQA,GACbz9B,EAAK89B,MAAQA,GACb99B,EAAK42B,YAAcA,GACnB52B,EAAKmlC,eAAiB7b,EACtBtpB,EAAKi5B,UAAYA,EACjBj5B,EAAK+9B,QAAUA,GACf/9B,EAAKo5B,UAAYA,GACjBp5B,EAAKu3B,WAAaA,EAClBv3B,EAAKwf,YAAcA,GACnBxf,EAAKg3B,KAAOA,GACZh3B,EAAK63B,OAASA,GACd73B,EAAK/I,IAAMA,GACX+I,EAAK0lB,QAAUA,GACf1lB,EAAKolC,OAASA,GA8gDd,IAAIC,GAAY,CACZvyB,OAAQ,CAACggB,GAAasK,IACtB3V,WAAY,CAAC4U,GAAa/I,EAAkBkF,IAC5CvH,QAAS,CAACsG,GACVlG,QAAS,CAACkG,GACVjQ,gBAAiB,CAACge,IAClB/gB,WAAY,CACR,YACmC,IAA3BvkB,EAAKmuB,OAAO5J,YACZ/iB,EAAKxB,EAAK60B,OAAQ,QAAS70B,EAAKg3B,MAChCx1B,EAAKxB,EAAK60B,OAAQ,QAAS70B,EAAKg3B,QAGhCh3B,EAAK60B,OAAOwB,oBAAoB,QAASr2B,EAAKg3B,MAC9Ch3B,EAAK60B,OAAOwB,oBAAoB,QAASr2B,EAAKg3B,UAK9D,SAAS//B,GAAIsuC,EAAQjsC,GACjB,GAAe,OAAXisC,GAAqC,kBAAXA,EAE1B,IAAK,IAAIvsC,KADTd,OAAOu5B,OAAOzxB,EAAKmuB,OAAQoX,GACXA,OACWplC,IAAnBklC,GAAUrsC,IACVqsC,GAAUrsC,GAAKD,SAAQ,SAAU8mC,GAAK,OAAOA,YAIrD7/B,EAAKmuB,OAAOoX,GAAUjsC,OACI6G,IAAtBklC,GAAUE,GACVF,GAAUE,GAAQxsC,SAAQ,SAAU8mC,GAAK,OAAOA,OAC3Clc,EAAMnI,QAAQ+pB,IAAW,IAC9BvlC,EAAKmuB,OAAOoX,GAAUxc,EAASzvB,IAEvC0G,EAAK63B,SACLrY,IAAY,GAEhB,SAASgmB,GAAgBC,EAAWrW,GAChC,IAAIoS,EAAQ,GACZ,GAAIiE,aAAqBr6B,MACrBo2B,EAAQiE,EAAUp8B,KAAI,SAAUyjB,GAAK,OAAO9sB,EAAKsvB,UAAUxC,EAAGsC,WAC7D,GAAIqW,aAAqBlgB,MAA6B,kBAAdkgB,EACzCjE,EAAQ,CAACxhC,EAAKsvB,UAAUmW,EAAWrW,SAClC,GAAyB,kBAAdqW,EACZ,OAAQzlC,EAAKmuB,OAAO/H,MAChB,IAAK,SACL,IAAK,OACDob,EAAQ,CAACxhC,EAAKsvB,UAAUmW,EAAWrW,IACnC,MACJ,IAAK,WACDoS,EAAQiE,EACH9W,MAAM3uB,EAAKmuB,OAAO1J,aAClBpb,KAAI,SAAUic,GAAQ,OAAOtlB,EAAKsvB,UAAUhK,EAAM8J,MACvD,MACJ,IAAK,QACDoS,EAAQiE,EACH9W,MAAM3uB,EAAKquB,KAAK7pB,gBAChB6E,KAAI,SAAUic,GAAQ,OAAOtlB,EAAKsvB,UAAUhK,EAAM8J,MACvD,MACJ,QACI,WAIRpvB,EAAKmuB,OAAOjJ,aAAa,IAAI+K,MAAM,0BAA4BiR,KAAKE,UAAUqE,KAClFzlC,EAAKmzB,cAAiBnzB,EAAKmuB,OAAOrK,oBAC5B0d,EACAA,EAAMnpC,QAAO,SAAUy0B,GAAK,OAAOA,aAAavH,MAAQ6T,GAAUtM,GAAG,MAClD,UAArB9sB,EAAKmuB,OAAO/H,MACZpmB,EAAKmzB,cAAc/pB,MAAK,SAAUqJ,EAAGC,GAAK,OAAOD,EAAE+S,UAAY9S,EAAE8S,aAEzE,SAASE,GAAQJ,EAAMgR,EAAelH,GAGlC,QAFsB,IAAlBkH,IAA4BA,GAAgB,QACjC,IAAXlH,IAAqBA,EAASpvB,EAAKmuB,OAAOzJ,YAChC,IAATY,IAAeA,GAAUA,aAAgBla,OAAyB,IAAhBka,EAAKzsB,OACxD,OAAOmH,EAAKy9B,MAAMnH,GACtBkP,GAAgBlgB,EAAM8J,GACtBpvB,EAAKqzB,sBACDrzB,EAAKmzB,cAAcnzB,EAAKmzB,cAAct6B,OAAS,GACnDmH,EAAK63B,SACLN,OAAWp3B,EAAWm2B,GACtBlD,IACkC,IAA9BpzB,EAAKmzB,cAAct6B,QACnBmH,EAAKy9B,OAAM,GAEfje,GAAY8W,GACRA,GACA7C,GAAa,YAErB,SAASgO,GAAep3B,GACpB,OAAOA,EACFa,QACA7B,KAAI,SAAUq8B,GACf,MAAoB,kBAATA,GACS,kBAATA,GACPA,aAAgBngB,KACTvlB,EAAKsvB,UAAUoW,OAAMvlC,GAAW,GAElCulC,GACW,kBAATA,GACPA,EAAKr6B,MACLq6B,EAAK1G,GACE,CACH3zB,KAAMrL,EAAKsvB,UAAUoW,EAAKr6B,UAAMlL,GAChC6+B,GAAIh/B,EAAKsvB,UAAUoW,EAAK1G,QAAI7+B,IAE7BulC,KAENrtC,QAAO,SAAUwnC,GAAK,OAAOA,KAEtC,SAAS7M,KACLhzB,EAAKmzB,cAAgB,GACrBnzB,EAAKwmB,IAAMxmB,EAAKsvB,UAAUtvB,EAAKmuB,OAAO3H,MAAQ,IAAIjB,KAClD,IAAIogB,EAAgB3lC,EAAKmuB,OAAOqG,cACF,UAAxBx0B,EAAKhJ,MAAM4uC,UACe,aAAxB5lC,EAAKhJ,MAAM4uC,WACX5lC,EAAKhJ,MAAMmnB,aACXne,EAAKhJ,MAAMsC,QAAU0G,EAAKhJ,MAAMmnB,YAE9Bne,EAAKhJ,MAAMsC,MADX,MAENqsC,GACAH,GAAgBG,EAAe3lC,EAAKmuB,OAAOzJ,YAC/C1kB,EAAK69B,aACD79B,EAAKmzB,cAAct6B,OAAS,EACtBmH,EAAKmzB,cAAc,GACnBnzB,EAAKmuB,OAAO8C,SACVjxB,EAAKmuB,OAAO8C,QAAQzL,UAAYxlB,EAAKwmB,IAAIhB,UACvCxlB,EAAKmuB,OAAO8C,QACZjxB,EAAKmuB,OAAOkD,SACVrxB,EAAKmuB,OAAOkD,QAAQ7L,UAAYxlB,EAAKwmB,IAAIhB,UACvCxlB,EAAKmuB,OAAOkD,QACZrxB,EAAKwmB,IACvBxmB,EAAK0yB,YAAc1yB,EAAK69B,aAAa/X,cACrC9lB,EAAKyyB,aAAezyB,EAAK69B,aAAajQ,WAClC5tB,EAAKmzB,cAAct6B,OAAS,IAC5BmH,EAAKqzB,sBAAwBrzB,EAAKmzB,cAAc,SACxBhzB,IAAxBH,EAAKmuB,OAAOmH,UACZt1B,EAAKmuB,OAAOmH,QAAUt1B,EAAKsvB,UAAUtvB,EAAKmuB,OAAOmH,QAAS,aAClCn1B,IAAxBH,EAAKmuB,OAAOsH,UACZz1B,EAAKmuB,OAAOsH,QAAUz1B,EAAKsvB,UAAUtvB,EAAKmuB,OAAOsH,QAAS,QAC9Dz1B,EAAKu1B,iBACCv1B,EAAKmuB,OAAO8C,UACTjxB,EAAKmuB,OAAO8C,QAAQ1F,WAAa,GAC9BvrB,EAAKmuB,OAAO8C,QAAQnD,aAAe,GACnC9tB,EAAKmuB,OAAO8C,QAAQpD,aAAe,GAC/C7tB,EAAK01B,iBACC11B,EAAKmuB,OAAOkD,UACTrxB,EAAKmuB,OAAOkD,QAAQ9F,WAAa,GAC9BvrB,EAAKmuB,OAAOkD,QAAQvD,aAAe,GACnC9tB,EAAKmuB,OAAOkD,QAAQxD,aAAe,GAEnD,SAASkF,KACL/yB,EAAKhJ,MAAQorC,KACRpiC,EAAKhJ,OAIVgJ,EAAKhJ,MAAMinC,MAAQj+B,EAAKhJ,MAAMsP,KAC9BtG,EAAKhJ,MAAMsP,KAAO,OAClBtG,EAAKhJ,MAAMmyB,UAAUC,IAAI,mBACzBppB,EAAK60B,OAAS70B,EAAKhJ,MACfgJ,EAAKmuB,OAAOnK,WACZhkB,EAAKgkB,SAAWsF,EAActpB,EAAKhJ,MAAM4uC,SAAU5lC,EAAKmuB,OAAOlK,eAC/DjkB,EAAK60B,OAAS70B,EAAKgkB,SACnBhkB,EAAKgkB,SAAS7F,YAAcne,EAAKhJ,MAAMmnB,YACvCne,EAAKgkB,SAAS9D,SAAWlgB,EAAKhJ,MAAMkpB,SACpClgB,EAAKgkB,SAAStiB,SAAW1B,EAAKhJ,MAAM0K,SACpC1B,EAAKgkB,SAASrI,SAAW3b,EAAKhJ,MAAM2kB,SACpC3b,EAAKgkB,SAAS1d,KAAO,OACrBtG,EAAKhJ,MAAMuzB,aAAa,OAAQ,WAC3BvqB,EAAKmuB,OAAOzG,QAAU1nB,EAAKhJ,MAAM+yB,YAClC/pB,EAAKhJ,MAAM+yB,WAAW+O,aAAa94B,EAAKgkB,SAAUhkB,EAAKhJ,MAAM+hC,cAEhE/4B,EAAKmuB,OAAOtK,YACb7jB,EAAK60B,OAAOtK,aAAa,WAAY,YACzC+a,MArBItlC,EAAKmuB,OAAOjJ,aAAa,IAAI+K,MAAM,oCAuB3C,SAASqV,KACLtlC,EAAK4gC,iBAAmB5gC,EAAKmuB,OAAO7G,iBAAmBtnB,EAAK60B,OAEhE,SAAS4B,KACL,IAAIoP,EAAY7lC,EAAKmuB,OAAOlJ,WACtBjlB,EAAKmuB,OAAO5H,WACR,OACA,iBACJ,OACNvmB,EAAK49B,YAActU,EAAc,QAAStpB,EAAKhJ,MAAMkyB,UAAY,qBACjElpB,EAAK49B,YAAYjiB,SAAW,EAC5B3b,EAAK49B,YAAYt3B,KAAOu/B,EACxB7lC,EAAK49B,YAAY1d,SAAWlgB,EAAKhJ,MAAMkpB,SACvClgB,EAAK49B,YAAYl8B,SAAW1B,EAAKhJ,MAAM0K,SACvC1B,EAAK49B,YAAYzf,YAAcne,EAAKhJ,MAAMmnB,YAC1Cne,EAAK8lC,gBACa,mBAAdD,EACM,gBACc,SAAdA,EACI,QACA,QACV7lC,EAAKmzB,cAAct6B,OAAS,IAC5BmH,EAAK49B,YAAYrmB,aAAevX,EAAK49B,YAAYtkC,MAAQ0G,EAAK0uB,WAAW1uB,EAAKmzB,cAAc,GAAInzB,EAAK8lC,kBAErG9lC,EAAKmuB,OAAO8C,UACZjxB,EAAK49B,YAAYnd,IAAMzgB,EAAK0uB,WAAW1uB,EAAKmuB,OAAO8C,QAAS,UAC5DjxB,EAAKmuB,OAAOkD,UACZrxB,EAAK49B,YAAYpd,IAAMxgB,EAAK0uB,WAAW1uB,EAAKmuB,OAAOkD,QAAS,UAC5DrxB,EAAKhJ,MAAMkmC,aAAa,UACxBl9B,EAAK49B,YAAYjd,KAAO5U,OAAO/L,EAAKhJ,MAAMkmC,aAAa,UAC3Dl9B,EAAKhJ,MAAMsP,KAAO,cACInG,IAAlBH,EAAKgkB,WACLhkB,EAAKgkB,SAAS1d,KAAO,UACzB,IACQtG,EAAKhJ,MAAM+yB,YACX/pB,EAAKhJ,MAAM+yB,WAAW+O,aAAa94B,EAAK49B,YAAa59B,EAAKhJ,MAAM+hC,aAExE,MAAO9K,IACPzsB,EAAKxB,EAAK49B,YAAa,UAAU,SAAU1tB,GACvClQ,EAAK0lB,QAAQ+E,EAAeva,GAAG5W,OAAO,EAAO0G,EAAK8lC,iBAClDrS,GAAa,YACbA,GAAa,cAGrB,SAAS2R,GAAOl1B,GACZ,IAAoB,IAAhBlQ,EAAK4yB,OACL,OAAO5yB,EAAK89B,QAChB99B,EAAKg3B,KAAK9mB,GAEd,SAASujB,GAAa1tB,EAAOtL,GACzB,QAAoB0F,IAAhBH,EAAKmuB,OAAT,CAEA,IAAI4X,EAAQ/lC,EAAKmuB,OAAOpoB,GACxB,QAAc5F,IAAV4lC,GAAuBA,EAAMltC,OAAS,EACtC,IAAK,IAAID,EAAI,EAAGmtC,EAAMntC,IAAMA,EAAImtC,EAAMltC,OAAQD,IAC1CmtC,EAAMntC,GAAGoH,EAAKmzB,cAAenzB,EAAKhJ,MAAMsC,MAAO0G,EAAMvF,GAE/C,aAAVsL,IACA/F,EAAKhJ,MAAMihC,cAAcD,GAAY,WACrCh4B,EAAKhJ,MAAMihC,cAAcD,GAAY,YAG7C,SAASA,GAAY59B,GACjB,IAAI8V,EAAInJ,SAASixB,YAAY,SAE7B,OADA9nB,EAAE81B,UAAU5rC,GAAM,GAAM,GACjB8V,EAEX,SAASspB,GAAelU,GACpB,IAAK,IAAI1sB,EAAI,EAAGA,EAAIoH,EAAKmzB,cAAct6B,OAAQD,IAAK,CAChD,IAAI8rC,EAAe1kC,EAAKmzB,cAAcv6B,GACtC,GAAI8rC,aAAwBnf,MACa,IAArC2K,EAAawU,EAAcpf,GAC3B,MAAO,GAAK1sB,EAEpB,OAAO,EAEX,SAAS8gC,GAAcpU,GACnB,QAAyB,UAArBtlB,EAAKmuB,OAAO/H,MAAoBpmB,EAAKmzB,cAAct6B,OAAS,KAExDq3B,EAAa5K,EAAMtlB,EAAKmzB,cAAc,KAAO,GACjDjD,EAAa5K,EAAMtlB,EAAKmzB,cAAc,KAAO,GAErD,SAAS0J,KACD78B,EAAKmuB,OAAO5H,YAAcvmB,EAAKuuB,WAAavuB,EAAKi3B,WAErDj3B,EAAKu8B,aAAaxjC,SAAQ,SAAUojC,EAAavjC,GAC7C,IAAIk0B,EAAI,IAAIvH,KAAKvlB,EAAK0yB,YAAa1yB,EAAKyyB,aAAc,GACtD3F,EAAE1B,SAASprB,EAAKyyB,aAAe75B,GAC3BoH,EAAKmuB,OAAO1G,WAAa,GACS,WAAlCznB,EAAKmuB,OAAO9H,kBACZrmB,EAAKw8B,cAAc5jC,GAAG4wB,YAClBqB,EAAWiC,EAAEc,WAAY5tB,EAAKmuB,OAAO3G,sBAAuBxnB,EAAKquB,MAAQ,IAG7EruB,EAAK27B,wBAAwBriC,MAAQwzB,EAAEc,WAAW5iB,WAEtDmxB,EAAY7iC,MAAQwzB,EAAEhH,cAAc9a,cAExChL,EAAKu9B,yBACuBp9B,IAAxBH,EAAKmuB,OAAO8C,UACPjxB,EAAK0yB,cAAgB1yB,EAAKmuB,OAAO8C,QAAQnL,cACpC9lB,EAAKyyB,cAAgBzyB,EAAKmuB,OAAO8C,QAAQrD,WACzC5tB,EAAK0yB,YAAc1yB,EAAKmuB,OAAO8C,QAAQnL,eACrD9lB,EAAKw9B,yBACuBr9B,IAAxBH,EAAKmuB,OAAOkD,UACPrxB,EAAK0yB,cAAgB1yB,EAAKmuB,OAAOkD,QAAQvL,cACpC9lB,EAAKyyB,aAAe,EAAIzyB,EAAKmuB,OAAOkD,QAAQzD,WAC5C5tB,EAAK0yB,YAAc1yB,EAAKmuB,OAAOkD,QAAQvL,gBAEzD,SAASqZ,GAAW8G,GAChB,IAAI7W,EAAS6W,IACRjmC,EAAKmuB,OAAOnK,SAAWhkB,EAAKmuB,OAAOpK,UAAY/jB,EAAKmuB,OAAOzJ,YAChE,OAAO1kB,EAAKmzB,cACP9pB,KAAI,SAAU68B,GAAQ,OAAOlmC,EAAK0uB,WAAWwX,EAAM9W,MACnD/2B,QAAO,SAAUy0B,EAAGl0B,EAAGyR,GACxB,MAA4B,UAArBrK,EAAKmuB,OAAO/H,MACfpmB,EAAKmuB,OAAOlJ,YACZ5a,EAAImR,QAAQsR,KAAOl0B,KAEtB4Q,KAA0B,UAArBxJ,EAAKmuB,OAAO/H,KAChBpmB,EAAKmuB,OAAO1J,YACZzkB,EAAKquB,KAAK7pB,gBAEpB,SAASgb,GAAY8W,QACK,IAAlBA,IAA4BA,GAAgB,QACvBn2B,IAArBH,EAAK49B,aAA6B59B,EAAK8lC,kBACvC9lC,EAAK49B,YAAYtkC,WACkB6G,IAA/BH,EAAKqzB,sBACCrzB,EAAK0uB,WAAW1uB,EAAKqzB,sBAAuBrzB,EAAK8lC,iBACjD,IAEd9lC,EAAKhJ,MAAMsC,MAAQ6lC,GAAWn/B,EAAKmuB,OAAOzJ,iBACpBvkB,IAAlBH,EAAKgkB,WACLhkB,EAAKgkB,SAAS1qB,MAAQ6lC,GAAWn/B,EAAKmuB,OAAOpK,aAE3B,IAAlBuS,GACA7C,GAAa,iBAErB,SAASyD,GAAgBhnB,GACrB,IAAI6lB,EAActL,EAAeva,GAC7Bi2B,EAAcnmC,EAAKs8B,aAAa71B,SAASsvB,GACzCqQ,EAAcpmC,EAAKy8B,aAAah2B,SAASsvB,GACzCoQ,GAAeC,EACf3L,GAAY0L,GAAe,EAAI,GAE1BnmC,EAAKu8B,aAAa/gB,QAAQua,IAAgB,EAC/CA,EAAYz+B,SAEPy+B,EAAY5M,UAAU1iB,SAAS,WACpCzG,EAAKi2B,WAAWj2B,EAAK0yB,YAAc,GAE9BqD,EAAY5M,UAAU1iB,SAAS,cACpCzG,EAAKi2B,WAAWj2B,EAAK0yB,YAAc,GAG3C,SAASiC,GAAYzkB,GACjBA,EAAEqvB,iBACF,IAAI8G,EAAuB,YAAXn2B,EAAE5J,KAAoByvB,EAActL,EAAeva,GAAIlZ,EAAQ++B,OAC7D51B,IAAdH,EAAKsoB,MAAsByN,IAAgB/1B,EAAKsoB,OAChDtoB,EAAKsoB,KAAKkB,YACNxpB,EAAKquB,KAAK/F,KAAK,EAAItoB,EAAKsoB,KAAKkB,cAAgBxpB,EAAKquB,KAAK/F,KAAK,MAEpE,IAAI7H,EAAM+K,WAAWx0B,EAAMkmC,aAAa,QAAS1c,EAAMgL,WAAWx0B,EAAMkmC,aAAa,QAASvc,EAAO6K,WAAWx0B,EAAMkmC,aAAa,SAAUoJ,EAAW9Z,SAASx1B,EAAMsC,MAAO,IAAK08B,EAAQ9lB,EAAE8lB,QACxLqQ,EAAyB,KAAZn2B,EAAE6L,MAAe,GAAK,EAAK,GACzCxW,EAAW+gC,EAAW3lB,EAAOqV,EACjC,GAA2B,qBAAhBh/B,EAAMsC,OAAgD,IAAvBtC,EAAMsC,MAAMT,OAAc,CAChE,IAAI0tC,EAAavvC,IAAUgJ,EAAKk1B,YAAasR,EAAexvC,IAAUgJ,EAAKm1B,cACvE5vB,EAAWkb,GACXlb,EACIib,EACIjb,EACA,GAAKghC,IACJ,EAAIA,IAAe,GAAKvmC,EAAKsoB,OAClCke,GACA1O,OAAkB33B,GAAY,EAAGH,EAAKk1B,cAErC3vB,EAAWib,IAChBjb,EACIvO,IAAUgJ,EAAKk1B,YAAc3vB,EAAWib,EAAM,GAAKxgB,EAAKsoB,MAAQ7H,EAChE+lB,GACA1O,OAAkB33B,EAAW,EAAGH,EAAKk1B,cAEzCl1B,EAAKsoB,MACLie,IACU,IAAT5lB,EACKpb,EAAW+gC,IAAa,GACxBvgB,KAAKyU,IAAIj1B,EAAW+gC,GAAY3lB,KACtC3gB,EAAKsoB,KAAKkB,YACNxpB,EAAKquB,KAAK/F,KAAK,EAAItoB,EAAKsoB,KAAKkB,cAAgBxpB,EAAKquB,KAAK/F,KAAK,MAEpEtxB,EAAMsC,MAAQqvB,EAAIpjB,IAI1B,OADAotB,IACO3yB,EAEX,SAASymC,EAAWC,EAAUvY,GAK1B,IAJA,IAAIwY,EAAQv7B,MAAML,UAAUG,MACvBD,KAAKy7B,GACLruC,QAAO,SAAUwnC,GAAK,OAAOA,aAAa+G,eAC3CC,EAAY,GACPjuC,EAAI,EAAGA,EAAI+tC,EAAM9tC,OAAQD,IAAK,CACnC,IAAI8wB,EAAOid,EAAM/tC,GACjB,IACI,GAA0C,OAAtC8wB,EAAKwT,aAAa,gBAClB,cACoB/8B,IAApBupB,EAAK+c,aACL/c,EAAK+c,WAAW1I,UAChBrU,EAAK+c,gBAAatmC,GAEtBupB,EAAK+c,WAAaxU,EAAkBvI,EAAMyE,GAAU,IACpD0Y,EAAUpuC,KAAKixB,EAAK+c,YAExB,MAAOv2B,GACHiV,QAAQxlB,MAAMuQ,IAGtB,OAA4B,IAArB22B,EAAUhuC,OAAeguC,EAAU,GAAKA,EAExB,qBAAhBD,aACmB,qBAAnBE,gBACa,qBAAbC,WACPD,eAAe/7B,UAAU9G,UAAY8iC,SAASh8B,UAAU9G,UAAY,SAAUkqB,GAC1E,OAAOsY,EAAW3vC,KAAMq3B,IAE5ByY,YAAY77B,UAAU9G,UAAY,SAAUkqB,GACxC,OAAOsY,EAAW,CAAC3vC,MAAOq3B,KAGlC,IAAIlqB,EAAY,SAAU+iC,EAAU7Y,GAChC,MAAwB,kBAAb6Y,EACAP,EAAWziC,OAAO+C,SAASyvB,iBAAiBwQ,GAAW7Y,GAEzD6Y,aAAoBC,KAClBR,EAAW,CAACO,GAAW7Y,GAGvBsY,EAAWO,EAAU7Y,IAGpClqB,EAAUmuB,cAAgB,GAC1BnuB,EAAUC,MAAQ,CACdgjC,GAAI1V,EAAS,GAAI,GACjBh2B,QAASg2B,EAAS,GAAI,IAE1BvtB,EAAUkjC,SAAW,SAAU9Y,GAC3BpqB,EAAUC,MAAM1I,QAAUg2B,EAASA,EAAS,GAAIvtB,EAAUC,MAAM1I,SAAU6yB,IAE9EpqB,EAAUmjC,YAAc,SAAUjZ,GAC9BlqB,EAAUmuB,cAAgBZ,EAASA,EAAS,GAAIvtB,EAAUmuB,eAAgBjE,IAE9ElqB,EAAUqrB,UAAYT,EAAiB,IACvC5qB,EAAUyqB,WAAaV,EAAoB,IAC3C/pB,EAAUisB,aAAeA,EACH,qBAAXmX,QAA+C,qBAAdA,OAAOtnC,KAC/CsnC,OAAOtnC,GAAGkE,UAAY,SAAUkqB,GAC5B,OAAOsY,EAAW3vC,KAAMq3B,KAGhC5I,KAAKxa,UAAUu8B,QAAU,SAAUnT,GAC/B,OAAO,IAAI5O,KAAKzuB,KAAKgvB,cAAehvB,KAAK82B,WAAY92B,KAAK6uB,WAA6B,kBAATwO,EAAoB3H,SAAS2H,EAAM,IAAMA,KAErG,qBAAXnwB,SACPA,OAAOC,UAAYA,GAER,gB,kCC7/Df,6LAASnM,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAWpM,IAAIW,EAAQ,eAAsB,eAAStB,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAa,QAAgB,eAAU,OAAW,OAAe8I,KAAK,KAAM,UAAW,GAAI,CACvM+lC,UAAW,eAAS,QACpB/jC,QAAS,eAAS,QAAmB,MAClC,QAGMgkC,EAAyB,aAAI/wC,OAAO,CAC7C2D,KAAM,OACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIitC,EAEAztC,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAChBqpC,EAAgB1tC,EAAM0tC,cACtBC,EAAoB3tC,EAAM2tC,kBAC1BC,EAAkB5tC,EAAM4tC,gBACxBC,EAASttC,IAETP,EAAM2oB,QACRklB,EAASttC,EAAE,OAAY,CACrBP,MAAO,eAAW,OAAYA,MAIlC,IAAI8tC,EAAYvtC,IAShB,OAPIP,EAAM+tC,WACRD,EAAYvtC,EAAE,OAAe,CAC3BP,MAAO,eAAW,OAAeA,GACjCmD,MAAO,CAAC,WAIL5C,EAAEP,EAAMguC,QAAS,eAAUvtC,EAAM,CACtCgJ,YAAa,YACbtG,MAAO,EAAEsqC,EAAQ,CACf,mBAAoBztC,EAAMwJ,SACzBvK,EAAgBwuC,EAAO,MAAM7sC,OAAO8sC,GAAgBA,GAAgBzuC,EAAgBwuC,EAAO,UAAU7sC,OAAO+sC,GAAoBA,GAAoB1uC,EAAgBwuC,EAAO,QAAQ7sC,OAAOgtC,GAAkBA,GAAkBH,GAAQztC,EAAMutC,aAC7O,CAACM,EAAQC,EAAWzpC,Q,oCCxD5B,iLAASvG,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAIW,EAAQ,eAAsB,eAAStB,EAAcA,EAAc,GAAI,eAAU,OAAY,OAAe8I,KAAK,KAAM,YAAa,GAAI,CACjJiB,OAAQ,eAAS,QACjBwlC,YAAa,eAAS,QACtBvlC,WAAY,eAAS,WAClB,QAGMwlC,EAA2B,aAAIzxC,OAAO,CAC/C2D,KAAM,OACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIitC,EAEAztC,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAChB8pC,EAAkBnuC,EAAMmuC,gBACxBC,EAAsBpuC,EAAMouC,oBAC5BC,EAAoBruC,EAAMquC,kBAC9B,OAAO9tC,EAAEP,EAAMsuC,UAAW,eAAU7tC,EAAM,CACxCgJ,YAAa,cACbtG,MAAO,CAACnD,EAAMiuC,aAAcR,EAAQ,GAAIxuC,EAAgBwuC,EAAO,MAAM7sC,OAAOutC,GAAkBA,GAAkBlvC,EAAgBwuC,EAAO,UAAU7sC,OAAOwtC,GAAsBA,GAAsBnvC,EAAgBwuC,EAAO,QAAQ7sC,OAAOytC,GAAoBA,GAAoBZ,IAClRnkC,SAAUjF,EAAW,GAAK,eAAWrE,EAAM0I,WAAY1I,EAAMyI,UAC3DpE,O,kCCtCR,2GAASkqC,EAAgBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI/9B,UAAU,qCAEhH,SAASg+B,EAAkB/vC,EAAQqB,GAAS,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAMnB,OAAQD,IAAK,CAAE,IAAI+vC,EAAa3uC,EAAMpB,GAAI+vC,EAAWnwC,WAAamwC,EAAWnwC,aAAc,EAAOmwC,EAAWpvC,cAAe,EAAU,UAAWovC,IAAYA,EAAWnvC,UAAW,GAAMtB,OAAOkB,eAAeT,EAAQgwC,EAAW3vC,IAAK2vC,IAE7S,SAASC,EAAaH,EAAaI,EAAYC,GAAmJ,OAAhID,GAAYH,EAAkBD,EAAY19B,UAAW89B,GAAiBC,GAAaJ,EAAkBD,EAAaK,GAAqBL,EAuCzM,IAAIM,EAAqB,4BAErBC,EAAkC,WACpC,SAASA,EAAmB1tB,EAAIqS,EAASsb,GACvCV,EAAgBzxC,KAAMkyC,GAEtBlyC,KAAKwkB,GAAKA,EACVxkB,KAAKoyC,SAAWvb,EAAQub,SACxBpyC,KAAKqyC,OAASxb,EAAQwb,QAAU,EAChCryC,KAAKsyC,KAAOzb,EAAQyb,OAAQ,EAC5BtyC,KAAKuyC,SAAW,KAChBvyC,KAAKwyC,aAAUnpC,EACfrJ,KAAKyyC,UAAW,EAEhBzyC,KAAK0yC,eAAeP,GAgFtB,OA7EAL,EAAaI,EAAoB,CAAC,CAChChwC,IAAK,iBACLM,MAAO,SAAwB2vC,GAC7B,IAAIrjC,EAAQ9O,KASZ,GANIA,KAAKuyC,UAEPvyC,KAAK2yC,QAIH3yC,KAAKyyC,UAAa,eAAWzyC,KAAKoyC,UAAtC,CAMA,IAGEpyC,KAAKuyC,SAAW,IAAIK,qBAAqB5yC,KAAK4W,QAAQlM,KAAK1K,MAAO,CAEhE6yC,KAAM,KAENC,WAAY9yC,KAAKqyC,OAEjBU,UAAW,IAEb,MAAOC,GAKP,OAHAhzC,KAAKyyC,UAAW,EAChBzyC,KAAKuyC,cAAWlpC,OAChBrJ,KAAKoyC,SAAS,MAOhBD,EAAMh5B,QAAQpK,WAAU,WACtB,gBAAU,WAGJD,EAAMyjC,UACRzjC,EAAMyjC,SAASU,QAAQnkC,EAAM0V,aAOpC,CACDtiB,IAAK,UACLM,MAAO,SAAiB0wC,GACtB,IAAIC,EAAQD,EAAUA,EAAQ,GAAK,GAC/BE,EAAiBp8B,QAAQm8B,EAAMC,gBAAkBD,EAAME,kBAAoB,GAE3ED,IAAmBpzC,KAAKwyC,UAC1BxyC,KAAKwyC,QAAUY,EACfpzC,KAAKoyC,SAASgB,GAEVpzC,KAAKsyC,MAAQtyC,KAAKwyC,UACpBxyC,KAAKyyC,UAAW,EAChBzyC,KAAK2yC,WAIV,CACDzwC,IAAK,OACLM,MAAO,WAELxC,KAAKuyC,UAAYvyC,KAAKuyC,SAASe,aAC/BtzC,KAAKuyC,SAAW,SAIbL,EA5F6B,GA+FlCjL,EAAU,SAAiBziB,GAC7B,IAAI+tB,EAAW/tB,EAAGytB,GAEdM,GAAYA,EAASI,MACvBJ,EAASI,cAGJnuB,EAAGytB,IAGRvnC,EAAO,SAAc8Z,EAAI9gB,EAAMyuC,GACjC,IAAI3vC,EAAQkB,EAAKlB,MACb+wC,EAAY7vC,EAAK6vC,UAEjB1c,EAAU,CACZwb,OAAQ,MACRC,MAAM,EACNF,SAAU5vC,GAGZ,eAAK+wC,GAAWtxC,SAAQ,SAAUuxC,GAE5B,OAAUh/B,KAAKg/B,GACjB3c,EAAQwb,OAAS,GAAGvuC,OAAO0vC,EAAK,MACD,SAAtBA,EAAIhuB,gBACbqR,EAAQyb,MAAO,MAInBrL,EAAQziB,GAERA,EAAGytB,GAAsB,IAAIC,EAAmB1tB,EAAIqS,EAASsb,GAE7D3tB,EAAGytB,GAAoBwB,eAAiB,eAAMF,IAI5CG,EAAmB,SAA0BlvB,EAAImsB,EAAOwB,GAC1D,IAAI3vC,EAAQmuC,EAAMnuC,MACdkM,EAAWiiC,EAAMjiC,SACjB6kC,EAAY5C,EAAM4C,UAKtBA,EAAY,eAAMA,IAGd/uB,GAAOhiB,IAAUkM,GAAa8V,EAAGytB,IAAwB,eAAWsB,EAAW/uB,EAAGytB,GAAoBwB,iBAExG/oC,EAAK8Z,EAAI,CACPhiB,MAAOA,EACP+wC,UAAWA,GACVpB,IAKHwB,EAAS,SAAgBnvB,GAE3ByiB,EAAQziB,IAICovB,EAAY,CACrBlpC,KAAMA,EACNgpC,iBAAkBA,EAClBC,OAAQA,I,oCC/MV,sFAKWzwC,EAAQ,eAAsB,OAAU,SAMxC2wC,EAAmB,aAAIl0C,OAAO,CACvC2D,KAAM,QACNwwC,QAAS,OACT5wC,MAAOA,EACPtD,SAAU,CACRgF,IAAK,WACH,MAAO,U,oCCjBb,qKAAS5D,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAYpM,IAAIW,EAAQ,CACjB6wC,SAAU,eAAS,QAAmB,GACtCC,WAAY,eAAS,QAAmB,GACxCC,WAAY,eAAS,QAAmB,GACxCntC,KAAM,eAAS,QAAmB,GAClCotC,MAAO,eAAS,QAAmB,GACnCC,MAAO,eAAS,QAAmB,GACnCC,iBAAkB,eAAS,QAAmB,GAC9CC,SAAU,eAAS,QAAmB,GACtCC,WAAY,eAAS,QAA0B,GAC/CC,MAAO,eAAS,QAAmB,GAEnCxtC,aAAc,eAAS,QAA0B,GACjDwb,QAAS,eAAS,QAAmB,GACrCiyB,WAAY,eAAS,QACrB9uC,aAAc,eAAS,SAId+uC,EAAqB,aAAI90C,OAAO,CACzC4E,OAAQ,CAAC,QACTmC,QAAS,WACP,MAAO,CACLE,QAAS5G,OAKb2E,cAAc,EACdzB,MAAOA,EACPtD,SAAU,CAERuF,aAAc,WACZ,IAAImvC,EAAat0C,KAAKs0C,WAEtB,OADAA,EAA4B,KAAfA,GAA2BA,GACjCt0C,KAAKiF,WAAoBqvC,GAElClvC,eAAgB,WACd,IAAI2B,EAAe/G,KAAK+G,aAExB,OADAA,EAAgC,KAAjBA,GAA6BA,GACrC/G,KAAKiF,WAAoB8B,GAElC2tC,eAAgB,WACd,IAAIvvC,EAAenF,KAAKmF,aACxB,MAAO,CAACnF,KAAKoF,eAAiB,wBAA0B,IAAqB,IAAjBD,EAAwB,mBAAqBA,EAAe,oBAAoBrB,OAAO9D,KAAKs0C,YAAc,IAAI/yC,OAAO,SAEnLozC,cAAe,WACb,IAAIvvC,EAAiBpF,KAAKoF,eAC1B,OAAOA,IAAmB,eAAUA,GAAkB,CACpDwvC,UAAWxvC,GACT,IAENyvC,aAAc,WACZ,IAAIV,EAAQn0C,KAAKm0C,MACbzuC,EAAe1F,KAAK0F,aAExB,OADAyuC,EAAQn0C,KAAK80C,cAAgBX,EAAQA,GAASn0C,KAAKkS,cAAcnQ,OAAS,IAAM/B,KAAKuR,aAC9E,CACPvR,KAAKw0C,WACL,CACE,gBAAiBx0C,KAAKuiB,QACtB,cAAe4xB,EACf,aAAcn0C,KAAK8G,KACnB,iBAAkB9G,KAAK+zC,SACvB,mBAAoB/zC,KAAKg0C,WACzB,WAAYh0C,KAAKu0C,MAEjBQ,OAAQ/0C,KAAKq0C,SACb,gBAAiBr0C,KAAKk0C,MACtB,sBAAuBl0C,KAAKi0C,WAC5B,6BAA8Bj0C,KAAKo0C,kBAClC1uC,EAAe,GAAG5B,OAAO9D,KAAK8G,KAAO,KAAO,QAAS,KAAKhD,OAAO4B,GAAgB,GACpF1F,KAAK6qB,oBACL7qB,KAAKsa,yBAEP06B,WAAY,WACV,IAAI/iC,EAAQjS,KAAKkS,cACbgE,EAAgBlW,KAAKkW,cACrBtF,EAAS5Q,KAAK6Q,eACd0J,EAAuBva,KAAKua,qBAE5B06B,EAAM,EAAEj1C,KAAKkG,SAAW,IAAI,oBAAqBlG,KAAKomB,WAAW7kB,OAAO,QAAUmR,KAAK,MAAQ,KAC/FwiC,EAAYl1C,KAAK80C,cAAgB,GAAK,CACxC,YAAa90C,KAAKuR,aAAe,OAAS,QAC1C,gBAAiB,eAASX,EAAO7O,QACjC,mBAAoBkzC,GAElBE,EAAWljC,GAASiE,GAAiBA,EAAcnU,OAASkQ,EAAMlQ,OAAS,eAASmU,EAAcnU,QAAU,KAChH,OAAOH,EAAcA,EAAcA,EAAc,CAG/C,gBAAiBuzC,GAChBn1C,KAAKkG,SAAU,GAAI,CAEpBgB,GAAIlH,KAAK6iB,SACT7c,KAAM,SACLkvC,GAAY36B,KAGnB/W,OAAQ,SAAgBC,GACtB,IAAIixC,EAAiB10C,KAAK00C,eACtBruB,EAAgBrmB,KAAKqmB,cACrB+uB,EAAiBp1C,KAAKo1C,eACtBC,EAAcr1C,KAAKq1C,YACnBjwB,EAAcplB,KAAKolB,YACnBkwB,EAAct1C,KAAKs1C,YACnBnvC,EAAW,GAEXnG,KAAK80C,cACP3uC,EAASxE,KAAK3B,KAAKoG,kBAGnBD,EAASxE,KAAK0kB,EAAgBA,IAAkB,MAEhDlgB,EAASxE,KAAKyzC,EAAiBA,IAAmB,MAElDjvC,EAASxE,KAAK0zC,EAAcA,IAAgB,MAE5ClvC,EAASxE,KAAKyjB,EAAcA,IAAgB,MAE5Cjf,EAASxE,KAAK2zC,EAAcA,IAAgB,OAI9C,IAAIC,EAAS9xC,EAAE,QAAS,CACtBkJ,YAAa,gBACbtG,MAAOrG,KAAK60C,aACZvuC,MAAOtG,KAAKg1C,WACZ9yC,IAAK,WACJiE,EAAS5E,OAAO,SAEnB,OAAOmzC,EAAe3yC,OAAS,EAAI0B,EAAE,MAAO,CAC1C4C,MAAOquC,EACPvkC,MAAOnQ,KAAK20C,cACZzyC,IAAK,QACJ,CAACqzC,IAAWA,M,oCCrJU,oBAAlBn0C,OAAOu5B,SACdv5B,OAAOu5B,OAAS,SAAU94B,GAEtB,IADA,IAAIsH,EAAO,GACFqsC,EAAK,EAAGA,EAAK70C,UAAUoB,OAAQyzC,IACpCrsC,EAAKqsC,EAAK,GAAK70C,UAAU60C,GAE7B,IAAK3zC,EACD,MAAM+R,UAAU,8CAOpB,IALA,IAAI6hC,EAAU,SAAUzzC,GAChBA,GACAZ,OAAOD,KAAKa,GAAQC,SAAQ,SAAUC,GAAO,OAAQL,EAAOK,GAAOF,EAAOE,OAGzEi1B,EAAK,EAAGue,EAASvsC,EAAMguB,EAAKue,EAAO3zC,OAAQo1B,IAAM,CACtD,IAAIn1B,EAAS0zC,EAAOve,GACpBse,EAAQzzC,GAEZ,OAAOH,K,kCCnBf,SAASb,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAJ3M,0KAOO,IAAIozC,EAAyB,gBACzBC,EAAwB,cACxBC,EAAyB,eAGzBC,EAAqB,CAACH,EAAwBC,EAAuBC,GAAwB7iC,QAAO,SAAU1E,EAAQpM,GAC/H,OAAON,EAAcA,EAAc,GAAI0M,GAAS,GAAInM,EAAgB,GAAID,GAAK,MAC5E,IAGQ6zC,EAAe,CAAC,IAAK,MAChC,SAAU,WACV,uCAAwC,wCAAyC,0CAA2C,gBAAiB,kBAAmB,kBAAmB,oBAAqB,6CAA6CrjC,KAAK,M,oCCnB1P,2GAASvQ,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAOpM,IAAIW,EAAQ,eAAsB,CACvCqH,MAAO,eAAS,QAAmB,GACnC3F,IAAK,eAAS,OAAkB,OAChCmb,cAAe,eAAS,OAAkB,QACzC,SAGQi2B,EAA2B,aAAIr2C,OAAO,CAC/C2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAChBwY,EAAgB7c,EAAM6c,cACtBjV,EAA0B,QAAlBiV,EAA0B,QAA4B,WAAlBA,EAA6B,MAE7EA,EACA,OAAOtc,EAAEP,EAAM0B,IAAK,eAAUjB,EAAM,CAClCgJ,YAAa,cACbtG,MAAOlE,EAAgB,CACrB,oBAAqBe,EAAMqH,OAC1B,cAAczG,OAAOgH,GAAQA,KAC9BvD,O,oCC/BR,kGAKWrE,EAAQ,eAAsB,CACvC0B,IAAK,eAAS,OAAkB,QAC/B,SAGQqxC,EAA0B,aAAIt2C,OAAO,CAC9C2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SACpB,OAAO9D,EAAEP,EAAM0B,IAAK,eAAUjB,EAAM,CAClCgJ,YAAa,eACXpF,O,oCCpBR,oIAMWrE,EAAQ,CACjBgzC,UAAW,eAAS,QAAmB,GAGvCC,eAAgB,eAAS,QAEzB1wC,YAAa,eAAS,QACtB2wC,WAAY,eAAS,QACrBC,aAAc,eAAS,SAIdC,EAAa,aAAI32C,OAAO,CACjCuD,MAAOA,EACP3C,QAAS,CACPg2C,kBAAmB,WACjB,IAAI9yC,EAAIzD,KAAKgR,eAEb,OAAIhR,KAAKiR,kBAAkB,QAClBxN,EAAE,OAAQ,CACf4C,MAAOrG,KAAKo2C,YAAc,KAC1BlzC,MAAO,CACLuC,YAAazF,KAAKyF,aAAezF,KAAKwF,aAAe,MAEvDtD,IAAK,mBACJlC,KAAKoG,cAAc,OAAuB,CAC3C6L,MAAOjS,KAAKkS,cAAckC,QAC1BxD,OAAQ5Q,KAAK6Q,eAAeuD,QAC5BlD,QAASlR,KAAK6Q,eAAe9O,UAI1B0B,KAET6xC,YAAa,WAEX,OAAOt1C,KAAKk2C,UAAYl2C,KAAKq1C,aAAY,GAAQr1C,KAAKu2C,yB,kCC1C5D,kCAiBO,IAAIC,EAAa,SAAoBnjC,EAAOojC,GAKjD,OAAOpjC,EAAMd,KAAI,SAAUoJ,EAAGb,GAC5B,MAAO,CAACA,EAAOa,MACdrJ,KAAK,SAAUqJ,EAAGC,GACnB,OAAO5b,KAAK2b,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,IACpClR,KAAK+rC,IAAYlkC,KAAI,SAAU6G,GAC/B,OAAOA,EAAE,Q,uBCpBb,IAAIs9B,EAAW,SAAU1pC,GACvB,aAEA,IAEI3D,EAFAstC,EAAKv1C,OAAO6S,UACZ2iC,EAASD,EAAG9b,eAEZgc,EAA4B,oBAAXniC,OAAwBA,OAAS,GAClDoiC,EAAiBD,EAAQliC,UAAY,aACrCoiC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASC,EAAO50C,EAAKL,EAAKM,GAOxB,OANApB,OAAOkB,eAAeC,EAAKL,EAAK,CAC9BM,MAAOA,EACPd,YAAY,EACZe,cAAc,EACdC,UAAU,IAELH,EAAIL,GAEb,IAEEi1C,EAAO,GAAI,IACX,MAAO/tC,GACP+tC,EAAS,SAAS50C,EAAKL,EAAKM,GAC1B,OAAOD,EAAIL,GAAOM,GAItB,SAASsuB,EAAKsmB,EAASC,EAASnuC,EAAMouC,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQpjC,qBAAqBujC,EAAYH,EAAUG,EAC/EC,EAAYr2C,OAAO8G,OAAOqvC,EAAetjC,WACzCkF,EAAU,IAAIu+B,EAAQJ,GAAe,IAMzC,OAFAG,EAAUE,QAAUC,EAAiBR,EAASluC,EAAMiQ,GAE7Cs+B,EAcT,SAASI,EAAS5uC,EAAI1G,EAAKoG,GACzB,IACE,MAAO,CAAE6G,KAAM,SAAU7G,IAAKM,EAAGkL,KAAK5R,EAAKoG,IAC3C,MAAOS,GACP,MAAO,CAAEoG,KAAM,QAAS7G,IAAKS,IAhBjC4D,EAAQ8jB,KAAOA,EAoBf,IAAIgnB,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,GAMvB,SAASV,KACT,SAASW,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBlB,EAAOkB,EAAmBvB,GAAgB,WACxC,OAAO92C,QAGT,IAAIs4C,EAAWl3C,OAAOm3C,eAClBC,EAA0BF,GAAYA,EAASA,EAASG,EAAO,MAC/DD,GACAA,IAA4B7B,GAC5BC,EAAOziC,KAAKqkC,EAAyB1B,KAGvCuB,EAAoBG,GAGtB,IAAIE,EAAKN,EAA2BnkC,UAClCujC,EAAUvjC,UAAY7S,OAAO8G,OAAOmwC,GAYtC,SAASM,EAAsB1kC,GAC7B,CAAC,OAAQ,QAAS,UAAUhS,SAAQ,SAASoZ,GAC3C87B,EAAOljC,EAAWoH,GAAQ,SAAS1S,GACjC,OAAO3I,KAAK23C,QAAQt8B,EAAQ1S,SAkClC,SAASiwC,EAAcnB,EAAWoB,GAChC,SAASC,EAAOz9B,EAAQ1S,EAAKJ,EAASC,GACpC,IAAIuwC,EAASlB,EAASJ,EAAUp8B,GAASo8B,EAAW9uC,GACpD,GAAoB,UAAhBowC,EAAOvpC,KAEJ,CACL,IAAIlB,EAASyqC,EAAOpwC,IAChBnG,EAAQ8L,EAAO9L,MACnB,OAAIA,GACiB,kBAAVA,GACPo0C,EAAOziC,KAAK3R,EAAO,WACdq2C,EAAYtwC,QAAQ/F,EAAMw2C,SAASnxC,MAAK,SAASrF,GACtDs2C,EAAO,OAAQt2C,EAAO+F,EAASC,MAC9B,SAASY,GACV0vC,EAAO,QAAS1vC,EAAKb,EAASC,MAI3BqwC,EAAYtwC,QAAQ/F,GAAOqF,MAAK,SAASoxC,GAI9C3qC,EAAO9L,MAAQy2C,EACf1wC,EAAQ+F,MACP,SAASzF,GAGV,OAAOiwC,EAAO,QAASjwC,EAAON,EAASC,MAvBzCA,EAAOuwC,EAAOpwC,KA4BlB,IAAIuwC,EAEJ,SAASC,EAAQ99B,EAAQ1S,GACvB,SAASywC,IACP,OAAO,IAAIP,GAAY,SAAStwC,EAASC,GACvCswC,EAAOz9B,EAAQ1S,EAAKJ,EAASC,MAIjC,OAAO0wC,EAaLA,EAAkBA,EAAgBrxC,KAChCuxC,EAGAA,GACEA,IAKRp5C,KAAK23C,QAAUwB,EA2BjB,SAASvB,EAAiBR,EAASluC,EAAMiQ,GACvC,IAAIkgC,EAAQvB,EAEZ,OAAO,SAAgBz8B,EAAQ1S,GAC7B,GAAI0wC,IAAUrB,EACZ,MAAM,IAAI7e,MAAM,gCAGlB,GAAIkgB,IAAUpB,EAAmB,CAC/B,GAAe,UAAX58B,EACF,MAAM1S,EAKR,OAAO2wC,IAGTngC,EAAQkC,OAASA,EACjBlC,EAAQxQ,IAAMA,EAEd,MAAO,EAAM,CACX,IAAI4wC,EAAWpgC,EAAQogC,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUpgC,GACnD,GAAIqgC,EAAgB,CAClB,GAAIA,IAAmBtB,EAAkB,SACzC,OAAOsB,GAIX,GAAuB,SAAnBrgC,EAAQkC,OAGVlC,EAAQugC,KAAOvgC,EAAQwgC,MAAQxgC,EAAQxQ,SAElC,GAAuB,UAAnBwQ,EAAQkC,OAAoB,CACrC,GAAIg+B,IAAUvB,EAEZ,MADAuB,EAAQpB,EACF9+B,EAAQxQ,IAGhBwQ,EAAQygC,kBAAkBzgC,EAAQxQ,SAEN,WAAnBwQ,EAAQkC,QACjBlC,EAAQ0gC,OAAO,SAAU1gC,EAAQxQ,KAGnC0wC,EAAQrB,EAER,IAAIe,EAASlB,EAAST,EAASluC,EAAMiQ,GACrC,GAAoB,WAAhB4/B,EAAOvpC,KAAmB,CAO5B,GAJA6pC,EAAQlgC,EAAQrQ,KACZmvC,EACAF,EAEAgB,EAAOpwC,MAAQuvC,EACjB,SAGF,MAAO,CACL11C,MAAOu2C,EAAOpwC,IACdG,KAAMqQ,EAAQrQ,MAGS,UAAhBiwC,EAAOvpC,OAChB6pC,EAAQpB,EAGR9+B,EAAQkC,OAAS,QACjBlC,EAAQxQ,IAAMowC,EAAOpwC,OAU7B,SAAS8wC,EAAoBF,EAAUpgC,GACrC,IAAIkC,EAASk+B,EAAS5kC,SAASwE,EAAQkC,QACvC,GAAIA,IAAWhS,EAAW,CAKxB,GAFA8P,EAAQogC,SAAW,KAEI,UAAnBpgC,EAAQkC,OAAoB,CAE9B,GAAIk+B,EAAS5kC,SAAS,YAGpBwE,EAAQkC,OAAS,SACjBlC,EAAQxQ,IAAMU,EACdowC,EAAoBF,EAAUpgC,GAEP,UAAnBA,EAAQkC,QAGV,OAAO68B,EAIX/+B,EAAQkC,OAAS,QACjBlC,EAAQxQ,IAAM,IAAIiL,UAChB,kDAGJ,OAAOskC,EAGT,IAAIa,EAASlB,EAASx8B,EAAQk+B,EAAS5kC,SAAUwE,EAAQxQ,KAEzD,GAAoB,UAAhBowC,EAAOvpC,KAIT,OAHA2J,EAAQkC,OAAS,QACjBlC,EAAQxQ,IAAMowC,EAAOpwC,IACrBwQ,EAAQogC,SAAW,KACZrB,EAGT,IAAItvC,EAAOmwC,EAAOpwC,IAElB,OAAMC,EAOFA,EAAKE,MAGPqQ,EAAQogC,EAASO,YAAclxC,EAAKpG,MAGpC2W,EAAQ4gC,KAAOR,EAASS,QAQD,WAAnB7gC,EAAQkC,SACVlC,EAAQkC,OAAS,OACjBlC,EAAQxQ,IAAMU,GAUlB8P,EAAQogC,SAAW,KACZrB,GANEtvC,GA3BPuQ,EAAQkC,OAAS,QACjBlC,EAAQxQ,IAAM,IAAIiL,UAAU,oCAC5BuF,EAAQogC,SAAW,KACZrB,GAoDX,SAAS+B,EAAaC,GACpB,IAAI/G,EAAQ,CAAEgH,OAAQD,EAAK,IAEvB,KAAKA,IACP/G,EAAMiH,SAAWF,EAAK,IAGpB,KAAKA,IACP/G,EAAMkH,WAAaH,EAAK,GACxB/G,EAAMmH,SAAWJ,EAAK,IAGxBl6C,KAAKu6C,WAAW54C,KAAKwxC,GAGvB,SAASqH,EAAcrH,GACrB,IAAI4F,EAAS5F,EAAMsH,YAAc,GACjC1B,EAAOvpC,KAAO,gBACPupC,EAAOpwC,IACdwqC,EAAMsH,WAAa1B,EAGrB,SAASrB,EAAQJ,GAIft3C,KAAKu6C,WAAa,CAAC,CAAEJ,OAAQ,SAC7B7C,EAAYr1C,QAAQg4C,EAAcj6C,MAClCA,KAAK06C,OAAM,GA8Bb,SAASjC,EAAOkC,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAAS7D,GAC9B,GAAI8D,EACF,OAAOA,EAAezmC,KAAKwmC,GAG7B,GAA6B,oBAAlBA,EAASZ,KAClB,OAAOY,EAGT,IAAKzhB,MAAMyhB,EAAS54C,QAAS,CAC3B,IAAID,GAAK,EAAGi4C,EAAO,SAASA,IAC1B,QAASj4C,EAAI64C,EAAS54C,OACpB,GAAI60C,EAAOziC,KAAKwmC,EAAU74C,GAGxB,OAFAi4C,EAAKv3C,MAAQm4C,EAAS74C,GACtBi4C,EAAKjxC,MAAO,EACLixC,EAOX,OAHAA,EAAKv3C,MAAQ6G,EACb0wC,EAAKjxC,MAAO,EAELixC,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAMT,GAIjB,SAASA,IACP,MAAO,CAAE92C,MAAO6G,EAAWP,MAAM,GA+MnC,OA7mBAqvC,EAAkBlkC,UAAYmkC,EAC9BjB,EAAOuB,EAAI,cAAeN,GAC1BjB,EAAOiB,EAA4B,cAAeD,GAClDA,EAAkB0C,YAAc1D,EAC9BiB,EACAnB,EACA,qBAaFjqC,EAAQ8tC,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,oBAAXD,GAAyBA,EAAO1mC,YAClD,QAAO2mC,IACHA,IAAS7C,GAG2B,uBAAnC6C,EAAKH,aAAeG,EAAK13C,QAIhC0J,EAAQiuC,KAAO,SAASF,GAQtB,OAPI35C,OAAO85C,eACT95C,OAAO85C,eAAeH,EAAQ3C,IAE9B2C,EAAOI,UAAY/C,EACnBjB,EAAO4D,EAAQ9D,EAAmB,sBAEpC8D,EAAO9mC,UAAY7S,OAAO8G,OAAOwwC,GAC1BqC,GAOT/tC,EAAQouC,MAAQ,SAASzyC,GACvB,MAAO,CAAEqwC,QAASrwC,IAsEpBgwC,EAAsBC,EAAc3kC,WACpCkjC,EAAOyB,EAAc3kC,UAAW8iC,GAAqB,WACnD,OAAO/2C,QAETgN,EAAQ4rC,cAAgBA,EAKxB5rC,EAAQquC,MAAQ,SAASjE,EAASC,EAASnuC,EAAMouC,EAAauB,QACxC,IAAhBA,IAAwBA,EAAc9vC,SAE1C,IAAI0L,EAAO,IAAImkC,EACb9nB,EAAKsmB,EAASC,EAASnuC,EAAMouC,GAC7BuB,GAGF,OAAO7rC,EAAQ8tC,oBAAoBzD,GAC/B5iC,EACAA,EAAKslC,OAAOlyC,MAAK,SAASyG,GACxB,OAAOA,EAAOxF,KAAOwF,EAAO9L,MAAQiS,EAAKslC,WAuKjDpB,EAAsBD,GAEtBvB,EAAOuB,EAAIzB,EAAmB,aAO9BE,EAAOuB,EAAI5B,GAAgB,WACzB,OAAO92C,QAGTm3C,EAAOuB,EAAI,YAAY,WACrB,MAAO,wBAkCT1rC,EAAQ7L,KAAO,SAASF,GACtB,IAAIE,EAAO,GACX,IAAK,IAAIe,KAAOjB,EACdE,EAAKQ,KAAKO,GAMZ,OAJAf,EAAKm6C,UAIE,SAASvB,IACd,MAAO54C,EAAKY,OAAQ,CAClB,IAAIG,EAAMf,EAAKo6C,MACf,GAAIr5C,KAAOjB,EAGT,OAFA84C,EAAKv3C,MAAQN,EACb63C,EAAKjxC,MAAO,EACLixC,EAQX,OADAA,EAAKjxC,MAAO,EACLixC,IAsCX/sC,EAAQyrC,OAASA,EAMjBf,EAAQzjC,UAAY,CAClBI,YAAaqjC,EAEbgD,MAAO,SAASc,GAcd,GAbAx7C,KAAKy7C,KAAO,EACZz7C,KAAK+5C,KAAO,EAGZ/5C,KAAK05C,KAAO15C,KAAK25C,MAAQtwC,EACzBrJ,KAAK8I,MAAO,EACZ9I,KAAKu5C,SAAW,KAEhBv5C,KAAKqb,OAAS,OACdrb,KAAK2I,IAAMU,EAEXrJ,KAAKu6C,WAAWt4C,QAAQu4C,IAEnBgB,EACH,IAAK,IAAIl4C,KAAQtD,KAEQ,MAAnBsD,EAAK0lC,OAAO,IACZ4N,EAAOziC,KAAKnU,KAAMsD,KACjB41B,OAAO51B,EAAK8Q,MAAM,MACrBpU,KAAKsD,GAAQ+F,IAMrBspC,KAAM,WACJ3yC,KAAK8I,MAAO,EAEZ,IAAI4yC,EAAY17C,KAAKu6C,WAAW,GAC5BoB,EAAaD,EAAUjB,WAC3B,GAAwB,UAApBkB,EAAWnsC,KACb,MAAMmsC,EAAWhzC,IAGnB,OAAO3I,KAAK47C,MAGdhC,kBAAmB,SAASiC,GAC1B,GAAI77C,KAAK8I,KACP,MAAM+yC,EAGR,IAAI1iC,EAAUnZ,KACd,SAAS87C,EAAOC,EAAKC,GAYnB,OAXAjD,EAAOvpC,KAAO,QACdupC,EAAOpwC,IAAMkzC,EACb1iC,EAAQ4gC,KAAOgC,EAEXC,IAGF7iC,EAAQkC,OAAS,OACjBlC,EAAQxQ,IAAMU,KAGN2yC,EAGZ,IAAK,IAAIl6C,EAAI9B,KAAKu6C,WAAWx4C,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIqxC,EAAQnzC,KAAKu6C,WAAWz4C,GACxBi3C,EAAS5F,EAAMsH,WAEnB,GAAqB,SAAjBtH,EAAMgH,OAIR,OAAO2B,EAAO,OAGhB,GAAI3I,EAAMgH,QAAUn6C,KAAKy7C,KAAM,CAC7B,IAAIQ,EAAWrF,EAAOziC,KAAKg/B,EAAO,YAC9B+I,EAAatF,EAAOziC,KAAKg/B,EAAO,cAEpC,GAAI8I,GAAYC,EAAY,CAC1B,GAAIl8C,KAAKy7C,KAAOtI,EAAMiH,SACpB,OAAO0B,EAAO3I,EAAMiH,UAAU,GACzB,GAAIp6C,KAAKy7C,KAAOtI,EAAMkH,WAC3B,OAAOyB,EAAO3I,EAAMkH,iBAGjB,GAAI4B,GACT,GAAIj8C,KAAKy7C,KAAOtI,EAAMiH,SACpB,OAAO0B,EAAO3I,EAAMiH,UAAU,OAG3B,KAAI8B,EAMT,MAAM,IAAI/iB,MAAM,0CALhB,GAAIn5B,KAAKy7C,KAAOtI,EAAMkH,WACpB,OAAOyB,EAAO3I,EAAMkH,gBAU9BR,OAAQ,SAASrqC,EAAM7G,GACrB,IAAK,IAAI7G,EAAI9B,KAAKu6C,WAAWx4C,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIqxC,EAAQnzC,KAAKu6C,WAAWz4C,GAC5B,GAAIqxC,EAAMgH,QAAUn6C,KAAKy7C,MACrB7E,EAAOziC,KAAKg/B,EAAO,eACnBnzC,KAAKy7C,KAAOtI,EAAMkH,WAAY,CAChC,IAAI8B,EAAehJ,EACnB,OAIAgJ,IACU,UAAT3sC,GACS,aAATA,IACD2sC,EAAahC,QAAUxxC,GACvBA,GAAOwzC,EAAa9B,aAGtB8B,EAAe,MAGjB,IAAIpD,EAASoD,EAAeA,EAAa1B,WAAa,GAItD,OAHA1B,EAAOvpC,KAAOA,EACdupC,EAAOpwC,IAAMA,EAETwzC,GACFn8C,KAAKqb,OAAS,OACdrb,KAAK+5C,KAAOoC,EAAa9B,WAClBnC,GAGFl4C,KAAKo8C,SAASrD,IAGvBqD,SAAU,SAASrD,EAAQuB,GACzB,GAAoB,UAAhBvB,EAAOvpC,KACT,MAAMupC,EAAOpwC,IAcf,MAXoB,UAAhBowC,EAAOvpC,MACS,aAAhBupC,EAAOvpC,KACTxP,KAAK+5C,KAAOhB,EAAOpwC,IACM,WAAhBowC,EAAOvpC,MAChBxP,KAAK47C,KAAO57C,KAAK2I,IAAMowC,EAAOpwC,IAC9B3I,KAAKqb,OAAS,SACdrb,KAAK+5C,KAAO,OACa,WAAhBhB,EAAOvpC,MAAqB8qC,IACrCt6C,KAAK+5C,KAAOO,GAGPpC,GAGTmE,OAAQ,SAAShC,GACf,IAAK,IAAIv4C,EAAI9B,KAAKu6C,WAAWx4C,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIqxC,EAAQnzC,KAAKu6C,WAAWz4C,GAC5B,GAAIqxC,EAAMkH,aAAeA,EAGvB,OAFAr6C,KAAKo8C,SAASjJ,EAAMsH,WAAYtH,EAAMmH,UACtCE,EAAcrH,GACP+E,IAKb,MAAS,SAASiC,GAChB,IAAK,IAAIr4C,EAAI9B,KAAKu6C,WAAWx4C,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIqxC,EAAQnzC,KAAKu6C,WAAWz4C,GAC5B,GAAIqxC,EAAMgH,SAAWA,EAAQ,CAC3B,IAAIpB,EAAS5F,EAAMsH,WACnB,GAAoB,UAAhB1B,EAAOvpC,KAAkB,CAC3B,IAAI8sC,EAASvD,EAAOpwC,IACpB6xC,EAAcrH,GAEhB,OAAOmJ,GAMX,MAAM,IAAInjB,MAAM,0BAGlBojB,cAAe,SAAS5B,EAAUb,EAAYE,GAa5C,OAZAh6C,KAAKu5C,SAAW,CACd5kC,SAAU8jC,EAAOkC,GACjBb,WAAYA,EACZE,QAASA,GAGS,SAAhBh6C,KAAKqb,SAGPrb,KAAK2I,IAAMU,GAGN6uC,IAQJlrC,EA9sBK,CAqtBiBwvC,EAAOxvC,SAGtC,IACEyvC,mBAAqB/F,EACrB,MAAOgG,GAWmB,kBAAfC,WACTA,WAAWF,mBAAqB/F,EAEhCkG,SAAS,IAAK,yBAAdA,CAAwClG,K,oCC/uB5C,mRAAS11C,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAsBpM,IAAIW,EAAQ,eAAsB,eAAStB,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAU,QAAmB,QAAgB,QAAiB,QAAgB,GAAI,CAC1Ni7C,QAAS,eAAS,QAElBC,aAAc,eAAS,QAAmB,GAE1CC,SAAU,eAAS,QAAmB,GACtCC,KAAM,eAAS,OAAyB,GAGxClsB,KAAM,eAAS,OAAkB,WAC9B,SAGMmsB,EAA6B,aAAIt9C,OAAO,CACjD2D,KAAM,QACN45C,WAAY,CACV,YAAa,QAGf34C,OAAQ,CAAC,OAAgB,OAAS,OAAmB,OAAkB,OAAe,OAAgB,OAAe,OAAoB,QACzIrB,MAAOA,EACPS,KAAM,WACJ,MAAO,CACLw5C,WAAY,OAGhBv9C,SAAU,CACRw9C,cAAe,WACb,IAAIC,EAAS,CAGXC,QAASt9C,KAAKu9C,cAAgBv9C,KAAK+8C,SAAW,OAAS,MAYzD,OATK/8C,KAAKu9C,eAGRF,EAAOhzC,OAASrK,KAAKm9C,WAGrBE,EAAOG,UAAY,UAGdH,GAETI,gBAAiB,WAIf,OAAO,eAAQ,eAAUz9C,KAAKg9C,KAAM,GAAI,IAE1CU,gBAAiB,WACf,OAAO,eAAQ19C,KAAKy9C,gBAAiB,eAAUz9C,KAAK68C,QAAS,KAE/DU,aAAc,WAGZ,OAAOv9C,KAAKy9C,kBAAoBz9C,KAAK09C,gBAAkB19C,KAAKy9C,gBAAkB,MAEhFzzB,cAAe,WACb,IAAIZ,EAAWppB,KAAKopB,SAChBxe,EAAW5K,KAAK4K,SACpB,MAAO,CACL1D,GAAIlH,KAAK6iB,SACTvf,KAAMtD,KAAKsD,MAAQ,KACnB2mB,KAAMjqB,KAAKiqB,MAAQ,KACnBb,SAAUA,EACV/B,YAAarnB,KAAKqnB,aAAe,KACjCzc,SAAUA,EACVoc,aAAchnB,KAAKgnB,cAAgB,KACnCO,SAAUvnB,KAAKunB,UAAYvnB,KAAKsnB,UAChC01B,KAAMh9C,KAAKu9C,aACXzsB,KAAM9wB,KAAK8wB,MAAQ,KACnB,gBAAiB9wB,KAAK4K,SAAW,OAAS,KAC1C,eAAgB5K,KAAKkqB,sBAGzBC,kBAAmB,WACjB,OAAOvoB,EAAcA,EAAc,GAAI5B,KAAKwG,aAAc,GAAI,CAC5DtG,MAAOF,KAAK6oB,QACZuB,OAAQpqB,KAAKipB,SACbI,KAAMrpB,KAAKkpB,WAIjB1a,MAAO,CACLkZ,WAAY,WACV1nB,KAAK29C,cAGThlC,QAAS,WACP3Y,KAAK29C,aAEPp9C,QAAS,CAIPq9C,gBAAiB,SAAyBpL,GACpCA,GAGFxyC,KAAK+O,UAAU/O,KAAK29C,YAGxBA,UAAW,WACT,IAAI7uC,EAAQ9O,KAEZA,KAAK+O,WAAU,WACb,gBAAU,WACRD,EAAMquC,WAAaruC,EAAM+uC,uBAM/BA,cAAe,WACb,GAAI79C,KAAK89C,YAAc,eAAO99C,KAAKu9C,cACjC,OAAO,KAGT,IAAI/4B,EAAKxkB,KAAK0P,IAGd,IAAK,eAAU8U,GACb,OAAO,KAIT,IAAI44B,EAAgB,eAAM54B,GAEtBu5B,EAAa,eAAQX,EAAcW,WAAY,GAE/ChJ,EAAS,eAAQqI,EAAcY,eAAgB,GAAK,eAAQZ,EAAca,kBAAmB,GAC7FC,EAAU,eAAQd,EAAce,WAAY,GAAK,eAAQf,EAAcgB,cAAe,GAEtFva,EAASkR,EAASmJ,EAElBG,EAAYN,EAAa/9C,KAAKy9C,gBAAkB5Z,EAEhDya,EAAY,eAAS95B,EAAI,WAAa44B,EAAc/yC,OAExD,eAASma,EAAI,SAAU,QACvB,IAAI+5B,EAAe/5B,EAAG+5B,aAGtB,eAAS/5B,EAAI,SAAU85B,GAEvB,IAAIE,EAAc,gBAASD,EAAeL,GAAWH,EAAY,GAE7Df,EAAO,eAAQ,eAAQwB,EAAax+C,KAAKy9C,iBAAkBz9C,KAAK09C,iBAEhErzC,EAAS,eAAQ,eAAS2yC,EAAOe,EAAala,GAASwa,GAG3D,OAAIr+C,KAAK88C,cAAgB,eAAQwB,EAAW,GAAKj0C,EACxCi0C,EAIF,GAAGx6C,OAAOuG,EAAQ,QAG7B7G,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,WAAY,CACnB4C,MAAOrG,KAAK6nB,cACZ1X,MAAOnQ,KAAKo9C,cACZF,WAAY,CAAC,CACX55C,KAAM,YACNd,MAAOxC,KAAK49C,gBAEZrK,UAAW,CACT,KAAO,KAGXjtC,MAAOtG,KAAKgqB,cACZxd,SAAU,CACRhK,MAAOxC,KAAK0nB,YAEdnhB,GAAIvG,KAAKmqB,kBACTzG,IAAK,c,mCC7MX,uKAAS1iB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAa3M,IAAIk8C,EAAmB,CAAC,QAAS,MAAO,UAIpCC,EAAsB,gBAAQ,SAAUC,EAAYC,GAEtD,OADAA,EAAO,eAAK,eAASA,IACdA,EAAO,eAAU,CAAC,WAAYD,EAAYC,GAAMr9C,OAAO,QAAUmR,KAAK,MAAQ,QAInFmsC,EAA2B,gBAAQ,SAAUh4B,GAC/C,OAAO,eAAUA,EAAKhjB,QAAQ,OAAQ,QAIpCi7C,EAAkB,GAGXC,EAAgB,WAEzB,IAAIC,EAAe,iBAAyBhsC,QAAO,SAAU9P,EAAOy7C,GAElE,OADAz7C,EAAM,eAAey7C,EAAY,SAAW,eAAS,QAC9Cz7C,IACN,eAAO,OAIV,OAFA47C,EAAkB,eAAKE,GAEhB,eAAsB,eAASp9C,EAAcA,EAAc,GAAIo9C,GAAe,GAAI,CACvFC,aAAc,eAAS,OAAkB,MAAM,SAAUz8C,GACvD,OAAO,eAAc,eAAOi8C,EAAkB,UAAW,SAAU,WAAYj8C,MAEjF08C,OAAQ,eAAS,OAAkB,MAAM,SAAU18C,GACjD,OAAO,eAAc,eAAOi8C,EAAkB,UAAW,UAAWj8C,MAEtE28C,OAAQ,eAAS,OAAkB,MAAM,SAAU38C,GACjD,OAAO,eAAc,eAAOi8C,EAAkB,WAAY,WAAYj8C,MAExE48C,UAAW,eAAS,QAAmB,GACvCx6C,IAAK,eAAS,OAAkB,UAC7B,UAMIy6C,EAAO,CAChB/7C,KAAM,QACNC,YAAY,EAEZ,YAME,cAFOvD,KAAKkD,MACZlD,KAAKkD,MAAQ67C,IACN/+C,KAAKkD,OAGdM,OAAQ,SAAgBC,EAAGC,GACzB,IAAI47C,EAEAp8C,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAChB43C,EAASj8C,EAAMi8C,OACfD,EAASh8C,EAAMg8C,OACfD,EAAe/7C,EAAM+7C,aAErB5sB,EAAY,GAWhB,OAVAysB,EAAgB78C,SAAQ,SAAU4kB,GAChC,IAAIiR,EAAI4mB,EAAoBG,EAAyBh4B,GAAO3jB,EAAM2jB,IAE9DiR,GACFzF,EAAU1wB,KAAKm2B,MAGnBzF,EAAU1wB,MAAM29C,EAAkB,CAChC,aAAcp8C,EAAMk8C,WACnBj9C,EAAgBm9C,EAAiB,eAAex7C,OAAOq7C,GAASA,GAASh9C,EAAgBm9C,EAAiB,mBAAmBx7C,OAAOo7C,GAASA,GAAS/8C,EAAgBm9C,EAAiB,iBAAiBx7C,OAAOm7C,GAAeA,GAAeK,IACzO77C,EAAEP,EAAM0B,IAAK,eAAUjB,EAAM,CAClCgJ,YAAa,MACbtG,MAAOgsB,IACL9qB,M,kCCnGR,qKAASvG,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAIW,EAAQ,eAAsB,CACvCq8C,wBAAyB,eAAS,QAClCC,qBAAsB,eAAS,SAC9B,SAMQC,EAAsB,aAAI9/C,OAAO,CAC1C2D,KAAM,QACNiB,OAAQ,CAAC,OAAY,OAAgB,QACrCmC,QAAS,WACP,MAAO,CACLC,gBAAiB3G,OAGrBwE,OAAQ,CAENoC,QAAS,CACPlC,QAEA,WACE,MAAO,MAIbC,cAAc,EACdzB,MAAOA,EACPtD,SAAU,CAERyf,QAAS,WACP,OAAO,GAGTra,OAAQ,WACN,OAAOhF,KAAK4G,QAAQE,MAGtB7B,UAAW,WACT,OAAOjF,KAAK4G,QAAQ3B,WAGtBE,aAAc,WACZ,OAAOnF,KAAK4G,QAAQzB,cAItBC,eAAgB,WACd,OAAO,GAKTC,gBAAiB,WACf,OAAQrF,KAAKiF,WAAajF,KAAK4G,QAAQG,cAGzCrB,aAAc,WACZ,OAAO1F,KAAK4G,QAAQlB,cAEtBg6C,kBAAmB,WACjB,OAAO1/C,KAAKw/C,sBAAwBx/C,KAAKu/C,yBAE3CI,WAAY,WACV,OAAO/9C,EAAc,CACnBoE,KAAM,YACLhG,KAAKkG,UAEV05C,WAAY,WACV,IAAIJ,EAAuBx/C,KAAKw/C,qBAChC,OAAOA,EAAuB59C,EAAcA,EAAc,GAAI49C,GAAuB,GAAI,CACvF56C,IAAK,UACF,KAGTpB,OAAQ,SAAgBC,GACtB,IAAIE,EAAO,CACTT,MAAOlD,KAAK4/C,WACZt5C,MAAOtG,KAAK2/C,YAYd,OATI3/C,KAAK0/C,mBAEP/7C,EAAK4C,GAAKvG,KAAKu/C,yBAA2B,GAC1C57C,EAAKk8C,SAAW7/C,KAAKwG,aAGrB7C,EAAK4C,GAAKvG,KAAKwG,YAGV/C,EAAEzD,KAAK0/C,kBAAoB,mBAAqB,QAAS/7C,EAAM3D,KAAKoG,qB,kCCzG/E,0GAAImT,EAAJ,wNAEA,SAASvY,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAuB3M,IAAIikB,EAAkB,eAAe,QAAS,CAC5ChX,KAAM,OACNiR,aAAc,KAGdq/B,UAAW,SAAmBt9C,GAC5B,SAAK,eAAOA,IAAU,eAAUA,EAAO,GAAK,KAC1C,eAAK,oDAAqD,UACnD,MAMTikB,EAAaD,EAAgBE,MAC7BC,EAAaH,EAAgBtjB,MAC7B0jB,EAAkBJ,EAAgBK,KAClCC,EAAmBN,EAAgBvX,MAInC8wC,EAAqB,EAErBC,EAAgB,EAGhBC,EAAgB,SAAuBC,EAAa7xC,GACtD,OAAO,eAAYA,GAAe,SAAUgnB,EAAGvzB,GAC7C,MAAO,CACLslB,OAAQ84B,EAAcp+C,EACtBq+C,QAAS,UAMXC,EAAgB,SAAuB59C,GACzC,IAAI69C,EAAQ,eAAU79C,IAAU,EAChC,OAAO69C,EAAQ,EAAIL,EAAgBK,GAIjCC,EAAsB,SAA6BlgD,EAAKiO,GAC1D,IAAIkyC,EAAO,eAAUngD,IAAQ,EAC7B,OAAOmgD,EAAOlyC,EAAgBA,EAAgBkyC,EAAO,EAAI,EAAIA,GAK3DC,EAAa,SAAoBvxC,GACnC,GAAIA,EAAM2V,UAAY,OAOpB,OALA,eAAU3V,EAAO,CACfwxC,sBAAsB,IAGxBxxC,EAAMyxC,cAAc76B,SACb,GAKA3iB,EAAQ,eAAsB,eAAStB,EAAcA,EAAc,GAAI+kB,GAAa,GAAI,CACjG7b,MAAO,eAAS,OAAkB,QAClC61C,UAAW,eAAS,OAAkB,cACtCv3B,SAAU,eAAS,QAAmB,GACtCw3B,cAAe,eAAS,QACxBC,aAAc,eAAS,OAAkB,KAEzCC,WAAY,eAAS,QACrBC,YAAa,eAAS,QAAmB,GACzCC,UAAW,eAAS,OAAkB,KAEtCC,aAAc,eAAS,QAAmB,GAC1CC,mBAAoB,eAAS,QAAmB,GAChDC,eAAgB,eAAS,OAAkB,oBAC3CC,cAAe,eAAS,OAAkB,mBAC1CC,cAAe,eAAS,OAAkB,mBAC1CC,UAAW,eAAS,OAA2B,cAC/CC,cAAe,eAAS,OAAkB,uBAC1CC,UAAW,eAAS,QACpBC,WAAY,eAAS,QAAmB,GACxCC,SAAU,eAAS,OAAkB,KAErCrB,MAAO,eAAS,OAAyBL,GAEzC,SAAUx9C,GACR,QAAI,eAAUA,EAAO,GAAK,KACxB,eAAK,iDAAkD,UAChD,MAKXm/C,UAAW,eAAS,QACpBC,SAAU,eAAS,OAAkB,KAErCC,UAAW,eAAS,QACpBC,MAAO,eAAS,QAAmB,GACnCC,UAAW,eAAS,QACpBC,SAAU,eAAS,OAAkB,KAErCz1B,KAAM,eAAS,WACZ,cAGM7U,EAAkB,aAAI/X,OAAO,CACtC4E,OAAQ,CAACkiB,EAAY,QACrBvjB,MAAOA,EACPS,KAAM,WAEJ,IAAIgL,EAAc,eAAU3O,KAAK4mB,GAAkB,GAEnD,OADAjY,EAAcA,EAAc,EAAIA,GAAe,EACxC,CACLA,YAAaA,EACbC,mBAAoB,EACpBqzC,WAAYjC,IAGhBpgD,SAAU,CACRsiD,QAAS,WACP,IAAI31B,EAAOvsB,KAAKusB,KAChB,OAAOA,EAAO,cAAczoB,OAAOyoB,GAAQ,IAE7C41B,UAAW,WACT,IAAIr3C,EAAQ9K,KAAK8K,MAEjB,MAAc,WAAVA,EACK,yBACY,QAAVA,GAA6B,UAAVA,EACrB,sBACY,SAAVA,EAGF,cAGF,IAETs3C,WAAY,WACV,OAAOpiD,KAAK8hD,MAAQ,qBAAuB,IAE7CO,oBAAqB,WACnB,OAAO/B,EAAoBtgD,KAAK2O,YAAa3O,KAAK4O,qBAEpD0zC,iBAAkB,WAEhB,IAAIjC,EAAQrgD,KAAKiiD,WACb5zC,EAAgBrO,KAAK4O,mBACrBD,EAAc3O,KAAKqiD,oBACnBpB,EAAejhD,KAAKihD,aACpBF,EAAc/gD,KAAK+gD,YACnBU,EAAazhD,KAAKyhD,WAClBc,GAAgB,EAChBC,GAAe,EACfC,EAAgBpC,EAChBH,EAAc,EAEd7xC,GAAiBgyC,EAEnBoC,EAAgBp0C,EACPM,EAAc0xC,EAAQ,GAAKA,EAAQN,GACvCkB,IAAgBQ,IACnBe,GAAe,EACfC,EAAgBpC,GAASU,EAAc,EAAI,IAG7C0B,EAAgB,eAAQA,EAAepC,IAC9BhyC,EAAgBM,EAAc,EAAI0xC,GAASA,EAAQN,GACvDkB,IAAgBF,IACnBwB,GAAgB,EAChBE,EAAgBpC,GAASoB,EAAa,EAAI,IAG5CvB,EAAc7xC,EAAgBo0C,EAAgB,IAG1CpC,EAAQN,IACV0C,EAAgBpC,GAASY,EAAe,EAAI,GAC5CsB,IAAoBtB,IAAgBF,GACpCyB,IAAmBvB,IAAgBQ,IAGrCvB,EAAcvxC,EAAc,eAAU8zC,EAAgB,IAMpDvC,EAAc,GAChBA,EAAc,EACdqC,GAAgB,GACPrC,EAAc7xC,EAAgBo0C,IACvCvC,EAAc7xC,EAAgBo0C,EAAgB,EAC9CD,GAAe,GAGbD,GAAiBxB,GAAeb,EAAc,IAChDuC,GAAgC,EAChCvC,EAAc,EACdqC,GAAgB,GAGlB,IAAIG,EAAiBxC,EAAcuC,EAAgB,EAkBnD,OAhBID,GAAgBf,GAAciB,EAAiBr0C,EAAgB,IACjEo0C,GAAiCC,IAAmBr0C,EAAgB,EAAI,EAAI,EAC5Em0C,GAAe,GAIbnC,GAASN,IACPgB,GAA+B,IAAhBb,EACjBuC,EAAgB,eAAQA,EAAgB,EAAGp0C,EAAegyC,EAAQ,GACzDoB,GAAcpzC,IAAkB6xC,EAAcuC,EAAgB,IACvEvC,EAAc,eAAQA,EAAc,EAAG,GACvCuC,EAAgB,eAAQp0C,EAAgB6xC,EAAc,EAAG7xC,EAAegyC,EAAQ,KAIpFoC,EAAgB,eAAQA,EAAep0C,EAAgB6xC,EAAc,GAC9D,CACLqC,cAAeA,EACfC,aAAcA,EACdC,cAAeA,EACfvC,YAAaA,IAGjByC,SAAU,WAER,IAAIC,EAAwB5iD,KAAKsiD,iBAC7BG,EAAgBG,EAAsBH,cACtCvC,EAAc0C,EAAsB1C,YACpCvxC,EAAc3O,KAAKqiD,oBAEnBQ,EAAQ5C,EAAcC,EAAauC,GAKvC,GAAII,EAAM9gD,OAAS,EAAG,CACpB,IAAI4Y,EAAMhM,EAAcuxC,EAEpBC,EAAU,oBAEd,GAAY,IAARxlC,EAEF,IAAK,IAAI7Y,EAAI,EAAGA,EAAI+gD,EAAM9gD,OAAQD,IAChC+gD,EAAM/gD,GAAGq+C,QAAUA,OAEhB,GAAIxlC,IAAQkoC,EAAM9gD,OAAS,EAEhC,IAAK,IAAIyzC,EAAK,EAAGA,EAAKqN,EAAM9gD,OAAS,EAAGyzC,IACtCqN,EAAMrN,GAAI2K,QAAUA,MAEjB,CAEL,IAAK,IAAI2C,EAAM,EAAGA,EAAMnoC,EAAM,EAAGmoC,IAE/BD,EAAMC,GAAK3C,QAAUA,EAGvB,IAAK,IAAI4C,EAAMF,EAAM9gD,OAAS,EAAGghD,EAAMpoC,EAAM,EAAGooC,IAE9CF,EAAME,GAAK5C,QAAUA,GAK3B,OAAO0C,IAGXr0C,OAAQ+K,EAAS,GAAIpX,EAAgBoX,EAAQqN,GAAiB,SAAUnY,EAAUC,GAC5ED,IAAaC,IACf1O,KAAK2O,YAAc2xC,EAAoB7xC,EAAUzO,KAAK4O,wBAEtDzM,EAAgBoX,EAAQ,eAAe,SAAqB9K,EAAUC,GACpED,IAAaC,GAEf1O,KAAKuP,MAAMuX,EAAkBrY,EAAW,EAAIA,EAAW,SAEvDtM,EAAgBoX,EAAQ,SAAS,SAAe9K,EAAUC,GACxDD,IAAaC,IACf1O,KAAKiiD,WAAa7B,EAAc3xC,OAEhC8K,GACJ1K,QAAS,WACP,IAAIC,EAAQ9O,KAGZA,KAAKiiD,WAAa7B,EAAcpgD,KAAKqgD,OACrCrgD,KAAK+O,WAAU,WAEbD,EAAMH,YAAcG,EAAMH,YAAcG,EAAMF,mBAAqBE,EAAMF,mBAAqBE,EAAMH,gBAGxGpO,QAAS,CACPyiD,aAAc,SAAsB/zC,GAClC,IAAI2V,EAAU3V,EAAM2V,QAChBpJ,EAAWvM,EAAMuM,SAGjBxb,KAAKijD,QAKLr+B,IAAY,QAAaA,IAAY,QACvC,eAAU3V,EAAO,CACf+Z,aAAa,IAEfxN,EAAWxb,KAAKkjD,aAAeljD,KAAKmjD,aAC3Bv+B,IAAY,QAAcA,IAAY,SAC/C,eAAU3V,EAAO,CACf+Z,aAAa,IAEfxN,EAAWxb,KAAKojD,YAAcpjD,KAAKqjD,eAGvCC,WAAY,WAEV,OAAO,eAAU,gCAAiCtjD,KAAK0P,KAAKnO,QAAO,SAAUgiD,GAC3E,OAAO,eAAUA,OAGrB3zC,aAAc,WACZ,IAAIT,EAASnP,KAGbA,KAAK+O,WAAU,WACb,IAAIw0C,EAAMp0C,EAAOm0C,aAAaE,MAAK,SAAUh/B,GAC3C,OAAO,eAAU,eAAQA,EAAI,iBAAkB,KAAOrV,EAAOkzC,uBAG1D,eAAakB,IAEhBp0C,EAAO+zC,iBAIbA,WAAY,WACV,IAAI9rC,EAASpX,KAGbA,KAAK+O,WAAU,WACb,IAAIw0C,EAAMnsC,EAAOksC,aAAaE,MAAK,SAAUh/B,GAC3C,OAAQ,eAAWA,MAGrB,eAAa++B,OAGjBH,UAAW,WACT,IAAIK,EAASzjD,KAGbA,KAAK+O,WAAU,WACb,IAAIw0C,EAAME,EAAOH,aAAahI,UAAUkI,MAAK,SAAUh/B,GACrD,OAAQ,eAAWA,MAGrB,eAAa++B,OAGjBJ,UAAW,WACT,IAAIO,EAAS1jD,KAGbA,KAAK+O,WAAU,WACb,IAAI40C,EAAUD,EAAOJ,aAEjBxoC,EAAQ6oC,EAAQj/B,QAAQ,kBAExB5J,EAAQ,IAAM,eAAW6oC,EAAQ7oC,EAAQ,KAC3C,eAAa6oC,EAAQ7oC,EAAQ,QAInCuoC,UAAW,WACT,IAAIO,EAAS5jD,KAGbA,KAAK+O,WAAU,WACb,IAAI40C,EAAUC,EAAON,aAEjBxoC,EAAQ6oC,EAAQj/B,QAAQ,kBAExB5J,EAAQ6oC,EAAQ5hD,OAAS,IAAM,eAAW4hD,EAAQ7oC,EAAQ,KAC5D,eAAa6oC,EAAQ7oC,EAAQ,SAKrCtX,OAAQ,SAAgBC,GACtB,IAAIogD,EAAS7jD,KAETopB,EAAWppB,KAAKopB,SAChBk4B,EAAYthD,KAAKshD,UACjBX,EAAY3gD,KAAK2gD,UACjBsC,EAAQjjD,KAAKijD,MACb50C,EAAgBrO,KAAK4O,mBACrBD,EAAc3O,KAAKqiD,oBACnByB,EAAc9jD,KAAK2iD,SAASpwC,KAAI,SAAUqoB,GAC5C,OAAOA,EAAExT,UAEP28B,EAAyB/jD,KAAKsiD,iBAC9BC,EAAgBwB,EAAuBxB,cACvCC,EAAeuB,EAAuBvB,aACtCwB,EAAsB,SAAfhkD,KAAK8K,MACZm5C,EAAW,GAEXC,EAAe,SAAsBh1C,GACvC,OAAOA,IAAeP,GAGpBw1C,EAAgBnkD,KAAK2O,YAAc,EAEnCy1C,EAAa,SAAoBC,EAAQ1D,EAAW2D,EAASC,EAASC,EAAUC,EAAUviD,GAC5F,IAAIwiD,EAAat7B,GAAY86B,EAAaO,IAAaN,GAAiBE,EAAS,GAAKA,EAASh2C,EAC3Fa,EAAam1C,EAAS,EAAI,EAAIA,EAASh2C,EAAgBA,EAAgBg2C,EACvEp+C,EAAQ,CACVmjB,SAAUs7B,EACVnE,KAAMrxC,EACN4L,MAAO5L,EAAa,GAElBy1C,EAAcd,EAAOz9C,cAAck+C,EAASr+C,IAAU,eAASs+C,IAAY9gD,IAC3EmhD,EAASnhD,EAAEihD,EAAa,OAASzB,EAAQ,OAAQ,SAAU,CAC7Dt2C,YAAa,YACbtG,MAAO,CACL,eAAgB48C,IAAUyB,GAAcV,GAE1C9gD,MAAOwhD,IAAezB,EAAQ,GAAKY,EAAO9zC,UAAUs0C,GACpD/9C,MAAO,CACLN,KAAMi9C,EAAQ,KAAO,WACrBzzC,KAAMyzC,GAASyB,EAAa,KAAO,SACnCnhC,SAAUmhC,GAAczB,EAAQ,KAAO,KACvC,aAActC,EACd,gBAAiBkD,EAAO51C,cAAgB,KACxC,gBAAiBy2C,EAAa,OAAS,MAEzCn+C,GAAIm+C,EAAa,GAAK,CACpB,SAAU,SAAez1C,GACvB40C,EAAO70C,QAAQC,EAAOo1C,IAExBv+B,QAAS06B,IAEV,CAACmE,IACJ,OAAOlhD,EAAE,KAAM,CACbvB,IAAKA,EACLyK,YAAa,YACbtG,MAAO,CAAC,CACN+iB,SAAUs7B,EACV,YAAaV,EACb,SAAUA,IAASf,IAAUyB,GAC5BF,GACHl+C,MAAO,CACLN,KAAMi9C,EAAQ,KAAO,eACrB,cAAeyB,EAAa,OAAS,OAEtC,CAACE,KAIFC,EAAe,SAAsBC,GACvC,OAAOrhD,EAAE,KAAM,CACbkJ,YAAa,YACbtG,MAAO,CAAC,WAAY,oBAAqB29C,EAAO,YAAc,GAAIH,EAAOjD,eACzEt6C,MAAO,CACLN,KAAM,aAER9D,IAAK,YAAY4B,OAAOghD,EAAS,OAAS,UACzC,CAACrhD,EAAE,OAAQ,CACZkJ,YAAa,aACZ,CAACk3C,EAAOz9C,cAAc,SAA4B,eAASy9C,EAAOhD,eAAiBp9C,SAIpFshD,EAAiB,SAAwBxE,EAAM5lC,GACjD,IAAIzL,EAAaqxC,EAAKn5B,OAClB49B,EAASd,EAAah1C,KAAgBi1C,EAEtCt/B,EAAWuE,EAAW,KAAO47B,GAAUb,GAAyB,IAARxpC,EAAY,IAAM,KAC1ErU,EAAQ,CACVN,KAAMi9C,EAAQ,KAAO,gBACrBzzC,KAAMyzC,GAAS75B,EAAW,KAAO,SACjC,gBAAiBA,EAAW,OAAS,KACrC,gBAAiBy6B,EAAO51C,cAAgB,KACxC,aAAc,eAAgBqzC,GAE9BA,EAAUpyC,GAAc,GAAGpL,OAAO,eAAWw9C,GAAaA,IAAcA,EAAW,KAAKx9C,OAAOoL,GAC/F,eAAgB+zC,EAAQ,KAAO+B,EAAS,OAAS,QACjD,eAAgB/B,GAAS+B,EAAS,OAAS,KAC3C,gBAAiB/B,EAAQ,KAAO/zC,EAChC,eAAgB+zC,EAAQ,KAAO50C,EAE/BkV,SAAU0/B,EAAQ,KAAOp+B,GAEvBogC,EAAa,eAASpB,EAAOh0C,SAASX,IACtCjJ,EAAQ,CACVs6C,KAAMrxC,EACN4L,MAAO5L,EAAa,EACpBujB,QAASwyB,EACTD,OAAQA,EACR57B,SAAUA,GAERw7B,EAASnhD,EAAE2lB,EAAW,OAAS65B,EAAQ,OAAQ,SAAU,CAC3D//C,MAAOkmB,IAAa65B,EAAQ,GAAKY,EAAO9zC,UAAUb,GAClDvC,YAAa,YACbtG,MAAO,CACL,eAAgB48C,IAAU75B,GAAY46B,GAExC19C,MAAOA,EACPC,GAAI6iB,EAAW,GAAK,CAClB,SAAU,SAAena,GACvB40C,EAAO70C,QAAQC,EAAOC,IAExB4W,QAAS06B,IAEV,CAACqD,EAAOz9C,cAAc,OAAgBH,IAAUg/C,IACnD,OAAOxhD,EAAE,KAAM,CACbkJ,YAAa,YACbtG,MAAO,CAAC,CACN+iB,SAAUA,EACV47B,OAAQA,EACR,YAAahB,EACb,SAAUA,IAASf,IAAU75B,GAC5Bm3B,EAAKJ,QAAS0D,EAAOhC,WACxBv7C,MAAO,CACLN,KAAMi9C,EAAQ,KAAO,gBAEvB/gD,IAAK,QAAQ4B,OAAOoL,IACnB,CAAC01C,KAKFM,EAAgBzhD,IAEfzD,KAAK+gD,aAAgB/gD,KAAKkhD,qBAC7BgE,EAAgBd,EAAW,EAAGpkD,KAAKmhD,eAAgB,OAAsBnhD,KAAKghD,UAAWhhD,KAAK8gD,WAAY,EAAG,0BAG/GmD,EAAStiD,KAAKujD,GAEdjB,EAAStiD,KAAKyiD,EAAWz1C,EAAc,EAAG3O,KAAKuhD,cAAe,OAAqBvhD,KAAKgiD,SAAUhiD,KAAK+hD,UAAW,EAAG,yBAErHkC,EAAStiD,KAAK3B,KAAK+gD,aAAkC,IAAnB+C,EAAY,GAAWiB,EAAe,CACtE39B,OAAQ,GACP,GAAK3jB,KAERwgD,EAAStiD,KAAK4gD,EAAgBsC,GAAa,GAASphD,KAEpDzD,KAAK2iD,SAAS1gD,SAAQ,SAAUs+C,EAAM5lC,GACpC,IAAIkpB,EAAS0e,GAAiBsB,EAAO9C,aAAkC,IAAnB+C,EAAY,GAAW,EAAI,EAC/EG,EAAStiD,KAAKojD,EAAexE,EAAM5lC,EAAMkpB,OAG3CogB,EAAStiD,KAAK6gD,EAAeqC,GAAa,GAAQphD,KAElDwgD,EAAStiD,KAAK3B,KAAKyhD,YAAcqC,EAAYA,EAAY/hD,OAAS,KAAOsM,EAAgB02C,EAAe,CACtG39B,OAAQ/Y,IACN,GAAK5K,KAETwgD,EAAStiD,KAAKyiD,EAAWz1C,EAAc,EAAG3O,KAAKqhD,cAAe,OAAqBrhD,KAAK4hD,SAAU5hD,KAAK2hD,UAAWtzC,EAAe,yBAGjI,IAAI82C,EAAe1hD,IAEdzD,KAAKyhD,YAAezhD,KAAKkhD,qBAC5BiE,EAAef,EAAW/1C,EAAerO,KAAKohD,cAAe,OAAqBphD,KAAK0hD,SAAU1hD,KAAKwhD,UAAWnzC,EAAe,yBAGlI41C,EAAStiD,KAAKwjD,GAEd,IAAIC,EAAc3hD,EAAE,KAAM,CACxBkJ,YAAa,aACbtG,MAAO,CAAC,eAAgBrG,KAAKkiD,QAASliD,KAAKmiD,UAAWniD,KAAKoiD,YAC3D97C,MAAO,CACLN,KAAMi9C,EAAQ,KAAO,UACrB,gBAAiB75B,EAAW,OAAS,QACrC,aAAc65B,EAAQ,KAAOtC,GAAa,MAG5Cp6C,GAAI08C,EAAQ,GAAK,CACfn9B,QAAS9lB,KAAKgjD,cAEhBt/B,IAAK,MACJugC,GAEH,OAAIhB,EACKx/C,EAAE,MAAO,CACd6C,MAAO,CACL,gBAAiB8iB,EAAW,OAAS,KACrC,cAAeA,EAAW,OAAS,QACnC,aAAc65B,GAAQtC,GAAoB,OAE3C,CAACyE,IAGCA,M,kCCpnBX,4GAIWliD,EAAQ,eAAsB,CACvCqpB,KAAM,eAAS,SACd,gBAGQ84B,EAAgB,aAAI1lD,OAAO,CACpCuD,MAAOA,EACPtD,SAAU,CACRooB,cAAe,WACb,MAAO,CAAChoB,KAAKusB,KAAO,gBAAgBzoB,OAAO9D,KAAKusB,MAAQ,W,kCCb9D,8DAEI+4B,EAAkB,CAAC,KAAM,KAAM,MAGxBC,EAAc,SAAqBt2C,GAE5C,IAAKA,IAAUA,EAAMpN,OAEnB,OAAO,EAGT,IAAI2iB,EAAKvV,EAAMpN,OAEf,GAAI2iB,EAAG4E,WAAqD,IAAzCk8B,EAAgB5gC,QAAQF,EAAGC,SAC5C,OAAO,EAIT,GAAI,eAAQ,iBAAkBD,GAC5B,OAAO,EAGT,IAAIjD,EAAuB,UAAfiD,EAAGC,QAAsBD,EAAK,eAAQ,QAASA,GAI3D,GAAIjD,EAAO,CACT,IAAIikC,EAAW,eAAQjkC,EAAO,OAC1BrhB,EAAQslD,EAAW,eAAQA,GAAY,eAAO,0BAA2BjkC,GAE7E,GAAIrhB,IAAUA,EAAMkpB,SAClB,OAAO,EAOX,OAAO,eAAQ5E,EAAI,U,kCCvCrB,iLAASxjB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAIW,EAAQ,eAAsB,eAAStB,EAAcA,EAAc,GAAI,eAAU,OAAY,OAAe8I,KAAK,KAAM,YAAa,GAAI,CACjJe,OAAQ,eAAS,QACjBg6C,YAAa,eAAS,QACtB/5C,WAAY,eAAS,WAClB,QAGMg6C,EAA2B,aAAI/lD,OAAO,CAC/C2D,KAAM,OACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIitC,EAEAztC,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAChBo+C,EAAkBziD,EAAMyiD,gBACxBC,EAAsB1iD,EAAM0iD,oBAC5BC,EAAoB3iD,EAAM2iD,kBAC9B,OAAOpiD,EAAEP,EAAM4iD,UAAW,eAAUniD,EAAM,CACxCgJ,YAAa,cACbtG,MAAO,CAACnD,EAAMuiD,aAAc9U,EAAQ,GAAIxuC,EAAgBwuC,EAAO,MAAM7sC,OAAO6hD,GAAkBA,GAAkBxjD,EAAgBwuC,EAAO,UAAU7sC,OAAO8hD,GAAsBA,GAAsBzjD,EAAgBwuC,EAAO,QAAQ7sC,OAAO+hD,GAAoBA,GAAoBlV,IAClRnkC,SAAUjF,EAAW,GAAK,eAAWrE,EAAMwI,WAAYxI,EAAMuI,UAC3DlE,O,kCCtCR,gJAMWrE,EAAQ,eAAsB,CACvC+tC,SAAU,eAAS,QACnB8U,YAAa,eAAS,OAAkB,MACxCC,oBAAqB,eAAS,OAAkB,UAC/C,QAGQC,EAA6B,aAAItmD,OAAO,CACjD2D,KAAM,OACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SACpB,OAAO9D,EAAEP,EAAM6iD,YAAa,eAAUpiD,EAAM,CAC1CgJ,YAAa,gBACbtG,MAAO,CAACnD,EAAM8iD,oBAAsB,QAAQliD,OAAOZ,EAAM8iD,qBAAuB,QAC9Ez+C,GAAY,eAASrE,EAAM+tC,e,yCCxBnC,IAAIztC,EAAS,WACX,IAAI0iD,EAAIlmD,KACJmmD,EAAGD,EAAIl1C,eACPsmB,EAAG4uB,EAAIE,MAAM9uB,IAAI6uB,EAErB,OAAO7uB,EAAG,MAAO,CAACA,EAAG,QAAS,CAACA,EAAG,QAAS,CAACA,EAAG,SAAU,CACvD3qB,YAAa,8CACZ,CAAC2qB,EAAG,QAAS,CACdhxB,MAAO,CACL,UAAW,WAEZ,CAACgxB,EAAG,QAAS,CACdhxB,MAAO,CACL,GAAM,MAEP,CAACgxB,EAAG,KAAM,CAACA,EAAG,eAAgB,CAC/B3qB,YAAa,QACbrG,MAAO,CACL,KAAQ,eACR,KAAQ,QAER4/C,EAAIG,GAAG,aAAc,KAAM/uB,EAAG,QAAS,CACzChxB,MAAO,CACL,GAAM,MAEP,CAACgxB,EAAG,SAAU,CACf/wB,GAAI,CACF,OAAU,SAAgB+/C,GAExB,OADAA,EAAO7d,iBACAyd,EAAIK,gBAAgB7lD,MAAM,KAAMC,cAG1C,CAAC22B,EAAG,gBAAiB,CACtB3qB,YAAa,qBACZ,CAAC2qB,EAAG,wBAAyB,CAC9BhxB,MAAO,CACL,UAAW,KAEZ,CAACgxB,EAAG,eAAgB,CACrBhxB,MAAO,CACL,KAAQ,iBAEP,GAAIgxB,EAAG,eAAgB,CAC1BhxB,MAAO,CACL,YAAe,gBAEjBkgD,MAAO,CACLhkD,MAAO0jD,EAAIO,OAAOnjD,KAClB8uC,SAAU,SAAkBsU,GAC1BR,EAAInlC,KAAKmlC,EAAIO,OAAQ,OAAQC,IAE/BC,WAAY,kBAEX,IAAK,IAAK,GAAIrvB,EAAG,QAAS,CAC7BhxB,MAAO,CACL,GAAM,MAEP,CAACgxB,EAAG,WAAY,CACjBhxB,MAAO,CACL,QAAW,wBAEbC,GAAI,CACF,MAAS2/C,EAAIU,WAEd,CAACV,EAAIG,GAAG,uBAAwB,IAAK,IAAK,IAAK,IAAK,GAAI/uB,EAAG,MAAO,CACnE3qB,YAAa,UACZ,CAAC2qB,EAAG,eAAgB,CACrB3qB,YAAa,UACbrG,MAAO,CACL,aAAc4/C,EAAIW,kBAAkBC,WACpC,WAAYZ,EAAIh4C,SAElB3H,GAAI,CACF,MAAS2/C,EAAIa,cAEfP,MAAO,CACLhkD,MAAO0jD,EAAIv3C,YACXyjC,SAAU,SAAkBsU,GAC1BR,EAAIv3C,YAAc+3C,GAEpBC,WAAY,kBAEX,GAAIrvB,EAAG,SAAU,CACpBhxB,MAAO,CACL,UAAW,KAEZ,CAACgxB,EAAG,UAAW,CAChB5T,IAAK,mBACL/W,YAAa,oBACbrG,MAAO,CACL,MAAS4/C,EAAIW,kBAAkBp0B,QAC/B,WAAc,GACd,OAAUyzB,EAAIc,aACd,cAAe,KACf,UAAWd,EAAI5tC,OACf,aAAc,GACd,aAAc,4BACd,YAAa4tC,EAAIe,eAEnB1gD,GAAI,CACF,gBAAiB,SAAsB+/C,GACrCJ,EAAI5tC,OAASguC,GAEf,iBAAkB,SAAsBA,GACtCJ,EAAI5tC,OAASguC,GAEf,kBAAmB,SAAwBA,GACzCJ,EAAIe,cAAgBX,GAEtB,mBAAoB,SAAwBA,GAC1CJ,EAAIe,cAAgBX,IAGxBn7C,YAAa+6C,EAAIgB,GAAG,CAAC,CACnBhlD,IAAK,eACL+G,GAAI,SAAYtF,GACd,MAAO,CAAC2zB,EAAG,UAAW,CACpB3qB,YAAa,kBACbrG,MAAO,CACL,KAAQ,GACR,QAAW,SAASxC,OAAOoiD,EAAIiB,yBAAyBxjD,EAAKwT,KAAK6tC,WAEnE,CAACkB,EAAIG,GAAG,IAAMH,EAAIkB,GAAGlB,EAAImB,sBAAsB1jD,EAAKwT,KAAK6tC,SAAW,UAExE,CACD9iD,IAAK,gBACL+G,GAAI,SAAYtF,GACd,MAAO,CAAC2zB,EAAG,aAAc,CACvBhxB,MAAO,CACL,QAAW,OACX,WAAY,GACZ,MAAS4/C,EAAIoB,OAAOjO,MAAMkO,UAAUC,OAEtCr8C,YAAa+6C,EAAIgB,GAAG,CAAC,CACnBhlD,IAAK,iBACL+G,GAAI,WACF,MAAO,CAACquB,EAAG,eAAgB,CACzB3qB,YAAa,yBACbrG,MAAO,CACL,KAAQ,mBACR,KAAQ,UAIdmhD,OAAO,IACL,MAAM,IACT,CAACnwB,EAAG,kBAAmB,CACxBhxB,MAAO,CACL,GAAM,CACJhD,KAAM,cACNokD,OAAQ,CACNC,QAAShkD,EAAKwT,KAAKjQ,OAIxB,CAACowB,EAAG,eAAgB,CACrBhxB,MAAO,CACL,KAAQ,cAERgxB,EAAG,OAAQ,CACb3qB,YAAa,sBACZ,CAACu5C,EAAIG,GAAG,mBAAoB,IAAK,WAGrC,GAAI/uB,EAAG,MAAO,CACjB3qB,YAAa,UACZ,CAAC2qB,EAAG,eAAgB,CACrB3qB,YAAa,UACbrG,MAAO,CACL,aAAc4/C,EAAIW,kBAAkBC,WACpC,WAAYZ,EAAIW,kBAAkB34C,SAEpCs4C,MAAO,CACLhkD,MAAO0jD,EAAIW,kBAAkBl4C,YAC7ByjC,SAAU,SAAkBsU,GAC1BR,EAAInlC,KAAKmlC,EAAIW,kBAAmB,cAAeH,IAEjDC,WAAY,oCAEX,IAAK,IAERiB,EAAkB,G,kUC/DtB,GACE9kD,WAAY,CACVkI,MAAJ,OACIiU,OAAJ,OACI7Q,YAAJ,OACIy5C,UAAJ,OACIC,cAAJ,OACIC,OAAJ,OACIC,MAAJ,OACIhoC,OAAJ,OACIioC,QAAJ,OACIhL,cAAJ,OACIzwB,YAAJ,OACI07B,WAAJ,OACIp+B,WAAJ,OACI3J,mBAAJ,OACIgoC,kBAAJ,OACI9I,KAAJ,OACI+I,KAAJ,OACIC,QAAJ,OACI/gD,MAAJ,OACIghD,UAAJ,KAEE3kD,KAAM,WAAR,OACA,4DACA,QACA,SAEA,WACA,aACA,cACA,8BACA,eACA,YACA,iBACA,gBACA,gBACA,kBACA,qBACA,cACA,wCACA,wCACA,oCACA,8CAGEgV,QA9CF,WA+CI3Y,KAAKumD,mBAEPhmD,QAAS,CACPqmD,SADJ,WAEM5mD,KAAKuoD,QAAQ5mD,KAAK,YAAxB,oDAEIolD,aAJJ,WAKM/mD,KAAKumD,mBAEPiC,eAPJ,SAOA,GACM,OAAO,iCACb,GADA,IAEQjI,KAAMvgD,KAAK2O,YACX85C,aAAczoD,KAAKkO,QACnBw6C,SAAU1oD,KAAK2oD,OAAOjB,OAAOxgD,MAGjC,gBAfJ,WAeA,+JACA,iBADA,SAEA,cACA,4BAHA,OAEA,oBAFA,OAKA,iBALA,8CAOImgD,sBAAuB,SAA3B,+BAEIF,yBAA0B,SAA9B,kCC/LkY,I,wBCQ9XyB,EAAY,eACd,EACAplD,EACAokD,GACA,EACA,KACA,KACA,MAIa,aAAAgB,E,2CCnBf,ySAASt1C,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI5S,OAAO6S,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAY/Q,MAAgB,QAAN0Q,GAAqB,QAANA,EAAoBM,MAAMC,KAAKV,GAAc,cAANG,GAAqB,2CAA2CQ,KAAKR,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBgB,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYvT,OAAOqT,GAAO,OAAOH,MAAMC,KAAKE,GAE1H,SAASjB,EAAmBD,GAAO,GAAIe,MAAMM,QAAQrB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKsB,IAAkB,MAAPA,GAAeA,EAAMtB,EAAIxR,UAAQ8S,EAAMtB,EAAIxR,QAAQ,IAAK,IAAID,EAAI,EAAGgT,EAAO,IAAIR,MAAMO,GAAM/S,EAAI+S,EAAK/S,IAAOgT,EAAKhT,GAAKyR,EAAIzR,GAAM,OAAOgT,EAEhL,SAAS9T,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAqB3M,IAAIsmD,EAAkB,SAAyBrmD,GAC7C,MAAO,QAAQsB,OAAOtB,GAAS,GAAI,MAGjCsmD,EAAkB,SAAyBtmD,GAC7C,MAAO,QAAQsB,OAAOtB,GAAS,GAAI,MAI1BU,EAAQ,CAEjB6lD,eAAgB,eAAS,QAEzBvjD,YAAa,eAAS,QACtBwjD,WAAY,eAAS,QACrBC,aAAc,eAAS,SAIdC,EAAa,aAAIvpD,OAAO,CACjCuD,MAAOA,EACP3C,QAAS,CACP4oD,aAAc,SAAsBl2C,GAElC,MAAO,CAACA,EAAM5M,MAAQ4M,EAAM5M,MAAQ,GAAI4M,EAAMm2C,QAAUn2C,EAAMm2C,QAAU,KAE1EC,YAAa,SAAqBp6C,EAAOgE,EAAOmL,GAC1Cpe,KAAKwR,YAAcxR,KAAKwR,WAAWvC,IAG5B,eAAYA,IAGZ,eAAoBjP,KAAK0P,OAOpC,eAAUT,GACVjP,KAAKuP,MAAM,OAAyB0D,EAAM/Q,IAAK+Q,EAAOhE,EAAOmP,KAE/Di3B,YAAa,WACX,IAAIvmC,EAAQ9O,KAERoe,EAASzd,UAAUoB,OAAS,QAAsBsH,IAAjB1I,UAAU,IAAmBA,UAAU,GACxEiQ,EAAS5Q,KAAK6Q,eACd4M,EAAazd,KAAKyd,WAClBzD,EAAeha,KAAKga,aACpBxU,EAAcxF,KAAKwF,YACnBC,EAAczF,KAAKyF,YACnBsjD,EAAiB/oD,KAAK+oD,eACtB5S,EAAiBn2C,KAAKm2C,eACtB1yC,EAAIzD,KAAKgR,eAGb,GAAIhR,KAAK4qB,iBAAqC,IAAlBha,EAAO7O,OACjC,OAAO0B,IAGT,IAAI6lD,EAAuB7rC,GAAczd,KAAK0f,YAAY,QAEtDxE,EAAgBlB,EAAeha,KAAKkb,cAAgB,OACpDlC,EAAgBgB,EAAeha,KAAKgZ,cAAgB,OAEpDuwC,EAAW,SAAkBt2C,EAAOoO,GACtC,IAAIE,EAAQtO,EAAMsO,MACdioC,EAAYv2C,EAAMu2C,UAClBnlD,EAAU4O,EAAM5O,QAChBD,EAAe6O,EAAM7O,aACrBlC,EAAM+Q,EAAM/Q,IACZy+C,EAAY,KAEX1tC,EAAMsO,MAAMiG,QAAWvU,EAAMw2C,cAKhC9I,EAAY,eAAU1tC,EAAM/Q,MAG9B,IAAIqE,EAAK,GAEL+iD,IACF/iD,EAAGsf,MAAQ,SAAU5W,GACnBH,EAAMu6C,YAAYp6C,EAAOgE,EAAOmL,IAGlC7X,EAAGuf,QAAU,SAAU7W,GACrB,IAAI2V,EAAU3V,EAAM2V,QAEhBA,IAAY,QAAcA,IAAY,QACxC9V,EAAMu6C,YAAYp6C,EAAOgE,EAAOmL,KAKtC,IAAIsrC,EAAYjsC,EAAa3O,EAAM6P,iBAAiBzc,EAAK+Q,EAAOmL,GAAU,GACtEurC,EAAYlsC,EAAa3O,EAAM2P,mBAAmBvc,EAAK+Q,EAAOmL,GAAU,KACxEwrC,EAAYnsC,EAAa3O,EAAM+P,iBAAiB3c,EAAK+Q,EAAOmL,GAAU,KACtEza,EAAO,CACT0C,MAAO,CAACyI,EAAMq6C,aAAal2C,GAAQ02C,GACnCzmD,MAAO,CACLmB,QAASA,EACTD,aAAcA,GAEhB+L,MAAO8C,EAAM42C,SAAW,GACxBvjD,MAAO1E,EAAcA,EAAc,CAGjC2hB,SAAU+lC,GAAwBr2C,EAAM0K,SAAW,IAAM,KACzDmsC,KAAM72C,EAAM82C,YAAc,KAC1Bl+B,MAAO5Y,EAAMw2C,aAAe,KAC5B,gBAAiBpoC,EAAW,EAC5B,aAAcs/B,GACb7xC,EAAM4R,YAAY,KAAMxe,EAAK+Q,EAAM4O,OAAQzD,EAAS,OAAS,OAAQ,KAAMsrC,GAC9EnjD,GAAIA,EACJrE,IAAKA,GAOH8nD,EAAY,CAACnB,EAAgB3mD,GAAM2mD,EAAgB3mD,EAAIsjB,eAAgBqjC,KAEvEzqC,IACF4rC,EAAY,CAAClB,EAAgB5mD,GAAM4mD,EAAgB5mD,EAAIsjB,eAAgBsjC,KAAmBhlD,OAAOwP,EAAmB02C,KAGtH,IAAI/jD,EAAQ,CACVsb,MAAOA,EACP0oC,OAAQ/nD,EACR+Q,MAAOA,EACPmL,OAAQA,EAERlD,cAAeA,EACflC,cAAeA,GAEb7S,EAAW2I,EAAM1I,cAAc4jD,EAAW/jD,IAAUxC,EAAE,MAAO,CAC/D+I,SAAU,eAAWg9C,EAAWjoC,KAE9B2oC,EAAWN,EAAYnmD,EAAE,OAAQ,CACnCkJ,YAAa,WACZ,KAAK7I,OAAO8lD,EAAW,MAAQ,KAElC,OAAOnmD,EAAE,OAAKE,EAAM,CAACwC,EAAU+jD,GAAU3oD,OAAO,UAI9C4oD,EAASv5C,EAAO2B,IAAIg3C,GAAUhoD,OAAO,QAErC6oD,EAAO,GAEX,GAAIhsC,EACFgsC,EAAKzoD,KAAK8B,EAAE,OAAK,CACf4C,MAAOrG,KAAKq2C,aACZnzC,MAAO,CACLmB,QAAS,eAAkB8xC,GAAkB4S,EAE7C5S,IAEDgU,QACE,CACL,IAAIlkD,EAAQ,CACViL,QAASN,EAAO7O,OAChB6O,OAAQA,EAERsK,cAAeA,EACflC,cAAeA,GAEjBoxC,EAAKzoD,KAAK3B,KAAKoG,cAAc,QAAqBH,IAAUxC,KAC5D2mD,EAAKzoD,KAAK8B,EAAE,OAAK,CACf4C,MAAOrG,KAAKipD,aACZ/lD,MAAO,CACLmB,QAAS0kD,IAEVoB,IAGL,OAAO1mD,EAAE2a,EAAS,OAAS,OAAQ,CACjC/X,OAAQ+X,EAASpe,KAAKo2C,WAAap2C,KAAKgpD,aAAe,KACvD9lD,MAAOkb,EAAS,CACd3Y,YAAaA,GAAeD,GAAe,MACzC,CACFA,YAAaA,GAAe,MAE9BtD,IAAKkc,EAAS,WAAa,YAC1BgsC,Q,sBClOR,SAASp4B,EAAE5Y,GAAqDojC,EAAOxvC,QAAQoM,EAAE,EAAQ,SAAzF,CAAyR,oBAAoBlQ,MAAKA,MAAU,SAAU8oB,GAAG,OAAO,SAASA,GAAG,IAAI5Y,EAAE,GAAG,SAASpF,EAAEgnB,GAAG,GAAG5hB,EAAE4hB,GAAG,OAAO5hB,EAAE4hB,GAAGhuB,QAAQ,IAAI6G,EAAEuF,EAAE4hB,GAAG,CAACl5B,EAAEk5B,EAAE5E,GAAE,EAAGppB,QAAQ,IAAI,OAAOglB,EAAEgJ,GAAG7mB,KAAKN,EAAE7G,QAAQ6G,EAAEA,EAAE7G,QAAQgH,GAAGH,EAAEuiB,GAAE,EAAGviB,EAAE7G,QAAQ,OAAOgH,EAAEqiB,EAAErE,EAAEhe,EAAE8jB,EAAE1e,EAAEpF,EAAEgiB,EAAE,SAAShE,EAAE5Y,EAAE4hB,GAAGhnB,EAAEH,EAAEme,EAAE5Y,IAAIhY,OAAOkB,eAAe0vB,EAAE5Y,EAAE,CAAC1X,YAAW,EAAG3B,IAAIi7B,KAAKhnB,EAAEgnB,EAAE,SAAShJ,GAAG,oBAAoBtd,QAAQA,OAAOwiC,aAAa91C,OAAOkB,eAAe0vB,EAAEtd,OAAOwiC,YAAY,CAAC10C,MAAM,WAAWpB,OAAOkB,eAAe0vB,EAAE,aAAa,CAACxvB,OAAM,KAAMwR,EAAEge,EAAE,SAASA,EAAE5Y,GAAG,GAAG,EAAEA,IAAI4Y,EAAEhe,EAAEge,IAAI,EAAE5Y,EAAE,OAAO4Y,EAAE,GAAG,EAAE5Y,GAAG,iBAAiB4Y,GAAGA,GAAGA,EAAEq4B,WAAW,OAAOr4B,EAAE,IAAIgJ,EAAE55B,OAAO8G,OAAO,MAAM,GAAG8L,EAAEgnB,EAAEA,GAAG55B,OAAOkB,eAAe04B,EAAE,UAAU,CAACt5B,YAAW,EAAGc,MAAMwvB,IAAI,EAAE5Y,GAAG,iBAAiB4Y,EAAE,IAAI,IAAIne,KAAKme,EAAEhe,EAAEgiB,EAAEgF,EAAEnnB,EAAE,SAASuF,GAAG,OAAO4Y,EAAE5Y,IAAI1O,KAAK,KAAKmJ,IAAI,OAAOmnB,GAAGhnB,EAAEA,EAAE,SAASge,GAAG,IAAI5Y,EAAE4Y,GAAGA,EAAEq4B,WAAW,WAAW,OAAOr4B,EAAEttB,SAAS,WAAW,OAAOstB,GAAG,OAAOhe,EAAEgiB,EAAE5c,EAAE,IAAIA,GAAGA,GAAGpF,EAAEH,EAAE,SAASme,EAAE5Y,GAAG,OAAOhY,OAAO6S,UAAU4mB,eAAe1mB,KAAK6d,EAAE5Y,IAAIpF,EAAE4mB,EAAE,GAAG5mB,EAAEA,EAAEod,EAAE,GAAj5B,CAAq5B,CAAC,SAAShY,EAAEpF,GAAGoF,EAAEpM,QAAQglB,GAAG,SAASA,EAAE5Y,EAAEpF,GAAG,aAAaA,EAAEgnB,EAAE5hB,GAAGpF,EAAEgiB,EAAE5c,EAAE,aAAY,WAAY,OAAO0e,KAAK9jB,EAAEgiB,EAAE5c,EAAE,UAAS,WAAY,OAAOwhB,KAAK,IAAII,EAAEhnB,EAAE,GAAGH,EAAEG,EAAEA,EAAEgnB,GAAGl5B,EAAE,CAAC,WAAW,UAAU,YAAY,gBAAgB,SAAS,gBAAgB,SAASy0B,IAAI,OAAOA,EAAEn1B,OAAOu5B,QAAQ,SAAS3I,GAAG,IAAI,IAAI5Y,EAAE,EAAEA,EAAEzY,UAAUoB,OAAOqX,IAAI,CAAC,IAAIpF,EAAErT,UAAUyY,GAAG,IAAI,IAAI4hB,KAAKhnB,EAAE5S,OAAO6S,UAAU4mB,eAAe1mB,KAAKH,EAAEgnB,KAAKhJ,EAAEgJ,GAAGhnB,EAAEgnB,IAAI,OAAOhJ,IAAItxB,MAAMV,KAAKW,WAAW,IAAIgb,EAAE,SAASqW,GAAG,OAAOA,EAAEnuB,QAAQ,kBAAkB,SAAS2hB,eAAe9H,EAAE,SAASsU,GAAG,OAAOuE,EAAE,GAAGvE,IAAIoE,EAAEt0B,EAAEgC,OAAO,CAAC,gBAAgB,cAAc,gBAAgB,UAAU,wBAAwB,cAAcstB,EAAE,CAAC,SAAS,cAAc0G,EAAE,CAACx0B,KAAK,aAAaE,OAAO,SAASwuB,GAAG,OAAOA,EAAE,QAAQ,CAAC1rB,MAAM,CAACkJ,KAAK,OAAO,cAAa,GAAItM,MAAM,CAACkmB,SAASppB,KAAKopB,UAAU7iB,GAAG,CAACrG,MAAMF,KAAK6oB,YAAY3lB,MAAM,CAACV,MAAM,CAACkC,QAAQ,KAAKkG,UAAS,EAAGk1C,UAAU,SAAS9tB,GAAG,OAAO,OAAOA,GAAGA,aAAavD,MAAM,iBAAiBuD,GAAGA,aAAa/c,QAAQ+c,aAAa1d,OAAO,iBAAiB0d,IAAIqF,OAAO,CAAC7nB,KAAKpO,OAAOsD,QAAQ,WAAW,MAAM,CAACosB,MAAK,EAAG4M,YAAY,QAAQ4sB,OAAO,CAAC96C,KAAK8E,MAAM5P,QAAQ,WAAW,OAAO5C,IAAIsnB,SAAS,CAAC5Z,KAAKwH,QAAQtS,SAAQ,IAAKf,KAAK,WAAW,MAAM,CAACsJ,GAAG,OAAO0L,QAAQ,WAAW,IAAIqZ,EAAEhyB,KAAK,IAAIA,KAAKiN,GAAG,CAAC,IAAImM,EAAEsE,EAAE1d,KAAKq3B,QAAQr3B,KAAKsqD,OAAOroD,SAAQ,SAAU+R,GAAG,IAAIgnB,EAAEl5B,EAAE+R,EAAE8H,EAAE2f,cAActnB,IAAI,GAAGoF,EAAEpF,IAAIgnB,EAAE5hB,EAAEpF,IAAI,GAAGgnB,aAAa1mB,MAAM0mB,EAAE,CAACA,IAAIl3B,OAAOhC,GAAE,WAAY,IAAI,IAAIsX,EAAEzY,UAAUoB,OAAOi5B,EAAE,IAAI1mB,MAAM8E,GAAGvF,EAAE,EAAEA,EAAEuF,EAAEvF,IAAImnB,EAAEnnB,GAAGlT,UAAUkT,GAAGme,EAAEziB,MAAM7O,MAAMsxB,EAAE,CAACrW,EAAE3H,IAAIlQ,OAAOk3B,UAAU5hB,EAAEskB,YAAY19B,KAAKwC,OAAO4W,EAAEskB,YAAY19B,KAAKiN,GAAG,IAAI4G,EAAE8H,EAAE3b,KAAKuqD,UAAUnxC,GAAGpZ,KAAKwqD,UAAUnrB,iBAAiB,OAAOr/B,KAAKkpB,QAAQlpB,KAAK+Y,IAAI,WAAW/Y,KAAK2vB,SAAS3vB,KAAKyqD,OAAO,WAAWzqD,KAAK0qD,cAAc,CAACC,WAAU,MAAOpqD,QAAQ,CAACgqD,QAAQ,WAAW,OAAOvqD,KAAKq3B,OAAOvG,KAAK9wB,KAAK0P,IAAIujB,WAAWjzB,KAAK0P,KAAKmZ,QAAQ,SAASmJ,GAAG,IAAI5Y,EAAEpZ,KAAKgU,EAAEge,EAAEnwB,OAAO7B,KAAK+O,WAAU,WAAYqK,EAAE7J,MAAM,QAAQyE,EAAExR,WAAWgoD,QAAQ,WAAW,OAAOxqD,KAAKiN,GAAGigB,UAAUltB,KAAKiN,GAAG/M,OAAOgpB,OAAO,SAAS8I,GAAGhyB,KAAKuP,MAAM,OAAOyiB,EAAEnwB,OAAOW,QAAQmtB,QAAQ,SAASqC,EAAE5Y,GAAGpZ,KAAKuP,MAAM,QAAQ6J,IAAIsxC,cAAc,SAAS14B,GAAGA,EAAEhyB,KAAKwqD,UAAU/2B,aAAa,WAAWzB,GAAGhyB,KAAKwqD,UAAUpjB,gBAAgB,cAAc54B,MAAM,CAAC6oB,OAAO,CAAC1gB,MAAK,EAAGC,QAAQ,SAASob,GAAG,IAAI5Y,EAAEpZ,KAAKgU,EAAE0J,EAAEsU,GAAGoE,EAAEn0B,SAAQ,SAAU+vB,UAAUhe,EAAEge,MAAMhyB,KAAKiN,GAAG9M,IAAI6T,GAAGod,EAAEnvB,SAAQ,SAAU+vB,QAAG,IAAShe,EAAEge,IAAI5Y,EAAEnM,GAAG9M,IAAI6xB,EAAEhe,EAAEge,SAASxvB,MAAM,SAASwvB,GAAGA,IAAIhyB,KAAK0P,IAAIlN,OAAOxC,KAAKiN,IAAIjN,KAAKiN,GAAG2hB,QAAQoD,GAAE,KAAM/a,cAAc,WAAWjX,KAAKiN,KAAKjN,KAAKwqD,UAAUjrB,oBAAoB,OAAOv/B,KAAKkpB,QAAQlpB,KAAKiN,GAAGg6B,UAAUjnC,KAAKiN,GAAG,QAAQ2tB,EAAE,SAAS5I,EAAE5Y,GAAG,IAAIpF,EAAE,aAAa,iBAAiBoF,IAAIpF,EAAEoF,GAAG4Y,EAAE42B,UAAU50C,EAAE8jB,IAAIA,EAAE8yB,QAAQhwB,EAAExhB,EAAE1U,QAAQozB,KAAKpzB,Y,kCCA/0H,uHAAS1D,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAQpM,IAAIW,EAAQ,eAAsB,eAAK,OAAuB,CAAC,WAAY,SAGvEilD,EAAiC,aAAIxoD,OAAO,CACrD2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAEpB,OAAO9D,EAAE,OAAkB,eAAUE,EAAM,CACzCT,MAAOtB,EAAcA,EAAc,GAAIsB,GAAQ,GAAI,CACjDkd,QAAQ,MAER7Y,O,kCC5BR,kDAMWsjD,EAAsB,WAC/B,IAAIrmC,EAAK7jB,UAAUoB,OAAS,QAAsBsH,IAAjB1I,UAAU,GAAmBA,UAAU,GAAKsP,SACzE66C,EAAM,iBACV,SAAOA,GAAiC,KAA1BA,EAAI52C,WAAWsT,QAAiBsjC,EAAIC,cAAgB,eAAUvmC,KAE5EsmC,EAAIC,aAAavmC,GAAI,K,kCCXvB,kGAKWthB,EAAQ,eAAsB,CACvC0B,IAAK,eAAS,OAAkB,QAC/B,SAGQomD,EAA+B,aAAIrrD,OAAO,CACnD2D,KAAM,QACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SACpB,OAAO9D,EAAEP,EAAM0B,IAAK,eAAUjB,EAAM,CAClCgJ,YAAa,qBACXpF,O,kCCpBR,sFAKWrE,EAAQ,eAAsB,CACvC4I,UAAW,eAAS,QACpBC,cAAe,eAAS,QACxBnH,IAAK,eAAS,OAAkB,OAChCiH,YAAa,eAAS,SACrB,QAGoB,aAAIlM,OAAO,CAChCuD,MAAOA,K,kCCdT,gGAGWA,EAAQ,GAGR+nD,EAAgB,aAAItrD,OAAO,CACpCY,QAAS,CACP60C,eAAgB,WACd,IAAIxkC,EAAS5Q,KAAK6Q,eACdpN,EAAIzD,KAAKgR,eACTk6C,EAAYznD,IAWhB,OATIzD,KAAKiR,kBAAkB,WACzBi6C,EAAYznD,EAAE,WAAY,CACxBvB,IAAK,YACJ,CAAClC,KAAKoG,cAAc,QAA0B,CAC/C8K,QAASN,EAAO7O,OAChB6O,OAAQA,OAILs6C,O,kCCtBb,wHAKIC,EAAW,0BAEJjoD,EAAQ,eAAsB,CACvCkoD,UAAW,eAAS,QAAmB,GACvChiC,SAAU,eAAS,QAAmB,GACtCa,KAAM,eAAS,QACf/iB,GAAI,eAAS,QACb5D,KAAM,eAAS,QACfsH,SAAU,eAAS,QAAmB,IACrC,gBAGQygD,EAAmB,aAAI1rD,OAAO,CACvCuD,MAAOA,EACPyV,QAAS,WACP3Y,KAAKsrD,mBAIP/gC,UAAW,WACTvqB,KAAKsrD,mBAEP/qD,QAAS,CACP+qD,gBAAiB,WACf,IAAIx8C,EAAQ9O,KAEZA,KAAK+O,WAAU,WACb,gBAAU,WACR,IAAIyV,EAAK1V,EAAMY,IAEXZ,EAAMs8C,WAAa,eAAU5mC,KAC1B,eAAQA,EAAI2mC,KACf3mC,EAAK,eAAO2mC,EAAU3mC,IAGxB,eAAaA,e,kCCxCzB,qQAASxjB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAkB3M,IAAIgpD,EAAa,WACbC,EAAQ,CAAC,KAAM,KAAM,MACrBC,EAAkB,GAClBC,EAA0C,GAAlBD,EAEjBE,EAAc,SAAqBnpD,GAI5C,OAFAA,EAAQ,eAASA,IAAU,eAAUA,GAAS,eAAQA,EAAO,GAAKA,EAE3D,eAASA,GAAS,GAAGsB,OAAOtB,EAAO,MAAQA,GAAS,MAGzDuN,EAAY,eAAK,OAAY,CAAC,SAAU,QAAS,cAC1C7M,EAAQ,eAAsB,eAAStB,EAAcA,EAAc,GAAImO,GAAY,GAAI,CAChG5F,IAAK,eAAS,OAAkB,UAChCw2C,UAAW,eAAS,QACpBiL,MAAO,eAAS,QAA0B,GAC1CC,UAAW,eAAS,QAAmB,GACvCC,YAAa,eAAS,QACtBC,SAAU,eAAS,QAAmB,GACtCC,aAAc,eAAS,OAAkB,WACzCC,OAAQ,eAAS,QAAmB,GACpCC,WAAY,eAAS,OAAkB,UACvC/oD,KAAM,eAAS,QACfqoB,QAAS,eAAS,QAA0B,GAC5Ce,KAAM,eAAS,QACf4/B,OAAQ,eAAS,QAAmB,GACpCjiD,IAAK,eAAS,QACdkiD,KAAM,eAAS,QACf/nD,QAAS,eAAS,OAAkB,gBACjC,QAGM4jD,EAAuB,aAAItoD,OAAO,CAC3C2D,KAAM,OACNiB,OAAQ,CAAC,QACTC,OAAQ,CACN6nD,cAAe,CACb3nD,QAAS,OAGbxB,MAAOA,EACPS,KAAM,WACJ,MAAO,CACL2oD,SAAUtsD,KAAKkK,KAAO,OAG1BtK,SAAU,CACR2sD,aAAc,WAEZ,IAAIF,EAAgBrsD,KAAKqsD,cACzB,OAAOV,EAAYU,EAAgBA,EAAc9/B,KAAOvsB,KAAKusB,OAE/DigC,gBAAiB,WACf,IAAIH,EAAgBrsD,KAAKqsD,cACzB,OAAOA,GAAiBA,EAAchoD,QAAUgoD,EAAchoD,QAAUrE,KAAKqE,SAE/EooD,gBAAiB,WACf,IAAIJ,EAAgBrsD,KAAKqsD,cACrBF,KAASE,IAAiBA,EAAcF,SAAgBnsD,KAAKmsD,OAC7D3gC,EAAU6gC,GAAiBA,EAAc7gC,QAAU6gC,EAAc7gC,QAAUxrB,KAAKwrB,QACpF,OAAO2gC,EAAS,IAAkB,KAAZ3gC,IAAwBA,GAAW,WAE3DkhC,UAAW,WACT,IAAIngC,EAAOvsB,KAAKusD,aACZI,GAAoC,IAAzBnB,EAAM9mC,QAAQ6H,GAAe,QAAQzoB,OAAOyoB,EAAM,OAAOzoB,OAAO2nD,EAAiB,KAAO,KACvG,OAAOkB,EAAW,CAChBA,SAAUA,GACR,IAENC,YAAa,WACX,IAAIrgC,EAAOvsB,KAAKusD,aACZF,EAAgBrsD,KAAKqsD,cACrBQ,EAAeR,EAAgBA,EAAcQ,aAAe,EAC5DrqD,EAAQ+pB,GAAQsgC,EAAe,QAAQ/oD,OAAOyoB,EAAM,QAAQzoB,OAAO+oD,EAAc,KAAO,KAC5F,OAAOrqD,EAAQ,CACbsqD,WAAYtqD,EACZuqD,YAAavqD,GACX,IAENwqD,WAAY,WACV,IAAIzgC,EAAOvsB,KAAKusD,aACZR,EAAW/rD,KAAK+rD,SAChBF,EAAY7rD,KAAK6rD,UACjBC,EAAc9rD,KAAK8rD,YACnBjoB,EAASioB,GAAe,MAC5B,MAAO,CACLa,UAAmC,IAAzBnB,EAAM9mC,QAAQ6H,GAAe,QAAQzoB,OAAOyoB,EAAM,OAAOzoB,OAAO4nD,EAAuB,MAAQ,KACzG1hD,IAAK+hD,EAAWloB,EAAS,KACzBh6B,OAAQkiD,EAAW,KAAOloB,EAC1Br5B,KAAMqhD,EAAYhoB,EAAS,KAC3Bt5B,MAAOshD,EAAY,KAAOhoB,KAIhCr1B,MAAO,CACLtE,IAAK,SAAauE,EAAUC,GACtBD,IAAaC,IACf1O,KAAKssD,SAAW79C,GAAY,QAIlClO,QAAS,CACP0sD,WAAY,SAAoBh+C,GAC9BjP,KAAKssD,SAAW,KAChBtsD,KAAKuP,MAAM,OAAsBN,IAEnCD,QAAS,SAAiBC,GACxBjP,KAAKuP,MAAM,OAAkBN,KAGjCzL,OAAQ,SAAgBC,GACtB,IAAIypD,EAEA7oD,EAAUrE,KAAKwsD,gBACfpjC,EAAWppB,KAAKopB,SAChBoC,EAAUxrB,KAAKysD,gBACftpD,EAAOnD,KAAKmD,KACZ+G,EAAMlK,KAAKssD,SACXF,EAAOpsD,KAAKosD,KACZM,EAAY1sD,KAAK0sD,UACjBE,EAAc5sD,KAAK4sD,YACnBrgC,EAAOvsB,KAAKusD,aACZN,EAASjsD,KAAKisD,OACdz8C,EAAOxP,KAAKksD,WACZN,EAAQ5rD,KAAK4rD,MACbI,EAAehsD,KAAKgsD,aACpBgB,EAAahtD,KAAKgtD,WAClBG,GAAQlB,GAAU,eAAOjsD,MACzB4E,EAAMqnD,EAAS,OAAUkB,EAAO,OAAQ,OACxChjD,EAAMnK,KAAKmK,IACXw2C,EAAY3gD,KAAK2gD,WAAa,KAC9Bx6C,EAAW,KAEXnG,KAAKiR,oBAEP9K,EAAW1C,EAAE,OAAQ,CACnBkJ,YAAa,mBACZ,CAAC3M,KAAKoG,kBACA8D,GACT/D,EAAW1C,EAAE,MAAO,CAClB0M,MAAO9L,EAAU,GAAK,CACpB+F,MAAO,OACPC,OAAQ,QAEV/D,MAAO,CACL4D,IAAKA,EACLC,IAAKA,GAEP5D,GAAI,CACFsC,MAAO7I,KAAKitD,cAGhB9mD,EAAW1C,EAAE,OAAQ,CACnBkJ,YAAa,gBACZ,CAACxG,KAEJA,EADShD,EACEM,EAAE,OAAO,CAClBP,MAAO,CACLC,KAAMA,GAERmD,MAAO,CACL,cAAe,OACf6D,IAAKA,KAGAiiD,EACE3oD,EAAE,OAAQ,CACnBkJ,YAAa,gBACbwD,MAAOu8C,GACN,CAACjpD,EAAE,OAAQ2oD,KAGH3oD,EAAE,OAAiB,CAC5B6C,MAAO,CACL,cAAe,OACf6D,IAAKA,KAKX,IAAIijD,EAAS3pD,IACT4pD,EAAertD,KAAKiR,kBAAkB,QAE1C,GAAI26C,GAAmB,KAAVA,GAAgByB,EAAc,CACzC,IAAIC,GAAsB,IAAV1B,EAAiB,GAAKA,EACtCwB,EAAS3pD,EAAE,OAAQ,CACjBkJ,YAAa,iBACbtG,MAAOlE,EAAgB,GAAI,SAAS2B,OAAOkoD,GAAeA,GAC1D77C,MAAO68C,GACN,CAACK,EAAertD,KAAKoG,cAAc,QAAmBknD,IAG3D,IAAIC,EAAgB,CAClB5gD,YAAa4+C,EACbllD,OAAQ6mD,EAAU,GAAI/qD,EAAgB+qD,EAAS,GAAGppD,OAAOynD,EAAY,KAAKznD,OAAOyoB,GAAOA,IAAiC,IAAzBi/B,EAAM9mC,QAAQ6H,IAAepqB,EAAgB+qD,EAAS,SAASppD,OAAOO,IAAW4nD,GAAU5nD,GAAUlC,EAAgB+qD,EAAS,WAAuB,IAAZ1hC,GAAmBrpB,EAAgB+qD,EAAS,WAAWppD,OAAO0nB,GAAUA,IAAuB,IAAZA,GAAmBrpB,EAAgB+qD,EAAS,WAAY9jC,GAAW8jC,GAC/X/8C,MAAOvO,EAAcA,EAAc,GAAIgrD,GAAc,GAAI,CACvDxiD,MAAOmiB,EACPliB,OAAQkiB,IAEVjmB,MAAO,CACL,aAAcq6C,GAAa,MAE7Bz9C,MAAO+oD,EAAS,CACd5nD,QAASA,EACT+kB,SAAUA,EACV5Z,KAAMA,GACJ29C,EAAO,eAAWp9C,EAAW/P,MAAQ,GACzCuG,GAAI0lD,GAAUkB,EAAO,CACnBtnC,MAAO7lB,KAAKgP,SACV,IAEN,OAAOvL,EAAEmB,EAAK2oD,EAAe,CAACpnD,EAAUinD,Q,kCC1O5C,+IAASpsD,EAAQC,EAAQC,GAAkB,IAAIC,EAAOC,OAAOD,KAAKF,GAAS,GAAIG,OAAOC,sBAAuB,CAAE,IAAIC,EAAUF,OAAOC,sBAAsBJ,GAAaC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAAgBP,EAAKQ,KAAKjB,MAAMS,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAInB,UAAUoB,OAAQD,IAAK,CAAE,IAAIE,EAAyB,MAAhBrB,UAAUmB,GAAanB,UAAUmB,GAAK,GAAQA,EAAI,EAAKd,EAAQI,OAAOY,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBN,EAAQK,EAAKF,EAAOE,OAAsBd,OAAOgB,0BAA6BhB,OAAOiB,iBAAiBR,EAAQT,OAAOgB,0BAA0BJ,IAAmBhB,EAAQI,OAAOY,IAASC,SAAQ,SAAUC,GAAOd,OAAOkB,eAAeT,EAAQK,EAAKd,OAAOK,yBAAyBO,EAAQE,OAAe,OAAOL,EAE7gB,SAASM,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOnB,OAAOkB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOd,YAAY,EAAMe,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAU3M,IAAIwN,EAAY,eAAK,OAAY,CAAC,QAAS,qBACpCA,EAAUy9C,KAAK9oD,eACfqL,EAAUm4B,GAAGxjC,QACb,IAAIxB,EAAQ,eAAsB,eAAStB,EAAcA,EAAc,GAAImO,GAAY,GAAI,CAChG09C,KAAM,eAAS,QAAmB,GAClC7oD,IAAK,eAAS,OAAkB,QAChCP,QAAS,eAAS,OAAkB,gBACjC,QAGM0jD,EAAsB,aAAIpoD,OAAO,CAC1C2D,KAAM,OACNC,YAAY,EACZL,MAAOA,EACPM,OAAQ,SAAgBC,EAAGC,GACzB,IAAIR,EAAQQ,EAAKR,MACbS,EAAOD,EAAKC,KACZ4D,EAAW7D,EAAK6D,SAChBy9C,EAAS9hD,EAAM8hD,OACf57B,EAAWlmB,EAAMkmB,SACjB+jC,EAAO,eAAOjqD,GACd0B,EAAMuoD,EAAO,OAAQjqD,EAAM0B,IAC3BP,EAAUnB,EAAMmB,SAAW,YAC/B,OAAOZ,EAAEmB,EAAK,eAAUjB,EAAM,CAC5BgJ,YAAa,QACbtG,MAAO,CAAC,SAASvC,OAAOO,GAAU,CAChC,aAAcnB,EAAMuqD,KACpBzI,OAAQA,EACR57B,SAAUA,IAEZlmB,MAAOiqD,EAAO,eAAWp9C,EAAW7M,GAAS,KAC3CqE,O,kCC7CR,kCAAO,IAAImmD,EAAO,c,kCCAlB","file":"js/chunk-339ceef4.89ea14e7.js","sourcesContent":["import { Vue } from '../vue'; // @vue/component\n\nexport var formSelectionMixin = Vue.extend({\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionStart;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionEnd;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionDirection;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n select: function select() {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n setSelectionRange: function setSelectionRange() {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n setRangeText: function setRangeText() {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../vue';\nimport { NAME_ICON } from '../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { RX_ICON_PREFIX } from '../constants/regex';\nimport { omit, sortKeys } from '../utils/object';\nimport { makeProp, makePropsConfigurable } from '../utils/props';\nimport { pascalCase, trim } from '../utils/string';\nimport { BIconBlank } from './icons';\nimport { props as BVIconBaseProps } from './helpers/icon-base'; // --- Helper methods ---\n\nvar findIconComponent = function findIconComponent(ctx, iconName) {\n if (!ctx) {\n return null;\n }\n\n var components = (ctx.$options || {}).components;\n var iconComponent = components[iconName];\n return iconComponent || findIconComponent(ctx.$parent, iconName);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, omit(BVIconBaseProps, ['content', 'stacked'])), {}, {\n icon: makeProp(PROP_TYPE_STRING),\n stacked: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_ICON); // --- Main component ---\n// Helper BIcon component\n// Requires the requested icon component to be installed\n// @vue/component\n\nexport var BIcon = /*#__PURE__*/Vue.extend({\n name: NAME_ICON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props,\n parent = _ref.parent;\n var icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, ''); // If parent context exists, we check to see if the icon has been registered\n // either locally in the parent component, or globally at the `$root` level\n // If not registered, we render a blank icon\n\n return h(icon ? findIconComponent(parent, \"BIcon\".concat(icon)) || BIconBlank : BIconBlank, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n icon: null\n })\n }));\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TABLE_CELL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Helper methods ---\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\n\nvar parseSpan = function parseSpan(value) {\n value = toInteger(value, 0);\n return value > 0 ? value : null;\n};\n/* istanbul ignore next */\n\n\nvar spanValidator = function spanValidator(value) {\n return isUndefinedOrNull(value) || parseSpan(value) > 0;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n stackedHeading: makeProp(PROP_TYPE_STRING),\n stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTd = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE_CELL,\n // Mixin order is important!\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n inject: {\n bvTableTr: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Overridden by ``\n tag: function tag() {\n return 'td';\n },\n inTbody: function inTbody() {\n return this.bvTableTr.inTbody;\n },\n inThead: function inThead() {\n return this.bvTableTr.inThead;\n },\n inTfoot: function inTfoot() {\n return this.bvTableTr.inTfoot;\n },\n isDark: function isDark() {\n return this.bvTableTr.isDark;\n },\n isStacked: function isStacked() {\n return this.bvTableTr.isStacked;\n },\n // We only support stacked-heading in tbody in stacked mode\n isStackedCell: function isStackedCell() {\n return this.inTbody && this.isStacked;\n },\n isResponsive: function isResponsive() {\n return this.bvTableTr.isResponsive;\n },\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return this.bvTableTr.isStickyHeader;\n },\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return this.bvTableTr.hasStickyHeader;\n },\n // Needed to handle background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky column cells are only available in responsive\n // mode (horizontal scrolling) or when sticky header mode\n // Applies to cells in `thead`, `tbody` and `tfoot`\n isStickyColumn: function isStickyColumn() {\n return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n },\n rowVariant: function rowVariant() {\n return this.bvTableTr.variant;\n },\n headVariant: function headVariant() {\n return this.bvTableTr.headVariant;\n },\n footVariant: function footVariant() {\n return this.bvTableTr.footVariant;\n },\n tableVariant: function tableVariant() {\n return this.bvTableTr.tableVariant;\n },\n computedColspan: function computedColspan() {\n return parseSpan(this.colspan);\n },\n computedRowspan: function computedRowspan() {\n return parseSpan(this.rowspan);\n },\n // We use computed props here for improved performance by caching\n // the results of the string interpolation\n cellClasses: function cellClasses() {\n var variant = this.variant,\n headVariant = this.headVariant,\n isStickyColumn = this.isStickyColumn;\n\n if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n // Needed for sticky-header mode as Bootstrap v4 table cells do\n // not inherit parent's `background-color`\n variant = this.rowVariant || this.tableVariant || 'b-table-default';\n }\n\n return [variant ? \"\".concat(this.isDark ? 'bg' : 'table', \"-\").concat(variant) : null, isStickyColumn ? 'b-table-sticky-column' : null];\n },\n cellAttrs: function cellAttrs() {\n var stackedHeading = this.stackedHeading; // We use computed props here for improved performance by caching\n // the results of the object spread (Object.assign)\n\n var headOrFoot = this.inThead || this.inTfoot; // Make sure col/rowspan's are > 0 or null\n\n var colspan = this.computedColspan;\n var rowspan = this.computedRowspan; // Default role and scope\n\n var role = 'cell';\n var scope = null; // Compute role and scope\n // We only add scopes with an explicit span of 1 or greater\n\n if (headOrFoot) {\n // Header or footer cells\n role = 'columnheader';\n scope = colspan > 0 ? 'colspan' : 'col';\n } else if (isTag(this.tag, 'th')) {\n // th's in tbody\n role = 'rowheader';\n scope = rowspan > 0 ? 'rowgroup' : 'row';\n }\n\n return _objectSpread(_objectSpread({\n colspan: colspan,\n rowspan: rowspan,\n role: role,\n scope: scope\n }, this.bvAttrs), {}, {\n // Add in the stacked cell label data-attribute if in\n // stacked mode (if a stacked heading label is provided)\n 'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ?\n /* istanbul ignore next */\n toString(stackedHeading) : null\n });\n }\n },\n render: function render(h) {\n var $content = [this.normalizeSlot()];\n return h(this.tag, {\n class: this.cellClasses,\n attrs: this.cellAttrs,\n // Transfer any native listeners\n on: this.bvListeners\n }, [this.isStackedCell ? h('div', [$content]) : $content]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Also sniffed by `` / `` / ``\n // Supported values: 'lite', 'dark', or `null`\n headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BThead = /*#__PURE__*/Vue.extend({\n name: NAME_THEAD,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isThead: function isThead() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n theadClasses: function theadClasses() {\n return [this.headVariant ? \"thead-\".concat(this.headVariant) : null];\n },\n theadAttrs: function theadAttrs() {\n return _objectSpread({\n role: 'rowgroup'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('thead', {\n class: this.theadClasses,\n attrs: this.theadAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","import axiosIns from '@/libs/axios'\r\nimport utilsService from './utilsService'\r\n\r\nconst controller = 'classroom'\r\n\r\nexport default {\r\n async getAll(filter) {\r\n return axiosIns\r\n .get(`${controller}?${utilsService.getQueryParams(filter)}`)\r\n .then(res => res.data)\r\n },\r\n async getById(id) {\r\n return axiosIns.get(`${controller}/${id}`).then(res => res.data)\r\n },\r\n async update(obj) {\r\n return axiosIns.put(controller, obj).then(res => res.data)\r\n },\r\n async create(req) {\r\n return axiosIns.post(controller, req).then(res => res.data)\r\n },\r\n}\r\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import { Vue } from '../vue'; // @vue/component\n\nexport var formValidityMixin = Vue.extend({\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n setCustomValidity: function setCustomValidity() {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n checkValidity: function checkValidity() {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n reportValidity: function reportValidity() {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as BImgProps } from '../image/img'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(BImgProps, ['src', 'alt', 'width', 'height', 'left', 'right'])), {}, {\n bottom: makeProp(PROP_TYPE_BOOLEAN, false),\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n start: makeProp(PROP_TYPE_BOOLEAN, false),\n top: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_IMG); // --- Main component ---\n// @vue/component\n\nexport var BCardImg = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var src = props.src,\n alt = props.alt,\n width = props.width,\n height = props.height;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n\n return h('img', mergeData(data, {\n class: baseClass,\n attrs: {\n src: src,\n alt: alt,\n width: width,\n height: height\n }\n }));\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName, unprefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardBody, props as BCardBodyProps } from './card-body';\nimport { BCardHeader, props as BCardHeaderProps } from './card-header';\nimport { BCardFooter, props as BCardFooterProps } from './card-footer';\nimport { BCardImg, props as BCardImgProps } from './card-img'; // --- Props ---\n\nvar cardImgProps = copyProps(BCardImgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BCardBodyProps), BCardHeaderProps), BCardFooterProps), cardImgProps), cardProps), {}, {\n align: makeProp(PROP_TYPE_STRING),\n noBody: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD); // --- Main component ---\n// @vue/component\n\nexport var BCard = /*#__PURE__*/Vue.extend({\n name: NAME_CARD,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var imgSrc = props.imgSrc,\n imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n imgBottom = props.imgBottom,\n header = props.header,\n headerHtml = props.headerHtml,\n footer = props.footer,\n footerHtml = props.footerHtml,\n align = props.align,\n textVariant = props.textVariant,\n bgVariant = props.bgVariant,\n borderVariant = props.borderVariant;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $imgFirst = h();\n var $imgLast = h();\n\n if (imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n\n if (imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n\n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(BCardHeaderProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n }\n\n var $content = normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots); // Wrap content in `` when `noBody` prop set\n\n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(BCardBodyProps, props)\n }, $content); // When the `overlap` prop is set we need to wrap the `` and ``\n // into a relative positioned wrapper to don't distract a potential header or footer\n\n if (props.overlay && imgSrc) {\n $content = h('div', {\n staticClass: 'position-relative'\n }, [$imgFirst, $content, $imgLast]); // Reset image variables since they are already in the wrapper\n\n $imgFirst = h();\n $imgLast = h();\n }\n }\n\n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot(SLOT_NAME_FOOTER, $scopedSlots, $slots);\n\n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(BCardFooterProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot(SLOT_NAME_FOOTER, slotScope, $scopedSlots, $slots));\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': imgLeft || imgStart,\n 'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart)\n }, _defineProperty(_class, \"text-\".concat(align), align), _defineProperty(_class, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class, \"text-\".concat(textVariant), textVariant), _class)\n }), [$imgFirst, $header, $content, $footer, $imgLast]);\n }\n});","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.pt = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var Portuguese = {\n weekdays: {\n shorthand: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n longhand: [\n \"Domingo\",\n \"Segunda-feira\",\n \"Terça-feira\",\n \"Quarta-feira\",\n \"Quinta-feira\",\n \"Sexta-feira\",\n \"Sábado\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Fev\",\n \"Mar\",\n \"Abr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Ago\",\n \"Set\",\n \"Out\",\n \"Nov\",\n \"Dez\",\n ],\n longhand: [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n ],\n },\n rangeSeparator: \" até \",\n time_24hr: true,\n };\n fp.l10ns.pt = Portuguese;\n var pt = fp.l10ns;\n\n exports.Portuguese = Portuguese;\n exports.default = pt;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_PAGINATION } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_PAGE_CLICK } from '../../constants/events';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, isVisible } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { mathCeil, mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_PROP_NAME, paginationMixin, props as paginationProps } from '../../mixins/pagination'; // --- Constants ---\n\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0; // --- Helper methods ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(value) {\n return mathMax(toInteger(value) || DEFAULT_PER_PAGE, 1);\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(value) {\n return mathMax(toInteger(value) || DEFAULT_TOTAL_ROWS, 0);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, paginationProps), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_PER_PAGE),\n totalRows: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_TOTAL_ROWS)\n})), NAME_PAGINATION); // --- Main component ---\n// @vue/component\n\nexport var BPagination = /*#__PURE__*/Vue.extend({\n name: NAME_PAGINATION,\n // The render function is brought in via the `paginationMixin`\n mixins: [paginationMixin],\n props: props,\n computed: {\n numberOfPages: function numberOfPages() {\n var result = mathCeil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n return result < 1 ? 1 : result;\n },\n // Used for watching changes to `perPage` and `numberOfPages`\n pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n return {\n perPage: sanitizePerPage(this.perPage),\n totalRows: sanitizeTotalRows(this.totalRows),\n numberOfPages: this.numberOfPages\n };\n }\n },\n watch: {\n pageSizeNumberOfPages: function pageSizeNumberOfPages(newValue, oldValue) {\n if (!isUndefinedOrNull(oldValue)) {\n if (newValue.perPage !== oldValue.perPage && newValue.totalRows === oldValue.totalRows) {\n // If the page size changes, reset to page 1\n this.currentPage = 1;\n } else if (newValue.numberOfPages !== oldValue.numberOfPages && this.currentPage > newValue.numberOfPages) {\n // If `numberOfPages` changes and is less than\n // the `currentPage` number, reset to page 1\n this.currentPage = 1;\n }\n }\n\n this.localNumberOfPages = newValue.numberOfPages;\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n\n if (currentPage > 0) {\n this.currentPage = currentPage;\n } else {\n this.$nextTick(function () {\n // If this value parses to `NaN` or a value less than `1`\n // trigger an initial emit of `null` if no page specified\n _this.currentPage = 0;\n });\n }\n },\n methods: {\n // These methods are used by the render function\n onClick: function onClick(event, pageNumber) {\n var _this2 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNumber === this.currentPage) {\n return;\n }\n\n var target = event.target; // Emit a user-cancelable `page-click` event\n\n var clickEvt = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n cancelable: true,\n vueTarget: this,\n target: target\n });\n this.$emit(clickEvt.type, clickEvt, pageNumber);\n\n if (clickEvt.defaultPrevented) {\n return;\n } // Update the `v-model`\n\n\n this.currentPage = pageNumber; // Emit event triggered by user interaction\n\n this.$emit(EVENT_NAME_CHANGE, this.currentPage); // Keep the current button focused if possible\n\n this.$nextTick(function () {\n if (isVisible(target) && _this2.$el.contains(target)) {\n attemptFocus(target);\n } else {\n _this2.focusCurrent();\n }\n });\n },\n makePage: function makePage(pageNum) {\n return pageNum;\n },\n\n /* istanbul ignore next */\n linkProps: function linkProps() {\n // No props, since we render a plain button\n return {};\n }\n }\n});","export function showSpinner() {\r\n document.getElementById('loading-bg').style.display = 'block'\r\n}\r\n\r\nexport function hideSpinner() {\r\n document.getElementById('loading-bg').style.display = 'none'\r\n}\r\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Supported values: 'lite', 'dark', or null\n footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTfoot = /*#__PURE__*/Vue.extend({\n name: NAME_TFOOT,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isTfoot: function isTfoot() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n tfootClasses: function tfootClasses() {\n return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n },\n tfootAttrs: function tfootAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'rowgroup'\n });\n }\n },\n render: function render(h) {\n return h('tfoot', {\n class: this.tfootClasses,\n attrs: this.tfootAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = Vue.extend({\n props: props,\n methods: {\n renderBottomRow: function renderBottomRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-bottom-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n key: 'b-bottom-row'\n }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n columns: fields.length,\n fields: fields\n }));\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(event) {\n // If table is busy (via provider) then don't propagate\n if (this.computedBusy) {\n stopEvent(event);\n return true;\n }\n\n return false;\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy: function renderBusy() {\n var tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n return h(BTr, {\n staticClass: 'b-table-busy-slot',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n key: 'table-busy-slot'\n }, [h(BTd, {\n props: {\n colspan: this.computedFields.length || null\n }\n }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n } // We return `null` here so that we can determine if we need to\n // render the table items rows or not\n\n\n return null;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n emptyHtml: makeProp(PROP_TYPE_STRING),\n emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = Vue.extend({\n props: props,\n methods: {\n renderEmpty: function renderEmpty() {\n var items = this.computedItems;\n var h = this.$createElement;\n var $empty = h();\n\n if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n var fields = this.computedFields,\n isFiltered = this.isFiltered,\n emptyText = this.emptyText,\n emptyHtml = this.emptyHtml,\n emptyFilteredText = this.emptyFilteredText,\n emptyFilteredHtml = this.emptyFilteredHtml,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n emptyFilteredHtml: emptyFilteredHtml,\n emptyFilteredText: emptyFilteredText,\n emptyHtml: emptyHtml,\n emptyText: emptyText,\n fields: fields,\n // Not sure why this is included, as it will always be an empty array\n items: items\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n });\n }\n\n $empty = h(BTd, {\n props: {\n colspan: fields.length || null\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h(BTr, {\n staticClass: 'b-table-empty-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n }, [$empty]);\n }\n\n return $empty;\n }\n }\n});","import { isDate, isObject, isUndefinedOrNull } from './inspect';\nimport { keys } from './object';\nimport { toString } from './string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Strings are returned as-is\n// Numbers get converted to string\n// `null` and `undefined` values are filtered out\n// Dates are converted to their native string format\n\nexport var stringifyObjectValues = function stringifyObjectValues(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (isObject(value) && !isDate(value)) {\n return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .map(function (k) {\n return stringifyObjectValues(value[k]);\n }).filter(function (v) {\n return !!v;\n }) // Ignore empty strings\n .join(' ');\n }\n\n return toString(value);\n};","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // We first need to format the row based on the field configurations\n // This ensures that we add formatted values for keys that may not\n // exist in the row itself\n var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n var field = fieldsObj[key];\n var filterByFormatted = field.filterByFormatted;\n var formatter = isFunction(filterByFormatted) ?\n /* istanbul ignore next */\n filterByFormatted : filterByFormatted ?\n /* istanbul ignore next */\n field.formatter : null;\n\n if (isFunction(formatter)) {\n result[key] = formatter(row[key], key, row);\n }\n\n return result;\n }, clone(row)); // Determine the allowed keys:\n // - Ignore special fields that start with `_`\n // - Ignore fields in the `ignoreFields` array\n // - Include only fields in the `includeFields` array\n\n var allowedKeys = keys(formattedRow).filter(function (key) {\n return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n });\n return pick(formattedRow, allowedKeys);\n};","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n /* istanbul ignore next */\n '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"\" instead.'; // --- Props ---\n\nexport var props = {\n filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n return RX_DIGITS.test(String(value));\n }),\n filterFunction: makeProp(PROP_TYPE_FUNCTION),\n filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n // Flag for displaying which empty slot to show and some event triggering\n isFiltered: false,\n // Where we store the copy of the filter criteria after debouncing\n // We pre-set it with the sanitized filter value\n localFilter: this.filterSanitize(this.filter)\n };\n },\n computed: {\n computedFilterIgnored: function computedFilterIgnored() {\n return concat(this.filterIgnoredFields || []).filter(identity);\n },\n computedFilterIncluded: function computedFilterIncluded() {\n return concat(this.filterIncludedFields || []).filter(identity);\n },\n computedFilterDebounce: function computedFilterDebounce() {\n var ms = toInteger(this.filterDebounce, 0);\n /* istanbul ignore next */\n\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n }\n\n return ms;\n },\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n // For watching changes to `filteredItems` vs `localItems`\n filteredCheck: function filteredCheck() {\n var filteredItems = this.filteredItems,\n localItems = this.localItems,\n localFilter = this.localFilter;\n return {\n filteredItems: filteredItems,\n localItems: localItems,\n localFilter: localFilter\n };\n },\n // Sanitized/normalize filter-function prop\n localFilterFn: function localFilterFn() {\n // Return `null` to signal to use internal filter function\n var filterFunction = this.filterFunction;\n return hasPropFunction(filterFunction) ? filterFunction : null;\n },\n // Returns the records in `localItems` that match the filter criteria\n // Returns the original `localItems` array if not sorting\n filteredItems: function filteredItems() {\n // Note the criteria is debounced and sanitized\n var items = this.localItems,\n criteria = this.localFilter; // Resolve the filtering function, when requested\n // We prefer the provided filtering function and fallback to the internal one\n // When no filtering criteria is specified the filtering factories will return `null`\n\n var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n }\n },\n watch: {\n // Watch for debounce being set to 0\n computedFilterDebounce: function computedFilterDebounce(newValue) {\n if (!newValue && this.$_filterTimer) {\n this.clearFilterTimer();\n this.localFilter = this.filterSanitize(this.filter);\n }\n },\n // Watch for changes to the filter criteria, and debounce if necessary\n filter: {\n // We need a deep watcher in case the user passes\n // an object when using `filter-function`\n deep: true,\n handler: function handler(newCriteria) {\n var _this = this;\n\n var timeout = this.computedFilterDebounce;\n this.clearFilterTimer();\n\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(function () {\n _this.localFilter = _this.filterSanitize(newCriteria);\n }, timeout);\n } else {\n // Otherwise, immediately update `localFilter` with `newFilter` value\n this.localFilter = this.filterSanitize(newCriteria);\n }\n }\n },\n // Watch for changes to the filter criteria and filtered items vs `localItems`\n // Set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered = false;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // If filter criteria is truthy\n isFiltered = true;\n }\n\n if (isFiltered) {\n this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newValue, oldValue) {\n if (newValue === false && oldValue === true) {\n // We need to emit a filtered event if `isFiltered` transitions from `true` to\n // `false` so that users can update their pagination controls\n var localItems = this.localItems;\n this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create private non-reactive props\n this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n // This will trigger any watchers/dependents\n // this.localFilter = this.filterSanitize(this.filter)\n // Set the initial filtered state in a `$nextTick()` so that\n // we trigger a filtered event if needed\n\n this.$nextTick(function () {\n _this2.isFiltered = Boolean(_this2.localFilter);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFilterTimer();\n },\n methods: {\n clearFilterTimer: function clearFilterTimer() {\n clearTimeout(this.$_filterTimer);\n this.$_filterTimer = null;\n },\n filterSanitize: function filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return '';\n } // Could be a string, object or array, as needed by external filter function\n // We use `cloneDeep` to ensure we have a new copy of an object or array\n // without Vue's reactive observers\n\n\n return cloneDeep(criteria);\n },\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions\n // Wrap the provided filter-function and return a new function\n // Returns `null` if no filter-function defined or if criteria is falsey\n // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n var _this3 = this;\n\n // Generates the default filter function, using the given filter criteria\n // Returns `null` if no criteria or criteria format not supported\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the RegExp needed for filtering\n\n\n var regExp = criteria;\n\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special `_` prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields)\n // Users can ignore filtering on specific fields, or on only certain fields,\n // and can optionall specify searching results of fields with formatter\n //\n // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n //\n // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n regExp.lastIndex = 0;\n return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n props: props,\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var items = this.sortedItems || this.filteredItems || this.localItems || [];\n var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n if (this.localPaging && perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n // Passed to the context object\n // Not used by `` directly\n apiUrl: makeProp(PROP_TYPE_STRING),\n // Adds in 'Function' support\n items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = Vue.extend({\n mixins: [listenOnRootMixin],\n props: props,\n computed: {\n hasProvider: function hasProvider() {\n return isFunction(this.items);\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return clone(ctx);\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newValue) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || isFunction(newValue)) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newValue, oldValue)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n var items = this.items,\n refresh = this.refresh; // Public Method: Force a refresh of the provider function\n\n this.$off(EVENT_NAME_REFRESHED, refresh);\n\n if (this.computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on(EVENT_NAME_REFRESHED, refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(items) ? items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n if (this.id) {\n this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n var _this2 = this;\n\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (this.computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n try {\n // Call provider function passing it the context and optional callback\n var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n _this2._providerSetLocal(data);\n } else {\n /* istanbul ignore if */\n if (_this2.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n _this2.localBusy = false;\n }\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n _this2.localBusy = false;\n\n _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n }\n });\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single']; // --- Props ---\n\nexport var props = {\n // Disable use of click handlers for row selection\n noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n return arrayIncludes(SELECT_MODES, value);\n }),\n selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n hasSelectableRowClick: function hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick;\n },\n supportsSelectableRows: function supportsSelectableRows() {\n return true;\n },\n selectableHasSelection: function selectableHasSelection() {\n var selectedRows = this.selectedRows;\n return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var isSelectable = this.isSelectable;\n return _ref = {\n 'b-table-selectable': isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n // TODO:\n // Should this attribute not be included when no-select-on-click is set\n // since this attribute implies keyboard navigation?\n 'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n };\n }\n },\n watch: {\n computedItems: function computedItems(newValue, oldValue) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n for (var i = 0; equal && i < newValue.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(newValue);\n },\n selectMode: function selectMode() {\n this.clearSelected();\n },\n hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(!newValue);\n },\n selectedRows: function selectedRows(_selectedRows, oldValue) {\n var _this = this;\n\n if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit(EVENT_NAME_ROW_SELECTED, items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n }\n\n return {};\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method](EVENT_NAME_FILTERED, this.clearSelected);\n this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, event) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable || this.noSelectOnClick) {\n // Don't do anything if table is not in selectable mode\n this.clearSelected();\n return;\n }\n\n var selectMode = this.selectMode,\n selectedLastRow = this.selectedLastRow;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (selectedLastRow > -1 && event.shiftKey) {\n // range\n for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(event.ctrlKey || event.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});","var _props, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort Ascending'),\n labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort Descending'),\n noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n // Another prop that should have had a better name\n // It should be `noSortClear` (on non-sortable headers)\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n // Sorts the filtered items and returns a new array of the sorted items\n // When not sorted, the original items array will be returned\n sortedItems: function sortedItems() {\n var sortBy = this.localSortBy,\n sortDesc = this.localSortDesc,\n locale = this.sortCompareLocale,\n nullLast = this.sortNullLast,\n sortCompare = this.sortCompare,\n localSorting = this.localSorting;\n var items = (this.filteredItems || this.localItems || []).slice();\n\n var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n usage: 'sort'\n });\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = isFunction(sortByFormatted) ?\n /* istanbul ignore next */\n sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return stableSort(items, function (a, b) {\n var result = null; // Call user provided `sortCompare` routine first\n\n if (isFunction(sortCompare)) {\n // TODO:\n // Change the `sortCompare` signature to the one of `defaultSortCompare`\n // with the next major version bump\n result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n // is not defined or returns `null`/`false`\n\n\n if (isUndefinedOrNull(result) || result === false) {\n result = defaultSortCompare(a, b, {\n sortBy: sortBy,\n formatter: formatter,\n locale: locale,\n localeOptions: localeOptions,\n nullLast: nullLast\n });\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: (_watch = {\n /* istanbul ignore next: pain in the butt to test */\n isSortable: function isSortable(newValue) {\n if (newValue) {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n } else {\n this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n }\n }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortDesc) {\n return;\n }\n\n this.localSortDesc = newValue || false;\n }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortBy) {\n return;\n }\n\n this.localSortBy = newValue || '';\n }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n // Emit update to sort-desc.sync\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n }\n }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n }\n }), _watch),\n created: function created() {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, event, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n _this.localSortDesc = false;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n if (this.localSortBy === sortKey) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = sortKey; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable; // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n return {\n 'aria-sort': ariaSort\n };\n },\n sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n // A label to be placed in an `.sr-only` element in the header cell\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No label if not a sortable table\n return null;\n }\n\n var sortable = field.sortable; // The correctness of these labels is very important for screen-reader users.\n\n var labelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n labelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n labelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n labelSorting = this.labelSortAsc;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n labelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n labelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Return the sr-only sort label or null if no label\n\n\n return trim(labelSorting) || null;\n }\n }\n});","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n }\n\n if (isNumeric(value)) {\n return toFloat(value, value);\n }\n\n return value;\n}; // Default sort compare routine\n//\n// TODO:\n// Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where `sortBy` could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in `mixin-sort.js` by\n// calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n _ref$formatter = _ref.formatter,\n formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? undefined : _ref$locale,\n _ref$localeOptions = _ref.localeOptions,\n localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n _ref$nullLast = _ref.nullLast,\n nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n // Get the value by `sortBy`\n var aa = get(a, sortBy, null);\n var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n if (isFunction(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n } // Internally normalize value\n // `null` / `undefined` => ''\n // `'0'` => `0`\n\n\n aa = normalizeValue(aa);\n bb = normalizeValue(bb);\n\n if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting `null` / `undefined` / '' last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting `null` / `undefined` / '' last\n return -1;\n } // Do localized string comparison\n\n\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = Vue.extend({\n methods: {\n renderTopRow: function renderTopRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-top-row',\n class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n key: 'b-top-row'\n }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n columns: fields.length,\n fields: fields\n })]);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar LIGHT = 'light';\nvar DARK = 'dark'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTr = /*#__PURE__*/Vue.extend({\n name: NAME_TR,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableTr: this\n };\n },\n inject: {\n bvTableRowGroup: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / ``\n inTbody: function inTbody() {\n return this.bvTableRowGroup.isTbody;\n },\n // Sniffed by `` / ``\n inThead: function inThead() {\n return this.bvTableRowGroup.isThead;\n },\n // Sniffed by `` / ``\n inTfoot: function inTfoot() {\n return this.bvTableRowGroup.isTfoot;\n },\n // Sniffed by `` / ``\n isDark: function isDark() {\n return this.bvTableRowGroup.isDark;\n },\n // Sniffed by `` / ``\n isStacked: function isStacked() {\n return this.bvTableRowGroup.isStacked;\n },\n // Sniffed by `` / ``\n isResponsive: function isResponsive() {\n return this.bvTableRowGroup.isResponsive;\n },\n // Sniffed by `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return this.bvTableRowGroup.isStickyHeader;\n },\n // Sniffed by / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n },\n // Sniffed by `` / ``\n tableVariant: function tableVariant() {\n return this.bvTableRowGroup.tableVariant;\n },\n // Sniffed by `` / ``\n headVariant: function headVariant() {\n return this.inThead ? this.bvTableRowGroup.headVariant : null;\n },\n // Sniffed by `` / ``\n footVariant: function footVariant() {\n return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n },\n isRowDark: function isRowDark() {\n return this.headVariant === LIGHT || this.footVariant === LIGHT ?\n /* istanbul ignore next */\n false : this.headVariant === DARK || this.footVariant === DARK ?\n /* istanbul ignore next */\n true : this.isDark;\n },\n trClasses: function trClasses() {\n var variant = this.variant;\n return [variant ? \"\".concat(this.isRowDark ? 'bg' : 'table', \"-\").concat(variant) : null];\n },\n trAttrs: function trAttrs() {\n return _objectSpread({\n role: 'row'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('tr', {\n class: this.trClasses,\n attrs: this.trAttrs,\n // Pass native listeners to child\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","// Mixin to determine if an event listener has been registered\n// either via `v-on:name` (in the parent) or programmatically\n// via `vm.$on('name', ...)`\n// See: https://github.com/vuejs/vue/issues/10825\nimport { Vue } from '../vue';\nimport { isArray, isUndefined } from '../utils/inspect'; // @vue/component\n\nexport var hasListenerMixin = Vue.extend({\n methods: {\n hasListener: function hasListener(name) {\n // Only includes listeners registered via `v-on:name`\n var $listeners = this.$listeners || {}; // Includes `v-on:name` and `this.$on('name')` registered listeners\n // Note this property is not part of the public Vue API, but it is\n // the only way to determine if a listener was added via `vm.$on`\n\n var $events = this._events || {}; // Registered listeners in `this._events` are always an array,\n // but might be zero length\n\n return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_ASIDE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BMediaAside } from './media-aside';\nimport { BMediaBody } from './media-body'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n rightAlign: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA); // --- Main component ---\n// @vue/component\n\nexport var BMedia = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots,\n children = _ref.children;\n var noBody = props.noBody,\n rightAlign = props.rightAlign,\n verticalAlign = props.verticalAlign;\n var $children = noBody ? children : [];\n\n if (!noBody) {\n var slotScope = {};\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n $children.push(h(BMediaBody, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots)));\n var $aside = normalizeSlot(SLOT_NAME_ASIDE, slotScope, $scopedSlots, $slots);\n\n if ($aside) {\n $children[rightAlign ? 'push' : 'unshift'](h(BMediaAside, {\n props: {\n right: rightAlign,\n verticalAlign: verticalAlign\n }\n }, $aside));\n }\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'media'\n }), $children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_PREPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_PREPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupPrepend = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_PREPEND,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n append: false\n })\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS } from './constants'; // --- Props ---\n\nexport var props = {\n detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n tbodyTrClass: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n}; // --- Mixin ---\n// @vue/component\n\nexport var tbodyRowMixin = Vue.extend({\n props: props,\n methods: {\n // Methods for computing classes, attributes and styles for table cells\n getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n var $parent = this.$parent;\n\n if (tdValue) {\n var value = get(item, key, '');\n\n if (isFunction(tdValue)) {\n return tdValue(value, key, item);\n } else if (isString(tdValue) && isFunction($parent[tdValue])) {\n return $parent[tdValue](value, key, item);\n }\n\n return tdValue;\n }\n\n return defaultValue;\n },\n getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n var $parent = this.$parent;\n\n if (thValue) {\n var value = get(item, key, '');\n\n if (isFunction(thValue)) {\n return thValue(value, key, item, type);\n } else if (isString(thValue) && isFunction($parent[thValue])) {\n return $parent[thValue](value, key, item, type);\n }\n\n return thValue;\n }\n\n return defaultValue;\n },\n // Method to get the value for a field\n getFormattedValue: function getFormattedValue(item, field) {\n var key = field.key;\n var formatter = this.getFieldFormatter(key);\n var value = get(item, key, null);\n\n if (isFunction(formatter)) {\n value = formatter(value, key, item);\n }\n\n return isUndefinedOrNull(value) ? '' : value;\n },\n // Factory function methods\n toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n var _this = this;\n\n // Returns a function to toggle a row's details slot\n return function () {\n if (hasDetailsSlot) {\n _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n }\n };\n },\n // Row event handlers\n rowHovered: function rowHovered(event) {\n // `mouseenter` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n }\n },\n rowUnhovered: function rowUnhovered(event) {\n // `mouseleave` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n }\n },\n // Renders a TD or TH for a row's field\n renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n var _this2 = this;\n\n var isStacked = this.isStacked;\n var key = field.key,\n label = field.label,\n isRowHeader = field.isRowHeader;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var formatted = this.getFormattedValue(item, field);\n var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n // improve performance of BTable/BTableLite by reducing the\n // total number of vue instances created during render\n\n var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n var data = {\n // For the Vue key, we concatenate the column index and\n // field key (as field keys could be duplicated)\n // TODO: Although we do prevent duplicate field keys...\n // So we could change this to: `row-${rowIndex}-cell-${key}`\n class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n props: {},\n attrs: _objectSpread({\n 'aria-colindex': String(colIndex + 1)\n }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n };\n\n if (stickyColumn) {\n // We are using the helper BTd or BTh\n data.props = {\n stackedHeading: isStacked ? label : null,\n stickyColumn: true,\n variant: cellVariant\n };\n } else {\n // Using native TD or TH element, so we need to\n // add in the attributes and variant class\n data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n if (cellVariant) {\n data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n }\n }\n\n var slotScope = {\n item: item,\n index: rowIndex,\n field: field,\n unformatted: get(item, key, ''),\n value: formatted,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n slotScope.selectRow = function () {\n return _this2.selectRow(rowIndex);\n };\n\n slotScope.unselectRow = function () {\n return _this2.unselectRow(rowIndex);\n };\n } // The new `v-slot` syntax doesn't like a slot name starting with\n // a square bracket and if using in-document HTML templates, the\n // v-slot attributes are lower-cased by the browser.\n // Switched to round bracket syntax to prevent confusion with\n // dynamic slot name syntax.\n // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n // Will be `null` if no slot (or fallback slot) exists\n\n\n var slotName = this.$_bodyFieldSlotNameCache[key];\n var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n if (this.isStacked) {\n // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n $childNodes = [h('div', [$childNodes])];\n } // Render either a td or th cell\n\n\n return h(cellTag, data, [$childNodes]);\n },\n // Renders an item's row (or rows if details supported)\n renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n var _this3 = this;\n\n var fields = this.computedFields,\n striped = this.striped,\n primaryKey = this.primaryKey,\n currentPage = this.currentPage,\n perPage = this.perPage,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || this.hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n var $rows = []; // Details ID needed for `aria-details` when details showing\n // We set it to `null` when not showing so that attribute\n // does not appear on the element\n\n var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n var $tds = fields.map(function (field, colIndex) {\n return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n }); // Calculate the row number in the dataset (indexed from 1)\n\n var ariaRowIndex = null;\n\n if (currentPage && perPage && perPage > 0) {\n ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n } // Create a unique :key to help ensure that sub components are re-rendered rather than\n // re-used, which can cause issues. If a primary key is not provided we use the rendered\n // rows index within the tbody.\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n var primaryKeyValue = toString(get(item, primaryKey)) || null;\n var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n // In the format of '{tableId}__row_{primaryKeyValue}'\n\n var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n var selectableClasses = this.selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n var selectableAttrs = this.selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n var userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n var userTrAttrs = isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n $rows.push(h(BTr, {\n class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({\n id: rowId\n }, userTrAttrs), {}, {\n // Users cannot override the following attributes\n tabindex: hasRowClickHandler ? '0' : null,\n 'data-pk': primaryKeyValue || null,\n 'aria-details': detailsId,\n 'aria-owns': detailsId,\n 'aria-rowindex': ariaRowIndex\n }, selectableAttrs),\n on: {\n // Note: These events are not A11Y friendly!\n mouseenter: this.rowHovered,\n mouseleave: this.rowUnhovered\n },\n key: \"__b-table-row-\".concat(rowKey, \"__\"),\n ref: 'item-rows',\n refInFor: true\n }, $tds)); // Row Details slot\n\n if (rowShowDetails) {\n var detailsScope = {\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n detailsScope.selectRow = function () {\n return _this3.selectRow(rowIndex);\n };\n\n detailsScope.unselectRow = function () {\n return _this3.unselectRow(rowIndex);\n };\n } // Render the details slot in a TD\n\n\n var $details = h(BTd, {\n props: {\n colspan: fields.length\n },\n class: this.detailsTdClass\n }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n // Only added if the table is striped\n\n if (striped) {\n $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n h('tr', {\n staticClass: 'd-none',\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n },\n key: \"__b-table-details-stripe__\".concat(rowKey)\n }));\n } // Add the actual details row\n\n\n var userDetailsTrClasses = isFunction(this.tbodyTrClass) ?\n /* istanbul ignore next */\n this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ?\n /* istanbul ignore next */\n this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n $rows.push(h(BTr, {\n staticClass: 'b-table-details',\n class: [userDetailsTrClasses],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({}, userDetailsTrAttrs), {}, {\n // Users cannot override the following attributes\n id: detailsId,\n tabindex: '-1'\n }),\n key: \"__b-table-details__\".concat(rowKey)\n }, [$details]));\n } else if (hasDetailsSlot) {\n // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n $rows.push(h());\n\n if (striped) {\n // Add extra placeholder if table is striped\n $rows.push(h());\n }\n } // Return the row(s)\n\n\n return $rows;\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED } from '../../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_SPACE, CODE_UP } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { BTbody, props as BTbodyProps } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { tbodyRowMixin, props as tbodyRowProps } from './mixin-tbody-row'; // --- Helper methods ---\n\nvar getCellSlotName = function getCellSlotName(value) {\n return \"cell(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread({}, BTbodyProps), tbodyRowProps), {}, {\n tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})); // --- Mixin ---\n// @vue/component\n\nexport var tbodyMixin = Vue.extend({\n mixins: [tbodyRowMixin],\n props: props,\n beforeDestroy: function beforeDestroy() {\n this.$_bodyFieldSlotNameCache = null;\n },\n methods: {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs['item-rows']` is an array of item TR components/elements\n // Rows should all be `` components, but we map to TR elements\n // Also note that `this.$refs['item-rows']` may not always be in document order\n getTbodyTrs: function getTbodyTrs() {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n var trs = ($refs['item-rows'] || []).map(function (tr) {\n return tr.$el || tr;\n });\n return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n return arrayIncludes(trs, tr);\n }) :\n /* istanbul ignore next */\n [];\n },\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n /* istanbul ignore next: should not normally happen */\n if (!isElement(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n // Emits a row event, with the item object, row index and original event\n emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n if (type && this.hasListener(type) && event && event.target) {\n var rowIndex = this.getTbodyTrIndex(event.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, event);\n }\n }\n },\n tbodyRowEvtStopped: function tbodyRowEvtStopped(event) {\n return this.stopIfBusy && this.stopIfBusy(event);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n // Keyboard navigation and row click emulation\n var target = event.target,\n keyCode = event.keyCode;\n\n if (this.tbodyRowEvtStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n stopEvent(event);\n this.onTBodyRowClicked(event);\n } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n stopEvent(event);\n var trs = this.getTbodyTrs();\n var shift = event.shiftKey;\n\n if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n // Focus first row\n attemptFocus(trs[0]);\n } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n // Focus last row\n attemptFocus(trs[trs.length - 1]);\n } else if (keyCode === CODE_UP && rowIndex > 0) {\n // Focus previous row\n attemptFocus(trs[rowIndex - 1]);\n } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n attemptFocus(trs[rowIndex + 1]);\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(event) {\n // Don't emit event when the table is busy, the user clicked\n // on a non-disabled control or is selecting text\n if (this.tbodyRowEvtStopped(event) || filterEvent(event) || textSelectionActive(this.$el)) {\n return;\n }\n\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && event.which === 2) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n if (!this.tbodyRowEvtStopped(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && !filterEvent(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n }\n },\n // Render the tbody element and children\n // Note:\n // Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n renderTbody: function renderTbody() {\n var _this = this;\n\n var items = this.computedItems,\n renderBusy = this.renderBusy,\n renderTopRow = this.renderTopRow,\n renderEmpty = this.renderEmpty,\n renderBottomRow = this.renderBottomRow;\n var h = this.$createElement;\n var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || this.hasSelectableRowClick; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = renderBusy ? renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = getCellSlotName();\n defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var slotName = getCellSlotName(key);\n var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n /* istanbul ignore next */\n lowercaseSlotName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderBottomRow ? renderBottomRow() : h());\n } // Note: these events will only emit if a listener is registered\n\n\n var handlers = {\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO:\n // Perhaps we do want to automatically prevent the\n // default context menu from showing if there is a\n // `row-contextmenu` listener registered\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n }; // Add in click/keydown listeners if needed\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(BTbody, {\n class: this.tbodyClass || null,\n props: pluckProps(BTbodyProps, this.$props),\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers,\n ref: 'tbody'\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n}; // --- Mixin ---\n// @vue/component\n\nexport var captionMixin = Vue.extend({\n props: props,\n computed: {\n captionId: function captionId() {\n // Even though `this.safeId` looks like a method, it is a computed prop\n // that returns a new function if the underlying ID changes\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var caption = this.caption,\n captionHtml = this.captionHtml;\n var h = this.$createElement;\n var $caption = h();\n var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n if (hasCaptionSlot || caption || captionHtml) {\n $caption = h('caption', {\n attrs: {\n id: this.captionId\n },\n domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n key: 'caption'\n }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n }\n\n return $caption;\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { EVENT_NAME_BLUR, EVENT_NAME_CHANGE, EVENT_NAME_INPUT, EVENT_NAME_UPDATE, HOOK_EVENT_NAME_BEFORE_DESTROY } from '../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { mathMax } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger, toFloat } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER_STRING,\n defaultValue: '',\n event: EVENT_NAME_UPDATE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n autocomplete: makeProp(PROP_TYPE_STRING),\n // Debounce timeout (in ms). Not applicable with `lazy` prop\n debounce: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n formatter: makeProp(PROP_TYPE_FUNCTION),\n // Only update the `v-model` on blur/change events\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n lazyFormatter: makeProp(PROP_TYPE_BOOLEAN, false),\n number: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING),\n plaintext: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n trim: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formTextControls'); // --- Mixin ---\n// @vue/component\n\nexport var formTextMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var value = this[MODEL_PROP_NAME];\n return {\n localValue: toString(value),\n vModelValue: this.modifyValue(value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n var plaintext = this.plaintext,\n type = this.type;\n var isRange = type === 'range';\n var isColor = type === 'color';\n return [{\n // Range input needs class `custom-range`\n 'custom-range': isRange,\n // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n 'form-control-plaintext': plaintext && !isRange && !isColor,\n // `form-control` not used by `type=\"range\"` or `plaintext`\n // Always used by `type=\"color\"`\n 'form-control': isColor || !plaintext && !isRange\n }, this.sizeFormClass, this.stateClass];\n },\n computedDebounce: function computedDebounce() {\n // Ensure we have a positive number equal to or greater than 0\n return mathMax(toInteger(this.debounce, 0), 0);\n },\n hasFormatter: function hasFormatter() {\n return hasPropFunction(this.formatter);\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME, function (newValue) {\n var stringifyValue = toString(newValue);\n var modifiedValue = this.modifyValue(newValue);\n\n if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {\n // Clear any pending debounce timeout, as we are overwriting the user input\n this.clearDebounce(); // Update the local values\n\n this.localValue = stringifyValue;\n this.vModelValue = modifiedValue;\n }\n }),\n created: function created() {\n // Create private non-reactive props\n this.$_inputDebounceTimer = null;\n },\n mounted: function mounted() {\n // Set up destroy handler\n this.$on(HOOK_EVENT_NAME_BEFORE_DESTROY, this.clearDebounce);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDebounce();\n },\n methods: {\n clearDebounce: function clearDebounce() {\n clearTimeout(this.$_inputDebounceTimer);\n this.$_inputDebounceTimer = null;\n },\n formatValue: function formatValue(value, event) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = toString(value);\n\n if (this.hasFormatter && (!this.lazyFormatter || force)) {\n value = this.formatter(value, event);\n }\n\n return value;\n },\n modifyValue: function modifyValue(value) {\n value = toString(value); // Emulate `.trim` modifier behaviour\n\n if (this.trim) {\n value = value.trim();\n } // Emulate `.number` modifier behaviour\n\n\n if (this.number) {\n value = toFloat(value, value);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n var _this = this;\n\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var lazy = this.lazy;\n\n if (lazy && !force) {\n return;\n } // Make sure to always clear the debounce when `updateValue()`\n // is called, even when the v-model hasn't changed\n\n\n this.clearDebounce(); // Define the shared update logic in a method to be able to use\n // it for immediate and debounced value changes\n\n var doUpdate = function doUpdate() {\n value = _this.modifyValue(value);\n\n if (value !== _this.vModelValue) {\n _this.vModelValue = value;\n\n _this.$emit(MODEL_EVENT_NAME, value);\n } else if (_this.hasFormatter) {\n // When the `vModelValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one\n // Usually caused by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n /* istanbul ignore next: hard to test */\n var $input = _this.$refs.input;\n /* istanbul ignore if: hard to test out of sync value */\n\n if ($input && value !== $input.value) {\n $input.value = value;\n }\n }\n }; // Only debounce the value update when a value greater than `0`\n // is set and we are not in lazy mode or this is a forced update\n\n\n var debounce = this.computedDebounce;\n\n if (debounce > 0 && !lazy && !force) {\n this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);\n } else {\n // Immediately update the v-model\n doUpdate();\n }\n },\n onInput: function onInput(event) {\n // `event.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n // TODO: Is this needed now with the latest Vue?\n\n /* istanbul ignore if: hard to test composition events */\n if (event.target.composing) {\n return;\n }\n\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue);\n this.$emit(EVENT_NAME_INPUT, formattedValue);\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue, true);\n this.$emit(EVENT_NAME_CHANGE, formattedValue);\n },\n onBlur: function onBlur(event) {\n // Apply the `localValue` on blur to prevent cursor jumps\n // on mobile browsers (e.g. caused by autocomplete)\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event, true);\n\n if (formattedValue !== false) {\n // We need to use the modified value here to apply the\n // `.trim` and `.number` modifiers properly\n this.localValue = toString(this.modifyValue(formattedValue)); // We pass the formatted value here since the `updateValue` method\n // handles the modifiers itself\n\n this.updateValue(formattedValue, true);\n } // Emit native blur event\n\n\n this.$emit(EVENT_NAME_BLUR, event);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n attemptFocus(this.$el);\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n attemptBlur(this.$el);\n }\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_ADDON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n isText: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_ADDON); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAddon = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_ADDON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var append = props.append;\n return h(props.tag, mergeData(data, {\n class: {\n 'input-group-append': append,\n 'input-group-prepend': !append\n },\n attrs: {\n id: props.id\n }\n }), props.isText ? [h(BInputGroupText, children)] : children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_INPUT } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { attemptBlur } from '../../utils/dom';\nimport { eventOn, eventOff, eventOnOff, stopEvent } from '../../utils/events';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenersMixin } from '../../mixins/listeners'; // --- Constants ---\n// Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n list: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING),\n min: makeProp(PROP_TYPE_NUMBER_STRING),\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date)\n noWheel: makeProp(PROP_TYPE_BOOLEAN, false),\n step: makeProp(PROP_TYPE_NUMBER_STRING),\n type: makeProp(PROP_TYPE_STRING, 'text', function (type) {\n return arrayIncludes(TYPES, type);\n })\n})), NAME_FORM_INPUT); // --- Main component ---\n// @vue/component\n\nexport var BFormInput = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_INPUT,\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props,\n computed: {\n localType: function localType() {\n // We only allow certain types\n var type = this.type;\n return arrayIncludes(TYPES, type) ? type : 'text';\n },\n computedAttrs: function computedAttrs() {\n var type = this.localType,\n name = this.name,\n form = this.form,\n disabled = this.disabled,\n placeholder = this.placeholder,\n required = this.required,\n min = this.min,\n max = this.max,\n step = this.step;\n return {\n id: this.safeId(),\n name: name,\n form: form,\n type: type,\n disabled: disabled,\n placeholder: placeholder,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n min: min,\n max: max,\n step: step,\n list: type !== 'password' ? this.list : null,\n 'aria-required': required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n noWheel: function noWheel(newValue) {\n this.setWheelStopper(newValue);\n }\n },\n mounted: function mounted() {\n this.setWheelStopper(this.noWheel);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // Turn off listeners when keep-alive component deactivated\n\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel);\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n methods: {\n setWheelStopper: function setWheelStopper(on) {\n var input = this.$el; // We use native events, so that we don't interfere with propagation\n\n eventOnOff(on, input, 'focus', this.onWheelFocus);\n eventOnOff(on, input, 'blur', this.onWheelBlur);\n\n if (!on) {\n eventOff(document, 'wheel', this.stopWheel);\n }\n },\n onWheelFocus: function onWheelFocus() {\n eventOn(document, 'wheel', this.stopWheel);\n },\n onWheelBlur: function onWheelBlur() {\n eventOff(document, 'wheel', this.stopWheel);\n },\n stopWheel: function stopWheel(event) {\n stopEvent(event, {\n propagation: false\n });\n attemptBlur(this.$el);\n }\n },\n render: function render(h) {\n return h('input', {\n class: this.computedClass,\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\n });\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var stackedMixin = Vue.extend({\n props: props,\n computed: {\n isStacked: function isStacked() {\n var stacked = this.stacked; // `true` when always stacked, or returns breakpoint specified\n\n return stacked === '' ? true : stacked;\n },\n isStackedAlways: function isStackedAlways() {\n return this.isStacked === true;\n },\n stackedTableClasses: function stackedTableClasses() {\n var isStackedAlways = this.isStackedAlways;\n return _defineProperty({\n 'b-table-stacked': isStackedAlways\n }, \"b-table-stacked-\".concat(this.stacked), !isStackedAlways && this.isStacked);\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_IMG } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { identity } from '../../utils/identity';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Constants --\n// Blank image with fill template\n\nvar BLANK_TEMPLATE = '' + '' + ''; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n alt: makeProp(PROP_TYPE_STRING),\n blank: makeProp(PROP_TYPE_BOOLEAN, false),\n blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n center: makeProp(PROP_TYPE_BOOLEAN, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Gives fluid images class `w-100` to make them grow to fit container\n fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_NUMBER_STRING),\n left: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n // Possible values:\n // `false`: no rounding of corners\n // `true`: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n src: makeProp(PROP_TYPE_STRING),\n srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n width: makeProp(PROP_TYPE_NUMBER_STRING)\n}, NAME_IMG); // --- Main component ---\n// @vue/component\n\nexport var BImg = /*#__PURE__*/Vue.extend({\n name: NAME_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var alt = props.alt,\n src = props.src,\n block = props.block,\n fluidGrow = props.fluidGrow,\n rounded = props.rounded;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\n var srcset = concat(props.srcset).filter(identity).join(',');\n var sizes = concat(props.sizes).filter(identity).join(',');\n\n if (props.blank) {\n if (!height && width) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n\n\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n srcset = null;\n sizes = null;\n }\n\n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n\n return h('img', mergeData(data, {\n attrs: {\n src: src,\n alt: alt,\n width: width ? toString(width) : null,\n height: height ? toString(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || fluidGrow,\n 'w-100': fluidGrow,\n rounded: rounded === '' || rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n title: makeProp(PROP_TYPE_STRING),\n titleTag: makeProp(PROP_TYPE_STRING, 'h4')\n}, NAME_CARD_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, mergeData(data, {\n staticClass: 'card-title'\n }), children || toString(props.title));\n }\n});","import { identity } from '../../../utils/identity';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n var field = null;\n\n if (isString(value)) {\n // Label shortcut\n field = {\n key: key,\n label: value\n };\n } else if (isFunction(value)) {\n // Formatter shortcut\n field = {\n key: key,\n formatter: value\n };\n } else if (isObject(value)) {\n field = clone(value);\n field.key = field.key || key;\n } else if (value !== false) {\n // Fallback to just key\n\n /* istanbul ignore next */\n field = {\n key: key\n };\n }\n\n return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nexport var normalizeFields = function normalizeFields(origFields, items) {\n var fields = [];\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(identity).forEach(function (f) {\n if (isString(f)) {\n fields.push({\n key: f,\n label: startCase(f)\n });\n } else if (isObject(f) && f.key && isString(f.key)) {\n // Full object definition. We use assign so that we don't mutate the original\n fields.push(clone(f));\n } else if (isObject(f) && keys(f).length === 1) {\n // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n var key = keys(f)[0];\n var field = processField(key, f[key]);\n\n if (field) {\n fields.push(field);\n }\n }\n });\n } // If no field provided, take a sample from first record (if exits)\n\n\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n var sample = items[0];\n keys(sample).forEach(function (k) {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({\n key: k,\n label: startCase(k)\n });\n }\n });\n } // Ensure we have a unique array of fields and that they have String labels\n\n\n var memo = {};\n return fields.filter(function (f) {\n if (!memo[f.key]) {\n memo[f.key] = true;\n f.label = isString(f.label) ? f.label : startCase(f.key);\n return true;\n }\n\n return false;\n });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { isArray, isFunction, isString } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { clone, sortKeys } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { normalizeFields } from './normalize-fields'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_ARRAY,\n defaultValue: []\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, _defineProperty({\n fields: makeProp(PROP_TYPE_ARRAY, null),\n // Provider mixin adds in `Function` type\n items: makeProp(PROP_TYPE_ARRAY, []),\n // Primary key for record\n // If provided the value in each row must be unique!\n primaryKey: makeProp(PROP_TYPE_STRING)\n}, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n// @vue/component\n\nexport var itemsMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var items = this.items;\n return {\n // Our local copy of the items\n // Must be an array\n localItems: isArray(items) ? items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return normalizeFields(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var $parent = this.$parent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = clone(f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (isString(formatter) && isFunction($parent[formatter])) {\n formatter = $parent[formatter];\n } else if (!isFunction(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n // Fallback if various mixins not provided\n return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems ||\n /* istanbul ignore next */\n []).slice();\n },\n context: function context() {\n // Current state of sorting, filtering and pagination props/values\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: mathMax(toInteger(this.perPage, 0), 0),\n currentPage: mathMax(toInteger(this.currentPage, 0), 1),\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newValue) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = isArray(newValue) ? newValue.slice() : [];\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n },\n // Watch for context changes\n context: function context(newValue, oldValue) {\n // Emit context information for external paging/filtering/sorting handling\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit(MODEL_EVENT_NAME, this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_APPEND, SLOT_NAME_DEFAULT, SLOT_NAME_PREPEND } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_STRING),\n appendHtml: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n prepend: makeProp(PROP_TYPE_STRING),\n prependHtml: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BInputGroup = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var prepend = props.prepend,\n prependHtml = props.prependHtml,\n append = props.append,\n appendHtml = props.appendHtml,\n size = props.size;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $prepend = h();\n var hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n\n if (hasPrependSlot || prepend || prependHtml) {\n $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(prependHtml, prepend)\n })]);\n }\n\n var $append = h();\n var hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n\n if (hasAppendSlot || append || appendHtml) {\n $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(appendHtml, append)\n })]);\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(size), size),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\n }\n});","export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_BODY } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, titleProps), subTitleProps), copyProps(cardProps, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n overlay: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_BODY); // --- Main component ---\n// @vue/component\n\nexport var BCardBody = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var bodyBgVariant = props.bodyBgVariant,\n bodyBorderVariant = props.bodyBorderVariant,\n bodyTextVariant = props.bodyTextVariant;\n var $title = h();\n\n if (props.title) {\n $title = h(BCardTitle, {\n props: pluckProps(titleProps, props)\n });\n }\n\n var $subTitle = h();\n\n if (props.subTitle) {\n $subTitle = h(BCardSubTitle, {\n props: pluckProps(subTitleProps, props),\n class: ['mb-2']\n });\n }\n\n return h(props.bodyTag, mergeData(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(bodyBgVariant), bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(bodyBorderVariant), bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(bodyTextVariant), bodyTextVariant), _ref2), props.bodyClass]\n }), [$title, $subTitle, children]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_FOOTER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'footer'))), {}, {\n footer: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_FOOTER); // --- Main component ---\n// @vue/component\n\nexport var BCardFooter = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_FOOTER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var footerBgVariant = props.footerBgVariant,\n footerBorderVariant = props.footerBorderVariant,\n footerTextVariant = props.footerTextVariant;\n return h(props.footerTag, mergeData(data, {\n staticClass: 'card-footer',\n class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, \"border-\".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(footerTextVariant), footerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.footerHtml, props.footer)\n }), children);\n }\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// v-b-visible\n// Private visibility check directive\n// Based on IntersectionObserver\n//\n// Usage:\n// v-b-visibility..=\"\"\n//\n// Value:\n// : method to be called when visibility state changes, receives one arg:\n// true: element is visible\n// false: element is not visible\n// null: IntersectionObserver not supported\n//\n// Modifiers:\n// : a positive decimal value of pixels away from viewport edge\n// before being considered \"visible\". default is 0\n// : keyword 'once', meaning when the element becomes visible and\n// callback is called observation/notification will stop.\n//\n// When used in a render function:\n// export default {\n// directives: { 'b-visible': VBVisible },\n// render(h) {\n// h(\n// 'div',\n// {\n// directives: [\n// { name: 'b-visible', value=this.callback, modifiers: { '123':true, 'once':true } }\n// ]\n// }\n// )\n// }\nimport { RX_DIGITS } from '../../constants/regex';\nimport { requestAF } from '../../utils/dom';\nimport { isFunction } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { clone, keys } from '../../utils/object';\nvar OBSERVER_PROP_NAME = '__bv__visibility_observer';\n\nvar VisibilityObserver = /*#__PURE__*/function () {\n function VisibilityObserver(el, options, vnode) {\n _classCallCheck(this, VisibilityObserver);\n\n this.el = el;\n this.callback = options.callback;\n this.margin = options.margin || 0;\n this.once = options.once || false;\n this.observer = null;\n this.visible = undefined;\n this.doneOnce = false; // Create the observer instance (if possible)\n\n this.createObserver(vnode);\n }\n\n _createClass(VisibilityObserver, [{\n key: \"createObserver\",\n value: function createObserver(vnode) {\n var _this = this;\n\n // Remove any previous observer\n if (this.observer) {\n /* istanbul ignore next */\n this.stop();\n } // Should only be called once and `callback` prop should be a function\n\n\n if (this.doneOnce || !isFunction(this.callback)) {\n /* istanbul ignore next */\n return;\n } // Create the observer instance\n\n\n try {\n // Future: Possibly add in other modifiers for left/right/top/bottom\n // offsets, root element reference, and thresholds\n this.observer = new IntersectionObserver(this.handler.bind(this), {\n // `null` = 'viewport'\n root: null,\n // Pixels away from view port to consider \"visible\"\n rootMargin: this.margin,\n // Intersection ratio of el and root (as a value from 0 to 1)\n threshold: 0\n });\n } catch (_unused) {\n // No IntersectionObserver support, so just stop trying to observe\n this.doneOnce = true;\n this.observer = undefined;\n this.callback(null);\n return;\n } // Start observing in a `$nextTick()` (to allow DOM to complete rendering)\n\n /* istanbul ignore next: IntersectionObserver not supported in JSDOM */\n\n\n vnode.context.$nextTick(function () {\n requestAF(function () {\n // Placed in an `if` just in case we were destroyed before\n // this `requestAnimationFrame` runs\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n });\n }\n /* istanbul ignore next */\n\n }, {\n key: \"handler\",\n value: function handler(entries) {\n var entry = entries ? entries[0] : {};\n var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0);\n\n if (isIntersecting !== this.visible) {\n this.visible = isIntersecting;\n this.callback(isIntersecting);\n\n if (this.once && this.visible) {\n this.doneOnce = true;\n this.stop();\n }\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n /* istanbul ignore next */\n this.observer && this.observer.disconnect();\n this.observer = null;\n }\n }]);\n\n return VisibilityObserver;\n}();\n\nvar destroy = function destroy(el) {\n var observer = el[OBSERVER_PROP_NAME];\n\n if (observer && observer.stop) {\n observer.stop();\n }\n\n delete el[OBSERVER_PROP_NAME];\n};\n\nvar bind = function bind(el, _ref, vnode) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n // `value` is the callback function\n var options = {\n margin: '0px',\n once: false,\n callback: value\n }; // Parse modifiers\n\n keys(modifiers).forEach(function (mod) {\n /* istanbul ignore else: Until is switched to use this directive */\n if (RX_DIGITS.test(mod)) {\n options.margin = \"\".concat(mod, \"px\");\n } else if (mod.toLowerCase() === 'once') {\n options.once = true;\n }\n }); // Destroy any previous observer\n\n destroy(el); // Create new observer\n\n el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode); // Store the current modifiers on the object (cloned)\n\n el[OBSERVER_PROP_NAME]._prevModifiers = clone(modifiers);\n}; // When the directive options may have been updated (or element)\n\n\nvar componentUpdated = function componentUpdated(el, _ref2, vnode) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n // Compare value/oldValue and modifiers to see if anything has changed\n // and if so, destroy old observer and create new observer\n\n /* istanbul ignore next */\n modifiers = clone(modifiers);\n /* istanbul ignore next */\n\n if (el && (value !== oldValue || !el[OBSERVER_PROP_NAME] || !looseEqual(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers))) {\n // Re-bind on element\n bind(el, {\n value: value,\n modifiers: modifiers\n }, vnode);\n }\n}; // When directive un-binds from element\n\n\nvar unbind = function unbind(el) {\n // Remove the observer\n destroy(el);\n}; // Export the directive\n\n\nexport var VBVisible = {\n bind: bind,\n componentUpdated: componentUpdated,\n unbind: unbind\n};","import { Vue } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BTd, props as BTdProps } from './td'; // --- Props ---\n\nexport var props = makePropsConfigurable(BTdProps, NAME_TH); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTh = /*#__PURE__*/Vue.extend({\n name: NAME_TH,\n extends: BTd,\n props: props,\n computed: {\n tag: function tag() {\n return 'th';\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs'; // Main `` render mixin\n// Includes all main table styling options\n// --- Props ---\n\nexport var props = {\n bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n dark: makeProp(PROP_TYPE_BOOLEAN, false),\n fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n hover: makeProp(PROP_TYPE_BOOLEAN, false),\n noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n // If a string, it is assumed to be the table `max-height` value\n stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n striped: makeProp(PROP_TYPE_BOOLEAN, false),\n tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tableVariant: makeProp(PROP_TYPE_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tableRendererMixin = Vue.extend({\n mixins: [attrsMixin],\n provide: function provide() {\n return {\n bvTable: this\n };\n },\n // Don't place attributes on root element automatically,\n // as table could be wrapped in responsive `
`\n inheritAttrs: false,\n props: props,\n computed: {\n // Layout related computed props\n isResponsive: function isResponsive() {\n var responsive = this.responsive;\n responsive = responsive === '' ? true : responsive;\n return this.isStacked ? false : responsive;\n },\n isStickyHeader: function isStickyHeader() {\n var stickyHeader = this.stickyHeader;\n stickyHeader = stickyHeader === '' ? true : stickyHeader;\n return this.isStacked ? false : stickyHeader;\n },\n wrapperClasses: function wrapperClasses() {\n var isResponsive = this.isResponsive;\n return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? \"table-responsive-\".concat(this.responsive) : ''].filter(identity);\n },\n wrapperStyles: function wrapperStyles() {\n var isStickyHeader = this.isStickyHeader;\n return isStickyHeader && !isBoolean(isStickyHeader) ? {\n maxHeight: isStickyHeader\n } : {};\n },\n tableClasses: function tableClasses() {\n var hover = this.hover,\n tableVariant = this.tableVariant;\n hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !this.computedBusy;\n return [// User supplied classes\n this.tableClass, // Styling classes\n {\n 'table-striped': this.striped,\n 'table-hover': hover,\n 'table-dark': this.dark,\n 'table-bordered': this.bordered,\n 'table-borderless': this.borderless,\n 'table-sm': this.small,\n // The following are b-table custom styles\n border: this.outlined,\n 'b-table-fixed': this.fixed,\n 'b-table-caption-top': this.captionTop,\n 'b-table-no-border-collapse': this.noBorderCollapse\n }, tableVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(tableVariant) : '', // Stacked table classes\n this.stackedTableClasses, // Selectable classes\n this.selectableTableClasses];\n },\n tableAttrs: function tableAttrs() {\n var items = this.computedItems,\n filteredItems = this.filteredItems,\n fields = this.computedFields,\n selectableTableAttrs = this.selectableTableAttrs; // Preserve user supplied aria-describedby, if provided in `$attrs`\n\n var adb = [(this.bvAttrs || {})['aria-describedby'], this.captionId].filter(identity).join(' ') || null;\n var ariaAttrs = this.isTableSimple ? {} : {\n 'aria-busy': this.computedBusy ? 'true' : 'false',\n 'aria-colcount': toString(fields.length),\n 'aria-describedby': adb\n };\n var rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n return _objectSpread(_objectSpread(_objectSpread({\n // We set `aria-rowcount` before merging in `$attrs`,\n // in case user has supplied their own\n 'aria-rowcount': rowCount\n }, this.bvAttrs), {}, {\n // Now we can override any `$attrs` here\n id: this.safeId(),\n role: 'table'\n }, ariaAttrs), selectableTableAttrs);\n }\n },\n render: function render(h) {\n var wrapperClasses = this.wrapperClasses,\n renderCaption = this.renderCaption,\n renderColgroup = this.renderColgroup,\n renderThead = this.renderThead,\n renderTbody = this.renderTbody,\n renderTfoot = this.renderTfoot;\n var $content = [];\n\n if (this.isTableSimple) {\n $content.push(this.normalizeSlot());\n } else {\n // Build the `
`\n\n $content.push(renderColgroup ? renderColgroup() : null); // Build the ``\n\n $content.push(renderThead ? renderThead() : null); // Build the ``\n\n $content.push(renderTbody ? renderTbody() : null); // Build the ``\n\n $content.push(renderTfoot ? renderTfoot() : null);\n } // Assemble `
` (from caption mixin)\n $content.push(renderCaption ? renderCaption() : null); // Build the `
`\n\n\n var $table = h('table', {\n staticClass: 'table b-table',\n class: this.tableClasses,\n attrs: this.tableAttrs,\n key: 'b-table'\n }, $content.filter(identity)); // Add responsive/sticky wrapper if needed and return table\n\n return wrapperClasses.length > 0 ? h('div', {\n class: wrapperClasses,\n style: this.wrapperStyles,\n key: 'wrap'\n }, [$table]) : $table;\n }\n});","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Constants used by table helpers\nexport var FIELD_KEY_CELL_VARIANT = '_cellVariants';\nexport var FIELD_KEY_ROW_VARIANT = '_rowVariant';\nexport var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n// stringification and filter events\n\nexport var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, true));\n}, {}); // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA_ASIDE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA_ASIDE); // --- Main component ---\n// @vue/component\n\nexport var BMediaAside = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA_ASIDE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var verticalAlign = props.verticalAlign;\n var align = verticalAlign === 'top' ? 'start' : verticalAlign === 'bottom' ? 'end' :\n /* istanbul ignore next */\n verticalAlign;\n return h(props.tag, mergeData(data, {\n staticClass: 'media-aside',\n class: _defineProperty({\n 'media-aside-right': props.right\n }, \"align-self-\".concat(align), align)\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA_BODY } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_MEDIA_BODY); // --- Main component ---\n// @vue/component\n\nexport var BMediaBody = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'media-body'\n }), children);\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot'; // --- Props ---\n\nexport var props = {\n footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n // Any Bootstrap theme variant (or custom)\n // Falls back to `headRowVariant`\n footRowVariant: makeProp(PROP_TYPE_STRING),\n // 'dark', 'light', or `null` (or custom)\n footVariant: makeProp(PROP_TYPE_STRING),\n tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tfootMixin = Vue.extend({\n props: props,\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n return h(BTfoot, {\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n },\n key: 'bv-tfoot-custom'\n }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n }\n\n return h();\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n }\n }\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_FORM_TEXTAREA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { getCS, getStyle, isVisible, requestAF, setStyle } from '../../utils/dom';\nimport { isNull } from '../../utils/inspect';\nimport { mathCeil, mathMax, mathMin } from '../../utils/math';\nimport { toInteger, toFloat } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { VBVisible } from '../../directives/visible/visible'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n maxRows: makeProp(PROP_TYPE_NUMBER_STRING),\n // When in auto resize mode, disable shrinking to content height\n noAutoShrink: makeProp(PROP_TYPE_BOOLEAN, false),\n // Disable the resize handle of textarea\n noResize: makeProp(PROP_TYPE_BOOLEAN, false),\n rows: makeProp(PROP_TYPE_NUMBER_STRING, 2),\n // 'soft', 'hard' or 'off'\n // Browser default is 'soft'\n wrap: makeProp(PROP_TYPE_STRING, 'soft')\n})), NAME_FORM_TEXTAREA); // --- Main component ---\n// @vue/component\n\nexport var BFormTextarea = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_TEXTAREA,\n directives: {\n 'b-visible': VBVisible\n },\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, listenOnRootMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props,\n data: function data() {\n return {\n heightInPx: null\n };\n },\n computed: {\n computedStyle: function computedStyle() {\n var styles = {\n // Setting `noResize` to true will disable the ability for the user to\n // manually resize the textarea. We also disable when in auto height mode\n resize: !this.computedRows || this.noResize ? 'none' : null\n };\n\n if (!this.computedRows) {\n // Conditionally set the computed CSS height when auto rows/height is enabled\n // We avoid setting the style to `null`, which can override user manual resize handle\n styles.height = this.heightInPx; // We always add a vertical scrollbar to the textarea when auto-height is\n // enabled so that the computed height calculation returns a stable value\n\n styles.overflowY = 'scroll';\n }\n\n return styles;\n },\n computedMinRows: function computedMinRows() {\n // Ensure rows is at least 2 and positive (2 is the native textarea value)\n // A value of 1 can cause issues in some browsers, and most browsers\n // only support 2 as the smallest value\n return mathMax(toInteger(this.rows, 2), 2);\n },\n computedMaxRows: function computedMaxRows() {\n return mathMax(this.computedMinRows, toInteger(this.maxRows, 0));\n },\n computedRows: function computedRows() {\n // This is used to set the attribute 'rows' on the textarea\n // If auto-height is enabled, then we return `null` as we use CSS to control height\n return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;\n },\n computedAttrs: function computedAttrs() {\n var disabled = this.disabled,\n required = this.required;\n return {\n id: this.safeId(),\n name: this.name || null,\n form: this.form || null,\n disabled: disabled,\n placeholder: this.placeholder || null,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n rows: this.computedRows,\n wrap: this.wrap || null,\n 'aria-required': this.required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n localValue: function localValue() {\n this.setHeight();\n }\n },\n mounted: function mounted() {\n this.setHeight();\n },\n methods: {\n // Called by intersection observer directive\n\n /* istanbul ignore next */\n visibleCallback: function visibleCallback(visible) {\n if (visible) {\n // We use a `$nextTick()` here just to make sure any\n // transitions or portalling have completed\n this.$nextTick(this.setHeight);\n }\n },\n setHeight: function setHeight() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n _this.heightInPx = _this.computeHeight();\n });\n });\n },\n\n /* istanbul ignore next: can't test getComputedStyle in JSDOM */\n computeHeight: function computeHeight() {\n if (this.$isServer || !isNull(this.computedRows)) {\n return null;\n }\n\n var el = this.$el; // Element must be visible (not hidden) and in document\n // Must be checked after above checks\n\n if (!isVisible(el)) {\n return null;\n } // Get current computed styles\n\n\n var computedStyle = getCS(el); // Height of one line of text in px\n\n var lineHeight = toFloat(computedStyle.lineHeight, 1); // Calculate height of border and padding\n\n var border = toFloat(computedStyle.borderTopWidth, 0) + toFloat(computedStyle.borderBottomWidth, 0);\n var padding = toFloat(computedStyle.paddingTop, 0) + toFloat(computedStyle.paddingBottom, 0); // Calculate offset\n\n var offset = border + padding; // Minimum height for min rows (which must be 2 rows or greater for cross-browser support)\n\n var minHeight = lineHeight * this.computedMinRows + offset; // Get the current style height (with `px` units)\n\n var oldHeight = getStyle(el, 'height') || computedStyle.height; // Probe scrollHeight by temporarily changing the height to `auto`\n\n setStyle(el, 'height', 'auto');\n var scrollHeight = el.scrollHeight; // Place the original old height back on the element, just in case `computedProp`\n // returns the same value as before\n\n setStyle(el, 'height', oldHeight); // Calculate content height in 'rows' (scrollHeight includes padding but not border)\n\n var contentRows = mathMax((scrollHeight - padding) / lineHeight, 2); // Calculate number of rows to display (limited within min/max rows)\n\n var rows = mathMin(mathMax(contentRows, this.computedMinRows), this.computedMaxRows); // Calculate the required height of the textarea including border and padding (in pixels)\n\n var height = mathMax(mathCeil(rows * lineHeight + offset), minHeight); // Computed height remains the larger of `oldHeight` and new `height`,\n // when height is in `sticky` mode (prop `no-auto-shrink` is true)\n\n if (this.noAutoShrink && toFloat(oldHeight, 0) > height) {\n return oldHeight;\n } // Return the new computed CSS height in px units\n\n\n return \"\".concat(height, \"px\");\n }\n },\n render: function render(h) {\n return h('textarea', {\n class: this.computedClass,\n style: this.computedStyle,\n directives: [{\n name: 'b-visible',\n value: this.visibleCallback,\n // If textarea is within 640px of viewport, consider it visible\n modifiers: {\n '640': true\n }\n }],\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\n });\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { mergeData } from '../../vue';\nimport { NAME_ROW } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { memoize } from '../../utils/memoize';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase, toString, trim } from '../../utils/string'; // --- Constants ---\n\nvar COMMON_ALIGNMENT = ['start', 'end', 'center']; // --- Helper methods ---\n// Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\n\nvar computeRowColsClass = memoize(function (breakpoint, cols) {\n cols = trim(toString(cols));\n return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n}); // Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\n\nvar computeRowColsBreakpoint = memoize(function (prop) {\n return lowerCase(prop.replace('cols', ''));\n}); // Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\n\nvar rowColsPropList = []; // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n // i.e. 'row-cols-2', 'row-cols-md-4', 'row-cols-xl-6', ...\n var rowColsProps = getBreakpointsUpCached().reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'cols')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // Cache the row-cols prop names\n\n rowColsPropList = keys(rowColsProps); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, rowColsProps), {}, {\n alignContent: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around', 'stretch'), value);\n }),\n alignH: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around'), value);\n }),\n alignV: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'baseline', 'stretch'), value);\n }),\n noGutters: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_ROW);\n}; // --- Main component ---\n// We do not use `Vue.extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BRow = {\n name: NAME_ROW,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props;\n this.props = generateProps();\n return this.props;\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var alignV = props.alignV,\n alignH = props.alignH,\n alignContent = props.alignContent; // Loop through row-cols breakpoint props and generate the classes\n\n var classList = [];\n rowColsPropList.forEach(function (prop) {\n var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n if (c) {\n classList.push(c);\n }\n });\n classList.push((_classList$push = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_classList$push, \"align-items-\".concat(alignV), alignV), _defineProperty(_classList$push, \"justify-content-\".concat(alignH), alignH), _defineProperty(_classList$push, \"align-content-\".concat(alignContent), alignContent), _classList$push));\n return h(props.tag, mergeData(data, {\n staticClass: 'row',\n class: classList\n }), children);\n }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTbody = /*#__PURE__*/Vue.extend({\n name: NAME_TBODY,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isTbody: function isTbody() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n isTransitionGroup: function isTransitionGroup() {\n return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n },\n tbodyAttrs: function tbodyAttrs() {\n return _objectSpread({\n role: 'rowgroup'\n }, this.bvAttrs);\n },\n tbodyProps: function tbodyProps() {\n var tbodyTransitionProps = this.tbodyTransitionProps;\n return tbodyTransitionProps ? _objectSpread(_objectSpread({}, tbodyTransitionProps), {}, {\n tag: 'tbody'\n }) : {};\n }\n },\n render: function render(h) {\n var data = {\n props: this.tbodyProps,\n attrs: this.tbodyAttrs\n };\n\n if (this.isTransitionGroup) {\n // We use native listeners if a transition group for any delegated events\n data.on = this.tbodyTransitionHandlers || {};\n data.nativeOn = this.bvListeners;\n } else {\n // Otherwise we place any listeners on the tbody element\n data.on = this.bvListeners;\n }\n\n return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { NAME_PAGINATION } from '../constants/components';\nimport { CODE_DOWN, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_FUNCTION_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { SLOT_NAME_ELLIPSIS_TEXT, SLOT_NAME_FIRST_TEXT, SLOT_NAME_LAST_TEXT, SLOT_NAME_NEXT_TEXT, SLOT_NAME_PAGE, SLOT_NAME_PREV_TEXT } from '../constants/slots';\nimport { createArray } from '../utils/array';\nimport { attemptFocus, getActiveElement, getAttr, isDisabled, isVisible, selectAll } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { isFunction, isNull } from '../utils/inspect';\nimport { mathFloor, mathMax, mathMin } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string';\nimport { warn } from '../utils/warn';\nimport { normalizeSlotMixin } from '../mixins/normalize-slot';\nimport { BLink } from '../components/link/link'; // Common props, computed, data, render function, and methods\n// for `` and ``\n// --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: null,\n\n /* istanbul ignore next */\n validator: function validator(value) {\n if (!isNull(value) && toInteger(value, 0) < 1) {\n warn('\"v-model\" value must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // --- Helper methods ---\n// Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n return createArray(numberOfPages, function (_, i) {\n return {\n number: startNumber + i,\n classes: null\n };\n });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(value) {\n var limit = toInteger(value) || 1;\n return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n var page = toInteger(val) || 1;\n return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(event) {\n if (event.keyCode === CODE_SPACE) {\n // Stop page from scrolling\n stopEvent(event, {\n immediatePropagation: true\n }); // Trigger the click event on the link\n\n event.currentTarget.click();\n return false;\n }\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n align: makeProp(PROP_TYPE_STRING, 'left'),\n ariaLabel: makeProp(PROP_TYPE_STRING, 'Pagination'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n ellipsisClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n ellipsisText: makeProp(PROP_TYPE_STRING, \"\\u2026\"),\n // '…'\n firstClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n firstNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n firstText: makeProp(PROP_TYPE_STRING, \"\\xAB\"),\n // '«'\n hideEllipsis: makeProp(PROP_TYPE_BOOLEAN, false),\n hideGotoEndButtons: makeProp(PROP_TYPE_BOOLEAN, false),\n labelFirstPage: makeProp(PROP_TYPE_STRING, 'Go to first page'),\n labelLastPage: makeProp(PROP_TYPE_STRING, 'Go to last page'),\n labelNextPage: makeProp(PROP_TYPE_STRING, 'Go to next page'),\n labelPage: makeProp(PROP_TYPE_FUNCTION_STRING, 'Go to page'),\n labelPrevPage: makeProp(PROP_TYPE_STRING, 'Go to previous page'),\n lastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lastNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n lastText: makeProp(PROP_TYPE_STRING, \"\\xBB\"),\n // '»'\n limit: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_LIMIT,\n /* istanbul ignore next */\n function (value) {\n if (toInteger(value, 0) < 1) {\n warn('Prop \"limit\" must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }),\n nextClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n nextText: makeProp(PROP_TYPE_STRING, \"\\u203A\"),\n // '›'\n pageClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n prevClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n prevText: makeProp(PROP_TYPE_STRING, \"\\u2039\"),\n // '‹'\n size: makeProp(PROP_TYPE_STRING)\n})), 'pagination'); // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n mixins: [modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n // `-1` signifies no page initially selected\n var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n currentPage = currentPage > 0 ? currentPage : -1;\n return {\n currentPage: currentPage,\n localNumberOfPages: 1,\n localLimit: DEFAULT_LIMIT\n };\n },\n computed: {\n btnSize: function btnSize() {\n var size = this.size;\n return size ? \"pagination-\".concat(size) : '';\n },\n alignment: function alignment() {\n var align = this.align;\n\n if (align === 'center') {\n return 'justify-content-center';\n } else if (align === 'end' || align === 'right') {\n return 'justify-content-end';\n } else if (align === 'fill') {\n // The page-items will also have 'flex-fill' added\n // We add text centering to make the button appearance better in fill mode\n return 'text-center';\n }\n\n return '';\n },\n styleClass: function styleClass() {\n return this.pills ? 'b-pagination-pills' : '';\n },\n computedCurrentPage: function computedCurrentPage() {\n return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n },\n paginationParams: function paginationParams() {\n // Determine if we should show the the ellipsis\n var limit = this.localLimit,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage,\n hideEllipsis = this.hideEllipsis,\n firstNumber = this.firstNumber,\n lastNumber = this.lastNumber;\n var showFirstDots = false;\n var showLastDots = false;\n var numberOfLinks = limit;\n var startNumber = 1;\n\n if (numberOfPages <= limit) {\n // Special case: Less pages available than the limit of displayed pages\n numberOfLinks = numberOfPages;\n } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || lastNumber) {\n showLastDots = true;\n numberOfLinks = limit - (firstNumber ? 0 : 1);\n }\n\n numberOfLinks = mathMin(numberOfLinks, limit);\n } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || firstNumber) {\n showFirstDots = true;\n numberOfLinks = limit - (lastNumber ? 0 : 1);\n }\n\n startNumber = numberOfPages - numberOfLinks + 1;\n } else {\n // We are somewhere in the middle of the page list\n if (limit > ELLIPSIS_THRESHOLD) {\n numberOfLinks = limit - (hideEllipsis ? 0 : 2);\n showFirstDots = !!(!hideEllipsis || firstNumber);\n showLastDots = !!(!hideEllipsis || lastNumber);\n }\n\n startNumber = currentPage - mathFloor(numberOfLinks / 2);\n } // Sanity checks\n\n /* istanbul ignore if */\n\n\n if (startNumber < 1) {\n startNumber = 1;\n showFirstDots = false;\n } else if (startNumber > numberOfPages - numberOfLinks) {\n startNumber = numberOfPages - numberOfLinks + 1;\n showLastDots = false;\n }\n\n if (showFirstDots && firstNumber && startNumber < 4) {\n numberOfLinks = numberOfLinks + 2;\n startNumber = 1;\n showFirstDots = false;\n }\n\n var lastPageNumber = startNumber + numberOfLinks - 1;\n\n if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3);\n showLastDots = false;\n } // Special handling for lower limits (where ellipsis are never shown)\n\n\n if (limit <= ELLIPSIS_THRESHOLD) {\n if (firstNumber && startNumber === 1) {\n numberOfLinks = mathMin(numberOfLinks + 1, numberOfPages, limit + 1);\n } else if (lastNumber && numberOfPages === startNumber + numberOfLinks - 1) {\n startNumber = mathMax(startNumber - 1, 1);\n numberOfLinks = mathMin(numberOfPages - startNumber + 1, numberOfPages, limit + 1);\n }\n }\n\n numberOfLinks = mathMin(numberOfLinks, numberOfPages - startNumber + 1);\n return {\n showFirstDots: showFirstDots,\n showLastDots: showLastDots,\n numberOfLinks: numberOfLinks,\n startNumber: startNumber\n };\n },\n pageList: function pageList() {\n // Generates the pageList array\n var _this$paginationParam = this.paginationParams,\n numberOfLinks = _this$paginationParam.numberOfLinks,\n startNumber = _this$paginationParam.startNumber;\n var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n // So add classes to page links to hide them for XS breakpoint\n // Note: Ellipsis will also be hidden on XS screens\n // TODO: Make this visual limit configurable based on breakpoint(s)\n\n if (pages.length > 3) {\n var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n var classes = 'bv-d-xs-down-none';\n\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (var i = 3; i < pages.length; i++) {\n pages[i].classes = classes;\n }\n } else if (idx === pages.length - 1) {\n // Keep rightmost 3 buttons visible when current page is last page\n for (var _i = 0; _i < pages.length - 3; _i++) {\n pages[_i].classes = classes;\n }\n } else {\n // Hide all except current page, current page - 1 and current page + 1\n for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n // hide some left button(s)\n pages[_i2].classes = classes;\n }\n\n for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n // hide some right button(s)\n pages[_i3].classes = classes;\n }\n }\n }\n\n return pages;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n }\n }), _defineProperty(_watch, \"currentPage\", function currentPage(newValue, oldValue) {\n if (newValue !== oldValue) {\n // Emit `null` if no page selected\n this.$emit(MODEL_EVENT_NAME, newValue > 0 ? newValue : null);\n }\n }), _defineProperty(_watch, \"limit\", function limit(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue);\n }\n }), _watch),\n created: function created() {\n var _this = this;\n\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit);\n this.$nextTick(function () {\n // Sanity check\n _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n });\n },\n methods: {\n handleKeyNav: function handleKeyNav(event) {\n var keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n /* istanbul ignore if */\n\n if (this.isNav) {\n // We disable left/right keyboard navigation in ``\n return;\n }\n\n if (keyCode === CODE_LEFT || keyCode === CODE_UP) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusFirst() : this.focusPrev();\n } else if (keyCode === CODE_RIGHT || keyCode === CODE_DOWN) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusLast() : this.focusNext();\n }\n },\n getButtons: function getButtons() {\n // Return only buttons that are visible\n return selectAll('button.page-link, a.page-link', this.$el).filter(function (btn) {\n return isVisible(btn);\n });\n },\n focusCurrent: function focusCurrent() {\n var _this2 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this2.getButtons().find(function (el) {\n return toInteger(getAttr(el, 'aria-posinset'), 0) === _this2.computedCurrentPage;\n });\n\n if (!attemptFocus(btn)) {\n // Fallback if current page is not in button list\n _this2.focusFirst();\n }\n });\n },\n focusFirst: function focusFirst() {\n var _this3 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this3.getButtons().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusLast: function focusLast() {\n var _this4 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this4.getButtons().reverse().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusPrev: function focusPrev() {\n var _this5 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this5.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index > 0 && !isDisabled(buttons[index - 1])) {\n attemptFocus(buttons[index - 1]);\n }\n });\n },\n focusNext: function focusNext() {\n var _this6 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this6.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index < buttons.length - 1 && !isDisabled(buttons[index + 1])) {\n attemptFocus(buttons[index + 1]);\n }\n });\n }\n },\n render: function render(h) {\n var _this7 = this;\n\n var disabled = this.disabled,\n labelPage = this.labelPage,\n ariaLabel = this.ariaLabel,\n isNav = this.isNav,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage;\n var pageNumbers = this.pageList.map(function (p) {\n return p.number;\n });\n var _this$paginationParam2 = this.paginationParams,\n showFirstDots = _this$paginationParam2.showFirstDots,\n showLastDots = _this$paginationParam2.showLastDots;\n var fill = this.align === 'fill';\n var $buttons = []; // Helper function and flag\n\n var isActivePage = function isActivePage(pageNumber) {\n return pageNumber === currentPage;\n };\n\n var noCurrentPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) {\n var isDisabled = disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages;\n var pageNumber = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n var scope = {\n disabled: isDisabled,\n page: pageNumber,\n index: pageNumber - 1\n };\n var $btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h();\n var $inner = h(isDisabled ? 'span' : isNav ? BLink : 'button', {\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !isDisabled && fill\n },\n props: isDisabled || !isNav ? {} : _this7.linkProps(linkTo),\n attrs: {\n role: isNav ? null : 'menuitem',\n type: isNav || isDisabled ? null : 'button',\n tabindex: isDisabled || isNav ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, linkTo);\n },\n keydown: onSpaceKey\n }\n }, [$btnContent]);\n return h('li', {\n key: key,\n staticClass: 'page-item',\n class: [{\n disabled: isDisabled,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !isDisabled\n }, btnClass],\n attrs: {\n role: isNav ? null : 'presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n }, [$inner]);\n }; // Ellipsis factory\n\n\n var makeEllipsis = function makeEllipsis(isLast) {\n return h('li', {\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', _this7.ellipsisClass],\n attrs: {\n role: 'separator'\n },\n key: \"ellipsis-\".concat(isLast ? 'last' : 'first')\n }, [h('span', {\n staticClass: 'page-link'\n }, [_this7.normalizeSlot(SLOT_NAME_ELLIPSIS_TEXT) || toString(_this7.ellipsisText) || h()])]);\n }; // Page button factory\n\n\n var makePageButton = function makePageButton(page, idx) {\n var pageNumber = page.number;\n var active = isActivePage(pageNumber) && !noCurrentPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n var tabIndex = disabled ? null : active || noCurrentPage && idx === 0 ? '0' : '-1';\n var attrs = {\n role: isNav ? null : 'menuitemradio',\n type: isNav || disabled ? null : 'button',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-label': hasPropFunction(labelPage) ?\n /* istanbul ignore next */\n labelPage(pageNumber) : \"\".concat(isFunction(labelPage) ? labelPage() : labelPage, \" \").concat(pageNumber),\n 'aria-checked': isNav ? null : active ? 'true' : 'false',\n 'aria-current': isNav && active ? 'page' : null,\n 'aria-posinset': isNav ? null : pageNumber,\n 'aria-setsize': isNav ? null : numberOfPages,\n // ARIA \"roving tabindex\" method (except in `isNav` mode)\n tabindex: isNav ? null : tabIndex\n };\n var btnContent = toString(_this7.makePage(pageNumber));\n var scope = {\n page: pageNumber,\n index: pageNumber - 1,\n content: btnContent,\n active: active,\n disabled: disabled\n };\n var $inner = h(disabled ? 'span' : isNav ? BLink : 'button', {\n props: disabled || !isNav ? {} : _this7.linkProps(pageNumber),\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !disabled && fill\n },\n attrs: attrs,\n on: disabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, pageNumber);\n },\n keydown: onSpaceKey\n }\n }, [_this7.normalizeSlot(SLOT_NAME_PAGE, scope) || btnContent]);\n return h('li', {\n staticClass: 'page-item',\n class: [{\n disabled: disabled,\n active: active,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !disabled\n }, page.classes, _this7.pageClass],\n attrs: {\n role: isNav ? null : 'presentation'\n },\n key: \"page-\".concat(pageNumber)\n }, [$inner]);\n }; // Goto first page button\n // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n\n\n var $firstPageBtn = h();\n\n if (!this.firstNumber && !this.hideGotoEndButtons) {\n $firstPageBtn = makeEndBtn(1, this.labelFirstPage, SLOT_NAME_FIRST_TEXT, this.firstText, this.firstClass, 1, 'pagination-goto-first');\n }\n\n $buttons.push($firstPageBtn); // Goto previous page button\n\n $buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, SLOT_NAME_PREV_TEXT, this.prevText, this.prevClass, 1, 'pagination-goto-prev')); // Show first (1) button?\n\n $buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({\n number: 1\n }, 0) : h()); // First ellipsis\n\n $buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual page links\n\n this.pageList.forEach(function (page, idx) {\n var offset = showFirstDots && _this7.firstNumber && pageNumbers[0] !== 1 ? 1 : 0;\n $buttons.push(makePageButton(page, idx + offset));\n }); // Last ellipsis\n\n $buttons.push(showLastDots ? makeEllipsis(true) : h()); // Show last page button?\n\n $buttons.push(this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages ? makePageButton({\n number: numberOfPages\n }, -1) : h()); // Goto next page button\n\n $buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, SLOT_NAME_NEXT_TEXT, this.nextText, this.nextClass, numberOfPages, 'pagination-goto-next')); // Goto last page button\n // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n\n var $lastPageBtn = h();\n\n if (!this.lastNumber && !this.hideGotoEndButtons) {\n $lastPageBtn = makeEndBtn(numberOfPages, this.labelLastPage, SLOT_NAME_LAST_TEXT, this.lastText, this.lastClass, numberOfPages, 'pagination-goto-last');\n }\n\n $buttons.push($lastPageBtn); // Assemble the pagination buttons\n\n var $pagination = h('ul', {\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n attrs: {\n role: isNav ? null : 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': isNav ? null : ariaLabel || null\n },\n // We disable keyboard left/right nav when ``\n on: isNav ? {} : {\n keydown: this.handleKeyNav\n },\n ref: 'ul'\n }, $buttons); // If we are ``, wrap in `
) classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(event, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(event)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(event)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n stopEvent(event);\n this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var fields = this.computedFields,\n isSortable = this.isSortable,\n isSelectable = this.isSelectable,\n headVariant = this.headVariant,\n footVariant = this.footVariant,\n headRowVariant = this.headRowVariant,\n footRowVariant = this.footRowVariant;\n var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n // Or if no field headings (empty table)\n\n if (this.isStackedAlways || fields.length === 0) {\n return h();\n }\n\n var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n var selectAllRows = isSelectable ? this.selectAllRows : noop;\n var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field cell\n\n var makeCell = function makeCell(field, colIndex) {\n var label = field.label,\n labelHtml = field.labelHtml,\n variant = field.variant,\n stickyColumn = field.stickyColumn,\n key = field.key;\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = startCase(field.key);\n }\n\n var on = {};\n\n if (hasHeadClickListener) {\n on.click = function (event) {\n _this.headClicked(event, field, isFoot);\n };\n\n on.keydown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n _this.headClicked(event, field, isFoot);\n }\n };\n }\n\n var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n var data = {\n class: [_this.fieldClasses(field), sortClass],\n props: {\n variant: variant,\n stickyColumn: stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread(_objectSpread({\n // We only add a `tabindex` of `0` if there is a head-clicked listener\n // and the current field is sortable\n tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': colIndex + 1,\n 'aria-label': ariaLabel\n }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n on: on,\n key: key\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n if (isFoot) {\n slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray(slotNames));\n }\n\n var scope = {\n label: label,\n column: key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n domProps: htmlOrText(labelHtml, label)\n });\n var $srLabel = sortLabel ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n return h(BTh, data, [$content, $srLabel].filter(identity));\n }; // Generate the array of cells\n\n\n var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(BTr, {\n class: this.tfootTrClass,\n props: {\n variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n /* istanbul ignore next */\n footRowVariant\n }\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n $trs.push(h(BTr, {\n class: this.theadTrClass,\n props: {\n variant: headRowVariant\n }\n }, $cells));\n }\n\n return h(isFoot ? BTfoot : BThead, {\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: footVariant || headVariant || null\n } : {\n headVariant: headVariant || null\n },\n key: isFoot ? 'bv-tfoot' : 'bv-thead'\n }, $trs);\n }\n }\n});","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"flatpickr\")):\"function\"==typeof define&&define.amd?define(\"VueFlatpickr\",[\"flatpickr\"],e):\"object\"==typeof exports?exports.VueFlatpickr=e(require(\"flatpickr\")):t.VueFlatpickr=e(t.flatpickr)}(\"undefined\"!=typeof self?self:this,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=1)}([function(e,n){e.exports=t},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"Component\",(function(){return c})),n.d(e,\"Plugin\",(function(){return p}));var r=n(0),o=n.n(r),i=[\"onChange\",\"onClose\",\"onDestroy\",\"onMonthChange\",\"onOpen\",\"onYearChange\"];function u(){return(u=Object.assign||function(t){for(var e=1;e 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = getSel();\n return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n /* istanbul ignore next */\n sel.containsNode(el, true) : false;\n};","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupText = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group-text'\n }), children);\n }\n});","import { Vue } from '../vue';\nimport { NAME_CARD } from '../constants/components';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n bgVariant: makeProp(PROP_TYPE_STRING),\n borderVariant: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_CARD); // --- Mixin ---\n// @vue/component\n\nexport var cardMixin = Vue.extend({\n props: props\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var colgroupMixin = Vue.extend({\n methods: {\n renderColgroup: function renderColgroup() {\n var fields = this.computedFields;\n var h = this.$createElement;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\n }\n }\n});","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptFocus, isVisible, matches, requestAF, select } from '../utils/dom';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Constants ---\n\nvar SELECTOR = 'input, textarea, select'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n autofocus: makeProp(PROP_TYPE_BOOLEAN, false),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n form: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n name: makeProp(PROP_TYPE_STRING),\n required: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formControlMixin = Vue.extend({\n props: props,\n mounted: function mounted() {\n this.handleAutofocus();\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.handleAutofocus();\n },\n methods: {\n handleAutofocus: function handleAutofocus() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n var el = _this.$el;\n\n if (_this.autofocus && isVisible(el)) {\n if (!matches(el, SELECTOR)) {\n el = select(SELECTOR, el);\n }\n\n attemptFocus(el);\n }\n });\n });\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_AVATAR } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_IMG_ERROR } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BADGE } from '../../constants/slots';\nimport { isNumber, isNumeric, isString } from '../../utils/inspect';\nimport { toFloat } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIcon } from '../../icons/icon';\nimport { BIconPersonFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Constants ---\n\nvar CLASS_NAME = 'b-avatar';\nvar SIZES = ['sm', null, 'lg'];\nvar FONT_SIZE_SCALE = 0.4;\nvar BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7; // --- Helper methods ---\n\nexport var computeSize = function computeSize(value) {\n // Parse to number when value is a float-like string\n value = isString(value) && isNumeric(value) ? toFloat(value, 0) : value; // Convert all numbers to pixel values\n\n return isNumber(value) ? \"\".concat(value, \"px\") : value || null;\n}; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['active', 'event', 'routerTag']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n alt: makeProp(PROP_TYPE_STRING, 'avatar'),\n ariaLabel: makeProp(PROP_TYPE_STRING),\n badge: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n badgeLeft: makeProp(PROP_TYPE_BOOLEAN, false),\n badgeOffset: makeProp(PROP_TYPE_STRING),\n badgeTop: makeProp(PROP_TYPE_BOOLEAN, false),\n badgeVariant: makeProp(PROP_TYPE_STRING, 'primary'),\n button: makeProp(PROP_TYPE_BOOLEAN, false),\n buttonType: makeProp(PROP_TYPE_STRING, 'button'),\n icon: makeProp(PROP_TYPE_STRING),\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n size: makeProp(PROP_TYPE_NUMBER_STRING),\n square: makeProp(PROP_TYPE_BOOLEAN, false),\n src: makeProp(PROP_TYPE_STRING),\n text: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_AVATAR); // --- Main component ---\n// @vue/component\n\nexport var BAvatar = /*#__PURE__*/Vue.extend({\n name: NAME_AVATAR,\n mixins: [normalizeSlotMixin],\n inject: {\n bvAvatarGroup: {\n default: null\n }\n },\n props: props,\n data: function data() {\n return {\n localSrc: this.src || null\n };\n },\n computed: {\n computedSize: function computedSize() {\n // Always use the avatar group size\n var bvAvatarGroup = this.bvAvatarGroup;\n return computeSize(bvAvatarGroup ? bvAvatarGroup.size : this.size);\n },\n computedVariant: function computedVariant() {\n var bvAvatarGroup = this.bvAvatarGroup;\n return bvAvatarGroup && bvAvatarGroup.variant ? bvAvatarGroup.variant : this.variant;\n },\n computedRounded: function computedRounded() {\n var bvAvatarGroup = this.bvAvatarGroup;\n var square = bvAvatarGroup && bvAvatarGroup.square ? true : this.square;\n var rounded = bvAvatarGroup && bvAvatarGroup.rounded ? bvAvatarGroup.rounded : this.rounded;\n return square ? '0' : rounded === '' ? true : rounded || 'circle';\n },\n fontStyle: function fontStyle() {\n var size = this.computedSize;\n var fontSize = SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(FONT_SIZE_SCALE, \")\") : null;\n return fontSize ? {\n fontSize: fontSize\n } : {};\n },\n marginStyle: function marginStyle() {\n var size = this.computedSize,\n bvAvatarGroup = this.bvAvatarGroup;\n var overlapScale = bvAvatarGroup ? bvAvatarGroup.overlapScale : 0;\n var value = size && overlapScale ? \"calc(\".concat(size, \" * -\").concat(overlapScale, \")\") : null;\n return value ? {\n marginLeft: value,\n marginRight: value\n } : {};\n },\n badgeStyle: function badgeStyle() {\n var size = this.computedSize,\n badgeTop = this.badgeTop,\n badgeLeft = this.badgeLeft,\n badgeOffset = this.badgeOffset;\n var offset = badgeOffset || '0px';\n return {\n fontSize: SIZES.indexOf(size) === -1 ? \"calc(\".concat(size, \" * \").concat(BADGE_FONT_SIZE_SCALE, \" )\") : null,\n top: badgeTop ? offset : null,\n bottom: badgeTop ? null : offset,\n left: badgeLeft ? offset : null,\n right: badgeLeft ? null : offset\n };\n }\n },\n watch: {\n src: function src(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localSrc = newValue || null;\n }\n }\n },\n methods: {\n onImgError: function onImgError(event) {\n this.localSrc = null;\n this.$emit(EVENT_NAME_IMG_ERROR, event);\n },\n onClick: function onClick(event) {\n this.$emit(EVENT_NAME_CLICK, event);\n }\n },\n render: function render(h) {\n var _class2;\n\n var variant = this.computedVariant,\n disabled = this.disabled,\n rounded = this.computedRounded,\n icon = this.icon,\n src = this.localSrc,\n text = this.text,\n fontStyle = this.fontStyle,\n marginStyle = this.marginStyle,\n size = this.computedSize,\n button = this.button,\n type = this.buttonType,\n badge = this.badge,\n badgeVariant = this.badgeVariant,\n badgeStyle = this.badgeStyle;\n var link = !button && isLink(this);\n var tag = button ? BButton : link ? BLink : 'span';\n var alt = this.alt;\n var ariaLabel = this.ariaLabel || null;\n var $content = null;\n\n if (this.hasNormalizedSlot()) {\n // Default slot overrides props\n $content = h('span', {\n staticClass: 'b-avatar-custom'\n }, [this.normalizeSlot()]);\n } else if (src) {\n $content = h('img', {\n style: variant ? {} : {\n width: '100%',\n height: '100%'\n },\n attrs: {\n src: src,\n alt: alt\n },\n on: {\n error: this.onImgError\n }\n });\n $content = h('span', {\n staticClass: 'b-avatar-img'\n }, [$content]);\n } else if (icon) {\n $content = h(BIcon, {\n props: {\n icon: icon\n },\n attrs: {\n 'aria-hidden': 'true',\n alt: alt\n }\n });\n } else if (text) {\n $content = h('span', {\n staticClass: 'b-avatar-text',\n style: fontStyle\n }, [h('span', text)]);\n } else {\n // Fallback default avatar content\n $content = h(BIconPersonFill, {\n attrs: {\n 'aria-hidden': 'true',\n alt: alt\n }\n });\n }\n\n var $badge = h();\n var hasBadgeSlot = this.hasNormalizedSlot(SLOT_NAME_BADGE);\n\n if (badge || badge === '' || hasBadgeSlot) {\n var badgeText = badge === true ? '' : badge;\n $badge = h('span', {\n staticClass: 'b-avatar-badge',\n class: _defineProperty({}, \"badge-\".concat(badgeVariant), badgeVariant),\n style: badgeStyle\n }, [hasBadgeSlot ? this.normalizeSlot(SLOT_NAME_BADGE) : badgeText]);\n }\n\n var componentData = {\n staticClass: CLASS_NAME,\n class: (_class2 = {}, _defineProperty(_class2, \"\".concat(CLASS_NAME, \"-\").concat(size), size && SIZES.indexOf(size) !== -1), _defineProperty(_class2, \"badge-\".concat(variant), !button && variant), _defineProperty(_class2, \"rounded\", rounded === true), _defineProperty(_class2, \"rounded-\".concat(rounded), rounded && rounded !== true), _defineProperty(_class2, \"disabled\", disabled), _class2),\n style: _objectSpread(_objectSpread({}, marginStyle), {}, {\n width: size,\n height: size\n }),\n attrs: {\n 'aria-label': ariaLabel || null\n },\n props: button ? {\n variant: variant,\n disabled: disabled,\n type: type\n } : link ? pluckProps(linkProps, this) : {},\n on: button || link ? {\n click: this.onClick\n } : {}\n };\n return h(tag, componentData, [$content, $badge]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_BADGE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n pill: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_BADGE); // --- Main component ---\n// @vue/component\n\nexport var BBadge = /*#__PURE__*/Vue.extend({\n name: NAME_BADGE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var active = props.active,\n disabled = props.disabled;\n var link = isLink(props);\n var tag = link ? BLink : props.tag;\n var variant = props.variant || 'secondary';\n return h(tag, mergeData(data, {\n staticClass: 'badge',\n class: [\"badge-\".concat(variant), {\n 'badge-pill': props.pill,\n active: active,\n disabled: disabled\n }],\n props: link ? pluckProps(linkProps, props) : {}\n }), children);\n }\n});","export var noop = function noop() {};","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TurmasLista.vue?vue&type=style&index=0&lang=scss&\""],"sourceRoot":""}