{"version":3,"sources":["webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.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/bootstrap-vue/esm/mixins/has-listener.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tr.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/td.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.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/constants.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/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.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/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-stacked.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-table-renderer.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/th.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/tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.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/directives/hover/hover.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-btn-label-control/bv-form-btn-label-control.js","webpack:///./node_modules/bootstrap-vue/esm/utils/date.js","webpack:///./node_modules/bootstrap-vue/esm/components/time/time.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-timepicker/form-timepicker.js","webpack:///./src/@core/comp-functions/forms/form-validation.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/flatpickr/dist/esm/utils/polyfills.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/quill/dist/quill.js","webpack:///./node_modules/vue-quill-editor/dist/vue-quill-editor.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/sidebar/sidebar.js","webpack:///./node_modules/vue-flatpickr-component/dist/vue-flatpickr.min.js","webpack:///./node_modules/isarray/index.js"],"names":["exports","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","i","len","length","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","join","extraBytes","parts","maxChunkLength","len2","bgVariant","borderVariant","tag","textVariant","extend","props","subTitle","subTitleTag","subTitleTextVariant","BCardSubTitle","name","functional","render","h","_ref","data","children","staticClass","class","concat","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","bind","bodyClass","overlay","BCardBody","_ref2","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$title","title","$subTitle","bodyTag","header","headerClass","headerHtml","BCardHeader","headerBgVariant","headerBorderVariant","headerTextVariant","headerTag","domProps","html","footer","footerClass","footerHtml","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","bottom","top","BCardImg","src","alt","width","height","baseClass","right","left","attrs","cardImgProps","imgSrc","required","align","noBody","BCard","_class","slots","scopedSlots","imgLeft","imgRight","imgStart","imgEnd","imgBottom","$scopedSlots","$slots","slotScope","$imgFirst","$imgLast","$img","$header","hasHeaderSlot","$content","$footer","hasFooterSlot","hasListenerMixin","methods","hasListener","$listeners","this","$events","_events","LIGHT","DARK","variant","BTr","mixins","listeners","provide","bvTableTr","inject","bvTableRowGroup","default","inheritAttrs","computed","inTbody","isTbody","inThead","isThead","inTfoot","isTfoot","isDark","isStacked","isResponsive","isStickyHeader","hasStickyHeader","tableVariant","headVariant","footVariant","isRowDark","trClasses","trAttrs","role","bvAttrs","on","bvListeners","normalizeSlot","bottomRowMixin","renderBottomRow","fields","computedFields","stacked","tbodyTrClass","tbodyTrAttr","$createElement","hasNormalizedSlot","columns","colspan","rowspan","stackedHeading","stickyColumn","BTd","isStackedCell","isStickyColumn","rowVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","scope","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","watch","newValue","oldValue","$emit","stopIfBusy","event","renderBusy","caption","captionHtml","captionMixin","captionId","safeId","renderCaption","$caption","hasCaptionSlot","id","colgroupMixin","renderColgroup","$colgroup","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","stringifyObjectValues","sort","map","k","v","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","reduce","result","EVENT_FILTER","row","ignoreFields","includeFields","fieldsObj","undefined","formattedRow","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","from","test","iter","Symbol","iterator","isArray","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","_this","timeout","setTimeout","created","_this2","$nextTick","Boolean","beforeDestroy","clearTimeout","fn","item","_this3","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","label","origFields","f","sample","memo","_makeModelMixin","type","defaultValue","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","primaryKey","itemsMixin","$parent","paginatedItems","sortedItems","context","sortBy","localSortBy","sortDesc","localSortDesc","perPage","math","currentPage","apiUrl","mounted","getFieldFormatter","paginationMixin","localPaging","noProviderPaging","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","noProviderSorting","providerMixin","providerTriggerContext","ctx","_providerUpdate","listenOnRoot","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","then","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","dark","selectableRowAttrs","method","selectionHandler","selected","shiftKey","ctrlKey","metaKey","stableSort","compareFn","a","b","_ref$sortBy","_ref$formatter","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","get","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","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","stackedMixin","isStackedAlways","stackedTableClasses","bordered","borderless","captionTop","fixed","hover","noBorderCollapse","outlined","responsive","small","stickyHeader","striped","tableClass","tableRendererMixin","bvTable","wrapperClasses","wrapperStyles","maxHeight","tableClasses","isTableSimple","border","tableAttrs","adb","ariaAttrs","rowCount","renderThead","renderTbody","renderTfoot","$table","style","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","TABLE_TAG_NAMES","el","disabled","tagName","labelFor","input","document","sel","trim","containsNode","BTh","extends","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","$set","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","isRowHeader","formatted","cellTag","cellVariant","tdClass","thAttr","tdAttr","unformatted","toggleDetails","detailsShowing","rowSelected","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","rowShowDetails","hasRowClickHandler","$rows","detailsId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","tabindex","mouseenter","mouseleave","ref","refInFor","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","$refs","tbody","$el","trs","tr","getTbodyTrIndex","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTopRow","$busy","cache","defaultSlotName","lowercaseSlotName","toLowerCase","handlers","auxclick","contextmenu","dblclick","click","keydown","$tbody","$props","BTfoot","tfootClasses","tfootAttrs","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","BThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","hasHeadClickListener","noop","makeCell","labelHtml","ariaLabel","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","column","$srLabel","$cells","$trs","topRowMixin","BTable","PROP","MOUSEENTER","MOUSELEAVE","createListener","listener","_ref$value","handlerChanged","VBHover","componentUpdated","unbind","dropdown","buttonOnly","buttonVariant","formattedValue","labelSelected","lang","menuClass","placeholder","readonly","rtl","BVFormBtnLabelControl","directives","isHovered","hasFocus","idButton","idLabel","idMenu","idWrapper","computedDir","focus","toggle","blur","setFocus","handleHover","hovered","state","visible","size","invalid","btnScope","opened","$button","mousedown","onMousedown","scale","$hidden","form","$menu","show","onKeydown","$label","stateClass","sizeFormClass","for","preventDefault","directionClass","boundaryClass","dir","_construct","Parent","args","Class","_isNativeReflectConstruct","Reflect","construct","Constructor","Function","instance","_setPrototypeOf","sham","Proxy","Date","p","setPrototypeOf","__proto__","createDate","_len","_key","createDateFormatter","options","dtf","Intl","DateTimeFormat","format","_arr","_n","_d","_e","_s","_i","next","done","err","NUMERIC","padLeftZeros","hh","mm","ss","_value$split$map","split","_value$split$map2","hours","minutes","seconds","ampm","requireSeconds","hms","ariaLabelledby","hidden","hideHeader","hour12","labelAm","labelAmpm","labelHours","labelMinutes","labelNoTimeSelected","labelPm","labelSeconds","minutesStep","secondsStep","showSeconds","BTime","parsed","modelHours","modelMinutes","modelSeconds","modelAmpm","isLive","computedHMS","resolvedOptions","hour","minute","second","resolved","hourCycle","computedLocale","computedLang","computedRTL","computedHourCycle","is12Hour","isRTL","formattedTimeString","valueId","computedAriaLabelledby","timeFormatter","timeZone","numberFormatter","nf","NumberFormat","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","notation","UTC","spinScopedSlots","increment","decrement","_ref3","flipV","_parseHMS","newHours","oldHours","setLive","activated","deactivated","spinners","activeElement","formatHours","formatMinutes","formatSeconds","formatAmpm","setHours","setMinutes","setSeconds","setAmpm","onSpinLeftRight","cmp","_this4","spinIds","makeSpinbutton","classes","spinbuttonProps","vertical","labelIncrement","labelDecrement","wrap","ariaControls","min","change","makeColon","shiftV","$spinners","max","step","formatterFn","currentTarget","$value","$slot","timeProps","formBtnLabelControlProps","closeButtonVariant","labelCloseButton","labelNowButton","labelResetButton","noCloseButton","nowButton","nowButtonVariant","resetButton","resetButtonVariant","resetValue","BFormTimepicker","localHMS","localLocale","isVisible","control","setAndClose","hide","onInput","onContext","onNowButton","now","getHours","getMinutes","getSeconds","onResetButton","onCloseButton","onShow","onShown","time","onHidden","defaultButtonFn","_label","_label2","$time","shown","formValidation","resetFormData","clearFormData","refFormObserver","resetObserver","reset","getValidationState","dirty","validated","fieldRequired","changed","valid","resetForm","nextTick","clearForm","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","window","navigator","userAgent","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","console","getWeek","givenDate","date","getTime","setDate","getDate","getDay","week1","getFullYear","Math","round","hourIncrement","ignoredFocusElements","inline","minuteIncrement","mode","monthSelectorType","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","s","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","bool","debounce","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","error","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","parseFloat","H","J","day","K","M","shortMonth","S","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","d","j","l","m","month","u","unixMillSeconds","w","y","tokenRegex","toISOString","getMonth","substring","config","l10n","isMobile","frmt","overrideLocale","formatDate","c","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","datestr","parseDate","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","exec","val","isNaN","compareDates","date1","date2","isBetween","ts","ts1","ts2","duration","DAY","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","DEBOUNCED_CHANGE_MS","FlatpickrInstance","element","instanceConfig","self","assign","flatpickr","defaultConfig","setupHelperFunctions","utils","currentMonth","yr","currentYear","init","isOpen","parseConfig","setupLocale","setupInputs","setupDates","build","bindEvents","selectedDates","setHoursFromDate","latestSelectedDateObj","updateValue","setCalendarWidth","isSafari","positionCalendar","triggerEvent","bindToInstance","requestAnimationFrame","calendarContainer","visibility","display","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","onYearInput","eventTarget","delta","changeYear","ev","addEventListener","_handlers","removeEventListener","triggerChange","evt","querySelectorAll","setupMobile","debouncedResize","onResize","onMouseOver","body","ontouchstart","documentClick","capture","open","monthNav","onMonthNavClick","selectDate","timeContainer","selText","select","timeIncrement","onBlur","jumpToDate","jumpDate","jumpTo","oldYear","oldMonth","buildMonthSwitch","redraw","incrementNumInput","contains","inputElem","createEvent","dispatchEvent","fragment","createDocumentFragment","buildMonthNav","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","buildTime","customAppend","appendTo","nodeType","insertBefore","nextSibling","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","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","innerHTML","buildMonth","container","monthNavFragment","monthElement","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","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","newYear","newYearNum","isNewYear","_a","dateToCheck","enable","to","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","stopPropagation","elems","pluginElements","x","charAt","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","_positionElement","wasOpen","minMaxDateSetter","inverseDateObj","boolOpts","userConfig","JSON","parse","stringify","dataset","formats","_enable","set","dates","parseDateRules","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","getInputElem","querySelector","l10ns","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","CALLBACKS","option","setSelectedDate","inputDate","rule","preloadedDate","nodeName","inputType","mobileFormatStr","hooks","initEvent","getDateStr","dObj","isPrevMonth","isNextMonth","isKeyDown","curValue","isHourElem","isMinuteElem","_flatpickr","nodeList","nodes","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","localize","setDefaults","jQuery","fp_incr","read","buffer","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","pow","write","rt","floor","log","LN2","root","factory","module","modules","installedModules","__webpack_require__","moduleId","getter","__esModule","property","hasOwnProperty","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","create","find","query","register","Container","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Style","Store","__extends","extendStatics","__","ParchmentError","_super","attributes","tags","types","BlotClass","TEXT_NODE","bubble","DATA_KEY","blot","ANY","LEVEL","BLOCK","INLINE","names","TYPE","Definitions","Definition","blotName","attrName","keyName","toUpperCase","tagNames","diff","op","NULL_CHARACTER","fromCharCode","Delta","insert","text","newOp","retain","lastOp","unshift","chop","pop","predicate","partition","passed","failed","initial","changeLength","delete","hasNext","nextOp","compose","other","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","thisOp","otherOp","rest","strings","prep","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","transform","priority","transformPosition","nextType","hasOwn","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","getProperty","copy","copyIsArray","clone","BlockEmbed","bubbleFormats","_createClass","descriptor","protoProps","staticProps","_get","receiver","desc","parent","getPrototypeOf","_extend","_extend2","_interopRequireDefault","_quillDelta","_quillDelta2","_parchment","_parchment2","_break","_break2","_inline","_inline2","_text","_text2","_classCallCheck","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","NEWLINE_LENGTH","_Parchment$Embed","domNode","values","attribute","BLOCK_ATTRIBUTE","def","endsWith","block","insertAt","BLOCK_BLOT","_Parchment$Block","descendants","leaf","lines","tail","force","statics","defaultChild","allowedChildren","overload","expandConfig","_typeof","_slicedToArray","sliceIterator","_editor","_editor2","_emitter3","_emitter4","_module","_module2","_selection","_selection2","_logger","_logger2","_theme","_theme2","debug","Quill","__quill","addContainer","scrollingContainer","emitter","scroll","whitelist","editor","selection","theme","keyboard","addModule","clipboard","history","events","EDITOR_CHANGE","TEXT_CHANGE","isBlank","SCROLL_UPDATE","mutations","lastRange","modify","update","contents","convert","setContents","readOnly","limit","level","imports","overwrite","startsWith","refNode","setRange","_overload","_overload2","deleteText","enabled","scrollTop","scrollIntoView","sources","API","getSelection","formatLine","formatText","setSelection","SILENT","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","getBounds","containerBounds","getLength","_overload7","_overload8","getContents","getFormat","Number","MAX_VALUE","getRange","_overload9","_overload10","getText","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","off","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","ret","_overload15","_overload16","Range","USER","_this11","DEFAULTS","import","themeConfig","moduleNames","moduleConfig","moduleClass","toolbar","modifier","strict","oldDelta","shiftRange","_emitter","_emitter2","emit","_map","pos","_map2","_map3","_map4","version","_Parchment$Inline","compare","BLOT","isolate","moveChildren","selfIndex","order","otherIndex","TextBlot","_Parchment$Text","_eventemitter","_eventemitter2","EVENTS","eventName","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","_len2","_key2","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","quill","levels","_console","namespace","ns","logger","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","objEquiv","isUndefinedOrNull","isBuffer","ka","kb","attributeBit","ATTRIBUTE","canAdd","Code","_block","_block2","_Inline","CodeBlock","_Block","_descendant","descendant","_descendant2","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","reverse","lastIndexOf","prev","optimize","unwrap","TAB","_op","_op2","_code","_code2","_cursor","_cursor2","_clone","_clone2","_deepEqual","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","_line$descendant2","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","_path","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","textBlot","CONTENTS","oldText","newText","diffDelta","combined","merged","image","list","bullet","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","restore","_format","nativeRange","collapsed","after","attach","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rect","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","positions","indexes","_position","startContainer","endContainer","childNodes","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","first","last","scrollBounds","removeAllRanges","addRange","rangeToNative","oldRange","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","makeBlot","forEachAt","lengthLeft","detach","childBlot","refBlot","insertInto","targetParent","inclusive","addedNodes","removedNodes","mutation","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","replaceChild","FormatBlot","replaceWith","replacement","move","LeafBlot","INLINE_BLOT","lib","keepNull","Iterator","retOp","substr","_instanceof","nativeMap","nativeSet","nativePromise","Map","Set","Promise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","proto","resolve","reject","__isArray","__isRegExp","__getRegExpFlags","__isDate","allocUnsafe","keyChild","valueChild","entryChild","symbol","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","clonePrototype","_container","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_line4","_newlineIndex","getLines","observer","takeRecords","SHORTKEY","_quill","_quill2","platform","Keyboard","_Module","bindings","addBinding","ENTER","handleEnter","altKey","BACKSPACE","handleBackspace","handleDelete","prefix","handleDeleteRange","listen","binding","normalize","defaultPrevented","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prevented","every","makeEmbedArrowHandler","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLeaf4","_quill$getLine11","_quill$getLine12","_quill$getLine13","_quill$getLine14","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine16","_quill$getLine17","_quill$getLine18","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","ESCAPE","UP","DOWN","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","createTextNode","_length","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","sanitize","Link","url","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","href","protocol","_keyboard","_keyboard2","_dropdown","_dropdown2","optionsCounter","toggleAriaAttribute","Picker","buildPicker","togglePicker","escape","hasAttribute","selectItem","buildItem","buildLabel","buildOptions","trigger","Event","isActive","_embed","_embed2","_scroll","_scroll2","_clipboard","_clipboard2","_history","_history2","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","attr","ClassAttributor","matches","camelize","part","StyleAttributor","Theme","themes","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","stack","changeDelta","undoDelta","delay","maxStack","endsWithNewlineChange","deleteLength","changeIndex","BaseTooltip","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_picker","_picker2","_tooltip","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","tooltip","textbox","pickers","picker","extendToolbar","buttons","icons","button","selects","fillSelect","formula","edit","fileInput","files","reader","FileReader","onload","readAsDataURL","video","_Tooltip","boundsContainer","save","cancel","preview","linkRange","restoreFocus","extractVideoUrl","LinkedList","append","cur","curNode","callback","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","MAX_OPTIMIZE_ITERATIONS","ScrollBlot","MutationObserver","observe","disconnect","records","mark","markParent","remaining","previousSibling","grandChild","isEqual","obj1","obj2","InlineBlot","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","searchString","subjectString","isFinite","thisArg","execCommand","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","fix_emoji","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","x1","y1","k2_offset","x2","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","hm1","hm2","pointer","count_delete","count_insert","text_delete","text_insert","changes","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","norm","ndiffs","cursor_pointer","d_next","merge_tuples","compact","starts_with_pair_end","str","ends_with_pair_start","fixed_diffs","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","propertyIsEnumerable","has","Events","EE","EventEmitter","_eventsCount","eventNames","exists","available","ee","a1","a2","a3","a4","a5","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","matchBreak","ELEMENT_NODE","matchStyles","matchIndent","matchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","matcher","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","elementMatchers","textMatchers","traverse","deltaEndsWith","paste","pair","_pair","applyFormat","computeStyle","getComputedStyle","endText","childrenDelta","nextElementSibling","nodeHeight","marginTop","marginBottom","offsetTop","fontStyle","italic","fontWeight","bold","textIndent","whiteSpace","replacer","collapse","Bold","addControls","Toolbar","_ret","controls","addHandler","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","_quill$selection$getR2","prompt","addButton","groups","group","addSelect","clean","direction","link","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","defaultItem","Tooltip","TEMPLATE","reference","rootBounds","verticalShift","_base","_base2","_link","_link2","_icons","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","_core","_core2","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_bold","_bold2","_italic","_italic2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_bubble","_bubble2","_snow","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","Header","List","_Container","listEventHandler","Italic","_Bold","Script","Strike","Underline","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","timer","interval","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft","r","install","quillEditor","globalOptions","boundary","script","color","background","font","_options","_content","defaultOptions","initialize","pasteHTML","setText","staticRenderFns","_compiled","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","esModule","_self","_c","_t","_v","base64","ieee754","typedArraySupport","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","alloc","encoding","checked","string","isEncoding","fromArrayLike","byteOffset","isnan","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","toJSON","MAX_ARGUMENTS_LENGTH","codePoints","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","dst","CLASS_NAME","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","backdrop","backdropVariant","closeLabel","lazy","noCloseOnBackdrop","noCloseOnEsc","noCloseOnRouteChange","noEnforceFocus","noHeader","noHeaderClose","noSlide","shadow","sidebarClass","zIndex","renderHeaderTitle","renderHeaderClose","renderHeader","$close","renderBody","renderFooter","renderContent","renderBackdrop","localShow","onBackdropClick","BSidebar","transitionProps","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","hasTitle","titleId","computedAttrs","emitState","fullPath","$_returnFocusEl","handleToggle","handleSync","emitSync","onTopTrapFocus","tabables","enforceFocus","onBottomTrapFocus","onBeforeEnter","onAfterEnter","onAfterLeave","$sidebar","beforeEnter","afterEnter","afterLeave","$backdrop","noFade","$tabTrapTop","$tabTrapBottom","toStringTag","validator","fp","getElem","fpInput","$watch","watchDisabled","immediate"],"mappings":"kHAEAA,EAAQC,WAAaA,EACrBD,EAAQE,YAAcA,EACtBF,EAAQG,cAAgBA,EAOxB,IALA,IAAIC,EAAS,GACTC,EAAY,GACZC,EAA4B,qBAAfC,WAA6BA,WAAaC,MAEvDC,EAAO,mEACFC,EAAI,EAAGC,EAAMF,EAAKG,OAAQF,EAAIC,IAAOD,EAC5CN,EAAOM,GAAKD,EAAKC,GACjBL,EAAUI,EAAKI,WAAWH,IAAMA,EAQlC,SAASI,EAASC,GAChB,IAAIJ,EAAMI,EAAIH,OAEd,GAAID,EAAM,EAAI,EACZ,MAAM,IAAIK,MAAM,kDAKlB,IAAIC,EAAWF,EAAIG,QAAQ,MACT,IAAdD,IAAiBA,EAAWN,GAEhC,IAAIQ,EAAkBF,IAAaN,EAC/B,EACA,EAAKM,EAAW,EAEpB,MAAO,CAACA,EAAUE,GAIpB,SAASlB,EAAYc,GACnB,IAAIK,EAAON,EAAQC,GACfE,EAAWG,EAAK,GAChBD,EAAkBC,EAAK,GAC3B,OAAuC,GAA9BH,EAAWE,GAAuB,EAAKA,EAGlD,SAASE,EAAaN,EAAKE,EAAUE,GACnC,OAAuC,GAA9BF,EAAWE,GAAuB,EAAKA,EAGlD,SAASjB,EAAaa,GACpB,IAAIO,EAcAZ,EAbAU,EAAON,EAAQC,GACfE,EAAWG,EAAK,GAChBD,EAAkBC,EAAK,GAEvBG,EAAM,IAAIjB,EAAIe,EAAYN,EAAKE,EAAUE,IAEzCK,EAAU,EAGVb,EAAMQ,EAAkB,EACxBF,EAAW,EACXA,EAGJ,IAAKP,EAAI,EAAGA,EAAIC,EAAKD,GAAK,EACxBY,EACGjB,EAAUU,EAAIF,WAAWH,KAAO,GAChCL,EAAUU,EAAIF,WAAWH,EAAI,KAAO,GACpCL,EAAUU,EAAIF,WAAWH,EAAI,KAAO,EACrCL,EAAUU,EAAIF,WAAWH,EAAI,IAC/Ba,EAAIC,KAAcF,GAAO,GAAM,IAC/BC,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAmB,IAANF,EAmBnB,OAhBwB,IAApBH,IACFG,EACGjB,EAAUU,EAAIF,WAAWH,KAAO,EAChCL,EAAUU,EAAIF,WAAWH,EAAI,KAAO,EACvCa,EAAIC,KAAmB,IAANF,GAGK,IAApBH,IACFG,EACGjB,EAAUU,EAAIF,WAAWH,KAAO,GAChCL,EAAUU,EAAIF,WAAWH,EAAI,KAAO,EACpCL,EAAUU,EAAIF,WAAWH,EAAI,KAAO,EACvCa,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAmB,IAANF,GAGZC,EAGT,SAASE,EAAiBC,GACxB,OAAOtB,EAAOsB,GAAO,GAAK,IACxBtB,EAAOsB,GAAO,GAAK,IACnBtB,EAAOsB,GAAO,EAAI,IAClBtB,EAAa,GAANsB,GAGX,SAASC,EAAaC,EAAOC,EAAOC,GAGlC,IAFA,IAAIR,EACAS,EAAS,GACJrB,EAAImB,EAAOnB,EAAIoB,EAAKpB,GAAK,EAChCY,GACIM,EAAMlB,IAAM,GAAM,WAClBkB,EAAMlB,EAAI,IAAM,EAAK,QACP,IAAfkB,EAAMlB,EAAI,IACbqB,EAAOC,KAAKP,EAAgBH,IAE9B,OAAOS,EAAOE,KAAK,IAGrB,SAAS9B,EAAeyB,GAQtB,IAPA,IAAIN,EACAX,EAAMiB,EAAMhB,OACZsB,EAAavB,EAAM,EACnBwB,EAAQ,GACRC,EAAiB,MAGZ1B,EAAI,EAAG2B,EAAO1B,EAAMuB,EAAYxB,EAAI2B,EAAM3B,GAAK0B,EACtDD,EAAMH,KAAKL,EAAYC,EAAOlB,EAAIA,EAAI0B,EAAkBC,EAAOA,EAAQ3B,EAAI0B,IAqB7E,OAjBmB,IAAfF,GACFZ,EAAMM,EAAMjB,EAAM,GAClBwB,EAAMH,KACJ5B,EAAOkB,GAAO,GACdlB,EAAQkB,GAAO,EAAK,IACpB,OAEsB,IAAfY,IACTZ,GAAOM,EAAMjB,EAAM,IAAM,GAAKiB,EAAMjB,EAAM,GAC1CwB,EAAMH,KACJ5B,EAAOkB,GAAO,IACdlB,EAAQkB,GAAO,EAAK,IACpBlB,EAAQkB,GAAO,EAAK,IACpB,MAIGa,EAAMF,KAAK,IAlIpB5B,EAAU,IAAIQ,WAAW,IAAM,GAC/BR,EAAU,IAAIQ,WAAW,IAAM,I,sLCdpB,EAAQ,eAAsB,CACvCyB,UAAW,eAAS,QACpBC,cAAe,eAAS,QACxBC,IAAK,eAAS,OAAkB,OAChCC,YAAa,eAAS,SACrB,Q,GAGoB,aAAIC,OAAO,CAChCC,MAAO,I,uBCRE,EAAQ,eAAsB,CACvCC,SAAU,eAAS,QACnBC,YAAa,eAAS,OAAkB,MACxCC,oBAAqB,eAAS,OAAkB,UAC/C,QAGQC,EAA6B,aAAIL,OAAO,CACjDM,KAAM,OACNC,YAAY,EACZN,MAAO,EACPO,OAAQ,SAAgBC,EAAGC,GACzB,IAAIT,EAAQS,EAAKT,MACbU,EAAOD,EAAKC,KACZC,EAAWF,EAAKE,SACpB,OAAOH,EAAER,EAAME,YAAa,eAAUQ,EAAM,CAC1CE,YAAa,gBACbC,MAAO,CAACb,EAAMG,oBAAsB,QAAQW,OAAOd,EAAMG,qBAAuB,QAC9EQ,GAAY,eAASX,EAAMC,cCxBnC,SAASc,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAKgD,EAAQI,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBL,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmBf,EAAQI,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAASK,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAWpM,IAAI,EAAQ,eAAsB,eAASV,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAa,GAAgB,eAAU,EAAW,OAAec,KAAK,KAAM,UAAW,GAAI,CACvMC,UAAW,eAAS,QACpBC,QAAS,eAAS,QAAmB,MAClC,QAGMC,EAAyB,aAAI7C,OAAO,CAC7CM,KAAM,OACNC,YAAY,EACZN,MAAO,EACPO,OAAQ,SAAgBC,EAAGC,GACzB,IAAIoC,EAEA7C,EAAQS,EAAKT,MACbU,EAAOD,EAAKC,KACZC,EAAWF,EAAKE,SAChBmC,EAAgB9C,EAAM8C,cACtBC,EAAoB/C,EAAM+C,kBAC1BC,EAAkBhD,EAAMgD,gBACxBC,EAASzC,IAETR,EAAMkD,QACRD,EAASzC,EAAE,OAAY,CACrBR,MAAO,eAAW,OAAYA,MAIlC,IAAImD,EAAY3C,IAShB,OAPIR,EAAMC,WACRkD,EAAY3C,EAAEJ,EAAe,CAC3BJ,MAAO,eAAW,EAAeA,GACjCa,MAAO,CAAC,WAILL,EAAER,EAAMoD,QAAS,eAAU1C,EAAM,CACtCE,YAAa,YACbC,MAAO,EAAEgC,EAAQ,CACf,mBAAoB7C,EAAM2C,SACzBV,EAAgBY,EAAO,MAAM/B,OAAOgC,GAAgBA,GAAgBb,EAAgBY,EAAO,UAAU/B,OAAOiC,GAAoBA,GAAoBd,EAAgBY,EAAO,QAAQ/B,OAAOkC,GAAkBA,GAAkBH,GAAQ7C,EAAM0C,aAC7O,CAACO,EAAQE,EAAWxC,OCxD5B,SAAS,EAAQK,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,EAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,EAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,EAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,EAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAI,EAAQ,eAAsB,eAAS,EAAc,EAAc,GAAI,eAAU,EAAY,OAAeI,KAAK,KAAM,YAAa,GAAI,CACjJY,OAAQ,eAAS,QACjBC,YAAa,eAAS,QACtBC,WAAY,eAAS,WAClB,QAGMC,EAA2B,aAAIzD,OAAO,CAC/CM,KAAM,OACNC,YAAY,EACZN,MAAO,EACPO,OAAQ,SAAgBC,EAAGC,GACzB,IAAIoC,EAEA7C,EAAQS,EAAKT,MACbU,EAAOD,EAAKC,KACZC,EAAWF,EAAKE,SAChB8C,EAAkBzD,EAAMyD,gBACxBC,EAAsB1D,EAAM0D,oBAC5BC,EAAoB3D,EAAM2D,kBAC9B,OAAOnD,EAAER,EAAM4D,UAAW,eAAUlD,EAAM,CACxCE,YAAa,cACbC,MAAO,CAACb,EAAMsD,aAAcT,EAAQ,GAAI,EAAgBA,EAAO,MAAM/B,OAAO2C,GAAkBA,GAAkB,EAAgBZ,EAAO,UAAU/B,OAAO4C,GAAsBA,GAAsB,EAAgBb,EAAO,QAAQ/B,OAAO6C,GAAoBA,GAAoBd,IAClRgB,SAAUlD,EAAW,GAAK,OAAAmD,EAAA,MAAW9D,EAAMuD,WAAYvD,EAAMqD,UAC3D1C,MCtCR,SAAS,EAAQK,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,EAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,EAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,EAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,EAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAI,EAAQ,eAAsB,eAAS,EAAc,EAAc,GAAI,eAAU,EAAY,OAAeI,KAAK,KAAM,YAAa,GAAI,CACjJsB,OAAQ,eAAS,QACjBC,YAAa,eAAS,QACtBC,WAAY,eAAS,WAClB,QAGMC,EAA2B,aAAInE,OAAO,CAC/CM,KAAM,OACNC,YAAY,EACZN,MAAO,EACPO,OAAQ,SAAgBC,EAAGC,GACzB,IAAIoC,EAEA7C,EAAQS,EAAKT,MACbU,EAAOD,EAAKC,KACZC,EAAWF,EAAKE,SAChBwD,EAAkBnE,EAAMmE,gBACxBC,EAAsBpE,EAAMoE,oBAC5BC,EAAoBrE,EAAMqE,kBAC9B,OAAO7D,EAAER,EAAMsE,UAAW,eAAU5D,EAAM,CACxCE,YAAa,cACbC,MAAO,CAACb,EAAMgE,aAAcnB,EAAQ,GAAI,EAAgBA,EAAO,MAAM/B,OAAOqD,GAAkBA,GAAkB,EAAgBtB,EAAO,UAAU/B,OAAOsD,GAAsBA,GAAsB,EAAgBvB,EAAO,QAAQ/B,OAAOuD,GAAoBA,GAAoBxB,IAClRgB,SAAUlD,EAAW,GAAK,OAAAmD,EAAA,MAAW9D,EAAMiE,WAAYjE,EAAM+D,UAC3DpD,M,YCtCR,SAAS,EAAQK,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,EAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,EAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,EAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,EAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EASpM,IAAI,EAAQ,eAAsB,eAAS,EAAc,EAAc,GAAI,eAAK,OAAW,CAAC,MAAO,MAAO,QAAS,SAAU,OAAQ,WAAY,GAAI,CAC1JkC,OAAQ,eAAS,QAAmB,GACpCpF,IAAK,eAAS,QAAmB,GACjCD,MAAO,eAAS,QAAmB,GACnCsF,IAAK,eAAS,QAAmB,MAC9B,QAGMC,EAAwB,aAAI1E,OAAO,CAC5CM,KAAM,OACNC,YAAY,EACZN,MAAO,EACPO,OAAQ,SAAgBC,EAAGC,GACzB,IAAIT,EAAQS,EAAKT,MACbU,EAAOD,EAAKC,KACZgE,EAAM1E,EAAM0E,IACZC,EAAM3E,EAAM2E,IACZC,EAAQ5E,EAAM4E,MACdC,EAAS7E,EAAM6E,OACfC,EAAY,WAYhB,OAVI9E,EAAMwE,IACRM,GAAa,OACJ9E,EAAM+E,OAAS/E,EAAMb,IAC9B2F,GAAa,SACJ9E,EAAMuE,OACfO,GAAa,WACJ9E,EAAMgF,MAAQhF,EAAMd,SAC7B4F,GAAa,SAGRtE,EAAE,MAAO,eAAUE,EAAM,CAC9BG,MAAOiE,EACPG,MAAO,CACLP,IAAKA,EACLC,IAAKA,EACLC,MAAOA,EACPC,OAAQA,SClDhB,SAAS,EAAQ7D,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,EAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,EAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,EAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,EAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAgB3M,IAAI6C,EAAe,eAAU,EAAe,OAAezC,KAAK,KAAM,QACtEyC,EAAaC,OAAOC,UAAW,EACxB,IAAI,EAAQ,eAAsB,eAAS,EAAc,EAAc,EAAc,EAAc,EAAc,EAAc,GAAI,GAAiB,GAAmB,GAAmBF,GAAe,GAAY,GAAI,CAC9NG,MAAO,eAAS,QAChBC,OAAQ,eAAS,QAAmB,MACjC,QAGMC,EAAqB,aAAIxF,OAAO,CACzCM,KAAM,OACNC,YAAY,EACZN,MAAO,EACPO,OAAQ,SAAgBC,EAAGC,GACzB,IAAI+E,EAEAxF,EAAQS,EAAKT,MACbU,EAAOD,EAAKC,KACZ+E,EAAQhF,EAAKgF,MACbC,EAAcjF,EAAKiF,YACnBP,EAASnF,EAAMmF,OACfQ,EAAU3F,EAAM2F,QAChBC,EAAW5F,EAAM4F,SACjBC,EAAW7F,EAAM6F,SACjBC,EAAS9F,EAAM8F,OACfC,EAAY/F,EAAM+F,UAClB1C,EAASrD,EAAMqD,OACfE,EAAavD,EAAMuD,WACnBQ,EAAS/D,EAAM+D,OACfE,EAAajE,EAAMiE,WACnBoB,EAAQrF,EAAMqF,MACdvF,EAAcE,EAAMF,YACpBH,EAAYK,EAAML,UAClBC,EAAgBI,EAAMJ,cACtBoG,EAAeN,GAAe,GAC9BO,EAASR,IACTS,EAAY,GACZC,EAAY3F,IACZ4F,EAAW5F,IAEf,GAAI2E,EAAQ,CACV,IAAIkB,EAAO7F,EAAEiE,EAAU,CACrBzE,MAAO,eAAWkF,EAAclF,EAAO,OAAiByC,KAAK,KAAM,UAGjEsD,EACFK,EAAWC,EAEXF,EAAYE,EAIhB,IAAIC,EAAU9F,IACV+F,EAAgB,eAAkB,OAAkBP,EAAcC,IAElEM,GAAiBlD,GAAUE,KAC7B+C,EAAU9F,EAAEgD,EAAa,CACvBxD,MAAO,eAAW,EAAkBA,GACpC6D,SAAU0C,EAAgB,GAAK,OAAAzC,EAAA,MAAWP,EAAYF,IACrD,eAAc,OAAkB6C,EAAWF,EAAcC,KAG9D,IAAIO,EAAW,eAAc,OAAmBN,EAAWF,EAAcC,GAEpEjG,EAAMsF,SACTkB,EAAWhG,EAAEoC,EAAW,CACtB5C,MAAO,eAAW,EAAgBA,IACjCwG,GAGCxG,EAAM2C,SAAWwC,IACnBqB,EAAWhG,EAAE,MAAO,CAClBI,YAAa,qBACZ,CAACuF,EAAWK,EAAUJ,IAEzBD,EAAY3F,IACZ4F,EAAW5F,MAIf,IAAIiG,EAAUjG,IACVkG,EAAgB,eAAkB,OAAkBV,EAAcC,GAStE,OAPIS,GAAiB3C,GAAUE,KAC7BwC,EAAUjG,EAAE0D,EAAa,CACvBlE,MAAO,eAAW,EAAkBA,GACpC6D,SAAU0C,EAAgB,GAAK,OAAAzC,EAAA,MAAWG,EAAYF,IACrD,eAAc,OAAkBmC,EAAWF,EAAcC,KAGvDzF,EAAER,EAAMH,IAAK,eAAUa,EAAM,CAClCE,YAAa,OACbC,OAAQ2E,EAAS,CACf,WAAYG,GAAWE,EACvB,oBAAqBD,GAAYE,MAAaH,GAAWE,IACxD,EAAgBL,EAAQ,QAAQ1E,OAAOuE,GAAQA,GAAQ,EAAgBG,EAAQ,MAAM1E,OAAOnB,GAAYA,GAAY,EAAgB6F,EAAQ,UAAU1E,OAAOlB,GAAgBA,GAAgB,EAAgB4F,EAAQ,QAAQ1E,OAAOhB,GAAcA,GAAc0F,KACjQ,CAACW,EAAWG,EAASE,EAAUC,EAASL,Q,mJC5GrCO,EAAmB,aAAI5G,OAAO,CACvC6G,QAAS,CACPC,YAAa,SAAqBxG,GAEhC,IAAIyG,EAAaC,KAAKD,YAAc,GAIhCE,EAAUD,KAAKE,SAAW,GAG9B,OAAQ,eAAYH,EAAWzG,KAAU,eAAQ2G,EAAQ3G,KAAU2G,EAAQ3G,GAAMpC,OAAS,M,4DClBhG,SAAS8C,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAKgD,EAAQI,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBL,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmBf,EAAQI,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAASK,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAU3M,IAAI6E,EAAQ,QACRC,EAAO,OAEA,EAAQ,eAAsB,CACvCC,QAAS,eAAS,SACjB,SAMQC,EAAmB,aAAItH,OAAO,CACvCM,KAAM,QACNiH,OAAQ,CAACrC,EAAA,KAAYsC,EAAA,KAAgB,QACrCC,QAAS,WACP,MAAO,CACLC,UAAWV,OAGfW,OAAQ,CACNC,gBAAiB,CACfC,QAEA,WACE,MAAO,MAIbC,cAAc,EACd7H,MAAO,EACP8H,SAAU,CAERC,QAAS,WACP,OAAOhB,KAAKY,gBAAgBK,SAG9BC,QAAS,WACP,OAAOlB,KAAKY,gBAAgBO,SAG9BC,QAAS,WACP,OAAOpB,KAAKY,gBAAgBS,SAG9BC,OAAQ,WACN,OAAOtB,KAAKY,gBAAgBU,QAG9BC,UAAW,WACT,OAAOvB,KAAKY,gBAAgBW,WAG9BC,aAAc,WACZ,OAAOxB,KAAKY,gBAAgBY,cAI9BC,eAAgB,WACd,OAAOzB,KAAKY,gBAAgBa,gBAK9BC,gBAAiB,WACf,OAAQ1B,KAAKuB,WAAavB,KAAKY,gBAAgBc,iBAGjDC,aAAc,WACZ,OAAO3B,KAAKY,gBAAgBe,cAG9BC,YAAa,WACX,OAAO5B,KAAKkB,QAAUlB,KAAKY,gBAAgBgB,YAAc,MAG3DC,YAAa,WACX,OAAO7B,KAAKoB,QAAUpB,KAAKY,gBAAgBiB,YAAc,MAE3DC,UAAW,WACT,OAAO9B,KAAK4B,cAAgBzB,GAASH,KAAK6B,cAAgB1B,IAElDH,KAAK4B,cAAgBxB,GAAQJ,KAAK6B,cAAgBzB,GAEnDJ,KAAKsB,SAEdS,UAAW,WACT,IAAI1B,EAAUL,KAAKK,QACnB,MAAO,CAACA,EAAU,GAAGtG,OAAOiG,KAAK8B,UAAY,KAAO,QAAS,KAAK/H,OAAOsG,GAAW,OAEtF2B,QAAS,WACP,OAAOpH,EAAc,CACnBqH,KAAM,OACLjC,KAAKkC,WAGZ1I,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,KAAM,CACbK,MAAOkG,KAAK+B,UACZ7D,MAAO8B,KAAKgC,QAEZG,GAAInC,KAAKoC,aACRpC,KAAKqC,oBC9GD,EAAQ,GAGRC,EAAiB,aAAItJ,OAAO,CACrCC,MAAO,EACP4G,QAAS,CACP0C,gBAAiB,WACf,IAAIC,EAASxC,KAAKyC,eACdC,EAAU1C,KAAK0C,QACfC,EAAe3C,KAAK2C,aACpBC,EAAc5C,KAAK4C,YACnBnJ,EAAIuG,KAAK6C,eAGb,OAAK7C,KAAK8C,kBAAkB,UAAqC,IAAZJ,GAAgC,KAAZA,EAIlEjJ,EAAE6G,EAAK,CACZzG,YAAa,qBACbC,MAAO,CAAC,eAAW6I,GAEnBA,EAAa,KAAM,cAAgBA,GACnCzE,MAAO,eAAW0E,GAElBA,EAAY,KAAM,cAAgBA,EAClC3H,IAAK,gBACJ+E,KAAKqC,cAAc,OAAsB,CAC1CU,QAASP,EAAOtL,OAChBsL,OAAQA,KAdD/I,Q,4DCpBf,SAAS,EAAQQ,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,EAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,EAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,EAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,EAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAe3M,IAAI,EAAY,SAAmBC,GAEjC,OADAA,EAAQ,eAAUA,EAAO,GAClBA,EAAQ,EAAIA,EAAQ,MAKzB,EAAgB,SAAuBA,GACzC,OAAO,eAAkBA,IAAU,EAAUA,GAAS,GAI7C,EAAQ,eAAsB,CACvCyH,QAAS,eAAS,OAAyB,KAAM,GACjDC,QAAS,eAAS,OAAyB,KAAM,GACjDC,eAAgB,eAAS,QACzBC,aAAc,eAAS,QAAmB,GAC1C9C,QAAS,eAAS,SACjB,SAMQ+C,EAAmB,aAAIpK,OAAO,CACvCM,KAAM,QAENiH,OAAQ,CAACrC,EAAA,KAAYsC,EAAA,KAAgB,QACrCG,OAAQ,CACND,UAAW,CACTG,QAEA,WACE,MAAO,MAIbC,cAAc,EACd7H,MAAO,EACP8H,SAAU,CAERjI,IAAK,WACH,MAAO,MAETkI,QAAS,WACP,OAAOhB,KAAKU,UAAUM,SAExBE,QAAS,WACP,OAAOlB,KAAKU,UAAUQ,SAExBE,QAAS,WACP,OAAOpB,KAAKU,UAAUU,SAExBE,OAAQ,WACN,OAAOtB,KAAKU,UAAUY,QAExBC,UAAW,WACT,OAAOvB,KAAKU,UAAUa,WAGxB8B,cAAe,WACb,OAAOrD,KAAKgB,SAAWhB,KAAKuB,WAE9BC,aAAc,WACZ,OAAOxB,KAAKU,UAAUc,cAKxBC,eAAgB,WACd,OAAOzB,KAAKU,UAAUe,gBAIxBC,gBAAiB,WACf,OAAO1B,KAAKU,UAAUgB,iBAOxB4B,eAAgB,WACd,OAAQtD,KAAKuB,YAAcvB,KAAKwB,cAAgBxB,KAAK0B,kBAAoB1B,KAAKmD,cAEhFI,WAAY,WACV,OAAOvD,KAAKU,UAAUL,SAExBuB,YAAa,WACX,OAAO5B,KAAKU,UAAUkB,aAExBC,YAAa,WACX,OAAO7B,KAAKU,UAAUmB,aAExBF,aAAc,WACZ,OAAO3B,KAAKU,UAAUiB,cAExB6B,gBAAiB,WACf,OAAO,EAAUxD,KAAKgD,UAExBS,gBAAiB,WACf,OAAO,EAAUzD,KAAKiD,UAIxBS,YAAa,WACX,IAAIrD,EAAUL,KAAKK,QACfuB,EAAc5B,KAAK4B,YACnB0B,EAAiBtD,KAAKsD,eAQ1B,QANKjD,GAAWL,KAAKyB,iBAAmBG,IAAgBvB,GAAWiD,GAAkBtD,KAAKoB,UAAYpB,KAAK6B,cAAgBxB,GAAWiD,GAAkBtD,KAAKkB,UAAYU,IAAgBvB,GAAWiD,GAAkBtD,KAAKgB,WAGzNX,EAAUL,KAAKuD,YAAcvD,KAAK2B,cAAgB,mBAG7C,CAACtB,EAAU,GAAGtG,OAAOiG,KAAKsB,OAAS,KAAO,QAAS,KAAKvH,OAAOsG,GAAW,KAAMiD,EAAiB,wBAA0B,OAEpIK,UAAW,WACT,IAAIT,EAAiBlD,KAAKkD,eAGtBU,EAAa5D,KAAKkB,SAAWlB,KAAKoB,QAElC4B,EAAUhD,KAAKwD,gBACfP,EAAUjD,KAAKyD,gBAEfxB,EAAO,OACP4B,EAAQ,KAaZ,OAVID,GAEF3B,EAAO,eACP4B,EAAQb,EAAU,EAAI,UAAY,OACzB,eAAMhD,KAAKlH,IAAK,QAEzBmJ,EAAO,YACP4B,EAAQZ,EAAU,EAAI,WAAa,OAG9B,EAAc,EAAc,CACjCD,QAASA,EACTC,QAASA,EACThB,KAAMA,EACN4B,MAAOA,GACN7D,KAAKkC,SAAU,GAAI,CAGpB,aAAclC,KAAKqD,gBAAkB,eAAkBH,GAEvD,eAASA,GAAkB,SAIjC1J,OAAQ,SAAgBC,GACtB,IAAIgG,EAAW,CAACO,KAAKqC,iBACrB,OAAO5I,EAAEuG,KAAKlH,IAAK,CACjBgB,MAAOkG,KAAK0D,YACZxF,MAAO8B,KAAK2D,UAEZxB,GAAInC,KAAKoC,aACR,CAACpC,KAAKqD,cAAgB5J,EAAE,MAAO,CAACgG,IAAaA,OCrLpD,SAAS,EAAgBnE,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAY3M,IAAIwI,EAAuB,OACvBC,EAAwB,OAA0BD,EAE3C,EAAQ,EAAgB,GAAIA,EAAsB,eAAS,QAAmB,IAG9EE,EAAY,aAAIhL,OAAO,CAChCC,MAAO,EACPU,KAAM,WACJ,MAAO,CACLsK,WAAW,IAGflD,SAAU,CACRmD,aAAc,WACZ,OAAOlE,KAAK8D,IAAyB9D,KAAKiE,YAG9CE,MAAO,CACLF,UAAW,SAAmBG,EAAUC,GAClCD,IAAaC,GACfrE,KAAKsE,MAAMP,EAAuBK,KAIxCvE,QAAS,CAEP0E,WAAY,SAAoBC,GAE9B,QAAIxE,KAAKkE,eACP,eAAUM,IACH,IAMXC,WAAY,WACV,IAAI9B,EAAe3C,KAAK2C,aACpBC,EAAc5C,KAAK4C,YACnBnJ,EAAIuG,KAAK6C,eAEb,OAAI7C,KAAKkE,cAAgBlE,KAAK8C,kBAAkB,QACvCrJ,EAAE6G,EAAK,CACZzG,YAAa,oBACbC,MAAO,CAAC,eAAW6I,GAEnBA,EAAa,KAAM,QAAwBA,GAC3CzE,MAAO,eAAW0E,GAElBA,EAAY,KAAM,QAAwBA,EAC1C3H,IAAK,mBACJ,CAACxB,EAAE2J,EAAK,CACTnK,MAAO,CACL+J,QAAShD,KAAKyC,eAAevL,QAAU,OAExC,CAAC8I,KAAKqC,cAAc,YAKlB,S,YCnEF,EAAQ,CACjBqC,QAAS,eAAS,QAClBC,YAAa,eAAS,SAMbC,EAAe,aAAI5L,OAAO,CACnCC,MAAO,EACP8H,SAAU,CACR8D,UAAW,WAGT,OAAO7E,KAAKuB,UAAYvB,KAAK8E,OAAO,aAAe,OAGvDjF,QAAS,CACPkF,cAAe,WACb,IAAIL,EAAU1E,KAAK0E,QACfC,EAAc3E,KAAK2E,YACnBlL,EAAIuG,KAAK6C,eACTmC,EAAWvL,IACXwL,EAAiBjF,KAAK8C,kBAAkB,QAY5C,OAVImC,GAAkBP,GAAWC,KAC/BK,EAAWvL,EAAE,UAAW,CACtByE,MAAO,CACLgH,GAAIlF,KAAK6E,WAEX/H,SAAUmI,EAAiB,GAAK,OAAAlI,EAAA,MAAW4H,EAAaD,GACxDzJ,IAAK,WACJ+E,KAAKqC,cAAc,UAGjB2C,MCtCF,EAAQ,GAGRG,EAAgB,aAAInM,OAAO,CACpC6G,QAAS,CACPuF,eAAgB,WACd,IAAI5C,EAASxC,KAAKyC,eACdhJ,EAAIuG,KAAK6C,eACTwC,EAAY5L,IAWhB,OATIuG,KAAK8C,kBAAkB,UACzBuC,EAAY5L,EAAE,WAAY,CACxBwB,IAAK,YACJ,CAAC+E,KAAKqC,cAAc,OAA0B,CAC/CU,QAASP,EAAOtL,OAChBsL,OAAQA,OAIL6C,MCbF,EAAQ,CACjBC,kBAAmB,eAAS,QAC5BC,kBAAmB,eAAS,OAAkB,8CAC9CC,UAAW,eAAS,QACpBC,UAAW,eAAS,OAAkB,gCACtCC,UAAW,eAAS,QAAmB,IAI9BC,EAAa,aAAI3M,OAAO,CACjCC,MAAO,EACP4G,QAAS,CACP+F,YAAa,WACX,IAAIC,EAAQ7F,KAAK8F,cACbrM,EAAIuG,KAAK6C,eACTkD,EAAStM,IAEb,GAAIuG,KAAK0F,aAAeG,GAA0B,IAAjBA,EAAM3O,WAAmB8I,KAAKkE,eAAgBlE,KAAK8C,kBAAkB,SAAwB,CAC5H,IAAIN,EAASxC,KAAKyC,eACduD,EAAahG,KAAKgG,WAClBP,EAAYzF,KAAKyF,UACjBD,EAAYxF,KAAKwF,UACjBD,EAAoBvF,KAAKuF,kBACzBD,EAAoBtF,KAAKsF,kBACzB3C,EAAe3C,KAAK2C,aACpBC,EAAc5C,KAAK4C,YACvBmD,EAAS/F,KAAKqC,cAAc2D,EAAa,OAA0B,OAAiB,CAClFV,kBAAmBA,EACnBC,kBAAmBA,EACnBC,UAAWA,EACXC,UAAWA,EACXjD,OAAQA,EAERqD,MAAOA,IAGJE,IACHA,EAAStM,EAAE,MAAO,CAChBK,MAAO,CAAC,cAAe,QACvBgD,SAAUkJ,EAAa,OAAAjJ,EAAA,MAAWuI,EAAmBC,GAAqB,OAAAxI,EAAA,MAAWyI,EAAWC,MAIpGM,EAAStM,EAAE2J,EAAK,CACdnK,MAAO,CACL+J,QAASR,EAAOtL,QAAU,OAE3B,CAACuC,EAAE,MAAO,CACXyE,MAAO,CACL+D,KAAM,QACN,YAAa,WAEd,CAAC8D,MACJA,EAAStM,EAAE6G,EAAK,CACdzG,YAAa,oBACbC,MAAO,CAAC,eAAW6I,GAEnBA,EAAa,KAAM,aAAeA,GAClCzE,MAAO,eAAW0E,GAElBA,EAAY,KAAM,aAAeA,EACjC3H,IAAK+K,EAAa,uBAAyB,eAC1C,CAACD,IAGN,OAAOA,M,wEC3DF,GAAwB,SAASE,EAAsB1K,GAChE,OAAI,eAAkBA,GACb,GAKL,eAASA,KAAW,eAAOA,GACtB,eAAKA,GAAO2K,OAClBC,KAAI,SAAUC,GACb,OAAOH,EAAsB1K,EAAM6K,OAClC7L,QAAO,SAAU8L,GAClB,QAASA,KAEV9N,KAAK,KAGD,eAASgD,IChClB,SAAS,GAAQtB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAGpM,IAAIgL,GAAyB,gBACzBC,GAAwB,cACxBC,GAAyB,eAGzBC,GAAqB,CAACH,GAAwBC,GAAuBC,IAAwBE,QAAO,SAAUC,EAAQ1L,GAC/H,OAAO,GAAc,GAAc,GAAI0L,GAAS,GAAI,GAAgB,GAAI1L,GAAK,MAC5E,IAGQ2L,GAAe,CAAC,IAAK,MAChC,SAAU,WACV,uCAAwC,wCAAyC,0CAA2C,gBAAiB,kBAAmB,kBAAmB,oBAAqB,6CAA6CrO,KAAK,KCd/O,GAAc,SAAqBsO,EAAKC,EAAcC,GAC/D,IAAIC,EAAYlM,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAIhFoM,EAAe,eAAKF,GAAWN,QAAO,SAAUC,EAAQ1L,GAC1D,IAAIkM,EAAQH,EAAU/L,GAClBmM,EAAoBD,EAAMC,kBAC1BC,EAAY,eAAWD,GAE3BA,EAAoBA,EAEpBD,EAAME,UAAY,KAMlB,OAJI,eAAWA,KACbV,EAAO1L,GAAOoM,EAAUR,EAAI5L,GAAMA,EAAK4L,IAGlCF,IACN,eAAME,IAKLS,EAAc,eAAKJ,GAAc3M,QAAO,SAAUU,GACpD,OAAQwL,GAAmBxL,MAAU,eAAQ6L,IAAiBA,EAAa5P,OAAS,GAAK,OAAAqQ,EAAA,MAAcT,EAAc7L,OAAW,eAAQ8L,IAAkBA,EAAc7P,OAAS,IAAM,OAAAqQ,EAAA,MAAcR,EAAe9L,OAEtN,OAAO,eAAKiM,EAAcI,IC3BjB,GAAwB,SAA+BT,EAAKC,EAAcC,EAAeC,GAClG,OAAO,eAASH,GAAO,GAAsB,GAAYA,EAAKC,EAAcC,EAAeC,IAE3F,ICRF,SAASQ,GAAmB3P,GAAO,OAAO4P,GAAmB5P,IAAQ6P,GAAiB7P,IAAQ8P,GAA4B9P,IAAQ+P,KAElI,SAASA,KAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,GAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,GAAkBF,EAAGC,GAAS,IAAIE,EAAI7N,OAAO8N,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYhP,MAAgB,QAAN2O,GAAqB,QAANA,EAAoBnR,MAAMyR,KAAKT,GAAc,cAANG,GAAqB,2CAA2CO,KAAKP,GAAWD,GAAkBF,EAAGC,QAAzG,GAE7S,SAASL,GAAiBe,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYvO,OAAOqO,GAAO,OAAO3R,MAAMyR,KAAKE,GAE1H,SAAShB,GAAmB5P,GAAO,GAAIf,MAAM8R,QAAQ/Q,GAAM,OAAOmQ,GAAkBnQ,GAEpF,SAASmQ,GAAkBnQ,EAAKZ,IAAkB,MAAPA,GAAeA,EAAMY,EAAIX,UAAQD,EAAMY,EAAIX,QAAQ,IAAK,IAAIF,EAAI,EAAG6R,EAAO,IAAI/R,MAAMG,GAAMD,EAAIC,EAAKD,IAAO6R,EAAK7R,GAAKa,EAAIb,GAAM,OAAO6R,EAkBhL,IAAIC,GAA0B,8FAEnB,GAAQ,CACjBvO,OAAQ,eAAS,GAAGR,OAAOyN,GAAmB,QAAgC,CAAC,UAC/EuB,eAAgB,eAAS,OAAyB,GAAG,SAAUxN,GAC7D,OAAO,OAAUiN,KAAKQ,OAAOzN,OAE/B0N,eAAgB,eAAS,QACzBC,oBAAqB,eAAS,OAAiB,IAC/CC,qBAAsB,eAAS,OAAiB,KAIvCC,GAAiB,aAAIpQ,OAAO,CACrCC,MAAO,GACPU,KAAM,WACJ,MAAO,CAELqM,YAAY,EAGZqD,YAAarJ,KAAKsJ,eAAetJ,KAAKzF,UAG1CwG,SAAU,CACRwI,sBAAuB,WACrB,OAAO,eAAOvJ,KAAKkJ,qBAAuB,IAAI3O,OAAOiP,EAAA,OAEvDC,uBAAwB,WACtB,OAAO,eAAOzJ,KAAKmJ,sBAAwB,IAAI5O,OAAOiP,EAAA,OAExDE,uBAAwB,WACtB,IAAIC,EAAK,eAAU3J,KAAK+I,eAAgB,GAOxC,OAJIY,EAAK,GACP,OAAAC,EAAA,MAAKd,GAAyB,SAGzBa,GAETE,eAAgB,WACd,OAAO7J,KAAK8J,eAAgB9J,KAAK+J,qBAGnCC,cAAe,WACb,IAAIC,EAAgBjK,KAAKiK,cACrBC,EAAalK,KAAKkK,WAClBb,EAAcrJ,KAAKqJ,YACvB,MAAO,CACLY,cAAeA,EACfC,WAAYA,EACZb,YAAaA,IAIjBc,cAAe,WAEb,IAAIlB,EAAiBjJ,KAAKiJ,eAC1B,OAAO,eAAgBA,GAAkBA,EAAiB,MAI5DgB,cAAe,WAEb,IAAIpE,EAAQ7F,KAAKkK,WACbE,EAAWpK,KAAKqJ,YAIhBgB,EAAWrK,KAAK6J,eAAiB7J,KAAKsK,gBAAgBtK,KAAKmK,cAAeC,IAAapK,KAAKuK,uBAAuBH,GAAY,KAEnI,OAAOC,GAAYxE,EAAM3O,OAAS,EAAI2O,EAAMtL,OAAO8P,GAAYxE,IAGnE1B,MAAO,CAELuF,uBAAwB,SAAgCtF,IACjDA,GAAYpE,KAAKwK,gBACpBxK,KAAKyK,mBACLzK,KAAKqJ,YAAcrJ,KAAKsJ,eAAetJ,KAAKzF,UAIhDA,OAAQ,CAGNmQ,MAAM,EACNC,QAAS,SAAiBC,GACxB,IAAIC,EAAQ7K,KAER8K,EAAU9K,KAAK0J,uBACnB1J,KAAKyK,mBAEDK,GAAWA,EAAU,EAEvB9K,KAAKwK,cAAgBO,YAAW,WAC9BF,EAAMxB,YAAcwB,EAAMvB,eAAesB,KACxCE,GAGH9K,KAAKqJ,YAAcrJ,KAAKsJ,eAAesB,KAM7CZ,cAAe,SAAuBtQ,GACpC,IAAIuQ,EAAgBvQ,EAAKuQ,cACrBZ,EAAc3P,EAAK2P,YAEnBrD,GAAa,EAEZqD,EAGM,eAAWA,EAAa,KAAO,eAAWA,EAAa,IAEhErD,GAAa,EACJqD,IAETrD,GAAa,GANbA,GAAa,EASXA,GACFhG,KAAKsE,MAAM,OAAqB2F,EAAeA,EAAc/S,QAG/D8I,KAAKgG,WAAaA,GAEpBA,WAAY,SAAoB5B,EAAUC,GACxC,IAAiB,IAAbD,IAAmC,IAAbC,EAAmB,CAG3C,IAAI6F,EAAalK,KAAKkK,WACtBlK,KAAKsE,MAAM,OAAqB4F,EAAYA,EAAWhT,WAI7D8T,QAAS,WACP,IAAIC,EAASjL,KAGbA,KAAKwK,cAAgB,KAMrBxK,KAAKkL,WAAU,WACbD,EAAOjF,WAAamF,QAAQF,EAAO5B,iBAGvC+B,cAAe,WACbpL,KAAKyK,oBAEP5K,QAAS,CACP4K,iBAAkB,WAChBY,aAAarL,KAAKwK,eAClBxK,KAAKwK,cAAgB,MAEvBlB,eAAgB,SAAwBc,GAEtC,OAAIpK,KAAK6J,gBAAmB7J,KAAKmK,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,IAAIkB,EAAK,SAAYC,GAGnB,OAAOlB,EAASkB,EAAMnB,IAIxB,OAAOkB,GAETf,uBAAwB,SAAgCH,GACtD,IAAIoB,EAASxL,KAIb,IAAKoK,IAAc,eAASA,KAAa,eAASA,GAEhD,OAAO,KAIT,IAAIqB,EAASrB,EAEb,GAAI,eAASqB,GAAS,CAGpB,IAAIC,EAAU,eAAatB,GAAUuB,QAAQ,OAAW,QAGxDF,EAAS,IAAIG,OAAO,KAAK7R,OAAO2R,EAAS,MAAO,KAIlD,IAAIJ,EAAK,SAAYC,GAenB,OADAE,EAAOI,UAAY,EACZJ,EAAOjD,KAAK,GAAsB+C,EAAMC,EAAOjC,sBAAuBiC,EAAO/B,uBAAwB+B,EAAOM,qBAIrH,OAAOR,M,0BCpQT,GAAe,SAAsBrQ,EAAKM,GAC5C,IAAI4L,EAAQ,KA0BZ,OAxBI,eAAS5L,GAEX4L,EAAQ,CACNlM,IAAKA,EACL8Q,MAAOxQ,GAEA,eAAWA,GAEpB4L,EAAQ,CACNlM,IAAKA,EACLoM,UAAW9L,GAEJ,eAASA,IAClB4L,EAAQ,eAAM5L,GACd4L,EAAMlM,IAAMkM,EAAMlM,KAAOA,IACN,IAAVM,IAIT4L,EAAQ,CACNlM,IAAKA,IAIFkM,GAKE,GAAkB,SAAyB6E,EAAYnG,GAChE,IAAIrD,EAAS,GA0Bb,GAxBI,eAAQwJ,IAEVA,EAAWzR,OAAOiP,EAAA,MAAUxO,SAAQ,SAAUiR,GAC5C,GAAI,eAASA,GACXzJ,EAAOlK,KAAK,CACV2C,IAAKgR,EACLF,MAAO,eAAUE,UAEd,GAAI,eAASA,IAAMA,EAAEhR,KAAO,eAASgR,EAAEhR,KAE5CuH,EAAOlK,KAAK,eAAM2T,SACb,GAAI,eAASA,IAAyB,IAAnB,eAAKA,GAAG/U,OAAc,CAE9C,IAAI+D,EAAM,eAAKgR,GAAG,GACd9E,EAAQ,GAAalM,EAAKgR,EAAEhR,IAE5BkM,GACF3E,EAAOlK,KAAK6O,OAOE,IAAlB3E,EAAOtL,QAAgB,eAAQ2O,IAAUA,EAAM3O,OAAS,EAAG,CAC7D,IAAIgV,EAASrG,EAAM,GACnB,eAAKqG,GAAQlR,SAAQ,SAAUoL,GACxBK,GAAmBL,IACtB5D,EAAOlK,KAAK,CACV2C,IAAKmL,EACL2F,MAAO,eAAU3F,QAOzB,IAAI+F,EAAO,GACX,OAAO3J,EAAOjI,QAAO,SAAU0R,GAC7B,OAAKE,EAAKF,EAAEhR,OACVkR,EAAKF,EAAEhR,MAAO,EACdgR,EAAEF,MAAQ,eAASE,EAAEF,OAASE,EAAEF,MAAQ,eAAUE,EAAEhR,MAC7C,OCnFb,SAAS,GAAQhB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAc3M,IAAI8Q,GAAkB,gBAAe,QAAS,CAC5CC,KAAM,OACNC,aAAc,KAEZC,GAAaH,GAAgBI,MAC7BC,GAAaL,GAAgBnT,MAC7ByT,GAAkBN,GAAgBO,KAClCC,GAAmBR,GAAgB5H,MAI5B,GAAQ,eAAS,GAAc,GAAc,GAAIiI,IAAa,GAAI,GAAgB,CAC3FjK,OAAQ,eAAS,OAAiB,MAElCqD,MAAO,eAAS,OAAiB,IAGjCgH,WAAY,eAAS,SACpBH,GAAiB,eAAS,OAAiB,OAGnCI,GAAa,aAAI9T,OAAO,CACjCuH,OAAQ,CAACgM,IACTtT,MAAO,GACPU,KAAM,WACJ,IAAIkM,EAAQ7F,KAAK6F,MACjB,MAAO,CAGLqE,WAAY,eAAQrE,GAASA,EAAMwC,QAAU,KAGjDtH,SAAU,CACR0B,eAAgB,WAGd,OAAO,GAAgBzC,KAAKwC,OAAQxC,KAAKkK,aAE3C4B,kBAAmB,WAKjB,IAAIiB,EAAU/M,KAAK+M,QACnB,OAAO/M,KAAKyC,eAAeiE,QAAO,SAAUpL,EAAK2Q,GAI/C,GAFA3Q,EAAI2Q,EAAEhR,KAAO,eAAMgR,GAEfA,EAAE5E,UAAW,CAEf,IAAIA,EAAY4E,EAAE5E,UAEd,eAASA,IAAc,eAAW0F,EAAQ1F,IAC5CA,EAAY0F,EAAQ1F,GACV,eAAWA,KAErBA,OAAYJ,GAId3L,EAAI2Q,EAAEhR,KAAKoM,UAAYA,EAGzB,OAAO/L,IACN,KAELwK,cAAe,WAEb,OAAQ9F,KAAKgN,gBAAkBhN,KAAKiN,aAAejN,KAAKiK,eAAiBjK,KAAKkK,YAE9E,IAAI7B,SAEN6E,QAAS,WAEP,MAAO,CACL3S,OAAQyF,KAAKqJ,YACb8D,OAAQnN,KAAKoN,YACbC,SAAUrN,KAAKsN,cACfC,QAAS,OAAAC,GAAA,MAAQ,eAAUxN,KAAKuN,QAAS,GAAI,GAC7CE,YAAa,OAAAD,GAAA,MAAQ,eAAUxN,KAAKyN,YAAa,GAAI,GACrDC,OAAQ1N,KAAK0N,UAInBvJ,MAAO,CACL0B,MAAO,SAAezB,GAEpBpE,KAAKkK,WAAa,eAAQ9F,GAAYA,EAASiE,QAAU,IAG3DvC,cAAe,SAAuB1B,EAAUC,GACzC,eAAWD,EAAUC,IACxBrE,KAAKsE,MAAMsI,GAAkBxI,IAIjC8I,QAAS,SAAiB9I,EAAUC,GAE7B,eAAWD,EAAUC,IACxBrE,KAAKsE,MAAM,OAA4BF,KAI7CuJ,QAAS,WAEP3N,KAAKsE,MAAMsI,GAAkB5M,KAAK8F,gBAEpCjG,QAAS,CAEP+N,kBAAmB,SAA2B3S,GAC5C,IAAIkM,EAAQnH,KAAK8L,kBAAkB7Q,GAGnC,OAAOkM,EAAQA,EAAME,eAAYJ,MC7H5B,GAAQ,CACjBwG,YAAa,eAAS,OAAyB,GAC/CF,QAAS,eAAS,OAAyB,IAIlCM,GAAkB,aAAI7U,OAAO,CACtCC,MAAO,GACP8H,SAAU,CACR+M,YAAa,WACX,OAAO9N,KAAK8J,eAAgB9J,KAAK+N,kBAEnCf,eAAgB,WACd,IAAInH,EAAQ7F,KAAKiN,aAAejN,KAAKiK,eAAiBjK,KAAKkK,YAAc,GACrEuD,EAAc,OAAAD,GAAA,MAAQ,eAAUxN,KAAKyN,YAAa,GAAI,GACtDF,EAAU,OAAAC,GAAA,MAAQ,eAAUxN,KAAKuN,QAAS,GAAI,GAQlD,OANIvN,KAAK8N,aAAeP,IAEtB1H,EAAQA,EAAMwC,OAAOoF,EAAc,GAAKF,EAASE,EAAcF,IAI1D1H,M,aCjBTmI,GAA4B,eAAiB,QAAY,QACzDC,GAAiC,eAAuB,QAAY,QAE7D,GAAQ,CAGjBP,OAAQ,eAAS,QAEjB7H,MAAO,eAAS,OAA0B,IAC1CkE,oBAAqB,eAAS,QAAmB,GACjDgE,iBAAkB,eAAS,QAAmB,GAC9CG,kBAAmB,eAAS,QAAmB,IAItCC,GAAgB,aAAInV,OAAO,CACpCuH,OAAQ,CAAC,SACTtH,MAAO,GACP8H,SAAU,CACR+I,YAAa,WACX,OAAO,eAAW9J,KAAK6F,QAEzBuI,uBAAwB,WAKtB,IAAIC,EAAM,CACRX,OAAQ1N,KAAK0N,OACbnT,OAAQ,KACR4S,OAAQ,KACRE,SAAU,KACVE,QAAS,KACTE,YAAa,MAkBf,OAfKzN,KAAK+J,sBAERsE,EAAI9T,OAASyF,KAAKqJ,aAGfrJ,KAAKkO,oBACRG,EAAIlB,OAASnN,KAAKoN,YAClBiB,EAAIhB,SAAWrN,KAAKsN,eAGjBtN,KAAK+N,mBACRM,EAAId,QAAUvN,KAAKuN,QACnBc,EAAIZ,YAAczN,KAAKyN,aAGlB,eAAMY,KAGjBlK,MAAO,CAEL0B,MAAO,SAAezB,IAEhBpE,KAAK8J,aAAe,eAAW1F,KACjCpE,KAAKkL,UAAUlL,KAAKsO,kBAGxBF,uBAAwB,SAAgChK,EAAUC,GAE3D,eAAWD,EAAUC,IACxBrE,KAAKkL,UAAUlL,KAAKsO,mBAI1BX,QAAS,WACP,IAAI9C,EAAQ7K,MAGRA,KAAK8J,aAAiB9J,KAAKkK,YAAyC,IAA3BlK,KAAKkK,WAAWhT,QAE3D8I,KAAKsO,kBAIPtO,KAAKuO,aAAaN,IAAgC,SAAU/I,GACtDA,IAAO2F,EAAM3F,IAAMA,IAAO2F,GAC5BA,EAAM2D,cAIZ3O,QAAS,CACP2O,QAAS,WACP,IAAI3I,EAAQ7F,KAAK6F,MACb2I,EAAUxO,KAAKwO,QAEnBxO,KAAKyO,KAAK,OAAsBD,GAE5BxO,KAAKkE,aAEHlE,KAAKiE,WAAajE,KAAK8J,aAEzB9J,KAAK0O,IAAI,OAAsBF,IAGjCxO,KAAK2O,gBAED3O,KAAK8J,YACP9J,KAAKkL,UAAUlL,KAAKsO,iBAGpBtO,KAAKkK,WAAa,eAAQrE,GAASA,EAAMwC,QAAU,KAKzDuG,kBAAmB,SAA2B/I,GAC5C7F,KAAKkK,WAAa,eAAQrE,GAASA,EAAMwC,QAAU,GACnDrI,KAAKiE,WAAY,EACjBjE,KAAKsE,MAAM,QAEPtE,KAAKkF,IACPlF,KAAK6O,WAAWb,GAA2BhO,KAAKkF,KAGpDoJ,gBAAiB,WACf,IAAIrD,EAASjL,KAGRA,KAAK8J,cAMN9J,KAAKkE,aAEPlE,KAAKkL,UAAUlL,KAAKwO,UAKtBxO,KAAKiE,WAAY,EAEjBjE,KAAKkL,WAAU,WACb,IAEE,IAAIvR,EAAOsR,EAAOpF,MAAMoF,EAAOiC,QAASjC,EAAO2D,mBAE3C,eAAUjV,GAEZA,EAAKmV,MAAK,SAAUjJ,GAElBoF,EAAO2D,kBAAkB/I,MAElB,eAAQlM,GAEjBsR,EAAO2D,kBAAkBjV,GAGG,IAAxBsR,EAAOpF,MAAM3O,SAMf,OAAA0S,EAAA,MAAK,kFAAmF,SACxFqB,EAAOhH,WAAY,GAGvB,MAAO8K,GAKP,OAAAnF,EAAA,MAAK,4BAA4B7P,OAAOgV,EAAEzV,KAAM,MAAMS,OAAOgV,EAAEC,QAAS,KAAM,SAC9E/D,EAAOhH,WAAY,EAEnBgH,EAAOwD,KAAK,OAAsBxD,EAAOuD,mBCxLnD,SAAS,GAAgBlT,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAa3M,ICbI2T,GAAQC,GDaRC,GAAe,CAAC,QAAS,QAAS,UAE3B,GAAQ,CAEjBC,gBAAiB,eAAS,QAAmB,GAC7CC,WAAY,eAAS,OAAkB,SAAS,SAAU9T,GACxD,OAAO,OAAAgM,EAAA,MAAc4H,GAAc5T,MAErC+T,WAAY,eAAS,QAAmB,GACxCC,gBAAiB,eAAS,OAAkB,WAInCC,GAAkB,aAAIxW,OAAO,CACtCC,MAAO,GACPU,KAAM,WACJ,MAAO,CACL8V,aAAc,GACdC,iBAAkB,IAGtB3O,SAAU,CACR4O,aAAc,WACZ,OAAO3P,KAAKsP,YAActP,KAAKqP,YAEjCO,sBAAuB,WACrB,OAAO5P,KAAK2P,eAAiB3P,KAAKoP,iBAEpCS,uBAAwB,WACtB,OAAO,GAETC,uBAAwB,WACtB,IAAIL,EAAezP,KAAKyP,aACxB,OAAOzP,KAAK2P,cAAgBF,GAAgBA,EAAavY,OAAS,GAAKuY,EAAaM,KAAKvG,EAAA,OAE3FwG,wBAAyB,WACvB,OAAOhQ,KAAK2P,cAAgB,OAAApI,EAAA,MAAc,CAAC,QAAS,SAAUvH,KAAKqP,aAErEY,uBAAwB,WACtB,IAAIvW,EAEAiW,EAAe3P,KAAK2P,aACxB,OAAOjW,EAAO,CACZ,qBAAsBiW,GACrB,GAAgBjW,EAAM,kBAAkBK,OAAOiG,KAAKqP,YAAaM,GAAe,GAAgBjW,EAAM,oBAAqBsG,KAAK8P,wBAAyB,GAAgBpW,EAAM,8BAA+BiW,IAAiB3P,KAAK4P,uBAAwBlW,GAEjQwW,qBAAsB,WACpB,MAAO,CAIL,uBAAyBlQ,KAAK2P,aAAsB3P,KAAKgQ,wBAA0B,OAAS,QAA/C,QAInD7L,MAAO,CACL2B,cAAe,SAAuB1B,EAAUC,GAE9C,IAAI8L,GAAQ,EAEZ,GAAInQ,KAAK2P,cAAgB3P,KAAKyP,aAAavY,OAAS,EAAG,CAErDiZ,EAAQ,eAAQ/L,IAAa,eAAQC,IAAaD,EAASlN,SAAWmN,EAASnN,OAE/E,IAAK,IAAIF,EAAI,EAAGmZ,GAASnZ,EAAIoN,EAASlN,OAAQF,IAE5CmZ,EAAQ,eAAW,GAAY/L,EAASpN,IAAK,GAAYqN,EAASrN,KAIjEmZ,GACHnQ,KAAK2O,iBAGTW,WAAY,SAAoBlL,GAC9BpE,KAAK2O,gBACL3O,KAAKoQ,qBAAqBhM,IAE5BiL,WAAY,WACVrP,KAAK2O,iBAEPiB,sBAAuB,SAA+BxL,GACpDpE,KAAK2O,gBACL3O,KAAKoQ,sBAAsBhM,IAE7BqL,aAAc,SAAsBY,EAAehM,GACjD,IAAIwG,EAAQ7K,KAEZ,GAAIA,KAAK2P,eAAiB,eAAWU,EAAehM,GAAW,CAC7D,IAAIwB,EAAQ,GAEZwK,EAAcrV,SAAQ,SAAUqL,EAAGiK,GAC7BjK,GACFR,EAAMvN,KAAKuS,EAAM/E,cAAcwK,OAInCtQ,KAAKsE,MAAM,OAAyBuB,MAI1C0K,YAAa,WAEPvQ,KAAK2P,cACP3P,KAAKoQ,sBAAqB,IAG9BvQ,QAAS,CAEP2Q,UAAW,SAAmBC,GAE5B,GAAIzQ,KAAK2P,cAAgB,eAASc,IAAUA,GAAS,GAAKA,EAAQzQ,KAAK8F,cAAc5O,SAAW8I,KAAK0Q,cAAcD,GAAQ,CACzH,IAAIhB,EAAezP,KAAKgQ,wBAA0BhQ,KAAKyP,aAAapH,QAAU,GAC9EoH,EAAagB,IAAS,EACtBzQ,KAAK2Q,qBAAuB,EAC5B3Q,KAAKyP,aAAeA,IAGxBmB,YAAa,SAAqBH,GAEhC,GAAIzQ,KAAK2P,cAAgB,eAASc,IAAUzQ,KAAK0Q,cAAcD,GAAQ,CACrE,IAAIhB,EAAezP,KAAKyP,aAAapH,QACrCoH,EAAagB,IAAS,EACtBzQ,KAAK2Q,qBAAuB,EAC5B3Q,KAAKyP,aAAeA,IAGxBoB,cAAe,WACb,IAAI3Z,EAAS8I,KAAK8F,cAAc5O,OAE5B8I,KAAK2P,cAAgBzY,EAAS,IAChC8I,KAAK2Q,qBAAuB,EAC5B3Q,KAAKyP,aAAezP,KAAKgQ,wBAA0B,eAAY9Y,GAAQ,GAAQ,EAAC,KAGpFwZ,cAAe,SAAuBD,GAEpC,SAAU,eAASA,KAAUzQ,KAAKyP,aAAagB,KAEjD9B,cAAe,WAEb3O,KAAK2Q,qBAAuB,EAC5B3Q,KAAKyP,aAAe,IAGtBqB,qBAAsB,SAA8BL,GAClD,GAAIzQ,KAAK2P,cAAgB3P,KAAK0Q,cAAcD,GAAQ,CAClD,IAAIpQ,EAAUL,KAAKuP,gBACnB,OAAO,GAAgB,CACrB,wBAAwB,GACvB,GAAGxV,OAAOiG,KAAK+Q,KAAO,KAAO,QAAS,KAAKhX,OAAOsG,GAAUA,GAGjE,MAAO,IAET2Q,mBAAoB,SAA4BP,GAC9C,MAAO,CACL,gBAAkBzQ,KAAK2P,aAAsB3P,KAAK0Q,cAAcD,GAAS,OAAS,QAA5C,OAG1CL,qBAAsB,SAA8BjO,GAClD,IAAI8O,EAAS9O,IAAOnC,KAAKoP,gBAAkB,MAAQ,OAEnDpP,KAAKiR,GAAQ,OAAwBjR,KAAKkR,kBAE1ClR,KAAKiR,GAAQ,OAAqBjR,KAAK2O,eACvC3O,KAAKiR,GAAQ,OAA4BjR,KAAK2O,gBAEhDuC,iBAAkB,SAA0B3F,EAAMkF,EAAOjM,GAEvD,GAAKxE,KAAK2P,eAAgB3P,KAAKoP,gBAA/B,CAMA,IAAIC,EAAarP,KAAKqP,WAClBK,EAAkB1P,KAAK0P,gBACvBD,EAAezP,KAAKyP,aAAapH,QACjC8I,GAAY1B,EAAagB,GAE7B,GAAmB,WAAfpB,EACFI,EAAe,QACV,GAAmB,UAAfJ,EACT,GAAIK,GAAmB,GAAKlL,EAAM4M,SAAU,CAE1C,IAAK,IAAId,EAAM,OAAA9C,GAAA,MAAQkC,EAAiBe,GAAQH,GAAO,OAAA9C,GAAA,MAAQkC,EAAiBe,GAAQH,IACtFb,EAAaa,IAAO,EAGtBa,GAAW,OAEL3M,EAAM6M,SAAW7M,EAAM8M,UAE3B7B,EAAe,GACf0B,GAAW,GAGbnR,KAAK0P,gBAAkByB,EAAWV,GAAS,EAI/ChB,EAAagB,GAASU,EACtBnR,KAAKyP,aAAeA,OA/BlBzP,KAAK2O,oBExKF4C,GAAa,SAAoBhK,EAAOiK,GAKjD,OAAOjK,EAAMpB,KAAI,SAAUsL,EAAGhB,GAC5B,MAAO,CAACA,EAAOgB,MACdvL,KAAK,SAAUuL,EAAGC,GACnB,OAAO1R,KAAKyR,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,IACpChW,KAAK8V,IAAYrL,KAAI,SAAU4I,GAC/B,OAAOA,EAAE,O,aCtBT,GAAiB,SAAwBxT,GAC3C,OAAI,eAAkBA,GACb,GAGL,eAAUA,GACL,eAAQA,EAAOA,GAGjBA,GAYE,GAAqB,SAA4BkW,EAAGC,GAC7D,IAAIhY,EAAOoB,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAC3E6W,EAAcjY,EAAKyT,OACnBA,OAAyB,IAAhBwE,EAAyB,KAAOA,EACzCC,EAAiBlY,EAAK2N,UACtBA,OAA+B,IAAnBuK,EAA4B,KAAOA,EAC/CC,EAAcnY,EAAKoY,OACnBA,OAAyB,IAAhBD,OAAyB5K,EAAY4K,EAC9CE,EAAqBrY,EAAKsY,cAC1BA,OAAuC,IAAvBD,EAAgC,GAAKA,EACrDE,EAAgBvY,EAAKwY,SACrBA,OAA6B,IAAlBD,GAAmCA,EAG9CE,EAAK,OAAAC,GAAA,MAAIX,EAAGtE,EAAQ,MACpBkF,EAAK,OAAAD,GAAA,MAAIV,EAAGvE,EAAQ,MAaxB,OAXI,eAAW9F,KACb8K,EAAK9K,EAAU8K,EAAIhF,EAAQsE,GAC3BY,EAAKhL,EAAUgL,EAAIlF,EAAQuE,IAM7BS,EAAK,GAAeA,GACpBE,EAAK,GAAeA,GAEhB,eAAOF,IAAO,eAAOE,IAAO,eAASF,IAAO,eAASE,GAGhDF,EAAKE,GAAM,EAAIF,EAAKE,EAAK,EAAI,EAC3BH,GAAmB,KAAPC,GAAoB,KAAPE,EAE3B,EACEH,GAAmB,KAAPC,GAAoB,KAAPE,GAE1B,EAIH,GAAsBF,GAAIG,cAAc,GAAsBD,GAAKP,EAAQE,IFjEpF,SAAS,GAAQ/X,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAY3M,IAAIiX,GAA0B,SAC1BC,GAA2B,OAA0BD,GACrDE,GAA4B,WAC5BC,GAA6B,OAA0BD,GACvDE,GAAqB,MACrBC,GAAsB,OACtBC,GAAsB,OACtBC,GAAkB,CAACH,GAAoBC,GAAqBC,IAErD,IAAS5D,GAAS,CAC3B8D,aAAc,eAAS,OAAkB,2BACzCC,eAAgB,eAAS,OAAkB,0BAC3CC,cAAe,eAAS,OAAkB,4BAC1CC,gBAAiB,eAAS,QAAmB,GAC7CC,eAAgB,eAAS,QAAmB,GAK5CC,YAAa,eAAS,QAAmB,IACxC,GAAgBnE,GAAQsD,GAAyB,eAAS,SAAoB,GAAgBtD,GAAQ,cAAe,eAAS,SAAsB,GAAgBA,GAAQ,oBAAqB,eAAS,SAA0B,GAAgBA,GAAQ,qBAAsB,eAAS,OAAkB,CAC9SoE,SAAS,KACN,GAAgBpE,GAAQwD,GAA2B,eAAS,QAAmB,IAAS,GAAgBxD,GAAQ,gBAAiB,eAAS,OAAkB0D,IAAoB,SAAUpX,GAC7L,OAAO,OAAAgM,EAAA,MAAcuL,GAAiBvX,OACnC,GAAgB0T,GAAQ,eAAgB,eAAS,QAAmB,IAAS,GAAgBA,GAAQ,eAAgB,eAAS,QAAmB,IAASA,IAGpJqE,GAAe,aAAIta,OAAO,CACnCC,MAAO,GACPU,KAAM,WACJ,MAAO,CACLyT,YAAapN,KAAKuS,KAA4B,GAC9CjF,cAAetN,KAAKyS,MAA8B,IAGtD1R,SAAU,CACRwS,aAAc,WACZ,OAAOvT,KAAK8J,cAAgB9J,KAAKkO,mBAAqBlO,KAAKmT,gBAE7DK,WAAY,WACV,OAAOxT,KAAKyC,eAAesN,MAAK,SAAU9D,GACxC,OAAOA,EAAEwH,aAKbxG,YAAa,WACX,IAAIE,EAASnN,KAAKoN,YACdC,EAAWrN,KAAKsN,cAChBwE,EAAS9R,KAAK0T,kBACdxB,EAAWlS,KAAK2T,aAChBC,EAAc5T,KAAK4T,YACnBL,EAAevT,KAAKuT,aACpB1N,GAAS7F,KAAKiK,eAAiBjK,KAAKkK,YAAc,IAAI7B,QAEtD2J,EAAgB,GAAc,GAAc,GAAIhS,KAAK6T,oBAAqB,GAAI,CAChFC,MAAO,SAGT,GAAI3G,GAAUoG,EAAc,CAC1B,IAAIpM,EAAQnH,KAAK8L,kBAAkBqB,IAAW,GAC1C4G,EAAkB5M,EAAM4M,gBACxB1M,EAAY,eAAW0M,GAE3BA,EAAkBA,EAAkB/T,KAAK4N,kBAAkBT,QAAUlG,EAErE,OAAOsK,GAAW1L,GAAO,SAAU4L,EAAGC,GACpC,IAAI/K,EAAS,KAsBb,OApBI,eAAWiN,KAIbjN,EAASiN,EAAYnC,EAAGC,EAAGvE,EAAQE,EAAUhG,EAAW2K,EAAeF,KAKrE,eAAkBnL,KAAsB,IAAXA,KAC/BA,EAAS,GAAmB8K,EAAGC,EAAG,CAChCvE,OAAQA,EACR9F,UAAWA,EACXyK,OAAQA,EACRE,cAAeA,EACfE,SAAUA,MAKNvL,GAAU,IAAM0G,GAAY,EAAI,MAI5C,OAAOxH,IAGX1B,OAAQ+K,GAAS,CAEfsE,WAAY,SAAoBpP,GAC1BA,EACEpE,KAAKwT,YACPxT,KAAK0O,IAAI,OAAyB1O,KAAKgU,YAGzChU,KAAKyO,KAAK,OAAyBzO,KAAKgU,cAG3C,GAAgB9E,GAAQuD,IAA2B,SAAUrO,GAE1DA,IAAapE,KAAKsN,gBAItBtN,KAAKsN,cAAgBlJ,IAAY,MAC/B,GAAgB8K,GAAQqD,IAAyB,SAAUnO,GAEzDA,IAAapE,KAAKoN,cAItBpN,KAAKoN,YAAchJ,GAAY,OAC7B,GAAgB8K,GAAQ,iBAAiB,SAAuB9K,EAAUC,GAExED,IAAaC,GACfrE,KAAKsE,MAAMoO,GAA4BtO,MAEvC,GAAgB8K,GAAQ,eAAe,SAAqB9K,EAAUC,GACpED,IAAaC,GACfrE,KAAKsE,MAAMkO,GAA0BpO,MAErC8K,IACJlE,QAAS,WACHhL,KAAKwT,YACPxT,KAAK0O,IAAI,OAAyB1O,KAAKgU,aAG3CnU,QAAS,CAGPmU,WAAY,SAAoB/Y,EAAKkM,EAAO3C,EAAOyP,GACjD,IAAIpJ,EAAQ7K,KAEZ,GAAKA,KAAKwT,cAKNS,IAAUjU,KAAKkT,iBAAnB,CAMA,IAAIgB,GAAc,EAEdC,EAAsB,WACxB,IAAIC,EAAgBjN,EAAMiN,eAAiBvJ,EAAMuJ,cAE7CA,IAAkBzB,GACpB9H,EAAMyC,eAAgB,EACb8G,IAAkBxB,KAC3B/H,EAAMyC,eAAgB,IAM1B,GAAInG,EAAMsM,SAAU,CAClB,IAAIY,GAAWrU,KAAKuT,cAAgBpM,EAAMkN,QAAUlN,EAAMkN,QAAUpZ,EAEhE+E,KAAKoN,cAAgBiH,EAEvBrU,KAAKsN,eAAiBtN,KAAKsN,eAG3BtN,KAAKoN,YAAciH,EAEnBF,KAGFD,GAAc,OACLlU,KAAKoN,cAAgBpN,KAAKoT,cACnCpT,KAAKoN,YAAc,GACnB+G,IACAD,GAAc,GAGZA,GAEFlU,KAAKsE,MAAM,OAAyBtE,KAAKkN,WAI7CoH,mBAAoB,SAA4BrZ,EAAKkM,EAAO8M,GAC1D,MAAO,CAEL,yBAA0B9M,EAAMsM,UAAYzT,KAAKuU,gBAAkBN,GAAUjU,KAAKkT,mBAGtFsB,iBAAkB,SAA0BvZ,EAAKkM,EAAO8M,GACtD,IAAKjU,KAAKwT,YAAcS,GAAUjU,KAAKkT,gBAErC,MAAO,GAGT,IAAIO,EAAWtM,EAAMsM,SAEjBgB,EAAWhB,GAAYzT,KAAKoN,cAAgBnS,EAAM+E,KAAKsN,cAAgB,aAAe,YAAcmG,EAAW,OAAS,KAE5H,MAAO,CACL,YAAagB,IAGjBC,iBAAkB,SAA0BzZ,EAAKkM,EAAO8M,GAEtD,IAAKjU,KAAKwT,YAAcS,GAAUjU,KAAKkT,gBAErC,OAAO,KAGT,IAAIO,EAAWtM,EAAMsM,SAEjBkB,EAAe,GAEnB,GAAIlB,EACF,GAAIzT,KAAKoN,cAAgBnS,EAEvB0Z,EAAe3U,KAAKsN,cAAgBtN,KAAK+S,aAAe/S,KAAKiT,kBACxD,CAIL0B,EAAe3U,KAAKsN,cAAgBtN,KAAKiT,cAAgBjT,KAAK+S,aAE9D,IAAIqB,EAAgBpU,KAAKoU,eAAiBjN,EAAMiN,cAE5CA,IAAkBzB,GACpBgC,EAAe3U,KAAK+S,aACXqB,IAAkBxB,KAC3B+B,EAAe3U,KAAKiT,oBAGdjT,KAAKoT,cAEfuB,EAAe3U,KAAKoN,YAAcpN,KAAKgT,eAAiB,IAI1D,OAAO,eAAK2B,IAAiB,SG1QnC,SAAS,GAAgBrZ,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAMpM,IAAI,GAAQ,CACjBoH,QAAS,eAAS,QAA0B,IAInCkS,GAAe,aAAI5b,OAAO,CACnCC,MAAO,GACP8H,SAAU,CACRQ,UAAW,WACT,IAAImB,EAAU1C,KAAK0C,QAEnB,MAAmB,KAAZA,GAAwBA,GAEjCmS,gBAAiB,WACf,OAA0B,IAAnB7U,KAAKuB,WAEduT,oBAAqB,WACnB,IAAID,EAAkB7U,KAAK6U,gBAC3B,OAAO,GAAgB,CACrB,kBAAmBA,GAClB,mBAAmB9a,OAAOiG,KAAK0C,UAAWmS,GAAmB7U,KAAKuB,eC1B3E,SAAS,GAAQtH,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAYpM,IAAI,GAAQ,CACjByZ,SAAU,eAAS,QAAmB,GACtCC,WAAY,eAAS,QAAmB,GACxCC,WAAY,eAAS,QAAmB,GACxClE,KAAM,eAAS,QAAmB,GAClCmE,MAAO,eAAS,QAAmB,GACnCC,MAAO,eAAS,QAAmB,GACnCC,iBAAkB,eAAS,QAAmB,GAC9CC,SAAU,eAAS,QAAmB,GACtCC,WAAY,eAAS,QAA0B,GAC/CC,MAAO,eAAS,QAAmB,GAEnCC,aAAc,eAAS,QAA0B,GACjDC,QAAS,eAAS,QAAmB,GACrCC,WAAY,eAAS,QACrB/T,aAAc,eAAS,SAIdgU,GAAqB,aAAI3c,OAAO,CACzCuH,OAAQ,CAACrC,EAAA,MACTuC,QAAS,WACP,MAAO,CACLmV,QAAS5V,OAKbc,cAAc,EACd7H,MAAO,GACP8H,SAAU,CAERS,aAAc,WACZ,IAAI8T,EAAatV,KAAKsV,WAEtB,OADAA,EAA4B,KAAfA,GAA2BA,GACjCtV,KAAKuB,WAAoB+T,GAElC7T,eAAgB,WACd,IAAI+T,EAAexV,KAAKwV,aAExB,OADAA,EAAgC,KAAjBA,GAA6BA,GACrCxV,KAAKuB,WAAoBiU,GAElCK,eAAgB,WACd,IAAIrU,EAAexB,KAAKwB,aACxB,MAAO,CAACxB,KAAKyB,eAAiB,wBAA0B,IAAqB,IAAjBD,EAAwB,mBAAqBA,EAAe,oBAAoBzH,OAAOiG,KAAKsV,YAAc,IAAI/a,OAAOiP,EAAA,OAEnLsM,cAAe,WACb,IAAIrU,EAAiBzB,KAAKyB,eAC1B,OAAOA,IAAmB,eAAUA,GAAkB,CACpDsU,UAAWtU,GACT,IAENuU,aAAc,WACZ,IAAIb,EAAQnV,KAAKmV,MACbxT,EAAe3B,KAAK2B,aAExB,OADAwT,EAAQnV,KAAKiW,cAAgBd,EAAQA,GAASnV,KAAK8F,cAAc5O,OAAS,IAAM8I,KAAKkE,aAC9E,CACPlE,KAAK0V,WACL,CACE,gBAAiB1V,KAAKyV,QACtB,cAAeN,EACf,aAAcnV,KAAK+Q,KACnB,iBAAkB/Q,KAAK+U,SACvB,mBAAoB/U,KAAKgV,WACzB,WAAYhV,KAAKuV,MAEjBW,OAAQlW,KAAKqV,SACb,gBAAiBrV,KAAKkV,MACtB,sBAAuBlV,KAAKiV,WAC5B,6BAA8BjV,KAAKoV,kBAClCzT,EAAe,GAAG5H,OAAOiG,KAAK+Q,KAAO,KAAO,QAAS,KAAKhX,OAAO4H,GAAgB,GACpF3B,KAAK8U,oBACL9U,KAAKiQ,yBAEPkG,WAAY,WACV,IAAItQ,EAAQ7F,KAAK8F,cACbmE,EAAgBjK,KAAKiK,cACrBzH,EAASxC,KAAKyC,eACdyN,EAAuBlQ,KAAKkQ,qBAE5BkG,EAAM,EAAEpW,KAAKkC,SAAW,IAAI,oBAAqBlC,KAAK6E,WAAWtK,OAAOiP,EAAA,MAAUjR,KAAK,MAAQ,KAC/F8d,EAAYrW,KAAKiW,cAAgB,GAAK,CACxC,YAAajW,KAAKkE,aAAe,OAAS,QAC1C,gBAAiB,eAAS1B,EAAOtL,QACjC,mBAAoBkf,GAElBE,EAAWzQ,GAASoE,GAAiBA,EAAc/S,OAAS2O,EAAM3O,OAAS,eAAS+S,EAAc/S,QAAU,KAChH,OAAO,GAAc,GAAc,GAAc,CAG/C,gBAAiBof,GAChBtW,KAAKkC,SAAU,GAAI,CAEpBgD,GAAIlF,KAAK8E,SACT7C,KAAM,SACLoU,GAAYnG,KAGnB1W,OAAQ,SAAgBC,GACtB,IAAIoc,EAAiB7V,KAAK6V,eACtB9Q,EAAgB/E,KAAK+E,cACrBK,EAAiBpF,KAAKoF,eACtBmR,EAAcvW,KAAKuW,YACnBC,EAAcxW,KAAKwW,YACnBC,EAAczW,KAAKyW,YACnBhX,EAAW,GAEXO,KAAKiW,cACPxW,EAASnH,KAAK0H,KAAKqC,kBAGnB5C,EAASnH,KAAKyM,EAAgBA,IAAkB,MAEhDtF,EAASnH,KAAK8M,EAAiBA,IAAmB,MAElD3F,EAASnH,KAAKie,EAAcA,IAAgB,MAE5C9W,EAASnH,KAAKke,EAAcA,IAAgB,MAE5C/W,EAASnH,KAAKme,EAAcA,IAAgB,OAI9C,IAAIC,EAASjd,EAAE,QAAS,CACtBI,YAAa,gBACbC,MAAOkG,KAAKgW,aACZ9X,MAAO8B,KAAKmW,WACZlb,IAAK,WACJwE,EAASlF,OAAOiP,EAAA,OAEnB,OAAOqM,EAAe3e,OAAS,EAAIuC,EAAE,MAAO,CAC1CK,MAAO+b,EACPc,MAAO3W,KAAK8V,cACZ7a,IAAK,QACJ,CAACyb,IAAWA,K,aCtJnB,SAAS,GAAQzc,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAI,GAAQ,eAAsB,CACvCsb,wBAAyB,eAAS,QAClCC,qBAAsB,eAAS,SAC9B,SAMQC,GAAsB,aAAI9d,OAAO,CAC1CM,KAAM,QACNiH,OAAQ,CAACrC,EAAA,KAAYsC,EAAA,KAAgB,QACrCC,QAAS,WACP,MAAO,CACLG,gBAAiBZ,OAGrBW,OAAQ,CAENiV,QAAS,CACP/U,QAEA,WACE,MAAO,MAIbC,cAAc,EACd7H,MAAO,GACP8H,SAAU,CAERE,QAAS,WACP,OAAO,GAGTK,OAAQ,WACN,OAAOtB,KAAK4V,QAAQ7E,MAGtBxP,UAAW,WACT,OAAOvB,KAAK4V,QAAQrU,WAGtBC,aAAc,WACZ,OAAOxB,KAAK4V,QAAQpU,cAItBC,eAAgB,WACd,OAAO,GAKTC,gBAAiB,WACf,OAAQ1B,KAAKuB,WAAavB,KAAK4V,QAAQJ,cAGzC7T,aAAc,WACZ,OAAO3B,KAAK4V,QAAQjU,cAEtBoV,kBAAmB,WACjB,OAAO/W,KAAK6W,sBAAwB7W,KAAK4W,yBAE3CI,WAAY,WACV,OAAO,GAAc,CACnB/U,KAAM,YACLjC,KAAKkC,UAEV+U,WAAY,WACV,IAAIJ,EAAuB7W,KAAK6W,qBAChC,OAAOA,EAAuB,GAAc,GAAc,GAAIA,GAAuB,GAAI,CACvF/d,IAAK,UACF,KAGTU,OAAQ,SAAgBC,GACtB,IAAIE,EAAO,CACTV,MAAO+G,KAAKiX,WACZ/Y,MAAO8B,KAAKgX,YAYd,OATIhX,KAAK+W,mBAEPpd,EAAKwI,GAAKnC,KAAK4W,yBAA2B,GAC1Cjd,EAAKud,SAAWlX,KAAKoC,aAGrBzI,EAAKwI,GAAKnC,KAAKoC,YAGV3I,EAAEuG,KAAK+W,kBAAoB,mBAAqB,QAASpd,EAAMqG,KAAKqC,oBCvG3E8U,GAAkB,CAAC,KAAM,KAAM,MAGxB,GAAc,SAAqB3S,GAE5C,IAAKA,IAAUA,EAAM3J,OAEnB,OAAO,EAGT,IAAIuc,EAAK5S,EAAM3J,OAEf,GAAIuc,EAAGC,WAAqD,IAAzCF,GAAgB3f,QAAQ4f,EAAGE,SAC5C,OAAO,EAIT,GAAI,eAAQ,iBAAkBF,GAC5B,OAAO,EAGT,IAAIrL,EAAuB,UAAfqL,EAAGE,QAAsBF,EAAK,eAAQ,QAASA,GAI3D,GAAIrL,EAAO,CACT,IAAIwL,EAAW,eAAQxL,EAAO,OAC1ByL,EAAQD,EAAW,eAAQA,GAAY,eAAO,0BAA2BxL,GAE7E,GAAIyL,IAAUA,EAAMH,SAClB,OAAO,EAOX,OAAO,eAAQD,EAAIxQ,KCjCV,GAAsB,WAC/B,IAAIwQ,EAAKtc,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK2c,SACzEC,EAAM,iBACV,SAAOA,GAAiC,KAA1BA,EAAIvP,WAAWwP,QAAiBD,EAAIE,cAAgB,eAAUR,KAE5EM,EAAIE,aAAaR,GAAI,ICNZ,GAAQ,eAAsB,EAAU,SAMxCS,GAAmB,aAAI7e,OAAO,CACvCM,KAAM,QACNwe,QAAS1U,EACTnK,MAAO,GACP8H,SAAU,CACRjI,IAAK,WACH,MAAO,SCjBb,SAAS,GAAQmB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS,GAAmBzD,GAAO,OAAO,GAAmBA,IAAQ,GAAiBA,IAAQ,GAA4BA,IAAQ,KAElI,SAAS,KAAuB,MAAM,IAAIgQ,UAAU,wIAEpD,SAAS,GAA4BC,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGC,GAAS,IAAIE,EAAI7N,OAAO8N,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYhP,MAAgB,QAAN2O,GAAqB,QAANA,EAAoBnR,MAAMyR,KAAKT,GAAc,cAANG,GAAqB,2CAA2CO,KAAKP,GAAW,GAAkBH,EAAGC,QAAzG,GAE7S,SAAS,GAAiBU,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYvO,OAAOqO,GAAO,OAAO3R,MAAMyR,KAAKE,GAE1H,SAAS,GAAmB5Q,GAAO,GAAIf,MAAM8R,QAAQ/Q,GAAM,OAAO,GAAkBA,GAEpF,SAAS,GAAkBA,EAAKZ,IAAkB,MAAPA,GAAeA,EAAMY,EAAIX,UAAQD,EAAMY,EAAIX,QAAQ,IAAK,IAAIF,EAAI,EAAG6R,EAAO,IAAI/R,MAAMG,GAAMD,EAAIC,EAAKD,IAAO6R,EAAK7R,GAAKa,EAAIb,GAAM,OAAO6R,EAezK,IAAI,GAAQ,CACjBkP,eAAgB,eAAS,QACzBnV,YAAa,eAAS,QACtBD,aAAc,eAAS,GAAG5I,OAAO,GAAmB,QAAgC,CAAC,WAI5Eie,GAAgB,aAAIhf,OAAO,CACpCC,MAAO,GACP4G,QAAS,CAEPoY,YAAa,SAAqB1M,EAAMtQ,EAAKid,EAAS5L,GACpD,IAAIS,EAAU/M,KAAK+M,QAEnB,GAAImL,EAAS,CACX,IAAI3c,EAAQ,OAAA6W,GAAA,MAAI7G,EAAMtQ,EAAK,IAE3B,OAAI,eAAWid,GACNA,EAAQ3c,EAAON,EAAKsQ,GAClB,eAAS2M,IAAY,eAAWnL,EAAQmL,IAC1CnL,EAAQmL,GAAS3c,EAAON,EAAKsQ,GAG/B2M,EAGT,OAAO5L,GAET6L,YAAa,SAAqB5M,EAAMtQ,EAAKmd,EAAS/L,EAAMC,GAC1D,IAAIS,EAAU/M,KAAK+M,QAEnB,GAAIqL,EAAS,CACX,IAAI7c,EAAQ,OAAA6W,GAAA,MAAI7G,EAAMtQ,EAAK,IAE3B,OAAI,eAAWmd,GACNA,EAAQ7c,EAAON,EAAKsQ,EAAMc,GACxB,eAAS+L,IAAY,eAAWrL,EAAQqL,IAC1CrL,EAAQqL,GAAS7c,EAAON,EAAKsQ,EAAMc,GAGrC+L,EAGT,OAAO9L,GAGT+L,kBAAmB,SAA2B9M,EAAMpE,GAClD,IAAIlM,EAAMkM,EAAMlM,IACZoM,EAAYrH,KAAK4N,kBAAkB3S,GACnCM,EAAQ,OAAA6W,GAAA,MAAI7G,EAAMtQ,EAAK,MAM3B,OAJI,eAAWoM,KACb9L,EAAQ8L,EAAU9L,EAAON,EAAKsQ,IAGzB,eAAkBhQ,GAAS,GAAKA,GAGzC+c,qBAAsB,SAA8BC,EAAgBhN,GAClE,IAAIV,EAAQ7K,KAGZ,OAAO,WACDuY,GACF1N,EAAM2N,KAAKjN,EAAM/E,IAAyB+E,EAAK/E,OAKrDiS,WAAY,SAAoBjU,GAGzBxE,KAAK0Y,mBAAmBlU,IAE3BxE,KAAK2Y,kBAAkB,OAAwBnU,IAGnDoU,aAAc,SAAsBpU,GAG7BxE,KAAK0Y,mBAAmBlU,IAE3BxE,KAAK2Y,kBAAkB,OAA0BnU,IAIrDqU,mBAAoB,SAA4B1R,EAAO2R,EAAUvN,EAAMwN,GACrE,IAAI9N,EAASjL,KAETuB,EAAYvB,KAAKuB,UACjBtG,EAAMkM,EAAMlM,IACZ8Q,EAAQ5E,EAAM4E,MACdiN,EAAc7R,EAAM6R,YACpBvf,EAAIuG,KAAK6C,eACT0V,EAAiBvY,KAAK8C,kBAAkB,QACxCmW,EAAYjZ,KAAKqY,kBAAkB9M,EAAMpE,GACzChE,GAAgB5B,IAAcvB,KAAKwB,cAAgBxB,KAAKwV,eAAiBrO,EAAMhE,aAI/E+V,EAAU/V,EAAe6V,EAAcnB,GAAMzU,EAAM4V,EAAc,KAAO,KACxEG,EAAc5N,EAAKjF,KAA2BiF,EAAKjF,IAAwBrL,GAAOsQ,EAAKjF,IAAwBrL,GAAOkM,EAAM9G,SAAW,KACvI1G,EAAO,CAKTG,MAAO,CAACqN,EAAMrN,MAAQqN,EAAMrN,MAAQ,GAAIkG,KAAKiY,YAAY1M,EAAMtQ,EAAKkM,EAAMiS,QAAS,KACnFngB,MAAO,GACPiF,MAAO,GAAc,CACnB,gBAAiB8K,OAAO8P,EAAW,IAClCE,EAAchZ,KAAKmY,YAAY5M,EAAMtQ,EAAKkM,EAAMkS,OAAQ,MAAO,IAAMrZ,KAAKiY,YAAY1M,EAAMtQ,EAAKkM,EAAMmS,OAAQ,KAClHre,IAAK,OAAOlB,OAAOgf,EAAU,UAAUhf,OAAO+e,EAAU,KAAK/e,OAAOkB,IAGlEkI,EAEFxJ,EAAKV,MAAQ,CACXiK,eAAgB3B,EAAYwK,EAAQ,KACpC5I,cAAc,EACd9C,QAAS8Y,IAKXxf,EAAKuE,MAAM,cAAgBqD,IAAc,eAAkBwK,GAAS,eAASA,GAAS,KACtFpS,EAAKuE,MAAM+D,KAAO+W,EAAc,YAAc,OAC9Crf,EAAKuE,MAAM2F,MAAQmV,EAAc,MAAQ,KAErCG,GACFxf,EAAKG,MAAMxB,KAAK,GAAGyB,OAAOiG,KAAK+Q,KAAO,KAAO,QAAS,KAAKhX,OAAOof,KAItE,IAAIha,EAAY,CACdoM,KAAMA,EACNkF,MAAOsI,EACP5R,MAAOA,EACPoS,YAAa,OAAAnH,GAAA,MAAI7G,EAAMtQ,EAAK,IAC5BM,MAAO0d,EACPO,cAAexZ,KAAKsY,qBAAqBC,EAAgBhN,GACzDkO,eAAgBtO,QAAQI,EAAK/E,MAI3BxG,KAAK6P,yBACP1Q,EAAUua,YAAc1Z,KAAK0Q,cAAcqI,GAE3C5Z,EAAUqR,UAAY,WACpB,OAAOvF,EAAOuF,UAAUuI,IAG1B5Z,EAAUyR,YAAc,WACtB,OAAO3F,EAAO2F,YAAYmI,KAY9B,IAAIY,EAAW3Z,KAAK4Z,yBAAyB3e,GACzC4e,EAAcF,EAAW3Z,KAAKqC,cAAcsX,EAAUxa,GAAa,eAAS8Z,GAQhF,OANIjZ,KAAKuB,YAEPsY,EAAc,CAACpgB,EAAE,MAAO,CAACogB,MAIpBpgB,EAAEyf,EAASvf,EAAM,CAACkgB,KAG3BC,eAAgB,SAAwBvO,EAAMwN,GAC5C,IAAIvN,EAASxL,KAETwC,EAASxC,KAAKyC,eACdgT,EAAUzV,KAAKyV,QACf5I,EAAa7M,KAAK6M,WAClBY,EAAczN,KAAKyN,YACnBF,EAAUvN,KAAKuN,QACf5K,EAAe3C,KAAK2C,aACpBC,EAAc5C,KAAK4C,YACnBnJ,EAAIuG,KAAK6C,eACT0V,EAAiBvY,KAAK8C,kBAAkB,QACxCiX,EAAiBxO,EAAK/E,KAA2B+R,EACjDyB,EAAqBha,KAAKD,WAAW,SAA2BC,KAAK4P,sBAErEqK,EAAQ,GAIRC,EAAYH,EAAiB/Z,KAAK8E,OAAO,YAAY/K,OAAOgf,EAAU,MAAQ,KAE9EoB,EAAO3X,EAAO2D,KAAI,SAAUgB,EAAO2R,GACrC,OAAOtN,EAAOqN,mBAAmB1R,EAAO2R,EAAUvN,EAAMwN,MAGtDqB,EAAe,KAEf3M,GAAeF,GAAWA,EAAU,IACtC6M,EAAepR,QAAQyE,EAAc,GAAKF,EAAUwL,EAAW,IAOjE,IAAIsB,EAAkB,eAAS,OAAAjI,GAAA,MAAI7G,EAAMsB,KAAgB,KACrDyN,EAASD,GAAmB,eAAStB,GAGrCwB,EAAQF,EAAkBra,KAAK8E,OAAO,QAAQ/K,OAAOsgB,IAAoB,KAEzEG,EAAoBxa,KAAK8Q,qBAAuB9Q,KAAK8Q,qBAAqBiI,GAAY,GACtF0B,EAAkBza,KAAKgR,mBAAqBhR,KAAKgR,mBAAmB+H,GAAY,GAEhF2B,EAAgB,eAAW/X,GAAgBA,EAAa4I,EAAM,OAAS5I,EACvEgY,EAAc,eAAW/X,GAE7BA,EAAY2I,EAAM,OAAS3I,EA2B3B,GAzBAqX,EAAM3hB,KAAKmB,EAAE6G,EAAK,CAChBxG,MAAO,CAAC4gB,EAAeF,EAAmBT,EAAiB,sBAAwB,IACnF9gB,MAAO,CACLoH,QAASkL,EAAKhF,KAA0B,MAE1CrI,MAAO,GAAc,GAAc,CACjCgH,GAAIqV,GACHI,GAAc,GAAI,CAEnBC,SAAUZ,EAAqB,IAAM,KACrC,UAAWK,GAAmB,KAC9B,eAAgBH,EAChB,YAAaA,EACb,gBAAiBE,GAChBK,GACHtY,GAAI,CAEF0Y,WAAY7a,KAAKyY,WACjBqC,WAAY9a,KAAK4Y,cAEnB3d,IAAK,iBAAiBlB,OAAOugB,EAAQ,MACrCS,IAAK,YACLC,UAAU,GACTb,IAECJ,EAAgB,CAClB,IAAIkB,EAAe,CACjB1P,KAAMA,EACNkF,MAAOsI,EACPvW,OAAQA,EACRgX,cAAexZ,KAAKsY,qBAAqBC,EAAgBhN,IAIvDvL,KAAK6P,yBACPoL,EAAavB,YAAc1Z,KAAK0Q,cAAcqI,GAE9CkC,EAAazK,UAAY,WACvB,OAAOhF,EAAOgF,UAAUuI,IAG1BkC,EAAarK,YAAc,WACzB,OAAOpF,EAAOoF,YAAYmI,KAK9B,IAAImC,EAAWzhB,EAAE2J,EAAK,CACpBnK,MAAO,CACL+J,QAASR,EAAOtL,QAElB4C,MAAOkG,KAAK+X,gBACX,CAAC/X,KAAKqC,cAAc,OAAuB4Y,KAG1CxF,GACFwE,EAAM3hB,KACNmB,EAAE,KAAM,CACNI,YAAa,SACbqE,MAAO,CACL,cAAe,OACf+D,KAAM,gBAERhH,IAAK,6BAA6BlB,OAAOugB,MAK7C,IAAIa,EAAuB,eAAWnb,KAAK2C,cAE3C3C,KAAK2C,aAAa4I,EAAM,QAAyBvL,KAAK2C,aAClDyY,EAAqB,eAAWpb,KAAK4C,aAEzC5C,KAAK4C,YAAY2I,EAAM,QAAyBvL,KAAK4C,YACrDqX,EAAM3hB,KAAKmB,EAAE6G,EAAK,CAChBzG,YAAa,kBACbC,MAAO,CAACqhB,GACRliB,MAAO,CACLoH,QAASkL,EAAKhF,KAA0B,MAE1CrI,MAAO,GAAc,GAAc,GAAIkd,GAAqB,GAAI,CAE9DlW,GAAIgV,EACJU,SAAU,OAEZ3f,IAAK,sBAAsBlB,OAAOugB,IACjC,CAACY,UACK3C,IAET0B,EAAM3hB,KAAKmB,KAEPgc,GAEFwE,EAAM3hB,KAAKmB,MAKf,OAAOwgB,MCnWb,SAAS,GAAQhgB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAgB3M,IAAI+f,GAAkB,SAAyB9f,GAC7C,MAAO,QAAQxB,OAAOwB,GAAS,GAAI,MAI1B,GAAQ,eAAS,GAAc,GAAc,GAAc,GAAI,IAAc,IAAgB,GAAI,CAC1G+f,WAAY,eAAS,WAIZC,GAAa,aAAIviB,OAAO,CACjCuH,OAAQ,CAACyX,IACT/e,MAAO,GACPmS,cAAe,WACbpL,KAAK4Z,yBAA2B,MAElC/Z,QAAS,CAKP2b,YAAa,WACX,IAAIC,EAAQzb,KAAKyb,MACbC,EAAQD,EAAMC,MAAQD,EAAMC,MAAMC,KAAOF,EAAMC,MAAQ,KACvDE,GAAOH,EAAM,cAAgB,IAAItV,KAAI,SAAU0V,GACjD,OAAOA,EAAGF,KAAOE,KAEnB,OAAOH,GAASA,EAAM9hB,UAAY8hB,EAAM9hB,SAAS1C,OAAS,GAAK0kB,GAAOA,EAAI1kB,OAAS,EAAI,OAAAqQ,EAAA,MAAUmU,EAAM9hB,UAAUW,QAAO,SAAUshB,GAChI,OAAO,OAAAtU,EAAA,MAAcqU,EAAKC,MAG5B,IAIFC,gBAAiB,SAAyB1E,GAExC,IAAK,eAAUA,GACb,OAAQ,EAGV,IAAIyE,EAAoB,OAAfzE,EAAGE,QAAmBF,EAAK,eAAQ,KAAMA,GAAI,GACtD,OAAOyE,EAAK7b,KAAKwb,cAAchkB,QAAQqkB,IAAO,GAGhDlD,kBAAmB,SAA2BtM,EAAM7H,GAClD,GAAI6H,GAAQrM,KAAKF,YAAYuM,IAAS7H,GAASA,EAAM3J,OAAQ,CAC3D,IAAIke,EAAW/Y,KAAK8b,gBAAgBtX,EAAM3J,QAE1C,GAAIke,GAAY,EAAG,CAEjB,IAAIxN,EAAOvL,KAAK8F,cAAciT,GAC9B/Y,KAAKsE,MAAM+H,EAAMd,EAAMwN,EAAUvU,MAIvCkU,mBAAoB,SAA4BlU,GAC9C,OAAOxE,KAAKuE,YAAcvE,KAAKuE,WAAWC,IAG5CuX,kBAAmB,SAA2BvX,GAE5C,IAAI3J,EAAS2J,EAAM3J,OACfmhB,EAAUxX,EAAMwX,QAEpB,IAAIhc,KAAK0Y,mBAAmBlU,IAA6B,OAAnB3J,EAAOyc,SAAqB,eAAgBzc,IAA+B,IAApBA,EAAOohB,SAKpG,GAAI,OAAA1U,EAAA,MAAc,CAAC,QAAY,SAAayU,GAE1C,eAAUxX,GACVxE,KAAKkc,kBAAkB1X,QAClB,GAAI,OAAA+C,EAAA,MAAc,CAAC,QAAS,QAAW,QAAW,SAAWyU,GAAU,CAE5E,IAAIjD,EAAW/Y,KAAK8b,gBAAgBjhB,GAEpC,GAAIke,GAAY,EAAG,CACjB,eAAUvU,GACV,IAAIoX,EAAM5b,KAAKwb,cACXW,EAAQ3X,EAAM4M,SAEd4K,IAAY,SAAaG,GAASH,IAAY,QAEhD,eAAaJ,EAAI,IACRI,IAAY,SAAYG,GAASH,IAAY,QAEtD,eAAaJ,EAAIA,EAAI1kB,OAAS,IACrB8kB,IAAY,SAAWjD,EAAW,EAE3C,eAAa6C,EAAI7C,EAAW,IACnBiD,IAAY,SAAajD,EAAW6C,EAAI1kB,OAAS,GAE1D,eAAa0kB,EAAI7C,EAAW,OAKpCmD,kBAAmB,SAA2B1X,GAGxCxE,KAAK0Y,mBAAmBlU,IAAU,GAAYA,IAAU,GAAoBxE,KAAK2b,MAIrF3b,KAAK2Y,kBAAkB,OAAwBnU,IAEjD4X,gCAAiC,SAAyC5X,GACnExE,KAAK0Y,mBAAmBlU,IAA0B,IAAhBA,EAAM6X,OAC3Crc,KAAK2Y,kBAAkB,OAA+BnU,IAG1D8X,sBAAuB,SAA+B9X,GAC/CxE,KAAK0Y,mBAAmBlU,IAC3BxE,KAAK2Y,kBAAkB,OAA4BnU,IAGvD+X,qBAAsB,SAA8B/X,GAC7CxE,KAAK0Y,mBAAmBlU,IAAW,GAAYA,IAClDxE,KAAK2Y,kBAAkB,OAA2BnU,IAOtDgS,YAAa,WACX,IAAI3L,EAAQ7K,KAER6F,EAAQ7F,KAAK8F,cACbrB,EAAazE,KAAKyE,WAClB+X,EAAexc,KAAKwc,aACpB5W,EAAc5F,KAAK4F,YACnBrD,EAAkBvC,KAAKuC,gBACvB9I,EAAIuG,KAAK6C,eACTmX,EAAqBha,KAAKF,YAAY,SAA2BE,KAAK4P,sBAEtEqK,EAAQ,GAERwC,EAAQhY,EAAaA,IAAe,KAExC,GAAIgY,EAEFxC,EAAM3hB,KAAKmkB,OACN,CAML,IAAIC,EAAQ,GACRC,EAAkBtB,KACtBsB,EAAkB3c,KAAK8C,kBAAkB6Z,GAAmBA,EAAkB,KAC9E3c,KAAKyC,eAAezH,SAAQ,SAAUmM,GACpC,IAAIlM,EAAMkM,EAAMlM,IACZ0e,EAAW0B,GAAgBpgB,GAC3B2hB,EAAoBvB,GAAgBpgB,EAAI4hB,eAC5CH,EAAMzhB,GAAO4P,EAAM/H,kBAAkB6W,GAAYA,EAAW9O,EAAM/H,kBAAkB8Z,GAEpFA,EAAoBD,KAItB3c,KAAK4Z,yBAA2B8C,EAGhCzC,EAAM3hB,KAAKkkB,EAAeA,IAAiB/iB,KAE3CoM,EAAM7K,SAAQ,SAAUuQ,EAAMwN,GAE5BkB,EAAM3hB,KAAKuS,EAAMiP,eAAevO,EAAMwN,OAGxCkB,EAAM3hB,KAAKsN,EAAcA,IAAgBnM,KAGzCwgB,EAAM3hB,KAAKiK,EAAkBA,IAAoB9I,KAInD,IAAIqjB,EAAW,CACbC,SAAU/c,KAAKoc,gCAKfY,YAAahd,KAAKsc,sBAElBW,SAAUjd,KAAKuc,sBAIbvC,IACF8C,EAASI,MAAQld,KAAKkc,kBACtBY,EAASK,QAAUnd,KAAK+b,mBAI1B,IAAIqB,EAAS3jB,EAAEqd,GAAQ,CACrBhd,MAAOkG,KAAKsb,YAAc,KAC1BriB,MAAO,eAAW,GAAa+G,KAAKqd,QAGpClb,GAAI2a,EACJ/B,IAAK,SACJd,GAEH,OAAOmD,MCpOb,SAAS,GAAQnjB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAI,GAAQ,eAAsB,CAEvCuG,YAAa,eAAS,SACrB,SAMQyb,GAAsB,aAAItkB,OAAO,CAC1CM,KAAM,QACNiH,OAAQ,CAACrC,EAAA,KAAYsC,EAAA,KAAgB,QACrCC,QAAS,WACP,MAAO,CACLG,gBAAiBZ,OAGrBW,OAAQ,CAENiV,QAAS,CACP/U,QAEA,WACE,MAAO,MAIbC,cAAc,EACd7H,MAAO,GACP8H,SAAU,CAERM,QAAS,WACP,OAAO,GAGTC,OAAQ,WACN,OAAOtB,KAAK4V,QAAQ7E,MAGtBxP,UAAW,WACT,OAAOvB,KAAK4V,QAAQrU,WAGtBC,aAAc,WACZ,OAAOxB,KAAK4V,QAAQpU,cAItBC,eAAgB,WACd,OAAO,GAKTC,gBAAiB,WACf,OAAQ1B,KAAKuB,WAAavB,KAAK4V,QAAQJ,cAGzC7T,aAAc,WACZ,OAAO3B,KAAK4V,QAAQjU,cAEtB4b,aAAc,WACZ,MAAO,CAACvd,KAAK6B,YAAc,SAAS9H,OAAOiG,KAAK6B,aAAe,OAEjE2b,WAAY,WACV,OAAO,GAAc,GAAc,GAAIxd,KAAKkC,SAAU,GAAI,CACxDD,KAAM,eAIZzI,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,QAAS,CAChBK,MAAOkG,KAAKud,aACZrf,MAAO8B,KAAKwd,WAEZrb,GAAInC,KAAKoC,aACRpC,KAAKqC,oBCpFD,GAAQ,CACjBob,UAAW,eAAS,QAAmB,GAGvCC,eAAgB,eAAS,QAEzB7b,YAAa,eAAS,QACtB8b,WAAY,eAAS,QACrBC,aAAc,eAAS,SAIdC,GAAa,aAAI7kB,OAAO,CACjCC,MAAO,GACP4G,QAAS,CACPie,kBAAmB,WACjB,IAAIrkB,EAAIuG,KAAK6C,eAEb,OAAI7C,KAAK8C,kBAAkB,QAClBrJ,EAAE6jB,GAAQ,CACfxjB,MAAOkG,KAAK2d,YAAc,KAC1B1kB,MAAO,CACL4I,YAAa7B,KAAK6B,aAAe7B,KAAK4B,aAAe,MAEvD3G,IAAK,mBACJ+E,KAAKqC,cAAc,OAAuB,CAC3CwD,MAAO7F,KAAK8F,cAAcuC,QAC1B7F,OAAQxC,KAAKyC,eAAe4F,QAC5BtF,QAAS/C,KAAKyC,eAAevL,UAI1BuC,KAETgd,YAAa,WAEX,OAAOzW,KAAKyd,UAAYzd,KAAKuW,aAAY,GAAQvW,KAAK8d,wB,aC1C5D,SAAS,GAAQ7jB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAUpM,IAAI,GAAQ,eAAsB,CAGvCsG,YAAa,eAAS,SACrB,SAMQmc,GAAsB,aAAI/kB,OAAO,CAC1CM,KAAM,QACNiH,OAAQ,CAACrC,EAAA,KAAYsC,EAAA,KAAgB,QACrCC,QAAS,WACP,MAAO,CACLG,gBAAiBZ,OAGrBW,OAAQ,CAENiV,QAAS,CACP/U,QAEA,WACE,MAAO,MAIbC,cAAc,EACd7H,MAAO,GACP8H,SAAU,CAERI,QAAS,WACP,OAAO,GAGTG,OAAQ,WACN,OAAOtB,KAAK4V,QAAQ7E,MAGtBxP,UAAW,WACT,OAAOvB,KAAK4V,QAAQrU,WAGtBC,aAAc,WACZ,OAAOxB,KAAK4V,QAAQpU,cAMtBC,eAAgB,WACd,OAAQzB,KAAKuB,WAAavB,KAAK4V,QAAQJ,cAKzC9T,gBAAiB,WACf,OAAQ1B,KAAKuB,WAAavB,KAAK4V,QAAQJ,cAGzC7T,aAAc,WACZ,OAAO3B,KAAK4V,QAAQjU,cAEtBqc,aAAc,WACZ,MAAO,CAAChe,KAAK4B,YAAc,SAAS7H,OAAOiG,KAAK4B,aAAe,OAEjEqc,WAAY,WACV,OAAO,GAAc,CACnBhc,KAAM,YACLjC,KAAKkC,WAGZ1I,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,QAAS,CAChBK,MAAOkG,KAAKge,aACZ9f,MAAO8B,KAAKie,WAEZ9b,GAAInC,KAAKoC,aACRpC,KAAKqC,oBC7FZ,SAAS,GAAmBxK,GAAO,OAAO,GAAmBA,IAAQ,GAAiBA,IAAQ,GAA4BA,IAAQ,KAElI,SAAS,KAAuB,MAAM,IAAIgQ,UAAU,wIAEpD,SAAS,GAA4BC,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGC,GAAS,IAAIE,EAAI7N,OAAO8N,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYhP,MAAgB,QAAN2O,GAAqB,QAANA,EAAoBnR,MAAMyR,KAAKT,GAAc,cAANG,GAAqB,2CAA2CO,KAAKP,GAAW,GAAkBH,EAAGC,QAAzG,GAE7S,SAAS,GAAiBU,GAAQ,GAAsB,qBAAXC,QAA0BA,OAAOC,YAAYvO,OAAOqO,GAAO,OAAO3R,MAAMyR,KAAKE,GAE1H,SAAS,GAAmB5Q,GAAO,GAAIf,MAAM8R,QAAQ/Q,GAAM,OAAO,GAAkBA,GAEpF,SAAS,GAAkBA,EAAKZ,IAAkB,MAAPA,GAAeA,EAAMY,EAAIX,UAAQD,EAAMY,EAAIX,QAAQ,IAAK,IAAIF,EAAI,EAAG6R,EAAO,IAAI/R,MAAMG,GAAMD,EAAIC,EAAKD,IAAO6R,EAAK7R,GAAKa,EAAIb,GAAM,OAAO6R,EAEhL,SAAS,GAAQ5O,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAqB3M,IAAI4iB,GAAkB,SAAyB3iB,GAC7C,MAAO,QAAQxB,OAAOwB,GAAS,GAAI,MAGjC4iB,GAAkB,SAAyB5iB,GAC7C,MAAO,QAAQxB,OAAOwB,GAAS,GAAI,MAI1B,GAAQ,CAEjB6iB,eAAgB,eAAS,QAEzBxc,YAAa,eAAS,QACtByc,WAAY,eAAS,QACrBC,aAAc,eAAS,SAIdC,GAAa,aAAIvlB,OAAO,CACjCC,MAAO,GACP4G,QAAS,CACP2e,aAAc,SAAsBrX,GAElC,MAAO,CAACA,EAAMrN,MAAQqN,EAAMrN,MAAQ,GAAIqN,EAAMsX,QAAUtX,EAAMsX,QAAU,KAE1EC,YAAa,SAAqBla,EAAO2C,EAAO8M,GAC1CjU,KAAKuE,YAAcvE,KAAKuE,WAAWC,IAG5B,GAAYA,IAGZ,GAAoBxE,KAAK2b,OAOpC,eAAUnX,GACVxE,KAAKsE,MAAM,OAAyB6C,EAAMlM,IAAKkM,EAAO3C,EAAOyP,KAE/DsC,YAAa,WACX,IAAI1L,EAAQ7K,KAERiU,EAASnZ,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GACxE0H,EAASxC,KAAKyC,eACd+Q,EAAaxT,KAAKwT,WAClB7D,EAAe3P,KAAK2P,aACpB/N,EAAc5B,KAAK4B,YACnBC,EAAc7B,KAAK6B,YACnBuc,EAAiBpe,KAAKoe,eACtBV,EAAiB1d,KAAK0d,eACtBjkB,EAAIuG,KAAK6C,eAGb,GAAI7C,KAAK6U,iBAAqC,IAAlBrS,EAAOtL,OACjC,OAAOuC,IAGT,IAAIklB,EAAuBnL,GAAcxT,KAAKF,YAAY,QAEtD+Q,EAAgBlB,EAAe3P,KAAK6Q,cAAgB+N,GAAA,KACpDjQ,EAAgBgB,EAAe3P,KAAK2O,cAAgBiQ,GAAA,KAEpDC,EAAW,SAAkB1X,EAAO2R,GACtC,IAAI/M,EAAQ5E,EAAM4E,MACd+S,EAAY3X,EAAM2X,UAClBze,EAAU8G,EAAM9G,QAChB8C,EAAegE,EAAMhE,aACrBlI,EAAMkM,EAAMlM,IACZ8jB,EAAY,KAEX5X,EAAM4E,MAAM4L,QAAWxQ,EAAM6X,cAKhCD,EAAY,eAAU5X,EAAMlM,MAG9B,IAAIkH,EAAK,GAELwc,IACFxc,EAAG+a,MAAQ,SAAU1Y,GACnBqG,EAAM6T,YAAYla,EAAO2C,EAAO8M,IAGlC9R,EAAGgb,QAAU,SAAU3Y,GACrB,IAAIwX,EAAUxX,EAAMwX,QAEhBA,IAAY,SAAcA,IAAY,SACxCnR,EAAM6T,YAAYla,EAAO2C,EAAO8M,KAKtC,IAAIgL,EAAYzL,EAAa3I,EAAM2J,iBAAiBvZ,EAAKkM,EAAO8M,GAAU,GACtEiL,EAAY1L,EAAa3I,EAAMyJ,mBAAmBrZ,EAAKkM,EAAO8M,GAAU,KACxEkL,EAAY3L,EAAa3I,EAAM6J,iBAAiBzZ,EAAKkM,EAAO8M,GAAU,KACtEta,EAAO,CACTG,MAAO,CAAC+Q,EAAM2T,aAAarX,GAAQ+X,GACnCjmB,MAAO,CACLoH,QAASA,EACT8C,aAAcA,GAEhBwT,MAAOxP,EAAMiY,SAAW,GACxBlhB,MAAO,GAAc,GAAc,CAGjC0c,SAAU+D,GAAwBxX,EAAMsM,SAAW,IAAM,KACzD4L,KAAMlY,EAAMmY,YAAc,KAC1BnjB,MAAOgL,EAAM6X,aAAe,KAC5B,gBAAiBlG,EAAW,EAC5B,aAAciG,GACblU,EAAMsN,YAAY,KAAMld,EAAKkM,EAAMkS,OAAQpF,EAAS,OAAS,OAAQ,KAAMgL,GAC9E9c,GAAIA,EACJlH,IAAKA,GAOHskB,EAAY,CAACrB,GAAgBjjB,GAAMijB,GAAgBjjB,EAAI4hB,eAAgBqB,MAEvEjK,IACFsL,EAAY,CAACpB,GAAgBljB,GAAMkjB,GAAgBljB,EAAI4hB,eAAgBsB,MAAmBpkB,OAAO,GAAmBwlB,KAGtH,IAAI1b,EAAQ,CACVkI,MAAOA,EACPyT,OAAQvkB,EACRkM,MAAOA,EACP8M,OAAQA,EAERpD,cAAeA,EACflC,cAAeA,GAEblP,EAAWoL,EAAMxI,cAAckd,EAAW1b,IAAUpK,EAAE,MAAO,CAC/DqD,SAAU,OAAAC,EAAA,MAAW+hB,EAAW/S,KAE9B0T,EAAWN,EAAY1lB,EAAE,OAAQ,CACnCI,YAAa,WACZ,KAAKE,OAAOolB,EAAW,MAAQ,KAElC,OAAO1lB,EAAEoe,GAAKle,EAAM,CAAC8F,EAAUggB,GAAUllB,OAAOiP,EAAA,QAI9CkW,EAASld,EAAO2D,IAAI0Y,GAAUtkB,OAAOiP,EAAA,MAErCmW,EAAO,GAEX,GAAI1L,EACF0L,EAAKrnB,KAAKmB,EAAE6G,EAAK,CACfxG,MAAOkG,KAAK4d,aACZ3kB,MAAO,CACLoH,QAAS,eAAkBqd,GAAkBU,EAE7CV,IAEDgC,QACE,CACL,IAAI7b,EAAQ,CACVd,QAASP,EAAOtL,OAChBsL,OAAQA,EAERqO,cAAeA,EACflC,cAAeA,GAEjBgR,EAAKrnB,KAAK0H,KAAKqC,cAAc,OAAqBwB,IAAUpK,KAC5DkmB,EAAKrnB,KAAKmB,EAAE6G,EAAK,CACfxG,MAAOkG,KAAKse,aACZrlB,MAAO,CACLoH,QAAS+d,IAEVsB,IAGL,OAAOjmB,EAAEwa,EAASqJ,GAASS,GAAQ,CACjCjkB,OAAQma,EAASjU,KAAK2d,WAAa3d,KAAKqe,aAAe,KACvDplB,MAAOgb,EAAS,CACdpS,YAAaA,GAAeD,GAAe,MACzC,CACFA,YAAaA,GAAe,MAE9B3G,IAAKgZ,EAAS,WAAa,YAC1B0L,OC7NE,GAAQ,GAGRC,GAAc,aAAI5mB,OAAO,CAClC6G,QAAS,CACP2c,aAAc,WACZ,IAAIha,EAASxC,KAAKyC,eACdC,EAAU1C,KAAK0C,QACfC,EAAe3C,KAAK2C,aACpBC,EAAc5C,KAAK4C,YACnBnJ,EAAIuG,KAAK6C,eAGb,OAAK7C,KAAK8C,kBAAkB,UAAkC,IAAZJ,GAAgC,KAAZA,EAI/DjJ,EAAE6G,EAAK,CACZzG,YAAa,kBACbC,MAAO,CAAC,eAAW6I,GAAgBA,EAAa,KAAM,WAAaA,GACnEzE,MAAO,eAAW0E,GAAeA,EAAY,KAAM,WAAaA,EAChE3H,IAAK,aACJ,CAAC+E,KAAKqC,cAAc,OAAmB,CACxCU,QAASP,EAAOtL,OAChBsL,OAAQA,MAVD/I,QCnBf,SAAS,GAAQQ,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,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,GAAI4J,EAAA,MAAU,GAAiB,GAAY,GAAe,GAAgB,GAAa,IAAiB,IAAa,IAAkB,IAAgB,IAAkB,IAAe,IAAe,IAAqB,IAAa,IAAa,IAAa,KAAe,SAGrjB2a,GAAsB,aAAI7mB,OAAO,CAC1CM,KAAM,QAGNiH,OAAQ,CACRrC,EAAA,KAAY0B,EAAkBsF,EAAA,KAAS,OACvC4H,GAAY6I,GAAoBf,GAAc2J,GAAYV,GAAYtC,GACtE3G,GAAcxL,GAAgBkK,GAAczF,GAAiBjJ,EAAcO,EAAeqK,GAAiB7J,EAAYia,GAAatd,EAAgB0B,EAAWmK,IAC/JlV,MAAO,M,uUCrCL6mB,EAAO,uBACPC,EAAa,aACbC,EAAa,aAEbC,EAAiB,SAAwBtV,GAC3C,IAAIuV,EAAW,SAAkB1b,GAC/BmG,EAAQnG,EAAM6H,OAAS0T,EAAYvb,IAIrC,OADA0b,EAAS5U,GAAKX,EACPuV,GAGL,EAAkB,SAAyB/d,EAAIiV,EAAI8I,GACrD,eAAW/d,EAAIiV,EAAI2I,EAAYG,EAAU,QACzC,eAAW/d,EAAIiV,EAAI4I,EAAYE,EAAU,SAIvC,EAAY,SAAmB9I,EAAI1d,GACrC,IAAIymB,EAAazmB,EAAK6B,MAClBoP,OAAyB,IAAfwV,EAAwB,KAAOA,EAE7C,GAAI,OAAY,CACd,IAAID,EAAW9I,EAAG0I,GACdhgB,EAAc,eAAWogB,GACzBE,IAAmBtgB,GAAeogB,EAAS5U,KAAOX,GAElD7K,GAAesgB,IACjB,GAAgB,EAAOhJ,EAAI8I,UACpB9I,EAAG0I,IAGR,eAAWnV,IAAYyV,IACzBhJ,EAAG0I,GAAQG,EAAetV,GAC1B,GAAgB,EAAMyM,EAAIA,EAAG0I,OAMxBO,EAAU,CACnB3kB,KAAM,EACN4kB,iBAAkB,EAClBC,OAAQ,SAAgBnJ,GACtB,EAAUA,EAAI,CACZ7b,MAAO,SCpDb,SAASvB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAKgD,EAAQI,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBL,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmBf,EAAQI,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAASK,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAuBpM,IAAI,EAAQ,eAASV,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAU,QAAgB,QAAiB,eAAK4lB,EAAA,KAAe,CAAC,cAAe,eAAK,OAAkB,CAAC,eAAgB,GAAI,CAE7OC,WAAY,eAAS,QAAmB,GAExCC,cAAe,eAAS,OAAkB,aAG1CC,eAAgB,eAAS,QAEzBC,cAAe,eAAS,QACxBC,KAAM,eAAS,QAEfC,UAAW,eAAS,QAEpBC,YAAa,eAAS,QACtBC,SAAU,eAAS,QAAmB,GAEtCC,IAAK,eAAS,OAAmB,MACjC1lB,MAAO,eAAS,OAAkB,OAIzB2lB,EAAqC,aAAIloB,OAAO,CACzDM,KAAM,OACN6nB,WAAY,CACV,UAAWd,GAEb9f,OAAQ,CAAC,OAAS,OAAe,OAAgBigB,EAAA,KAAe,QAChEvnB,MAAO,EACPU,KAAM,WACJ,MAAO,CACLynB,WAAW,EACXC,UAAU,IAGdtgB,SAAU,CACRugB,SAAU,WACR,OAAOthB,KAAK8E,UAEdyc,QAAS,WACP,OAAOvhB,KAAK8E,OAAO,YAErB0c,OAAQ,WACN,OAAOxhB,KAAK8E,OAAO,aAErB2c,UAAW,WACT,OAAOzhB,KAAK8E,OAAO,YAErB4c,YAAa,WACX,OAAoB,IAAb1hB,KAAKihB,IAAe,OAAqB,IAAbjhB,KAAKihB,IAAgB,MAAQ,OAGpEphB,QAAS,CACP8hB,MAAO,WACA3hB,KAAKqX,UACR,eAAarX,KAAKyb,MAAMmG,SAG5BC,KAAM,WACC7hB,KAAKqX,UACR,eAAYrX,KAAKyb,MAAMmG,SAG3BE,SAAU,SAAkBtd,GAC1BxE,KAAKqhB,SAA0B,UAAf7c,EAAM6H,MAExB0V,YAAa,SAAqBC,GAChChiB,KAAKohB,UAAYY,IAGrBxoB,OAAQ,SAAgBC,GACtB,IAAIgF,EAEA6iB,EAAWthB,KAAKshB,SAChBC,EAAUvhB,KAAKuhB,QACfC,EAASxhB,KAAKwhB,OACdC,EAAYzhB,KAAKyhB,UACjBpK,EAAWrX,KAAKqX,SAChB2J,EAAWhhB,KAAKghB,SAChB3iB,EAAW2B,KAAK3B,SAChB/E,EAAO0G,KAAK1G,KACZ2oB,EAAQjiB,KAAKiiB,MACbC,EAAUliB,KAAKkiB,QACfC,EAAOniB,KAAKmiB,KACZf,EAAYphB,KAAKohB,UACjBC,EAAWrhB,KAAKqhB,SAChBT,EAAgB5gB,KAAK4gB,cACrBF,EAAgB1gB,KAAK0gB,cACrBD,EAAazgB,KAAKygB,WAClBllB,EAAQ,eAASyE,KAAKzE,QAAU,GAChC6mB,GAAoB,IAAVH,GAAmB5jB,IAAa9C,EAC1C8mB,EAAW,CACbjB,UAAWA,EACXC,SAAUA,EACVY,MAAOA,EACPK,OAAQJ,GAENK,EAAU9oB,EAAE,SAAU,CACxBI,YAAa,MACbC,OAAQ2E,EAAS,GAAIvD,EAAgBuD,EAAQ,OAAO1E,OAAO2mB,GAAgBD,GAAavlB,EAAgBuD,EAAQ,OAAO1E,OAAOooB,GAAOA,GAAOjnB,EAAgBuD,EAAQ,UAAWgiB,GAAavlB,EAAgBuD,EAAQ,kBAAmBgiB,GAAavlB,EAAgBuD,EAAQ,2BAA4BgiB,GAAahiB,GACrTP,MAAO,CACLgH,GAAIoc,EACJjV,KAAM,SACNgL,SAAUA,EACV,gBAAiB,SACjB,gBAAiB6K,EAAU,OAAS,QACpC,eAAgBE,EAAU,OAAS,KACnC,gBAAiB/jB,EAAW,OAAS,MAEvC8iB,WAAY,CAAC,CACX7nB,KAAM,UACNiC,MAAOyE,KAAK+hB,cAEd5f,GAAI,CACFqgB,UAAWxiB,KAAKyiB,YAChBvF,MAAOld,KAAK4hB,OACZzE,QAASnd,KAAK4hB,OAEd,SAAU5hB,KAAK8hB,SACf,QAAS9hB,KAAK8hB,UAEhB/G,IAAK,UACJ,CAAC/a,KAAK8C,kBAAkB,QAA4B9C,KAAKqC,cAAc,OAA0BggB,GAEpG5oB,EAAE,OAAkB,CAClBR,MAAO,CACLypB,MAAO,UAIPC,EAAUlpB,IAEVH,IAAS+d,IACXsL,EAAUlpB,EAAE,QAAS,CACnByE,MAAO,CACLmO,KAAM,SACN/S,KAAMA,GAAQ,KACdspB,KAAM5iB,KAAK4iB,MAAQ,KACnBrnB,MAAOA,MAMb,IAAIsnB,EAAQppB,EAAE,MAAO,CACnBI,YAAa,gBACbC,MAAO,CAACkG,KAAK8gB,UAAW,CACtBgC,KAAMZ,EACN,sBAAuBliB,KAAKhC,QAE9BE,MAAO,CACLgH,GAAIsc,EACJvf,KAAM,SACN2Y,SAAU,KACV,aAAc,QACd,kBAAmB2G,GAErBpf,GAAI,CACFgb,QAASnd,KAAK+iB,WAGhBhI,IAAK,QACJ,CAAC/a,KAAKqC,cAAc,OAAmB,CACxCigB,OAAQJ,MAGNc,EAASvpB,EAAE,QAAS,CACtBK,MAAO2mB,EAAa,UAClB,CAAC,eAAgB,aAAc,YAAa,iBAC9C,CACE,cAAellB,GACdyE,KAAKijB,WAAYjjB,KAAKkjB,eACzBhlB,MAAO,CACLgH,GAAIqc,EACJ4B,IAAK7B,EACL,eAAgBc,EAAU,OAAS,KACnC,gBAAiB/jB,EAAW,OAAS,MAEvC8iB,WAAY,CAAC,CACX7nB,KAAM,UACNiC,MAAOyE,KAAK+hB,cAEd5f,GAAI,CAGF,SAEA,SAAeqC,GACb,eAAUA,EAAO,CACf4e,gBAAgB,OAIrB,CAAC7nB,EAAQyE,KAAK2gB,gBAAkBplB,EAAQyE,KAAK+gB,aAAe,GAC/DxlB,GAASqlB,EAAgBnnB,EAAE,MAAO,CAChCI,YAAa,WACZ+mB,GAAiB,KAEpB,OAAOnnB,EAAE,MAAO,CACdI,YAAa,oCACbC,MAAO,CAACkG,KAAKqjB,eAAgBrjB,KAAKsjB,cAAe,CAAC,CAChD,YAAa7C,EACb,gBAAiBA,EACjB,UAAWA,EACX,UAAWA,EACX,uBAAwBA,EACxBkB,MAAON,IAAaZ,EACpBqC,KAAMZ,EACN,YAAsB,IAAVD,EACZ,cAAwB,IAAVA,GACbxB,EAAa,KAAOzgB,KAAKkjB,gBAC5BhlB,MAAO,CACLgH,GAAIuc,EACJxf,KAAMwe,EAAa,KAAO,QAC1BI,KAAM7gB,KAAK6gB,MAAQ,KACnB0C,IAAKvjB,KAAK0hB,YACV,gBAAiBrK,EACjB,gBAAiB2J,IAAa3J,EAC9B,kBAAmBkK,EACnB,gBAA0B,IAAVU,GAAmB5jB,IAAa9C,EAAQ,OAAS,KACjE,gBAAiB8C,EAAW,OAAS,OAEtC,CAACkkB,EAASI,EAASE,EAAOG,O,4DC7OjC,SAASQ,EAAWC,EAAQC,EAAMC,GAAqV,OAAzSH,EAA/BI,IAA4CC,QAAQC,UAAiC,SAAoBL,EAAQC,EAAMC,GAAS,IAAIlS,EAAI,CAAC,MAAOA,EAAEnZ,KAAKqC,MAAM8W,EAAGiS,GAAO,IAAIK,EAAcC,SAAStoB,KAAKf,MAAM8oB,EAAQhS,GAAQwS,EAAW,IAAIF,EAAsE,OAAnDJ,GAAOO,EAAgBD,EAAUN,EAAMzb,WAAmB+b,GAAsBT,EAAW7oB,MAAM,KAAMG,WAErZ,SAAS8oB,IAA8B,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUK,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3EC,KAAKnc,UAAUC,SAASC,KAAKyb,QAAQC,UAAUO,KAAM,IAAI,iBAAyB,EAAQ,MAAOtV,GAAK,OAAO,GAE1T,SAASmV,EAAgBpc,EAAGwc,GAA+G,OAA1GJ,EAAkB9pB,OAAOmqB,gBAAkB,SAAyBzc,EAAGwc,GAAsB,OAAjBxc,EAAE0c,UAAYF,EAAUxc,GAAaoc,EAAgBpc,EAAGwc,GAW9J,IC3BHpV,ED2BOuV,EAAa,WACtB,IAAK,IAAIC,EAAO5pB,UAAU5D,OAAQwsB,EAAO,IAAI5sB,MAAM4tB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EjB,EAAKiB,GAAQ7pB,UAAU6pB,GAGzB,OAAOnB,EAAWa,KAAMX,IA6CfkB,EAAsB,SAA6B9S,EAAQ+S,GAGpE,IAAIC,EAAM,IAAIC,KAAKC,eAAelT,EAAQ+S,GAC1C,OAAOC,EAAIG,Q,oCC/Eb,SAAS,EAAQhrB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,EAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,EAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,EAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,EAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,EAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS,EAAezD,EAAKb,GAAK,OAAO,GAAgBa,IAAQ,GAAsBA,EAAKb,IAAM,GAA4Ba,EAAKb,IAAM,KAEzI,SAAS,KAAqB,MAAM,IAAI6Q,UAAU,6IAElD,SAAS,GAA4BC,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO,GAAkBA,EAAGC,GAAS,IAAIE,EAAI7N,OAAO8N,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYhP,MAAgB,QAAN2O,GAAqB,QAANA,EAAoBnR,MAAMyR,KAAKT,GAAc,cAANG,GAAqB,2CAA2CO,KAAKP,GAAW,GAAkBH,EAAGC,QAAzG,GAE7S,SAAS,GAAkBlQ,EAAKZ,IAAkB,MAAPA,GAAeA,EAAMY,EAAIX,UAAQD,EAAMY,EAAIX,QAAQ,IAAK,IAAIF,EAAI,EAAG6R,EAAO,IAAI/R,MAAMG,GAAMD,EAAIC,EAAKD,IAAO6R,EAAK7R,GAAKa,EAAIb,GAAM,OAAO6R,EAEhL,SAAS,GAAsBhR,EAAKb,GAAK,GAAsB,qBAAX0R,QAA4BA,OAAOC,YAAYvO,OAAOvC,GAAjE,CAAgF,IAAIqtB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,IAAWP,GAAsB,MAAhBI,EAAG,WAAmBA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,GAEle,SAAS,GAAgBrtB,GAAO,GAAIf,MAAM8R,QAAQ/Q,GAAM,OAAOA,EA2B/D,IC7CI,GD6CAuU,GAAkB,eAAe,QAAS,CAC5CC,KAAM,OACNC,aAAc,KAEZC,GAAaH,GAAgBI,MAC7BC,GAAaL,GAAgBnT,MAC7ByT,GAAkBN,GAAgBO,KAClCC,GAAmBR,GAAgB5H,MAEnCmhB,GAAU,UAEVC,GAAe,SAAsBrqB,GACvC,MAAO,KAAKxB,OAAOwB,GAAS,IAAI8M,OAAO,IAGrC,GAAW,SAAkB9M,GAC/BA,EAAQ,eAASA,GACjB,IAAIsqB,EAAK,KACLC,EAAK,KACLC,EAAK,KAET,GAAI,OAAQvd,KAAKjN,GAAQ,CAGvB,IAAIyqB,EAAmBzqB,EAAM0qB,MAAM,KAAK9f,KAAI,SAAUE,GACpD,OAAO,eAAUA,EAAG,SAGlB6f,EAAoB,EAAeF,EAAkB,GAEzDH,EAAKK,EAAkB,GACvBJ,EAAKI,EAAkB,GACvBH,EAAKG,EAAkB,GAGzB,MAAO,CACLC,MAAO,eAAkBN,GAAM,KAAOA,EACtCO,QAAS,eAAkBN,GAAM,KAAOA,EACxCO,QAAS,eAAkBN,GAAM,KAAOA,EACxCO,KAAM,eAAkBT,IAAOA,EAAK,GAAK,EAAI,IAI7C,GAAY,SAAmBnsB,GACjC,IAAIysB,EAAQzsB,EAAKysB,MACbC,EAAU1sB,EAAK0sB,QACfC,EAAU3sB,EAAK2sB,QACfE,EAAiBzrB,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GAEpF,GAAI,eAAOqrB,IAAU,eAAOC,IAAYG,GAAkB,eAAOF,GAC/D,MAAO,GAGT,IAAIG,EAAM,CAACL,EAAOC,EAASG,EAAiBF,EAAU,GACtD,OAAOG,EAAIrgB,IAAIyf,IAAcrtB,KAAK,MAIzB,GAAQ,eAAsB,eAAS,EAAc,EAAc,EAAc,EAAc,GAAI,QAAUkU,IAAa,eAAK,OAAsB,CAAC,iBAAkB,oBAAqB,GAAI,CAE1Mga,eAAgB,eAAS,QACzBpP,SAAU,eAAS,QAAmB,GACtCqP,OAAQ,eAAS,QAAmB,GACpCC,WAAY,eAAS,QAAmB,GAIxCC,OAAQ,eAAS,OAAmB,MACpCC,QAAS,eAAS,OAAkB,MACpCC,UAAW,eAAS,OAAkB,SACtCC,WAAY,eAAS,OAAkB,SACvCC,aAAc,eAAS,OAAkB,WACzCC,oBAAqB,eAAS,OAAkB,oBAChDC,QAAS,eAAS,OAAkB,MACpCC,aAAc,eAAS,OAAkB,WACzCvG,cAAe,eAAS,OAAkB,iBAC1C9O,OAAQ,eAAS,QACjBsV,YAAa,eAAS,OAAyB,GAC/CpG,SAAU,eAAS,QAAmB,GACtCqG,YAAa,eAAS,OAAyB,GAE/CC,YAAa,eAAS,QAAmB,MACtC,SAGMC,GAAqB,aAAIvuB,OAAO,CACzCM,KAAM,QACNiH,OAAQ,CAAC,OAASgM,GAAY,QAC9BtT,MAAO,GACPU,KAAM,WACJ,IAAI6tB,EAAS,GAASxnB,KAAK0M,KAAoB,IAC/C,MAAO,CAEL+a,WAAYD,EAAOrB,MACnBuB,aAAcF,EAAOpB,QACrBuB,aAAcH,EAAOnB,QACrBuB,UAAWJ,EAAOlB,KAElBuB,QAAQ,IAGZ9mB,SAAU,CACR+mB,YAAa,WACX,IAAI3B,EAAQnmB,KAAKynB,WACbrB,EAAUpmB,KAAK0nB,aACfrB,EAAUrmB,KAAK2nB,aACnB,OAAO,GAAU,CACfxB,MAAOA,EACPC,QAASA,EACTC,QAASA,GACRrmB,KAAKsnB,cAEVS,gBAAiB,WAEf,IAAIjW,EAAS,eAAO9R,KAAK8R,QAAQvX,OAAOiP,EAAA,MACpCqb,EAAU,CACZmD,KAAMrC,GACNsC,OAAQtC,GACRuC,OAAQvC,IAGL,eAAkB3lB,KAAK4mB,UAE1B/B,EAAQ+B,SAAW5mB,KAAK4mB,QAG1B,IAAI9B,EAAM,IAAIC,KAAKC,eAAelT,EAAQ+S,GACtCsD,EAAWrD,EAAIiD,kBACfnB,EAASuB,EAASvB,SAAU,EAG5BwB,EAAYD,EAASC,YAAcxB,EAAS,MAAQ,OACxD,MAAO,CACL9U,OAAQqW,EAASrW,OACjB8U,OAAQA,EACRwB,UAAWA,IAGfC,eAAgB,WACd,OAAOroB,KAAK+nB,gBAAgBjW,QAE9BwW,aAAc,WACZ,OAAQtoB,KAAKqoB,gBAAkB,IAAI1c,QAAQ,SAAU,KAEvD4c,YAAa,WACX,OAAO,eAAYvoB,KAAKsoB,eAE1BE,kBAAmB,WAQjB,OAAOxoB,KAAK+nB,gBAAgBK,WAE9BK,SAAU,WACR,QAASzoB,KAAK+nB,gBAAgBnB,QAEhC1Z,QAAS,WACP,MAAO,CACL4E,OAAQ9R,KAAKqoB,eACbK,MAAO1oB,KAAKuoB,YACZH,UAAWpoB,KAAKwoB,kBAChB5B,OAAQ5mB,KAAKyoB,SACbtC,MAAOnmB,KAAKynB,WACZrB,QAASpmB,KAAK0nB,aACdrB,QAASrmB,KAAKsnB,YAActnB,KAAK2nB,aAAe,EAChDpsB,MAAOyE,KAAK8nB,YACZ7O,UAAWjZ,KAAK2oB,sBAGpBC,QAAS,WACP,OAAO5oB,KAAK8E,UAAY,MAE1B+jB,uBAAwB,WACtB,MAAO,CAAC7oB,KAAKymB,eAAgBzmB,KAAK4oB,SAASruB,OAAOiP,EAAA,MAAUjR,KAAK,MAAQ,MAE3EuwB,cAAe,WAGb,IAAIjE,EAAU,CACZ+B,OAAQ5mB,KAAKyoB,SACbL,UAAWpoB,KAAKwoB,kBAChBR,KAAMrC,GACNsC,OAAQtC,GACRoD,SAAU,OAQZ,OALI/oB,KAAKsnB,cACPzC,EAAQqD,OAASvC,IAIZf,EAAoB5kB,KAAKqoB,eAAgBxD,IAElDmE,gBAAiB,WAGf,IAAIC,EAAK,IAAIlE,KAAKmE,aAAalpB,KAAKqoB,eAAgB,CAClD1R,MAAO,UACPwS,qBAAsB,EACtBC,sBAAuB,EACvBC,sBAAuB,EACvBC,SAAU,aAEZ,OAAOL,EAAGhE,QAEZ0D,oBAAqB,WACnB,IAAIxC,EAAQnmB,KAAKynB,WACbrB,EAAUpmB,KAAK0nB,aACfrB,EAAUrmB,KAAKsnB,aAActnB,KAAK2nB,cAAoB,EAE1D,OAAI3nB,KAAK8nB,YACA9nB,KAAK8oB,cAAcrE,EAAWJ,KAAKkF,IAAI,EAAG,EAAG,EAAGpD,EAAOC,EAASC,KAGlErmB,KAAKinB,qBAAuB,KAErCuC,gBAAiB,WACf,IAAI/vB,EAAIuG,KAAK6C,eACb,MAAO,CACL4mB,UAAW,SAAmB3tB,GAC5B,IAAIulB,EAAWvlB,EAAMulB,SACrB,OAAO5nB,EAAE,OAAgB,CACvBR,MAAO,CACLypB,MAAOrB,EAAW,IAAM,MAE1BnjB,MAAO,CACL,cAAe,WAIrBwrB,UAAW,SAAmBC,GAC5B,IAAItI,EAAWsI,EAAMtI,SACrB,OAAO5nB,EAAE,OAAgB,CACvBR,MAAO,CACL2wB,OAAO,EACPlH,MAAOrB,EAAW,IAAM,MAE1BnjB,MAAO,CACL,cAAe,cAO3BiG,OAAQ+K,EAAS,GAAI,EAAgBA,EAAQxC,IAAiB,SAAUtI,EAAUC,GAChF,GAAID,IAAaC,IAAa,eAAW,GAASD,GAAW,GAASpE,KAAK8nB,cAAe,CACxF,IAAI+B,EAAY,GAASzlB,GACrB+hB,EAAQ0D,EAAU1D,MAClBC,EAAUyD,EAAUzD,QACpBC,EAAUwD,EAAUxD,QACpBC,EAAOuD,EAAUvD,KAErBtmB,KAAKynB,WAAatB,EAClBnmB,KAAK0nB,aAAetB,EACpBpmB,KAAK2nB,aAAetB,EACpBrmB,KAAK4nB,UAAYtB,MAEjB,EAAgBpX,EAAQ,eAAe,SAAqB9K,EAAUC,GACpED,IAAaC,GACfrE,KAAKsE,MAAMsI,GAAkBxI,MAE7B,EAAgB8K,EAAQ,WAAW,SAAiB9K,EAAUC,GAC3D,eAAWD,EAAUC,IACxBrE,KAAKsE,MAAM,OAAoBF,MAE/B,EAAgB8K,EAAQ,aAAa,SAAmB9K,EAAUC,GACpE,IAAIwG,EAAQ7K,KAEZ,GAAIoE,IAAaC,EAAU,CACzB,IAAI8hB,EAAQ,eAAOnmB,KAAKynB,YAAc,EAAIznB,KAAKynB,WAC/CznB,KAAKkL,WAAU,WACI,IAAb9G,GAAkB+hB,EAAQ,GAE5Btb,EAAM4c,WAAatB,EAAQ,GACL,IAAb/hB,GAAkB+hB,EAAQ,KAEnCtb,EAAM4c,WAAatB,EAAQ,WAI/B,EAAgBjX,EAAQ,cAAc,SAAoB4a,EAAUC,GAClED,IAAaC,IACf/pB,KAAK4nB,UAAYkC,EAAW,GAAK,EAAI,MAErC5a,GACJlE,QAAS,WACP,IAAIC,EAASjL,KAEbA,KAAKkL,WAAU,WACbD,EAAO3G,MAAM,OAAoB2G,EAAOiC,aAG5CS,QAAS,WACP3N,KAAKgqB,SAAQ,IAIfC,UAAW,WACTjqB,KAAKgqB,SAAQ,IAIfE,YAAa,WACXlqB,KAAKgqB,SAAQ,IAEf5e,cAAe,WACbpL,KAAKgqB,SAAQ,IAEfnqB,QAAS,CAEP8hB,MAAO,WACA3hB,KAAKqX,UAER,eAAarX,KAAKyb,MAAM0O,SAAS,KAGrCtI,KAAM,WACJ,IAAK7hB,KAAKqX,SAAU,CAClB,IAAI+S,EAAgB,iBAEhB,eAASpqB,KAAK2b,IAAKyO,IACrB,eAAYA,KAKlBC,YAAa,SAAqBxE,GAChC,IAAIuC,EAAYpoB,KAAKwoB,kBASrB,OAPA3C,EAAK7lB,KAAKyoB,UAAY5C,EAAK,GAAKA,EAAK,GAAKA,EAE1CA,EAAY,IAAPA,GAA0B,QAAduC,EAAsB,GAAY,IAAPvC,GAA0B,QAAduC,EAExD,GAAY,KAAPvC,GAA2B,QAAduC,EAElB,EAAIvC,EACG7lB,KAAKgpB,gBAAgBnD,IAE9ByE,cAAe,SAAuBxE,GACpC,OAAO9lB,KAAKgpB,gBAAgBlD,IAE9ByE,cAAe,SAAuBxE,GACpC,OAAO/lB,KAAKgpB,gBAAgBjD,IAE9ByE,WAAY,SAAoBlE,GAG9B,OAAgB,IAATA,EAAatmB,KAAK6mB,QAAmB,IAATP,EAAatmB,KAAKknB,QAAU,IAGjEuD,SAAU,SAAkBlvB,GAC1ByE,KAAKynB,WAAalsB,GAEpBmvB,WAAY,SAAoBnvB,GAC9ByE,KAAK0nB,aAAensB,GAEtBovB,WAAY,SAAoBpvB,GAC9ByE,KAAK2nB,aAAepsB,GAEtBqvB,QAAS,SAAiBrvB,GACxByE,KAAK4nB,UAAYrsB,GAEnBsvB,gBAAiB,WACf,IAAIrmB,EAAQ1J,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAC5EuR,EAAO7H,EAAM6H,KACb2P,EAAUxX,EAAMwX,QAEpB,IAAKhc,KAAKqX,UAAqB,YAAThL,IAAuB2P,IAAY,QAAaA,IAAY,QAAa,CAC7F,eAAUxX,GACV,IAAI2lB,EAAWnqB,KAAKyb,MAAM0O,UAAY,GAClC1Z,EAAQ0Z,EAAShkB,KAAI,SAAU2kB,GACjC,QAASA,EAAIzJ,YACZ7pB,SAAQ,GACXiZ,GAAiBuL,IAAY,QAAa,EAAI,EAC9CvL,EAAQA,GAAS0Z,EAASjzB,OAAS,EAAIuZ,EAAQ,EAAI0Z,EAASjzB,OAAS,EAAIuZ,EACzE,eAAa0Z,EAAS1Z,MAG1BuZ,QAAS,SAAiB7nB,GACxB,IAAIqJ,EAASxL,KAETmC,EACFnC,KAAKkL,WAAU,WACb,gBAAU,WACRM,EAAOqc,QAAS,QAIpB7nB,KAAK6nB,QAAS,IAIpBruB,OAAQ,SAAgBC,GACtB,IAAIsxB,EAAS/qB,KAGb,GAAIA,KAAK0mB,OAEP,OAAOjtB,IAGT,IAAImvB,EAAU5oB,KAAK4oB,QACfC,EAAyB7oB,KAAK6oB,uBAC9BmC,EAAU,GAEVC,EAAiB,SAAwBtgB,EAAS1P,EAAKiwB,GACzD,IAAIC,EAAkBrwB,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GACtFoK,EAAK6lB,EAAOjmB,OAAO,eAAe/K,OAAOkB,EAAK,OAAS,KAE3D,OADA+vB,EAAQ1yB,KAAK4M,GACNzL,EAAE,OAAiB,CACxBK,MAAOoxB,EACPjyB,MAAO,EAAc,CACnBiM,GAAIA,EACJ6b,YAAa,KACbqK,UAAU,EACV/sB,UAAU,EACVgZ,SAAU0T,EAAO1T,SACjB2J,SAAU+J,EAAO/J,SACjBlP,OAAQiZ,EAAO1C,eACfgD,eAAgBN,EAAOM,eACvBC,eAAgBP,EAAOO,eACvBC,MAAM,EACNC,aAAc5C,EACd6C,IAAK,GACJN,GACHxsB,YAAaosB,EAAOvB,gBACpBrnB,GAAI,CAKFupB,OAAQ/gB,GAEV1P,IAAKA,EACL8f,IAAK,WACLC,UAAU,KAKV2Q,EAAY,WACd,OAAOlyB,EAAE,MAAO,CACdI,YAAa,qBACbC,MAAO,CACL,aAAcixB,EAAO1T,UAAY0T,EAAO/J,UAE1C9iB,MAAO,CACL,cAAe,SAEhB,CAACzE,EAAE,OAAiB,CACrBR,MAAO,CACL2yB,OAAQ,EACRlJ,MAAO,MAEPjpB,EAAE,OAAiB,CACrBR,MAAO,CACL2yB,QAAS,EACTlJ,MAAO,SAKTmJ,EAAY,GAEhBA,EAAUvzB,KAAK2yB,EAAejrB,KAAKyqB,SAAU,QAAS,eAAgB,CACpElvB,MAAOyE,KAAKynB,WACZqE,IAAK,GACLC,KAAM,EACNC,YAAahsB,KAAKqqB,YAClBtL,UAAW/e,KAAK+mB,cAGlB8E,EAAUvzB,KAAKqzB,KAEfE,EAAUvzB,KAAK2yB,EAAejrB,KAAK0qB,WAAY,UAAW,iBAAkB,CAC1EnvB,MAAOyE,KAAK0nB,aACZoE,IAAK,GACLC,KAAM/rB,KAAKonB,aAAe,EAC1B4E,YAAahsB,KAAKsqB,cAClBvL,UAAW/e,KAAKgnB,gBAGdhnB,KAAKsnB,cAEPuE,EAAUvzB,KAAKqzB,KAEfE,EAAUvzB,KAAK2yB,EAAejrB,KAAK2qB,WAAY,UAAW,iBAAkB,CAC1EpvB,MAAOyE,KAAK2nB,aACZmE,IAAK,GACLC,KAAM/rB,KAAKqnB,aAAe,EAC1B2E,YAAahsB,KAAKuqB,cAClBxL,UAAW/e,KAAKmnB,iBAKhBnnB,KAAKyoB,UAKPoD,EAAUvzB,KAAK2yB,EAAejrB,KAAK4qB,QAAS,OAAQ,cAAe,CACjErvB,MAAOyE,KAAK4nB,UACZkE,IAAK,EACLE,YAAahsB,KAAKwqB,WAClBzL,UAAW/e,KAAK8mB,UAEhBzoB,UAAU,KAKdwtB,EAAYpyB,EAAE,MAAO,CACnBI,YAAa,2DACbqE,MAAO,CACL+D,KAAM,QACN2Y,SAAU5a,KAAKqX,UAAYrX,KAAKghB,SAAW,KAAO,KAClD,kBAAmB6H,GAErB1mB,GAAI,CACFgb,QAASnd,KAAK6qB,gBACd3N,MAEA,SAAe1Y,GACTA,EAAM3J,SAAW2J,EAAMynB,eACzBlB,EAAOpJ,WAIZkK,GAEH,IAAIK,EAASzyB,EAAE,SAAU,CACvBI,YAAa,2CACbC,MAAO,CACLud,SAAUrX,KAAKqX,UAAYrX,KAAKghB,UAElC9iB,MAAO,CACLgH,GAAI0jB,EACJ3mB,KAAM,SACNkhB,IAAK6H,EAAQzwB,OAAOiP,EAAA,MAAUjR,KAAK,MAAQ,KAC3CqiB,SAAU5a,KAAKqX,SAAW,KAAO,KACjC,YAAarX,KAAK6nB,OAAS,SAAW,MACtC,cAAe,QAEjB1lB,GAAI,CAEF+a,MAAOld,KAAK2hB,MACZA,MAAO3hB,KAAK2hB,QAEb,CAACloB,EAAE,MAAOuG,KAAK2oB,qBAAsB3oB,KAAK8nB,YAAcruB,EAAE,OAAQ,CACnEI,YAAa,WACZ,KAAKE,OAAOiG,KAAK4gB,cAAe,OAAS,KACxCrhB,EAAU9F,EAAE,SAAU,CACxBI,YAAa,gBACbC,MAAO,CACL,UAAWkG,KAAK2mB,aAEjB,CAACuF,IAEAC,EAAQnsB,KAAKqC,gBAIjB,OAHA8pB,EAAQA,EAAQ1yB,EAAE,SAAU,CAC1BI,YAAa,iBACZsyB,GAAS1yB,IACLA,EAAE,MAAO,CACdI,YAAa,+CACbqE,MAAO,CACL+D,KAAM,QACN4e,KAAM7gB,KAAKsoB,cAAgB,KAC3B,kBAAmBO,GAA0B,KAC7C,gBAAiB7oB,KAAKqX,SAAW,OAAS,KAC1C,gBAAiBrX,KAAKghB,WAAahhB,KAAKqX,SAAW,OAAS,OAE7D,CAAC9X,EAASssB,EAAWM,OC5mB5B,SAAS,GAAQlyB,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAAS,GAAcU,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAK,GAAQoD,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAO,GAAgBJ,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmB,GAAQX,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAAS,GAAgBS,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAkB3M,IAAI,GAAkB,eAAe,QAAS,CAC5C+Q,KAAM,OACNC,aAAc,KAEZ,GAAa,GAAgBE,MAC7B,GAAa,GAAgBvT,MAC7B,GAAkB,GAAgB0T,KAClC,GAAmB,GAAgBnI,MAGnC4nB,GAAY,eAAK,GAAY,CAAC,SAAU,KAAM,UAC9CC,GAA2B,eAAK,EAA4B,CAAC,iBAAkB,KAAM,OAAQ,MAAO,UAC7F,GAAQ,eAAsB,eAAS,GAAc,GAAc,GAAc,GAAc,GAAc,GAAI,QAAU,IAAaD,IAAYC,IAA2B,GAAI,CAC5LC,mBAAoB,eAAS,OAAkB,qBAC/CC,iBAAkB,eAAS,OAAkB,SAC7CC,eAAgB,eAAS,OAAkB,cAC3CC,iBAAkB,eAAS,OAAkB,SAC7CC,cAAe,eAAS,QAAmB,GAC3CC,UAAW,eAAS,QAAmB,GACvCC,iBAAkB,eAAS,OAAkB,mBAC7CC,YAAa,eAAS,QAAmB,GACzCC,mBAAoB,eAAS,OAAkB,kBAC/CC,WAAY,eAAS,WAClB,QAGMC,GAA+B,aAAIh0B,OAAO,CACnDM,KAAM,OACNiH,OAAQ,CAAC,OAAS,IAClBtH,MAAO,GACPU,KAAM,WACJ,MAAO,CAELszB,SAAUjtB,KAAK,KAAoB,GAEnCktB,YAAa,KACbxE,OAAO,EACP/H,eAAgB,GAEhBwM,WAAW,IAGfpsB,SAAU,CACRunB,aAAc,WACZ,OAAQtoB,KAAKktB,aAAe,IAAIvhB,QAAQ,UAAW,KAAO,OAG9DxH,OAAQ,GAAS,GAAI,GAAgB,GAAQ,IAAiB,SAAUC,GACtEpE,KAAKitB,SAAW7oB,GAAY,MAC1B,GAAgB,GAAQ,YAAY,SAAkBA,GAIpDpE,KAAKmtB,WACPntB,KAAKsE,MAAM,GAAkBF,GAAY,OAEzC,IACJvE,QAAS,CAEP8hB,MAAO,WACA3hB,KAAKqX,UACR,eAAarX,KAAKyb,MAAM2R,UAG5BvL,KAAM,WACC7hB,KAAKqX,UACR,eAAYrX,KAAKyb,MAAM2R,UAI3BC,YAAa,SAAqB9xB,GAChC,IAAIsP,EAAQ7K,KAEZA,KAAKitB,SAAW1xB,EAChByE,KAAKkL,WAAU,WACbL,EAAM4Q,MAAM2R,QAAQE,MAAK,OAG7BC,QAAS,SAAiB/G,GACpBxmB,KAAKitB,WAAazG,IACpBxmB,KAAKitB,SAAWzG,IAGpBgH,UAAW,SAAmBnf,GAC5B,IAAIqa,EAAQra,EAAIqa,MACZ5W,EAASzD,EAAIyD,OACbvW,EAAQ8S,EAAI9S,MACZ0d,EAAY5K,EAAI4K,UACpBjZ,KAAK0oB,MAAQA,EACb1oB,KAAKktB,YAAcpb,EACnB9R,KAAK2gB,eAAiB1H,EACtBjZ,KAAKitB,SAAW1xB,GAAS,GAEzByE,KAAKsE,MAAM,OAAoB+J,IAEjCof,YAAa,WACX,IAAIC,EAAM,IAAIrJ,KACV8B,EAAQuH,EAAIC,WACZvH,EAAUsH,EAAIE,aACdvH,EAAUrmB,KAAKsnB,YAAcoG,EAAIG,aAAe,EAChDtyB,EAAQ,CAAC4qB,EAAOC,EAASC,GAASlgB,KAAI,SAAUE,GAClD,MAAO,KAAKtM,OAAOsM,GAAK,IAAIgC,OAAO,MAClC9P,KAAK,KACRyH,KAAKqtB,YAAY9xB,IAEnBuyB,cAAe,WACb9tB,KAAKqtB,YAAYrtB,KAAK+sB,aAExBgB,cAAe,WACb/tB,KAAKyb,MAAM2R,QAAQE,MAAK,IAE1BU,OAAQ,WACNhuB,KAAKmtB,WAAY,GAEnBc,QAAS,WACP,IAAIhjB,EAASjL,KAEbA,KAAKkL,WAAU,WACb,eAAaD,EAAOwQ,MAAMyS,MAE1BjjB,EAAO3G,MAAM,YAGjB6pB,SAAU,WACRnuB,KAAKmtB,WAAY,EACjBntB,KAAKsE,MAAM,SAGb8pB,gBAAiB,SAAyB10B,GACxC,IAAI0nB,EAAY1nB,EAAK0nB,UACjBC,EAAW3nB,EAAK2nB,SACpB,OAAOrhB,KAAK6C,eAAeue,GAAaC,EAAW,OAAiB,OAAY,CAC9EnjB,MAAO,CACL,cAAe,YAKvB1E,OAAQ,SAAgBC,GACtB,IAAIwzB,EAAWjtB,KAAKitB,SAChB5V,EAAWrX,KAAKqX,SAChB2J,EAAWhhB,KAAKghB,SAChB3D,EAASrd,KAAKqd,OACd0D,EAAc,eAAkB/gB,KAAK+gB,aAAe/gB,KAAKinB,oBAAsBjnB,KAAK+gB,YAEpFrhB,EAAU,GAEd,GAAIM,KAAK2sB,UAAW,CAClB,IAAI5gB,EAAQ/L,KAAKwsB,eACjB9sB,EAAQpH,KAAKmB,EAAE,OAAS,CACtBR,MAAO,CACLkpB,KAAM,KACN9K,SAAUA,GAAY2J,EACtB3gB,QAASL,KAAK4sB,kBAEhB1uB,MAAO,CACL,aAAc6N,GAAS,MAEzB5J,GAAI,CACF+a,MAAOld,KAAKytB,aAEdxyB,IAAK,WACJ8Q,IAGL,GAAI/L,KAAK6sB,YAAa,CAChBntB,EAAQxI,OAAS,GAEnBwI,EAAQpH,KAAKmB,EAAE,OAAQ,MAGzB,IAAI40B,EAASruB,KAAKysB,iBAClB/sB,EAAQpH,KAAKmB,EAAE,OAAS,CACtBR,MAAO,CACLkpB,KAAM,KACN9K,SAAUA,GAAY2J,EACtB3gB,QAASL,KAAK8sB,oBAEhB5uB,MAAO,CACL,aAAcmwB,GAAU,MAE1BlsB,GAAI,CACF+a,MAAOld,KAAK8tB,eAEd7yB,IAAK,aACJozB,IAGL,IAAKruB,KAAK0sB,cAAe,CAEnBhtB,EAAQxI,OAAS,GACnBwI,EAAQpH,KAAKmB,EAAE,OAAQ,MAGzB,IAAI60B,EAAUtuB,KAAKusB,iBACnB7sB,EAAQpH,KAAKmB,EAAE,OAAS,CACtBR,MAAO,CACLkpB,KAAM,KACN9K,SAAUA,EACVhX,QAASL,KAAKssB,oBAEhBpuB,MAAO,CACL,aAAcowB,GAAW,MAE3BnsB,GAAI,CACF+a,MAAOld,KAAK+tB,eAEd9yB,IAAK,aACJqzB,IAGD5uB,EAAQxI,OAAS,IACnBwI,EAAU,CAACjG,EAAE,MAAO,CAClBI,YAAa,wCACbC,MAAO,CACL,0BAA2B4F,EAAQxI,OAAS,EAC5C,sBAAuBwI,EAAQxI,OAAS,IAEzCwI,KAGL,IAAI6uB,EAAQ90B,EAAE8tB,GAAO,CACnB1tB,YAAa,sBACbZ,MAAO,GAAc,GAAc,GAAI,eAAWmzB,GAAW/O,IAAU,GAAI,CACzE9hB,MAAO0xB,EACPvG,QAAS1mB,KAAKmtB,YAEhBhrB,GAAI,CACFqV,MAAOxX,KAAKutB,QACZrgB,QAASlN,KAAKwtB,WAEhBzS,IAAK,QACJrb,GACH,OAAOjG,EAAEynB,EAAuB,CAC9BrnB,YAAa,oBACbZ,MAAO,GAAc,GAAc,GAAI,eAAWozB,GAA0BhP,IAAU,GAAI,CACxFnY,GAAIlF,KAAK8E,SACTvJ,MAAO0xB,EACPtM,eAAgBsM,EAAWjtB,KAAK2gB,eAAiB,GACjDI,YAAaA,EACbE,IAAKjhB,KAAK0oB,MACV7H,KAAM7gB,KAAKsoB,eAEbnmB,GAAI,CACF2gB,KAAM9iB,KAAKguB,OACXQ,MAAOxuB,KAAKiuB,QACZvH,OAAQ1mB,KAAKmuB,UAEfxvB,YAAa,GAAgB,GAAI,OAA0BqB,KAAKf,aAAa,SAA6Be,KAAKouB,iBAC/GrT,IAAK,WACJ,CAACwT,Q,oCClRR,kDAMe,SAASE,EAAeC,GAAyC,IAA1BC,EAA0B,uDAAV,aAM9DC,EAAkB7T,iBAAI,MAOtB8T,EAAgB,WACpBD,EAAgBrzB,MAAMuzB,SASlBC,EAAqB,SAAC,GAAyE,IAAvEC,EAAuE,EAAvEA,MAAOC,EAAgE,EAAhEA,UAAqBC,EAA2C,EAArD7wB,SAAyB8wB,EAA4B,EAA5BA,QAA4B,IAAnBC,aAAmB,MAAX,KAAW,EAC7FzoB,EAASqoB,GAASC,EAAYG,EAAQ,KAC5C,OAAQF,GAAkBC,EAAiBxoB,EAAP,MAQhC0oB,EAAY,WAChBX,IACAY,uBAAS,WACPT,QASEU,EAAY,WAChBZ,IACAW,uBAAS,WACPT,QAIJ,MAAO,CACLD,kBACAC,gBACAE,qBACAM,YACAE,e,2CC/DG,MAAMC,EAAQ,CACjB,WACA,UACA,cACA,YACA,YACA,gBACA,SACA,gBACA,UACA,gBACA,eACA,yBAES,EAAW,CACpBC,SAAU,GACVC,YAAY,EACZC,qBAAqB,EACrBC,UAAW,SACXC,UAAU,EACVC,cAAe,qBACfC,QAA2B,kBAAXC,SACoC,IAAhDA,OAAOC,UAAUC,UAAU14B,QAAQ,QACvC24B,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,aAAetL,GAA2B,qBAAZuL,SAA2BA,QAAQrnB,KAAK8b,GACtEwL,QAAUC,IACN,MAAMC,EAAO,IAAI/M,KAAK8M,EAAUE,WAChCD,EAAK3G,SAAS,EAAG,EAAG,EAAG,GACvB2G,EAAKE,QAAQF,EAAKG,UAAY,GAAMH,EAAKI,SAAW,GAAK,GACzD,IAAIC,EAAQ,IAAIpN,KAAK+M,EAAKM,cAAe,EAAG,GAC5C,OAAQ,EACJC,KAAKC,QAAQR,EAAKC,UAAYI,EAAMJ,WAAa,MAC7C,GACEI,EAAMD,SAAW,GAAK,GACxB,IAEZK,cAAe,EACfC,qBAAsB,GACtBC,QAAQ,EACRjgB,OAAQ,UACRkgB,gBAAiB,EACjBC,KAAM,SACNC,kBAAmB,WACnBC,UAAW,yOACXC,YAAY,EACZ1E,IAAK,IAAIrJ,KACTgO,SAAU,GACVC,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,qBAAiBlsB,EACjBmsB,UAAW,uOACXC,uBAAuB,EACvBC,WAAY,EACZC,QAAQ,EACRC,WAAW,EACXC,aAAa,EACblI,MAAM,GC/EGmI,EAAU,CACnBC,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,aAGRE,YAAa,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC1DC,eAAgB,EAChBC,QAAUC,IACN,MAAMC,EAAID,EAAM,IAChB,GAAIC,EAAI,GAAKA,EAAI,GACb,MAAO,KACX,OAAQA,EAAI,IACR,KAAK,EACD,MAAO,KACX,KAAK,EACD,MAAO,KACX,KAAK,EACD,MAAO,KACX,QACI,MAAO,OAGnBC,eAAgB,OAChBC,iBAAkB,KAClBC,YAAa,sBACbC,YAAa,kBACbC,KAAM,CAAC,KAAM,MACbC,cAAe,OACfC,eAAgB,QAChBC,cAAe,OACfC,gBAAiB,SACjBpB,WAAW,GAEA,QCvER,MAAMqB,EAAM,CAACC,EAAQ59B,EAAS,KAAM,MAAM49B,GAASzsB,OAAgB,EAAVnR,GACnD,EAAO69B,IAAmB,IAATA,EAAgB,EAAI,EAC3C,SAASC,EAAS1pB,EAAI2pB,GACzB,IAAIC,EACJ,OAAO,WACH7pB,aAAa6pB,GACbA,EAAInqB,WAAW,IAAMO,EAAG3Q,MAAMqF,KAAMlF,WAAYm6B,IAGjD,MAAME,EAAY75B,GAAQA,aAAexE,MAAQwE,EAAM,CAACA,GCTxD,SAAS85B,EAAYC,EAAMC,EAAWP,GACzC,IAAa,IAATA,EACA,OAAOM,EAAKE,UAAUC,IAAIF,GAC9BD,EAAKE,UAAUE,OAAOH,GAEnB,SAASI,EAAc58B,EAAKw8B,EAAWK,GAC1C,MAAM5mB,EAAIihB,OAAOvY,SAASie,cAAc58B,GAMxC,OALAw8B,EAAYA,GAAa,GACzBK,EAAUA,GAAW,GACrB5mB,EAAEumB,UAAYA,OACEruB,IAAZ0uB,IACA5mB,EAAE6mB,YAAcD,GACb5mB,EAEJ,SAAS8mB,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,MAAMC,EAAUb,EAAc,MAAO,mBAAoBc,EAAWd,EAAc,QAAS,YAAcW,GAAiBI,EAAUf,EAAc,OAAQ,WAAYgB,EAAYhB,EAAc,OAAQ,aAQxM,IAPiD,IAA7CzF,UAAUC,UAAU14B,QAAQ,YAC5Bg/B,EAASnqB,KAAO,UAGhBmqB,EAASnqB,KAAO,OAChBmqB,EAAS9qB,QAAU,aAEVzE,IAATqvB,EACA,IAAK,MAAMr7B,KAAOq7B,EACdE,EAASG,aAAa17B,EAAKq7B,EAAKr7B,IAIxC,OAHAs7B,EAAQK,YAAYJ,GACpBD,EAAQK,YAAYH,GACpBF,EAAQK,YAAYF,GACbH,EAEJ,SAASM,EAAeryB,GAC3B,IACI,GAAkC,oBAAvBA,EAAMsyB,aAA6B,CAC1C,MAAMC,EAAOvyB,EAAMsyB,eACnB,OAAOC,EAAK,GAEhB,OAAOvyB,EAAM3J,OAEjB,MAAOm8B,GACH,OAAOxyB,EAAM3J,QClDrB,MAAMo8B,EAAY,OACLC,EAAa,CAACC,EAAavD,EAAW9hB,IAAWA,EAAOgiB,OAAOF,EAAY,YAAc,YAAYuD,GACrGC,EAAY,CACrBC,EAAGJ,EACHK,EAAG,SAAUC,EAASC,EAAW1lB,GAC7BylB,EAAQE,SAAS3lB,EAAOgiB,OAAOD,SAASr8B,QAAQggC,KAEpDE,EAAG,CAACH,EAASvP,KACTuP,EAAQ9M,SAASkN,WAAW3P,KAEhC4P,EAAG,CAACL,EAASvP,KACTuP,EAAQ9M,SAASkN,WAAW3P,KAEhC6P,EAAG,CAACN,EAASO,KACTP,EAAQjG,QAAQqG,WAAWG,KAE/BC,EAAG,CAACR,EAAS/C,EAAM1iB,KACfylB,EAAQ9M,SAAU8M,EAAQ5J,WAAa,GACnC,GAAK,EAAI,IAAI/hB,OAAOkG,EAAO0iB,KAAK,GAAI,KAAKhsB,KAAKgsB,MAEtDwD,EAAG,SAAUT,EAASU,EAAYnmB,GAC9BylB,EAAQE,SAAS3lB,EAAOgiB,OAAOF,UAAUp8B,QAAQygC,KAErDC,EAAG,CAACX,EAASlR,KACTkR,EAAQ5M,WAAWgN,WAAWtR,KAElC8R,EAAG,CAACC,EAAGC,IAAgB,IAAIhU,KAA+B,IAA1BsT,WAAWU,IAC3CC,EAAG,SAAUf,EAASgB,EAASzmB,GAC3B,MAAM0mB,EAAaC,SAASF,GACtBnH,EAAO,IAAI/M,KAAKkT,EAAQ7F,cAAe,EAAG,EAAuB,GAAlB8G,EAAa,GAAQ,EAAG,EAAG,EAAG,GAEnF,OADApH,EAAKE,QAAQF,EAAKG,UAAYH,EAAKI,SAAW1f,EAAOkiB,gBAC9C5C,GAEXsH,EAAG,CAACnB,EAASoB,KACTpB,EAAQqB,YAAYjB,WAAWgB,KAEnCE,EAAG,CAACT,EAAGU,IAAY,IAAIzU,KAAKyU,GAC5BC,EAAG,CAACxB,EAASO,KACTP,EAAQjG,QAAQqG,WAAWG,KAE/Br+B,EAAG,CAAC89B,EAASvP,KACTuP,EAAQ9M,SAASkN,WAAW3P,KAEhChxB,EAAG,CAACugC,EAASnR,KACTmR,EAAQ7M,WAAWiN,WAAWvR,KAElC4S,EAAG,CAACzB,EAASO,KACTP,EAAQjG,QAAQqG,WAAWG,KAE/BmB,EAAGhC,EACHiC,EAAG,CAAC3B,EAAS4B,KACT5B,EAAQE,SAASE,WAAWwB,GAAS,IAEzClxB,EAAG,CAACsvB,EAAS4B,KACT5B,EAAQE,SAASE,WAAWwB,GAAS,IAEzChF,EAAG,CAACoD,EAASlR,KACTkR,EAAQ5M,WAAWgN,WAAWtR,KAElC+S,EAAG,CAAChB,EAAGiB,IAAoB,IAAIhV,KAAKsT,WAAW0B,IAC/CC,EAAGrC,EACHsC,EAAG,CAAChC,EAASoB,KACTpB,EAAQqB,YAAY,IAAOjB,WAAWgB,MAGjCa,EAAa,CACtBnC,EAAG,SACHC,EAAG,SACHI,EAAG,eACHE,EAAG,eACHC,EAAG,mBACHE,EAAG,GACHC,EAAG,SACHE,EAAG,eACHC,EAAG,OACHG,EAAG,eACHI,EAAG,WACHG,EAAG,OACHE,EAAG,eACHt/B,EAAG,eACHzC,EAAG,eACHgiC,EAAG,eACHC,EAAG,SACHC,EAAG,eACHjxB,EAAG,eACHksB,EAAG,eACHiF,EAAG,OACHE,EAAG,eACHC,EAAG,YAEM,EAAU,CACnBV,EAAIzH,GAASA,EAAKqI,cAClBpC,EAAG,SAAUjG,EAAMtf,EAAQ+S,GACvB,OAAO/S,EAAO6hB,SAASC,UAAU,EAAQ0F,EAAElI,EAAMtf,EAAQ+S,KAE7DyS,EAAG,SAAUlG,EAAMtf,EAAQ+S,GACvB,OAAOqS,EAAW,EAAQjvB,EAAEmpB,EAAMtf,EAAQ+S,GAAW,GAAG,EAAO/S,IAEnE4lB,EAAG,SAAUtG,EAAMtf,EAAQ+S,GACvB,OAAOgQ,EAAI,EAAQp7B,EAAE23B,EAAMtf,EAAQ+S,KAEvC+S,EAAIxG,GAASyD,EAAIzD,EAAKzD,YACtBkK,EAAG,SAAUzG,EAAMtf,GACf,YAA0B7K,IAAnB6K,EAAOmiB,QACR7C,EAAKG,UAAYzf,EAAOmiB,QAAQ7C,EAAKG,WACrCH,EAAKG,WAEfwG,EAAG,CAAC3G,EAAMtf,IAAWA,EAAO0iB,KAAK,EAAIpD,EAAKzD,WAAa,KACvDqK,EAAG,SAAU5G,EAAMtf,GACf,OAAOolB,EAAW9F,EAAKsI,YAAY,EAAM5nB,IAE7ComB,EAAI9G,GAASyD,EAAIzD,EAAKvD,cACtBsK,EAAI/G,GAASA,EAAKC,UAAY,IAC9BiH,EAAG,SAAUlH,EAAMgH,EAAGvT,GAClB,OAAOA,EAAQqM,QAAQE,IAE3BsH,EAAItH,GAASyD,EAAIzD,EAAKM,cAAe,GACrCqH,EAAI3H,GAASyD,EAAIzD,EAAKG,WACtB93B,EAAI23B,GAAUA,EAAKzD,WAAa,GAAKyD,EAAKzD,WAAa,GAAK,GAC5D32B,EAAIo6B,GAASyD,EAAIzD,EAAKxD,cACtBoL,EAAI5H,GAASA,EAAKG,UAClB0H,EAAG,SAAU7H,EAAMtf,GACf,OAAOA,EAAO6hB,SAASE,SAASzC,EAAKI,WAEzC0H,EAAI9H,GAASyD,EAAIzD,EAAKsI,WAAa,GACnCzxB,EAAImpB,GAASA,EAAKsI,WAAa,EAC/BvF,EAAI/C,GAASA,EAAKvD,aAClBuL,EAAIhI,GAASA,EAAKC,UAClBiI,EAAIlI,GAASA,EAAKI,SAClB+H,EAAInI,GAASpoB,OAAOooB,EAAKM,eAAeiI,UAAU,IC/HzC/U,EAAsB,EAAGgV,SAAS,EAAUC,OAAOnG,EAASoG,YAAW,KAAa,CAACvC,EAASwC,EAAMC,KAC7G,MAAMloB,EAASkoB,GAAkBH,EACjC,YAA0B5yB,IAAtB2yB,EAAOK,YAA6BH,EAGjCC,EACF9T,MAAM,IACN9f,IAAI,CAAC+zB,EAAGljC,EAAGa,IAAQ,EAAQqiC,IAAqB,OAAfriC,EAAIb,EAAI,GACxC,EAAQkjC,GAAG3C,EAASzlB,EAAQ8nB,GACtB,OAANM,EACIA,EACA,IACL3hC,KAAK,IATCqhC,EAAOK,WAAW1C,EAASwC,EAAMjoB,IAWnCqoB,EAAmB,EAAGP,SAAS,EAAUC,OAAOnG,KAAc,CAACtC,EAAMgJ,EAAaC,EAAUC,KACrG,GAAa,IAATlJ,IAAeA,EACf,OACJ,MAAMtf,EAASwoB,GAAgBT,EAC/B,IAAIU,EACJ,MAAMC,EAAWpJ,EACjB,GAAIA,aAAgB/M,KAChBkW,EAAa,IAAIlW,KAAK+M,EAAKC,gBAC1B,GAAoB,kBAATD,QACKnqB,IAAjBmqB,EAAKqJ,QACLF,EAAa,IAAIlW,KAAK+M,QACrB,GAAoB,kBAATA,EAAmB,CAC/B,MAAMnM,EAASmV,IAAgBR,GAAU,GAAUpJ,WAC7CkK,EAAU1xB,OAAOooB,GAAMzZ,OAC7B,GAAgB,UAAZ+iB,EACAH,EAAa,IAAIlW,KACjBgW,GAAW,OAEV,GAAI,KAAK7xB,KAAKkyB,IACf,OAAOlyB,KAAKkyB,GACZH,EAAa,IAAIlW,KAAK+M,QACrB,GAAIwI,GAAUA,EAAOe,UACtBJ,EAAaX,EAAOe,UAAUvJ,EAAMnM,OACnC,CACDsV,EACKX,GAAWA,EAAOxH,WAEb,IAAI/N,MAAK,IAAIA,MAAOoG,SAAS,EAAG,EAAG,EAAG,IADtC,IAAIpG,MAAK,IAAIA,MAAOqN,cAAe,EAAG,EAAG,EAAG,EAAG,EAAG,GAE5D,IAAIkJ,EAASC,EAAM,GACnB,IAAK,IAAI7jC,EAAI,EAAG8jC,EAAa,EAAGC,EAAW,GAAI/jC,EAAIiuB,EAAO/tB,OAAQF,IAAK,CACnE,MAAMgkC,EAAQ/V,EAAOjuB,GACfikC,EAAwB,OAAVD,EACdE,EAA4B,OAAlBjW,EAAOjuB,EAAI,IAAeikC,EAC1C,GAAIzB,EAAWwB,KAAWE,EAAS,CAC/BH,GAAYvB,EAAWwB,GACvB,MAAMG,EAAQ,IAAIvvB,OAAOmvB,GAAUK,KAAKhK,GACpC+J,IAAUP,GAAU,IACpBC,EAAc,MAAVG,EAAgB,OAAS,WAAW,CACpC1vB,GAAI8rB,EAAU4D,GACdK,IAAKF,IAAQL,UAIfG,IACNF,GAAY,KAChBF,EAAI7/B,QAAQ,EAAGsQ,KAAI+vB,SAAWd,EAAajvB,EAAGivB,EAAYc,EAAKvpB,IAAWyoB,GAE9EA,EAAaK,EAAUL,OAAatzB,GAG5C,GAAMszB,aAAsBlW,OAASiX,MAAMf,EAAWlJ,WAMtD,OAFiB,IAAbgJ,GACAE,EAAW9P,SAAS,EAAG,EAAG,EAAG,GAC1B8P,EALHX,EAAO5I,aAAa,IAAI15B,MAAM,0BAA0BkjC,KAOzD,SAASe,EAAaC,EAAOC,EAAOpB,GAAW,GAClD,OAAiB,IAAbA,EACQ,IAAIhW,KAAKmX,EAAMnK,WAAW5G,SAAS,EAAG,EAAG,EAAG,GAChD,IAAIpG,KAAKoX,EAAMpK,WAAW5G,SAAS,EAAG,EAAG,EAAG,GAE7C+Q,EAAMnK,UAAYoK,EAAMpK,UAQ5B,MAAMqK,EAAY,CAACC,EAAIC,EAAKC,IACxBF,EAAKhK,KAAKlG,IAAImQ,EAAKC,IAAQF,EAAKhK,KAAK7F,IAAI8P,EAAKC,GAE5CC,EAAW,CACpBC,IAAK,OAEF,SAASC,EAAgBpC,GAC5B,IAAIzT,EAAQyT,EAAOnJ,YACfrK,EAAUwT,EAAOlJ,cACjBrK,EAAUuT,EAAOjJ,eACrB,QAAuB1pB,IAAnB2yB,EAAOqC,QAAuB,CAC9B,MAAMC,EAAUtC,EAAOqC,QAAQtO,WACzBwO,EAAavC,EAAOqC,QAAQrO,aAC5BwO,EAAaxC,EAAOqC,QAAQpO,aAC9B1H,EAAQ+V,IACR/V,EAAQ+V,GAER/V,IAAU+V,GAAW9V,EAAU+V,IAC/B/V,EAAU+V,GAEVhW,IAAU+V,GAAW9V,IAAY+V,GAAc9V,EAAU+V,IACzD/V,EAAUuT,EAAOqC,QAAQpO,cAEjC,QAAuB5mB,IAAnB2yB,EAAOyC,QAAuB,CAC9B,MAAMC,EAAQ1C,EAAOyC,QAAQ1O,WACvB4O,EAAa3C,EAAOyC,QAAQzO,aAClCzH,EAAQwL,KAAKlG,IAAItF,EAAOmW,GACpBnW,IAAUmW,IACVlW,EAAUuL,KAAKlG,IAAI8Q,EAAYnW,IAC/BD,IAAUmW,GAASlW,IAAYmW,IAC/BlW,EAAUuT,EAAOyC,QAAQxO,cAEjC,MAAO,CAAE1H,QAAOC,UAASC,W,UCjH7B,MAAMmW,EAAsB,IAC5B,SAASC,EAAkBC,EAASC,GAChC,MAAMC,EAAO,CACThD,OAAQx/B,OAAOyiC,OAAOziC,OAAOyiC,OAAO,GAAI,GAAiBC,EAAUC,eACnElD,KAAM,GAsBV,SAASmD,IACLJ,EAAKK,MAAQ,CACT,eAAe9D,EAAQyD,EAAKM,aAAcC,EAAKP,EAAKQ,aAChD,OAAc,IAAVjE,IAAiBgE,EAAK,IAAM,GAAKA,EAAK,MAAQ,GAAMA,EAAK,MAAQ,GAC1D,GACJP,EAAK/C,KAAK9F,YAAYoF,KAIzC,SAASkE,IACLT,EAAKF,QAAUE,EAAKplB,MAAQklB,EAC5BE,EAAKU,QAAS,EACdC,KACAC,KACAC,KACAC,KACAV,IACKJ,EAAK9C,UACN6D,IACJC,KACIhB,EAAKiB,cAAc3mC,QAAU0lC,EAAKhD,OAAOxH,cACrCwK,EAAKhD,OAAO7I,YACZ+M,EAAiBlB,EAAKhD,OAAOxH,WAAawK,EAAKmB,2BAAwB92B,GAE3E+2B,IAAY,IAEhBC,IACA,MAAMC,EAAW,iCAAiC11B,KAAKynB,UAAUC,YAC5D0M,EAAK9C,UAAYoE,GAClBC,KAEJC,GAAa,WAEjB,SAASC,EAAe/yB,GACpB,OAAOA,EAAG5P,KAAKkhC,GAEnB,SAASqB,IACL,MAAMrE,EAASgD,EAAKhD,QACO,IAAvBA,EAAOnG,aAA+C,IAAtBmG,EAAOtG,aAGZ,IAAtBsG,EAAOxH,YACZpC,OAAOsO,uBAAsB,WAKzB,QAJ+Br3B,IAA3B21B,EAAK2B,oBACL3B,EAAK2B,kBAAkB5nB,MAAM6nB,WAAa,SAC1C5B,EAAK2B,kBAAkB5nB,MAAM8nB,QAAU,cAEhBx3B,IAAvB21B,EAAK8B,cAA6B,CAClC,MAAMC,GAAa/B,EAAKgC,KAAKC,YAAc,GAAKjF,EAAOtG,WACvDsJ,EAAK8B,cAAc/nB,MAAM9Y,MAAQ8gC,EAAY,KAC7C/B,EAAK2B,kBAAkB5nB,MAAM9Y,MACzB8gC,QAC0B13B,IAArB21B,EAAKkC,YACAlC,EAAKkC,YAAYD,YACjB,GACN,KACRjC,EAAK2B,kBAAkB5nB,MAAMooB,eAAe,cAC5CnC,EAAK2B,kBAAkB5nB,MAAMooB,eAAe,eAK5D,SAASC,EAAWjwB,GAChB,GAAkC,IAA9B6tB,EAAKiB,cAAc3mC,OAAc,CACjC,MAAM+nC,OAAsCh4B,IAAxB21B,EAAKhD,OAAOqC,SAC5BV,EAAa,IAAIlX,KAAQuY,EAAKhD,OAAOqC,UAAY,EAC/C,IAAI5X,KACJ,IAAIA,KAAKuY,EAAKhD,OAAOqC,QAAQ5K,WAC7B6N,EAAWlD,EAAgBY,EAAKhD,QACtCqF,EAAYxU,SAASyU,EAAS/Y,MAAO+Y,EAAS9Y,QAAS8Y,EAAS7Y,QAAS4Y,EAAYE,mBACrFvC,EAAKiB,cAAgB,CAACoB,GACtBrC,EAAKmB,sBAAwBkB,OAEvBh4B,IAAN8H,GAA8B,SAAXA,EAAE1C,MACrB+yB,GAAYrwB,GAEhB,MAAMswB,EAAYzC,EAAK0C,OAAO/jC,MAC9BgkC,IACAvB,KACIpB,EAAK0C,OAAO/jC,QAAU8jC,GACtBzC,EAAK4C,mBAGb,SAASC,EAAczX,EAAMwM,GACzB,OAAQxM,EAAO,GAAM,GAAK,EAAIwM,IAASoI,EAAK/C,KAAKrF,KAAK,IAE1D,SAASkL,EAAc1X,GACnB,OAAQA,EAAO,IACX,KAAK,EACL,KAAK,GACD,OAAO,GACX,QACI,OAAOA,EAAO,IAG1B,SAASuX,IACL,QAAyBt4B,IAArB21B,EAAK+C,kBAAoD14B,IAAvB21B,EAAKgD,cACvC,OACJ,IAAIzZ,GAASsS,SAASmE,EAAK+C,YAAYpkC,MAAM8M,OAAO,GAAI,KAAO,GAAK,GAAI+d,GAAWqS,SAASmE,EAAKgD,cAAcrkC,MAAO,KAAO,GAAK,GAAI8qB,OAAiCpf,IAAvB21B,EAAKiD,eAC9IpH,SAASmE,EAAKiD,cAActkC,MAAO,KAAO,GAAK,GAChD,OACY0L,IAAd21B,EAAKpI,OACLrO,EAAQsZ,EAActZ,EAAOyW,EAAKpI,KAAKoB,cAE3C,MAAMkK,OAAwC74B,IAAxB21B,EAAKhD,OAAOmG,SAC7BnD,EAAKhD,OAAOqC,SACTW,EAAKoD,gBACLpD,EAAKmB,uBAED,IADJxC,EAAaqB,EAAKmB,sBAAuBnB,EAAKhD,OAAOqC,SAAS,GAEhEgE,OAAwCh5B,IAAxB21B,EAAKhD,OAAOsG,SAC7BtD,EAAKhD,OAAOyC,SACTO,EAAKuD,gBACLvD,EAAKmB,uBAED,IADJxC,EAAaqB,EAAKmB,sBAAuBnB,EAAKhD,OAAOyC,SAAS,GAEtE,GAAI4D,EAAe,CACf,MAAMC,OAAkCj5B,IAAxB21B,EAAKhD,OAAOsG,QACtBtD,EAAKhD,OAAOsG,QACZtD,EAAKhD,OAAOyC,QAClBlW,EAAQwL,KAAKlG,IAAItF,EAAO+Z,EAAQvS,YAC5BxH,IAAU+Z,EAAQvS,aAClBvH,EAAUuL,KAAKlG,IAAIrF,EAAS8Z,EAAQtS,eACpCxH,IAAY8Z,EAAQtS,eACpBvH,EAAUsL,KAAKlG,IAAIpF,EAAS6Z,EAAQrS,eAE5C,GAAIiS,EAAe,CACf,MAAMC,OAAkC94B,IAAxB21B,EAAKhD,OAAOmG,QACtBnD,EAAKhD,OAAOmG,QACZnD,EAAKhD,OAAOqC,QAClB9V,EAAQwL,KAAK7F,IAAI3F,EAAO4Z,EAAQpS,YAC5BxH,IAAU4Z,EAAQpS,YAAcvH,EAAU2Z,EAAQnS,eAClDxH,EAAU2Z,EAAQnS,cAClBxH,IAAY2Z,EAAQnS,eACpBvH,EAAUsL,KAAK7F,IAAIzF,EAAS0Z,EAAQlS,eAE5CpD,EAAStE,EAAOC,EAASC,GAE7B,SAASyX,EAAiBvG,GACtB,MAAMnG,EAAOmG,GAAWqF,EAAKmB,sBACzB3M,GACA3G,EAAS2G,EAAKzD,WAAYyD,EAAKxD,aAAcwD,EAAKvD,cAG1D,SAASpD,EAAStE,EAAOC,EAASC,QACKpf,IAA/B21B,EAAKmB,uBACLnB,EAAKmB,sBAAsBtT,SAAStE,EAAQ,GAAIC,EAASC,GAAW,EAAG,GAEtEuW,EAAK+C,aAAgB/C,EAAKgD,gBAAiBhD,EAAK9C,WAErD8C,EAAK+C,YAAYpkC,MAAQs5B,EAAK+H,EAAKhD,OAAOpG,UAEpCrN,GADE,GAAKA,GAAS,GAAM,GAAK,EAAIA,EAAQ,KAAO,IAEpDyW,EAAKgD,cAAcrkC,MAAQs5B,EAAIzO,QACbnf,IAAd21B,EAAKpI,OACLoI,EAAKpI,KAAKoB,YAAcgH,EAAK/C,KAAKrF,KAAK,EAAIrO,GAAS,WAC7Blf,IAAvB21B,EAAKiD,gBACLjD,EAAKiD,cAActkC,MAAQs5B,EAAIxO,KAEvC,SAAS+Z,EAAY57B,GACjB,MAAM67B,EAAcxJ,EAAeryB,GAC7Bm0B,EAAOF,SAAS4H,EAAY9kC,QAAUiJ,EAAM87B,OAAS,IACvD3H,EAAO,IAAO,GACC,UAAdn0B,EAAMvJ,MAAoB,QAAQuN,KAAKmwB,EAAKxwB,cAC7Co4B,GAAW5H,GAGnB,SAASj9B,EAAKghC,EAASl4B,EAAOmG,EAASka,GACnC,OAAIrgB,aAAiB1N,MACV0N,EAAMxJ,QAASwlC,GAAO9kC,EAAKghC,EAAS8D,EAAI71B,EAASka,IACxD6X,aAAmB5lC,MACZ4lC,EAAQ1hC,QAASoc,GAAO1b,EAAK0b,EAAI5S,EAAOmG,EAASka,KAC5D6X,EAAQ+D,iBAAiBj8B,EAAOmG,EAASka,QACzC+X,EAAK8D,UAAUpoC,KAAK,CAChBm9B,OAAQ,IAAMiH,EAAQiE,oBAAoBn8B,EAAOmG,MAGzD,SAASi2B,IACLxC,GAAa,YAEjB,SAASR,IAML,GALIhB,EAAKhD,OAAOrO,MACZ,CAAC,OAAQ,QAAS,SAAU,SAASvwB,QAAS6lC,IAC1C/pC,MAAMoR,UAAUlN,QAAQoN,KAAKw0B,EAAKF,QAAQoE,iBAAiB,SAASD,MAAUzpB,GAAO1b,EAAK0b,EAAI,QAASwlB,EAAKiE,OAGhHjE,EAAK9C,SAEL,YADAiH,KAGJ,MAAMC,EAAkBhM,EAASiM,GAAU,IAwB3C,GAvBArE,EAAK4C,iBAAmBxK,EAAS4L,EAAepE,GAC5CI,EAAK8B,gBAAkB,oBAAoBl2B,KAAKynB,UAAUC,YAC1Dx0B,EAAKkhC,EAAK8B,cAAe,YAAc3vB,IACV,UAArB6tB,EAAKhD,OAAO3H,MACZiP,GAAYrK,EAAe9nB,MAEvCrT,EAAKs0B,OAAOvY,SAAS0pB,KAAM,UAAW1O,IACjCmK,EAAKhD,OAAO7H,QAAW6K,EAAKhD,OAAOrG,QACpC73B,EAAKs0B,OAAQ,SAAUgR,QACC/5B,IAAxB+oB,OAAOoR,aACP1lC,EAAKs0B,OAAOvY,SAAU,aAAc4pB,IAEpC3lC,EAAKs0B,OAAOvY,SAAU,YAAa4pB,IACvC3lC,EAAKs0B,OAAOvY,SAAU,QAAS4pB,GAAe,CAAEC,SAAS,KAC1B,IAA3B1E,EAAKhD,OAAOvJ,aACZ30B,EAAKkhC,EAAK0C,OAAQ,QAAS1C,EAAK2E,MAChC7lC,EAAKkhC,EAAK0C,OAAQ,QAAS1C,EAAK2E,YAETt6B,IAAvB21B,EAAK8B,gBACLhjC,EAAKkhC,EAAK4E,SAAU,QAASC,IAC7B/lC,EAAKkhC,EAAK4E,SAAU,CAAC,QAAS,aAAcpB,GAC5C1kC,EAAKkhC,EAAK8B,cAAe,QAASgD,UAEXz6B,IAAvB21B,EAAK+E,oBACkB16B,IAAvB21B,EAAKgD,oBACgB34B,IAArB21B,EAAK+C,YAA2B,CAChC,MAAMiC,EAAW7yB,GAAM8nB,EAAe9nB,GAAG8yB,SACzCnmC,EAAKkhC,EAAK+E,cAAe,CAAC,aAAc3C,GACxCtjC,EAAKkhC,EAAK+E,cAAe,OAAQ3C,EAAY,CAAEsC,SAAS,IACxD5lC,EAAKkhC,EAAK+E,cAAe,QAASG,GAClCpmC,EAAK,CAACkhC,EAAK+C,YAAa/C,EAAKgD,eAAgB,CAAC,QAAS,SAAUgC,QACtC36B,IAAvB21B,EAAKiD,eACLnkC,EAAKkhC,EAAKiD,cAAe,QAAS,IAAMjD,EAAKiD,eAAiBjD,EAAKiD,cAAcgC,eACnE56B,IAAd21B,EAAKpI,MACL94B,EAAKkhC,EAAKpI,KAAM,QAAUzlB,IACtBiwB,EAAWjwB,GACX6xB,MAIRhE,EAAKhD,OAAOlK,YACZh0B,EAAKkhC,EAAK0C,OAAQ,OAAQyC,IAGlC,SAASC,EAAWC,EAAUrB,GAC1B,MAAMsB,OAAsBj7B,IAAbg7B,EACTrF,EAAKjC,UAAUsH,GACfrF,EAAKmB,wBACFnB,EAAKhD,OAAOqC,SAAWW,EAAKhD,OAAOqC,QAAUW,EAAKlP,IAC7CkP,EAAKhD,OAAOqC,QACZW,EAAKhD,OAAOyC,SAAWO,EAAKhD,OAAOyC,QAAUO,EAAKlP,IAC9CkP,EAAKhD,OAAOyC,QACZO,EAAKlP,KACjByU,EAAUvF,EAAKQ,YACfgF,EAAWxF,EAAKM,aACtB,SACmBj2B,IAAXi7B,IACAtF,EAAKQ,YAAc8E,EAAOxQ,cAC1BkL,EAAKM,aAAegF,EAAOxI,YAGnC,MAAO3qB,GACHA,EAAEC,QAAU,0BAA4BkzB,EACxCtF,EAAKhD,OAAO5I,aAAajiB,GAEzB6xB,GAAiBhE,EAAKQ,cAAgB+E,IACtC/D,GAAa,gBACbiE,MAEAzB,GACChE,EAAKQ,cAAgB+E,GAAWvF,EAAKM,eAAiBkF,GACvDhE,GAAa,iBAEjBxB,EAAK0F,SAET,SAASR,EAAc/yB,GACnB,MAAMsxB,EAAcxJ,EAAe9nB,IAC9BsxB,EAAY/K,UAAU99B,QAAQ,UAC/B+qC,EAAkBxzB,EAAGsxB,EAAY9K,UAAUiN,SAAS,WAAa,GAAK,GAE9E,SAASD,EAAkBxzB,EAAGuxB,EAAOmC,GACjC,MAAM5nC,EAASkU,GAAK8nB,EAAe9nB,GAC7ByI,EAAQirB,GACT5nC,GAAUA,EAAOs7B,YAAct7B,EAAOs7B,WAAWJ,WAChDvxB,EAAQk+B,GAAY,aAC1Bl+B,EAAM87B,MAAQA,EACd9oB,GAASA,EAAMmrB,cAAcn+B,GAEjC,SAASm5B,IACL,MAAMiF,EAAW5S,OAAOvY,SAASorB,yBAGjC,GAFAjG,EAAK2B,kBAAoB7I,EAAc,MAAO,sBAC9CkH,EAAK2B,kBAAkBtiB,UAAY,GAC9B2gB,EAAKhD,OAAOxH,WAAY,CAGzB,GAFAwQ,EAAShM,YAAYkM,MACrBlG,EAAKmG,eAAiBrN,EAAc,MAAO,4BACvCkH,EAAKhD,OAAOnG,YAAa,CACzB,MAAM,YAAEqL,EAAW,YAAErL,GAAgBuP,KACrCpG,EAAKmG,eAAenM,YAAYkI,GAChClC,EAAKnJ,YAAcA,EACnBmJ,EAAKkC,YAAcA,EAEvBlC,EAAKqG,WAAavN,EAAc,MAAO,wBACvCkH,EAAKqG,WAAWrM,YAAYsM,MACvBtG,EAAK8B,gBACN9B,EAAK8B,cAAgBhJ,EAAc,MAAO,kBAC1CkH,EAAK8B,cAAcziB,UAAY,GAEnCknB,IACAvG,EAAKqG,WAAWrM,YAAYgG,EAAK8B,eACjC9B,EAAKmG,eAAenM,YAAYgG,EAAKqG,YACrCL,EAAShM,YAAYgG,EAAKmG,gBAE1BnG,EAAKhD,OAAO7I,YACZ6R,EAAShM,YAAYwM,MAEzBhO,EAAYwH,EAAK2B,kBAAmB,YAAkC,UAArB3B,EAAKhD,OAAO3H,MAC7DmD,EAAYwH,EAAK2B,kBAAmB,WAAmC,IAAxB3B,EAAKhD,OAAO7J,SAC3DqF,EAAYwH,EAAK2B,kBAAmB,aAAc3B,EAAKhD,OAAOtG,WAAa,GAC3EsJ,EAAK2B,kBAAkB3H,YAAYgM,GACnC,MAAMS,OAAwCp8B,IAAzB21B,EAAKhD,OAAO0J,eACKr8B,IAAlC21B,EAAKhD,OAAO0J,SAASC,SACzB,IAAI3G,EAAKhD,OAAO7H,QAAU6K,EAAKhD,OAAOrG,UAClCqJ,EAAK2B,kBAAkBhJ,UAAUC,IAAIoH,EAAKhD,OAAO7H,OAAS,SAAW,UACjE6K,EAAKhD,OAAO7H,UACPsR,GAAgBzG,EAAKF,QAAQvG,WAC9ByG,EAAKF,QAAQvG,WAAWqN,aAAa5G,EAAK2B,kBAAmB3B,EAAK0C,OAAOmE,kBAC3Cx8B,IAAzB21B,EAAKhD,OAAO0J,UACjB1G,EAAKhD,OAAO0J,SAAS1M,YAAYgG,EAAK2B,oBAE1C3B,EAAKhD,OAAOrG,QAAQ,CACpB,MAAMgD,EAAUb,EAAc,MAAO,qBACjCkH,EAAKF,QAAQvG,YACbyG,EAAKF,QAAQvG,WAAWqN,aAAajN,EAASqG,EAAKF,SACvDnG,EAAQK,YAAYgG,EAAKF,SACrBE,EAAK/M,UACL0G,EAAQK,YAAYgG,EAAK/M,UAC7B0G,EAAQK,YAAYgG,EAAK2B,mBAG5B3B,EAAKhD,OAAOrG,QAAWqJ,EAAKhD,OAAO7H,cACV9qB,IAAzB21B,EAAKhD,OAAO0J,SACP1G,EAAKhD,OAAO0J,SACZtT,OAAOvY,SAAS0pB,MAAMvK,YAAYgG,EAAK2B,mBAErD,SAASmF,EAAUpO,EAAWlE,EAAMuS,EAAW3sC,GAC3C,MAAM4sC,EAAgBC,GAAUzS,GAAM,GAAO0S,EAAapO,EAAc,OAAQ,iBAAmBJ,EAAWlE,EAAKG,UAAUppB,YAuC7H,OAtCA27B,EAAWvM,QAAUnG,EACrB0S,EAAWC,GAAK/sC,EAChB8sC,EAAWnN,aAAa,aAAciG,EAAK3C,WAAW7I,EAAMwL,EAAKhD,OAAOzJ,kBACnC,IAAjCmF,EAAU99B,QAAQ,WACe,IAAjC+jC,EAAanK,EAAMwL,EAAKlP,OACxBkP,EAAKoH,cAAgBF,EACrBA,EAAWvO,UAAUC,IAAI,SACzBsO,EAAWnN,aAAa,eAAgB,SAExCiN,GACAE,EAAW7nB,UAAY,EACnBgoB,GAAe7S,KACf0S,EAAWvO,UAAUC,IAAI,YACzBoH,EAAKsH,iBAAmBJ,EACC,UAArBlH,EAAKhD,OAAO3H,OACZmD,EAAY0O,EAAY,aAAclH,EAAKiB,cAAc,IACD,IAApDtC,EAAanK,EAAMwL,EAAKiB,cAAc,IAAI,IAC9CzI,EAAY0O,EAAY,WAAYlH,EAAKiB,cAAc,IACC,IAApDtC,EAAanK,EAAMwL,EAAKiB,cAAc,IAAI,IAC5B,iBAAdvI,GACAwO,EAAWvO,UAAUC,IAAI,cAKrCsO,EAAWvO,UAAUC,IAAI,sBAEJ,UAArBoH,EAAKhD,OAAO3H,MACRkS,GAAc/S,KAAU6S,GAAe7S,IACvC0S,EAAWvO,UAAUC,IAAI,WAE7BoH,EAAKnJ,aACsB,IAA3BmJ,EAAKhD,OAAOtG,YACE,iBAAdgC,GACAqO,EAAY,IAAM,GAClB/G,EAAKnJ,YAAY2Q,mBAAmB,YAAa,+BAAiCxH,EAAKhD,OAAO1I,QAAQE,GAAQ,WAElHgN,GAAa,cAAe0F,GACrBA,EAEX,SAASO,EAAeC,GACpBA,EAAW3iB,QACc,UAArBib,EAAKhD,OAAO3H,MACZiP,GAAYoD,GAEpB,SAASC,EAAqBjE,GAC1B,MAAMkE,EAAalE,EAAQ,EAAI,EAAI1D,EAAKhD,OAAOtG,WAAa,EACtDmR,EAAWnE,EAAQ,EAAI1D,EAAKhD,OAAOtG,YAAc,EACvD,IAAK,IAAI4F,EAAIsL,EAAYtL,GAAKuL,EAAUvL,GAAKoH,EAAO,CAChD,MAAMnH,EAAQyD,EAAK8B,cAAc9kC,SAASs/B,GACpCwL,EAAapE,EAAQ,EAAI,EAAInH,EAAMv/B,SAAS1C,OAAS,EACrDytC,EAAWrE,EAAQ,EAAInH,EAAMv/B,SAAS1C,QAAU,EACtD,IAAK,IAAIF,EAAI0tC,EAAY1tC,GAAK2tC,EAAU3tC,GAAKspC,EAAO,CAChD,MAAMpG,EAAIf,EAAMv/B,SAAS5C,GACzB,IAAuC,IAAnCkjC,EAAE5E,UAAU99B,QAAQ,WAAoBqsC,GAAU3J,EAAE3C,SACpD,OAAO2C,IAKvB,SAAS0K,EAAoBC,EAASvE,GAClC,MAAMwE,GAAqD,IAAxCD,EAAQvP,UAAU99B,QAAQ,SACvCqtC,EAAQtN,QAAQmC,WAChBkD,EAAKM,aACLuH,EAAWnE,EAAQ,EAAI1D,EAAKhD,OAAOtG,YAAc,EACjDyR,EAAYzE,EAAQ,EAAI,GAAK,EACnC,IAAK,IAAIpH,EAAI4L,EAAalI,EAAKM,aAAchE,GAAKuL,EAAUvL,GAAK6L,EAAW,CACxE,MAAM5L,EAAQyD,EAAK8B,cAAc9kC,SAASs/B,GACpCwL,EAAaI,EAAalI,EAAKM,eAAiBhE,EAChD2L,EAAQd,GAAKzD,EACbA,EAAQ,EACJnH,EAAMv/B,SAAS1C,OAAS,EACxB,EACJ8tC,EAAe7L,EAAMv/B,SAAS1C,OACpC,IAAK,IAAIF,EAAI0tC,EAAY1tC,GAAK,GAAKA,EAAIguC,GAAgBhuC,IAAMspC,EAAQ,EAAI0E,GAAgB,GAAIhuC,GAAK+tC,EAAW,CACzG,MAAM7K,EAAIf,EAAMv/B,SAAS5C,GACzB,IAAuC,IAAnCkjC,EAAE5E,UAAU99B,QAAQ,WACpBqsC,GAAU3J,EAAE3C,UACZ5F,KAAKsT,IAAIJ,EAAQd,GAAK/sC,IAAM26B,KAAKsT,IAAI3E,GACrC,OAAO+D,EAAenK,IAGlC0C,EAAKsI,YAAYH,GACjBI,EAAWZ,EAAqBQ,GAAY,GAGhD,SAASI,EAAWN,EAASO,GACzB,MAAMC,EAAaC,GAAS7tB,SAAS2S,eAAiB3S,SAAS0pB,MACzDoE,OAAwBt+B,IAAZ49B,EACZA,EACAQ,EACI5tB,SAAS2S,mBACiBnjB,IAA1B21B,EAAKsH,kBAAkCoB,GAAS1I,EAAKsH,kBACjDtH,EAAKsH,sBACkBj9B,IAAvB21B,EAAKoH,eAA+BsB,GAAS1I,EAAKoH,eAC9CpH,EAAKoH,cACLO,EAAqBa,EAAS,EAAI,GAAK,QACvCn+B,IAAds+B,EACA3I,EAAK0C,OAAO3d,QAEN0jB,EAINT,EAAoBW,EAAWH,GAH/Bf,EAAekB,GAMvB,SAASC,EAAe7M,EAAMQ,GAC1B,MAAMsM,GAAgB,IAAIphB,KAAKsU,EAAMQ,EAAO,GAAG3H,SAAWoL,EAAK/C,KAAK7F,eAAiB,GAAK,EACpF0R,EAAgB9I,EAAKK,MAAM0I,gBAAgBxM,EAAQ,EAAI,IAAM,GAAIR,GACjE5E,EAAc6I,EAAKK,MAAM0I,eAAexM,EAAOR,GAAOiG,EAAO5O,OAAOvY,SAASorB,yBAA0B+C,EAAehJ,EAAKhD,OAAOtG,WAAa,EAAGuS,EAAoBD,EAAe,sBAAwB,eAAgBE,EAAoBF,EAAe,sBAAwB,eAC9R,IAAIjC,EAAY+B,EAAgB,EAAID,EAAcM,EAAW,EAC7D,KAAOpC,GAAa+B,EAAe/B,IAAaoC,IAC5CnH,EAAKhI,YAAY8M,EAAUmC,EAAmB,IAAIxhB,KAAKsU,EAAMQ,EAAQ,EAAGwK,GAAYA,EAAWoC,IAEnG,IAAKpC,EAAY,EAAGA,GAAa5P,EAAa4P,IAAaoC,IACvDnH,EAAKhI,YAAY8M,EAAU,GAAI,IAAIrf,KAAKsU,EAAMQ,EAAOwK,GAAYA,EAAWoC,IAEhF,IAAK,IAAIC,EAASjS,EAAc,EAAGiS,GAAU,GAAKP,IAClB,IAA3B7I,EAAKhD,OAAOtG,YAAoByS,EAAW,IAAM,GAAIC,IAAUD,IAChEnH,EAAKhI,YAAY8M,EAAUoC,EAAmB,IAAIzhB,KAAKsU,EAAMQ,EAAQ,EAAG6M,EAASjS,GAAciS,EAAQD,IAE3G,MAAME,EAAevQ,EAAc,MAAO,gBAE1C,OADAuQ,EAAarP,YAAYgI,GAClBqH,EAEX,SAAS9C,IACL,QAA2Bl8B,IAAvB21B,EAAK8B,cACL,OAEJ7I,EAAU+G,EAAK8B,eACX9B,EAAKnJ,aACLoC,EAAU+G,EAAKnJ,aACnB,MAAMyS,EAAOzuB,SAASorB,yBACtB,IAAK,IAAI7rC,EAAI,EAAGA,EAAI4lC,EAAKhD,OAAOtG,WAAYt8B,IAAK,CAC7C,MAAM+hC,EAAI,IAAI1U,KAAKuY,EAAKQ,YAAaR,EAAKM,aAAc,GACxDnE,EAAEtB,SAASmF,EAAKM,aAAelmC,GAC/BkvC,EAAKtP,YAAY4O,EAAezM,EAAErH,cAAeqH,EAAEW,aAEvDkD,EAAK8B,cAAc9H,YAAYsP,GAC/BtJ,EAAKgC,KAAOhC,EAAK8B,cAAc3I,WACN,UAArB6G,EAAKhD,OAAO3H,MAAkD,IAA9B2K,EAAKiB,cAAc3mC,QACnDgqC,KAGR,SAASmB,IACL,GAAIzF,EAAKhD,OAAOtG,WAAa,GACS,aAAlCsJ,EAAKhD,OAAO1H,kBACZ,OACJ,MAAMiU,EAAmB,SAAUhN,GAC/B,aAA4BlyB,IAAxB21B,EAAKhD,OAAOqC,SACZW,EAAKQ,cAAgBR,EAAKhD,OAAOqC,QAAQvK,eACzCyH,EAAQyD,EAAKhD,OAAOqC,QAAQvC,oBAGCzyB,IAAxB21B,EAAKhD,OAAOyC,SACjBO,EAAKQ,cAAgBR,EAAKhD,OAAOyC,QAAQ3K,eACzCyH,EAAQyD,EAAKhD,OAAOyC,QAAQ3C,aAEpCkD,EAAKwJ,wBAAwBnqB,UAAY,EACzC2gB,EAAKwJ,wBAAwBC,UAAY,GACzC,IAAK,IAAIrvC,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,IAAKmvC,EAAiBnvC,GAClB,SACJ,MAAMmiC,EAAQzD,EAAc,SAAU,iCACtCyD,EAAM59B,MAAQ,IAAI8oB,KAAKuY,EAAKQ,YAAapmC,GAAG0iC,WAAWvxB,WACvDgxB,EAAMvD,YAAcsB,EAAWlgC,EAAG4lC,EAAKhD,OAAOvG,sBAAuBuJ,EAAK/C,MAC1EV,EAAMld,UAAY,EACd2gB,EAAKM,eAAiBlmC,IACtBmiC,EAAMhoB,UAAW,GAErByrB,EAAKwJ,wBAAwBxP,YAAYuC,IAGjD,SAASmN,IACL,MAAMC,EAAY7Q,EAAc,MAAO,mBACjC8Q,EAAmBxW,OAAOvY,SAASorB,yBACzC,IAAI4D,EACA7J,EAAKhD,OAAOtG,WAAa,GACS,WAAlCsJ,EAAKhD,OAAO1H,kBACZuU,EAAe/Q,EAAc,OAAQ,cAGrCkH,EAAKwJ,wBAA0B1Q,EAAc,SAAU,kCACvDkH,EAAKwJ,wBAAwBzP,aAAa,aAAciG,EAAK/C,KAAKnF,gBAClEh5B,EAAKkhC,EAAKwJ,wBAAyB,SAAWr3B,IAC1C,MAAMlU,EAASg8B,EAAe9nB,GACxB23B,EAAgBjO,SAAS59B,EAAOU,MAAO,IAC7CqhC,EAAKsI,YAAYwB,EAAgB9J,EAAKM,cACtCkB,GAAa,mBAEjBiE,IACAoE,EAAe7J,EAAKwJ,yBAExB,MAAMO,EAAYvQ,EAAkB,WAAY,CAAExb,SAAU,OACtDgsB,EAAcD,EAAUE,qBAAqB,SAAS,GAC5DD,EAAYjQ,aAAa,aAAciG,EAAK/C,KAAKpF,eAC7CmI,EAAKhD,OAAOqC,SACZ2K,EAAYjQ,aAAa,MAAOiG,EAAKhD,OAAOqC,QAAQvK,cAAcvpB,YAElEy0B,EAAKhD,OAAOyC,UACZuK,EAAYjQ,aAAa,MAAOiG,EAAKhD,OAAOyC,QAAQ3K,cAAcvpB,YAClEy+B,EAAYvvB,WACNulB,EAAKhD,OAAOqC,SACVW,EAAKhD,OAAOqC,QAAQvK,gBAAkBkL,EAAKhD,OAAOyC,QAAQ3K,eAEtE,MAAMwL,EAAexH,EAAc,MAAO,2BAK1C,OAJAwH,EAAatG,YAAY6P,GACzBvJ,EAAatG,YAAY+P,GACzBH,EAAiB5P,YAAYsG,GAC7BqJ,EAAU3P,YAAY4P,GACf,CACHD,YACAK,cACAH,gBAGR,SAASK,IACLjR,EAAU+G,EAAK4E,UACf5E,EAAK4E,SAAS5K,YAAYgG,EAAKmK,cAC3BnK,EAAKhD,OAAOtG,aACZsJ,EAAKoK,aAAe,GACpBpK,EAAKqK,cAAgB,IAEzB,IAAK,IAAI/N,EAAI0D,EAAKhD,OAAOtG,WAAY4F,KAAM,CACvC,MAAMC,EAAQmN,IACd1J,EAAKoK,aAAa1uC,KAAK6gC,EAAMyN,aAC7BhK,EAAKqK,cAAc3uC,KAAK6gC,EAAMsN,cAC9B7J,EAAK4E,SAAS5K,YAAYuC,EAAMoN,WAEpC3J,EAAK4E,SAAS5K,YAAYgG,EAAKsK,cAEnC,SAASpE,KA6BL,OA5BAlG,EAAK4E,SAAW9L,EAAc,MAAO,oBACrCkH,EAAKoK,aAAe,GACpBpK,EAAKqK,cAAgB,GACrBrK,EAAKmK,aAAerR,EAAc,OAAQ,wBAC1CkH,EAAKmK,aAAaV,UAAYzJ,EAAKhD,OAAOxG,UAC1CwJ,EAAKsK,aAAexR,EAAc,OAAQ,wBAC1CkH,EAAKsK,aAAab,UAAYzJ,EAAKhD,OAAOzH,UAC1C2U,IACA1sC,OAAOiB,eAAeuhC,EAAM,sBAAuB,CAC/CxqB,IAAK,IAAMwqB,EAAKuK,qBAChB,IAAIpS,GACI6H,EAAKuK,uBAAyBpS,IAC9BK,EAAYwH,EAAKmK,aAAc,qBAAsBhS,GACrD6H,EAAKuK,qBAAuBpS,MAIxC36B,OAAOiB,eAAeuhC,EAAM,sBAAuB,CAC/CxqB,IAAK,IAAMwqB,EAAKwK,qBAChB,IAAIrS,GACI6H,EAAKwK,uBAAyBrS,IAC9BK,EAAYwH,EAAKsK,aAAc,qBAAsBnS,GACrD6H,EAAKwK,qBAAuBrS,MAIxC6H,EAAKyK,mBAAqBzK,EAAKoK,aAAa,GAC5CM,KACO1K,EAAK4E,SAEhB,SAAS4B,KACLxG,EAAK2B,kBAAkBhJ,UAAUC,IAAI,WACjCoH,EAAKhD,OAAOxH,YACZwK,EAAK2B,kBAAkBhJ,UAAUC,IAAI,cACzC,MAAM0J,EAAWlD,EAAgBY,EAAKhD,QACtCgD,EAAK+E,cAAgBjM,EAAc,MAAO,kBAC1CkH,EAAK+E,cAAc1lB,UAAY,EAC/B,MAAMsrB,EAAY7R,EAAc,OAAQ,2BAA4B,KAC9D8R,EAAYpR,EAAkB,iBAAkB,CAClD,aAAcwG,EAAK/C,KAAKlF,gBAE5BiI,EAAK+C,YAAc6H,EAAUX,qBAAqB,SAAS,GAC3D,MAAMY,EAAcrR,EAAkB,mBAAoB,CACtD,aAAcwG,EAAK/C,KAAKjF,kBAyB5B,GAvBAgI,EAAKgD,cAAgB6H,EAAYZ,qBAAqB,SAAS,GAC/DjK,EAAK+C,YAAY1jB,SAAW2gB,EAAKgD,cAAc3jB,UAAY,EAC3D2gB,EAAK+C,YAAYpkC,MAAQs5B,EAAI+H,EAAKmB,sBAC5BnB,EAAKmB,sBAAsBpQ,WAC3BiP,EAAKhD,OAAOpG,UACR0L,EAAS/Y,MACTuZ,EAAcR,EAAS/Y,QACjCyW,EAAKgD,cAAcrkC,MAAQs5B,EAAI+H,EAAKmB,sBAC9BnB,EAAKmB,sBAAsBnQ,aAC3BsR,EAAS9Y,SACfwW,EAAK+C,YAAYhJ,aAAa,OAAQiG,EAAKhD,OAAO/H,cAAc1pB,YAChEy0B,EAAKgD,cAAcjJ,aAAa,OAAQiG,EAAKhD,OAAO5H,gBAAgB7pB,YACpEy0B,EAAK+C,YAAYhJ,aAAa,MAAOiG,EAAKhD,OAAOpG,UAAY,IAAM,KACnEoJ,EAAK+C,YAAYhJ,aAAa,MAAOiG,EAAKhD,OAAOpG,UAAY,KAAO,MACpEoJ,EAAK+C,YAAYhJ,aAAa,YAAa,KAC3CiG,EAAKgD,cAAcjJ,aAAa,MAAO,KACvCiG,EAAKgD,cAAcjJ,aAAa,MAAO,MACvCiG,EAAKgD,cAAcjJ,aAAa,YAAa,KAC7CiG,EAAK+E,cAAc/K,YAAY4Q,GAC/B5K,EAAK+E,cAAc/K,YAAY2Q,GAC/B3K,EAAK+E,cAAc/K,YAAY6Q,GAC3B7K,EAAKhD,OAAOpG,WACZoJ,EAAK+E,cAAcpM,UAAUC,IAAI,YACjCoH,EAAKhD,OAAO9I,cAAe,CAC3B8L,EAAK+E,cAAcpM,UAAUC,IAAI,cACjC,MAAMkS,EAActR,EAAkB,oBACtCwG,EAAKiD,cAAgB6H,EAAYb,qBAAqB,SAAS,GAC/DjK,EAAKiD,cAActkC,MAAQs5B,EAAI+H,EAAKmB,sBAC9BnB,EAAKmB,sBAAsBlQ,aAC3BqR,EAAS7Y,SACfuW,EAAKiD,cAAclJ,aAAa,OAAQiG,EAAKgD,cAAc+H,aAAa,SACxE/K,EAAKiD,cAAclJ,aAAa,MAAO,KACvCiG,EAAKiD,cAAclJ,aAAa,MAAO,MACvCiG,EAAKiD,cAAclJ,aAAa,YAAa,KAC7CiG,EAAK+E,cAAc/K,YAAYlB,EAAc,OAAQ,2BAA4B,MACjFkH,EAAK+E,cAAc/K,YAAY8Q,GAUnC,OARK9K,EAAKhD,OAAOpG,YACboJ,EAAKpI,KAAOkB,EAAc,OAAQ,kBAAmBkH,EAAK/C,KAAKrF,KAAK,GAAKoI,EAAKmB,sBACxEnB,EAAK+C,YAAYpkC,MACjBqhC,EAAKhD,OAAOnJ,aAAe,MACjCmM,EAAKpI,KAAKr4B,MAAQygC,EAAK/C,KAAKtF,YAC5BqI,EAAKpI,KAAKvY,UAAY,EACtB2gB,EAAK+E,cAAc/K,YAAYgG,EAAKpI,OAEjCoI,EAAK+E,cAEhB,SAASuB,KACAtG,EAAKgL,iBAGN/R,EAAU+G,EAAKgL,kBAFfhL,EAAKgL,iBAAmBlS,EAAc,MAAO,sBAGjD,IAAK,IAAI1+B,EAAI4lC,EAAKhD,OAAOtG,WAAYt8B,KAAM,CACvC,MAAMuvC,EAAY7Q,EAAc,MAAO,8BACvCkH,EAAKgL,iBAAiBhR,YAAY2P,GAGtC,OADAsB,KACOjL,EAAKgL,iBAEhB,SAASC,KACL,IAAKjL,EAAKgL,iBACN,OAEJ,MAAM5T,EAAiB4I,EAAK/C,KAAK7F,eACjC,IAAIL,EAAW,IAAIiJ,EAAK/C,KAAKlG,SAASC,WAClCI,EAAiB,GAAKA,EAAiBL,EAASz8B,SAChDy8B,EAAW,IACJA,EAASmU,OAAO9T,EAAgBL,EAASz8B,WACzCy8B,EAASmU,OAAO,EAAG9T,KAG9B,IAAK,IAAIh9B,EAAI4lC,EAAKhD,OAAOtG,WAAYt8B,KACjC4lC,EAAKgL,iBAAiBhuC,SAAS5C,GAAGqvC,UAAY,qDAEhD1S,EAASp7B,KAAK,oEAKpB,SAASyqC,KACLpG,EAAK2B,kBAAkBhJ,UAAUC,IAAI,YACrC,MAAMsJ,EAAcpJ,EAAc,MAAO,yBACzCoJ,EAAYlI,YAAYlB,EAAc,OAAQ,oBAAqBkH,EAAK/C,KAAKxF,mBAC7E,MAAMZ,EAAciC,EAAc,MAAO,mBAEzC,OADAoJ,EAAYlI,YAAYnD,GACjB,CACHqL,cACArL,eAGR,SAASyR,GAAY3pC,EAAOwsC,GAAW,GACnC,MAAMzH,EAAQyH,EAAWxsC,EAAQA,EAAQqhC,EAAKM,aACzCoD,EAAQ,IAAkC,IAA7B1D,EAAKoL,qBAClB1H,EAAQ,IAAkC,IAA7B1D,EAAKqL,sBAEvBrL,EAAKM,cAAgBoD,GACjB1D,EAAKM,aAAe,GAAKN,EAAKM,aAAe,MAC7CN,EAAKQ,aAAeR,EAAKM,aAAe,GAAK,GAAK,EAClDN,EAAKM,cAAgBN,EAAKM,aAAe,IAAM,GAC/CkB,GAAa,gBACbiE,KAEJc,IACA/E,GAAa,iBACbkJ,MAEJ,SAASY,GAAMC,GAAqB,EAAMC,GAAY,GAYlD,GAXAxL,EAAKplB,MAAMjc,MAAQ,QACG0L,IAAlB21B,EAAK/M,WACL+M,EAAK/M,SAASt0B,MAAQ,SACD0L,IAArB21B,EAAKyL,cACLzL,EAAKyL,YAAY9sC,MAAQ,IAC7BqhC,EAAKiB,cAAgB,GACrBjB,EAAKmB,2BAAwB92B,GACX,IAAdmhC,IACAxL,EAAKQ,YAAcR,EAAK0L,aAAa5W,cACrCkL,EAAKM,aAAeN,EAAK0L,aAAa5O,aAEX,IAA3BkD,EAAKhD,OAAO7I,WAAqB,CACjC,MAAM,MAAE5K,EAAK,QAAEC,EAAO,QAAEC,GAAY2V,EAAgBY,EAAKhD,QACzDnP,EAAStE,EAAOC,EAASC,GAE7BuW,EAAK0F,SACD6F,GACA/J,GAAa,YAErB,SAASmK,KACL3L,EAAKU,QAAS,EACTV,EAAK9C,gBACyB7yB,IAA3B21B,EAAK2B,mBACL3B,EAAK2B,kBAAkBhJ,UAAUE,OAAO,aAExBxuB,IAAhB21B,EAAK0C,QACL1C,EAAK0C,OAAO/J,UAAUE,OAAO,WAGrC2I,GAAa,WAEjB,SAASoK,UACevhC,IAAhB21B,EAAKhD,QACLwE,GAAa,aACjB,IAAK,IAAIpnC,EAAI4lC,EAAK8D,UAAUxpC,OAAQF,KAChC4lC,EAAK8D,UAAU1pC,GAAGy+B,SAGtB,GADAmH,EAAK8D,UAAY,GACb9D,EAAKyL,YACDzL,EAAKyL,YAAYlS,YACjByG,EAAKyL,YAAYlS,WAAWH,YAAY4G,EAAKyL,aACjDzL,EAAKyL,iBAAcphC,OAElB,GAAI21B,EAAK2B,mBAAqB3B,EAAK2B,kBAAkBpI,WACtD,GAAIyG,EAAKhD,OAAOrG,QAAUqJ,EAAK2B,kBAAkBpI,WAAY,CACzD,MAAMI,EAAUqG,EAAK2B,kBAAkBpI,WAEvC,GADAI,EAAQkS,WAAalS,EAAQP,YAAYO,EAAQkS,WAC7ClS,EAAQJ,WAAY,CACpB,MAAOI,EAAQR,WACXQ,EAAQJ,WAAWqN,aAAajN,EAAQR,WAAYQ,GACxDA,EAAQJ,WAAWH,YAAYO,SAInCqG,EAAK2B,kBAAkBpI,WAAWH,YAAY4G,EAAK2B,mBAEvD3B,EAAK/M,WACL+M,EAAKplB,MAAMnL,KAAO,OACduwB,EAAK/M,SAASsG,YACdyG,EAAK/M,SAASsG,WAAWH,YAAY4G,EAAK/M,iBACvC+M,EAAK/M,UAEZ+M,EAAKplB,QACLolB,EAAKplB,MAAMnL,KAAOuwB,EAAKplB,MAAMkxB,MAC7B9L,EAAKplB,MAAM+d,UAAUE,OAAO,mBAC5BmH,EAAKplB,MAAMmxB,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,UACF3tC,QAASoL,IACP,WACWw2B,EAAKx2B,GAEhB,MAAOgyB,OAGf,SAASwQ,GAAevT,GACpB,SAAIuH,EAAKhD,OAAO0J,WAAY1G,EAAKhD,OAAO0J,SAASd,SAASnN,KAEnDuH,EAAK2B,kBAAkBiE,SAASnN,GAE3C,SAASgM,GAActyB,GACnB,GAAI6tB,EAAKU,SAAWV,EAAKhD,OAAO7H,OAAQ,CACpC,MAAMsO,EAAcxJ,EAAe9nB,GAC7B85B,EAAoBD,GAAevI,GACnCyI,EAAUzI,IAAgBzD,EAAKplB,OACjC6oB,IAAgBzD,EAAK/M,UACrB+M,EAAKF,QAAQ8F,SAASnC,IACrBtxB,EAAEgoB,MACChoB,EAAEgoB,KAAKv/B,WACLuX,EAAEgoB,KAAKv/B,QAAQolC,EAAKplB,SACjBzI,EAAEgoB,KAAKv/B,QAAQolC,EAAK/M,WAC3BkZ,EAAuB,SAAXh6B,EAAE1C,KACdy8B,GACE/5B,EAAEi6B,gBACDJ,GAAe75B,EAAEi6B,gBACnBF,IACED,IACAD,GAAe75B,EAAEi6B,eACpBC,GAAarM,EAAKhD,OAAO9H,qBAAqB/hB,KAAMslB,GAASA,EAAKmN,SAASnC,IAC7E0I,GAAaE,SACchiC,IAAvB21B,EAAK+E,oBACkB16B,IAAvB21B,EAAKgD,oBACgB34B,IAArB21B,EAAK+C,aACgB,KAArB/C,EAAKplB,MAAMjc,YACU0L,IAArB21B,EAAKplB,MAAMjc,OACXyjC,IAEJpC,EAAK2L,QACD3L,EAAKhD,QACgB,UAArBgD,EAAKhD,OAAO3H,MACkB,IAA9B2K,EAAKiB,cAAc3mC,SACnB0lC,EAAKsL,OAAM,GACXtL,EAAK0F,YAKrB,SAAS/B,GAAW2I,GAChB,IAAKA,GACAtM,EAAKhD,OAAOqC,SAAWiN,EAAUtM,EAAKhD,OAAOqC,QAAQvK,eACrDkL,EAAKhD,OAAOyC,SAAW6M,EAAUtM,EAAKhD,OAAOyC,QAAQ3K,cACtD,OACJ,MAAMyX,EAAaD,EAASE,EAAYxM,EAAKQ,cAAgB+L,EAC7DvM,EAAKQ,YAAc+L,GAAcvM,EAAKQ,YAClCR,EAAKhD,OAAOyC,SACZO,EAAKQ,cAAgBR,EAAKhD,OAAOyC,QAAQ3K,cACzCkL,EAAKM,aAAevL,KAAKlG,IAAImR,EAAKhD,OAAOyC,QAAQ3C,WAAYkD,EAAKM,cAE7DN,EAAKhD,OAAOqC,SACjBW,EAAKQ,cAAgBR,EAAKhD,OAAOqC,QAAQvK,gBACzCkL,EAAKM,aAAevL,KAAK7F,IAAI8Q,EAAKhD,OAAOqC,QAAQvC,WAAYkD,EAAKM,eAElEkM,IACAxM,EAAK0F,SACLlE,GAAa,gBACbiE,KAGR,SAASwB,GAAUzS,EAAMiJ,GAAW,GAChC,IAAIgP,EACJ,MAAMC,EAAc1M,EAAKjC,UAAUvJ,OAAMnqB,EAAWozB,GACpD,GAAKuC,EAAKhD,OAAOqC,SACbqN,GACA/N,EAAa+N,EAAa1M,EAAKhD,OAAOqC,aAAsBh1B,IAAbozB,EAAyBA,GAAYuC,EAAKoD,gBAAkB,GAC1GpD,EAAKhD,OAAOyC,SACTiN,GACA/N,EAAa+N,EAAa1M,EAAKhD,OAAOyC,aAAsBp1B,IAAbozB,EAAyBA,GAAYuC,EAAKuD,gBAAkB,EAC/G,OAAO,EACX,IAAKvD,EAAKhD,OAAO2P,QAAyC,IAA/B3M,EAAKhD,OAAOhJ,QAAQ15B,OAC3C,OAAO,EACX,QAAoB+P,IAAhBqiC,EACA,OAAO,EACX,MAAMvU,IAAS6H,EAAKhD,OAAO2P,OAAQhiC,EAAsC,QAA7B8hC,EAAKzM,EAAKhD,OAAO2P,cAA2B,IAAPF,EAAgBA,EAAKzM,EAAKhD,OAAOhJ,QAClH,IAAK,IAAWmI,EAAP/hC,EAAI,EAAMA,EAAIuQ,EAAMrQ,OAAQF,IAAK,CAEtC,GADA+hC,EAAIxxB,EAAMvQ,GACO,oBAAN+hC,GACPA,EAAEuQ,GACF,OAAOvU,EACN,GAAIgE,aAAa1U,WACFpd,IAAhBqiC,GACAvQ,EAAE1H,YAAciY,EAAYjY,UAC5B,OAAO0D,EACN,GAAiB,kBAANgE,EAAgB,CAC5B,MAAMvR,EAASoV,EAAKjC,UAAU5B,OAAG9xB,GAAW,GAC5C,OAAOugB,GAAUA,EAAO6J,YAAciY,EAAYjY,UAC5C0D,GACCA,EAEN,GAAiB,kBAANgE,QACI9xB,IAAhBqiC,GACAvQ,EAAExwB,MACFwwB,EAAEyQ,IACFF,EAAYjY,WAAa0H,EAAExwB,KAAK8oB,WAChCiY,EAAYjY,WAAa0H,EAAEyQ,GAAGnY,UAC9B,OAAO0D,EAEf,OAAQA,EAEZ,SAASuQ,GAASjQ,GACd,YAA2BpuB,IAAvB21B,EAAK8B,iBACyC,IAAtCrJ,EAAKC,UAAU99B,QAAQ,YACuB,IAAlD69B,EAAKC,UAAU99B,QAAQ,uBACvBolC,EAAK8B,cAAc8D,SAASnN,IAGxC,SAAS0M,GAAOhzB,GACZ,MAAM+5B,EAAU/5B,EAAElU,SAAW+hC,EAAK0C,QAC9BwJ,KACClM,EAAKiB,cAAc3mC,OAAS,GAAK0lC,EAAK0C,OAAO/jC,MAAMrE,OAAS,IAC3D6X,EAAEi6B,eAAiBJ,GAAe75B,EAAEi6B,gBACtCpM,EAAKtL,QAAQsL,EAAK0C,OAAO/jC,OAAO,EAAMwT,EAAElU,SAAW+hC,EAAK/M,SAClD+M,EAAKhD,OAAOhK,UACZgN,EAAKhD,OAAOpJ,YAG1B,SAASiC,GAAU1jB,GACf,MAAMsxB,EAAcxJ,EAAe9nB,GAC7B+5B,EAAUlM,EAAKhD,OAAOrO,KACtBmR,EAAQ8F,SAASnC,GACjBA,IAAgBzD,EAAK0C,OACrB5P,EAAakN,EAAKhD,OAAOlK,WACzB+Z,EAAe7M,EAAKU,UAAY5N,IAAeoZ,GAC/CY,EAAqB9M,EAAKhD,OAAO7H,QAAU+W,IAAYpZ,EAC7D,GAAkB,KAAd3gB,EAAEiN,SAAkB8sB,EAAS,CAC7B,GAAIpZ,EAIA,OAHAkN,EAAKtL,QAAQsL,EAAK0C,OAAO/jC,OAAO,EAAM8kC,IAAgBzD,EAAK/M,SACrD+M,EAAKhD,OAAOhK,UACZgN,EAAKhD,OAAOpJ,YACX6P,EAAYxe,OAGnB+a,EAAK2E,YAGR,GAAIqH,GAAevI,IACpBoJ,GACAC,EAAoB,CACpB,MAAMC,IAAc/M,EAAK+E,eACrB/E,EAAK+E,cAAca,SAASnC,GAChC,OAAQtxB,EAAEiN,SACN,KAAK,GACG2tB,GACA56B,EAAEqU,iBACF4b,IACA4K,MAGAlI,GAAW3yB,GACf,MACJ,KAAK,GACDA,EAAEqU,iBACFwmB,KACA,MACJ,KAAK,EACL,KAAK,GACGd,IAAYlM,EAAKhD,OAAOlK,aACxB3gB,EAAEqU,iBACFwZ,EAAKsL,SAET,MACJ,KAAK,GACL,KAAK,GACD,GAAKyB,GAAcb,EAeVlM,EAAK+C,aACV/C,EAAK+C,YAAYhe,aAdjB,GADA5S,EAAEqU,sBACyBnc,IAAvB21B,EAAK8B,iBACW,IAAfhP,GACIjY,SAAS2S,eAAiBkb,GAAS7tB,SAAS2S,gBAAkB,CACnE,MAAMkW,EAAsB,KAAdvxB,EAAEiN,QAAiB,GAAK,EACjCjN,EAAEsC,SAGHtC,EAAE86B,kBACF3E,GAAY5E,GACZ6E,EAAWZ,EAAqB,GAAI,IAJpCY,OAAWl+B,EAAWq5B,GAUlC,MACJ,KAAK,GACL,KAAK,GACDvxB,EAAEqU,iBACF,MAAMkd,EAAsB,KAAdvxB,EAAEiN,QAAiB,GAAK,EACjC4gB,EAAK8B,oBACaz3B,IAAnBo5B,EAAY0D,IACZ1D,IAAgBzD,EAAKplB,OACrB6oB,IAAgBzD,EAAK/M,SACjB9gB,EAAEsC,SACFtC,EAAE86B,kBACFtJ,GAAW3D,EAAKQ,YAAckD,GAC9B6E,EAAWZ,EAAqB,GAAI,IAE9BoF,GACNxE,OAAWl+B,EAAmB,EAARq5B,GAErBD,IAAgBzD,EAAKyK,mBAC1B9G,GAAW3D,EAAKQ,YAAckD,GAEzB1D,EAAKhD,OAAO7I,cACZ4Y,GAAa/M,EAAK+C,aACnB/C,EAAK+C,YAAYhe,QACrBqd,EAAWjwB,GACX6tB,EAAK4C,oBAET,MACJ,KAAK,EACD,GAAImK,EAAW,CACX,MAAMG,EAAQ,CACVlN,EAAK+C,YACL/C,EAAKgD,cACLhD,EAAKiD,cACLjD,EAAKpI,MAEJz6B,OAAO6iC,EAAKmN,gBACZxvC,OAAQyvC,GAAMA,GACbhzC,EAAI8yC,EAAMtyC,QAAQ6oC,GACxB,IAAW,IAAPrpC,EAAU,CACV,MAAM6D,EAASivC,EAAM9yC,GAAK+X,EAAEqC,UAAY,EAAI,IAC5CrC,EAAEqU,kBACDvoB,GAAU+hC,EAAK0C,QAAQ3d,cAGtBib,EAAKhD,OAAOxH,YAClBwK,EAAK8B,eACL9B,EAAK8B,cAAc8D,SAASnC,IAC5BtxB,EAAEqC,WACFrC,EAAEqU,iBACFwZ,EAAK0C,OAAO3d,SAEhB,MACJ,QACI,OAGZ,QAAkB1a,IAAd21B,EAAKpI,MAAsB6L,IAAgBzD,EAAKpI,KAChD,OAAQzlB,EAAE9T,KACN,KAAK2hC,EAAK/C,KAAKrF,KAAK,GAAGyV,OAAO,GAC9B,KAAKrN,EAAK/C,KAAKrF,KAAK,GAAGyV,OAAO,GAAGptB,cAC7B+f,EAAKpI,KAAKoB,YAAcgH,EAAK/C,KAAKrF,KAAK,GACvC+K,IACAvB,KACA,MACJ,KAAKpB,EAAK/C,KAAKrF,KAAK,GAAGyV,OAAO,GAC9B,KAAKrN,EAAK/C,KAAKrF,KAAK,GAAGyV,OAAO,GAAGptB,cAC7B+f,EAAKpI,KAAKoB,YAAcgH,EAAK/C,KAAKrF,KAAK,GACvC+K,IACAvB,KACA,OAGR8K,GAAWF,GAAevI,KAC1BjC,GAAa,YAAarvB,GAGlC,SAASmyB,GAAY7L,GACjB,GAAkC,IAA9BuH,EAAKiB,cAAc3mC,QAClBm+B,KACKA,EAAKE,UAAUiN,SAAS,kBACtBnN,EAAKE,UAAUiN,SAAS,uBAChC,OACJ,MAAM0H,EAAY7U,EACZA,EAAKkC,QAAQlG,UACbuL,EAAKgC,KAAKuL,kBAAkB5S,QAAQlG,UAAW+Y,EAAcxN,EAAKjC,UAAUiC,EAAKiB,cAAc,QAAI52B,GAAW,GAAMoqB,UAAWgZ,EAAiB1Y,KAAKlG,IAAIye,EAAWtN,EAAKiB,cAAc,GAAGxM,WAAYiZ,EAAe3Y,KAAK7F,IAAIoe,EAAWtN,EAAKiB,cAAc,GAAGxM,WACrQ,IAAIkZ,GAAmB,EACnBC,EAAW,EAAGC,EAAW,EAC7B,IAAK,IAAIvV,EAAImV,EAAgBnV,EAAIoV,EAAcpV,GAAK4G,EAASC,IACpD8H,GAAU,IAAIxf,KAAK6Q,IAAI,KACxBqV,EACIA,GAAqBrV,EAAImV,GAAkBnV,EAAIoV,EAC/CpV,EAAIkV,KAAiBI,GAAYtV,EAAIsV,GACrCA,EAAWtV,EACNA,EAAIkV,KAAiBK,GAAYvV,EAAIuV,KAC1CA,EAAWvV,IAGvB,IAAK,IAAIgE,EAAI,EAAGA,EAAI0D,EAAKhD,OAAOtG,WAAY4F,IAAK,CAC7C,MAAMC,EAAQyD,EAAK8B,cAAc9kC,SAASs/B,GAC1C,IAAK,IAAIliC,EAAI,EAAGiiC,EAAIE,EAAMv/B,SAAS1C,OAAQF,EAAIiiC,EAAGjiC,IAAK,CACnD,MAAM0zC,EAAUvR,EAAMv/B,SAAS5C,GAAIo6B,EAAOsZ,EAAQnT,QAC5CoT,EAAYvZ,EAAKC,UACjBuZ,EAAcJ,EAAW,GAAKG,EAAYH,GAC3CC,EAAW,GAAKE,EAAYF,EAC7BG,GACAF,EAAQnV,UAAUC,IAAI,cACtB,CAAC,UAAW,aAAc,YAAYx6B,QAASk/B,IAC3CwQ,EAAQnV,UAAUE,OAAOyE,MAIxBqQ,IAAqBK,IAE9B,CAAC,aAAc,UAAW,WAAY,cAAc5vC,QAASk/B,IACzDwQ,EAAQnV,UAAUE,OAAOyE,UAEhBjzB,IAATouB,IACAA,EAAKE,UAAUC,IAAI0U,GAAatN,EAAKiB,cAAc,GAAGxM,UAChD,aACA,YACF+Y,EAAcF,GAAaS,IAAcP,EACzCM,EAAQnV,UAAUC,IAAI,cACjB4U,EAAcF,GAAaS,IAAcP,GAC9CM,EAAQnV,UAAUC,IAAI,YACtBmV,GAAaH,IACC,IAAbC,GAAkBE,GAAaF,IAChC/O,EAAUiP,EAAWP,EAAaF,IAClCQ,EAAQnV,UAAUC,IAAI,eAK1C,SAASyL,MACDrE,EAAKU,QAAWV,EAAKhD,OAAOrG,QAAWqJ,EAAKhD,OAAO7H,QACnDoM,KAER,SAASoD,GAAKxyB,EAAGokB,EAAkByJ,EAAKiO,kBACpC,IAAsB,IAAlBjO,EAAK9C,SAAmB,CACxB,GAAI/qB,EAAG,CACHA,EAAEqU,iBACF,MAAMid,EAAcxJ,EAAe9nB,GAC/BsxB,GACAA,EAAYxe,OAQpB,YALyB5a,IAArB21B,EAAKyL,cACLzL,EAAKyL,YAAY1mB,QACjBib,EAAKyL,YAAYnrB,cAErBkhB,GAAa,UAGZ,GAAIxB,EAAK0C,OAAOjoB,UAAYulB,EAAKhD,OAAO7H,OACzC,OAEJ,MAAM+Y,EAAUlO,EAAKU,OACrBV,EAAKU,QAAS,EACTwN,IACDlO,EAAK2B,kBAAkBhJ,UAAUC,IAAI,QACrCoH,EAAK0C,OAAO/J,UAAUC,IAAI,UAC1B4I,GAAa,UACbD,GAAiBhL,KAEU,IAA3ByJ,EAAKhD,OAAO7I,aAAkD,IAA3B6L,EAAKhD,OAAOxH,cAChB,IAA3BwK,EAAKhD,OAAOlK,iBACLzoB,IAAN8H,GACI6tB,EAAK+E,cAAca,SAASzzB,EAAEi6B,gBACnCj+B,WAAW,IAAM6xB,EAAK+C,YAAYkC,SAAU,KAIxD,SAASkJ,GAAiB1+B,GACtB,OAAQ+kB,IACJ,MAAMmG,EAAWqF,EAAKhD,OAAO,IAAIvtB,SAAcuwB,EAAKjC,UAAUvJ,EAAMwL,EAAKhD,OAAOpJ,YAC1Ewa,EAAiBpO,EAAKhD,OAAO,IAAa,QAATvtB,EAAiB,MAAQ,kBAChDpF,IAAZswB,IACAqF,EAAc,QAATvwB,EAAiB,iBAAmB,kBACrCkrB,EAAQ5J,WAAa,GACjB4J,EAAQ3J,aAAe,GACvB2J,EAAQ1J,aAAe,GAE/B+O,EAAKiB,gBACLjB,EAAKiB,cAAgBjB,EAAKiB,cAActjC,OAAQw+B,GAAM8K,GAAU9K,IAC3D6D,EAAKiB,cAAc3mC,QAAmB,QAATmV,GAC9ByxB,EAAiBvG,GACrByG,MAEApB,EAAK8B,gBACL4D,UACgBr7B,IAAZswB,EACAqF,EAAKyK,mBAAmBh7B,GAAQkrB,EAAQ7F,cAAcvpB,WAEtDy0B,EAAKyK,mBAAmBsB,gBAAgBt8B,GAC5CuwB,EAAKyK,mBAAmBhwB,WAClB2zB,QACc/jC,IAAZswB,GACAyT,EAAetZ,gBAAkB6F,EAAQ7F,gBAI7D,SAAS6L,KACL,MAAM0N,EAAW,CACb,OACA,cACA,aACA,sBACA,aACA,YACA,aACA,aACA,WACA,wBACA,SACA,SACA,gBACA,iBAEEC,EAAa9wC,OAAOyiC,OAAOziC,OAAOyiC,OAAO,GAAIsO,KAAKC,MAAMD,KAAKE,UAAU3O,EAAQ4O,SAAW,MAAO3O,GACjG4O,EAAU,GAChB3O,EAAKhD,OAAOe,UAAYuQ,EAAWvQ,UACnCiC,EAAKhD,OAAOK,WAAaiR,EAAWjR,WACpC7/B,OAAOiB,eAAeuhC,EAAKhD,OAAQ,SAAU,CACzCxnB,IAAK,IAAMwqB,EAAKhD,OAAO4R,QACvBC,IAAMC,IACF9O,EAAKhD,OAAO4R,QAAUG,GAAeD,MAG7CtxC,OAAOiB,eAAeuhC,EAAKhD,OAAQ,UAAW,CAC1CxnB,IAAK,IAAMwqB,EAAKhD,OAAOnK,SACvBgc,IAAMC,IACF9O,EAAKhD,OAAOnK,SAAWkc,GAAeD,MAG9C,MAAME,EAA+B,SAApBV,EAAWjZ,KAC5B,IAAKiZ,EAAW1a,aAAe0a,EAAWna,YAAc6a,GAAW,CAC/D,MAAMC,EAAoB/O,EAAUC,cAAcvM,YAAc,EAAeA,WAC/E+a,EAAQ/a,WACJ0a,EAAW9Y,YAAcwZ,EACnB,OAASV,EAAWpa,cAAgB,KAAO,IAC3C+a,EAAoB,QAAUX,EAAWpa,cAAgB,KAAO,IAE9E,GAAIoa,EAAWrb,WACVqb,EAAWna,YAAc6a,KACzBV,EAAWtb,UAAW,CACvB,MAAMkc,EAAmBhP,EAAUC,cAAcnN,WAAa,EAAeA,UAC7E2b,EAAQ3b,UACJsb,EAAW9Y,YAAcwZ,EACnB,OAASV,EAAWpa,cAAgB,OAAS,MAC7Cgb,EAAmB,OAAOZ,EAAWpa,cAAgB,KAAO,OAE1E12B,OAAOiB,eAAeuhC,EAAKhD,OAAQ,UAAW,CAC1CxnB,IAAK,IAAMwqB,EAAKhD,OAAOmS,SACvBN,IAAKV,GAAiB,SAE1B3wC,OAAOiB,eAAeuhC,EAAKhD,OAAQ,UAAW,CAC1CxnB,IAAK,IAAMwqB,EAAKhD,OAAOoS,SACvBP,IAAKV,GAAiB,SAE1B,MAAMkB,EAAoB5/B,GAAUgvB,IAChCuB,EAAKhD,OAAgB,QAATvtB,EAAiB,WAAa,YAAcuwB,EAAKjC,UAAUU,EAAK,UAEhFjhC,OAAOiB,eAAeuhC,EAAKhD,OAAQ,UAAW,CAC1CxnB,IAAK,IAAMwqB,EAAKhD,OAAOsS,SACvBT,IAAKQ,EAAiB,SAE1B7xC,OAAOiB,eAAeuhC,EAAKhD,OAAQ,UAAW,CAC1CxnB,IAAK,IAAMwqB,EAAKhD,OAAOuS,SACvBV,IAAKQ,EAAiB,SAEF,SAApBf,EAAWjZ,OACX2K,EAAKhD,OAAOxH,YAAa,EACzBwK,EAAKhD,OAAO7I,YAAa,GAE7B32B,OAAOyiC,OAAOD,EAAKhD,OAAQ2R,EAASL,GACpC,IAAK,IAAIl0C,EAAI,EAAGA,EAAIi0C,EAAS/zC,OAAQF,IACjC4lC,EAAKhD,OAAOqR,EAASj0C,KACY,IAA7B4lC,EAAKhD,OAAOqR,EAASj0C,KACY,SAA7B4lC,EAAKhD,OAAOqR,EAASj0C,IACjCw4B,EAAMj1B,OAAQ6xC,QAA+BnlC,IAAtB21B,EAAKhD,OAAOwS,IAAqBpxC,QAASoxC,IAC7DxP,EAAKhD,OAAOwS,GAAQjX,EAASyH,EAAKhD,OAAOwS,IAAS,IAAIjmC,IAAIk4B,KAE9DzB,EAAK9C,UACA8C,EAAKhD,OAAO/I,gBACR+L,EAAKhD,OAAO7H,QACQ,WAArB6K,EAAKhD,OAAO3H,OACX2K,EAAKhD,OAAOhJ,QAAQ15B,SACpB0lC,EAAKhD,OAAO2P,SACZ3M,EAAKhD,OAAOnG,aACb,iEAAiEjrB,KAAKynB,UAAUC,WACxF,IAAK,IAAIl5B,EAAI,EAAGA,EAAI4lC,EAAKhD,OAAO3G,QAAQ/7B,OAAQF,IAAK,CACjD,MAAMq1C,EAAazP,EAAKhD,OAAO3G,QAAQj8B,GAAG4lC,IAAS,GACnD,IAAK,MAAM3hC,KAAOoxC,EACV7c,EAAMh4B,QAAQyD,IAAQ,EACtB2hC,EAAKhD,OAAO3+B,GAAOk6B,EAASkX,EAAWpxC,IAClCkL,IAAIk4B,GACJtkC,OAAO6iC,EAAKhD,OAAO3+B,IAEQ,qBAApBiwC,EAAWjwC,KACvB2hC,EAAKhD,OAAO3+B,GAAOoxC,EAAWpxC,IAGrCiwC,EAAWpb,gBACZ8M,EAAKhD,OAAO9J,cACRwc,KAAehX,UAAY,IAAMsH,EAAKhD,OAAO9J,eAErDsO,GAAa,iBAEjB,SAASkO,KACL,OAAO1P,EAAKhD,OAAOrO,KACbmR,EAAQ6P,cAAc,gBACtB7P,EAEV,SAASc,KAC6B,kBAAvBZ,EAAKhD,OAAO9nB,QAC4B,qBAAxCgrB,EAAU0P,MAAM5P,EAAKhD,OAAO9nB,SACnC8qB,EAAKhD,OAAO5I,aAAa,IAAI15B,MAAM,6BAA6BslC,EAAKhD,OAAO9nB,SAChF8qB,EAAK/C,KAAOz/B,OAAOyiC,OAAOziC,OAAOyiC,OAAO,GAAIC,EAAU0P,MAAM3rC,SAAyC,kBAAvB+7B,EAAKhD,OAAO9nB,OACpF8qB,EAAKhD,OAAO9nB,OACW,YAAvB8qB,EAAKhD,OAAO9nB,OACRgrB,EAAU0P,MAAM5P,EAAKhD,OAAO9nB,aAC5B7K,GACVuyB,EAAWzB,EAAI,IAAI6E,EAAK/C,KAAKrF,KAAK,MAAMoI,EAAK/C,KAAKrF,KAAK,MAAMoI,EAAK/C,KAAKrF,KAAK,GAAG3X,iBAAiB+f,EAAK/C,KAAKrF,KAAK,GAAG3X,iBAClH,MAAMquB,EAAa9wC,OAAOyiC,OAAOziC,OAAOyiC,OAAO,GAAIF,GAAiBwO,KAAKC,MAAMD,KAAKE,UAAU3O,EAAQ4O,SAAW,WACpFrkC,IAAzBikC,EAAW1X,gBAC2BvsB,IAAtC61B,EAAUC,cAAcvJ,YACxBoJ,EAAKhD,OAAOpG,UAAYoJ,EAAK/C,KAAKrG,WAEtCoJ,EAAK3C,WAAarV,EAAoBgY,GACtCA,EAAKjC,UAAYR,EAAiB,CAAEP,OAAQgD,EAAKhD,OAAQC,KAAM+C,EAAK/C,OAExE,SAASsE,GAAiBsO,GACtB,GAAoC,oBAAzB7P,EAAKhD,OAAO1G,SACnB,YAAY0J,EAAKhD,OAAO1G,SAAS0J,EAAM6P,GAE3C,QAA+BxlC,IAA3B21B,EAAK2B,kBACL,OACJH,GAAa,yBACb,MAAMjL,EAAkBsZ,GAAyB7P,EAAKiO,iBAChD6B,EAAiB51C,MAAMoR,UAAUxB,OAAO0B,KAAKw0B,EAAK2B,kBAAkB3kC,SAAU,CAAE+yC,EAAKC,IAAUD,EAAMC,EAAMC,aAAe,GAAIC,EAAgBlQ,EAAK2B,kBAAkBM,YAAakO,EAAYnQ,EAAKhD,OAAO1G,SAASjN,MAAM,KAAM+mB,EAAoBD,EAAU,GAAIE,EAAsBF,EAAU71C,OAAS,EAAI61C,EAAU,GAAK,KAAMG,EAAc/Z,EAAgBga,wBAAyBC,EAAqBpd,OAAOqd,YAAcH,EAAY1vC,OAAQ8vC,EAAkC,UAAtBN,GAC/a,UAAtBA,GACGI,EAAqBV,GACrBQ,EAAYzvC,IAAMivC,EACpBjvC,EAAMuyB,OAAOud,YACfL,EAAYzvC,KACV6vC,GAAgDZ,EAAiB,EAArDvZ,EAAgB0Z,aAAe,GAGjD,GAFAzX,EAAYwH,EAAK2B,kBAAmB,YAAa+O,GACjDlY,EAAYwH,EAAK2B,kBAAmB,cAAe+O,GAC/C1Q,EAAKhD,OAAO7H,OACZ,OACJ,IAAI9zB,EAAO+xB,OAAOwd,YAAcN,EAAYjvC,KACxCwvC,GAAW,EACXC,GAAU,EACc,WAAxBT,GACAhvC,IAAS6uC,EAAgBI,EAAYrvC,OAAS,EAC9C4vC,GAAW,GAEkB,UAAxBR,IACLhvC,GAAQ6uC,EAAgBI,EAAYrvC,MACpC6vC,GAAU,GAEdtY,EAAYwH,EAAK2B,kBAAmB,aAAckP,IAAaC,GAC/DtY,EAAYwH,EAAK2B,kBAAmB,cAAekP,GACnDrY,EAAYwH,EAAK2B,kBAAmB,aAAcmP,GAClD,MAAM1vC,EAAQgyB,OAAOvY,SAAS0pB,KAAKtC,aAC9B7O,OAAOwd,YAAcN,EAAYlvC,OAChC2vC,EAAY1vC,EAAO6uC,EAAgB9c,OAAOvY,SAAS0pB,KAAKtC,YACxD+O,EAAa5vC,EAAQ8uC,EAAgB9c,OAAOvY,SAAS0pB,KAAKtC,YAEhE,GADAzJ,EAAYwH,EAAK2B,kBAAmB,YAAaoP,IAC7C/Q,EAAKhD,OAAOrG,OAGhB,GADAqJ,EAAK2B,kBAAkB5nB,MAAMlZ,IAASA,EAAH,KAC9BkwC,EAIA,GAAKC,EAIL,CACD,MAAMC,EAAMC,KACZ,QAAY7mC,IAAR4mC,EACA,OACJ,MAAME,EAAY/d,OAAOvY,SAAS0pB,KAAKtC,YACjCmP,EAAarc,KAAK7F,IAAI,EAAGiiB,EAAY,EAAIjB,EAAgB,GACzDmB,EAAe,wCACfC,EAAc,uCACdC,EAAcN,EAAIO,SAASl3C,OAC3Bm3C,EAAc,SAASnB,EAAYjvC,sBACzCm3B,EAAYwH,EAAK2B,kBAAmB,aAAa,GACjDnJ,EAAYwH,EAAK2B,kBAAmB,cAAc,GAClDsP,EAAIS,WAAW,GAAGL,KAAgBC,IAAcG,IAAeF,GAC/DvR,EAAK2B,kBAAkB5nB,MAAM1Y,KAAU+vC,EAAH,KACpCpR,EAAK2B,kBAAkB5nB,MAAM3Y,MAAQ,YAjBrC4+B,EAAK2B,kBAAkB5nB,MAAM1Y,KAAO,OACpC2+B,EAAK2B,kBAAkB5nB,MAAM3Y,MAAWA,EAAH,UALrC4+B,EAAK2B,kBAAkB5nB,MAAM1Y,KAAUA,EAAH,KACpC2+B,EAAK2B,kBAAkB5nB,MAAM3Y,MAAQ,OAuB7C,SAAS8vC,KACL,IAAIS,EAAgB,KACpB,IAAK,IAAIv3C,EAAI,EAAGA,EAAIygB,SAAS+2B,YAAYt3C,OAAQF,IAAK,CAClD,MAAMy3C,EAAQh3B,SAAS+2B,YAAYx3C,GACnC,IACIy3C,EAAML,SAEV,MAAO1oB,GACH,SAEJ6oB,EAAgBE,EAChB,MAEJ,OAAwB,MAAjBF,EAAwBA,EAAgBG,KAEnD,SAASA,KACL,MAAM/3B,EAAQc,SAASie,cAAc,SAErC,OADAje,SAASk3B,KAAK/X,YAAYjgB,GACnBA,EAAM83B,MAEjB,SAASnM,KACD1F,EAAKhD,OAAOxH,YAAcwK,EAAK9C,WAEnCuI,IACAiF,KACAnE,KAEJ,SAASyG,KACLhN,EAAK0C,OAAO3d,SACwC,IAAhDqO,OAAOC,UAAUC,UAAU14B,QAAQ,cACJyP,IAA/BgpB,UAAU2e,iBACV7jC,WAAW6xB,EAAK2L,MAAO,GAGvB3L,EAAK2L,QAGb,SAAS7G,GAAW3yB,GAChBA,EAAEqU,iBACFrU,EAAE86B,kBACF,MAAMl6B,EAAgBmoB,GAAQA,EAAIvC,WAC9BuC,EAAIvC,UAAUiN,SAAS,mBACtB1K,EAAIvC,UAAUiN,SAAS,wBACvB1K,EAAIvC,UAAUiN,SAAS,cACtBtN,EAAIe,EAAWY,EAAe9nB,GAAIY,GACxC,QAAU1I,IAANiuB,EACA,OACJ,MAAMr6B,EAASq6B,EACT2Z,EAAgBjS,EAAKmB,sBAAwB,IAAI1Z,KAAKxpB,EAAO08B,QAAQlG,WACrEyd,GAAqBD,EAAanV,WAAakD,EAAKM,cACtD2R,EAAanV,WACTkD,EAAKM,aAAeN,EAAKhD,OAAOtG,WAAa,IAC5B,UAArBsJ,EAAKhD,OAAO3H,KAEhB,GADA2K,EAAKsH,iBAAmBrpC,EACC,WAArB+hC,EAAKhD,OAAO3H,KACZ2K,EAAKiB,cAAgB,CAACgR,QACrB,GAAyB,aAArBjS,EAAKhD,OAAO3H,KAAqB,CACtC,MAAM8c,EAAgB9K,GAAe4K,GACjCE,EACAnS,EAAKiB,cAAciK,OAAOrP,SAASsW,GAAgB,GAEnDnS,EAAKiB,cAAcvlC,KAAKu2C,OAEF,UAArBjS,EAAKhD,OAAO3H,OACiB,IAA9B2K,EAAKiB,cAAc3mC,QACnB0lC,EAAKsL,OAAM,GAAO,GAEtBtL,EAAKmB,sBAAwB8Q,EAC7BjS,EAAKiB,cAAcvlC,KAAKu2C,GACwC,IAA5DtT,EAAasT,EAAcjS,EAAKiB,cAAc,IAAI,IAClDjB,EAAKiB,cAAc33B,KAAK,CAACuL,EAAGC,IAAMD,EAAE4f,UAAY3f,EAAE2f,YAG1D,GADAkO,IACIuP,EAAmB,CACnB,MAAM1F,EAAYxM,EAAKQ,cAAgByR,EAAand,cACpDkL,EAAKQ,YAAcyR,EAAand,cAChCkL,EAAKM,aAAe2R,EAAanV,WAC7B0P,IACAhL,GAAa,gBACbiE,KAEJjE,GAAa,iBAejB,GAbAkJ,KACAnE,IACAnF,KACK8Q,GACoB,UAArBlS,EAAKhD,OAAO3H,MACe,IAA3B2K,EAAKhD,OAAOtG,gBAEmBrsB,IAA1B21B,EAAKsH,uBACWj9B,IAArB21B,EAAK+C,aACL/C,EAAKsH,kBAAoBtH,EAAKsH,iBAAiBviB,QAH/C0iB,EAAexpC,QAKMoM,IAArB21B,EAAK+C,kBACgB14B,IAArB21B,EAAK+C,aAA6B/C,EAAK+C,YAAYhe,QACnDib,EAAKhD,OAAOtJ,cAAe,CAC3B,MAAM0e,EAA8B,WAArBpS,EAAKhD,OAAO3H,OAAsB2K,EAAKhD,OAAO7I,WACvDke,EAA6B,UAArBrS,EAAKhD,OAAO3H,MACQ,IAA9B2K,EAAKiB,cAAc3mC,SAClB0lC,EAAKhD,OAAO7I,YACbie,GAAUC,IACVrF,KAGRhJ,IA3/CJhE,EAAKjC,UAAYR,EAAiB,CAAEP,OAAQgD,EAAKhD,OAAQC,KAAM+C,EAAK/C,OACpE+C,EAAK8D,UAAY,GACjB9D,EAAKmN,eAAiB,GACtBnN,EAAKsS,cAAgB,GACrBtS,EAAKuS,MAAQzzC,EACbkhC,EAAKwS,kBAAoBtR,EACzBlB,EAAKyS,kBAAoBlR,GACzBvB,EAAKsI,YAAcA,GACnBtI,EAAK2D,WAAaA,GAClB3D,EAAKsL,MAAQA,GACbtL,EAAK2L,MAAQA,GACb3L,EAAK0S,eAAiB5Z,EACtBkH,EAAK4L,QAAUA,GACf5L,EAAKiH,UAAYA,GACjBjH,EAAKoF,WAAaA,EAClBpF,EAAK2E,KAAOA,GACZ3E,EAAK0F,OAASA,GACd1F,EAAK6O,IAAMA,GACX7O,EAAKtL,QAAUA,GACfsL,EAAKhb,OAASA,GA0+Cd,MAAM2tB,GAAY,CACdz9B,OAAQ,CAAC0rB,GAAaqK,IACtBvU,WAAY,CAACwT,EAAa7I,EAAkBiF,IAC5CjH,QAAS,CAAC+F,GACV3F,QAAS,CAAC2F,GACV3R,WAAY,CACR,MACmC,IAA3BuM,EAAKhD,OAAOvJ,YACZ30B,EAAKkhC,EAAK0C,OAAQ,QAAS1C,EAAK2E,MAChC7lC,EAAKkhC,EAAK0C,OAAQ,QAAS1C,EAAK2E,QAGhC3E,EAAK0C,OAAOqB,oBAAoB,QAAS/D,EAAK2E,MAC9C3E,EAAK0C,OAAOqB,oBAAoB,QAAS/D,EAAK2E,UAK9D,SAASkK,GAAI+D,EAAQj0C,GACjB,GAAe,OAAXi0C,GAAqC,kBAAXA,EAAqB,CAC/Cp1C,OAAOyiC,OAAOD,EAAKhD,OAAQ4V,GAC3B,IAAK,MAAMv0C,KAAOu0C,OACSvoC,IAAnBsoC,GAAUt0C,IACVs0C,GAAUt0C,GAAKD,QAASgvC,GAAMA,UAItCpN,EAAKhD,OAAO4V,GAAUj0C,OACI0L,IAAtBsoC,GAAUC,GACVD,GAAUC,GAAQx0C,QAASgvC,GAAMA,KAC5Bxa,EAAMh4B,QAAQg4C,IAAW,IAC9B5S,EAAKhD,OAAO4V,GAAUra,EAAS55B,IAEvCqhC,EAAK0F,SACLtE,IAAY,GAEhB,SAASyR,GAAgBC,EAAWzqB,GAChC,IAAIymB,EAAQ,GACZ,GAAIgE,aAAqB54C,MACrB40C,EAAQgE,EAAUvpC,IAAK4yB,GAAM6D,EAAKjC,UAAU5B,EAAG9T,SAC9C,GAAIyqB,aAAqBrrB,MAA6B,kBAAdqrB,EACzChE,EAAQ,CAAC9O,EAAKjC,UAAU+U,EAAWzqB,SAClC,GAAyB,kBAAdyqB,EACZ,OAAQ9S,EAAKhD,OAAO3H,MAChB,IAAK,SACL,IAAK,OACDyZ,EAAQ,CAAC9O,EAAKjC,UAAU+U,EAAWzqB,IACnC,MACJ,IAAK,WACDymB,EAAQgE,EACHzpB,MAAM2W,EAAKhD,OAAOrJ,aAClBpqB,IAAKirB,GAASwL,EAAKjC,UAAUvJ,EAAMnM,IACxC,MACJ,IAAK,QACDymB,EAAQgE,EACHzpB,MAAM2W,EAAK/C,KAAKzF,gBAChBjuB,IAAKirB,GAASwL,EAAKjC,UAAUvJ,EAAMnM,IACxC,MACJ,QACI,WAIR2X,EAAKhD,OAAO5I,aAAa,IAAI15B,MAAM,0BAA0B6zC,KAAKE,UAAUqE,KAChF9S,EAAKiB,cAAiBjB,EAAKhD,OAAOjK,oBAC5B+b,EACAA,EAAMnxC,OAAQw+B,GAAMA,aAAa1U,MAAQwf,GAAU9K,GAAG,IACnC,UAArB6D,EAAKhD,OAAO3H,MACZ2K,EAAKiB,cAAc33B,KAAK,CAACuL,EAAGC,IAAMD,EAAE4f,UAAY3f,EAAE2f,WAE1D,SAASC,GAAQF,EAAMwP,GAAgB,EAAO3b,EAAS2X,EAAKhD,OAAOpJ,YAC/D,GAAc,IAATY,IAAeA,GAAUA,aAAgBt6B,OAAyB,IAAhBs6B,EAAKl6B,OACxD,OAAO0lC,EAAKsL,MAAMtH,GACtB6O,GAAgBre,EAAMnM,GACtB2X,EAAKmB,sBACDnB,EAAKiB,cAAcjB,EAAKiB,cAAc3mC,OAAS,GACnD0lC,EAAK0F,SACLN,OAAW/6B,EAAW25B,GACtB9C,IACkC,IAA9BlB,EAAKiB,cAAc3mC,QACnB0lC,EAAKsL,OAAM,GAEflK,GAAY4C,GACRA,GACAxC,GAAa,YAErB,SAASuN,GAAe9zC,GACpB,OAAOA,EACFwQ,QACAlC,IAAKwpC,GACc,kBAATA,GACS,kBAATA,GACPA,aAAgBtrB,KACTuY,EAAKjC,UAAUgV,OAAM1oC,GAAW,GAElC0oC,GACW,kBAATA,GACPA,EAAKpnC,MACLonC,EAAKnG,GACE,CACHjhC,KAAMq0B,EAAKjC,UAAUgV,EAAKpnC,UAAMtB,GAChCuiC,GAAI5M,EAAKjC,UAAUgV,EAAKnG,QAAIviC,IAE7B0oC,GAENp1C,OAAQyvC,GAAMA,GAEvB,SAAStM,KACLd,EAAKiB,cAAgB,GACrBjB,EAAKlP,IAAMkP,EAAKjC,UAAUiC,EAAKhD,OAAOlM,MAAQ,IAAIrJ,KAClD,MAAMurB,EAAgBhT,EAAKhD,OAAOqF,cACJ,UAAxBrC,EAAKplB,MAAMq4B,UACe,aAAxBjT,EAAKplB,MAAMq4B,WACXjT,EAAKplB,MAAMuJ,aACX6b,EAAKplB,MAAMjc,QAAUqhC,EAAKplB,MAAMuJ,YAE9B6b,EAAKplB,MAAMjc,MADX,MAENq0C,GACAH,GAAgBG,EAAehT,EAAKhD,OAAOpJ,YAC/CoM,EAAK0L,aACD1L,EAAKiB,cAAc3mC,OAAS,EACtB0lC,EAAKiB,cAAc,GACnBjB,EAAKhD,OAAOqC,SACVW,EAAKhD,OAAOqC,QAAQ5K,UAAYuL,EAAKlP,IAAI2D,UACvCuL,EAAKhD,OAAOqC,QACZW,EAAKhD,OAAOyC,SACVO,EAAKhD,OAAOyC,QAAQhL,UAAYuL,EAAKlP,IAAI2D,UACvCuL,EAAKhD,OAAOyC,QACZO,EAAKlP,IACvBkP,EAAKQ,YAAcR,EAAK0L,aAAa5W,cACrCkL,EAAKM,aAAeN,EAAK0L,aAAa5O,WAClCkD,EAAKiB,cAAc3mC,OAAS,IAC5B0lC,EAAKmB,sBAAwBnB,EAAKiB,cAAc,SACxB52B,IAAxB21B,EAAKhD,OAAOmG,UACZnD,EAAKhD,OAAOmG,QAAUnD,EAAKjC,UAAUiC,EAAKhD,OAAOmG,QAAS,aAClC94B,IAAxB21B,EAAKhD,OAAOsG,UACZtD,EAAKhD,OAAOsG,QAAUtD,EAAKjC,UAAUiC,EAAKhD,OAAOsG,QAAS,QAC9DtD,EAAKoD,iBACCpD,EAAKhD,OAAOqC,UACTW,EAAKhD,OAAOqC,QAAQtO,WAAa,GAC9BiP,EAAKhD,OAAOqC,QAAQrO,aAAe,GACnCgP,EAAKhD,OAAOqC,QAAQpO,aAAe,GAC/C+O,EAAKuD,iBACCvD,EAAKhD,OAAOyC,UACTO,EAAKhD,OAAOyC,QAAQ1O,WAAa,GAC9BiP,EAAKhD,OAAOyC,QAAQzO,aAAe,GACnCgP,EAAKhD,OAAOyC,QAAQxO,aAAe,GAEnD,SAAS4P,KACLb,EAAKplB,MAAQ80B,KACR1P,EAAKplB,OAIVolB,EAAKplB,MAAMkxB,MAAQ9L,EAAKplB,MAAMnL,KAC9BuwB,EAAKplB,MAAMnL,KAAO,OAClBuwB,EAAKplB,MAAM+d,UAAUC,IAAI,mBACzBoH,EAAK0C,OAAS1C,EAAKplB,MACfolB,EAAKhD,OAAO/J,WACZ+M,EAAK/M,SAAW6F,EAAckH,EAAKplB,MAAMq4B,SAAUjT,EAAKhD,OAAO9J,eAC/D8M,EAAK0C,OAAS1C,EAAK/M,SACnB+M,EAAK/M,SAAS9O,YAAc6b,EAAKplB,MAAMuJ,YACvC6b,EAAK/M,SAASxY,SAAWulB,EAAKplB,MAAMH,SACpCulB,EAAK/M,SAASxxB,SAAWu+B,EAAKplB,MAAMnZ,SACpCu+B,EAAK/M,SAAS5T,SAAW2gB,EAAKplB,MAAMyE,SACpC2gB,EAAK/M,SAASxjB,KAAO,OACrBuwB,EAAKplB,MAAMmf,aAAa,OAAQ,WAC3BiG,EAAKhD,OAAOrG,QAAUqJ,EAAKplB,MAAM2e,YAClCyG,EAAKplB,MAAM2e,WAAWqN,aAAa5G,EAAK/M,SAAU+M,EAAKplB,MAAMisB,cAEhE7G,EAAKhD,OAAOlK,YACbkN,EAAK0C,OAAO3I,aAAa,WAAY,YACzCiG,EAAKiO,iBAAmBjO,EAAKhD,OAAOzG,iBAAmByJ,EAAK0C,QArBxD1C,EAAKhD,OAAO5I,aAAa,IAAI15B,MAAM,oCAuB3C,SAASypC,KACL,MAAM+O,EAAYlT,EAAKhD,OAAO7I,WACxB6L,EAAKhD,OAAOxH,WACR,OACA,iBACJ,OACNwK,EAAKyL,YAAc3S,EAAc,QAASkH,EAAKplB,MAAM8d,UAAY,qBACjEsH,EAAKyL,YAAYpsB,SAAW,EAC5B2gB,EAAKyL,YAAYh8B,KAAOyjC,EACxBlT,EAAKyL,YAAYhxB,SAAWulB,EAAKplB,MAAMH,SACvCulB,EAAKyL,YAAYhqC,SAAWu+B,EAAKplB,MAAMnZ,SACvCu+B,EAAKyL,YAAYtnB,YAAc6b,EAAKplB,MAAMuJ,YAC1C6b,EAAKmT,gBACa,mBAAdD,EACM,gBACc,SAAdA,EACI,QACA,QACVlT,EAAKiB,cAAc3mC,OAAS,IAC5B0lC,EAAKyL,YAAY/7B,aAAeswB,EAAKyL,YAAY9sC,MAAQqhC,EAAK3C,WAAW2C,EAAKiB,cAAc,GAAIjB,EAAKmT,kBAErGnT,EAAKhD,OAAOqC,UACZW,EAAKyL,YAAY5c,IAAMmR,EAAK3C,WAAW2C,EAAKhD,OAAOqC,QAAS,UAC5DW,EAAKhD,OAAOyC,UACZO,EAAKyL,YAAYvc,IAAM8Q,EAAK3C,WAAW2C,EAAKhD,OAAOyC,QAAS,UAC5DO,EAAKplB,MAAMmwB,aAAa,UACxB/K,EAAKyL,YAAYtc,KAAO/iB,OAAO4zB,EAAKplB,MAAMmwB,aAAa,UAC3D/K,EAAKplB,MAAMnL,KAAO,cACIpF,IAAlB21B,EAAK/M,WACL+M,EAAK/M,SAASxjB,KAAO,UACzB,IACQuwB,EAAKplB,MAAM2e,YACXyG,EAAKplB,MAAM2e,WAAWqN,aAAa5G,EAAKyL,YAAazL,EAAKplB,MAAMisB,aAExE,MAAO4F,IACP3tC,EAAKkhC,EAAKyL,YAAa,SAAWt5B,IAC9B6tB,EAAKtL,QAAQuF,EAAe9nB,GAAGxT,OAAO,EAAOqhC,EAAKmT,iBAClD3R,GAAa,YACbA,GAAa,aAGrB,SAASxc,GAAO7S,GACZ,IAAoB,IAAhB6tB,EAAKU,OACL,OAAOV,EAAK2L,QAChB3L,EAAK2E,KAAKxyB,GAEd,SAASqvB,GAAa55B,EAAO7K,GACzB,QAAoBsN,IAAhB21B,EAAKhD,OACL,OACJ,MAAMoW,EAAQpT,EAAKhD,OAAOp1B,GAC1B,QAAcyC,IAAV+oC,GAAuBA,EAAM94C,OAAS,EACtC,IAAK,IAAIF,EAAI,EAAGg5C,EAAMh5C,IAAMA,EAAIg5C,EAAM94C,OAAQF,IAC1Cg5C,EAAMh5C,GAAG4lC,EAAKiB,cAAejB,EAAKplB,MAAMjc,MAAOqhC,EAAMjjC,GAE/C,aAAV6K,IACAo4B,EAAKplB,MAAMmrB,cAAcD,GAAY,WACrC9F,EAAKplB,MAAMmrB,cAAcD,GAAY,WAG7C,SAASA,GAAYppC,GACjB,MAAMyV,EAAI0I,SAASirB,YAAY,SAE/B,OADA3zB,EAAEkhC,UAAU32C,GAAM,GAAM,GACjByV,EAEX,SAASk1B,GAAe7S,GACpB,IAAK,IAAIp6B,EAAI,EAAGA,EAAI4lC,EAAKiB,cAAc3mC,OAAQF,IAC3C,GAAkD,IAA9CukC,EAAaqB,EAAKiB,cAAc7mC,GAAIo6B,GACpC,MAAO,GAAKp6B,EAEpB,OAAO,EAEX,SAASmtC,GAAc/S,GACnB,QAAyB,UAArBwL,EAAKhD,OAAO3H,MAAoB2K,EAAKiB,cAAc3mC,OAAS,KAExDqkC,EAAanK,EAAMwL,EAAKiB,cAAc,KAAO,GACjDtC,EAAanK,EAAMwL,EAAKiB,cAAc,KAAO,GAErD,SAASyJ,KACD1K,EAAKhD,OAAOxH,YAAcwK,EAAK9C,WAAa8C,EAAK4E,WAErD5E,EAAKoK,aAAahsC,QAAQ,CAAC4rC,EAAa5vC,KACpC,MAAM+hC,EAAI,IAAI1U,KAAKuY,EAAKQ,YAAaR,EAAKM,aAAc,GACxDnE,EAAEtB,SAASmF,EAAKM,aAAelmC,GAC3B4lC,EAAKhD,OAAOtG,WAAa,GACS,WAAlCsJ,EAAKhD,OAAO1H,kBACZ0K,EAAKqK,cAAcjwC,GAAG4+B,YAClBsB,EAAW6B,EAAEW,WAAYkD,EAAKhD,OAAOvG,sBAAuBuJ,EAAK/C,MAAQ,IAG7E+C,EAAKwJ,wBAAwB7qC,MAAQw9B,EAAEW,WAAWvxB,WAEtDy+B,EAAYrrC,MAAQw9B,EAAErH,cAAcvpB,aAExCy0B,EAAKoL,yBACuB/gC,IAAxB21B,EAAKhD,OAAOqC,UACPW,EAAKQ,cAAgBR,EAAKhD,OAAOqC,QAAQvK,cACpCkL,EAAKM,cAAgBN,EAAKhD,OAAOqC,QAAQvC,WACzCkD,EAAKQ,YAAcR,EAAKhD,OAAOqC,QAAQvK,eACrDkL,EAAKqL,yBACuBhhC,IAAxB21B,EAAKhD,OAAOyC,UACPO,EAAKQ,cAAgBR,EAAKhD,OAAOyC,QAAQ3K,cACpCkL,EAAKM,aAAe,EAAIN,EAAKhD,OAAOyC,QAAQ3C,WAC5CkD,EAAKQ,YAAcR,EAAKhD,OAAOyC,QAAQ3K,gBAEzD,SAASwe,GAAWjrB,GAChB,OAAO2X,EAAKiB,cACP13B,IAAKgqC,GAASvT,EAAK3C,WAAWkW,EAAMlrB,IACpC1qB,OAAO,CAACw+B,EAAG/hC,EAAGa,IAA6B,UAArB+kC,EAAKhD,OAAO3H,MACnC2K,EAAKhD,OAAO7I,YACZl5B,EAAIL,QAAQuhC,KAAO/hC,GAClBuB,KAA0B,UAArBqkC,EAAKhD,OAAO3H,KAChB2K,EAAKhD,OAAOrJ,YACZqM,EAAK/C,KAAKzF,gBAEpB,SAAS4J,GAAY4C,GAAgB,QACR35B,IAArB21B,EAAKyL,aAA6BzL,EAAKmT,kBACvCnT,EAAKyL,YAAY9sC,WACkB0L,IAA/B21B,EAAKmB,sBACCnB,EAAK3C,WAAW2C,EAAKmB,sBAAuBnB,EAAKmT,iBACjD,IAEdnT,EAAKplB,MAAMjc,MAAQ20C,GAAWtT,EAAKhD,OAAOpJ,iBACpBvpB,IAAlB21B,EAAK/M,WACL+M,EAAK/M,SAASt0B,MAAQ20C,GAAWtT,EAAKhD,OAAOhK,aAE3B,IAAlBgR,GACAxC,GAAa,iBAErB,SAASqD,GAAgB1yB,GACrB,MAAMsxB,EAAcxJ,EAAe9nB,GAC7BqhC,EAAcxT,EAAKmK,aAAavE,SAASnC,GACzCgQ,EAAczT,EAAKsK,aAAa1E,SAASnC,GAC3C+P,GAAeC,EACfnL,GAAYkL,GAAe,EAAI,GAE1BxT,EAAKoK,aAAaxvC,QAAQ6oC,IAAgB,EAC/CA,EAAYwB,SAEPxB,EAAY9K,UAAUiN,SAAS,WACpC5F,EAAK2D,WAAW3D,EAAKQ,YAAc,GAE9BiD,EAAY9K,UAAUiN,SAAS,cACpC5F,EAAK2D,WAAW3D,EAAKQ,YAAc,GAG3C,SAASgC,GAAYrwB,GACjBA,EAAEqU,iBACF,MAAMktB,EAAuB,YAAXvhC,EAAE1C,KAAoBg0B,EAAcxJ,EAAe9nB,GAAIyI,EAAQ6oB,OAC/Dp5B,IAAd21B,EAAKpI,MAAsB6L,IAAgBzD,EAAKpI,OAChDoI,EAAKpI,KAAKoB,YACNgH,EAAK/C,KAAKrF,KAAK,EAAIoI,EAAKpI,KAAKoB,cAAgBgH,EAAK/C,KAAKrF,KAAK,MAEpE,MAAM/I,EAAMkM,WAAWngB,EAAMmwB,aAAa,QAAS7b,EAAM6L,WAAWngB,EAAMmwB,aAAa,QAAS5b,EAAO4L,WAAWngB,EAAMmwB,aAAa,SAAU4I,EAAW9X,SAASjhB,EAAMjc,MAAO,IAAK+kC,EAAQvxB,EAAEuxB,QAC1LgQ,EAAyB,KAAZvhC,EAAEsN,MAAe,GAAK,EAAK,GAC7C,IAAIjY,EAAWmsC,EAAWxkB,EAAOuU,EACjC,GAA2B,qBAAhB9oB,EAAMjc,OAAgD,IAAvBic,EAAMjc,MAAMrE,OAAc,CAChE,MAAMs5C,EAAah5B,IAAUolB,EAAK+C,YAAa8Q,EAAej5B,IAAUolB,EAAKgD,cACzEx7B,EAAWqnB,GACXrnB,EACI0nB,EACI1nB,EACA,GAAKosC,IACJ,EAAIA,IAAe,GAAK5T,EAAKpI,OAClCic,GACAlO,OAAkBt7B,GAAY,EAAG21B,EAAK+C,cAErCv7B,EAAW0nB,IAChB1nB,EACIoT,IAAUolB,EAAK+C,YAAcv7B,EAAW0nB,EAAM,GAAK8Q,EAAKpI,MAAQ/I,EAChEglB,GACAlO,OAAkBt7B,EAAW,EAAG21B,EAAK+C,cAEzC/C,EAAKpI,MACLgc,IACU,IAATzkB,EACK3nB,EAAWmsC,IAAa,GACxB5e,KAAKsT,IAAI7gC,EAAWmsC,GAAYxkB,KACtC6Q,EAAKpI,KAAKoB,YACNgH,EAAK/C,KAAKrF,KAAK,EAAIoI,EAAKpI,KAAKoB,cAAgBgH,EAAK/C,KAAKrF,KAAK,MAEpEhd,EAAMjc,MAAQs5B,EAAIzwB,IAI1B,OADAi5B,IACOT,EAEX,SAAS8T,EAAWC,EAAU/W,GAC1B,MAAMgX,EAAQ95C,MAAMoR,UAAUG,MACzBD,KAAKuoC,GACLp2C,OAAQyvC,GAAMA,aAAa6G,aAC1BC,EAAY,GAClB,IAAK,IAAI95C,EAAI,EAAGA,EAAI45C,EAAM15C,OAAQF,IAAK,CACnC,MAAM8+B,EAAO8a,EAAM55C,GACnB,IACI,GAA0C,OAAtC8+B,EAAK6R,aAAa,gBAClB,cACoB1gC,IAApB6uB,EAAK4a,aACL5a,EAAK4a,WAAWlI,UAChB1S,EAAK4a,gBAAazpC,GAEtB6uB,EAAK4a,WAAajU,EAAkB3G,EAAM8D,GAAU,IACpDkX,EAAUx4C,KAAKw9B,EAAK4a,YAExB,MAAO3hC,GACHkiB,QAAQ+F,MAAMjoB,IAGtB,OAA4B,IAArB+hC,EAAU55C,OAAe45C,EAAU,GAAKA,EAExB,qBAAhBD,aACmB,qBAAnBE,gBACa,qBAAbC,WACPD,eAAe7oC,UAAU40B,UAAYkU,SAAS9oC,UAAU40B,UAAY,SAAUlD,GAC1E,OAAO8W,EAAW1wC,KAAM45B,IAE5BiX,YAAY3oC,UAAU40B,UAAY,SAAUlD,GACxC,OAAO8W,EAAW,CAAC1wC,MAAO45B,KAGlC,IAAIkD,EAAY,SAAUmU,EAAUrX,GAChC,MAAwB,kBAAbqX,EACAP,EAAW1gB,OAAOvY,SAASqpB,iBAAiBmQ,GAAWrX,GAEzDqX,aAAoBC,KAClBR,EAAW,CAACO,GAAWrX,GAGvB8W,EAAWO,EAAUrX,IAGpCkD,EAAUC,cAAgB,GAC1BD,EAAU0P,MAAQ,CACd2E,GAAI/2C,OAAOyiC,OAAO,GAAI,GACtBh8B,QAASzG,OAAOyiC,OAAO,GAAI,IAE/BC,EAAUsU,SAAYvX,IAClBiD,EAAU0P,MAAM3rC,QAAUzG,OAAOyiC,OAAOziC,OAAOyiC,OAAO,GAAIC,EAAU0P,MAAM3rC,SAAUg5B,IAExFiD,EAAUuU,YAAezX,IACrBkD,EAAUC,cAAgB3iC,OAAOyiC,OAAOziC,OAAOyiC,OAAO,GAAIC,EAAUC,eAAgBnD,IAExFkD,EAAUnC,UAAYR,EAAiB,IACvC2C,EAAU7C,WAAarV,EAAoB,IAC3CkY,EAAUvB,aAAeA,EACH,qBAAX+V,QAA+C,qBAAdA,OAAOhmC,KAC/CgmC,OAAOhmC,GAAGwxB,UAAY,SAAUlD,GAC5B,OAAO8W,EAAW1wC,KAAM45B,KAGhCvV,KAAKnc,UAAUqpC,QAAU,SAAU3S,GAC/B,OAAO,IAAIva,KAAKrkB,KAAK0xB,cAAe1xB,KAAK05B,WAAY15B,KAAKuxB,WAA6B,kBAATqN,EAAoBnG,SAASmG,EAAM,IAAMA,KAErG,qBAAX5O,SACPA,OAAO8M,UAAYA,GAER,gB,oCCt7Dc,oBAAlB1iC,OAAOyiC,SACdziC,OAAOyiC,OAAS,SAAUhiC,KAAW6oB,GACjC,IAAK7oB,EACD,MAAMgN,UAAU,8CAEpB,IAAK,MAAM9M,KAAU2oB,EACb3oB,GACAX,OAAOD,KAAKY,GAAQC,QAASC,GAASJ,EAAOI,GAAOF,EAAOE,IAGnE,OAAOJ,K;;ACVfvE,EAAQk7C,KAAO,SAAUC,EAAQrM,EAAQsM,EAAMC,EAAMC,GACnD,IAAI7iC,EAAGmqB,EACH2Y,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTh7C,EAAI06C,EAAQE,EAAS,EAAK,EAC1B7Y,EAAI2Y,GAAQ,EAAI,EAChBvd,EAAIsd,EAAOrM,EAASpuC,GAOxB,IALAA,GAAK+hC,EAELhqB,EAAIolB,GAAM,IAAO6d,GAAU,EAC3B7d,KAAQ6d,EACRA,GAASH,EACFG,EAAQ,EAAGjjC,EAAS,IAAJA,EAAW0iC,EAAOrM,EAASpuC,GAAIA,GAAK+hC,EAAGiZ,GAAS,GAKvE,IAHA9Y,EAAInqB,GAAM,IAAOijC,GAAU,EAC3BjjC,KAAQijC,EACRA,GAASL,EACFK,EAAQ,EAAG9Y,EAAS,IAAJA,EAAWuY,EAAOrM,EAASpuC,GAAIA,GAAK+hC,EAAGiZ,GAAS,GAEvE,GAAU,IAANjjC,EACFA,EAAI,EAAIgjC,MACH,IAAIhjC,IAAM+iC,EACf,OAAO5Y,EAAI+Y,IAAsBC,KAAd/d,GAAK,EAAI,GAE5B+E,GAAQvH,KAAKwgB,IAAI,EAAGR,GACpB5iC,GAAQgjC,EAEV,OAAQ5d,GAAK,EAAI,GAAK+E,EAAIvH,KAAKwgB,IAAI,EAAGpjC,EAAI4iC,IAG5Cr7C,EAAQ87C,MAAQ,SAAUX,EAAQl2C,EAAO6pC,EAAQsM,EAAMC,EAAMC,GAC3D,IAAI7iC,EAAGmqB,EAAGgB,EACN2X,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBO,EAAe,KAATV,EAAchgB,KAAKwgB,IAAI,GAAI,IAAMxgB,KAAKwgB,IAAI,GAAI,IAAM,EAC1Dn7C,EAAI06C,EAAO,EAAKE,EAAS,EACzB7Y,EAAI2Y,EAAO,GAAK,EAChBvd,EAAI54B,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQo2B,KAAKsT,IAAI1pC,GAEb+/B,MAAM//B,IAAUA,IAAU22C,KAC5BhZ,EAAIoC,MAAM//B,GAAS,EAAI,EACvBwT,EAAI+iC,IAEJ/iC,EAAI4iB,KAAK2gB,MAAM3gB,KAAK4gB,IAAIh3C,GAASo2B,KAAK6gB,KAClCj3C,GAAS2+B,EAAIvI,KAAKwgB,IAAI,GAAIpjC,IAAM,IAClCA,IACAmrB,GAAK,GAGL3+B,GADEwT,EAAIgjC,GAAS,EACNM,EAAKnY,EAELmY,EAAK1gB,KAAKwgB,IAAI,EAAG,EAAIJ,GAE5Bx2C,EAAQ2+B,GAAK,IACfnrB,IACAmrB,GAAK,GAGHnrB,EAAIgjC,GAASD,GACf5Y,EAAI,EACJnqB,EAAI+iC,GACK/iC,EAAIgjC,GAAS,GACtB7Y,GAAM39B,EAAQ2+B,EAAK,GAAKvI,KAAKwgB,IAAI,EAAGR,GACpC5iC,GAAQgjC,IAER7Y,EAAI39B,EAAQo2B,KAAKwgB,IAAI,EAAGJ,EAAQ,GAAKpgB,KAAKwgB,IAAI,EAAGR,GACjD5iC,EAAI,IAID4iC,GAAQ,EAAGF,EAAOrM,EAASpuC,GAAS,IAAJkiC,EAAUliC,GAAK+hC,EAAGG,GAAK,IAAKyY,GAAQ,GAI3E,IAFA5iC,EAAKA,GAAK4iC,EAAQzY,EAClB2Y,GAAQF,EACDE,EAAO,EAAGJ,EAAOrM,EAASpuC,GAAS,IAAJ+X,EAAU/X,GAAK+hC,EAAGhqB,GAAK,IAAK8iC,GAAQ,GAE1EJ,EAAOrM,EAASpuC,EAAI+hC,IAAU,IAAJ5E,I,sBCnF5B;;;;;;;CAMA,SAA2Cse,EAAMC,GAE/CC,EAAOr8C,QAAUo8C,KAFnB,CASmB,qBAAT9V,MAAuBA,MAAa,WAC9C,OAAgB,SAAUgW,GAEhB,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUz8C,QAGnC,IAAIq8C,EAASE,EAAiBE,GAAY,CACzC/7C,EAAG+7C,EACH9Z,GAAG,EACH3iC,QAAS,IAUV,OANAs8C,EAAQG,GAAU3qC,KAAKuqC,EAAOr8C,QAASq8C,EAAQA,EAAOr8C,QAASw8C,GAG/DH,EAAO1Z,GAAI,EAGJ0Z,EAAOr8C,QAqCf,OAhCAw8C,EAAoB5Z,EAAI0Z,EAGxBE,EAAoB5Y,EAAI2Y,EAGxBC,EAAoB/Z,EAAI,SAASziC,EAASgD,EAAM05C,GAC3CF,EAAoBhrC,EAAExR,EAASgD,IAClCc,OAAOiB,eAAe/E,EAASgD,EAAM,CACpCkC,cAAc,EACdd,YAAY,EACZ0X,IAAK4gC,KAMRF,EAAoB7qC,EAAI,SAAS0qC,GAChC,IAAIK,EAASL,GAAUA,EAAOM,WAC7B,WAAwB,OAAON,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAG,EAAoB/Z,EAAEia,EAAQ,IAAKA,GAC5BA,GAIRF,EAAoBhrC,EAAI,SAAS7N,EAAQi5C,GAAY,OAAO94C,OAAO8N,UAAUirC,eAAe/qC,KAAKnO,EAAQi5C,IAGzGJ,EAAoBxuB,EAAI,GAGjBwuB,EAAoBA,EAAoB3e,EAAI,KA9D7C,CAiEN,CAEJ,SAAUwe,EAAQr8C,EAASw8C,GAEjC,aAEA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAI63C,EAAcN,EAAoB,IAClCO,EAAWP,EAAoB,IAC/BQ,EAASR,EAAoB,IAC7BS,EAAWT,EAAoB,IAC/BU,EAAWV,EAAoB,IAC/BW,EAAUX,EAAoB,IAC9BY,EAAUZ,EAAoB,IAC9Ba,EAASb,EAAoB,IAC7Bc,EAAed,EAAoB,IACnCe,EAAUf,EAAoB,IAC9BgB,EAAUhB,EAAoB,IAC9BiB,EAAUjB,EAAoB,IAC9BkB,EAAWlB,EAAoB,GAC/BmB,EAAY,CACZC,MAAOF,EAASE,MAChBC,OAAQH,EAASG,OACjBC,KAAMJ,EAASI,KACfC,MAAOL,EAASK,MAChBC,SAAUN,EAASM,SACnBC,UAAWnB,EAAYvyC,QACvB2zC,OAAQnB,EAASxyC,QACjB4zC,KAAMnB,EAAOzyC,QACb6zC,MAAOhB,EAAQ7yC,QACf8zC,OAAQpB,EAAS1yC,QACjB+zC,MAAOnB,EAAQ5yC,QACfg0C,OAAQrB,EAAS3yC,QACjBi0C,KAAMnB,EAAO9yC,QACbk0C,WAAY,CACRC,UAAWpB,EAAa/yC,QACxB8iB,MAAOkwB,EAAQhzC,QACfo0C,MAAOnB,EAAQjzC,QACfq0C,MAAOnB,EAAQlzC,UAGvBvK,EAAQuK,QAAUozC,GAKZ,SAAUtB,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAI+5C,EAAgC,SAAUC,GAE1C,SAASD,EAAetmC,GACpB,IAAInE,EAAQ7K,KAKZ,OAJAgP,EAAU,eAAiBA,EAC3BnE,EAAQ0qC,EAAOntC,KAAKpI,KAAMgP,IAAYhP,KACtC6K,EAAMmE,QAAUA,EAChBnE,EAAMvR,KAAOuR,EAAMvC,YAAYhP,KACxBuR,EAEX,OATAsqC,EAAUG,EAAgBC,GASnBD,EAVwB,CAWjCh+C,OACFhB,EAAQg/C,eAAiBA,EACzB,IAKIpB,EALAsB,EAAa,GACbtqB,EAAU,GACVuqB,EAAO,GACPC,EAAQ,GAgBZ,SAASvB,EAAO38B,EAAOjc,GACnB,IAAI4/B,EAAQkZ,EAAM78B,GAClB,GAAa,MAAT2jB,EACA,MAAM,IAAIma,EAAe,oBAAsB99B,EAAQ,SAE3D,IAAIm+B,EAAYxa,EACZrF,EAEJte,aAAiB05B,MAAQ15B,EAAM,cAAgB05B,KAAK0E,UAAYp+B,EAAQm+B,EAAUxB,OAAO54C,GACzF,OAAO,IAAIo6C,EAAU7f,EAAMv6B,GAG/B,SAAS64C,EAAKte,EAAM+f,GAEhB,YADe,IAAXA,IAAqBA,GAAS,GACtB,MAAR/f,EACO,KAEmB,MAA1BA,EAAKx/B,EAAQw/C,UACNhgB,EAAKx/B,EAAQw/C,UAAUC,KAC9BF,EACOzB,EAAKte,EAAKK,WAAY0f,GAC1B,KAGX,SAASxB,EAAMA,EAAOxwC,GAElB,IAAIs3B,EACJ,QAFc,IAAVt3B,IAAoBA,EAAQqwC,EAAM8B,KAEjB,kBAAV3B,EACPlZ,EAAQua,EAAMrB,IAAUmB,EAAWnB,QAGlC,GAAIA,aAAiBS,MAAQT,EAAM,cAAgBnD,KAAK0E,UACzDza,EAAQua,EAAM,aAEb,GAAqB,kBAAVrB,EACRA,EAAQH,EAAM+B,MAAQ/B,EAAMgC,MAC5B/a,EAAQua,EAAM,SAETrB,EAAQH,EAAM+B,MAAQ/B,EAAMiC,SACjChb,EAAQua,EAAM,gBAGjB,GAAIrB,aAAiBxD,YAAa,CACnC,IAAIuF,GAAS/B,EAAM1M,aAAa,UAAY,IAAI1hB,MAAM,OACtD,IAAK,IAAIjvB,KAAKo/C,EAEV,GADAjb,EAAQjQ,EAAQkrB,EAAMp/C,IAClBmkC,EACA,MAERA,EAAQA,GAASsa,EAAKpB,EAAM/8B,SAEhC,OAAa,MAAT6jB,EACO,KAEPt3B,EAAQqwC,EAAM+B,MAAQ9a,EAAMt3B,OAASA,EAAQqwC,EAAMmC,KAAOlb,EAAMt3B,MACzDs3B,EACJ,KAGX,SAASmZ,IAEL,IADA,IAAIgC,EAAc,GACT/wB,EAAK,EAAGA,EAAKzqB,UAAU5D,OAAQquB,IACpC+wB,EAAY/wB,GAAMzqB,UAAUyqB,GAEhC,GAAI+wB,EAAYp/C,OAAS,EACrB,OAAOo/C,EAAYnwC,KAAI,SAAU4yB,GAC7B,OAAOub,EAASvb,MAGxB,IAAIwd,EAAaD,EAAY,GAC7B,GAAmC,kBAAxBC,EAAWC,UAAwD,kBAAxBD,EAAWE,SAC7D,MAAM,IAAInB,EAAe,sBAExB,GAA4B,aAAxBiB,EAAWC,SAChB,MAAM,IAAIlB,EAAe,kCAG7B,GADAI,EAAMa,EAAWC,UAAYD,EAAWE,UAAYF,EAClB,kBAAvBA,EAAWG,QAClBlB,EAAWe,EAAWG,SAAWH,OAMjC,GAH4B,MAAxBA,EAAWjhB,YACXpK,EAAQqrB,EAAWjhB,WAAaihB,GAEV,MAAtBA,EAAWj/B,QAAiB,CACxBxgB,MAAM8R,QAAQ2tC,EAAWj/B,SACzBi/B,EAAWj/B,QAAUi/B,EAAWj/B,QAAQnR,KAAI,SAAUmR,GAClD,OAAOA,EAAQq/B,iBAInBJ,EAAWj/B,QAAUi/B,EAAWj/B,QAAQq/B,cAE5C,IAAIC,EAAW9/C,MAAM8R,QAAQ2tC,EAAWj/B,SAAWi/B,EAAWj/B,QAAU,CAACi/B,EAAWj/B,SACpFs/B,EAAS57C,SAAQ,SAAUlC,GACN,MAAb28C,EAAK38C,IAAwC,MAAxBy9C,EAAWjhB,YAChCmgB,EAAK38C,GAAOy9C,MAK5B,OAAOA,EApHXjgD,EAAQw/C,SAAW,SAEnB,SAAW5B,GACPA,EAAMA,EAAM,QAAU,GAAK,OAC3BA,EAAMA,EAAM,SAAW,IAAM,QAC7BA,EAAMA,EAAM,aAAe,IAAM,YACjCA,EAAMA,EAAM,QAAU,IAAM,OAC5BA,EAAMA,EAAM,UAAY,GAAK,SAC7BA,EAAMA,EAAM,SAAW,IAAM,QAC7BA,EAAMA,EAAM,cAAgB,IAAM,aAClCA,EAAMA,EAAM,eAAiB,GAAK,cAClCA,EAAMA,EAAM,mBAAqB,GAAK,kBACtCA,EAAMA,EAAM,oBAAsB,GAAK,mBACvCA,EAAMA,EAAM,OAAS,IAAM,MAX/B,CAYGA,EAAQ59C,EAAQ49C,QAAU59C,EAAQ49C,MAAQ,KAY7C59C,EAAQ69C,OAASA,EAYjB79C,EAAQ89C,KAAOA,EAmCf99C,EAAQ+9C,MAAQA,EA6ChB/9C,EAAQg+C,SAAWA,GAKb,SAAU3B,EAAQr8C,EAASw8C,GAEjC,IAAI+D,EAAO/D,EAAoB,IAC3B3iC,EAAQ2iC,EAAoB,IAC5B95C,EAAS85C,EAAoB,GAC7BgE,EAAKhE,EAAoB,IAGzBiE,EAAiB/tC,OAAOguC,aAAa,GAGrCC,EAAQ,SAAUpc,GAEhB/jC,MAAM8R,QAAQiyB,GAChB76B,KAAK66B,IAAMA,EACK,MAAPA,GAAe/jC,MAAM8R,QAAQiyB,EAAIA,KAC1C76B,KAAK66B,IAAMA,EAAIA,IAEf76B,KAAK66B,IAAM,IAKfoc,EAAM/uC,UAAUgvC,OAAS,SAAUC,EAAM3B,GACvC,IAAI4B,EAAQ,GACZ,OAAoB,IAAhBD,EAAKjgD,OAAqB8I,MAC9Bo3C,EAAMF,OAASC,EACG,MAAd3B,GAA4C,kBAAfA,GAA2Bp7C,OAAOD,KAAKq7C,GAAYt+C,OAAS,IAC3FkgD,EAAM5B,WAAaA,GAEdx1C,KAAK1H,KAAK8+C,KAGnBH,EAAM/uC,UAAU,UAAY,SAAUhR,GACpC,OAAIA,GAAU,EAAU8I,KACjBA,KAAK1H,KAAK,CAAE,OAAUpB,KAG/B+/C,EAAM/uC,UAAUmvC,OAAS,SAAUngD,EAAQs+C,GACzC,GAAIt+C,GAAU,EAAG,OAAO8I,KACxB,IAAIo3C,EAAQ,CAAEC,OAAQngD,GAItB,OAHkB,MAAds+C,GAA4C,kBAAfA,GAA2Bp7C,OAAOD,KAAKq7C,GAAYt+C,OAAS,IAC3FkgD,EAAM5B,WAAaA,GAEdx1C,KAAK1H,KAAK8+C,IAGnBH,EAAM/uC,UAAU5P,KAAO,SAAU8+C,GAC/B,IAAI3mC,EAAQzQ,KAAK66B,IAAI3jC,OACjBogD,EAASt3C,KAAK66B,IAAIpqB,EAAQ,GAE9B,GADA2mC,EAAQp+C,GAAO,EAAM,GAAIo+C,GACH,kBAAXE,EAAqB,CAC9B,GAA+B,kBAApBF,EAAM,WAAsD,kBAArBE,EAAO,UAEvD,OADAt3C,KAAK66B,IAAIpqB,EAAQ,GAAK,CAAE,OAAU6mC,EAAO,UAAYF,EAAM,WACpDp3C,KAIT,GAAgC,kBAArBs3C,EAAO,WAA0C,MAAhBF,EAAMF,SAChDzmC,GAAS,EACT6mC,EAASt3C,KAAK66B,IAAIpqB,EAAQ,GACJ,kBAAX6mC,GAET,OADAt3C,KAAK66B,IAAI0c,QAAQH,GACVp3C,KAGX,GAAImQ,EAAMinC,EAAM5B,WAAY8B,EAAO9B,YAAa,CAC9C,GAA4B,kBAAjB4B,EAAMF,QAAgD,kBAAlBI,EAAOJ,OAGpD,OAFAl3C,KAAK66B,IAAIpqB,EAAQ,GAAK,CAAEymC,OAAQI,EAAOJ,OAASE,EAAMF,QACtB,kBAArBE,EAAM5B,aAAyBx1C,KAAK66B,IAAIpqB,EAAQ,GAAG+kC,WAAa4B,EAAM5B,YAC1Ex1C,KACF,GAA4B,kBAAjBo3C,EAAMC,QAAgD,kBAAlBC,EAAOD,OAG3D,OAFAr3C,KAAK66B,IAAIpqB,EAAQ,GAAK,CAAE4mC,OAAQC,EAAOD,OAASD,EAAMC,QACtB,kBAArBD,EAAM5B,aAAyBx1C,KAAK66B,IAAIpqB,EAAQ,GAAG+kC,WAAa4B,EAAM5B,YAC1Ex1C,MASb,OALIyQ,IAAUzQ,KAAK66B,IAAI3jC,OACrB8I,KAAK66B,IAAIviC,KAAK8+C,GAEdp3C,KAAK66B,IAAIiN,OAAOr3B,EAAO,EAAG2mC,GAErBp3C,MAGTi3C,EAAM/uC,UAAUsvC,KAAO,WACrB,IAAIF,EAASt3C,KAAK66B,IAAI76B,KAAK66B,IAAI3jC,OAAS,GAIxC,OAHIogD,GAAUA,EAAOD,SAAWC,EAAO9B,YACrCx1C,KAAK66B,IAAI4c,MAEJz3C,MAGTi3C,EAAM/uC,UAAU3N,OAAS,SAAUm9C,GACjC,OAAO13C,KAAK66B,IAAItgC,OAAOm9C,IAGzBT,EAAM/uC,UAAUlN,QAAU,SAAU08C,GAClC13C,KAAK66B,IAAI7/B,QAAQ08C,IAGnBT,EAAM/uC,UAAU/B,IAAM,SAAUuxC,GAC9B,OAAO13C,KAAK66B,IAAI10B,IAAIuxC,IAGtBT,EAAM/uC,UAAUyvC,UAAY,SAAUD,GACpC,IAAIE,EAAS,GAAIC,EAAS,GAK1B,OAJA73C,KAAKhF,SAAQ,SAAS87C,GACpB,IAAIj8C,EAAS68C,EAAUZ,GAAMc,EAASC,EACtCh9C,EAAOvC,KAAKw+C,MAEP,CAACc,EAAQC,IAGlBZ,EAAM/uC,UAAUxB,OAAS,SAAUgxC,EAAWI,GAC5C,OAAO93C,KAAK66B,IAAIn0B,OAAOgxC,EAAWI,IAGpCb,EAAM/uC,UAAU6vC,aAAe,WAC7B,OAAO/3C,KAAK0G,QAAO,SAAUxP,EAAQm+B,GACnC,OAAIA,EAAK6hB,OACAhgD,EAAS4/C,EAAG5/C,OAAOm+B,GACjBA,EAAK2iB,OACP9gD,EAASm+B,EAAK2iB,OAEhB9gD,IACN,IAGL+/C,EAAM/uC,UAAUhR,OAAS,WACvB,OAAO8I,KAAK0G,QAAO,SAAUxP,EAAQm+B,GACnC,OAAOn+B,EAAS4/C,EAAG5/C,OAAOm+B,KACzB,IAGL4hB,EAAM/uC,UAAUG,MAAQ,SAAUlQ,EAAOC,GACvCD,EAAQA,GAAS,EACE,kBAARC,IAAkBA,EAAM85C,KACnC,IAAIrX,EAAM,GACNpyB,EAAOquC,EAAGnuC,SAAS3I,KAAK66B,KACxBpqB,EAAQ,EACZ,MAAOA,EAAQrY,GAAOqQ,EAAKwvC,UAAW,CACpC,IAAIC,EACAznC,EAAQtY,EACV+/C,EAASzvC,EAAK+c,KAAKrtB,EAAQsY,IAE3BynC,EAASzvC,EAAK+c,KAAKptB,EAAMqY,GACzBoqB,EAAIviC,KAAK4/C,IAEXznC,GAASqmC,EAAG5/C,OAAOghD,GAErB,OAAO,IAAIjB,EAAMpc,IAInBoc,EAAM/uC,UAAUiwC,QAAU,SAAUC,GAClC,IAAIC,EAAWvB,EAAGnuC,SAAS3I,KAAK66B,KAC5Byd,EAAYxB,EAAGnuC,SAASyvC,EAAMvd,KAC9BA,EAAM,GACN0d,EAAaD,EAAUE,OAC3B,GAAkB,MAAdD,GAAmD,kBAAtBA,EAAWlB,QAAgD,MAAzBkB,EAAW/C,WAAoB,CAChG,IAAIiD,EAAYF,EAAWlB,OAC3B,MAA+B,WAAxBgB,EAASK,YAA2BL,EAASM,cAAgBF,EAClEA,GAAaJ,EAASM,aACtB9d,EAAIviC,KAAK+/C,EAAS7yB,QAEhB+yB,EAAWlB,OAASoB,EAAY,GAClCH,EAAU9yB,KAAK+yB,EAAWlB,OAASoB,GAGvC,IAAInY,EAAQ,IAAI2W,EAAMpc,GACtB,MAAOwd,EAASJ,WAAaK,EAAUL,UACrC,GAA6B,WAAzBK,EAAUI,WACZpY,EAAMhoC,KAAKggD,EAAU9yB,aAChB,GAA4B,WAAxB6yB,EAASK,WAClBpY,EAAMhoC,KAAK+/C,EAAS7yB,YACf,CACL,IAAItuB,EAASy6B,KAAKlG,IAAI4sB,EAASM,aAAcL,EAAUK,cACnDC,EAASP,EAAS7yB,KAAKtuB,GACvB2hD,EAAUP,EAAU9yB,KAAKtuB,GAC7B,GAA8B,kBAAnB2hD,EAAQxB,OAAqB,CACtC,IAAID,EAAQ,GACiB,kBAAlBwB,EAAOvB,OAChBD,EAAMC,OAASngD,EAEfkgD,EAAMF,OAAS0B,EAAO1B,OAGxB,IAAI1B,EAAasB,EAAGtB,WAAW2C,QAAQS,EAAOpD,WAAYqD,EAAQrD,WAAqC,kBAAlBoD,EAAOvB,QAK5F,GAJI7B,IAAY4B,EAAM5B,WAAaA,GACnClV,EAAMhoC,KAAK8+C,IAGNkB,EAAUL,WAAa9nC,EAAMmwB,EAAMzF,IAAIyF,EAAMzF,IAAI3jC,OAAS,GAAIkgD,GAAQ,CACzE,IAAI0B,EAAO,IAAI7B,EAAMoB,EAASS,QAC9B,OAAOxY,EAAMvmC,OAAO++C,GAAMtB,YAKU,kBAAtBqB,EAAQ,WAAmD,kBAAlBD,EAAOvB,QAChE/W,EAAMhoC,KAAKugD,GAIjB,OAAOvY,EAAMkX,QAGfP,EAAM/uC,UAAUnO,OAAS,SAAUq+C,GACjC,IAAI9X,EAAQ,IAAI2W,EAAMj3C,KAAK66B,IAAIxyB,SAK/B,OAJI+vC,EAAMvd,IAAI3jC,OAAS,IACrBopC,EAAMhoC,KAAK8/C,EAAMvd,IAAI,IACrByF,EAAMzF,IAAMyF,EAAMzF,IAAI9gC,OAAOq+C,EAAMvd,IAAIxyB,MAAM,KAExCi4B,GAGT2W,EAAM/uC,UAAU2uC,KAAO,SAAUuB,EAAO3nC,GACtC,GAAIzQ,KAAK66B,MAAQud,EAAMvd,IACrB,OAAO,IAAIoc,EAEb,IAAI8B,EAAU,CAAC/4C,KAAMo4C,GAAOjyC,KAAI,SAAUm6B,GACxC,OAAOA,EAAMn6B,KAAI,SAAU2wC,GACzB,GAAiB,MAAbA,EAAGI,OACL,MAA4B,kBAAdJ,EAAGI,OAAsBJ,EAAGI,OAASH,EAErD,IAAIiC,EAAQ1Y,IAAU8X,EAAS,KAAO,OACtC,MAAM,IAAI9gD,MAAM,iBAAmB0hD,EAAO,oBACzCzgD,KAAK,OAEN+nC,EAAQ,IAAI2W,EACZgC,EAAapC,EAAKkC,EAAQ,GAAIA,EAAQ,GAAItoC,GAC1C4nC,EAAWvB,EAAGnuC,SAAS3I,KAAK66B,KAC5Byd,EAAYxB,EAAGnuC,SAASyvC,EAAMvd,KA6BlC,OA5BAoe,EAAWj+C,SAAQ,SAAUk+C,GAC3B,IAAIhiD,EAASgiD,EAAU,GAAGhiD,OAC1B,MAAOA,EAAS,EAAG,CACjB,IAAIiiD,EAAW,EACf,OAAQD,EAAU,IAChB,KAAKrC,EAAKuC,OACRD,EAAWxnB,KAAKlG,IAAI6sB,EAAUK,aAAczhD,GAC5CopC,EAAMhoC,KAAKggD,EAAU9yB,KAAK2zB,IAC1B,MACF,KAAKtC,EAAKwC,OACRF,EAAWxnB,KAAKlG,IAAIv0B,EAAQmhD,EAASM,cACrCN,EAAS7yB,KAAK2zB,GACd7Y,EAAM,UAAU6Y,GAChB,MACF,KAAKtC,EAAKyC,MACRH,EAAWxnB,KAAKlG,IAAI4sB,EAASM,aAAcL,EAAUK,aAAczhD,GACnE,IAAI0hD,EAASP,EAAS7yB,KAAK2zB,GACvBN,EAAUP,EAAU9yB,KAAK2zB,GACzBhpC,EAAMyoC,EAAO1B,OAAQ2B,EAAQ3B,QAC/B5W,EAAM+W,OAAO8B,EAAUrC,EAAGtB,WAAWqB,KAAK+B,EAAOpD,WAAYqD,EAAQrD,aAErElV,EAAMhoC,KAAKugD,GAAS,UAAUM,GAEhC,MAEJjiD,GAAUiiD,MAGP7Y,EAAMkX,QAGfP,EAAM/uC,UAAUqxC,SAAW,SAAU7B,EAAW8B,GAC9CA,EAAUA,GAAW,KACrB,IAAI/wC,EAAOquC,EAAGnuC,SAAS3I,KAAK66B,KACxB4e,EAAO,IAAIxC,EACXjgD,EAAI,EACR,MAAOyR,EAAKwvC,UAAW,CACrB,GAAwB,WAApBxvC,EAAKiwC,WAAyB,OAClC,IAAIE,EAASnwC,EAAK+vC,OACdrgD,EAAQ2+C,EAAG5/C,OAAO0hD,GAAUnwC,EAAKkwC,aACjCloC,EAAiC,kBAAlBmoC,EAAO1B,OACxB0B,EAAO1B,OAAO1/C,QAAQgiD,EAASrhD,GAASA,GAAS,EACnD,GAAIsY,EAAQ,EACVgpC,EAAKnhD,KAAKmQ,EAAK+c,aACV,GAAI/U,EAAQ,EACjBgpC,EAAKnhD,KAAKmQ,EAAK+c,KAAK/U,QACf,CACL,IAA0D,IAAtDinC,EAAU+B,EAAMhxC,EAAK+c,KAAK,GAAGgwB,YAAc,GAAIx+C,GACjD,OAEFA,GAAK,EACLyiD,EAAO,IAAIxC,GAGXwC,EAAKviD,SAAW,GAClBwgD,EAAU+B,EAAM,GAAIziD,IAIxBigD,EAAM/uC,UAAUwxC,UAAY,SAAUtB,EAAOuB,GAE3C,GADAA,IAAaA,EACQ,kBAAVvB,EACT,OAAOp4C,KAAK45C,kBAAkBxB,EAAOuB,GAEvC,IAAItB,EAAWvB,EAAGnuC,SAAS3I,KAAK66B,KAC5Byd,EAAYxB,EAAGnuC,SAASyvC,EAAMvd,KAC9ByF,EAAQ,IAAI2W,EAChB,MAAOoB,EAASJ,WAAaK,EAAUL,UACrC,GAA4B,WAAxBI,EAASK,aAA4BiB,GAAqC,WAAzBrB,EAAUI,WAExD,GAA6B,WAAzBJ,EAAUI,WACnBpY,EAAMhoC,KAAKggD,EAAU9yB,YAChB,CACL,IAAItuB,EAASy6B,KAAKlG,IAAI4sB,EAASM,aAAcL,EAAUK,cACnDC,EAASP,EAAS7yB,KAAKtuB,GACvB2hD,EAAUP,EAAU9yB,KAAKtuB,GAC7B,GAAI0hD,EAAO,UAET,SACSC,EAAQ,UACjBvY,EAAMhoC,KAAKugD,GAGXvY,EAAM+W,OAAOngD,EAAQ4/C,EAAGtB,WAAWkE,UAAUd,EAAOpD,WAAYqD,EAAQrD,WAAYmE,SAdtFrZ,EAAM+W,OAAOP,EAAG5/C,OAAOmhD,EAAS7yB,SAkBpC,OAAO8a,EAAMkX,QAGfP,EAAM/uC,UAAU0xC,kBAAoB,SAAUnpC,EAAOkpC,GACnDA,IAAaA,EACb,IAAItB,EAAWvB,EAAGnuC,SAAS3I,KAAK66B,KAC5BuK,EAAS,EACb,MAAOiT,EAASJ,WAAa7S,GAAU30B,EAAO,CAC5C,IAAIvZ,EAASmhD,EAASM,aAClBkB,EAAWxB,EAASK,WACxBL,EAAS7yB,OACQ,WAAbq0B,GAGoB,WAAbA,IAA0BzU,EAAS30B,IAAUkpC,KACtDlpC,GAASvZ,GAEXkuC,GAAUluC,GALRuZ,GAASkhB,KAAKlG,IAAIv0B,EAAQuZ,EAAQ20B,GAOtC,OAAO30B,GAITkiC,EAAOr8C,QAAU2gD,GAKX,SAAUtE,EAAQr8C,GAExB,aAEA,IAAIwjD,EAAS1/C,OAAO8N,UAAUirC,eAC1B4G,EAAQ3/C,OAAO8N,UAAUC,SACzB9M,EAAiBjB,OAAOiB,eACxB2+C,EAAO5/C,OAAOK,yBAEdmO,EAAU,SAAiB/Q,GAC9B,MAA6B,oBAAlBf,MAAM8R,QACT9R,MAAM8R,QAAQ/Q,GAGK,mBAApBkiD,EAAM3xC,KAAKvQ,IAGfoiD,EAAgB,SAAuB3+C,GAC1C,IAAKA,GAA2B,oBAApBy+C,EAAM3xC,KAAK9M,GACtB,OAAO,EAGR,IASIL,EATAi/C,EAAoBJ,EAAO1xC,KAAK9M,EAAK,eACrC6+C,EAAmB7+C,EAAIgN,aAAehN,EAAIgN,YAAYJ,WAAa4xC,EAAO1xC,KAAK9M,EAAIgN,YAAYJ,UAAW,iBAE9G,GAAI5M,EAAIgN,cAAgB4xC,IAAsBC,EAC7C,OAAO,EAMR,IAAKl/C,KAAOK,GAEZ,MAAsB,qBAARL,GAAuB6+C,EAAO1xC,KAAK9M,EAAKL,IAInDm/C,EAAc,SAAqBv/C,EAAQgqB,GAC1CxpB,GAAmC,cAAjBwpB,EAAQvrB,KAC7B+B,EAAeR,EAAQgqB,EAAQvrB,KAAM,CACpCoB,YAAY,EACZc,cAAc,EACdD,MAAOspB,EAAQzgB,SACf3I,UAAU,IAGXZ,EAAOgqB,EAAQvrB,MAAQurB,EAAQzgB,UAK7Bi2C,EAAc,SAAqB/+C,EAAKhC,GAC3C,GAAa,cAATA,EAAsB,CACzB,IAAKwgD,EAAO1xC,KAAK9M,EAAKhC,GACrB,OACM,GAAI0gD,EAGV,OAAOA,EAAK1+C,EAAKhC,GAAMiC,MAIzB,OAAOD,EAAIhC,IAGZq5C,EAAOr8C,QAAU,SAAS0C,IACzB,IAAI6rB,EAASvrB,EAAMqE,EAAK28C,EAAMC,EAAaC,EACvC3/C,EAASC,UAAU,GACnB9D,EAAI,EACJE,EAAS4D,UAAU5D,OACnBwT,GAAO,EAaX,IAVsB,mBAAX7P,IACV6P,EAAO7P,EACPA,EAASC,UAAU,IAAM,GAEzB9D,EAAI,IAES,MAAV6D,GAAqC,kBAAXA,GAAyC,oBAAXA,KAC3DA,EAAS,IAGH7D,EAAIE,IAAUF,EAGpB,GAFA6tB,EAAU/pB,UAAU9D,GAEL,MAAX6tB,EAEH,IAAKvrB,KAAQurB,EACZlnB,EAAM08C,EAAYx/C,EAAQvB,GAC1BghD,EAAOD,EAAYx1B,EAASvrB,GAGxBuB,IAAWy/C,IAEV5vC,GAAQ4vC,IAASL,EAAcK,KAAUC,EAAc3xC,EAAQ0xC,MAC9DC,GACHA,GAAc,EACdC,EAAQ78C,GAAOiL,EAAQjL,GAAOA,EAAM,IAEpC68C,EAAQ78C,GAAOs8C,EAAct8C,GAAOA,EAAM,GAI3Cy8C,EAAYv/C,EAAQ,CAAEvB,KAAMA,EAAM8K,SAAUpL,EAAO0R,EAAM8vC,EAAOF,MAGtC,qBAATA,GACjBF,EAAYv/C,EAAQ,CAAEvB,KAAMA,EAAM8K,SAAUk2C,KAQjD,OAAOz/C,IAMF,SAAU83C,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQmkD,WAAankD,EAAQokD,mBAAgBzzC,EAE/D,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZI,EAAUtI,EAAoB,GAE9BuI,EAAWC,EAAuBF,GAElCG,EAAczI,EAAoB,GAElC0I,EAAeF,EAAuBC,GAEtCE,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCE,EAAS7I,EAAoB,IAE7B8I,EAAUN,EAAuBK,GAEjCE,EAAU/I,EAAoB,GAE9BgJ,EAAWR,EAAuBO,GAElCE,EAAQjJ,EAAoB,GAE5BkJ,EAASV,EAAuBS,GAEpC,SAAST,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIC,EAAiB,EAEjB9B,EAAa,SAAU+B,GAGzB,SAAS/B,IAGP,OAFAwB,EAAgBj8C,KAAMy6C,GAEfyB,EAA2Bl8C,MAAOy6C,EAAWj2B,WAAapqB,OAAO+gD,eAAeV,IAAa9/C,MAAMqF,KAAMlF,YAwClH,OA7CAshD,EAAU3B,EAAY+B,GAQtB7B,EAAaF,EAAY,CAAC,CACxBx/C,IAAK,SACLM,MAAO,WACLw/C,EAAKN,EAAWvyC,UAAUsc,WAAapqB,OAAO+gD,eAAeV,EAAWvyC,WAAY,SAAUlI,MAAMoI,KAAKpI,MACzGA,KAAKw1C,WAAa,IAAIkG,EAAY76C,QAAQk0C,WAAWG,MAAMl1C,KAAKy8C,WAEjE,CACDxhD,IAAK,QACLM,MAAO,WACL,OAAO,IAAIigD,EAAa36C,SAAUq2C,OAAOl3C,KAAKzE,SAAS,EAAI8/C,EAASx6C,SAASb,KAAKurC,UAAWvrC,KAAKw1C,WAAWkH,aAE9G,CACDzhD,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GAC3B,IAAIohD,EAAYjB,EAAY76C,QAAQwzC,MAAM/6C,EAAMoiD,EAAY76C,QAAQqzC,MAAM0I,iBACzD,MAAbD,GACF38C,KAAKw1C,WAAWmH,UAAUA,EAAWphD,KAGxC,CACDN,IAAK,WACLM,MAAO,SAAkBkV,EAAOvZ,EAAQoC,EAAMiC,GAC5CyE,KAAKilB,OAAO3rB,EAAMiC,KAEnB,CACDN,IAAK,WACLM,MAAO,SAAkBkV,EAAOlV,EAAOshD,GACrC,GAAqB,kBAAVthD,GAAsBA,EAAMuhD,SAAS,MAAO,CACrD,IAAIC,EAAQrB,EAAY76C,QAAQszC,OAAOS,EAAM4B,UAC7Cx2C,KAAKk7C,OAAO1X,aAAauZ,EAAiB,IAAVtsC,EAAczQ,KAAOA,KAAKwlB,MAC1Du3B,EAAMC,SAAS,EAAGzhD,EAAM8M,MAAM,GAAI,SAElC0yC,EAAKN,EAAWvyC,UAAUsc,WAAapqB,OAAO+gD,eAAeV,EAAWvyC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMyQ,EAAOlV,EAAOshD,OAK9HpC,EA9CQ,CA+CfiB,EAAY76C,QAAQ6zC,OAEtB+F,EAAW52C,MAAQ63C,EAAY76C,QAAQqzC,MAAM+I,WAI7C,IAAIrI,EAAQ,SAAUsI,GAGpB,SAAStI,EAAM6H,GACbR,EAAgBj8C,KAAM40C,GAEtB,IAAI3pC,EAASixC,EAA2Bl8C,MAAO40C,EAAMpwB,WAAapqB,OAAO+gD,eAAevG,IAAQxsC,KAAKpI,KAAMy8C,IAG3G,OADAxxC,EAAOyR,MAAQ,GACRzR,EAyHT,OAjIAmxC,EAAUxH,EAAOsI,GAWjBvC,EAAa/F,EAAO,CAAC,CACnB35C,IAAK,QACLM,MAAO,WAUL,OATwB,MAApByE,KAAK0c,MAAM4jB,QACbtgC,KAAK0c,MAAM4jB,MAAQtgC,KAAKm9C,YAAYzB,EAAY76C,QAAQ4zC,MAAM/tC,QAAO,SAAU45B,EAAO8c,GACpF,OAAsB,IAAlBA,EAAKlmD,SACAopC,EAEAA,EAAM4W,OAAOkG,EAAK7hD,QAASm/C,EAAc0C,MAEjD,IAAI5B,EAAa36C,SAAWq2C,OAAO,KAAMwD,EAAc16C,QAErDA,KAAK0c,MAAM4jB,QAEnB,CACDrlC,IAAK,WACLM,MAAO,SAAkBkV,EAAOvZ,GAC9B6jD,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMyQ,EAAOvZ,GAC9G8I,KAAK0c,MAAQ,KAEd,CACDzhB,IAAK,WACLM,MAAO,SAAkBkV,EAAOvZ,EAAQoC,EAAMiC,GACxCrE,GAAU,IACVwkD,EAAY76C,QAAQwzC,MAAM/6C,EAAMoiD,EAAY76C,QAAQqzC,MAAMgC,OACxDzlC,EAAQvZ,IAAW8I,KAAK9I,UAC1B8I,KAAKilB,OAAO3rB,EAAMiC,GAGpBw/C,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMyQ,EAAOkhB,KAAKlG,IAAIv0B,EAAQ8I,KAAK9I,SAAWuZ,EAAQ,GAAInX,EAAMiC,GAEnKyE,KAAK0c,MAAQ,MAEd,CACDzhB,IAAK,WACLM,MAAO,SAAkBkV,EAAOlV,EAAOshD,GACrC,GAAW,MAAPA,EAAa,OAAO9B,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMyQ,EAAOlV,EAAOshD,GAC7I,GAAqB,IAAjBthD,EAAMrE,OAAV,CACA,IAAImmD,EAAQ9hD,EAAM0qB,MAAM,MACpBkxB,EAAOkG,EAAMlhC,QACbg7B,EAAKjgD,OAAS,IACZuZ,EAAQzQ,KAAK9I,SAAW,GAA2B,MAAtB8I,KAAKpG,SAAS0jD,KAC7CvC,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAM2xB,KAAKlG,IAAIhb,EAAOzQ,KAAK9I,SAAW,GAAIigD,GAE3In3C,KAAKpG,SAAS0jD,KAAKN,SAASh9C,KAAKpG,SAAS0jD,KAAKpmD,SAAUigD,GAE3Dn3C,KAAK0c,MAAQ,IAEf,IAAIqgC,EAAQ/8C,KACZq9C,EAAM32C,QAAO,SAAU+J,EAAOgpC,GAG5B,OAFAsD,EAAQA,EAAM92B,MAAMxV,GAAO,GAC3BssC,EAAMC,SAAS,EAAGvD,GACXA,EAAKviD,SACXuZ,EAAQ0mC,EAAKjgD,WAEjB,CACD+D,IAAK,eACLM,MAAO,SAAsBw6C,EAAMh7B,GACjC,IAAI4zB,EAAO3uC,KAAKpG,SAAS+0C,KACzBoM,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,eAAgBlI,MAAMoI,KAAKpI,KAAM+1C,EAAMh7B,GAC7G4zB,aAAgBiN,EAAQ/6C,SAC1B8tC,EAAKlZ,SAEPz1B,KAAK0c,MAAQ,KAEd,CACDzhB,IAAK,SACLM,MAAO,WAIL,OAHyB,MAArByE,KAAK0c,MAAMxlB,SACb8I,KAAK0c,MAAMxlB,OAAS6jD,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,SAAUlI,MAAMoI,KAAKpI,MAAQu8C,GAEtHv8C,KAAK0c,MAAMxlB,SAEnB,CACD+D,IAAK,eACLM,MAAO,SAAsBV,EAAQkgB,GACnCggC,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,eAAgBlI,MAAMoI,KAAKpI,KAAMnF,EAAQkgB,GACnH/a,KAAK0c,MAAQ,KAEd,CACDzhB,IAAK,WACLM,MAAO,SAAkB2R,GACvB6tC,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMkN,GACvGlN,KAAK0c,MAAQ,KAEd,CACDzhB,IAAK,OACLM,MAAO,SAAckV,GACnB,OAAOsqC,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,OAAQlI,MAAMoI,KAAKpI,KAAMyQ,GAAO,KAElH,CACDxV,IAAK,cACLM,MAAO,SAAqBqxC,GAC1BmO,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,cAAelI,MAAMoI,KAAKpI,KAAM4sC,GAC1G5sC,KAAK0c,MAAQ,KAEd,CACDzhB,IAAK,QACLM,MAAO,SAAekV,GACpB,IAAI8sC,EAAQziD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GAE3E,GAAIyiD,IAAoB,IAAV9sC,GAAeA,GAASzQ,KAAK9I,SAAWqlD,GAAiB,CACrE,IAAI/B,EAAQx6C,KAAKw6C,QACjB,OAAc,IAAV/pC,GACFzQ,KAAKk7C,OAAO1X,aAAagX,EAAOx6C,MACzBA,OAEPA,KAAKk7C,OAAO1X,aAAagX,EAAOx6C,KAAKwlB,MAC9Bg1B,GAGT,IAAIh1B,EAAOu1B,EAAKnG,EAAM1sC,UAAUsc,WAAapqB,OAAO+gD,eAAevG,EAAM1sC,WAAY,QAASlI,MAAMoI,KAAKpI,KAAMyQ,EAAO8sC,GAEtH,OADAv9C,KAAK0c,MAAQ,GACN8I,MAKNovB,EAlIG,CAmIV8G,EAAY76C,QAAQ+zC,OAOtB,SAAS8F,EAAc3E,GACrB,IAAIxK,EAAUzwC,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAElF,OAAY,MAARi7C,EAAqBxK,GACG,oBAAjBwK,EAAKxK,UACdA,GAAU,EAAI8P,EAASx6C,SAAS0qC,EAASwK,EAAKxK,YAE7B,MAAfwK,EAAKmF,QAA0C,UAAxBnF,EAAKmF,OAAO1E,UAAwBT,EAAKmF,OAAOsC,QAAQ35C,QAAUkyC,EAAKyH,QAAQ35C,MACjG0nC,EAEFmP,EAAc3E,EAAKmF,OAAQ3P,IAfpCqJ,EAAM4B,SAAW,QACjB5B,EAAMt9B,QAAU,IAChBs9B,EAAM6I,aAAe,QACrB7I,EAAM8I,gBAAkB,CAAC5B,EAASj7C,QAAS66C,EAAY76C,QAAQ6zC,MAAOsH,EAAOn7C,SAe7EvK,EAAQokD,cAAgBA,EACxBpkD,EAAQmkD,WAAaA,EACrBnkD,EAAQuK,QAAU+zC,GAIZ,SAAUjC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQqnD,SAAWrnD,EAAQsnD,kBAAe32C,EAE5D,IAAI42C,EAA4B,oBAAXn1C,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUrN,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAXoN,QAAyBpN,EAAIgN,cAAgBI,QAAUpN,IAAQoN,OAAOR,UAAY,gBAAkB5M,GAElQwiD,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjB8yC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEnB+uB,EAAoB,IAEpB,IAAIyI,EAAczI,EAAoB,GAElC0I,EAAeF,EAAuBC,GAEtCyC,EAAUlL,EAAoB,IAE9BmL,EAAW3C,EAAuB0C,GAElCE,EAAYpL,EAAoB,GAEhCqL,EAAY7C,EAAuB4C,GAEnCE,EAAUtL,EAAoB,GAE9BuL,EAAW/C,EAAuB8C,GAElC3C,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErC6C,EAAaxL,EAAoB,IAEjCyL,EAAcjD,EAAuBgD,GAErClD,EAAUtI,EAAoB,GAE9BuI,EAAWC,EAAuBF,GAElCoD,EAAU1L,EAAoB,IAE9B2L,EAAWnD,EAAuBkD,GAElCE,EAAS5L,EAAoB,IAE7B6L,EAAUrD,EAAuBoD,GAErC,SAASpD,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAASJ,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,IAAI+2C,GAAQ,EAAIH,EAAS59C,SAAS,SAE9Bg+C,EAAQ,WAqDV,SAASA,EAAMtY,GACb,IAAIt7B,EAASjL,KAET6kB,EAAU/pB,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAMlF,GAJAmhD,EAAgBj8C,KAAM6+C,GAEtB7+C,KAAK6kB,QAAU+4B,EAAarX,EAAW1hB,GACvC7kB,KAAKumC,UAAYvmC,KAAK6kB,QAAQ0hB,UACR,MAAlBvmC,KAAKumC,UACP,OAAOqY,EAAM5nB,MAAM,0BAA2BuP,GAE5CvmC,KAAK6kB,QAAQ+5B,OACfC,EAAMD,MAAM5+C,KAAK6kB,QAAQ+5B,OAE3B,IAAI7hD,EAAOiD,KAAKumC,UAAUF,UAAU1uB,OACpC3X,KAAKumC,UAAUhR,UAAUC,IAAI,gBAC7Bx1B,KAAKumC,UAAUF,UAAY,GAC3BrmC,KAAKumC,UAAUuY,QAAU9+C,KACzBA,KAAKyyC,KAAOzyC,KAAK++C,aAAa,aAC9B/+C,KAAKyyC,KAAKld,UAAUC,IAAI,YACxBx1B,KAAKyyC,KAAK9b,aAAa,cAAc,GACrC32B,KAAKg/C,mBAAqBh/C,KAAK6kB,QAAQm6B,oBAAsBh/C,KAAKyyC,KAClEzyC,KAAKi/C,QAAU,IAAId,EAAUt9C,QAC7Bb,KAAKk/C,OAASxD,EAAY76C,QAAQszC,OAAOn0C,KAAKyyC,KAAM,CAClDwM,QAASj/C,KAAKi/C,QACdE,UAAWn/C,KAAK6kB,QAAQ0mB,UAE1BvrC,KAAKo/C,OAAS,IAAInB,EAASp9C,QAAQb,KAAKk/C,QACxCl/C,KAAKq/C,UAAY,IAAId,EAAY19C,QAAQb,KAAKk/C,OAAQl/C,KAAKi/C,SAC3Dj/C,KAAKs/C,MAAQ,IAAIt/C,KAAK6kB,QAAQy6B,MAAMt/C,KAAMA,KAAK6kB,SAC/C7kB,KAAKu/C,SAAWv/C,KAAKs/C,MAAME,UAAU,YACrCx/C,KAAKy/C,UAAYz/C,KAAKs/C,MAAME,UAAU,aACtCx/C,KAAK0/C,QAAU1/C,KAAKs/C,MAAME,UAAU,WACpCx/C,KAAKs/C,MAAMjiB,OACXr9B,KAAKi/C,QAAQ98C,GAAGg8C,EAAUt9C,QAAQ8+C,OAAOC,eAAe,SAAUvzC,GAC5DA,IAAS8xC,EAAUt9C,QAAQ8+C,OAAOE,aACpC50C,EAAOwnC,KAAKld,UAAU3T,OAAO,WAAY3W,EAAOm0C,OAAOU,cAG3D9/C,KAAKi/C,QAAQ98C,GAAGg8C,EAAUt9C,QAAQ8+C,OAAOI,eAAe,SAAUhlD,EAAQilD,GACxE,IAAI/Q,EAAQhkC,EAAOo0C,UAAUY,UACzBxvC,EAAQw+B,GAA0B,IAAjBA,EAAM/3C,OAAe+3C,EAAMx+B,WAAQxJ,EACxDi5C,EAAO93C,KAAK6C,GAAQ,WAClB,OAAOA,EAAOm0C,OAAOe,OAAO,KAAMH,EAAWvvC,KAC5C1V,MAEL,IAAIqlD,EAAWpgD,KAAKy/C,UAAUY,QAAQ,yDAA2DtjD,EAAO,qBACxGiD,KAAKsgD,YAAYF,GACjBpgD,KAAK0/C,QAAQxX,QACTloC,KAAK6kB,QAAQ9D,aACf/gB,KAAKyyC,KAAK9b,aAAa,mBAAoB32B,KAAK6kB,QAAQ9D,aAEtD/gB,KAAK6kB,QAAQ07B,UACfvgD,KAAK4wB,UAmYT,OA7eA+pB,EAAakE,EAAO,KAAM,CAAC,CACzB5jD,IAAK,QACLM,MAAO,SAAeilD,IACN,IAAVA,IACFA,EAAQ,OAEV/B,EAAS59C,QAAQ4/C,MAAMD,KAExB,CACDvlD,IAAK,OACLM,MAAO,SAAcu6B,GACnB,OAAOA,EAAKgpB,SAAWpD,EAAY76C,QAAQuzC,KAAKte,KAEjD,CACD76B,IAAK,SACLM,MAAO,SAAiBjC,GAItB,OAH0B,MAAtB0G,KAAK0gD,QAAQpnD,IACfslD,EAAM5nB,MAAM,iBAAmB19B,EAAO,qCAEjC0G,KAAK0gD,QAAQpnD,KAErB,CACD2B,IAAK,WACLM,MAAO,SAAkBw7B,EAAMl8B,GAC7B,IAAIgQ,EAAQ7K,KAER2gD,EAAY7lD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GAE/E,GAAoB,kBAATi8B,EAAmB,CAC5B,IAAIz9B,EAAOy9B,EAAK0f,UAAY1f,EAAKyf,SACb,kBAATl9C,EAET0G,KAAKs0C,SAAS,WAAah7C,EAAMy9B,EAAMl8B,GAEvCT,OAAOD,KAAK48B,GAAM/7B,SAAQ,SAAUC,GAClC4P,EAAMypC,SAASr5C,EAAK87B,EAAK97B,GAAMJ,WAIT,MAAtBmF,KAAK0gD,QAAQ3pB,IAAkB4pB,GACjC/B,EAAMh1C,KAAK,eAAiBmtB,EAAO,QAASl8B,GAE9CmF,KAAK0gD,QAAQ3pB,GAAQl8B,GAChBk8B,EAAK6pB,WAAW,WAAa7pB,EAAK6pB,WAAW,cAAoC,aAApB/lD,EAAO27C,SACvEkF,EAAY76C,QAAQyzC,SAASz5C,GACpBk8B,EAAK6pB,WAAW,YAAyC,oBAApB/lD,EAAOy5C,UACrDz5C,EAAOy5C,eAgEfqG,EAAakE,EAAO,CAAC,CACnB5jD,IAAK,eACLM,MAAO,SAAsBgrC,GAC3B,IAAIsa,EAAU/lD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,KAElF,GAAyB,kBAAdyrC,EAAwB,CACjC,IAAIjR,EAAYiR,EAChBA,EAAY9uB,SAASie,cAAc,OACnC6Q,EAAUhR,UAAUC,IAAIF,GAG1B,OADAt1B,KAAKumC,UAAU/C,aAAa+C,EAAWsa,GAChCta,IAER,CACDtrC,IAAK,OACLM,MAAO,WACLyE,KAAKq/C,UAAUyB,SAAS,QAEzB,CACD7lD,IAAK,aACLM,MAAO,SAAoBkV,EAAOvZ,EAAQ6D,GACxC,IAAIyQ,EAASxL,KAET+gD,EAAYpD,EAASltC,EAAOvZ,EAAQ6D,GAEpCimD,EAAalD,EAAeiD,EAAW,GAM3C,OAJAtwC,EAAQuwC,EAAW,GACnB9pD,EAAS8pD,EAAW,GACpBjmD,EAASimD,EAAW,GAEbd,EAAO93C,KAAKpI,MAAM,WACvB,OAAOwL,EAAO4zC,OAAO6B,WAAWxwC,EAAOvZ,KACtC6D,EAAQ0V,GAAQ,EAAIvZ,KAExB,CACD+D,IAAK,UACLM,MAAO,WACLyE,KAAKupC,QAAO,KAEb,CACDtuC,IAAK,SACLM,MAAO,WACL,IAAI2lD,IAAUpmD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,KAAmBA,UAAU,GAE7EkF,KAAKk/C,OAAO3V,OAAO2X,GACnBlhD,KAAKumC,UAAUhR,UAAU3T,OAAO,eAAgBs/B,KAEjD,CACDjmD,IAAK,QACLM,MAAO,WACL,IAAI4lD,EAAYnhD,KAAKg/C,mBAAmBmC,UACxCnhD,KAAKq/C,UAAU19B,QACf3hB,KAAKg/C,mBAAmBmC,UAAYA,EACpCnhD,KAAKohD,mBAEN,CACDnmD,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GAC3B,IAAIwvB,EAAS/qB,KAETjF,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKqjD,EAAUt9C,QAAQwgD,QAAQC,IAE3G,OAAOpB,EAAO93C,KAAKpI,MAAM,WACvB,IAAIivC,EAAQlkB,EAAOw2B,cAAa,GAC5B71B,EAAS,IAAI8vB,EAAa36C,QAC9B,GAAa,MAATouC,EACF,OAAOvjB,EACF,GAAIgwB,EAAY76C,QAAQwzC,MAAM/6C,EAAMoiD,EAAY76C,QAAQqzC,MAAMgC,OACnExqB,EAASX,EAAOq0B,OAAOoC,WAAWvS,EAAMx+B,MAAOw+B,EAAM/3C,OAAQgE,EAAgB,GAAI5B,EAAMiC,QAClF,IAAqB,IAAjB0zC,EAAM/3C,OAEf,OADA6zB,EAAOs0B,UAAUp6B,OAAO3rB,EAAMiC,GACvBmwB,EAEPA,EAASX,EAAOq0B,OAAOqC,WAAWxS,EAAMx+B,MAAOw+B,EAAM/3C,OAAQgE,EAAgB,GAAI5B,EAAMiC,IAGzF,OADAwvB,EAAO22B,aAAazS,EAAOkP,EAAUt9C,QAAQwgD,QAAQM,QAC9Cj2B,IACN3wB,KAEJ,CACDE,IAAK,aACLM,MAAO,SAAoBkV,EAAOvZ,EAAQoC,EAAMiC,EAAOR,GACrD,IAAI6mD,EAAS5hD,KAETurC,OAAU,EAEVsW,EAAalE,EAASltC,EAAOvZ,EAAQoC,EAAMiC,EAAOR,GAElD+mD,EAAahE,EAAe+D,EAAY,GAO5C,OALApxC,EAAQqxC,EAAW,GACnB5qD,EAAS4qD,EAAW,GACpBvW,EAAUuW,EAAW,GACrB/mD,EAAS+mD,EAAW,GAEb5B,EAAO93C,KAAKpI,MAAM,WACvB,OAAO4hD,EAAOxC,OAAOoC,WAAW/wC,EAAOvZ,EAAQq0C,KAC9CxwC,EAAQ0V,EAAO,KAEnB,CACDxV,IAAK,aACLM,MAAO,SAAoBkV,EAAOvZ,EAAQoC,EAAMiC,EAAOR,GACrD,IAAIgnD,EAAS/hD,KAETurC,OAAU,EAEVyW,EAAarE,EAASltC,EAAOvZ,EAAQoC,EAAMiC,EAAOR,GAElDknD,EAAanE,EAAekE,EAAY,GAO5C,OALAvxC,EAAQwxC,EAAW,GACnB/qD,EAAS+qD,EAAW,GACpB1W,EAAU0W,EAAW,GACrBlnD,EAASknD,EAAW,GAEb/B,EAAO93C,KAAKpI,MAAM,WACvB,OAAO+hD,EAAO3C,OAAOqC,WAAWhxC,EAAOvZ,EAAQq0C,KAC9CxwC,EAAQ0V,EAAO,KAEnB,CACDxV,IAAK,YACLM,MAAO,SAAmBkV,GACxB,IAAIvZ,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAE7EonD,OAAS,EAEXA,EADmB,kBAAVzxC,EACAzQ,KAAKq/C,UAAU8C,UAAU1xC,EAAOvZ,GAEhC8I,KAAKq/C,UAAU8C,UAAU1xC,EAAMA,MAAOA,EAAMvZ,QAEvD,IAAIkrD,EAAkBpiD,KAAKumC,UAAU4G,wBACrC,MAAO,CACL3vC,OAAQ0kD,EAAO1kD,OAAS4kD,EAAgB3kD,IACxCK,OAAQokD,EAAOpkD,OACfG,KAAMikD,EAAOjkD,KAAOmkD,EAAgBnkD,KACpCD,MAAOkkD,EAAOlkD,MAAQokD,EAAgBnkD,KACtCR,IAAKykD,EAAOzkD,IAAM2kD,EAAgB3kD,IAClCI,MAAOqkD,EAAOrkD,SAGjB,CACD5C,IAAK,cACLM,MAAO,WACL,IAAIkV,EAAQ3V,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAC5E5D,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKkF,KAAKqiD,YAAc5xC,EAEhG6xC,EAAa3E,EAASltC,EAAOvZ,GAE7BqrD,EAAazE,EAAewE,EAAY,GAK5C,OAHA7xC,EAAQ8xC,EAAW,GACnBrrD,EAASqrD,EAAW,GAEbviD,KAAKo/C,OAAOoD,YAAY/xC,EAAOvZ,KAEvC,CACD+D,IAAK,YACLM,MAAO,WACL,IAAIkV,EAAQ3V,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKkF,KAAKuhD,cAAa,GAC9FrqD,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAEjF,MAAqB,kBAAV2V,EACFzQ,KAAKo/C,OAAOqD,UAAUhyC,EAAOvZ,GAE7B8I,KAAKo/C,OAAOqD,UAAUhyC,EAAMA,MAAOA,EAAMvZ,UAGnD,CACD+D,IAAK,WACLM,MAAO,SAAkBw6C,GACvB,OAAOA,EAAK3Q,OAAOplC,KAAKk/C,UAEzB,CACDjkD,IAAK,YACLM,MAAO,WACL,OAAOyE,KAAKk/C,OAAOhoD,WAEpB,CACD+D,IAAK,UACLM,MAAO,SAAiBkV,GACtB,OAAOzQ,KAAKk/C,OAAO9B,KAAK3sC,KAEzB,CACDxV,IAAK,UACLM,MAAO,SAAiBkV,GACtB,OAAOzQ,KAAKk/C,OAAOzF,KAAKhpC,KAEzB,CACDxV,IAAK,WACLM,MAAO,WACL,IAAIkV,EAAQ3V,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAC5E5D,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK4nD,OAAOC,UAExF,MAAqB,kBAAVlyC,EACFzQ,KAAKk/C,OAAO7B,MAAM5sC,EAAMA,MAAOA,EAAMvZ,QAErC8I,KAAKk/C,OAAO7B,MAAM5sC,EAAOvZ,KAGnC,CACD+D,IAAK,YACLM,MAAO,SAAmBjC,GACxB,OAAO0G,KAAKs/C,MAAM1M,QAAQt5C,KAE3B,CACD2B,IAAK,eACLM,MAAO,WACL,IAAIomB,EAAQ7mB,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GAI3E,OAFI6mB,GAAO3hB,KAAK2hB,QAChB3hB,KAAKmgD,SACEngD,KAAKq/C,UAAUuD,WAAW,KAElC,CACD3nD,IAAK,UACLM,MAAO,WACL,IAAIkV,EAAQ3V,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAC5E5D,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKkF,KAAKqiD,YAAc5xC,EAEhGoyC,EAAalF,EAASltC,EAAOvZ,GAE7B4rD,EAAchF,EAAe+E,EAAY,GAK7C,OAHApyC,EAAQqyC,EAAY,GACpB5rD,EAAS4rD,EAAY,GAEd9iD,KAAKo/C,OAAO2D,QAAQtyC,EAAOvZ,KAEnC,CACD+D,IAAK,WACLM,MAAO,WACL,OAAOyE,KAAKq/C,UAAUh+B,aAEvB,CACDpmB,IAAK,cACLM,MAAO,SAAqBkV,EAAOuyC,EAAOznD,GACxC,IAAI0nD,EAASjjD,KAETjF,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK+jD,EAAMwC,QAAQC,IAE/F,OAAOpB,EAAO93C,KAAKpI,MAAM,WACvB,OAAOijD,EAAO7D,OAAO8D,YAAYzyC,EAAOuyC,EAAOznD,KAC9CR,EAAQ0V,KAEZ,CACDxV,IAAK,aACLM,MAAO,SAAoBkV,EAAO0mC,EAAM79C,EAAMiC,EAAOR,GACnD,IAAIooD,EAASnjD,KAETurC,OAAU,EAEV6X,EAAczF,EAASltC,EAAO,EAAGnX,EAAMiC,EAAOR,GAE9CsoD,EAAcvF,EAAesF,EAAa,GAM9C,OAJA3yC,EAAQ4yC,EAAY,GACpB9X,EAAU8X,EAAY,GACtBtoD,EAASsoD,EAAY,GAEdnD,EAAO93C,KAAKpI,MAAM,WACvB,OAAOmjD,EAAO/D,OAAOkE,WAAW7yC,EAAO0mC,EAAM5L,KAC5CxwC,EAAQ0V,EAAO0mC,EAAKjgD,UAExB,CACD+D,IAAK,YACLM,MAAO,WACL,OAAQyE,KAAKumC,UAAUhR,UAAUiN,SAAS,iBAE3C,CACDvnC,IAAK,MACLM,MAAO,WACL,OAAOyE,KAAKi/C,QAAQsE,IAAI5oD,MAAMqF,KAAKi/C,QAASnkD,aAE7C,CACDG,IAAK,KACLM,MAAO,WACL,OAAOyE,KAAKi/C,QAAQ98C,GAAGxH,MAAMqF,KAAKi/C,QAASnkD,aAE5C,CACDG,IAAK,OACLM,MAAO,WACL,OAAOyE,KAAKi/C,QAAQuE,KAAK7oD,MAAMqF,KAAKi/C,QAASnkD,aAE9C,CACDG,IAAK,YACLM,MAAO,SAAmBkV,EAAO1T,EAAMhC,GACrCiF,KAAKy/C,UAAUgE,qBAAqBhzC,EAAO1T,EAAMhC,KAElD,CACDE,IAAK,eACLM,MAAO,SAAsBkV,EAAOvZ,EAAQ6D,GAC1C,IAAI2oD,EAAS1jD,KAET2jD,EAAchG,EAASltC,EAAOvZ,EAAQ6D,GAEtC6oD,EAAc9F,EAAe6F,EAAa,GAM9C,OAJAlzC,EAAQmzC,EAAY,GACpB1sD,EAAS0sD,EAAY,GACrB7oD,EAAS6oD,EAAY,GAEd1D,EAAO93C,KAAKpI,MAAM,WACvB,OAAO0jD,EAAOtE,OAAOyE,aAAapzC,EAAOvZ,KACxC6D,EAAQ0V,KAEZ,CACDxV,IAAK,iBACLM,MAAO,WACLyE,KAAKq/C,UAAU+B,eAAephD,KAAKg/C,sBAEpC,CACD/jD,IAAK,cACLM,MAAO,SAAqB+kC,GAC1B,IAAIwjB,EAAU9jD,KAEVjF,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKqjD,EAAUt9C,QAAQwgD,QAAQC,IAE3G,OAAOpB,EAAO93C,KAAKpI,MAAM,WACvBsgC,EAAQ,IAAIkb,EAAa36C,QAAQy/B,GACjC,IAAIppC,EAAS4sD,EAAQzB,YACjB0B,EAAUD,EAAQ1E,OAAO6B,WAAW,EAAG/pD,GACvC8sD,EAAUF,EAAQ1E,OAAO6E,WAAW3jB,GACpCgX,EAAS0M,EAAQnpB,IAAImpB,EAAQnpB,IAAI3jC,OAAS,GAChC,MAAVogD,GAA2C,kBAAlBA,EAAOJ,QAAmE,OAA5CI,EAAOJ,OAAOI,EAAOJ,OAAOhgD,OAAS,KAC9F4sD,EAAQ1E,OAAO6B,WAAW6C,EAAQzB,YAAc,EAAG,GACnD2B,EAAQhM,OAAO,IAEjB,IAAIkM,EAAMH,EAAQ5L,QAAQ6L,GAC1B,OAAOE,IACNnpD,KAEJ,CACDE,IAAK,eACLM,MAAO,SAAsBkV,EAAOvZ,EAAQ6D,GAC1C,GAAa,MAAT0V,EACFzQ,KAAKq/C,UAAUyB,SAAS,KAAM5pD,GAAU2nD,EAAMwC,QAAQC,SACjD,CACL,IAAI6C,EAAcxG,EAASltC,EAAOvZ,EAAQ6D,GAEtCqpD,EAActG,EAAeqG,EAAa,GAE9C1zC,EAAQ2zC,EAAY,GACpBltD,EAASktD,EAAY,GACrBrpD,EAASqpD,EAAY,GAErBpkD,KAAKq/C,UAAUyB,SAAS,IAAIxC,EAAW+F,MAAM5zC,EAAOvZ,GAAS6D,GACzDA,IAAWojD,EAAUt9C,QAAQwgD,QAAQM,QACvC3hD,KAAKq/C,UAAU+B,eAAephD,KAAKg/C,uBAIxC,CACD/jD,IAAK,UACLM,MAAO,SAAiB47C,GACtB,IAAIp8C,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKqjD,EAAUt9C,QAAQwgD,QAAQC,IAEvGhhB,GAAQ,IAAIkb,EAAa36C,SAAUq2C,OAAOC,GAC9C,OAAOn3C,KAAKsgD,YAAYhgB,EAAOvlC,KAEhC,CACDE,IAAK,SACLM,MAAO,WACL,IAAIR,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKqjD,EAAUt9C,QAAQwgD,QAAQiD,KAEvG54B,EAAS1rB,KAAKk/C,OAAOiB,OAAOplD,GAEhC,OADAiF,KAAKq/C,UAAUc,OAAOplD,GACf2wB,IAER,CACDzwB,IAAK,iBACLM,MAAO,SAAwB+kC,GAC7B,IAAIikB,EAAUvkD,KAEVjF,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKqjD,EAAUt9C,QAAQwgD,QAAQC,IAE3G,OAAOpB,EAAO93C,KAAKpI,MAAM,WAEvB,OADAsgC,EAAQ,IAAIkb,EAAa36C,QAAQy/B,GAC1BikB,EAAQnF,OAAO6E,WAAW3jB,EAAOvlC,KACvCA,GAAQ,OAIR8jD,EA9eG,GAugBZ,SAASjB,EAAarX,EAAW2E,GAS/B,GARAA,GAAa,EAAImQ,EAASx6C,UAAS,EAAM,CACvC0lC,UAAWA,EACXqM,QAAS,CACP6M,WAAW,EACXF,UAAU,EACVG,SAAS,IAEVxU,GACEA,EAAWoU,OAASpU,EAAWoU,QAAUT,EAAM2F,SAASlF,OAI3D,GADApU,EAAWoU,MAAQT,EAAM4F,OAAO,UAAYvZ,EAAWoU,OAC/B,MAApBpU,EAAWoU,MACb,MAAM,IAAIhoD,MAAM,iBAAmB4zC,EAAWoU,MAAQ,+BAJxDpU,EAAWoU,MAAQX,EAAQ99C,QAO7B,IAAI6jD,GAAc,EAAIrJ,EAASx6C,UAAS,EAAM,GAAIqqC,EAAWoU,MAAMkF,UACnE,CAACE,EAAaxZ,GAAYlwC,SAAQ,SAAU4+B,GAC1CA,EAAOgZ,QAAUhZ,EAAOgZ,SAAW,GACnCx4C,OAAOD,KAAKy/B,EAAOgZ,SAAS53C,SAAQ,SAAU23C,IACb,IAA3B/Y,EAAOgZ,QAAQD,KACjB/Y,EAAOgZ,QAAQD,GAAU,UAI/B,IAAIgS,EAAcvqD,OAAOD,KAAKuqD,EAAY9R,SAAS74C,OAAOK,OAAOD,KAAK+wC,EAAW0H,UAC7EgS,EAAeD,EAAYj+C,QAAO,SAAUkzB,EAAQtgC,GACtD,IAAIurD,EAAchG,EAAM4F,OAAO,WAAanrD,GAM5C,OALmB,MAAfurD,EACFjG,EAAM5nB,MAAM,eAAiB19B,EAAO,4CAEpCsgC,EAAOtgC,GAAQurD,EAAYL,UAAY,GAElC5qB,IACN,IAmBH,OAjB0B,MAAtBsR,EAAW0H,SAAmB1H,EAAW0H,QAAQkS,SAAW5Z,EAAW0H,QAAQkS,QAAQx8C,cAAgBlO,SACzG8wC,EAAW0H,QAAQkS,QAAU,CAC3Bve,UAAW2E,EAAW0H,QAAQkS,UAGlC5Z,GAAa,EAAImQ,EAASx6C,UAAS,EAAM,GAAIg+C,EAAM2F,SAAU,CAAE5R,QAASgS,GAAgBF,EAAaxZ,GACrG,CAAC,SAAU,YAAa,sBAAsBlwC,SAAQ,SAAUC,GAC/B,kBAApBiwC,EAAWjwC,KACpBiwC,EAAWjwC,GAAOwc,SAAS80B,cAAcrB,EAAWjwC,QAGxDiwC,EAAW0H,QAAUx4C,OAAOD,KAAK+wC,EAAW0H,SAASlsC,QAAO,SAAUkzB,EAAQtgC,GAI5E,OAHI4xC,EAAW0H,QAAQt5C,KACrBsgC,EAAOtgC,GAAQ4xC,EAAW0H,QAAQt5C,IAE7BsgC,IACN,IACIsR,EAKT,SAASgV,EAAO6E,EAAUhqD,EAAQ0V,EAAO0L,GACvC,GAAInc,KAAK6kB,QAAQmgC,SAAWhlD,KAAK6jC,aAAe9oC,IAAWojD,EAAUt9C,QAAQwgD,QAAQiD,KACnF,OAAO,IAAI9I,EAAa36C,QAE1B,IAAIouC,EAAiB,MAATx+B,EAAgB,KAAOzQ,KAAKuhD,eACpC0D,EAAWjlD,KAAKo/C,OAAO9e,MACvB5U,EAASq5B,IAUb,GATa,MAAT9V,KACY,IAAVx+B,IAAgBA,EAAQw+B,EAAMx+B,OACrB,MAAT0L,EACF8yB,EAAQiW,EAAWjW,EAAOvjB,EAAQ3wB,GACf,IAAVohB,IACT8yB,EAAQiW,EAAWjW,EAAOx+B,EAAO0L,EAAOphB,IAE1CiF,KAAK0hD,aAAazS,EAAOkP,EAAUt9C,QAAQwgD,QAAQM,SAEjDj2B,EAAOx0B,SAAW,EAAG,CACvB,IAAIiuD,EAKEC,EAHF1hC,EAAO,CAACy6B,EAAUt9C,QAAQ8+C,OAAOE,YAAan0B,EAAQu5B,EAAUlqD,GAEpE,IADCoqD,EAAWnlD,KAAKi/C,SAASoG,KAAK1qD,MAAMwqD,EAAU,CAAChH,EAAUt9C,QAAQ8+C,OAAOC,eAAe7lD,OAAO2pB,IAC3F3oB,IAAWojD,EAAUt9C,QAAQwgD,QAAQM,QAGtCyD,EAAYplD,KAAKi/C,SAASoG,KAAK1qD,MAAMyqD,EAAW1hC,GAGrD,OAAOgI,EAGT,SAASiyB,EAASltC,EAAOvZ,EAAQoC,EAAMiC,EAAOR,GAC5C,IAAIwwC,EAAU,GAwBd,MAvB2B,kBAAhB96B,EAAMA,OAA8C,kBAAjBA,EAAMvZ,OAE5B,kBAAXA,GACT6D,EAASQ,EAAOA,EAAQjC,EAAMA,EAAOpC,EAAQA,EAASuZ,EAAMvZ,OAAQuZ,EAAQA,EAAMA,QAElFvZ,EAASuZ,EAAMvZ,OAAQuZ,EAAQA,EAAMA,OAEZ,kBAAXvZ,IAChB6D,EAASQ,EAAOA,EAAQjC,EAAMA,EAAOpC,EAAQA,EAAS,GAGY,YAA/C,qBAAToC,EAAuB,YAAcukD,EAAQvkD,KACvDiyC,EAAUjyC,EACVyB,EAASQ,GACgB,kBAATjC,IACH,MAATiC,EACFgwC,EAAQjyC,GAAQiC,EAEhBR,EAASzB,GAIbyB,EAASA,GAAUojD,EAAUt9C,QAAQwgD,QAAQC,IACtC,CAAC7wC,EAAOvZ,EAAQq0C,EAASxwC,GAGlC,SAASmqD,EAAWjW,EAAOx+B,EAAOvZ,EAAQ6D,GACxC,GAAa,MAATk0C,EAAe,OAAO,KAC1B,IAAI92C,OAAQ,EACRC,OAAM,EACV,GAAIqY,aAAiB+qC,EAAa36C,QAAS,CACzC,IAAIykD,EAAO,CAACrW,EAAMx+B,MAAOw+B,EAAMx+B,MAAQw+B,EAAM/3C,QAAQiP,KAAI,SAAUo/C,GACjE,OAAO90C,EAAMmpC,kBAAkB2L,EAAKxqD,IAAWojD,EAAUt9C,QAAQwgD,QAAQiD,SAGvEkB,EAAQ1H,EAAewH,EAAM,GAEjCntD,EAAQqtD,EAAM,GACdptD,EAAMotD,EAAM,OACP,CACL,IAAIC,EAAQ,CAACxW,EAAMx+B,MAAOw+B,EAAMx+B,MAAQw+B,EAAM/3C,QAAQiP,KAAI,SAAUo/C,GAClE,OAAIA,EAAM90C,GAAS80C,IAAQ90C,GAAS1V,IAAWojD,EAAUt9C,QAAQwgD,QAAQiD,KAAaiB,EAClFruD,GAAU,EACLquD,EAAMruD,EAENy6B,KAAK7F,IAAIrb,EAAO80C,EAAMruD,MAI7BwuD,EAAQ5H,EAAe2H,EAAO,GAElCttD,EAAQutD,EAAM,GACdttD,EAAMstD,EAAM,GAEd,OAAO,IAAIpH,EAAW+F,MAAMlsD,EAAOC,EAAMD,GAvK3C0mD,EAAM2F,SAAW,CACftC,OAAQ,KACR3W,QAAS,KACTqH,QAAS,GACT7xB,YAAa,GACbw/B,UAAU,EACVvB,mBAAoB,KACpBgG,QAAQ,EACR1F,MAAO,WAETT,EAAMc,OAASxB,EAAUt9C,QAAQ8+C,OACjCd,EAAMwC,QAAUlD,EAAUt9C,QAAQwgD,QAElCxC,EAAM8G,QAA2B,QAEjC9G,EAAM6B,QAAU,CACd,MAASlF,EAAa36C,QACtB,UAAa66C,EAAY76C,QACzB,cAAew9C,EAASx9C,QACxB,aAAc89C,EAAQ99C,SAuJxBvK,EAAQsnD,aAAeA,EACvBtnD,EAAQqnD,SAAWA,EACnBrnD,EAAQuK,QAAUg+C,GAIZ,SAAUlM,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZe,EAAQjJ,EAAoB,GAE5BkJ,EAASV,EAAuBS,GAEhCN,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIzH,EAAS,SAAU+Q,GAGrB,SAAS/Q,IAGP,OAFAoH,EAAgBj8C,KAAM60C,GAEfqH,EAA2Bl8C,MAAO60C,EAAOrwB,WAAapqB,OAAO+gD,eAAetG,IAASl6C,MAAMqF,KAAMlF,YA0C1G,OA/CAshD,EAAUvH,EAAQ+Q,GAQlBjL,EAAa9F,EAAQ,CAAC,CACpB55C,IAAK,WACLM,MAAO,SAAkBkV,EAAOvZ,EAAQoC,EAAMiC,GAC5C,GAAIs5C,EAAOgR,QAAQ7lD,KAAKw9C,QAAQhH,SAAUl9C,GAAQ,GAAKoiD,EAAY76C,QAAQwzC,MAAM/6C,EAAMoiD,EAAY76C,QAAQqzC,MAAM4R,MAAO,CACtH,IAAI/P,EAAO/1C,KAAK+lD,QAAQt1C,EAAOvZ,GAC3BqE,GACFw6C,EAAKxqB,KAAKjyB,EAAMiC,QAGlBw/C,EAAKlG,EAAO3sC,UAAUsc,WAAapqB,OAAO+gD,eAAetG,EAAO3sC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMyQ,EAAOvZ,EAAQoC,EAAMiC,KAGjI,CACDN,IAAK,WACLM,MAAO,SAAkB2R,GAEvB,GADA6tC,EAAKlG,EAAO3sC,UAAUsc,WAAapqB,OAAO+gD,eAAetG,EAAO3sC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMkN,GACrGlN,KAAKk7C,kBAAkBrG,GAAUA,EAAOgR,QAAQ7lD,KAAKw9C,QAAQhH,SAAUx2C,KAAKk7C,OAAOsC,QAAQhH,UAAY,EAAG,CAC5G,IAAI0E,EAASl7C,KAAKk7C,OAAO6K,QAAQ/lD,KAAKolC,SAAUplC,KAAK9I,UACrD8I,KAAKgmD,aAAa9K,GAClBA,EAAO3vB,KAAKvrB,UAGd,CAAC,CACH/E,IAAK,UACLM,MAAO,SAAiBqhC,EAAMwb,GAC5B,IAAI6N,EAAYpR,EAAOqR,MAAM1uD,QAAQolC,GACjCupB,EAAatR,EAAOqR,MAAM1uD,QAAQ4gD,GACtC,OAAI6N,GAAa,GAAKE,GAAc,EAC3BF,EAAYE,EACVvpB,IAASwb,EACX,EACExb,EAAOwb,GACR,EAED,MAKNvD,EAhDI,CAiDX6G,EAAY76C,QAAQg0C,QAEtBA,EAAO6I,gBAAkB,CAAC7I,EAAQ6G,EAAY76C,QAAQ6zC,MAAOsH,EAAOn7C,SAEpEg0C,EAAOqR,MAAQ,CAAC,SAAU,SAC1B,YAAa,SAAU,SAAU,OAAQ,SAAU,OAAQ,QAG3D5vD,EAAQuK,QAAUg0C,GAIZ,SAAUlC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIkgD,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI8J,EAAW,SAAUC,GAGvB,SAASD,IAGP,OAFAnK,EAAgBj8C,KAAMomD,GAEflK,EAA2Bl8C,MAAOomD,EAAS5hC,WAAapqB,OAAO+gD,eAAeiL,IAAWzrD,MAAMqF,KAAMlF,YAG9G,OARAshD,EAAUgK,EAAUC,GAQbD,EATM,CAUb1K,EAAY76C,QAAQi0C,MAEtBx+C,EAAQuK,QAAUulD,GAIZ,SAAUzT,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZsL,EAAgBxT,EAAoB,IAEpCyT,EAAiBjL,EAAuBgL,GAExC9H,EAAU1L,EAAoB,IAE9B2L,EAAWnD,EAAuBkD,GAEtC,SAASlD,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIsC,GAAQ,EAAIH,EAAS59C,SAAS,gBAE9B2lD,EAAS,CAAC,kBAAmB,YAAa,UAAW,SAEzDA,EAAOxrD,SAAQ,SAAUyrD,GACvBhvC,SAASgpB,iBAAiBgmB,GAAW,WACnC,IAAK,IAAI/hC,EAAO5pB,UAAU5D,OAAQwsB,EAAO5sB,MAAM4tB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3EjB,EAAKiB,GAAQ7pB,UAAU6pB,GAGzB,GAAGtc,MAAMD,KAAKqP,SAASqpB,iBAAiB,kBAAkB9lC,SAAQ,SAAU86B,GAGxE,IAAI4wB,EADF5wB,EAAKgpB,SAAWhpB,EAAKgpB,QAAQG,UAG9ByH,EAAwB5wB,EAAKgpB,QAAQG,SAAS0H,UAAUhsD,MAAM+rD,EAAuBhjC,YAM9F,IAAIkjC,EAAU,SAAUC,GAGtB,SAASD,IACP3K,EAAgBj8C,KAAM4mD,GAEtB,IAAI/7C,EAAQqxC,EAA2Bl8C,MAAO4mD,EAAQpiC,WAAapqB,OAAO+gD,eAAeyL,IAAUx+C,KAAKpI,OAIxG,OAFA6K,EAAMrK,UAAY,GAClBqK,EAAM1I,GAAG,QAASy8C,EAAM5nB,OACjBnsB,EAmCT,OA5CAuxC,EAAUwK,EAASC,GAYnBlM,EAAaiM,EAAS,CAAC,CACrB3rD,IAAK,OACLM,MAAO,WACLqjD,EAAMrM,IAAI53C,MAAMikD,EAAO9jD,WACvBigD,EAAK6L,EAAQ1+C,UAAUsc,WAAapqB,OAAO+gD,eAAeyL,EAAQ1+C,WAAY,OAAQlI,MAAMrF,MAAMqF,KAAMlF,aAEzG,CACDG,IAAK,YACLM,MAAO,SAAmBiJ,GACxB,IAAK,IAAIsiD,EAAQhsD,UAAU5D,OAAQwsB,EAAO5sB,MAAMgwD,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACpGrjC,EAAKqjC,EAAQ,GAAKjsD,UAAUisD,IAG7B/mD,KAAKQ,UAAUgE,EAAM6H,OAAS,IAAIrR,SAAQ,SAAUtB,GACnD,IAAIo8B,EAAOp8B,EAAKo8B,KACZnrB,EAAUjR,EAAKiR,SAEfnG,EAAM3J,SAAWi7B,GAAQA,EAAK0M,SAASh+B,EAAM3J,UAC/C8P,EAAQhQ,WAAMsM,EAAW,CAACzC,GAAOzK,OAAO2pB,SAI7C,CACDzoB,IAAK,YACLM,MAAO,SAAmBkrD,EAAW3wB,EAAMnrB,GACpC3K,KAAKQ,UAAUimD,KAClBzmD,KAAKQ,UAAUimD,GAAa,IAE9BzmD,KAAKQ,UAAUimD,GAAWnuD,KAAK,CAAEw9B,KAAMA,EAAMnrB,QAASA,QAInDi8C,EA7CK,CA8CZL,EAAe1lD,SAEjB+lD,EAAQjH,OAAS,CACfC,cAAe,gBACfoH,qBAAsB,uBACtBC,gBAAiB,kBACjBlH,cAAe,gBACfmH,iBAAkB,mBAClBrH,YAAa,eAEf+G,EAAQvF,QAAU,CAChBC,IAAK,MACLK,OAAQ,SACR2C,KAAM,QAGRhuD,EAAQuK,QAAU+lD,GAIZ,SAAUjU,EAAQr8C,EAASw8C,GAEjC,aAOA,SAASmJ,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAJhHzN,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAKT,IAAI4rD,EAAS,SAASA,EAAOC,GAC3B,IAAIviC,EAAU/pB,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAElFmhD,EAAgBj8C,KAAMmnD,GAEtBnnD,KAAKonD,MAAQA,EACbpnD,KAAK6kB,QAAUA,GAGjBsiC,EAAO3C,SAAW,GAElBluD,EAAQuK,QAAUsmD,GAIZ,SAAUxU,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAET,IAAI8rD,EAAS,CAAC,QAAS,OAAQ,MAAO,QAClC5G,EAAQ,OAEZ,SAAS7B,EAAM3tC,GACb,GAAIo2C,EAAO7vD,QAAQyZ,IAAWo2C,EAAO7vD,QAAQipD,GAAQ,CAGnD,IAFA,IAAI6G,EAEK5iC,EAAO5pB,UAAU5D,OAAQwsB,EAAO5sB,MAAM4tB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9FjB,EAAKiB,EAAO,GAAK7pB,UAAU6pB,IAG5B2iC,EAAWr2B,SAAShgB,GAAQtW,MAAM2sD,EAAU5jC,IAIjD,SAAS6jC,EAAUC,GACjB,OAAOH,EAAO3gD,QAAO,SAAU+gD,EAAQx2C,GAErC,OADAw2C,EAAOx2C,GAAU2tC,EAAMljD,KAAKu1B,QAAShgB,EAAQu2C,GACtCC,IACN,IAGL7I,EAAM6B,MAAQ8G,EAAU9G,MAAQ,SAAUiH,GACxCjH,EAAQiH,GAGVpxD,EAAQuK,QAAU0mD,GAIZ,SAAU5U,EAAQr8C,EAASw8C,GAEjC,IAAI6U,EAAS7wD,MAAMoR,UAAUG,MACzBu/C,EAAa9U,EAAoB,IACjC+U,EAAc/U,EAAoB,IAElCgV,EAAYnV,EAAOr8C,QAAU,SAAUyxD,EAAQC,EAAU1xB,GAG3D,OAFKA,IAAMA,EAAO,IAEdyxB,IAAWC,IAGJD,aAAkB1jC,MAAQ2jC,aAAoB3jC,KAChD0jC,EAAO12B,YAAc22B,EAAS32B,WAI3B02B,IAAWC,GAA6B,iBAAVD,GAAyC,iBAAZC,EAC9D1xB,EAAK0uB,OAAS+C,IAAWC,EAAWD,GAAUC,EAS9CC,EAASF,EAAQC,EAAU1xB,KAItC,SAAS4xB,EAAkB3sD,GACzB,OAAiB,OAAVA,QAA4B0L,IAAV1L,EAG3B,SAAS4sD,EAAUne,GACjB,SAAKA,GAAkB,kBAANA,GAAsC,kBAAbA,EAAE9yC,UACtB,oBAAX8yC,EAAEsQ,MAA0C,oBAAZtQ,EAAE3hC,SAGzC2hC,EAAE9yC,OAAS,GAAqB,kBAAT8yC,EAAE,KAI/B,SAASie,EAASx2C,EAAGC,EAAG4kB,GACtB,IAAIt/B,EAAGiE,EACP,GAAIitD,EAAkBz2C,IAAMy2C,EAAkBx2C,GAC5C,OAAO,EAET,GAAID,EAAEvJ,YAAcwJ,EAAExJ,UAAW,OAAO,EAGxC,GAAI2/C,EAAYp2C,GACd,QAAKo2C,EAAYn2C,KAGjBD,EAAIk2C,EAAOv/C,KAAKqJ,GAChBC,EAAIi2C,EAAOv/C,KAAKsJ,GACTo2C,EAAUr2C,EAAGC,EAAG4kB,IAEzB,GAAI6xB,EAAS12C,GAAI,CACf,IAAK02C,EAASz2C,GACZ,OAAO,EAET,GAAID,EAAEva,SAAWwa,EAAExa,OAAQ,OAAO,EAClC,IAAKF,EAAI,EAAGA,EAAIya,EAAEva,OAAQF,IACxB,GAAIya,EAAEza,KAAO0a,EAAE1a,GAAI,OAAO,EAE5B,OAAO,EAET,IACE,IAAIoxD,EAAKR,EAAWn2C,GAChB42C,EAAKT,EAAWl2C,GACpB,MAAO3C,GACP,OAAO,EAIT,GAAIq5C,EAAGlxD,QAAUmxD,EAAGnxD,OAClB,OAAO,EAKT,IAHAkxD,EAAGliD,OACHmiD,EAAGniD,OAEElP,EAAIoxD,EAAGlxD,OAAS,EAAGF,GAAK,EAAGA,IAC9B,GAAIoxD,EAAGpxD,IAAMqxD,EAAGrxD,GACd,OAAO,EAIX,IAAKA,EAAIoxD,EAAGlxD,OAAS,EAAGF,GAAK,EAAGA,IAE9B,GADAiE,EAAMmtD,EAAGpxD,IACJ8wD,EAAUr2C,EAAExW,GAAMyW,EAAEzW,GAAMq7B,GAAO,OAAO,EAE/C,cAAc7kB,WAAaC,IAMvB,SAAUihC,EAAQr8C,EAASw8C,GAEjC,aAEA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAIy4C,EAAWlB,EAAoB,GAC/BiC,EAA4B,WAC5B,SAASA,EAAW0B,EAAUC,EAAS7xB,QACnB,IAAZA,IAAsBA,EAAU,IACpC7kB,KAAKy2C,SAAWA,EAChBz2C,KAAK02C,QAAUA,EACf,IAAI4R,EAAetU,EAASE,MAAMmC,KAAOrC,EAASE,MAAMqU,UACnC,MAAjB1jC,EAAQhhB,MAER7D,KAAK6D,MAASghB,EAAQhhB,MAAQmwC,EAASE,MAAM+B,MAASqS,EAGtDtoD,KAAK6D,MAAQmwC,EAASE,MAAMqU,UAEP,MAArB1jC,EAAQs6B,YACRn/C,KAAKm/C,UAAYt6B,EAAQs6B,WAoCjC,OAlCApK,EAAW56C,KAAO,SAAU27B,GACxB,MAAO,GAAG3vB,IAAIiC,KAAK0tB,EAAK0f,YAAY,SAAUjqC,GAC1C,OAAOA,EAAKjS,SAGpBy7C,EAAW7sC,UAAUstB,IAAM,SAAUM,EAAMv6B,GACvC,QAAKyE,KAAKwoD,OAAO1yB,EAAMv6B,KAEvBu6B,EAAKa,aAAa32B,KAAK02C,QAASn7C,IACzB,IAEXw5C,EAAW7sC,UAAUsgD,OAAS,SAAU1yB,EAAMv6B,GAC1C,IAAI4/B,EAAQ6Y,EAASK,MAAMve,EAAMke,EAASE,MAAM4R,MAAQ9lD,KAAK6D,MAAQmwC,EAASE,MAAMmC,OACpF,OAAa,MAATlb,IAEkB,MAAlBn7B,KAAKm/C,YAEY,kBAAV5jD,EACAyE,KAAKm/C,UAAU3nD,QAAQ+D,EAAMoQ,QAAQ,QAAS,MAAQ,EAGtD3L,KAAKm/C,UAAU3nD,QAAQ+D,IAAU,KAGhDw5C,EAAW7sC,UAAUutB,OAAS,SAAUK,GACpCA,EAAK6S,gBAAgB3oC,KAAK02C,UAE9B3B,EAAW7sC,UAAU3M,MAAQ,SAAUu6B,GACnC,IAAIv6B,EAAQu6B,EAAK6R,aAAa3nC,KAAK02C,SACnC,OAAI12C,KAAKwoD,OAAO1yB,EAAMv6B,IAAUA,EACrBA,EAEJ,IAEJw5C,EAlDoB,GAoD/Bz+C,EAAQuK,QAAUk0C,GAKZ,SAAUpC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQmyD,UAAOxhD,EAEjC,IAAI62C,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjB8yC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZO,EAAczI,EAAoB,GAElC0I,EAAeF,EAAuBC,GAEtCE,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCiN,EAAS5V,EAAoB,GAE7B6V,EAAUrN,EAAuBoN,GAEjC7M,EAAU/I,EAAoB,GAE9BgJ,EAAWR,EAAuBO,GAElCE,EAAQjJ,EAAoB,GAE5BkJ,EAASV,EAAuBS,GAEpC,SAAST,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAImM,EAAO,SAAUG,GAGnB,SAASH,IAGP,OAFAxM,EAAgBj8C,KAAMyoD,GAEfvM,EAA2Bl8C,MAAOyoD,EAAKjkC,WAAapqB,OAAO+gD,eAAesN,IAAO9tD,MAAMqF,KAAMlF,YAGtG,OARAshD,EAAUqM,EAAMG,GAQTH,EATE,CAUT3M,EAASj7C,SAEX4nD,EAAKjS,SAAW,OAChBiS,EAAKnxC,QAAU,OAEf,IAAIuxC,EAAY,SAAUC,GAGxB,SAASD,IAGP,OAFA5M,EAAgBj8C,KAAM6oD,GAEf3M,EAA2Bl8C,MAAO6oD,EAAUrkC,WAAapqB,OAAO+gD,eAAe0N,IAAYluD,MAAMqF,KAAMlF,YA6HhH,OAlIAshD,EAAUyM,EAAWC,GAQrBnO,EAAakO,EAAW,CAAC,CACvB5tD,IAAK,QACLM,MAAO,WACL,IAAIiQ,EAASxL,KAETm3C,EAAOn3C,KAAKy8C,QAAQ7mB,YAKxB,OAJIuhB,EAAK2F,SAAS,QAEhB3F,EAAOA,EAAK9uC,MAAM,GAAI,IAEjB8uC,EAAKlxB,MAAM,MAAMvf,QAAO,SAAU45B,EAAO4F,GAC9C,OAAO5F,EAAM4W,OAAOhR,GAAMgR,OAAO,KAAM1rC,EAAO+/B,aAC7C,IAAIiQ,EAAa36C,WAErB,CACD5F,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GAC3B,GAAIjC,IAAS0G,KAAKw9C,QAAQhH,WAAYj7C,EAAtC,CAEA,IAAIwtD,EAAc/oD,KAAKgpD,WAAWhN,EAAOn7C,QAASb,KAAK9I,SAAW,GAC9D+xD,EAAenL,EAAeiL,EAAa,GAC3C5R,EAAO8R,EAAa,GAEZ,MAAR9R,GACFA,EAAK+R,SAAS/R,EAAKjgD,SAAW,EAAG,GAEnC6jD,EAAK8N,EAAU3gD,UAAUsc,WAAapqB,OAAO+gD,eAAe0N,EAAU3gD,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAM1G,EAAMiC,MAEpH,CACDN,IAAK,WACLM,MAAO,SAAkBkV,EAAOvZ,EAAQoC,EAAMiC,GAC5C,GAAe,IAAXrE,GACoE,MAApEwkD,EAAY76C,QAAQwzC,MAAM/6C,EAAMoiD,EAAY76C,QAAQqzC,MAAMgC,SAAkB58C,IAAS0G,KAAKw9C,QAAQhH,UAAYj7C,IAAUyE,KAAKw9C,QAAQjS,QAAQvrC,KAAKy8C,UAAtJ,CAGA,IAAI0M,EAAcnpD,KAAKopD,aAAa34C,GACpC,KAAI04C,EAAc,GAAKA,GAAe14C,EAAQvZ,GAA9C,CACA,IAAImyD,EAAcrpD,KAAKopD,aAAa34C,GAAO,GAAQ,EAC/C64C,EAAgBH,EAAcE,EAAc,EAC5CtT,EAAO/1C,KAAK+lD,QAAQsD,EAAaC,GACjC9jC,EAAOuwB,EAAKvwB,KAChBuwB,EAAK9wB,OAAO3rB,EAAMiC,GACdiqB,aAAgBqjC,GAClBrjC,EAAK+jC,SAAS,EAAG94C,EAAQ44C,EAAcnyD,EAASoyD,EAAehwD,EAAMiC,OAGxE,CACDN,IAAK,WACLM,MAAO,SAAkBkV,EAAOlV,EAAOshD,GACrC,GAAW,MAAPA,EAAJ,CAEA,IAAI2M,EAAexpD,KAAKgpD,WAAWhN,EAAOn7C,QAAS4P,GAC/Cg5C,EAAe3L,EAAe0L,EAAc,GAC5CrS,EAAOsS,EAAa,GACpBrkB,EAASqkB,EAAa,GAE1BtS,EAAK6F,SAAS5X,EAAQ7pC,MAEvB,CACDN,IAAK,SACLM,MAAO,WACL,IAAIrE,EAAS8I,KAAKy8C,QAAQ7mB,YAAY1+B,OACtC,OAAK8I,KAAKy8C,QAAQ7mB,YAAYknB,SAAS,MAGhC5lD,EAFEA,EAAS,IAInB,CACD+D,IAAK,eACLM,MAAO,SAAsBmuD,GAC3B,IAAIC,EAAU7uD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GAE7E,GAAK6uD,EAIH,OAAO3pD,KAAKy8C,QAAQ7mB,YAAYvtB,MAAM,EAAGqhD,GAAaE,YAAY,MAHlE,IAAIxkB,EAASplC,KAAKy8C,QAAQ7mB,YAAYvtB,MAAMqhD,GAAalyD,QAAQ,MACjE,OAAO4tC,GAAU,EAAIskB,EAActkB,GAAU,IAKhD,CACDnqC,IAAK,WACLM,MAAO,SAAkB2R,GAClBlN,KAAKy8C,QAAQ7mB,YAAYknB,SAAS,OACrC98C,KAAK42B,YAAY8kB,EAAY76C,QAAQszC,OAAO,OAAQ,OAEtD4G,EAAK8N,EAAU3gD,UAAUsc,WAAapqB,OAAO+gD,eAAe0N,EAAU3gD,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMkN,GAC/G,IAAIsY,EAAOxlB,KAAKwlB,KACJ,MAARA,GAAgBA,EAAKqkC,OAAS7pD,MAAQwlB,EAAKg4B,QAAQhH,WAAax2C,KAAKw9C,QAAQhH,UAAYx2C,KAAKw9C,QAAQjS,QAAQvrC,KAAKy8C,WAAaj3B,EAAKg4B,QAAQjS,QAAQ/lB,EAAKi3B,WAC5Jj3B,EAAKskC,SAAS58C,GACdsY,EAAKwgC,aAAahmD,MAClBwlB,EAAKiQ,YAGR,CACDx6B,IAAK,UACLM,MAAO,SAAiBV,GACtBkgD,EAAK8N,EAAU3gD,UAAUsc,WAAapqB,OAAO+gD,eAAe0N,EAAU3gD,WAAY,UAAWlI,MAAMoI,KAAKpI,KAAMnF,GAC9G,GAAGwN,MAAMD,KAAKpI,KAAKy8C,QAAQ3b,iBAAiB,MAAM9lC,SAAQ,SAAU86B,GAClE,IAAIigB,EAAO2F,EAAY76C,QAAQuzC,KAAKte,GACxB,MAARigB,EACFjgB,EAAKK,WAAWH,YAAYF,GACnBigB,aAAgB2F,EAAY76C,QAAQ6zC,MAC7CqB,EAAKtgB,SAELsgB,EAAKgU,eAIT,CAAC,CACH9uD,IAAK,SACLM,MAAO,SAAgBA,GACrB,IAAIkhD,EAAU1B,EAAK8N,EAAUrkC,WAAapqB,OAAO+gD,eAAe0N,GAAY,SAAU7oD,MAAMoI,KAAKpI,KAAMzE,GAEvG,OADAkhD,EAAQ9lB,aAAa,cAAc,GAC5B8lB,IAER,CACDxhD,IAAK,UACLM,MAAO,WACL,OAAO,MAIJstD,EAnIO,CAoIdF,EAAQ9nD,SAEVgoD,EAAUrS,SAAW,aACrBqS,EAAUvxC,QAAU,MACpBuxC,EAAUmB,IAAM,KAEhB1zD,EAAQmyD,KAAOA,EACfnyD,EAAQuK,QAAUgoD,GAIZ,SAAUlW,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIsiD,EAA4B,oBAAXn1C,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUrN,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAXoN,QAAyBpN,EAAIgN,cAAgBI,QAAUpN,IAAQoN,OAAOR,UAAY,gBAAkB5M,GAElQwiD,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjB8yC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfw3B,EAAczI,EAAoB,GAElC0I,EAAeF,EAAuBC,GAEtC0O,EAAMnX,EAAoB,IAE1BoX,EAAO5O,EAAuB2O,GAE9BxO,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErC0O,EAAQrX,EAAoB,IAE5BsX,EAAS9O,EAAuB6O,GAEhCE,EAAUvX,EAAoB,IAE9BwX,EAAWhP,EAAuB+O,GAElC3B,EAAS5V,EAAoB,GAE7B6V,EAAUrN,EAAuBoN,GAEjC/M,EAAS7I,EAAoB,IAE7B8I,EAAUN,EAAuBK,GAEjC4O,EAASzX,EAAoB,IAE7B0X,EAAUlP,EAAuBiP,GAEjCE,EAAa3X,EAAoB,IAEjC4X,EAAcpP,EAAuBmP,GAErCrP,EAAUtI,EAAoB,GAE9BuI,EAAWC,EAAuBF,GAEtC,SAASE,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAASJ,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,IAAI8iD,EAAQ,WAERC,EAAS,WACX,SAASA,EAAO1L,GACdjD,EAAgBj8C,KAAM4qD,GAEtB5qD,KAAKk/C,OAASA,EACdl/C,KAAKsgC,MAAQtgC,KAAK6qD,WA6PpB,OA1PAlQ,EAAaiQ,EAAQ,CAAC,CACpB3vD,IAAK,aACLM,MAAO,SAAoB+kC,GACzB,IAAIz1B,EAAQ7K,KAER8qD,GAAqB,EACzB9qD,KAAKk/C,OAAOiB,SACZ,IAAI4K,EAAe/qD,KAAKk/C,OAAOhoD,SAoD/B,OAnDA8I,KAAKk/C,OAAO8L,aACZ1qB,EAAQ2qB,EAAe3qB,GACvBA,EAAM55B,QAAO,SAAU+J,EAAOqmC,GAC5B,IAAI5/C,EAAS4/C,EAAGO,QAAUP,EAAGkB,QAAUlB,EAAGI,OAAOhgD,QAAU,EACvDs+C,EAAasB,EAAGtB,YAAc,GAClC,GAAiB,MAAbsB,EAAGI,OAAgB,CACrB,GAAyB,kBAAdJ,EAAGI,OAAqB,CACjC,IAAIC,EAAOL,EAAGI,OACVC,EAAK2F,SAAS,OAASgO,IACzBA,GAAqB,EACrB3T,EAAOA,EAAK9uC,MAAM,GAAI,IAEpBoI,GAASs6C,IAAiB5T,EAAK2F,SAAS,QAC1CgO,GAAqB,GAEvBjgD,EAAMq0C,OAAOlC,SAASvsC,EAAO0mC,GAE7B,IAAI+T,EAAergD,EAAMq0C,OAAOzF,KAAKhpC,GACjC06C,EAAgBrN,EAAeoN,EAAc,GAC7CzR,EAAO0R,EAAc,GACrB/lB,EAAS+lB,EAAc,GAEvB5f,GAAU,EAAI8P,EAASx6C,SAAS,IAAI,EAAI6nD,EAAOhO,eAAejB,IAClE,GAAIA,aAAgBkP,EAAQ9nD,QAAS,CACnC,IAAIuqD,EAAmB3R,EAAKuP,WAAWtN,EAAY76C,QAAQ4zC,KAAMrP,GAC7DimB,EAAoBvN,EAAesN,EAAkB,GACrDhO,EAAOiO,EAAkB,GAE7B9f,GAAU,EAAI8P,EAASx6C,SAAS0qC,GAAS,EAAImd,EAAOhO,eAAe0C,IAErE5H,EAAa0U,EAAKrpD,QAAQ20C,WAAWqB,KAAKtL,EAASiK,IAAe,QAC7D,GAA2B,WAAvBqI,EAAQ/G,EAAGI,QAAsB,CAC1C,IAAIj8C,EAAMb,OAAOD,KAAK28C,EAAGI,QAAQ,GACjC,GAAW,MAAPj8C,EAAa,OAAOwV,EACxB5F,EAAMq0C,OAAOlC,SAASvsC,EAAOxV,EAAK67C,EAAGI,OAAOj8C,IAE9C8vD,GAAgB7zD,EAKlB,OAHAkD,OAAOD,KAAKq7C,GAAYx6C,SAAQ,SAAU1B,GACxCuR,EAAMq0C,OAAOqK,SAAS94C,EAAOvZ,EAAQoC,EAAMk8C,EAAWl8C,OAEjDmX,EAAQvZ,IACd,GACHopC,EAAM55B,QAAO,SAAU+J,EAAOqmC,GAC5B,MAAyB,kBAAdA,EAAGkB,QACZntC,EAAMq0C,OAAOgK,SAASz4C,EAAOqmC,EAAGkB,QACzBvnC,GAEFA,GAASqmC,EAAGO,QAAUP,EAAGI,OAAOhgD,QAAU,KAChD,GACH8I,KAAKk/C,OAAOoM,WACLtrD,KAAKmgD,OAAO7f,KAEpB,CACDrlC,IAAK,aACLM,MAAO,SAAoBkV,EAAOvZ,GAEhC,OADA8I,KAAKk/C,OAAOgK,SAASz4C,EAAOvZ,GACrB8I,KAAKmgD,QAAO,IAAI3E,EAAa36C,SAAUw2C,OAAO5mC,GAAOunC,OAAO9gD,MAEpE,CACD+D,IAAK,aACLM,MAAO,SAAoBkV,EAAOvZ,GAChC,IAAI+T,EAASjL,KAETurC,EAAUzwC,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAoBlF,OAlBAkF,KAAKk/C,OAAOiB,SACZ/lD,OAAOD,KAAKoxC,GAASvwC,SAAQ,SAAUiqB,GACrC,GAA+B,MAA3Bha,EAAOi0C,OAAOC,WAAsBl0C,EAAOi0C,OAAOC,UAAUl6B,GAAhE,CACA,IAAIo4B,EAAQpyC,EAAOi0C,OAAO7B,MAAM5sC,EAAOkhB,KAAK7F,IAAI50B,EAAQ,IACpDq0D,EAAkBr0D,EACtBmmD,EAAMriD,SAAQ,SAAUy+C,GACtB,IAAI+R,EAAa/R,EAAKviD,SACtB,GAAMuiD,aAAgB2Q,EAAOvpD,QAEtB,CACL,IAAI4qD,EAAYh7C,EAAQgpC,EAAKrU,OAAOn6B,EAAOi0C,QACvCwM,EAAajS,EAAK2P,aAAaqC,EAAYF,GAAmBE,EAAY,EAC9EhS,EAAK8P,SAASkC,EAAWC,EAAYzmC,EAAQsmB,EAAQtmB,SAJrDw0B,EAAKx0B,OAAOA,EAAQsmB,EAAQtmB,IAM9BsmC,GAAmBC,SAGvBxrD,KAAKk/C,OAAO4K,WACL9pD,KAAKmgD,QAAO,IAAI3E,EAAa36C,SAAUw2C,OAAO5mC,GAAO4mC,OAAOngD,GAAQ,EAAIszD,EAAQ3pD,SAAS0qC,OAEjG,CACDtwC,IAAK,aACLM,MAAO,SAAoBkV,EAAOvZ,GAChC,IAAIsU,EAASxL,KAETurC,EAAUzwC,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAKlF,OAHAV,OAAOD,KAAKoxC,GAASvwC,SAAQ,SAAUiqB,GACrCzZ,EAAO0zC,OAAOqK,SAAS94C,EAAOvZ,EAAQ+tB,EAAQsmB,EAAQtmB,OAEjDjlB,KAAKmgD,QAAO,IAAI3E,EAAa36C,SAAUw2C,OAAO5mC,GAAO4mC,OAAOngD,GAAQ,EAAIszD,EAAQ3pD,SAAS0qC,OAEjG,CACDtwC,IAAK,cACLM,MAAO,SAAqBkV,EAAOvZ,GACjC,OAAO8I,KAAKsgC,MAAMj4B,MAAMoI,EAAOA,EAAQvZ,KAExC,CACD+D,IAAK,WACLM,MAAO,WACL,OAAOyE,KAAKk/C,OAAO7B,QAAQ32C,QAAO,SAAU45B,EAAOmZ,GACjD,OAAOnZ,EAAMvmC,OAAO0/C,EAAKnZ,WACxB,IAAIkb,EAAa36C,WAErB,CACD5F,IAAK,YACLM,MAAO,SAAmBkV,GACxB,IAAIvZ,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAE7EuiD,EAAQ,GACRsO,EAAS,GACE,IAAXz0D,EACF8I,KAAKk/C,OAAOnoB,KAAKtmB,GAAOzV,SAAQ,SAAU+7B,GACxC,IAAI60B,EAAQ9N,EAAe/mB,EAAM,GAC7Bgf,EAAO6V,EAAM,GAEb7V,aAAgB4S,EAAQ9nD,QAC1Bw8C,EAAM/kD,KAAKy9C,GACFA,aAAgB2F,EAAY76C,QAAQ4zC,MAC7CkX,EAAOrzD,KAAKy9C,OAIhBsH,EAAQr9C,KAAKk/C,OAAO7B,MAAM5sC,EAAOvZ,GACjCy0D,EAAS3rD,KAAKk/C,OAAO/B,YAAYzB,EAAY76C,QAAQ4zC,KAAMhkC,EAAOvZ,IAEpE,IAAI20D,EAAa,CAACxO,EAAOsO,GAAQxlD,KAAI,SAAU2lD,GAC7C,GAAqB,IAAjBA,EAAM50D,OAAc,MAAO,GAC/B,IAAIq0C,GAAU,EAAImd,EAAOhO,eAAeoR,EAAM3vC,SAC9C,MAAO/hB,OAAOD,KAAKoxC,GAASr0C,OAAS,EAAG,CACtC,IAAI6+C,EAAO+V,EAAM3vC,QACjB,GAAY,MAAR45B,EAAc,OAAOxK,EACzBA,EAAUwgB,GAAe,EAAIrD,EAAOhO,eAAe3E,GAAOxK,GAE5D,OAAOA,KAET,OAAO8P,EAASx6C,QAAQlG,MAAM0gD,EAASx6C,QAASgrD,KAEjD,CACD5wD,IAAK,UACLM,MAAO,SAAiBkV,EAAOvZ,GAC7B,OAAO8I,KAAKwiD,YAAY/xC,EAAOvZ,GAAQqD,QAAO,SAAUu8C,GACtD,MAA4B,kBAAdA,EAAGI,UAChB/wC,KAAI,SAAU2wC,GACf,OAAOA,EAAGI,UACT3+C,KAAK,MAET,CACD0C,IAAK,cACLM,MAAO,SAAqBkV,EAAOuyC,EAAOznD,GAExC,OADAyE,KAAKk/C,OAAOlC,SAASvsC,EAAOuyC,EAAOznD,GAC5ByE,KAAKmgD,QAAO,IAAI3E,EAAa36C,SAAUw2C,OAAO5mC,GAAOymC,OAAOh8C,EAAgB,GAAI8nD,EAAOznD,OAE/F,CACDN,IAAK,aACLM,MAAO,SAAoBkV,EAAO0mC,GAChC,IAAIpsB,EAAS/qB,KAETurC,EAAUzwC,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAOlF,OALAq8C,EAAOA,EAAKxrC,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAClD3L,KAAKk/C,OAAOlC,SAASvsC,EAAO0mC,GAC5B/8C,OAAOD,KAAKoxC,GAASvwC,SAAQ,SAAUiqB,GACrC8F,EAAOm0B,OAAOqK,SAAS94C,EAAO0mC,EAAKjgD,OAAQ+tB,EAAQsmB,EAAQtmB,OAEtDjlB,KAAKmgD,QAAO,IAAI3E,EAAa36C,SAAUw2C,OAAO5mC,GAAOymC,OAAOC,GAAM,EAAIqT,EAAQ3pD,SAAS0qC,OAE/F,CACDtwC,IAAK,UACLM,MAAO,WACL,GAAmC,GAA/ByE,KAAKk/C,OAAOtlD,SAAS1C,OAAa,OAAO,EAC7C,GAAI8I,KAAKk/C,OAAOtlD,SAAS1C,OAAS,EAAG,OAAO,EAC5C,IAAI6lD,EAAQ/8C,KAAKk/C,OAAOtlD,SAAS+0C,KACjC,OAAIoO,EAAMS,QAAQhH,WAAamS,EAAQ9nD,QAAQ21C,aAC3CuG,EAAMnjD,SAAS1C,OAAS,IACrB6lD,EAAMnjD,SAAS+0C,gBAAgBiN,EAAQ/6C,WAE/C,CACD5F,IAAK,eACLM,MAAO,SAAsBkV,EAAOvZ,GAClC,IAAIigD,EAAOn3C,KAAK+iD,QAAQtyC,EAAOvZ,GAE3B80D,EAAgBhsD,KAAKk/C,OAAOzF,KAAKhpC,EAAQvZ,GACzC+0D,EAAgBnO,EAAekO,EAAe,GAC9CvS,EAAOwS,EAAc,GACrB7mB,EAAS6mB,EAAc,GAEvBC,EAAe,EACfC,EAAS,IAAI3Q,EAAa36C,QAClB,MAAR44C,IAIAyS,EAHIzS,aAAgB2Q,EAAOvpD,QAGZ44C,EAAK2P,aAAahkB,GAAUA,EAAS,EAFrCqU,EAAKviD,SAAWkuC,EAIjC+mB,EAAS1S,EAAKnZ,QAAQj4B,MAAM+8B,EAAQA,EAAS8mB,EAAe,GAAGhV,OAAO,OAExE,IAAIkJ,EAAWpgD,KAAKwiD,YAAY/xC,EAAOvZ,EAASg1D,GAC5CrV,EAAOuJ,EAASvJ,MAAK,IAAI2E,EAAa36C,SAAUq2C,OAAOC,GAAMp9C,OAAOoyD,IACpE7rB,GAAQ,IAAIkb,EAAa36C,SAAUw2C,OAAO5mC,GAAO1W,OAAO88C,GAC5D,OAAO72C,KAAKikD,WAAW3jB,KAExB,CACDrlC,IAAK,SACLM,MAAO,SAAgBmwB,GACrB,IAAIs0B,EAAYllD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAChFsxD,EAActxD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,QAAKmM,EAElFg+C,EAAWjlD,KAAKsgC,MACpB,GAAyB,IAArB0f,EAAU9oD,QAAsC,kBAAtB8oD,EAAU,GAAG3zC,MAA4B2zC,EAAU,GAAGnlD,OAAOlB,KAAKwhC,MAAMwvB,IAAUjP,EAAY76C,QAAQuzC,KAAK4L,EAAU,GAAGnlD,QAAS,CAE7J,IAAIwxD,EAAW3Q,EAAY76C,QAAQuzC,KAAK4L,EAAU,GAAGnlD,QACjD0wC,GAAU,EAAImd,EAAOhO,eAAe2R,GACpC57C,EAAQ47C,EAASjnB,OAAOplC,KAAKk/C,QAC7B76C,EAAW27C,EAAU,GAAG37C,SAASsH,QAAQ2+C,EAASzpD,QAAQyrD,SAAU,IACpEC,GAAU,IAAI/Q,EAAa36C,SAAUq2C,OAAO7yC,GAC5CmoD,GAAU,IAAIhR,EAAa36C,SAAUq2C,OAAOmV,EAAS9wD,SACrDkxD,GAAY,IAAIjR,EAAa36C,SAAUw2C,OAAO5mC,GAAO1W,OAAOwyD,EAAQ1V,KAAK2V,EAASJ,IACtF1gC,EAAS+gC,EAAU/lD,QAAO,SAAU45B,EAAOwW,GACzC,OAAIA,EAAGI,OACE5W,EAAM4W,OAAOJ,EAAGI,OAAQ3L,GAExBjL,EAAMhoC,KAAKw+C,KAEnB,IAAI0E,EAAa36C,SACpBb,KAAKsgC,MAAQ2kB,EAAS9M,QAAQzsB,QAE9B1rB,KAAKsgC,MAAQtgC,KAAK6qD,WACbn/B,IAAW,EAAIg/B,EAAY7pD,SAASokD,EAAS9M,QAAQzsB,GAAS1rB,KAAKsgC,SACtE5U,EAASu5B,EAASpO,KAAK72C,KAAKsgC,MAAO8rB,IAGvC,OAAO1gC,MAIJk/B,EAlQI,GAqQb,SAASmB,EAAexgB,EAASmhB,GAC/B,OAAOtyD,OAAOD,KAAKuyD,GAAUhmD,QAAO,SAAUimD,EAAQrzD,GACpD,OAAqB,MAAjBiyC,EAAQjyC,KACRozD,EAASpzD,KAAUiyC,EAAQjyC,GAC7BqzD,EAAOrzD,GAAQozD,EAASpzD,GACfxC,MAAM8R,QAAQ8jD,EAASpzD,IAC5BozD,EAASpzD,GAAM9B,QAAQ+zC,EAAQjyC,IAAS,IAC1CqzD,EAAOrzD,GAAQozD,EAASpzD,GAAMS,OAAO,CAACwxC,EAAQjyC,MAGhDqzD,EAAOrzD,GAAQ,CAACozD,EAASpzD,GAAOiyC,EAAQjyC,KARRqzD,IAWjC,IAGL,SAAS1B,EAAe3qB,GACtB,OAAOA,EAAM55B,QAAO,SAAU45B,EAAOwW,GACnC,GAAkB,IAAdA,EAAGI,OAAc,CACnB,IAAI1B,GAAa,EAAIgV,EAAQ3pD,SAASi2C,EAAGtB,YAEzC,cADOA,EAAW,SACXlV,EAAM4W,OAAO,CAAE0V,MAAO9V,EAAGtB,WAAWoX,OAASpX,GAWtD,GATqB,MAAjBsB,EAAGtB,aAA8C,IAAvBsB,EAAGtB,WAAWqX,OAA0C,IAAzB/V,EAAGtB,WAAWsX,SACzEhW,GAAK,EAAI0T,EAAQ3pD,SAASi2C,GACtBA,EAAGtB,WAAWqX,KAChB/V,EAAGtB,WAAWqX,KAAO,WAErB/V,EAAGtB,WAAWqX,KAAO,gBACd/V,EAAGtB,WAAWsX,SAGA,kBAAdhW,EAAGI,OAAqB,CACjC,IAAIC,EAAOL,EAAGI,OAAOvrC,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAC3D,OAAO20B,EAAM4W,OAAOC,EAAML,EAAGtB,YAE/B,OAAOlV,EAAMhoC,KAAKw+C,KACjB,IAAI0E,EAAa36C,SAGtBvK,EAAQuK,QAAU+pD,GAIZ,SAAUjY,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQ+tD,WAAQp9C,EAElC,IAAI62C,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjB8yC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEf03B,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErC8O,EAASzX,EAAoB,IAE7B0X,EAAUlP,EAAuBiP,GAEjCE,EAAa3X,EAAoB,IAEjC4X,EAAcpP,EAAuBmP,GAErCvM,EAAYpL,EAAoB,GAEhCqL,EAAY7C,EAAuB4C,GAEnCM,EAAU1L,EAAoB,IAE9B2L,EAAWnD,EAAuBkD,GAEtC,SAASlD,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAASkM,EAAmB3P,GAAO,GAAIf,MAAM8R,QAAQ/Q,GAAM,CAAE,IAAK,IAAIb,EAAI,EAAG6R,EAAO/R,MAAMe,EAAIX,QAASF,EAAIa,EAAIX,OAAQF,IAAO6R,EAAK7R,GAAKa,EAAIb,GAAM,OAAO6R,EAAe,OAAO/R,MAAMyR,KAAK1Q,GAE1L,SAASokD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,IAAI+2C,GAAQ,EAAIH,EAAS59C,SAAS,mBAE9BwjD,EAAQ,SAASA,EAAM5zC,GACzB,IAAIvZ,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAEjFmhD,EAAgBj8C,KAAMqkD,GAEtBrkD,KAAKyQ,MAAQA,EACbzQ,KAAK9I,OAASA,GAGZ61D,EAAY,WACd,SAASA,EAAU7N,EAAQD,GACzB,IAAIp0C,EAAQ7K,KAEZi8C,EAAgBj8C,KAAM+sD,GAEtB/sD,KAAKi/C,QAAUA,EACfj/C,KAAKk/C,OAASA,EACdl/C,KAAKgtD,WAAY,EACjBhtD,KAAKitD,WAAY,EACjBjtD,KAAKyyC,KAAOzyC,KAAKk/C,OAAOzC,QACxBz8C,KAAKktD,OAASxR,EAAY76C,QAAQszC,OAAO,SAAUn0C,MAEnDA,KAAKigD,UAAYjgD,KAAKmtD,WAAa,IAAI9I,EAAM,EAAG,GAChDrkD,KAAKotD,oBACLptD,KAAKqtD,iBACLrtD,KAAKi/C,QAAQqO,UAAU,kBAAmB71C,UAAU,WAC7C5M,EAAMoiD,WACTliD,WAAWF,EAAMs1C,OAAOzkD,KAAKmP,EAAOszC,EAAUt9C,QAAQwgD,QAAQiD,MAAO,MAGzEtkD,KAAKi/C,QAAQ98C,GAAGg8C,EAAUt9C,QAAQ8+C,OAAOC,eAAe,SAAUvzC,EAAMi0B,GAClEj0B,IAAS8xC,EAAUt9C,QAAQ8+C,OAAOE,aAAevf,EAAMppC,SAAW,GACpE2T,EAAMs1C,OAAOhC,EAAUt9C,QAAQwgD,QAAQM,WAG3C3hD,KAAKi/C,QAAQ98C,GAAGg8C,EAAUt9C,QAAQ8+C,OAAOqH,sBAAsB,WAC7D,GAAKn8C,EAAMwW,WAAX,CACA,IAAIksC,EAAS1iD,EAAM2iD,iBACL,MAAVD,GACAA,EAAOp1D,MAAM29B,OAASjrB,EAAMqiD,OAAOO,UAEvC5iD,EAAMo0C,QAAQuE,KAAKrF,EAAUt9C,QAAQ8+C,OAAOI,eAAe,WACzD,IACEl1C,EAAM6iD,eAAeH,EAAOp1D,MAAM29B,KAAMy3B,EAAOp1D,MAAMitC,OAAQmoB,EAAOn1D,IAAI09B,KAAMy3B,EAAOn1D,IAAIgtC,QACzF,MAAOuoB,YAGb3tD,KAAKi/C,QAAQ98C,GAAGg8C,EAAUt9C,QAAQ8+C,OAAOsH,iBAAiB,SAAUjH,EAAW9yC,GAC7E,GAAIA,EAAQ+hC,MAAO,CACjB,IAAI2e,EAAiB1gD,EAAQ+hC,MACzB4e,EAAYD,EAAeC,UAC3BC,EAAcF,EAAeE,YAC7BC,EAAUH,EAAeG,QACzBC,EAAYJ,EAAeI,UAE/BnjD,EAAM6iD,eAAeG,EAAWC,EAAaC,EAASC,OAG1DhuD,KAAKmgD,OAAOhC,EAAUt9C,QAAQwgD,QAAQM,QA8WxC,OA3WAhH,EAAaoS,EAAW,CAAC,CACvB9xD,IAAK,oBACLM,MAAO,WACL,IAAI0P,EAASjL,KAEbA,KAAKyyC,KAAKhS,iBAAiB,oBAAoB,WAC7Cx1B,EAAO+hD,WAAY,KAErBhtD,KAAKyyC,KAAKhS,iBAAiB,kBAAkB,WAE3C,GADAx1B,EAAO+hD,WAAY,EACf/hD,EAAOiiD,OAAOhS,OAAQ,CACxB,IAAIjM,EAAQhkC,EAAOiiD,OAAOe,UAC1B,IAAKhf,EAAO,OACZlkC,YAAW,WACTE,EAAOyiD,eAAeze,EAAM4e,UAAW5e,EAAM6e,YAAa7e,EAAM8e,QAAS9e,EAAM+e,aAC9E,SAIR,CACD/yD,IAAK,iBACLM,MAAO,WACL,IAAIiQ,EAASxL,KAEbA,KAAKi/C,QAAQqO,UAAU,YAAa71C,SAAS0pB,MAAM,WACjD31B,EAAOyhD,WAAY,KAErBjtD,KAAKi/C,QAAQqO,UAAU,UAAW71C,SAAS0pB,MAAM,WAC/C31B,EAAOyhD,WAAY,EACnBzhD,EAAO20C,OAAOhC,EAAUt9C,QAAQwgD,QAAQiD,WAG3C,CACDrpD,IAAK,QACLM,MAAO,WACDyE,KAAKqhB,aACTrhB,KAAKyyC,KAAK9wB,QACV3hB,KAAK8gD,SAAS9gD,KAAKmtD,eAEpB,CACDlyD,IAAK,SACLM,MAAO,SAAgB2yD,EAAS3yD,GAC9B,GAA6B,MAAzByE,KAAKk/C,OAAOC,WAAsBn/C,KAAKk/C,OAAOC,UAAU+O,GAA5D,CACAluD,KAAKk/C,OAAOiB,SACZ,IAAIgO,EAAcnuD,KAAKwtD,iBACvB,GAAmB,MAAfW,GAAwBA,EAAYZ,OAAOa,YAAa1S,EAAY76C,QAAQwzC,MAAM6Z,EAASxS,EAAY76C,QAAQqzC,MAAMgC,OAAzH,CACA,GAAIiY,EAAYh2D,MAAM29B,OAAS91B,KAAKktD,OAAOO,SAAU,CACnD,IAAI1X,EAAO2F,EAAY76C,QAAQuzC,KAAK+Z,EAAYh2D,MAAM29B,MAAM,GAC5D,GAAY,MAARigB,EAAc,OAElB,GAAIA,aAAgB2F,EAAY76C,QAAQ4zC,KAAM,CAC5C,IAAI4Z,EAAQtY,EAAK9vB,MAAMkoC,EAAYh2D,MAAMitC,QACzC2Q,EAAKmF,OAAO1X,aAAaxjC,KAAKktD,OAAQmB,QAEtCtY,EAAKvS,aAAaxjC,KAAKktD,OAAQiB,EAAYh2D,MAAM29B,MAEnD91B,KAAKktD,OAAOoB,SAEdtuD,KAAKktD,OAAOjoC,OAAOipC,EAAS3yD,GAC5ByE,KAAKk/C,OAAO4K,WACZ9pD,KAAK0tD,eAAe1tD,KAAKktD,OAAOO,SAAUztD,KAAKktD,OAAOO,SAAS9zD,KAAKzC,QACpE8I,KAAKmgD,aAEN,CACDllD,IAAK,YACLM,MAAO,SAAmBkV,GACxB,IAAIvZ,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAE7EiwD,EAAe/qD,KAAKk/C,OAAOhoD,SAC/BuZ,EAAQkhB,KAAKlG,IAAIhb,EAAOs6C,EAAe,GACvC7zD,EAASy6B,KAAKlG,IAAIhb,EAAQvZ,EAAQ6zD,EAAe,GAAKt6C,EACtD,IAAIqlB,OAAO,EACPy4B,EAAevuD,KAAKk/C,OAAO9B,KAAK3sC,GAChC+9C,EAAgB1Q,EAAeyQ,EAAc,GAC7CnR,EAAOoR,EAAc,GACrBppB,EAASopB,EAAc,GAC3B,GAAY,MAARpR,EAAc,OAAO,KAEzB,IAAIqR,EAAiBrR,EAAKlqB,SAASkS,GAAQ,GAEvCspB,EAAkB5Q,EAAe2Q,EAAgB,GAErD34B,EAAO44B,EAAgB,GACvBtpB,EAASspB,EAAgB,GAEzB,IAAIzf,EAAQx3B,SAASk3C,cACrB,GAAIz3D,EAAS,EAAG,CACd+3C,EAAM2f,SAAS94B,EAAMsP,GAErB,IAAIypB,EAAgB7uD,KAAKk/C,OAAO9B,KAAK3sC,EAAQvZ,GAEzC43D,EAAgBhR,EAAe+Q,EAAe,GAKlD,GAHAzR,EAAO0R,EAAc,GACrB1pB,EAAS0pB,EAAc,GAEX,MAAR1R,EAAc,OAAO,KAEzB,IAAI2R,EAAkB3R,EAAKlqB,SAASkS,GAAQ,GAExC4pB,EAAkBlR,EAAeiR,EAAiB,GAMtD,OAJAj5B,EAAOk5B,EAAgB,GACvB5pB,EAAS4pB,EAAgB,GAEzB/f,EAAMggB,OAAOn5B,EAAMsP,GACZ6J,EAAM9B,wBAEb,IAAI+hB,EAAO,OACPC,OAAO,EAeX,OAdIr5B,aAAgBgf,MACd1P,EAAStP,EAAKn8B,KAAKzC,QACrB+3C,EAAM2f,SAAS94B,EAAMsP,GACrB6J,EAAMggB,OAAOn5B,EAAMsP,EAAS,KAE5B6J,EAAM2f,SAAS94B,EAAMsP,EAAS,GAC9B6J,EAAMggB,OAAOn5B,EAAMsP,GACnB8pB,EAAO,SAETC,EAAOlgB,EAAM9B,0BAEbgiB,EAAO/R,EAAKX,QAAQtP,wBAChB/H,EAAS,IAAG8pB,EAAO,UAElB,CACL1xD,OAAQ2xD,EAAK1xD,IAAM0xD,EAAKrxD,OACxBA,OAAQqxD,EAAKrxD,OACbG,KAAMkxD,EAAKD,GACXlxD,MAAOmxD,EAAKD,GACZzxD,IAAK0xD,EAAK1xD,IACVI,MAAO,KAIZ,CACD5C,IAAK,iBACLM,MAAO,WACL,IAAI8jD,EAAY5nC,SAAS8pC,eACzB,GAAiB,MAAblC,GAAqBA,EAAU+P,YAAc,EAAG,OAAO,KAC3D,IAAIjB,EAAc9O,EAAUgQ,WAAW,GACvC,GAAmB,MAAflB,EAAqB,OAAO,KAChC,IAAIlf,EAAQjvC,KAAKsvD,gBAAgBnB,GAEjC,OADAvP,EAAM2Q,KAAK,iBAAkBtgB,GACtBA,IAER,CACDh0C,IAAK,WACLM,MAAO,WACL,IAAIi0D,EAAaxvD,KAAKwtD,iBACtB,GAAkB,MAAdgC,EAAoB,MAAO,CAAC,KAAM,MACtC,IAAIvgB,EAAQjvC,KAAKyvD,kBAAkBD,GACnC,MAAO,CAACvgB,EAAOugB,KAEhB,CACDv0D,IAAK,WACLM,MAAO,WACL,OAAOkc,SAAS2S,gBAAkBpqB,KAAKyyC,OAExC,CACDx3C,IAAK,oBACLM,MAAO,SAA2B0zC,GAChC,IAAIlkB,EAAS/qB,KAET0vD,EAAY,CAAC,CAACzgB,EAAM92C,MAAM29B,KAAMmZ,EAAM92C,MAAMitC,SAC3C6J,EAAMse,OAAOa,WAChBsB,EAAUp3D,KAAK,CAAC22C,EAAM72C,IAAI09B,KAAMmZ,EAAM72C,IAAIgtC,SAE5C,IAAIuqB,EAAUD,EAAUvpD,KAAI,SAAU+sB,GACpC,IAAI08B,EAAY9R,EAAe5qB,EAAU,GACrC4C,EAAO85B,EAAU,GACjBxqB,EAASwqB,EAAU,GAEnB7Z,EAAO2F,EAAY76C,QAAQuzC,KAAKte,GAAM,GACtCrlB,EAAQslC,EAAK3Q,OAAOra,EAAOm0B,QAC/B,OAAe,IAAX9Z,EACK30B,EACEslC,aAAgB2F,EAAY76C,QAAQ0zC,UACtC9jC,EAAQslC,EAAK7+C,SAEbuZ,EAAQslC,EAAKtlC,MAAMqlB,EAAMsP,MAGhChtC,EAAMu5B,KAAKlG,IAAIkG,KAAK7F,IAAInxB,MAAMg3B,KAAMnqB,EAAmBmoD,IAAW3vD,KAAKk/C,OAAOhoD,SAAW,GACzFiB,EAAQw5B,KAAKlG,IAAI9wB,MAAMg3B,KAAM,CAACv5B,GAAK2B,OAAOyN,EAAmBmoD,KACjE,OAAO,IAAItL,EAAMlsD,EAAOC,EAAMD,KAE/B,CACD8C,IAAK,kBACLM,MAAO,SAAyB4yD,GAC9B,IAAK3rB,EAASxiC,KAAKyyC,KAAM0b,EAAY0B,kBAAoB1B,EAAYC,YAAc5rB,EAASxiC,KAAKyyC,KAAM0b,EAAY2B,cACjH,OAAO,KAET,IAAI7gB,EAAQ,CACV92C,MAAO,CAAE29B,KAAMq4B,EAAY0B,eAAgBzqB,OAAQ+oB,EAAYL,aAC/D11D,IAAK,CAAE09B,KAAMq4B,EAAY2B,aAAc1qB,OAAQ+oB,EAAYH,WAC3DT,OAAQY,GAkBV,MAhBA,CAAClf,EAAM92C,MAAO82C,EAAM72C,KAAK4C,SAAQ,SAAUk4B,GACzC,IAAI4C,EAAO5C,EAAS4C,KAChBsP,EAASlS,EAASkS,OACtB,QAAStP,aAAgBgf,OAAShf,EAAKi6B,WAAW74D,OAAS,EACzD,GAAI4+B,EAAKi6B,WAAW74D,OAASkuC,EAC3BtP,EAAOA,EAAKi6B,WAAW3qB,GACvBA,EAAS,MACJ,IAAItP,EAAKi6B,WAAW74D,SAAWkuC,EAIpC,MAHAtP,EAAOA,EAAK2S,UACZrD,EAAStP,aAAgBgf,KAAOhf,EAAKn8B,KAAKzC,OAAS4+B,EAAKi6B,WAAW74D,OAAS,EAKhFg8B,EAAS4C,KAAOA,EAAM5C,EAASkS,OAASA,KAEnC6J,IAER,CACDh0C,IAAK,gBACLM,MAAO,SAAuB0zC,GAC5B,IAAI2S,EAAS5hD,KAET2vD,EAAU1gB,EAAMmf,UAAY,CAACnf,EAAMx+B,OAAS,CAACw+B,EAAMx+B,MAAOw+B,EAAMx+B,MAAQw+B,EAAM/3C,QAC9EwsB,EAAO,GACPqnC,EAAe/qD,KAAKk/C,OAAOhoD,SAoB/B,OAnBAy4D,EAAQ30D,SAAQ,SAAUyV,EAAOzZ,GAC/ByZ,EAAQkhB,KAAKlG,IAAIs/B,EAAe,EAAGt6C,GACnC,IAAIqlB,OAAO,EACPk6B,EAAgBpO,EAAO1C,OAAO9B,KAAK3sC,GACnCw/C,EAAgBnS,EAAekS,EAAe,GAC9C5S,EAAO6S,EAAc,GACrB7qB,EAAS6qB,EAAc,GACvBC,EAAkB9S,EAAKlqB,SAASkS,EAAc,IAANpuC,GAExCm5D,EAAkBrS,EAAeoS,EAAiB,GAEtDp6B,EAAOq6B,EAAgB,GACvB/qB,EAAS+qB,EAAgB,GAEzBzsC,EAAKprB,KAAKw9B,EAAMsP,MAEd1hB,EAAKxsB,OAAS,IAChBwsB,EAAOA,EAAK3pB,OAAO2pB,IAEdA,IAER,CACDzoB,IAAK,iBACLM,MAAO,SAAwByjD,GAC7B,IAAI/P,EAAQjvC,KAAKigD,UACjB,GAAa,MAAThR,EAAJ,CACA,IAAIiT,EAASliD,KAAKmiD,UAAUlT,EAAMx+B,MAAOw+B,EAAM/3C,QAC/C,GAAc,MAAVgrD,EAAJ,CACA,IAAI1B,EAAQxgD,KAAKk/C,OAAOhoD,SAAW,EAE/Bg0D,EAAelrD,KAAKk/C,OAAOzF,KAAK9nB,KAAKlG,IAAIwjB,EAAMx+B,MAAO+vC,IACtD2K,EAAgBrN,EAAeoN,EAAc,GAC7CkF,EAAQjF,EAAc,GAEtBkF,EAAOD,EACX,GAAInhB,EAAM/3C,OAAS,EAAG,CACpB,IAAI80D,EAAgBhsD,KAAKk/C,OAAOzF,KAAK9nB,KAAKlG,IAAIwjB,EAAMx+B,MAAQw+B,EAAM/3C,OAAQspD,IAEtEyL,EAAgBnO,EAAekO,EAAe,GAElDqE,EAAOpE,EAAc,GAEvB,GAAa,MAATmE,GAAyB,MAARC,EAArB,CACA,IAAIC,EAAetR,EAAmB7R,wBAClC+U,EAAOzkD,IAAM6yD,EAAa7yD,IAC5BuhD,EAAmBmC,WAAamP,EAAa7yD,IAAMykD,EAAOzkD,IACjDykD,EAAO1kD,OAAS8yD,EAAa9yD,SACtCwhD,EAAmBmC,WAAae,EAAO1kD,OAAS8yD,EAAa9yD,aAGhE,CACDvC,IAAK,iBACLM,MAAO,SAAwBsyD,EAAWC,GACxC,IAAIC,EAAUjzD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK+yD,EAC9EG,EAAYlzD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKgzD,EAChFvQ,EAAQziD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GAG3E,GADA8jD,EAAM2Q,KAAK,iBAAkB1B,EAAWC,EAAaC,EAASC,GAC7C,MAAbH,GAA8C,MAAxB7tD,KAAKyyC,KAAKtc,YAA8C,MAAxB03B,EAAU13B,YAA4C,MAAtB43B,EAAQ53B,WAAlG,CAGA,IAAIkpB,EAAY5nC,SAAS8pC,eACzB,GAAiB,MAAblC,EACJ,GAAiB,MAAbwO,EAAmB,CAChB7tD,KAAKqhB,YAAYrhB,KAAKyyC,KAAK9wB,QAChC,IAAI4rC,GAAUvtD,KAAKwtD,kBAAoB,IAAID,OAC3C,GAAc,MAAVA,GAAkBhQ,GAASsQ,IAAcN,EAAOsC,gBAAkB/B,IAAgBP,EAAOO,aAAeC,IAAYR,EAAOuC,cAAgB9B,IAAcT,EAAOS,UAAW,CAEpJ,MAArBH,EAAUv2C,UACZw2C,EAAc,GAAGt2D,QAAQ4Q,KAAKylD,EAAU13B,WAAW45B,WAAYlC,GAC/DA,EAAYA,EAAU13B,YAED,MAAnB43B,EAAQz2C,UACV02C,EAAY,GAAGx2D,QAAQ4Q,KAAK2lD,EAAQ53B,WAAW45B,WAAYhC,GAC3DA,EAAUA,EAAQ53B,YAEpB,IAAI8Y,EAAQx3B,SAASk3C,cACrB1f,EAAM2f,SAASf,EAAWC,GAC1B7e,EAAMggB,OAAOlB,EAASC,GACtB3O,EAAUkR,kBACVlR,EAAUmR,SAASvhB,SAGrBoQ,EAAUkR,kBACVvwD,KAAKyyC,KAAK5wB,OACVpK,SAAS0pB,KAAKxf,WAGjB,CACD1mB,IAAK,WACLM,MAAO,SAAkB0zC,GACvB,IAAIsO,EAAQziD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GACvEC,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKqjD,EAAUt9C,QAAQwgD,QAAQC,IAO3G,GALqB,kBAAV/D,IACTxiD,EAASwiD,EACTA,GAAQ,GAEVqB,EAAM2Q,KAAK,WAAYtgB,GACV,MAATA,EAAe,CACjB,IAAIvrB,EAAO1jB,KAAKywD,cAAcxhB,GAC9BjvC,KAAK0tD,eAAe/yD,MAAMqF,KAAMwH,EAAmBkc,GAAM3pB,OAAO,CAACwjD,UAEjEv9C,KAAK0tD,eAAe,MAEtB1tD,KAAKmgD,OAAOplD,KAEb,CACDE,IAAK,SACLM,MAAO,WACL,IAAIR,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKqjD,EAAUt9C,QAAQwgD,QAAQiD,KAEvGoM,EAAW1wD,KAAKigD,UAEhB0Q,EAAY3wD,KAAK4iD,WACjBgO,EAAa9S,EAAe6S,EAAW,GACvC1Q,EAAY2Q,EAAW,GACvBzC,EAAcyC,EAAW,GAM7B,GAJA5wD,KAAKigD,UAAYA,EACK,MAAlBjgD,KAAKigD,YACPjgD,KAAKmtD,WAAantD,KAAKigD,aAEpB,EAAIyK,EAAY7pD,SAAS6vD,EAAU1wD,KAAKigD,WAAY,CACvD,IAAIkF,GAECnlD,KAAKgtD,WAA4B,MAAfmB,GAAuBA,EAAYZ,OAAOa,WAAaD,EAAYh2D,MAAM29B,OAAS91B,KAAKktD,OAAOO,UACnHztD,KAAKktD,OAAOe,UAEd,IAGM7I,EAHF1hC,EAAO,CAACy6B,EAAUt9C,QAAQ8+C,OAAOuH,kBAAkB,EAAIsD,EAAQ3pD,SAASb,KAAKigD,YAAY,EAAIuK,EAAQ3pD,SAAS6vD,GAAW31D,GAE7H,IADCoqD,EAAWnlD,KAAKi/C,SAASoG,KAAK1qD,MAAMwqD,EAAU,CAAChH,EAAUt9C,QAAQ8+C,OAAOC,eAAe7lD,OAAO2pB,IAC3F3oB,IAAWojD,EAAUt9C,QAAQwgD,QAAQM,QAGtCyD,EAAYplD,KAAKi/C,SAASoG,KAAK1qD,MAAMyqD,EAAW1hC,QAMlDqpC,EA/ZO,GAkahB,SAASvqB,EAAS0Y,EAAQ8N,GACxB,IAEEA,EAAW7yB,WACX,MAAOpnB,GACP,OAAO,EAOT,OAHIi6C,aAAsBlU,OACxBkU,EAAaA,EAAW7yB,YAEnB+kB,EAAO1Y,SAASwmB,GAGzB1yD,EAAQ+tD,MAAQA,EAChB/tD,EAAQuK,QAAUksD,GAIZ,SAAUpa,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIuU,EAAQ,SAAUrU,GAGpB,SAASqU,IAGP,OAFA5U,EAAgBj8C,KAAM6wD,GAEf3U,EAA2Bl8C,MAAO6wD,EAAMrsC,WAAapqB,OAAO+gD,eAAe0V,IAAQl2D,MAAMqF,KAAMlF,YA6BxG,OAlCAshD,EAAUyU,EAAOrU,GAQjB7B,EAAakW,EAAO,CAAC,CACnB51D,IAAK,aACLM,MAAO,SAAoB2/C,EAAQngC,GACF,IAA3BmgC,EAAOthD,SAAS1C,OAClB6jD,EAAK8V,EAAM3oD,UAAUsc,WAAapqB,OAAO+gD,eAAe0V,EAAM3oD,WAAY,aAAclI,MAAMoI,KAAKpI,KAAMk7C,EAAQngC,GAEjH/a,KAAKy1B,WAGR,CACDx6B,IAAK,SACLM,MAAO,WACL,OAAO,IAER,CACDN,IAAK,QACLM,MAAO,WACL,MAAO,MAEP,CAAC,CACHN,IAAK,QACLM,MAAO,gBAKFs1D,EAnCG,CAoCVnV,EAAY76C,QAAQ6zC,OAEtBmc,EAAMra,SAAW,QACjBqa,EAAMv5C,QAAU,KAEhBhhB,EAAQuK,QAAUgwD,GAIZ,SAAUle,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAIu1D,EAAgBhe,EAAoB,IACpCie,EAAWje,EAAoB,IAC/BkB,EAAWlB,EAAoB,GAC/Bke,EAA+B,SAAUzb,GAEzC,SAASyb,EAAcvU,GACnB,IAAI5xC,EAAQ0qC,EAAOntC,KAAKpI,KAAMy8C,IAAYz8C,KAE1C,OADA6K,EAAM8yB,QACC9yB,EAwNX,OA5NAsqC,EAAU6b,EAAezb,GAMzByb,EAAc9oD,UAAU0uB,YAAc,SAAUwhB,GAC5Cp4C,KAAKwjC,aAAa4U,IAEtB4Y,EAAc9oD,UAAUomD,OAAS,WAC7B/Y,EAAOrtC,UAAUomD,OAAOlmD,KAAKpI,MAC7BA,KAAKpG,SAASoB,SAAQ,SAAU4xC,GAC5BA,EAAM0hB,aAGd0C,EAAc9oD,UAAUy1B,MAAQ,WAC5B,IAAI9yB,EAAQ7K,KACZA,KAAKpG,SAAW,IAAIk3D,EAAcjwD,QAElC,GAAGwH,MACED,KAAKpI,KAAKy8C,QAAQsT,YAClBpG,UACA3uD,SAAQ,SAAU86B,GACnB,IACI,IAAI8W,EAAQqkB,EAASn7B,GACrBjrB,EAAM24B,aAAaoJ,EAAO/hC,EAAMjR,SAAS+0C,WAAQ1nC,GAErD,MAAOye,GACH,GAAIA,aAAesuB,EAASsB,eACxB,OAEA,MAAM5vB,OAItBsrC,EAAc9oD,UAAUghD,SAAW,SAAUz4C,EAAOvZ,GAChD,GAAc,IAAVuZ,GAAevZ,IAAW8I,KAAK9I,SAC/B,OAAO8I,KAAKy1B,SAEhBz1B,KAAKpG,SAASs3D,UAAUzgD,EAAOvZ,GAAQ,SAAU01C,EAAOxH,EAAQluC,GAC5D01C,EAAMsc,SAAS9jB,EAAQluC,OAG/B85D,EAAc9oD,UAAU8gD,WAAa,SAAU5+C,EAAUqG,GACrD,IAAI44B,EAAKrpC,KAAKpG,SAASw6C,KAAK3jC,GAAQm8B,EAAQvD,EAAG,GAAIjE,EAASiE,EAAG,GAC/D,OAA0B,MAArBj/B,EAASosC,UAAoBpsC,EAASwiC,IACjB,MAArBxiC,EAASosC,UAAoB5J,aAAiBxiC,EACxC,CAACwiC,EAAOxH,GAEVwH,aAAiBokB,EACfpkB,EAAMoc,WAAW5+C,EAAUg7B,GAG3B,CAAC,MAAO,IAGvB4rB,EAAc9oD,UAAUi1C,YAAc,SAAU/yC,EAAUqG,EAAOvZ,QAC/C,IAAVuZ,IAAoBA,EAAQ,QACjB,IAAXvZ,IAAqBA,EAASwrD,OAAOC,WACzC,IAAIxF,EAAc,GACdgU,EAAaj6D,EAWjB,OAVA8I,KAAKpG,SAASs3D,UAAUzgD,EAAOvZ,GAAQ,SAAU01C,EAAOn8B,EAAOvZ,IACjC,MAArBkT,EAASosC,UAAoBpsC,EAASwiC,IACjB,MAArBxiC,EAASosC,UAAoB5J,aAAiBxiC,IAC/C+yC,EAAY7kD,KAAKs0C,GAEjBA,aAAiBokB,IACjB7T,EAAcA,EAAYpjD,OAAO6yC,EAAMuQ,YAAY/yC,EAAUqG,EAAO0gD,KAExEA,GAAcj6D,KAEXimD,GAEX6T,EAAc9oD,UAAUkpD,OAAS,WAC7BpxD,KAAKpG,SAASoB,SAAQ,SAAU4xC,GAC5BA,EAAMwkB,YAEV7b,EAAOrtC,UAAUkpD,OAAOhpD,KAAKpI,OAEjCgxD,EAAc9oD,UAAUqhD,SAAW,SAAU94C,EAAOvZ,EAAQoC,EAAMiC,GAC9DyE,KAAKpG,SAASs3D,UAAUzgD,EAAOvZ,GAAQ,SAAU01C,EAAOxH,EAAQluC,GAC5D01C,EAAM2c,SAASnkB,EAAQluC,EAAQoC,EAAMiC,OAG7Cy1D,EAAc9oD,UAAU80C,SAAW,SAAUvsC,EAAOlV,EAAOshD,GACvD,IAAIxT,EAAKrpC,KAAKpG,SAASw6C,KAAK3jC,GAAQm8B,EAAQvD,EAAG,GAAIjE,EAASiE,EAAG,GAC/D,GAAIuD,EACAA,EAAMoQ,SAAS5X,EAAQ7pC,EAAOshD,OAE7B,CACD,IAAI9G,EAAc,MAAP8G,EAAc7I,EAASG,OAAO,OAAQ54C,GAASy4C,EAASG,OAAO54C,EAAOshD,GACjF78C,KAAK42B,YAAYmf,KAGzBib,EAAc9oD,UAAUs7B,aAAe,SAAU6tB,EAAWC,GACxD,GAAoC,MAAhCtxD,KAAKw9C,QAAQE,kBACZ19C,KAAKw9C,QAAQE,gBAAgB3tC,MAAK,SAAU68B,GACzC,OAAOykB,aAAqBzkB,KAEhC,MAAM,IAAIoH,EAASsB,eAAe,iBAAmB+b,EAAU7T,QAAQhH,SAAW,SAAWx2C,KAAKw9C,QAAQhH,UAE9G6a,EAAUE,WAAWvxD,KAAMsxD,IAE/BN,EAAc9oD,UAAUhR,OAAS,WAC7B,OAAO8I,KAAKpG,SAAS8M,QAAO,SAAUyF,EAAMygC,GACxC,OAAOzgC,EAAOygC,EAAM11C,WACrB,IAEP85D,EAAc9oD,UAAU89C,aAAe,SAAUwL,EAAc3Q,GAC3D7gD,KAAKpG,SAASoB,SAAQ,SAAU4xC,GAC5B4kB,EAAahuB,aAAaoJ,EAAOiU,OAGzCmQ,EAAc9oD,UAAU4hD,SAAW,SAAU58C,GAEzC,GADAqoC,EAAOrtC,UAAU4hD,SAAS1hD,KAAKpI,KAAMkN,GACR,IAAzBlN,KAAKpG,SAAS1C,OACd,GAAiC,MAA7B8I,KAAKw9C,QAAQC,aAAsB,CACnC,IAAI7Q,EAAQoH,EAASG,OAAOn0C,KAAKw9C,QAAQC,cACzCz9C,KAAK42B,YAAYgW,GACjBA,EAAMkd,SAAS58C,QAGflN,KAAKy1B,UAIjBu7B,EAAc9oD,UAAU6uB,KAAO,SAAUtmB,EAAOghD,QAC1B,IAAdA,IAAwBA,GAAY,GACxC,IAAIpoB,EAAKrpC,KAAKpG,SAASw6C,KAAK3jC,EAAOghD,GAAY7kB,EAAQvD,EAAG,GAAIjE,EAASiE,EAAG,GACtEnW,EAAW,CAAC,CAAClzB,KAAMyQ,IACvB,OAAIm8B,aAAiBokB,EACV99B,EAASn5B,OAAO6yC,EAAM7V,KAAKqO,EAAQqsB,KAE5B,MAAT7kB,GACL1Z,EAAS56B,KAAK,CAACs0C,EAAOxH,IAEnBlS,IAEX89B,EAAc9oD,UAAU8tB,YAAc,SAAU4W,GAC5C5sC,KAAKpG,SAAS67B,OAAOmX,IAEzBokB,EAAc9oD,UAAUyD,QAAU,SAAU9Q,GACpCA,aAAkBm2D,GAClBn2D,EAAOmrD,aAAahmD,MAExBu1C,EAAOrtC,UAAUyD,QAAQvD,KAAKpI,KAAMnF,IAExCm2D,EAAc9oD,UAAU+d,MAAQ,SAAUxV,EAAO8sC,GAE7C,QADc,IAAVA,IAAoBA,GAAQ,IAC3BA,EAAO,CACR,GAAc,IAAV9sC,EACA,OAAOzQ,KACX,GAAIyQ,IAAUzQ,KAAK9I,SACf,OAAO8I,KAAKwlB,KAEpB,IAAI6oC,EAAQruD,KAAKw6C,QAMjB,OALAx6C,KAAKk7C,OAAO1X,aAAa6qB,EAAOruD,KAAKwlB,MACrCxlB,KAAKpG,SAASs3D,UAAUzgD,EAAOzQ,KAAK9I,UAAU,SAAU01C,EAAOxH,EAAQluC,GACnE01C,EAAQA,EAAM3mB,MAAMmf,EAAQmY,GAC5B8Q,EAAMz3B,YAAYgW,MAEfyhB,GAEX2C,EAAc9oD,UAAU6hD,OAAS,WAC7B/pD,KAAKgmD,aAAahmD,KAAKk7C,OAAQl7C,KAAKwlB,MACpCxlB,KAAKy1B,UAETu7B,EAAc9oD,UAAUi4C,OAAS,SAAUH,EAAW9yC,GAClD,IAAIrC,EAAQ7K,KACR0xD,EAAa,GACbC,EAAe,GACnB3R,EAAUhlD,SAAQ,SAAU42D,GACpBA,EAAS/2D,SAAWgQ,EAAM4xC,SAA6B,cAAlBmV,EAASvlD,OAC9CqlD,EAAWp5D,KAAKqC,MAAM+2D,EAAYE,EAASF,YAC3CC,EAAar5D,KAAKqC,MAAMg3D,EAAcC,EAASD,kBAGvDA,EAAa32D,SAAQ,SAAU86B,GAI3B,KAAuB,MAAnBA,EAAKK,YAEY,WAAjBL,EAAKxe,SACLG,SAAS0pB,KAAK0wB,wBAAwB/7B,GAAQob,KAAK4gB,gCAHvD,CAMA,IAAI/b,EAAO/B,EAASI,KAAKte,GACb,MAARigB,IAE2B,MAA3BA,EAAK0G,QAAQtmB,YAAsB4f,EAAK0G,QAAQtmB,aAAetrB,EAAM4xC,SACrE1G,EAAKqb,cAGbM,EACKn3D,QAAO,SAAUu7B,GAClB,OAAOA,EAAKK,YAActrB,EAAM4xC,WAE/Bv2C,MAAK,SAAUuL,EAAGC,GACnB,OAAID,IAAMC,EACC,EACPD,EAAEogD,wBAAwBngD,GAAKw/B,KAAK6gB,4BAC7B,GAEH,KAEP/2D,SAAQ,SAAU86B,GACnB,IAAIw7B,EAAU,KACU,MAApBx7B,EAAK2N,cACL6tB,EAAUtd,EAASI,KAAKte,EAAK2N,cAEjC,IAAIsS,EAAOkb,EAASn7B,GAChBigB,EAAKvwB,MAAQ8rC,GAAwB,MAAbvb,EAAKvwB,OACV,MAAfuwB,EAAKmF,QACLnF,EAAKmF,OAAOllB,YAAYnrB,GAE5BA,EAAM24B,aAAauS,EAAMub,QAAWrqD,QAIzC+pD,EA7NuB,CA8NhCD,EAASlwD,SACX,SAASowD,EAASn7B,GACd,IAAIigB,EAAO/B,EAASI,KAAKte,GACzB,GAAY,MAARigB,EACA,IACIA,EAAO/B,EAASG,OAAOre,GAE3B,MAAO/mB,GACHgnC,EAAO/B,EAASG,OAAOH,EAASE,MAAMiC,QACtC,GAAG9tC,MAAMD,KAAK0tB,EAAKi6B,YAAY/0D,SAAQ,SAAU4xC,GAE7CmJ,EAAK0G,QAAQ7lB,YAAYgW,MAEzB9W,EAAKK,YACLL,EAAKK,WAAW67B,aAAajc,EAAK0G,QAAS3mB,GAE/CigB,EAAKuY,SAGb,OAAOvY,EAEXz/C,EAAQuK,QAAUmwD,GAKZ,SAAUre,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAIq4C,EAAed,EAAoB,IACnCiB,EAAUjB,EAAoB,IAC9BM,EAAcN,EAAoB,IAClCkB,EAAWlB,EAAoB,GAC/Bmf,EAA4B,SAAU1c,GAEtC,SAAS0c,EAAWxV,GAChB,IAAI5xC,EAAQ0qC,EAAOntC,KAAKpI,KAAMy8C,IAAYz8C,KAE1C,OADA6K,EAAM2qC,WAAa,IAAIzB,EAAQlzC,QAAQgK,EAAM4xC,SACtC5xC,EAmDX,OAvDAsqC,EAAU8c,EAAY1c,GAMtB0c,EAAW1mB,QAAU,SAAUkR,GAC3B,MAA4B,kBAAjBz8C,KAAKsX,UAGPxgB,MAAM8R,QAAQ5I,KAAKsX,SACjBmlC,EAAQnlC,QAAQuF,mBADtB,IAKTo1C,EAAW/pD,UAAU+c,OAAS,SAAU3rB,EAAMiC,GAC1C,IAAI0pB,EAAS+uB,EAASK,MAAM/6C,GACxB2rB,aAAkB2uB,EAAa/yC,QAC/Bb,KAAKw1C,WAAWmH,UAAU13B,EAAQ1pB,GAE7BA,IACS,MAAV0pB,GAAmB3rB,IAAS0G,KAAKw9C,QAAQhH,UAAYx2C,KAAKurC,UAAUjyC,KAAUiC,GAC9EyE,KAAKkyD,YAAY54D,EAAMiC,KAInC02D,EAAW/pD,UAAUqjC,QAAU,WAC3B,IAAIA,EAAUvrC,KAAKw1C,WAAWkH,SAC1Bz3B,EAASjlB,KAAKw9C,QAAQjS,QAAQvrC,KAAKy8C,SAIvC,OAHc,MAAVx3B,IACAsmB,EAAQvrC,KAAKw9C,QAAQhH,UAAYvxB,GAE9BsmB,GAEX0mB,EAAW/pD,UAAUgqD,YAAc,SAAU54D,EAAMiC,GAC/C,IAAI42D,EAAc5c,EAAOrtC,UAAUgqD,YAAY9pD,KAAKpI,KAAM1G,EAAMiC,GAEhE,OADAyE,KAAKw1C,WAAW8E,KAAK6X,GACdA,GAEXF,EAAW/pD,UAAUi4C,OAAS,SAAUH,EAAW9yC,GAC/C,IAAIrC,EAAQ7K,KACZu1C,EAAOrtC,UAAUi4C,OAAO/3C,KAAKpI,KAAMggD,EAAW9yC,GAC1C8yC,EAAUjwC,MAAK,SAAU6hD,GACzB,OAAOA,EAAS/2D,SAAWgQ,EAAM4xC,SAA6B,eAAlBmV,EAASvlD,SAErDrM,KAAKw1C,WAAW7X,SAGxBs0B,EAAW/pD,UAAUqjB,KAAO,SAAUjyB,EAAMiC,GACxC,IAAIg7B,EAAUgf,EAAOrtC,UAAUqjB,KAAKnjB,KAAKpI,KAAM1G,EAAMiC,GAIrD,OAHIg7B,aAAmB07B,GAAc17B,EAAQinB,QAAQ35C,QAAU7D,KAAKw9C,QAAQ35C,OACxE7D,KAAKw1C,WAAW4c,KAAK77B,GAElBA,GAEJ07B,EAxDoB,CAyD7B7e,EAAYvyC,SACdvK,EAAQuK,QAAUoxD,GAKZ,SAAUtf,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAIw1D,EAAWje,EAAoB,IAC/BkB,EAAWlB,EAAoB,GAC/Buf,EAA0B,SAAU9c,GAEpC,SAAS8c,IACL,OAAkB,OAAX9c,GAAmBA,EAAO56C,MAAMqF,KAAMlF,YAAckF,KAuB/D,OAzBAm1C,EAAUkd,EAAU9c,GAIpB8c,EAAS92D,MAAQ,SAAUkhD,GACvB,OAAO,GAEX4V,EAASnqD,UAAUuI,MAAQ,SAAUqlB,EAAMsP,GACvC,OAAIplC,KAAKy8C,UAAY3mB,GACjB91B,KAAKy8C,QAAQoV,wBAAwB/7B,GAAQob,KAAK4gB,+BAC3CngC,KAAKlG,IAAI2Z,EAAQ,IAEpB,GAEZitB,EAASnqD,UAAUgrB,SAAW,SAAUziB,EAAOghD,GAC3C,IAAIrsB,EAAS,GAAG5tC,QAAQ4Q,KAAKpI,KAAKk7C,OAAOuB,QAAQsT,WAAY/vD,KAAKy8C,SAGlE,OAFIhsC,EAAQ,IACR20B,GAAU,GACP,CAACplC,KAAKk7C,OAAOuB,QAASrX,IAEjCitB,EAASnqD,UAAU3M,MAAQ,WACvB,IAAI8tC,EACJ,OAAOA,EAAK,GAAIA,EAAGrpC,KAAKw9C,QAAQhH,UAAYx2C,KAAKw9C,QAAQjiD,MAAMyE,KAAKy8C,WAAY,EAAMpT,GAE1FgpB,EAASxuD,MAAQmwC,EAASE,MAAMoe,YACzBD,EA1BkB,CA2B3BtB,EAASlwD,SACXvK,EAAQuK,QAAUwxD,GAKZ,SAAU1f,EAAQr8C,EAASw8C,GAEjC,IAAI3iC,EAAQ2iC,EAAoB,IAC5B95C,EAAS85C,EAAoB,GAG7Byf,EAAM,CACR/c,WAAY,CACV2C,QAAS,SAAU1mC,EAAGC,EAAG8gD,GACN,kBAAN/gD,IAAgBA,EAAI,IACd,kBAANC,IAAgBA,EAAI,IAC/B,IAAI8jC,EAAax8C,GAAO,EAAM,GAAI0Y,GASlC,IAAK,IAAIzW,KARJu3D,IACHhd,EAAap7C,OAAOD,KAAKq7C,GAAY9uC,QAAO,SAAU4zC,EAAMr/C,GAI1D,OAHuB,MAAnBu6C,EAAWv6C,KACbq/C,EAAKr/C,GAAOu6C,EAAWv6C,IAElBq/C,IACN,KAEW7oC,OACCxK,IAAXwK,EAAExW,SAAiCgM,IAAXyK,EAAEzW,KAC5Bu6C,EAAWv6C,GAAOwW,EAAExW,IAGxB,OAAOb,OAAOD,KAAKq7C,GAAYt+C,OAAS,EAAIs+C,OAAavuC,GAG3D4vC,KAAM,SAASplC,EAAGC,GACC,kBAAND,IAAgBA,EAAI,IACd,kBAANC,IAAgBA,EAAI,IAC/B,IAAI8jC,EAAap7C,OAAOD,KAAKsX,GAAG1X,OAAOK,OAAOD,KAAKuX,IAAIhL,QAAO,SAAU8uC,EAAYv6C,GAIlF,OAHKkV,EAAMsB,EAAExW,GAAMyW,EAAEzW,MACnBu6C,EAAWv6C,QAAkBgM,IAAXyK,EAAEzW,GAAqB,KAAOyW,EAAEzW,IAE7Cu6C,IACN,IACH,OAAOp7C,OAAOD,KAAKq7C,GAAYt+C,OAAS,EAAIs+C,OAAavuC,GAG3DyyC,UAAW,SAAUjoC,EAAGC,EAAGioC,GACzB,GAAiB,kBAANloC,EAAgB,OAAOC,EAClC,GAAiB,kBAANA,EAAX,CACA,IAAKioC,EAAU,OAAOjoC,EACtB,IAAI8jC,EAAap7C,OAAOD,KAAKuX,GAAGhL,QAAO,SAAU8uC,EAAYv6C,GAE3D,YADegM,IAAXwK,EAAExW,KAAoBu6C,EAAWv6C,GAAOyW,EAAEzW,IACvCu6C,IACN,IACH,OAAOp7C,OAAOD,KAAKq7C,GAAYt+C,OAAS,EAAIs+C,OAAavuC,KAI7D0B,SAAU,SAAUkyB,GAClB,OAAO,IAAI43B,EAAS53B,IAGtB3jC,OAAQ,SAAU4/C,GAChB,MAA4B,kBAAjBA,EAAG,UACLA,EAAG,UACoB,kBAAdA,EAAGO,OACZP,EAAGO,OAEkB,kBAAdP,EAAGI,OAAsBJ,EAAGI,OAAOhgD,OAAS,IAMhE,SAASu7D,EAAS53B,GAChB76B,KAAK66B,IAAMA,EACX76B,KAAKyQ,MAAQ,EACbzQ,KAAKolC,OAAS,EAGhBqtB,EAASvqD,UAAU+vC,QAAU,WAC3B,OAAOj4C,KAAK24C,aAAezG,KAG7BugB,EAASvqD,UAAUsd,KAAO,SAAUtuB,GAC7BA,IAAQA,EAASg7C,KACtB,IAAIgG,EAASl4C,KAAK66B,IAAI76B,KAAKyQ,OAC3B,GAAIynC,EAAQ,CACV,IAAI9S,EAASplC,KAAKolC,OACd+T,EAAWoZ,EAAIr7D,OAAOghD,GAQ1B,GAPIhhD,GAAUiiD,EAAW/T,GACvBluC,EAASiiD,EAAW/T,EACpBplC,KAAKyQ,OAAS,EACdzQ,KAAKolC,OAAS,GAEdplC,KAAKolC,QAAUluC,EAEe,kBAArBghD,EAAO,UAChB,MAAO,CAAE,OAAUhhD,GAEnB,IAAIw7D,EAAQ,GAYZ,OAXIxa,EAAO1C,aACTkd,EAAMld,WAAa0C,EAAO1C,YAEC,kBAAlB0C,EAAOb,OAChBqb,EAAMrb,OAASngD,EACmB,kBAAlBghD,EAAOhB,OACvBwb,EAAMxb,OAASgB,EAAOhB,OAAOyb,OAAOvtB,EAAQluC,GAG5Cw7D,EAAMxb,OAASgB,EAAOhB,OAEjBwb,EAGT,MAAO,CAAErb,OAAQnF,MAIrBugB,EAASvqD,UAAUswC,KAAO,WACxB,OAAOx4C,KAAK66B,IAAI76B,KAAKyQ,QAGvBgiD,EAASvqD,UAAUywC,WAAa,WAC9B,OAAI34C,KAAK66B,IAAI76B,KAAKyQ,OAET8hD,EAAIr7D,OAAO8I,KAAK66B,IAAI76B,KAAKyQ,QAAUzQ,KAAKolC,OAExC8M,KAIXugB,EAASvqD,UAAUwwC,SAAW,WAC5B,OAAI14C,KAAK66B,IAAI76B,KAAKyQ,OAC8B,kBAAnCzQ,KAAK66B,IAAI76B,KAAKyQ,OAAO,UACvB,SACyC,kBAAhCzQ,KAAK66B,IAAI76B,KAAKyQ,OAAO4mC,OAC9B,SAEA,SAGJ,UAGTob,EAASvqD,UAAU4wC,KAAO,WACxB,GAAK94C,KAAKi4C,UAEH,IAAoB,IAAhBj4C,KAAKolC,OACd,OAAOplC,KAAK66B,IAAIxyB,MAAMrI,KAAKyQ,OAE3B,IAAI20B,EAASplC,KAAKolC,OACd30B,EAAQzQ,KAAKyQ,MACb+U,EAAOxlB,KAAKwlB,OACZszB,EAAO94C,KAAK66B,IAAIxyB,MAAMrI,KAAKyQ,OAG/B,OAFAzQ,KAAKolC,OAASA,EACdplC,KAAKyQ,MAAQA,EACN,CAAC+U,GAAMzrB,OAAO++C,GAVrB,MAAO,IAeXnG,EAAOr8C,QAAUi8D,GAKX,SAAU5f,EAAQr8C,GAExB,IAAIkkD,EAAQ,WACZ,aAEA,SAASoY,EAAYt3D,EAAK+Q,GACxB,OAAe,MAARA,GAAgB/Q,aAAe+Q,EAGxC,IAAIwmD,EASAC,EAOAC,EAfJ,IACEF,EAAYG,IACZ,MAAM56B,GAGNy6B,EAAY,aAId,IACEC,EAAYG,IACZ,MAAM76B,GACN06B,EAAY,aAId,IACEC,EAAgBG,QAChB,MAAM96B,GACN26B,EAAgB,aAwBlB,SAASvY,EAAMU,EAAQiY,EAAUC,EAAOlrD,EAAWmrD,GACzB,kBAAbF,IACTC,EAAQD,EAASC,MACjBlrD,EAAYirD,EAASjrD,UACrBmrD,EAAuBF,EAASE,qBAChCF,EAAWA,EAASA,UAItB,IAAIG,EAAa,GACbC,EAAc,GAEdC,EAA6B,oBAAVC,EASvB,SAASlJ,EAAOrP,EAAQkY,GAEtB,GAAe,OAAXlY,EACF,OAAO,KAET,GAAc,IAAVkY,EACF,OAAOlY,EAET,IAAItO,EACA8mB,EACJ,GAAqB,iBAAVxY,EACT,OAAOA,EAGT,GAAI0X,EAAY1X,EAAQ2X,GACtBjmB,EAAQ,IAAIimB,OACP,GAAID,EAAY1X,EAAQ4X,GAC7BlmB,EAAQ,IAAIkmB,OACP,GAAIF,EAAY1X,EAAQ6X,GAC7BnmB,EAAQ,IAAImmB,GAAc,SAAUY,EAASC,GAC3C1Y,EAAOpsC,MAAK,SAASvT,GACnBo4D,EAAQpJ,EAAOhvD,EAAO63D,EAAQ,OAC7B,SAAS1tC,GACVkuC,EAAOrJ,EAAO7kC,EAAK0tC,EAAQ,eAG1B,GAAI5Y,EAAMqZ,UAAU3Y,GACzBtO,EAAQ,QACH,GAAI4N,EAAMsZ,WAAW5Y,GAC1BtO,EAAQ,IAAIhhC,OAAOsvC,EAAOngD,OAAQg5D,EAAiB7Y,IAC/CA,EAAOrvC,YAAW+gC,EAAM/gC,UAAYqvC,EAAOrvC,gBAC1C,GAAI2uC,EAAMwZ,SAAS9Y,GACxBtO,EAAQ,IAAIvoB,KAAK62B,EAAO7pB,eACnB,IAAImiC,GAAaC,EAAOtL,SAASjN,GAStC,OANEtO,EAFE6mB,EAAOQ,YAEDR,EAAOQ,YAAY/Y,EAAOhkD,QAG1B,IAAIu8D,EAAOvY,EAAOhkD,QAE5BgkD,EAAOZ,KAAK1N,GACLA,EACEgmB,EAAY1X,EAAQ5jD,OAC7Bs1C,EAAQxyC,OAAO+5C,OAAO+G,GAEE,oBAAbhzC,GACTwrD,EAAQt5D,OAAO+gD,eAAeD,GAC9BtO,EAAQxyC,OAAO+5C,OAAOuf,KAGtB9mB,EAAQxyC,OAAO+5C,OAAOjsC,GACtBwrD,EAAQxrD,GAIZ,GAAIirD,EAAU,CACZ,IAAI1iD,EAAQ6iD,EAAW97D,QAAQ0jD,GAE/B,IAAc,GAAVzqC,EACF,OAAO8iD,EAAY9iD,GAErB6iD,EAAWh7D,KAAK4iD,GAChBqY,EAAYj7D,KAAKs0C,GAiBnB,IAAK,IAAI51C,KAdL47D,EAAY1X,EAAQ2X,IACtB3X,EAAOlgD,SAAQ,SAASO,EAAON,GAC7B,IAAIi5D,EAAW3J,EAAOtvD,EAAKm4D,EAAQ,GAC/Be,EAAa5J,EAAOhvD,EAAO63D,EAAQ,GACvCxmB,EAAMnB,IAAIyoB,EAAUC,MAGpBvB,EAAY1X,EAAQ4X,IACtB5X,EAAOlgD,SAAQ,SAASO,GACtB,IAAI64D,EAAa7J,EAAOhvD,EAAO63D,EAAQ,GACvCxmB,EAAMpX,IAAI4+B,MAIAlZ,EAAQ,CACpB,IAAIh9C,EACAw1D,IACFx1D,EAAQ9D,OAAOK,yBAAyBi5D,EAAO18D,IAG7CkH,GAAsB,MAAbA,EAAMutC,MAGnBmB,EAAM51C,GAAKuzD,EAAOrP,EAAOlkD,GAAIo8D,EAAQ,IAGvC,GAAIh5D,OAAOC,sBACT,KAAIC,EAAUF,OAAOC,sBAAsB6gD,GAC3C,IAASlkD,EAAI,EAAGA,EAAIsD,EAAQpD,OAAQF,IAAK,CAGvC,IAAIq9D,EAAS/5D,EAAQtD,GACjB4jD,EAAaxgD,OAAOK,yBAAyBygD,EAAQmZ,KACrDzZ,GAAeA,EAAWlgD,YAAe24D,KAG7CzmB,EAAMynB,GAAU9J,EAAOrP,EAAOmZ,GAASjB,EAAQ,GAC1CxY,EAAWlgD,YACdN,OAAOiB,eAAeuxC,EAAOynB,EAAQ,CACnC35D,YAAY,MAMpB,GAAI24D,EACF,KAAIiB,EAAmBl6D,OAAOm6D,oBAAoBrZ,GAClD,IAASlkD,EAAI,EAAGA,EAAIs9D,EAAiBp9D,OAAQF,IAAK,CAChD,IAAIw9D,EAAeF,EAAiBt9D,GAChC4jD,EAAaxgD,OAAOK,yBAAyBygD,EAAQsZ,GACrD5Z,GAAcA,EAAWlgD,aAG7BkyC,EAAM4nB,GAAgBjK,EAAOrP,EAAOsZ,GAAepB,EAAQ,GAC3Dh5D,OAAOiB,eAAeuxC,EAAO4nB,EAAc,CACzC95D,YAAY,MAKlB,OAAOkyC,EAGT,MAxIuB,oBAAZumB,IACTA,GAAW,GAEO,oBAATC,IACTA,EAAQlhB,KAoIHqY,EAAOrP,EAAQkY,GAqBxB,SAASqB,EAAW3sD,GAClB,OAAO1N,OAAO8N,UAAUC,SAASC,KAAKN,GAIxC,SAASksD,EAASlsD,GAChB,MAAoB,kBAANA,GAAoC,kBAAlB2sD,EAAW3sD,GAI7C,SAAS+rD,EAAU/rD,GACjB,MAAoB,kBAANA,GAAoC,mBAAlB2sD,EAAW3sD,GAI7C,SAASgsD,EAAWhsD,GAClB,MAAoB,kBAANA,GAAoC,oBAAlB2sD,EAAW3sD,GAI7C,SAASisD,EAAiBW,GACxB,IAAIC,EAAQ,GAIZ,OAHID,EAAGE,SAAQD,GAAS,KACpBD,EAAGG,aAAYF,GAAS,KACxBD,EAAGI,YAAWH,GAAS,KACpBA,EAIT,OAxCAna,EAAMua,eAAiB,SAAwB7Z,GAC7C,GAAe,OAAXA,EACF,OAAO,KAET,IAAIhhB,EAAI,aAER,OADAA,EAAEhyB,UAAYgzC,EACP,IAAIhhB,GAQbsgB,EAAMia,WAAaA,EAKnBja,EAAMwZ,SAAWA,EAKjBxZ,EAAMqZ,UAAYA,EAKlBrZ,EAAMsZ,WAAaA,EASnBtZ,EAAMuZ,iBAAmBA,EAElBvZ,EA3PK,GA8PU,kBAAX7H,GAAuBA,EAAOr8C,UACvCq8C,EAAOr8C,QAAUkkD,IAMb,SAAU7H,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIuiD,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjB8yC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErC0J,EAAWrS,EAAoB,GAE/BsS,EAAY9J,EAAuB6J,GAEnCuD,EAAS5V,EAAoB,GAE7B6V,EAAUrN,EAAuBoN,GAEjC/M,EAAS7I,EAAoB,IAE7B8I,EAAUN,EAAuBK,GAEjCwO,EAAQrX,EAAoB,IAE5BsX,EAAS9O,EAAuB6O,GAEhC6K,EAAaliB,EAAoB,IAEjCmiB,EAAc3Z,EAAuB0Z,GAEzC,SAAS1Z,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,SAAS4Y,EAAOnf,GACd,OAAOA,aAAgB4S,EAAQ9nD,SAAWk1C,aAAgB2S,EAAOjO,WAGnE,IAAI9F,EAAS,SAAUwgB,GAGrB,SAASxgB,EAAO8H,EAAS7iB,GACvBqiB,EAAgBj8C,KAAM20C,GAEtB,IAAI9pC,EAAQqxC,EAA2Bl8C,MAAO20C,EAAOnwB,WAAapqB,OAAO+gD,eAAexG,IAASvsC,KAAKpI,KAAMy8C,IAa5G,OAXA5xC,EAAMo0C,QAAUrlB,EAAOqlB,QACnBnoD,MAAM8R,QAAQgxB,EAAOulB,aACvBt0C,EAAMs0C,UAAYvlB,EAAOulB,UAAUz4C,QAAO,SAAUy4C,EAAWl6B,GAE7D,OADAk6B,EAAUl6B,IAAU,EACbk6B,IACN,KAGLt0C,EAAM4xC,QAAQhc,iBAAiB,mBAAmB,eAClD51B,EAAMi/C,WACNj/C,EAAM0+B,SACC1+B,EA0KT,OA5LAuxC,EAAUzH,EAAQwgB,GAqBlBxa,EAAahG,EAAQ,CAAC,CACpB15C,IAAK,aACLM,MAAO,WACLyE,KAAKo1D,OAAQ,IAEd,CACDn6D,IAAK,WACLM,MAAO,WACLyE,KAAKo1D,OAAQ,EACbp1D,KAAK8pD,aAEN,CACD7uD,IAAK,WACLM,MAAO,SAAkBkV,EAAOvZ,GAC9B,IAAIm+D,EAAQr1D,KAAKy5C,KAAKhpC,GAClB6kD,EAASxX,EAAeuX,EAAO,GAC/BjF,EAAQkF,EAAO,GACflwB,EAASkwB,EAAO,GAEhBC,EAASv1D,KAAKy5C,KAAKhpC,EAAQvZ,GAC3Bs+D,EAAS1X,EAAeyX,EAAQ,GAChClF,EAAOmF,EAAO,GAGlB,GADAza,EAAKpG,EAAOzsC,UAAUsc,WAAapqB,OAAO+gD,eAAexG,EAAOzsC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMyQ,EAAOvZ,GACpG,MAARm5D,GAAgBD,IAAUC,GAAQjrB,EAAS,EAAG,CAChD,GAAIgrB,aAAiB1H,EAAOjO,YAAc4V,aAAgB3H,EAAOjO,WAE/D,YADAz6C,KAAK8pD,WAGP,GAAIsG,aAAiBhG,EAAOvpD,QAAS,CACnC,IAAIuoD,EAAegH,EAAMhH,aAAagH,EAAMl5D,UAAU,GACtD,GAAIkyD,GAAgB,IAClBgH,EAAQA,EAAMnqC,MAAMmjC,EAAe,GAC/BgH,IAAUC,GAEZ,YADArwD,KAAK8pD,gBAIJ,GAAIuG,aAAgBjG,EAAOvpD,QAAS,CACzC,IAAI40D,EAAgBpF,EAAKjH,aAAa,GAClCqM,GAAiB,GACnBpF,EAAKpqC,MAAMwvC,EAAgB,GAG/B,IAAI16C,EAAMs1C,EAAKz2D,SAAS+0C,gBAAgBiN,EAAQ/6C,QAAU,KAAOwvD,EAAKz2D,SAAS+0C,KAC/EyhB,EAAMpK,aAAaqK,EAAMt1C,GACzBq1C,EAAM36B,SAERz1B,KAAK8pD,aAEN,CACD7uD,IAAK,SACLM,MAAO,WACL,IAAI2lD,IAAUpmD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,KAAmBA,UAAU,GAE7EkF,KAAKy8C,QAAQ9lB,aAAa,kBAAmBuqB,KAE9C,CACDjmD,IAAK,WACLM,MAAO,SAAkBkV,EAAOvZ,EAAQ+tB,EAAQ1pB,IACxB,MAAlByE,KAAKm/C,WAAsBn/C,KAAKm/C,UAAUl6B,MAC9C81B,EAAKpG,EAAOzsC,UAAUsc,WAAapqB,OAAO+gD,eAAexG,EAAOzsC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMyQ,EAAOvZ,EAAQ+tB,EAAQ1pB,GAChIyE,KAAK8pD,cAEN,CACD7uD,IAAK,WACLM,MAAO,SAAkBkV,EAAOlV,EAAOshD,GACrC,GAAW,MAAPA,GAAiC,MAAlB78C,KAAKm/C,WAAsBn/C,KAAKm/C,UAAU5jD,GAA7D,CACA,GAAIkV,GAASzQ,KAAK9I,SAChB,GAAW,MAAP2lD,GAAoF,MAArEnB,EAAY76C,QAAQwzC,MAAM94C,EAAOmgD,EAAY76C,QAAQqzC,MAAMgC,OAAgB,CAC5F,IAAIH,EAAO2F,EAAY76C,QAAQszC,OAAOn0C,KAAKw9C,QAAQC,cACnDz9C,KAAK42B,YAAYmf,GACN,MAAP8G,GAAethD,EAAMuhD,SAAS,QAChCvhD,EAAQA,EAAM8M,MAAM,GAAI,IAE1B0tC,EAAKiH,SAAS,EAAGzhD,EAAOshD,OACnB,CACL,IAAImG,EAAQtH,EAAY76C,QAAQszC,OAAO54C,EAAOshD,GAC9C78C,KAAK42B,YAAYosB,QAGnBjI,EAAKpG,EAAOzsC,UAAUsc,WAAapqB,OAAO+gD,eAAexG,EAAOzsC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMyQ,EAAOlV,EAAOshD,GAEzH78C,KAAK8pD,cAEN,CACD7uD,IAAK,eACLM,MAAO,SAAsBw6C,EAAMh7B,GACjC,GAAIg7B,EAAKyH,QAAQ35C,QAAU63C,EAAY76C,QAAQqzC,MAAMoe,YAAa,CAChE,IAAI/7B,EAAUmlB,EAAY76C,QAAQszC,OAAOn0C,KAAKw9C,QAAQC,cACtDlnB,EAAQK,YAAYmf,GACpBA,EAAOxf,EAETwkB,EAAKpG,EAAOzsC,UAAUsc,WAAapqB,OAAO+gD,eAAexG,EAAOzsC,WAAY,eAAgBlI,MAAMoI,KAAKpI,KAAM+1C,EAAMh7B,KAEpH,CACD9f,IAAK,OACLM,MAAO,SAAckV,GACnB,OAAOzQ,KAAK+2B,KAAKtmB,GAAOgnC,OAAS,CAAC,MAAO,KAE1C,CACDx8C,IAAK,OACLM,MAAO,SAAckV,GACnB,OAAIA,IAAUzQ,KAAK9I,SACV8I,KAAKy5C,KAAKhpC,EAAQ,GAEpBzQ,KAAKgpD,WAAWkM,EAAQzkD,KAEhC,CACDxV,IAAK,QACLM,MAAO,WACL,IAAIkV,EAAQ3V,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,EAC5E5D,EAAS4D,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK4nD,OAAOC,UAEpF+S,EAAW,SAASA,EAAS3f,EAAMtlC,EAAOvZ,GAC5C,IAAImmD,EAAQ,GACR8T,EAAaj6D,EASjB,OARA6+C,EAAKn8C,SAASs3D,UAAUzgD,EAAOvZ,GAAQ,SAAU01C,EAAOn8B,EAAOvZ,GACzDg+D,EAAOtoB,GACTyQ,EAAM/kD,KAAKs0C,GACFA,aAAiB8O,EAAY76C,QAAQ0zC,YAC9C8I,EAAQA,EAAMtjD,OAAO27D,EAAS9oB,EAAOn8B,EAAO0gD,KAE9CA,GAAcj6D,KAETmmD,GAET,OAAOqY,EAAS11D,KAAMyQ,EAAOvZ,KAE9B,CACD+D,IAAK,WACLM,MAAO,WACL,IAAIykD,EAAYllD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAChFoS,EAAUpS,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,IAE/D,IAAfkF,KAAKo1D,QACTra,EAAKpG,EAAOzsC,UAAUsc,WAAapqB,OAAO+gD,eAAexG,EAAOzsC,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMggD,EAAW9yC,GAChH8yC,EAAU9oD,OAAS,GACrB8I,KAAKi/C,QAAQoG,KAAKD,EAAUvkD,QAAQ8+C,OAAOsH,gBAAiBjH,EAAW9yC,MAG1E,CACDjS,IAAK,OACLM,MAAO,SAAckV,GACnB,OAAOsqC,EAAKpG,EAAOzsC,UAAUsc,WAAapqB,OAAO+gD,eAAexG,EAAOzsC,WAAY,OAAQlI,MAAMoI,KAAKpI,KAAMyQ,GAAOpI,MAAM,KAE1H,CACDpN,IAAK,SACLM,MAAO,SAAgBykD,GACrB,IAAmB,IAAfhgD,KAAKo1D,MAAT,CACA,IAAIr6D,EAASqqD,EAAUvkD,QAAQwgD,QAAQiD,KACd,kBAAdtE,IACTjlD,EAASilD,GAENlpD,MAAM8R,QAAQo3C,KACjBA,EAAYhgD,KAAK21D,SAASC,eAExB5V,EAAU9oD,OAAS,GACrB8I,KAAKi/C,QAAQoG,KAAKD,EAAUvkD,QAAQ8+C,OAAOqH,qBAAsBjsD,EAAQilD,GAE3EjF,EAAKpG,EAAOzsC,UAAUsc,WAAapqB,OAAO+gD,eAAexG,EAAOzsC,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAMggD,EAAUjmD,OAAO,KACpHimD,EAAU9oD,OAAS,GACrB8I,KAAKi/C,QAAQoG,KAAKD,EAAUvkD,QAAQ8+C,OAAOI,cAAehlD,EAAQilD,QAKjErL,EA7LI,CA8LX+G,EAAY76C,QAAQ8zC,QAEtBA,EAAO6B,SAAW,SAClB7B,EAAOrf,UAAY,YACnBqf,EAAOr9B,QAAU,MACjBq9B,EAAO8I,aAAe,QACtB9I,EAAO+I,gBAAkB,CAACiL,EAAQ9nD,QAAS6nD,EAAOjO,WAAYwa,EAAYp0D,SAE1EvK,EAAQuK,QAAU8zC,GAIZ,SAAUhC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQu/D,SAAWv/D,EAAQuK,aAAUoG,EAErC,IAAI42C,EAA4B,oBAAXn1C,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUrN,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAXoN,QAAyBpN,EAAIgN,cAAgBI,QAAUpN,IAAQoN,OAAOR,UAAY,gBAAkB5M,GAElQwiD,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjB8yC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfwmC,EAASzX,EAAoB,IAE7B0X,EAAUlP,EAAuBiP,GAEjCE,EAAa3X,EAAoB,IAEjC4X,EAAcpP,EAAuBmP,GAErCrP,EAAUtI,EAAoB,GAE9BuI,EAAWC,EAAuBF,GAElCG,EAAczI,EAAoB,GAElC0I,EAAeF,EAAuBC,GAEtC0O,EAAMnX,EAAoB,IAE1BoX,EAAO5O,EAAuB2O,GAE9BxO,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCqa,EAAShjB,EAAoB,GAE7BijB,EAAUza,EAAuBwa,GAEjCtX,EAAU1L,EAAoB,IAE9B2L,EAAWnD,EAAuBkD,GAElCJ,EAAUtL,EAAoB,GAE9BuL,EAAW/C,EAAuB8C,GAEtC,SAAS9C,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAASJ,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIsC,GAAQ,EAAIH,EAAS59C,SAAS,kBAE9Bg1D,EAAW,OAAOrtD,KAAKynB,UAAU+lC,UAAY,UAAY,UAEzDC,EAAW,SAAUC,GAgBvB,SAASD,EAAS7O,EAAOviC,GACvBo3B,EAAgBj8C,KAAMi2D,GAEtB,IAAIprD,EAAQqxC,EAA2Bl8C,MAAOi2D,EAASzxC,WAAapqB,OAAO+gD,eAAe8a,IAAW7tD,KAAKpI,KAAMonD,EAAOviC,IAyBvH,OAvBAha,EAAMsrD,SAAW,GACjB/7D,OAAOD,KAAK0Q,EAAMga,QAAQsxC,UAAUn7D,SAAQ,SAAU1B,IACvC,kBAATA,GAAsD,MAA1B8tD,EAAMlI,OAAOC,WAAsBiI,EAAMlI,OAAOC,UAAU,UAGtFt0C,EAAMga,QAAQsxC,SAAS78D,IACzBuR,EAAMurD,WAAWvrD,EAAMga,QAAQsxC,SAAS78D,OAG5CuR,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKk8D,MAAOjlD,SAAU,MAAQklD,GAC/DzrD,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKk8D,MAAO/kD,QAAS,KAAMD,QAAS,KAAMklD,OAAQ,OAAQ,eACvF,WAAW/tD,KAAKynB,UAAUC,YAE5BrlB,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKq8D,WAAa,CAAEpI,WAAW,GAAQqI,GACxE5rD,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKk/C,QAAU,CAAE+U,WAAW,GAAQsI,KAErE7rD,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKq8D,WAAa,CAAEpI,WAAW,EAAMuI,OAAQ,QAAUF,GACxF5rD,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKk/C,QAAU,CAAE+U,WAAW,EAAMjC,OAAQ,QAAUuK,IAEvF7rD,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKq8D,WAAa,CAAEpI,WAAW,GAASwI,GACzE/rD,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKk/C,QAAU,CAAE+U,WAAW,GAASwI,GACtE/rD,EAAMurD,WAAW,CAAEn7D,IAAKg7D,EAAS97D,KAAKq8D,UAAWD,OAAQ,KAAMllD,QAAS,KAAMC,QAAS,KAAMF,SAAU,MAAQ,CAAEg9C,WAAW,EAAMhpB,OAAQ,GAAKqxB,GAC/I5rD,EAAMgsD,SACChsD,EA+FT,OA1IAuxC,EAAU6Z,EAAUC,GAEpBvb,EAAasb,EAAU,KAAM,CAAC,CAC5Bh7D,IAAK,QACLM,MAAO,SAAeslC,EAAKi2B,GAEzB,OADAA,EAAUC,EAAUD,IAChB,CAAC,SAAU,UAAW,UAAW,YAAY/mD,MAAK,SAAU9U,GAC9D,QAAS67D,EAAQ77D,KAAS4lC,EAAI5lC,IAAyB,OAAjB67D,EAAQ77D,OAIzC67D,EAAQ77D,OAAS4lC,EAAIxkB,OAASwkB,EAAI7kB,aAmC7C2+B,EAAasb,EAAU,CAAC,CACtBh7D,IAAK,aACLM,MAAO,SAAoBN,GACzB,IAAIiS,EAAUpS,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAC9E6P,EAAU7P,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAE9Eg8D,EAAUC,EAAU97D,GACxB,GAAe,MAAX67D,GAAkC,MAAfA,EAAQ77D,IAC7B,OAAO2jD,EAAMh1C,KAAK,4CAA6CktD,GAE1C,oBAAZ5pD,IACTA,EAAU,CAAEvC,QAASuC,IAEA,oBAAZvC,IACTA,EAAU,CAAEA,QAASA,IAEvBmsD,GAAU,EAAIzb,EAASx6C,SAASi2D,EAAS5pD,EAASvC,GAClD3K,KAAKm2D,SAASW,EAAQ77D,KAAO+E,KAAKm2D,SAASW,EAAQ77D,MAAQ,GAC3D+E,KAAKm2D,SAASW,EAAQ77D,KAAK3C,KAAKw+D,KAEjC,CACD77D,IAAK,SACLM,MAAO,WACL,IAAI0P,EAASjL,KAEbA,KAAKonD,MAAM3U,KAAKhS,iBAAiB,WAAW,SAAUI,GACpD,IAAIA,EAAIm2B,iBAAR,CACA,IAAI36C,EAAQwkB,EAAIxkB,OAASwkB,EAAI7kB,QACzBm6C,GAAYlrD,EAAOkrD,SAAS95C,IAAU,IAAI9hB,QAAO,SAAUu8D,GAC7D,OAAOb,EAAS96B,MAAM0F,EAAKi2B,MAE7B,GAAwB,IAApBX,EAASj/D,OAAb,CACA,IAAI+3C,EAAQhkC,EAAOm8C,MAAM7F,eACzB,GAAa,MAATtS,GAAkBhkC,EAAOm8C,MAAM/lC,WAAnC,CAEA,IAAI41C,EAAiBhsD,EAAOm8C,MAAM8P,QAAQjoB,EAAMx+B,OAC5C0mD,EAAkBrZ,EAAemZ,EAAgB,GACjDxd,EAAO0d,EAAgB,GACvB/xB,EAAS+xB,EAAgB,GAEzBC,EAAiBnsD,EAAOm8C,MAAMiQ,QAAQpoB,EAAMx+B,OAC5C6mD,EAAkBxZ,EAAesZ,EAAgB,GACjDG,EAAYD,EAAgB,GAC5BE,EAAcF,EAAgB,GAE9B59D,EAAwB,IAAjBu1C,EAAM/3C,OAAe,CAACqgE,EAAWC,GAAevsD,EAAOm8C,MAAMiQ,QAAQpoB,EAAMx+B,MAAQw+B,EAAM/3C,QAChG4E,EAAQgiD,EAAepkD,EAAM,GAC7B+9D,EAAU37D,EAAM,GAChB47D,EAAY57D,EAAM,GAElB67D,EAAaJ,aAAqB7b,EAAY76C,QAAQi0C,KAAOyiB,EAAUh8D,QAAQ8M,MAAM,EAAGmvD,GAAe,GACvGI,EAAaH,aAAmB/b,EAAY76C,QAAQi0C,KAAO2iB,EAAQl8D,QAAQ8M,MAAMqvD,GAAa,GAC9FG,EAAa,CACfzJ,UAA4B,IAAjBnf,EAAM/3C,OACjB4gE,MAAwB,IAAjB7oB,EAAM/3C,QAAgBuiD,EAAKviD,UAAY,EAC9C+tB,OAAQha,EAAOm8C,MAAM3E,UAAUxT,GAC/B7J,OAAQA,EACRuxB,OAAQgB,EACRxL,OAAQyL,GAENG,EAAY5B,EAASpmD,MAAK,SAAU+mD,GACtC,GAAyB,MAArBA,EAAQ1I,WAAqB0I,EAAQ1I,YAAcyJ,EAAWzJ,UAAW,OAAO,EACpF,GAAqB,MAAjB0I,EAAQgB,OAAiBhB,EAAQgB,QAAUD,EAAWC,MAAO,OAAO,EACxE,GAAsB,MAAlBhB,EAAQ1xB,QAAkB0xB,EAAQ1xB,SAAWyyB,EAAWzyB,OAAQ,OAAO,EAC3E,GAAItuC,MAAM8R,QAAQkuD,EAAQ7xC,SAExB,GAAI6xC,EAAQ7xC,OAAO+yC,OAAM,SAAU1+D,GACjC,OAAkC,MAA3Bu+D,EAAW5yC,OAAO3rB,MAEzB,OAAO,OAEJ,GAAgC,WAA5BukD,EAAQiZ,EAAQ7xC,UAEpB7qB,OAAOD,KAAK28D,EAAQ7xC,QAAQ+yC,OAAM,SAAU1+D,GAC/C,OAA6B,IAAzBw9D,EAAQ7xC,OAAO3rB,GAAkD,MAA3Bu+D,EAAW5yC,OAAO3rB,IAC/B,IAAzBw9D,EAAQ7xC,OAAO3rB,GAAmD,MAA3Bu+D,EAAW5yC,OAAO3rB,IACtD,EAAIoxD,EAAY7pD,SAASi2D,EAAQ7xC,OAAO3rB,GAAOu+D,EAAW5yC,OAAO3rB,OAExE,OAAO,EAGX,QAAsB,MAAlBw9D,EAAQH,SAAmBG,EAAQH,OAAOnuD,KAAKqvD,EAAWlB,aACxC,MAAlBG,EAAQ3K,SAAmB2K,EAAQ3K,OAAO3jD,KAAKqvD,EAAW1L,WACH,IAApD2K,EAAQnsD,QAAQvC,KAAK6C,EAAQgkC,EAAO4oB,OAEzCE,GACFl3B,EAAIzd,2BAML6yC,EA3IM,CA4Ib5X,EAASx9C,SAqLX,SAASo3D,EAAsBh9D,EAAKmW,GAClC,IAAIuY,EAEAuuC,EAAQj9D,IAAQg7D,EAAS97D,KAAKg+D,KAAO,SAAW,SACpD,OAAOxuC,EAAQ,CACb1uB,IAAKA,EACLmW,SAAUA,EACVmlD,OAAQ,MACPr7D,EAAgByuB,EAAOuuC,EAAO,MAAOh9D,EAAgByuB,EAAO,WAAW,SAAiBslB,GACzF,IAAIx+B,EAAQw+B,EAAMx+B,MACdxV,IAAQg7D,EAAS97D,KAAKi+D,QACxB3nD,GAASw+B,EAAM/3C,OAAS,GAG1B,IAAImhE,EAAkBr4D,KAAKonD,MAAMiQ,QAAQ5mD,GACrC6nD,EAAkBxa,EAAeua,EAAiB,GAClDjb,EAAOkb,EAAgB,GAE3B,QAAMlb,aAAgB1B,EAAY76C,QAAQ6zC,SACtCz5C,IAAQg7D,EAAS97D,KAAKg+D,KACpB/mD,EACFpR,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAQ,EAAGw+B,EAAM/3C,OAAS,EAAG6+D,EAAQl1D,QAAQwgD,QAAQiD,MAEnFtkD,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAQ,EAAGslD,EAAQl1D,QAAQwgD,QAAQiD,MAG/DlzC,EACFpR,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAOw+B,EAAM/3C,OAAS,EAAG6+D,EAAQl1D,QAAQwgD,QAAQiD,MAE/EtkD,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAQw+B,EAAM/3C,OAAS,EAAG6+D,EAAQl1D,QAAQwgD,QAAQiD,OAG7E,MACL36B,EAGN,SAAS8sC,EAAgBxnB,EAAO/hC,GAC9B,KAAoB,IAAhB+hC,EAAMx+B,OAAezQ,KAAKonD,MAAM/E,aAAe,GAAnD,CAEA,IAAIkW,EAAmBv4D,KAAKonD,MAAM8P,QAAQjoB,EAAMx+B,OAC5C+nD,EAAmB1a,EAAeya,EAAkB,GACpD9e,EAAO+e,EAAiB,GAExBjtB,EAAU,GACd,GAAuB,IAAnBr+B,EAAQk4B,OAAc,CACxB,IAAIqzB,EAAmBz4D,KAAKonD,MAAM8P,QAAQjoB,EAAMx+B,MAAQ,GACpDioD,EAAmB5a,EAAe2a,EAAkB,GACpD5O,EAAO6O,EAAiB,GAE5B,GAAY,MAAR7O,GAAgBA,EAAK3yD,SAAW,EAAG,CACrC,IAAIyhE,EAAalf,EAAKlO,UAClBqtB,EAAc54D,KAAKonD,MAAM3E,UAAUxT,EAAMx+B,MAAQ,EAAG,GACxD86B,EAAU2e,EAAKrpD,QAAQ20C,WAAWqB,KAAK8hB,EAAYC,IAAgB,IAIvE,IAAI1hE,EAAS,kCAAkCsR,KAAK0E,EAAQypD,QAAU,EAAI,EAC1E32D,KAAKonD,MAAMnG,WAAWhS,EAAMx+B,MAAQvZ,EAAQA,EAAQ6+D,EAAQl1D,QAAQwgD,QAAQiD,MACxElqD,OAAOD,KAAKoxC,GAASr0C,OAAS,GAChC8I,KAAKonD,MAAM5F,WAAWvS,EAAMx+B,MAAQvZ,EAAQA,EAAQq0C,EAASwqB,EAAQl1D,QAAQwgD,QAAQiD,MAEvFtkD,KAAKonD,MAAMzlC,SAGb,SAAS+0C,EAAaznB,EAAO/hC,GAE3B,IAAIhW,EAAS,kCAAkCsR,KAAK0E,EAAQi/C,QAAU,EAAI,EAC1E,KAAIld,EAAMx+B,OAASzQ,KAAKonD,MAAM/E,YAAcnrD,GAA5C,CACA,IAAIq0C,EAAU,GACVstB,EAAa,EAEbC,EAAmB94D,KAAKonD,MAAM8P,QAAQjoB,EAAMx+B,OAC5CsoD,EAAmBjb,EAAegb,EAAkB,GACpDrf,EAAOsf,EAAiB,GAE5B,GAAI7rD,EAAQk4B,QAAUqU,EAAKviD,SAAW,EAAG,CACvC,IAAI8hE,EAAmBh5D,KAAKonD,MAAM8P,QAAQjoB,EAAMx+B,MAAQ,GACpDwoD,EAAmBnb,EAAekb,EAAkB,GACpDxzC,EAAOyzC,EAAiB,GAE5B,GAAIzzC,EAAM,CACR,IAAImzC,EAAalf,EAAKlO,UAClB2tB,EAAcl5D,KAAKonD,MAAM3E,UAAUxT,EAAMx+B,MAAO,GACpD86B,EAAU2e,EAAKrpD,QAAQ20C,WAAWqB,KAAK8hB,EAAYO,IAAgB,GACnEL,EAAarzC,EAAKtuB,UAGtB8I,KAAKonD,MAAMnG,WAAWhS,EAAMx+B,MAAOvZ,EAAQ6+D,EAAQl1D,QAAQwgD,QAAQiD,MAC/DlqD,OAAOD,KAAKoxC,GAASr0C,OAAS,GAChC8I,KAAKonD,MAAM5F,WAAWvS,EAAMx+B,MAAQooD,EAAa,EAAG3hE,EAAQq0C,EAASwqB,EAAQl1D,QAAQwgD,QAAQiD,OAIjG,SAASsS,EAAkB3nB,GACzB,IAAIoO,EAAQr9C,KAAKonD,MAAMsO,SAASzmB,GAC5B1D,EAAU,GACd,GAAI8R,EAAMnmD,OAAS,EAAG,CACpB,IAAIiiE,EAAe9b,EAAM,GAAG9R,UACxB6tB,EAAc/b,EAAMA,EAAMnmD,OAAS,GAAGq0C,UAC1CA,EAAU2e,EAAKrpD,QAAQ20C,WAAWqB,KAAKuiB,EAAaD,IAAiB,GAEvEn5D,KAAKonD,MAAMnG,WAAWhS,EAAO8mB,EAAQl1D,QAAQwgD,QAAQiD,MACjDlqD,OAAOD,KAAKoxC,GAASr0C,OAAS,GAChC8I,KAAKonD,MAAM5F,WAAWvS,EAAMx+B,MAAO,EAAG86B,EAASwqB,EAAQl1D,QAAQwgD,QAAQiD,MAEzEtkD,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAOslD,EAAQl1D,QAAQwgD,QAAQM,QAC7D3hD,KAAKonD,MAAMzlC,QAGb,SAAS20C,EAAYrnB,EAAO/hC,GAC1B,IAAI1B,EAASxL,KAETivC,EAAM/3C,OAAS,GACjB8I,KAAKonD,MAAMlI,OAAOgK,SAASja,EAAMx+B,MAAOw+B,EAAM/3C,QAEhD,IAAImiE,EAAcj/D,OAAOD,KAAK+S,EAAQ+X,QAAQve,QAAO,SAAU2yD,EAAap0C,GAI1E,OAHIy2B,EAAY76C,QAAQwzC,MAAMpvB,EAAQy2B,EAAY76C,QAAQqzC,MAAMgC,SAAWp/C,MAAM8R,QAAQsE,EAAQ+X,OAAOA,MACtGo0C,EAAYp0C,GAAU/X,EAAQ+X,OAAOA,IAEhCo0C,IACN,IACHr5D,KAAKonD,MAAM9D,WAAWrU,EAAMx+B,MAAO,KAAM4oD,EAAatD,EAAQl1D,QAAQwgD,QAAQiD,MAG9EtkD,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAQ,EAAGslD,EAAQl1D,QAAQwgD,QAAQM,QACjE3hD,KAAKonD,MAAMzlC,QACXvnB,OAAOD,KAAK+S,EAAQ+X,QAAQjqB,SAAQ,SAAU1B,GACnB,MAArB+/D,EAAY//D,KACZxC,MAAM8R,QAAQsE,EAAQ+X,OAAO3rB,KACpB,SAATA,GACJkS,EAAO47C,MAAMniC,OAAO3rB,EAAM4T,EAAQ+X,OAAO3rB,GAAOy8D,EAAQl1D,QAAQwgD,QAAQiD,UAI5E,SAASgV,EAAqBC,GAC5B,MAAO,CACLt+D,IAAKg7D,EAAS97D,KAAK6vD,IACnB54C,UAAWmoD,EACXt0C,OAAQ,CAAE,cAAc,GACxBta,QAAS,SAAiBskC,GACxB,IAAI4Z,EAAYnN,EAAY76C,QAAQwzC,MAAM,cACtC5jC,EAAQw+B,EAAMx+B,MACdvZ,EAAS+3C,EAAM/3C,OAEfsiE,EAAwBx5D,KAAKonD,MAAMlI,OAAO8J,WAAWH,EAAWp4C,GAChEgpD,EAAyB3b,EAAe0b,EAAuB,GAC/Dzc,EAAQ0c,EAAuB,GAC/Br0B,EAASq0B,EAAuB,GAEpC,GAAa,MAAT1c,EAAJ,CACA,IAAI2c,EAAc15D,KAAKonD,MAAMuS,SAAS5c,GAClC5kD,EAAQ4kD,EAAMqM,aAAahkB,GAAQ,GAAQ,EAC3ChtC,EAAM2kD,EAAMqM,aAAasQ,EAAct0B,EAASluC,GAChDmmD,EAAQN,EAAMN,QAAQ7mB,YAAYvtB,MAAMlQ,EAAOC,GAAK6tB,MAAM,MAC9Dmf,EAAS,EACTiY,EAAMriD,SAAQ,SAAUy+C,EAAMziD,GACxBuiE,GACFxc,EAAMC,SAAS7kD,EAAQitC,EAAQyjB,EAAUmB,KACzC5kB,GAAUyjB,EAAUmB,IAAI9yD,OACd,IAANF,EACFyZ,GAASo4C,EAAUmB,IAAI9yD,OAEvBA,GAAU2xD,EAAUmB,IAAI9yD,QAEjBuiD,EAAKmH,WAAWiI,EAAUmB,OACnCjN,EAAMmM,SAAS/wD,EAAQitC,EAAQyjB,EAAUmB,IAAI9yD,QAC7CkuC,GAAUyjB,EAAUmB,IAAI9yD,OACd,IAANF,EACFyZ,GAASo4C,EAAUmB,IAAI9yD,OAEvBA,GAAU2xD,EAAUmB,IAAI9yD,QAG5BkuC,GAAUqU,EAAKviD,OAAS,KAE1B8I,KAAKonD,MAAMjH,OAAO4V,EAAQl1D,QAAQwgD,QAAQiD,MAC1CtkD,KAAKonD,MAAM1F,aAAajxC,EAAOvZ,EAAQ6+D,EAAQl1D,QAAQwgD,QAAQM,WAKrE,SAASiY,EAAkB30C,GACzB,MAAO,CACLhqB,IAAKgqB,EAAO,GAAG0xB,cACfkjB,UAAU,EACVlvD,QAAS,SAAiBskC,EAAO/hC,GAC/BlN,KAAKonD,MAAMniC,OAAOA,GAAS/X,EAAQ+X,OAAOA,GAAS8wC,EAAQl1D,QAAQwgD,QAAQiD,QAKjF,SAASyS,EAAUD,GACjB,GAAuB,kBAAZA,GAA2C,kBAAZA,EACxC,OAAOC,EAAU,CAAE97D,IAAK67D,IAK1B,GAH0E,YAAlD,qBAAZA,EAA0B,YAAcjZ,EAAQiZ,MAC1DA,GAAU,EAAItM,EAAQ3pD,SAASi2D,GAAS,IAEf,kBAAhBA,EAAQ77D,IACjB,GAAgD,MAA5Cg7D,EAAS97D,KAAK28D,EAAQ77D,IAAI07C,eAC5BmgB,EAAQ77D,IAAMg7D,EAAS97D,KAAK28D,EAAQ77D,IAAI07C,mBACnC,IAA2B,IAAvBmgB,EAAQ77D,IAAI/D,OAGrB,OAAO,KAFP4/D,EAAQ77D,IAAM67D,EAAQ77D,IAAI07C,cAAcx/C,WAAW,GASvD,OAJI2/D,EAAQ+C,WACV/C,EAAQjB,GAAYiB,EAAQ+C,gBACrB/C,EAAQ+C,UAEV/C,EAtYTb,EAAS97D,KAAO,CACdq8D,UAAW,EACXxM,IAAK,EACLqM,MAAO,GACPyD,OAAQ,GACR3B,KAAM,GACN4B,GAAI,GACJ3B,MAAO,GACP4B,KAAM,GACN3gB,OAAQ,IAGV4c,EAASzR,SAAW,CAClB2R,SAAU,CACR,KAAQyD,EAAkB,QAC1B,OAAUA,EAAkB,UAC5B,UAAaA,EAAkB,aAC/B,OAAU,CAER3+D,IAAKg7D,EAAS97D,KAAK6vD,IACnB/kC,OAAQ,CAAC,aAAc,SAAU,QACjCta,QAAS,SAAiBskC,EAAO/hC,GAC/B,GAAIA,EAAQkhD,WAAgC,IAAnBlhD,EAAQk4B,OAAc,OAAO,EACtDplC,KAAKonD,MAAMniC,OAAO,SAAU,KAAM8wC,EAAQl1D,QAAQwgD,QAAQiD,QAG9D,QAAW,CACTrpD,IAAKg7D,EAAS97D,KAAK6vD,IACnB54C,UAAU,EACV6T,OAAQ,CAAC,aAAc,SAAU,QAEjCta,QAAS,SAAiBskC,EAAO/hC,GAC/B,GAAIA,EAAQkhD,WAAgC,IAAnBlhD,EAAQk4B,OAAc,OAAO,EACtDplC,KAAKonD,MAAMniC,OAAO,SAAU,KAAM8wC,EAAQl1D,QAAQwgD,QAAQiD,QAG9D,oBAAqB,CACnBrpD,IAAKg7D,EAAS97D,KAAKq8D,UACnBpI,WAAW,EACXh9C,SAAU,KACVE,QAAS,KACTD,QAAS,KACTklD,OAAQ,KACRtxC,OAAQ,CAAC,SAAU,QACnBmgB,OAAQ,EACRz6B,QAAS,SAAiBskC,EAAO/hC,GACF,MAAzBA,EAAQ+X,OAAOs0C,OACjBv5D,KAAKonD,MAAMniC,OAAO,SAAU,KAAM8wC,EAAQl1D,QAAQwgD,QAAQiD,MAC1B,MAAvBp3C,EAAQ+X,OAAO4nC,MACxB7sD,KAAKonD,MAAMniC,OAAO,QAAQ,EAAO8wC,EAAQl1D,QAAQwgD,QAAQiD,QAI/D,oBAAqBgV,GAAqB,GAC1C,qBAAsBA,GAAqB,GAC3C,aAAc,CACZr+D,IAAKg7D,EAAS97D,KAAK6vD,IACnB54C,UAAU,EACVg9C,WAAW,EACXuI,OAAQ,MACRhsD,QAAS,SAAiBskC,GACxBjvC,KAAKonD,MAAMnG,WAAWhS,EAAMx+B,MAAQ,EAAG,EAAGslD,EAAQl1D,QAAQwgD,QAAQiD,QAGtE,IAAO,CACLrpD,IAAKg7D,EAAS97D,KAAK6vD,IACnBr/C,QAAS,SAAiBskC,GACxBjvC,KAAKonD,MAAM1H,QAAQua,SACnB,IAAI35B,GAAQ,IAAIkb,EAAa36C,SAAUw2C,OAAOpI,EAAMx+B,OAAOunC,OAAO/I,EAAM/3C,QAAQggD,OAAO,MACvFl3C,KAAKonD,MAAM8S,eAAe55B,EAAOy1B,EAAQl1D,QAAQwgD,QAAQiD,MACzDtkD,KAAKonD,MAAM1H,QAAQua,SACnBj6D,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAQ,EAAGslD,EAAQl1D,QAAQwgD,QAAQM,UAGrE,mBAAoB,CAClB1mD,IAAKg7D,EAAS97D,KAAKk8D,MACnBjI,WAAW,EACXnpC,OAAQ,CAAC,QACT6yC,OAAO,EACPntD,QAAS,SAAiBskC,EAAO/hC,GAC/BlN,KAAKonD,MAAMniC,OAAO,QAAQ,EAAO8wC,EAAQl1D,QAAQwgD,QAAQiD,MACrDp3C,EAAQ+X,OAAOs0C,QACjBv5D,KAAKonD,MAAMniC,OAAO,UAAU,EAAO8wC,EAAQl1D,QAAQwgD,QAAQiD,QAIjE,kBAAmB,CACjBrpD,IAAKg7D,EAAS97D,KAAKk8D,MACnBjI,WAAW,EACXnpC,OAAQ,CAAE4nC,KAAM,WAChBliD,QAAS,SAAiBskC,GACxB,IAAIkrB,EAAkBn6D,KAAKonD,MAAM8P,QAAQjoB,EAAMx+B,OAC3C2pD,EAAkBtc,EAAeqc,EAAiB,GAClD1gB,EAAO2gB,EAAgB,GACvBh1B,EAASg1B,EAAgB,GAEzB7uB,GAAU,EAAI8P,EAASx6C,SAAS,GAAI44C,EAAKlO,UAAW,CAAEshB,KAAM,YAC5DvsB,GAAQ,IAAIkb,EAAa36C,SAAUw2C,OAAOpI,EAAMx+B,OAAOymC,OAAO,KAAM3L,GAAS8L,OAAOoC,EAAKviD,SAAWkuC,EAAS,GAAGiS,OAAO,EAAG,CAAEwV,KAAM,cACtI7sD,KAAKonD,MAAM8S,eAAe55B,EAAOy1B,EAAQl1D,QAAQwgD,QAAQiD,MACzDtkD,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAQ,EAAGslD,EAAQl1D,QAAQwgD,QAAQM,QACjE3hD,KAAKonD,MAAMhG,mBAGf,eAAgB,CACdnmD,IAAKg7D,EAAS97D,KAAKk8D,MACnBjI,WAAW,EACXnpC,OAAQ,CAAC,UACTknC,OAAQ,KACRxhD,QAAS,SAAiBskC,EAAO/hC,GAC/B,IAAImtD,EAAkBr6D,KAAKonD,MAAM8P,QAAQjoB,EAAMx+B,OAC3C6pD,EAAkBxc,EAAeuc,EAAiB,GAClD5gB,EAAO6gB,EAAgB,GACvBl1B,EAASk1B,EAAgB,GAEzBh6B,GAAQ,IAAIkb,EAAa36C,SAAUw2C,OAAOpI,EAAMx+B,OAAOymC,OAAO,KAAMhqC,EAAQ+X,QAAQoyB,OAAOoC,EAAKviD,SAAWkuC,EAAS,GAAGiS,OAAO,EAAG,CAAE/6C,OAAQ,OAC/I0D,KAAKonD,MAAM8S,eAAe55B,EAAOy1B,EAAQl1D,QAAQwgD,QAAQiD,MACzDtkD,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAQ,EAAGslD,EAAQl1D,QAAQwgD,QAAQM,QACjE3hD,KAAKonD,MAAMhG,mBAGf,gBAAiB,CACfnmD,IAAK,IACLmzD,WAAW,EACXnpC,OAAQ,CAAE4nC,MAAM,GAChB8J,OAAQ,kCACRhsD,QAAS,SAAiBskC,EAAO/hC,GAC/B,IAAIhW,EAASgW,EAAQypD,OAAOz/D,OAExBqjE,EAAkBv6D,KAAKonD,MAAM8P,QAAQjoB,EAAMx+B,OAC3C+pD,EAAkB1c,EAAeyc,EAAiB,GAClD9gB,EAAO+gB,EAAgB,GACvBp1B,EAASo1B,EAAgB,GAE7B,GAAIp1B,EAASluC,EAAQ,OAAO,EAC5B,IAAIqE,OAAQ,EACZ,OAAQ2R,EAAQypD,OAAOh/C,QACrB,IAAK,KAAK,IAAK,MACbpc,EAAQ,YACR,MACF,IAAK,MACHA,EAAQ,UACR,MACF,IAAK,IAAI,IAAK,IACZA,EAAQ,SACR,MACF,QACEA,EAAQ,UAEZyE,KAAKonD,MAAM9D,WAAWrU,EAAMx+B,MAAO,IAAKslD,EAAQl1D,QAAQwgD,QAAQiD,MAChEtkD,KAAKonD,MAAM1H,QAAQua,SACnB,IAAI35B,GAAQ,IAAIkb,EAAa36C,SAAUw2C,OAAOpI,EAAMx+B,MAAQ20B,GAAQ4S,OAAO9gD,EAAS,GAAGmgD,OAAOoC,EAAKviD,SAAW,EAAIkuC,GAAQiS,OAAO,EAAG,CAAEwV,KAAMtxD,IAC5IyE,KAAKonD,MAAM8S,eAAe55B,EAAOy1B,EAAQl1D,QAAQwgD,QAAQiD,MACzDtkD,KAAKonD,MAAM1H,QAAQua,SACnBj6D,KAAKonD,MAAM1F,aAAazS,EAAMx+B,MAAQvZ,EAAQ6+D,EAAQl1D,QAAQwgD,QAAQM,UAG1E,YAAa,CACX1mD,IAAKg7D,EAAS97D,KAAKk8D,MACnBjI,WAAW,EACXnpC,OAAQ,CAAC,cACT0xC,OAAQ,QACRxK,OAAQ,QACRxhD,QAAS,SAAiBskC,GACxB,IAAIwrB,EAAkBz6D,KAAKonD,MAAM8P,QAAQjoB,EAAMx+B,OAC3CiqD,EAAmB5c,EAAe2c,EAAiB,GACnDhhB,EAAOihB,EAAiB,GACxBt1B,EAASs1B,EAAiB,GAE1Bp6B,GAAQ,IAAIkb,EAAa36C,SAAUw2C,OAAOpI,EAAMx+B,MAAQgpC,EAAKviD,SAAWkuC,EAAS,GAAGiS,OAAO,EAAG,CAAE,aAAc,OAAQW,OAAO,GACjIh4C,KAAKonD,MAAM8S,eAAe55B,EAAOy1B,EAAQl1D,QAAQwgD,QAAQiD,QAG7D,aAAc2T,EAAsBhC,EAAS97D,KAAKg+D,MAAM,GACxD,mBAAoBF,EAAsBhC,EAAS97D,KAAKg+D,MAAM,GAC9D,cAAeF,EAAsBhC,EAAS97D,KAAKi+D,OAAO,GAC1D,oBAAqBH,EAAsBhC,EAAS97D,KAAKi+D,OAAO,KA0NpE9hE,EAAQuK,QAAUo1D,EAClB3/D,EAAQu/D,SAAWA,GAIb,SAAUljB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIuiD,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjBkzC,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZL,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEf03B,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCM,EAAQjJ,EAAoB,GAE5BkJ,EAASV,EAAuBS,GAEpC,SAAST,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIqe,EAAS,SAAUne,GAUrB,SAASme,EAAOle,EAAS4C,GACvBpD,EAAgBj8C,KAAM26D,GAEtB,IAAI9vD,EAAQqxC,EAA2Bl8C,MAAO26D,EAAOn2C,WAAapqB,OAAO+gD,eAAewf,IAASvyD,KAAKpI,KAAMy8C,IAM5G,OAJA5xC,EAAMw0C,UAAYA,EAClBx0C,EAAM4iD,SAAWh2C,SAASmjD,eAAeD,EAAOrO,UAChDzhD,EAAM4xC,QAAQ7lB,YAAY/rB,EAAM4iD,UAChC5iD,EAAMgwD,QAAU,EACThwD,EAwHT,OA1IAuxC,EAAUue,EAAQne,GAElB7B,EAAaggB,EAAQ,KAAM,CAAC,CAC1B1/D,IAAK,QACLM,MAAO,gBAiBTo/C,EAAaggB,EAAQ,CAAC,CACpB1/D,IAAK,SACLM,MAAO,WAEc,MAAfyE,KAAKk7C,QAAgBl7C,KAAKk7C,OAAOllB,YAAYh2B,QAElD,CACD/E,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GAC3B,GAAqB,IAAjByE,KAAK66D,QACP,OAAO9f,EAAK4f,EAAOzyD,UAAUsc,WAAapqB,OAAO+gD,eAAewf,EAAOzyD,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAM1G,EAAMiC,GAEtH,IAAIV,EAASmF,KACTyQ,EAAQ,EACZ,MAAiB,MAAV5V,GAAkBA,EAAO2iD,QAAQ35C,QAAU63C,EAAY76C,QAAQqzC,MAAM+I,WAC1ExsC,GAAS5V,EAAOuqC,OAAOvqC,EAAOqgD,QAC9BrgD,EAASA,EAAOqgD,OAEJ,MAAVrgD,IACFmF,KAAK66D,QAAUF,EAAOrO,SAASp1D,OAC/B2D,EAAOivD,WACPjvD,EAAO0uD,SAAS94C,EAAOkqD,EAAOrO,SAASp1D,OAAQoC,EAAMiC,GACrDyE,KAAK66D,QAAU,KAGlB,CACD5/D,IAAK,QACLM,MAAO,SAAeu6B,EAAMsP,GAC1B,OAAItP,IAAS91B,KAAKytD,SAAiB,EAC5B1S,EAAK4f,EAAOzyD,UAAUsc,WAAapqB,OAAO+gD,eAAewf,EAAOzyD,WAAY,QAASlI,MAAMoI,KAAKpI,KAAM81B,EAAMsP,KAEpH,CACDnqC,IAAK,SACLM,MAAO,WACL,OAAOyE,KAAK66D,UAEb,CACD5/D,IAAK,WACLM,MAAO,WACL,MAAO,CAACyE,KAAKytD,SAAUztD,KAAKytD,SAAS9zD,KAAKzC,UAE3C,CACD+D,IAAK,SACLM,MAAO,WACLw/C,EAAK4f,EAAOzyD,UAAUsc,WAAapqB,OAAO+gD,eAAewf,EAAOzyD,WAAY,SAAUlI,MAAMoI,KAAKpI,MACjGA,KAAKk7C,OAAS,OAEf,CACDjgD,IAAK,UACLM,MAAO,WACL,IAAIyE,KAAKq/C,UAAU2N,WAA4B,MAAfhtD,KAAKk7C,OAArC,CACA,IAAIuS,EAAWztD,KAAKytD,SAChBxe,EAAQjvC,KAAKq/C,UAAUmO,iBACvBsN,OAAc,EACd3iE,OAAQ,EACRC,OAAM,EACV,GAAa,MAAT62C,GAAiBA,EAAM92C,MAAM29B,OAAS23B,GAAYxe,EAAM72C,IAAI09B,OAAS23B,EAAU,CACjF,IAAI/zD,EAAO,CAAC+zD,EAAUxe,EAAM92C,MAAMitC,OAAQ6J,EAAM72C,IAAIgtC,QACpD01B,EAAcphE,EAAK,GACnBvB,EAAQuB,EAAK,GACbtB,EAAMsB,EAAK,GAGb,MAAiC,MAA1BsG,KAAKy8C,QAAQhU,WAAqBzoC,KAAKy8C,QAAQhU,YAAczoC,KAAKytD,SACvEztD,KAAKy8C,QAAQtmB,WAAWqN,aAAaxjC,KAAKy8C,QAAQhU,UAAWzoC,KAAKy8C,SAEpE,GAAIz8C,KAAKytD,SAAS9zD,OAASghE,EAAOrO,SAAU,CAC1C,IAAInV,EAAOn3C,KAAKytD,SAAS9zD,KAAKssB,MAAM00C,EAAOrO,UAAU/zD,KAAK,IACtDyH,KAAKwlB,gBAAgBw2B,EAAOn7C,SAC9Bi6D,EAAc96D,KAAKwlB,KAAKi3B,QACxBz8C,KAAKwlB,KAAKw3B,SAAS,EAAG7F,GACtBn3C,KAAKytD,SAAS9zD,KAAOghE,EAAOrO,WAE5BtsD,KAAKytD,SAAS9zD,KAAOw9C,EACrBn3C,KAAKk7C,OAAO1X,aAAakY,EAAY76C,QAAQszC,OAAOn0C,KAAKytD,UAAWztD,MACpEA,KAAKytD,SAAWh2C,SAASmjD,eAAeD,EAAOrO,UAC/CtsD,KAAKy8C,QAAQ7lB,YAAY52B,KAAKytD,WAIlC,GADAztD,KAAKy1B,SACQ,MAATt9B,EAAe,CACjB,IAAImtD,EAAO,CAACntD,EAAOC,GAAK+N,KAAI,SAAUi/B,GACpC,OAAOzT,KAAK7F,IAAI,EAAG6F,KAAKlG,IAAIqvC,EAAYnhE,KAAKzC,OAAQkuC,EAAS,OAG5DogB,EAAQ1H,EAAewH,EAAM,GAKjC,OAHAntD,EAAQqtD,EAAM,GACdptD,EAAMotD,EAAM,GAEL,CACLqI,UAAWiN,EACXhN,YAAa31D,EACb41D,QAAS+M,EACT9M,UAAW51D,OAIhB,CACD6C,IAAK,SACLM,MAAO,SAAgBykD,EAAW9yC,GAChC,IAAIjC,EAASjL,KAEb,GAAIggD,EAAUjwC,MAAK,SAAU6hD,GAC3B,MAAyB,kBAAlBA,EAASvlD,MAA4BulD,EAAS/2D,SAAWoQ,EAAOwiD,YACrE,CACF,IAAIxe,EAAQjvC,KAAKiuD,UACbhf,IAAO/hC,EAAQ+hC,MAAQA,MAG9B,CACDh0C,IAAK,QACLM,MAAO,WACL,MAAO,OAIJo/D,EA3II,CA4IXjf,EAAY76C,QAAQ6zC,OAEtBimB,EAAOnkB,SAAW,SAClBmkB,EAAOrlC,UAAY,YACnBqlC,EAAOrjD,QAAU,OACjBqjD,EAAOrO,SAAW,SAGlBh2D,EAAQuK,QAAU85D,GAIZ,SAAUhoB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIkgD,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCiN,EAAS5V,EAAoB,GAE7B6V,EAAUrN,EAAuBoN,GAErC,SAASpN,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI/H,EAAY,SAAUwmB,GAGxB,SAASxmB,IAGP,OAFA0H,EAAgBj8C,KAAMu0C,GAEf2H,EAA2Bl8C,MAAOu0C,EAAU/vB,WAAapqB,OAAO+gD,eAAe5G,IAAY55C,MAAMqF,KAAMlF,YAGhH,OARAshD,EAAU7H,EAAWwmB,GAQdxmB,EATO,CAUdmH,EAAY76C,QAAQ0zC,WAEtBA,EAAUmJ,gBAAkB,CAACiL,EAAQ9nD,QAAS6nD,EAAOjO,WAAYlG,GAEjEj+C,EAAQuK,QAAU0zC,GAIZ,SAAU5B,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQ0kE,WAAa1kE,EAAQ2kE,WAAa3kE,EAAQ4kE,qBAAkBj0D,EAEpE,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI4e,EAAkB,SAAUC,GAG9B,SAASD,IAGP,OAFAjf,EAAgBj8C,KAAMk7D,GAEfhf,EAA2Bl8C,MAAOk7D,EAAgB12C,WAAapqB,OAAO+gD,eAAe+f,IAAkBvgE,MAAMqF,KAAMlF,YAe5H,OApBAshD,EAAU8e,EAAiBC,GAQ3BxgB,EAAaugB,EAAiB,CAAC,CAC7BjgE,IAAK,QACLM,MAAO,SAAekhD,GACpB,IAAIlhD,EAAQw/C,EAAKmgB,EAAgBhzD,UAAUsc,WAAapqB,OAAO+gD,eAAe+f,EAAgBhzD,WAAY,QAASlI,MAAMoI,KAAKpI,KAAMy8C,GACpI,OAAKlhD,EAAMqlD,WAAW,SACtBrlD,EAAQA,EAAMoQ,QAAQ,UAAW,IAAIA,QAAQ,UAAW,IACjD,IAAMpQ,EAAM0qB,MAAM,KAAK9f,KAAI,SAAU+yC,GAC1C,OAAQ,KAAOzgB,SAASygB,GAAW/wC,SAAS,KAAKE,OAAO,MACvD9P,KAAK,KAJ8BgD,MAQnC2/D,EArBa,CAsBpBxf,EAAY76C,QAAQk0C,WAAWE,OAE7BgmB,EAAa,IAAIvf,EAAY76C,QAAQk0C,WAAWpxB,MAAM,QAAS,WAAY,CAC7E9f,MAAO63C,EAAY76C,QAAQqzC,MAAMiC,SAE/B6kB,EAAa,IAAIE,EAAgB,QAAS,QAAS,CACrDr3D,MAAO63C,EAAY76C,QAAQqzC,MAAMiC,SAGnC7/C,EAAQ4kE,gBAAkBA,EAC1B5kE,EAAQ2kE,WAAaA,EACrB3kE,EAAQ0kE,WAAaA,GAIf,SAAUroB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQ8kE,SAAW9kE,EAAQuK,aAAUoG,EAErC,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZa,EAAU/I,EAAoB,GAE9BgJ,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI+e,EAAO,SAAUzS,GAGnB,SAASyS,IAGP,OAFApf,EAAgBj8C,KAAMq7D,GAEfnf,EAA2Bl8C,MAAOq7D,EAAK72C,WAAapqB,OAAO+gD,eAAekgB,IAAO1gE,MAAMqF,KAAMlF,YAgCtG,OArCAshD,EAAUif,EAAMzS,GAQhBjO,EAAa0gB,EAAM,CAAC,CAClBpgE,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GAC3B,GAAIjC,IAAS0G,KAAKw9C,QAAQhH,WAAaj7C,EAAO,OAAOw/C,EAAKsgB,EAAKnzD,UAAUsc,WAAapqB,OAAO+gD,eAAekgB,EAAKnzD,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAM1G,EAAMiC,GAC9JA,EAAQyE,KAAKsI,YAAY8yD,SAAS7/D,GAClCyE,KAAKy8C,QAAQ9lB,aAAa,OAAQp7B,MAElC,CAAC,CACHN,IAAK,SACLM,MAAO,SAAgBA,GACrB,IAAIu6B,EAAOilB,EAAKsgB,EAAK72C,WAAapqB,OAAO+gD,eAAekgB,GAAO,SAAUr7D,MAAMoI,KAAKpI,KAAMzE,GAK1F,OAJAA,EAAQyE,KAAKo7D,SAAS7/D,GACtBu6B,EAAKa,aAAa,OAAQp7B,GAC1Bu6B,EAAKa,aAAa,MAAO,uBACzBb,EAAKa,aAAa,SAAU,UACrBb,IAER,CACD76B,IAAK,UACLM,MAAO,SAAiBkhD,GACtB,OAAOA,EAAQ9U,aAAa,UAE7B,CACD1sC,IAAK,WACLM,MAAO,SAAkB+/D,GACvB,OAAOC,EAAUD,EAAKt7D,KAAKw7D,oBAAsBF,EAAMt7D,KAAKy7D,kBAIzDJ,EAtCE,CAuCTvf,EAASj7C,SAOX,SAAS06D,EAAUD,EAAKI,GACtB,IAAIC,EAASlkD,SAASie,cAAc,KACpCimC,EAAOC,KAAON,EACd,IAAIO,EAAWF,EAAOC,KAAKvzD,MAAM,EAAGszD,EAAOC,KAAKpkE,QAAQ,MACxD,OAAOkkE,EAAUlkE,QAAQqkE,IAAa,EATxCR,EAAK7kB,SAAW,OAChB6kB,EAAK/jD,QAAU,IACf+jD,EAAKI,cAAgB,cACrBJ,EAAKG,mBAAqB,CAAC,OAAQ,QAAS,SAAU,OAStDllE,EAAQuK,QAAUw6D,EAClB/kE,EAAQ8kE,SAAWG,GAIb,SAAU5oB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIsiD,EAA4B,oBAAXn1C,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUrN,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAXoN,QAAyBpN,EAAIgN,cAAgBI,QAAUpN,IAAQoN,OAAOR,UAAY,gBAAkB5M,GAElQq/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEf+3C,EAAYhpB,EAAoB,IAEhCipB,EAAazgB,EAAuBwgB,GAEpCE,EAAYlpB,EAAoB,KAEhCmpB,EAAa3gB,EAAuB0gB,GAExC,SAAS1gB,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,IAAIq0D,EAAiB,EAErB,SAASC,EAAoBz/B,EAASigB,GACpCjgB,EAAQ/F,aAAagmB,IAAiD,SAApCjgB,EAAQiL,aAAagV,KAGzD,IAAIyf,EAAS,WACX,SAASA,EAAOv6B,GACd,IAAIh3B,EAAQ7K,KAEZi8C,EAAgBj8C,KAAMo8D,GAEtBp8D,KAAK6hC,OAASA,EACd7hC,KAAKumC,UAAY9uB,SAASie,cAAc,QACxC11B,KAAKq8D,cACLr8D,KAAK6hC,OAAOlrB,MAAM8nB,QAAU,OAC5Bz+B,KAAK6hC,OAAO1L,WAAWqN,aAAaxjC,KAAKumC,UAAWvmC,KAAK6hC,QAEzD7hC,KAAK+L,MAAM00B,iBAAiB,aAAa,WACvC51B,EAAMyxD,kBAERt8D,KAAK+L,MAAM00B,iBAAiB,WAAW,SAAUj8B,GAC/C,OAAQA,EAAMwX,SAEZ,KAAK+/C,EAAWl7D,QAAQ1G,KAAKk8D,MAC3BxrD,EAAMyxD,eACN,MAGF,KAAKP,EAAWl7D,QAAQ1G,KAAK2/D,OAC3BjvD,EAAM0xD,SACN/3D,EAAM4e,iBACN,MACF,aAGJpjB,KAAK6hC,OAAOpB,iBAAiB,SAAUzgC,KAAKmgD,OAAOzkD,KAAKsE,OA4K1D,OAzKA26C,EAAayhB,EAAQ,CAAC,CACpBnhE,IAAK,eACLM,MAAO,WACLyE,KAAKumC,UAAUhR,UAAU3T,OAAO,eAEhCu6C,EAAoBn8D,KAAK+L,MAAO,iBAChCowD,EAAoBn8D,KAAK6kB,QAAS,iBAEnC,CACD5pB,IAAK,YACLM,MAAO,SAAmBi0C,GACxB,IAAIvkC,EAASjL,KAETuL,EAAOkM,SAASie,cAAc,QA+BlC,OA9BAnqB,EAAK0Q,SAAW,IAChB1Q,EAAKorB,aAAa,OAAQ,UAE1BprB,EAAKgqB,UAAUC,IAAI,kBACfga,EAAOgtB,aAAa,UACtBjxD,EAAKorB,aAAa,aAAc6Y,EAAO7H,aAAa,UAElD6H,EAAO5Z,aACTrqB,EAAKorB,aAAa,aAAc6Y,EAAO5Z,aAEzCrqB,EAAKk1B,iBAAiB,SAAS,WAC7Bx1B,EAAOwxD,WAAWlxD,GAAM,MAE1BA,EAAKk1B,iBAAiB,WAAW,SAAUj8B,GACzC,OAAQA,EAAMwX,SAEZ,KAAK+/C,EAAWl7D,QAAQ1G,KAAKk8D,MAC3BprD,EAAOwxD,WAAWlxD,GAAM,GACxB/G,EAAM4e,iBACN,MAGF,KAAK24C,EAAWl7D,QAAQ1G,KAAK2/D,OAC3B7uD,EAAOsxD,SACP/3D,EAAM4e,iBACN,MACF,aAIG7X,IAER,CACDtQ,IAAK,aACLM,MAAO,WACL,IAAIwQ,EAAQ0L,SAASie,cAAc,QAOnC,OANA3pB,EAAMwpB,UAAUC,IAAI,mBACpBzpB,EAAMs6B,UAAY41B,EAAWp7D,QAC7BkL,EAAMkQ,SAAW,IACjBlQ,EAAM4qB,aAAa,OAAQ,UAC3B5qB,EAAM4qB,aAAa,gBAAiB,SACpC32B,KAAKumC,UAAU3P,YAAY7qB,GACpBA,IAER,CACD9Q,IAAK,eACLM,MAAO,WACL,IAAIiQ,EAASxL,KAET6kB,EAAUpN,SAASie,cAAc,QACrC7Q,EAAQ0Q,UAAUC,IAAI,qBAGtB3Q,EAAQ8R,aAAa,cAAe,QACpC9R,EAAQ5I,SAAW,KAGnB4I,EAAQ3f,GAAK,qBAAuBg3D,EACpCA,GAAkB,EAClBl8D,KAAK+L,MAAM4qB,aAAa,gBAAiB9R,EAAQ3f,IAEjDlF,KAAK6kB,QAAUA,EAEf,GAAGxc,MAAMD,KAAKpI,KAAK6hC,OAAOhd,SAAS7pB,SAAQ,SAAUw0C,GACnD,IAAIjkC,EAAOC,EAAOkxD,UAAUltB,GAC5B3qB,EAAQ+R,YAAYrrB,IACI,IAApBikC,EAAOr+B,UACT3F,EAAOixD,WAAWlxD,MAGtBvL,KAAKumC,UAAU3P,YAAY/R,KAE5B,CACD5pB,IAAK,cACLM,MAAO,WACL,IAAIwvB,EAAS/qB,KAEb,GAAGqI,MAAMD,KAAKpI,KAAK6hC,OAAO2T,YAAYx6C,SAAQ,SAAUuQ,GACtDwf,EAAOwb,UAAU5P,aAAaprB,EAAKjS,KAAMiS,EAAKhQ,UAEhDyE,KAAKumC,UAAUhR,UAAUC,IAAI,aAC7Bx1B,KAAK+L,MAAQ/L,KAAK28D,aAClB38D,KAAK48D,iBAEN,CACD3hE,IAAK,SACLM,MAAO,WACL,IAAIqmD,EAAS5hD,KAGbA,KAAKuoC,QAGLx9B,YAAW,WACT,OAAO62C,EAAO71C,MAAM4V,UACnB,KAEJ,CACD1mB,IAAK,QACLM,MAAO,WACLyE,KAAKumC,UAAUhR,UAAUE,OAAO,eAChCz1B,KAAK+L,MAAM4qB,aAAa,gBAAiB,SACzC32B,KAAK6kB,QAAQ8R,aAAa,cAAe,UAE1C,CACD17B,IAAK,aACLM,MAAO,SAAoBgQ,GACzB,IAAIsxD,EAAU/hE,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GAEzEqW,EAAWnR,KAAKumC,UAAUgG,cAAc,gBAC5C,GAAIhhC,IAAS4F,IACG,MAAZA,GACFA,EAASokB,UAAUE,OAAO,eAEhB,MAARlqB,IACJA,EAAKgqB,UAAUC,IAAI,eACnBx1B,KAAK6hC,OAAOkN,cAAgB,GAAGv3C,QAAQ4Q,KAAKmD,EAAK4qB,WAAWv8B,SAAU2R,GAClEA,EAAKixD,aAAa,cACpBx8D,KAAK+L,MAAM4qB,aAAa,aAAcprB,EAAKo8B,aAAa,eAExD3nC,KAAK+L,MAAM48B,gBAAgB,cAEzBp9B,EAAKixD,aAAa,cACpBx8D,KAAK+L,MAAM4qB,aAAa,aAAcprB,EAAKo8B,aAAa,eAExD3nC,KAAK+L,MAAM48B,gBAAgB,cAEzBk0B,IAAS,CACX,GAAqB,oBAAVC,MACT98D,KAAK6hC,OAAOc,cAAc,IAAIm6B,MAAM,gBAC/B,GAAsE,YAAhD,qBAAVA,MAAwB,YAAcjf,EAAQif,QAAsB,CAErF,IAAIt4D,EAAQiT,SAASirB,YAAY,SACjCl+B,EAAMyrC,UAAU,UAAU,GAAM,GAChCjwC,KAAK6hC,OAAOc,cAAcn+B,GAE5BxE,KAAKuoC,WAGR,CACDttC,IAAK,SACLM,MAAO,WACL,IAAIi0C,OAAS,EACb,GAAIxvC,KAAK6hC,OAAOkN,eAAiB,EAAG,CAClC,IAAIxjC,EAAOvL,KAAKumC,UAAUgG,cAAc,sBAAsB3yC,SAASoG,KAAK6hC,OAAOkN,eACnFS,EAASxvC,KAAK6hC,OAAOhd,QAAQ7kB,KAAK6hC,OAAOkN,eACzC/uC,KAAKy8D,WAAWlxD,QAEhBvL,KAAKy8D,WAAW,MAElB,IAAIM,EAAqB,MAAVvtB,GAAkBA,IAAWxvC,KAAK6hC,OAAO0K,cAAc,oBACtEvsC,KAAK+L,MAAMwpB,UAAU3T,OAAO,YAAam7C,OAItCX,EA1MI,GA6Mb9lE,EAAQuK,QAAUu7D,GAIZ,SAAUzpB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIkgD,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCqa,EAAShjB,EAAoB,GAE7BijB,EAAUza,EAAuBwa,GAEjCpN,EAAS5V,EAAoB,GAE7B6V,EAAUrN,EAAuBoN,GAEjC/M,EAAS7I,EAAoB,IAE7B8I,EAAUN,EAAuBK,GAEjCqZ,EAAaliB,EAAoB,IAEjCmiB,EAAc3Z,EAAuB0Z,GAErC3K,EAAUvX,EAAoB,IAE9BwX,EAAWhP,EAAuB+O,GAElC2S,EAASlqB,EAAoB,IAE7BmqB,EAAU3hB,EAAuB0hB,GAEjCnhB,EAAU/I,EAAoB,GAE9BgJ,EAAWR,EAAuBO,GAElCqhB,EAAUpqB,EAAoB,IAE9BqqB,EAAW7hB,EAAuB4hB,GAElCnhB,EAAQjJ,EAAoB,GAE5BkJ,EAASV,EAAuBS,GAEhCqhB,EAAatqB,EAAoB,IAEjCuqB,EAAc/hB,EAAuB8hB,GAErCE,EAAWxqB,EAAoB,IAE/ByqB,EAAYjiB,EAAuBgiB,GAEnCxB,EAAYhpB,EAAoB,IAEhCipB,EAAazgB,EAAuBwgB,GAExC,SAASxgB,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvFy6D,EAAQl1D,QAAQyzC,SAAS,CACvB,cAAeqU,EAAQ9nD,QACvB,oBAAqB6nD,EAAOjO,WAC5B,cAAemB,EAAQ/6C,QACvB,kBAAmBo0D,EAAYp0D,QAC/B,eAAgBypD,EAASzpD,QACzB,cAAeo8D,EAAQp8D,QACvB,eAAgBi7C,EAASj7C,QACzB,eAAgBs8D,EAASt8D,QACzB,aAAcm7C,EAAOn7C,QAErB,oBAAqBw8D,EAAYx8D,QACjC,kBAAmB08D,EAAU18D,QAC7B,mBAAoBk7D,EAAWl7D,UAGjC66C,EAAY76C,QAAQyzC,SAASqU,EAAQ9nD,QAAS+6C,EAAQ/6C,QAASypD,EAASzpD,QAASi7C,EAASj7C,QAASs8D,EAASt8D,QAASm7C,EAAOn7C,SAE5HvK,EAAQuK,QAAUk1D,EAAQl1D,SAIpB,SAAU8xC,EAAQr8C,EAASw8C,GAEjC,aAEA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAIy4C,EAAWlB,EAAoB,GAC/B0qB,EAA4B,WAC5B,SAASA,EAAW/gB,GAChBz8C,KAAKy8C,QAAUA,EAEfz8C,KAAKy8C,QAAQzI,EAAS8B,UAAY,CAAEC,KAAM/1C,MAkJ9C,OAhJA5F,OAAOiB,eAAemiE,EAAWt1D,UAAW,UAAW,CAEnDkK,IAAK,WACD,OAAOpS,KAAKsI,aAEhB5N,YAAY,EACZc,cAAc,IAElBgiE,EAAWrpB,OAAS,SAAU54C,GAC1B,GAAoB,MAAhByE,KAAKsX,QACL,MAAM,IAAI08B,EAASsB,eAAe,mCAEtC,IAAIxf,EAwBJ,OAvBIh/B,MAAM8R,QAAQ5I,KAAKsX,UACE,kBAAV/b,IACPA,EAAQA,EAAMo7C,cACVle,SAASl9B,GAAO4M,aAAe5M,IAC/BA,EAAQk9B,SAASl9B,KAIrBu6B,EADiB,kBAAVv6B,EACAkc,SAASie,cAAc11B,KAAKsX,QAAQ/b,EAAQ,IAE9CyE,KAAKsX,QAAQ9f,QAAQ+D,IAAU,EAC7Bkc,SAASie,cAAcn6B,GAGvBkc,SAASie,cAAc11B,KAAKsX,QAAQ,KAI/Cwe,EAAOre,SAASie,cAAc11B,KAAKsX,SAEnCtX,KAAKs1B,WACLQ,EAAKP,UAAUC,IAAIx1B,KAAKs1B,WAErBQ,GAEX0nC,EAAWt1D,UAAUomD,OAAS,WACP,MAAftuD,KAAKk7C,SACLl7C,KAAKk/C,OAASl/C,KAAKk7C,OAAOgE,SAGlCse,EAAWt1D,UAAUsyC,MAAQ,WACzB,IAAIiC,EAAUz8C,KAAKy8C,QAAQghB,WAAU,GACrC,OAAOzpB,EAASG,OAAOsI,IAE3B+gB,EAAWt1D,UAAUkpD,OAAS,WACP,MAAfpxD,KAAKk7C,QACLl7C,KAAKk7C,OAAOllB,YAAYh2B,aAErBA,KAAKy8C,QAAQzI,EAAS8B,WAEjC0nB,EAAWt1D,UAAUghD,SAAW,SAAUz4C,EAAOvZ,GAC7C,IAAI6+C,EAAO/1C,KAAK+lD,QAAQt1C,EAAOvZ,GAC/B6+C,EAAKtgB,UAET+nC,EAAWt1D,UAAUqhD,SAAW,SAAU94C,EAAOvZ,EAAQoC,EAAMiC,GAC3D,IAAIw6C,EAAO/1C,KAAK+lD,QAAQt1C,EAAOvZ,GAC/B,GAAiD,MAA7C88C,EAASK,MAAM/6C,EAAM06C,EAASE,MAAM4R,OAAiBvqD,EACrDw6C,EAAKxqB,KAAKjyB,EAAMiC,QAEf,GAAsD,MAAlDy4C,EAASK,MAAM/6C,EAAM06C,EAASE,MAAMqU,WAAoB,CAC7D,IAAIrN,EAASlH,EAASG,OAAOn0C,KAAKw9C,QAAQ35C,OAC1CkyC,EAAKxqB,KAAK2vB,GACVA,EAAOj2B,OAAO3rB,EAAMiC,KAG5BiiE,EAAWt1D,UAAU80C,SAAW,SAAUvsC,EAAOlV,EAAOshD,GACpD,IAAI9G,EAAc,MAAP8G,EAAc7I,EAASG,OAAO,OAAQ54C,GAASy4C,EAASG,OAAO54C,EAAOshD,GAC7E9hC,EAAM/a,KAAKimB,MAAMxV,GACrBzQ,KAAKk7C,OAAO1X,aAAauS,EAAMh7B,IAEnCyiD,EAAWt1D,UAAUqpD,WAAa,SAAUmM,EAAYpM,QACpC,IAAZA,IAAsBA,EAAU,MACjB,MAAftxD,KAAKk7C,QACLl7C,KAAKk7C,OAAOthD,SAAS67B,OAAOz1B,MAEhC,IAAI29D,EAAa,KACjBD,EAAW9jE,SAAS4pC,aAAaxjC,KAAMsxD,GACxB,MAAXA,IACAqM,EAAarM,EAAQ7U,SAErBz8C,KAAKy8C,QAAQtmB,YAAcunC,EAAWjhB,SACtCz8C,KAAKy8C,QAAQhZ,aAAek6B,GAC5BD,EAAWjhB,QAAQjZ,aAAaxjC,KAAKy8C,QAASkhB,GAElD39D,KAAKk7C,OAASwiB,EACd19D,KAAKsuD,UAETkP,EAAWt1D,UAAU69C,QAAU,SAAUt1C,EAAOvZ,GAC5C,IAAI2D,EAASmF,KAAKimB,MAAMxV,GAExB,OADA5V,EAAOorB,MAAM/uB,GACN2D,GAEX2iE,EAAWt1D,UAAUhR,OAAS,WAC1B,OAAO,GAEXsmE,EAAWt1D,UAAUk9B,OAAS,SAAUqN,GAEpC,YADa,IAATA,IAAmBA,EAAOzyC,KAAKk7C,QAChB,MAAfl7C,KAAKk7C,QAAkBl7C,MAAQyyC,EACxB,EACJzyC,KAAKk7C,OAAOthD,SAASwrC,OAAOplC,MAAQA,KAAKk7C,OAAO9V,OAAOqN,IAElE+qB,EAAWt1D,UAAU4hD,SAAW,SAAU58C,GAGC,MAAnClN,KAAKy8C,QAAQzI,EAAS8B,kBAEf91C,KAAKy8C,QAAQzI,EAAS8B,UAAUkK,WAG/Cwd,EAAWt1D,UAAUutB,OAAS,WACK,MAA3Bz1B,KAAKy8C,QAAQtmB,YACbn2B,KAAKy8C,QAAQtmB,WAAWH,YAAYh2B,KAAKy8C,SAE7Cz8C,KAAKoxD,UAEToM,EAAWt1D,UAAUyD,QAAU,SAAU9Q,GAChB,MAAjBA,EAAOqgD,SAEXrgD,EAAOqgD,OAAO1X,aAAaxjC,KAAMnF,EAAO2qB,MACxC3qB,EAAO46B,WAEX+nC,EAAWt1D,UAAUgqD,YAAc,SAAU54D,EAAMiC,GAC/C,IAAI42D,EAA8B,kBAAT74D,EAAoB06C,EAASG,OAAO76C,EAAMiC,GAASjC,EAE5E,OADA64D,EAAYxmD,QAAQ3L,MACbmyD,GAEXqL,EAAWt1D,UAAU+d,MAAQ,SAAUxV,EAAO8sC,GAC1C,OAAiB,IAAV9sC,EAAczQ,KAAOA,KAAKwlB,MAErCg4C,EAAWt1D,UAAUi4C,OAAS,SAAUH,EAAW9yC,KAGnDswD,EAAWt1D,UAAUqjB,KAAO,SAAUjyB,EAAMiC,GACxC,IAAIg7B,EAA0B,kBAATj9B,EAAoB06C,EAASG,OAAO76C,EAAMiC,GAASjC,EAKxE,OAJmB,MAAf0G,KAAKk7C,QACLl7C,KAAKk7C,OAAO1X,aAAajN,EAASv2B,KAAKwlB,MAE3C+Q,EAAQK,YAAY52B,MACbu2B,GAEXinC,EAAWhnB,SAAW,WACfgnB,EAtJoB,GAwJ/BlnE,EAAQuK,QAAU28D,GAKZ,SAAU7qB,EAAQr8C,EAASw8C,GAEjC,aAEA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAIq4C,EAAed,EAAoB,IACnCe,EAAUf,EAAoB,IAC9BgB,EAAUhB,EAAoB,IAC9BkB,EAAWlB,EAAoB,GAC/B8qB,EAAiC,WACjC,SAASA,EAAgBnhB,GACrBz8C,KAAKw1C,WAAa,GAClBx1C,KAAKy8C,QAAUA,EACfz8C,KAAK29B,QAyDT,OAvDAigC,EAAgB11D,UAAUy0C,UAAY,SAAUA,EAAWphD,GAEnDA,EACIohD,EAAUnnB,IAAIx1B,KAAKy8C,QAASlhD,KACS,MAAjCohD,EAAUphD,MAAMyE,KAAKy8C,SACrBz8C,KAAKw1C,WAAWmH,EAAUlG,UAAYkG,SAG/B38C,KAAKw1C,WAAWmH,EAAUlG,YAKzCkG,EAAUlnB,OAAOz1B,KAAKy8C,gBACfz8C,KAAKw1C,WAAWmH,EAAUlG,YAGzCmnB,EAAgB11D,UAAUy1B,MAAQ,WAC9B,IAAI9yB,EAAQ7K,KACZA,KAAKw1C,WAAa,GAClB,IAAIA,EAAa5B,EAAa/yC,QAAQ1G,KAAK6F,KAAKy8C,SAC5CvxB,EAAU2oB,EAAQhzC,QAAQ1G,KAAK6F,KAAKy8C,SACpCohB,EAAS/pB,EAAQjzC,QAAQ1G,KAAK6F,KAAKy8C,SACvCjH,EACKz7C,OAAOmxB,GACPnxB,OAAO8jE,GACP7iE,SAAQ,SAAU1B,GACnB,IAAIwkE,EAAO9pB,EAASK,MAAM/6C,EAAM06C,EAASE,MAAMqU,WAC3CuV,aAAgBlqB,EAAa/yC,UAC7BgK,EAAM2qC,WAAWsoB,EAAKrnB,UAAYqnB,OAI9CF,EAAgB11D,UAAUoyC,KAAO,SAAUz/C,GACvC,IAAIgQ,EAAQ7K,KACZ5F,OAAOD,KAAK6F,KAAKw1C,YAAYx6C,SAAQ,SAAUC,GAC3C,IAAIM,EAAQsP,EAAM2qC,WAAWv6C,GAAKM,MAAMsP,EAAM4xC,SAC9C5hD,EAAOoqB,OAAOhqB,EAAKM,OAG3BqiE,EAAgB11D,UAAUkqD,KAAO,SAAUv3D,GACvC,IAAIgQ,EAAQ7K,KACZA,KAAKs6C,KAAKz/C,GACVT,OAAOD,KAAK6F,KAAKw1C,YAAYx6C,SAAQ,SAAUC,GAC3C4P,EAAM2qC,WAAWv6C,GAAKw6B,OAAO5qB,EAAM4xC,YAEvCz8C,KAAKw1C,WAAa,IAEtBooB,EAAgB11D,UAAUw0C,OAAS,WAC/B,IAAI7xC,EAAQ7K,KACZ,OAAO5F,OAAOD,KAAK6F,KAAKw1C,YAAY9uC,QAAO,SAAU8uC,EAAYl8C,GAE7D,OADAk8C,EAAWl8C,GAAQuR,EAAM2qC,WAAWl8C,GAAMiC,MAAMsP,EAAM4xC,SAC/CjH,IACR,KAEAooB,EA7DyB,GA+DpCtnE,EAAQuK,QAAU+8D,GAKZ,SAAUjrB,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAIq4C,EAAed,EAAoB,IACvC,SAAS3X,EAAMrF,EAAM6gC,GACjB,IAAIrhC,EAAYQ,EAAK6R,aAAa,UAAY,GAC9C,OAAOrS,EAAUrP,MAAM,OAAO1rB,QAAO,SAAUjB,GAC3C,OAAsC,IAA/BA,EAAK9B,QAAQm/D,EAAS,QAGrC,IAAIoH,EAAiC,SAAUxoB,GAE3C,SAASwoB,IACL,OAAkB,OAAXxoB,GAAmBA,EAAO56C,MAAMqF,KAAMlF,YAAckF,KA+B/D,OAjCAm1C,EAAU4oB,EAAiBxoB,GAI3BwoB,EAAgB5jE,KAAO,SAAU27B,GAC7B,OAAQA,EAAK6R,aAAa,UAAY,IAAI1hB,MAAM,OAAO9f,KAAI,SAAU7M,GACjE,OAAOA,EACF2sB,MAAM,KACN5d,MAAM,GAAI,GACV9P,KAAK,SAGlBwlE,EAAgB71D,UAAUstB,IAAM,SAAUM,EAAMv6B,GAC5C,QAAKyE,KAAKwoD,OAAO1yB,EAAMv6B,KAEvByE,KAAKy1B,OAAOK,GACZA,EAAKP,UAAUC,IAAIx1B,KAAK02C,QAAU,IAAMn7C,IACjC,IAEXwiE,EAAgB71D,UAAUutB,OAAS,SAAUK,GACzC,IAAIkoC,EAAU7iC,EAAMrF,EAAM91B,KAAK02C,SAC/BsnB,EAAQhjE,SAAQ,SAAU1B,GACtBw8B,EAAKP,UAAUE,OAAOn8B,MAEI,IAA1Bw8B,EAAKP,UAAUr+B,QACf4+B,EAAK6S,gBAAgB,UAG7Bo1B,EAAgB71D,UAAU3M,MAAQ,SAAUu6B,GACxC,IAAInvB,EAASw0B,EAAMrF,EAAM91B,KAAK02C,SAAS,IAAM,GACzCn7C,EAAQoL,EAAO0B,MAAMrI,KAAK02C,QAAQx/C,OAAS,GAC/C,OAAO8I,KAAKwoD,OAAO1yB,EAAMv6B,GAASA,EAAQ,IAEvCwiE,EAlCyB,CAmClCnqB,EAAa/yC,SACfvK,EAAQuK,QAAUk9D,GAKZ,SAAUprB,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAIq4C,EAAed,EAAoB,IACvC,SAASmrB,EAAS3kE,GACd,IAAIb,EAAQa,EAAK2sB,MAAM,KACnB6yB,EAAOrgD,EACN4P,MAAM,GACNlC,KAAI,SAAU+3D,GACf,OAAOA,EAAK,GAAGvnB,cAAgBunB,EAAK71D,MAAM,MAEzC9P,KAAK,IACV,OAAOE,EAAM,GAAKqgD,EAEtB,IAAIqlB,EAAiC,SAAU5oB,GAE3C,SAAS4oB,IACL,OAAkB,OAAX5oB,GAAmBA,EAAO56C,MAAMqF,KAAMlF,YAAckF,KA2B/D,OA7BAm1C,EAAUgpB,EAAiB5oB,GAI3B4oB,EAAgBhkE,KAAO,SAAU27B,GAC7B,OAAQA,EAAK6R,aAAa,UAAY,IAAI1hB,MAAM,KAAK9f,KAAI,SAAU5K,GAC/D,IAAI1D,EAAM0D,EAAM0qB,MAAM,KACtB,OAAOpuB,EAAI,GAAG8f,WAGtBwmD,EAAgBj2D,UAAUstB,IAAM,SAAUM,EAAMv6B,GAC5C,QAAKyE,KAAKwoD,OAAO1yB,EAAMv6B,KAGvBu6B,EAAKnf,MAAMsnD,EAASj+D,KAAK02C,UAAYn7C,GAC9B,IAEX4iE,EAAgBj2D,UAAUutB,OAAS,SAAUK,GAEzCA,EAAKnf,MAAMsnD,EAASj+D,KAAK02C,UAAY,GAChC5gB,EAAK6R,aAAa,UACnB7R,EAAK6S,gBAAgB,UAG7Bw1B,EAAgBj2D,UAAU3M,MAAQ,SAAUu6B,GAExC,IAAIv6B,EAAQu6B,EAAKnf,MAAMsnD,EAASj+D,KAAK02C,UACrC,OAAO12C,KAAKwoD,OAAO1yB,EAAMv6B,GAASA,EAAQ,IAEvC4iE,EA9ByB,CA+BlCvqB,EAAa/yC,SACfvK,EAAQuK,QAAUs9D,GAKZ,SAAUxrB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEnB,SAASk4B,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,IAAIu2D,EAAQ,WACV,SAASA,EAAMhX,EAAOviC,GACpBo3B,EAAgBj8C,KAAMo+D,GAEtBp+D,KAAKonD,MAAQA,EACbpnD,KAAK6kB,QAAUA,EACf7kB,KAAK4yC,QAAU,GAuBjB,OApBA+H,EAAayjB,EAAO,CAAC,CACnBnjE,IAAK,OACLM,MAAO,WACL,IAAIsP,EAAQ7K,KAEZ5F,OAAOD,KAAK6F,KAAK6kB,QAAQ+tB,SAAS53C,SAAQ,SAAU1B,GACvB,MAAvBuR,EAAM+nC,QAAQt5C,IAChBuR,EAAM20C,UAAUlmD,QAIrB,CACD2B,IAAK,YACLM,MAAO,SAAmBjC,GACxB,IAAIurD,EAAc7kD,KAAKonD,MAAM9+C,YAAYm8C,OAAO,WAAanrD,GAE7D,OADA0G,KAAK4yC,QAAQt5C,GAAQ,IAAIurD,EAAY7kD,KAAKonD,MAAOpnD,KAAK6kB,QAAQ+tB,QAAQt5C,IAAS,IACxE0G,KAAK4yC,QAAQt5C,OAIjB8kE,EA7BG,GAgCZA,EAAM5Z,SAAW,CACf5R,QAAS,IAEXwrB,EAAMC,OAAS,CACb,QAAWD,GAGb9nE,EAAQuK,QAAUu9D,GAIZ,SAAUzrB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCM,EAAQjJ,EAAoB,GAE5BkJ,EAASV,EAAuBS,GAEpC,SAAST,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIgiB,EAAa,SAEb5pB,EAAQ,SAAU8H,GAGpB,SAAS9H,EAAM5e,GACbmmB,EAAgBj8C,KAAM00C,GAEtB,IAAI7pC,EAAQqxC,EAA2Bl8C,MAAO00C,EAAMlwB,WAAapqB,OAAO+gD,eAAezG,IAAQtsC,KAAKpI,KAAM81B,IAY1G,OAVAjrB,EAAM0zD,YAAc9mD,SAASie,cAAc,QAC3C7qB,EAAM0zD,YAAY5nC,aAAa,mBAAmB,GAClD,GAAGtuB,MAAMD,KAAKyC,EAAM4xC,QAAQsT,YAAY/0D,SAAQ,SAAUwjE,GACxD3zD,EAAM0zD,YAAY3nC,YAAY4nC,MAEhC3zD,EAAM4zD,UAAYhnD,SAASmjD,eAAe0D,GAC1CzzD,EAAM6zD,WAAajnD,SAASmjD,eAAe0D,GAC3CzzD,EAAM4xC,QAAQ7lB,YAAY/rB,EAAM4zD,WAChC5zD,EAAM4xC,QAAQ7lB,YAAY/rB,EAAM0zD,aAChC1zD,EAAM4xC,QAAQ7lB,YAAY/rB,EAAM6zD,YACzB7zD,EAiET,OAlFAuxC,EAAU1H,EAAO8H,GAoBjB7B,EAAajG,EAAO,CAAC,CACnBz5C,IAAK,QACLM,MAAO,SAAeu6B,EAAMsP,GAC1B,OAAItP,IAAS91B,KAAKy+D,UAAkB,EAChC3oC,IAAS91B,KAAK0+D,WAAmB,EAC9B3jB,EAAKrG,EAAMxsC,UAAUsc,WAAapqB,OAAO+gD,eAAezG,EAAMxsC,WAAY,QAASlI,MAAMoI,KAAKpI,KAAM81B,EAAMsP,KAElH,CACDnqC,IAAK,UACLM,MAAO,SAAiBu6B,GACtB,IAAImZ,OAAQ,EACRwe,OAAW,EACXtW,EAAOrhB,EAAKn8B,KAAKssB,MAAMq4C,GAAY/lE,KAAK,IAC5C,GAAIu9B,IAAS91B,KAAKy+D,UAChB,GAAIz+D,KAAK6pD,gBAAgB7N,EAAOn7C,QAAS,CACvC,IAAI89D,EAAa3+D,KAAK6pD,KAAK3yD,SAC3B8I,KAAK6pD,KAAK7M,SAAS2hB,EAAYxnB,GAC/BlI,EAAQ,CACN4e,UAAW7tD,KAAK6pD,KAAKpN,QACrBqR,YAAa6Q,EAAaxnB,EAAKjgD,aAGjCu2D,EAAWh2C,SAASmjD,eAAezjB,GACnCn3C,KAAKk7C,OAAO1X,aAAakY,EAAY76C,QAAQszC,OAAOsZ,GAAWztD,MAC/DivC,EAAQ,CACN4e,UAAWJ,EACXK,YAAa3W,EAAKjgD,aAGb4+B,IAAS91B,KAAK0+D,aACnB1+D,KAAKwlB,gBAAgBw2B,EAAOn7C,SAC9Bb,KAAKwlB,KAAKw3B,SAAS,EAAG7F,GACtBlI,EAAQ,CACN4e,UAAW7tD,KAAKwlB,KAAKi3B,QACrBqR,YAAa3W,EAAKjgD,UAGpBu2D,EAAWh2C,SAASmjD,eAAezjB,GACnCn3C,KAAKk7C,OAAO1X,aAAakY,EAAY76C,QAAQszC,OAAOsZ,GAAWztD,KAAKwlB,MACpEypB,EAAQ,CACN4e,UAAWJ,EACXK,YAAa3W,EAAKjgD,UAKxB,OADA4+B,EAAKn8B,KAAO2kE,EACLrvB,IAER,CACDh0C,IAAK,SACLM,MAAO,SAAgBykD,EAAW9yC,GAChC,IAAIjC,EAASjL,KAEbggD,EAAUhlD,SAAQ,SAAU42D,GAC1B,GAAsB,kBAAlBA,EAASvlD,OAA6BulD,EAAS/2D,SAAWoQ,EAAOwzD,WAAa7M,EAAS/2D,SAAWoQ,EAAOyzD,YAAa,CACxH,IAAIzvB,EAAQhkC,EAAOgjD,QAAQ2D,EAAS/2D,QAChCo0C,IAAO/hC,EAAQ+hC,MAAQA,WAM5ByF,EAnFG,CAoFVgH,EAAY76C,QAAQ6zC,OAEtBp+C,EAAQuK,QAAU6zC,GAIZ,SAAU/B,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQsoE,WAAatoE,EAAQuoE,WAAavoE,EAAQwoE,oBAAiB73D,EAEnE,IAAIw0C,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,IAAIs+B,EAAS,CACX/1B,MAAO63C,EAAY76C,QAAQqzC,MAAMgC,MACjCiJ,UAAW,CAAC,QAAS,SAAU,YAG7B2f,EAAiB,IAAIpjB,EAAY76C,QAAQk0C,WAAWC,UAAU,QAAS,QAASpb,GAChFilC,EAAa,IAAInjB,EAAY76C,QAAQk0C,WAAWpxB,MAAM,QAAS,WAAYiW,GAC3EglC,EAAa,IAAIljB,EAAY76C,QAAQk0C,WAAWE,MAAM,QAAS,aAAcrb,GAEjFtjC,EAAQwoE,eAAiBA,EACzBxoE,EAAQuoE,WAAaA,EACrBvoE,EAAQsoE,WAAaA,GAIf,SAAUjsB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQyoE,gBAAkBzoE,EAAQ0oE,qBAAkB/3D,EAEpD,IAAIw0C,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCwjB,EAASnsB,EAAoB,IAEjC,SAASwI,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,IAAI0jE,EAAkB,IAAItjB,EAAY76C,QAAQk0C,WAAWpxB,MAAM,aAAc,QAAS,CACpF9f,MAAO63C,EAAY76C,QAAQqzC,MAAMiC,SAE/B4oB,EAAkB,IAAIE,EAAO/D,gBAAgB,aAAc,mBAAoB,CACjFr3D,MAAO63C,EAAY76C,QAAQqzC,MAAMiC,SAGnC7/C,EAAQ0oE,gBAAkBA,EAC1B1oE,EAAQyoE,gBAAkBA,GAIpB,SAAUpsB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQ4oE,eAAiB5oE,EAAQ6oE,eAAiB7oE,EAAQ8oE,wBAAqBn4D,EAE/E,IAAIw0C,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,IAAIs+B,EAAS,CACX/1B,MAAO63C,EAAY76C,QAAQqzC,MAAMgC,MACjCiJ,UAAW,CAAC,QAGVigB,EAAqB,IAAI1jB,EAAY76C,QAAQk0C,WAAWC,UAAU,YAAa,MAAOpb,GACtFulC,EAAiB,IAAIzjB,EAAY76C,QAAQk0C,WAAWpxB,MAAM,YAAa,eAAgBiW,GACvFslC,EAAiB,IAAIxjB,EAAY76C,QAAQk0C,WAAWE,MAAM,YAAa,YAAarb,GAExFtjC,EAAQ8oE,mBAAqBA,EAC7B9oE,EAAQ6oE,eAAiBA,EACzB7oE,EAAQ4oE,eAAiBA,GAInB,SAAUvsB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQ+oE,UAAY/oE,EAAQgpE,eAAYr4D,EAExC,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI1iB,EAAS,CACX/1B,MAAO63C,EAAY76C,QAAQqzC,MAAMiC,OACjCgJ,UAAW,CAAC,QAAS,cAGnBkgB,EAAY,IAAI3jB,EAAY76C,QAAQk0C,WAAWpxB,MAAM,OAAQ,UAAWiW,GAExE2lC,EAAsB,SAAUpE,GAGlC,SAASoE,IAGP,OAFAtjB,EAAgBj8C,KAAMu/D,GAEfrjB,EAA2Bl8C,MAAOu/D,EAAoB/6C,WAAapqB,OAAO+gD,eAAeokB,IAAsB5kE,MAAMqF,KAAMlF,YAUpI,OAfAshD,EAAUmjB,EAAqBpE,GAQ/BxgB,EAAa4kB,EAAqB,CAAC,CACjCtkE,IAAK,QACLM,MAAO,SAAeu6B,GACpB,OAAOilB,EAAKwkB,EAAoBr3D,UAAUsc,WAAapqB,OAAO+gD,eAAeokB,EAAoBr3D,WAAY,QAASlI,MAAMoI,KAAKpI,KAAM81B,GAAMnqB,QAAQ,QAAS,QAI3J4zD,EAhBiB,CAiBxB7jB,EAAY76C,QAAQk0C,WAAWE,OAE7BqqB,EAAY,IAAIC,EAAoB,OAAQ,cAAe3lC,GAE/DtjC,EAAQgpE,UAAYA,EACpBhpE,EAAQ+oE,UAAYA,GAId,SAAU1sB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQkpE,UAAYlpE,EAAQmpE,eAAYx4D,EAExC,IAAIw0C,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,IAAImkE,EAAY,IAAI/jB,EAAY76C,QAAQk0C,WAAWpxB,MAAM,OAAQ,UAAW,CAC1E9f,MAAO63C,EAAY76C,QAAQqzC,MAAMiC,OACjCgJ,UAAW,CAAC,QAAS,QAAS,UAE5BqgB,EAAY,IAAI9jB,EAAY76C,QAAQk0C,WAAWE,MAAM,OAAQ,YAAa,CAC5EpxC,MAAO63C,EAAY76C,QAAQqzC,MAAMiC,OACjCgJ,UAAW,CAAC,OAAQ,OAAQ,UAG9B7oD,EAAQmpE,UAAYA,EACpBnpE,EAAQkpE,UAAYA,GAId,SAAU7sB,EAAQr8C,EAASw8C,GAEjC,aAGAH,EAAOr8C,QAAU,CACf,MAAS,CACP,GAAIw8C,EAAoB,IACxB,OAAUA,EAAoB,IAC9B,MAASA,EAAoB,IAC7B,QAAWA,EAAoB,KAEjC,WAAcA,EAAoB,IAClC,WAAcA,EAAoB,IAClC,KAAQA,EAAoB,IAC5B,MAASA,EAAoB,IAC7B,KAAQA,EAAoB,IAC5B,aAAcA,EAAoB,IAClC,MAASA,EAAoB,IAC7B,UAAa,CACX,GAAIA,EAAoB,IACxB,IAAOA,EAAoB,KAE7B,MAAS,CACP,OAAUA,EAAoB,IAC9B,KAAQA,EAAoB,IAC5B,KAAQA,EAAoB,IAC5B,MAASA,EAAoB,KAE/B,QAAWA,EAAoB,IAC/B,OAAU,CACR,EAAKA,EAAoB,IACzB,EAAKA,EAAoB,KAE3B,OAAUA,EAAoB,IAC9B,MAASA,EAAoB,IAC7B,OAAU,CACR,KAAMA,EAAoB,IAC1B,KAAMA,EAAoB,KAE5B,KAAQA,EAAoB,IAC5B,KAAQ,CACN,QAAWA,EAAoB,IAC/B,OAAUA,EAAoB,KAC9B,MAASA,EAAoB,MAE/B,OAAU,CACR,IAAOA,EAAoB,KAC3B,MAASA,EAAoB,MAE/B,OAAUA,EAAoB,KAC9B,UAAaA,EAAoB,KACjC,MAASA,EAAoB,OAKzB,SAAUH,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQopE,mBAAqBppE,EAAQuK,aAAUoG,EAE/C,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEf03B,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCqa,EAAShjB,EAAoB,GAE7BijB,EAAUza,EAAuBwa,GAEjC1X,EAAUtL,EAAoB,GAE9BuL,EAAW/C,EAAuB8C,GAEtC,SAAS9C,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIqjB,EAAU,SAAUzJ,GAGtB,SAASyJ,EAAQvY,EAAOviC,GACtBo3B,EAAgBj8C,KAAM2/D,GAEtB,IAAI90D,EAAQqxC,EAA2Bl8C,MAAO2/D,EAAQn7C,WAAapqB,OAAO+gD,eAAewkB,IAAUv3D,KAAKpI,KAAMonD,EAAOviC,IAkBrH,OAhBAha,EAAM+0D,aAAe,EACrB/0D,EAAMg1D,cAAe,EACrBh1D,EAAMq9B,QACNr9B,EAAMu8C,MAAMjlD,GAAG4zD,EAAQl1D,QAAQ8+C,OAAOC,eAAe,SAAU6G,EAAWnmB,EAAO2kB,EAAUlqD,GACrF0rD,IAAcsP,EAAQl1D,QAAQ8+C,OAAOE,aAAeh1C,EAAMg1D,eACzDh1D,EAAMga,QAAQi7C,UAAY/kE,IAAWg7D,EAAQl1D,QAAQwgD,QAAQiD,KAGhEz5C,EAAM6uC,UAAUpZ,GAFhBz1B,EAAMk1D,OAAOz/B,EAAO2kB,OAKxBp6C,EAAMu8C,MAAM7H,SAAS6W,WAAW,CAAEn7D,IAAK,IAAK4+D,UAAU,GAAQhvD,EAAMm1D,KAAKtkE,KAAKmP,IAC9EA,EAAMu8C,MAAM7H,SAAS6W,WAAW,CAAEn7D,IAAK,IAAK4+D,UAAU,EAAMzoD,UAAU,GAAQvG,EAAMo1D,KAAKvkE,KAAKmP,IAC1F,OAAOrC,KAAKynB,UAAU+lC,WACxBnrD,EAAMu8C,MAAM7H,SAAS6W,WAAW,CAAEn7D,IAAK,IAAK4+D,UAAU,GAAQhvD,EAAMo1D,KAAKvkE,KAAKmP,IAEzEA,EAwET,OA/FAuxC,EAAUujB,EAASzJ,GA0BnBvb,EAAaglB,EAAS,CAAC,CACrB1kE,IAAK,SACLM,MAAO,SAAgBR,EAAQmlE,GAC7B,GAAkC,IAA9BlgE,KAAKmgE,MAAMplE,GAAQ7D,OAAvB,CACA,IAAIopC,EAAQtgC,KAAKmgE,MAAMplE,GAAQ08C,MAC/Bz3C,KAAKmgE,MAAMD,GAAM5nE,KAAKgoC,GACtBtgC,KAAK4/D,aAAe,EACpB5/D,KAAK6/D,cAAe,EACpB7/D,KAAKonD,MAAM8S,eAAe55B,EAAMvlC,GAASg7D,EAAQl1D,QAAQwgD,QAAQiD,MACjEtkD,KAAK6/D,cAAe,EACpB,IAAIpvD,EAAQivD,EAAmBp/B,EAAMvlC,IACrCiF,KAAKonD,MAAM1F,aAAajxC,MAEzB,CACDxV,IAAK,QACLM,MAAO,WACLyE,KAAKmgE,MAAQ,CAAEH,KAAM,GAAIC,KAAM,MAEhC,CACDhlE,IAAK,SACLM,MAAO,WACLyE,KAAK4/D,aAAe,IAErB,CACD3kE,IAAK,SACLM,MAAO,SAAgB6kE,EAAanb,GAClC,GAA+B,IAA3Bmb,EAAYvlC,IAAI3jC,OAApB,CACA8I,KAAKmgE,MAAMF,KAAO,GAClB,IAAII,EAAYrgE,KAAKonD,MAAM5E,cAAc3L,KAAKoO,GAC1Cta,EAAYtmB,KAAKqJ,MACrB,GAAI1tB,KAAK4/D,aAAe5/D,KAAK6kB,QAAQy7C,MAAQ31B,GAAa3qC,KAAKmgE,MAAMH,KAAK9oE,OAAS,EAAG,CACpF,IAAIopC,EAAQtgC,KAAKmgE,MAAMH,KAAKvoB,MAC5B4oB,EAAYA,EAAUloB,QAAQ7X,EAAM0/B,MACpCI,EAAc9/B,EAAM2/B,KAAK9nB,QAAQioB,QAEjCpgE,KAAK4/D,aAAej1B,EAEtB3qC,KAAKmgE,MAAMH,KAAK1nE,KAAK,CACnB2nE,KAAMG,EACNJ,KAAMK,IAEJrgE,KAAKmgE,MAAMH,KAAK9oE,OAAS8I,KAAK6kB,QAAQ07C,UACxCvgE,KAAKmgE,MAAMH,KAAK7jD,WAGnB,CACDlhB,IAAK,OACLM,MAAO,WACLyE,KAAK0rB,OAAO,OAAQ,UAErB,CACDzwB,IAAK,YACLM,MAAO,SAAmB+kC,GACxBtgC,KAAKmgE,MAAMH,KAAKhlE,SAAQ,SAAU0wB,GAChCA,EAAOs0C,KAAO1/B,EAAMoZ,UAAUhuB,EAAOs0C,MAAM,GAC3Ct0C,EAAOu0C,KAAO3/B,EAAMoZ,UAAUhuB,EAAOu0C,MAAM,MAE7CjgE,KAAKmgE,MAAMF,KAAKjlE,SAAQ,SAAU0wB,GAChCA,EAAOs0C,KAAO1/B,EAAMoZ,UAAUhuB,EAAOs0C,MAAM,GAC3Ct0C,EAAOu0C,KAAO3/B,EAAMoZ,UAAUhuB,EAAOu0C,MAAM,QAG9C,CACDhlE,IAAK,OACLM,MAAO,WACLyE,KAAK0rB,OAAO,OAAQ,YAIjBi0C,EAhGK,CAiGZthB,EAASx9C,SAQX,SAAS2/D,EAAsBlgC,GAC7B,IAAIgX,EAAShX,EAAMzF,IAAIyF,EAAMzF,IAAI3jC,OAAS,GAC1C,OAAc,MAAVogD,IACiB,MAAjBA,EAAOJ,OACuB,kBAAlBI,EAAOJ,QAAuBI,EAAOJ,OAAO4F,SAAS,MAE5C,MAArBxF,EAAO9B,YACFp7C,OAAOD,KAAKm9C,EAAO9B,YAAYzlC,MAAK,SAAU+tD,GACnD,OAA2E,MAApEpiB,EAAY76C,QAAQwzC,MAAMypB,EAAMpiB,EAAY76C,QAAQqzC,MAAMgC,WAMvE,SAASwpB,EAAmBp/B,GAC1B,IAAImgC,EAAengC,EAAM55B,QAAO,SAAUxP,EAAQ4/C,GAEhD,OADA5/C,GAAU4/C,EAAGkB,QAAU,EAChB9gD,IACN,GACCwpE,EAAcpgC,EAAMppC,SAAWupE,EAInC,OAHID,EAAsBlgC,KACxBogC,GAAe,GAEVA,EA7BTf,EAAQnb,SAAW,CACjB8b,MAAO,IACPC,SAAU,IACVT,UAAU,GA6BZxpE,EAAQuK,QAAU8+D,EAClBrpE,EAAQopE,mBAAqBA,GAIvB,SAAU/sB,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQqqE,iBAAc15D,EAExC,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZI,EAAUtI,EAAoB,GAE9BuI,EAAWC,EAAuBF,GAElCG,EAAczI,EAAoB,GAElC0I,EAAeF,EAAuBC,GAEtC4J,EAAWrS,EAAoB,GAE/BsS,EAAY9J,EAAuB6J,GAEnC2W,EAAYhpB,EAAoB,IAEhCipB,EAAazgB,EAAuBwgB,GAEpCpd,EAAS5L,EAAoB,IAE7B6L,EAAUrD,EAAuBoD,GAEjCkiB,EAAe9tB,EAAoB,IAEnC+tB,EAAgBvlB,EAAuBslB,GAEvCE,EAAchuB,EAAoB,IAElCiuB,EAAezlB,EAAuBwlB,GAEtCE,EAAUluB,EAAoB,IAE9BmuB,EAAW3lB,EAAuB0lB,GAElCE,EAAWpuB,EAAoB,IAE/BquB,EAAY7lB,EAAuB4lB,GAEvC,SAAS5lB,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI8kB,EAAS,EAAC,EAAO,SAAU,QAAS,WAEpCC,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAEhYC,EAAQ,EAAC,EAAO,QAAS,aAEzBC,EAAU,CAAC,IAAK,IAAK,KAAK,GAE1BC,EAAQ,CAAC,SAAS,EAAO,QAAS,QAElCC,EAAY,SAAUC,GAGxB,SAASD,EAAUra,EAAOviC,GACxBo3B,EAAgBj8C,KAAMyhE,GAEtB,IAAI52D,EAAQqxC,EAA2Bl8C,MAAOyhE,EAAUj9C,WAAapqB,OAAO+gD,eAAesmB,IAAYr5D,KAAKpI,KAAMonD,EAAOviC,IAErH3E,EAAW,SAASA,EAASnR,GAC/B,IAAK0I,SAAS0pB,KAAKqB,SAAS4kB,EAAM3U,MAChC,OAAOh7B,SAAS0pB,KAAKR,oBAAoB,QAASzgB,GAE/B,MAAjBrV,EAAM82D,SAAoB92D,EAAM82D,QAAQlvB,KAAKjQ,SAASzzB,EAAElU,SAAW4c,SAAS2S,gBAAkBvf,EAAM82D,QAAQC,SAAY/2D,EAAMu8C,MAAM/lC,YACtIxW,EAAM82D,QAAQr0C,OAEK,MAAjBziB,EAAMg3D,SACRh3D,EAAMg3D,QAAQ7mE,SAAQ,SAAU8mE,GACzBA,EAAOv7B,UAAU/D,SAASzzB,EAAElU,SAC/BinE,EAAOv5B,YAMf,OADA6e,EAAMnI,QAAQqO,UAAU,QAAS71C,SAAS0pB,KAAMjhB,GACzCrV,EAyET,OAhGAuxC,EAAUqlB,EAAWC,GA0BrB/mB,EAAa8mB,EAAW,CAAC,CACvBxmE,IAAK,YACLM,MAAO,SAAmBjC,GACxB,IAAIq5C,EAASoI,EAAK0mB,EAAUv5D,UAAUsc,WAAapqB,OAAO+gD,eAAesmB,EAAUv5D,WAAY,YAAalI,MAAMoI,KAAKpI,KAAM1G,GAI7H,MAHa,YAATA,GACF0G,KAAK+hE,cAAcpvB,GAEdA,IAER,CACD13C,IAAK,eACLM,MAAO,SAAsBymE,EAASC,GACpCD,EAAQhnE,SAAQ,SAAUknE,GACxB,IAAI5sC,EAAY4sC,EAAOv6B,aAAa,UAAY,GAChDrS,EAAUrP,MAAM,OAAOjrB,SAAQ,SAAU1B,GACvC,GAAKA,EAAKsnD,WAAW,SACrBtnD,EAAOA,EAAK+O,MAAM,MAAMnR,QACL,MAAf+qE,EAAM3oE,IACV,GAAa,cAATA,EACF4oE,EAAO77B,UAAY47B,EAAM3oE,GAAM,IAAM2oE,EAAM3oE,GAAM,YAC5C,GAA2B,kBAAhB2oE,EAAM3oE,GACtB4oE,EAAO77B,UAAY47B,EAAM3oE,OACpB,CACL,IAAIiC,EAAQ2mE,EAAO3mE,OAAS,GACf,MAATA,GAAiB0mE,EAAM3oE,GAAMiC,KAC/B2mE,EAAO77B,UAAY47B,EAAM3oE,GAAMiC,aAMxC,CACDN,IAAK,eACLM,MAAO,SAAsB4mE,EAASF,GACpC,IAAIh3D,EAASjL,KAEbA,KAAK6hE,QAAUM,EAAQh8D,KAAI,SAAU07B,GACnC,GAAIA,EAAOtM,UAAUiN,SAAS,YAI5B,OAHsC,MAAlCX,EAAO0K,cAAc,WACvB61B,EAAWvgC,EAAQu/B,GAEd,IAAIL,EAAalgE,QAAQghC,EAAQogC,EAAM3jE,OACzC,GAAIujC,EAAOtM,UAAUiN,SAAS,kBAAoBX,EAAOtM,UAAUiN,SAAS,YAAa,CAC9F,IAAIvd,EAAS4c,EAAOtM,UAAUiN,SAAS,iBAAmB,aAAe,QAIzE,OAHsC,MAAlCX,EAAO0K,cAAc,WACvB61B,EAAWvgC,EAAQw/B,EAAmB,eAAXp8C,EAA0B,UAAY,WAE5D,IAAI47C,EAAchgE,QAAQghC,EAAQogC,EAAMh9C,IAW/C,OATsC,MAAlC4c,EAAO0K,cAAc,YACnB1K,EAAOtM,UAAUiN,SAAS,WAC5B4/B,EAAWvgC,EAAQy/B,GACVz/B,EAAOtM,UAAUiN,SAAS,aACnC4/B,EAAWvgC,EAAQ0/B,GACV1/B,EAAOtM,UAAUiN,SAAS,YACnC4/B,EAAWvgC,EAAQ2/B,IAGhB,IAAIP,EAASpgE,QAAQghC,MAGhC,IAAIse,EAAS,WACXl1C,EAAO42D,QAAQ7mE,SAAQ,SAAU8mE,GAC/BA,EAAO3hB,aAGXngD,KAAKonD,MAAMjlD,GAAGijD,EAAUvkD,QAAQ8+C,OAAOC,cAAeO,OAInDshB,EAjGO,CAkGd9iB,EAAQ99C,SAEV4gE,EAAUjd,UAAW,EAAInJ,EAASx6C,UAAS,EAAM,GAAI89C,EAAQ99C,QAAQ2jD,SAAU,CAC7E5R,QAAS,CACPkS,QAAS,CACPhoC,SAAU,CACRulD,QAAS,WACPriE,KAAKonD,MAAM9H,MAAMqiB,QAAQW,KAAK,YAEhC1V,MAAO,WACL,IAAIphD,EAASxL,KAETuiE,EAAYviE,KAAKumC,UAAUgG,cAAc,6BAC5B,MAAbg2B,IACFA,EAAY9qD,SAASie,cAAc,SACnC6sC,EAAU5rC,aAAa,OAAQ,QAC/B4rC,EAAU5rC,aAAa,SAAU,6DACjC4rC,EAAUhtC,UAAUC,IAAI,YACxB+sC,EAAU9hC,iBAAiB,UAAU,WACnC,GAAuB,MAAnB8hC,EAAUC,OAAuC,MAAtBD,EAAUC,MAAM,GAAY,CACzD,IAAIC,EAAS,IAAIC,WACjBD,EAAOE,OAAS,SAAU5zD,GACxB,IAAIkgC,EAAQzjC,EAAO47C,MAAM7F,cAAa,GACtC/1C,EAAO47C,MAAM8S,gBAAe,IAAI1e,EAAa36C,SAAUw2C,OAAOpI,EAAMx+B,OAAOunC,OAAO/I,EAAM/3C,QAAQggD,OAAO,CAAE0V,MAAO79C,EAAElU,OAAO8L,SAAWy+C,EAAUvkD,QAAQwgD,QAAQiD,MAC9J94C,EAAO47C,MAAM1F,aAAazS,EAAMx+B,MAAQ,EAAG20C,EAAUvkD,QAAQwgD,QAAQM,QACrE4gB,EAAUhnE,MAAQ,IAEpBknE,EAAOG,cAAcL,EAAUC,MAAM,QAGzCxiE,KAAKumC,UAAU3P,YAAY2rC,IAE7BA,EAAUrlD,SAEZ2lD,MAAO,WACL7iE,KAAKonD,MAAM9H,MAAMqiB,QAAQW,KAAK,eAOxC,IAAI3B,EAAc,SAAUmC,GAG1B,SAASnC,EAAYvZ,EAAO2b,GAC1B9mB,EAAgBj8C,KAAM2gE,GAEtB,IAAI51C,EAASmxB,EAA2Bl8C,MAAO2gE,EAAYn8C,WAAapqB,OAAO+gD,eAAewlB,IAAcv4D,KAAKpI,KAAMonD,EAAO2b,IAI9H,OAFAh4C,EAAO62C,QAAU72C,EAAO0nB,KAAKlG,cAAc,sBAC3CxhB,EAAO8rC,SACA9rC,EA2FT,OApGAqxB,EAAUukB,EAAamC,GAYvBnoB,EAAagmB,EAAa,CAAC,CACzB1lE,IAAK,SACLM,MAAO,WACL,IAAIqmD,EAAS5hD,KAEbA,KAAK4hE,QAAQnhC,iBAAiB,WAAW,SAAUj8B,GAC7Cu3D,EAAWl7D,QAAQs6B,MAAM32B,EAAO,UAClCo9C,EAAOohB,OACPx+D,EAAM4e,kBACG24C,EAAWl7D,QAAQs6B,MAAM32B,EAAO,YACzCo9C,EAAOqhB,SACPz+D,EAAM4e,uBAIX,CACDnoB,IAAK,SACLM,MAAO,WACLyE,KAAKstB,SAEN,CACDryB,IAAK,OACLM,MAAO,WACL,IAAI02B,EAAOn3B,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,OAC3EooE,EAAUpoE,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,KAElFkF,KAAKyyC,KAAKld,UAAUE,OAAO,aAC3Bz1B,KAAKyyC,KAAKld,UAAUC,IAAI,cACT,MAAX0tC,EACFljE,KAAK4hE,QAAQrmE,MAAQ2nE,EACZjxC,IAASjyB,KAAKyyC,KAAK9K,aAAa,eACzC3nC,KAAK4hE,QAAQrmE,MAAQ,IAEvByE,KAAKkzB,SAASlzB,KAAKonD,MAAMjF,UAAUniD,KAAKonD,MAAM/H,UAAU8N,aACxDntD,KAAK4hE,QAAQ//B,SACb7hC,KAAK4hE,QAAQjrC,aAAa,cAAe32B,KAAK4hE,QAAQj6B,aAAa,QAAU1V,IAAS,IACtFjyB,KAAKyyC,KAAK9b,aAAa,YAAa1E,KAErC,CACDh3B,IAAK,eACLM,MAAO,WACL,IAAI4lD,EAAYnhD,KAAKonD,MAAMpI,mBAAmBmC,UAC9CnhD,KAAKonD,MAAMzlC,QACX3hB,KAAKonD,MAAMpI,mBAAmBmC,UAAYA,IAE3C,CACDlmD,IAAK,OACLM,MAAO,WACL,IAAIA,EAAQyE,KAAK4hE,QAAQrmE,MACzB,OAAQyE,KAAKyyC,KAAK9K,aAAa,cAC7B,IAAK,OAED,IAAIwZ,EAAYnhD,KAAKonD,MAAM3U,KAAK0O,UAC5BnhD,KAAKmjE,WACPnjE,KAAKonD,MAAM3F,WAAWzhD,KAAKmjE,UAAW,OAAQ5nE,EAAO6pD,EAAUvkD,QAAQwgD,QAAQiD,aACxEtkD,KAAKmjE,YAEZnjE,KAAKojE,eACLpjE,KAAKonD,MAAMniC,OAAO,OAAQ1pB,EAAO6pD,EAAUvkD,QAAQwgD,QAAQiD,OAE7DtkD,KAAKonD,MAAM3U,KAAK0O,UAAYA,EAC5B,MAEJ,IAAK,QAED5lD,EAAQ8nE,EAAgB9nE,GAE5B,IAAK,UAED,IAAKA,EAAO,MACZ,IAAI0zC,EAAQjvC,KAAKonD,MAAM7F,cAAa,GACpC,GAAa,MAATtS,EAAe,CACjB,IAAIx+B,EAAQw+B,EAAMx+B,MAAQw+B,EAAM/3C,OAChC8I,KAAKonD,MAAMlE,YAAYzyC,EAAOzQ,KAAKyyC,KAAK9K,aAAa,aAAcpsC,EAAO6pD,EAAUvkD,QAAQwgD,QAAQiD,MACxD,YAAxCtkD,KAAKyyC,KAAK9K,aAAa,cACzB3nC,KAAKonD,MAAM9D,WAAW7yC,EAAQ,EAAG,IAAK20C,EAAUvkD,QAAQwgD,QAAQiD,MAElEtkD,KAAKonD,MAAM1F,aAAajxC,EAAQ,EAAG20C,EAAUvkD,QAAQwgD,QAAQiD,MAE/D,MAEJ,SAEFtkD,KAAK4hE,QAAQrmE,MAAQ,GACrByE,KAAKstB,WAIFqzC,EArGS,CAsGhBQ,EAAUtgE,SAEZ,SAASwiE,EAAgB/H,GACvB,IAAIngC,EAAQmgC,EAAIngC,MAAM,+EAAiFmgC,EAAIngC,MAAM,kEACjH,OAAIA,GACMA,EAAM,IAAM,SAAW,4BAA8BA,EAAM,GAAK,eAEtEA,EAAQmgC,EAAIngC,MAAM,oDAEZA,EAAM,IAAM,SAAW,6BAA+BA,EAAM,GAAK,IAEpEmgC,EAGT,SAAS8G,EAAWvgC,EAAQ6a,GAC1B,IAAIpwC,EAAexR,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,IAAmBA,UAAU,GAElF4hD,EAAO1hD,SAAQ,SAAUO,GACvB,IAAIi0C,EAAS/3B,SAASie,cAAc,UAChCn6B,IAAU+Q,EACZkjC,EAAO7Y,aAAa,WAAY,YAEhC6Y,EAAO7Y,aAAa,QAASp7B,GAE/BsmC,EAAOjL,YAAY4Y,MAIvBl5C,EAAQqqE,YAAcA,EACtBrqE,EAAQuK,QAAU4gE,GAIZ,SAAU9uB,EAAQr8C,EAASw8C,GAEjC,aAEA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAI+nE,EAA4B,WAC5B,SAASA,IACLtjE,KAAK2uC,KAAO3uC,KAAKs9C,KAAO,KACxBt9C,KAAK9I,OAAS,EA8HlB,OA5HAosE,EAAWp7D,UAAUq7D,OAAS,WAE1B,IADA,IAAI3yB,EAAQ,GACHrrB,EAAK,EAAGA,EAAKzqB,UAAU5D,OAAQquB,IACpCqrB,EAAMrrB,GAAMzqB,UAAUyqB,GAE1BvlB,KAAKwjC,aAAaoN,EAAM,GAAI,MACxBA,EAAM15C,OAAS,GACf8I,KAAKujE,OAAO5oE,MAAMqF,KAAM4wC,EAAMvoC,MAAM,KAG5Ci7D,EAAWp7D,UAAUs6B,SAAW,SAAU1M,GACtC,IAAI0tC,EAAKh+C,EAAOxlB,KAAK2I,WACrB,MAAQ66D,EAAMh+C,IACV,GAAIg+C,IAAQ1tC,EACR,OAAO,EAEf,OAAO,GAEXwtC,EAAWp7D,UAAUs7B,aAAe,SAAU1N,EAAM+qB,GAC3C/qB,IAELA,EAAKtQ,KAAOq7B,EACG,MAAXA,GACA/qB,EAAK+zB,KAAOhJ,EAAQgJ,KACA,MAAhBhJ,EAAQgJ,OACRhJ,EAAQgJ,KAAKrkC,KAAOsQ,GAExB+qB,EAAQgJ,KAAO/zB,EACX+qB,IAAY7gD,KAAK2uC,OACjB3uC,KAAK2uC,KAAO7Y,IAGE,MAAb91B,KAAKs9C,MACVt9C,KAAKs9C,KAAK93B,KAAOsQ,EACjBA,EAAK+zB,KAAO7pD,KAAKs9C,KACjBt9C,KAAKs9C,KAAOxnB,IAGZA,EAAK+zB,KAAO,KACZ7pD,KAAK2uC,KAAO3uC,KAAKs9C,KAAOxnB,GAE5B91B,KAAK9I,QAAU,IAEnBosE,EAAWp7D,UAAUk9B,OAAS,SAAUvqC,GACpC,IAAI4V,EAAQ,EAAG+yD,EAAMxjE,KAAK2uC,KAC1B,MAAc,MAAP60B,EAAa,CAChB,GAAIA,IAAQ3oE,EACR,OAAO4V,EACXA,GAAS+yD,EAAItsE,SACbssE,EAAMA,EAAIh+C,KAEd,OAAQ,GAEZ89C,EAAWp7D,UAAUutB,OAAS,SAAUK,GAC/B91B,KAAKwiC,SAAS1M,KAEF,MAAbA,EAAK+zB,OACL/zB,EAAK+zB,KAAKrkC,KAAOsQ,EAAKtQ,MACT,MAAbsQ,EAAKtQ,OACLsQ,EAAKtQ,KAAKqkC,KAAO/zB,EAAK+zB,MACtB/zB,IAAS91B,KAAK2uC,OACd3uC,KAAK2uC,KAAO7Y,EAAKtQ,MACjBsQ,IAAS91B,KAAKs9C,OACdt9C,KAAKs9C,KAAOxnB,EAAK+zB,MACrB7pD,KAAK9I,QAAU,IAEnBosE,EAAWp7D,UAAUS,SAAW,SAAU86D,GAGtC,YAFgB,IAAZA,IAAsBA,EAAUzjE,KAAK2uC,MAElC,WACH,IAAIuV,EAAMuf,EAGV,OAFe,MAAXA,IACAA,EAAUA,EAAQj+C,MACf0+B,IAGfof,EAAWp7D,UAAUksC,KAAO,SAAU3jC,EAAOghD,QACvB,IAAdA,IAAwBA,GAAY,GACxC,IAAI+R,EAAKh+C,EAAOxlB,KAAK2I,WACrB,MAAQ66D,EAAMh+C,IAAS,CACnB,IAAItuB,EAASssE,EAAItsE,SACjB,GAAIuZ,EAAQvZ,GACPu6D,GAAahhD,IAAUvZ,IAAuB,MAAZssE,EAAIh+C,MAAsC,IAAtBg+C,EAAIh+C,KAAKtuB,UAChE,MAAO,CAACssE,EAAK/yD,GAEjBA,GAASvZ,EAEb,MAAO,CAAC,KAAM,IAElBosE,EAAWp7D,UAAUlN,QAAU,SAAU0oE,GACrC,IAAIF,EAAKh+C,EAAOxlB,KAAK2I,WACrB,MAAQ66D,EAAMh+C,IACVk+C,EAASF,IAGjBF,EAAWp7D,UAAUgpD,UAAY,SAAUzgD,EAAOvZ,EAAQwsE,GACtD,KAAIxsE,GAAU,GAAd,CAEA,IACIssE,EADAn6B,EAAKrpC,KAAKo0C,KAAK3jC,GAAQo9C,EAAYxkB,EAAG,GAAIjE,EAASiE,EAAG,GACjDs6B,EAAWlzD,EAAQ20B,EAAQ5f,EAAOxlB,KAAK2I,SAASklD,GACzD,OAAQ2V,EAAMh+C,MAAWm+C,EAAWlzD,EAAQvZ,EAAQ,CAChD,IAAI0sE,EAAYJ,EAAItsE,SAChBuZ,EAAQkzD,EACRD,EAASF,EAAK/yD,EAAQkzD,EAAUhyC,KAAKlG,IAAIv0B,EAAQysE,EAAWC,EAAYnzD,IAGxEizD,EAASF,EAAK,EAAG7xC,KAAKlG,IAAIm4C,EAAWnzD,EAAQvZ,EAASysE,IAE1DA,GAAYC,KAGpBN,EAAWp7D,UAAU/B,IAAM,SAAUu9D,GACjC,OAAO1jE,KAAK0G,QAAO,SAAUyF,EAAMq3D,GAE/B,OADAr3D,EAAK7T,KAAKorE,EAASF,IACZr3D,IACR,KAEPm3D,EAAWp7D,UAAUxB,OAAS,SAAUg9D,EAAUv3D,GAC9C,IAAIq3D,EAAKh+C,EAAOxlB,KAAK2I,WACrB,MAAQ66D,EAAMh+C,IACVrZ,EAAOu3D,EAASv3D,EAAMq3D,GAE1B,OAAOr3D,GAEJm3D,EAjIoB,GAmI/BhtE,EAAQuK,QAAUyiE,GAKZ,SAAU3wB,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAI63C,EAAcN,EAAoB,IAClCkB,EAAWlB,EAAoB,GAC/B+wB,EAAkB,CAClBruB,YAAY,EACZsuB,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,SAAS,GAETC,EAA0B,IAC1BC,EAA4B,SAAU5uB,GAEtC,SAAS4uB,EAAWruC,GAChB,IAAIjrB,EAAQ0qC,EAAOntC,KAAKpI,KAAM81B,IAAS91B,KAOvC,OANA6K,EAAMq0C,OAASr0C,EACfA,EAAM8qD,SAAW,IAAIyO,kBAAiB,SAAUpkB,GAC5Cn1C,EAAMs1C,OAAOH,MAEjBn1C,EAAM8qD,SAAS0O,QAAQx5D,EAAM4xC,QAASonB,GACtCh5D,EAAMyjD,SACCzjD,EA8IX,OAvJAsqC,EAAUgvB,EAAY5uB,GAWtB4uB,EAAWj8D,UAAUkpD,OAAS,WAC1B7b,EAAOrtC,UAAUkpD,OAAOhpD,KAAKpI,MAC7BA,KAAK21D,SAAS2O,cAElBH,EAAWj8D,UAAUghD,SAAW,SAAUz4C,EAAOvZ,GAC7C8I,KAAKmgD,SACS,IAAV1vC,GAAevZ,IAAW8I,KAAK9I,SAC/B8I,KAAKpG,SAASoB,SAAQ,SAAU4xC,GAC5BA,EAAMnX,YAIV8f,EAAOrtC,UAAUghD,SAAS9gD,KAAKpI,KAAMyQ,EAAOvZ,IAGpDitE,EAAWj8D,UAAUqhD,SAAW,SAAU94C,EAAOvZ,EAAQoC,EAAMiC,GAC3DyE,KAAKmgD,SACL5K,EAAOrtC,UAAUqhD,SAASnhD,KAAKpI,KAAMyQ,EAAOvZ,EAAQoC,EAAMiC,IAE9D4oE,EAAWj8D,UAAU80C,SAAW,SAAUvsC,EAAOlV,EAAOshD,GACpD78C,KAAKmgD,SACL5K,EAAOrtC,UAAU80C,SAAS50C,KAAKpI,KAAMyQ,EAAOlV,EAAOshD,IAEvDsnB,EAAWj8D,UAAU4hD,SAAW,SAAU9J,EAAW9yC,GACjD,IAAIrC,EAAQ7K,UACM,IAAdggD,IAAwBA,EAAY,SACxB,IAAZ9yC,IAAsBA,EAAU,IACpCqoC,EAAOrtC,UAAU4hD,SAAS1hD,KAAKpI,KAAMkN,GAErC,IAAIq3D,EAAU,GAAGl8D,MAAMD,KAAKpI,KAAK21D,SAASC,eAG1C,MAAO2O,EAAQrtE,OAAS,EACpB8oD,EAAU1nD,KAAKisE,EAAQ9sB,OA+B3B,IA7BA,IAAI+sB,EAAO,SAAUzuB,EAAM0uB,QACJ,IAAfA,IAAyBA,GAAa,GAC9B,MAAR1uB,GAAgBA,IAASlrC,GAEE,MAA3BkrC,EAAK0G,QAAQtmB,aAGgC,MAA7C4f,EAAK0G,QAAQzI,EAAS8B,UAAUkK,YAEhCjK,EAAK0G,QAAQzI,EAAS8B,UAAUkK,UAAY,IAE5CykB,GACAD,EAAKzuB,EAAKmF,UAEd4O,EAAW,SAAU/T,GAIc,MAAnCA,EAAK0G,QAAQzI,EAAS8B,WAE2B,MAA7CC,EAAK0G,QAAQzI,EAAS8B,UAAUkK,YAGhCjK,aAAgB3C,EAAYvyC,SAC5Bk1C,EAAKn8C,SAASoB,QAAQ8uD,GAE1B/T,EAAK+T,SAAS58C,KAEdw3D,EAAY1kB,EACPhpD,EAAI,EAAG0tE,EAAUxtE,OAAS,EAAGF,GAAK,EAAG,CAC1C,GAAIA,GAAKktE,EACL,MAAM,IAAI5sE,MAAM,mDAEpBotE,EAAU1pE,SAAQ,SAAU42D,GACxB,IAAI7b,EAAO/B,EAASI,KAAKwd,EAAS/2D,QAAQ,GAC9B,MAARk7C,IAEAA,EAAK0G,UAAYmV,EAAS/2D,SACJ,cAAlB+2D,EAASvlD,MACTm4D,EAAKxwB,EAASI,KAAKwd,EAAS+S,iBAAiB,IAC7C,GAAG3pE,QAAQoN,KAAKwpD,EAASF,YAAY,SAAU57B,GAC3C,IAAI8W,EAAQoH,EAASI,KAAKte,GAAM,GAChC0uC,EAAK53B,GAAO,GACRA,aAAiBwG,EAAYvyC,SAC7B+rC,EAAMhzC,SAASoB,SAAQ,SAAU4pE,GAC7BJ,EAAKI,GAAY,UAKN,eAAlBhT,EAASvlD,MACdm4D,EAAKzuB,EAAK8T,OAGlB2a,EAAKzuB,OAET/1C,KAAKpG,SAASoB,QAAQ8uD,GACtB4a,EAAY,GAAGr8D,MAAMD,KAAKpI,KAAK21D,SAASC,eACxC2O,EAAUG,EAAUr8D,QACpB,MAAOk8D,EAAQrtE,OAAS,EACpB8oD,EAAU1nD,KAAKisE,EAAQ9sB,SAGnC0sB,EAAWj8D,UAAUi4C,OAAS,SAAUH,EAAW9yC,GAC/C,IAAIrC,EAAQ7K,UACI,IAAZkN,IAAsBA,EAAU,IACpC8yC,EAAYA,GAAahgD,KAAK21D,SAASC,cAEvC5V,EACK75C,KAAI,SAAUyrD,GACf,IAAI7b,EAAO/B,EAASI,KAAKwd,EAAS/2D,QAAQ,GAC1C,OAAY,MAARk7C,EACO,KAEsC,MAA7CA,EAAK0G,QAAQzI,EAAS8B,UAAUkK,WAEhCjK,EAAK0G,QAAQzI,EAAS8B,UAAUkK,UAAY,CAAC4R,GACtC7b,IAIPA,EAAK0G,QAAQzI,EAAS8B,UAAUkK,UAAU1nD,KAAKs5D,GACxC,SAGV52D,SAAQ,SAAU+6C,GACP,MAARA,GACAA,IAASlrC,GAE0B,MAAnCkrC,EAAK0G,QAAQzI,EAAS8B,WAG1BC,EAAKoK,OAAOpK,EAAK0G,QAAQzI,EAAS8B,UAAUkK,WAAa,GAAI9yC,MAGhB,MAA7ClN,KAAKy8C,QAAQzI,EAAS8B,UAAUkK,WAEhCzK,EAAOrtC,UAAUi4C,OAAO/3C,KAAKpI,KAAMA,KAAKy8C,QAAQzI,EAAS8B,UAAUkK,UAAW9yC,GAElFlN,KAAK8pD,SAAS9J,EAAW9yC,IAE7Bi3D,EAAW3tB,SAAW,SACtB2tB,EAAW1mB,aAAe,QAC1B0mB,EAAWtgE,MAAQmwC,EAASE,MAAM+I,WAClCknB,EAAW7sD,QAAU,MACd6sD,EAxJoB,CAyJ7B/wB,EAAYvyC,SACdvK,EAAQuK,QAAUsjE,GAKZ,SAAUxxB,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAI83C,EAAWP,EAAoB,IAC/BkB,EAAWlB,EAAoB,GAEnC,SAAS+xB,EAAQC,EAAMC,GACnB,GAAI3qE,OAAOD,KAAK2qE,GAAM5tE,SAAWkD,OAAOD,KAAK4qE,GAAM7tE,OAC/C,OAAO,EAEX,IAAK,IAAIyV,KAAQm4D,EAEb,GAAIA,EAAKn4D,KAAUo4D,EAAKp4D,GACpB,OAAO,EAEf,OAAO,EAEX,IAAIq4D,EAA4B,SAAUzvB,GAEtC,SAASyvB,IACL,OAAkB,OAAXzvB,GAAmBA,EAAO56C,MAAMqF,KAAMlF,YAAckF,KA8C/D,OAhDAm1C,EAAU6vB,EAAYzvB,GAItByvB,EAAWz5B,QAAU,SAAUkR,GAC3B,GAAIA,EAAQnlC,UAAY0tD,EAAW1tD,QAEnC,OAAOi+B,EAAOhK,QAAQnjC,KAAKpI,KAAMy8C,IAErCuoB,EAAW98D,UAAU+c,OAAS,SAAU3rB,EAAMiC,GAC1C,IAAIsP,EAAQ7K,KACR1G,IAAS0G,KAAKw9C,QAAQhH,UAAaj7C,EAUnCg6C,EAAOrtC,UAAU+c,OAAO7c,KAAKpI,KAAM1G,EAAMiC,IATzCyE,KAAKpG,SAASoB,SAAQ,SAAU4xC,GACtBA,aAAiByG,EAASxyC,UAC5B+rC,EAAQA,EAAMrhB,KAAKy5C,EAAWxuB,UAAU,IAE5C3rC,EAAM2qC,WAAW8E,KAAK1N,MAE1B5sC,KAAK+pD,WAMbib,EAAW98D,UAAUqhD,SAAW,SAAU94C,EAAOvZ,EAAQoC,EAAMiC,GAC3D,GAA4B,MAAxByE,KAAKurC,UAAUjyC,IAAiB06C,EAASK,MAAM/6C,EAAM06C,EAASE,MAAMqU,WAAY,CAChF,IAAIxS,EAAO/1C,KAAK+lD,QAAQt1C,EAAOvZ,GAC/B6+C,EAAK9wB,OAAO3rB,EAAMiC,QAGlBg6C,EAAOrtC,UAAUqhD,SAASnhD,KAAKpI,KAAMyQ,EAAOvZ,EAAQoC,EAAMiC,IAGlEypE,EAAW98D,UAAU4hD,SAAW,SAAU58C,GACtCqoC,EAAOrtC,UAAU4hD,SAAS1hD,KAAKpI,KAAMkN,GACrC,IAAIq+B,EAAUvrC,KAAKurC,UACnB,GAAoC,IAAhCnxC,OAAOD,KAAKoxC,GAASr0C,OACrB,OAAO8I,KAAK+pD,SAEhB,IAAIvkC,EAAOxlB,KAAKwlB,KACZA,aAAgBw/C,GAAcx/C,EAAKqkC,OAAS7pD,MAAQ6kE,EAAQt5B,EAAS/lB,EAAK+lB,aAC1E/lB,EAAKwgC,aAAahmD,MAClBwlB,EAAKiQ,WAGbuvC,EAAWxuB,SAAW,SACtBwuB,EAAWnhE,MAAQmwC,EAASE,MAAMoe,YAClC0S,EAAW1tD,QAAU,OACd0tD,EAjDoB,CAkD7B3xB,EAASxyC,SACXvK,EAAQuK,QAAUmkE,GAKZ,SAAUryB,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAI83C,EAAWP,EAAoB,IAC/BkB,EAAWlB,EAAoB,GAC/BmyB,EAA2B,SAAU1vB,GAErC,SAAS0vB,IACL,OAAkB,OAAX1vB,GAAmBA,EAAO56C,MAAMqF,KAAMlF,YAAckF,KAiD/D,OAnDAm1C,EAAU8vB,EAAW1vB,GAIrB0vB,EAAU15B,QAAU,SAAUkR,GAC1B,IAAInlC,EAAU08B,EAASK,MAAM4wB,EAAUzuB,UAAUl/B,QACjD,GAAImlC,EAAQnlC,UAAYA,EAExB,OAAOi+B,EAAOhK,QAAQnjC,KAAKpI,KAAMy8C,IAErCwoB,EAAU/8D,UAAU+c,OAAS,SAAU3rB,EAAMiC,GACS,MAA9Cy4C,EAASK,MAAM/6C,EAAM06C,EAASE,MAAMgC,SAG/B58C,IAAS0G,KAAKw9C,QAAQhH,UAAaj7C,EAIxCg6C,EAAOrtC,UAAU+c,OAAO7c,KAAKpI,KAAM1G,EAAMiC,GAHzCyE,KAAKkyD,YAAY+S,EAAUzuB,YAMnCyuB,EAAU/8D,UAAUqhD,SAAW,SAAU94C,EAAOvZ,EAAQoC,EAAMiC,GACR,MAA9Cy4C,EAASK,MAAM/6C,EAAM06C,EAASE,MAAMgC,OACpCl2C,KAAKilB,OAAO3rB,EAAMiC,GAGlBg6C,EAAOrtC,UAAUqhD,SAASnhD,KAAKpI,KAAMyQ,EAAOvZ,EAAQoC,EAAMiC,IAGlE0pE,EAAU/8D,UAAU80C,SAAW,SAAUvsC,EAAOlV,EAAOshD,GACnD,GAAW,MAAPA,GAA+D,MAAhD7I,EAASK,MAAM94C,EAAOy4C,EAASE,MAAMiC,QAEpDZ,EAAOrtC,UAAU80C,SAAS50C,KAAKpI,KAAMyQ,EAAOlV,EAAOshD,OAElD,CACD,IAAIwR,EAAQruD,KAAKimB,MAAMxV,GACnBslC,EAAO/B,EAASG,OAAO54C,EAAOshD,GAClCwR,EAAMnT,OAAO1X,aAAauS,EAAMsY,KAGxC4W,EAAU/8D,UAAUi4C,OAAS,SAAUH,EAAW9yC,GAC1C+iB,UAAUC,UAAUiL,MAAM,WAC1Bn7B,KAAK29B,QAGL4X,EAAOrtC,UAAUi4C,OAAO/3C,KAAKpI,KAAMggD,EAAW9yC,IAGtD+3D,EAAUzuB,SAAW,QACrByuB,EAAUphE,MAAQmwC,EAASE,MAAM+I,WACjCgoB,EAAU3tD,QAAU,IACb2tD,EApDmB,CAqD5B5xB,EAASxyC,SACXvK,EAAQuK,QAAUokE,GAKZ,SAAUtyB,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAI+3C,EAASR,EAAoB,IAC7BoyB,EAA2B,SAAU3vB,GAErC,SAAS2vB,IACL,OAAkB,OAAX3vB,GAAmBA,EAAO56C,MAAMqF,KAAMlF,YAAckF,KAsB/D,OAxBAm1C,EAAU+vB,EAAW3vB,GAIrB2vB,EAAU35B,QAAU,SAAUkR,KAG9ByoB,EAAUh9D,UAAU+c,OAAS,SAAU3rB,EAAMiC,GAIzCg6C,EAAOrtC,UAAUqhD,SAASnhD,KAAKpI,KAAM,EAAGA,KAAK9I,SAAUoC,EAAMiC,IAEjE2pE,EAAUh9D,UAAUqhD,SAAW,SAAU94C,EAAOvZ,EAAQoC,EAAMiC,GAC5C,IAAVkV,GAAevZ,IAAW8I,KAAK9I,SAC/B8I,KAAKilB,OAAO3rB,EAAMiC,GAGlBg6C,EAAOrtC,UAAUqhD,SAASnhD,KAAKpI,KAAMyQ,EAAOvZ,EAAQoC,EAAMiC,IAGlE2pE,EAAUh9D,UAAUqjC,QAAU,WAC1B,OAAOvrC,KAAKw9C,QAAQjS,QAAQvrC,KAAKy8C,UAE9ByoB,EAzBmB,CA0B5B5xB,EAAOzyC,SACTvK,EAAQuK,QAAUqkE,GAKZ,SAAUvyB,EAAQr8C,EAASw8C,GAEjC,aAEA,IAAIqC,EAAan1C,MAAQA,KAAKm1C,WAAc,WACxC,IAAIC,EAAgBh7C,OAAOmqB,gBACtB,CAAEC,UAAW,cAAgB1tB,OAAS,SAAUiiC,EAAGrnB,GAAKqnB,EAAEvU,UAAY9S,IACvE,SAAUqnB,EAAGrnB,GAAK,IAAK,IAAI4S,KAAK5S,EAAOA,EAAEyhC,eAAe7uB,KAAIyU,EAAEzU,GAAK5S,EAAE4S,KACzE,OAAO,SAAUyU,EAAGrnB,GAEhB,SAAS2jC,IAAOr1C,KAAKsI,YAAcywB,EADnCqc,EAAcrc,EAAGrnB,GAEjBqnB,EAAE7wB,UAAkB,OAANwJ,EAAatX,OAAO+5C,OAAOziC,IAAM2jC,EAAGntC,UAAYwJ,EAAExJ,UAAW,IAAImtC,IAP3C,GAU5Cj7C,OAAOiB,eAAe/E,EAAS,aAAc,CAAEiF,OAAO,IACtD,IAAI+3C,EAASR,EAAoB,IAC7BkB,EAAWlB,EAAoB,GAC/BsT,EAA0B,SAAU7Q,GAEpC,SAAS6Q,EAAStwB,GACd,IAAIjrB,EAAQ0qC,EAAOntC,KAAKpI,KAAM81B,IAAS91B,KAEvC,OADA6K,EAAMssC,KAAOtsC,EAAM2yC,QAAQjiD,MAAMsP,EAAM4xC,SAChC5xC,EA0EX,OA9EAsqC,EAAUiR,EAAU7Q,GAMpB6Q,EAASjS,OAAS,SAAU54C,GACxB,OAAOkc,SAASmjD,eAAer/D,IAEnC6qD,EAAS7qD,MAAQ,SAAUkhD,GACvB,IAAItF,EAAOsF,EAAQ9iD,KAInB,OAFIw9C,EAAK,eACLA,EAAOA,EAAK,gBACTA,GAEXiP,EAASl+C,UAAUghD,SAAW,SAAUz4C,EAAOvZ,GAC3C8I,KAAKy8C,QAAQ9iD,KAAOqG,KAAKm3C,KAAOn3C,KAAKm3C,KAAK9uC,MAAM,EAAGoI,GAASzQ,KAAKm3C,KAAK9uC,MAAMoI,EAAQvZ,IAExFkvD,EAASl+C,UAAUuI,MAAQ,SAAUqlB,EAAMsP,GACvC,OAAIplC,KAAKy8C,UAAY3mB,EACVsP,GAEH,GAEZghB,EAASl+C,UAAU80C,SAAW,SAAUvsC,EAAOlV,EAAOshD,GACvC,MAAPA,GACA78C,KAAKm3C,KAAOn3C,KAAKm3C,KAAK9uC,MAAM,EAAGoI,GAASlV,EAAQyE,KAAKm3C,KAAK9uC,MAAMoI,GAChEzQ,KAAKy8C,QAAQ9iD,KAAOqG,KAAKm3C,MAGzB5B,EAAOrtC,UAAU80C,SAAS50C,KAAKpI,KAAMyQ,EAAOlV,EAAOshD,IAG3DuJ,EAASl+C,UAAUhR,OAAS,WACxB,OAAO8I,KAAKm3C,KAAKjgD,QAErBkvD,EAASl+C,UAAU4hD,SAAW,SAAU58C,GACpCqoC,EAAOrtC,UAAU4hD,SAAS1hD,KAAKpI,KAAMkN,GACrClN,KAAKm3C,KAAOn3C,KAAKw9C,QAAQjiD,MAAMyE,KAAKy8C,SACX,IAArBz8C,KAAKm3C,KAAKjgD,OACV8I,KAAKy1B,SAEAz1B,KAAKwlB,gBAAgB4gC,GAAYpmD,KAAKwlB,KAAKqkC,OAAS7pD,OACzDA,KAAKg9C,SAASh9C,KAAK9I,SAAU8I,KAAKwlB,KAAKjqB,SACvCyE,KAAKwlB,KAAKiQ,WAGlB2wB,EAASl+C,UAAUgrB,SAAW,SAAUziB,EAAOghD,GAE3C,YADkB,IAAdA,IAAwBA,GAAY,GACjC,CAACzxD,KAAKy8C,QAAShsC,IAE1B21C,EAASl+C,UAAU+d,MAAQ,SAAUxV,EAAO8sC,GAExC,QADc,IAAVA,IAAoBA,GAAQ,IAC3BA,EAAO,CACR,GAAc,IAAV9sC,EACA,OAAOzQ,KACX,GAAIyQ,IAAUzQ,KAAK9I,SACf,OAAO8I,KAAKwlB,KAEpB,IAAI6oC,EAAQra,EAASG,OAAOn0C,KAAKy8C,QAAQ0oB,UAAU10D,IAGnD,OAFAzQ,KAAKk7C,OAAO1X,aAAa6qB,EAAOruD,KAAKwlB,MACrCxlB,KAAKm3C,KAAOn3C,KAAKw9C,QAAQjiD,MAAMyE,KAAKy8C,SAC7B4R,GAEXjI,EAASl+C,UAAUi4C,OAAS,SAAUH,EAAW9yC,GAC7C,IAAIrC,EAAQ7K,KACRggD,EAAUjwC,MAAK,SAAU6hD,GACzB,MAAyB,kBAAlBA,EAASvlD,MAA4BulD,EAAS/2D,SAAWgQ,EAAM4xC,aAEtEz8C,KAAKm3C,KAAOn3C,KAAKw9C,QAAQjiD,MAAMyE,KAAKy8C,WAG5C2J,EAASl+C,UAAU3M,MAAQ,WACvB,OAAOyE,KAAKm3C,MAEhBiP,EAAS5P,SAAW,OACpB4P,EAASviD,MAAQmwC,EAASE,MAAMoe,YACzBlM,EA/EkB,CAgF3B9S,EAAOzyC,SACTvK,EAAQuK,QAAUulD,GAKZ,SAAUzT,EAAQr8C,EAASw8C,GAEjC,aAGA,IAAIzd,EAAO5d,SAASie,cAAc,OAElC,GADAL,EAAKE,UAAU3T,OAAO,cAAc,GAChCyT,EAAKE,UAAUiN,SAAS,cAAe,CACzC,IAAI4iC,EAAUC,aAAan9D,UAAU0Z,OACrCyjD,aAAan9D,UAAU0Z,OAAS,SAAUoZ,EAAOuiB,GAC/C,OAAIziD,UAAU5D,OAAS,IAAM8I,KAAKwiC,SAASxH,MAAYuiB,EAC9CA,EAEA6nB,EAAQh9D,KAAKpI,KAAMg7B,IAK3BhyB,OAAOd,UAAU04C,aACpB53C,OAAOd,UAAU04C,WAAa,SAAU0kB,EAAcpyC,GAEpD,OADAA,EAAWA,GAAY,EAChBlzB,KAAK2yD,OAAOz/B,EAAUoyC,EAAapuE,UAAYouE,IAIrDt8D,OAAOd,UAAU40C,WACpB9zC,OAAOd,UAAU40C,SAAW,SAAUwoB,EAAcpyC,GAClD,IAAIqyC,EAAgBvlE,KAAKmI,YACD,kBAAb+qB,IAA0BsyC,SAAStyC,IAAavB,KAAK2gB,MAAMpf,KAAcA,GAAYA,EAAWqyC,EAAcruE,UACvHg8B,EAAWqyC,EAAcruE,QAE3Bg8B,GAAYoyC,EAAapuE,OACzB,IAAI2U,EAAY05D,EAAc/tE,QAAQ8tE,EAAcpyC,GACpD,OAAsB,IAAfrnB,GAAoBA,IAAcqnB,IAIxCp8B,MAAMoR,UAAUksC,MACnBh6C,OAAOiB,eAAevE,MAAMoR,UAAW,OAAQ,CAC7C3M,MAAO,SAAem8C,GACpB,GAAa,OAAT13C,KACF,MAAM,IAAI6H,UAAU,oDAEtB,GAAyB,oBAAd6vC,EACT,MAAM,IAAI7vC,UAAU,gCAOtB,IALA,IAGItM,EAHAsxD,EAAOzyD,OAAO4F,MACd9I,EAAS21D,EAAK31D,SAAW,EACzBuuE,EAAU3qE,UAAU,GAGf9D,EAAI,EAAGA,EAAIE,EAAQF,IAE1B,GADAuE,EAAQsxD,EAAK71D,GACT0gD,EAAUtvC,KAAKq9D,EAASlqE,EAAOvE,EAAG61D,GACpC,OAAOtxD,KAQjBkc,SAASgpB,iBAAiB,oBAAoB,WAE5ChpB,SAASiuD,YAAY,wBAAwB,GAAO,GAEpDjuD,SAASiuD,YAAY,iBAAiB,GAAO,OAKzC,SAAU/yB,EAAQr8C,GAiCxB,IAAIqvE,GAAe,EACfC,EAAc,EACdC,EAAa,EAWjB,SAASC,EAAUC,EAAOC,EAAOC,GAE/B,GAAIF,GAASC,EACX,OAAID,EACK,CAAC,CAACF,EAAYE,IAEhB,IAILE,EAAa,GAAKF,EAAM7uE,OAAS+uE,KACnCA,EAAa,MAIf,IAAIC,EAAeC,EAAkBJ,EAAOC,GACxCI,EAAeL,EAAMpsC,UAAU,EAAGusC,GACtCH,EAAQA,EAAMpsC,UAAUusC,GACxBF,EAAQA,EAAMrsC,UAAUusC,GAGxBA,EAAeG,EAAkBN,EAAOC,GACxC,IAAIM,EAAeP,EAAMpsC,UAAUosC,EAAM7uE,OAASgvE,GAClDH,EAAQA,EAAMpsC,UAAU,EAAGosC,EAAM7uE,OAASgvE,GAC1CF,EAAQA,EAAMrsC,UAAU,EAAGqsC,EAAM9uE,OAASgvE,GAG1C,IAAIK,EAAQC,EAAcT,EAAOC,GAcjC,OAXII,GACFG,EAAMhvB,QAAQ,CAACsuB,EAAYO,IAEzBE,GACFC,EAAMjuE,KAAK,CAACutE,EAAYS,IAE1BG,EAAkBF,GACA,MAAdN,IACFM,EAAQG,EAAWH,EAAON,IAE5BM,EAAQI,EAAUJ,GACXA,EAWT,SAASC,EAAcT,EAAOC,GAC5B,IAAIO,EAEJ,IAAKR,EAEH,MAAO,CAAC,CAACH,EAAaI,IAGxB,IAAKA,EAEH,MAAO,CAAC,CAACL,EAAaI,IAGxB,IAAIa,EAAWb,EAAM7uE,OAAS8uE,EAAM9uE,OAAS6uE,EAAQC,EACjDa,EAAYd,EAAM7uE,OAAS8uE,EAAM9uE,OAAS8uE,EAAQD,EAClD/uE,EAAI4vE,EAASpvE,QAAQqvE,GACzB,IAAU,GAAN7vE,EASF,OAPAuvE,EAAQ,CAAC,CAACX,EAAagB,EAASjtC,UAAU,EAAG3iC,IACpC,CAAC6uE,EAAYgB,GACb,CAACjB,EAAagB,EAASjtC,UAAU3iC,EAAI6vE,EAAU3vE,UAEpD6uE,EAAM7uE,OAAS8uE,EAAM9uE,SACvBqvE,EAAM,GAAG,GAAKA,EAAM,GAAG,GAAKZ,GAEvBY,EAGT,GAAwB,GAApBM,EAAU3vE,OAGZ,MAAO,CAAC,CAACyuE,EAAaI,GAAQ,CAACH,EAAaI,IAI9C,IAAIc,EAAKC,EAAgBhB,EAAOC,GAChC,GAAIc,EAAI,CAEN,IAAIE,EAAUF,EAAG,GACbG,EAAUH,EAAG,GACbI,EAAUJ,EAAG,GACbK,EAAUL,EAAG,GACbM,EAAaN,EAAG,GAEhBO,EAAUvB,EAAUkB,EAASE,GAC7BI,EAAUxB,EAAUmB,EAASE,GAEjC,OAAOE,EAAQttE,OAAO,CAAC,CAAC8rE,EAAYuB,IAAcE,GAGpD,OAAOC,EAAaxB,EAAOC,GAa7B,SAASuB,EAAaxB,EAAOC,GAW3B,IATA,IAAIwB,EAAezB,EAAM7uE,OACrBuwE,EAAezB,EAAM9uE,OACrBwwE,EAAQ/1C,KAAKg2C,MAAMH,EAAeC,GAAgB,GAClDG,EAAWF,EACXG,EAAW,EAAIH,EACfI,EAAK,IAAIhxE,MAAM+wE,GACfE,EAAK,IAAIjxE,MAAM+wE,GAGV79B,EAAI,EAAGA,EAAI69B,EAAU79B,IAC5B89B,EAAG99B,IAAM,EACT+9B,EAAG/9B,IAAM,EAEX89B,EAAGF,EAAW,GAAK,EACnBG,EAAGH,EAAW,GAAK,EAWnB,IAVA,IAAItnC,EAAQknC,EAAeC,EAGvBO,EAAS1nC,EAAQ,GAAK,EAGtB2nC,EAAU,EACVC,EAAQ,EACRC,EAAU,EACVC,EAAQ,EACHrvC,EAAI,EAAGA,EAAI2uC,EAAO3uC,IAAK,CAE9B,IAAK,IAAIsvC,GAAMtvC,EAAIkvC,EAASI,GAAMtvC,EAAImvC,EAAOG,GAAM,EAAG,CACpD,IAAIC,EAAYV,EAAWS,EAGzBE,EADEF,IAAOtvC,GAAMsvC,GAAMtvC,GAAK+uC,EAAGQ,EAAY,GAAKR,EAAGQ,EAAY,GACxDR,EAAGQ,EAAY,GAEfR,EAAGQ,EAAY,GAAK,EAE3B,IAAIE,EAAKD,EAAKF,EACd,MAAOE,EAAKf,GAAgBgB,EAAKf,GAC1B1B,EAAM97B,OAAOs+B,IAAOvC,EAAM/7B,OAAOu+B,GACtCD,IACAC,IAGF,GADAV,EAAGQ,GAAaC,EACZA,EAAKf,EAEPU,GAAS,OACJ,GAAIM,EAAKf,EAEdQ,GAAW,OACN,GAAID,EAAO,CAChB,IAAIS,EAAYb,EAAWtnC,EAAQ+nC,EACnC,GAAII,GAAa,GAAKA,EAAYZ,IAA8B,GAAlBE,EAAGU,GAAkB,CAEjE,IAAIC,EAAKlB,EAAeO,EAAGU,GAC3B,GAAIF,GAAMG,EAER,OAAOC,EAAkB5C,EAAOC,EAAOuC,EAAIC,KAOnD,IAAK,IAAII,GAAM7vC,EAAIovC,EAASS,GAAM7vC,EAAIqvC,EAAOQ,GAAM,EAAG,CAChDH,EAAYb,EAAWgB,EAGzBF,EADEE,IAAO7vC,GAAM6vC,GAAM7vC,GAAKgvC,EAAGU,EAAY,GAAKV,EAAGU,EAAY,GACxDV,EAAGU,EAAY,GAEfV,EAAGU,EAAY,GAAK,EAE3B,IAAII,EAAKH,EAAKE,EACd,MAAOF,EAAKlB,GAAgBqB,EAAKpB,GAC1B1B,EAAM97B,OAAOu9B,EAAekB,EAAK,IACjC1C,EAAM/7B,OAAOw9B,EAAeoB,EAAK,GACtCH,IACAG,IAGF,GADAd,EAAGU,GAAaC,EACZA,EAAKlB,EAEPY,GAAS,OACJ,GAAIS,EAAKpB,EAEdU,GAAW,OACN,IAAKH,EAAO,CACbM,EAAYV,EAAWtnC,EAAQsoC,EACnC,GAAIN,GAAa,GAAKA,EAAYT,IAA8B,GAAlBC,EAAGQ,GAAkB,CACjE,IAAIC,EAAKT,EAAGQ,GACRE,EAAKZ,EAAWW,EAAKD,EAGzB,GADAI,EAAKlB,EAAekB,EAChBH,GAAMG,EAER,OAAOC,EAAkB5C,EAAOC,EAAOuC,EAAIC,MAQrD,MAAO,CAAC,CAAC7C,EAAaI,GAAQ,CAACH,EAAaI,IAa9C,SAAS2C,EAAkB5C,EAAOC,EAAOh8B,EAAGzQ,GAC1C,IAAIuvC,EAAS/C,EAAMpsC,UAAU,EAAGqQ,GAC5B++B,EAAS/C,EAAMrsC,UAAU,EAAGJ,GAC5ByvC,EAASjD,EAAMpsC,UAAUqQ,GACzBi/B,EAASjD,EAAMrsC,UAAUJ,GAGzBgtC,EAAQT,EAAUgD,EAAQC,GAC1BG,EAASpD,EAAUkD,EAAQC,GAE/B,OAAO1C,EAAMxsE,OAAOmvE,GAWtB,SAAS/C,EAAkBJ,EAAOC,GAEhC,IAAKD,IAAUC,GAASD,EAAM97B,OAAO,IAAM+7B,EAAM/7B,OAAO,GACtD,OAAO,EAIT,IAAIk/B,EAAa,EACbC,EAAaz3C,KAAKlG,IAAIs6C,EAAM7uE,OAAQ8uE,EAAM9uE,QAC1CmyE,EAAaD,EACbE,EAAe,EACnB,MAAOH,EAAaE,EACdtD,EAAMpsC,UAAU2vC,EAAcD,IAC9BrD,EAAMrsC,UAAU2vC,EAAcD,IAChCF,EAAaE,EACbC,EAAeH,GAEfC,EAAaC,EAEfA,EAAa13C,KAAK2gB,OAAO82B,EAAaD,GAAc,EAAIA,GAE1D,OAAOE,EAUT,SAAShD,EAAkBN,EAAOC,GAEhC,IAAKD,IAAUC,GACXD,EAAM97B,OAAO87B,EAAM7uE,OAAS,IAAM8uE,EAAM/7B,OAAO+7B,EAAM9uE,OAAS,GAChE,OAAO,EAIT,IAAIiyE,EAAa,EACbC,EAAaz3C,KAAKlG,IAAIs6C,EAAM7uE,OAAQ8uE,EAAM9uE,QAC1CmyE,EAAaD,EACbG,EAAa,EACjB,MAAOJ,EAAaE,EACdtD,EAAMpsC,UAAUosC,EAAM7uE,OAASmyE,EAAYtD,EAAM7uE,OAASqyE,IAC1DvD,EAAMrsC,UAAUqsC,EAAM9uE,OAASmyE,EAAYrD,EAAM9uE,OAASqyE,IAC5DJ,EAAaE,EACbE,EAAaJ,GAEbC,EAAaC,EAEfA,EAAa13C,KAAK2gB,OAAO82B,EAAaD,GAAc,EAAIA,GAE1D,OAAOE,EAcT,SAAStC,EAAgBhB,EAAOC,GAC9B,IAAIY,EAAWb,EAAM7uE,OAAS8uE,EAAM9uE,OAAS6uE,EAAQC,EACjDa,EAAYd,EAAM7uE,OAAS8uE,EAAM9uE,OAAS8uE,EAAQD,EACtD,GAAIa,EAAS1vE,OAAS,GAAwB,EAAnB2vE,EAAU3vE,OAAa0vE,EAAS1vE,OACzD,OAAO,KAeT,SAASsyE,EAAiB5C,EAAUC,EAAW7vE,GAE7C,IAGIyyE,EAAiBC,EAAiBC,EAAkBC,EAHpDC,EAAOjD,EAASjtC,UAAU3iC,EAAGA,EAAI26B,KAAK2gB,MAAMs0B,EAAS1vE,OAAS,IAC9D8hC,GAAK,EACL8wC,EAAc,GAElB,OAAgD,IAAxC9wC,EAAI6tC,EAAUrvE,QAAQqyE,EAAM7wC,EAAI,IAAW,CACjD,IAAI+wC,EAAe5D,EAAkBS,EAASjtC,UAAU3iC,GACnB6vE,EAAUltC,UAAUX,IACrDkzB,EAAema,EAAkBO,EAASjtC,UAAU,EAAG3iC,GACtB6vE,EAAUltC,UAAU,EAAGX,IACxD8wC,EAAY5yE,OAASg1D,EAAe6d,IACtCD,EAAcjD,EAAUltC,UAAUX,EAAIkzB,EAAclzB,GAChD6tC,EAAUltC,UAAUX,EAAGA,EAAI+wC,GAC/BN,EAAkB7C,EAASjtC,UAAU,EAAG3iC,EAAIk1D,GAC5Cwd,EAAkB9C,EAASjtC,UAAU3iC,EAAI+yE,GACzCJ,EAAmB9C,EAAUltC,UAAU,EAAGX,EAAIkzB,GAC9C0d,EAAmB/C,EAAUltC,UAAUX,EAAI+wC,IAG/C,OAAyB,EAArBD,EAAY5yE,QAAc0vE,EAAS1vE,OAC9B,CAACuyE,EAAiBC,EACjBC,EAAkBC,EAAkBE,GAErC,KAKX,IAKIhD,EAaAE,EAASC,EAASC,EAASC,EAlB3B6C,EAAMR,EAAiB5C,EAAUC,EACVl1C,KAAKg2C,KAAKf,EAAS1vE,OAAS,IAEnD+yE,EAAMT,EAAiB5C,EAAUC,EACVl1C,KAAKg2C,KAAKf,EAAS1vE,OAAS,IAEvD,IAAK8yE,IAAQC,EACX,OAAO,KAOPnD,EANUmD,EAEAD,GAILA,EAAI,GAAG9yE,OAAS+yE,EAAI,GAAG/yE,OAAS8yE,EAHhCC,EAFAD,EAUHjE,EAAM7uE,OAAS8uE,EAAM9uE,QACvB8vE,EAAUF,EAAG,GACbG,EAAUH,EAAG,GACbI,EAAUJ,EAAG,GACbK,EAAUL,EAAG,KAEbI,EAAUJ,EAAG,GACbK,EAAUL,EAAG,GACbE,EAAUF,EAAG,GACbG,EAAUH,EAAG,IAEf,IAAIM,EAAaN,EAAG,GACpB,MAAO,CAACE,EAASC,EAASC,EAASC,EAASC,GAS9C,SAASX,EAAkBF,GACzBA,EAAMjuE,KAAK,CAACutE,EAAY,KACxB,IAKIK,EALAgE,EAAU,EACVC,EAAe,EACfC,EAAe,EACfC,EAAc,GACdC,EAAc,GAElB,MAAOJ,EAAU3D,EAAMrvE,OACrB,OAAQqvE,EAAM2D,GAAS,IACrB,KAAKtE,EACHwE,IACAE,GAAe/D,EAAM2D,GAAS,GAC9BA,IACA,MACF,KAAKvE,EACHwE,IACAE,GAAe9D,EAAM2D,GAAS,GAC9BA,IACA,MACF,KAAKrE,EAECsE,EAAeC,EAAe,GACX,IAAjBD,GAAuC,IAAjBC,IAExBlE,EAAeC,EAAkBmE,EAAaD,GACzB,IAAjBnE,IACGgE,EAAUC,EAAeC,EAAgB,GAC1C7D,EAAM2D,EAAUC,EAAeC,EAAe,GAAG,IACjDvE,EACFU,EAAM2D,EAAUC,EAAeC,EAAe,GAAG,IAC7CE,EAAY3wC,UAAU,EAAGusC,IAE7BK,EAAMz+B,OAAO,EAAG,EAAG,CAAC+9B,EACAyE,EAAY3wC,UAAU,EAAGusC,KAC7CgE,KAEFI,EAAcA,EAAY3wC,UAAUusC,GACpCmE,EAAcA,EAAY1wC,UAAUusC,IAGtCA,EAAeG,EAAkBiE,EAAaD,GACzB,IAAjBnE,IACFK,EAAM2D,GAAS,GAAKI,EAAY3wC,UAAU2wC,EAAYpzE,OAClDgvE,GAAgBK,EAAM2D,GAAS,GACnCI,EAAcA,EAAY3wC,UAAU,EAAG2wC,EAAYpzE,OAC/CgvE,GACJmE,EAAcA,EAAY1wC,UAAU,EAAG0wC,EAAYnzE,OAC/CgvE,KAIa,IAAjBiE,EACF5D,EAAMz+B,OAAOoiC,EAAUE,EACnBD,EAAeC,EAAc,CAACxE,EAAa0E,IACrB,IAAjBF,EACT7D,EAAMz+B,OAAOoiC,EAAUC,EACnBA,EAAeC,EAAc,CAACzE,EAAa0E,IAE/C9D,EAAMz+B,OAAOoiC,EAAUC,EAAeC,EAClCD,EAAeC,EAAc,CAACzE,EAAa0E,GAC3C,CAACzE,EAAa0E,IAEpBJ,EAAUA,EAAUC,EAAeC,GACxBD,EAAe,EAAI,IAAMC,EAAe,EAAI,GAAK,GACvC,IAAZF,GAAiB3D,EAAM2D,EAAU,GAAG,IAAMrE,GAEnDU,EAAM2D,EAAU,GAAG,IAAM3D,EAAM2D,GAAS,GACxC3D,EAAMz+B,OAAOoiC,EAAS,IAEtBA,IAEFE,EAAe,EACfD,EAAe,EACfE,EAAc,GACdC,EAAc,GACd,MAG6B,KAA/B/D,EAAMA,EAAMrvE,OAAS,GAAG,IAC1BqvE,EAAM9uB,MAMR,IAAI8yB,GAAU,EACdL,EAAU,EAEV,MAAOA,EAAU3D,EAAMrvE,OAAS,EAC1BqvE,EAAM2D,EAAU,GAAG,IAAMrE,GACzBU,EAAM2D,EAAU,GAAG,IAAMrE,IAEvBU,EAAM2D,GAAS,GAAGvwC,UAAU4sC,EAAM2D,GAAS,GAAGhzE,OAC9CqvE,EAAM2D,EAAU,GAAG,GAAGhzE,SAAWqvE,EAAM2D,EAAU,GAAG,IAEtD3D,EAAM2D,GAAS,GAAK3D,EAAM2D,EAAU,GAAG,GACnC3D,EAAM2D,GAAS,GAAGvwC,UAAU,EAAG4sC,EAAM2D,GAAS,GAAGhzE,OACrBqvE,EAAM2D,EAAU,GAAG,GAAGhzE,QACtDqvE,EAAM2D,EAAU,GAAG,GAAK3D,EAAM2D,EAAU,GAAG,GAAK3D,EAAM2D,EAAU,GAAG,GACnE3D,EAAMz+B,OAAOoiC,EAAU,EAAG,GAC1BK,GAAU,GACDhE,EAAM2D,GAAS,GAAGvwC,UAAU,EAAG4sC,EAAM2D,EAAU,GAAG,GAAGhzE,SAC5DqvE,EAAM2D,EAAU,GAAG,KAErB3D,EAAM2D,EAAU,GAAG,IAAM3D,EAAM2D,EAAU,GAAG,GAC5C3D,EAAM2D,GAAS,GACX3D,EAAM2D,GAAS,GAAGvwC,UAAU4sC,EAAM2D,EAAU,GAAG,GAAGhzE,QAClDqvE,EAAM2D,EAAU,GAAG,GACvB3D,EAAMz+B,OAAOoiC,EAAU,EAAG,GAC1BK,GAAU,IAGdL,IAGEK,GACF9D,EAAkBF,GAKtB,IAAI1vB,EAAOivB,EAmBX,SAAS0E,EAAuBjE,EAAON,GACrC,GAAmB,IAAfA,EACF,MAAO,CAACJ,EAAYU,GAEtB,IAAK,IAAIkE,EAAc,EAAGzzE,EAAI,EAAGA,EAAIuvE,EAAMrvE,OAAQF,IAAK,CACtD,IAAI+hC,EAAIwtC,EAAMvvE,GACd,GAAI+hC,EAAE,KAAO4sC,GAAe5sC,EAAE,KAAO8sC,EAAY,CAC/C,IAAI6E,EAAWD,EAAc1xC,EAAE,GAAG7hC,OAClC,GAAI+uE,IAAeyE,EACjB,MAAO,CAAC1zE,EAAI,EAAGuvE,GACV,GAAIN,EAAayE,EAAU,CAEhCnE,EAAQA,EAAMl+D,QAEd,IAAIsiE,EAAY1E,EAAawE,EACzBG,EAAS,CAAC7xC,EAAE,GAAIA,EAAE,GAAG1wB,MAAM,EAAGsiE,IAC9BE,EAAU,CAAC9xC,EAAE,GAAIA,EAAE,GAAG1wB,MAAMsiE,IAEhC,OADApE,EAAMz+B,OAAO9wC,EAAG,EAAG4zE,EAAQC,GACpB,CAAC7zE,EAAI,EAAGuvE,GAEfkE,EAAcC,GAIpB,MAAM,IAAIpzE,MAAM,gCAqBlB,SAASovE,EAAYH,EAAON,GAC1B,IAAI6E,EAAON,EAAsBjE,EAAON,GACpC8E,EAASD,EAAK,GACdE,EAAiBF,EAAK,GACtB/xC,EAAIgyC,EAAOC,GACXC,EAASF,EAAOC,EAAiB,GAErC,GAAS,MAALjyC,EAGF,OAAOwtC,EACF,GAAIxtC,EAAE,KAAO8sC,EAGlB,OAAOU,EAEP,GAAc,MAAV0E,GAAkBlyC,EAAE,GAAKkyC,EAAO,KAAOA,EAAO,GAAKlyC,EAAE,GAIvD,OADAgyC,EAAOjjC,OAAOkjC,EAAgB,EAAGC,EAAQlyC,GAClCmyC,EAAaH,EAAQC,EAAgB,GACvC,GAAc,MAAVC,GAA8C,IAA5BA,EAAO,GAAGzzE,QAAQuhC,EAAE,IAAW,CAK1DgyC,EAAOjjC,OAAOkjC,EAAgB,EAAG,CAACC,EAAO,GAAIlyC,EAAE,IAAK,CAAC,EAAGA,EAAE,KAC1D,IAAIozB,EAAS8e,EAAO,GAAG5iE,MAAM0wB,EAAE,GAAG7hC,QAIlC,OAHIi1D,EAAOj1D,OAAS,GAClB6zE,EAAOjjC,OAAOkjC,EAAiB,EAAG,EAAG,CAACC,EAAO,GAAI9e,IAE5C+e,EAAaH,EAAQC,EAAgB,GAG5C,OAAOzE,EAab,SAASI,EAAWJ,GAQlB,IAPA,IAAI4E,GAAU,EACVC,EAAuB,SAASC,GAClC,OAAOA,EAAIl0E,WAAW,IAAM,OAAUk0E,EAAIl0E,WAAW,IAAM,OAEzDm0E,EAAuB,SAASD,GAClC,OAAOA,EAAIl0E,WAAWk0E,EAAIn0E,OAAO,IAAM,OAAUm0E,EAAIl0E,WAAWk0E,EAAIn0E,OAAO,IAAM,OAE1EF,EAAI,EAAGA,EAAIuvE,EAAMrvE,OAAQF,GAAK,EACjCuvE,EAAMvvE,EAAE,GAAG,KAAO6uE,GAAcyF,EAAqB/E,EAAMvvE,EAAE,GAAG,KAChEuvE,EAAMvvE,EAAE,GAAG,KAAO2uE,GAAeyF,EAAqB7E,EAAMvvE,EAAE,GAAG,KACjEuvE,EAAMvvE,GAAG,KAAO4uE,GAAewF,EAAqB7E,EAAMvvE,GAAG,MAC/Dm0E,GAAU,EAEV5E,EAAMvvE,EAAE,GAAG,GAAKuvE,EAAMvvE,EAAE,GAAG,GAAGqR,OAAO,GAAKk+D,EAAMvvE,EAAE,GAAG,GACrDuvE,EAAMvvE,GAAG,GAAKuvE,EAAMvvE,EAAE,GAAG,GAAGqR,OAAO,GAAKk+D,EAAMvvE,GAAG,GAEjDuvE,EAAMvvE,EAAE,GAAG,GAAKuvE,EAAMvvE,EAAE,GAAG,GAAGqR,MAAM,GAAI,IAG5C,IAAK8iE,EACH,OAAO5E,EAET,IAAIgF,EAAc,GAClB,IAASv0E,EAAI,EAAGA,EAAIuvE,EAAMrvE,OAAQF,GAAK,EACjCuvE,EAAMvvE,GAAG,GAAGE,OAAS,GACvBq0E,EAAYjzE,KAAKiuE,EAAMvvE,IAG3B,OAAOu0E,EAYT,SAASL,EAAc3E,EAAOpuE,EAAOjB,GAEnC,IAAK,IAAIF,EAAImB,EAAQjB,EAAS,EAAGF,GAAK,GAAKA,GAAKmB,EAAQ,EAAGnB,IACzD,GAAIA,EAAI,EAAIuvE,EAAMrvE,OAAQ,CACxB,IAAIs0E,EAASjF,EAAMvvE,GACfy0E,EAAUlF,EAAMvvE,EAAE,GAClBw0E,EAAO,KAAOC,EAAQ,IACxBlF,EAAMz+B,OAAO9wC,EAAG,EAAG,CAACw0E,EAAO,GAAIA,EAAO,GAAKC,EAAQ,KAIzD,OAAOlF,EAlKT1vB,EAAKuC,OAASwsB,EACd/uB,EAAKwC,OAASssB,EACd9uB,EAAKyC,MAAQusB,EAEblzB,EAAOr8C,QAAUugD,GAoKX,SAAUlE,EAAQr8C,GAMxB,SAASo1E,EAAMpwE,GACb,IAAInB,EAAO,GACX,IAAK,IAAIc,KAAOK,EAAKnB,EAAK7B,KAAK2C,GAC/B,OAAOd,EAPT7D,EAAUq8C,EAAOr8C,QAAiC,oBAAhB8D,OAAOD,KACrCC,OAAOD,KAAOuxE,EAElBp1E,EAAQo1E,KAAOA,GAUT,SAAU/4B,EAAQr8C,GAExB,IAAIq1E,EAEI,sBAFqB,WAC3B,OAAOvxE,OAAO8N,UAAUC,SAASC,KAAKtN,WADX,GAO7B,SAAS8wE,EAAU3xE,GACjB,MAAiD,sBAA1CG,OAAO8N,UAAUC,SAASC,KAAKnO,GAIxC,SAAS4xE,EAAY5xE,GACnB,OAAOA,GACY,iBAAVA,GACiB,iBAAjBA,EAAO/C,QACdkD,OAAO8N,UAAUirC,eAAe/qC,KAAKnO,EAAQ,YAC5CG,OAAO8N,UAAU4jE,qBAAqB1jE,KAAKnO,EAAQ,YACpD,EAdJ3D,EAAUq8C,EAAOr8C,QAAUq1E,EAAyBC,EAAYC,EAEhEv1E,EAAQs1E,UAAYA,EAKpBt1E,EAAQu1E,YAAcA,GAahB,SAAUl5B,EAAQr8C,GAExB,aAEA,IAAIy1E,EAAM3xE,OAAO8N,UAAUirC,eACvBwjB,EAAS,IASb,SAASqV,KA4BT,SAASC,EAAG3gE,EAAI4B,EAASs2C,GACvBxjD,KAAKsL,GAAKA,EACVtL,KAAKkN,QAAUA,EACflN,KAAKwjD,KAAOA,IAAQ,EAUtB,SAAS0oB,IACPlsE,KAAKE,QAAU,IAAI8rE,EACnBhsE,KAAKmsE,aAAe,EAlClB/xE,OAAO+5C,SACT63B,EAAO9jE,UAAY9N,OAAO+5C,OAAO,OAM5B,IAAI63B,GAASxnD,YAAWmyC,GAAS,IAqCxCuV,EAAahkE,UAAUkkE,WAAa,WAClC,IACIzsB,EACArmD,EAFA88C,EAAQ,GAIZ,GAA0B,IAAtBp2C,KAAKmsE,aAAoB,OAAO/1B,EAEpC,IAAK98C,KAASqmD,EAAS3/C,KAAKE,QACtB6rE,EAAI3jE,KAAKu3C,EAAQrmD,IAAO88C,EAAM99C,KAAKq+D,EAASr9D,EAAK+O,MAAM,GAAK/O,GAGlE,OAAIc,OAAOC,sBACF+7C,EAAMr8C,OAAOK,OAAOC,sBAAsBslD,IAG5CvJ,GAWT81B,EAAahkE,UAAU1H,UAAY,SAAmBgE,EAAO6nE,GAC3D,IAAIxrC,EAAM81B,EAASA,EAASnyD,EAAQA,EAChC8nE,EAAYtsE,KAAKE,QAAQ2gC,GAE7B,GAAIwrC,EAAQ,QAASC,EACrB,IAAKA,EAAW,MAAO,GACvB,GAAIA,EAAUhhE,GAAI,MAAO,CAACghE,EAAUhhE,IAEpC,IAAK,IAAItU,EAAI,EAAGiiC,EAAIqzC,EAAUp1E,OAAQq1E,EAAK,IAAIz1E,MAAMmiC,GAAIjiC,EAAIiiC,EAAGjiC,IAC9Du1E,EAAGv1E,GAAKs1E,EAAUt1E,GAAGsU,GAGvB,OAAOihE,GAUTL,EAAahkE,UAAUm9C,KAAO,SAAc7gD,EAAOgoE,EAAIC,EAAIC,EAAIC,EAAIC,GACjE,IAAI/rC,EAAM81B,EAASA,EAASnyD,EAAQA,EAEpC,IAAKxE,KAAKE,QAAQ2gC,GAAM,OAAO,EAE/B,IAEInd,EACA1sB,EAHAwJ,EAAYR,KAAKE,QAAQ2gC,GACzB5pC,EAAM6D,UAAU5D,OAIpB,GAAIsJ,EAAU8K,GAAI,CAGhB,OAFI9K,EAAUgjD,MAAMxjD,KAAK6sE,eAAeroE,EAAOhE,EAAU8K,QAAIrE,GAAW,GAEhEhQ,GACN,KAAK,EAAG,OAAOuJ,EAAU8K,GAAGlD,KAAK5H,EAAU0M,UAAU,EACrD,KAAK,EAAG,OAAO1M,EAAU8K,GAAGlD,KAAK5H,EAAU0M,QAASs/D,IAAK,EACzD,KAAK,EAAG,OAAOhsE,EAAU8K,GAAGlD,KAAK5H,EAAU0M,QAASs/D,EAAIC,IAAK,EAC7D,KAAK,EAAG,OAAOjsE,EAAU8K,GAAGlD,KAAK5H,EAAU0M,QAASs/D,EAAIC,EAAIC,IAAK,EACjE,KAAK,EAAG,OAAOlsE,EAAU8K,GAAGlD,KAAK5H,EAAU0M,QAASs/D,EAAIC,EAAIC,EAAIC,IAAK,EACrE,KAAK,EAAG,OAAOnsE,EAAU8K,GAAGlD,KAAK5H,EAAU0M,QAASs/D,EAAIC,EAAIC,EAAIC,EAAIC,IAAK,EAG3E,IAAK51E,EAAI,EAAG0sB,EAAO,IAAI5sB,MAAMG,EAAK,GAAID,EAAIC,EAAKD,IAC7C0sB,EAAK1sB,EAAI,GAAK8D,UAAU9D,GAG1BwJ,EAAU8K,GAAG3Q,MAAM6F,EAAU0M,QAASwW,OACjC,CACL,IACIsV,EADA9hC,EAASsJ,EAAUtJ,OAGvB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IAGtB,OAFIwJ,EAAUxJ,GAAGwsD,MAAMxjD,KAAK6sE,eAAeroE,EAAOhE,EAAUxJ,GAAGsU,QAAIrE,GAAW,GAEtEhQ,GACN,KAAK,EAAGuJ,EAAUxJ,GAAGsU,GAAGlD,KAAK5H,EAAUxJ,GAAGkW,SAAU,MACpD,KAAK,EAAG1M,EAAUxJ,GAAGsU,GAAGlD,KAAK5H,EAAUxJ,GAAGkW,QAASs/D,GAAK,MACxD,KAAK,EAAGhsE,EAAUxJ,GAAGsU,GAAGlD,KAAK5H,EAAUxJ,GAAGkW,QAASs/D,EAAIC,GAAK,MAC5D,KAAK,EAAGjsE,EAAUxJ,GAAGsU,GAAGlD,KAAK5H,EAAUxJ,GAAGkW,QAASs/D,EAAIC,EAAIC,GAAK,MAChE,QACE,IAAKhpD,EAAM,IAAKsV,EAAI,EAAGtV,EAAO,IAAI5sB,MAAMG,EAAK,GAAI+hC,EAAI/hC,EAAK+hC,IACxDtV,EAAKsV,EAAI,GAAKl+B,UAAUk+B,GAG1Bx4B,EAAUxJ,GAAGsU,GAAG3Q,MAAM6F,EAAUxJ,GAAGkW,QAASwW,IAKpD,OAAO,GAYTwoD,EAAahkE,UAAU/F,GAAK,SAAYqC,EAAO8G,EAAI4B,GACjD,IAAIgT,EAAW,IAAI+rD,EAAG3gE,EAAI4B,GAAWlN,MACjC6gC,EAAM81B,EAASA,EAASnyD,EAAQA,EAMpC,OAJKxE,KAAKE,QAAQ2gC,GACR7gC,KAAKE,QAAQ2gC,GAAKv1B,GACvBtL,KAAKE,QAAQ2gC,GAAO,CAAC7gC,KAAKE,QAAQ2gC,GAAM3gB,GADblgB,KAAKE,QAAQ2gC,GAAKvoC,KAAK4nB,IAD/BlgB,KAAKE,QAAQ2gC,GAAO3gB,EAAUlgB,KAAKmsE,gBAIpDnsE,MAYTksE,EAAahkE,UAAUs7C,KAAO,SAAch/C,EAAO8G,EAAI4B,GACrD,IAAIgT,EAAW,IAAI+rD,EAAG3gE,EAAI4B,GAAWlN,MAAM,GACvC6gC,EAAM81B,EAASA,EAASnyD,EAAQA,EAMpC,OAJKxE,KAAKE,QAAQ2gC,GACR7gC,KAAKE,QAAQ2gC,GAAKv1B,GACvBtL,KAAKE,QAAQ2gC,GAAO,CAAC7gC,KAAKE,QAAQ2gC,GAAM3gB,GADblgB,KAAKE,QAAQ2gC,GAAKvoC,KAAK4nB,IAD/BlgB,KAAKE,QAAQ2gC,GAAO3gB,EAAUlgB,KAAKmsE,gBAIpDnsE,MAaTksE,EAAahkE,UAAU2kE,eAAiB,SAAwBroE,EAAO8G,EAAI4B,EAASs2C,GAClF,IAAI3iB,EAAM81B,EAASA,EAASnyD,EAAQA,EAEpC,IAAKxE,KAAKE,QAAQ2gC,GAAM,OAAO7gC,KAC/B,IAAKsL,EAGH,OAF4B,MAAtBtL,KAAKmsE,aAAoBnsE,KAAKE,QAAU,IAAI8rE,SACtChsE,KAAKE,QAAQ2gC,GAClB7gC,KAGT,IAAIQ,EAAYR,KAAKE,QAAQ2gC,GAE7B,GAAIrgC,EAAU8K,GAEP9K,EAAU8K,KAAOA,GACfk4C,IAAQhjD,EAAUgjD,MAClBt2C,GAAW1M,EAAU0M,UAAYA,IAEV,MAAtBlN,KAAKmsE,aAAoBnsE,KAAKE,QAAU,IAAI8rE,SACtChsE,KAAKE,QAAQ2gC,QAEtB,CACL,IAAK,IAAI7pC,EAAI,EAAG2oD,EAAS,GAAIzoD,EAASsJ,EAAUtJ,OAAQF,EAAIE,EAAQF,KAE7DwJ,EAAUxJ,GAAGsU,KAAOA,GACnBk4C,IAAShjD,EAAUxJ,GAAGwsD,MACtBt2C,GAAW1M,EAAUxJ,GAAGkW,UAAYA,IAExCyyC,EAAOrnD,KAAKkI,EAAUxJ,IAOtB2oD,EAAOzoD,OAAQ8I,KAAKE,QAAQ2gC,GAAyB,IAAlB8e,EAAOzoD,OAAeyoD,EAAO,GAAKA,EACxC,MAAtB3/C,KAAKmsE,aAAoBnsE,KAAKE,QAAU,IAAI8rE,SAC3ChsE,KAAKE,QAAQ2gC,GAG3B,OAAO7gC,MAUTksE,EAAahkE,UAAU4kE,mBAAqB,SAA4BtoE,GACtE,IAAIq8B,EAaJ,OAXIr8B,GACFq8B,EAAM81B,EAASA,EAASnyD,EAAQA,EAC5BxE,KAAKE,QAAQ2gC,KACa,MAAtB7gC,KAAKmsE,aAAoBnsE,KAAKE,QAAU,IAAI8rE,SACtChsE,KAAKE,QAAQ2gC,MAG3B7gC,KAAKE,QAAU,IAAI8rE,EACnBhsE,KAAKmsE,aAAe,GAGfnsE,MAMTksE,EAAahkE,UAAUq7C,IAAM2oB,EAAahkE,UAAU2kE,eACpDX,EAAahkE,UAAU6kE,YAAcb,EAAahkE,UAAU/F,GAK5D+pE,EAAahkE,UAAU8kE,gBAAkB,WACvC,OAAOhtE,MAMTksE,EAAae,SAAWtW,EAKxBuV,EAAaA,aAAeA,EAKxB,qBAAuBv5B,IACzBA,EAAOr8C,QAAU41E,IAMb,SAAUv5B,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQ42E,UAAY52E,EAAQ62E,aAAe72E,EAAQ82E,aAAe92E,EAAQ+2E,UAAY/2E,EAAQg3E,gBAAkBh3E,EAAQuK,aAAUoG,EAElI,IAAI42C,EAA4B,oBAAXn1C,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUrN,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAXoN,QAAyBpN,EAAIgN,cAAgBI,QAAUpN,IAAQoN,OAAOR,UAAY,gBAAkB5M,GAElQwiD,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjB8yC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfs3B,EAAWvI,EAAoB,GAE/By6B,EAAWjyB,EAAuBD,GAElCE,EAAczI,EAAoB,GAElC0I,EAAeF,EAAuBC,GAEtCE,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCqa,EAAShjB,EAAoB,GAE7BijB,EAAUza,EAAuBwa,GAEjCtX,EAAU1L,EAAoB,IAE9B2L,EAAWnD,EAAuBkD,GAElCJ,EAAUtL,EAAoB,GAE9BuL,EAAW/C,EAAuB8C,GAElCovB,EAAS16B,EAAoB,IAE7B26B,EAAc36B,EAAoB,IAElCqX,EAAQrX,EAAoB,IAE5BsX,EAAS9O,EAAuB6O,GAEhC8U,EAASnsB,EAAoB,IAE7B46B,EAAa56B,EAAoB,IAEjC66B,EAAQ76B,EAAoB,IAE5B86B,EAAQ96B,EAAoB,IAEhC,SAASwI,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAASJ,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIsC,GAAQ,EAAIH,EAAS59C,SAAS,mBAE9BgtE,EAAU,eAEVC,EAAmB,CAAC,CAAC58B,KAAK0E,UAAWs3B,GAAY,CAACh8B,KAAK0E,UAAWw3B,GAAe,CAAC,KAAMW,GAAa,CAAC78B,KAAK88B,aAAcZ,GAAe,CAACl8B,KAAK88B,aAAcX,GAAY,CAACn8B,KAAK88B,aAAcb,GAAe,CAACj8B,KAAK88B,aAAcV,GAAkB,CAACp8B,KAAK88B,aAAcC,GAAc,CAAC,KAAMC,GAAc,CAAC,IAAKC,EAAWzyE,KAAKyyE,EAAY,SAAU,CAAC,IAAKA,EAAWzyE,KAAKyyE,EAAY,WAAY,CAAC,QAASC,IAE5YC,EAAwB,CAACb,EAAO1O,eAAgB4O,EAAWtO,oBAAoB14D,QAAO,SAAUyF,EAAM2xD,GAExG,OADA3xD,EAAK2xD,EAAKpnB,SAAWonB,EACd3xD,IACN,IAECmiE,EAAoB,CAACd,EAAO5O,WAAY6O,EAAY1O,gBAAiBE,EAAOjE,WAAY0S,EAAWxO,eAAgByO,EAAMrO,UAAWsO,EAAMpO,WAAW94D,QAAO,SAAUyF,EAAM2xD,GAE9K,OADA3xD,EAAK2xD,EAAKpnB,SAAWonB,EACd3xD,IACN,IAECoiE,EAAY,SAAUrY,GAGxB,SAASqY,EAAUnnB,EAAOviC,GACxBo3B,EAAgBj8C,KAAMuuE,GAEtB,IAAI1jE,EAAQqxC,EAA2Bl8C,MAAOuuE,EAAU/pD,WAAapqB,OAAO+gD,eAAeozB,IAAYnmE,KAAKpI,KAAMonD,EAAOviC,IAezH,OAbAha,EAAMu8C,MAAM3U,KAAKhS,iBAAiB,QAAS51B,EAAM2jE,QAAQ9yE,KAAKmP,IAC9DA,EAAM07B,UAAY17B,EAAMu8C,MAAMrI,aAAa,gBAC3Cl0C,EAAM07B,UAAU5P,aAAa,mBAAmB,GAChD9rB,EAAM07B,UAAU5P,aAAa,YAAa,GAC1C9rB,EAAM4jE,SAAW,GACjBX,EAAiB/zE,OAAO8Q,EAAMga,QAAQ4pD,UAAUzzE,SAAQ,SAAUtB,GAChE,IAAIoC,EAAQgiD,EAAepkD,EAAM,GAC7Bu3C,EAAWn1C,EAAM,GACjB4yE,EAAU5yE,EAAM,IAEf+oB,EAAQ8pD,aAAeD,IAAYvB,IACxCtiE,EAAM+jE,WAAW39B,EAAUy9B,MAEtB7jE,EAsGT,OA1HAuxC,EAAUmyB,EAAWrY,GAuBrBvb,EAAa4zB,EAAW,CAAC,CACvBtzE,IAAK,aACLM,MAAO,SAAoB01C,EAAUy9B,GACnC1uE,KAAKyuE,SAASn2E,KAAK,CAAC24C,EAAUy9B,MAE/B,CACDzzE,IAAK,UACLM,MAAO,SAAiBwB,GACtB,GAAoB,kBAATA,EAET,OADAiD,KAAKumC,UAAUF,UAAYtpC,EAAK4O,QAAQ,eAAgB,MACjD3L,KAAKqgD,UAEd,IAAI9U,EAAUvrC,KAAKonD,MAAM3E,UAAUziD,KAAKonD,MAAM/H,UAAU8N,WAAW18C,OACnE,GAAI86B,EAAQ6e,EAAOvpD,QAAQ21C,UAAW,CACpC,IAAIW,EAAOn3C,KAAKumC,UAAUsoC,UAE1B,OADA7uE,KAAKumC,UAAUF,UAAY,IACpB,IAAImV,EAAa36C,SAAUq2C,OAAOC,EAAMj8C,EAAgB,GAAIkvD,EAAOvpD,QAAQ21C,SAAUjL,EAAQ6e,EAAOvpD,QAAQ21C,YAGrH,IAAIs4B,EAAmB9uE,KAAK+uE,kBACxBC,EAAoBlxB,EAAegxB,EAAkB,GACrDG,EAAkBD,EAAkB,GACpCE,EAAeF,EAAkB,GAEjC1uC,EAAQ6uC,EAASnvE,KAAKumC,UAAW0oC,EAAiBC,GAOtD,OALIE,EAAc9uC,EAAO,OAAuD,MAA9CA,EAAMzF,IAAIyF,EAAMzF,IAAI3jC,OAAS,GAAGs+C,aAChElV,EAAQA,EAAM6X,SAAQ,IAAIqD,EAAa36C,SAAUw2C,OAAO/W,EAAMppC,SAAW,GAAG8gD,OAAO,KAErF4G,EAAMrM,IAAI,UAAWvyC,KAAKumC,UAAUF,UAAW/F,GAC/CtgC,KAAKumC,UAAUF,UAAY,GACpB/F,IAER,CACDrlC,IAAK,uBACLM,MAAO,SAA8BkV,EAAO1T,GAC1C,IAAIhC,EAASD,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKi7D,EAAQl1D,QAAQwgD,QAAQC,IAEzG,GAAqB,kBAAV7wC,EACTzQ,KAAKonD,MAAM9G,YAAYtgD,KAAKqgD,QAAQ5vC,GAAQ1T,GAC5CiD,KAAKonD,MAAM1F,aAAa,EAAGqU,EAAQl1D,QAAQwgD,QAAQM,YAC9C,CACL,IAAI0tB,EAAQrvE,KAAKqgD,QAAQtjD,GACzBiD,KAAKonD,MAAM8S,gBAAe,IAAI1e,EAAa36C,SAAUw2C,OAAO5mC,GAAO1W,OAAOs1E,GAAQt0E,GAClFiF,KAAKonD,MAAM1F,aAAajxC,EAAQ4+D,EAAMn4E,SAAU6+D,EAAQl1D,QAAQwgD,QAAQM,WAG3E,CACD1mD,IAAK,UACLM,MAAO,SAAiBwT,GACtB,IAAI9D,EAASjL,KAEb,IAAI+O,EAAEioD,kBAAqBh3D,KAAKonD,MAAMvjB,YAAtC,CACA,IAAIoL,EAAQjvC,KAAKonD,MAAM7F,eACnBjhB,GAAQ,IAAIkb,EAAa36C,SAAUw2C,OAAOpI,EAAMx+B,OAChD0wC,EAAYnhD,KAAKonD,MAAMpI,mBAAmBmC,UAC9CnhD,KAAKumC,UAAU5kB,QACf3hB,KAAKonD,MAAM/H,UAAUc,OAAO4V,EAAQl1D,QAAQwgD,QAAQM,QACpD52C,YAAW,WACTu1B,EAAQA,EAAMvmC,OAAOkR,EAAOo1C,WAAWrI,OAAO/I,EAAM/3C,QACpD+T,EAAOm8C,MAAM8S,eAAe55B,EAAOy1B,EAAQl1D,QAAQwgD,QAAQiD,MAE3Dr5C,EAAOm8C,MAAM1F,aAAaphB,EAAMppC,SAAW+3C,EAAM/3C,OAAQ6+D,EAAQl1D,QAAQwgD,QAAQM,QACjF12C,EAAOm8C,MAAMpI,mBAAmBmC,UAAYA,EAC5Cl2C,EAAOm8C,MAAMzlC,UACZ,MAEJ,CACD1mB,IAAK,kBACLM,MAAO,WACL,IAAIiQ,EAASxL,KAETivE,EAAkB,GAClBC,EAAe,GAsBnB,OArBAlvE,KAAKyuE,SAASzzE,SAAQ,SAAUs0E,GAC9B,IAAIC,EAAQzxB,EAAewxB,EAAM,GAC7Br+B,EAAWs+B,EAAM,GACjBb,EAAUa,EAAM,GAEpB,OAAQt+B,GACN,KAAKC,KAAK0E,UACRs5B,EAAa52E,KAAKo2E,GAClB,MACF,KAAKx9B,KAAK88B,aACRiB,EAAgB32E,KAAKo2E,GACrB,MACF,QACE,GAAG1zE,QAAQoN,KAAKoD,EAAO+6B,UAAUzF,iBAAiBmQ,IAAW,SAAUnb,GAErEA,EAAK+3C,GAAW/3C,EAAK+3C,IAAY,GACjC/3C,EAAK+3C,GAASv1E,KAAKo2E,MAErB,UAGC,CAACO,EAAiBC,OAItBX,EA3HO,CA4HdlwB,EAASx9C,SAOX,SAAS2uE,EAAYlvC,EAAOrb,EAAQ1pB,GAClC,MAAwE,YAAjD,qBAAX0pB,EAAyB,YAAc44B,EAAQ54B,IAClD7qB,OAAOD,KAAK8qB,GAAQve,QAAO,SAAU45B,EAAOrlC,GACjD,OAAOu0E,EAAYlvC,EAAOrlC,EAAKgqB,EAAOhqB,MACrCqlC,GAEIA,EAAM55B,QAAO,SAAU45B,EAAOwW,GACnC,OAAIA,EAAGtB,YAAcsB,EAAGtB,WAAWvwB,GAC1Bqb,EAAMhoC,KAAKw+C,GAEXxW,EAAM4W,OAAOJ,EAAGI,QAAQ,EAAIq2B,EAAS1sE,SAAS,GAAI3F,EAAgB,GAAI+pB,EAAQ1pB,GAAQu7C,EAAGtB,eAEjG,IAAIgG,EAAa36C,SAIxB,SAAS4uE,EAAa35C,GACpB,GAAIA,EAAKyN,WAAa2N,KAAK88B,aAAc,MAAO,GAChD,IAAIH,EAAU,sBACd,OAAO/3C,EAAK+3C,KAAa/3C,EAAK+3C,GAAW79C,OAAO0/C,iBAAiB55C,IAGnE,SAASs5C,EAAc9uC,EAAO6W,GAE5B,IADA,IAAIw4B,EAAU,GACL34E,EAAIspC,EAAMzF,IAAI3jC,OAAS,EAAGF,GAAK,GAAK24E,EAAQz4E,OAASigD,EAAKjgD,SAAUF,EAAG,CAC9E,IAAI8/C,EAAKxW,EAAMzF,IAAI7jC,GACnB,GAAyB,kBAAd8/C,EAAGI,OAAqB,MACnCy4B,EAAU74B,EAAGI,OAASy4B,EAExB,OAAOA,EAAQtnE,OAAO,EAAI8uC,EAAKjgD,UAAYigD,EAG7C,SAAS+d,EAAOp/B,GACd,GAA+B,IAA3BA,EAAKi6B,WAAW74D,OAAc,OAAO,EACzC,IAAIyf,EAAQ84D,EAAa35C,GACzB,MAAO,CAAC,QAAS,aAAat+B,QAAQmf,EAAM8nB,UAAY,EAG1D,SAAS0wC,EAASr5C,EAAMm5C,EAAiBC,GAEvC,OAAIp5C,EAAKyN,WAAazN,EAAK8f,UAClBs5B,EAAaxoE,QAAO,SAAU45B,EAAOouC,GAC1C,OAAOA,EAAQ54C,EAAMwK,KACpB,IAAIkb,EAAa36C,SACXi1B,EAAKyN,WAAazN,EAAKk4C,aACzB,GAAGtnE,OAAO0B,KAAK0tB,EAAKi6B,YAAc,IAAI,SAAUzvB,EAAOk+B,GAC5D,IAAIoR,EAAgBT,EAAS3Q,EAAWyQ,EAAiBC,GASzD,OARI1Q,EAAUj7B,WAAazN,EAAKk4C,eAC9B4B,EAAgBX,EAAgBvoE,QAAO,SAAUkpE,EAAelB,GAC9D,OAAOA,EAAQlQ,EAAWoR,KACzBA,GACHA,GAAiBpR,EAAUqP,IAAY,IAAInnE,QAAO,SAAUkpE,EAAelB,GACzE,OAAOA,EAAQlQ,EAAWoR,KACzBA,IAEEtvC,EAAMvmC,OAAO61E,KACnB,IAAIp0B,EAAa36C,SAEb,IAAI26C,EAAa36C,QAI5B,SAASstE,EAAWlpD,EAAQ6Q,EAAMwK,GAChC,OAAOkvC,EAAYlvC,EAAOrb,GAAQ,GAGpC,SAASqoD,EAAgBx3C,EAAMwK,GAC7B,IAAIkV,EAAakG,EAAY76C,QAAQk0C,WAAWC,UAAU76C,KAAK27B,GAC3D5K,EAAUwwB,EAAY76C,QAAQk0C,WAAWpxB,MAAMxpB,KAAK27B,GACpD+nC,EAASniB,EAAY76C,QAAQk0C,WAAWE,MAAM96C,KAAK27B,GACnDyV,EAAU,GAoBd,OAnBAiK,EAAWz7C,OAAOmxB,GAASnxB,OAAO8jE,GAAQ7iE,SAAQ,SAAU1B,GAC1D,IAAIwkE,EAAOpiB,EAAY76C,QAAQwzC,MAAM/6C,EAAMoiD,EAAY76C,QAAQqzC,MAAMqU,WACzD,MAARuV,IACFvyB,EAAQuyB,EAAKrnB,UAAYqnB,EAAKviE,MAAMu6B,GAChCyV,EAAQuyB,EAAKrnB,aAEnBqnB,EAAOuQ,EAAsB/0E,GACjB,MAARwkE,GAAiBA,EAAKrnB,WAAan9C,GAAQwkE,EAAKpnB,UAAYp9C,IAC9DiyC,EAAQuyB,EAAKrnB,UAAYqnB,EAAKviE,MAAMu6B,SAAS7uB,GAE/C62D,EAAOwQ,EAAkBh1E,GACb,MAARwkE,GAAiBA,EAAKrnB,WAAan9C,GAAQwkE,EAAKpnB,UAAYp9C,IAC9DwkE,EAAOwQ,EAAkBh1E,GACzBiyC,EAAQuyB,EAAKrnB,UAAYqnB,EAAKviE,MAAMu6B,SAAS7uB,OAG7C7M,OAAOD,KAAKoxC,GAASr0C,OAAS,IAChCopC,EAAQkvC,EAAYlvC,EAAOiL,IAEtBjL,EAGT,SAAS+sC,EAAUv3C,EAAMwK,GACvB,IAAInF,EAAQugB,EAAY76C,QAAQwzC,MAAMve,GACtC,GAAa,MAATqF,EAAe,OAAOmF,EAC1B,GAAInF,EAAMjzB,qBAAqBwzC,EAAY76C,QAAQ6zC,MAAO,CACxD,IAAIsO,EAAQ,GACRznD,EAAQ4/B,EAAM5/B,MAAMu6B,GACX,MAATv6B,IACFynD,EAAM7nB,EAAMqb,UAAYj7C,EACxB+kC,GAAQ,IAAIkb,EAAa36C,SAAUq2C,OAAO8L,EAAO7nB,EAAMoQ,QAAQzV,SAE/B,oBAAlBqF,EAAMoQ,UACtBjL,EAAQkvC,EAAYlvC,EAAOnF,EAAMqb,SAAUrb,EAAMoQ,QAAQzV,KAE3D,OAAOwK,EAGT,SAASytC,EAAWj4C,EAAMwK,GAIxB,OAHK8uC,EAAc9uC,EAAO,OACxBA,EAAM4W,OAAO,MAER5W,EAGT,SAAS8tC,IACP,OAAO,IAAI5yB,EAAa36C,QAG1B,SAASqtE,EAAYp4C,EAAMwK,GACzB,IAAInF,EAAQugB,EAAY76C,QAAQwzC,MAAMve,GACtC,GAAa,MAATqF,GAAoC,cAAnBA,EAAMqb,WAA6B44B,EAAc9uC,EAAO,MAC3E,OAAOA,EAET,IAAIi5B,GAAU,EACVre,EAASplB,EAAKK,WAClB,OAAQ+kB,EAAO3lB,UAAUiN,SAAS,gBAC2B,UAAtDkZ,EAAY76C,QAAQwzC,MAAM6G,IAAW,IAAI1E,WAC5C+iB,GAAU,GAEZre,EAASA,EAAO/kB,WAElB,OAAIojC,GAAU,EAAUj5B,EACjBA,EAAM6X,SAAQ,IAAIqD,EAAa36C,SAAUw2C,OAAO/W,EAAMppC,SAAW,GAAGmgD,OAAO,EAAG,CAAEkiB,OAAQA,KAGjG,SAAS6T,EAAat3C,EAAMwK,GAM1B,OALK8uC,EAAc9uC,EAAO,QACpB40B,EAAOp/B,IAASwK,EAAMppC,SAAW,GAAK4+B,EAAK2N,aAAeyxB,EAAOp/B,EAAK2N,eACxEnD,EAAM4W,OAAO,MAGV5W,EAGT,SAAS6sC,EAAar3C,EAAMwK,GAC1B,GAAI40B,EAAOp/B,IAAoC,MAA3BA,EAAK+5C,qBAA+BT,EAAc9uC,EAAO,QAAS,CACpF,IAAIwvC,EAAah6C,EAAK+W,aAAelV,WAAW83C,EAAa35C,GAAMi6C,WAAap4C,WAAW83C,EAAa35C,GAAMk6C,cAC1Gl6C,EAAK+5C,mBAAmBI,UAAYn6C,EAAKm6C,UAAyB,IAAbH,GACvDxvC,EAAM4W,OAAO,MAGjB,OAAO5W,EAGT,SAAS2tC,EAAYn4C,EAAMwK,GACzB,IAAIiL,EAAU,GACV50B,EAAQmf,EAAKnf,OAAS,GAc1B,OAbIA,EAAMu5D,WAA8C,WAAjCT,EAAa35C,GAAMo6C,YACxC3kC,EAAQ4kC,QAAS,GAEfx5D,EAAMy5D,aAAeX,EAAa35C,GAAMs6C,WAAWxvB,WAAW,SAAWnoB,SAASg3C,EAAa35C,GAAMs6C,aAAe,OACtH7kC,EAAQ8kC,MAAO,GAEbj2E,OAAOD,KAAKoxC,GAASr0C,OAAS,IAChCopC,EAAQkvC,EAAYlvC,EAAOiL,IAEzB5T,WAAWhhB,EAAM25D,YAAc,GAAK,IAEtChwC,GAAQ,IAAIkb,EAAa36C,SAAUq2C,OAAO,MAAMn9C,OAAOumC,IAElDA,EAGT,SAAS4sC,EAAUp3C,EAAMwK,GACvB,IAAI6W,EAAOrhB,EAAKn8B,KAEhB,GAAgC,QAA5Bm8B,EAAKK,WAAW7e,QAClB,OAAOgpB,EAAM4W,OAAOC,EAAKx/B,QAE3B,GAA2B,IAAvBw/B,EAAKx/B,OAAOzgB,QAAgB4+B,EAAKK,WAAWZ,UAAUiN,SAAS,gBACjE,OAAOlC,EAET,IAAKmvC,EAAa35C,EAAKK,YAAYo6C,WAAW3vB,WAAW,OAAQ,CAE/D,IAAI4vB,EAAW,SAAkBC,EAAUt1C,GAEzC,OADAA,EAAQA,EAAMxvB,QAAQ,aAAc,IAC7BwvB,EAAMjkC,OAAS,GAAKu5E,EAAW,IAAMt1C,GAE9Cgc,EAAOA,EAAKxrC,QAAQ,QAAS,KAAKA,QAAQ,MAAO,KACjDwrC,EAAOA,EAAKxrC,QAAQ,SAAU6kE,EAAS90E,KAAK80E,GAAU,KAC1B,MAAxB16C,EAAK6uC,iBAA2BzP,EAAOp/B,EAAKK,aAAuC,MAAxBL,EAAK6uC,iBAA2BzP,EAAOp/B,EAAK6uC,oBACzGxtB,EAAOA,EAAKxrC,QAAQ,OAAQ6kE,EAAS90E,KAAK80E,GAAU,MAE9B,MAApB16C,EAAK2N,aAAuByxB,EAAOp/B,EAAKK,aAAmC,MAApBL,EAAK2N,aAAuByxB,EAAOp/B,EAAK2N,gBACjG0T,EAAOA,EAAKxrC,QAAQ,OAAQ6kE,EAAS90E,KAAK80E,GAAU,KAGxD,OAAOlwC,EAAM4W,OAAOC,GA5MtBo3B,EAAU/pB,SAAW,CACnBiqB,SAAU,GACVE,aAAa,GA6Mfr4E,EAAQuK,QAAU0tE,EAClBj4E,EAAQg3E,gBAAkBA,EAC1Bh3E,EAAQ+2E,UAAYA,EACpB/2E,EAAQ82E,aAAeA,EACvB92E,EAAQ62E,aAAeA,EACvB72E,EAAQ42E,UAAYA,GAId,SAAUv6B,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZa,EAAU/I,EAAoB,GAE9BgJ,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIo0B,EAAO,SAAU9nB,GAGnB,SAAS8nB,IAGP,OAFAz0B,EAAgBj8C,KAAM0wE,GAEfx0B,EAA2Bl8C,MAAO0wE,EAAKlsD,WAAapqB,OAAO+gD,eAAeu1B,IAAO/1E,MAAMqF,KAAMlF,YAuBtG,OA5BAshD,EAAUs0B,EAAM9nB,GAQhBjO,EAAa+1B,EAAM,CAAC,CAClBz1E,IAAK,WACLM,MAAO,SAAkB2R,GACvB6tC,EAAK21B,EAAKxoE,UAAUsc,WAAapqB,OAAO+gD,eAAeu1B,EAAKxoE,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMkN,GACjGlN,KAAKy8C,QAAQnlC,UAAYtX,KAAKw9C,QAAQlmC,QAAQ,IAChDtX,KAAKkyD,YAAYlyD,KAAKw9C,QAAQhH,aAGhC,CAAC,CACHv7C,IAAK,SACLM,MAAO,WACL,OAAOw/C,EAAK21B,EAAKlsD,WAAapqB,OAAO+gD,eAAeu1B,GAAO,SAAU1wE,MAAMoI,KAAKpI,QAEjF,CACD/E,IAAK,UACLM,MAAO,WACL,OAAO,MAIJm1E,EA7BE,CA8BT50B,EAASj7C,SAEX6vE,EAAKl6B,SAAW,OAChBk6B,EAAKp5D,QAAU,CAAC,SAAU,KAE1BhhB,EAAQuK,QAAU6vE,GAIZ,SAAU/9B,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQq6E,YAAcr6E,EAAQuK,aAAUoG,EAExC,IAAI62C,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjB8yC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfw3B,EAAczI,EAAoB,GAElC0I,EAAeF,EAAuBC,GAEtCE,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCqa,EAAShjB,EAAoB,GAE7BijB,EAAUza,EAAuBwa,GAEjCtX,EAAU1L,EAAoB,IAE9B2L,EAAWnD,EAAuBkD,GAElCJ,EAAUtL,EAAoB,GAE9BuL,EAAW/C,EAAuB8C,GAEtC,SAAS9C,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAASJ,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIsC,GAAQ,EAAIH,EAAS59C,SAAS,iBAE9B+vE,EAAU,SAAU1a,GAGtB,SAAS0a,EAAQxpB,EAAOviC,GACtBo3B,EAAgBj8C,KAAM4wE,GAEtB,IAaMC,EAbFhmE,EAAQqxC,EAA2Bl8C,MAAO4wE,EAAQpsD,WAAapqB,OAAO+gD,eAAey1B,IAAUxoE,KAAKpI,KAAMonD,EAAOviC,IAErH,GAAI/tB,MAAM8R,QAAQiC,EAAMga,QAAQ0hB,WAAY,CAC1C,IAAIA,EAAY9uB,SAASie,cAAc,OACvCi7C,EAAYpqC,EAAW17B,EAAMga,QAAQ0hB,WACrC6gB,EAAM7gB,UAAUpQ,WAAWqN,aAAa+C,EAAW6gB,EAAM7gB,WACzD17B,EAAM07B,UAAYA,MAC0B,kBAA5B17B,EAAMga,QAAQ0hB,UAC9B17B,EAAM07B,UAAY9uB,SAAS80B,cAAc1hC,EAAMga,QAAQ0hB,WAEvD17B,EAAM07B,UAAY17B,EAAMga,QAAQ0hB,UAElC,OAAM17B,EAAM07B,qBAAqBsK,aAKjChmC,EAAM07B,UAAUhR,UAAUC,IAAI,cAC9B3qB,EAAMimE,SAAW,GACjBjmE,EAAMiS,SAAW,GACjB1iB,OAAOD,KAAK0Q,EAAMga,QAAQ/H,UAAU9hB,SAAQ,SAAUiqB,GACpDpa,EAAMkmE,WAAW9rD,EAAQpa,EAAMga,QAAQ/H,SAASmI,OAElD,GAAGjqB,QAAQoN,KAAKyC,EAAM07B,UAAUzF,iBAAiB,mBAAmB,SAAUtpB,GAC5E3M,EAAMyjD,OAAO92C,MAEf3M,EAAMu8C,MAAMjlD,GAAG4zD,EAAQl1D,QAAQ8+C,OAAOC,eAAe,SAAUvzC,EAAM4iC,GAC/D5iC,IAAS0pD,EAAQl1D,QAAQ8+C,OAAOuH,kBAClCr8C,EAAMs1C,OAAOlR,MAGjBpkC,EAAMu8C,MAAMjlD,GAAG4zD,EAAQl1D,QAAQ8+C,OAAOsH,iBAAiB,WACrD,IAAI+pB,EAAwBnmE,EAAMu8C,MAAM/H,UAAUuD,WAC9CquB,EAAyBnzB,EAAekzB,EAAuB,GAC/D/hC,EAAQgiC,EAAuB,GAGnCpmE,EAAMs1C,OAAOlR,MAERpkC,IAxBEgmE,EAAOjyB,EAAM5nB,MAAM,iCAAkCnsB,EAAMga,SAAUq3B,EAA2BrxC,EAAOgmE,IA0IlH,OA9JAz0B,EAAUw0B,EAAS1a,GA+CnBvb,EAAai2B,EAAS,CAAC,CACrB31E,IAAK,aACLM,MAAO,SAAoB0pB,EAAQta,GACjC3K,KAAK8c,SAASmI,GAAUta,IAEzB,CACD1P,IAAK,SACLM,MAAO,SAAgBic,GACrB,IAAIvM,EAASjL,KAETilB,EAAS,GAAGmvB,KAAKhsC,KAAKoP,EAAM+d,WAAW,SAAUD,GACnD,OAAoC,IAA7BA,EAAU99B,QAAQ,UAE3B,GAAKytB,EAAL,CAKA,GAJAA,EAASA,EAAO5c,MAAM,MAAMnR,QACN,WAAlBsgB,EAAMF,SACRE,EAAMmf,aAAa,OAAQ,UAEA,MAAzB32B,KAAK8c,SAASmI,GAAiB,CACjC,GAAmC,MAA/BjlB,KAAKonD,MAAMlI,OAAOC,WAA4D,MAAvCn/C,KAAKonD,MAAMlI,OAAOC,UAAUl6B,GAErE,YADA25B,EAAMh1C,KAAK,wCAAyCqb,EAAQzN,GAG9D,GAAyC,MAArCkkC,EAAY76C,QAAQwzC,MAAMpvB,GAE5B,YADA25B,EAAMh1C,KAAK,2CAA4Cqb,EAAQzN,GAInE,IAAIivC,EAA8B,WAAlBjvC,EAAMF,QAAuB,SAAW,QACxDE,EAAMipB,iBAAiBgmB,GAAW,SAAU13C,GAC1C,IAAIxT,OAAQ,EACZ,GAAsB,WAAlBic,EAAMF,QAAsB,CAC9B,GAAIE,EAAMu3B,cAAgB,EAAG,OAC7B,IAAI59B,EAAWqG,EAAMqN,QAAQrN,EAAMu3B,eAEjCxzC,GADE4V,EAASqrD,aAAa,cAGhBrrD,EAAS5V,QAAS,QAI1BA,GADEic,EAAM+d,UAAUiN,SAAS,eAGnBhrB,EAAMjc,QAAUic,EAAMglD,aAAa,UAE7CztD,EAAEqU,iBAEJnY,EAAOm8C,MAAMzlC,QAEb,IAAIuvD,EAAwBjmE,EAAOm8C,MAAM/H,UAAUuD,WAC/CuuB,EAAyBrzB,EAAeozB,EAAuB,GAC/DjiC,EAAQkiC,EAAuB,GAEnC,GAA+B,MAA3BlmE,EAAO6R,SAASmI,GAClBha,EAAO6R,SAASmI,GAAQ7c,KAAK6C,EAAQ1P,QAChC,GAAImgD,EAAY76C,QAAQwzC,MAAMpvB,GAAQ/c,qBAAqBwzC,EAAY76C,QAAQ6zC,MAAO,CAE3F,GADAn5C,EAAQ61E,OAAO,SAAWnsD,IACrB1pB,EAAO,OACZ0P,EAAOm8C,MAAM8S,gBAAe,IAAI1e,EAAa36C,SAAUw2C,OAAOpI,EAAMx+B,OAAOunC,OAAO/I,EAAM/3C,QAAQggD,OAAOh8C,EAAgB,GAAI+pB,EAAQ1pB,IAASw6D,EAAQl1D,QAAQwgD,QAAQiD,WAEpKr5C,EAAOm8C,MAAMniC,OAAOA,EAAQ1pB,EAAOw6D,EAAQl1D,QAAQwgD,QAAQiD,MAE7Dr5C,EAAOk1C,OAAOlR,MAGhBjvC,KAAK8wE,SAASx4E,KAAK,CAAC2sB,EAAQzN,OAE7B,CACDvc,IAAK,SACLM,MAAO,SAAgB0zC,GACrB,IAAI1D,EAAmB,MAAT0D,EAAgB,GAAKjvC,KAAKonD,MAAM3E,UAAUxT,GACxDjvC,KAAK8wE,SAAS91E,SAAQ,SAAUs0E,GAC9B,IAAIC,EAAQzxB,EAAewxB,EAAM,GAC7BrqD,EAASsqD,EAAM,GACf/3D,EAAQ+3D,EAAM,GAElB,GAAsB,WAAlB/3D,EAAMF,QAAsB,CAC9B,IAAIk4B,OAAS,EACb,GAAa,MAATP,EACFO,EAAS,UACJ,GAAuB,MAAnBjE,EAAQtmB,GACjBuqB,EAASh4B,EAAM+0B,cAAc,yBACxB,IAAKz1C,MAAM8R,QAAQ2iC,EAAQtmB,IAAU,CAC1C,IAAI1pB,EAAQgwC,EAAQtmB,GACC,kBAAV1pB,IACTA,EAAQA,EAAMoQ,QAAQ,MAAO,QAE/B6jC,EAASh4B,EAAM+0B,cAAc,iBAAmBhxC,EAAQ,MAE5C,MAAVi0C,GACFh4B,EAAMjc,MAAQ,GACdic,EAAMu3B,eAAiB,GAEvBS,EAAOr+B,UAAW,OAGpB,GAAa,MAAT89B,EACFz3B,EAAM+d,UAAUE,OAAO,kBAClB,GAAIje,EAAMglD,aAAa,SAAU,CAGtC,IAAIO,EAAWxxB,EAAQtmB,KAAYzN,EAAMmwB,aAAa,UAA+B,MAAnB4D,EAAQtmB,IAAmBsmB,EAAQtmB,GAAQ9c,aAAeqP,EAAMmwB,aAAa,UAA+B,MAAnB4D,EAAQtmB,KAAoBzN,EAAMmwB,aAAa,SAC1MnwB,EAAM+d,UAAU3T,OAAO,YAAam7C,QAEpCvlD,EAAM+d,UAAU3T,OAAO,YAAgC,MAAnB2pB,EAAQtmB,WAO/C2rD,EA/JK,CAgKZvyB,EAASx9C,SAIX,SAASwwE,EAAU9qC,EAAWthB,EAAQ1pB,GACpC,IAAIic,EAAQC,SAASie,cAAc,UACnCle,EAAMmf,aAAa,OAAQ,UAC3Bnf,EAAM+d,UAAUC,IAAI,MAAQvQ,GACf,MAAT1pB,IACFic,EAAMjc,MAAQA,GAEhBgrC,EAAU3P,YAAYpf,GAGxB,SAASm5D,EAAYpqC,EAAW+qC,GACzBx6E,MAAM8R,QAAQ0oE,EAAO,MACxBA,EAAS,CAACA,IAEZA,EAAOt2E,SAAQ,SAAU81E,GACvB,IAAIS,EAAQ95D,SAASie,cAAc,QACnC67C,EAAMh8C,UAAUC,IAAI,cACpBs7C,EAAS91E,SAAQ,SAAUoyB,GACzB,GAAuB,kBAAZA,EACTikD,EAAUE,EAAOnkD,OACZ,CACL,IAAInI,EAAS7qB,OAAOD,KAAKizB,GAAS,GAC9B7xB,EAAQ6xB,EAAQnI,GAChBnuB,MAAM8R,QAAQrN,GAChBi2E,EAAUD,EAAOtsD,EAAQ1pB,GAEzB81E,EAAUE,EAAOtsD,EAAQ1pB,OAI/BgrC,EAAU3P,YAAY26C,MAI1B,SAASC,EAAUjrC,EAAWthB,EAAQy3B,GACpC,IAAIllC,EAAQC,SAASie,cAAc,UACnCle,EAAM+d,UAAUC,IAAI,MAAQvQ,GAC5By3B,EAAO1hD,SAAQ,SAAUO,GACvB,IAAIi0C,EAAS/3B,SAASie,cAAc,WACtB,IAAVn6B,EACFi0C,EAAO7Y,aAAa,QAASp7B,GAE7Bi0C,EAAO7Y,aAAa,WAAY,YAElCnf,EAAMof,YAAY4Y,MAEpBjJ,EAAU3P,YAAYpf,GAhDxBo5D,EAAQpsB,SAAW,GAmDnBosB,EAAQpsB,SAAW,CACjBje,UAAW,KACXzpB,SAAU,CACR20D,MAAO,WACL,IAAIjmE,EAASxL,KAETivC,EAAQjvC,KAAKonD,MAAM7F,eACvB,GAAa,MAATtS,EACJ,GAAoB,GAAhBA,EAAM/3C,OAAa,CACrB,IAAIq0C,EAAUvrC,KAAKonD,MAAM3E,YACzBroD,OAAOD,KAAKoxC,GAASvwC,SAAQ,SAAU1B,GAEoC,MAArEoiD,EAAY76C,QAAQwzC,MAAM/6C,EAAMoiD,EAAY76C,QAAQqzC,MAAMiC,SAC5D3qC,EAAO47C,MAAMniC,OAAO3rB,GAAM,WAI9B0G,KAAKonD,MAAMvD,aAAa5U,EAAO8mB,EAAQl1D,QAAQwgD,QAAQiD,OAG3DotB,UAAW,SAAmBn2E,GAC5B,IAAI+C,EAAQ0B,KAAKonD,MAAM3E,YAAY,SACrB,QAAVlnD,GAA4B,MAAT+C,EACrB0B,KAAKonD,MAAMniC,OAAO,QAAS,QAAS8wC,EAAQl1D,QAAQwgD,QAAQiD,MAClD/oD,GAAmB,UAAV+C,GACnB0B,KAAKonD,MAAMniC,OAAO,SAAS,EAAO8wC,EAAQl1D,QAAQwgD,QAAQiD,MAE5DtkD,KAAKonD,MAAMniC,OAAO,YAAa1pB,EAAOw6D,EAAQl1D,QAAQwgD,QAAQiD,OAEhEiV,OAAQ,SAAgBh+D,GACtB,IAAI0zC,EAAQjvC,KAAKonD,MAAM7F,eACnBhW,EAAUvrC,KAAKonD,MAAM3E,UAAUxT,GAC/BsqB,EAAS9gC,SAAS8S,EAAQguB,QAAU,GACxC,GAAc,OAAVh+D,GAA4B,OAAVA,EAAgB,CACpC,IAAIwpD,EAAqB,OAAVxpD,EAAiB,GAAK,EACX,QAAtBgwC,EAAQmmC,YAAqB3sB,IAAa,GAC9C/kD,KAAKonD,MAAMniC,OAAO,SAAUs0C,EAASxU,EAAUgR,EAAQl1D,QAAQwgD,QAAQiD,QAG3EqtB,KAAM,SAAcp2E,IACJ,IAAVA,IACFA,EAAQ61E,OAAO,oBAEjBpxE,KAAKonD,MAAMniC,OAAO,OAAQ1pB,EAAOw6D,EAAQl1D,QAAQwgD,QAAQiD,OAE3DuI,KAAM,SAActxD,GAClB,IAAI0zC,EAAQjvC,KAAKonD,MAAM7F,eACnBhW,EAAUvrC,KAAKonD,MAAM3E,UAAUxT,GACrB,UAAV1zC,EACsB,YAApBgwC,EAAQ,SAA6C,cAApBA,EAAQ,QAC3CvrC,KAAKonD,MAAMniC,OAAO,QAAQ,EAAO8wC,EAAQl1D,QAAQwgD,QAAQiD,MAEzDtkD,KAAKonD,MAAMniC,OAAO,OAAQ,YAAa8wC,EAAQl1D,QAAQwgD,QAAQiD,MAGjEtkD,KAAKonD,MAAMniC,OAAO,OAAQ1pB,EAAOw6D,EAAQl1D,QAAQwgD,QAAQiD,SAMjEhuD,EAAQuK,QAAU+vE,EAClBt6E,EAAQq6E,YAAcA,GAIhB,SAAUh+B,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,uOAIX,SAAUq8C,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZgmB,EAAUluB,EAAoB,IAE9BmuB,EAAW3lB,EAAuB0lB,GAEtC,SAAS1lB,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIs1B,EAAc,SAAUC,GAG1B,SAASD,EAAY/vC,EAAQ91B,GAC3BkwC,EAAgBj8C,KAAM4xE,GAEtB,IAAI/mE,EAAQqxC,EAA2Bl8C,MAAO4xE,EAAYptD,WAAapqB,OAAO+gD,eAAey2B,IAAcxpE,KAAKpI,KAAM6hC,IAOtH,OALAh3B,EAAMkB,MAAMs6B,UAAYt6B,EACxBlB,EAAM07B,UAAUhR,UAAUC,IAAI,mBAC9B,GAAGntB,MAAMD,KAAKyC,EAAM07B,UAAUzF,iBAAiB,mBAAoB,EAAG,GAAG9lC,SAAQ,SAAUuQ,GACzFA,EAAKgqB,UAAUC,IAAI,iBAEd3qB,EA0BT,OAtCAuxC,EAAUw1B,EAAaC,GAevBl3B,EAAai3B,EAAa,CAAC,CACzB32E,IAAK,YACLM,MAAO,SAAmBi0C,GACxB,IAAIjkC,EAAOwvC,EAAK62B,EAAY1pE,UAAUsc,WAAapqB,OAAO+gD,eAAey2B,EAAY1pE,WAAY,YAAalI,MAAMoI,KAAKpI,KAAMwvC,GAE/H,OADAjkC,EAAKoL,MAAMm7D,gBAAkBtiC,EAAO7H,aAAa,UAAY,GACtDp8B,IAER,CACDtQ,IAAK,aACLM,MAAO,SAAoBgQ,EAAMsxD,GAC/B9hB,EAAK62B,EAAY1pE,UAAUsc,WAAapqB,OAAO+gD,eAAey2B,EAAY1pE,WAAY,aAAclI,MAAMoI,KAAKpI,KAAMuL,EAAMsxD,GAC3H,IAAIkV,EAAa/xE,KAAK+L,MAAMwgC,cAAc,mBACtChxC,EAAQgQ,GAAOA,EAAKo8B,aAAa,eAAsB,GACvDoqC,IACyB,SAAvBA,EAAWz6D,QACby6D,EAAWp7D,MAAMq7D,OAASz2E,EAE1Bw2E,EAAWp7D,MAAMs7D,KAAO12E,OAMzBq2E,EAvCS,CAwChB3Q,EAASpgE,SAEXvK,EAAQuK,QAAU+wE,GAIZ,SAAUj/B,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZgmB,EAAUluB,EAAoB,IAE9BmuB,EAAW3lB,EAAuB0lB,GAEtC,SAAS1lB,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI41B,EAAa,SAAUL,GAGzB,SAASK,EAAWrwC,EAAQogC,GAC1BhmB,EAAgBj8C,KAAMkyE,GAEtB,IAAIrnE,EAAQqxC,EAA2Bl8C,MAAOkyE,EAAW1tD,WAAapqB,OAAO+gD,eAAe+2B,IAAa9pE,KAAKpI,KAAM6hC,IAQpH,OANAh3B,EAAM07B,UAAUhR,UAAUC,IAAI,kBAC9B,GAAGx6B,QAAQoN,KAAKyC,EAAM07B,UAAUzF,iBAAiB,oBAAoB,SAAUv1B,GAC7EA,EAAK86B,UAAY47B,EAAM12D,EAAKo8B,aAAa,eAAiB,OAE5D98B,EAAMsnE,YAActnE,EAAM07B,UAAUgG,cAAc,gBAClD1hC,EAAM4xD,WAAW5xD,EAAMsnE,aAChBtnE,EAYT,OAzBAuxC,EAAU81B,EAAYL,GAgBtBl3B,EAAau3B,EAAY,CAAC,CACxBj3E,IAAK,aACLM,MAAO,SAAoBgQ,EAAMsxD,GAC/B9hB,EAAKm3B,EAAWhqE,UAAUsc,WAAapqB,OAAO+gD,eAAe+2B,EAAWhqE,WAAY,aAAclI,MAAMoI,KAAKpI,KAAMuL,EAAMsxD,GACzHtxD,EAAOA,GAAQvL,KAAKmyE,YACpBnyE,KAAK+L,MAAMs6B,UAAY96B,EAAK86B,cAIzB6rC,EA1BQ,CA2BfjR,EAASpgE,SAEXvK,EAAQuK,QAAUqxE,GAIZ,SAAUv/B,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEnB,SAASk4B,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,IAAIuqE,EAAU,WACZ,SAASA,EAAQhrB,EAAO2b,GACtB,IAAIl4D,EAAQ7K,KAEZi8C,EAAgBj8C,KAAMoyE,GAEtBpyE,KAAKonD,MAAQA,EACbpnD,KAAK+iE,gBAAkBA,GAAmBtrD,SAAS0pB,KACnDnhC,KAAKyyC,KAAO2U,EAAMrI,aAAa,cAC/B/+C,KAAKyyC,KAAKpM,UAAYrmC,KAAKsI,YAAY+pE,SACnCryE,KAAKonD,MAAM3U,OAASzyC,KAAKonD,MAAMpI,oBACjCh/C,KAAKonD,MAAM3U,KAAKhS,iBAAiB,UAAU,WACzC51B,EAAM4nC,KAAK97B,MAAMo5D,WAAa,EAAIllE,EAAMu8C,MAAM3U,KAAK0O,UAAY,QAGnEnhD,KAAKstB,OA4CP,OAzCAqtB,EAAay3B,EAAS,CAAC,CACrBn3E,IAAK,OACLM,MAAO,WACLyE,KAAKyyC,KAAKld,UAAUC,IAAI,eAEzB,CACDv6B,IAAK,WACLM,MAAO,SAAkB+2E,GACvB,IAAIr0E,EAAOq0E,EAAUr0E,KAAOq0E,EAAUz0E,MAAQ,EAAImC,KAAKyyC,KAAK5T,YAAc,EAEtEphC,EAAM60E,EAAU90E,OAASwC,KAAKonD,MAAM3U,KAAK0O,UAC7CnhD,KAAKyyC,KAAK97B,MAAM1Y,KAAOA,EAAO,KAC9B+B,KAAKyyC,KAAK97B,MAAMlZ,IAAMA,EAAM,KAC5BuC,KAAKyyC,KAAKld,UAAUE,OAAO,WAC3B,IAAI2sB,EAAkBpiD,KAAK+iE,gBAAgB51B,wBACvColC,EAAavyE,KAAKyyC,KAAKtF,wBACvBhxB,EAAQ,EASZ,GARIo2D,EAAWv0E,MAAQokD,EAAgBpkD,QACrCme,EAAQimC,EAAgBpkD,MAAQu0E,EAAWv0E,MAC3CgC,KAAKyyC,KAAK97B,MAAM1Y,KAAOA,EAAOke,EAAQ,MAEpCo2D,EAAWt0E,KAAOmkD,EAAgBnkD,OACpCke,EAAQimC,EAAgBnkD,KAAOs0E,EAAWt0E,KAC1C+B,KAAKyyC,KAAK97B,MAAM1Y,KAAOA,EAAOke,EAAQ,MAEpCo2D,EAAW/0E,OAAS4kD,EAAgB5kD,OAAQ,CAC9C,IAAIM,EAASy0E,EAAW/0E,OAAS+0E,EAAW90E,IACxC+0E,EAAgBF,EAAU90E,OAAS80E,EAAU70E,IAAMK,EACvDkC,KAAKyyC,KAAK97B,MAAMlZ,IAAMA,EAAM+0E,EAAgB,KAC5CxyE,KAAKyyC,KAAKld,UAAUC,IAAI,WAE1B,OAAOrZ,IAER,CACDlhB,IAAK,OACLM,MAAO,WACLyE,KAAKyyC,KAAKld,UAAUE,OAAO,cAC3Bz1B,KAAKyyC,KAAKld,UAAUE,OAAO,iBAIxB28C,EA3DK,GA8Dd97E,EAAQuK,QAAUuxE,GAIZ,SAAUz/B,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIuiD,EAAiB,WAAc,SAASC,EAAclmD,EAAKb,GAAK,IAAIkuB,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKpe,EAAW,IAAM,IAAK,IAAiCqe,EAA7BC,EAAK1tB,EAAI6Q,OAAOC,cAAmBwc,GAAMG,EAAKC,EAAGC,QAAQC,MAAON,GAAK,EAA6B,GAArBD,EAAK5sB,KAAKgtB,EAAG/pB,OAAYvE,GAAKkuB,EAAKhuB,SAAWF,EAAG,MAAW,MAAO0uB,GAAON,GAAK,EAAMC,EAAKK,EAAO,QAAU,KAAWP,GAAMI,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUrtB,EAAKb,GAAK,GAAIF,MAAM8R,QAAQ/Q,GAAQ,OAAOA,EAAY,GAAI6Q,OAAOC,YAAYvO,OAAOvC,GAAQ,OAAOkmD,EAAclmD,EAAKb,GAAa,MAAM,IAAI6Q,UAAU,yDAAjkB,GAEjBkzC,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZL,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfq3B,EAAUtI,EAAoB,GAE9BuI,EAAWC,EAAuBF,GAElC+J,EAAWrS,EAAoB,GAE/BsS,EAAY9J,EAAuB6J,GAEnCstB,EAAQ3/B,EAAoB,IAE5B4/B,EAASp3B,EAAuBm3B,GAEhCE,EAAQ7/B,EAAoB,IAE5B8/B,EAASt3B,EAAuBq3B,GAEhCr0B,EAAaxL,EAAoB,IAEjC+/B,EAAS//B,EAAoB,IAE7BggC,EAAUx3B,EAAuBu3B,GAErC,SAASv3B,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIy2B,EAAiB,CAAC,CAAC,CAAEz2E,OAAQ,CAAC,IAAK,IAAK,KAAK,KAAW,CAAC,OAAQ,SAAU,YAAa,QAAS,CAAC,CAAEuwD,KAAM,WAAa,CAAEA,KAAM,WAAa,CAAC,UAE7ImmB,EAAY,SAAUC,GAGxB,SAASD,EAAU5rB,EAAOviC,GACxBo3B,EAAgBj8C,KAAMgzE,GAES,MAA3BnuD,EAAQ+tB,QAAQkS,SAAwD,MAArCjgC,EAAQ+tB,QAAQkS,QAAQve,YAC7D1hB,EAAQ+tB,QAAQkS,QAAQve,UAAYwsC,GAGtC,IAAIloE,EAAQqxC,EAA2Bl8C,MAAOgzE,EAAUxuD,WAAapqB,OAAO+gD,eAAe63B,IAAY5qE,KAAKpI,KAAMonD,EAAOviC,IAGzH,OADAha,EAAMu8C,MAAM7gB,UAAUhR,UAAUC,IAAI,WAC7B3qB,EAkBT,OA9BAuxC,EAAU42B,EAAWC,GAerBt4B,EAAaq4B,EAAW,CAAC,CACvB/3E,IAAK,gBACLM,MAAO,SAAuBupD,GAC5BA,EAAQve,UAAUhR,UAAUC,IAAI,WAChCx1B,KAAKkzE,aAAa,GAAG7qE,MAAMD,KAAK08C,EAAQve,UAAUzF,iBAAiB,WAAYgyC,EAAQjyE,SACvFb,KAAKmzE,aAAa,GAAG9qE,MAAMD,KAAK08C,EAAQve,UAAUzF,iBAAiB,WAAYgyC,EAAQjyE,SACvFb,KAAK2hE,QAAU,IAAIyR,EAAYpzE,KAAKonD,MAAOpnD,KAAK6kB,QAAQq9B,QACpD4C,EAAQve,UAAUgG,cAAc,aAClCvsC,KAAKonD,MAAM7H,SAAS6W,WAAW,CAAEn7D,IAAK,IAAK4+D,UAAU,IAAQ,SAAU5qB,EAAO/hC,GAC5E43C,EAAQhoC,SAAS,QAAQ1U,KAAK08C,GAAU53C,EAAQ+X,OAAO0sD,aAMxDqB,EA/BO,CAgCdN,EAAO7xE,SAETmyE,EAAUxuB,UAAW,EAAInJ,EAASx6C,UAAS,EAAM,GAAI6xE,EAAO7xE,QAAQ2jD,SAAU,CAC5E5R,QAAS,CACPkS,QAAS,CACPhoC,SAAU,CACR60D,KAAM,SAAcp2E,GAClB,GAAIA,EAAO,CACT,IAAI0zC,EAAQjvC,KAAKonD,MAAM7F,eACvB,GAAa,MAATtS,GAAiC,GAAhBA,EAAM/3C,OAAa,OACxC,IAAIgsE,EAAUljE,KAAKonD,MAAMrE,QAAQ9T,GAC7B,iBAAiBzmC,KAAK06D,IAA2C,IAA/BA,EAAQ1rE,QAAQ,aACpD0rE,EAAU,UAAYA,GAExB,IAAIvB,EAAU3hE,KAAKonD,MAAM9H,MAAMqiB,QAC/BA,EAAQW,KAAK,OAAQY,QAErBljE,KAAKonD,MAAMniC,OAAO,QAAQ,SAQtC,IAAImuD,EAAc,SAAUC,GAG1B,SAASD,EAAYhsB,EAAOlF,GAC1BjG,EAAgBj8C,KAAMozE,GAEtB,IAAInoE,EAASixC,EAA2Bl8C,MAAOozE,EAAY5uD,WAAapqB,OAAO+gD,eAAei4B,IAAchrE,KAAKpI,KAAMonD,EAAOlF,IAG9H,OADAj3C,EAAOi4D,QAAUj4D,EAAOwnC,KAAKlG,cAAc,gBACpCthC,EA0DT,OAlEAmxC,EAAUg3B,EAAaC,GAWvB14B,EAAay4B,EAAa,CAAC,CACzBn4E,IAAK,SACLM,MAAO,WACL,IAAIiQ,EAASxL,KAEb+6C,EAAKq4B,EAAYlrE,UAAUsc,WAAapqB,OAAO+gD,eAAei4B,EAAYlrE,WAAY,SAAUlI,MAAMoI,KAAKpI,MAC3GA,KAAKyyC,KAAKlG,cAAc,eAAe9L,iBAAiB,SAAS,SAAUj8B,GACrEgH,EAAOinC,KAAKld,UAAUiN,SAAS,cACjCh3B,EAAOw3D,OAEPx3D,EAAO82D,KAAK,OAAQ92D,EAAO03D,QAAQttC,aAErCpxB,EAAM4e,oBAERpjB,KAAKyyC,KAAKlG,cAAc,eAAe9L,iBAAiB,SAAS,SAAUj8B,GACzE,GAAwB,MAApBgH,EAAO23D,UAAmB,CAC5B,IAAIl0B,EAAQzjC,EAAO23D,UACnB33D,EAAO43D,eACP53D,EAAO47C,MAAM3F,WAAWxS,EAAO,QAAQ,EAAOmW,EAAUvkD,QAAQwgD,QAAQiD,aACjE94C,EAAO23D,UAEhB3+D,EAAM4e,iBACN5X,EAAO8hB,UAETttB,KAAKonD,MAAMjlD,GAAGijD,EAAUvkD,QAAQ8+C,OAAOuH,kBAAkB,SAAUjY,EAAOyhB,EAAU31D,GAClF,GAAa,MAATk0C,EAAJ,CACA,GAAqB,IAAjBA,EAAM/3C,QAAgB6D,IAAWqqD,EAAUvkD,QAAQwgD,QAAQiD,KAAM,CACnE,IAAIkV,EAAwBhuD,EAAO47C,MAAMlI,OAAO8J,WAAW4pB,EAAO/xE,QAASouC,EAAMx+B,OAC7EgpD,EAAyB3b,EAAe0b,EAAuB,GAC/DmY,EAAOlY,EAAuB,GAC9Br0B,EAASq0B,EAAuB,GAEpC,GAAY,MAARkY,EAAc,CAChBnmE,EAAO23D,UAAY,IAAI7kB,EAAW+F,MAAMpV,EAAMx+B,MAAQ20B,EAAQusC,EAAKz6E,UACnE,IAAIgsE,EAAU0P,EAAO/xE,QAAQ0qC,QAAQomC,EAAKl1B,SAK1C,OAJAjxC,EAAO03D,QAAQttC,YAAcstC,EAC7B13D,EAAO03D,QAAQvsC,aAAa,OAAQusC,GACpC13D,EAAOsX,YACPtX,EAAO0nB,SAAS1nB,EAAO47C,MAAMjF,UAAU32C,EAAO23D,yBAIzC33D,EAAO23D,UAEhB33D,EAAO8hB,aAGV,CACDryB,IAAK,OACLM,MAAO,WACLw/C,EAAKq4B,EAAYlrE,UAAUsc,WAAapqB,OAAO+gD,eAAei4B,EAAYlrE,WAAY,OAAQlI,MAAMoI,KAAKpI,MACzGA,KAAKyyC,KAAK9J,gBAAgB,iBAIvByqC,EAnES,CAoEhBX,EAAM9R,aAERyS,EAAYf,SAAW,CAAC,0FAA2F,mGAAoG,4BAA6B,6BAA6B95E,KAAK,IAEtRjC,EAAQuK,QAAUmyE,GAIZ,SAAUrgC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAI+3E,EAAQxgC,EAAoB,IAE5BygC,EAASj4B,GAAuBg4B,GAEhC9F,EAAS16B,EAAoB,IAE7B46B,EAAa56B,EAAoB,IAEjC0gC,EAAU1gC,EAAoB,IAE9B2gC,EAAc3gC,EAAoB,IAElC4gC,EAAep4B,GAAuBm4B,GAEtCE,EAAU7gC,EAAoB,IAE9B8gC,EAAWt4B,GAAuBq4B,GAElCE,EAAQ/gC,EAAoB,IAE5BghC,EAASx4B,GAAuBu4B,GAEhCpG,EAAc36B,EAAoB,IAElCmsB,EAASnsB,EAAoB,IAE7B66B,EAAQ76B,EAAoB,IAE5B86B,EAAQ96B,EAAoB,IAE5BihC,EAAQjhC,EAAoB,IAE5BkhC,EAAS14B,GAAuBy4B,GAEhCE,EAAUnhC,EAAoB,IAE9BohC,EAAW54B,GAAuB24B,GAElCtB,EAAQ7/B,EAAoB,IAE5B8/B,EAASt3B,GAAuBq3B,GAEhCwB,EAAUrhC,EAAoB,IAE9BshC,EAAW94B,GAAuB64B,GAElCE,EAAUvhC,EAAoB,IAE9BwhC,EAAWh5B,GAAuB+4B,GAElCE,EAAazhC,EAAoB,IAEjC0hC,EAAcl5B,GAAuBi5B,GAErCE,EAAS3hC,EAAoB,IAE7B4hC,EAAUp5B,GAAuBm5B,GAEjCE,EAAS7hC,EAAoB,IAE7B8hC,EAAUt5B,GAAuBq5B,GAEjCxqB,EAAQrX,EAAoB,IAE5BsX,EAAS9O,GAAuB6O,GAEhC0qB,EAAW/hC,EAAoB,IAE/BgiC,EAAYx5B,GAAuBu5B,GAEnCE,EAAUjiC,EAAoB,IAE9BkiC,EAAW15B,GAAuBy5B,GAElCE,EAAWniC,EAAoB,IAE/BoiC,EAAY55B,GAAuB25B,GAEnCpC,EAAS//B,EAAoB,IAE7BggC,EAAUx3B,GAAuBu3B,GAEjC7R,EAAUluB,EAAoB,IAE9BmuB,EAAW3lB,GAAuB0lB,GAElCJ,EAAe9tB,EAAoB,IAEnC+tB,EAAgBvlB,GAAuBslB,GAEvCE,EAAchuB,EAAoB,IAElCiuB,EAAezlB,GAAuBwlB,GAEtCI,EAAWpuB,EAAoB,IAE/BquB,EAAY7lB,GAAuB4lB,GAEnCiU,EAAUriC,EAAoB,KAE9BsiC,EAAW95B,GAAuB65B,GAElCE,GAAQviC,EAAoB,IAE5BwiC,GAASh6B,GAAuB+5B,IAEpC,SAAS/5B,GAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvFi4E,EAAO1yE,QAAQyzC,SAAS,CACtB,kCAAmCo5B,EAAWtO,mBAE9C,0BAA2BoO,EAAO3O,WAClC,+BAAgC4O,EAAYzO,gBAC5C,0BAA2BC,EAAOhE,WAClC,8BAA+ByS,EAAWvO,eAC1C,yBAA0BwO,EAAMtO,UAChC,yBAA0BuO,EAAMnO,UAEhC,0BAA2B+N,EAAO5O,WAClC,+BAAgC6O,EAAY1O,gBAC5C,0BAA2BE,EAAOjE,WAClC,8BAA+B0S,EAAWxO,eAC1C,yBAA0ByO,EAAMrO,UAChC,yBAA0BsO,EAAMpO,YAC/B,GAEH+T,EAAO1yE,QAAQyzC,SAAS,CACtB,gBAAiBk5B,EAAO3O,WACxB,oBAAqB6O,EAAWvO,eAChC,iBAAkBqU,EAAQ+B,YAE1B,qBAAsB9H,EAAY1O,gBAClC,gBAAiBE,EAAOjE,WACxB,eAAgB2S,EAAMtO,UACtB,eAAgBuO,EAAMnO,UAEtB,qBAAsBiU,EAAa7yE,QACnC,qBAAsBupD,EAAOvpD,QAC7B,iBAAkB+yE,EAAS/yE,QAC3B,eAAgBizE,EAAOjzE,QAEvB,eAAgBmzE,EAAOnzE,QACvB,eAAgBspD,EAAM1B,KACtB,iBAAkByrB,EAASrzE,QAC3B,eAAgB+xE,EAAO/xE,QACvB,iBAAkBuzE,EAASvzE,QAC3B,iBAAkByzE,EAASzzE,QAC3B,oBAAqB2zE,EAAY3zE,QAEjC,gBAAiB6zE,EAAQ7zE,QACzB,gBAAiB+zE,EAAQ/zE,QAEzB,oBAAqBgzE,EAAM2B,SAE3B,kBAAmBV,EAAUj0E,QAC7B,iBAAkBm0E,EAASn0E,QAC3B,kBAAmBq0E,EAAUr0E,QAE7B,gBAAiBu0E,EAASv0E,QAC1B,cAAey0E,GAAOz0E,QAEtB,WAAYiyE,EAAQjyE,QACpB,YAAaogE,EAASpgE,QACtB,iBAAkBkgE,EAAalgE,QAC/B,kBAAmBggE,EAAchgE,QACjC,aAAcsgE,EAAUtgE,UACvB,GAEHvK,EAAQuK,QAAU0yE,EAAO1yE,SAInB,SAAU8xC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQi/E,iBAActuE,EAEtB,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIm5B,EAAkB,SAAUta,GAG9B,SAASsa,IAGP,OAFAx5B,EAAgBj8C,KAAMy1E,GAEfv5B,EAA2Bl8C,MAAOy1E,EAAgBjxD,WAAapqB,OAAO+gD,eAAes6B,IAAkB96E,MAAMqF,KAAMlF,YA6B5H,OAlCAshD,EAAUq5B,EAAiBta,GAQ3BxgB,EAAa86B,EAAiB,CAAC,CAC7Bx6E,IAAK,MACLM,MAAO,SAAau6B,EAAMv6B,GACxB,GAAc,OAAVA,GAA4B,OAAVA,EAAgB,CACpC,IAAIg+D,EAASv5D,KAAKzE,MAAMu6B,IAAS,EACjCv6B,EAAkB,OAAVA,EAAiBg+D,EAAS,EAAIA,EAAS,EAEjD,OAAc,IAAVh+D,GACFyE,KAAKy1B,OAAOK,IACL,GAEAilB,EAAK06B,EAAgBvtE,UAAUsc,WAAapqB,OAAO+gD,eAAes6B,EAAgBvtE,WAAY,MAAOlI,MAAMoI,KAAKpI,KAAM81B,EAAMv6B,KAGtI,CACDN,IAAK,SACLM,MAAO,SAAgBu6B,EAAMv6B,GAC3B,OAAOw/C,EAAK06B,EAAgBvtE,UAAUsc,WAAapqB,OAAO+gD,eAAes6B,EAAgBvtE,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAM81B,EAAMv6B,IAAUw/C,EAAK06B,EAAgBvtE,UAAUsc,WAAapqB,OAAO+gD,eAAes6B,EAAgBvtE,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAM81B,EAAM2C,SAASl9B,MAEzR,CACDN,IAAK,QACLM,MAAO,SAAeu6B,GACpB,OAAO2C,SAASsiB,EAAK06B,EAAgBvtE,UAAUsc,WAAapqB,OAAO+gD,eAAes6B,EAAgBvtE,WAAY,QAASlI,MAAMoI,KAAKpI,KAAM81B,UAAU7uB,MAI/IwuE,EAnCa,CAoCpB/5B,EAAY76C,QAAQk0C,WAAWpxB,OAE7B4xD,EAAc,IAAIE,EAAgB,SAAU,YAAa,CAC3D5xE,MAAO63C,EAAY76C,QAAQqzC,MAAMgC,MACjCiJ,UAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAGnC7oD,EAAQi/E,YAAcA,GAIhB,SAAU5iC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAImtD,EAAS5V,EAAoB,GAE7B6V,EAAUrN,EAAuBoN,GAErC,SAASpN,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIo5B,EAAa,SAAU5sB,GAGzB,SAAS4sB,IAGP,OAFAz5B,EAAgBj8C,KAAM01E,GAEfx5B,EAA2Bl8C,MAAO01E,EAAWlxD,WAAapqB,OAAO+gD,eAAeu6B,IAAa/6E,MAAMqF,KAAMlF,YAGlH,OARAshD,EAAUs5B,EAAY5sB,GAQf4sB,EATQ,CAUf/sB,EAAQ9nD,SAEV60E,EAAWl/B,SAAW,aACtBk/B,EAAWp+D,QAAU,aAErBhhB,EAAQuK,QAAU60E,GAIZ,SAAU/iC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEf2kC,EAAS5V,EAAoB,GAE7B6V,EAAUrN,EAAuBoN,GAErC,SAASpN,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIq5B,EAAS,SAAU7sB,GAGrB,SAAS6sB,IAGP,OAFA15B,EAAgBj8C,KAAM21E,GAEfz5B,EAA2Bl8C,MAAO21E,EAAOnxD,WAAapqB,OAAO+gD,eAAew6B,IAASh7E,MAAMqF,KAAMlF,YAU1G,OAfAshD,EAAUu5B,EAAQ7sB,GAQlBnO,EAAag7B,EAAQ,KAAM,CAAC,CAC1B16E,IAAK,UACLM,MAAO,SAAiBkhD,GACtB,OAAOz8C,KAAKsX,QAAQ9f,QAAQilD,EAAQnlC,SAAW,MAI5Cq+D,EAhBI,CAiBXhtB,EAAQ9nD,SAEV80E,EAAOn/B,SAAW,SAClBm/B,EAAOr+D,QAAU,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAEhDhhB,EAAQuK,QAAU80E,GAIZ,SAAUhjC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQk/E,cAAWvuE,EAErC,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCiN,EAAS5V,EAAoB,GAE7B6V,EAAUrN,EAAuBoN,GAEjCsM,EAAaliB,EAAoB,IAEjCmiB,EAAc3Z,EAAuB0Z,GAEzC,SAAS1Z,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAASJ,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAE3M,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIk5B,EAAW,SAAU1sB,GAGvB,SAAS0sB,IAGP,OAFAv5B,EAAgBj8C,KAAMw1E,GAEft5B,EAA2Bl8C,MAAOw1E,EAAShxD,WAAapqB,OAAO+gD,eAAeq6B,IAAW76E,MAAMqF,KAAMlF,YAwC9G,OA7CAshD,EAAUo5B,EAAU1sB,GAQpBnO,EAAa66B,EAAU,CAAC,CACtBv6E,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GACvBjC,IAASs8E,EAAKp/B,UAAaj7C,EAG7Bw/C,EAAKy6B,EAASttE,UAAUsc,WAAapqB,OAAO+gD,eAAeq6B,EAASttE,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAM1G,EAAMiC,GAFjHyE,KAAKkyD,YAAYxW,EAAY76C,QAAQszC,OAAOn0C,KAAKw9C,QAAQ35C,UAK5D,CACD5I,IAAK,SACLM,MAAO,WACY,MAAbyE,KAAK6pD,MAA6B,MAAb7pD,KAAKwlB,KAC5BxlB,KAAKk7C,OAAOzlB,SAEZslB,EAAKy6B,EAASttE,UAAUsc,WAAapqB,OAAO+gD,eAAeq6B,EAASttE,WAAY,SAAUlI,MAAMoI,KAAKpI,QAGxG,CACD/E,IAAK,cACLM,MAAO,SAAqBjC,EAAMiC,GAEhC,OADAyE,KAAKk7C,OAAO6K,QAAQ/lD,KAAKolC,OAAOplC,KAAKk7C,QAASl7C,KAAK9I,UAC/CoC,IAAS0G,KAAKk7C,OAAOsC,QAAQhH,UAC/Bx2C,KAAKk7C,OAAOgX,YAAY54D,EAAMiC,GACvByE,OAEPA,KAAKk7C,OAAO6O,SACLhP,EAAKy6B,EAASttE,UAAUsc,WAAapqB,OAAO+gD,eAAeq6B,EAASttE,WAAY,cAAelI,MAAMoI,KAAKpI,KAAM1G,EAAMiC,OAG/H,CAAC,CACHN,IAAK,UACLM,MAAO,SAAiBkhD,GACtB,OAAOA,EAAQnlC,UAAYtX,KAAKsX,aAAUrQ,EAAY8zC,EAAKy6B,EAAShxD,WAAapqB,OAAO+gD,eAAeq6B,GAAW,UAAWx1E,MAAMoI,KAAKpI,KAAMy8C,OAI3I+4B,EA9CM,CA+Cb7sB,EAAQ9nD,SAEV20E,EAASh/B,SAAW,YACpBg/B,EAASl+D,QAAU,KAEnB,IAAIs+D,EAAO,SAAUC,GA4BnB,SAASD,EAAKn5B,GACZR,EAAgBj8C,KAAM41E,GAEtB,IAAI3qE,EAASixC,EAA2Bl8C,MAAO41E,EAAKpxD,WAAapqB,OAAO+gD,eAAey6B,IAAOxtE,KAAKpI,KAAMy8C,IAErGq5B,EAAmB,SAA0B/mE,GAC/C,GAAIA,EAAElU,OAAOs7B,aAAesmB,EAA5B,CACA,IAAIx3B,EAASha,EAAOuyC,QAAQjS,QAAQkR,GAChC1G,EAAO2F,EAAY76C,QAAQuzC,KAAKrlC,EAAElU,QACvB,YAAXoqB,EACF8wB,EAAK9wB,OAAO,OAAQ,aACA,cAAXA,GACT8wB,EAAK9wB,OAAO,OAAQ,aAMxB,OAFAw3B,EAAQhc,iBAAiB,aAAcq1C,GACvCr5B,EAAQhc,iBAAiB,YAAaq1C,GAC/B7qE,EAiDT,OA9FAmxC,EAAUw5B,EAAMC,GAEhBl7B,EAAai7B,EAAM,KAAM,CAAC,CACxB36E,IAAK,SACLM,MAAO,SAAgBA,GACrB,IAAI+b,EAAoB,YAAV/b,EAAsB,KAAO,KACvCu6B,EAAOilB,EAAK66B,EAAKpxD,WAAapqB,OAAO+gD,eAAey6B,GAAO,SAAU51E,MAAMoI,KAAKpI,KAAMsX,GAI1F,MAHc,YAAV/b,GAAiC,cAAVA,GACzBu6B,EAAKa,aAAa,eAA0B,YAAVp7B,GAE7Bu6B,IAER,CACD76B,IAAK,UACLM,MAAO,SAAiBkhD,GACtB,MAAwB,OAApBA,EAAQnlC,QAAyB,UACb,OAApBmlC,EAAQnlC,QACNmlC,EAAQ+f,aAAa,gBACyB,SAAzC/f,EAAQ9U,aAAa,gBAA6B,UAAY,YAE9D,cAJX,MAgCJgT,EAAai7B,EAAM,CAAC,CAClB36E,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GACvByE,KAAKpG,SAAS1C,OAAS,GACzB8I,KAAKpG,SAAS0jD,KAAKr4B,OAAO3rB,EAAMiC,KAGnC,CACDN,IAAK,UACLM,MAAO,WAEL,OAAOL,EAAgB,GAAI8E,KAAKw9C,QAAQhH,SAAUx2C,KAAKw9C,QAAQjS,QAAQvrC,KAAKy8C,YAE7E,CACDxhD,IAAK,eACLM,MAAO,SAAsBw6C,EAAMh7B,GACjC,GAAIg7B,aAAgBy/B,EAClBz6B,EAAK66B,EAAK1tE,UAAUsc,WAAapqB,OAAO+gD,eAAey6B,EAAK1tE,WAAY,eAAgBlI,MAAMoI,KAAKpI,KAAM+1C,EAAMh7B,OAC1G,CACL,IAAItK,EAAe,MAAPsK,EAAc/a,KAAK9I,SAAW6jB,EAAIqqB,OAAOplC,MACjDquD,EAAQruD,KAAKimB,MAAMxV,GACvB49C,EAAMnT,OAAO1X,aAAauS,EAAMsY,MAGnC,CACDpzD,IAAK,WACLM,MAAO,SAAkB2R,GACvB6tC,EAAK66B,EAAK1tE,UAAUsc,WAAapqB,OAAO+gD,eAAey6B,EAAK1tE,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMkN,GACrG,IAAIsY,EAAOxlB,KAAKwlB,KACJ,MAARA,GAAgBA,EAAKqkC,OAAS7pD,MAAQwlB,EAAKg4B,QAAQhH,WAAax2C,KAAKw9C,QAAQhH,UAAYhxB,EAAKi3B,QAAQnlC,UAAYtX,KAAKy8C,QAAQnlC,SAAWkO,EAAKi3B,QAAQ9U,aAAa,kBAAoB3nC,KAAKy8C,QAAQ9U,aAAa,kBACpNniB,EAAKwgC,aAAahmD,MAClBwlB,EAAKiQ,YAGR,CACDx6B,IAAK,UACLM,MAAO,SAAiBV,GACtB,GAAIA,EAAO2iD,QAAQhH,WAAax2C,KAAKw9C,QAAQhH,SAAU,CACrD,IAAIjrC,EAAOmwC,EAAY76C,QAAQszC,OAAOn0C,KAAKw9C,QAAQC,cACnD5iD,EAAOmrD,aAAaz6C,GACpBvL,KAAK42B,YAAYrrB,GAEnBwvC,EAAK66B,EAAK1tE,UAAUsc,WAAapqB,OAAO+gD,eAAey6B,EAAK1tE,WAAY,UAAWlI,MAAMoI,KAAKpI,KAAMnF,OAIjG+6E,EA/FE,CAgGT3gB,EAAYp0D,SAEd+0E,EAAKp/B,SAAW,OAChBo/B,EAAK/xE,MAAQ63C,EAAY76C,QAAQqzC,MAAM+I,WACvC24B,EAAKt+D,QAAU,CAAC,KAAM,MACtBs+D,EAAKn4B,aAAe,YACpBm4B,EAAKl4B,gBAAkB,CAAC83B,GAExBl/E,EAAQk/E,SAAWA,EACnBl/E,EAAQuK,QAAU+0E,GAIZ,SAAUjjC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIw4E,EAAQjhC,EAAoB,IAE5BkhC,EAAS14B,EAAuBy4B,GAEpC,SAASz4B,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIy5B,EAAS,SAAUC,GAGrB,SAASD,IAGP,OAFA95B,EAAgBj8C,KAAM+1E,GAEf75B,EAA2Bl8C,MAAO+1E,EAAOvxD,WAAapqB,OAAO+gD,eAAe46B,IAASp7E,MAAMqF,KAAMlF,YAG1G,OARAshD,EAAU25B,EAAQC,GAQXD,EATI,CAUX/B,EAAOnzE,SAETk1E,EAAOv/B,SAAW,SAClBu/B,EAAOz+D,QAAU,CAAC,KAAM,KAExBhhB,EAAQuK,QAAUk1E,GAIZ,SAAUpjC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZa,EAAU/I,EAAoB,GAE9BgJ,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI25B,EAAS,SAAUrtB,GAGrB,SAASqtB,IAGP,OAFAh6B,EAAgBj8C,KAAMi2E,GAEf/5B,EAA2Bl8C,MAAOi2E,EAAOzxD,WAAapqB,OAAO+gD,eAAe86B,IAASt7E,MAAMqF,KAAMlF,YAuB1G,OA5BAshD,EAAU65B,EAAQrtB,GAQlBjO,EAAas7B,EAAQ,KAAM,CAAC,CAC1Bh7E,IAAK,SACLM,MAAO,SAAgBA,GACrB,MAAc,UAAVA,EACKkc,SAASie,cAAc,OACX,QAAVn6B,EACFkc,SAASie,cAAc,OAEvBqlB,EAAKk7B,EAAOzxD,WAAapqB,OAAO+gD,eAAe86B,GAAS,SAAUj2E,MAAMoI,KAAKpI,KAAMzE,KAG7F,CACDN,IAAK,UACLM,MAAO,SAAiBkhD,GACtB,MAAwB,QAApBA,EAAQnlC,QAA0B,MACd,QAApBmlC,EAAQnlC,QAA0B,aAAtC,MAKG2+D,EA7BI,CA8BXn6B,EAASj7C,SAEXo1E,EAAOz/B,SAAW,SAClBy/B,EAAO3+D,QAAU,CAAC,MAAO,OAEzBhhB,EAAQuK,QAAUo1E,GAIZ,SAAUtjC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIsgD,EAAU/I,EAAoB,GAE9BgJ,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI45B,EAAS,SAAUttB,GAGrB,SAASstB,IAGP,OAFAj6B,EAAgBj8C,KAAMk2E,GAEfh6B,EAA2Bl8C,MAAOk2E,EAAO1xD,WAAapqB,OAAO+gD,eAAe+6B,IAASv7E,MAAMqF,KAAMlF,YAG1G,OARAshD,EAAU85B,EAAQttB,GAQXstB,EATI,CAUXp6B,EAASj7C,SAEXq1E,EAAO1/B,SAAW,SAClB0/B,EAAO5+D,QAAU,IAEjBhhB,EAAQuK,QAAUq1E,GAIZ,SAAUvjC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIsgD,EAAU/I,EAAoB,GAE9BgJ,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI65B,EAAY,SAAUvtB,GAGxB,SAASutB,IAGP,OAFAl6B,EAAgBj8C,KAAMm2E,GAEfj6B,EAA2Bl8C,MAAOm2E,EAAU3xD,WAAapqB,OAAO+gD,eAAeg7B,IAAYx7E,MAAMqF,KAAMlF,YAGhH,OARAshD,EAAU+5B,EAAWvtB,GAQdutB,EATO,CAUdr6B,EAASj7C,SAEXs1E,EAAU3/B,SAAW,YACrB2/B,EAAU7+D,QAAU,IAEpBhhB,EAAQuK,QAAUs1E,GAIZ,SAAUxjC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCk3B,EAAQ7/B,EAAoB,IAEhC,SAASwI,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI85B,EAAa,CAAC,MAAO,SAAU,SAE/BC,EAAQ,SAAU75B,GAGpB,SAAS65B,IAGP,OAFAp6B,EAAgBj8C,KAAMq2E,GAEfn6B,EAA2Bl8C,MAAOq2E,EAAM7xD,WAAapqB,OAAO+gD,eAAek7B,IAAQ17E,MAAMqF,KAAMlF,YAqDxG,OA1DAshD,EAAUi6B,EAAO75B,GAQjB7B,EAAa07B,EAAO,CAAC,CACnBp7E,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GACvB66E,EAAW5+E,QAAQ8B,IAAS,EAC1BiC,EACFyE,KAAKy8C,QAAQ9lB,aAAar9B,EAAMiC,GAEhCyE,KAAKy8C,QAAQ9T,gBAAgBrvC,GAG/ByhD,EAAKs7B,EAAMnuE,UAAUsc,WAAapqB,OAAO+gD,eAAek7B,EAAMnuE,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAM1G,EAAMiC,MAG7G,CAAC,CACHN,IAAK,SACLM,MAAO,SAAgBA,GACrB,IAAIu6B,EAAOilB,EAAKs7B,EAAM7xD,WAAapqB,OAAO+gD,eAAek7B,GAAQ,SAAUr2E,MAAMoI,KAAKpI,KAAMzE,GAI5F,MAHqB,kBAAVA,GACTu6B,EAAKa,aAAa,MAAO32B,KAAKo7D,SAAS7/D,IAElCu6B,IAER,CACD76B,IAAK,UACLM,MAAO,SAAiBkhD,GACtB,OAAO25B,EAAW1vE,QAAO,SAAU6kC,EAASoR,GAI1C,OAHIF,EAAQ+f,aAAa7f,KACvBpR,EAAQoR,GAAaF,EAAQ9U,aAAagV,IAErCpR,IACN,MAEJ,CACDtwC,IAAK,QACLM,MAAO,SAAe+/D,GACpB,MAAQ,qBAAqB9yD,KAAK8yD,IAAQ,yBAAyB9yD,KAAK8yD,KAGzE,CACDrgE,IAAK,WACLM,MAAO,SAAkB+/D,GACvB,OAAO,EAAIqX,EAAMvX,UAAUE,EAAK,CAAC,OAAQ,QAAS,SAAWA,EAAM,SAEpE,CACDrgE,IAAK,QACLM,MAAO,SAAekhD,GACpB,OAAOA,EAAQ9U,aAAa,WAIzB0uC,EA3DG,CA4DV36B,EAAY76C,QAAQ6zC,OAEtB2hC,EAAM7/B,SAAW,QACjB6/B,EAAM/+D,QAAU,MAEhBhhB,EAAQuK,QAAUw1E,GAIZ,SAAU1jC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAGT,IAAIo/C,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZ0N,EAAS5V,EAAoB,GAE7B6/B,EAAQ7/B,EAAoB,IAE5B8/B,EAASt3B,EAAuBq3B,GAEpC,SAASr3B,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAI85B,EAAa,CAAC,SAAU,SAExBE,EAAQ,SAAUC,GAGpB,SAASD,IAGP,OAFAr6B,EAAgBj8C,KAAMs2E,GAEfp6B,EAA2Bl8C,MAAOs2E,EAAM9xD,WAAapqB,OAAO+gD,eAAem7B,IAAQ37E,MAAMqF,KAAMlF,YA+CxG,OApDAshD,EAAUk6B,EAAOC,GAQjB57B,EAAa27B,EAAO,CAAC,CACnBr7E,IAAK,SACLM,MAAO,SAAgBjC,EAAMiC,GACvB66E,EAAW5+E,QAAQ8B,IAAS,EAC1BiC,EACFyE,KAAKy8C,QAAQ9lB,aAAar9B,EAAMiC,GAEhCyE,KAAKy8C,QAAQ9T,gBAAgBrvC,GAG/ByhD,EAAKu7B,EAAMpuE,UAAUsc,WAAapqB,OAAO+gD,eAAem7B,EAAMpuE,WAAY,SAAUlI,MAAMoI,KAAKpI,KAAM1G,EAAMiC,MAG7G,CAAC,CACHN,IAAK,SACLM,MAAO,SAAgBA,GACrB,IAAIu6B,EAAOilB,EAAKu7B,EAAM9xD,WAAapqB,OAAO+gD,eAAem7B,GAAQ,SAAUt2E,MAAMoI,KAAKpI,KAAMzE,GAI5F,OAHAu6B,EAAKa,aAAa,cAAe,KACjCb,EAAKa,aAAa,mBAAmB,GACrCb,EAAKa,aAAa,MAAO32B,KAAKo7D,SAAS7/D,IAChCu6B,IAER,CACD76B,IAAK,UACLM,MAAO,SAAiBkhD,GACtB,OAAO25B,EAAW1vE,QAAO,SAAU6kC,EAASoR,GAI1C,OAHIF,EAAQ+f,aAAa7f,KACvBpR,EAAQoR,GAAaF,EAAQ9U,aAAagV,IAErCpR,IACN,MAEJ,CACDtwC,IAAK,WACLM,MAAO,SAAkB+/D,GACvB,OAAOsX,EAAO/xE,QAAQu6D,SAASE,KAEhC,CACDrgE,IAAK,QACLM,MAAO,SAAekhD,GACpB,OAAOA,EAAQ9U,aAAa,WAIzB2uC,EArDG,CAsDV5tB,EAAOjO,YAET67B,EAAM9/B,SAAW,QACjB8/B,EAAMhhD,UAAY,WAClBghD,EAAMh/D,QAAU,SAEhBhhB,EAAQuK,QAAUy1E,GAIZ,SAAU3jC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQkgF,iBAAcvvE,EAExC,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZgiB,EAASlqB,EAAoB,IAE7BmqB,EAAU3hB,EAAuB0hB,GAEjClH,EAAShjB,EAAoB,GAE7BijB,EAAUza,EAAuBwa,GAEjC1X,EAAUtL,EAAoB,GAE9BuL,EAAW/C,EAAuB8C,GAEtC,SAAS9C,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIk6B,EAAc,SAAUC,GAG1B,SAASD,IAGP,OAFAv6B,EAAgBj8C,KAAMw2E,GAEft6B,EAA2Bl8C,MAAOw2E,EAAYhyD,WAAapqB,OAAO+gD,eAAeq7B,IAAc77E,MAAMqF,KAAMlF,YAuBpH,OA5BAshD,EAAUo6B,EAAaC,GAQvB97B,EAAa67B,EAAa,KAAM,CAAC,CAC/Bv7E,IAAK,SACLM,MAAO,SAAgBA,GACrB,IAAIu6B,EAAOilB,EAAKy7B,EAAYhyD,WAAapqB,OAAO+gD,eAAeq7B,GAAc,SAAUx2E,MAAMoI,KAAKpI,KAAMzE,GAQxG,MAPqB,kBAAVA,IACTy0B,OAAO0mD,MAAMl9E,OAAO+B,EAAOu6B,EAAM,CAC/B6gD,cAAc,EACdC,WAAY,SAEd9gD,EAAKa,aAAa,aAAcp7B,IAE3Bu6B,IAER,CACD76B,IAAK,QACLM,MAAO,SAAekhD,GACpB,OAAOA,EAAQ9U,aAAa,kBAIzB6uC,EA7BS,CA8BhBvZ,EAAQp8D,SAEV21E,EAAYhgC,SAAW,UACvBggC,EAAYlhD,UAAY,aACxBkhD,EAAYl/D,QAAU,OAEtB,IAAIu/D,EAAU,SAAU3gB,GAUtB,SAAS2gB,IACP56B,EAAgBj8C,KAAM62E,GAEtB,IAAI5rE,EAASixC,EAA2Bl8C,MAAO62E,EAAQryD,WAAapqB,OAAO+gD,eAAe07B,IAAUzuE,KAAKpI,OAEzG,GAAoB,MAAhBgwB,OAAO0mD,MACT,MAAM,IAAIp/E,MAAM,kCAElB,OAAO2T,EAGT,OApBAmxC,EAAUy6B,EAAS3gB,GAEnBvb,EAAak8B,EAAS,KAAM,CAAC,CAC3B57E,IAAK,WACLM,MAAO,WACLw6D,EAAQl1D,QAAQyzC,SAASkiC,GAAa,OAenCK,EArBK,CAsBZx4B,EAASx9C,SAEXvK,EAAQkgF,YAAcA,EACtBlgF,EAAQuK,QAAUg2E,GAIZ,SAAUlkC,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQwgF,UAAYxgF,EAAQuyD,eAAY5hD,EAE1D,IAAI0zC,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfg3B,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZS,EAAa3I,EAAoB,GAEjC4I,EAAcJ,EAAuBG,GAErCqa,EAAShjB,EAAoB,GAE7BijB,EAAUza,EAAuBwa,GAEjC1X,EAAUtL,EAAoB,GAE9BuL,EAAW/C,EAAuB8C,GAElC+L,EAAQrX,EAAoB,IAE5BsX,EAAS9O,EAAuB6O,GAEpC,SAAS7O,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIy6B,EAAkB,SAAUC,GAG9B,SAASD,IAGP,OAFA96B,EAAgBj8C,KAAM+2E,GAEf76B,EAA2Bl8C,MAAO+2E,EAAgBvyD,WAAapqB,OAAO+gD,eAAe47B,IAAkBp8E,MAAMqF,KAAMlF,YAyB5H,OA9BAshD,EAAU26B,EAAiBC,GAQ3Br8B,EAAao8B,EAAiB,CAAC,CAC7B97E,IAAK,cACLM,MAAO,SAAqBwhD,GAC1B/8C,KAAKy8C,QAAQ7mB,YAAc51B,KAAKy8C,QAAQ7mB,YACxC51B,KAAKsuD,SACLvT,EAAKg8B,EAAgB7uE,UAAUsc,WAAapqB,OAAO+gD,eAAe47B,EAAgB7uE,WAAY,cAAelI,MAAMoI,KAAKpI,KAAM+8C,KAE/H,CACD9hD,IAAK,YACLM,MAAO,SAAmB07E,GACxB,IAAI9/B,EAAOn3C,KAAKy8C,QAAQ7mB,YACpB51B,KAAKk3E,aAAe//B,KAClBA,EAAKx/B,OAAOzgB,OAAS,GAAwB,MAAnB8I,KAAKk3E,cACjCl3E,KAAKy8C,QAAQpW,UAAY4wC,EAAW9/B,GACpCn3C,KAAKy8C,QAAQsa,YACb/2D,KAAKsuD,UAEPtuD,KAAKk3E,WAAa//B,OAKjB4/B,EA/Ba,CAgCpB3sB,EAAOvpD,SAETk2E,EAAgBzhD,UAAY,YAE5B,IAAIwhD,EAAY,IAAIp7B,EAAY76C,QAAQk0C,WAAWpxB,MAAM,QAAS,OAAQ,CACxE9f,MAAO63C,EAAY76C,QAAQqzC,MAAMiC,SAG/BghC,EAAS,SAAUjhB,GAWrB,SAASihB,EAAO/vB,EAAOviC,GACrBo3B,EAAgBj8C,KAAMm3E,GAEtB,IAAIlsE,EAASixC,EAA2Bl8C,MAAOm3E,EAAO3yD,WAAapqB,OAAO+gD,eAAeg8B,IAAS/uE,KAAKpI,KAAMonD,EAAOviC,IAEpH,GAAwC,oBAA7B5Z,EAAO4Z,QAAQuyD,UACxB,MAAM,IAAI9/E,MAAM,6FAElB,IAAI+/E,EAAQ,KASZ,OARApsE,EAAOm8C,MAAMjlD,GAAG4zD,EAAQl1D,QAAQ8+C,OAAOsH,iBAAiB,WACtD57C,aAAagsE,GACbA,EAAQtsE,YAAW,WACjBE,EAAOmsE,YACPC,EAAQ,OACPpsE,EAAO4Z,QAAQyyD,aAEpBrsE,EAAOmsE,YACAnsE,EAqBT,OAhDAmxC,EAAU+6B,EAAQjhB,GAElBvb,EAAaw8B,EAAQ,KAAM,CAAC,CAC1Bl8E,IAAK,WACLM,MAAO,WACLw6D,EAAQl1D,QAAQyzC,SAASwiC,GAAW,GACpC/gB,EAAQl1D,QAAQyzC,SAASyiC,GAAiB,OAwB9Cp8B,EAAaw8B,EAAQ,CAAC,CACpBl8E,IAAK,YACLM,MAAO,WACL,IAAIiQ,EAASxL,KAEb,IAAIA,KAAKonD,MAAM/H,UAAU2N,UAAzB,CACAhtD,KAAKonD,MAAMjH,OAAO4V,EAAQl1D,QAAQwgD,QAAQiD,MAC1C,IAAIrV,EAAQjvC,KAAKonD,MAAM7F,eACvBvhD,KAAKonD,MAAMlI,OAAO/B,YAAY45B,GAAiB/7E,SAAQ,SAAUjE,GAC/DA,EAAKqgF,UAAU5rE,EAAOqZ,QAAQuyD,cAEhCp3E,KAAKonD,MAAMjH,OAAO4V,EAAQl1D,QAAQwgD,QAAQM,QAC7B,MAAT1S,GACFjvC,KAAKonD,MAAM1F,aAAazS,EAAO8mB,EAAQl1D,QAAQwgD,QAAQM,aAKtDw1B,EAjDI,CAkDX94B,EAASx9C,SAEXs2E,EAAO3yB,SAAW,CAChB4yB,UAAW,WACT,OAAmB,MAAfpnD,OAAOunD,KAAqB,KACzB,SAAUpgC,GACf,IAAIxwC,EAASqpB,OAAOunD,KAAKC,cAAcrgC,GACvC,OAAOxwC,EAAOpL,OAJP,GAOX+7E,SAAU,KAGZhhF,EAAQuyD,UAAYkuB,EACpBzgF,EAAQwgF,UAAYA,EACpBxgF,EAAQuK,QAAUs2E,GAIZ,SAAUxkC,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,8LAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,+LAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,+LAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,+LAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,g7EAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,sTAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,iRAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,sUAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,oPAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,mVAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,kVAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,qOAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,mOAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,0WAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,6YAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,03CAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,gkBAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,goBAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,gMAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,0OAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,yQAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,+PAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,+ZAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,osBAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,uVAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,6XAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,wqBAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,ijBAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,6gBAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,gMAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,+qBAIX,SAAUq8C,EAAQr8C,GAExBq8C,EAAOr8C,QAAU,oKAIX,SAAUq8C,EAAQr8C,EAASw8C,GAEjC,aAGA14C,OAAOiB,eAAe/E,EAAS,aAAc,CAC3CiF,OAAO,IAETjF,EAAQuK,QAAUvK,EAAQmhF,mBAAgBxwE,EAE1C,IAAI8zC,EAAO,SAAS3oC,EAAInY,EAAQi5C,EAAU8H,GAA2B,OAAX/gD,IAAiBA,EAAS+pB,SAAS9b,WAAW,IAAI+yC,EAAO7gD,OAAOK,yBAAyBR,EAAQi5C,GAAW,QAAajsC,IAATg0C,EAAoB,CAAE,IAAIC,EAAS9gD,OAAO+gD,eAAelhD,GAAS,OAAe,OAAXihD,OAAmB,EAAkC9oC,EAAI8oC,EAAQhI,EAAU8H,GAAoB,GAAI,UAAWC,EAAQ,OAAOA,EAAK1/C,MAAgB,IAAIy3C,EAASiI,EAAK7oC,IAAK,YAAenL,IAAX+rC,EAAmDA,EAAO5qC,KAAK4yC,QAAnE,GAErZL,EAAe,WAAc,SAASv/C,EAAiBP,EAAQ5B,GAAS,IAAK,IAAIjC,EAAI,EAAGA,EAAIiC,EAAM/B,OAAQF,IAAK,CAAE,IAAI4jD,EAAa3hD,EAAMjC,GAAI4jD,EAAWlgD,WAAakgD,EAAWlgD,aAAc,EAAOkgD,EAAWp/C,cAAe,EAAU,UAAWo/C,IAAYA,EAAWn/C,UAAW,GAAMrB,OAAOiB,eAAeR,EAAQ+/C,EAAW3/C,IAAK2/C,IAAiB,OAAO,SAAU72B,EAAa82B,EAAYC,GAAiJ,OAA9HD,GAAYz/C,EAAiB2oB,EAAY7b,UAAW2yC,GAAiBC,GAAa1/C,EAAiB2oB,EAAa+2B,GAAqB/2B,GAA7gB,GAEfq3B,EAAUtI,EAAoB,GAE9BuI,EAAWC,EAAuBF,GAElC+J,EAAWrS,EAAoB,GAE/BsS,EAAY9J,EAAuB6J,GAEnCstB,EAAQ3/B,EAAoB,IAE5B4/B,EAASp3B,EAAuBm3B,GAEhCn0B,EAAaxL,EAAoB,IAEjC+/B,EAAS//B,EAAoB,IAE7BggC,EAAUx3B,EAAuBu3B,GAErC,SAASv3B,EAAuBhgD,GAAO,OAAOA,GAAOA,EAAI23C,WAAa33C,EAAM,CAAEuF,QAASvF,GAEvF,SAAS2gD,EAAgBh4B,EAAUF,GAAe,KAAME,aAAoBF,GAAgB,MAAM,IAAIlc,UAAU,qCAEhH,SAASq0C,EAA2Btf,EAAMx0B,GAAQ,IAAKw0B,EAAQ,MAAM,IAAIuf,eAAe,6DAAgE,OAAO/zC,GAAyB,kBAATA,GAAqC,oBAATA,EAA8Bw0B,EAAPx0B,EAElO,SAASg0C,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz0C,UAAU,kEAAoEy0C,GAAeD,EAASn0C,UAAY9N,OAAO+5C,OAAOmI,GAAcA,EAAWp0C,UAAW,CAAEI,YAAa,CAAE/M,MAAO8gD,EAAU3hD,YAAY,EAAOe,UAAU,EAAMD,cAAc,KAAe8gD,IAAYliD,OAAOmqB,eAAiBnqB,OAAOmqB,eAAe83B,EAAUC,GAAcD,EAAS73B,UAAY83B,GAEje,IAAIy2B,EAAiB,CAAC,CAAC,OAAQ,SAAU,QAAS,CAAC,CAAEz2E,OAAQ,GAAK,CAAEA,OAAQ,GAAK,eAE7Eo7E,EAAc,SAAUzE,GAG1B,SAASyE,EAAYtwB,EAAOviC,GAC1Bo3B,EAAgBj8C,KAAM03E,GAES,MAA3B7yD,EAAQ+tB,QAAQkS,SAAwD,MAArCjgC,EAAQ+tB,QAAQkS,QAAQve,YAC7D1hB,EAAQ+tB,QAAQkS,QAAQve,UAAYwsC,GAGtC,IAAIloE,EAAQqxC,EAA2Bl8C,MAAO03E,EAAYlzD,WAAapqB,OAAO+gD,eAAeu8B,IAActvE,KAAKpI,KAAMonD,EAAOviC,IAG7H,OADAha,EAAMu8C,MAAM7gB,UAAUhR,UAAUC,IAAI,aAC7B3qB,EAaT,OAzBAuxC,EAAUs7B,EAAazE,GAevBt4B,EAAa+8B,EAAa,CAAC,CACzBz8E,IAAK,gBACLM,MAAO,SAAuBupD,GAC5B9kD,KAAK2hE,QAAU,IAAI8V,EAAcz3E,KAAKonD,MAAOpnD,KAAK6kB,QAAQq9B,QAC1DliD,KAAK2hE,QAAQlvB,KAAK7b,YAAYkuB,EAAQve,WACtCvmC,KAAKkzE,aAAa,GAAG7qE,MAAMD,KAAK08C,EAAQve,UAAUzF,iBAAiB,WAAYgyC,EAAQjyE,SACvFb,KAAKmzE,aAAa,GAAG9qE,MAAMD,KAAK08C,EAAQve,UAAUzF,iBAAiB,WAAYgyC,EAAQjyE,aAIpF62E,EA1BS,CA2BhBhF,EAAO7xE,SAET62E,EAAYlzB,UAAW,EAAInJ,EAASx6C,UAAS,EAAM,GAAI6xE,EAAO7xE,QAAQ2jD,SAAU,CAC9E5R,QAAS,CACPkS,QAAS,CACPhoC,SAAU,CACR60D,KAAM,SAAcp2E,GACbA,EAGHyE,KAAKonD,MAAM9H,MAAMqiB,QAAQW,OAFzBtiE,KAAKonD,MAAMniC,OAAO,QAAQ,SAUtC,IAAIwyD,EAAgB,SAAUpE,GAG5B,SAASoE,EAAcrwB,EAAOlF,GAC5BjG,EAAgBj8C,KAAMy3E,GAEtB,IAAIxsE,EAASixC,EAA2Bl8C,MAAOy3E,EAAcjzD,WAAapqB,OAAO+gD,eAAes8B,IAAgBrvE,KAAKpI,KAAMonD,EAAOlF,IAwBlI,OAtBAj3C,EAAOm8C,MAAMjlD,GAAGijD,EAAUvkD,QAAQ8+C,OAAOC,eAAe,SAAUvzC,EAAM4iC,EAAOyhB,EAAU31D,GACvF,GAAIsR,IAAS+4C,EAAUvkD,QAAQ8+C,OAAOuH,iBACtC,GAAa,MAATjY,GAAiBA,EAAM/3C,OAAS,GAAK6D,IAAWqqD,EAAUvkD,QAAQwgD,QAAQiD,KAAM,CAClFr5C,EAAO6X,OAEP7X,EAAOwnC,KAAK97B,MAAM1Y,KAAO,MACzBgN,EAAOwnC,KAAK97B,MAAM9Y,MAAQ,GAC1BoN,EAAOwnC,KAAK97B,MAAM9Y,MAAQoN,EAAOwnC,KAAK5T,YAAc,KACpD,IAAIwe,EAAQpyC,EAAOm8C,MAAMsO,SAASzmB,EAAMx+B,MAAOw+B,EAAM/3C,QACrD,GAAqB,IAAjBmmD,EAAMnmD,OACR+T,EAAOioB,SAASjoB,EAAOm8C,MAAMjF,UAAUlT,QAClC,CACL,IAAI0oC,EAAWt6B,EAAMA,EAAMnmD,OAAS,GAChCuZ,EAAQxF,EAAOm8C,MAAMuS,SAASge,GAC9BzgF,EAASy6B,KAAKlG,IAAIksD,EAASzgF,SAAW,EAAG+3C,EAAMx+B,MAAQw+B,EAAM/3C,OAASuZ,GACtEmnE,EAAU3sE,EAAOm8C,MAAMjF,UAAU,IAAI7D,EAAW+F,MAAM5zC,EAAOvZ,IACjE+T,EAAOioB,SAAS0kD,SAETngE,SAAS2S,gBAAkBnf,EAAO22D,SAAW32D,EAAOm8C,MAAM/lC,YACnEpW,EAAOqiB,UAGJriB,EAuCT,OApEAmxC,EAAUq7B,EAAepE,GAgCzB14B,EAAa88B,EAAe,CAAC,CAC3Bx8E,IAAK,SACLM,MAAO,WACL,IAAIiQ,EAASxL,KAEb+6C,EAAK08B,EAAcvvE,UAAUsc,WAAapqB,OAAO+gD,eAAes8B,EAAcvvE,WAAY,SAAUlI,MAAMoI,KAAKpI,MAC/GA,KAAKyyC,KAAKlG,cAAc,aAAa9L,iBAAiB,SAAS,WAC7Dj1B,EAAOinC,KAAKld,UAAUE,OAAO,iBAE/Bz1B,KAAKonD,MAAMjlD,GAAGijD,EAAUvkD,QAAQ8+C,OAAOsH,iBAAiB,WAEtDl8C,YAAW,WACT,IAAIS,EAAOinC,KAAKld,UAAUiN,SAAS,aAAnC,CACA,IAAIyM,EAAQzjC,EAAO47C,MAAM7F,eACZ,MAATtS,GACFzjC,EAAO0nB,SAAS1nB,EAAO47C,MAAMjF,UAAUlT,OAExC,QAGN,CACDh0C,IAAK,SACLM,MAAO,WACLyE,KAAK8iB,SAEN,CACD7nB,IAAK,WACLM,MAAO,SAAkB+2E,GACvB,IAAIn2D,EAAQ4+B,EAAK08B,EAAcvvE,UAAUsc,WAAapqB,OAAO+gD,eAAes8B,EAAcvvE,WAAY,WAAYlI,MAAMoI,KAAKpI,KAAMsyE,GAC/HuF,EAAQ73E,KAAKyyC,KAAKlG,cAAc,qBAEpC,GADAsrC,EAAMlhE,MAAMmhE,WAAa,GACX,IAAV37D,EAAa,OAAOA,EACxB07D,EAAMlhE,MAAMmhE,YAAc,EAAI37D,EAAQ07D,EAAMh5C,YAAc,EAAI,SAI3D44C,EArEW,CAsElBhF,EAAM9R,aAER8W,EAAcpF,SAAW,CAAC,yCAA0C,kCAAmC,mGAAoG,2BAA4B,UAAU95E,KAAK,IAEtPjC,EAAQmhF,cAAgBA,EACxBnhF,EAAQuK,QAAU62E,GAIZ,SAAU/kC,EAAQr8C,EAASw8C,GAEjCH,EAAOr8C,QAAUw8C,EAAoB,OAIzB,gB,qDCxyWX,SAAS5d,EAAEnmB,GAAqD4jC,EAAOr8C,QAAQyY,EAAE,EAAQ,SAAzF,CAA8P/O,GAAK,SAASk1B,GAAG,OAAO,SAASA,GAAG,SAASnmB,EAAE/X,GAAG,GAAGiR,EAAEjR,GAAG,OAAOiR,EAAEjR,GAAGV,QAAQ,IAAI2iC,EAAEhxB,EAAEjR,GAAG,CAACA,EAAEA,EAAEiiC,GAAE,EAAG3iC,QAAQ,IAAI,OAAO4+B,EAAEl+B,GAAGoR,KAAK6wB,EAAE3iC,QAAQ2iC,EAAEA,EAAE3iC,QAAQyY,GAAGkqB,EAAEA,GAAE,EAAGA,EAAE3iC,QAAQ,IAAI2R,EAAE,GAAG,OAAO8G,EAAEmqB,EAAEhE,EAAEnmB,EAAEmrB,EAAEjyB,EAAE8G,EAAE/X,EAAE,SAASk+B,GAAG,OAAOA,GAAGnmB,EAAEgqB,EAAE,SAAS7D,EAAEjtB,EAAEjR,GAAG+X,EAAEjH,EAAEotB,EAAEjtB,IAAI7N,OAAOiB,eAAe65B,EAAEjtB,EAAE,CAACzM,cAAa,EAAGd,YAAW,EAAG0X,IAAIpb,KAAK+X,EAAE9G,EAAE,SAASitB,GAAG,IAAIjtB,EAAEitB,GAAGA,EAAE+d,WAAW,WAAW,OAAO/d,EAAEr0B,SAAS,WAAW,OAAOq0B,GAAG,OAAOnmB,EAAEgqB,EAAE9wB,EAAE,IAAIA,GAAGA,GAAG8G,EAAEjH,EAAE,SAASotB,EAAEnmB,GAAG,OAAO3U,OAAO8N,UAAUirC,eAAe/qC,KAAK8sB,EAAEnmB,IAAIA,EAAEuV,EAAE,IAAIvV,EAAEA,EAAEolB,EAAE,GAAze,CAA6e,CAAC,SAASplB,EAAE9G,GAAG8G,EAAEzY,QAAQ4+B,GAAG,SAASA,EAAEnmB,EAAE9G,GAAG,aAAa7N,OAAOiB,eAAe0T,EAAE,aAAa,CAACxT,OAAM,IAAK,IAAIvE,EAAEiR,EAAE,GAAGgxB,EAAEhxB,EAAEA,EAAEjR,GAAG8Q,EAAEG,EAAE,GAAG8vE,EAAE9vE,EAAE,GAAGmxB,EAAE2+C,EAAE9+C,EAAExnB,EAAE3J,EAAE2J,GAAE,EAAG,KAAK,KAAK,MAAM1C,EAAElO,QAAQu4B,EAAE9iC,SAAS,SAAS4+B,EAAEnmB,EAAE9G,GAAG,aAAa,SAASjR,EAAEk+B,GAAG,OAAOA,GAAGA,EAAE+d,WAAW/d,EAAE,CAACr0B,QAAQq0B,GAAG96B,OAAOiB,eAAe0T,EAAE,aAAa,CAACxT,OAAM,IAAKwT,EAAEipE,QAAQjpE,EAAEkpE,YAAYlpE,EAAE8vC,WAAM,EAAO,IAAI5lB,EAAEhxB,EAAE,GAAGH,EAAE9Q,EAAEiiC,GAAG8+C,EAAE9vE,EAAE,GAAGmxB,EAAEpiC,EAAE+gF,GAAG5jD,EAAEnE,OAAO6uB,OAAO/2C,EAAEjH,QAAQ4Q,EAAE,SAASyjB,EAAEnmB,GAAGA,IAAIqqB,EAAEv4B,QAAQ5H,MAAMi/E,cAAcr3E,QAAQ,WAAW,OAAOkO,IAAImmB,EAAEgkB,UAAU9f,EAAEv4B,QAAQvH,KAAK8/B,EAAEv4B,UAAUq5B,EAAE,CAAC2kB,MAAM1qB,EAAE8jD,YAAY7+C,EAAEv4B,QAAQm3E,QAAQvmE,GAAG1C,EAAElO,QAAQq5B,EAAEnrB,EAAE8vC,MAAM1qB,EAAEplB,EAAEkpE,YAAY7+C,EAAEv4B,QAAQkO,EAAEipE,QAAQvmE,GAAG,SAASyjB,EAAEnmB,EAAE9G,GAAG,aAAa7N,OAAOiB,eAAe0T,EAAE,aAAa,CAACxT,OAAM,IAAKwT,EAAElO,QAAQ,CAACy+C,MAAM,OAAO64B,SAAS1gE,SAAS0pB,KAAKyR,QAAQ,CAACkS,QAAQ,CAAC,CAAC,OAAO,SAAS,YAAY,UAAU,CAAC,aAAa,cAAc,CAAC,CAACxoD,OAAO,GAAG,CAACA,OAAO,IAAI,CAAC,CAACuwD,KAAK,WAAW,CAACA,KAAK,WAAW,CAAC,CAACurB,OAAO,OAAO,CAACA,OAAO,UAAU,CAAC,CAAC7e,OAAO,MAAM,CAACA,OAAO,OAAO,CAAC,CAACmY,UAAU,QAAQ,CAAC,CAACvvD,KAAK,CAAC,SAAQ,EAAG,QAAQ,UAAU,CAAC,CAAC7lB,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAE,KAAM,CAAC,CAAC+7E,MAAM,IAAI,CAACC,WAAW,KAAK,CAAC,CAACC,KAAK,KAAK,CAAC,CAACj6E,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,QAAQ,WAAWyiB,YAAY,uBAAuBw/B,UAAS,IAAK,SAASrrB,EAAEnmB,EAAE9G,GAAG,aAAa,SAASjR,EAAEk+B,GAAG,OAAOA,GAAGA,EAAE+d,WAAW/d,EAAE,CAACr0B,QAAQq0B,GAAG96B,OAAOiB,eAAe0T,EAAE,aAAa,CAACxT,OAAM,IAAK,IAAI09B,EAAEhxB,EAAE,GAAGH,EAAE9Q,EAAEiiC,GAAG8+C,EAAE9vE,EAAE,GAAGmxB,EAAEpiC,EAAE+gF,GAAG5jD,EAAEnE,OAAO6uB,OAAO/2C,EAAEjH,QAAQ,mBAAmBzG,OAAOyiC,QAAQziC,OAAOiB,eAAejB,OAAO,SAAS,CAACmB,MAAM,SAAS25B,EAAEnmB,GAAG,GAAG,MAAMmmB,EAAE,MAAM,IAAIrtB,UAAU,8CAA8C,IAAI,IAAII,EAAE7N,OAAO86B,GAAGl+B,EAAE,EAAEA,EAAE8D,UAAU5D,OAAOF,IAAI,CAAC,IAAIiiC,EAAEn+B,UAAU9D,GAAG,GAAG,MAAMiiC,EAAE,IAAI,IAAInxB,KAAKmxB,EAAE7+B,OAAO8N,UAAUirC,eAAe/qC,KAAK6wB,EAAEnxB,KAAKG,EAAEH,GAAGmxB,EAAEnxB,IAAI,OAAOG,GAAGxM,UAAS,EAAGD,cAAa,IAAKuT,EAAElO,QAAQ,CAACvH,KAAK,eAAeK,KAAK,WAAW,MAAM,CAAC6+E,SAAS,GAAGC,SAAS,GAAGC,eAAet/C,EAAEv4B,UAAU5H,MAAM,CAAC08B,QAAQ3sB,OAAOzN,MAAMyN,OAAOqO,SAAS,CAAChL,KAAKlB,QAAQtK,SAAQ,GAAIgkB,QAAQ,CAACxY,KAAKjS,OAAOiE,UAAS,EAAGwC,QAAQ,WAAW,MAAM,KAAKq3E,cAAc,CAAC7rE,KAAKjS,OAAOiE,UAAS,EAAGwC,QAAQ,WAAW,MAAM,MAAM8M,QAAQ,WAAW3N,KAAK24E,cAAcvtE,cAAc,WAAWpL,KAAKonD,MAAM,YAAYpnD,KAAKonD,OAAOvnD,QAAQ,CAAC84E,WAAW,WAAW,IAAIzjD,EAAEl1B,KAAKA,KAAK2b,MAAM3b,KAAKw4E,SAASp+E,OAAOyiC,OAAO,GAAG78B,KAAK04E,eAAe14E,KAAKk4E,cAAcl4E,KAAK6kB,SAAS7kB,KAAKonD,MAAM,IAAIjzB,EAAEn0B,KAAKyb,MAAM2jC,OAAOp/C,KAAKw4E,UAAUx4E,KAAKonD,MAAM7d,QAAO,IAAKvpC,KAAKzE,OAAOyE,KAAK21B,UAAU31B,KAAKonD,MAAMwxB,UAAU54E,KAAKzE,OAAOyE,KAAK21B,SAAS31B,KAAKqX,UAAUrX,KAAKonD,MAAM7d,QAAO,GAAIvpC,KAAKonD,MAAMjlD,GAAG,oBAAmB,SAAS4M,GAAGA,EAAEmmB,EAAE5wB,MAAM,QAAQ4wB,EAAEkyB,OAAOlyB,EAAE5wB,MAAM,OAAO4wB,EAAEkyB,UAASpnD,KAAKonD,MAAMjlD,GAAG,eAAc,SAAS4M,EAAE9G,EAAEjR,GAAG,IAAIiiC,EAAE/D,EAAEzZ,MAAM2jC,OAAOxlD,SAAS,GAAGysC,UAAUv+B,EAAEotB,EAAEkyB,MAAM2wB,EAAE7iD,EAAEkyB,MAAMrE,UAAU,gBAAgB9pB,IAAIA,EAAE,IAAI/D,EAAEujD,SAASx/C,EAAE/D,EAAE5wB,MAAM,QAAQ4wB,EAAEujD,UAAUvjD,EAAE5wB,MAAM,SAAS,CAACvH,KAAKk8B,EAAEke,KAAK4gC,EAAE3wB,MAAMt/C,OAAM9H,KAAKsE,MAAM,QAAQtE,KAAKonD,UAAUjjD,MAAM,CAACwxB,QAAQ,SAAST,EAAEnmB,GAAG/O,KAAKonD,QAAQlyB,GAAGA,IAAIl1B,KAAKy4E,UAAUz4E,KAAKy4E,SAASvjD,EAAEl1B,KAAKonD,MAAMwxB,UAAU1jD,IAAIA,GAAGl1B,KAAKonD,MAAMyxB,QAAQ,MAAMt9E,MAAM,SAAS25B,EAAEnmB,GAAG/O,KAAKonD,QAAQlyB,GAAGA,IAAIl1B,KAAKy4E,UAAUz4E,KAAKy4E,SAASvjD,EAAEl1B,KAAKonD,MAAMwxB,UAAU1jD,IAAIA,GAAGl1B,KAAKonD,MAAMyxB,QAAQ,MAAMxhE,SAAS,SAAS6d,EAAEnmB,GAAG/O,KAAKonD,OAAOpnD,KAAKonD,MAAM7d,QAAQrU,OAAO,SAASA,EAAEnmB,GAAGmmB,EAAE5+B,QAAQ,SAAS4+B,EAAEnmB,EAAE9G,EAAEjR,EAAEiiC,EAAEnxB,GAAG,IAAIiwE,EAAE3+C,EAAElE,EAAEA,GAAG,GAAGf,SAASe,EAAEr0B,QAAQ,WAAWszB,GAAG,aAAaA,IAAI4jD,EAAE7iD,EAAEkE,EAAElE,EAAEr0B,SAAS,IAA4Jq5B,EAAxJzoB,EAAE,mBAAmB2nB,EAAEA,EAAEvU,QAAQuU,EAAyH,GAAvHrqB,IAAI0C,EAAEjY,OAAOuV,EAAEvV,OAAOiY,EAAEqnE,gBAAgB/pE,EAAE+pE,gBAAgBrnE,EAAEsnE,WAAU,GAAI9wE,IAAIwJ,EAAElY,YAAW,GAAI0/B,IAAIxnB,EAAEunE,SAAS//C,GAAYnxB,GAAGoyB,EAAE,SAAShF,GAAGA,EAAEA,GAAGl1B,KAAKi5E,QAAQj5E,KAAKi5E,OAAOC,YAAYl5E,KAAKk7C,QAAQl7C,KAAKk7C,OAAO+9B,QAAQj5E,KAAKk7C,OAAO+9B,OAAOC,WAAWhkD,GAAG,oBAAoBikD,sBAAsBjkD,EAAEikD,qBAAqBniF,GAAGA,EAAEoR,KAAKpI,KAAKk1B,GAAGA,GAAGA,EAAEkkD,uBAAuBlkD,EAAEkkD,sBAAsB5jD,IAAI1tB,IAAI2J,EAAE4nE,aAAan/C,GAAGljC,IAAIkjC,EAAEljC,GAAGkjC,EAAE,CAAC,IAAInB,EAAEtnB,EAAElY,WAAW0S,EAAE8sB,EAAEtnB,EAAEjY,OAAOiY,EAAE6nE,aAAavgD,GAAGtnB,EAAE8nE,cAAcr/C,EAAEzoB,EAAEjY,OAAO,SAAS07B,EAAEnmB,GAAG,OAAOmrB,EAAE9xB,KAAK2G,GAAG9C,EAAEipB,EAAEnmB,KAAK0C,EAAE6nE,aAAartE,EAAE,GAAGlS,OAAOkS,EAAEiuB,GAAG,CAACA,GAAG,MAAM,CAACs/C,SAASzB,EAAEzhF,QAAQ8iC,EAAEvU,QAAQpT,KAAK,SAASyjB,EAAEnmB,EAAE9G,GAAG,aAAa,IAAIjR,EAAE,WAAW,IAAIk+B,EAAEl1B,KAAK+O,EAAEmmB,EAAEryB,eAAeoF,EAAEitB,EAAEukD,MAAMC,IAAI3qE,EAAE,OAAO9G,EAAE,MAAM,CAACpO,YAAY,gBAAgB,CAACq7B,EAAEykD,GAAG,WAAWzkD,EAAE0kD,GAAG,KAAK3xE,EAAE,MAAM,CAAC8S,IAAI,YAAY,IAAIke,EAAE,GAAGnxB,EAAE,CAACtO,OAAOxC,EAAE8hF,gBAAgB7/C,GAAGlqB,EAAE0C,EAAE3J,S,mCCAt0J;;;;;;;AAUA,IAAI+xE,EAAS,EAAQ,QACjBC,EAAU,EAAQ,QAClBlxE,EAAU,EAAQ,QAuCtB,SAASmxE,IACP,IACE,IAAIliF,EAAM,IAAIhB,WAAW,GAEzB,OADAgB,EAAI2sB,UAAY,CAACA,UAAW3tB,WAAWqR,UAAW8xE,IAAK,WAAc,OAAO,KACvD,KAAdniF,EAAImiF,OACiB,oBAAjBniF,EAAIoiF,UACuB,IAAlCpiF,EAAIoiF,SAAS,EAAG,GAAG1jF,WACvB,MAAOwY,GACP,OAAO,GAIX,SAASmrE,IACP,OAAOzmB,EAAO0mB,oBACV,WACA,WAGN,SAASC,EAAcC,EAAMnjF,GAC3B,GAAIgjF,IAAehjF,EACjB,MAAM,IAAIojF,WAAW,8BAcvB,OAZI7mB,EAAO0mB,qBAETE,EAAO,IAAIxjF,WAAWK,GACtBmjF,EAAK71D,UAAYivC,EAAOvrD,YAGX,OAATmyE,IACFA,EAAO,IAAI5mB,EAAOv8D,IAEpBmjF,EAAKnjF,OAASA,GAGTmjF,EAaT,SAAS5mB,EAAQ8mB,EAAKC,EAAkBtjF,GACtC,IAAKu8D,EAAO0mB,uBAAyBn6E,gBAAgByzD,GACnD,OAAO,IAAIA,EAAO8mB,EAAKC,EAAkBtjF,GAI3C,GAAmB,kBAARqjF,EAAkB,CAC3B,GAAgC,kBAArBC,EACT,MAAM,IAAIljF,MACR,qEAGJ,OAAO28D,EAAYj0D,KAAMu6E,GAE3B,OAAOhyE,EAAKvI,KAAMu6E,EAAKC,EAAkBtjF,GAW3C,SAASqR,EAAM8xE,EAAM9+E,EAAOi/E,EAAkBtjF,GAC5C,GAAqB,kBAAVqE,EACT,MAAM,IAAIsM,UAAU,yCAGtB,MAA2B,qBAAhB4yE,aAA+Bl/E,aAAiBk/E,YAClDC,EAAgBL,EAAM9+E,EAAOi/E,EAAkBtjF,GAGnC,kBAAVqE,EACFo/E,EAAWN,EAAM9+E,EAAOi/E,GAG1BI,EAAWP,EAAM9+E,GA4B1B,SAASs/E,EAAY14D,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAIta,UAAU,oCACf,GAAIsa,EAAO,EAChB,MAAM,IAAIm4D,WAAW,wCAIzB,SAASQ,EAAOT,EAAMl4D,EAAM8vD,EAAM8I,GAEhC,OADAF,EAAW14D,GACPA,GAAQ,EACHi4D,EAAaC,EAAMl4D,QAEflb,IAATgrE,EAIyB,kBAAb8I,EACVX,EAAaC,EAAMl4D,GAAM8vD,KAAKA,EAAM8I,GACpCX,EAAaC,EAAMl4D,GAAM8vD,KAAKA,GAE7BmI,EAAaC,EAAMl4D,GAW5B,SAAS8xC,EAAaomB,EAAMl4D,GAG1B,GAFA04D,EAAW14D,GACXk4D,EAAOD,EAAaC,EAAMl4D,EAAO,EAAI,EAAoB,EAAhB64D,EAAQ74D,KAC5CsxC,EAAO0mB,oBACV,IAAK,IAAInjF,EAAI,EAAGA,EAAImrB,IAAQnrB,EAC1BqjF,EAAKrjF,GAAK,EAGd,OAAOqjF,EAgBT,SAASM,EAAYN,EAAMY,EAAQF,GAKjC,GAJwB,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGRtnB,EAAOynB,WAAWH,GACrB,MAAM,IAAIlzE,UAAU,8CAGtB,IAAI3Q,EAAwC,EAA/BX,EAAW0kF,EAAQF,GAChCV,EAAOD,EAAaC,EAAMnjF,GAE1B,IAAI6wD,EAASsyB,EAAKjoC,MAAM6oC,EAAQF,GAShC,OAPIhzB,IAAW7wD,IAIbmjF,EAAOA,EAAKhyE,MAAM,EAAG0/C,IAGhBsyB,EAGT,SAASc,EAAed,EAAM9yE,GAC5B,IAAIrQ,EAASqQ,EAAMrQ,OAAS,EAAI,EAA4B,EAAxB8jF,EAAQzzE,EAAMrQ,QAClDmjF,EAAOD,EAAaC,EAAMnjF,GAC1B,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAC/BqjF,EAAKrjF,GAAgB,IAAXuQ,EAAMvQ,GAElB,OAAOqjF,EAGT,SAASK,EAAiBL,EAAM9yE,EAAO6zE,EAAYlkF,GAGjD,GAFAqQ,EAAMhR,WAEF6kF,EAAa,GAAK7zE,EAAMhR,WAAa6kF,EACvC,MAAM,IAAId,WAAW,6BAGvB,GAAI/yE,EAAMhR,WAAa6kF,GAAclkF,GAAU,GAC7C,MAAM,IAAIojF,WAAW,6BAmBvB,OAfE/yE,OADiBN,IAAfm0E,QAAuCn0E,IAAX/P,EACtB,IAAIL,WAAW0Q,QACHN,IAAX/P,EACD,IAAIL,WAAW0Q,EAAO6zE,GAEtB,IAAIvkF,WAAW0Q,EAAO6zE,EAAYlkF,GAGxCu8D,EAAO0mB,qBAETE,EAAO9yE,EACP8yE,EAAK71D,UAAYivC,EAAOvrD,WAGxBmyE,EAAOc,EAAcd,EAAM9yE,GAEtB8yE,EAGT,SAASO,EAAYP,EAAM/+E,GACzB,GAAIm4D,EAAOtL,SAAS7sD,GAAM,CACxB,IAAIrE,EAA4B,EAAtB+jF,EAAQ1/E,EAAIpE,QAGtB,OAFAmjF,EAAOD,EAAaC,EAAMpjF,GAEN,IAAhBojF,EAAKnjF,OACAmjF,GAGT/+E,EAAIg/C,KAAK+/B,EAAM,EAAG,EAAGpjF,GACdojF,GAGT,GAAI/+E,EAAK,CACP,GAA4B,qBAAhBm/E,aACRn/E,EAAIm2C,kBAAkBgpC,aAAgB,WAAYn/E,EACpD,MAA0B,kBAAfA,EAAIpE,QAAuBmkF,GAAM//E,EAAIpE,QACvCkjF,EAAaC,EAAM,GAErBc,EAAcd,EAAM/+E,GAG7B,GAAiB,WAAbA,EAAI+Q,MAAqBzD,EAAQtN,EAAI3B,MACvC,OAAOwhF,EAAcd,EAAM/+E,EAAI3B,MAInC,MAAM,IAAIkO,UAAU,sFAGtB,SAASmzE,EAAS9jF,GAGhB,GAAIA,GAAUgjF,IACZ,MAAM,IAAII,WAAW,0DACaJ,IAAa/xE,SAAS,IAAM,UAEhE,OAAgB,EAATjR,EAGT,SAASokF,EAAYpkF,GAInB,OAHKA,GAAUA,IACbA,EAAS,GAEJu8D,EAAOqnB,OAAO5jF,GA+EvB,SAASX,EAAY0kF,EAAQF,GAC3B,GAAItnB,EAAOtL,SAAS8yB,GAClB,OAAOA,EAAO/jF,OAEhB,GAA2B,qBAAhBujF,aAA6D,oBAAvBA,YAAYc,SACxDd,YAAYc,OAAON,IAAWA,aAAkBR,aACnD,OAAOQ,EAAO1kF,WAEM,kBAAX0kF,IACTA,EAAS,GAAKA,GAGhB,IAAIhkF,EAAMgkF,EAAO/jF,OACjB,GAAY,IAARD,EAAW,OAAO,EAItB,IADA,IAAIukF,GAAc,IAEhB,OAAQT,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO9jF,EACT,IAAK,OACL,IAAK,QACL,UAAKgQ,EACH,OAAOw0E,EAAYR,GAAQ/jF,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAND,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOykF,EAAcT,GAAQ/jF,OAC/B,QACE,GAAIskF,EAAa,OAAOC,EAAYR,GAAQ/jF,OAC5C6jF,GAAY,GAAKA,GAAUl+D,cAC3B2+D,GAAc,GAMtB,SAASG,EAAcZ,EAAU5iF,EAAOC,GACtC,IAAIojF,GAAc,EAclB,SALcv0E,IAAV9O,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ6H,KAAK9I,OACf,MAAO,GAOT,SAJY+P,IAAR7O,GAAqBA,EAAM4H,KAAK9I,UAClCkB,EAAM4H,KAAK9I,QAGTkB,GAAO,EACT,MAAO,GAOT,GAHAA,KAAS,EACTD,KAAW,EAEPC,GAAOD,EACT,MAAO,GAGJ4iF,IAAUA,EAAW,QAE1B,MAAO,EACL,OAAQA,GACN,IAAK,MACH,OAAOa,EAAS57E,KAAM7H,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOyjF,EAAU77E,KAAM7H,EAAOC,GAEhC,IAAK,QACH,OAAO0jF,EAAW97E,KAAM7H,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAO2jF,EAAY/7E,KAAM7H,EAAOC,GAElC,IAAK,SACH,OAAO4jF,EAAYh8E,KAAM7H,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO6jF,EAAaj8E,KAAM7H,EAAOC,GAEnC,QACE,GAAIojF,EAAa,MAAM,IAAI3zE,UAAU,qBAAuBkzE,GAC5DA,GAAYA,EAAW,IAAIl+D,cAC3B2+D,GAAc,GAStB,SAASU,EAAMxqE,EAAGzJ,EAAGixB,GACnB,IAAIliC,EAAI0a,EAAEzJ,GACVyJ,EAAEzJ,GAAKyJ,EAAEwnB,GACTxnB,EAAEwnB,GAAKliC,EAmIT,SAASmlF,EAAsB1qC,EAAQpW,EAAK+/C,EAAYL,EAAUx3D,GAEhE,GAAsB,IAAlBkuB,EAAOv6C,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfkkF,GACTL,EAAWK,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACV9/C,MAAM8/C,KAERA,EAAa73D,EAAM,EAAKkuB,EAAOv6C,OAAS,GAItCkkF,EAAa,IAAGA,EAAa3pC,EAAOv6C,OAASkkF,GAC7CA,GAAc3pC,EAAOv6C,OAAQ,CAC/B,GAAIqsB,EAAK,OAAQ,EACZ63D,EAAa3pC,EAAOv6C,OAAS,OAC7B,GAAIkkF,EAAa,EAAG,CACzB,IAAI73D,EACC,OAAQ,EADJ63D,EAAa,EAUxB,GALmB,kBAAR//C,IACTA,EAAMo4B,EAAOlrD,KAAK8yB,EAAK0/C,IAIrBtnB,EAAOtL,SAAS9sB,GAElB,OAAmB,IAAfA,EAAInkC,QACE,EAEHklF,EAAa3qC,EAAQpW,EAAK+/C,EAAYL,EAAUx3D,GAClD,GAAmB,kBAAR8X,EAEhB,OADAA,GAAY,IACRo4B,EAAO0mB,qBACiC,oBAAjCtjF,WAAWqR,UAAU1Q,QAC1B+rB,EACK1sB,WAAWqR,UAAU1Q,QAAQ4Q,KAAKqpC,EAAQpW,EAAK+/C,GAE/CvkF,WAAWqR,UAAU0hD,YAAYxhD,KAAKqpC,EAAQpW,EAAK+/C,GAGvDgB,EAAa3qC,EAAQ,CAAEpW,GAAO+/C,EAAYL,EAAUx3D,GAG7D,MAAM,IAAI1b,UAAU,wCAGtB,SAASu0E,EAAcvkF,EAAKwjC,EAAK+/C,EAAYL,EAAUx3D,GACrD,IA0BIvsB,EA1BAqlF,EAAY,EACZC,EAAYzkF,EAAIX,OAChBqlF,EAAYlhD,EAAInkC,OAEpB,QAAiB+P,IAAb8zE,IACFA,EAAW/xE,OAAO+xE,GAAUl+D,cACX,SAAbk+D,GAAoC,UAAbA,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAIljF,EAAIX,OAAS,GAAKmkC,EAAInkC,OAAS,EACjC,OAAQ,EAEVmlF,EAAY,EACZC,GAAa,EACbC,GAAa,EACbnB,GAAc,EAIlB,SAAS5pC,EAAMgrC,EAAKxlF,GAClB,OAAkB,IAAdqlF,EACKG,EAAIxlF,GAEJwlF,EAAIC,aAAazlF,EAAIqlF,GAKhC,GAAI94D,EAAK,CACP,IAAIm5D,GAAc,EAClB,IAAK1lF,EAAIokF,EAAYpkF,EAAIslF,EAAWtlF,IAClC,GAAIw6C,EAAK35C,EAAKb,KAAOw6C,EAAKnW,GAAqB,IAAhBqhD,EAAoB,EAAI1lF,EAAI0lF,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa1lF,GAChCA,EAAI0lF,EAAa,IAAMH,EAAW,OAAOG,EAAaL,OAEtC,IAAhBK,IAAmB1lF,GAAKA,EAAI0lF,GAChCA,GAAc,OAKlB,IADItB,EAAamB,EAAYD,IAAWlB,EAAakB,EAAYC,GAC5DvlF,EAAIokF,EAAYpkF,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAI2lF,GAAQ,EACH3jD,EAAI,EAAGA,EAAIujD,EAAWvjD,IAC7B,GAAIwY,EAAK35C,EAAKb,EAAIgiC,KAAOwY,EAAKnW,EAAKrC,GAAI,CACrC2jD,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAO3lF,EAItB,OAAQ,EAeV,SAAS4lF,EAAUJ,EAAKvB,EAAQ71C,EAAQluC,GACtCkuC,EAASsd,OAAOtd,IAAW,EAC3B,IAAIs/B,EAAY8X,EAAItlF,OAASkuC,EACxBluC,GAGHA,EAASwrD,OAAOxrD,GACZA,EAASwtE,IACXxtE,EAASwtE,IAJXxtE,EAASwtE,EASX,IAAImY,EAAS5B,EAAO/jF,OACpB,GAAI2lF,EAAS,IAAM,EAAG,MAAM,IAAIh1E,UAAU,sBAEtC3Q,EAAS2lF,EAAS,IACpB3lF,EAAS2lF,EAAS,GAEpB,IAAK,IAAI7lF,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAC/B,IAAIwwB,EAASiR,SAASwiD,EAAOtoB,OAAW,EAAJ37D,EAAO,GAAI,IAC/C,GAAIskC,MAAM9T,GAAS,OAAOxwB,EAC1BwlF,EAAIp3C,EAASpuC,GAAKwwB,EAEpB,OAAOxwB,EAGT,SAAS8lF,EAAWN,EAAKvB,EAAQ71C,EAAQluC,GACvC,OAAO6lF,GAAWtB,EAAYR,EAAQuB,EAAItlF,OAASkuC,GAASo3C,EAAKp3C,EAAQluC,GAG3E,SAAS8lF,EAAYR,EAAKvB,EAAQ71C,EAAQluC,GACxC,OAAO6lF,GAAWE,EAAahC,GAASuB,EAAKp3C,EAAQluC,GAGvD,SAASgmF,EAAaV,EAAKvB,EAAQ71C,EAAQluC,GACzC,OAAO8lF,EAAWR,EAAKvB,EAAQ71C,EAAQluC,GAGzC,SAASimF,EAAaX,EAAKvB,EAAQ71C,EAAQluC,GACzC,OAAO6lF,GAAWrB,EAAcT,GAASuB,EAAKp3C,EAAQluC,GAGxD,SAASkmF,EAAWZ,EAAKvB,EAAQ71C,EAAQluC,GACvC,OAAO6lF,GAAWM,EAAepC,EAAQuB,EAAItlF,OAASkuC,GAASo3C,EAAKp3C,EAAQluC,GAkF9E,SAAS8kF,EAAaQ,EAAKrkF,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQokF,EAAItlF,OACtB2iF,EAAOpjF,cAAc+lF,GAErB3C,EAAOpjF,cAAc+lF,EAAIn0E,MAAMlQ,EAAOC,IAIjD,SAASyjF,EAAWW,EAAKrkF,EAAOC,GAC9BA,EAAMu5B,KAAKlG,IAAI+wD,EAAItlF,OAAQkB,GAC3B,IAAIklF,EAAM,GAENtmF,EAAImB,EACR,MAAOnB,EAAIoB,EAAK,CACd,IAQMmlF,EAAYC,EAAWC,EAAYC,EARrCC,EAAYnB,EAAIxlF,GAChB4mF,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAI3mF,EAAI6mF,GAAoBzlF,EAG1B,OAAQylF,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EACHJ,EAAaf,EAAIxlF,EAAI,GACO,OAAV,IAAbumF,KACHG,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,EACzCG,EAAgB,MAClBE,EAAYF,IAGhB,MACF,KAAK,EACHH,EAAaf,EAAIxlF,EAAI,GACrBwmF,EAAYhB,EAAIxlF,EAAI,GACQ,OAAV,IAAbumF,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,IAGhB,MACF,KAAK,EACHH,EAAaf,EAAIxlF,EAAI,GACrBwmF,EAAYhB,EAAIxlF,EAAI,GACpBymF,EAAajB,EAAIxlF,EAAI,GACO,OAAV,IAAbumF,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CE,EAAYF,IAMJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbN,EAAIhlF,KAAKslF,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBN,EAAIhlF,KAAKslF,GACT5mF,GAAK6mF,EAGP,OAAOC,EAAsBR,GA98B/BhnF,EAAQm9D,OAASA,EACjBn9D,EAAQglF,WAAaA,EACrBhlF,EAAQynF,kBAAoB,GA0B5BtqB,EAAO0mB,yBAAqDlzE,IAA/B2tD,EAAOulB,oBAChCvlB,EAAOulB,oBACPJ,IAKJzjF,EAAQ4jF,WAAaA,IAkErBzmB,EAAOuqB,SAAW,KAGlBvqB,EAAOwqB,SAAW,SAAUpmF,GAE1B,OADAA,EAAI2sB,UAAYivC,EAAOvrD,UAChBrQ,GA2BT47D,EAAOlrD,KAAO,SAAUhN,EAAOi/E,EAAkBtjF,GAC/C,OAAOqR,EAAK,KAAMhN,EAAOi/E,EAAkBtjF,IAGzCu8D,EAAO0mB,sBACT1mB,EAAOvrD,UAAUsc,UAAY3tB,WAAWqR,UACxCurD,EAAOjvC,UAAY3tB,WACG,qBAAX6R,QAA0BA,OAAOw1E,SACxCzqB,EAAO/qD,OAAOw1E,WAAazqB,GAE7Br5D,OAAOiB,eAAeo4D,EAAQ/qD,OAAOw1E,QAAS,CAC5C3iF,MAAO,KACPC,cAAc,KAiCpBi4D,EAAOqnB,MAAQ,SAAU34D,EAAM8vD,EAAM8I,GACnC,OAAOD,EAAM,KAAM34D,EAAM8vD,EAAM8I,IAiBjCtnB,EAAOQ,YAAc,SAAU9xC,GAC7B,OAAO8xC,EAAY,KAAM9xC,IAK3BsxC,EAAO0qB,gBAAkB,SAAUh8D,GACjC,OAAO8xC,EAAY,KAAM9xC,IAiH3BsxC,EAAOtL,SAAW,SAAmBz2C,GACnC,QAAe,MAALA,IAAaA,EAAE0sE,YAG3B3qB,EAAO5N,QAAU,SAAkBp0C,EAAGC,GACpC,IAAK+hD,EAAOtL,SAAS12C,KAAOgiD,EAAOtL,SAASz2C,GAC1C,MAAM,IAAI7J,UAAU,6BAGtB,GAAI4J,IAAMC,EAAG,OAAO,EAKpB,IAHA,IAAIs4B,EAAIv4B,EAAEva,OACNqiC,EAAI7nB,EAAExa,OAEDF,EAAI,EAAGC,EAAM06B,KAAKlG,IAAIue,EAAGzQ,GAAIviC,EAAIC,IAAOD,EAC/C,GAAIya,EAAEza,KAAO0a,EAAE1a,GAAI,CACjBgzC,EAAIv4B,EAAEza,GACNuiC,EAAI7nB,EAAE1a,GACN,MAIJ,OAAIgzC,EAAIzQ,GAAW,EACfA,EAAIyQ,EAAU,EACX,GAGTypB,EAAOynB,WAAa,SAAqBH,GACvC,OAAQ/xE,OAAO+xE,GAAUl+D,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIb42C,EAAO15D,OAAS,SAAiB8yD,EAAM31D,GACrC,IAAK0R,EAAQikD,GACX,MAAM,IAAIhlD,UAAU,+CAGtB,GAAoB,IAAhBglD,EAAK31D,OACP,OAAOu8D,EAAOqnB,MAAM,GAGtB,IAAI9jF,EACJ,QAAeiQ,IAAX/P,EAEF,IADAA,EAAS,EACJF,EAAI,EAAGA,EAAI61D,EAAK31D,SAAUF,EAC7BE,GAAU21D,EAAK71D,GAAGE,OAItB,IAAIu6C,EAASgiB,EAAOQ,YAAY/8D,GAC5BquD,EAAM,EACV,IAAKvuD,EAAI,EAAGA,EAAI61D,EAAK31D,SAAUF,EAAG,CAChC,IAAIwlF,EAAM3vB,EAAK71D,GACf,IAAKy8D,EAAOtL,SAASq0B,GACnB,MAAM,IAAI30E,UAAU,+CAEtB20E,EAAIliC,KAAK7I,EAAQ8T,GACjBA,GAAOi3B,EAAItlF,OAEb,OAAOu6C,GA8CTgiB,EAAOl9D,WAAaA,EA0EpBk9D,EAAOvrD,UAAUk2E,WAAY,EAQ7B3qB,EAAOvrD,UAAUm2E,OAAS,WACxB,IAAIpnF,EAAM+I,KAAK9I,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIqjF,WAAW,6CAEvB,IAAK,IAAItjF,EAAI,EAAGA,EAAIC,EAAKD,GAAK,EAC5BklF,EAAKl8E,KAAMhJ,EAAGA,EAAI,GAEpB,OAAOgJ,MAGTyzD,EAAOvrD,UAAUo2E,OAAS,WACxB,IAAIrnF,EAAM+I,KAAK9I,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIqjF,WAAW,6CAEvB,IAAK,IAAItjF,EAAI,EAAGA,EAAIC,EAAKD,GAAK,EAC5BklF,EAAKl8E,KAAMhJ,EAAGA,EAAI,GAClBklF,EAAKl8E,KAAMhJ,EAAI,EAAGA,EAAI,GAExB,OAAOgJ,MAGTyzD,EAAOvrD,UAAUq2E,OAAS,WACxB,IAAItnF,EAAM+I,KAAK9I,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIqjF,WAAW,6CAEvB,IAAK,IAAItjF,EAAI,EAAGA,EAAIC,EAAKD,GAAK,EAC5BklF,EAAKl8E,KAAMhJ,EAAGA,EAAI,GAClBklF,EAAKl8E,KAAMhJ,EAAI,EAAGA,EAAI,GACtBklF,EAAKl8E,KAAMhJ,EAAI,EAAGA,EAAI,GACtBklF,EAAKl8E,KAAMhJ,EAAI,EAAGA,EAAI,GAExB,OAAOgJ,MAGTyzD,EAAOvrD,UAAUC,SAAW,WAC1B,IAAIjR,EAAuB,EAAd8I,KAAK9I,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArB4D,UAAU5D,OAAqB2kF,EAAU77E,KAAM,EAAG9I,GAC/CykF,EAAahhF,MAAMqF,KAAMlF,YAGlC24D,EAAOvrD,UAAUs2E,OAAS,SAAiB9sE,GACzC,IAAK+hD,EAAOtL,SAASz2C,GAAI,MAAM,IAAI7J,UAAU,6BAC7C,OAAI7H,OAAS0R,GACsB,IAA5B+hD,EAAO5N,QAAQ7lD,KAAM0R,IAG9B+hD,EAAOvrD,UAAUu2E,QAAU,WACzB,IAAIpT,EAAM,GACNv/C,EAAMx1B,EAAQynF,kBAKlB,OAJI/9E,KAAK9I,OAAS,IAChBm0E,EAAMrrE,KAAKmI,SAAS,MAAO,EAAG2jB,GAAKqP,MAAM,SAAS5iC,KAAK,KACnDyH,KAAK9I,OAAS40B,IAAKu/C,GAAO,UAEzB,WAAaA,EAAM,KAG5B5X,EAAOvrD,UAAU29C,QAAU,SAAkBhrD,EAAQ1C,EAAOC,EAAKsmF,EAAWC,GAC1E,IAAKlrB,EAAOtL,SAASttD,GACnB,MAAM,IAAIgN,UAAU,6BAgBtB,QAbcZ,IAAV9O,IACFA,EAAQ,QAEE8O,IAAR7O,IACFA,EAAMyC,EAASA,EAAO3D,OAAS,QAEf+P,IAAdy3E,IACFA,EAAY,QAEEz3E,IAAZ03E,IACFA,EAAU3+E,KAAK9I,QAGbiB,EAAQ,GAAKC,EAAMyC,EAAO3D,QAAUwnF,EAAY,GAAKC,EAAU3+E,KAAK9I,OACtE,MAAM,IAAIojF,WAAW,sBAGvB,GAAIoE,GAAaC,GAAWxmF,GAASC,EACnC,OAAO,EAET,GAAIsmF,GAAaC,EACf,OAAQ,EAEV,GAAIxmF,GAASC,EACX,OAAO,EAQT,GALAD,KAAW,EACXC,KAAS,EACTsmF,KAAe,EACfC,KAAa,EAET3+E,OAASnF,EAAQ,OAAO,EAS5B,IAPA,IAAImvC,EAAI20C,EAAUD,EACdnlD,EAAInhC,EAAMD,EACVlB,EAAM06B,KAAKlG,IAAIue,EAAGzQ,GAElBqlD,EAAW5+E,KAAKqI,MAAMq2E,EAAWC,GACjCE,EAAahkF,EAAOwN,MAAMlQ,EAAOC,GAE5BpB,EAAI,EAAGA,EAAIC,IAAOD,EACzB,GAAI4nF,EAAS5nF,KAAO6nF,EAAW7nF,GAAI,CACjCgzC,EAAI40C,EAAS5nF,GACbuiC,EAAIslD,EAAW7nF,GACf,MAIJ,OAAIgzC,EAAIzQ,GAAW,EACfA,EAAIyQ,EAAU,EACX,GA6HTypB,EAAOvrD,UAAU42E,SAAW,SAAmBzjD,EAAK+/C,EAAYL,GAC9D,OAAoD,IAA7C/6E,KAAKxI,QAAQ6jC,EAAK+/C,EAAYL,IAGvCtnB,EAAOvrD,UAAU1Q,QAAU,SAAkB6jC,EAAK+/C,EAAYL,GAC5D,OAAOoB,EAAqBn8E,KAAMq7B,EAAK+/C,EAAYL,GAAU,IAG/DtnB,EAAOvrD,UAAU0hD,YAAc,SAAsBvuB,EAAK+/C,EAAYL,GACpE,OAAOoB,EAAqBn8E,KAAMq7B,EAAK+/C,EAAYL,GAAU,IAkD/DtnB,EAAOvrD,UAAUkqC,MAAQ,SAAgB6oC,EAAQ71C,EAAQluC,EAAQ6jF,GAE/D,QAAe9zE,IAAXm+B,EACF21C,EAAW,OACX7jF,EAAS8I,KAAK9I,OACdkuC,EAAS,OAEJ,QAAen+B,IAAX/P,GAA0C,kBAAXkuC,EACxC21C,EAAW31C,EACXluC,EAAS8I,KAAK9I,OACdkuC,EAAS,MAEJ,KAAIogC,SAASpgC,GAWlB,MAAM,IAAI9tC,MACR,2EAXF8tC,GAAkB,EACdogC,SAAStuE,IACXA,GAAkB,OACD+P,IAAb8zE,IAAwBA,EAAW,UAEvCA,EAAW7jF,EACXA,OAAS+P,GASb,IAAIy9D,EAAY1kE,KAAK9I,OAASkuC,EAG9B,SAFen+B,IAAX/P,GAAwBA,EAASwtE,KAAWxtE,EAASwtE,GAEpDuW,EAAO/jF,OAAS,IAAMA,EAAS,GAAKkuC,EAAS,IAAOA,EAASplC,KAAK9I,OACrE,MAAM,IAAIojF,WAAW,0CAGlBS,IAAUA,EAAW,QAG1B,IADA,IAAIS,GAAc,IAEhB,OAAQT,GACN,IAAK,MACH,OAAO6B,EAAS58E,KAAMi7E,EAAQ71C,EAAQluC,GAExC,IAAK,OACL,IAAK,QACH,OAAO4lF,EAAU98E,KAAMi7E,EAAQ71C,EAAQluC,GAEzC,IAAK,QACH,OAAO8lF,EAAWh9E,KAAMi7E,EAAQ71C,EAAQluC,GAE1C,IAAK,SACL,IAAK,SACH,OAAOgmF,EAAYl9E,KAAMi7E,EAAQ71C,EAAQluC,GAE3C,IAAK,SAEH,OAAOimF,EAAYn9E,KAAMi7E,EAAQ71C,EAAQluC,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOkmF,EAAUp9E,KAAMi7E,EAAQ71C,EAAQluC,GAEzC,QACE,GAAIskF,EAAa,MAAM,IAAI3zE,UAAU,qBAAuBkzE,GAC5DA,GAAY,GAAKA,GAAUl+D,cAC3B2+D,GAAc,IAKtB/nB,EAAOvrD,UAAU62E,OAAS,WACxB,MAAO,CACL1yE,KAAM,SACN1S,KAAM7C,MAAMoR,UAAUG,MAAMD,KAAKpI,KAAKklB,MAAQllB,KAAM,KAwFxD,IAAIg/E,EAAuB,KAE3B,SAASlB,EAAuBmB,GAC9B,IAAIhoF,EAAMgoF,EAAW/nF,OACrB,GAAID,GAAO+nF,EACT,OAAOh2E,OAAOguC,aAAar8C,MAAMqO,OAAQi2E,GAI3C,IAAI3B,EAAM,GACNtmF,EAAI,EACR,MAAOA,EAAIC,EACTqmF,GAAOt0E,OAAOguC,aAAar8C,MACzBqO,OACAi2E,EAAW52E,MAAMrR,EAAGA,GAAKgoF,IAG7B,OAAO1B,EAGT,SAASxB,EAAYU,EAAKrkF,EAAOC,GAC/B,IAAI8rD,EAAM,GACV9rD,EAAMu5B,KAAKlG,IAAI+wD,EAAItlF,OAAQkB,GAE3B,IAAK,IAAIpB,EAAImB,EAAOnB,EAAIoB,IAAOpB,EAC7BktD,GAAOl7C,OAAOguC,aAAsB,IAATwlC,EAAIxlF,IAEjC,OAAOktD,EAGT,SAAS63B,EAAaS,EAAKrkF,EAAOC,GAChC,IAAI8rD,EAAM,GACV9rD,EAAMu5B,KAAKlG,IAAI+wD,EAAItlF,OAAQkB,GAE3B,IAAK,IAAIpB,EAAImB,EAAOnB,EAAIoB,IAAOpB,EAC7BktD,GAAOl7C,OAAOguC,aAAawlC,EAAIxlF,IAEjC,OAAOktD,EAGT,SAAS03B,EAAUY,EAAKrkF,EAAOC,GAC7B,IAAInB,EAAMulF,EAAItlF,SAETiB,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMnB,KAAKmB,EAAMnB,GAGxC,IADA,IAAIioF,EAAM,GACDloF,EAAImB,EAAOnB,EAAIoB,IAAOpB,EAC7BkoF,GAAOC,EAAM3C,EAAIxlF,IAEnB,OAAOkoF,EAGT,SAASjD,EAAcO,EAAKrkF,EAAOC,GAGjC,IAFA,IAAIgnF,EAAQ5C,EAAIn0E,MAAMlQ,EAAOC,GACzBklF,EAAM,GACDtmF,EAAI,EAAGA,EAAIooF,EAAMloF,OAAQF,GAAK,EACrCsmF,GAAOt0E,OAAOguC,aAAaooC,EAAMpoF,GAAoB,IAAfooF,EAAMpoF,EAAI,IAElD,OAAOsmF,EA0CT,SAAS+B,EAAaj6C,EAAQk6C,EAAKpoF,GACjC,GAAKkuC,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAIk1C,WAAW,sBAC3D,GAAIl1C,EAASk6C,EAAMpoF,EAAQ,MAAM,IAAIojF,WAAW,yCA+JlD,SAASiF,EAAU/C,EAAKjhF,EAAO6pC,EAAQk6C,EAAKxzD,EAAKL,GAC/C,IAAKgoC,EAAOtL,SAASq0B,GAAM,MAAM,IAAI30E,UAAU,+CAC/C,GAAItM,EAAQuwB,GAAOvwB,EAAQkwB,EAAK,MAAM,IAAI6uD,WAAW,qCACrD,GAAIl1C,EAASk6C,EAAM9C,EAAItlF,OAAQ,MAAM,IAAIojF,WAAW,sBAkDtD,SAASkF,EAAmBhD,EAAKjhF,EAAO6pC,EAAQq6C,GAC1ClkF,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GACxC,IAAK,IAAIvE,EAAI,EAAGgiC,EAAIrH,KAAKlG,IAAI+wD,EAAItlF,OAASkuC,EAAQ,GAAIpuC,EAAIgiC,IAAKhiC,EAC7DwlF,EAAIp3C,EAASpuC,IAAMuE,EAAS,KAAS,GAAKkkF,EAAezoF,EAAI,EAAIA,MAClC,GAA5ByoF,EAAezoF,EAAI,EAAIA,GA8B9B,SAAS0oF,EAAmBlD,EAAKjhF,EAAO6pC,EAAQq6C,GAC1ClkF,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAIvE,EAAI,EAAGgiC,EAAIrH,KAAKlG,IAAI+wD,EAAItlF,OAASkuC,EAAQ,GAAIpuC,EAAIgiC,IAAKhiC,EAC7DwlF,EAAIp3C,EAASpuC,GAAMuE,IAAuC,GAA5BkkF,EAAezoF,EAAI,EAAIA,GAAU,IAmJnE,SAAS2oF,EAAcnD,EAAKjhF,EAAO6pC,EAAQk6C,EAAKxzD,EAAKL,GACnD,GAAI2Z,EAASk6C,EAAM9C,EAAItlF,OAAQ,MAAM,IAAIojF,WAAW,sBACpD,GAAIl1C,EAAS,EAAG,MAAM,IAAIk1C,WAAW,sBAGvC,SAASsF,EAAYpD,EAAKjhF,EAAO6pC,EAAQq6C,EAAcI,GAKrD,OAJKA,GACHF,EAAanD,EAAKjhF,EAAO6pC,EAAQ,EAAG,sBAAyB,sBAE/D00C,EAAQ1nC,MAAMoqC,EAAKjhF,EAAO6pC,EAAQq6C,EAAc,GAAI,GAC7Cr6C,EAAS,EAWlB,SAAS06C,EAAatD,EAAKjhF,EAAO6pC,EAAQq6C,EAAcI,GAKtD,OAJKA,GACHF,EAAanD,EAAKjhF,EAAO6pC,EAAQ,EAAG,uBAA0B,uBAEhE00C,EAAQ1nC,MAAMoqC,EAAKjhF,EAAO6pC,EAAQq6C,EAAc,GAAI,GAC7Cr6C,EAAS,EA/clBquB,EAAOvrD,UAAUG,MAAQ,SAAgBlQ,EAAOC,GAC9C,IAoBI2nF,EApBA9oF,EAAM+I,KAAK9I,OAqBf,GApBAiB,IAAUA,EACVC,OAAc6O,IAAR7O,EAAoBnB,IAAQmB,EAE9BD,EAAQ,GACVA,GAASlB,EACLkB,EAAQ,IAAGA,EAAQ,IACdA,EAAQlB,IACjBkB,EAAQlB,GAGNmB,EAAM,GACRA,GAAOnB,EACHmB,EAAM,IAAGA,EAAM,IACVA,EAAMnB,IACfmB,EAAMnB,GAGJmB,EAAMD,IAAOC,EAAMD,GAGnBs7D,EAAO0mB,oBACT4F,EAAS//E,KAAKi6E,SAAS9hF,EAAOC,GAC9B2nF,EAAOv7D,UAAYivC,EAAOvrD,cACrB,CACL,IAAI83E,EAAW5nF,EAAMD,EACrB4nF,EAAS,IAAItsB,EAAOusB,OAAU/4E,GAC9B,IAAK,IAAIjQ,EAAI,EAAGA,EAAIgpF,IAAYhpF,EAC9B+oF,EAAO/oF,GAAKgJ,KAAKhJ,EAAImB,GAIzB,OAAO4nF,GAWTtsB,EAAOvrD,UAAU+3E,WAAa,SAAqB76C,EAAQ7uC,EAAYspF,GACrEz6C,GAAkB,EAClB7uC,GAA0B,EACrBspF,GAAUR,EAAYj6C,EAAQ7uC,EAAYyJ,KAAK9I,QAEpD,IAAImkC,EAAMr7B,KAAKolC,GACX86C,EAAM,EACNlpF,EAAI,EACR,QAASA,EAAIT,IAAe2pF,GAAO,KACjC7kD,GAAOr7B,KAAKolC,EAASpuC,GAAKkpF,EAG5B,OAAO7kD,GAGTo4B,EAAOvrD,UAAUi4E,WAAa,SAAqB/6C,EAAQ7uC,EAAYspF,GACrEz6C,GAAkB,EAClB7uC,GAA0B,EACrBspF,GACHR,EAAYj6C,EAAQ7uC,EAAYyJ,KAAK9I,QAGvC,IAAImkC,EAAMr7B,KAAKolC,IAAW7uC,GACtB2pF,EAAM,EACV,MAAO3pF,EAAa,IAAM2pF,GAAO,KAC/B7kD,GAAOr7B,KAAKolC,IAAW7uC,GAAc2pF,EAGvC,OAAO7kD,GAGTo4B,EAAOvrD,UAAUk4E,UAAY,SAAoBh7C,EAAQy6C,GAEvD,OADKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QACpC8I,KAAKolC,IAGdquB,EAAOvrD,UAAUm4E,aAAe,SAAuBj7C,EAAQy6C,GAE7D,OADKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QACpC8I,KAAKolC,GAAWplC,KAAKolC,EAAS,IAAM,GAG7CquB,EAAOvrD,UAAUu0E,aAAe,SAAuBr3C,EAAQy6C,GAE7D,OADKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QACnC8I,KAAKolC,IAAW,EAAKplC,KAAKolC,EAAS,IAG7CquB,EAAOvrD,UAAUo4E,aAAe,SAAuBl7C,EAAQy6C,GAG7D,OAFKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,SAElC8I,KAAKolC,GACTplC,KAAKolC,EAAS,IAAM,EACpBplC,KAAKolC,EAAS,IAAM,IACD,SAAnBplC,KAAKolC,EAAS,IAGrBquB,EAAOvrD,UAAUq4E,aAAe,SAAuBn7C,EAAQy6C,GAG7D,OAFKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QAEpB,SAAf8I,KAAKolC,IACTplC,KAAKolC,EAAS,IAAM,GACrBplC,KAAKolC,EAAS,IAAM,EACrBplC,KAAKolC,EAAS,KAGlBquB,EAAOvrD,UAAUs4E,UAAY,SAAoBp7C,EAAQ7uC,EAAYspF,GACnEz6C,GAAkB,EAClB7uC,GAA0B,EACrBspF,GAAUR,EAAYj6C,EAAQ7uC,EAAYyJ,KAAK9I,QAEpD,IAAImkC,EAAMr7B,KAAKolC,GACX86C,EAAM,EACNlpF,EAAI,EACR,QAASA,EAAIT,IAAe2pF,GAAO,KACjC7kD,GAAOr7B,KAAKolC,EAASpuC,GAAKkpF,EAM5B,OAJAA,GAAO,IAEH7kD,GAAO6kD,IAAK7kD,GAAO1J,KAAKwgB,IAAI,EAAG,EAAI57C,IAEhC8kC,GAGTo4B,EAAOvrD,UAAUu4E,UAAY,SAAoBr7C,EAAQ7uC,EAAYspF,GACnEz6C,GAAkB,EAClB7uC,GAA0B,EACrBspF,GAAUR,EAAYj6C,EAAQ7uC,EAAYyJ,KAAK9I,QAEpD,IAAIF,EAAIT,EACJ2pF,EAAM,EACN7kD,EAAMr7B,KAAKolC,IAAWpuC,GAC1B,MAAOA,EAAI,IAAMkpF,GAAO,KACtB7kD,GAAOr7B,KAAKolC,IAAWpuC,GAAKkpF,EAM9B,OAJAA,GAAO,IAEH7kD,GAAO6kD,IAAK7kD,GAAO1J,KAAKwgB,IAAI,EAAG,EAAI57C,IAEhC8kC,GAGTo4B,EAAOvrD,UAAUw4E,SAAW,SAAmBt7C,EAAQy6C,GAErD,OADKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QACtB,IAAf8I,KAAKolC,IAC0B,GAA5B,IAAOplC,KAAKolC,GAAU,GADKplC,KAAKolC,IAI3CquB,EAAOvrD,UAAUy4E,YAAc,SAAsBv7C,EAAQy6C,GACtDA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QAC3C,IAAImkC,EAAMr7B,KAAKolC,GAAWplC,KAAKolC,EAAS,IAAM,EAC9C,OAAc,MAAN/J,EAAsB,WAANA,EAAmBA,GAG7Co4B,EAAOvrD,UAAU04E,YAAc,SAAsBx7C,EAAQy6C,GACtDA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QAC3C,IAAImkC,EAAMr7B,KAAKolC,EAAS,GAAMplC,KAAKolC,IAAW,EAC9C,OAAc,MAAN/J,EAAsB,WAANA,EAAmBA,GAG7Co4B,EAAOvrD,UAAU24E,YAAc,SAAsBz7C,EAAQy6C,GAG3D,OAFKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QAEnC8I,KAAKolC,GACVplC,KAAKolC,EAAS,IAAM,EACpBplC,KAAKolC,EAAS,IAAM,GACpBplC,KAAKolC,EAAS,IAAM,IAGzBquB,EAAOvrD,UAAU44E,YAAc,SAAsB17C,EAAQy6C,GAG3D,OAFKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QAEnC8I,KAAKolC,IAAW,GACrBplC,KAAKolC,EAAS,IAAM,GACpBplC,KAAKolC,EAAS,IAAM,EACpBplC,KAAKolC,EAAS,IAGnBquB,EAAOvrD,UAAU64E,YAAc,SAAsB37C,EAAQy6C,GAE3D,OADKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QACpC4iF,EAAQtoC,KAAKxxC,KAAMolC,GAAQ,EAAM,GAAI,IAG9CquB,EAAOvrD,UAAU84E,YAAc,SAAsB57C,EAAQy6C,GAE3D,OADKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QACpC4iF,EAAQtoC,KAAKxxC,KAAMolC,GAAQ,EAAO,GAAI,IAG/CquB,EAAOvrD,UAAU+4E,aAAe,SAAuB77C,EAAQy6C,GAE7D,OADKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QACpC4iF,EAAQtoC,KAAKxxC,KAAMolC,GAAQ,EAAM,GAAI,IAG9CquB,EAAOvrD,UAAUg5E,aAAe,SAAuB97C,EAAQy6C,GAE7D,OADKA,GAAUR,EAAYj6C,EAAQ,EAAGplC,KAAK9I,QACpC4iF,EAAQtoC,KAAKxxC,KAAMolC,GAAQ,EAAO,GAAI,IAS/CquB,EAAOvrD,UAAUi5E,YAAc,SAAsB5lF,EAAO6pC,EAAQ7uC,EAAYspF,GAI9E,GAHAtkF,GAASA,EACT6pC,GAAkB,EAClB7uC,GAA0B,GACrBspF,EAAU,CACb,IAAIuB,EAAWzvD,KAAKwgB,IAAI,EAAG,EAAI57C,GAAc,EAC7CgpF,EAASv/E,KAAMzE,EAAO6pC,EAAQ7uC,EAAY6qF,EAAU,GAGtD,IAAIlB,EAAM,EACNlpF,EAAI,EACRgJ,KAAKolC,GAAkB,IAAR7pC,EACf,QAASvE,EAAIT,IAAe2pF,GAAO,KACjClgF,KAAKolC,EAASpuC,GAAMuE,EAAQ2kF,EAAO,IAGrC,OAAO96C,EAAS7uC,GAGlBk9D,EAAOvrD,UAAUm5E,YAAc,SAAsB9lF,EAAO6pC,EAAQ7uC,EAAYspF,GAI9E,GAHAtkF,GAASA,EACT6pC,GAAkB,EAClB7uC,GAA0B,GACrBspF,EAAU,CACb,IAAIuB,EAAWzvD,KAAKwgB,IAAI,EAAG,EAAI57C,GAAc,EAC7CgpF,EAASv/E,KAAMzE,EAAO6pC,EAAQ7uC,EAAY6qF,EAAU,GAGtD,IAAIpqF,EAAIT,EAAa,EACjB2pF,EAAM,EACVlgF,KAAKolC,EAASpuC,GAAa,IAARuE,EACnB,QAASvE,GAAK,IAAMkpF,GAAO,KACzBlgF,KAAKolC,EAASpuC,GAAMuE,EAAQ2kF,EAAO,IAGrC,OAAO96C,EAAS7uC,GAGlBk9D,EAAOvrD,UAAUo5E,WAAa,SAAqB/lF,EAAO6pC,EAAQy6C,GAMhE,OALAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,IAAM,GACjDquB,EAAO0mB,sBAAqB5+E,EAAQo2B,KAAK2gB,MAAM/2C,IACpDyE,KAAKolC,GAAmB,IAAR7pC,EACT6pC,EAAS,GAWlBquB,EAAOvrD,UAAUq5E,cAAgB,SAAwBhmF,EAAO6pC,EAAQy6C,GAUtE,OATAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,MAAQ,GACpDquB,EAAO0mB,qBACTn6E,KAAKolC,GAAmB,IAAR7pC,EAChByE,KAAKolC,EAAS,GAAM7pC,IAAU,GAE9BikF,EAAkBx/E,KAAMzE,EAAO6pC,GAAQ,GAElCA,EAAS,GAGlBquB,EAAOvrD,UAAUs5E,cAAgB,SAAwBjmF,EAAO6pC,EAAQy6C,GAUtE,OATAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,MAAQ,GACpDquB,EAAO0mB,qBACTn6E,KAAKolC,GAAW7pC,IAAU,EAC1ByE,KAAKolC,EAAS,GAAc,IAAR7pC,GAEpBikF,EAAkBx/E,KAAMzE,EAAO6pC,GAAQ,GAElCA,EAAS,GAUlBquB,EAAOvrD,UAAUu5E,cAAgB,SAAwBlmF,EAAO6pC,EAAQy6C,GAYtE,OAXAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,WAAY,GACxDquB,EAAO0mB,qBACTn6E,KAAKolC,EAAS,GAAM7pC,IAAU,GAC9ByE,KAAKolC,EAAS,GAAM7pC,IAAU,GAC9ByE,KAAKolC,EAAS,GAAM7pC,IAAU,EAC9ByE,KAAKolC,GAAmB,IAAR7pC,GAEhBmkF,EAAkB1/E,KAAMzE,EAAO6pC,GAAQ,GAElCA,EAAS,GAGlBquB,EAAOvrD,UAAUw5E,cAAgB,SAAwBnmF,EAAO6pC,EAAQy6C,GAYtE,OAXAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,WAAY,GACxDquB,EAAO0mB,qBACTn6E,KAAKolC,GAAW7pC,IAAU,GAC1ByE,KAAKolC,EAAS,GAAM7pC,IAAU,GAC9ByE,KAAKolC,EAAS,GAAM7pC,IAAU,EAC9ByE,KAAKolC,EAAS,GAAc,IAAR7pC,GAEpBmkF,EAAkB1/E,KAAMzE,EAAO6pC,GAAQ,GAElCA,EAAS,GAGlBquB,EAAOvrD,UAAUy5E,WAAa,SAAqBpmF,EAAO6pC,EAAQ7uC,EAAYspF,GAG5E,GAFAtkF,GAASA,EACT6pC,GAAkB,GACby6C,EAAU,CACb,IAAIr/B,EAAQ7uB,KAAKwgB,IAAI,EAAG,EAAI57C,EAAa,GAEzCgpF,EAASv/E,KAAMzE,EAAO6pC,EAAQ7uC,EAAYiqD,EAAQ,GAAIA,GAGxD,IAAIxpD,EAAI,EACJkpF,EAAM,EACN0B,EAAM,EACV5hF,KAAKolC,GAAkB,IAAR7pC,EACf,QAASvE,EAAIT,IAAe2pF,GAAO,KAC7B3kF,EAAQ,GAAa,IAARqmF,GAAsC,IAAzB5hF,KAAKolC,EAASpuC,EAAI,KAC9C4qF,EAAM,GAER5hF,KAAKolC,EAASpuC,IAAOuE,EAAQ2kF,GAAQ,GAAK0B,EAAM,IAGlD,OAAOx8C,EAAS7uC,GAGlBk9D,EAAOvrD,UAAU25E,WAAa,SAAqBtmF,EAAO6pC,EAAQ7uC,EAAYspF,GAG5E,GAFAtkF,GAASA,EACT6pC,GAAkB,GACby6C,EAAU,CACb,IAAIr/B,EAAQ7uB,KAAKwgB,IAAI,EAAG,EAAI57C,EAAa,GAEzCgpF,EAASv/E,KAAMzE,EAAO6pC,EAAQ7uC,EAAYiqD,EAAQ,GAAIA,GAGxD,IAAIxpD,EAAIT,EAAa,EACjB2pF,EAAM,EACN0B,EAAM,EACV5hF,KAAKolC,EAASpuC,GAAa,IAARuE,EACnB,QAASvE,GAAK,IAAMkpF,GAAO,KACrB3kF,EAAQ,GAAa,IAARqmF,GAAsC,IAAzB5hF,KAAKolC,EAASpuC,EAAI,KAC9C4qF,EAAM,GAER5hF,KAAKolC,EAASpuC,IAAOuE,EAAQ2kF,GAAQ,GAAK0B,EAAM,IAGlD,OAAOx8C,EAAS7uC,GAGlBk9D,EAAOvrD,UAAU45E,UAAY,SAAoBvmF,EAAO6pC,EAAQy6C,GAO9D,OANAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,KAAO,KAClDquB,EAAO0mB,sBAAqB5+E,EAAQo2B,KAAK2gB,MAAM/2C,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCyE,KAAKolC,GAAmB,IAAR7pC,EACT6pC,EAAS,GAGlBquB,EAAOvrD,UAAU65E,aAAe,SAAuBxmF,EAAO6pC,EAAQy6C,GAUpE,OATAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,OAAS,OACrDquB,EAAO0mB,qBACTn6E,KAAKolC,GAAmB,IAAR7pC,EAChByE,KAAKolC,EAAS,GAAM7pC,IAAU,GAE9BikF,EAAkBx/E,KAAMzE,EAAO6pC,GAAQ,GAElCA,EAAS,GAGlBquB,EAAOvrD,UAAU85E,aAAe,SAAuBzmF,EAAO6pC,EAAQy6C,GAUpE,OATAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,OAAS,OACrDquB,EAAO0mB,qBACTn6E,KAAKolC,GAAW7pC,IAAU,EAC1ByE,KAAKolC,EAAS,GAAc,IAAR7pC,GAEpBikF,EAAkBx/E,KAAMzE,EAAO6pC,GAAQ,GAElCA,EAAS,GAGlBquB,EAAOvrD,UAAU+5E,aAAe,SAAuB1mF,EAAO6pC,EAAQy6C,GAYpE,OAXAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,YAAa,YACzDquB,EAAO0mB,qBACTn6E,KAAKolC,GAAmB,IAAR7pC,EAChByE,KAAKolC,EAAS,GAAM7pC,IAAU,EAC9ByE,KAAKolC,EAAS,GAAM7pC,IAAU,GAC9ByE,KAAKolC,EAAS,GAAM7pC,IAAU,IAE9BmkF,EAAkB1/E,KAAMzE,EAAO6pC,GAAQ,GAElCA,EAAS,GAGlBquB,EAAOvrD,UAAUg6E,aAAe,SAAuB3mF,EAAO6pC,EAAQy6C,GAapE,OAZAtkF,GAASA,EACT6pC,GAAkB,EACby6C,GAAUN,EAASv/E,KAAMzE,EAAO6pC,EAAQ,EAAG,YAAa,YACzD7pC,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxCk4D,EAAO0mB,qBACTn6E,KAAKolC,GAAW7pC,IAAU,GAC1ByE,KAAKolC,EAAS,GAAM7pC,IAAU,GAC9ByE,KAAKolC,EAAS,GAAM7pC,IAAU,EAC9ByE,KAAKolC,EAAS,GAAc,IAAR7pC,GAEpBmkF,EAAkB1/E,KAAMzE,EAAO6pC,GAAQ,GAElCA,EAAS,GAgBlBquB,EAAOvrD,UAAUi6E,aAAe,SAAuB5mF,EAAO6pC,EAAQy6C,GACpE,OAAOD,EAAW5/E,KAAMzE,EAAO6pC,GAAQ,EAAMy6C,IAG/CpsB,EAAOvrD,UAAUk6E,aAAe,SAAuB7mF,EAAO6pC,EAAQy6C,GACpE,OAAOD,EAAW5/E,KAAMzE,EAAO6pC,GAAQ,EAAOy6C,IAWhDpsB,EAAOvrD,UAAUm6E,cAAgB,SAAwB9mF,EAAO6pC,EAAQy6C,GACtE,OAAOC,EAAY9/E,KAAMzE,EAAO6pC,GAAQ,EAAMy6C,IAGhDpsB,EAAOvrD,UAAUo6E,cAAgB,SAAwB/mF,EAAO6pC,EAAQy6C,GACtE,OAAOC,EAAY9/E,KAAMzE,EAAO6pC,GAAQ,EAAOy6C,IAIjDpsB,EAAOvrD,UAAUoyC,KAAO,SAAez/C,EAAQ0nF,EAAapqF,EAAOC,GAQjE,GAPKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAM4H,KAAK9I,QAC9BqrF,GAAe1nF,EAAO3D,SAAQqrF,EAAc1nF,EAAO3D,QAClDqrF,IAAaA,EAAc,GAC5BnqF,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlB0C,EAAO3D,QAAgC,IAAhB8I,KAAK9I,OAAc,OAAO,EAGrD,GAAIqrF,EAAc,EAChB,MAAM,IAAIjI,WAAW,6BAEvB,GAAIniF,EAAQ,GAAKA,GAAS6H,KAAK9I,OAAQ,MAAM,IAAIojF,WAAW,6BAC5D,GAAIliF,EAAM,EAAG,MAAM,IAAIkiF,WAAW,2BAG9BliF,EAAM4H,KAAK9I,SAAQkB,EAAM4H,KAAK9I,QAC9B2D,EAAO3D,OAASqrF,EAAcnqF,EAAMD,IACtCC,EAAMyC,EAAO3D,OAASqrF,EAAcpqF,GAGtC,IACInB,EADAC,EAAMmB,EAAMD,EAGhB,GAAI6H,OAASnF,GAAU1C,EAAQoqF,GAAeA,EAAcnqF,EAE1D,IAAKpB,EAAIC,EAAM,EAAGD,GAAK,IAAKA,EAC1B6D,EAAO7D,EAAIurF,GAAeviF,KAAKhJ,EAAImB,QAEhC,GAAIlB,EAAM,MAASw8D,EAAO0mB,oBAE/B,IAAKnjF,EAAI,EAAGA,EAAIC,IAAOD,EACrB6D,EAAO7D,EAAIurF,GAAeviF,KAAKhJ,EAAImB,QAGrCtB,WAAWqR,UAAUujC,IAAIrjC,KACvBvN,EACAmF,KAAKi6E,SAAS9hF,EAAOA,EAAQlB,GAC7BsrF,GAIJ,OAAOtrF,GAOTw8D,EAAOvrD,UAAU+pE,KAAO,SAAe52C,EAAKljC,EAAOC,EAAK2iF,GAEtD,GAAmB,kBAAR1/C,EAAkB,CAS3B,GARqB,kBAAVljC,GACT4iF,EAAW5iF,EACXA,EAAQ,EACRC,EAAM4H,KAAK9I,QACa,kBAARkB,IAChB2iF,EAAW3iF,EACXA,EAAM4H,KAAK9I,QAEM,IAAfmkC,EAAInkC,OAAc,CACpB,IAAIH,EAAOskC,EAAIlkC,WAAW,GACtBJ,EAAO,MACTskC,EAAMtkC,GAGV,QAAiBkQ,IAAb8zE,GAA8C,kBAAbA,EACnC,MAAM,IAAIlzE,UAAU,6BAEtB,GAAwB,kBAAbkzE,IAA0BtnB,EAAOynB,WAAWH,GACrD,MAAM,IAAIlzE,UAAU,qBAAuBkzE,OAErB,kBAAR1/C,IAChBA,GAAY,KAId,GAAIljC,EAAQ,GAAK6H,KAAK9I,OAASiB,GAAS6H,KAAK9I,OAASkB,EACpD,MAAM,IAAIkiF,WAAW,sBAGvB,GAAIliF,GAAOD,EACT,OAAO6H,KAQT,IAAIhJ,EACJ,GANAmB,KAAkB,EAClBC,OAAc6O,IAAR7O,EAAoB4H,KAAK9I,OAASkB,IAAQ,EAE3CijC,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAKrkC,EAAImB,EAAOnB,EAAIoB,IAAOpB,EACzBgJ,KAAKhJ,GAAKqkC,MAEP,CACL,IAAI+jD,EAAQ3rB,EAAOtL,SAAS9sB,GACxBA,EACAogD,EAAY,IAAIhoB,EAAOp4B,EAAK0/C,GAAU5yE,YACtClR,EAAMmoF,EAAMloF,OAChB,IAAKF,EAAI,EAAGA,EAAIoB,EAAMD,IAASnB,EAC7BgJ,KAAKhJ,EAAImB,GAASinF,EAAMpoF,EAAIC,GAIhC,OAAO+I,MAMT,IAAIwiF,EAAoB,qBAExB,SAASC,EAAapX,GAIpB,GAFAA,EAAMqX,EAAWrX,GAAK1/D,QAAQ62E,EAAmB,IAE7CnX,EAAIn0E,OAAS,EAAG,MAAO,GAE3B,MAAOm0E,EAAIn0E,OAAS,IAAM,EACxBm0E,GAAY,IAEd,OAAOA,EAGT,SAASqX,EAAYrX,GACnB,OAAIA,EAAI1zD,KAAa0zD,EAAI1zD,OAClB0zD,EAAI1/D,QAAQ,aAAc,IAGnC,SAASwzE,EAAOl3E,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAEE,SAAS,IAC7BF,EAAEE,SAAS,IAGpB,SAASszE,EAAaR,EAAQ0H,GAE5B,IAAI/E,EADJ+E,EAAQA,GAASzwC,IAMjB,IAJA,IAAIh7C,EAAS+jF,EAAO/jF,OAChB0rF,EAAgB,KAChBxD,EAAQ,GAEHpoF,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAI/B,GAHA4mF,EAAY3C,EAAO9jF,WAAWH,GAG1B4mF,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAKgF,EAAe,CAElB,GAAIhF,EAAY,MAAQ,EAEjB+E,GAAS,IAAM,GAAGvD,EAAM9mF,KAAK,IAAM,IAAM,KAC9C,SACK,GAAItB,EAAI,IAAME,EAAQ,EAEtByrF,GAAS,IAAM,GAAGvD,EAAM9mF,KAAK,IAAM,IAAM,KAC9C,SAIFsqF,EAAgBhF,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjB+E,GAAS,IAAM,GAAGvD,EAAM9mF,KAAK,IAAM,IAAM,KAC9CsqF,EAAgBhF,EAChB,SAIFA,EAAkE,OAArDgF,EAAgB,OAAU,GAAKhF,EAAY,YAC/CgF,IAEJD,GAAS,IAAM,GAAGvD,EAAM9mF,KAAK,IAAM,IAAM,KAMhD,GAHAsqF,EAAgB,KAGZhF,EAAY,IAAM,CACpB,IAAK+E,GAAS,GAAK,EAAG,MACtBvD,EAAM9mF,KAAKslF,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAK+E,GAAS,GAAK,EAAG,MACtBvD,EAAM9mF,KACJslF,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAK+E,GAAS,GAAK,EAAG,MACtBvD,EAAM9mF,KACJslF,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAItmF,MAAM,sBARhB,IAAKqrF,GAAS,GAAK,EAAG,MACtBvD,EAAM9mF,KACJslF,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAOwB,EAGT,SAASnC,EAAc5R,GAErB,IADA,IAAIwX,EAAY,GACP7rF,EAAI,EAAGA,EAAIq0E,EAAIn0E,SAAUF,EAEhC6rF,EAAUvqF,KAAyB,IAApB+yE,EAAIl0E,WAAWH,IAEhC,OAAO6rF,EAGT,SAASxF,EAAgBhS,EAAKsX,GAG5B,IAFA,IAAIzoD,EAAG4oD,EAAIC,EACPF,EAAY,GACP7rF,EAAI,EAAGA,EAAIq0E,EAAIn0E,SAAUF,EAAG,CACnC,IAAK2rF,GAAS,GAAK,EAAG,MAEtBzoD,EAAImxC,EAAIl0E,WAAWH,GACnB8rF,EAAK5oD,GAAK,EACV6oD,EAAK7oD,EAAI,IACT2oD,EAAUvqF,KAAKyqF,GACfF,EAAUvqF,KAAKwqF,GAGjB,OAAOD,EAGT,SAASnH,EAAerQ,GACtB,OAAOwO,EAAOrjF,YAAYisF,EAAYpX,IAGxC,SAAS0R,GAAYp/E,EAAKqlF,EAAK59C,EAAQluC,GACrC,IAAK,IAAIF,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAC/B,GAAKA,EAAIouC,GAAU49C,EAAI9rF,QAAYF,GAAK2G,EAAIzG,OAAS,MACrD8rF,EAAIhsF,EAAIouC,GAAUznC,EAAI3G,GAExB,OAAOA,EAGT,SAASqkF,GAAOhgD,GACd,OAAOA,IAAQA,K,wDC3vDjB,sCAAInsB,EAAJ,oOAEA,SAASlV,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,EAAK7B,KAAKqC,MAAMR,EAAMG,GAAY,OAAOH,EAE9U,SAASS,EAAcC,GAAU,IAAK,IAAI7D,EAAI,EAAGA,EAAI8D,UAAU5D,OAAQF,IAAK,CAAE,IAAI+D,EAAyB,MAAhBD,UAAU9D,GAAa8D,UAAU9D,GAAK,GAAQA,EAAI,EAAKgD,EAAQI,OAAOW,IAAS,GAAMC,SAAQ,SAAUC,GAAOC,EAAgBL,EAAQI,EAAKF,EAAOE,OAAsBb,OAAOe,0BAA6Bf,OAAOgB,iBAAiBP,EAAQT,OAAOe,0BAA0BJ,IAAmBf,EAAQI,OAAOW,IAASC,SAAQ,SAAUC,GAAOb,OAAOiB,eAAeR,EAAQI,EAAKb,OAAOK,yBAAyBM,EAAQE,OAAe,OAAOJ,EAE7gB,SAASK,EAAgBI,EAAKL,EAAKM,GAAiK,OAApJN,KAAOK,EAAOlB,OAAOiB,eAAeC,EAAKL,EAAK,CAAEM,MAAOA,EAAOb,YAAY,EAAMc,cAAc,EAAMC,UAAU,IAAkBH,EAAIL,GAAOM,EAAgBD,EAsB3M,IAAI2nF,EAAa,YACbC,EAAuC,eAAuB,OAAe,iBAC7EC,EAAgC,eAAuB,OAAe,UACtEC,EAAwB,eAAiB,OAAe,SACxDC,EAA6B,eAAiB,OAAe,cAE7Dj3E,EAAkB,eAAe,UAAW,CAC9CC,KAAM,OACNC,cAAc,EACd9H,MAAO,SAEL+H,EAAaH,EAAgBI,MAC7BC,EAAaL,EAAgBnT,MAC7ByT,EAAkBN,EAAgBO,KAClCC,EAAmBR,EAAgB5H,MAG5BvL,EAAQ,eAAsB,eAAS2B,EAAcA,EAAcA,EAAc,GAAI,QAAU6R,GAAa,GAAI,CACzHsS,UAAW,eAAS,QACpB0H,eAAgB,eAAS,QAEzB68D,SAAU,eAAS,QAAmB,GACtCC,gBAAiB,eAAS,OAAkB,QAC5C3qF,UAAW,eAAS,OAAkB,SACtC+C,UAAW,eAAS,QAEpB6nF,WAAY,eAAS,QACrBvmF,YAAa,eAAS,QACtBV,YAAa,eAAS,QACtBknF,KAAM,eAAS,QAAmB,GAClCC,kBAAmB,eAAS,QAAmB,GAC/CC,aAAc,eAAS,QAAmB,GAC1CC,qBAAsB,eAAS,QAAmB,GAClDC,eAAgB,eAAS,QAAmB,GAC5CC,SAAU,eAAS,QAAmB,GACtCC,cAAe,eAAS,QAAmB,GAC3CC,QAAS,eAAS,QAAmB,GACrChmF,MAAO,eAAS,QAAmB,GACnCimF,OAAQ,eAAS,QAA0B,GAC3CC,aAAc,eAAS,QACvBprF,IAAK,eAAS,OAAkB,OAChCC,YAAa,eAAS,OAAkB,QACxCoD,MAAO,eAAS,QAChB0B,MAAO,eAAS,QAChBsmF,OAAQ,eAAS,WACd,SAEDC,EAAoB,SAA2B3qF,EAAG4U,GAEpD,IAAIlS,EAAQkS,EAAIhM,cAAc,OAAiBgM,EAAIlP,YAAckP,EAAIlS,MAErE,OAAKA,EAIE1C,EAAE,SAAU,CACjByE,MAAO,CACLgH,GAAImJ,EAAIvJ,OAAO,eAEhB,CAAC3I,IAPK1C,EAAE,SAUT4qF,EAAoB,SAA2B5qF,EAAG4U,GACpD,GAAIA,EAAI01E,cACN,OAAOtqF,IAGT,IAAI+pF,EAAan1E,EAAIm1E,WACjBzqF,EAAcsV,EAAItV,YAClBu0B,EAAOjf,EAAIif,KACf,OAAO7zB,EAAE,OAAc,CACrBR,MAAO,CACL8lB,UAAWykE,EACXzqF,YAAaA,GAEfoJ,GAAI,CACF+a,MAAOoQ,GAETvS,IAAK,gBACJ,CAAC1M,EAAIhM,cAAc,SAA2B5I,EAAE,WAGjD6qF,EAAe,SAAsB7qF,EAAG4U,GAC1C,GAAIA,EAAIy1E,SACN,OAAOrqF,IAGT,IAAIgG,EAAW4O,EAAIhM,cAAc,OAAkBgM,EAAIlP,WAEvD,IAAKM,EAAU,CACb,IAAIvD,EAASkoF,EAAkB3qF,EAAG4U,GAC9Bk2E,EAASF,EAAkB5qF,EAAG4U,GAClC5O,EAAW4O,EAAIrQ,MAAQ,CAACumF,EAAQroF,GAAU,CAACA,EAAQqoF,GAGrD,OAAO9qF,EAAE,SAAU,CACjBI,YAAa,GAAGE,OAAOkpF,EAAY,WACnCnpF,MAAOuU,EAAI9R,YACXtB,IAAK,UACJwE,IAGD+kF,EAAa,SAAoB/qF,EAAG4U,GACtC,OAAO5U,EAAE,MAAO,CACdI,YAAa,GAAGE,OAAOkpF,EAAY,SACnCnpF,MAAOuU,EAAI1S,UACXV,IAAK,QACJ,CAACoT,EAAIhM,cAAc,OAAmBgM,EAAIlP,cAG3CslF,EAAe,SAAsBhrF,EAAG4U,GAC1C,IAAI3O,EAAU2O,EAAIhM,cAAc,OAAkBgM,EAAIlP,WAEtD,OAAKO,EAIEjG,EAAE,SAAU,CACjBI,YAAa,GAAGE,OAAOkpF,EAAY,WACnCnpF,MAAOuU,EAAIpR,YACXhC,IAAK,UACJ,CAACyE,IAPKjG,KAUPirF,EAAgB,SAAuBjrF,EAAG4U,GAG5C,IAAI9O,EAAU+kF,EAAa7qF,EAAG4U,GAE9B,OAAIA,EAAIo1E,OAASp1E,EAAIivB,OACZ/9B,EAGF,CAACA,EAASilF,EAAW/qF,EAAG4U,GAAMo2E,EAAahrF,EAAG4U,KAGnDs2E,EAAiB,SAAwBlrF,EAAG4U,GAC9C,IAAKA,EAAIi1E,SACP,OAAO7pF,IAGT,IAAI8pF,EAAkBl1E,EAAIk1E,gBAC1B,OAAO9pF,EAAE,MAAO,CACd0nB,WAAY,CAAC,CACX7nB,KAAM,OACNiC,MAAO8S,EAAIu2E,YAEb/qF,YAAa,qBACbC,MAAOoB,EAAgB,GAAI,MAAMnB,OAAOwpF,GAAkBA,GAC1DphF,GAAI,CACF+a,MAAO7O,EAAIw2E,oBAONC,EAAwB,aAAI9rF,OAAO,CAC5CM,KAAM,QACNiH,OAAQ,CAAC,OAAY,OAASgM,EAAY,OAAmB,QAC7DzL,cAAc,EACd7H,MAAOA,EACPU,KAAM,WACJ,IAAIuoB,IAAYliB,KAAK0M,GACrB,MAAO,CAELk4E,UAAW1iE,EAEXob,OAAQpb,IAGZnhB,SAAU,CACRgkF,gBAAiB,WACf,OAAO/kF,KAAKgkF,QAEZ,CACEgB,KAAK,GACH,CACFA,KAAK,EACLC,WAAY,GACZC,iBAAkB,QAClBC,aAAc,OACdC,WAAY,OACZC,iBAAkB,QAClBC,aAAc,KAGlBnmF,UAAW,WACT,IAAImuB,EAAOttB,KAAKstB,KACZtvB,EAAQgC,KAAKhC,MACbkkB,EAAUliB,KAAK4kF,UACnB,MAAO,CACLt3D,KAAMA,EACNtvB,MAAOA,EACPkkB,QAASA,IAGbqjE,SAAU,WACR,IAAItmF,EAAee,KAAKf,aACpBC,EAASc,KAAKd,OAClB,OAAQc,KAAK8jF,WAAa9jF,KAAK8C,kBAAkB,YAAwB9C,KAAKqC,cAAc,OAAiBrC,KAAKb,UAAWF,EAAcC,KAAWc,KAAK7D,QAE7JqpF,QAAS,WACP,OAAOxlF,KAAKulF,SAAWvlF,KAAK8E,OAAO,aAAe,MAEpD2gF,cAAe,WACb,OAAO7qF,EAAcA,EAAc,GAAIoF,KAAKkC,SAAU,GAAI,CACxDgD,GAAIlF,KAAK8E,SACT8V,SAAU,KACV3Y,KAAM,SACN,aAAcjC,KAAKsjF,SAAW,OAAS,QACvC,cAAetjF,KAAK4kF,UAAY,KAAO,OACvC,aAAc5kF,KAAK+e,WAAa,KAChC,kBAAmB/e,KAAKymB,gBAAkBzmB,KAAKwlF,SAAW,SAIhErhF,OAAQ+K,EAAS,GAAIhU,EAAgBgU,EAAQxC,GAAiB,SAAUtI,EAAUC,GAC5ED,IAAaC,IACfrE,KAAK4kF,UAAYxgF,MAEjBlJ,EAAgBgU,EAAQ,aAAa,SAAmB9K,EAAUC,GAChED,IAAaC,IACfrE,KAAK0lF,UAAUthF,GACfpE,KAAKsE,MAAMsI,EAAkBxI,OAE7BlJ,EAAgBgU,EAAQ,UAAU,WACpC,IAAI9K,EAAWtJ,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAC/EuJ,EAAWvJ,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAK,GAE9EkF,KAAK4jF,sBAAwBx/E,EAASuhF,WAAathF,EAASshF,UAC/D3lF,KAAKstB,UAELpe,GACJlE,QAAS,WAEPhL,KAAK4lF,gBAAkB,MAEzBj4E,QAAS,WACP,IAAI9C,EAAQ7K,KAGZA,KAAKuO,aAAa40E,EAA+BnjF,KAAK6lF,cACtD7lF,KAAKuO,aAAa20E,EAAsCljF,KAAK8lF,YAE7D9lF,KAAKkL,WAAU,WACbL,EAAM66E,UAAU76E,EAAM+5E,eAK1B36D,UAAW,WACTjqB,KAAK+lF,YAEP36E,cAAe,WACbpL,KAAK4kF,WAAY,EACjB5kF,KAAK4lF,gBAAkB,MAEzB/lF,QAAS,CACPytB,KAAM,WACJttB,KAAK4kF,WAAY,GAEnBc,UAAW,WACT,IAAIzjE,EAAQnnB,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKkF,KAAK4kF,UACrF5kF,KAAK6O,WAAWu0E,EAAuBpjF,KAAK8E,SAAUmd,IAExD8jE,SAAU,WACR,IAAI9jE,EAAQnnB,UAAU5D,OAAS,QAAsB+P,IAAjBnM,UAAU,GAAmBA,UAAU,GAAKkF,KAAK4kF,UACrF5kF,KAAK6O,WAAWw0E,EAA4BrjF,KAAK8E,SAAUmd,IAE7D4jE,aAAc,SAAsB3gF,GAE9BA,GAAMA,IAAOlF,KAAK8E,WACpB9E,KAAK4kF,WAAa5kF,KAAK4kF,YAG3BkB,WAAY,SAAoB5gF,GAC9B,IAAI+F,EAASjL,KAGTkF,GAAMA,IAAOlF,KAAK8E,UACpB9E,KAAKkL,WAAU,WACbD,EAAO86E,SAAS96E,EAAO25E,eAI7B7hE,UAAW,SAAmBve,GAC5B,IAAIwX,EAAUxX,EAAMwX,SAEfhc,KAAK2jF,cAAgB3nE,IAAY,QAAYhc,KAAK4kF,WACrD5kF,KAAKstB,QAGTu3D,gBAAiB,WACX7kF,KAAK4kF,YAAc5kF,KAAK0jF,mBAC1B1jF,KAAKstB,QAKT04D,eAAgB,WACd,IAAIC,EAAW,eAAYjmF,KAAKyb,MAAMka,SACtC31B,KAAKkmF,aAAaD,EAASt8B,UAAU,KAIvCw8B,kBAAmB,WACjB,IAAIF,EAAW,eAAYjmF,KAAKyb,MAAMka,SACtC31B,KAAKkmF,aAAaD,EAAS,KAE7BG,cAAe,WAGbpmF,KAAK4lF,gBAAkB,eAAiB,OAAa,CAACnuE,SAAS0pB,MAAQ,IAEvEnhC,KAAKs9B,QAAS,GAEhB+oD,aAAc,SAAsBjvE,GAC7B,eAASA,EAAI,mBAChBpX,KAAKkmF,aAAa9uE,GAGpBpX,KAAKsE,MAAM,SAEbgiF,aAAc,WACZtmF,KAAKkmF,aAAalmF,KAAK4lF,iBACvB5lF,KAAK4lF,gBAAkB,KAEvB5lF,KAAKs9B,QAAS,EACdt9B,KAAKsE,MAAM,SAEb4hF,aAAc,SAAsB9uE,GAC7BpX,KAAK6jF,gBACR,eAAazsE,KAInB5d,OAAQ,SAAgBC,GACtB,IAAIC,EAEAd,EAAYoH,KAAKpH,UACjBiF,EAAQmC,KAAKnC,MACb9E,EAAciH,KAAKjH,YACnB6rF,EAAY5kF,KAAK4kF,UACjBX,EAAyB,KAAhBjkF,KAAKikF,QAAuBjkF,KAAKikF,OAC1CsC,EAAW9sF,EAAEuG,KAAKlH,IAAK,CACzBe,YAAaopF,EACbnpF,MAAO,EAAEJ,EAAO,CACduqF,QAAmB,IAAXA,GACP/oF,EAAgBxB,EAAM,UAAUK,OAAOkqF,GAASA,IAAqB,IAAXA,GAAkB/oF,EAAgBxB,EAAM,GAAGK,OAAOkpF,EAAY,UAAWjjF,KAAKhC,OAAQ9C,EAAgBxB,EAAM,MAAMK,OAAOnB,GAAYA,GAAYsC,EAAgBxB,EAAM,QAAQK,OAAOhB,GAAcA,GAAcW,GAAOsG,KAAKkkF,cAC3RvtE,MAAO,CACL9Y,MAAOA,GAETK,MAAO8B,KAAKylF,cACZtkE,WAAY,CAAC,CACX7nB,KAAM,OACNiC,MAAOqpF,IAET7pE,IAAK,WACJ,CAAC2pE,EAAcjrF,EAAGuG,QACrBumF,EAAW9sF,EAAE,aAAc,CACzBR,MAAO+G,KAAK+kF,gBACZ5iF,GAAI,CACFqkF,YAAaxmF,KAAKomF,cAClBK,WAAYzmF,KAAKqmF,aACjBK,WAAY1mF,KAAKsmF,eAElB,CAACC,IACJ,IAAII,EAAYltF,EAAE,OAAc,CAC9BR,MAAO,CACL2tF,OAAQ5mF,KAAKgkF,UAEd,CAACW,EAAelrF,EAAGuG,QAClB6mF,EAAcptF,IACdqtF,EAAiBrtF,IAqBrB,OAnBIuG,KAAKsjF,UAAYsB,IACnBiC,EAAcptF,EAAE,MAAO,CACrByE,MAAO,CACL0c,SAAU,KAEZzY,GAAI,CACFwf,MAAO3hB,KAAKgmF,kBAGhBc,EAAiBrtF,EAAE,MAAO,CACxByE,MAAO,CACL0c,SAAU,KAEZzY,GAAI,CACFwf,MAAO3hB,KAAKmmF,sBAKX1sF,EAAE,MAAO,CACdI,YAAa,kBACb8c,MAAO,CACLwtE,OAAQnkF,KAAKmkF,QAEfjmF,MAAO,CACL0c,SAAU,MAEZzY,GAAI,CACFgb,QAASnd,KAAK+iB,YAEf,CAAC8jE,EAAaN,EAAUO,EAAgBH,Q,sBClb9C,SAASzxD,EAAEnmB,GAAqD4jC,EAAOr8C,QAAQyY,EAAE,EAAQ,SAAzF,CAAyR,oBAAoB6tB,MAAKA,MAAU,SAAU1H,GAAG,OAAO,SAASA,GAAG,IAAInmB,EAAE,GAAG,SAAS9G,EAAE8vE,GAAG,GAAGhpE,EAAEgpE,GAAG,OAAOhpE,EAAEgpE,GAAGzhF,QAAQ,IAAIwR,EAAEiH,EAAEgpE,GAAG,CAAC/gF,EAAE+gF,EAAE9+C,GAAE,EAAG3iC,QAAQ,IAAI,OAAO4+B,EAAE6iD,GAAG3vE,KAAKN,EAAExR,QAAQwR,EAAEA,EAAExR,QAAQ2R,GAAGH,EAAEmxB,GAAE,EAAGnxB,EAAExR,QAAQ,OAAO2R,EAAEixB,EAAEhE,EAAEjtB,EAAEiyB,EAAEnrB,EAAE9G,EAAE8wB,EAAE,SAAS7D,EAAEnmB,EAAEgpE,GAAG9vE,EAAEH,EAAEotB,EAAEnmB,IAAI3U,OAAOiB,eAAe65B,EAAEnmB,EAAE,CAACrU,YAAW,EAAG0X,IAAI2lE,KAAK9vE,EAAE8vE,EAAE,SAAS7iD,GAAG,oBAAoBxsB,QAAQA,OAAOq+E,aAAa3sF,OAAOiB,eAAe65B,EAAExsB,OAAOq+E,YAAY,CAACxrF,MAAM,WAAWnB,OAAOiB,eAAe65B,EAAE,aAAa,CAAC35B,OAAM,KAAM0M,EAAEitB,EAAE,SAASA,EAAEnmB,GAAG,GAAG,EAAEA,IAAImmB,EAAEjtB,EAAEitB,IAAI,EAAEnmB,EAAE,OAAOmmB,EAAE,GAAG,EAAEnmB,GAAG,iBAAiBmmB,GAAGA,GAAGA,EAAE+d,WAAW,OAAO/d,EAAE,IAAI6iD,EAAE39E,OAAO+5C,OAAO,MAAM,GAAGlsC,EAAE8vE,EAAEA,GAAG39E,OAAOiB,eAAe08E,EAAE,UAAU,CAACr9E,YAAW,EAAGa,MAAM25B,IAAI,EAAEnmB,GAAG,iBAAiBmmB,EAAE,IAAI,IAAIptB,KAAKotB,EAAEjtB,EAAE8wB,EAAEg/C,EAAEjwE,EAAE,SAASiH,GAAG,OAAOmmB,EAAEnmB,IAAIrT,KAAK,KAAKoM,IAAI,OAAOiwE,GAAG9vE,EAAEA,EAAE,SAASitB,GAAG,IAAInmB,EAAEmmB,GAAGA,EAAE+d,WAAW,WAAW,OAAO/d,EAAEr0B,SAAS,WAAW,OAAOq0B,GAAG,OAAOjtB,EAAE8wB,EAAEhqB,EAAE,IAAIA,GAAGA,GAAG9G,EAAEH,EAAE,SAASotB,EAAEnmB,GAAG,OAAO3U,OAAO8N,UAAUirC,eAAe/qC,KAAK8sB,EAAEnmB,IAAI9G,EAAEqc,EAAE,GAAGrc,EAAEA,EAAEksB,EAAE,GAAj5B,CAAq5B,CAAC,SAASplB,EAAE9G,GAAG8G,EAAEzY,QAAQ4+B,GAAG,SAASA,EAAEnmB,EAAE9G,GAAG,aAAaA,EAAE8vE,EAAEhpE,GAAG9G,EAAE8wB,EAAEhqB,EAAE,aAAY,WAAY,OAAOmrB,KAAKjyB,EAAE8wB,EAAEhqB,EAAE,UAAS,WAAY,OAAOuV,KAAK,IAAIyzD,EAAE9vE,EAAE,GAAGH,EAAEG,EAAEA,EAAE8vE,GAAG/gF,EAAE,CAAC,WAAW,UAAU,YAAY,gBAAgB,SAAS,gBAAgB,SAASoiC,IAAI,OAAOA,EAAEh/B,OAAOyiC,QAAQ,SAAS3H,GAAG,IAAI,IAAInmB,EAAE,EAAEA,EAAEjU,UAAU5D,OAAO6X,IAAI,CAAC,IAAI9G,EAAEnN,UAAUiU,GAAG,IAAI,IAAIgpE,KAAK9vE,EAAE7N,OAAO8N,UAAUirC,eAAe/qC,KAAKH,EAAE8vE,KAAK7iD,EAAE6iD,GAAG9vE,EAAE8vE,IAAI,OAAO7iD,IAAIv6B,MAAMqF,KAAKlF,WAAW,IAAI2W,EAAE,SAASyjB,GAAG,OAAOA,EAAEvpB,QAAQ,kBAAkB,SAASkR,eAAe5Q,EAAE,SAASipB,GAAG,OAAOkE,EAAE,GAAGlE,IAAI+D,EAAEjiC,EAAE+C,OAAO,CAAC,gBAAgB,cAAc,gBAAgB,UAAU,wBAAwB,cAAco6B,EAAE,CAAC,SAAS,cAAc+F,EAAE,CAAC5gC,KAAK,aAAaE,OAAO,SAAS07B,GAAG,OAAOA,EAAE,QAAQ,CAACh3B,MAAM,CAACmO,KAAK,OAAO,cAAa,GAAIpT,MAAM,CAACoe,SAASrX,KAAKqX,UAAUlV,GAAG,CAACqV,MAAMxX,KAAKutB,YAAYt0B,MAAM,CAACsC,MAAM,CAACsF,QAAQ,KAAKxC,UAAS,EAAG2oF,UAAU,SAAS9xD,GAAG,OAAO,OAAOA,GAAGA,aAAa7Q,MAAM,iBAAiB6Q,GAAGA,aAAalsB,QAAQksB,aAAap+B,OAAO,iBAAiBo+B,IAAI0E,OAAO,CAACvtB,KAAKjS,OAAOyG,QAAQ,WAAW,MAAM,CAAC0qB,MAAK,EAAG0T,YAAY,QAAQ0gB,OAAO,CAACtzC,KAAKvV,MAAM+J,QAAQ,WAAW,OAAO7J,IAAIqgB,SAAS,CAAChL,KAAKlB,QAAQtK,SAAQ,IAAKlH,KAAK,WAAW,MAAM,CAACstF,GAAG,OAAOt5E,QAAQ,WAAW,IAAIunB,EAAEl1B,KAAK,IAAIA,KAAKinF,GAAG,CAAC,IAAIl4E,EAAE9C,EAAEjM,KAAK45B,QAAQ55B,KAAK2/C,OAAO3kD,SAAQ,SAAUiN,GAAG,IAAI8vE,EAAE/gF,EAAE8Q,EAAE2J,EAAEsrB,cAAc90B,IAAI,GAAG8G,EAAE9G,IAAI8vE,EAAEhpE,EAAE9G,IAAI,GAAG8vE,aAAajhF,MAAMihF,EAAE,CAACA,IAAIh+E,OAAO/C,GAAE,WAAY,IAAI,IAAI+X,EAAEjU,UAAU5D,OAAO6gF,EAAE,IAAIjhF,MAAMiY,GAAGjH,EAAE,EAAEA,EAAEiH,EAAEjH,IAAIiwE,EAAEjwE,GAAGhN,UAAUgN,GAAGotB,EAAE5wB,MAAM3J,MAAMu6B,EAAE,CAACzjB,EAAExJ,IAAIlO,OAAOg+E,UAAUhpE,EAAEkwB,YAAYj/B,KAAKzE,OAAOwT,EAAEkwB,YAAYj/B,KAAKinF,GAAG,IAAIn/E,EAAE2J,EAAEzR,KAAKknF,UAAUn4E,GAAG/O,KAAKmnF,UAAU1mD,iBAAiB,OAAOzgC,KAAK+hC,QAAQ/hC,KAAK0O,IAAI,WAAW1O,KAAKsyB,SAAStyB,KAAKonF,OAAO,WAAWpnF,KAAKqnF,cAAc,CAACC,WAAU,MAAOznF,QAAQ,CAACqnF,QAAQ,WAAW,OAAOlnF,KAAK45B,OAAOrO,KAAKvrB,KAAK2b,IAAIwa,WAAWn2B,KAAK2b,KAAK4R,QAAQ,SAAS2H,GAAG,IAAInmB,EAAE/O,KAAKiI,EAAEitB,EAAEr6B,OAAOmF,KAAKkL,WAAU,WAAY6D,EAAEzK,MAAM,QAAQ2D,EAAE1M,WAAW4rF,QAAQ,WAAW,OAAOnnF,KAAKinF,GAAGp3D,UAAU7vB,KAAKinF,GAAGzvE,OAAOuqB,OAAO,SAAS7M,GAAGl1B,KAAKsE,MAAM,OAAO4wB,EAAEr6B,OAAOU,QAAQ+2B,QAAQ,SAAS4C,EAAEnmB,GAAG/O,KAAKsE,MAAM,QAAQyK,IAAIs4E,cAAc,SAASnyD,GAAGA,EAAEl1B,KAAKmnF,UAAUxwD,aAAa,WAAWzB,GAAGl1B,KAAKmnF,UAAUx+C,gBAAgB,cAAcxkC,MAAM,CAACy1B,OAAO,CAAClvB,MAAK,EAAGC,QAAQ,SAASuqB,GAAG,IAAInmB,EAAE/O,KAAKiI,EAAEgE,EAAEipB,GAAG+D,EAAEj+B,SAAQ,SAAUk6B,UAAUjtB,EAAEitB,MAAMl1B,KAAKinF,GAAGx7C,IAAIxjC,GAAGksB,EAAEn5B,SAAQ,SAAUk6B,QAAG,IAASjtB,EAAEitB,IAAInmB,EAAEk4E,GAAGx7C,IAAIvW,EAAEjtB,EAAEitB,SAAS35B,MAAM,SAAS25B,GAAGA,IAAIl1B,KAAK2b,IAAIpgB,OAAOyE,KAAKinF,IAAIjnF,KAAKinF,GAAG31D,QAAQ4D,GAAE,KAAM9pB,cAAc,WAAWpL,KAAKinF,KAAKjnF,KAAKmnF,UAAUxmD,oBAAoB,OAAO3gC,KAAK+hC,QAAQ/hC,KAAKinF,GAAGz+C,UAAUxoC,KAAKinF,GAAG,QAAQ3iE,EAAE,SAAS4Q,EAAEnmB,GAAG,IAAI9G,EAAE,aAAa,iBAAiB8G,IAAI9G,EAAE8G,GAAGmmB,EAAEgkB,UAAUjxC,EAAEiyB,IAAIA,EAAE89C,QAAQ1zD,EAAEvV,EAAElO,QAAQq5B,KAAKr5B,Y,mBCA/0H,IAAIsH,EAAW,GAAGA,SAElBwqC,EAAOr8C,QAAUQ,MAAM8R,SAAW,SAAU/Q,GAC1C,MAA6B,kBAAtBsQ,EAASC,KAAKvQ","file":"js/chunk-276f45ab.09f4a021.js","sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\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, mergeData } from '../../vue';\nimport { NAME_CARD_SUB_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 subTitle: makeProp(PROP_TYPE_STRING),\n subTitleTag: makeProp(PROP_TYPE_STRING, 'h6'),\n subTitleTextVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_CARD_SUB_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_SUB_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.subTitleTag, mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || toString(props.subTitle));\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_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_HEADER } 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, 'header'))), {}, {\n header: makeProp(PROP_TYPE_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_HEADER); // --- Main component ---\n// @vue/component\n\nexport var BCardHeader = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_HEADER,\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 headerBgVariant = props.headerBgVariant,\n headerBorderVariant = props.headerBorderVariant,\n headerTextVariant = props.headerTextVariant;\n return h(props.headerTag, mergeData(data, {\n staticClass: 'card-header',\n class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, \"border-\".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(headerTextVariant), headerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.headerHtml, props.header)\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_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 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});","// 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});","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});","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 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 _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_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});","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 { 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};","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(',');","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 { 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});","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});","/*\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};","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};","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 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});","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});","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nexport var filterEvent = function filterEvent(event) {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = event.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (closest('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = getAttr(label, 'for');\n var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return matches(el, EVENT_FILTER);\n};","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nexport var textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 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 } 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\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});","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 { 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});","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});","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\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 } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active'; // --- Helper methods ---\n\nvar getHeadSlotName = function getHeadSlotName(value) {\n return \"head(\".concat(value || '', \")\");\n};\n\nvar getFootSlotName = function getFootSlotName(value) {\n return \"foot(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = {\n // Any Bootstrap theme variant (or custom)\n headRowVariant: makeProp(PROP_TYPE_STRING),\n // 'light', 'dark' or `null` (or custom)\n headVariant: makeProp(PROP_TYPE_STRING),\n theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var theadMixin = Vue.extend({\n props: props,\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field (
) 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});","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});","// v-b-hover directive\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { eventOnOff } from '../../utils/events';\nimport { isFunction } from '../../utils/inspect'; // --- Constants ---\n\nvar PROP = '__BV_hover_handler__';\nvar MOUSEENTER = 'mouseenter';\nvar MOUSELEAVE = 'mouseleave'; // --- Helper methods ---\n\nvar createListener = function createListener(handler) {\n var listener = function listener(event) {\n handler(event.type === MOUSEENTER, event);\n };\n\n listener.fn = handler;\n return listener;\n};\n\nvar updateListeners = function updateListeners(on, el, listener) {\n eventOnOff(on, el, MOUSEENTER, listener, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, el, MOUSELEAVE, listener, EVENT_OPTIONS_NO_CAPTURE);\n}; // --- Directive bind/unbind/update handler ---\n\n\nvar directive = function directive(el, _ref) {\n var _ref$value = _ref.value,\n handler = _ref$value === void 0 ? null : _ref$value;\n\n if (IS_BROWSER) {\n var listener = el[PROP];\n var hasListener = isFunction(listener);\n var handlerChanged = !(hasListener && listener.fn === handler);\n\n if (hasListener && handlerChanged) {\n updateListeners(false, el, listener);\n delete el[PROP];\n }\n\n if (isFunction(handler) && handlerChanged) {\n el[PROP] = createListener(handler);\n updateListeners(true, el, el[PROP]);\n }\n }\n}; // VBHover directive\n\n\nexport var VBHover = {\n bind: directive,\n componentUpdated: directive,\n unbind: function unbind(el) {\n directive(el, {\n value: null\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//\n// Private component used by `b-form-datepicker` and `b-form-timepicker`\n//\nimport { Vue } from '../../vue';\nimport { NAME_FORM_BUTTON_LABEL_CONTROL } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown';\nimport { props as formControlProps } from '../../mixins/form-control';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { VBHover } from '../../directives/hover/hover';\nimport { BIconChevronDown } from '../../icons/icons'; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formSizeProps), formStateProps), omit(dropdownProps, ['disabled'])), omit(formControlProps, ['autofocus'])), {}, {\n // When `true`, renders a `btn-group` wrapper and visually hides the label\n buttonOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n // Applicable in button mode only\n buttonVariant: makeProp(PROP_TYPE_STRING, 'secondary'),\n // This is the value shown in the label\n // Defaults back to `value`\n formattedValue: makeProp(PROP_TYPE_STRING),\n // Value placed in `.sr-only` span inside label when value is present\n labelSelected: makeProp(PROP_TYPE_STRING),\n lang: makeProp(PROP_TYPE_STRING),\n // Extra classes to apply to the `dropdown-menu` div\n menuClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // This is the value placed on the hidden input when no value selected\n placeholder: makeProp(PROP_TYPE_STRING),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n // Tri-state prop: `true`, `false` or `null`\n rtl: makeProp(PROP_TYPE_BOOLEAN, null),\n value: makeProp(PROP_TYPE_STRING, '')\n})); // --- Main component ---\n// @vue/component\n\nexport var BVFormBtnLabelControl = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_BUTTON_LABEL_CONTROL,\n directives: {\n 'b-hover': VBHover\n },\n mixins: [idMixin, formSizeMixin, formStateMixin, dropdownMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n isHovered: false,\n hasFocus: false\n };\n },\n computed: {\n idButton: function idButton() {\n return this.safeId();\n },\n idLabel: function idLabel() {\n return this.safeId('_value_');\n },\n idMenu: function idMenu() {\n return this.safeId('_dialog_');\n },\n idWrapper: function idWrapper() {\n return this.safeId('_outer_');\n },\n computedDir: function computedDir() {\n return this.rtl === true ? 'rtl' : this.rtl === false ? 'ltr' : null;\n }\n },\n methods: {\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.toggle);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.toggle);\n }\n },\n setFocus: function setFocus(event) {\n this.hasFocus = event.type === 'focus';\n },\n handleHover: function handleHover(hovered) {\n this.isHovered = hovered;\n }\n },\n render: function render(h) {\n var _class;\n\n var idButton = this.idButton,\n idLabel = this.idLabel,\n idMenu = this.idMenu,\n idWrapper = this.idWrapper,\n disabled = this.disabled,\n readonly = this.readonly,\n required = this.required,\n name = this.name,\n state = this.state,\n visible = this.visible,\n size = this.size,\n isHovered = this.isHovered,\n hasFocus = this.hasFocus,\n labelSelected = this.labelSelected,\n buttonVariant = this.buttonVariant,\n buttonOnly = this.buttonOnly;\n var value = toString(this.value) || '';\n var invalid = state === false || required && !value;\n var btnScope = {\n isHovered: isHovered,\n hasFocus: hasFocus,\n state: state,\n opened: visible\n };\n var $button = h('button', {\n staticClass: 'btn',\n class: (_class = {}, _defineProperty(_class, \"btn-\".concat(buttonVariant), buttonOnly), _defineProperty(_class, \"btn-\".concat(size), size), _defineProperty(_class, 'h-auto', !buttonOnly), _defineProperty(_class, 'dropdown-toggle', buttonOnly), _defineProperty(_class, 'dropdown-toggle-no-caret', buttonOnly), _class),\n attrs: {\n id: idButton,\n type: 'button',\n disabled: disabled,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': visible ? 'true' : 'false',\n 'aria-invalid': invalid ? 'true' : null,\n 'aria-required': required ? 'true' : null\n },\n directives: [{\n name: 'b-hover',\n value: this.handleHover\n }],\n on: {\n mousedown: this.onMousedown,\n click: this.toggle,\n keydown: this.toggle,\n // Handle ENTER, SPACE and DOWN\n '!focus': this.setFocus,\n '!blur': this.setFocus\n },\n ref: 'toggle'\n }, [this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? this.normalizeSlot(SLOT_NAME_BUTTON_CONTENT, btnScope) :\n /* istanbul ignore next */\n h(BIconChevronDown, {\n props: {\n scale: 1.25\n }\n })]); // Hidden input\n\n var $hidden = h();\n\n if (name && !disabled) {\n $hidden = h('input', {\n attrs: {\n type: 'hidden',\n name: name || null,\n form: this.form || null,\n value: value\n }\n });\n } // Dropdown content\n\n\n var $menu = h('div', {\n staticClass: 'dropdown-menu',\n class: [this.menuClass, {\n show: visible,\n 'dropdown-menu-right': this.right\n }],\n attrs: {\n id: idMenu,\n role: 'dialog',\n tabindex: '-1',\n 'aria-modal': 'false',\n 'aria-labelledby': idLabel\n },\n on: {\n keydown: this.onKeydown // Handle ESC\n\n },\n ref: 'menu'\n }, [this.normalizeSlot(SLOT_NAME_DEFAULT, {\n opened: visible\n })]); // Value label\n\n var $label = h('label', {\n class: buttonOnly ? 'sr-only' // Hidden in button only mode\n : ['form-control', 'text-break', 'text-wrap', 'bg-transparent', // Mute the text if showing the placeholder\n {\n 'text-muted': !value\n }, this.stateClass, this.sizeFormClass],\n attrs: {\n id: idLabel,\n for: idButton,\n 'aria-invalid': invalid ? 'true' : null,\n 'aria-required': required ? 'true' : null\n },\n directives: [{\n name: 'b-hover',\n value: this.handleHover\n }],\n on: {\n // Disable bubbling of the click event to\n // prevent menu from closing and re-opening\n '!click':\n /* istanbul ignore next */\n function click(event) {\n stopEvent(event, {\n preventDefault: false\n });\n }\n }\n }, [value ? this.formattedValue || value : this.placeholder || '', // Add the selected label for screen readers when a value is provided\n value && labelSelected ? h('bdi', {\n staticClass: 'sr-only'\n }, labelSelected) : '']); // Return the custom form control wrapper\n\n return h('div', {\n staticClass: 'b-form-btn-label-control dropdown',\n class: [this.directionClass, this.boundaryClass, [{\n 'btn-group': buttonOnly,\n 'form-control': !buttonOnly,\n 'd-flex': !buttonOnly,\n 'h-auto': !buttonOnly,\n 'align-items-stretch': !buttonOnly,\n focus: hasFocus && !buttonOnly,\n show: visible,\n 'is-valid': state === true,\n 'is-invalid': state === false\n }, buttonOnly ? null : this.sizeFormClass]],\n attrs: {\n id: idWrapper,\n role: buttonOnly ? null : 'group',\n lang: this.lang || null,\n dir: this.computedDir,\n 'aria-disabled': disabled,\n 'aria-readonly': readonly && !disabled,\n 'aria-labelledby': idLabel,\n 'aria-invalid': state === false || required && !value ? 'true' : null,\n 'aria-required': required ? 'true' : null\n }\n }, [$button, $hidden, $menu, $label]);\n }\n});","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n// Date utility functions\nimport { CALENDAR_GREGORY } from '../constants/date';\nimport { RX_DATE, RX_DATE_SPLIT } from '../constants/regex';\nimport { concat } from './array';\nimport { identity } from './identity';\nimport { isDate, isString } from './inspect';\nimport { toInteger } from './number'; // --- Date utility methods ---\n// Create or clone a date (`new Date(...)` shortcut)\n\nexport var createDate = function createDate() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _construct(Date, args);\n}; // Parse a date sting, or Date object, into a Date object (with no time information)\n\nexport var parseYMD = function parseYMD(date) {\n if (isString(date) && RX_DATE.test(date.trim())) {\n var _date$split$map = date.split(RX_DATE_SPLIT).map(function (v) {\n return toInteger(v, 1);\n }),\n _date$split$map2 = _slicedToArray(_date$split$map, 3),\n year = _date$split$map2[0],\n month = _date$split$map2[1],\n day = _date$split$map2[2];\n\n return createDate(year, month - 1, day);\n } else if (isDate(date)) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n return null;\n}; // Format a date object as `YYYY-MM-DD` format\n\nexport var formatYMD = function formatYMD(date) {\n date = parseYMD(date);\n\n if (!date) {\n return null;\n }\n\n var year = date.getFullYear();\n var month = \"0\".concat(date.getMonth() + 1).slice(-2);\n var day = \"0\".concat(date.getDate()).slice(-2);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}; // Given a locale (or locales), resolve the browser available locale\n\nexport var resolveLocale = function resolveLocale(locales)\n/* istanbul ignore next */\n{\n var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_GREGORY;\n locales = concat(locales).filter(identity);\n var fmt = new Intl.DateTimeFormat(locales, {\n calendar: calendar\n });\n return fmt.resolvedOptions().locale;\n}; // Create a `Intl.DateTimeFormat` formatter function\n\nexport var createDateFormatter = function createDateFormatter(locale, options)\n/* istanbul ignore next */\n{\n var dtf = new Intl.DateTimeFormat(locale, options);\n return dtf.format;\n}; // Determine if two dates are the same date (ignoring time portion)\n\nexport var datesEqual = function datesEqual(date1, date2) {\n // Returns true of the date portion of two date objects are equal\n // We don't compare the time portion\n return formatYMD(date1) === formatYMD(date2);\n}; // --- Date \"math\" utility methods (for BCalendar component mainly) ---\n\nexport var firstDateOfMonth = function firstDateOfMonth(date) {\n date = createDate(date);\n date.setDate(1);\n return date;\n};\nexport var lastDateOfMonth = function lastDateOfMonth(date) {\n date = createDate(date);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date;\n};\nexport var addYears = function addYears(date, numberOfYears) {\n date = createDate(date);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear() + numberOfYears); // Handle Feb 29th for leap years\n\n if (date.getMonth() !== month) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneMonthAgo = function oneMonthAgo(date) {\n date = createDate(date);\n var month = date.getMonth();\n date.setMonth(month - 1); // Handle when days in month are different\n\n if (date.getMonth() === month) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneMonthAhead = function oneMonthAhead(date) {\n date = createDate(date);\n var month = date.getMonth();\n date.setMonth(month + 1); // Handle when days in month are different\n\n if (date.getMonth() === (month + 2) % 12) {\n date.setDate(0);\n }\n\n return date;\n};\nexport var oneYearAgo = function oneYearAgo(date) {\n return addYears(date, -1);\n};\nexport var oneYearAhead = function oneYearAhead(date) {\n return addYears(date, 1);\n};\nexport var oneDecadeAgo = function oneDecadeAgo(date) {\n return addYears(date, -10);\n};\nexport var oneDecadeAhead = function oneDecadeAhead(date) {\n return addYears(date, 10);\n}; // Helper function to constrain a date between two values\n// Always returns a `Date` object or `null` if no date passed\n\nexport var constrainDate = function constrainDate(date) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // Ensure values are `Date` objects (or `null`)\n date = parseYMD(date);\n min = parseYMD(min) || date;\n max = parseYMD(max) || date; // Return a new `Date` object (or `null`)\n\n return date ? date < min ? min : date > max ? max : date : null;\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\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure 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 _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\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n// BTime control (not form input control)\nimport { Vue } from '../../vue';\nimport { NAME_TIME } from '../../constants/components';\nimport { EVENT_NAME_CONTEXT } from '../../constants/events';\nimport { CODE_LEFT, CODE_RIGHT } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_TIME } from '../../constants/regex';\nimport { concat } from '../../utils/array';\nimport { createDate, createDateFormatter } from '../../utils/date';\nimport { attemptBlur, attemptFocus, contains, getActiveElement, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isNull, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { isLocaleRTL } from '../../utils/locale';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BFormSpinbutton, props as BFormSpinbuttonProps } from '../form-spinbutton/form-spinbutton';\nimport { BIconCircleFill, BIconChevronUp } from '../../icons/icons'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_STRING,\n defaultValue: ''\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar NUMERIC = 'numeric'; // --- Helper methods ---\n\nvar padLeftZeros = function padLeftZeros(value) {\n return \"00\".concat(value || '').slice(-2);\n};\n\nvar parseHMS = function parseHMS(value) {\n value = toString(value);\n var hh = null,\n mm = null,\n ss = null;\n\n if (RX_TIME.test(value)) {\n ;\n\n var _value$split$map = value.split(':').map(function (v) {\n return toInteger(v, null);\n });\n\n var _value$split$map2 = _slicedToArray(_value$split$map, 3);\n\n hh = _value$split$map2[0];\n mm = _value$split$map2[1];\n ss = _value$split$map2[2];\n }\n\n return {\n hours: isUndefinedOrNull(hh) ? null : hh,\n minutes: isUndefinedOrNull(mm) ? null : mm,\n seconds: isUndefinedOrNull(ss) ? null : ss,\n ampm: isUndefinedOrNull(hh) || hh < 12 ? 0 : 1\n };\n};\n\nvar formatHMS = function formatHMS(_ref) {\n var hours = _ref.hours,\n minutes = _ref.minutes,\n seconds = _ref.seconds;\n var requireSeconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isNull(hours) || isNull(minutes) || requireSeconds && isNull(seconds)) {\n return '';\n }\n\n var hms = [hours, minutes, requireSeconds ? seconds : 0];\n return hms.map(padLeftZeros).join(':');\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), pick(BFormSpinbuttonProps, ['labelIncrement', 'labelDecrement'])), {}, {\n // ID of label element\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n hidden: makeProp(PROP_TYPE_BOOLEAN, false),\n hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n // Explicitly force 12 or 24 hour time\n // Default is to use resolved locale for 12/24 hour display\n // Tri-state: `true` = 12, `false` = 24, `null` = auto\n hour12: makeProp(PROP_TYPE_BOOLEAN, null),\n labelAm: makeProp(PROP_TYPE_STRING, 'AM'),\n labelAmpm: makeProp(PROP_TYPE_STRING, 'AM/PM'),\n labelHours: makeProp(PROP_TYPE_STRING, 'Hours'),\n labelMinutes: makeProp(PROP_TYPE_STRING, 'Minutes'),\n labelNoTimeSelected: makeProp(PROP_TYPE_STRING, 'No time selected'),\n labelPm: makeProp(PROP_TYPE_STRING, 'PM'),\n labelSeconds: makeProp(PROP_TYPE_STRING, 'Seconds'),\n labelSelected: makeProp(PROP_TYPE_STRING, 'Selected time'),\n locale: makeProp(PROP_TYPE_ARRAY_STRING),\n minutesStep: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n secondsStep: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n // If `true`, show the second spinbutton\n showSeconds: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_TIME); // --- Main component ---\n// @vue/component\n\nexport var BTime = /*#__PURE__*/Vue.extend({\n name: NAME_TIME,\n mixins: [idMixin, modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n var parsed = parseHMS(this[MODEL_PROP_NAME] || '');\n return {\n // Spin button models\n modelHours: parsed.hours,\n modelMinutes: parsed.minutes,\n modelSeconds: parsed.seconds,\n modelAmpm: parsed.ampm,\n // Internal flag to enable aria-live regions\n isLive: false\n };\n },\n computed: {\n computedHMS: function computedHMS() {\n var hours = this.modelHours;\n var minutes = this.modelMinutes;\n var seconds = this.modelSeconds;\n return formatHMS({\n hours: hours,\n minutes: minutes,\n seconds: seconds\n }, this.showSeconds);\n },\n resolvedOptions: function resolvedOptions() {\n // Resolved locale options\n var locale = concat(this.locale).filter(identity);\n var options = {\n hour: NUMERIC,\n minute: NUMERIC,\n second: NUMERIC\n };\n\n if (!isUndefinedOrNull(this.hour12)) {\n // Force 12 or 24 hour clock\n options.hour12 = !!this.hour12;\n }\n\n var dtf = new Intl.DateTimeFormat(locale, options);\n var resolved = dtf.resolvedOptions();\n var hour12 = resolved.hour12 || false; // IE 11 doesn't resolve the hourCycle, so we make\n // an assumption and fall back to common values\n\n var hourCycle = resolved.hourCycle || (hour12 ? 'h12' : 'h23');\n return {\n locale: resolved.locale,\n hour12: hour12,\n hourCycle: hourCycle\n };\n },\n computedLocale: function computedLocale() {\n return this.resolvedOptions.locale;\n },\n computedLang: function computedLang() {\n return (this.computedLocale || '').replace(/-u-.*$/, '');\n },\n computedRTL: function computedRTL() {\n return isLocaleRTL(this.computedLang);\n },\n computedHourCycle: function computedHourCycle() {\n // h11, h12, h23, or h24\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Locale/hourCycle\n // h12 - Hour system using 1–12. Corresponds to 'h' in patterns. The 12 hour clock, with midnight starting at 12:00 am\n // h23 - Hour system using 0–23. Corresponds to 'H' in patterns. The 24 hour clock, with midnight starting at 0:00\n // h11 - Hour system using 0–11. Corresponds to 'K' in patterns. The 12 hour clock, with midnight starting at 0:00 am\n // h24 - Hour system using 1–24. Corresponds to 'k' in pattern. The 24 hour clock, with midnight starting at 24:00\n // For h12 or h24, we visually format 00 hours as 12\n return this.resolvedOptions.hourCycle;\n },\n is12Hour: function is12Hour() {\n return !!this.resolvedOptions.hour12;\n },\n context: function context() {\n return {\n locale: this.computedLocale,\n isRTL: this.computedRTL,\n hourCycle: this.computedHourCycle,\n hour12: this.is12Hour,\n hours: this.modelHours,\n minutes: this.modelMinutes,\n seconds: this.showSeconds ? this.modelSeconds : 0,\n value: this.computedHMS,\n formatted: this.formattedTimeString\n };\n },\n valueId: function valueId() {\n return this.safeId() || null;\n },\n computedAriaLabelledby: function computedAriaLabelledby() {\n return [this.ariaLabelledby, this.valueId].filter(identity).join(' ') || null;\n },\n timeFormatter: function timeFormatter() {\n // Returns a formatter function reference\n // The formatter converts the time to a localized string\n var options = {\n hour12: this.is12Hour,\n hourCycle: this.computedHourCycle,\n hour: NUMERIC,\n minute: NUMERIC,\n timeZone: 'UTC'\n };\n\n if (this.showSeconds) {\n options.second = NUMERIC;\n } // Formats the time as a localized string\n\n\n return createDateFormatter(this.computedLocale, options);\n },\n numberFormatter: function numberFormatter() {\n // Returns a formatter function reference\n // The formatter always formats as 2 digits and is localized\n var nf = new Intl.NumberFormat(this.computedLocale, {\n style: 'decimal',\n minimumIntegerDigits: 2,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n notation: 'standard'\n });\n return nf.format;\n },\n formattedTimeString: function formattedTimeString() {\n var hours = this.modelHours;\n var minutes = this.modelMinutes;\n var seconds = this.showSeconds ? this.modelSeconds || 0 : 0;\n\n if (this.computedHMS) {\n return this.timeFormatter(createDate(Date.UTC(0, 0, 1, hours, minutes, seconds)));\n }\n\n return this.labelNoTimeSelected || ' ';\n },\n spinScopedSlots: function spinScopedSlots() {\n var h = this.$createElement;\n return {\n increment: function increment(_ref2) {\n var hasFocus = _ref2.hasFocus;\n return h(BIconChevronUp, {\n props: {\n scale: hasFocus ? 1.5 : 1.25\n },\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n },\n decrement: function decrement(_ref3) {\n var hasFocus = _ref3.hasFocus;\n return h(BIconChevronUp, {\n props: {\n flipV: true,\n scale: hasFocus ? 1.5 : 1.25\n },\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n }\n };\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue && !looseEqual(parseHMS(newValue), parseHMS(this.computedHMS))) {\n var _parseHMS = parseHMS(newValue),\n hours = _parseHMS.hours,\n minutes = _parseHMS.minutes,\n seconds = _parseHMS.seconds,\n ampm = _parseHMS.ampm;\n\n this.modelHours = hours;\n this.modelMinutes = minutes;\n this.modelSeconds = seconds;\n this.modelAmpm = ampm;\n }\n }), _defineProperty(_watch, \"computedHMS\", function computedHMS(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_watch, \"context\", function context(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT, newValue);\n }\n }), _defineProperty(_watch, \"modelAmpm\", function modelAmpm(newValue, oldValue) {\n var _this = this;\n\n if (newValue !== oldValue) {\n var hours = isNull(this.modelHours) ? 0 : this.modelHours;\n this.$nextTick(function () {\n if (newValue === 0 && hours > 11) {\n // Switched to AM\n _this.modelHours = hours - 12;\n } else if (newValue === 1 && hours < 12) {\n // Switched to PM\n _this.modelHours = hours + 12;\n }\n });\n }\n }), _defineProperty(_watch, \"modelHours\", function modelHours(newHours, oldHours) {\n if (newHours !== oldHours) {\n this.modelAmpm = newHours > 11 ? 1 : 0;\n }\n }), _watch),\n created: function created() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.$emit(EVENT_NAME_CONTEXT, _this2.context);\n });\n },\n mounted: function mounted() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.setLive(true);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n this.setLive(false);\n },\n beforeDestroy: function beforeDestroy() {\n this.setLive(false);\n },\n methods: {\n // Public methods\n focus: function focus() {\n if (!this.disabled) {\n // We focus the first spin button\n attemptFocus(this.$refs.spinners[0]);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n var activeElement = getActiveElement();\n\n if (contains(this.$el, activeElement)) {\n attemptBlur(activeElement);\n }\n }\n },\n // Formatters for the spin buttons\n formatHours: function formatHours(hh) {\n var hourCycle = this.computedHourCycle; // We always store 0-23, but format based on h11/h12/h23/h24 formats\n\n hh = this.is12Hour && hh > 12 ? hh - 12 : hh; // Determine how 00:00 and 12:00 are shown\n\n hh = hh === 0 && hourCycle === 'h12' ? 12 : hh === 0 && hourCycle === 'h24' ?\n /* istanbul ignore next */\n 24 : hh === 12 && hourCycle === 'h11' ?\n /* istanbul ignore next */\n 0 : hh;\n return this.numberFormatter(hh);\n },\n formatMinutes: function formatMinutes(mm) {\n return this.numberFormatter(mm);\n },\n formatSeconds: function formatSeconds(ss) {\n return this.numberFormatter(ss);\n },\n formatAmpm: function formatAmpm(ampm) {\n // These should come from label props???\n // `ampm` should always be a value of `0` or `1`\n return ampm === 0 ? this.labelAm : ampm === 1 ? this.labelPm : '';\n },\n // Spinbutton on change handlers\n setHours: function setHours(value) {\n this.modelHours = value;\n },\n setMinutes: function setMinutes(value) {\n this.modelMinutes = value;\n },\n setSeconds: function setSeconds(value) {\n this.modelSeconds = value;\n },\n setAmpm: function setAmpm(value) {\n this.modelAmpm = value;\n },\n onSpinLeftRight: function onSpinLeftRight() {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var type = event.type,\n keyCode = event.keyCode;\n\n if (!this.disabled && type === 'keydown' && (keyCode === CODE_LEFT || keyCode === CODE_RIGHT)) {\n stopEvent(event);\n var spinners = this.$refs.spinners || [];\n var index = spinners.map(function (cmp) {\n return !!cmp.hasFocus;\n }).indexOf(true);\n index = index + (keyCode === CODE_LEFT ? -1 : 1);\n index = index >= spinners.length ? 0 : index < 0 ? spinners.length - 1 : index;\n attemptFocus(spinners[index]);\n }\n },\n setLive: function setLive(on) {\n var _this3 = this;\n\n if (on) {\n this.$nextTick(function () {\n requestAF(function () {\n _this3.isLive = true;\n });\n });\n } else {\n this.isLive = false;\n }\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n /* istanbul ignore if */\n if (this.hidden) {\n // If hidden, we just render a placeholder comment\n return h();\n }\n\n var valueId = this.valueId;\n var computedAriaLabelledby = this.computedAriaLabelledby;\n var spinIds = []; // Helper method to render a spinbutton\n\n var makeSpinbutton = function makeSpinbutton(handler, key, classes) {\n var spinbuttonProps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var id = _this4.safeId(\"_spinbutton_\".concat(key, \"_\")) || null;\n spinIds.push(id);\n return h(BFormSpinbutton, {\n class: classes,\n props: _objectSpread({\n id: id,\n placeholder: '--',\n vertical: true,\n required: true,\n disabled: _this4.disabled,\n readonly: _this4.readonly,\n locale: _this4.computedLocale,\n labelIncrement: _this4.labelIncrement,\n labelDecrement: _this4.labelDecrement,\n wrap: true,\n ariaControls: valueId,\n min: 0\n }, spinbuttonProps),\n scopedSlots: _this4.spinScopedSlots,\n on: {\n // We use `change` event to minimize SR verbosity\n // As the spinbutton will announce each value change\n // and we don't want the formatted time to be announced\n // on each value input if repeat is happening\n change: handler\n },\n key: key,\n ref: 'spinners',\n refInFor: true\n });\n }; // Helper method to return a \"colon\" separator\n\n\n var makeColon = function makeColon() {\n return h('div', {\n staticClass: 'd-flex flex-column',\n class: {\n 'text-muted': _this4.disabled || _this4.readonly\n },\n attrs: {\n 'aria-hidden': 'true'\n }\n }, [h(BIconCircleFill, {\n props: {\n shiftV: 4,\n scale: 0.5\n }\n }), h(BIconCircleFill, {\n props: {\n shiftV: -4,\n scale: 0.5\n }\n })]);\n };\n\n var $spinners = []; // Hours\n\n $spinners.push(makeSpinbutton(this.setHours, 'hours', 'b-time-hours', {\n value: this.modelHours,\n max: 23,\n step: 1,\n formatterFn: this.formatHours,\n ariaLabel: this.labelHours\n })); // Spacer\n\n $spinners.push(makeColon()); // Minutes\n\n $spinners.push(makeSpinbutton(this.setMinutes, 'minutes', 'b-time-minutes', {\n value: this.modelMinutes,\n max: 59,\n step: this.minutesStep || 1,\n formatterFn: this.formatMinutes,\n ariaLabel: this.labelMinutes\n }));\n\n if (this.showSeconds) {\n // Spacer\n $spinners.push(makeColon()); // Seconds\n\n $spinners.push(makeSpinbutton(this.setSeconds, 'seconds', 'b-time-seconds', {\n value: this.modelSeconds,\n max: 59,\n step: this.secondsStep || 1,\n formatterFn: this.formatSeconds,\n ariaLabel: this.labelSeconds\n }));\n } // AM/PM ?\n\n\n if (this.is12Hour) {\n // TODO:\n // If locale is RTL, unshift this instead of push?\n // And switch class `ml-2` to `mr-2`\n // Note some LTR locales (i.e. zh) also place AM/PM to the left\n $spinners.push(makeSpinbutton(this.setAmpm, 'ampm', 'b-time-ampm', {\n value: this.modelAmpm,\n max: 1,\n formatterFn: this.formatAmpm,\n ariaLabel: this.labelAmpm,\n // We set `required` as `false`, since this always has a value\n required: false\n }));\n } // Assemble spinners\n\n\n $spinners = h('div', {\n staticClass: 'd-flex align-items-center justify-content-center mx-auto',\n attrs: {\n role: 'group',\n tabindex: this.disabled || this.readonly ? null : '-1',\n 'aria-labelledby': computedAriaLabelledby\n },\n on: {\n keydown: this.onSpinLeftRight,\n click:\n /* istanbul ignore next */\n function click(event) {\n if (event.target === event.currentTarget) {\n _this4.focus();\n }\n }\n }\n }, $spinners); // Selected type display\n\n var $value = h('output', {\n staticClass: 'form-control form-control-sm text-center',\n class: {\n disabled: this.disabled || this.readonly\n },\n attrs: {\n id: valueId,\n role: 'status',\n for: spinIds.filter(identity).join(' ') || null,\n tabindex: this.disabled ? null : '-1',\n 'aria-live': this.isLive ? 'polite' : 'off',\n 'aria-atomic': 'true'\n },\n on: {\n // Transfer focus/click to focus hours spinner\n click: this.focus,\n focus: this.focus\n }\n }, [h('bdi', this.formattedTimeString), this.computedHMS ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(this.labelSelected, \") \")) : '']);\n var $header = h('header', {\n staticClass: 'b-time-header',\n class: {\n 'sr-only': this.hideHeader\n }\n }, [$value]); // Optional bottom slot\n\n var $slot = this.normalizeSlot();\n $slot = $slot ? h('footer', {\n staticClass: 'b-time-footer'\n }, $slot) : h();\n return h('div', {\n staticClass: 'b-time d-inline-flex flex-column text-center',\n attrs: {\n role: 'group',\n lang: this.computedLang || null,\n 'aria-labelledby': computedAriaLabelledby || null,\n 'aria-disabled': this.disabled ? 'true' : null,\n 'aria-readonly': this.readonly && !this.disabled ? 'true' : null\n }\n }, [$header, $spinners, $slot]);\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_FORM_TIMEPICKER } from '../../constants/components';\nimport { EVENT_NAME_CONTEXT, EVENT_NAME_SHOWN, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_DATE_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_BUTTON_CONTENT } from '../../constants/slots';\nimport { attemptBlur, attemptFocus } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { BIconClock, BIconClockFill } from '../../icons/icons';\nimport { BButton } from '../button/button';\nimport { BVFormBtnLabelControl, props as BVFormBtnLabelControlProps } from '../form-btn-label-control/bv-form-btn-label-control';\nimport { BTime, props as BTimeProps } from '../time/time'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_STRING,\n defaultValue: ''\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nvar timeProps = omit(BTimeProps, ['hidden', 'id', 'value']);\nvar formBtnLabelControlProps = omit(BVFormBtnLabelControlProps, ['formattedValue', 'id', 'lang', 'rtl', 'value']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), timeProps), formBtnLabelControlProps), {}, {\n closeButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-secondary'),\n labelCloseButton: makeProp(PROP_TYPE_STRING, 'Close'),\n labelNowButton: makeProp(PROP_TYPE_STRING, 'Select now'),\n labelResetButton: makeProp(PROP_TYPE_STRING, 'Reset'),\n noCloseButton: makeProp(PROP_TYPE_BOOLEAN, false),\n nowButton: makeProp(PROP_TYPE_BOOLEAN, false),\n nowButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-primary'),\n resetButton: makeProp(PROP_TYPE_BOOLEAN, false),\n resetButtonVariant: makeProp(PROP_TYPE_STRING, 'outline-danger'),\n resetValue: makeProp(PROP_TYPE_DATE_STRING)\n})), NAME_FORM_TIMEPICKER); // --- Main component ---\n// @vue/component\n\nexport var BFormTimepicker = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_TIMEPICKER,\n mixins: [idMixin, modelMixin],\n props: props,\n data: function data() {\n return {\n // We always use `HH:mm:ss` value internally\n localHMS: this[MODEL_PROP_NAME] || '',\n // Context data from BTime\n localLocale: null,\n isRTL: false,\n formattedValue: '',\n // If the menu is opened\n isVisible: false\n };\n },\n computed: {\n computedLang: function computedLang() {\n return (this.localLocale || '').replace(/-u-.*$/i, '') || null;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n this.localHMS = newValue || '';\n }), _defineProperty(_watch, \"localHMS\", function localHMS(newValue) {\n // We only update the v-model value when the timepicker\n // is open, to prevent cursor jumps when bound to a\n // text input in button only mode\n if (this.isVisible) {\n this.$emit(MODEL_EVENT_NAME, newValue || '');\n }\n }), _watch),\n methods: {\n // Public methods\n focus: function focus() {\n if (!this.disabled) {\n attemptFocus(this.$refs.control);\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n attemptBlur(this.$refs.control);\n }\n },\n // Private methods\n setAndClose: function setAndClose(value) {\n var _this = this;\n\n this.localHMS = value;\n this.$nextTick(function () {\n _this.$refs.control.hide(true);\n });\n },\n onInput: function onInput(hms) {\n if (this.localHMS !== hms) {\n this.localHMS = hms;\n }\n },\n onContext: function onContext(ctx) {\n var isRTL = ctx.isRTL,\n locale = ctx.locale,\n value = ctx.value,\n formatted = ctx.formatted;\n this.isRTL = isRTL;\n this.localLocale = locale;\n this.formattedValue = formatted;\n this.localHMS = value || ''; // Re-emit the context event\n\n this.$emit(EVENT_NAME_CONTEXT, ctx);\n },\n onNowButton: function onNowButton() {\n var now = new Date();\n var hours = now.getHours();\n var minutes = now.getMinutes();\n var seconds = this.showSeconds ? now.getSeconds() : 0;\n var value = [hours, minutes, seconds].map(function (v) {\n return \"00\".concat(v || '').slice(-2);\n }).join(':');\n this.setAndClose(value);\n },\n onResetButton: function onResetButton() {\n this.setAndClose(this.resetValue);\n },\n onCloseButton: function onCloseButton() {\n this.$refs.control.hide(true);\n },\n onShow: function onShow() {\n this.isVisible = true;\n },\n onShown: function onShown() {\n var _this2 = this;\n\n this.$nextTick(function () {\n attemptFocus(_this2.$refs.time);\n\n _this2.$emit(EVENT_NAME_SHOWN);\n });\n },\n onHidden: function onHidden() {\n this.isVisible = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n // Render function helpers\n defaultButtonFn: function defaultButtonFn(_ref) {\n var isHovered = _ref.isHovered,\n hasFocus = _ref.hasFocus;\n return this.$createElement(isHovered || hasFocus ? BIconClockFill : BIconClock, {\n attrs: {\n 'aria-hidden': 'true'\n }\n });\n }\n },\n render: function render(h) {\n var localHMS = this.localHMS,\n disabled = this.disabled,\n readonly = this.readonly,\n $props = this.$props;\n var placeholder = isUndefinedOrNull(this.placeholder) ? this.labelNoTimeSelected : this.placeholder; // Footer buttons\n\n var $footer = [];\n\n if (this.nowButton) {\n var label = this.labelNowButton;\n $footer.push(h(BButton, {\n props: {\n size: 'sm',\n disabled: disabled || readonly,\n variant: this.nowButtonVariant\n },\n attrs: {\n 'aria-label': label || null\n },\n on: {\n click: this.onNowButton\n },\n key: 'now-btn'\n }, label));\n }\n\n if (this.resetButton) {\n if ($footer.length > 0) {\n // Add a \"spacer\" between buttons (' ')\n $footer.push(h('span', \"\\xA0\"));\n }\n\n var _label = this.labelResetButton;\n $footer.push(h(BButton, {\n props: {\n size: 'sm',\n disabled: disabled || readonly,\n variant: this.resetButtonVariant\n },\n attrs: {\n 'aria-label': _label || null\n },\n on: {\n click: this.onResetButton\n },\n key: 'reset-btn'\n }, _label));\n }\n\n if (!this.noCloseButton) {\n // Add a \"spacer\" between buttons (' ')\n if ($footer.length > 0) {\n $footer.push(h('span', \"\\xA0\"));\n }\n\n var _label2 = this.labelCloseButton;\n $footer.push(h(BButton, {\n props: {\n size: 'sm',\n disabled: disabled,\n variant: this.closeButtonVariant\n },\n attrs: {\n 'aria-label': _label2 || null\n },\n on: {\n click: this.onCloseButton\n },\n key: 'close-btn'\n }, _label2));\n }\n\n if ($footer.length > 0) {\n $footer = [h('div', {\n staticClass: 'b-form-date-controls d-flex flex-wrap',\n class: {\n 'justify-content-between': $footer.length > 1,\n 'justify-content-end': $footer.length < 2\n }\n }, $footer)];\n }\n\n var $time = h(BTime, {\n staticClass: 'b-form-time-control',\n props: _objectSpread(_objectSpread({}, pluckProps(timeProps, $props)), {}, {\n value: localHMS,\n hidden: !this.isVisible\n }),\n on: {\n input: this.onInput,\n context: this.onContext\n },\n ref: 'time'\n }, $footer);\n return h(BVFormBtnLabelControl, {\n staticClass: 'b-form-timepicker',\n props: _objectSpread(_objectSpread({}, pluckProps(formBtnLabelControlProps, $props)), {}, {\n id: this.safeId(),\n value: localHMS,\n formattedValue: localHMS ? this.formattedValue : '',\n placeholder: placeholder,\n rtl: this.isRTL,\n lang: this.computedLang\n }),\n on: {\n show: this.onShow,\n shown: this.onShown,\n hidden: this.onHidden\n },\n scopedSlots: _defineProperty({}, SLOT_NAME_BUTTON_CONTENT, this.$scopedSlots[SLOT_NAME_BUTTON_CONTENT] || this.defaultButtonFn),\n ref: 'control'\n }, [$time]);\n }\n});","import { ref, nextTick } from '@vue/composition-api'\n\n// ===========================================================\n// ! This is coupled with \"veeValidate\" plugin\n// ===========================================================\n\nexport default function formValidation(resetFormData, clearFormData = () => {}) {\n // ------------------------------------------------\n // refFormObserver\n // ! This is for veeValidate Observer\n // * Used for veeValidate form observer\n // ------------------------------------------------\n const refFormObserver = ref(null)\n\n // ------------------------------------------------\n // resetObserver\n // ! This function is coupled with veeValidate\n // * It resets form observer\n // ------------------------------------------------\n const resetObserver = () => {\n refFormObserver.value.reset()\n }\n\n // ------------------------------------------------\n // getValidationState\n // ! This function is coupled with veeValidate\n // * It returns true/false based on validation\n // ------------------------------------------------\n // eslint-disable-next-line object-curly-newline\n const getValidationState = ({ dirty, validated, required: fieldRequired, changed, valid = null }) => {\n const result = dirty || validated ? valid : null\n return !fieldRequired && !changed ? null : result\n }\n\n // ------------------------------------------------\n // resetForm\n // ! This function is coupled with veeValidate\n // * This uses resetFormData arg to reset form data\n // ------------------------------------------------\n const resetForm = () => {\n resetFormData()\n nextTick(() => {\n resetObserver()\n })\n }\n\n // ------------------------------------------------\n // clearForm\n // ! This function is coupled with veeValidate\n // * This uses clearFormData arg to reset form data\n // ------------------------------------------------\n const clearForm = () => {\n clearFormData()\n nextTick(() => {\n resetObserver()\n })\n }\n\n return {\n refFormObserver,\n resetObserver,\n getValidationState,\n resetForm,\n clearForm,\n }\n}\n","export const 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 const 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: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const 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 const 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: (nth) => {\n const 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 const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\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 const 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 const 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 (const 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 const 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\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (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: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const 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: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\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: \"(\\\\w+)\",\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 const formats = {\n Z: (date) => 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: (date) => 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: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const 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 const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\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 let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const 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 ops.forEach(({ fn, val }) => (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};\nexport function compareDates(date1, date2, 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 const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const 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 const maxHr = config.maxDate.getHours();\n const 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, minutes, seconds };\n}\n","import { 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, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.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._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\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(month = self.currentMonth, 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 const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const 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 const 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 const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const 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 const 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 let 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 const 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 const 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 (limitMaxHours) {\n const 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 const 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 setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (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 const eventTarget = getEventTarget(event);\n const 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((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const 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\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\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 const selText = (e) => getEventTarget(e).select();\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\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const 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 const oldYear = self.currentYear;\n const 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 const 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 const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const 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 const { weekWrapper, weekNumbers } = buildWeeks();\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 const 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 const 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 const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + 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 dayNumber % 7 === 1) {\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 const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const 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 const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const 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 const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.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 const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const 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 let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const 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 const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const 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 const 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 (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const 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 const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let 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\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const 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 const 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,\n yearElement,\n 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 (let m = self.config.showMonths; m--;) {\n const 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: () => self.__hidePrevMonthArrow,\n set(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: () => self.__hideNextMonthArrow,\n set(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 const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const 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 const 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 (let i = self.config.showMonths; i--;) {\n const 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 const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let 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 const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const 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 = true, 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 const { hours, minutes, seconds } = getDefaultHours(self.config);\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 (let 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 const 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((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\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 self.redraw();\n }\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 const 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 = true) {\n var _a;\n const 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 const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; 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 const 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 const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\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 const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const 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 return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const 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 if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\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 const 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 const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const 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) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const 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 let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let 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 for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((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 }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const 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 const 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(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const 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((d) => 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 const 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 const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const 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 const 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: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => 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 (let 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((hook) => self.config[hook] !== undefined).forEach((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 (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const 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 = Object.assign(Object.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.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.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 const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => 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 const 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 let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let 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 const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const 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 const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const 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 let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\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 const 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 const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const 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 const 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((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const 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 const single = self.config.mode === \"single\" && !self.config.enableTime;\n const 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 const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\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 (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => 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 let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => 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((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => 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((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, 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((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((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const 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 self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const 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\", (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 const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let 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 const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], 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((yearElement, i) => {\n const 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(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(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 const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const 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 const 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 const 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 let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const 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 const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const 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: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.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","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\n }\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('
' + html + '


');\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var bounds = void 0;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\n }\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n\n this.selection.setRange(new _selection.Range(index, length), source);\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n}();\n\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n});\n\nvar Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n _this.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node: node, handler: handler });\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n};\n\nvar Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n var native = _this.getNativeRange();\n if (native == null) return;\n if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n\n var range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n var index = blot.offset(_this4.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n}();\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n var _a;\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[]':case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n return false;\n }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n _this.domNode.appendChild(_this.textNode);\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', function () {\n _this.togglePicker();\n });\n this.label.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case _keyboard2.default.keys.ENTER:\n _this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'togglePicker',\n value: function togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n }, {\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n item.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case _keyboard2.default.keys.ENTER:\n _this2.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this2.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2.default;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = 'ql-picker-options-' + optionsCounter;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'escape',\n value: function escape() {\n var _this5 = this;\n\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(function () {\n return _this5.label.focus();\n }, 1);\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n}();\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n _this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n _this.domNode.appendChild(_this.leftGuard);\n _this.domNode.appendChild(_this.contentNode);\n _this.domNode.appendChild(_this.rightGuard);\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(76),\n 'center': __webpack_require__(77),\n 'right': __webpack_require__(78),\n 'justify': __webpack_require__(79)\n },\n 'background': __webpack_require__(80),\n 'blockquote': __webpack_require__(81),\n 'bold': __webpack_require__(82),\n 'clean': __webpack_require__(83),\n 'code': __webpack_require__(58),\n 'code-block': __webpack_require__(58),\n 'color': __webpack_require__(84),\n 'direction': {\n '': __webpack_require__(85),\n 'rtl': __webpack_require__(86)\n },\n 'float': {\n 'center': __webpack_require__(87),\n 'full': __webpack_require__(88),\n 'left': __webpack_require__(89),\n 'right': __webpack_require__(90)\n },\n 'formula': __webpack_require__(91),\n 'header': {\n '1': __webpack_require__(92),\n '2': __webpack_require__(93)\n },\n 'italic': __webpack_require__(94),\n 'image': __webpack_require__(95),\n 'indent': {\n '+1': __webpack_require__(96),\n '-1': __webpack_require__(97)\n },\n 'link': __webpack_require__(98),\n 'list': {\n 'ordered': __webpack_require__(99),\n 'bullet': __webpack_require__(100),\n 'check': __webpack_require__(101)\n },\n 'script': {\n 'sub': __webpack_require__(102),\n 'super': __webpack_require__(103)\n },\n 'strike': __webpack_require__(104),\n 'underline': __webpack_require__(105),\n 'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n _this.clear();\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n }\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n if (_this.pickers != null) {\n _this.pickers.forEach(function (picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new _iconPicker2.default(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new _colorPicker2.default(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new _picker2.default(select);\n }\n });\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n _this4.listen();\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n _this.container.classList.add('ql-toolbar');\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2.default.events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2.default.sources.USER);\n }\n _this2.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2.default.sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2.default.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2.default.sources.USER);\n }\n this.quill.format('direction', value, _quill2.default.sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, _quill2.default.sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2.default.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n _this.container.classList.add('ql-color-picker');\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n _this.selectItem(_this.defaultItem);\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n // root.scrollTop should be 0 if scrollContainer !== root\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n _this3.restoreFocus();\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n delete _this3.linkRange;\n }\n event.preventDefault();\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n var preview = _link2.default.formats(link.domNode);\n _this3.preview.textContent = preview;\n _this3.preview.setAttribute('href', preview);\n _this3.show();\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n\n 'formats/bold': _bold2.default,\n 'formats/code': _code.Code,\n 'formats/italic': _italic2.default,\n 'formats/link': _link2.default,\n 'formats/script': _script2.default,\n 'formats/strike': _strike2.default,\n 'formats/underline': _underline2.default,\n\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n\n 'formats/list/item': _list.ListItem,\n\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n\n 'ui/icons': _icons2.default,\n 'ui/picker': _picker2.default,\n 'ui/icon-picker': _iconPicker2.default,\n 'ui/color-picker': _colorPicker2.default,\n 'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2.default.create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n var format = _this2.statics.formats(domNode);\n var blot = _parchment2.default.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2.default.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n );\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2.default.sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n return _this2;\n }\n\n return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(CodeToken, true);\n _quill2.default.register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n var timer = null;\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n timer = null;\n }, _this2.options.interval);\n });\n _this2.highlight();\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2.default.sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2.default.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n }\n }]);\n\n return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n var lines = _this2.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n var index = _this2.quill.getIndex(lastLine);\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n var range = _this3.quill.getSelection();\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"quill\")):\"function\"==typeof define&&define.amd?define([\"quill\"],e):\"object\"==typeof exports?exports.VueQuillEditor=e(require(\"quill\")):t.VueQuillEditor=e(t.Quill)}(this,function(t){return function(t){function e(i){if(n[i])return n[i].exports;var l=n[i]={i:i,l:!1,exports:{}};return t[i].call(l.exports,l,l.exports,e),l.l=!0,l.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"/\",e(e.s=2)}([function(e,n){e.exports=t},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(4),l=n.n(i),o=n(6),r=n(5),u=r(l.a,o.a,!1,null,null,null);e.default=u.exports},function(t,e,n){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0}),e.install=e.quillEditor=e.Quill=void 0;var l=n(0),o=i(l),r=n(1),u=i(r),s=window.Quill||o.default,a=function(t,e){e&&(u.default.props.globalOptions.default=function(){return e}),t.component(u.default.name,u.default)},c={Quill:s,quillEditor:u.default,install:a};e.default=c,e.Quill=s,e.quillEditor=u.default,e.install=a},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={theme:\"snow\",boundary:document.body,modules:{toolbar:[[\"bold\",\"italic\",\"underline\",\"strike\"],[\"blockquote\",\"code-block\"],[{header:1},{header:2}],[{list:\"ordered\"},{list:\"bullet\"}],[{script:\"sub\"},{script:\"super\"}],[{indent:\"-1\"},{indent:\"+1\"}],[{direction:\"rtl\"}],[{size:[\"small\",!1,\"large\",\"huge\"]}],[{header:[1,2,3,4,5,6,!1]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],[\"clean\"],[\"link\",\"image\",\"video\"]]},placeholder:\"Insert text here ...\",readOnly:!1}},function(t,e,n){\"use strict\";function i(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,\"__esModule\",{value:!0});var l=n(0),o=i(l),r=n(3),u=i(r),s=window.Quill||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(t,e){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(t),i=1;i

\"===l&&(l=\"\"),t._content=l,t.$emit(\"input\",t._content),t.$emit(\"change\",{html:l,text:r,quill:o})}),this.$emit(\"ready\",this.quill))}},watch:{content:function(t,e){this.quill&&(t&&t!==this._content?(this._content=t,this.quill.pasteHTML(t)):t||this.quill.setText(\"\"))},value:function(t,e){this.quill&&(t&&t!==this._content?(this._content=t,this.quill.pasteHTML(t)):t||this.quill.setText(\"\"))},disabled:function(t,e){this.quill&&this.quill.enable(!t)}}}},function(t,e){t.exports=function(t,e,n,i,l,o){var r,u=t=t||{},s=typeof t.default;\"object\"!==s&&\"function\"!==s||(r=t,u=t.default);var a=\"function\"==typeof u?u.options:u;e&&(a.render=e.render,a.staticRenderFns=e.staticRenderFns,a._compiled=!0),n&&(a.functional=!0),l&&(a._scopeId=l);var c;if(o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},a._ssrRegister=c):i&&(c=i),c){var d=a.functional,f=d?a.render:a.beforeCreate;d?(a._injectStyles=c,a.render=function(t,e){return c.call(e),f(t,e)}):a.beforeCreate=f?[].concat(f,c):[c]}return{esModule:r,exports:u,options:a}}},function(t,e,n){\"use strict\";var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"quill-editor\"},[t._t(\"toolbar\"),t._v(\" \"),n(\"div\",{ref:\"editor\"})],2)},l=[],o={render:i,staticRenderFns:l};e.a=o}])});","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\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_COLLAPSE, NAME_SIDEBAR } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { CODE_ESC } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER, SLOT_NAME_HEADER_CLOSE, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { attemptFocus, contains, getActiveElement, getTabables } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconX } from '../../icons/icons';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar CLASS_NAME = 'b-sidebar';\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // If `true`, shows a basic backdrop\n backdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n backdropVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n bgVariant: makeProp(PROP_TYPE_STRING, 'light'),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // `aria-label` for close button\n closeLabel: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnRouteChange: makeProp(PROP_TYPE_BOOLEAN, false),\n noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n noSlide: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n shadow: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sidebarClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n title: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING)\n})), NAME_SIDEBAR); // --- Render methods ---\n\nvar renderHeaderTitle = function renderHeaderTitle(h, ctx) {\n // Render a empty `` when to title was provided\n var title = ctx.normalizeSlot(SLOT_NAME_TITLE, ctx.slotScope) || ctx.title;\n\n if (!title) {\n return h('span');\n }\n\n return h('strong', {\n attrs: {\n id: ctx.safeId('__title__')\n }\n }, [title]);\n};\n\nvar renderHeaderClose = function renderHeaderClose(h, ctx) {\n if (ctx.noHeaderClose) {\n return h();\n }\n\n var closeLabel = ctx.closeLabel,\n textVariant = ctx.textVariant,\n hide = ctx.hide;\n return h(BButtonClose, {\n props: {\n ariaLabel: closeLabel,\n textVariant: textVariant\n },\n on: {\n click: hide\n },\n ref: 'close-button'\n }, [ctx.normalizeSlot(SLOT_NAME_HEADER_CLOSE) || h(BIconX)]);\n};\n\nvar renderHeader = function renderHeader(h, ctx) {\n if (ctx.noHeader) {\n return h();\n }\n\n var $content = ctx.normalizeSlot(SLOT_NAME_HEADER, ctx.slotScope);\n\n if (!$content) {\n var $title = renderHeaderTitle(h, ctx);\n var $close = renderHeaderClose(h, ctx);\n $content = ctx.right ? [$close, $title] : [$title, $close];\n }\n\n return h('header', {\n staticClass: \"\".concat(CLASS_NAME, \"-header\"),\n class: ctx.headerClass,\n key: 'header'\n }, $content);\n};\n\nvar renderBody = function renderBody(h, ctx) {\n return h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-body\"),\n class: ctx.bodyClass,\n key: 'body'\n }, [ctx.normalizeSlot(SLOT_NAME_DEFAULT, ctx.slotScope)]);\n};\n\nvar renderFooter = function renderFooter(h, ctx) {\n var $footer = ctx.normalizeSlot(SLOT_NAME_FOOTER, ctx.slotScope);\n\n if (!$footer) {\n return h();\n }\n\n return h('footer', {\n staticClass: \"\".concat(CLASS_NAME, \"-footer\"),\n class: ctx.footerClass,\n key: 'footer'\n }, [$footer]);\n};\n\nvar renderContent = function renderContent(h, ctx) {\n // We render the header even if `lazy` is enabled as it\n // acts as the accessible label for the sidebar\n var $header = renderHeader(h, ctx);\n\n if (ctx.lazy && !ctx.isOpen) {\n return $header;\n }\n\n return [$header, renderBody(h, ctx), renderFooter(h, ctx)];\n};\n\nvar renderBackdrop = function renderBackdrop(h, ctx) {\n if (!ctx.backdrop) {\n return h();\n }\n\n var backdropVariant = ctx.backdropVariant;\n return h('div', {\n directives: [{\n name: 'show',\n value: ctx.localShow\n }],\n staticClass: 'b-sidebar-backdrop',\n class: _defineProperty({}, \"bg-\".concat(backdropVariant), backdropVariant),\n on: {\n click: ctx.onBackdropClick\n }\n });\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BSidebar = /*#__PURE__*/Vue.extend({\n name: NAME_SIDEBAR,\n mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n var visible = !!this[MODEL_PROP_NAME];\n return {\n // Internal `v-model` state\n localShow: visible,\n // For lazy render triggering\n isOpen: visible\n };\n },\n computed: {\n transitionProps: function transitionProps() {\n return this.noSlide ?\n /* istanbul ignore next */\n {\n css: true\n } : {\n css: true,\n enterClass: '',\n enterActiveClass: 'slide',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: 'slide',\n leaveToClass: ''\n };\n },\n slotScope: function slotScope() {\n var hide = this.hide,\n right = this.right,\n visible = this.localShow;\n return {\n hide: hide,\n right: right,\n visible: visible\n };\n },\n hasTitle: function hasTitle() {\n var $scopedSlots = this.$scopedSlots,\n $slots = this.$slots;\n return !this.noHeader && !this.hasNormalizedSlot(SLOT_NAME_HEADER) && !!(this.normalizeSlot(SLOT_NAME_TITLE, this.slotScope, $scopedSlots, $slots) || this.title);\n },\n titleId: function titleId() {\n return this.hasTitle ? this.safeId('__title__') : null;\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n id: this.safeId(),\n tabindex: '-1',\n role: 'dialog',\n 'aria-modal': this.backdrop ? 'true' : 'false',\n 'aria-hidden': this.localShow ? null : 'true',\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || this.titleId || null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localShow = newValue;\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState(newValue);\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_watch, \"$route\", function $route() {\n var newValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var oldValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.noCloseOnRouteChange && newValue.fullPath !== oldValue.fullPath) {\n this.hide();\n }\n }), _watch),\n created: function created() {\n // Define non-reactive properties\n this.$_returnFocusEl = null;\n },\n mounted: function mounted() {\n var _this = this;\n\n // Add `$root` listeners\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggle);\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, this.handleSync); // Send out a gratuitous state event to ensure toggle button is synced\n\n this.$nextTick(function () {\n _this.emitState(_this.localShow);\n });\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n this.localShow = false;\n this.$_returnFocusEl = null;\n },\n methods: {\n hide: function hide() {\n this.localShow = false;\n },\n emitState: function emitState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, this.safeId(), state);\n },\n emitSync: function emitSync() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), state);\n },\n handleToggle: function handleToggle(id) {\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.localShow = !this.localShow;\n }\n },\n handleSync: function handleSync(id) {\n var _this2 = this;\n\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.$nextTick(function () {\n _this2.emitSync(_this2.localShow);\n });\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (!this.noCloseOnEsc && keyCode === CODE_ESC && this.localShow) {\n this.hide();\n }\n },\n onBackdropClick: function onBackdropClick() {\n if (this.localShow && !this.noCloseOnBackdrop) {\n this.hide();\n }\n },\n\n /* istanbul ignore next */\n onTopTrapFocus: function onTopTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables.reverse()[0]);\n },\n\n /* istanbul ignore next */\n onBottomTrapFocus: function onBottomTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables[0]);\n },\n onBeforeEnter: function onBeforeEnter() {\n // Returning focus to `document.body` may cause unwanted scrolls,\n // so we exclude setting focus on body\n this.$_returnFocusEl = getActiveElement(IS_BROWSER ? [document.body] : []); // Trigger lazy render\n\n this.isOpen = true;\n },\n onAfterEnter: function onAfterEnter(el) {\n if (!contains(el, getActiveElement())) {\n this.enforceFocus(el);\n }\n\n this.$emit(EVENT_NAME_SHOWN);\n },\n onAfterLeave: function onAfterLeave() {\n this.enforceFocus(this.$_returnFocusEl);\n this.$_returnFocusEl = null; // Trigger lazy render\n\n this.isOpen = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n enforceFocus: function enforceFocus(el) {\n if (!this.noEnforceFocus) {\n attemptFocus(el);\n }\n }\n },\n render: function render(h) {\n var _ref;\n\n var bgVariant = this.bgVariant,\n width = this.width,\n textVariant = this.textVariant,\n localShow = this.localShow;\n var shadow = this.shadow === '' ? true : this.shadow;\n var $sidebar = h(this.tag, {\n staticClass: CLASS_NAME,\n class: [(_ref = {\n shadow: shadow === true\n }, _defineProperty(_ref, \"shadow-\".concat(shadow), shadow && shadow !== true), _defineProperty(_ref, \"\".concat(CLASS_NAME, \"-right\"), this.right), _defineProperty(_ref, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_ref, \"text-\".concat(textVariant), textVariant), _ref), this.sidebarClass],\n style: {\n width: width\n },\n attrs: this.computedAttrs,\n directives: [{\n name: 'show',\n value: localShow\n }],\n ref: 'content'\n }, [renderContent(h, this)]);\n $sidebar = h('transition', {\n props: this.transitionProps,\n on: {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n afterLeave: this.onAfterLeave\n }\n }, [$sidebar]);\n var $backdrop = h(BVTransition, {\n props: {\n noFade: this.noSlide\n }\n }, [renderBackdrop(h, this)]);\n var $tabTrapTop = h();\n var $tabTrapBottom = h();\n\n if (this.backdrop && localShow) {\n $tabTrapTop = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onTopTrapFocus\n }\n });\n $tabTrapBottom = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onBottomTrapFocus\n }\n });\n }\n\n return h('div', {\n staticClass: 'b-sidebar-outer',\n style: {\n zIndex: this.zIndex\n },\n attrs: {\n tabindex: '-1'\n },\n on: {\n keydown: this.onKeydown\n }\n }, [$tabTrapTop, $sidebar, $tabTrapBottom, $backdrop]);\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