{"version":3,"sources":["webpack:///./src/components/Core/RecordComponents/PDFViewer.vue?016b","webpack:///./src/components/MentalHealth/Editors/ProblemsListEditor.vue?ac7a","webpack:///src/components/MentalHealth/Editors/ProblemsListEditor.vue","webpack:///./src/components/MentalHealth/Editors/ProblemsListEditor.vue?45e3","webpack:///./src/components/MentalHealth/Editors/ProblemsListEditor.vue","webpack:///./src/components/Core/RecordComponents/DocumentEditor.vue?80cd","webpack:///./node_modules/@fullcalendar/daygrid/main.js","webpack:///./node_modules/@fullcalendar/timegrid/main.js","webpack:///./src/components/Core/ItemEditors/DeleteIconRequest.vue?7076","webpack:///src/components/Core/ItemEditors/DeleteIconRequest.vue","webpack:///./src/components/Core/ItemEditors/DeleteIconRequest.vue?2835","webpack:///./src/components/Core/ItemEditors/DeleteIconRequest.vue","webpack:///./src/components/Core/RecordComponents/DocumentEditor.vue?7a1e","webpack:///src/components/Core/RecordComponents/DocumentEditor.vue","webpack:///./src/components/Core/RecordComponents/DocumentEditor.vue?8046","webpack:///./src/components/Core/RecordComponents/DocumentEditor.vue","webpack:///./node_modules/vue-select/dist/vue-select.js","webpack:///./src/components/Core/RecordComponents/DigitalPasswordSignature.vue?5617","webpack:///src/components/Core/RecordComponents/DigitalPasswordSignature.vue","webpack:///./src/components/Core/RecordComponents/DigitalPasswordSignature.vue?19d8","webpack:///./src/components/Core/RecordComponents/DigitalPasswordSignature.vue","webpack:///./src/components/Core/RecordComponents/DocumentViewer.vue?76a2","webpack:///./src/components/Core/RecordComponents/PDFViewer.vue?eb19","webpack:///src/components/Core/RecordComponents/PDFViewer.vue","webpack:///./src/components/Core/RecordComponents/PDFViewer.vue?e421","webpack:///./src/components/Core/RecordComponents/PDFViewer.vue","webpack:///./src/components/Core/RecordComponents/DigitalRejection.vue?e2ae","webpack:///src/components/Core/RecordComponents/DigitalRejection.vue","webpack:///./src/components/Core/RecordComponents/DigitalRejection.vue?3941","webpack:///./src/components/Core/RecordComponents/DigitalRejection.vue","webpack:///src/components/Core/RecordComponents/DocumentViewer.vue","webpack:///./src/components/Core/RecordComponents/DocumentViewer.vue?5cea","webpack:///./src/components/Core/RecordComponents/DocumentViewer.vue","webpack:///./node_modules/mobile-device-detect/dist/index.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@fullcalendar/interaction/main.js","webpack:///./src/components/Embed/EmbedMyAppointments.vue?03cb","webpack:///./src/components/Embed/Appointments/MyAppointments.vue?c4d3","webpack:///src/components/Embed/Appointments/MyAppointments.vue","webpack:///./src/components/Embed/Appointments/MyAppointments.vue?751a","webpack:///./src/components/Embed/Appointments/MyAppointments.vue","webpack:///src/components/Embed/EmbedMyAppointments.vue","webpack:///./src/components/Embed/EmbedMyAppointments.vue?1e5a","webpack:///./src/components/Embed/EmbedMyAppointments.vue","webpack:///./node_modules/@fullcalendar/common/vdom.js","webpack:///./node_modules/@fullcalendar/common/main.js","webpack:///./node_modules/preact/dist/preact.module.js","webpack:///./node_modules/preact/hooks/dist/hooks.module.js","webpack:///./node_modules/preact/compat/dist/compat.module.js","webpack:///./node_modules/@fullcalendar/core/vdom.js","webpack:///./node_modules/@fullcalendar/core/main.js","webpack:///./node_modules/@fullcalendar/vue/dist/options.js","webpack:///./node_modules/@fullcalendar/vue/dist/utils.js","webpack:///./node_modules/@fullcalendar/vue/dist/custom-content-type.js","webpack:///./node_modules/@fullcalendar/vue/dist/FullCalendar.js","webpack:///./node_modules/@fullcalendar/vue/dist/main.js"],"names":["render","_vm","this","_c","_self","staticClass","_v","attrs","ChartId","staticStyle","Fields","FieldData","scopedSlots","_u","key","fn","props","on","$event","ShowDetail","rowData","domProps","_s","DiagnosticDescription","_e","EditMode","CheckPermission","EditPermission","ShowNewDetail","ref","CreateEditProblem","ProblemOptions","option","Id","GetMHProblemOptions","SetCodeAndDescription","attributes","events","_g","_b","TargetRecord","DiagnosticCodeID","model","value","callback","$$v","$set","expression","directives","name","rawName","target","composing","$$selectedVal","Array","prototype","filter","call","options","o","selected","map","val","_value","multiple","DateConfig","CancelDetail","DeleteProblem","staticRenderFns","data","title","sortField","dateFormat","allowInput","altInput","altFormat","loader","methods","$MasterAPI","ExecuteRequest","ClientSubProgramMembershipID","GetDataSuccess","response","search","loading","Search","GetMHProblemOptionsSuccess","fmt","defaultText","moment","format","$refs","show","problem","JSON","parse","stringify","vm","i","length","ProblemId","hide","e","preventDefault","CreateEditProblemSuccess","GetData","DeleteProblemSuccess","DiagnosticCode","permissionName","$store","getters","components","Vuetable","flatPickr","vSelect","computed","component","TableView","_super","_this","apply","arguments","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","_a","context","sections","stickyHeaderDates","push","type","isSticky","chunk","elRef","tableClassName","rowContent","liquid","content","viewSpec","rootElRef","classNames","className","concat","join","isHeightAuto","forPrint","collapsibleWidth","cols","renderHScrollLayout","colCnt","dayMinWidth","ScrollGrid","pluginHooks","scrollGridImpl","Error","stickyFooterScrollbar","chunks","colGroups","span","minWidth","splitSegsByRow","segs","rowCnt","byRow","_i","segs_1","seg","row","splitSegsByFirstCol","byCol","segs_2","firstCol","splitInteractionByRow","ui","affectedInstances","isEvent","TableCellTop","navLinkAttrs","date","dateProfile","todayRange","showDayNumber","extraHookProps","defaultContent","renderTopInner","innerElRef","innerContent","forceDayTop","id","dayNumberId","dayNumberText","DEFAULT_TABLE_EVENT_TIME_FORMAT","hour","minute","omitZeroMinute","meridiem","hasListItemDisplay","display","eventRange","def","allDay","lastCol","isStart","isEnd","TableBlockEvent","extraClassNames","defaultTimeFormat","defaultDisplayEventEnd","disableResizing","TableListItemEvent","timeFormat","eventTimeFormat","timeText","renderInnerContent","isDragging","isResizing","isDateSelecting","isSelected","isPast","isFuture","isToday","innerProps","style","borderColor","backgroundColor","event","TableCellMoreLink","compileSegs","singlePlacements","allSegs","invisibleSegs","allDayDate","moreCnt","hiddenSegs","alignmentElRef","alignGridTop","extraDateSpan","popoverContent","isForcedInvisible","eventDrag","eventResize","instanceId","instance","visibility","eventSelection","handleClick","isExpanded","popoverId","singlePlacements_1","placement","isVisible","DEFAULT_WEEK_NUM_FORMAT","week","TableCell","state","handleRootEl","el","dayElRef","dayClassNames","rootDataAttrs","isDisabled","role","extraDataAttrs","showWeekNumber","defaultFormat","weekElRef","weekClassNames","fgContentElRef","fgContent","marginTop","moreMarginTop","bgContent","computeFgSegPlacement","dayMaxEvents","dayMaxEventRows","strictOrder","eventInstanceHeights","maxContentHeight","cells","hierarchy","DayGridSegHierarchy","allowReslicing","maxCoord","hiddenConsumes","maxStackCnt","segInputs","unknownHeightSegs","eventHeight","index","thickness","start","end","hiddenEntries","addSegs","segRects","toRects","placeRects","singleColPlacements","multiColPlacements","leftoverMargins","moreCnts","moreMarginTops","unknownHeightSegs_1","isAbsolute","absoluteTop","col","resliceSeg","hiddenEntries_1","hiddenEntry","hiddenSpan","allRects","rectsByEachCol","groupRectsByEachCol","rects","currentHeight","currentMarginTop","rects_1","rect","levelCoord","multiPlacements","rects_2","isFirstCol","rects_3","spanStart","spanEnd","origRange","range","slicedRange","durationEditable","valueOf","forceHidden","entriesByLevel","excludeHidden","entry","level","handleInvalidInsertion","insertion","touchingEntry","touchingLevel","touchingLateral","touchingEntryId","placeholderEntry","placeholderEntryId","splitEntry","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","businessHoursByCol","businessHourSegs","bgEventSegsByCol","bgEventSegs","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","fgEventSegs","eventOrder","eventOrderStrict","renderIntro","cell","normalFgNodes","renderFgSegs","mirrorFgNodes","buildMirrorPlacements","Boolean","createRef","showDayNumbers","showWeekNumbers","renderFillSegs","componentDidMount","updateSizing","componentDidUpdate","prevProps","prevState","currentProps","dateSelectionSegs","segPlacements","isMirror","nodes","segPlacements_1","left","right","isRtl","lefts","rights","top","fillType","leftRightCss","isExternalSizingChange","clientWidth","frameEls","currentMap","originEl","current","setState","oldInstanceHeights","newInstanceHeights","queryEventInstanceHeights","limitByContentHeight","safeSetState","computeMaxContentHeight","segElMap","height","Math","round","getBoundingClientRect","split","max","firstKey","cellEl","fcContainerEl","bottom","getCellEls","elMap","mirrorSegs","colPlacements","topsByInstanceId","buildAbsoluteTopHash","colPlacements_1","placements","placements_1","addStateEquality","Table","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","splitEventDrag","splitEventResize","rowRefs","rootEl","registerInteractiveComponent","isHitComboAllowed","unregisterInteractiveComponent","expandRows","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","limitViaBalanced","width","tableMinWidth","unit","nowDate","clientHeight","colGroupNode","toISOString","renderRowIntro","isSegAllDay","prepareHits","rowPositions","collect","rowObj","colPositions","queryHit","positionLeft","positionTop","leftToIndex","topToIndex","dateSpan","getCellRange","dayEl","getCellEl","tops","bottoms","layer","DayTableSlicer","forceDayIfListItem","sliceRange","dateRange","dayTableModel","DayTable","slicer","tableRef","sliceProps","nextDayThreshold","headerAlignElRef","DayTableView","buildDayTableModel","headerRef","dateProfileGenerator","headerContent","dayHeaders","dates","headerDates","datesRepDistinctDays","contentArg","businessHours","dateSelection","eventStore","eventUiBases","tableColGroupNode","weekNumbers","daySeries","renderRange","test","currentRangeUnit","TableDateProfileGenerator","buildRenderRange","currentRange","isRangeAllDay","endOfWeek","dateEnv","startOfWeek","monthMode","fixedWeekCount","ceil","main","initialView","views","dayGrid","dateProfileGeneratorClass","dayGridDay","duration","days","dayGridWeek","weeks","dayGridMonth","months","AllDaySplitter","getKeyInfo","timed","getKeysForDateSpan","getKeysForEventDef","eventDef","DEFAULT_SLAT_LABEL_FORMAT","TimeColsAxisCell","isLabeled","Consumer","isoTimeStr","viewApi","labelFormat","slotLabelFormat","isArray","hookProps","time","toDate","view","text","slotLabelClassNames","slotLabelContent","didMount","slotLabelDidMount","willUnmount","slotLabelWillUnmount","customClassNames","TimeBodyAxis","slatMetas","slatMeta","AUTO_ALL_DAY_MAX_EVENT_ROWS","TimeColsView","allDaySplitter","scrollerElRef","slatCoords","handleScrollTopRequest","scrollTop","scrollerEl","renderHeadAxis","rowKey","frameHeight","dayCnt","renderTableRowAxis","rowHeight","allDayText","allDayClassNames","allDayContent","renderAllDayInner","allDayDidMount","allDayWillUnmount","handleSlatCoords","timeContent","outerContent","theme","getClass","syncRowHeights","arg","rowSyncHeights","colSpan","isNowIndicator","nowIndicator","nowIndicatorTop","safeComputeTop","isAxis","getAllDayMaxEventProps","undefined","TimeColsSlatsCoords","positions","slotDuration","startOfDayDate","timeMs","slotMinTime","slotMaxTime","computeTimeTop","computeDateTop","when","slatIndex","slatRemainder","len","els","slatCoverage","milliseconds","min","floor","getHeight","TimeColsSlatsBody","slatElRefs","axis","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","TimeColsSlats","minHeight","componentWillUnmount","onCoords","offsetHeight","collectSlatEls","splitSegsByCol","segsByCol","splitInteractionByCol","TimeColMoreLink","renderMoreLinkInner","renderPlainFgSegs","onClick","shortText","buildPositioning","hiddenGroups","web","buildWeb","stretchWeb","webToRects","buildNode","cacheable","lateral","siblingRange","findNextLevelSegs","nextLevelRes","buildNodes","nextLevelNodes","lateralStart","lateralEnd","pairs","sort","cmpDescPressures","extractNode","a","b","subjectLevel","subjectLateral","levelCoords","subjectEntry","afterSubject","levelCnt","entries","searchIndex","topLevelNodes","totalThickness","stretchNode","node","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","newChildren","nextLevelNodes_1","childNode","res","newThickness","processNode","stackDepth","stackForward","processNodes","nodes_1","keyFunc","workFunc","cache","args","computeSegVCoords","colDate","eventMinHeight","vcoords","computeFgSegPlacements","segVCoords","eventMaxStack","dumbSegs","segRects_1","segRect","dumbSegs_1","dumbSeg","DEFAULT_TIME_FORMAT","TimeColEvent","isShort","TimeColMisc","TimeCol","sortEventSegs","isSelectMirror","selectMirror","interactionAffectedInstances","sortedFgSegs","dataAttrs","renderNowIndicator","nowIndicatorSegs","segIsInvisible","renderPositionedFgSegs","eventShortHeight","renderHiddenGroups","segPlacement","vStyle","computeSegVStyle","hStyle","computeSegHStyle","isInset","hiddenGroup","positionCss","compileSegsFromEntries","children","segHCoords","shouldOverlap","slotEventOverlap","nearCoord","farCoord","zIndex","hiddenInstances","segEntries","segEntry","TimeColsContent","splitNowIndicatorSegs","nowIndicatorSegsByRow","updateCoords","onColCoords","collectCellEls","TimeCols","processSlotOptions","handleScrollRequest","request","onScrollTopRequest","top_1","handleColCoords","colCoords","onSlatCoords","scrollResponder","createScrollResponder","update","detach","snapDuration","snapsPerSlot","colIndex","slatTop","slatHeight","partial","localSnapIndex","snapIndex","dayDate","add","snapDurationOverride","DayTimeColsSlicer","dayRanges","segRange","DayTimeCols","buildDayRanges","timeColsRef","sliceNowDate","ranges","STOCK_SUB_DURATIONS","hours","minutes","seconds","buildSlatMetas","explicitLabelInterval","dayStart","Date","slatTime","slatIterator","labelInterval","computeLabelInterval","metas","slotsPerLabel","DayTimeColsView","buildTimeColsModel","splitProps","slotLabelInterval","hasAttachedAxis","hasDetachedAxis","allDaySlot","timeGridContent","OPTION_REFINERS","optionRefiners","timeGrid","usesMinMaxTime","timeGridDay","timeGridWeek","ButtonClick","Save","ConfirmationString","Cancel","RequiresConfirmation","ShowModal","Method","Endpoint","Payload","SaveSuccess","$emit","PerformGlobalUpdate","$GlobalUpdate","ExecuteGlobalUpdate","showfocus","focus","ModalTitle","MetaData","UpdatedAt","UpdatedBy","_l","feedback","Reviewer","ReviewedAt","Comments","sig","ApprovalLabel","ReviewerDecision","formatUTCDate","ReviewerDecisionAt","FullName","RemoveSignatureFromDocument","SubmitForm","FormBlockSchema","ChartRecordId","InputValues","Feedback","EditingSubmittedDocument","DocumentRequiresApproval","SaveDraft","FormData","Form","AllowWordImport","ShowTemplateImportModal","IsExistingDocument","OpenDeleteDraftConfirmation","SubmitDocument","SubmitTemplateImport","CancelImport","DownloadTemplateFile","DeleteText","CancelDeleteDraftConfirmation","toUpperCase","DeleteDraft","created","$on","msg","FormID","CheckForDuplicateServiceExistance","$off","FormSubProgramMembership","DocumentId","Signatures","NewDocPayload","DocumentID","ChartID","ServiceProvided","DateOfService","CheckForDuplicateServiceExistanceSuccess","CheckForDuplicateServiceExistanceError","error","SetFormSubProgramMembership","formSubProgramMembership","ShowNewDocumentModal","startDate","endDate","carryForwardLastDocument","StartDate","EndDate","ShowNewDocumentModalSuccess","ShowNewDocumentModalWithPresets","newDocPayload","ShowNewDocumentModalWithPresetsSuccess","HtmlFormTemplate","inputValues","FormFields","forEach","item","FieldDataStructure","Name","DefaultValue","ServiceName","StartTime","EndTime","IncludeProblemsList","GetProblemsListSuccess","ProblemsList","form","formData","append","SubmitTemplateImportSuccess","ShowExistingDocumentModal","documentID","ShowExistingDocumentModalSuccess","metaData","DocumentSignatures","DocumentFields","FormField","FieldValue","reviewerComments","ReviewerComments","SaveDraftSuccess","alert","DeleteDraftSuccess","payload","FileID","WordFileID","ExecuteFileRequest","password","actionMethod","SubmitDocumentSuccess","signatureID","RemoveSignatureFromDocumentSuccess","ds","utc","local","FormBlock","DigitalPasswordSignature","ProblemsListEditor","Object","constructor","hasOwnProperty","Label","DocumentRequiresApprovalFromNonAuthor","feedbackList","ConditionalSize","UseProblemsList","EmployeeID","CurrentAuthorEmployeeID","EmployeeAuthors","x","mounted","ChartRecordIdPreset","t","module","exports","self","646","n","713","defineProperty","enumerable","configurable","writable","860","Symbol","iterator","toString","from","206","TypeError","319","s","8","__esModule","default","d","get","r","toStringTag","VueSelect","m","O","mixins","_","l","autoscroll","watch","typeAheadPointer","maybeAdjustScroll","open","$nextTick","dropdownMenu","getDropdownViewport","offsetTop","c","filteredOptions","selectable","typeAheadToLastSelected","selectedValue","typeAheadUp","typeAheadDown","typeAheadSelect","select","indexOf","u","mutableLoading","toggleLoading","p","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","h","Deselect","$createElement","xmlns","OpenIndicator","inserted","appendToBody","toggle","window","scrollX","pageXOffset","scrollY","pageYOffset","unbindPosition","calculatePosition","document","body","appendChild","unbind","parentNode","removeChild","f","keys","y","g","getOwnPropertySymbols","getOwnPropertyDescriptor","v","getOwnPropertyDescriptors","defineProperties","disabled","clearable","deselectFromDropdown","searchable","placeholder","String","transition","clearSearchOnSelect","closeOnSelect","label","autocomplete","reduce","Function","getOptionLabel","console","warn","getOptionKey","onTab","selectOnTab","isComposing","taggable","tabindex","Number","pushTags","filterable","filterBy","toLocaleLowerCase","createOption","optionList","resetOnOptionsChange","validator","includes","clearSearchOnBlur","noDrop","inputId","dir","selectOnKeyCodes","searchInputQuerySelector","mapKeydown","dropdownShouldOpen","uid","pushedTags","isTrackingValues","propsData","$data","searchEl","$scopedSlots","selectedOptions","querySelector","scope","searching","searchPlaceholder","readonly","dropdownOpen","compositionstart","compositionend","keydown","onSearchKeyDown","blur","onSearchBlur","onSearchFocus","input","spinner","noOptions","openIndicator","class","listHeader","listFooter","header","deselect","footer","childComponents","stateClasses","isValueEmpty","optionExists","unshift","showClearButton","clearSelection","setInternalValueFromOptions","immediate","handler","pushTag","findOptionFromReducedValue","isOptionSelected","updateValue","onAfterSelect","optionComparator","toggleDropdown","deselectButtons","clearButton","some","contains","isOptionDeselectable","find","closeSearchOptions","maybeDeleteValue","slice","normalizeOptionForSlot","onEscape","mousedown","onMousedown","onMouseUp","9","27","38","40","keyCode","_t","refInFor","click","tag","mouseup","mouseover","stopPropagation","ajax","pointer","pointerScroll","HandleShown","Password","SourceFileId","DocumentName","GroupedDocuments","ShowApprove","ShowReturn","ViewerType","AddendaAllowed","Addenda","addendum","formatDate","NoteDate","AuthorName","DeleteAddendum","Note","NewAddendumNote","AddAddendum","ApproveDocument","ReturnDocument","pageNumber","GetPageImageURL","VirtualKey","SourceURL","PageLength","GetPageLengthSuccess","pageIndex","$baseURL","CleanString","newString","replaceAll","IsMobile","GetPageLength","DocIDs","docIDsString","SectionName","ChapterName","PageNumbers","pageNumbers","RefreshPdf","ShowViewerModal","pdfFileID","formLabel","documentName","Reviewing","GetFeedback","GetAddenda","ShowViewerModalWithComboDocs","docIDs","ShowViewerModalWithGroupedDocs","DigitallyReviewDocument","comments","reviewerDecision","DigitallyReviewDocumentSuccess","GetFeedbackSuccess","GetAddendaSuccess","ListDetail","FormAddendaAllowed","AddAddendumSuccess","PDFViewer","DigitalRejection","modules","installedModules","__webpack_require__","moduleId","getter","object","property","_extends","assign","source","UAParser","_require","BROWSER_TYPES","OS_TYPES","DEVICE_TYPES","defaultData","UA","browser","getBrowser","device","getDevice","engine","getEngine","os","getOS","ua","getUA","CHROME","CHROMIUM","IE","INTERNET_EXPLORER","OPERA","FIREFOX","SAFARI","EDGE","YANDEX","MOBILE_SAFARI","MOBILE","TABLET","SMART_TV","BROWSER","WEARABLE","CONSOLE","ANDROID","WINDOWS_PHONE","IOS","checkType","isMobile","isTablet","isSmartTV","isConsole","isWearable","isBrowser","broPayload","browserMajorVersion","major","browserFullVersion","version","browserName","engineName","engineVersion","osName","osVersion","userAgent","mobilePayload","vendor","stvPayload","consolePayload","wearPayload","isMobileType","isTabletType","isMobileAndTabletType","isSmartTVType","isBrowserType","isWearableType","isConsoleType","isAndroidType","isWinPhoneType","isIOSType","isChromeType","isFirefoxType","isChromiumType","isEdgeType","isYandexType","isSafariType","isMobileSafariType","isOperaType","isIEType","getBrowserFullVersion","getBrowserVersion","getOsVersion","getOsName","getBrowserName","getMobileVendor","getMobileModel","getEngineName","getEngineVersion","getUseragent","getDeviceType","isMobileSafari","isChromium","isMobileOnly","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","isIE","fullBrowserVersion","browserVersion","mobileVendor","mobileModel","isEdge","isYandex","deviceType","deviceDetect","__WEBPACK_AMD_DEFINE_RESULT__","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","SMARTTV","EMBEDDED","util","extend","regexes","extensions","margedRegexes","has","str1","str2","toLowerCase","lowerize","str","replace","trim","mapper","rgx","arrays","j","k","q","matches","match","regex","exec","maps","oldsafari","1.2","1.3","amazon","sprint","HTC","Sprint","windows","ME","2000","XP","Vista","7","8.1","10","RT","cpu","uastring","getResult","navigator","rgxmap","getCPU","architecture","setUA","CPU","DEVICE","ENGINE","OS","$","jQuery","Zepto","parser","set","result","prop","__webpack_amd_options__","extendStatics","setPrototypeOf","__proto__","__extends","__","create","__assign","__spreadArray","to","pack","ar","touchMouseIgnoreWait","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","PointerDragging","containerEl","subjectEl","selector","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","handleMouseDown","ev","shouldIgnoreMouse","isPrimaryMouseButton","tryStart","pev","createEventFromMouse","emitter","trigger","initScrollWatch","addEventListener","handleMouseMove","handleMouseUp","recordCoords","removeEventListener","cleanup","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","startIgnoringMouse","handleScroll","pageX","prevScrollX","prevPageX","pageY","prevScrollY","prevPageY","origEvent","isTouch","deltaX","origPageX","deltaY","origPageY","passive","listenerCreated","destroy","listenerDestroyed","querySubjectEl","downEl","destroyScrollWatch","cancelTouchScroll","isFirst","touches","button","ctrlKey","setTimeout","onWindowTouchMove","ElementMirror","sourceEl","mirrorEl","sourceElRect","revertDuration","origScreenX","origScreenY","updateElPosition","handleMove","setIsVisible","bool","stop","needsRevertAnimation","done","doRevertAnimation","finalSourceElRect","getMirrorEl","cloneNode","classList","position","boxSizing","margin","ScrollGeomCache","scrollController","doesListening","getScrollTop","scrollLeft","getScrollLeft","handleScrollChange","origScrollTop","origScrollLeft","scrollWidth","getScrollWidth","scrollHeight","getScrollHeight","getClientWidth","getClientHeight","clientRect","computeClientRect","getEventTarget","setScrollTop","getMaxScrollTop","setScrollLeft","getMaxScrollLeft","ElementScrollGeomCache","WindowScrollGeomCache","getTime","performance","now","AutoScroller","isEnabled","scrollQuery","edgeThreshold","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","animate","edge","computeBestEdge","handleSide","msSinceRequest","requestAnimation","scrollStartEl","buildCaches","yDelta","xDelta","scrollCache","requestAnimationFrame","invDistance","distance","velocity","sign","bestSide","scrollCaches_1","leftDist","rightDist","topDist","bottomDist","canScrollUp","canScrollDown","canScrollLeft","canScrollRight","queryScrollEls","query","querySelectorAll","FeaturefulElementDragging","delay","minDistance","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","mirror","startDelay","handleDistanceSurpassed","onPointerMove","distanceSq","autoScroller","onPointerUp","tryStopDrag","clearTimeout","handleDelayEnd","tryStartDrag","stopDrag","bind","setIgnoreMove","setMirrorIsVisible","setMirrorNeedsRevert","setAutoScrollEnabled","OffsetTracker","origRect","scrollEl","computeLeft","computeTop","isWithinClipping","point","isIgnoredClipping","tagName","HitDragging","dragging","droppableStore","useSubjectCenter","requireInitial","initialHit","movingHit","finalHit","handlePointerDown","processFirstCoord","handleDragStart","handleDragMove","handlePointerUp","releaseHits","handleDragEnd","subjectRect","origPoint","adjustedPoint","HTMLElement","queryHitForOffset","slicedSubjectRect","coordAdjust","forceHandle","hit","isHitsEqual","offsetTrackers","interactionSettings","offsetLeft","bestHit","offsetTracker","originLeft","originTop","activeRange","componentId","hit0","hit1","buildDatePointApiWithContext","datePointTransforms","transform","buildDatePointApi","dateStr","formatIso","omitTime","DateClicking","settings","isValidDateDownEl","hitDragging","jsEvent","calendarApi","DateSelecting","dragSelection","canSelect","getComponentTouchDelay$1","unselect","handleHitUpdate","isFinal","isInvalid","disallowed","joinHitsIntoSelection","dateSelectionTransformers","dispatch","selection","selectMinDistance","dragScroll","selectLongPressDelay","longPressDelay","dateSpan0","dateSpan1","ms","dateSelectionTransformers_1","transformer","EventDragging","subjectSeg","relevantEvents","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","eventInstanceId","getCurrentData","eventDragMinDistance","getComponentTouchDelay","fixedMirrorParent","dragRevertDuration","isValid","isValidSegDownEl","mutation","interaction","affectedEvents","mutatedEvents","receivingOptions","editable","droppable","computeEventMutation","eventDragMutationMassagers","displayDrag","initialContext_1","receivingContext_1","eventInstance","eventApi","relevantEvents_1","mutatedRelevantEvents_1","clearDrag","updatedEventApi","defs","defId","instances","eventChangeArg","oldEvent","relatedEvents","revert","transformed","eventDropTransformers","delta","datesDelta","eventRemoveArg","draggedEl","addedEventDef","addedEventInstance","addedEventApi","eventAddArg","SELECTOR","useEventCenter","nextContext","prevContext","initialCalendar","massagers","date0","date1","standardProps","hasEnd","allDayMaintainDuration","largeUnit","massagers_1","massager","eventLongPressDelay","EventResizing","draggingSegEl","draggingSeg","segEl","querySegEl","computeMutation","startDelta","endDelta","isFromStart","instanceRange","UnselectAuto","isRecentPointerDateSelect","matchesCancel","matchesEvent","onSelect","selectInfo","onDocumentPointerDown","unselectCancel","onDocumentPointerUp","documentPointer","calendarState","unselectAuto","off","LISTENER_REFINERS","dateClick","eventDragStart","eventDragStop","eventDrop","eventResizeStart","eventResizeStop","drop","eventReceive","eventLeave","ExternalElementDragging","suppliedDragMeta","droppableEvent","dragMeta","buildDragMeta","canDropElOnCalendar","computeEventForDateSpan","finalView","addingEvents_1","getDragMetaFromEl","dropAccept","defProps","leftoverProps","externalDefTransforms","refined","extra","sourceId","forceEventDuration","startTime","getEmbeddedElData","obj","prefix","dataAttrPrefix","prefixedName","getAttribute","ExternalDraggable","itemSelector","appendTo","eventData","InferredElementDragging","mirrorSelector","currentMirrorEl","handlePointerMove","ThirdPartyDraggable","containerOrSettings","Element","componentInteractions","calendarInteractions","elementDraggingImpl","listenerRefiners","CalendarOptions","RefreshCalendar","IncludePersonal","ChangeMonthView","MonthView","ChecklistData","CreateNewAppointment","ClientEnrollmentsList","GetAvailableLocationOptions","NewAppointment","DateTimeConfig","group","LocationOptions","Location","CancelNewAppointment","EditAppointment","ClientSubProgramMembership","Client","Person","MHDocumentID","CancelEditAppointment","AppointmentStatus","SaveThenLockDocument","CurrentDocumentStatus","EditDocument","ViewDocument","Document","PDFFileID","CurrentMHDocumentStatus","MHDocument","DeleteAppointment","GetDrafts","chartId","isShow","ShowEditAppointment","AppointmentTypes","enableTime","calAPI","getApi","refetchEvents","HandleSelect","ShowNewAppointment","startStr","endStr","HandleEventClick","HandleEventResize","UpdateAppointmentTime","HandleEventDrop","newStart","newEnd","StartDateTime","EndDateTime","clientSubProgramMembershipID","GetAvailableLocationOptionsSuccess","startObj","endObj","CreateNewAppointmentSuccess","FullCalendar","DocumentEditor","DocumentViewer","DeleteIconRequest","GetClientEnrollmentsList","GetAppointmentTypeOptions","AppointmentTypeOptions","groups","output","ProgramType","optionsList","opt","initialOptions","plugins","contentHeight","eventClick","eventSources","url","extraParams","eventSourceSuccess","xhr","ClientOffWeeks","Events","MyAppointments","SubProgramId","$route","FullCalendarVDom","Component","createElement","Fragment","createContext","createPortal","flushSync","unmountComponentAtNode","EventSourceApi","internalEventSource","remove","refetch","sourceIds","isRefetch","publicId","meta","removeElement","elementClosest","closest","documentElement","elementMatches","parentElement","nodeType","method","matchesSelector","msMatchesSelector","findElements","container","containers","allMatches","PIXEL_PROP_RE","applyStyle","propName","applyStyleProp","getEventTargetViaRoot","composedPath","getElRoot","getRootNode","guid$1","getUniqueDomId","buildDelegationHandler","matchedChild","listenBySelector","eventType","attachedHandler","listenToHoverBySelector","onMouseEnter","onMouseLeave","currentMatchedChild","mouseOverEv","realOnMouseLeave_1","mouseLeaveEv","transitionEventNames","whenTransitionDone","realCallback","eventName","createAriaClickAttrs","createAriaKeyboardAttrs","tabIndex","onKeyDown","guidNumber","guid","disableCursor","enableCursor","preventSelection","allowSelection","preventContextMenu","allowContextMenu","parseFieldSpecs","token","specs","tokens","charAt","field","substring","order","func","compareByFieldSpecs","obj0","obj1","fieldSpecs","cmp","compareByFieldSpec","fieldSpec","flexibleCompare","localeCompare","padStart","substr","formatWithOrdinals","formatter","fallbackText","compareNumbers","isInt","computeSmallestCellWidth","allWidthEl","contentWidthEl","DAY_IDS","addWeeks","dateToUtcArray","arrayToUtcDate","addDays","addMs","diffWeeks","m0","m1","diffDays","diffHours","diffMinutes","diffSeconds","diffDayAndTime","m0day","startOfDay","m1day","years","diffWholeWeeks","diffWholeDays","timeAsMs","getUTCFullYear","getUTCMonth","getUTCDate","startOfHour","getUTCHours","startOfMinute","getUTCMinutes","startOfSecond","getUTCSeconds","weekOfYear","marker","dow","doy","w","weekOfGivenYear","nextW","year","firstWeekStart","firstWeekOffset","fwd","fwdlw","getUTCDay","dateToLocalArray","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","arrayToLocalDate","getUTCMilliseconds","UTC","isValidDate","isNaN","createEventInstance","forcedStartTzo","forcedEndTzo","mergeProps","propObjs","complexPropsMap","dest","name_1","complexObjs","name_2","filterHash","hash","filtered","mapHash","newHash","arrayToHash","a_1","hashValuesToArray","isPropsEqual","getUnequalProps","compareObjs","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","val1","comparator","collectFromHash","startIndex","endIndex","step","parseRecurring","defaultAllDay","recurringTypes","parsed","allDayGuess","typeData","typeId","expandRecurring","framingRange","recurringDef","defaultAllDayEventDuration","defaultTimedEventDuration","starts","expandRecurringRanges","starts_1","typeDef","markers","expand","subtract","INTERNAL_UNITS","PARSE_RE","createDuration","parseString","parseObject","parseInt","month","day","second","millisecond","specifiedWeeks","durationsEqual","d0","d1","addDurations","subtractDurations","multiplyDuration","asRoughYears","dur","asRoughDays","asRoughMonths","asRoughMs","wholeDivideDurations","numerator","denominator","localRes","greatestDurationDenominator","buildIsoString","timeZoneOffset","stripZeroTime","formatTimeZoneOffset","formatDayString","formatIsoTimeString","doIso","abs","mins","isArraysEqual","a0","a1","equalityFunc","memoize","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","memoizeObjArg","currentArg","newArg","EXTENDED_SETTINGS_AND_SEVERITIES","separator","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","era","weekday","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","buildFormattingFunc","formatRange","betterDefaultSeparator","diffSeverity","computeMarkerDiffSeverity","calendarSystem","biggestUnitForPartial","full0","full1","partialDateProps","computePartialFormattingOptions","partialFormattingFunc","partial0","partial1","findCommonInsertion","defaultSeparator","before","after","getLargestUnit","standardDatePropCnt","formatWeekNumber","computeWeekNumber","weekText","weekTextLong","locale","buildNativeFormattingFunc","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","postProcess","injectTzoStr","tzoStr","replaced","num","parts","simpleNumberFormat","direction","reverse","ca","getMarkerYear","getMarkerMonth","getMarkerDay","biggestUnit","partialOptions","i0","found0","before0","after0","i1","found1","before1","after1","expandZonedMarker","dateInfo","markerToArray","array","createVerboseFormattingArg","startInfo","endInfo","localeCodes","CmdFormatter","cmdStr","cmdFormatter","FuncFormatter","createFormatter","BASE_OPTION_REFINERS","navLinkDayClick","identity","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","customButtons","scrollTime","scrollTimeReset","dayPopoverFormat","headerToolbar","footerToolbar","defaultRangeSeparator","titleRangeSeparator","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","aspectRatio","weekends","weekNumberCalculation","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","viewClassNames","viewDidMount","viewWillUnmount","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","showNonCurrentDates","lazyFetching","startParam","endParam","timeZoneParam","locales","themeSystem","handleWindowResize","windowResizeDelay","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","progressiveEventRendering","initialDate","eventDataTransform","viewHeight","eventSourceFailure","eventDisplay","eventStartEditable","eventDurationEditable","eventOverlap","eventConstraint","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","eventClassNames","eventContent","eventDidMount","eventWillUnmount","selectConstraint","selectOverlap","selectAllow","slotMinWidth","navLinks","rerenderDelay","moreLinkText","moreLinkHint","eventMinWidth","firstDay","dayCount","dateAlignment","dateIncrement","hiddenDays","validRange","visibleRange","titleFormat","eventInteractive","noEventsText","viewHint","navLinkHint","closeHint","timeHint","eventHint","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","BASE_OPTION_DEFAULTS","center","CALENDAR_LISTENER_REFINERS","datesSet","eventsSet","eventAdd","eventChange","eventRemove","windowResize","eventMouseEnter","eventMouseLeave","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","CALENDAR_OPTION_REFINERS","buttonText","buttonHints","initialEvents","COMPLEX_OPTION_COMPARATORS","isMaybeObjectsEqual","VIEW_OPTION_REFINERS","buttonTextKey","mergeRawOptions","optionSets","refineProps","refiners","raw","parseEvents","rawEvents","eventSource","allowOpenRange","createEmptyEventStore","eventRefiners","buildEventRefiners","rawEvents_1","rawEvent","tuple","parseEvent","eventTupleToStore","getRelevantEvents","def_1","newStore","filterEventStoreDefs","lookDef","isEventDefsGrouped","def0","def1","groupId","mergeEventStores","store0","store1","filterFunc","excludeSubEventStore","master","sub","filteredDefs","filteredInstances","normalizeConstraint","parseClassNames","EVENT_UI_REFINERS","startEditable","constraint","overlap","allow","color","textColor","EMPTY_EVENT_UI","constraints","allows","createEventUi","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_NON_DATE_REFINERS","interactive","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","refineEventDef","computeIsDefaultAllDay","recurringRes","parseEventDef","singleRes","parseSingle","eventDefMemberAdders","memberAdder","freeze","startMeta","endMeta","startMarker","endMarker","startInput","createMarkerMeta","isTimeUnspecified","forcedTzo","computeAlignedDayRange","timedRange","computeVisibleDayRange","startDay","endDay","endTimeMS","diffDates","diffWholeYears","diffWholeMonths","parseRange","createMarker","invertRanges","constraintRange","invertedRanges","compareRanges","range0","range1","intersectRanges","newRange","rangesEqual","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","constrainMarkerToRange","sliceEventStore","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","compileEventUis","normalRange","invertedRanges_1","invertedRange","invertedRanges_2","bg","fg","hasBgRendering","setElSeg","fcSeg","getElSeg","eventDefs","compileEventUi","eventOrderSpecs","objs","buildSegCompareObj","_seg","computeSegDraggable","transformers","isDraggableTransformers","transformers_1","computeSegStartResizable","computeSegEndResizable","buildSegTimeText","defaultDisplayEventTime","startOverride","endOverride","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","getEventClassNames","isDraggable","isStartResizable","isEndResizable","buildEventRangeKey","getSegAnchorAttrs","href","hasHandlers","STANDARD_PROPS","parseDateSpan","defaultDuration","parseOpenDateSpan","isDateSpansEqual","span0","span1","isSpanPropsEqual","buildDateSpanApi","buildRangeApi","buildRangeApiWithTimeZone","fabricateEventRange","triggerDateSelect","buildDateSpanApiWithContext","triggerDateUnselect","dateSpanTransforms","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","eventConfigs","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","copy","eventDefMutationAppliers","applier","forceAllDay","clearEnd","ViewApi","viewTitle","getOption","EVENT_SOURCE_REFINERS","success","failure","parseEventSource","rawObj","buildEventSourceRefiners","metaRes","buildEventSourceMeta","_raw","isFetching","latestFetchId","fetchRange","sourceDefId","eventSourceRefiners","eventSourceDefs","parseMeta","reduceCurrentDate","currentDate","action","dateMarker","getInitialDate","initialDateInput","getNow","nowInput","createNowMarker","CalendarApi","currentDataManager","batchRendering","updateSize","setOption","optionName","rawOptionValue","currentCalendarOptionsInput","getAvailableLocaleCodes","availableRawLocales","handlerName","currentCalendarOptionsRefiners","changeView","viewType","dateOrRange","zoomTo","spec","viewSpecs","getUnitViewSpec","toolbarConfig","viewTypes","viewsWithButtons","singleUnit","prev","next","prevYear","addYears","nextYear","today","calendarOptions","gotoDate","zonedDateInput","incrementDate","deltaInput","dateOrObj","selectionInput","addEvent","eventInput","sourceInput","_def","_instance","currentData","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","eventApiToStore","getEventById","getEvents","buildEventApis","removeAllEvents","getEventSources","sourceHash","sourceApis","internalId","addEventSource","sources","removeAllEventSources","scrollToTime","timeInput","EventApi","_context","setProp","mutate","setExtendedProp","setStart","granularity","maintainDuration","setEnd","endInput","setDates","moveStart","moveEnd","moveDates","setAllDay","formatInput","context_1","eventStore_1","asStore","toPlainObject","collapseColor","collapseExtendedProps","toJSON","excludeInstance","eventApis","excludeInstanceId","calendarSystemClassMap","registerCalendarSystem","theClass","createCalendarSystem","GregorianCalendarSystem","arrayToMarker","arr","ISO_RE","DateEnv","isNamedTimeZone","namedTimeZoneImpl","canComputeOffset","weekDow","weekDoy","weekNumberFunc","timestampToMarker","getYear","addMonths","greatestWholeUnit","countDurationsBetween","diff","startOf","startOfYear","startOfMonth","dateOptions","offsetForMarker","isEndExclusive","extraOptions","omitTimeZoneOffset","timestampToArray","getTimezoneOffset","offsetForArray","globalLocales","MINIMAL_RAW_EN_LOCALE","code","list","RAW_EN_LOCALE","eventCnt","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","en","allRawLocales_1","rawLocale","buildLocale","inputSingular","available","queryLocale","parseLocale","codeArg","queryRawLocale","simpleId","merged","NumberFormat","canVGrowWithinCell","DEF_DEFAULTS","endTime","daysOfWeek","parseBusinessHours","refineInputs","rawDefs","rawDef","pointInsideRect","intersectRects","rect1","rect2","constrainPoint","getRectCenter","diffPoints","point1","point2","getCanVGrowWithinCell","computeCanVGrowWithinCell","innerHTML","div","possible","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","_splitInteraction","eventUiBuilders","keyInfos","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventResizes","info","buildEventUiForKey","keyInfo","buildEventUi","dateSpans","keys_1","splitStores","splitHashes","splitStates","affectedStores_1","mutatedKeysByDefId","mutatedStores_1","populate","allUi","eventUiForKey","baseParts","stuff","getDateMeta","isOther","getDayClassNames","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","isTabbable","zonedDate","handleInteraction","customAction","_scrollbarWidths","_isRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","computeIsRtlScrollbarOnLeft","outerEl","border","padding","overflow","innerEl","firstChild","getScrollbarWidths","computeScrollbarWidths","computeScrollbarWidthsForEl","offsetWidth","computeEdges","getPadding","computedStyle","getComputedStyle","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderTopWidth","borderBottom","borderBottomWidth","badScrollbarWidths","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","paddingLeft","paddingRight","paddingTop","paddingBottom","computeInnerRect","goWithinPadding","doFromWindowViewport","outerRect","computeRect","edges","computeClippedClientRect","clippingParents","getClippingParents","clippingParents_1","clippingParent","intersection","parents","overflowY","overflowX","unpromisify","isResolved","wrappedSuccess","wrappedFailure","then","Emitter","handlers","thisContext","setThisContext","setOptions","addToHash","removeFromHash","attachedHandlers","optionHandler","handlers_1","PositionCache","isHorizontal","isVertical","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","originClientTop","leftPosition","topPosition","getWidth","leftIndex","topIndex","ScrollController","canScrollVertically","canScrollHorizontally","ElementScrollController","WindowScrollController","scroll","Theme","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","iconOverridePrefix","classes","getIconClass","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","ScrollResponder","execFunc","queuedRequest","drain","fireInitialScroll","isDatesNew","ViewContextType","buildViewContext","viewOptions","addResizeHandler","removeResizeHandler","PureComponent","shouldComponentUpdate","nextProps","nextState","debug","log","propEquality","stateEquality","newState","addPropsEquality","contextType","BaseComponent","setRef","DateComponent","elWidth","elHeight","createPlugin","deps","reducers","isLoadingFuncs","contextInit","viewPropsTransformers","isPropsValid","viewContainerAppends","themeClasses","namedTimeZonedImpl","optionChangeHandlers","contentTypeHandlers","propSetHandlers","buildPluginHooks","pluginDefs","globalDefs","isAdded","hooks","addDefs","defs_1","combineHooks","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","hooks0","hooks1","StandardTheme","compileViewDefs","defaultConfigs","overrideConfigs","ensureViewDef","viewDef","buildViewDef","defaultConfig","overrideConfig","queryProp","theComponent","superType","superDef","defaults","rawOptions","overrides","root","tableCellShaded","buttonGroup","buttonActive","close","RenderHook","ContentHook","backupElRef","normalizeClassNames","CustomContentRenderContext","renderId","ContentHookInner","updateCustomContent","customContentInfo","getInnerContent","getContentMeta","contentKey","contentVal","buildLifecycleFuncs","normalizeContent","searchKey","MountHook","buildClassNameNormalizer","currentGenerator","currentHookProps","currentClassNames","generator","ViewRoot","parseViewConfigs","inputs","parseViewConfig","createViewHookComponent","viewProps","viewElRef","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","buildViewSpec","durationInput","durationUnit","singleUnitOverrides","createDurationCached","denom","queryButtonText","optionsSubset","buttonTextMap","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","buttonTitleOverride","buttonHint","buttonTitleDefault","durationInputMap","json","DateProfileGenerator","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","build","buildNext","nextDate","currentInfo","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","adjustActiveRange","buildDateIncrement","validRangeInput","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","visibleRangeInput","fallback","customAlignment","rangeInput","isHiddenDayHash","inc","isExclusive","reduceViewType","reduceDynamicOptionOverrides","reduceDateProfile","dp","initEventSources","addSources","parseInitialSources","reduceEventSources","removeSource","fetchDirtySources","fetchSourcesByIds","excludeStaticSources","receiveResponse","fetchId","reduceEventSourcesNewTimeZone","computeEventSourcesLoading","eventSourceHash","sources_1","isSourceDirty","doesSourceNeedRange","prevSources","sourceIdHash","nextSources","fetchSource","sourceDef","fetch","message","rawSources","rawSources_1","rawSource","ignoreRange","reduceEventStore","receiveRawEvents","excludeEventsBySourceId","subset","transformRawEvents","calEachTransform","sourceEachTransform","transformEachRawEvent","refinedEvents","refinedEvent","expandRange","rezoneEventStoreDates","oldDateEnv","newDateEnv","excludeInstances","removals","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","reduceEventDrag","currentDrag","newDrag","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","parseToolbar","sectionStrHash","sectionWidgets","hasTitle","sectionName","sectionStr","sectionRes","parseSection","widgets","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonClick","buttonIcon","hint","textFallback","prevOrNext","navUnit","eventSourceDef$2","arrayEventSourcePlugin","eventSourceDef$1","funcEventSourcePlugin","requestJson","params","successCallback","failureCallback","injectQueryStringParams","encodeParams","XMLHttpRequest","setRequestHeader","onload","status","responseText","err","onerror","send","encodeURIComponent","JSON_FEED_EVENT_SOURCE_REFINERS","eventSourceDef","requestParams","buildRequestParams","errorMessage","jsonFeedEventSourcePlugin","customRequestParams","SIMPLE_RECURRING_REFINERS","startRecur","endRecur","recurring","recurringData","clippedFramingRange","expandRanges","simpleRecurringEventsPlugin","dowHash","dayMarker","instanceStarts","instanceStart","changeHandlerPlugin","handleEventSources","unfoundSources","newInputs","inputs_1","inputFound","splice","unfoundSources_1","unfoundSource","newInputs_1","newInput","handleDateProfile","handleEventStore","globalPlugins","html","buildHtmlRenderer","domNodes","buildDomNodeRenderer","currentEl","currentHtml","currentDomNodes","newDomNodes","newDomNodes_1","newNode","DelayedRunner","drainedOption","isRunning","isDirty","pauseDepths","timeoutId","isPaused","tryDrain","pause","resume","force","depth","drained","clear","TaskRunner","runTaskOption","queue","delayedRunner","task","completedTasks","shift","runTask","buildTitle","buildTitleFormat","CalendarDataManager","computeOptionsData","_computeOptionsData","computeCurrentViewData","_computeCurrentViewData","buildDateEnv","buildTheme","buildDateProfileGenerator","buildViewApi","buildViewUiProps","buildEventUiBySource","buildEventUiBases","parseContextBusinessHours","actionRunner","_handleAction","updateData","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","optionsData","currentViewType","currentViewData","calendarContext","initialState","renderableEventStore","selectionConfig","contextAndState","reducer","computeIsLoading","resetOptions","isEventsLoading","eventUiSingleBase","eventUiBySource","wasLoading","isLoading","onAction","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","onData","processRawCalendarOptions","refinedOptions","availableLocaleData","warnUnknownOptions","currentRaw","currentRefined","anyChanges","processRawViewOptions","explicitLocale","ThemeClass","DateProfileGeneratorClass","isLoadingFunc","viewName","CalendarDataProvider","handleData","dataManager","newOptionOverrides","NamedTimeZoneImpl","SegHierarchy","stackCnts","insertEntry","findInsertion","isInsertionValid","insertEntryAt","stackCnt","barrier","partCnt","splitHiddenEntries","entrySpan","barrierSpan","intersectSpans","insertAt","buildEntryKey","newEntry","candidateCoord","trackingLevel","trackingCoord","trackingEntries","trackingEntry","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","entries_1","groupIntersectingEntries","merges","entries_2","filteredMerges","hungryMerge","merges_1","merge","joinSpans","searchVal","getItemVal","middleIndex","middleVal","Interaction","parseInteractionSettings","interactionSettingsToStore","interactionSettingsStore","ElementDragging","config","DRAG_META_REFINERS","parseDragMeta","ToolbarSection","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","widgetGroup_1","widget","titleId","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","groupClassName","Toolbar","startContent","endContent","extraClassName","forceLtr","centerContent","renderSection","ViewContainer","availableWidth","handleEl","updateAvailableWidth","handleResize","labeledById","EventClicking","handleSegClick","hasUrlContainer","defaultPrevented","location","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","triggerEvent","removeHoverListeners","publicEvName","CalendarContent","buildViewPropTransformers","buildToolbarProps","footerRef","interactionsStore","viewLabelId","settingsInput","DEFAULT_INTERACTIONS","interactionClasses","interactions","TheInteractionClass","listeners","listeners_1","listener","resizeRunner","viewAspectRatio","toolbarProps","viewVGrow","viewContext","Provider","renderView","buildAppendContent","CalendarInteractionClass","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","CalendarRoot","handleBeforePrint","handleAfterPrint","computeFallbackHeaderFormat","CLASS_NAME","renderInner$1","TableDateCell","dayMeta","WEEKDAY_FORMAT","TableDowCell","dateMeta","NowTimer","initialNowDate","initialNowQueriedMs","computeTiming","currentState","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","DayHeader","createDayHeaderFormatter","explicitFormat","dateCnt","DaySeriesModel","indices","dayIndex","cnt","firstIndex","getDateDayIndex","lastIndex","clippedFirstIndex","clippedLastIndex","dayOffset","DayTableModel","breakOnWeeks","daysPerRow","buildCells","buildHeaderDates","rows","buildCell","seriesSeg","nextIndex","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","extraArgs","eventSegs","computeActiveRange","rangeRes","sliceEventRanges","eventRanges","eventRanges_1","sliceEventRange","isComponentAllDay","isInteractionValid","isNewPropsValid","isDateSelectionValid","dateSpanMeta","filterConfig","isInteractionPropsValid","isDateSelectionPropsValid","subjectEventStore","subjectDefs","subjectInstances","subjectConfigs","otherEventStore","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","eventOverlapFunc","otherInstanceId","otherInstance","otherOverlap","calendarEventStore","subjectAllow","subjectDateSpan","origDef","origInstance","relevantEventStore","relevantDefs","relevantInstances","selectionRange","selectOverlapFunc","relevantInstanceId","relevantInstance","selectionAllow","fullDateSpan","businessHoursUnexpanded","constraints_1","anyRangesContainRange","constraintToRanges","eventStoreToRanges","outerRanges","outerRanges_1","VISIBLE_HIDDEN_RE","Scroller","liquidIsAbsolute","overcomeLeft","overcomeRight","overcomeBottom","marginLeft","marginRight","marginBottom","maxHeight","needsXScrolling","realClientWidth","getYScrollbarWidth","childEl","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","depths","callbackMap","handleValue","removed","added","refCallback","getAll","computeShrinkWidth","chunkEls","shrinkCells","largestWidth","shrinkCells_1","shrinkCell","getSectionHasLiquidHeight","sectionConfig","getAllowYScrolling","renderChunkContent","chunkConfig","isHeader","isColPropsEqual","cols0","cols1","renderMicroColGroup","shrinkWidth","colNodes","cols_1","colProps","sanitizeShrinkWidth","hasShrinkWidth","cols_2","getScrollGridClassNames","getSectionClassNames","wholeTableVGrow","renderScrollShim","getStickyHeaderDates","getStickyFooterScrollbar","SimpleScrollGrid","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeScrollerDims","sectionConfigs","microColGroupNode","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","roleAttrs","renderChunkTd","isLiquid","sectionKey","reportRowHeightChange","section","getSectionByKey","scrollbarWidth","scroller","harnessEl","sections_1","EventRoot","disableDragging","standardClassNames","StandardEvent","renderInnerContent$1","NowIndicatorRoot","DAY_NUM_FORMAT","DayCellContent","refineDayCellHookProps","extraProps","DayCellRoot","refineHookProps","renderFill","BgEvent","WeekNumberRoot","renderInner","PADDING_FROM_VIEWPORT","Popover","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","onClose","extraAttrs","parentEl","alignmentEl","alignmentRect","popoverDims","popoverTop","popoverLeft","origin_1","offsetParent","MorePopover","MoreLinkRoot","linkElRef","isPopoverOpen","computeRange","buildPublicSeg","handlePopoverClose","updateParentEl","computeEarliestSegStart","computeLatestSegEnd","pickEarliestStart","seg0","seg1","pickLatestEnd","defaultProps","__k","__b","__e","__d","__c","__h","__v","vnode","base","__r","debounceRendering","__P","__n","ownerSVGElement","z","C","A","N","M","nextSibling","insertBefore","H","setProperty","cssText","T","I","setAttribute","removeAttribute","__E","__s","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","L","diffed","localName","createTextNode","createElementNS","is","childNodes","dangerouslySetInnerHTML","__html","checked","unmount","P","B","getDerivedStateFromError","componentDidCatch","forceUpdate","__H","__N","__V","cancelAnimationFrame","isPureReactComponent","__f","for","__u","__a","D","__R","__O","pop","delete","revealOrder","size","containerInfo","Map","W","isReactComponent","Z","Y","cancelBubble","persist","isPropagationStopped","isDefaultPrevented","nativeEvent","J","K","defaultValue","$$typeof","Q","globalObj","globalThis","runBeforeFlush","oldDebounceRendering","callbackQ","execCallbackSync","FakeComponent","ContextType","origProvider","isNew","subs_1","_props","old","Calendar","isRendering","isRendered","customContentRenderId","handleAction","renderRunner","handleRenderRequest","currentData_1","setClassNames","setHeight","wasRendering","pauseRendering","resumeRendering","classNames_1","OPTION_IS_COMPLEX","resources","shallowCopy","wrapVDomGenerator","vDomGenerator","vue","createVueContentTypePlugin","buildVDomHandler","vDomContent","$destroy","initVue","$mount","initialContent","initData","internal","scopedSlotOptions","calendar","$el","buildOptions","beforeUpdate","beforeDestroy","buildWatchers","suppliedOptions","watchers","deep","_loop_1","complexOptionName","GlobalVue","installed","install","Vue","use"],"mappings":"0MAAA,W,oCCAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACF,EAAIK,GAAG,mBAAmBH,EAAG,IAAI,CAACI,MAAM,CAAC,OAAS,SAAS,KAAO,0FAA4FN,EAAIO,UAAU,CAACL,EAAG,IAAI,CAACE,YAAY,0BAA0B,GAAGF,EAAG,QAAQ,CAACM,YAAY,CAAC,aAAa,SAAS,CAACN,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,OAAO,CAACJ,EAAG,WAAW,CAACE,YAAY,gBAAgBE,MAAM,CAAC,OAASN,EAAIS,OAAO,KAAOT,EAAIU,UAAU,kBAAkB,GAAG,YAAW,GAAOC,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,aAAaC,GAAG,SAASC,GAAO,MAAO,CAAEf,EAAY,SAAEE,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,OAAO,CAACE,YAAY,oBAAoBY,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIkB,WAAWH,EAAMI,YAAY,CAACjB,EAAG,OAAO,CAACkB,SAAS,CAAC,UAAYpB,EAAIqB,GAAGN,EAAMI,QAAQG,0BAA0BtB,EAAIK,GAAG,KAAML,EAAY,SAAEE,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,WAAWN,EAAIuB,MAAM,KAAKrB,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,OAAO,CAACkB,SAAS,CAAC,UAAYpB,EAAIqB,GAAGN,EAAMI,QAAQG,oCAAoC,GAAGpB,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,MAAM,CAAEN,EAAIwB,UAAYxB,EAAIyB,gBAAgBzB,EAAI0B,gBAAiBxB,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACA,EAAG,oBAAoB,CAACE,YAAY,2BAA2BE,MAAM,CAAC,KAAO,CAAC,KAAM,SAASU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI2B,qBAAqB,IAAI,GAAG3B,EAAIuB,QAAQ,IAAI,GAAGrB,EAAG,UAAU,CAAC0B,IAAI,eAAetB,MAAM,CAAC,KAAO,KAAK,MAAQ,qBAAqB,cAAc,GAAG,YAAa,IAAO,CAACJ,EAAG,cAAc,CAACA,EAAG,SAAS,CAACc,GAAG,CAAC,OAAShB,EAAI6B,oBAAoB,CAAC3B,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,cAAcH,EAAG,WAAW,CAACI,MAAM,CAAC,SAAW,GAAG,QAAUN,EAAI8B,eAAe,MAAQ,kBAAkB,OAASC,GAAUA,EAAOC,IAAIhB,GAAG,CAAC,OAAShB,EAAIiC,oBAAoB,MAAQjC,EAAIkC,uBAAuBvB,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,UAAS,WAACqB,EAAU,OAAEC,IAAS,MAAO,CAAClC,EAAG,QAAQF,EAAIqC,GAAGrC,EAAIsC,GAAG,CAAClC,YAAY,aAAaE,MAAM,CAAC,UAAYN,EAAIuC,aAAaC,mBAAmB,QAAQL,GAAW,GAAOC,SAAcK,MAAM,CAACC,MAAO1C,EAAIuC,aAA6B,iBAAEI,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIuC,aAAc,mBAAoBK,IAAME,WAAW,oCAAoC,GAAG5C,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,WAAWH,EAAG,QAAQ,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIuC,aAA2B,eAAEO,WAAW,gCAAgC1C,YAAY,eAAeE,MAAM,CAAC,KAAO,OAAO,SAAW,GAAG,SAAW,IAAIc,SAAS,CAAC,MAASpB,EAAIuC,aAA2B,gBAAGvB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,WAAiBnD,EAAI6C,KAAK7C,EAAIuC,aAAc,iBAAkBtB,EAAOiC,OAAOR,aAAaxC,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,kBAAkBH,EAAG,WAAW,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIuC,aAAkC,sBAAEO,WAAW,uCAAuC1C,YAAY,eAAeE,MAAM,CAAC,KAAO,IAAI,SAAW,GAAG,SAAW,IAAIc,SAAS,CAAC,MAASpB,EAAIuC,aAAkC,uBAAGvB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,WAAiBnD,EAAI6C,KAAK7C,EAAIuC,aAAc,wBAAyBtB,EAAOiC,OAAOR,aAAaxC,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,sBAAsBH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIuC,aAA2B,eAAEO,WAAW,gCAAgC1C,YAAY,eAAeE,MAAM,CAAC,SAAW,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIuC,aAAc,iBAAkBtB,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAO,CAAClD,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,MAAMJ,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,wBAAwB,CAACN,EAAIK,GAAG,yBAAyBH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,4CAA4C,CAACN,EAAIK,GAAG,6CAA6CH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,wBAAwB,CAACN,EAAIK,GAAG,yBAAyBH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,iEAAiE,CAACN,EAAIK,GAAG,kEAAkEH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,6BAA6B,CAACN,EAAIK,GAAG,8BAA8BH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,+BAA+B,CAACN,EAAIK,GAAG,sCAAsCH,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,qBAAqBH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIuC,aAAmB,OAAEO,WAAW,wBAAwB1C,YAAY,eAAeE,MAAM,CAAC,SAAW,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIuC,aAAc,SAAUtB,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAO,CAAClD,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,MAAMJ,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,YAAY,CAACN,EAAIK,GAAG,aAAaH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,gBAAgB,CAACN,EAAIK,GAAG,iBAAiBH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,sBAAsB,CAACN,EAAIK,GAAG,2BAA2BH,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,sBAAsBH,EAAG,aAAa,CAACE,YAAY,eAAeE,MAAM,CAAC,SAAW,GAAG,OAASN,EAAIgE,YAAYvB,MAAM,CAACC,MAAO1C,EAAIuC,aAAyB,aAAEI,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIuC,aAAc,eAAgBK,IAAME,WAAW,gCAAgC,GAAG5C,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,iDAAiDH,EAAG,QAAQ,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIuC,aAAkC,sBAAEO,WAAW,uCAAuC1C,YAAY,eAAeE,MAAM,CAAC,KAAO,OAAO,SAAW,IAAIc,SAAS,CAAC,MAASpB,EAAIuC,aAAkC,uBAAGvB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,WAAiBnD,EAAI6C,KAAK7C,EAAIuC,aAAc,wBAAyBtB,EAAOiC,OAAOR,aAAaxC,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,iBAAiBH,EAAG,aAAa,CAACE,YAAY,eAAeE,MAAM,CAAC,SAAW,GAAG,OAASN,EAAIgE,YAAYvB,MAAM,CAACC,MAAO1C,EAAIuC,aAAsB,UAAEI,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIuC,aAAc,YAAaK,IAAME,WAAW,6BAA6B,GAAG5C,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,oBAAoBH,EAAG,aAAa,CAACE,YAAY,eAAeE,MAAM,CAAC,OAASN,EAAIgE,YAAYvB,MAAM,CAACC,MAAO1C,EAAIuC,aAAyB,aAAEI,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIuC,aAAc,eAAgBK,IAAME,WAAW,gCAAgC,GAAG5C,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,+CAA+CH,EAAG,QAAQ,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIuC,aAAkC,sBAAEO,WAAW,uCAAuC1C,YAAY,eAAeE,MAAM,CAAC,KAAO,QAAQc,SAAS,CAAC,MAASpB,EAAIuC,aAAkC,uBAAGvB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,WAAiBnD,EAAI6C,KAAK7C,EAAIuC,aAAc,wBAAyBtB,EAAOiC,OAAOR,gBAAgB,GAAGxC,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIiE,kBAAkB,CAACjE,EAAIK,GAAG,cAAcH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,WAAW,CAACN,EAAIK,GAAG,YAAaL,EAAIuC,aAAe,GAAErC,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAUU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIkE,mBAAmB,CAAClE,EAAIK,GAAG,cAAcL,EAAIuB,MAAM,MAAM,IAAI,IAAI,IAAI,IAEvvP4C,EAAkB,G,kEC+IH,G,UAAA,CACXnB,KAAM,qBACNjC,MAAO,CACH,UACA,YAEJqD,KAAM,WACF,MAAO,CACH7B,aAAc,GACd7B,UAAW,GACXD,OAAQ,CACJ,CACIuC,KAAM,iBACNqB,MAAO,qBAEX,CACIrB,KAAM,oBACNqB,MAAO,cACPC,UAAW,yBAEf,CACItB,KAAM,oBACNqB,MAAO,kBAEX,CACIrB,KAAM,YACNqB,MAAO,QACP1B,SAAU,uBAEd,CACIK,KAAM,wBACNqB,MAAO,iBAEX,CACIrB,KAAM,eACNqB,MAAO,aACP1B,SAAU,uBAEd,CACIK,KAAM,wBACNqB,MAAO,eAEX,CACIrB,KAAM,eACNqB,MAAO,WACP1B,SAAU,wBAGlBqB,WAAY,CACRO,WAAY,QACZC,YAAY,EACZC,UAAU,EACVC,UAAW,SAEf5C,eAAgB,GAGhB6C,OAAQ,OAGhBC,QAAS,CACL,UACI3E,KAAK4E,WAAWC,eAAe,MAAO,wCAAyC,CAAEC,6BAA8B9E,KAAKM,SAAWN,KAAK+E,eAAgB,QAAW,IAEnK,eAAeC,GACXhF,KAAKS,UAAYuE,EAASb,KAAKA,MAEnC,oBAAoBc,EAAQC,GACxBlF,KAAK0E,OAASQ,EACdlF,KAAK0E,QAAO,GACZ1E,KAAK4E,WAAWC,eAAe,MAAO,wDAAyD,CAAEM,OAAQF,GAAUjF,KAAKoF,2BAA4B,QAAW,IAEnK,2BAA2BJ,GACvBhF,KAAK0E,QAAO,GACZ1E,KAAK6B,eAAiBmD,EAASb,KAAKA,MAExC,WAAW1B,EAAO4C,EAAM,WAAYC,EAAc,IAC9C,OAAiB,MAAT7C,EACF6C,EACAC,OAAO9C,EAAO,cAAc+C,OAAOH,IAE7C,gBAEIrF,KAAKsC,aAAe,GACpBtC,KAAKyF,MAAM,gBAAgBC,QAE/B,WAAWC,GAEP3F,KAAKsC,aAAesD,KAAKC,MAAMD,KAAKE,UAAUH,IAC9C,IAAII,EAAK/F,KACT,IAAK,IAAIgG,EAAI,EAAGA,EAAID,EAAGlE,eAAeoE,OAAQD,IAC1C,GAAID,EAAGlE,eAAemE,GAAGjE,IAAMgE,EAAGzD,aAAaC,iBAAkB,CAC7DwD,EAAGzD,aAAa4D,UAAYH,EAAGlE,eAAemE,GAAGjE,GACjD,MAGR/B,KAAKyF,MAAM,gBAAgBC,QAE/B,eACI1F,KAAKyF,MAAM,gBAAgBU,QAE/B,kBAAkBC,GACdA,EAAEC,iBACFrG,KAAKsC,aAAawC,6BAA+B9E,KAAKM,QACtDN,KAAK4E,WAAWC,eAAe,MAAO,wCAAyC7E,KAAKsC,aAActC,KAAKsG,yBAA0B,QAAW,IAEhJ,yBAAyBtB,GACrBhF,KAAKuG,UACLvG,KAAKyF,MAAM,gBAAgBU,QAE/B,gBACInG,KAAK4E,WAAWC,eAAe,SAAU,yCAA2C7E,KAAKsC,aAAaP,GAAI,GAAI/B,KAAKwG,qBAAsB,QAAW,IAExJ,qBAAqBxB,GACjBhF,KAAKuG,UACLvG,KAAKyF,MAAM,gBAAgBU,QAE/B,wBACI,IAAIJ,EAAK/F,KACT,IAAK,IAAIgG,EAAI,EAAGA,EAAID,EAAGlE,eAAeoE,OAAQD,IAC1C,GAAID,EAAGlE,eAAemE,GAAGjE,IAAMgE,EAAGzD,aAAaC,iBAAkB,CAC7DwD,EAAGzD,aAAamE,eAAiBV,EAAGlE,eAAemE,GAAGS,eACtDV,EAAGzD,aAAajB,sBAAwB0E,EAAGlE,eAAemE,GAAG3E,sBAC7D,QAIZ,gBAAgBqF,GACZ,OAAO1G,KAAK2G,OAAOC,QAAQ,uCAAuCF,KAI1EG,WAAY,CACRC,WAAA,KACAC,UAAA,IACAC,QAAA,KAEJ,UACIhH,KAAKuG,WAETU,SAAU,KC7RqM,I,YCOnNC,EAAY,eACd,EACApH,EACAoE,GACA,EACA,KACA,KACA,MAIa,OAAAgD,E,2CClBf,W,oCCAA,wEAcIC,EAA2B,SAAUC,GAErC,SAASD,IACL,IAAIE,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMG,YAAc,kBACbH,EAwEX,OA5EA,eAAUF,EAAWC,GAMrBD,EAAU9D,UAAUoE,mBAAqB,SAAUC,EAAkBC,GACjE,IAAIC,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CC,EAAW,GACXC,EAAoB,gBAAqBF,EAAQrE,SAmBrD,OAlBIkE,GACAI,EAASE,KAAK,CACVC,KAAM,SACNrH,IAAK,SACLsH,SAAUH,EACVI,MAAO,CACHC,MAAOpI,KAAKwH,YACZa,eAAgB,gBAChBC,WAAYZ,KAIxBI,EAASE,KAAK,CACVC,KAAM,OACNrH,IAAK,OACL2H,QAAQ,EACRJ,MAAO,CAAEK,QAASb,KAEd,eAAD,CAAe,OAAU,CAAEc,SAAUZ,EAAQY,WAAY,SAAUC,EAAWC,GAAc,OAAQ,eAAD,CAAe,MAAO,CAAEhH,IAAK+G,EAAWE,UAAW,CAAC,cAAcC,OAAOF,GAAYG,KAAK,MAChM,gBAAc,OAAkB,CAAEP,QAASzH,EAAMiI,eAAiBjI,EAAMkI,SAAUC,iBAAkBnI,EAAMkI,SAAUE,KAAM,GAA+BpB,SAAUA,SAE3KX,EAAU9D,UAAU8F,oBAAsB,SAAUzB,EAAkBC,EAAayB,EAAQC,GACvF,IAAIC,EAAatJ,KAAK6H,QAAQ0B,YAAYC,eAC1C,IAAKF,EACD,MAAM,IAAIG,MAAM,gCAEpB,IAAI7B,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CE,GAAqBjH,EAAMkI,UAAY,gBAAqBnB,EAAQrE,SACpEkG,GAAyB5I,EAAMkI,UAAY,gBAAyBnB,EAAQrE,SAC5EsE,EAAW,GAkCf,OAjCIJ,GACAI,EAASE,KAAK,CACVC,KAAM,SACNrH,IAAK,SACLsH,SAAUH,EACV4B,OAAQ,CAAC,CACD/I,IAAK,OACLwH,MAAOpI,KAAKwH,YACZa,eAAgB,gBAChBC,WAAYZ,MAI5BI,EAASE,KAAK,CACVC,KAAM,OACNrH,IAAK,OACL2H,QAAQ,EACRoB,OAAQ,CAAC,CACD/I,IAAK,OACL4H,QAASb,MAGjB+B,GACA5B,EAASE,KAAK,CACVC,KAAM,SACNrH,IAAK,SACLsH,UAAU,EACVyB,OAAQ,CAAC,CACD/I,IAAK,OACL4H,QAAS,YAIjB,eAAD,CAAe,OAAU,CAAEC,SAAUZ,EAAQY,WAAY,SAAUC,EAAWC,GAAc,OAAQ,eAAD,CAAe,MAAO,CAAEhH,IAAK+G,EAAWE,UAAW,CAAC,cAAcC,OAAOF,GAAYG,KAAK,MAChM,gBAAcQ,EAAY,CAAEf,QAASzH,EAAMiI,eAAiBjI,EAAMkI,SAAUC,iBAAkBnI,EAAMkI,SAAUY,UAAW,CAAC,CAAEV,KAAM,CAAC,CAAEW,KAAMT,EAAQU,SAAUT,MAAmBvB,SAAUA,SAE3LX,EA7EmB,CA8E5B,QAEF,SAAS4C,EAAeC,EAAMC,GAE1B,IADA,IAAIC,EAAQ,GACHlE,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAC7BkE,EAAMlE,GAAK,GAEf,IAAK,IAAImE,EAAK,EAAGC,EAASJ,EAAMG,EAAKC,EAAOnE,OAAQkE,IAAM,CACtD,IAAIE,EAAMD,EAAOD,GACjBD,EAAMG,EAAIC,KAAKtC,KAAKqC,GAExB,OAAOH,EAEX,SAASK,EAAoBP,EAAMZ,GAE/B,IADA,IAAIoB,EAAQ,GACHxE,EAAI,EAAGA,EAAIoD,EAAQpD,GAAK,EAC7BwE,EAAMxE,GAAK,GAEf,IAAK,IAAImE,EAAK,EAAGM,EAAST,EAAMG,EAAKM,EAAOxE,OAAQkE,IAAM,CACtD,IAAIE,EAAMI,EAAON,GACjBK,EAAMH,EAAIK,UAAU1C,KAAKqC,GAE7B,OAAOG,EAEX,SAASG,EAAsBC,EAAIX,GAC/B,IAAIC,EAAQ,GACZ,GAAKU,EAKA,CACD,IAAS5E,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAC7BkE,EAAMlE,GAAK,CACP6E,kBAAmBD,EAAGC,kBACtBC,QAASF,EAAGE,QACZd,KAAM,IAGd,IAAK,IAAIG,EAAK,EAAGvC,EAAKgD,EAAGZ,KAAMG,EAAKvC,EAAG3B,OAAQkE,IAAM,CACjD,IAAIE,EAAMzC,EAAGuC,GACbD,EAAMG,EAAIC,KAAKN,KAAKhC,KAAKqC,SAd7B,IAAK,IAAIrE,EAAI,EAAGA,EAAIiE,EAAQjE,GAAK,EAC7BkE,EAAMlE,GAAK,KAgBnB,OAAOkE,EAGX,IAAIa,EAA8B,SAAU3D,GAExC,SAAS2D,IACL,OAAkB,OAAX3D,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAQ/D,OAVA,eAAU+K,EAAc3D,GAIxB2D,EAAa1H,UAAUvD,OAAS,WAC5B,IAAIgB,EAAQd,KAAKc,MACbkK,EAAe,gBAAkBhL,KAAK6H,QAAS/G,EAAMmK,MACzD,OAAQ,eAAD,CAAe,OAAgB,CAAEA,KAAMnK,EAAMmK,KAAMC,YAAapK,EAAMoK,YAAaC,WAAYrK,EAAMqK,WAAYC,cAAetK,EAAMsK,cAAeC,eAAgBvK,EAAMuK,eAAgBC,eAAgBC,IAAkB,SAAUC,EAAYC,GAAgB,OAASA,GAAgB3K,EAAM4K,cAAiB,eAAD,CAAe,MAAO,CAAE9C,UAAW,qBAAsBjH,IAAK6J,GACnX,gBAAc,IAAK,eAAS,CAAEG,GAAI7K,EAAM8K,YAAahD,UAAW,yBAA2BoC,GAAeS,GAAgB,gBAAc,OAAU,KAAM,WAEzJV,EAXsB,CAY/B,QACF,SAASQ,EAAezK,GACpB,OAAOA,EAAM+K,cAGjB,IAAIC,EAAkC,gBAAgB,CAClDC,KAAM,UACNC,OAAQ,UACRC,gBAAgB,EAChBC,SAAU,WAEd,SAASC,EAAmB9B,GACxB,IAAI+B,EAAU/B,EAAIgC,WAAWzB,GAAGwB,QAChC,MAAmB,cAAZA,GAAwC,SAAZA,IAC9B/B,EAAIgC,WAAWC,IAAIC,QACpBlC,EAAIK,WAAaL,EAAImC,SACrBnC,EAAIoC,SACJpC,EAAIqC,MAIZ,IAAIC,EAAiC,SAAUvF,GAE3C,SAASuF,IACL,OAAkB,OAAXvF,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAM/D,OARA,eAAU2M,EAAiBvF,GAI3BuF,EAAgBtJ,UAAUvD,OAAS,WAC/B,IAAIgB,EAAQd,KAAKc,MACjB,OAAQ,eAAD,CAAe,OAAe,eAAS,GAAIA,EAAO,CAAE8L,gBAAiB,CAAC,mBAAoB,yBAA0B,cAAeC,kBAAmBf,EAAiCgB,uBAAwBhM,EAAMgM,uBAAwBC,iBAAkBjM,EAAMuJ,IAAIgC,WAAWC,IAAIC,WAE5RI,EATyB,CAUlC,QAEEK,EAAoC,SAAU5F,GAE9C,SAAS4F,IACL,OAAkB,OAAX5F,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAS/D,OAXA,eAAUgN,EAAoB5F,GAI9B4F,EAAmB3J,UAAUvD,OAAS,WAClC,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CoF,EAAapF,EAAQrE,QAAQ0J,iBAAmBpB,EAChDqB,EAAW,gBAAiBrM,EAAMuJ,IAAK4C,EAAYpF,GAAS,EAAM/G,EAAMgM,wBAC5E,OAAQ,eAAD,CAAe,OAAW,CAAEzC,IAAKvJ,EAAMuJ,IAAK8C,SAAUA,EAAU7B,eAAgB8B,EAAoBC,WAAYvM,EAAMuM,WAAYC,YAAY,EAAOC,iBAAiB,EAAOC,WAAY1M,EAAM0M,WAAYC,OAAQ3M,EAAM2M,OAAQC,SAAU5M,EAAM4M,SAAUC,QAAS7M,EAAM6M,UAAW,SAAUjF,EAAWC,EAAY6C,EAAYC,GAAgB,OACzV,eADgW,CAClV,IAAK,eAAS,CAAE7C,UAAW,CAAC,mBAAoB,wBAAwBC,OAAOF,GAAYG,KAAK,KAAMnH,IAAK+G,GAAa,gBAAkB5H,EAAMuJ,IAAKxC,IAAW4D,OAE3KuB,EAZ4B,CAarC,QACF,SAASI,EAAmBQ,GACxB,OAAQ,eAAD,CAAe,OAAU,KAC5B,gBAAc,MAAO,CAAEhF,UAAW,uBAAwBiF,MAAO,CAAEC,YAAaF,EAAWE,aAAeF,EAAWG,mBACrHH,EAAWT,UAAa,eAAD,CAAe,MAAO,CAAEvE,UAAW,iBAAmBgF,EAAWT,UACxF,gBAAc,MAAO,CAAEvE,UAAW,kBAAoBgF,EAAWI,MAAM5J,OAAS,gBAAc,OAAU,KAAM,OAGtH,IAAI6J,EAAmC,SAAU7G,GAE7C,SAAS6G,IACL,IAAI5G,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAM6G,YAAc,gBAAQA,GACrB7G,EAiBX,OArBA,eAAU4G,EAAmB7G,GAM7B6G,EAAkB5K,UAAUvD,OAAS,WACjC,IAAIgB,EAAQd,KAAKc,MACb8G,EAAK5H,KAAKkO,YAAYpN,EAAMqN,kBAAmBC,EAAUxG,EAAGwG,QAASC,EAAgBzG,EAAGyG,cAC5F,OAAQ,eAAD,CAAe,OAAc,CAAEnD,YAAapK,EAAMoK,YAAaC,WAAYrK,EAAMqK,WAAYmD,WAAYxN,EAAMwN,WAAYC,QAASzN,EAAMyN,QAASH,QAASA,EAASI,WAAYH,EAAeI,eAAgB3N,EAAM2N,eAAgBC,aAAc5N,EAAM4N,aAAcC,cAAe7N,EAAM6N,cAAeC,eAAgB,WAC3T,IAAIC,GAAqB/N,EAAMgO,UAAYhO,EAAMgO,UAAUjE,kBAAoB,QAC1E/J,EAAMiO,YAAcjO,EAAMiO,YAAYlE,kBAAoB,OAC3D,GACJ,OAAQ,eAAD,CAAe,OAAU,KAAMuD,EAAQzK,KAAI,SAAU0G,GACxD,IAAI2E,EAAa3E,EAAIgC,WAAW4C,SAASD,WACzC,OAAQ,eAAD,CAAe,MAAO,CAAEpG,UAAW,2BAA4BhI,IAAKoO,EAAYnB,MAAO,CACtFqB,WAAYL,EAAkBG,GAAc,SAAW,KACtD7C,EAAmB9B,GAAQ,eAAD,CAAe2C,EAAoB,eAAS,CAAE3C,IAAKA,EAAKgD,YAAY,EAAOG,WAAYwB,IAAelO,EAAMqO,eAAgBrC,wBAAwB,GAAS,gBAAWzC,EAAKvJ,EAAMqK,cAAkB,eAAD,CAAewB,EAAiB,eAAS,CAAEtC,IAAKA,EAAKgD,YAAY,EAAOC,YAAY,EAAOC,iBAAiB,EAAOC,WAAYwB,IAAelO,EAAMqO,eAAgBrC,wBAAwB,GAAS,gBAAWzC,EAAKvJ,EAAMqK,sBAErc,SAAUzC,EAAWC,EAAY6C,EAAYC,EAAc2D,EAAahL,EAAOiL,EAAYC,GAAa,OAAQ,eAAD,CAAe,IAAK,eAAS,CAAE3N,IAAK+G,EAAWE,UAAW,CAAC,wBAAwBC,OAAOF,GAAYG,KAAK,KAAM1E,MAAOA,EAAO,gBAAiBiL,EAAY,gBAAiBC,GAAa,gBAAqBF,IAAe3D,OAEnVwC,EAtB2B,CAuBpC,QACF,SAASC,EAAYC,GAGjB,IAFA,IAAIC,EAAU,GACVC,EAAgB,GACXlE,EAAK,EAAGoF,EAAqBpB,EAAkBhE,EAAKoF,EAAmBtJ,OAAQkE,IAAM,CAC1F,IAAIqF,EAAYD,EAAmBpF,GACnCiE,EAAQpG,KAAKwH,EAAUnF,KAClBmF,EAAUC,WACXpB,EAAcrG,KAAKwH,EAAUnF,KAGrC,MAAO,CAAE+D,QAASA,EAASC,cAAeA,GAG9C,IAAIqB,EAA0B,gBAAgB,CAAEC,KAAM,WAClDC,EAA2B,SAAUxI,GAErC,SAASwI,IACL,IAAIvI,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAShE,OARAqH,EAAMqB,UAAY,kBAClBrB,EAAMwI,MAAQ,CACVjE,YAAa,mBAEjBvE,EAAMyI,aAAe,SAAUC,GAC3B,gBAAO1I,EAAMqB,UAAWqH,GACxB,gBAAO1I,EAAMvG,MAAMsH,MAAO2H,IAEvB1I,EAgBX,OA3BA,eAAUuI,EAAWxI,GAarBwI,EAAUvM,UAAUvD,OAAS,WACzB,IAAI8H,EAAK5H,KAAM6H,EAAUD,EAAGC,QAAS/G,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MAAOnH,EAAYd,EAAGc,UACpFuC,EAAOnK,EAAMmK,KAAMC,EAAcpK,EAAMoK,YACvCF,EAAe,gBAAkBnD,EAASoD,EAAM,QACpD,OAAQ,eAAD,CAAe,OAAa,CAAEA,KAAMA,EAAMC,YAAaA,EAAaC,WAAYrK,EAAMqK,WAAYC,cAAetK,EAAMsK,cAAeC,eAAgBvK,EAAMuK,eAAgBjD,MAAOpI,KAAK8P,eAAgB,SAAUE,EAAUC,EAAeC,EAAeC,GAAc,OAAQ,eAAD,CAAe,KAAM,eAAS,CAAExO,IAAKqO,EAAUI,KAAM,WAAYxH,UAAW,CAAC,kBAAkBC,OAAOoH,EAAenP,EAAM8L,iBAAmB,IAAI9D,KAAK,MAAQoH,EAAepP,EAAMuP,eAAiBvP,EAAMsK,cAAgB,CAAE,kBAAmByE,EAAMjE,aAAgB,IACxhB,gBAAc,MAAO,CAAEhD,UAAW,gDAAiDjH,IAAKb,EAAM0K,YAC1F1K,EAAMwP,gBAAmB,eAAD,CAAe,OAAgB,CAAErF,KAAMA,EAAMsF,cAAeb,IAA2B,SAAUc,EAAWC,EAAgBjF,EAAYC,GAAgB,OAAQ,eAAD,CAAe,IAAK,eAAS,CAAE9J,IAAK6O,EAAW5H,UAAW,CAAC,0BAA0BC,OAAO4H,GAAgB3H,KAAK,MAAQkC,GAAeS,OAC9T0E,GAAe,eAAD,CAAepF,EAAc,CAAEE,KAAMA,EAAMC,YAAaA,EAAaE,cAAetK,EAAMsK,cAAeQ,YAAaiE,EAAMjE,YAAaF,YAAa5K,EAAM4K,YAAaP,WAAYrK,EAAMqK,WAAYE,eAAgBvK,EAAMuK,iBAC5O,gBAAc,MAAO,CAAEzC,UAAW,wBAAyBjH,IAAKb,EAAM4P,gBAClE5P,EAAM6P,UACN,gBAAc,MAAO,CAAE/H,UAAW,wBAAyBiF,MAAO,CAAE+C,UAAW9P,EAAM+P,gBACjF,gBAAc5C,EAAmB,CAAEK,WAAYrD,EAAMkD,iBAAkBrN,EAAMqN,iBAAkBI,QAASzN,EAAMyN,QAASE,eAAgB/F,EAAWgG,cAAe5N,EAAMsK,cAAeuD,cAAe7N,EAAM6N,cAAezD,YAAapK,EAAMoK,YAAaiE,eAAgBrO,EAAMqO,eAAgBL,UAAWhO,EAAMgO,UAAWC,YAAajO,EAAMiO,YAAa5D,WAAYrK,EAAMqK,eACtX,gBAAc,MAAO,CAAEvC,UAAW,qBAAuB9H,EAAMgQ,iBAEpElB,EA5BmB,CA6B5B,QAEF,SAASmB,EAAsB/G,EAC/BgH,EAAcC,EAAiBC,EAAaC,EAAsBC,EAAkBC,GAChF,IAAIC,EAAY,IAAIC,EACpBD,EAAUE,gBAAiB,EAC3BF,EAAUJ,YAAcA,GACH,IAAjBF,IAA6C,IAApBC,GACzBK,EAAUG,SAAWL,EACrBE,EAAUI,gBAAiB,GAEE,kBAAjBV,EACZM,EAAUK,YAAcX,EAEQ,kBAApBC,IACZK,EAAUK,YAAcV,EACxBK,EAAUI,gBAAiB,GAK/B,IAFA,IAAIE,EAAY,GACZC,EAAoB,GACf7L,EAAI,EAAGA,EAAIgE,EAAK/D,OAAQD,GAAK,EAAG,CACrC,IAAIqE,EAAML,EAAKhE,GACXgJ,EAAa3E,EAAIgC,WAAW4C,SAASD,WACrC8C,EAAcX,EAAqBnC,GACpB,MAAf8C,EACAF,EAAU5J,KAAK,CACX+J,MAAO/L,EACPgM,UAAWF,EACXjI,KAAM,CACFoI,MAAO5H,EAAIK,SACXwH,IAAK7H,EAAImC,QAAU,KAK3BqF,EAAkB7J,KAAKqC,GAS/B,IANA,IAAI8H,EAAgBb,EAAUc,QAAQR,GAClCS,EAAWf,EAAUgB,UACrB1K,EAAK2K,EAAWF,EAAUrI,EAAMqH,GAAQmB,EAAsB5K,EAAG4K,oBAAqBC,EAAqB7K,EAAG6K,mBAAoBC,EAAkB9K,EAAG8K,gBACvJC,EAAW,GACXC,EAAiB,GAEZzI,EAAK,EAAG0I,EAAsBhB,EAAmB1H,EAAK0I,EAAoB5M,OAAQkE,IAAM,CACzFE,EAAMwI,EAAoB1I,GAC9BsI,EAAmBpI,EAAIK,UAAU1C,KAAK,CAClCqC,IAAKA,EACLoF,WAAW,EACXqD,YAAY,EACZC,YAAa,EACbnC,UAAW,IAEf,IAAK,IAAIoC,EAAM3I,EAAIK,SAAUsI,GAAO3I,EAAImC,QAASwG,GAAO,EACpDR,EAAoBQ,GAAKhL,KAAK,CAC1BqC,IAAK4I,EAAW5I,EAAK2I,EAAKA,EAAM,EAAG3B,GACnC5B,WAAW,EACXqD,YAAY,EACZC,YAAa,EACbnC,UAAW,IAKvB,IAASoC,EAAM,EAAGA,EAAM3B,EAAMpL,OAAQ+M,GAAO,EACzCL,EAAS3K,KAAK,GAElB,IAAK,IAAI3F,EAAK,EAAG6Q,EAAkBf,EAAe9P,EAAK6Q,EAAgBjN,OAAQ5D,IAAM,CACjF,IAAI8Q,EAAcD,EAAgB7Q,GAE9B+Q,GADA/I,EAAML,EAAKmJ,EAAYpB,OACVoB,EAAYtJ,MAC7B4I,EAAmBW,EAAWnB,OAAOjK,KAAK,CACtCqC,IAAK4I,EAAW5I,EAAK+I,EAAWnB,MAAOmB,EAAWlB,IAAKb,GACvD5B,WAAW,EACXqD,YAAY,EACZC,YAAa,EACbnC,UAAW,IAEf,IAASoC,EAAMI,EAAWnB,MAAOe,EAAMI,EAAWlB,IAAKc,GAAO,EAC1DL,EAASK,IAAQ,EACjBR,EAAoBQ,GAAKhL,KAAK,CAC1BqC,IAAK4I,EAAW5I,EAAK2I,EAAKA,EAAM,EAAG3B,GACnC5B,WAAW,EACXqD,YAAY,EACZC,YAAa,EACbnC,UAAW,IAKvB,IAASoC,EAAM,EAAGA,EAAM3B,EAAMpL,OAAQ+M,GAAO,EACzCJ,EAAe5K,KAAK0K,EAAgBM,IAExC,MAAO,CAAER,oBAAqBA,EAAqBC,mBAAoBA,EAAoBE,SAAUA,EAAUC,eAAgBA,GAGnI,SAASL,EAAWc,EAAUrJ,EAAMqH,GAKhC,IAJA,IAAIiC,EAAiBC,EAAoBF,EAAUhC,EAAMpL,QACrDuM,EAAsB,GACtBC,EAAqB,GACrBC,EAAkB,GACbM,EAAM,EAAGA,EAAM3B,EAAMpL,OAAQ+M,GAAO,EAAG,CAM5C,IALA,IAAIQ,EAAQF,EAAeN,GAEvB7E,EAAmB,GACnBsF,EAAgB,EAChBC,EAAmB,EACdvJ,EAAK,EAAGwJ,EAAUH,EAAOrJ,EAAKwJ,EAAQ1N,OAAQkE,IAAM,CACzD,IAAIyJ,EAAOD,EAAQxJ,GACfE,EAAML,EAAK4J,EAAK7B,OACpB5D,EAAiBnG,KAAK,CAClBqC,IAAK4I,EAAW5I,EAAK2I,EAAKA,EAAM,EAAG3B,GACnC5B,WAAW,EACXqD,YAAY,EACZC,YAAaa,EAAKC,WAClBjD,UAAWgD,EAAKC,WAAaJ,IAEjCA,EAAgBG,EAAKC,WAAaD,EAAK5B,UAG3C,IAAI8B,EAAkB,GACtBL,EAAgB,EAChBC,EAAmB,EACnB,IAAK,IAAI9L,EAAK,EAAGmM,EAAUP,EAAO5L,EAAKmM,EAAQ9N,OAAQ2B,IAAM,CACrDgM,EAAOG,EAAQnM,GACfyC,EAAML,EAAK4J,EAAK7B,OADpB,IAEIe,EAAac,EAAK/J,KAAKqI,IAAM0B,EAAK/J,KAAKoI,MAAQ,EAC/C+B,EAAaJ,EAAK/J,KAAKoI,QAAUe,EACrCU,GAAoBE,EAAKC,WAAaJ,EACtCA,EAAgBG,EAAKC,WAAaD,EAAK5B,UACnCc,GACAY,GAAoBE,EAAK5B,UACrBgC,GACAF,EAAgB9L,KAAK,CACjBqC,IAAK4I,EAAW5I,EAAKuJ,EAAK/J,KAAKoI,MAAO2B,EAAK/J,KAAKqI,IAAKb,GACrD5B,WAAW,EACXqD,YAAY,EACZC,YAAaa,EAAKC,WAClBjD,UAAW,KAIdoD,IACLF,EAAgB9L,KAAK,CACjBqC,IAAK4I,EAAW5I,EAAKuJ,EAAK/J,KAAKoI,MAAO2B,EAAK/J,KAAKqI,IAAKb,GACrD5B,WAAW,EACXqD,YAAY,EACZC,YAAaa,EAAKC,WAClBjD,UAAW8C,IAEfA,EAAmB,GAG3BlB,EAAoBxK,KAAKmG,GACzBsE,EAAmBzK,KAAK8L,GACxBpB,EAAgB1K,KAAK0L,GAEzB,MAAO,CAAElB,oBAAqBA,EAAqBC,mBAAoBA,EAAoBC,gBAAiBA,GAEhH,SAASa,EAAoBC,EAAOpK,GAEhC,IADA,IAAIkK,EAAiB,GACZN,EAAM,EAAGA,EAAM5J,EAAQ4J,GAAO,EACnCM,EAAetL,KAAK,IAExB,IAAK,IAAImC,EAAK,EAAG8J,EAAUT,EAAOrJ,EAAK8J,EAAQhO,OAAQkE,IACnD,KAAIyJ,EAAOK,EAAQ9J,GACnB,IAAS6I,EAAMY,EAAK/J,KAAKoI,MAAOe,EAAMY,EAAK/J,KAAKqI,IAAKc,GAAO,EACxDM,EAAeN,GAAKhL,KAAK4L,GAGjC,OAAON,EAEX,SAASL,EAAW5I,EAAK6J,EAAWC,EAAS9C,GACzC,GAAIhH,EAAIK,WAAawJ,GAAa7J,EAAImC,UAAY2H,EAAU,EACxD,OAAO9J,EAEX,IAAIgC,EAAahC,EAAIgC,WACjB+H,EAAY/H,EAAWgI,MACvBC,EAAc,gBAAgBF,EAAW,CACzCnC,MAAOZ,EAAM6C,GAAWjJ,KACxBiH,IAAK,eAAQb,EAAM8C,EAAU,GAAGlJ,KAAM,KAE1C,OAAO,eAAS,eAAS,GAAIZ,GAAM,CAAEK,SAAUwJ,EAAW1H,QAAS2H,EAAU,EAAG9H,WAAY,CACpFC,IAAKD,EAAWC,IAChB1B,GAAI,eAAS,eAAS,GAAIyB,EAAWzB,IAAK,CAAE2J,kBAAkB,IAC9DtF,SAAU5C,EAAW4C,SACrBoF,MAAOC,GACR7H,QAASpC,EAAIoC,SAAW6H,EAAYrC,MAAMuC,YAAcJ,EAAUnC,MAAMuC,UAAW9H,MAAOrC,EAAIqC,OAAS4H,EAAYpC,IAAIsC,YAAcJ,EAAUlC,IAAIsC,YAE9J,IAAIjD,EAAqC,SAAUnK,GAE/C,SAASmK,IACL,IAAIlK,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAKhE,OAHAqH,EAAMqK,gBAAiB,EAEvBrK,EAAMoN,YAAc,GACbpN,EAmCX,OA1CA,eAAUkK,EAAqBnK,GAS/BmK,EAAoBlO,UAAU+O,QAAU,SAAUR,GAM9C,IALA,IAAIvK,EAAQrH,KACRwO,EAAapH,EAAO/D,UAAU+O,QAAQ7O,KAAKvD,KAAM4R,GACjD8C,EAAiB1U,KAAK0U,eACtBC,EAAgB,SAAUC,GAAS,OAAQvN,EAAMoN,YAAY,eAAcG,KAEtEC,EAAQ,EAAGA,EAAQH,EAAezO,OAAQ4O,GAAS,EACxDH,EAAeG,GAASH,EAAeG,GAAOvR,OAAOqR,GAEzD,OAAOnG,GAEX+C,EAAoBlO,UAAUyR,uBAAyB,SAAUC,EAAWH,EAAOzC,GAC/E,IAAIvK,EAAK5H,KAAM0U,EAAiB9M,EAAG8M,eAAgBD,EAAc7M,EAAG6M,YAChEO,EAAgBD,EAAUC,cAAeC,EAAgBF,EAAUE,cAAeC,EAAkBH,EAAUG,gBAClH,GAAIlV,KAAK0R,gBAAkBsD,EAAe,CACtC,IAAIG,EAAkB,eAAcH,GAEpC,IAAKP,EAAYU,GACb,GAAInV,KAAKwR,eAAgB,CACrB,IAAI4D,EAAmB,eAAS,eAAS,GAAIJ,GAAgB,CAAEnL,KAAM,gBAAemL,EAAcnL,KAAM+K,EAAM/K,QAC1GwL,EAAqB,eAAcD,GACvCX,EAAYY,IAAsB,EAClCX,EAAeO,GAAeC,GAAmBE,EACjDpV,KAAKsV,WAAWN,EAAeJ,EAAOzC,QAGtCsC,EAAYU,IAAmB,EAC/BhD,EAAcnK,KAAKgN,GAI/B,OAAO5N,EAAO/D,UAAUyR,uBAAuBvR,KAAKvD,KAAM+U,EAAWH,EAAOzC,IAEzEZ,EA3C6B,CA4CtC,QAEEgE,EAA0B,SAAUnO,GAEpC,SAASmO,IACL,IAAIlO,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAWhE,OAVAqH,EAAMmO,WAAa,IAAI,OACvBnO,EAAMoO,YAAc,IAAI,OACxBpO,EAAMqO,SAAW,IAAI,OACrBrO,EAAMsO,eAAiB,IAAI,OAC3BtO,EAAMqB,UAAY,kBAClBrB,EAAMwI,MAAQ,CACV+F,eAAgB,KAChBxE,iBAAkB,KAClBD,qBAAsB,IAEnB9J,EAuKX,OApLA,eAAUkO,EAAUnO,GAepBmO,EAASlS,UAAUvD,OAAS,WACxB,IAAIuH,EAAQrH,KACR4H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MAAOhI,EAAUD,EAAGC,QAC5DrE,EAAUqE,EAAQrE,QAClB4F,EAAStI,EAAMuQ,MAAMpL,OACrB4P,EAAqBtL,EAAoBzJ,EAAMgV,iBAAkB1M,GACjE2M,EAAmBxL,EAAoBzJ,EAAMkV,YAAa5M,GAC1D6M,EAAqB1L,EAAoBvK,KAAKkW,mBAAoB9M,GAClE+M,EAAkB5L,EAAoBvK,KAAKoW,gBAAiBhN,GAC5D/G,EAAK0O,EAAsB,gBAAcjQ,EAAMuV,YAAa7S,EAAQ8S,YAAaxV,EAAMkQ,aAAclQ,EAAMmQ,gBAAiBzN,EAAQ+S,iBAAkB1G,EAAMsB,qBAAsBtB,EAAMuB,iBAAkBtQ,EAAMuQ,OAAQmB,EAAsBnQ,EAAGmQ,oBAAqBC,EAAqBpQ,EAAGoQ,mBAAoBE,EAAWtQ,EAAGsQ,SAAUC,EAAiBvQ,EAAGuQ,eAC9V/D,EACF/N,EAAMgO,WAAahO,EAAMgO,UAAUjE,mBAChC/J,EAAMiO,aAAejO,EAAMiO,YAAYlE,mBACxC,GACJ,OAAQ,eAAD,CAAe,KAAM,CAAElJ,IAAK3B,KAAK0I,UAAW0H,KAAM,OACrDtP,EAAM0V,aAAe1V,EAAM0V,cAC3B1V,EAAMuQ,MAAM1N,KAAI,SAAU8S,EAAMzD,GAC5B,IAAI0D,EAAgBrP,EAAMsP,aAAa3D,EAAKlS,EAAMkI,SAAWwJ,EAAoBQ,GAAOP,EAAmBO,GAAMlS,EAAMqK,WAAY0D,GAC/H+H,EAAgBvP,EAAMsP,aAAa3D,EAAK6D,EAAsBV,EAAgBnD,GAAMP,GAAqB3R,EAAMqK,WAAY,GAAI2L,QAAQhW,EAAMgO,WAAYgI,QAAQhW,EAAMiO,cAAc,GACzL,OAAQ,eAAD,CAAea,EAAW,CAAEhP,IAAK6V,EAAK7V,IAAKwH,MAAOf,EAAMmO,WAAWuB,UAAUN,EAAK7V,KAAM4K,WAAYnE,EAAMoO,YAAYsB,UAAUN,EAAK7V,KAA+EsK,YAAapK,EAAMoK,YAAaD,KAAMwL,EAAKxL,KAAMG,cAAetK,EAAMkW,eAAgB1G,eAAgBxP,EAAMmW,iBAA2B,IAARjE,EAAWtH,YAAa5K,EAAMmW,gBAA4E9L,WAAYrK,EAAMqK,WAAYgE,eAAgBrO,EAAMqO,eAAgBL,UAAWhO,EAAMgO,UAAWC,YAAajO,EAAMiO,YAAa1D,eAAgBoL,EAAKpL,eAAgBgF,eAAgBoG,EAAKpG,eAAgBzD,gBAAiB6J,EAAK7J,gBAAiB+B,cAAe8H,EAAK9H,cAAeJ,QAASoE,EAASK,GAAMnC,cAAe+B,EAAeI,GAAM7E,iBAAkBqE,EAAoBQ,GAAMtC,eAAgBrJ,EAAMqO,SAASqB,UAAUN,EAAK7V,KAAM+P,UACh3B,eAD23B,CAC72B,OAAU,KACpB,gBAAc,OAAU,KAAM+F,GAC9B,gBAAc,OAAU,KAAME,IAAkB9F,UACpD,eAD+D,CACjD,OAAU,KACpBzJ,EAAM6P,eAAejB,EAAmBjD,GAAM,aAC9C3L,EAAM6P,eAAerB,EAAmB7C,GAAM,gBAC9C3L,EAAM6P,eAAenB,EAAiB/C,GAAM,oBAGhEuC,EAASlS,UAAU8T,kBAAoB,WACnCnX,KAAKoX,cAAa,IAEtB7B,EAASlS,UAAUgU,mBAAqB,SAAUC,EAAWC,GACzD,IAAIC,EAAexX,KAAKc,MACxBd,KAAKoX,cAAc,gBAAaE,EAAWE,KAE/CjC,EAASlS,UAAU6S,iBAAmB,WAClC,IAAIpV,EAAQd,KAAKc,MACjB,OAAIA,EAAMgO,WAAahO,EAAMgO,UAAU9E,KAAK/D,OACjCnF,EAAMgO,UAAU9E,KAEvBlJ,EAAMiO,aAAejO,EAAMiO,YAAY/E,KAAK/D,OACrCnF,EAAMiO,YAAY/E,KAEtBlJ,EAAM2W,mBAEjBlC,EAASlS,UAAU+S,cAAgB,WAC/B,IAAItV,EAAQd,KAAKc,MACjB,OAAIA,EAAMiO,aAAejO,EAAMiO,YAAY/E,KAAK/D,OACrCnF,EAAMiO,YAAY/E,KAEtB,IAEXuL,EAASlS,UAAUsT,aAAe,SAAU3D,EAAK0E,EAAevM,EAAY0D,EAAmBxB,EAAYC,EAAYC,GACnH,IAAI1F,EAAU7H,KAAK6H,QACfsH,EAAiBnP,KAAKc,MAAMqO,eAC5ByG,EAAiB5V,KAAK6P,MAAM+F,eAC5B9I,EAAqD,IAA5B9M,KAAKc,MAAMuQ,MAAMpL,OAC1C0R,EAAWtK,GAAcC,GAAcC,EACvCqK,EAAQ,GACZ,GAAIhC,EACA,IAAK,IAAIzL,EAAK,EAAG0N,EAAkBH,EAAevN,EAAK0N,EAAgB5R,OAAQkE,IAAM,CACjF,IAAIqF,EAAYqI,EAAgB1N,GAC5BE,EAAMmF,EAAUnF,IAChB2E,EAAa3E,EAAIgC,WAAW4C,SAASD,WACrCpO,EAAMoO,EAAa,IAAMgE,EACzBvD,EAAYD,EAAUC,YAAcZ,EAAkBG,GACtD8D,EAAatD,EAAUsD,WACvBgF,EAAO,GACPC,EAAQ,GACRjF,IACIjL,EAAQmQ,OACRD,EAAQ,EACRD,EAAOlC,EAAeqC,MAAM5N,EAAImC,SAAWoJ,EAAeqC,MAAM5N,EAAIK,YAGpEoN,EAAO,EACPC,EAAQnC,EAAesC,OAAO7N,EAAIK,UAAYkL,EAAesC,OAAO7N,EAAImC,WAOhFoL,EAAM5P,KAAK,gBAAc,MAAO,CAAEY,UAAW,4BAA8BkK,EAAa,gCAAkC,IAAKlS,IAAKA,EAAKe,IAAKgW,EAAW,KAAO3X,KAAK2V,eAAeoB,UAAUnW,GAAMiN,MAAO,CACnMqB,WAAYO,EAAY,GAAK,SAC7BmB,UAAWkC,EAAa,GAAKtD,EAAUoB,UACvCuH,IAAKrF,EAAatD,EAAUuD,YAAc,GAC1C+E,KAAMA,EACNC,MAAOA,IACN5L,EAAmB9B,GAAQ,eAAD,CAAe2C,EAAoB,eAAS,CAAE3C,IAAKA,EAAKgD,WAAYA,EAAYG,WAAYwB,IAAeG,EAAgBrC,uBAAwBA,GAA0B,gBAAWzC,EAAKc,KAAkB,eAAD,CAAewB,EAAiB,eAAS,CAAEtC,IAAKA,EAAKgD,WAAYA,EAAYC,WAAYA,EAAYC,gBAAiBA,EAAiBC,WAAYwB,IAAeG,EAAgBrC,uBAAwBA,GAA0B,gBAAWzC,EAAKc,OAG7e,OAAOyM,GAEXrC,EAASlS,UAAU6T,eAAiB,SAAUlN,EAAMoO,GAChD,IAAIJ,EAAQhY,KAAK6H,QAAQmQ,MACrB7M,EAAanL,KAAKc,MAAMqK,WACxByK,EAAiB5V,KAAK6P,MAAM+F,eAC5BgC,EAAQ,GACZ,GAAIhC,EACA,IAAK,IAAIzL,EAAK,EAAGC,EAASJ,EAAMG,EAAKC,EAAOnE,OAAQkE,IAAM,CACtD,IAAIE,EAAMD,EAAOD,GACbkO,EAAeL,EAAQ,CACvBD,MAAO,EACPD,KAAMlC,EAAeqC,MAAM5N,EAAImC,SAAWoJ,EAAeqC,MAAM5N,EAAIK,WACnE,CACAoN,KAAM,EACNC,MAAOnC,EAAesC,OAAO7N,EAAIK,UAAYkL,EAAesC,OAAO7N,EAAImC,UAE3EoL,EAAM5P,KAAK,gBAAc,MAAO,CAAEpH,IAAK,eAAmByJ,EAAIgC,YAAazD,UAAW,wBAAyBiF,MAAOwK,GAA6B,aAAbD,EAClI,gBAAc,OAAS,eAAS,CAAE/N,IAAKA,GAAO,gBAAWA,EAAKc,KAC9D,gBAAWiN,KAGvB,OAAO,QAAc9Q,WAAM,EAAQ,eAAc,CAAC,OAAU,IAAKsQ,KAErErC,EAASlS,UAAU+T,aAAe,SAAUkB,GACxC,IAAI1Q,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO2U,EAAc7N,EAAG6N,YAClD,IAAK3U,EAAMkI,UACe,OAAtBlI,EAAMyX,YACR,CACE,GAAID,EAAwB,CACxB,IAAIE,EAAW1X,EAAMuQ,MAAM1N,KAAI,SAAU8S,GAAQ,OAAOhB,EAAYgD,WAAWhC,EAAK7V,QACpF,GAAI4X,EAASvS,OAAQ,CACjB,IAAIyS,EAAW1Y,KAAK0I,UAAUiQ,QAC9B3Y,KAAK4Y,SAAS,CACVhD,eAAgB,IAAI,OAAc8C,EAAUF,GAAU,GACtD,MAIZ,IAAIK,EAAqB7Y,KAAK6P,MAAMsB,qBAChC2H,EAAqB9Y,KAAK+Y,4BAC1BC,GAA8C,IAAvBlY,EAAMkQ,eAAmD,IAA1BlQ,EAAMmQ,gBAChEjR,KAAKiZ,aAAa,CAId9H,qBAAsB,eAAS,eAAS,GAAI0H,GAAqBC,GACjE1H,iBAAkB4H,EAAuBhZ,KAAKkZ,0BAA4B,SAItF3D,EAASlS,UAAU0V,0BAA4B,WAC3C,IAAII,EAAWnZ,KAAK2V,eAAe8C,WAC/BtH,EAAuB,GAE3B,IAAK,IAAIvQ,KAAOuY,EAAU,CACtB,IAAIC,EAASC,KAAKC,MAAMH,EAASvY,GAAK2Y,wBAAwBH,QAC1DpK,EAAapO,EAAI4Y,MAAM,KAAK,GAChCrI,EAAqBnC,GAAcqK,KAAKI,IAAItI,EAAqBnC,IAAe,EAAGoK,GAEvF,OAAOjI,GAEXoE,EAASlS,UAAU6V,wBAA0B,WACzC,IAAIQ,EAAW1Z,KAAKc,MAAMuQ,MAAM,GAAGzQ,IAC/B+Y,EAAS3Z,KAAKwV,WAAWiD,WAAWiB,GACpCE,EAAgB5Z,KAAK0V,SAAS+C,WAAWiB,GAC7C,OAAOC,EAAOJ,wBAAwBM,OAASD,EAAcL,wBAAwBpB,KAEzF5C,EAASlS,UAAUyW,WAAa,WAC5B,IAAIC,EAAQ/Z,KAAKwV,WAAWiD,WAC5B,OAAOzY,KAAKc,MAAMuQ,MAAM1N,KAAI,SAAU8S,GAAQ,OAAOsD,EAAMtD,EAAK7V,SAE7D2U,EArLkB,CAsL3B,QAIF,SAASsB,EAAsBmD,EAAYC,GACvC,IAAKD,EAAW/T,OACZ,MAAO,GAEX,IAAIiU,EAAmBC,EAAqBF,GAC5C,OAAOD,EAAWrW,KAAI,SAAU0G,GAAO,MAAO,CAC1CA,IAAKA,EACLoF,WAAW,EACXqD,YAAY,EACZC,YAAamH,EAAiB7P,EAAIgC,WAAW4C,SAASD,YACtD4B,UAAW,MAGnB,SAASuJ,EAAqBF,GAE1B,IADA,IAAIC,EAAmB,GACd/P,EAAK,EAAGiQ,EAAkBH,EAAe9P,EAAKiQ,EAAgBnU,OAAQkE,IAE3E,IADA,IAAIkQ,EAAaD,EAAgBjQ,GACxBvC,EAAK,EAAG0S,EAAeD,EAAYzS,EAAK0S,EAAarU,OAAQ2B,IAAM,CACxE,IAAI4H,EAAY8K,EAAa1S,GAC7BsS,EAAiB1K,EAAUnF,IAAIgC,WAAW4C,SAASD,YAAcQ,EAAUuD,YAGnF,OAAOmH,EAzBX3E,EAASgF,iBAAiB,CACtBpJ,qBAAsB,UA2B1B,IAAIqJ,EAAuB,SAAUpT,GAEjC,SAASoT,IACL,IAAInT,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAoBhE,OAnBAqH,EAAMoT,sBAAwB,gBAAQ1Q,GACtC1C,EAAMqT,iBAAmB,gBAAQ3Q,GACjC1C,EAAMsT,iBAAmB,gBAAQ5Q,GACjC1C,EAAMuT,uBAAyB,gBAAQ7Q,GACvC1C,EAAMwT,eAAiB,gBAAQlQ,GAC/BtD,EAAMyT,iBAAmB,gBAAQnQ,GACjCtD,EAAM0T,QAAU,IAAI,OACpB1T,EAAMyI,aAAe,SAAUkL,GAC3B3T,EAAM2T,OAASA,EACXA,EACA3T,EAAMQ,QAAQoT,6BAA6B5T,EAAO,CAC9C0I,GAAIiL,EACJE,kBAAmB7T,EAAMvG,MAAMoa,oBAInC7T,EAAMQ,QAAQsT,+BAA+B9T,IAG9CA,EAkFX,OAxGA,eAAUmT,EAAOpT,GAwBjBoT,EAAMnX,UAAUvD,OAAS,WACrB,IAAIuH,EAAQrH,KACRc,EAAQd,KAAKc,MACboK,EAAcpK,EAAMoK,YAAa+F,EAAkBnQ,EAAMmQ,gBAAiBD,EAAelQ,EAAMkQ,aAAcoK,EAAata,EAAMsa,WAChInR,EAASnJ,EAAMuQ,MAAMpL,OACrBoV,EAAwBrb,KAAKya,sBAAsB3Z,EAAMgV,iBAAkB7L,GAC3EqR,EAAmBtb,KAAK0a,iBAAiB5Z,EAAMkV,YAAa/L,GAC5DsR,EAAmBvb,KAAK2a,iBAAiB7Z,EAAMuV,YAAapM,GAC5DuR,EAAyBxb,KAAK4a,uBAAuB9Z,EAAM2W,kBAAmBxN,GAC9EwR,EAAiBzb,KAAK6a,eAAe/Z,EAAMgO,UAAW7E,GACtDyR,EAAmB1b,KAAK8a,iBAAiBha,EAAMiO,YAAa9E,GAC5D0R,GAAoC,IAAjB3K,IAA6C,IAApBC,EAG5C0K,IAAqBP,IACrBO,GAAmB,EACnB1K,EAAkB,KAClBD,EAAe,MAEnB,IAAIrI,EAAa,CACb,kBACAgT,EAAmB,2BAA6B,6BAChDP,EAAa,GAAK,2BAEtB,OAAQ,eAAD,CAAe,MAAO,CAAExS,UAAWD,EAAWG,KAAK,KAAMnH,IAAK3B,KAAK8P,aAAcjC,MAAO,CAGvF+N,MAAO9a,EAAMyX,YACbzO,SAAUhJ,EAAM+a,gBAEpB,gBAAc,OAAU,CAAEC,KAAM,QAAS,SAAUC,EAAS5Q,GAAc,OAAQ,eAAD,CAAe,OAAU,KACtG,gBAAc,QAAS,CAAEiF,KAAM,eAAgBxH,UAAW,2BAA4BiF,MAAO,CACrF+N,MAAO9a,EAAMyX,YACbzO,SAAUhJ,EAAM+a,cAChBzC,OAAQgC,EAAata,EAAMkb,aAAe,KAE9Clb,EAAMmb,aACN,gBAAc,QAAS,CAAE7L,KAAM,gBAAkBtP,EAAMuQ,MAAM1N,KAAI,SAAU0N,EAAO/G,GAAO,OAAQ,eAAD,CAAeiL,EAAU,CAAE5T,IAAK0F,EAAM0T,QAAQhE,UAAUzM,GAAM1J,IAAKyQ,EAAMpL,OAC/JoL,EAAM,GAAGpG,KAAKiR,cACd5R,EACJ0M,eAAgB/M,EAAS,EAAGgN,gBAAiBnW,EAAMmW,gBAAiB9L,WAAYA,EAAYD,YAAaA,EAAamG,MAAOA,EAAOmF,YAAa1V,EAAMqb,eAAgBrG,iBAAkBuF,EAAsB/Q,GAAM6E,eAAgBrO,EAAMqO,eAAgB6G,YAAasF,EAAiBhR,GAAKhH,OAAO8Y,GAAyB/F,YAAakF,EAAiBjR,GAAMmN,kBAAmB+D,EAAuBlR,GAAMwE,UAAW2M,EAAenR,GAAMyE,YAAa2M,EAAiBpR,GAAM0G,aAAcA,EAAcC,gBAAiBA,EAAiBsH,YAAazX,EAAMyX,YAAayD,aAAclb,EAAMkb,aAAchT,SAAUlI,EAAMkI,sBAI5nBwR,EAAMnX,UAAUgZ,YAAc,WAC1Brc,KAAKsc,aAAe,IAAI,OAActc,KAAKgb,OAAQhb,KAAK+a,QAAQwB,UAAU5Y,KAAI,SAAU6Y,GAAU,OAAOA,EAAO1C,aAAa,OAC7H,GAAO,GACP9Z,KAAKyc,aAAe,IAAI,OAAczc,KAAKgb,OAAQhb,KAAK+a,QAAQtC,WAAW,GAAGqB,cAC9E,GACA,IAEJU,EAAMnX,UAAUqZ,SAAW,SAAUC,EAAcC,GAC/C,IAAIhV,EAAK5H,KAAMyc,EAAe7U,EAAG6U,aAAcH,EAAe1U,EAAG0U,aAC7DtJ,EAAMyJ,EAAaI,YAAYF,GAC/BrS,EAAMgS,EAAaQ,WAAWF,GAClC,GAAW,MAAPtS,GAAsB,MAAP0I,EAAa,CAC5B,IAAIyD,EAAOzW,KAAKc,MAAMuQ,MAAM/G,GAAK0I,GACjC,MAAO,CACH9H,YAAalL,KAAKc,MAAMoK,YACxB6R,SAAU,eAAS,CAAE1I,MAAOrU,KAAKgd,aAAa1S,EAAK0I,GAAMzG,QAAQ,GAAQkK,EAAK9H,eAC9EsO,MAAOjd,KAAKkd,UAAU5S,EAAK0I,GAC3BY,KAAM,CACFkE,KAAM2E,EAAaxE,MAAMjF,GACzB+E,MAAO0E,EAAavE,OAAOlF,GAC3BmF,IAAKmE,EAAaa,KAAK7S,GACvBuP,OAAQyC,EAAac,QAAQ9S,IAEjC+S,MAAO,GAGf,OAAO,MAEX7C,EAAMnX,UAAU6Z,UAAY,SAAU5S,EAAK0I,GACvC,OAAOhT,KAAK+a,QAAQtC,WAAWnO,GAAKwP,aAAa9G,IAErDwH,EAAMnX,UAAU2Z,aAAe,SAAU1S,EAAK0I,GAC1C,IAAIf,EAAQjS,KAAKc,MAAMuQ,MAAM/G,GAAK0I,GAAK/H,KACnCiH,EAAM,eAAQD,EAAO,GACzB,MAAO,CAAEA,MAAOA,EAAOC,IAAKA,IAEzBsI,EAzGe,CA0GxB,QACF,SAAS4B,EAAY/R,GACjB,OAAOA,EAAIgC,WAAWC,IAAIC,OAG9B,IAAI+Q,EAAgC,SAAUlW,GAE1C,SAASkW,IACL,IAAIjW,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMkW,oBAAqB,EACpBlW,EAKX,OATA,eAAUiW,EAAgBlW,GAM1BkW,EAAeja,UAAUma,WAAa,SAAUC,EAAWC,GACvD,OAAOA,EAAcF,WAAWC,IAE7BH,EAVwB,CAWjC,QAEEK,EAA0B,SAAUvW,GAEpC,SAASuW,IACL,IAAItW,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAGhE,OAFAqH,EAAMuW,OAAS,IAAIN,EACnBjW,EAAMwW,SAAW,kBACVxW,EAMX,OAXA,eAAUsW,EAAUvW,GAOpBuW,EAASta,UAAUvD,OAAS,WACxB,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC9C,OAAQ,eAAD,CAAe2S,EAAO,eAAS,CAAE7Y,IAAK3B,KAAK6d,UAAY7d,KAAK4d,OAAOE,WAAWhd,EAAOA,EAAMoK,YAAapK,EAAMid,iBAAkBlW,EAAS/G,EAAM4c,eAAgB,CAAExS,YAAapK,EAAMoK,YAAamG,MAAOvQ,EAAM4c,cAAcrM,MAAO4K,aAAcnb,EAAMmb,aAAcJ,cAAe/a,EAAM+a,cAAeM,eAAgBrb,EAAMqb,eAAgBnL,aAAclQ,EAAMkQ,aAAcC,gBAAiBnQ,EAAMmQ,gBAAiBgG,gBAAiBnW,EAAMmW,gBAAiBmE,WAAYta,EAAMsa,WAAY4C,iBAAkBld,EAAMkd,iBAAkBzF,YAAazX,EAAMyX,YAAayD,aAAclb,EAAMkb,aAAchT,SAAUlI,EAAMkI,aAE/lB2U,EAZkB,CAa3B,QAEEM,EAA8B,SAAU7W,GAExC,SAAS6W,IACL,IAAI5W,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAIhE,OAHAqH,EAAM6W,mBAAqB,gBAAQA,GACnC7W,EAAM8W,UAAY,kBAClB9W,EAAMwW,SAAW,kBACVxW,EAaX,OAnBA,eAAU4W,EAAc7W,GAQxB6W,EAAa5a,UAAUvD,OAAS,WAC5B,IAAIuH,EAAQrH,KACR4H,EAAK5H,KAAK6H,QAASrE,EAAUoE,EAAGpE,QAAS4a,EAAuBxW,EAAGwW,qBACnEtd,EAAQd,KAAKc,MACb4c,EAAgB1d,KAAKke,mBAAmBpd,EAAMoK,YAAakT,GAC3DC,EAAgB7a,EAAQ8a,YAAe,eAAD,CAAe,OAAW,CAAE3c,IAAK3B,KAAKme,UAAWjT,YAAapK,EAAMoK,YAAaqT,MAAOb,EAAcc,YAAaC,qBAA+C,IAAzBf,EAAczT,SAC7LtC,EAAc,SAAU+W,GAAc,OAAQ,eAAD,CAAef,EAAU,CAAEhc,IAAK0F,EAAMwW,SAAU3S,YAAapK,EAAMoK,YAAawS,cAAeA,EAAeiB,cAAe7d,EAAM6d,cAAeC,cAAe9d,EAAM8d,cAAeC,WAAY/d,EAAM+d,WAAYC,aAAche,EAAMge,aAAc3P,eAAgBrO,EAAMqO,eAAgBL,UAAWhO,EAAMgO,UAAWC,YAAajO,EAAMiO,YAAagP,iBAAkBva,EAAQua,iBAAkB9B,aAAcyC,EAAWK,kBAAmBlD,cAAe6C,EAAW7C,cAAe7K,aAAcxN,EAAQwN,aAAcC,gBAAiBzN,EAAQyN,gBAAiBgG,gBAAiBzT,EAAQwb,YAAa5D,YAAata,EAAMiI,aAAciV,iBAAkB3W,EAAMG,YAAa+Q,YAAamG,EAAWnG,YAAayD,aAAc0C,EAAW1C,aAAchT,SAAUlI,EAAMkI,YAChyB,OAAOxF,EAAQ6F,YACTrJ,KAAKmJ,oBAAoBkV,EAAe1W,EAAa+V,EAActU,OAAQ5F,EAAQ6F,aACnFrJ,KAAKyH,mBAAmB4W,EAAe1W,IAE1CsW,EApBsB,CAqB/B9W,GACF,SAAS+W,EAAmBhT,EAAakT,GACrC,IAAIa,EAAY,IAAI,OAAe/T,EAAYgU,YAAad,GAC5D,OAAO,IAAI,OAAca,EAAW,kBAAkBE,KAAKjU,EAAYkU,mBAG3E,IAAIC,EAA2C,SAAUjY,GAErD,SAASiY,IACL,OAAkB,OAAXjY,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KA2B/D,OA7BA,eAAUqf,EAA2BjY,GAKrCiY,EAA0Bhc,UAAUic,iBAAmB,SAAUC,EAAcH,EAAkBI,GAC7F,IAIIC,EAJAC,EAAU1f,KAAKc,MAAM4e,QACrBR,EAAc9X,EAAO/D,UAAUic,iBAAiB/b,KAAKvD,KAAMuf,EAAcH,EAAkBI,GAC3FvN,EAAQiN,EAAYjN,MACpBC,EAAMgN,EAAYhN,IAYtB,GATI,iBAAiBiN,KAAKC,KACtBnN,EAAQyN,EAAQC,YAAY1N,GAE5BwN,EAAYC,EAAQC,YAAYzN,GAC5BuN,EAAUjL,YAActC,EAAIsC,YAC5BtC,EAAM,eAASuN,EAAW,KAI9Bzf,KAAKc,MAAM8e,WACX5f,KAAKc,MAAM+e,eAAgB,CAC3B,IAAI5V,EAASoP,KAAKyG,KAClB,gBAAU7N,EAAOC,IACjBA,EAAM,eAASA,EAAK,EAAIjI,GAE5B,MAAO,CAAEgI,MAAOA,EAAOC,IAAKA,IAEzBmN,EA9BmC,CA+B5C,QAEEU,EAAO,gBAAa,CACpBC,YAAa,eACbC,MAAO,CACHC,QAAS,CACLhZ,UAAW+W,EACXkC,0BAA2Bd,GAE/Be,WAAY,CACRnY,KAAM,UACNoY,SAAU,CAAEC,KAAM,IAEtBC,YAAa,CACTtY,KAAM,UACNoY,SAAU,CAAEG,MAAO,IAEvBC,aAAc,CACVxY,KAAM,UACNoY,SAAU,CAAEK,OAAQ,GACpBd,WAAW,EACXC,gBAAgB,MAKb,U,oCC96Bf,kDAWIc,EAAgC,SAAUvZ,GAE1C,SAASuZ,IACL,OAAkB,OAAXvZ,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAuB/D,OAzBA,eAAU2gB,EAAgBvZ,GAI1BuZ,EAAetd,UAAUud,WAAa,WAClC,MAAO,CACHrU,OAAQ,GACRsU,MAAO,KAGfF,EAAetd,UAAUyd,mBAAqB,SAAU/D,GACpD,OAAIA,EAASxQ,OACF,CAAC,UAEL,CAAC,UAEZoU,EAAetd,UAAU0d,mBAAqB,SAAUC,GACpD,OAAKA,EAASzU,OAGV,gBAAeyU,GACR,CAAC,QAAS,UAEd,CAAC,UALG,CAAC,UAOTL,EA1BwB,CA2BjC,QAEEM,EAA4B,gBAAgB,CAC5ClV,KAAM,UACNC,OAAQ,UACRC,gBAAgB,EAChBC,SAAU,UAEd,SAASgV,EAAiBpgB,GACtB,IAAI6H,EAAa,CACb,mBACA,yBACA7H,EAAMqgB,UAAY,uBAAyB,0BAE/C,OAAQ,eAAD,CAAe,OAAgBC,SAAU,MAAM,SAAUvZ,GAC5D,IAAK/G,EAAMqgB,UACP,OAAQ,eAAD,CAAe,KAAM,CAAEvY,UAAWD,EAAWG,KAAK,KAAM,YAAahI,EAAMugB,aAEtF,IAAI3B,EAAU7X,EAAQ6X,QAASlc,EAAUqE,EAAQrE,QAAS8d,EAAUzZ,EAAQyZ,QACxEC,EACwB,MAA3B/d,EAAQge,gBAA0BP,EAC/B7d,MAAMqe,QAAQje,EAAQge,iBAAmB,gBAAgBhe,EAAQge,gBAAgB,IAC7E,gBAAgBhe,EAAQge,iBAC5BE,EAAY,CACZ7M,MAAO,EACP8M,KAAM7gB,EAAM6gB,KACZ1W,KAAMyU,EAAQkC,OAAO9gB,EAAMmK,MAC3B4W,KAAMP,EACNQ,KAAMpC,EAAQla,OAAO1E,EAAMmK,KAAMsW,IAErC,OAAQ,eAAD,CAAe,OAAY,CAAEG,UAAWA,EAAW/Y,WAAYnF,EAAQue,oBAAqBvZ,QAAShF,EAAQwe,iBAAkB1W,eAAgB8B,EAAoB6U,SAAUze,EAAQ0e,kBAAmBC,YAAa3e,EAAQ4e,uBAAwB,SAAU1Z,EAAW2Z,EAAkB7W,EAAYC,GAAgB,OAAQ,eAAD,CAAe,KAAM,CAAE9J,IAAK+G,EAAWE,UAAWD,EAAWE,OAAOwZ,GAAkBvZ,KAAK,KAAM,YAAahI,EAAMugB,YACtb,gBAAc,MAAO,CAAEzY,UAAW,2DAC9B,gBAAc,MAAO,CAAEA,UAAW,8DAA+DjH,IAAK6J,GAAcC,WAGpI,SAAS2B,EAAmBtM,GACxB,OAAOA,EAAMghB,KAGjB,IAAIQ,EAA8B,SAAUlb,GAExC,SAASkb,IACL,OAAkB,OAAXlb,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAM/D,OARA,eAAUsiB,EAAclb,GAIxBkb,EAAajf,UAAUvD,OAAS,WAC5B,OAAOE,KAAKc,MAAMyhB,UAAU5e,KAAI,SAAU6e,GAAY,OAAQ,eAAD,CAAe,KAAM,CAAE5hB,IAAK4hB,EAAS5hB,KAC9F,gBAAcsgB,EAAkB,eAAS,GAAIsB,SAE9CF,EATsB,CAU/B,QAEE5S,EAA0B,gBAAgB,CAAEC,KAAM,UAClD8S,EAA8B,EAC9BC,EAA8B,SAAUtb,GAExC,SAASsb,IACL,IAAIrb,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KA0DhE,OAzDAqH,EAAMsb,eAAiB,IAAIhC,EAC3BtZ,EAAMG,YAAc,kBACpBH,EAAMqB,UAAY,kBAClBrB,EAAMub,cAAgB,kBACtBvb,EAAMwI,MAAQ,CACVgT,WAAY,MAEhBxb,EAAMyb,uBAAyB,SAAUC,GACrC,IAAIC,EAAa3b,EAAMub,cAAcjK,QACjCqK,IACAA,EAAWD,UAAYA,IAK/B1b,EAAM4b,eAAiB,SAAUC,EAAQC,QACjB,IAAhBA,IAA0BA,EAAc,IAC5C,IAAI3f,EAAU6D,EAAMQ,QAAQrE,QACxB0H,EAAc7D,EAAMvG,MAAMoK,YAC1BmJ,EAAQnJ,EAAYgU,YACpBkE,EAAS,gBAAS/O,EAAMpC,MAAOoC,EAAMnC,KACrClH,EAA2B,IAAXoY,EACd,gBAAkB/b,EAAMQ,QAASwM,EAAMpC,MAAO,QAC9C,GACN,OAAIzO,EAAQwb,aAA0B,QAAXkE,EACf,eAAD,CAAe,OAAgB,CAAEjY,KAAMoJ,EAAMpC,MAAO1B,cAAeb,IAA2B,SAAUhH,EAAWC,EAAY6C,EAAYC,GAAgB,OAAQ,eAAD,CAAe,KAAM,CAAE9J,IAAK+G,EAAW,eAAe,EAAME,UAAW,CACxO,mBACA,wBACFC,OAAOF,GAAYG,KAAK,MAC1B,gBAAc,MAAO,CAAEF,UAAW,kFAAmFiF,MAAO,CAAEuL,OAAQ+J,IAClI,gBAAc,IAAK,eAAS,CAAExhB,IAAK6J,EAAY5C,UAAW,kFAAoFoC,GAAeS,QAEjK,eAAD,CAAe,KAAM,CAAE,eAAe,EAAM7C,UAAW,oBAC1D,gBAAc,MAAO,CAAEA,UAAW,yBAA0BiF,MAAO,CAAEuL,OAAQ+J,OAMrF9b,EAAMgc,mBAAqB,SAAUC,GACjC,IAAI1b,EAAKP,EAAMQ,QAASrE,EAAUoE,EAAGpE,QAAS8d,EAAU1Z,EAAG0Z,QACvDI,EAAY,CACZI,KAAMte,EAAQ+f,WACd1B,KAAMP,GAEV,OAEA,eAFO,CAEO,OAAY,CAAEI,UAAWA,EAAW/Y,WAAYnF,EAAQggB,iBAAkBhb,QAAShF,EAAQigB,cAAenY,eAAgBoY,EAAmBzB,SAAUze,EAAQmgB,eAAgBxB,YAAa3e,EAAQogB,oBAAqB,SAAUlb,EAAWC,EAAY6C,EAAYC,GAAgB,OAAQ,eAAD,CAAe,KAAM,CAAE9J,IAAK+G,EAAW,eAAe,EAAME,UAAW,CAC1W,mBACA,wBACFC,OAAOF,GAAYG,KAAK,MAC1B,gBAAc,MAAO,CAAEF,UAAW,qDAAoE,MAAb0a,EAAoB,iCAAmC,IAAKzV,MAAO,CAAEuL,OAAQkK,IAClK,gBAAc,OAAQ,CAAE1a,UAAW,iFAAkFjH,IAAK6J,GAAcC,SAEpJpE,EAAMwc,iBAAmB,SAAUhB,GAC/Bxb,EAAMuR,SAAS,CAAEiK,WAAYA,KAE1Bxb,EAwKX,OApOA,eAAUqb,EAActb,GAgExBsb,EAAarf,UAAUoE,mBAAqB,SAAUC,EAAkB+b,EAAeK,GACnF,IAAIlc,EAAK5H,KAAM6H,EAAUD,EAAGC,QAAS/G,EAAQ8G,EAAG9G,MAC5CgH,EAAW,GACXC,EAAoB,gBAAqBF,EAAQrE,SAqCrD,OApCIkE,GACAI,EAASE,KAAK,CACVC,KAAM,SACNrH,IAAK,SACLsH,SAAUH,EACVI,MAAO,CACHC,MAAOpI,KAAKwH,YACZa,eAAgB,gBAChBC,WAAYZ,KAIpB+b,IACA3b,EAASE,KAAK,CACVC,KAAM,OACNrH,IAAK,UACLuH,MAAO,CAAEK,QAASib,KAEtB3b,EAASE,KAAK,CACVC,KAAM,OACNrH,IAAK,kBACLmjB,aACA,eADc,CACA,KAAM,CAAE3T,KAAM,eAAgBxH,UAAW,yBACnD,gBAAc,KAAM,CAAEA,UAAW,uBAAyBf,EAAQmc,MAAMC,SAAS,yBAG7Fnc,EAASE,KAAK,CACVC,KAAM,OACNrH,IAAK,OACL2H,QAAQ,EACR6S,WAAYtE,QAAQjP,EAAQrE,QAAQ4X,YACpCjT,MAAO,CACHya,cAAe5iB,KAAK4iB,cACpBpa,QAASsb,KAGT,eAAD,CAAe,OAAU,CAAErb,SAAUZ,EAAQY,SAAUL,MAAOpI,KAAK0I,YAAa,SAAUA,EAAWC,GAAc,OAAQ,eAAD,CAAe,MAAO,CAAEC,UAAW,CAAC,eAAeC,OAAOF,GAAYG,KAAK,KAAMnH,IAAK+G,GACnN,gBAAc,OAAkB,CAAEH,QAASzH,EAAMiI,eAAiBjI,EAAMkI,SAAUC,iBAAkBnI,EAAMkI,SAAUE,KAAM,CAAC,CAAE0S,MAAO,WAAa9T,SAAUA,SAEnK4a,EAAarf,UAAU8F,oBAAsB,SAAUzB,EAAkB+b,EAAeK,EAAa1a,EAAQC,EAAakZ,EAAWM,GACjI,IAAIxb,EAAQrH,KACRsJ,EAAatJ,KAAK6H,QAAQ0B,YAAYC,eAC1C,IAAKF,EACD,MAAM,IAAIG,MAAM,gCAEpB,IAAI7B,EAAK5H,KAAM6H,EAAUD,EAAGC,QAAS/G,EAAQ8G,EAAG9G,MAC5CiH,GAAqBjH,EAAMkI,UAAY,gBAAqBnB,EAAQrE,SACpEkG,GAAyB5I,EAAMkI,UAAY,gBAAyBnB,EAAQrE,SAC5EsE,EAAW,GACXJ,GACAI,EAASE,KAAK,CACVC,KAAM,SACNrH,IAAK,SACLsH,SAAUH,EACVmc,gBAAgB,EAChBva,OAAQ,CACJ,CACI/I,IAAK,OACL0H,WAAY,SAAU6b,GAAO,OAAQ,eAAD,CAAe,KAAM,CAAE/T,KAAM,gBAAkB/I,EAAM4b,eAAe,MAAOkB,EAAIC,eAAe,OAEtI,CACIxjB,IAAK,OACLwH,MAAOpI,KAAKwH,YACZa,eAAgB,gBAChBC,WAAYZ,MAKxB+b,IACA3b,EAASE,KAAK,CACVC,KAAM,OACNrH,IAAK,UACLsjB,gBAAgB,EAChBva,OAAQ,CACJ,CACI/I,IAAK,OACL0H,WAAY,SAAUoW,GAAc,OAAQ,eAAD,CAAe,KAAM,CAAEtO,KAAM,gBAAkB/I,EAAMgc,mBAAmB3E,EAAW0F,eAAe,OAEjJ,CACIxjB,IAAK,OACL4H,QAASib,MAIrB3b,EAASE,KAAK,CACVpH,IAAK,kBACLqH,KAAM,OACN8b,aACA,eADc,CACA,KAAM,CAAE3T,KAAM,eAAgBxH,UAAW,yBACnD,gBAAc,KAAM,CAAEyb,QAAS,EAAGzb,UAAW,uBAAyBf,EAAQmc,MAAMC,SAAS,yBAGzG,IAAIK,EAAiBzc,EAAQrE,QAAQ+gB,aAmDrC,OAlDAzc,EAASE,KAAK,CACVC,KAAM,OACNrH,IAAK,OACL2H,QAAQ,EACR6S,WAAYtE,QAAQjP,EAAQrE,QAAQ4X,YACpCzR,OAAQ,CACJ,CACI/I,IAAK,OACL4H,QAAS,SAAU2b,GAAO,OAE1B,eAFiC,CAEnB,MAAO,CAAEvb,UAAW,0BAC9B,gBAAc,QAAS,CAAE,eAAe,EAAMiF,MAAO,CAAEuL,OAAQ+K,EAAI/I,WAAa+I,EAAInI,aAAe,KAC/FmI,EAAIpF,kBACJ,gBAAc,QAAS,KACnB,gBAAcuD,EAAc,CAAEC,UAAWA,MACjD,gBAAc,MAAO,CAAE3Z,UAAW,uCAC9B,gBAAc,OAAU,CAAEkT,KAAMwI,EAAiB,SAAW,QAAqB,SAAUvI,GACvF,IAAIyI,EAAkBF,GAClBzB,GACAA,EAAW4B,eAAe1I,GAC9B,MAA+B,kBAApByI,EACC,eAAD,CAAe,OAAkB,CAAEE,QAAQ,EAAMzZ,KAAM8Q,IAAW,SAAUrT,EAAWC,EAAY6C,EAAYC,GAAgB,OAAQ,eAAD,CAAe,MAAO,CAAE9J,IAAK+G,EAAWE,UAAW,CAAC,mCAAmCC,OAAOF,GAAYG,KAAK,KAAM+E,MAAO,CAAEsK,IAAKqM,IAAqB/Y,MAElS,YAGvB,CACI7K,IAAK,OACLgiB,cAAe5iB,KAAK4iB,cACpBpa,QAASsb,MAIjBpa,GACA5B,EAASE,KAAK,CACVpH,IAAK,SACLqH,KAAM,SACNC,UAAU,EACVyB,OAAQ,CACJ,CACI/I,IAAK,OACL4H,QAAS,SAEb,CACI5H,IAAK,OACL4H,QAAS,YAKjB,eAAD,CAAe,OAAU,CAAEC,SAAUZ,EAAQY,SAAUL,MAAOpI,KAAK0I,YAAa,SAAUA,EAAWC,GAAc,OAAQ,eAAD,CAAe,MAAO,CAAEC,UAAW,CAAC,eAAeC,OAAOF,GAAYG,KAAK,KAAMnH,IAAK+G,GACnN,gBAAcY,EAAY,CAAEf,QAASzH,EAAMiI,eAAiBjI,EAAMkI,SAAUC,kBAAkB,EAAOW,UAAW,CACxG,CAAEgS,MAAO,SAAU1S,KAAM,CAAC,CAAE0S,MAAO,YACnC,CAAE1S,KAAM,CAAC,CAAEW,KAAMT,EAAQU,SAAUT,MACpCvB,SAAUA,SAIzB4a,EAAarf,UAAUshB,uBAAyB,WAC5C,IAAI/c,EAAK5H,KAAK6H,QAAQrE,QAASwN,EAAepJ,EAAGoJ,aAAcC,EAAkBrJ,EAAGqJ,gBAKpF,OAJqB,IAAjBD,IAA6C,IAApBC,IACzBD,OAAe4T,EACf3T,EAAkBwR,GAEf,CAAEzR,aAAcA,EAAcC,gBAAiBA,IAEnDyR,EArOsB,CAsO/B,QACF,SAASgB,EAAkBhC,GACvB,OAAOA,EAAUI,KAGrB,IAAI+C,EAAqC,WACrC,SAASA,EAAoBC,EAAW5Z,EAAa6Z,GACjD/kB,KAAK8kB,UAAYA,EACjB9kB,KAAKkL,YAAcA,EACnBlL,KAAK+kB,aAAeA,EA+CxB,OA7CAF,EAAoBxhB,UAAUohB,eAAiB,SAAUxZ,GACrD,IAAIC,EAAclL,KAAKkL,YACvB,GAAI,gBAAoBA,EAAYqU,aAActU,GAAO,CACrD,IAAI+Z,EAAiB,gBAAW/Z,GAC5Bga,EAASha,EAAKuJ,UAAYwQ,EAAexQ,UAC7C,GAAIyQ,GAAU,eAAU/Z,EAAYga,cAChCD,EAAS,eAAU/Z,EAAYia,aAC/B,OAAOnlB,KAAKolB,eAAe,gBAAeH,IAGlD,OAAO,MAIXJ,EAAoBxhB,UAAUgiB,eAAiB,SAAUC,EAAMN,GAI3D,OAHKA,IACDA,EAAiB,gBAAWM,IAEzBtlB,KAAKolB,eAAe,gBAAeE,EAAK9Q,UAAYwQ,EAAexQ,aAK9EqQ,EAAoBxhB,UAAU+hB,eAAiB,SAAU/E,GACrD,IAIIkF,EACAC,EALA5d,EAAK5H,KAAM8kB,EAAYld,EAAGkd,UAAW5Z,EAActD,EAAGsD,YACtDua,EAAMX,EAAUY,IAAIzf,OAEpB0f,GAAgBtF,EAASuF,aAAe,eAAU1a,EAAYga,cAAgB,eAAUllB,KAAK+kB,cAejG,OATAY,EAAetM,KAAKI,IAAI,EAAGkM,GAC3BA,EAAetM,KAAKwM,IAAIJ,EAAKE,GAG7BJ,EAAYlM,KAAKyM,MAAMH,GACvBJ,EAAYlM,KAAKwM,IAAIN,EAAWE,EAAM,GAGtCD,EAAgBG,EAAeJ,EACxBT,EAAU3H,KAAKoI,GAClBT,EAAUiB,UAAUR,GAAaC,GAElCX,EAnD6B,GAsDpCmB,EAAmC,SAAU5e,GAE7C,SAAS4e,IACL,OAAkB,OAAX5e,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAsB/D,OAxBA,eAAUgmB,EAAmB5e,GAI7B4e,EAAkB3iB,UAAUvD,OAAS,WACjC,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CrE,EAAUqE,EAAQrE,QAClByiB,EAAanlB,EAAMmlB,WACvB,OAAQ,eAAD,CAAe,QAAS,KAAMnlB,EAAMyhB,UAAU5e,KAAI,SAAU6e,EAAUxc,GACzE,IAAI0b,EAAY,CACZC,KAAMa,EAASb,KACf1W,KAAMpD,EAAQ6X,QAAQkC,OAAOY,EAASvX,MACtC4W,KAAMha,EAAQyZ,SAEd3Y,EAAa,CACb,mBACA,wBACA6Z,EAASrB,UAAY,GAAK,0BAE9B,OAAQ,eAAD,CAAe,KAAM,CAAEvgB,IAAK4hB,EAAS5hB,IAAKe,IAAKskB,EAAWlP,UAAUyL,EAAS5hB,MAChFE,EAAMolB,MAAS,eAAD,CAAehF,EAAkB,eAAS,GAAIsB,IAC5D,gBAAc,OAAY,CAAEd,UAAWA,EAAW/Y,WAAYnF,EAAQ2iB,mBAAoB3d,QAAShF,EAAQ4iB,gBAAiBnE,SAAUze,EAAQ6iB,iBAAkBlE,YAAa3e,EAAQ8iB,sBAAuB,SAAU5d,EAAW2Z,EAAkB7W,EAAYC,GAAgB,OAAQ,eAAD,CAAe,KAAM,CAAE9J,IAAK+G,EAAWE,UAAWD,EAAWE,OAAOwZ,GAAkBvZ,KAAK,KAAM,YAAa0Z,EAASnB,YAAc5V,YAGhaua,EAzB2B,CA0BpC,QAKEO,EAA+B,SAAUnf,GAEzC,SAASmf,IACL,IAAIlf,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAGhE,OAFAqH,EAAMqB,UAAY,kBAClBrB,EAAM4e,WAAa,IAAI,OAChB5e,EAmCX,OAxCA,eAAUkf,EAAenf,GAOzBmf,EAAcljB,UAAUvD,OAAS,WAC7B,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC9C,OAAQ,eAAD,CAAe,MAAO,CAAElG,IAAK3B,KAAK0I,UAAWE,UAAW,qBAC3D,gBAAc,QAAS,CAAE,eAAe,EAAMA,UAAWf,EAAQmc,MAAMC,SAAS,SAAUpW,MAAO,CACzF/D,SAAUhJ,EAAM+a,cAChBD,MAAO9a,EAAMyX,YACba,OAAQtY,EAAM0lB,YAElB1lB,EAAMie,kBACN,gBAAciH,EAAmB,CAAEC,WAAYjmB,KAAKimB,WAAYC,KAAMplB,EAAMolB,KAAM3D,UAAWzhB,EAAMyhB,eAE/GgE,EAAcljB,UAAU8T,kBAAoB,WACxCnX,KAAKoX,gBAETmP,EAAcljB,UAAUgU,mBAAqB,WACzCrX,KAAKoX,gBAETmP,EAAcljB,UAAUojB,qBAAuB,WACvCzmB,KAAKc,MAAM4lB,UACX1mB,KAAKc,MAAM4lB,SAAS,OAG5BH,EAAcljB,UAAU+T,aAAe,WACnC,IAAIxP,EAAK5H,KAAM6H,EAAUD,EAAGC,QAAS/G,EAAQ8G,EAAG9G,MAChD,GAAIA,EAAM4lB,UACgB,OAAtB5lB,EAAMyX,YACR,CACE,IAAIyC,EAAShb,KAAK0I,UAAUiQ,QACxBqC,EAAO2L,cACP7lB,EAAM4lB,SAAS,IAAI7B,EAAoB,IAAI,OAAc7kB,KAAK0I,UAAUiQ,QAASiO,EAAe5mB,KAAKimB,WAAWxN,WAAY3X,EAAMyhB,YAAY,GAAO,GAAOviB,KAAKc,MAAMoK,YAAarD,EAAQrE,QAAQuhB,iBAIzMwB,EAzCuB,CA0ChC,QACF,SAASK,EAAe7M,EAAOwI,GAC3B,OAAOA,EAAU5e,KAAI,SAAU6e,GAAY,OAAOzI,EAAMyI,EAAS5hB,QAGrE,SAASimB,EAAe7c,EAAMZ,GAC1B,IACIpD,EADA8gB,EAAY,GAEhB,IAAK9gB,EAAI,EAAGA,EAAIoD,EAAQpD,GAAK,EACzB8gB,EAAU9e,KAAK,IAEnB,GAAIgC,EACA,IAAKhE,EAAI,EAAGA,EAAIgE,EAAK/D,OAAQD,GAAK,EAC9B8gB,EAAU9c,EAAKhE,GAAGgN,KAAKhL,KAAKgC,EAAKhE,IAGzC,OAAO8gB,EAEX,SAASC,EAAsBnc,EAAIxB,GAC/B,IAAIc,EAAQ,GACZ,GAAKU,EAKA,CACD,IAAS5E,EAAI,EAAGA,EAAIoD,EAAQpD,GAAK,EAC7BkE,EAAMlE,GAAK,CACP6E,kBAAmBD,EAAGC,kBACtBC,QAASF,EAAGE,QACZd,KAAM,IAGd,IAAK,IAAIG,EAAK,EAAGvC,EAAKgD,EAAGZ,KAAMG,EAAKvC,EAAG3B,OAAQkE,IAAM,CACjD,IAAIE,EAAMzC,EAAGuC,GACbD,EAAMG,EAAI2I,KAAKhJ,KAAKhC,KAAKqC,SAd7B,IAAK,IAAIrE,EAAI,EAAGA,EAAIoD,EAAQpD,GAAK,EAC7BkE,EAAMlE,GAAK,KAgBnB,OAAOkE,EAGX,IAAI8c,EAAiC,SAAU5f,GAE3C,SAAS4f,IACL,IAAI3f,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMqB,UAAY,kBACXrB,EAWX,OAfA,eAAU2f,EAAiB5f,GAM3B4f,EAAgB3jB,UAAUvD,OAAS,WAC/B,IAAIuH,EAAQrH,KACRc,EAAQd,KAAKc,MACjB,OAAQ,eAAD,CAAe,OAAc,CAAEwN,WAAY,KAAMC,QAASzN,EAAM0N,WAAWvI,OAAQmI,QAAStN,EAAM0N,WAAYA,WAAY1N,EAAM0N,WAAYC,eAAgBzO,KAAK0I,UAAW4C,eAAgB2b,EAAqBtY,cAAe7N,EAAM6N,cAAezD,YAAapK,EAAMoK,YAAaC,WAAYrK,EAAMqK,WAAYyD,eAAgB,WAAc,OAAOsY,EAAkBpmB,EAAM0N,WAAY1N,MAAa,SAAU4H,EAAWC,EAAY6C,EAAYC,EAAc2D,EAAahL,EAAOiL,EAAYC,GAAa,OAAQ,eAAD,CAAe,IAAK,CAAE3N,IAAK,SAAUoO,GAC5hB,gBAAOrH,EAAWqH,GAClB,gBAAO1I,EAAMqB,UAAWqH,IACzBnH,UAAW,CAAC,yBAAyBC,OAAOF,GAAYG,KAAK,KAAM+E,MAAO,CAAEsK,IAAKrX,EAAMqX,IAAK0B,OAAQ/Y,EAAM+Y,QAAUsN,QAAS/X,EAAahL,MAAOA,EAAO,gBAAiBiL,EAAY,gBAAiBC,GACzM,gBAAc,MAAO,CAAE3N,IAAK6J,EAAY5C,UAAW,yCAA2C6C,QAE/Fub,EAhByB,CAiBlC,QACF,SAASC,EAAoBnmB,GACzB,OAAOA,EAAMsmB,UAIjB,SAASC,EAAiBzV,EAAWV,EAAaS,GAC9C,IAAIL,EAAY,IAAI,OACD,MAAfJ,IACAI,EAAUJ,YAAcA,GAET,MAAfS,IACAL,EAAUK,YAAcA,GAE5B,IAAIQ,EAAgBb,EAAUc,QAAQR,GAClC0V,EAAe,gBAAyBnV,GACxCoV,EAAMC,EAASlW,GACnBiW,EAAME,EAAWF,EAAK,GACtB,IAAIlV,EAAWqV,EAAWH,GAC1B,MAAO,CAAElV,SAAUA,EAAUiV,aAAcA,GAE/C,SAASE,EAASlW,GACd,IAAIoD,EAAiBpD,EAAUoD,eAC3BiT,EAAYC,GAAU,SAAU/S,EAAOgT,GAAW,OAAOhT,EAAQ,IAAMgT,KAAY,SAAUhT,EAAOgT,GACpG,IAAIC,EAAeC,EAAkBzW,EAAWuD,EAAOgT,GACnDG,EAAeC,EAAWH,EAAcH,GACxC/S,EAAQF,EAAeG,GAAOgT,GAClC,MAAO,CACH,eAAS,eAAS,GAAIjT,GAAQ,CAAEsT,eAAgBF,EAAa,KAC7DpT,EAAM5C,UAAYgW,EAAa,OAGvC,OAAOC,EAAWvT,EAAezO,OAC3B,CAAE4O,MAAO,EAAGsT,aAAc,EAAGC,WAAY1T,EAAe,GAAGzO,QAC3D,KAAM0hB,GAAW,GAE3B,SAASM,EAAWH,EAAcH,GAC9B,IAAKG,EACD,MAAO,CAAC,GAAI,GAEhB,IAAIjT,EAAQiT,EAAajT,MAAOsT,EAAeL,EAAaK,aAAcC,EAAaN,EAAaM,WAChGP,EAAUM,EACVE,EAAQ,GACZ,MAAOR,EAAUO,EACbC,EAAMrgB,KAAK2f,EAAU9S,EAAOgT,IAC5BA,GAAW,EAGf,OADAQ,EAAMC,KAAKC,GACJ,CACHF,EAAM1kB,IAAI6kB,GACVH,EAAM,GAAG,IAGjB,SAASE,EAAiBE,EAAGC,GACzB,OAAOA,EAAE,GAAKD,EAAE,GAEpB,SAASD,EAAYC,GACjB,OAAOA,EAAE,GAEb,SAASV,EAAkBzW,EAAWqX,EAAcC,GAOhD,IANA,IAAIC,EAAcvX,EAAUuX,YAAanU,EAAiBpD,EAAUoD,eAChEoU,EAAepU,EAAeiU,GAAcC,GAC5CG,EAAeF,EAAYF,GAAgBG,EAAa9W,UACxDgX,EAAWH,EAAY5iB,OACvB4O,EAAQ8T,EAEL9T,EAAQmU,GAAYH,EAAYhU,GAASkU,EAAclU,GAAS,GAEvE,KAAOA,EAAQmU,EAAUnU,GAAS,EAAG,CACjC,IAAIoU,EAAUvU,EAAeG,GACzBD,OAAQ,EACRsU,EAAc,eAAaD,EAASH,EAAajf,KAAKoI,MAAO,SAC7DkW,EAAee,EAAY,GAAKA,EAAY,GAC5Cd,EAAaD,EACjB,OACCvT,EAAQqU,EAAQb,KACbxT,EAAM/K,KAAKoI,MAAQ6W,EAAajf,KAAKqI,IACrCkW,GAAc,EAElB,GAAID,EAAeC,EACf,MAAO,CAAEvT,MAAOA,EAAOsT,aAAcA,EAAcC,WAAYA,GAGvE,OAAO,KAEX,SAASX,EAAW0B,EAAeC,GAC/B,IAAIC,EAAczB,GAAU,SAAU0B,EAAMC,EAAYC,GAAiB,OAAO,eAAcF,MAAU,SAAUA,EAAMC,EAAYC,GAChI,IAGIC,EAHAvB,EAAiBoB,EAAKpB,eAAgBlW,EAAYsX,EAAKtX,UACvD0X,EAAe1X,EAAYwX,EAC3BG,EAAoB3X,EAAY0X,EAEhCE,EAAc,GAClB,GAAK1B,EAAejiB,OAIhB,IAAK,IAAIkE,EAAK,EAAG0f,EAAmB3B,EAAgB/d,EAAK0f,EAAiB5jB,OAAQkE,IAAM,CACpF,IAAI2f,EAAYD,EAAiB1f,GACjC,QAAiBya,IAAb6E,EAAwB,CACxB,IAAIM,EAAMV,EAAYS,EAAWP,EAAYG,GAC7CD,EAAWM,EAAI,GACfH,EAAY5hB,KAAK+hB,EAAI,QAEpB,CACGA,EAAMV,EAAYS,EAAWL,EAAU,GAC3CG,EAAY5hB,KAAK+hB,EAAI,UAZ7BN,EAAWL,EAgBf,IAAIY,GAAgBP,EAAWF,GAAcI,EAC7C,MAAO,CAACF,EAAWO,EAAc,eAAS,eAAS,GAAIV,GAAO,CAAEtX,UAAWgY,EAAc9B,eAAgB0B,QAE7G,OAAOT,EAAcxlB,KAAI,SAAU2lB,GAAQ,OAAOD,EAAYC,EAAM,EAAG,GAAG,MAG9E,SAAS5B,EAAWyB,GAChB,IAAI3V,EAAQ,GACRyW,EAAcrC,GAAU,SAAU0B,EAAMzV,EAAYqW,GAAc,OAAO,eAAcZ,MAAU,SAAUA,EAAMzV,EAAYqW,GAC7H,IAAItW,EAAO,eAAS,eAAS,GAAI0V,GAAO,CAAEzV,WAAYA,EAClDqW,WAAYA,EAAYC,aAAc,IAE1C,OADA3W,EAAMxL,KAAK4L,GACHA,EAAKuW,aAAeC,EAAad,EAAKpB,eAAgBrU,EAAayV,EAAKtX,UAAWkY,EAAa,GAAK,KAEjH,SAASE,EAAaxS,EAAO/D,EAAYqW,GAErC,IADA,IAAIC,EAAe,EACVhgB,EAAK,EAAGkgB,EAAUzS,EAAOzN,EAAKkgB,EAAQpkB,OAAQkE,IAAM,CACzD,IAAImf,EAAOe,EAAQlgB,GACnBggB,EAAe9Q,KAAKI,IAAIwQ,EAAYX,EAAMzV,EAAYqW,GAAaC,GAEvE,OAAOA,EAGX,OADAC,EAAajB,EAAe,EAAG,GACxB3V,EAGX,SAASoU,EAAU0C,EAASC,GACxB,IAAIC,EAAQ,GACZ,OAAO,WAEH,IADA,IAAIC,EAAO,GACFtgB,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCsgB,EAAKtgB,GAAM5C,UAAU4C,GAEzB,IAAIvJ,EAAM0pB,EAAQhjB,WAAM,EAAQmjB,GAChC,OAAQ7pB,KAAO4pB,EACTA,EAAM5pB,GACL4pB,EAAM5pB,GAAO2pB,EAASjjB,WAAM,EAAQmjB,IAInD,SAASC,EAAkB1gB,EAAM2gB,EAAS9H,EAAY+H,QAC/B,IAAf/H,IAAyBA,EAAa,WACnB,IAAnB+H,IAA6BA,EAAiB,GAClD,IAAIC,EAAU,GACd,GAAIhI,EACA,IAAK,IAAI7c,EAAI,EAAGA,EAAIgE,EAAK/D,OAAQD,GAAK,EAAG,CACrC,IAAIqE,EAAML,EAAKhE,GACXkO,EAAY2O,EAAWwC,eAAehb,EAAI4H,MAAO0Y,GACjDxW,EAAUkF,KAAKI,IAAIvF,GAAa0W,GAAkB,GACtD/H,EAAWwC,eAAehb,EAAI6H,IAAKyY,IACnCE,EAAQ7iB,KAAK,CACTiK,MAAOoH,KAAKC,MAAMpF,GAClBhC,IAAKmH,KAAKC,MAAMnF,KAI5B,OAAO0W,EAEX,SAASC,EAAuB9gB,EAAM+gB,EACtCxU,EAAkByU,GAGd,IAFA,IAAIpZ,EAAY,GACZqZ,EAAW,GACNjlB,EAAI,EAAGA,EAAIgE,EAAK/D,OAAQD,GAAK,EAAG,CACrC,IAAI6kB,EAAUE,EAAW/kB,GACrB6kB,EACAjZ,EAAU5J,KAAK,CACX+J,MAAO/L,EACPgM,UAAW,EACXnI,KAAMghB,IAIVI,EAASjjB,KAAKgC,EAAKhE,IAK3B,IAFA,IAAI4B,EAAKyf,EAAiBzV,EAAW2E,EAAkByU,GAAgB3Y,EAAWzK,EAAGyK,SAAUiV,EAAe1f,EAAG0f,aAC7G5P,EAAgB,GACXvN,EAAK,EAAG+gB,EAAa7Y,EAAUlI,EAAK+gB,EAAWjlB,OAAQkE,IAAM,CAClE,IAAIghB,EAAUD,EAAW/gB,GACzBuN,EAAc1P,KAAK,CACfqC,IAAKL,EAAKmhB,EAAQpZ,OAClB6B,KAAMuX,IAGd,IAAK,IAAI9oB,EAAK,EAAG+oB,EAAaH,EAAU5oB,EAAK+oB,EAAWnlB,OAAQ5D,IAAM,CAClE,IAAIgpB,EAAUD,EAAW/oB,GACzBqV,EAAc1P,KAAK,CAAEqC,IAAKghB,EAASzX,KAAM,OAE7C,MAAO,CAAE8D,cAAeA,EAAe4P,aAAcA,GAGzD,IAAIgE,EAAsB,gBAAgB,CACtCvf,KAAM,UACNC,OAAQ,UACRE,UAAU,IAEVqf,EAA8B,SAAUnkB,GAExC,SAASmkB,IACL,OAAkB,OAAXnkB,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAY/D,OAdA,eAAUurB,EAAcnkB,GAIxBmkB,EAAaloB,UAAUvD,OAAS,WAC5B,IAAI6I,EAAa,CACb,oBACA,cAKJ,OAHI3I,KAAKc,MAAM0qB,SACX7iB,EAAWX,KAAK,2BAEZ,eAAD,CAAe,OAAe,eAAS,GAAIhI,KAAKc,MAAO,CAAE+L,kBAAmBye,EAAqB1e,gBAAiBjE,MAEtH4iB,EAfsB,CAgB/B,QAEEE,EAA6B,SAAUrkB,GAEvC,SAASqkB,IACL,OAAkB,OAAXrkB,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAO/D,OATA,eAAUyrB,EAAarkB,GAIvBqkB,EAAYpoB,UAAUvD,OAAS,WAC3B,IAAIgB,EAAQd,KAAKc,MACjB,OAAQ,eAAD,CAAe,OAAgB,CAAEmK,KAAMnK,EAAMmK,KAAMC,YAAapK,EAAMoK,YAAaC,WAAYrK,EAAMqK,WAAYE,eAAgBvK,EAAMuK,iBAAkB,SAAUG,EAAYC,GAAgB,OAAQA,GAC1M,gBAAc,MAAO,CAAE7C,UAAW,uBAAwBjH,IAAK6J,GAAcC,OAE9EggB,EAVqB,CAW9B,QAEEC,EAAyB,SAAUtkB,GAEnC,SAASskB,IACL,IAAIrkB,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMskB,cAAgB,gBAAQ,SACvBtkB,EAoHX,OAxHA,eAAUqkB,EAAStkB,GAOnBskB,EAAQroB,UAAUvD,OAAS,WACvB,IAAIuH,EAAQrH,KACR4H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1C+jB,EAAiB/jB,EAAQrE,QAAQqoB,aACjC7R,EAAclZ,EAAMgO,WAAahO,EAAMgO,UAAU9E,MAChDlJ,EAAMiO,aAAejO,EAAMiO,YAAY/E,MACvC4hB,GAAkB9qB,EAAM2W,mBACzB,GACAqU,EACFhrB,EAAMgO,WAAahO,EAAMgO,UAAUjE,mBAChC/J,EAAMiO,aAAejO,EAAMiO,YAAYlE,mBACxC,GACAkhB,EAAe/rB,KAAK2rB,cAAc7qB,EAAMuV,YAAaxO,EAAQrE,QAAQ8S,YACzE,OAAQ,eAAD,CAAe,OAAa,CAAElO,MAAOtH,EAAMsH,MAAO6C,KAAMnK,EAAMmK,KAAMC,YAAapK,EAAMoK,YAAaC,WAAYrK,EAAMqK,WAAYE,eAAgBvK,EAAMuK,iBAAkB,SAAU3C,EAAWC,EAAYqjB,GAAa,OAAQ,eAAD,CAAe,KAAM,eAAS,CAAErqB,IAAK+G,EAAW0H,KAAM,WAAYxH,UAAW,CAAC,mBAAmBC,OAAOF,EAAY7H,EAAM8L,iBAAmB,IAAI9D,KAAK,MAAQkjB,EAAWlrB,EAAMuP,gBACjZ,gBAAc,MAAO,CAAEzH,UAAW,yBAC9B,gBAAc,MAAO,CAAEA,UAAW,sBAC9BvB,EAAM6P,eAAepW,EAAMgV,iBAAkB,gBAC7CzO,EAAM6P,eAAepW,EAAMkV,YAAa,YACxC3O,EAAM6P,eAAepW,EAAM2W,kBAAmB,cAClD,gBAAc,MAAO,CAAE7O,UAAW,0BAA4BvB,EAAMsP,aAAaoV,EAAcD,GAA8B,GAAO,GAAO,IAC3I,gBAAc,MAAO,CAAEljB,UAAW,0BAA4BvB,EAAMsP,aAAaqD,EAAY,GAAIlD,QAAQhW,EAAMgO,WAAYgI,QAAQhW,EAAMiO,aAAc+H,QAAQ8U,KAC/J,gBAAc,MAAO,CAAEhjB,UAAW,uCAAyCvB,EAAM4kB,mBAAmBnrB,EAAMorB,mBAC1G,gBAAcT,EAAa,CAAExgB,KAAMnK,EAAMmK,KAAMC,YAAapK,EAAMoK,YAAaC,WAAYrK,EAAMqK,WAAYE,eAAgBvK,EAAMuK,uBAE/IqgB,EAAQroB,UAAUsT,aAAe,SAAUoV,EAAcI,EAAgB9e,EAAYC,EAAYC,GAC7F,IAAIzM,EAAQd,KAAKc,MACjB,OAAIA,EAAMkI,SACCke,EAAkB6E,EAAcjrB,GAEpCd,KAAKosB,uBAAuBL,EAAcI,EAAgB9e,EAAYC,EAAYC,IAE7Fme,EAAQroB,UAAU+oB,uBAAyB,SAAUpiB,EACrDmiB,EAAgB9e,EAAYC,EAAYC,GACpC,IAAIlG,EAAQrH,KACR4H,EAAK5H,KAAK6H,QAAQrE,QAASwnB,EAAgBpjB,EAAGojB,cAAeqB,EAAmBzkB,EAAGykB,iBAAkB9V,EAAmB3O,EAAG2O,iBAAkBqU,EAAiBhjB,EAAGgjB,eACjKvoB,EAAKrC,KAAKc,MAAOmK,EAAO5I,EAAG4I,KAAM4X,EAAaxgB,EAAGwgB,WAAY1T,EAAiB9M,EAAG8M,eAAgBhE,EAAa9I,EAAG8I,WAAY4Q,EAAU1Z,EAAG0Z,QAC1IpE,EAAWtK,GAAcC,GAAcC,EACvCwd,EAAaL,EAAkB1gB,EAAMiB,EAAM4X,EAAY+H,GACvD3qB,EAAK6qB,EAAuB9gB,EAAM+gB,EAAYxU,EAAkByU,GAAgBtT,EAAgBzX,EAAGyX,cAAe4P,EAAernB,EAAGqnB,aACxI,OAAQ,eAAD,CAAe,OAAU,KAC5BtnB,KAAKssB,mBAAmBhF,EAActd,GACtC0N,EAAc/T,KAAI,SAAU4oB,GACxB,IAAIliB,EAAMkiB,EAAaliB,IAAKuJ,EAAO2Y,EAAa3Y,KAC5C5E,EAAa3E,EAAIgC,WAAW4C,SAASD,WACrCS,EAAYkI,GAAYb,SAASqV,EAAend,IAAe4E,GAC/D4Y,EAASC,EAAiB7Y,GAAQA,EAAK/J,MACvC6iB,GAAW/U,GAAY/D,EAAQvM,EAAMslB,iBAAiB/Y,GAAQ,CAAEkE,KAAM,EAAGC,MAAO,GAChF6U,EAAU9V,QAAQlD,IAASA,EAAKuW,aAAe,EAC/CqB,EAAU1U,QAAQlD,IAAUA,EAAK/J,KAAKqI,IAAM0B,EAAK/J,KAAKoI,MAASoa,EACnE,OAAQ,eAAD,CAAe,MAAO,CAAEzjB,UAAW,6BACjCgkB,EAAU,mCAAqC,IAAKhsB,IAAKoO,EAAYnB,MAAO,eAAS,eAAS,CAAEqB,WAAYO,EAAY,GAAK,UAAY+c,GAASE,IACvJ,gBAAcnB,EAAc,eAAS,CAAElhB,IAAKA,EAAKgD,WAAYA,EAAYC,WAAYA,EAAYC,gBAAiBA,EAAiBC,WAAYwB,IAAeG,EAAgBqc,QAASA,GAAW,gBAAWnhB,EAAKc,EAAY4Q,WAI9O2P,EAAQroB,UAAUipB,mBAAqB,SAAUhF,EAActd,GAC3D,IAAIpC,EAAK5H,KAAKc,MAAO6N,EAAgB/G,EAAG+G,cAAezD,EAActD,EAAGsD,YAAaC,EAAavD,EAAGuD,WAAY4Q,EAAUnU,EAAGmU,QAAS5M,EAAiBvH,EAAGuH,eAAgBL,EAAYlH,EAAGkH,UAAWC,EAAcnH,EAAGmH,YACtN,OAAQ,eAAD,CAAe,OAAU,KAAMuY,EAAa3jB,KAAI,SAAUkpB,GAC7D,IAAIC,EAAcL,EAAiBI,EAAYhjB,MAC3C2E,EAAaue,EAAuBF,EAAY5D,QAASjf,GAC7D,OAAQ,eAAD,CAAegd,EAAiB,CAAEpmB,IAAK,gBAAe,gBAAwB4N,IAAcA,WAAYA,EAAY2J,IAAK2U,EAAY3U,IAAK0B,OAAQiT,EAAYjT,OAAQlL,cAAeA,EAAezD,YAAaA,EAAaC,WAAYA,EAAY4Q,QAASA,EAAS5M,eAAgBA,EAAgBL,UAAWA,EAAWC,YAAaA,SAG1V2c,EAAQroB,UAAU6T,eAAiB,SAAUlN,EAAMoO,GAC/C,IAAIxQ,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CkjB,EAAaL,EAAkB1gB,EAAMlJ,EAAMmK,KAAMnK,EAAM+hB,WAAYhb,EAAQrE,QAAQonB,gBACnFoC,EAAWjC,EAAWpnB,KAAI,SAAUknB,EAAS7kB,GAC7C,IAAIqE,EAAML,EAAKhE,GACf,OAAQ,eAAD,CAAe,MAAO,CAAEpF,IAAK,eAAmByJ,EAAIgC,YAAazD,UAAW,yBAA0BiF,MAAO4e,EAAiB5B,IAAyB,aAAbzS,EAC7I,gBAAc,OAAS,eAAS,CAAE/N,IAAKA,GAAO,gBAAWA,EAAKvJ,EAAMqK,WAAYrK,EAAMib,WACtF,gBAAW3D,OAEnB,OAAO,gBAAc,OAAU,KAAM4U,IAEzCtB,EAAQroB,UAAU4oB,mBAAqB,SAAUjiB,GAC7C,IAAIpC,EAAK5H,KAAKc,MAAO+hB,EAAajb,EAAGib,WAAY5X,EAAOrD,EAAGqD,KAC3D,OAAK4X,EAGE7Y,EAAKrG,KAAI,SAAU0G,EAAKrE,GAAK,OAAQ,eAAD,CAAe,OAAkB,CAAE0e,QAAQ,EAAOzZ,KAAMA,EAE/FrK,IAAKoF,IAAK,SAAU0C,EAAWC,EAAY6C,EAAYC,GAAgB,OAAQ,eAAD,CAAe,MAAO,CAAE9J,IAAK+G,EAAWE,UAAW,CAAC,kCAAkCC,OAAOF,GAAYG,KAAK,KAAM+E,MAAO,CAAEsK,IAAK0K,EAAWwC,eAAehb,EAAI4H,MAAOhH,KAAWQ,SAJzP,MAMfigB,EAAQroB,UAAUspB,iBAAmB,SAAUM,GAC3C,IAIInV,EACAC,EALAnQ,EAAK5H,KAAK6H,QAASmQ,EAAQpQ,EAAGoQ,MAAOxU,EAAUoE,EAAGpE,QAClD0pB,EAAgB1pB,EAAQ2pB,iBACxBC,EAAYH,EAAWpZ,WACvBwZ,EAAWJ,EAAWpZ,WAAaoZ,EAAWjb,UAG9Ckb,IAEAG,EAAWhU,KAAKwM,IAAI,EAAGuH,EAAqC,GAAxBC,EAAWD,KAE/CpV,GACAF,EAAO,EAAIuV,EACXtV,EAAQqV,IAGRtV,EAAOsV,EACPrV,EAAQ,EAAIsV,GAEhB,IAAIvsB,EAAQ,CACRwsB,OAAQL,EAAW/C,WAAa,EAChCpS,KAAa,IAAPA,EAAa,IACnBC,MAAe,IAARA,EAAc,KAMzB,OAJImV,IAAkBD,EAAW9C,eAE7BrpB,EAAMkX,EAAQ,aAAe,eAAiB,IAE3ClX,GAEJ4qB,EAzHiB,CA0H1B,QACF,SAASxE,EAAkB6E,EAAcnkB,GACrC,IAAIuD,EAAavD,EAAGuD,WAAY4Q,EAAUnU,EAAGmU,QAAS5M,EAAiBvH,EAAGuH,eAAgBL,EAAYlH,EAAGkH,UAAWC,EAAcnH,EAAGmH,YACjIwe,GAAmBze,EAAYA,EAAUjE,kBAAoB,QAC5DkE,EAAcA,EAAYlE,kBAAoB,OAC/C,GACJ,OAAQ,eAAD,CAAe,OAAU,KAAMkhB,EAAapoB,KAAI,SAAU0G,GAC7D,IAAI2E,EAAa3E,EAAIgC,WAAW4C,SAASD,WACzC,OAAQ,eAAD,CAAe,MAAO,CAAEpO,IAAKoO,EAAYnB,MAAO,CAAEqB,WAAYqe,EAAgBve,GAAc,SAAW,KAC1G,gBAAcuc,EAAc,eAAS,CAAElhB,IAAKA,EAAKgD,YAAY,EAAOC,YAAY,EAAOC,iBAAiB,EAAOC,WAAYwB,IAAeG,EAAgBqc,SAAS,GAAS,gBAAWnhB,EAAKc,EAAY4Q,UAGpN,SAAS0Q,EAAiB1B,GACtB,OAAKA,EAGE,CACH5S,IAAK4S,EAAW9Y,MAChB4H,QAASkR,EAAW7Y,KAJb,CAAEiG,IAAK,GAAI0B,OAAQ,IAOlC,SAASkT,EAAuBS,EAAYpf,GACxC,OAAOof,EAAW7pB,KAAI,SAAU8pB,GAAY,OAAOrf,EAAQqf,EAAS1b,UAGxE,IAAI2b,EAAiC,SAAUtmB,GAE3C,SAASsmB,IACL,IAAIrmB,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAUhE,OATAqH,EAAMsT,iBAAmB,gBAAQkM,GACjCxf,EAAMqT,iBAAmB,gBAAQmM,GACjCxf,EAAMoT,sBAAwB,gBAAQoM,GACtCxf,EAAMsmB,sBAAwB,gBAAQ9G,GACtCxf,EAAMuT,uBAAyB,gBAAQiM,GACvCxf,EAAMwT,eAAiB,gBAAQkM,GAC/B1f,EAAMyT,iBAAmB,gBAAQiM,GACjC1f,EAAMqB,UAAY,kBAClBrB,EAAMmO,WAAa,IAAI,OAChBnO,EA4CX,OAxDA,eAAUqmB,EAAiBtmB,GAc3BsmB,EAAgBrqB,UAAUvD,OAAS,WAC/B,IAAIuH,EAAQrH,KACR4H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1C2c,EAAkB3c,EAAQrE,QAAQ+gB,cAClCzjB,EAAM+hB,YACN/hB,EAAM+hB,WAAW4B,eAAe3jB,EAAMib,SACtC3S,EAAStI,EAAMuQ,MAAMpL,OACrBsV,EAAmBvb,KAAK2a,iBAAiB7Z,EAAMuV,YAAajN,GAC5DkS,EAAmBtb,KAAK0a,iBAAiB5Z,EAAMkV,YAAa5M,GAC5DiS,EAAwBrb,KAAKya,sBAAsB3Z,EAAMgV,iBAAkB1M,GAC3EwkB,EAAwB5tB,KAAK2tB,sBAAsB7sB,EAAMorB,iBAAkB9iB,GAC3EoS,EAAyBxb,KAAK4a,uBAAuB9Z,EAAM2W,kBAAmBrO,GAC9EqS,EAAiBzb,KAAK6a,eAAe/Z,EAAMgO,UAAW1F,GACtDsS,EAAmB1b,KAAK8a,iBAAiBha,EAAMiO,YAAa3F,GAChE,OAAQ,eAAD,CAAe,MAAO,CAAER,UAAW,mBAAoBjH,IAAK3B,KAAK0I,WACpE,gBAAc,QAAS,CAAE0H,KAAM,eAAgBvC,MAAO,CAC9C/D,SAAUhJ,EAAM+a,cAChBD,MAAO9a,EAAMyX,cAEjBzX,EAAMie,kBACN,gBAAc,QAAS,CAAE3O,KAAM,gBAC3B,gBAAc,KAAM,CAAEA,KAAM,OACxBtP,EAAMolB,MAAS,eAAD,CAAe,KAAM,CAAE,eAAe,EAAMtd,UAAW,oCACjE,gBAAc,MAAO,CAAEA,UAAW,yBAC9B,gBAAc,MAAO,CAAEA,UAAW,uCAAoE,kBAApB4b,GAAiC,eAAD,CAAe,OAAkB,CAAEE,QAAQ,EAAMzZ,KAAMnK,EAAMib,UAAW,SAAUrT,EAAWC,EAAY6C,EAAYC,GAAgB,OAAQ,eAAD,CAAe,MAAO,CAAE9J,IAAK+G,EAAWE,UAAW,CAAC,mCAAmCC,OAAOF,GAAYG,KAAK,KAAM+E,MAAO,CAAEsK,IAAKqM,IAAqB/Y,SAC9Z3K,EAAMuQ,MAAM1N,KAAI,SAAU8S,EAAMzQ,GAAK,OAAQ,eAAD,CAAe0lB,EAAS,CAAE9qB,IAAK6V,EAAK7V,IAAKwH,MAAOf,EAAMmO,WAAWuB,UAAUN,EAAK7V,KAAMsK,YAAapK,EAAMoK,YAAaD,KAAMwL,EAAKxL,KAAM8Q,QAASjb,EAAMib,QAAS5Q,WAAYrK,EAAMqK,WAAYE,eAAgBoL,EAAKpL,eAAgBgF,eAAgBoG,EAAKpG,eAAgBzD,gBAAiB6J,EAAK7J,gBAAiB+B,cAAe8H,EAAK9H,cAAe0H,YAAakF,EAAiBvV,GAAIgQ,YAAasF,EAAiBtV,GAAI8P,iBAAkBuF,EAAsBrV,GAAIkmB,iBAAkB0B,EAAsB5nB,GAAIyR,kBAAmB+D,EAAuBxV,GAAI8I,UAAW2M,EAAezV,GAAI+I,YAAa2M,EAAiB1V,GAAI6c,WAAY/hB,EAAM+hB,WAAY1T,eAAgBrO,EAAMqO,eAAgBnG,SAAUlI,EAAMkI,mBAE/uB0kB,EAAgBrqB,UAAU8T,kBAAoB,WAC1CnX,KAAK6tB,gBAETH,EAAgBrqB,UAAUgU,mBAAqB,WAC3CrX,KAAK6tB,gBAETH,EAAgBrqB,UAAUwqB,aAAe,WACrC,IAAI/sB,EAAQd,KAAKc,MACbA,EAAMgtB,aACgB,OAAtBhtB,EAAMyX,aAENzX,EAAMgtB,YAAY,IAAI,OAAc9tB,KAAK0I,UAAUiQ,QAASoV,EAAe/tB,KAAKwV,WAAWiD,WAAY3X,EAAMuQ,QAAQ,GACrH,KAGDqc,EAzDyB,CA0DlC,QACF,SAASK,EAAehU,EAAO1I,GAC3B,OAAOA,EAAM1N,KAAI,SAAU8S,GAAQ,OAAOsD,EAAMtD,EAAK7V,QAKzD,IAAIotB,EAA0B,SAAU5mB,GAEpC,SAAS4mB,IACL,IAAI3mB,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAyChE,OAxCAqH,EAAM4mB,mBAAqB,gBAAQA,GACnC5mB,EAAMwI,MAAQ,CACVgT,WAAY,MAEhBxb,EAAMyI,aAAe,SAAUC,GACvBA,EACA1I,EAAMQ,QAAQoT,6BAA6B5T,EAAO,CAC9C0I,GAAIA,EACJmL,kBAAmB7T,EAAMvG,MAAMoa,oBAInC7T,EAAMQ,QAAQsT,+BAA+B9T,IAGrDA,EAAM6mB,oBAAsB,SAAUC,GAClC,IAAIC,EAAqB/mB,EAAMvG,MAAMstB,mBACjCvL,EAAaxb,EAAMwI,MAAMgT,WAC7B,GAAIuL,GAAsBvL,EAAY,CAClC,GAAIsL,EAAQxM,KAAM,CACd,IAAI0M,EAAQxL,EAAWuC,eAAe+I,EAAQxM,MAC9C0M,EAAQhV,KAAKyG,KAAKuO,GACdA,IACAA,GAAS,GAEbD,EAAmBC,GAEvB,OAAO,EAEX,OAAO,GAEXhnB,EAAMinB,gBAAkB,SAAUC,GAC9BlnB,EAAMknB,UAAYA,GAEtBlnB,EAAMwc,iBAAmB,SAAUhB,GAC/Bxb,EAAMuR,SAAS,CAAEiK,WAAYA,IACzBxb,EAAMvG,MAAM0tB,cACZnnB,EAAMvG,MAAM0tB,aAAa3L,IAG1Bxb,EAwDX,OAnGA,eAAU2mB,EAAU5mB,GA6CpB4mB,EAAS3qB,UAAUvD,OAAS,WACxB,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MAC5C,OAAQ,eAAD,CAAe,MAAO,CAAEjH,UAAW,mBAAoBjH,IAAK3B,KAAK8P,aAAcjC,MAAO,CAGrF+N,MAAO9a,EAAMyX,YACbzO,SAAUhJ,EAAM+a,gBAEpB,gBAAc0K,EAAe,CAAEL,KAAMplB,EAAMolB,KAAMhb,YAAapK,EAAMoK,YAAaqX,UAAWzhB,EAAMyhB,UAAWhK,YAAazX,EAAMyX,YAAaiO,UAAW1lB,EAAMsa,WAAata,EAAMkb,aAAe,GAAIH,cAAe/a,EAAM+a,cAAekD,kBAAmBje,EAAMolB,KAAOplB,EAAMie,kBAAoB,KAAqD2H,SAAU1mB,KAAK6jB,mBACtW,gBAAc6J,EAAiB,CAAErc,MAAOvQ,EAAMuQ,MAAO6U,KAAMplB,EAAMolB,KAAMhb,YAAapK,EAAMoK,YAAa4K,iBAAkBhV,EAAMgV,iBAAkBE,YAAalV,EAAMkV,YAAaK,YAAavV,EAAMuV,YAAaoB,kBAAmB3W,EAAM2W,kBAAmBtI,eAAgBrO,EAAMqO,eAAgBL,UAAWhO,EAAMgO,UAAWC,YAAajO,EAAMiO,YAAa5D,WAAYrK,EAAMqK,WAAY4Q,QAASjb,EAAMib,QAASmQ,iBAAkBprB,EAAMorB,iBAAkB3T,YAAazX,EAAMyX,YAAasD,cAAe/a,EAAM+a,cAAekD,kBAAmBje,EAAMie,kBAAmB8D,WAAYhT,EAAMgT,WAAYiL,YAAa9tB,KAAKsuB,gBAAiBtlB,SAAUlI,EAAMkI,aAExoBglB,EAAS3qB,UAAU8T,kBAAoB,WACnCnX,KAAKyuB,gBAAkBzuB,KAAK6H,QAAQ6mB,sBAAsB1uB,KAAKkuB,sBAEnEF,EAAS3qB,UAAUgU,mBAAqB,SAAUC,GAC9CtX,KAAKyuB,gBAAgBE,OAAOrX,EAAUpM,cAAgBlL,KAAKc,MAAMoK,cAErE8iB,EAAS3qB,UAAUojB,qBAAuB,WACtCzmB,KAAKyuB,gBAAgBG,UAEzBZ,EAAS3qB,UAAUqZ,SAAW,SAAUC,EAAcC,GAClD,IAAIhV,EAAK5H,KAAK6H,QAAS6X,EAAU9X,EAAG8X,QAASlc,EAAUoE,EAAGpE,QACtD+qB,EAAYvuB,KAAKuuB,UACjBrjB,EAAclL,KAAKc,MAAMoK,YACzB2X,EAAa7iB,KAAK6P,MAAMgT,WACxBxgB,EAAKrC,KAAKiuB,mBAAmBjuB,KAAKc,MAAMikB,aAAcvhB,EAAQqrB,cAAeA,EAAexsB,EAAGwsB,aAAcC,EAAezsB,EAAGysB,aAC/HC,EAAWR,EAAU1R,YAAYF,GACjC4I,EAAY1C,EAAWiC,UAAUhI,WAAWF,GAChD,GAAgB,MAAZmS,GAAiC,MAAbxJ,EAAmB,CACvC,IAAI9O,EAAOzW,KAAKc,MAAMuQ,MAAM0d,GACxBC,EAAUnM,EAAWiC,UAAU3H,KAAKoI,GACpC0J,EAAapM,EAAWiC,UAAUiB,UAAUR,GAC5C2J,GAAWtS,EAAcoS,GAAWC,EACpCE,EAAiB9V,KAAKyM,MAAMoJ,EAAUJ,GACtCM,EAAY7J,EAAYuJ,EAAeK,EACvCE,EAAUrvB,KAAKc,MAAMuQ,MAAM0d,GAAU9jB,KACrC0W,EAAO,eAAazW,EAAYga,YAAa,gBAAiB2J,EAAcO,IAC5End,EAAQyN,EAAQ4P,IAAID,EAAS1N,GAC7BzP,EAAMwN,EAAQ4P,IAAIrd,EAAO4c,GAC7B,MAAO,CACH3jB,YAAaA,EACb6R,SAAU,eAAS,CAAE1I,MAAO,CAAEpC,MAAOA,EAAOC,IAAKA,GAAO3F,QAAQ,GAASkK,EAAK9H,eAC9EsO,MAAOsR,EAAU7I,IAAIqJ,GACrBnb,KAAM,CACFkE,KAAMyW,EAAUtW,MAAM8W,GACtBhX,MAAOwW,EAAUrW,OAAO6W,GACxB5W,IAAK6W,EACLnV,OAAQmV,EAAUC,GAEtB5R,MAAO,GAGf,OAAO,MAEJ2Q,EApGkB,CAqG3B,QACF,SAASC,EAAmBlJ,EAAcwK,GACtC,IAAIV,EAAeU,GAAwBxK,EACvC+J,EAAe,gBAAqB/J,EAAc8J,GAMtD,OALqB,OAAjBC,IACAD,EAAe9J,EACf+J,EAAe,GAGZ,CAAED,aAAcA,EAAcC,aAAcA,GAGvD,IAAIU,EAAmC,SAAUpoB,GAE7C,SAASooB,IACL,OAAkB,OAAXpoB,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAkB/D,OApBA,eAAUwvB,EAAmBpoB,GAI7BooB,EAAkBnsB,UAAUma,WAAa,SAAUnJ,EAAOob,GAEtD,IADA,IAAIzlB,EAAO,GACFgJ,EAAM,EAAGA,EAAMyc,EAAUxpB,OAAQ+M,GAAO,EAAG,CAChD,IAAI0c,EAAW,gBAAgBrb,EAAOob,EAAUzc,IAC5C0c,GACA1lB,EAAKhC,KAAK,CACNiK,MAAOyd,EAASzd,MAChBC,IAAKwd,EAASxd,IACdzF,QAASijB,EAASzd,MAAMuC,YAAcH,EAAMpC,MAAMuC,UAClD9H,MAAOgjB,EAASxd,IAAIsC,YAAcH,EAAMnC,IAAIsC,UAC5CxB,IAAKA,IAIjB,OAAOhJ,GAEJwlB,EArB2B,CAsBpC,QAEEG,EAA6B,SAAUvoB,GAEvC,SAASuoB,IACL,IAAItoB,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAIhE,OAHAqH,EAAMuoB,eAAiB,gBAAQA,GAC/BvoB,EAAMuW,OAAS,IAAI4R,EACnBnoB,EAAMwoB,YAAc,kBACbxoB,EAYX,OAlBA,eAAUsoB,EAAavoB,GAQvBuoB,EAAYtsB,UAAUvD,OAAS,WAC3B,IAAIuH,EAAQrH,KACR4H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CqD,EAAcpK,EAAMoK,YAAawS,EAAgB5c,EAAM4c,cACvD4G,EAAiBzc,EAAQrE,QAAQ+gB,aACjCkL,EAAYzvB,KAAK4vB,eAAelS,EAAexS,EAAarD,EAAQ6X,SAGxE,OAAQ,eAAD,CAAe,OAAU,CAAE5D,KAAMwI,EAAiB,SAAW,QAAS,SAAUvI,EAAS5Q,GAAc,OAAQ,eAAD,CAAe6iB,EAAU,eAAS,CAAErsB,IAAK0F,EAAMwoB,aAAexoB,EAAMuW,OAAOE,WAAWhd,EAAOoK,EAAa,KAAMrD,EAAS4nB,GAAY,CAAEzmB,SAAUlI,EAAMkI,SAAUkd,KAAMplB,EAAMolB,KAAMhb,YAAaA,EAAaqX,UAAWzhB,EAAMyhB,UAAWwC,aAAcjkB,EAAMikB,aAAc1T,MAAOqM,EAAcrM,MAAM,GAAI0N,kBAAmBje,EAAMie,kBAAmBlD,cAAe/a,EAAM+a,cAAetD,YAAazX,EAAMyX,YAAayD,aAAclb,EAAMkb,aAAcZ,WAAYta,EAAMsa,WAAYW,QAASA,EAASmQ,iBAAkB5H,GAAkBjd,EAAMuW,OAAOkS,aAAa/T,EAASlU,EAAS4nB,GAAYtkB,WAAYA,EAAYijB,mBAAoBttB,EAAMstB,mBAAoBI,aAAc1tB,EAAM0tB,oBAEpxBmB,EAnBqB,CAoB9B,QACF,SAASC,EAAelS,EAAexS,EAAawU,GAEhD,IADA,IAAIqQ,EAAS,GACJ5lB,EAAK,EAAGvC,EAAK8V,EAAcc,YAAarU,EAAKvC,EAAG3B,OAAQkE,IAAM,CACnE,IAAIc,EAAOrD,EAAGuC,GACd4lB,EAAO/nB,KAAK,CACRiK,MAAOyN,EAAQ4P,IAAIrkB,EAAMC,EAAYga,aACrChT,IAAKwN,EAAQ4P,IAAIrkB,EAAMC,EAAYia,eAG3C,OAAO4K,EAKX,IAAIC,EAAsB,CACtB,CAAEC,MAAO,GACT,CAAEC,QAAS,IACX,CAAEA,QAAS,IACX,CAAEC,QAAS,IACX,CAAEA,QAAS,KAEf,SAASC,EAAelL,EAAaC,EAAakL,EAAuBtL,EAAcrF,GACnF,IAAI4Q,EAAW,IAAIC,KAAK,GACpBC,EAAWtL,EACXuL,EAAe,gBAAe,GAC9BC,EAAgBL,GAAyBM,EAAqB5L,GAC9D6L,EAAQ,GACZ,MAAO,eAAUJ,GAAY,eAAUrL,GAAc,CACjD,IAAIla,EAAOyU,EAAQ4P,IAAIgB,EAAUE,GAC7BrP,EAAkE,OAAtD,gBAAqBsP,EAAcC,GACnDE,EAAM5oB,KAAK,CACPiD,KAAMA,EACN0W,KAAM6O,EACN5vB,IAAKqK,EAAKiR,cACVmF,WAAY,gBAAoBpW,GAChCkW,UAAWA,IAEfqP,EAAW,eAAaA,EAAUzL,GAClC0L,EAAe,eAAaA,EAAc1L,GAE9C,OAAO6L,EAGX,SAASD,EAAqB5L,GAC1B,IAAI/e,EACA0qB,EACAG,EAEJ,IAAK7qB,EAAIgqB,EAAoB/pB,OAAS,EAAGD,GAAK,EAAGA,GAAK,EAGlD,GAFA0qB,EAAgB,gBAAeV,EAAoBhqB,IACnD6qB,EAAgB,gBAAqBH,EAAe3L,GAC9B,OAAlB8L,GAA0BA,EAAgB,EAC1C,OAAOH,EAGf,OAAO3L,EAGX,IAAI+L,EAAiC,SAAU1pB,GAE3C,SAAS0pB,IACL,IAAIzpB,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAGhE,OAFAqH,EAAM0pB,mBAAqB,gBAAQA,GACnC1pB,EAAM+oB,eAAiB,gBAAQA,GACxB/oB,EAoBX,OAzBA,eAAUypB,EAAiB1pB,GAO3B0pB,EAAgBztB,UAAUvD,OAAS,WAC/B,IAAIuH,EAAQrH,KACR4H,EAAK5H,KAAK6H,QAASrE,EAAUoE,EAAGpE,QAASkc,EAAU9X,EAAG8X,QAAStB,EAAuBxW,EAAGwW,qBACzFtd,EAAQd,KAAKc,MACboK,EAAcpK,EAAMoK,YACpBwS,EAAgB1d,KAAK+wB,mBAAmB7lB,EAAakT,GACrD4S,EAAahxB,KAAK2iB,eAAeqO,WAAWlwB,GAC5CyhB,EAAYviB,KAAKowB,eAAellB,EAAYga,YAAaha,EAAYia,YAAa3hB,EAAQytB,kBAAmBztB,EAAQuhB,aAAcrF,GACnIrW,EAAc7F,EAAQ6F,YACtB6nB,GAAmB7nB,EACnB8nB,EAAkB9nB,EAClBgV,EAAgB7a,EAAQ8a,YAAe,eAAD,CAAe,OAAW,CAAEC,MAAOb,EAAcc,YAAatT,YAAaA,EAAauT,sBAAsB,EAAMjI,YAAa0a,EAAkBlxB,KAAKijB,eAAiB,OAC/MQ,GAAwC,IAAvBjgB,EAAQ4tB,YAAyB,SAAW1S,GAAc,OAAQ,eAAD,CAAe,OAAU,eAAS,GAAIsS,EAAWzkB,OAAQ,CAAErB,YAAaA,EAAawS,cAAeA,EAAeK,iBAAkBva,EAAQua,iBAAkBlC,cAAe6C,EAAW7C,cAAeI,aAAcyC,EAAWK,kBAAmB5C,eAAgB+U,EAAkB7pB,EAAMgc,mBAAqB,KAAMpM,iBAAiB,EAAOmE,YAAY,EAAO4C,iBAAkB3W,EAAMG,YAAa+Q,YAAamG,EAAWnG,YAAayD,aAAc0C,EAAW1C,aAAchT,SAAUlI,EAAMkI,UAAY3B,EAAMsd,4BACvkB0M,EAAkB,SAAU3S,GAAc,OAAQ,eAAD,CAAeiR,EAAa,eAAS,GAAIqB,EAAWnQ,MAAO,CAAEnD,cAAeA,EAAexS,YAAaA,EAAagb,KAAMgL,EAAiBnM,aAAcvhB,EAAQuhB,aAAcxC,UAAWA,EAAWvZ,SAAUlI,EAAMkI,SAAU+V,kBAAmBL,EAAWK,kBAAmBlD,cAAe6C,EAAW7C,cAAetD,YAAamG,EAAWnG,YAAayD,aAAc0C,EAAW1C,aAAcwS,aAAcnnB,EAAMwc,iBAAkBzI,WAAYsD,EAAWtD,WAAYgT,mBAAoB/mB,EAAMyb,2BAC9hB,OAAOqO,EACDnxB,KAAKmJ,oBAAoBkV,EAAeoF,EAAe4N,EAAiB3T,EAActU,OAAQC,EAAakZ,EAAWviB,KAAK6P,MAAMgT,YACjI7iB,KAAKyH,mBAAmB4W,EAAeoF,EAAe4N,IAEzDP,EA1ByB,CA2BlCpO,GACF,SAASqO,EAAmB7lB,EAAakT,GACrC,IAAIa,EAAY,IAAI,OAAe/T,EAAYgU,YAAad,GAC5D,OAAO,IAAI,OAAca,GAAW,GAGxC,IAAIqS,EAAkB,CAClBF,WAAYta,SAGZiJ,GAAO,gBAAa,CACpBC,YAAa,eACbuR,eAAgBD,EAChBrR,MAAO,CACHuR,SAAU,CACNtqB,UAAW4pB,EACXW,gBAAgB,EAChBL,YAAY,EACZrM,aAAc,WACdoI,kBAAkB,GAEtBuE,YAAa,CACTzpB,KAAM,WACNoY,SAAU,CAAEC,KAAM,IAEtBqR,aAAc,CACV1pB,KAAM,WACNoY,SAAU,CAAEG,MAAO,OAKhB,W,oCCltCf,IAAI1gB,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,OAAO,CAACE,YAAY,qBAAqB,CAACF,EAAG,oBAAoB,CAACE,YAAY,cAAcI,YAAY,CAAC,YAAY,OAAO,eAAe,QAAQF,MAAM,CAAC,KAAO,CAAC,KAAM,cAAcU,GAAG,CAAC,MAAQhB,EAAI6xB,eAAe3xB,EAAG,UAAU,CAAC0B,IAAI,kBAAkBtB,MAAM,CAAC,MAAQ,iBAAiB,cAAc,KAAK,CAACJ,EAAG,cAAc,CAACA,EAAG,SAAS,CAACc,GAAG,CAAC,OAAShB,EAAI8xB,OAAO,CAAC5xB,EAAG,QAAQ,CAACF,EAAIK,GAAG,IAAIL,EAAIqB,GAAGrB,EAAI+xB,oBAAoB,OAAO7xB,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIgyB,YAAY,CAAChyB,EAAIK,GAAG,cAAcH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI8xB,UAAU,CAAC9xB,EAAIK,GAAG,gBAAgB,MAAM,IAAI,IAAI,IAAI,IAEh1B8D,EAAkB,G,oCC6BlB,OAAQorB,IAAI,SACG,OACXxuB,MAAO,CACH,uBACA,qBACA,WACA,UACA,sBACA,UACA,UAEJqD,KAAM,WACF,MAAO,IAIXQ,QAAS,CACL,YACI3E,KAAKyF,MAAM,mBAAmBC,QAElC,SACI1F,KAAKyF,MAAM,mBAAmBU,QAElC,cACQnG,KAAKgyB,qBACLhyB,KAAKiyB,YAELjyB,KAAK6xB,QAGb,OACQ7xB,KAAKkyB,OACLlyB,KAAK4E,WAAWC,eAAe7E,KAAKkyB,OAAQlyB,KAAKmyB,SAAUnyB,KAAKoyB,QAASpyB,KAAKqyB,YAAa,QAAW,GAEtGryB,KAAK4E,WAAWC,eAAe,OAAQ7E,KAAKmyB,SAAUnyB,KAAKoyB,QAASpyB,KAAKqyB,YAAa,QAAW,IAI7G,YAAYrtB,GACR,IAAIe,EAAK/F,KACT+F,EAAGN,MAAM,mBAAmBU,OAE5BJ,EAAGusB,MAAM,WAELvsB,EAAGwsB,qBACHxsB,EAAGysB,cAAcC,oBAAoB1sB,EAAGzF,UAG5C,cACIN,KAAKyF,MAAMitB,UAAUC,UAG7B9rB,WAAY,GAGZI,SAAU,ICtFoM,I,YCOlNC,EAAY,eACd,EACApH,EACAoE,GACA,EACA,KACA,WACA,MAIa,OAAAgD,E,2CClBf,IAAIpH,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,kBAAkB,CAACF,EAAG,UAAU,CAAC0B,IAAI,kBAAkBtB,MAAM,CAAC,MAAQN,EAAI6yB,WAAW,KAAO,KAAK,cAAc,GAAG,kBAAkB,GAAG,uBAAuB,KAAK,CAAC3yB,EAAG,cAAc,CAAEF,EAAsB,mBAAEE,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,IAAI,CAACF,EAAIK,GAAG,kBAAkBL,EAAIqB,GAAGrB,EAAI8yB,SAASC,WAAW,OAAO/yB,EAAIqB,GAAGrB,EAAI8yB,SAASE,cAAchzB,EAAIizB,GAAIjzB,EAAY,UAAE,SAASkzB,GAAU,OAAOhzB,EAAG,IAAI,CAACE,YAAY,aAAa,CAACF,EAAG,OAAO,CAACE,YAAY,QAAQ,CAACJ,EAAIK,GAAG,eAAeL,EAAIqB,GAAG6xB,EAASC,UAAU,OAAOnzB,EAAIqB,GAAG6xB,EAASE,YAAY,OAAOpzB,EAAIK,GAAG,IAAIL,EAAIqB,GAAG6xB,EAASG,UAAU,UAASnzB,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACJ,EAAIK,GAAG,iBAAiBH,EAAG,KAAKF,EAAIizB,GAAIjzB,EAAI8yB,SAAmB,YAAE,SAASQ,GAAK,OAAOpzB,EAAG,KAAK,CAACF,EAAIK,GAAG,IAAIL,EAAIqB,GAAGiyB,EAAIC,eAAe,MAA+B,YAAxBD,EAAIE,iBAAgCtzB,EAAG,OAAO,CAACF,EAAIK,GAAG,UAAUL,EAAIqB,GAAGrB,EAAIyzB,cAAcH,EAAII,mBAAmB,sBAAsB,OAAO1zB,EAAIqB,GAAGiyB,EAAIH,SAASQ,UAAU,KAAKzzB,EAAG,oBAAoB,CAACE,YAAY,cAAcE,MAAM,CAAC,KAAO,CAAC,KAAM,cAAcU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI4zB,4BAA4BN,EAAItxB,SAAS,GAAG9B,EAAG,OAAO,CAACF,EAAIK,GAAG,kBAAiB,IAAI,IAAI,GAAGL,EAAIuB,KAAKrB,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,SAAS,CAAC0B,IAAI,qBAAqBxB,YAAY,gBAAgBY,GAAG,CAAC,OAAShB,EAAI6zB,aAAa,CAAC3zB,EAAG,YAAY,CAACI,MAAM,CAAC,kBAAkBN,EAAI8zB,gBAAgB,WAAW9zB,EAAI+zB,cAAc,eAAe/zB,EAAIg0B,YAAY,0BAA0Bh0B,EAAIi0B,SAAS/tB,OAAS,GAAKlG,EAAIk0B,2BAA6Bl0B,EAAIyB,gBAAgB,4BAAmE,GAArCzB,EAAIyB,gBAAgB,cAAuB,yBAAyBzB,EAAIk0B,0BAAiE,GAArCl0B,EAAIyB,gBAAgB,iBAA2BzB,EAAmB,gBAAEE,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,qBAAqB,CAACI,MAAM,CAAC,WAAWN,EAAI+zB,kBAAkB,IAAI,IAAI,IAAI,GAAG/zB,EAAIuB,KAAKrB,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIgyB,YAAY,CAAChyB,EAAIK,GAAG,cAA+C,GAAhCL,EAAIm0B,0BAAoE,GAAhCn0B,EAAIk0B,yBAAmCh0B,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,WAAW,CAACJ,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,kBAAkBN,EAAIK,GAAG,aAAa,GAAGL,EAAIuB,KAAsC,GAAhCvB,EAAIk0B,yBAAkCh0B,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,WAAW,CAACJ,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,kBAAkBN,EAAIK,GAAG,mBAAmB,GAAGL,EAAIuB,KAAsC,GAAhCvB,EAAIm0B,0BAAqE,GAAhCn0B,EAAIk0B,yBAAmCh0B,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,WAAW,CAACJ,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,aAAaN,EAAIK,GAAG,WAAW,GAAGL,EAAIuB,KAAsC,GAAhCvB,EAAIk0B,yBAAmCh0B,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIo0B,eAAe,CAACl0B,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,WAAWN,EAAIK,GAAG,iBAAiB,GAAGL,EAAIuB,KAA0B,MAApBvB,EAAIq0B,SAASC,MAAet0B,EAAIq0B,SAASC,KAAKC,gBAAiBr0B,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQhB,EAAIw0B,0BAA0B,CAACt0B,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,aAAaN,EAAIK,GAAG,sBAAsB,GAAGL,EAAIuB,KAAMvB,EAAIy0B,oBAAsD,GAAhCz0B,EAAIk0B,yBAAmCh0B,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,SAAS,KAAO,UAAUU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI00B,iCAAiC,CAACx0B,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,gBAAgBN,EAAIK,GAAG,mBAAmB,GAAGL,EAAIuB,MAAM,MAAM,IAAI,IAAI,GAAIvB,EAAsB,mBAAEE,EAAG,QAAQ,CAACA,EAAG,IAAI,CAACF,EAAIK,GAAG,mBAAmBL,EAAIqB,GAAGrB,EAAI8yB,SAASC,WAAW,OAAO/yB,EAAIqB,GAAGrB,EAAI8yB,SAASE,WAAW,SAAShzB,EAAIuB,MAAM,GAAGrB,EAAG,2BAA2B,CAAC0B,IAAI,4BAA4BtB,MAAM,CAAC,cAAc,2BAA2BU,GAAG,CAAC,gBAAkBhB,EAAI20B,mBAAmB,GAAGz0B,EAAG,UAAU,CAAC0B,IAAI,iBAAiBtB,MAAM,CAAC,MAAQ,uBAAuB,KAAO,KAAK,cAAc,KAAK,CAACJ,EAAG,cAAc,CAACA,EAAG,SAAS,CAAC0B,IAAI,mBAAmBZ,GAAG,CAAC,OAAShB,EAAI40B,uBAAuB,CAAC10B,EAAG,eAAe,CAACI,MAAM,CAAC,MAAQ,wCAAwC,CAACJ,EAAG,cAAc,CAACE,YAAY,eAAeE,MAAM,CAAC,KAAO,WAAW,SAAW,GAAG,YAAc,oCAAoC,mBAAmB,6BAA6B,GAAGJ,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI60B,kBAAkB,CAAC70B,EAAIK,GAAG,cAAcH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,UAAUU,GAAG,CAAC,MAAQhB,EAAI80B,uBAAuB,CAAC50B,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,eAAeN,EAAIK,GAAG,wBAAwB,GAAGH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,WAAW,CAACJ,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,aAAaN,EAAIK,GAAG,kBAAkB,IAAI,MAAM,IAAI,IAAI,GAAGH,EAAG,UAAU,CAAC0B,IAAI,uBAAuBtB,MAAM,CAAC,MAAQ,4BAA4B,KAAO,KAAK,cAAc,KAAK,CAACJ,EAAG,cAAc,CAACA,EAAG,MAAM,CAACA,EAAG,IAAI,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACE,YAAY,QAAQ,CAACJ,EAAIK,GAAG,cAAcL,EAAIK,GAAG,+FAA+FH,EAAG,eAAe,CAACI,MAAM,CAAC,MAAQ,6DAA6D,CAACJ,EAAG,QAAQ,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAc,WAAE8C,WAAW,eAAe1C,YAAY,eAAeE,MAAM,CAAC,SAAW,GAAG,YAAc,wBAAwBc,SAAS,CAAC,MAASpB,EAAc,YAAGgB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,YAAiBnD,EAAI+0B,WAAW9zB,EAAOiC,OAAOR,aAAYxC,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIg1B,mCAAmC,CAACh1B,EAAIK,GAAG,cAA+C,wBAAhCL,EAAI+0B,WAAWE,cAAyC/0B,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,SAAS,KAAO,UAAUU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIk1B,iBAAiB,CAACh1B,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,QAAS,UAAUN,EAAIK,GAAG,aAAa,GAAGL,EAAIuB,MAAM,MAAM,MAAM,IAAI,IAEttM4C,EAAkB,G,wECsIlB,OAAQorB,IAAI,SAEZ,OAAQA,IAAI,SAEZ,OAAQA,IAAI,QAEZ,OAAQA,IAAI,SAEZ,OAAQA,IAAI,QAEZ,OAAQA,IAAI,SASG,OACXxuB,MAAO,CACH,sBACA,4BAEJo0B,QAAS,WACL,IAAInvB,EAAK/F,KACT,OAASm1B,IAAI,yBAA0BC,IAET,wCAAtBrvB,EAAGquB,SAASiB,QACRtvB,EAAGguB,YAAY,kBAAoBhuB,EAAGguB,YAAY,oBAClDhuB,EAAGuvB,uCAMnB,gBACI,OAASC,KAAK,2BAElBpxB,KAAM,WACF,MAAO,CACHiwB,SAAU,GACVL,YAAa,GACbyB,yBAA0B,GAC1B1B,cAAe,GACf2B,WAAY,GACZ5C,SAAU,GACV6C,WAAY,GACZZ,WAAY,GACZa,cAAe,OAGvBhxB,QAAS,CACL,oCACI3E,KAAK4E,WAAWC,eAAe,MAAO,4CAA6C,CAAE+wB,WAAY51B,KAAKy1B,WAAYI,QAAS71B,KAAK8zB,cAAegC,gBAAiB91B,KAAK+zB,YAAY,mBAAoBgC,cAAe/1B,KAAK+zB,YAAY,kBAAoB/zB,KAAKg2B,yCAA0Ch2B,KAAKi2B,wCAAwC,IAEzV,yCAAyCjxB,KAGzC,uCAAuCkxB,GACnCl2B,KAAK+zB,YAAY,mBAAqB,MAE1CoC,4BAA6B,SAAUC,GACnCp2B,KAAK4C,KAAK5C,KAAM,2BAA4Bo2B,IAEhDC,qBAAsB,SAAUD,EAA0BE,EAAWC,EAASC,GAG1Ex2B,KAAKy1B,WAAa,GAClBz1B,KAAK01B,WAAa,GAClB11B,KAAK4C,KAAK5C,KAAM,WAAY,IAC5BA,KAAK4C,KAAK5C,KAAM,2BAA4Bo2B,GAE5Cp2B,KAAK4E,WAAWC,eAAe,MAAO,uCAAwC,CAAEwwB,OAAQr1B,KAAKw1B,yBAAyBzzB,GAAI8zB,QAAS71B,KAAK8zB,cAAe2C,UAAWH,EAAWI,QAASH,EAASC,yBAA0BA,GAA4Bx2B,KAAK22B,4BAA6B,QAAW,IAGtSC,gCAAiC,SAAUR,EAA0BS,GACjE72B,KAAK21B,cAAgBkB,EAGrB72B,KAAKy1B,WAAa,GAClBz1B,KAAK01B,WAAa,GAClB11B,KAAK4C,KAAK5C,KAAM,WAAY,IAC5BA,KAAK4C,KAAK5C,KAAM,2BAA4Bo2B,GAE5Cp2B,KAAK4E,WAAWC,eAAe,MAAO,uCAAwC,CAAEwwB,OAAQr1B,KAAKw1B,yBAAyBzzB,GAAI8zB,QAAS71B,KAAK8zB,cAAe2C,UAAW,KAAMC,QAAS,KAAMF,0BAA0B,GAASx2B,KAAK82B,uCAAwC,QAAW,IAGtR,uCAAuC9xB,GAEnCA,EAASb,KAAKA,KAAKkwB,KAAK0C,iBAAmBnxB,KAAKC,MAAMb,EAASb,KAAKA,KAAKkwB,KAAK0C,kBAC9E/2B,KAAK4C,KAAK5C,KAAM,WAAYgF,EAASb,KAAKA,MAE1C,IAAI6yB,EAAc,GAClBhyB,EAASb,KAAKA,KAAKkwB,KAAK4C,WAAWC,SAAQ,SAAUC,GAClB,YAA3BA,EAAKC,oBAA+D,2BAA3BD,EAAKC,oBAA8E,qBAA3BD,EAAKC,mBACtGJ,EAAYG,EAAKE,MAA8B,MAArBF,EAAKG,aAAuBH,EAAKG,aAAa9d,MAAM,KAAO,GAErFwd,EAAYG,EAAKE,MAAQF,EAAKG,gBAMtCN,EAAYlB,gBAAkB91B,KAAK21B,cAAc4B,YACjDP,EAAYjB,cAAgB/1B,KAAK21B,cAAcI,cAC/CiB,EAAYQ,UAAYx3B,KAAK21B,cAAc6B,UAC3CR,EAAYS,QAAUz3B,KAAK21B,cAAc8B,QAIzCz3B,KAAK4C,KAAK5C,KAAM,cAAeg3B,GAC3BhyB,EAASb,KAAKA,KAAKuzB,oBAIvB13B,KAAKyF,MAAM,mBAAmBC,QAElC,4BAA4BV,GAExBA,EAASb,KAAKA,KAAKkwB,KAAK0C,iBAAmBnxB,KAAKC,MAAMb,EAASb,KAAKA,KAAKkwB,KAAK0C,kBAC9E/2B,KAAK4C,KAAK5C,KAAM,WAAYgF,EAASb,KAAKA,MAE1C,IAAI6yB,EAAc,GAClBhyB,EAASb,KAAKA,KAAKkwB,KAAK4C,WAAWC,SAAQ,SAASC,GACjB,YAA3BA,EAAKC,oBAA+D,2BAA3BD,EAAKC,oBAA8E,qBAA3BD,EAAKC,mBACtGJ,EAAYG,EAAKE,MAA8B,MAArBF,EAAKG,aAAuBH,EAAKG,aAAa9d,MAAM,KAAO,GAErFwd,EAAYG,EAAKE,MAAQF,EAAKG,gBAGtCt3B,KAAK4C,KAAK5C,KAAM,cAAeg3B,GAC3BhyB,EAASb,KAAKA,KAAKuzB,oBAIvB13B,KAAKyF,MAAM,mBAAmBC,QAElC,kBACI1F,KAAK4E,WAAWC,eAAe,MAAO,uBAAwB,CAAE9C,GAAI/B,KAAK8zB,eAAiB9zB,KAAK23B,uBAAwB,QAAW,IAEtI,uBAAuB3yB,GACnBhF,KAAK43B,aAAe5yB,EAASb,KAAKA,MAEtC,0BACInE,KAAKyF,MAAM,kBAAkBC,QAEjC,qBAAqBU,GACjBA,EAAEC,iBAEF,IAAIwxB,EAAO73B,KAAKyF,MAAM,oBAClBqyB,EAAW,IAAI1D,SAASyD,GAE5BC,EAASC,OAAO,SAAU/3B,KAAKw1B,yBAAyBzzB,IACxD+1B,EAASC,OAAO,UAAW/3B,KAAK8zB,eAChC9zB,KAAK4E,WAAWC,eAAe,OAAQ,oDAAqDizB,EAAU93B,KAAKg4B,4BAA6B,QAAW,IAGvJ,4BAA4BhzB,GACxBhF,KAAKyF,MAAM,mBAAmBU,OAC9B,IAAI6wB,EAAc,GAClBhyB,EAASb,KAAKA,KAAKkwB,KAAK4C,WAAWC,SAAQ,SAAUC,GAClB,YAA3BA,EAAKC,oBAA+D,2BAA3BD,EAAKC,oBAA8E,qBAA3BD,EAAKC,mBACtGJ,EAAYG,EAAKE,MAA8B,MAArBF,EAAKG,aAAuBH,EAAKG,aAAa9d,MAAM,KAAO,GAErFwd,EAAYG,EAAKE,MAAQF,EAAKG,gBAGtCt3B,KAAK4C,KAAK5C,KAAM,cAAeg3B,GAC/Bh3B,KAAKyF,MAAM,kBAAkBU,OAC7BnG,KAAKyF,MAAM,mBAAmBC,QAElCuyB,0BAA2B,SAAUC,GAEjCl4B,KAAK4E,WAAWC,eAAe,MAAO,uCAAwC,CAAE+wB,WAAYsC,GAAcl4B,KAAKm4B,iCAAkC,QAAW,IAEhK,iCAAiCnzB,GAC7B,IAAIe,EAAK/F,KAETgF,EAASb,KAAKA,KAAKkwB,KAAK0C,iBAAmBnxB,KAAKC,MAAMb,EAASb,KAAKA,KAAKkwB,KAAK0C,kBAC9EhxB,EAAGnD,KAAKmD,EAAI,WAAYf,EAASb,KAAKA,MAEtC,IAAIi0B,EAAW,CACXtF,UAAW/sB,EAAGytB,cAAcxuB,EAASb,KAAKA,KAAK2uB,UAAW,qBAC1DC,UAAW/tB,EAASb,KAAKA,KAAK4uB,UAC9B2C,WAAY1wB,EAASb,KAAKA,KAAKk0B,oBAEnCtyB,EAAGnD,KAAKmD,EAAI,WAAYqyB,GAExBryB,EAAG+tB,cAAgB9uB,EAASb,KAAKA,KAAK0xB,QACtC9vB,EAAG0vB,WAAazwB,EAASb,KAAKA,KAAKpC,GAEnCgE,EAAG2vB,WAAa1wB,EAASb,KAAKA,KAAKk0B,mBAGnCtyB,EAAGnD,KAAKmD,EAAI,2BAA4Bf,EAASb,KAAKA,KAAKqxB,0BAE3D,IAAIwB,EAAc,GAClBhyB,EAASb,KAAKA,KAAKm0B,eAAepB,SAAQ,SAAUC,GACP,YAArCA,EAAKoB,UAAUnB,oBAAyE,2BAArCD,EAAKoB,UAAUnB,oBAAwF,qBAArCD,EAAKoB,UAAUnB,mBACpIJ,EAAYG,EAAKoB,UAAUlB,MAA4B,MAAnBF,EAAKqB,WAAqBrB,EAAKqB,WAAWhf,MAAM,KAAO,GAE3Fwd,EAAYG,EAAKoB,UAAUlB,MAAQF,EAAKqB,cAGhD,IAAIC,EAAmB,GACoB,MAAvCzzB,EAASb,KAAKA,KAAKu0B,mBACnBD,EAAmB7yB,KAAKC,MAAMb,EAASb,KAAKA,KAAKu0B,mBAErD1B,EAAc,IAAKA,KAAgByB,GAEnC1yB,EAAGnD,KAAKmD,EAAI,cAAeixB,GAE3Bh3B,KAAKyF,MAAM,mBAAmBC,QAElCyuB,UAAW,WAGP,IAAI0D,EAAO73B,KAAKyF,MAAM,sBAClBqyB,EAAW,IAAI1D,SAASyD,GAE5BC,EAASC,OAAO,SAAU/3B,KAAKw1B,yBAAyBzzB,IACxD+1B,EAASC,OAAO,UAAW/3B,KAAK8zB,eAChCgE,EAASC,OAAO,aAAc/3B,KAAKy1B,YACnCqC,EAASC,OAAO,aAAa,YAC7BD,EAASC,OAAO,aAAc,SAC9B/3B,KAAK4E,WAAWC,eAAe,OAAQ,iCAAiCizB,EAAU93B,KAAK24B,iBAAkB,QAAW,IAExH,iBAAiB3zB,GACb,IAAIe,EAAK/F,KAELo4B,EAAW,CACXtF,UAAW/sB,EAAGytB,cAAcxuB,EAASb,KAAKA,KAAK2uB,UAAW,oBAC1DC,UAAW/tB,EAASb,KAAKA,KAAK4uB,UAC9B2C,WAAY1wB,EAASb,KAAKA,KAAKk0B,oBAEnCtyB,EAAGnD,KAAKmD,EAAI,WAAYqyB,GACxBryB,EAAG0vB,WAAazwB,EAASb,KAAKA,KAAKpC,GACnC,OAASuwB,MAAM,iBAAkBvsB,EAAG+tB,eAGpC8E,MAAM,8BAEV,8BACI54B,KAAK80B,WAAa,GAClB90B,KAAKyF,MAAM,wBAAwBC,QAEvC,gCACI1F,KAAKyF,MAAM,wBAAwBU,QAEvC,cACInG,KAAK4E,WAAWC,eAAe,OAAQ,6BAA6B,CAAE+wB,WAAY51B,KAAKy1B,YAAcz1B,KAAK64B,mBAAoB,QAAW,IAE7I,mBAAmB7zB,GAEf,OAASstB,MAAM,iBAAkBtyB,KAAK8zB,eAGtC9zB,KAAKyF,MAAM,wBAAwBU,OACnCnG,KAAKyF,MAAM,mBAAmBU,QAElC,WAAWC,GACPA,EAAEC,iBACErG,KAAKk0B,0BAA6D,GAAjCl0B,KAAKi0B,yBAEtCj0B,KAAKyF,MAAM,6BAA6BwsB,YAGxCjyB,KAAK00B,kBAGb,SACI10B,KAAKyF,MAAM,mBAAmBU,QAElC,eACInG,KAAKyF,MAAM,kBAAkBU,QAEjC,uBACI,IAAI2yB,EAAU,CAAEC,OAAQ/4B,KAAKo0B,SAASC,KAAK2E,YAC3Ch5B,KAAK4E,WAAWq0B,mBAAmB,8BAAgCj5B,KAAKo0B,SAASC,KAAKgD,KAAO,QAASyB,IAE1G,eAAeI,EAAW,MAEtB,IAAIrB,EAAO73B,KAAKyF,MAAM,sBAClBqyB,EAAW,IAAI1D,SAASyD,GAQ5BC,EAASC,OAAO,SAAU/3B,KAAKw1B,yBAAyBzzB,IACxD+1B,EAASC,OAAO,UAAW/3B,KAAK8zB,eAChCgE,EAASC,OAAO,aAAc/3B,KAAKy1B,YACnCqC,EAASC,OAAO,aAAa,YAC7BD,EAASC,OAAO,iBAAkBmB,GAMlC,IAAIC,EAAe,SACkB,GAAjCn5B,KAAKi0B,2BACLkF,EAAe,UAEnBrB,EAASC,OAAO,aAAcoB,GAC9Bn5B,KAAK4E,WAAWC,eAAe,OAAQ,iCAAiCizB,EAAU93B,KAAKo5B,sBAAuB,QAAW,IAE7H,sBAAsBp0B,GAClB,IAAIe,EAAK/F,KACLo4B,EAAW,CACXtF,UAAW/sB,EAAGytB,cAAcxuB,EAASb,KAAKA,KAAK2uB,UAAW,oBAC1DC,UAAW/tB,EAASb,KAAKA,KAAK4uB,UAC9B2C,WAAY1wB,EAASb,KAAKA,KAAKk0B,oBAEnCtyB,EAAGnD,KAAKmD,EAAI,WAAYqyB,GACxBryB,EAAG0vB,WAAazwB,EAASb,KAAKA,KAAKpC,GACnC,OAASuwB,MAAM,iBAAkBvsB,EAAG+tB,eAEC,GAAjC9zB,KAAKi0B,0BACL2E,MAAM,iCAEV54B,KAAKyF,MAAM,mBAAmBU,QAElCwtB,4BAA6B,SAAU0F,GACnCr5B,KAAK4E,WAAWC,eAAe,OAAQ,wCAAwC,CAAC9C,GAAIs3B,GAAcr5B,KAAKs5B,mCAAoC,QAAW,IAE1J,mCAAmCt0B,GAC/B,IAAIe,EAAK/F,KAELo4B,EAAW,CACXtF,UAAW/sB,EAAG8sB,SAASC,UACvBC,UAAWhtB,EAAG8sB,SAASE,UACvB2C,WAAY3vB,EAAG8sB,SAAS6C,WAAWpyB,OAAOi2B,GAAMA,EAAGx3B,IAAMs3B,cAE7DtzB,EAAGnD,KAAKmD,EAAI,WAAYqyB,GACxB,OAAS9F,MAAM,iBAAkBvsB,EAAG+tB,gBAExC,WAAWrxB,EAAO4C,EAAM,cACpB,OAAiB,MAAT5C,EACF,GACA8C,OAAO9C,EAAO,cAAc+C,OAAOH,IAE7C,cAAc5C,EAAO4C,EAAM,cACvB,OAAiB,MAAT5C,EACF,GACA8C,OAAOi0B,IAAI/2B,EAAO,uBAAuBg3B,QAAQj0B,OAAOH,IAElE,oBAAoB5C,EAAO4C,EAAM,cAC7B,OAAiB,MAAT5C,EACF,GACA8C,OAAOi0B,IAAI/2B,EAAO,uBAAuB+C,OAAOH,IAE1D,gBAAgBqB,GACZ,OAAO1G,KAAK2G,OAAOC,QAAQ,uCAAuCF,KAG1EG,WAAY,CACR6yB,YAAA,KACAC,2BAAA,KACAC,qBAAA,MAEJ3yB,SAAU,CACN4sB,gBAAiB,WACb,OAA6C,IAAzCgG,OAAO5Q,QAAQjpB,KAAKo0B,UAAUnuB,QAAgBjG,KAAKo0B,SAAS0F,cAAgBD,OACrE,GAGA75B,KAAKo0B,SAASC,KAAK0C,kBAGlCnE,WAAY,WACR,GAAI5yB,KAAKw1B,yBAAyBuE,eAAe,QAC7C,OAAO/5B,KAAKw1B,yBAAyBnB,KAAK2F,OAGlDxF,mBAAoB,WAChB,QAAKx0B,KAAKy1B,YAMdvB,yBAA0B,WACtB,OAAIl0B,KAAKw1B,yBAAyBuE,eAAe,4BACtC/5B,KAAKw1B,yBAAyBtB,yBAE9B,MAGf+F,sCAAuC,WACnC,OAAIj6B,KAAKw1B,yBAAyBuE,eAAe,yCACtC/5B,KAAKw1B,yBAAyByE,sCAE9B,MAGfjG,SAAU,WACN,IAAIkG,EAAe,GACnB,IAAK,IAAIl0B,EAAI,EAAGA,EAAIhG,KAAK01B,WAAWzvB,OAAQD,IACG,YAAvChG,KAAK01B,WAAW1vB,GAAGutB,kBACnB2G,EAAalyB,KAAK,CACdorB,SAAUpzB,KAAK01B,WAAW1vB,GAAGotB,SAC7BF,SAAUlzB,KAAK01B,WAAW1vB,GAAGktB,SAASQ,SACtCP,WAAYnzB,KAAKwzB,cAAcxzB,KAAK01B,WAAW1vB,GAAGytB,mBAAqB,uBAInF,OAAOyG,GAEXC,gBAAiB,WACb,OAAIn6B,KAAK43B,aACE,KAEA,MAGfwC,gBAAiB,WACb,SAAKp6B,KAAKo0B,UAAYp0B,KAAKo0B,SAASsD,qBAAyB13B,KAAKo0B,UAAYp0B,KAAKo0B,SAASoB,0BAA4Bx1B,KAAKo0B,SAASoB,yBAAyBkC,sBAMnK2C,WAAY,WACR,OAAOr6B,KAAK2G,OAAOC,QAAQ,yBAAyByzB,YAExDC,wBAAyB,WACrB,OAAIt6B,KAAKw0B,mBACEx0B,KAAKo0B,SAASmG,gBAAgBj3B,OAAOk3B,GAAkB,MAAbA,EAAE9D,SAAiB,GAAG2D,WAEhEr6B,KAAKq6B,aAIxBI,QAAS,WAC2B,MAA5Bz6B,KAAK06B,sBACD16B,KAAK8zB,cAAgB9zB,KAAK06B,uBC9jBqK,I,wBCQ/MxzB,EAAY,eACd,EACApH,EACAoE,GACA,EACA,KACA,WACA,MAIa,OAAAgD,E,iCCnBd,SAASyzB,EAAEv0B,GAAqDw0B,EAAOC,QAAQz0B,IAA/E,CAAsM,oBAAoB00B,MAAKA,MAAU,WAAY,MAAM,MAAM,IAAIH,EAAE,CAACI,IAAIJ,IAAIA,EAAEE,QAAQ,SAASF,GAAG,GAAGv3B,MAAMqe,QAAQkZ,GAAG,CAAC,IAAI,IAAIv0B,EAAE,EAAE40B,EAAE,IAAI53B,MAAMu3B,EAAE10B,QAAQG,EAAEu0B,EAAE10B,OAAOG,IAAI40B,EAAE50B,GAAGu0B,EAAEv0B,GAAG,OAAO40B,KAAKC,IAAIN,IAAIA,EAAEE,QAAQ,SAASF,EAAEv0B,EAAE40B,GAAG,OAAO50B,KAAKu0B,EAAEd,OAAOqB,eAAeP,EAAEv0B,EAAE,CAAC3D,MAAMu4B,EAAEG,YAAW,EAAGC,cAAa,EAAGC,UAAS,IAAKV,EAAEv0B,GAAG40B,EAAEL,IAAIW,IAAIX,IAAIA,EAAEE,QAAQ,SAASF,GAAG,GAAGY,OAAOC,YAAY3B,OAAOc,IAAI,uBAAuBd,OAAOx2B,UAAUo4B,SAASl4B,KAAKo3B,GAAG,OAAOv3B,MAAMs4B,KAAKf,KAAKgB,IAAIhB,IAAIA,EAAEE,QAAQ,WAAW,MAAM,IAAIe,UAAU,qDAAqDC,IAAI,CAAClB,EAAEv0B,EAAE40B,KAAK,IAAIv3B,EAAEu3B,EAAE,KAAKh1B,EAAEg1B,EAAE,KAAKc,EAAEd,EAAE,KAAKL,EAAEE,QAAQ,SAASF,GAAG,OAAOl3B,EAAEk3B,IAAI30B,EAAE20B,IAAImB,MAAMC,EAAEpB,IAAI,SAASv0B,EAAE40B,GAAG,MAAM,mBAAmBO,QAAQ,iBAAiBA,OAAOC,SAASb,EAAEE,QAAQz0B,EAAE,SAASu0B,GAAG,cAAcA,GAAGA,EAAEE,QAAQz0B,EAAE,SAASu0B,GAAG,OAAOA,GAAG,mBAAmBY,QAAQZ,EAAEb,cAAcyB,QAAQZ,IAAIY,OAAOl4B,UAAU,gBAAgBs3B,GAAGv0B,EAAE40B,GAAGL,EAAEE,QAAQz0B,IAAIA,EAAE,GAAG,SAAS40B,EAAEv3B,GAAG,IAAIuC,EAAEI,EAAE3C,GAAG,QAAG,IAASuC,EAAE,OAAOA,EAAE60B,QAAQ,IAAIiB,EAAE11B,EAAE3C,GAAG,CAACo3B,QAAQ,IAAI,OAAOF,EAAEl3B,GAAGq4B,EAAEA,EAAEjB,QAAQG,GAAGc,EAAEjB,QAAQG,EAAEA,EAAEL,IAAI,IAAIv0B,EAAEu0B,GAAGA,EAAEqB,WAAW,IAAIrB,EAAEsB,QAAQ,IAAItB,EAAE,OAAOK,EAAEkB,EAAE91B,EAAE,CAACqiB,EAAEriB,IAAIA,GAAG40B,EAAEkB,EAAE,CAACvB,EAAEv0B,KAAK,IAAI,IAAI3C,KAAK2C,EAAE40B,EAAEv3B,EAAE2C,EAAE3C,KAAKu3B,EAAEv3B,EAAEk3B,EAAEl3B,IAAIo2B,OAAOqB,eAAeP,EAAEl3B,EAAE,CAAC03B,YAAW,EAAGgB,IAAI/1B,EAAE3C,MAAMu3B,EAAEv3B,EAAE,CAACk3B,EAAEv0B,IAAIyzB,OAAOx2B,UAAU02B,eAAex2B,KAAKo3B,EAAEv0B,GAAG40B,EAAEoB,EAAEzB,IAAI,oBAAoBY,QAAQA,OAAOc,aAAaxC,OAAOqB,eAAeP,EAAEY,OAAOc,YAAY,CAAC55B,MAAM,WAAWo3B,OAAOqB,eAAeP,EAAE,aAAa,CAACl4B,OAAM,KAAM,IAAIgB,EAAE,GAAG,MAAM,MAAM,aAAau3B,EAAEoB,EAAE34B,GAAGu3B,EAAEkB,EAAEz4B,EAAE,CAAC64B,UAAU,IAAIC,EAAEN,QAAQ,IAAIO,EAAEC,OAAO,IAAIC,IAAI,IAAI/B,EAAEK,EAAE,KAAK50B,EAAE40B,EAAEA,EAAEL,GAAG30B,EAAEg1B,EAAE,GAAGc,EAAEd,EAAEA,EAAEh1B,GAAGo2B,EAAEpB,EAAE,KAAKvS,EAAEuS,EAAEA,EAAEoB,GAAG,MAAMO,EAAE,CAAC77B,MAAM,CAAC87B,WAAW,CAAC30B,KAAK6O,QAAQmlB,SAAQ,IAAKY,MAAM,CAACC,iBAAiB,WAAW98B,KAAK48B,YAAY58B,KAAK+8B,qBAAqBC,KAAK,SAASrC,GAAG,IAAIv0B,EAAEpG,KAAKA,KAAK48B,YAAYjC,GAAG36B,KAAKi9B,WAAU,WAAY,OAAO72B,EAAE22B,yBAAyBp4B,QAAQ,CAACo4B,kBAAkB,WAAW,IAAIpC,EAAEv0B,GAAG,QAAQu0B,EAAE36B,KAAKyF,MAAMy3B,oBAAe,IAASvC,OAAE,EAAOA,EAAE3N,SAAShtB,KAAK88B,qBAAoB,EAAG,GAAG12B,EAAE,CAAC,IAAI40B,EAAEh7B,KAAKm9B,sBAAsB15B,EAAE2C,EAAEmT,wBAAwBvT,EAAEvC,EAAE0U,IAAI2jB,EAAEr4B,EAAEoW,OAAOuiB,EAAE34B,EAAE2V,OAAO,GAAGpT,EAAEg1B,EAAE7iB,IAAI,OAAOnY,KAAKyF,MAAMy3B,aAAana,UAAU3c,EAAEg3B,UAAU,GAAGtB,EAAEd,EAAEnhB,OAAO,OAAO7Z,KAAKyF,MAAMy3B,aAAana,UAAU3c,EAAEg3B,WAAWpC,EAAE5hB,OAAOgjB,KAAKe,oBAAoB,WAAW,OAAOn9B,KAAKyF,MAAMy3B,aAAal9B,KAAKyF,MAAMy3B,aAAa3jB,wBAAwB,CAACH,OAAO,EAAEjB,IAAI,EAAE0B,OAAO,MAAMwjB,EAAE,CAACl5B,KAAK,WAAW,MAAM,CAAC24B,kBAAkB,IAAID,MAAM,CAACS,gBAAgB,WAAW,IAAI,IAAI3C,EAAE,EAAEA,EAAE36B,KAAKs9B,gBAAgBr3B,OAAO00B,IAAI,GAAG36B,KAAKu9B,WAAWv9B,KAAKs9B,gBAAgB3C,IAAI,CAAC36B,KAAK88B,iBAAiBnC,EAAE,QAAQqC,KAAK,SAASrC,GAAGA,GAAG36B,KAAKw9B,2BAA2BC,cAAc,WAAWz9B,KAAKg9B,MAAMh9B,KAAKw9B,4BAA4B74B,QAAQ,CAAC+4B,YAAY,WAAW,IAAI,IAAI/C,EAAE36B,KAAK88B,iBAAiB,EAAEnC,GAAG,EAAEA,IAAI,GAAG36B,KAAKu9B,WAAWv9B,KAAKs9B,gBAAgB3C,IAAI,CAAC36B,KAAK88B,iBAAiBnC,EAAE,QAAQgD,cAAc,WAAW,IAAI,IAAIhD,EAAE36B,KAAK88B,iBAAiB,EAAEnC,EAAE36B,KAAKs9B,gBAAgBr3B,OAAO00B,IAAI,GAAG36B,KAAKu9B,WAAWv9B,KAAKs9B,gBAAgB3C,IAAI,CAAC36B,KAAK88B,iBAAiBnC,EAAE,QAAQiD,gBAAgB,WAAW,IAAIjD,EAAE36B,KAAKs9B,gBAAgBt9B,KAAK88B,kBAAkBnC,GAAG36B,KAAKu9B,WAAW5C,IAAI36B,KAAK69B,OAAOlD,IAAI6C,wBAAwB,WAAWx9B,KAAK88B,iBAAiB,IAAI98B,KAAKy9B,cAAcx3B,OAAOjG,KAAKs9B,gBAAgBQ,QAAQ99B,KAAKy9B,cAAcz9B,KAAKy9B,cAAcx3B,OAAO,KAAK,KAAK83B,EAAE,CAACj9B,MAAM,CAACoE,QAAQ,CAAC+C,KAAK6O,QAAQmlB,SAAQ,IAAK93B,KAAK,WAAW,MAAM,CAAC65B,gBAAe,IAAKnB,MAAM,CAAC53B,OAAO,WAAWjF,KAAKsyB,MAAM,SAAStyB,KAAKiF,OAAOjF,KAAKi+B,gBAAgB/4B,QAAQ,SAASy1B,GAAG36B,KAAKg+B,eAAerD,IAAIh2B,QAAQ,CAACs5B,cAAc,WAAW,IAAItD,EAAEpzB,UAAUtB,OAAO,QAAG,IAASsB,UAAU,GAAGA,UAAU,GAAG,KAAK,OAAOvH,KAAKg+B,eAAe,MAAMrD,GAAG36B,KAAKg+B,eAAerD,KAAK,SAASuD,EAAEvD,EAAEv0B,EAAE40B,EAAEv3B,EAAEuC,EAAE81B,EAAEM,EAAE3T,GAAG,IAAIkU,EAAEU,EAAE,mBAAmB1C,EAAEA,EAAEn3B,QAAQm3B,EAAE,GAAGv0B,IAAIi3B,EAAEv9B,OAAOsG,EAAEi3B,EAAEn5B,gBAAgB82B,EAAEqC,EAAEc,WAAU,GAAI16B,IAAI45B,EAAEe,YAAW,GAAItC,IAAIuB,EAAEgB,SAAS,UAAUvC,GAAGM,GAAGO,EAAE,SAAShC,IAAIA,EAAEA,GAAG36B,KAAKs+B,QAAQt+B,KAAKs+B,OAAOC,YAAYv+B,KAAKw+B,QAAQx+B,KAAKw+B,OAAOF,QAAQt+B,KAAKw+B,OAAOF,OAAOC,aAAa,oBAAoBE,sBAAsB9D,EAAE8D,qBAAqBz4B,GAAGA,EAAEzC,KAAKvD,KAAK26B,GAAGA,GAAGA,EAAE+D,uBAAuB/D,EAAE+D,sBAAsBpP,IAAI8M,IAAIiB,EAAEsB,aAAahC,GAAG32B,IAAI22B,EAAElU,EAAE,WAAWziB,EAAEzC,KAAKvD,MAAMq9B,EAAEe,WAAWp+B,KAAKw+B,OAAOx+B,MAAM4+B,MAAMC,SAASC,aAAa94B,GAAG22B,EAAE,GAAGU,EAAEe,WAAW,CAACf,EAAE0B,cAAcpC,EAAE,IAAIoB,EAAEV,EAAEv9B,OAAOu9B,EAAEv9B,OAAO,SAAS66B,EAAEv0B,GAAG,OAAOu2B,EAAEp5B,KAAK6C,GAAG23B,EAAEpD,EAAEv0B,QAAQ,CAAC,IAAI83B,EAAEb,EAAE2B,aAAa3B,EAAE2B,aAAad,EAAE,GAAGr1B,OAAOq1B,EAAEvB,GAAG,CAACA,GAAG,MAAM,CAAC9B,QAAQF,EAAEn3B,QAAQ65B,GAAG,MAAM4B,EAAE,CAACC,SAAShB,EAAE,IAAG,WAAY,IAAIvD,EAAE36B,KAAKm/B,eAAe/4B,EAAEpG,KAAKE,MAAMD,IAAI06B,EAAE,OAAOv0B,EAAE,MAAM,CAAC/F,MAAM,CAAC++B,MAAM,6BAA6BxjB,MAAM,KAAKxC,OAAO,OAAO,CAAChT,EAAE,OAAO,CAAC/F,MAAM,CAAC67B,EAAE,qhBAAqhB,IAAG,EAAG,KAAK,KAAK,MAAMrB,QAAQwE,cAAcnB,EAAE,IAAG,WAAY,IAAIvD,EAAE36B,KAAKm/B,eAAe/4B,EAAEpG,KAAKE,MAAMD,IAAI06B,EAAE,OAAOv0B,EAAE,MAAM,CAAC/F,MAAM,CAAC++B,MAAM,6BAA6BxjB,MAAM,KAAKxC,OAAO,OAAO,CAAChT,EAAE,OAAO,CAAC/F,MAAM,CAAC67B,EAAE,2TAA2T,IAAG,EAAG,KAAK,KAAK,MAAMrB,SAASqB,EAAE,CAACoD,SAAS,SAAS3E,EAAEv0B,EAAE40B,GAAG,IAAIv3B,EAAEu3B,EAAEnzB,QAAQ,GAAGpE,EAAE87B,aAAa,CAAC,IAAIv5B,EAAEvC,EAAEgC,MAAM+5B,OAAOjmB,wBAAwBuiB,EAAE91B,EAAEoT,OAAOgjB,EAAEp2B,EAAEmS,IAAIsQ,EAAEziB,EAAE8R,KAAK6kB,EAAE32B,EAAE4V,MAAMyhB,EAAEoC,OAAOC,SAASD,OAAOE,YAAY5B,EAAE0B,OAAOG,SAASH,OAAOI,YAAYlF,EAAEmF,eAAer8B,EAAEs8B,kBAAkBpF,EAAEl3B,EAAE,CAACmY,MAAM+gB,EAAE,KAAK7kB,KAAKulB,EAAE5U,EAAE,KAAKtQ,IAAI4lB,EAAE3B,EAAEN,EAAE,OAAOkE,SAASC,KAAKC,YAAYvF,KAAKwF,OAAO,SAASxF,EAAEv0B,EAAE40B,GAAGA,EAAEnzB,QAAQ03B,eAAe5E,EAAEmF,gBAAgB,mBAAmBnF,EAAEmF,gBAAgBnF,EAAEmF,iBAAiBnF,EAAEyF,YAAYzF,EAAEyF,WAAWC,YAAY1F,MAAY2F,EAAE,SAAS3F,GAAG,IAAIv0B,EAAE,GAAG,OAAOyzB,OAAO0G,KAAK5F,GAAGrS,OAAO4O,SAAQ,SAAU8D,GAAG50B,EAAE40B,GAAGL,EAAEK,MAAMp1B,KAAKE,UAAUM,IAAI,IAAIo6B,EAAE,EAAE,MAAM9X,EAAE,WAAW,QAAQ8X,GAAG,SAASC,EAAE9F,EAAEv0B,GAAG,IAAI40B,EAAEnB,OAAO0G,KAAK5F,GAAG,GAAGd,OAAO6G,sBAAsB,CAAC,IAAIj9B,EAAEo2B,OAAO6G,sBAAsB/F,GAAGv0B,IAAI3C,EAAEA,EAAEH,QAAO,SAAU8C,GAAG,OAAOyzB,OAAO8G,yBAAyBhG,EAAEv0B,GAAG+0B,eAAeH,EAAEhzB,KAAKV,MAAM0zB,EAAEv3B,GAAG,OAAOu3B,EAAE,SAAS4F,EAAEjG,GAAG,IAAI,IAAIv0B,EAAE,EAAEA,EAAEmB,UAAUtB,OAAOG,IAAI,CAAC,IAAI40B,EAAE,MAAMzzB,UAAUnB,GAAGmB,UAAUnB,GAAG,GAAGA,EAAE,EAAEq6B,EAAE5G,OAAOmB,IAAG,GAAI9D,SAAQ,SAAU9wB,GAAGqiB,IAAIkS,EAAEv0B,EAAE40B,EAAE50B,OAAOyzB,OAAOgH,0BAA0BhH,OAAOiH,iBAAiBnG,EAAEd,OAAOgH,0BAA0B7F,IAAIyF,EAAE5G,OAAOmB,IAAI9D,SAAQ,SAAU9wB,GAAGyzB,OAAOqB,eAAeP,EAAEv0B,EAAEyzB,OAAO8G,yBAAyB3F,EAAE50B,OAAO,OAAOu0B,EAAE,MAAM4B,EAAE2B,EAAE,CAACr3B,WAAW+5B,EAAE,GAAG3B,GAAGn8B,WAAW,CAACy8B,aAAarD,GAAGO,OAAO,CAACE,EAAEU,EAAEU,GAAGj9B,MAAM,CAAC2B,MAAM,GAAGoE,WAAW,CAACoB,KAAK4xB,OAAOoC,QAAQ,WAAW,MAAM,KAAKz4B,QAAQ,CAACyE,KAAK7E,MAAM64B,QAAQ,WAAW,MAAM,KAAK8E,SAAS,CAAC94B,KAAK6O,QAAQmlB,SAAQ,GAAI+E,UAAU,CAAC/4B,KAAK6O,QAAQmlB,SAAQ,GAAIgF,qBAAqB,CAACh5B,KAAK6O,QAAQmlB,SAAQ,GAAIiF,WAAW,CAACj5B,KAAK6O,QAAQmlB,SAAQ,GAAIn4B,SAAS,CAACmE,KAAK6O,QAAQmlB,SAAQ,GAAIkF,YAAY,CAACl5B,KAAKm5B,OAAOnF,QAAQ,IAAIoF,WAAW,CAACp5B,KAAKm5B,OAAOnF,QAAQ,YAAYqF,oBAAoB,CAACr5B,KAAK6O,QAAQmlB,SAAQ,GAAIsF,cAAc,CAACt5B,KAAK6O,QAAQmlB,SAAQ,GAAIuF,MAAM,CAACv5B,KAAKm5B,OAAOnF,QAAQ,SAASwF,aAAa,CAACx5B,KAAKm5B,OAAOnF,QAAQ,OAAOyF,OAAO,CAACz5B,KAAK05B,SAAS1F,QAAQ,SAAStB,GAAG,OAAOA,IAAI4C,WAAW,CAACt1B,KAAK05B,SAAS1F,QAAQ,SAAStB,GAAG,OAAM,IAAKiH,eAAe,CAAC35B,KAAK05B,SAAS1F,QAAQ,SAAStB,GAAG,MAAM,WAAWmB,IAAInB,GAAGA,EAAEZ,eAAe/5B,KAAKwhC,OAAO7G,EAAE36B,KAAKwhC,OAAOK,QAAQC,KAAK,wCAAwCj5B,OAAO7I,KAAKwhC,MAAM,cAAc,4BAA4B34B,OAAOjD,KAAKE,UAAU60B,GAAG,OAAO,wDAAwDA,IAAIoH,aAAa,CAAC95B,KAAK05B,SAAS1F,QAAQ,SAAStB,GAAG,GAAG,WAAWmB,IAAInB,GAAG,OAAOA,EAAE,IAAI,OAAOA,EAAEZ,eAAe,MAAMY,EAAEhvB,GAAG20B,EAAE3F,GAAG,MAAMv0B,GAAG,OAAOy7B,QAAQC,KAAK,2MAA2MnH,EAAEv0B,MAAM47B,MAAM,CAAC/5B,KAAK05B,SAAS1F,QAAQ,WAAWj8B,KAAKiiC,cAAcjiC,KAAKkiC,aAAaliC,KAAK49B,oBAAoBuE,SAAS,CAACl6B,KAAK6O,QAAQmlB,SAAQ,GAAImG,SAAS,CAACn6B,KAAKo6B,OAAOpG,QAAQ,MAAMqG,SAAS,CAACr6B,KAAK6O,QAAQmlB,SAAQ,GAAIsG,WAAW,CAACt6B,KAAK6O,QAAQmlB,SAAQ,GAAIuG,SAAS,CAACv6B,KAAK05B,SAAS1F,QAAQ,SAAStB,EAAEv0B,EAAE40B,GAAG,OAAO50B,GAAG,IAAIq8B,oBAAoB3E,QAAQ9C,EAAEyH,sBAAsB,IAAIn/B,OAAO,CAAC2E,KAAK05B,SAAS1F,QAAQ,SAAStB,EAAEv0B,GAAG,IAAI40B,EAAEh7B,KAAK,OAAO26B,EAAEr3B,QAAO,SAAUq3B,GAAG,IAAIl3B,EAAEu3B,EAAE4G,eAAejH,GAAG,MAAM,iBAAiBl3B,IAAIA,EAAEA,EAAEg4B,YAAYT,EAAEwH,SAAS7H,EAAEl3B,EAAE2C,QAAQs8B,aAAa,CAACz6B,KAAK05B,SAAS1F,QAAQ,SAAStB,GAAG,MAAM,WAAWmB,IAAI97B,KAAK2iC,WAAW,IAAIla,IAAI,GAAGzoB,KAAKwhC,MAAM7G,GAAGA,IAAIiI,qBAAqB,CAAC3G,SAAQ,EAAG4G,UAAU,SAASlI,GAAG,MAAM,CAAC,WAAW,WAAWmI,SAAShH,IAAInB,MAAMoI,kBAAkB,CAAC96B,KAAK05B,SAAS1F,QAAQ,SAAStB,GAAG,IAAIv0B,EAAEu0B,EAAE2G,oBAAoBtG,EAAEL,EAAE72B,SAAS,OAAOsC,IAAI40B,IAAIgI,OAAO,CAAC/6B,KAAK6O,QAAQmlB,SAAQ,GAAIgH,QAAQ,CAACh7B,KAAKm5B,QAAQ8B,IAAI,CAACj7B,KAAKm5B,OAAOnF,QAAQ,QAAQgG,YAAY,CAACh6B,KAAK6O,QAAQmlB,SAAQ,GAAIkH,iBAAiB,CAACl7B,KAAK7E,MAAM64B,QAAQ,WAAW,MAAM,CAAC,MAAMmH,yBAAyB,CAACn7B,KAAKm5B,OAAOnF,QAAQ,iBAAiBoH,WAAW,CAACp7B,KAAK05B,SAAS1F,QAAQ,SAAStB,EAAEv0B,GAAG,OAAOu0B,IAAI4E,aAAa,CAACt3B,KAAK6O,QAAQmlB,SAAQ,GAAI8D,kBAAkB,CAAC93B,KAAK05B,SAAS1F,QAAQ,SAAStB,EAAEv0B,EAAE40B,GAAG,IAAIv3B,EAAEu3B,EAAEpf,MAAM5V,EAAEg1B,EAAE7iB,IAAI2jB,EAAEd,EAAEljB,KAAK6iB,EAAE9sB,MAAMsK,IAAInS,EAAE20B,EAAE9sB,MAAMiK,KAAKgkB,EAAEnB,EAAE9sB,MAAM+N,MAAMnY,IAAI6/B,mBAAmB,CAACr7B,KAAK05B,SAAS1F,QAAQ,SAAStB,GAAG,IAAIv0B,EAAEu0B,EAAEqI,OAAOhI,EAAEL,EAAEqC,KAAKv5B,EAAEk3B,EAAEqD,eAAe,OAAO53B,GAAI40B,IAAIv3B,IAAK8/B,IAAI,CAACt7B,KAAK,CAACm5B,OAAOiB,QAAQpG,QAAQ,WAAW,OAAOvT,OAAOvkB,KAAK,WAAW,MAAM,CAACc,OAAO,GAAG+3B,MAAK,EAAGkF,aAAY,EAAGsB,WAAW,GAAG3/B,OAAO,KAAKoD,SAAS,CAACw8B,iBAAiB,WAAW,YAAO,IAASzjC,KAAKyC,OAAOzC,KAAK6+B,SAAS6E,UAAU3J,eAAe,WAAW0D,cAAc,WAAW,IAAI9C,EAAE36B,KAAKyC,MAAM,OAAOzC,KAAKyjC,mBAAmB9I,EAAE36B,KAAK2jC,MAAM9/B,QAAQ,MAAM82B,GAAG,KAAKA,EAAE,GAAG9xB,OAAO8xB,GAAG,IAAIgI,WAAW,WAAW,OAAO3iC,KAAKwD,QAAQqF,OAAO7I,KAAKsiC,SAAStiC,KAAKwjC,WAAW,KAAKI,SAAS,WAAW,OAAO5jC,KAAK6jC,aAAa5+B,OAAOjF,KAAKyF,MAAMq+B,gBAAgBC,cAAc/jC,KAAKojC,0BAA0BpjC,KAAKyF,MAAMR,QAAQ++B,MAAM,WAAW,IAAIrJ,EAAE36B,KAAKoG,EAAE,CAACnB,OAAOjF,KAAKiF,OAAOC,QAAQlF,KAAKkF,QAAQ++B,UAAUjkC,KAAKikC,UAAU3G,gBAAgBt9B,KAAKs9B,iBAAiB,MAAM,CAACr4B,OAAO,CAAC/C,WAAW0+B,EAAE,CAACG,SAAS/gC,KAAK+gC,SAASI,YAAYnhC,KAAKkkC,kBAAkB9B,SAASpiC,KAAKoiC,SAAS+B,UAAUnkC,KAAKkhC,WAAWv1B,GAAG3L,KAAKijC,QAAQ,oBAAoB,OAAO,kBAAkB,KAAKp6B,OAAO7I,KAAKujC,IAAI,cAAc,gBAAgB,KAAK16B,OAAO7I,KAAKujC,IAAI,aAAa5hC,IAAI,SAASsG,KAAK,SAASw5B,aAAazhC,KAAKyhC,aAAah/B,MAAMzC,KAAKiF,QAAQjF,KAAKokC,cAAcpkC,KAAKs9B,gBAAgBt9B,KAAK88B,kBAAkB,CAAC,wBAAwB,KAAKj0B,OAAO7I,KAAKujC,IAAI,aAAa16B,OAAO7I,KAAK88B,mBAAmB,IAAI36B,OAAO,CAACkiC,iBAAiB,WAAW,OAAO1J,EAAEuH,aAAY,GAAIoC,eAAe,WAAW,OAAO3J,EAAEuH,aAAY,GAAIqC,QAAQvkC,KAAKwkC,gBAAgBC,KAAKzkC,KAAK0kC,aAAa/R,MAAM3yB,KAAK2kC,cAAcC,MAAM,SAASx+B,GAAG,OAAOu0B,EAAE11B,OAAOmB,EAAEnD,OAAOR,SAASoiC,QAAQ,CAAC3/B,QAAQlF,KAAKg+B,gBAAgB8G,UAAU,CAAC7/B,OAAOjF,KAAKiF,OAAOC,QAAQlF,KAAKg+B,eAAeiG,UAAUjkC,KAAKikC,WAAWc,cAAc,CAAC7iC,WAAW,CAACP,IAAI,gBAAgByO,KAAK,eAAe40B,MAAM,uBAAuBC,WAAW7+B,EAAE8+B,WAAW9+B,EAAE++B,OAAOvE,EAAE,GAAGx6B,EAAE,CAACg/B,SAASplC,KAAKolC,WAAWC,OAAOzE,EAAE,GAAGx6B,EAAE,CAACg/B,SAASplC,KAAKolC,aAAaE,gBAAgB,WAAW,OAAO1E,EAAE,GAAG3B,EAAE,GAAGj/B,KAAK6G,aAAa0+B,aAAa,WAAW,MAAM,CAAC,WAAWvlC,KAAKokC,aAAa,cAAcpkC,KAAK8D,SAAS,eAAe9D,KAAK8D,SAAS,gBAAgB9D,KAAKikC,YAAYjkC,KAAKgjC,OAAO,iBAAiBhjC,KAAKkhC,aAAalhC,KAAKgjC,OAAO,oBAAoBhjC,KAAKkhC,WAAW,cAAclhC,KAAKg+B,eAAe,eAAeh+B,KAAK+gC,WAAWkD,UAAU,WAAW,QAAQjkC,KAAKiF,QAAQm/B,aAAa,WAAW,OAAOpkC,KAAKsjC,mBAAmBtjC,OAAOkkC,kBAAkB,WAAW,OAAOlkC,KAAKwlC,cAAcxlC,KAAKmhC,YAAYnhC,KAAKmhC,iBAAY,GAAQ7D,gBAAgB,WAAW,IAAI3C,EAAE,GAAG9xB,OAAO7I,KAAK2iC,YAAY,IAAI3iC,KAAKuiC,aAAaviC,KAAKmiC,SAAS,OAAOxH,EAAE,IAAIv0B,EAAEpG,KAAKiF,OAAOgB,OAAOjG,KAAKsD,OAAOq3B,EAAE36B,KAAKiF,OAAOjF,MAAM26B,EAAE,GAAG36B,KAAKmiC,UAAUniC,KAAKiF,OAAOgB,OAAO,CAAC,IAAI+0B,EAAEh7B,KAAK0iC,aAAa1iC,KAAKiF,QAAQjF,KAAKylC,aAAazK,IAAI50B,EAAEs/B,QAAQ1K,GAAG,OAAO50B,GAAGo/B,aAAa,WAAW,OAAO,IAAIxlC,KAAKy9B,cAAcx3B,QAAQ0/B,gBAAgB,WAAW,OAAO3lC,KAAK8D,UAAU9D,KAAKghC,YAAYhhC,KAAKg9B,OAAOh9B,KAAKwlC,eAAe3I,MAAM,CAACr5B,QAAQ,SAASm3B,EAAEv0B,GAAG,IAAI40B,EAAEh7B,MAAMA,KAAKmiC,WAAW,mBAAmBnH,EAAE4H,qBAAqB5H,EAAE4H,qBAAqBjI,EAAEv0B,EAAE40B,EAAEyC,eAAezC,EAAE4H,uBAAuB5iC,KAAK4lC,iBAAiB5lC,KAAKyC,OAAOzC,KAAKyjC,kBAAkBzjC,KAAK6lC,4BAA4B7lC,KAAKyC,QAAQA,MAAM,CAACqjC,WAAU,EAAGC,QAAQ,SAASpL,GAAG36B,KAAKyjC,kBAAkBzjC,KAAK6lC,4BAA4BlL,KAAK72B,SAAS,WAAW9D,KAAK4lC,kBAAkB5I,KAAK,SAASrC,GAAG36B,KAAKsyB,MAAMqI,EAAE,OAAO,WAAWzF,QAAQ,WAAWl1B,KAAKg+B,eAAeh+B,KAAKkF,QAAQlF,KAAKm1B,IAAI,iBAAiBn1B,KAAKgmC,UAAUrhC,QAAQ,CAACkhC,4BAA4B,SAASlL,GAAG,IAAIv0B,EAAEpG,KAAKoD,MAAMqe,QAAQkZ,GAAG36B,KAAK2jC,MAAM9/B,OAAO82B,EAAEh3B,KAAI,SAAUg3B,GAAG,OAAOv0B,EAAE6/B,2BAA2BtL,MAAM36B,KAAK2jC,MAAM9/B,OAAO7D,KAAKimC,2BAA2BtL,IAAIkD,OAAO,SAASlD,GAAG36B,KAAKsyB,MAAM,mBAAmBqI,GAAG36B,KAAKkmC,iBAAiBvL,GAAG36B,KAAKihC,uBAAuBjhC,KAAKghC,WAAWhhC,KAAK8D,UAAU9D,KAAKy9B,cAAcx3B,OAAO,IAAIjG,KAAKolC,SAASzK,IAAI36B,KAAKmiC,WAAWniC,KAAKylC,aAAa9K,IAAI36B,KAAKsyB,MAAM,iBAAiBqI,GAAG36B,KAAK8D,WAAW62B,EAAE36B,KAAKy9B,cAAc50B,OAAO8xB,IAAI36B,KAAKmmC,YAAYxL,GAAG36B,KAAKsyB,MAAM,kBAAkBqI,IAAI36B,KAAKomC,cAAczL,IAAIyK,SAAS,SAASzK,GAAG,IAAIv0B,EAAEpG,KAAKA,KAAKsyB,MAAM,qBAAqBqI,GAAG36B,KAAKmmC,YAAYnmC,KAAKy9B,cAAcn6B,QAAO,SAAU03B,GAAG,OAAO50B,EAAEigC,iBAAiBrL,EAAEL,OAAO36B,KAAKsyB,MAAM,oBAAoBqI,IAAIiL,eAAe,WAAW5lC,KAAKmmC,YAAYnmC,KAAK8D,SAAS,GAAG,OAAOsiC,cAAc,SAASzL,GAAG,IAAIv0B,EAAEpG,KAAKA,KAAKuhC,gBAAgBvhC,KAAKg9B,MAAMh9B,KAAKg9B,KAAKh9B,KAAK4jC,SAASa,QAAQzkC,KAAKshC,sBAAsBthC,KAAKiF,OAAO,IAAIjF,KAAKgjC,QAAQhjC,KAAK8D,UAAU9D,KAAKi9B,WAAU,WAAY,OAAO72B,EAAEX,MAAMR,OAAO0tB,YAAYwT,YAAY,SAASxL,GAAG,IAAIv0B,EAAEpG,UAAK,IAASA,KAAKyC,QAAQzC,KAAK2jC,MAAM9/B,OAAO82B,GAAG,OAAOA,IAAIA,EAAEv3B,MAAMqe,QAAQkZ,GAAGA,EAAEh3B,KAAI,SAAUg3B,GAAG,OAAOv0B,EAAEs7B,OAAO/G,MAAM36B,KAAK0hC,OAAO/G,IAAI36B,KAAKsyB,MAAM,QAAQqI,IAAI2L,eAAe,SAAS3L,GAAG,IAAIK,EAAEL,EAAE13B,SAASjD,KAAK4jC,SAAS5I,GAAGL,EAAEt0B,iBAAiB,IAAI5C,EAAE,GAAGoF,OAAOzC,IAAIpG,KAAKyF,MAAM8gC,iBAAiB,IAAIngC,IAAI,CAACpG,KAAKyF,MAAM+gC,eAAc,SAAI,IAASxmC,KAAK4jC,UAAUngC,EAAEH,OAAOwT,SAAS2vB,MAAK,SAAUrgC,GAAG,OAAOA,EAAEsgC,SAAS/L,EAAE13B,SAASmD,IAAIu0B,EAAE13B,UAAU03B,EAAEt0B,iBAAiBrG,KAAKg9B,MAAMhC,EAAEh7B,KAAK4jC,SAASa,OAAOzkC,KAAK+gC,WAAW/gC,KAAKg9B,MAAK,EAAGh9B,KAAK4jC,SAASjR,UAAUuT,iBAAiB,SAASvL,GAAG,IAAIv0B,EAAEpG,KAAK,OAAOA,KAAKy9B,cAAcgJ,MAAK,SAAUzL,GAAG,OAAO50B,EAAEigC,iBAAiBrL,EAAEL,OAAOgM,qBAAqB,SAAShM,GAAG,OAAO36B,KAAKkmC,iBAAiBvL,IAAI36B,KAAKihC,sBAAsBoF,iBAAiB,SAAS1L,EAAEv0B,GAAG,OAAOpG,KAAK+hC,aAAapH,KAAK36B,KAAK+hC,aAAa37B,IAAI6/B,2BAA2B,SAAStL,GAAG,IAAIK,EAAEh7B,KAAKyD,EAAE,GAAGoF,OAAOzC,IAAIpG,KAAKwD,SAAS4C,IAAIpG,KAAKwjC,aAAalgC,QAAO,SAAU8C,GAAG,OAAOR,KAAKE,UAAUk1B,EAAE0G,OAAOt7B,MAAMR,KAAKE,UAAU60B,MAAM,OAAO,IAAIl3B,EAAEwC,OAAOxC,EAAE,GAAGA,EAAEmjC,MAAK,SAAUjM,GAAG,OAAOK,EAAEqL,iBAAiB1L,EAAEK,EAAE2I,MAAM9/B,YAAY82B,GAAGkM,mBAAmB,WAAW7mC,KAAKg9B,MAAK,EAAGh9B,KAAKsyB,MAAM,gBAAgBwU,iBAAiB,WAAW,IAAI9mC,KAAK4jC,SAASnhC,MAAMwD,QAAQjG,KAAKy9B,eAAez9B,KAAKy9B,cAAcx3B,QAAQjG,KAAKghC,UAAU,CAAC,IAAIrG,EAAE,KAAK36B,KAAK8D,WAAW62B,EAAEv0B,IAAIpG,KAAKy9B,cAAcsJ,MAAM,EAAE/mC,KAAKy9B,cAAcx3B,OAAO,KAAKjG,KAAKmmC,YAAYxL,KAAK8K,aAAa,SAAS9K,GAAG,IAAIv0B,EAAEpG,KAAK,OAAOA,KAAK2iC,WAAW8D,MAAK,SAAUzL,GAAG,OAAO50B,EAAEigC,iBAAiBrL,EAAEL,OAAOqM,uBAAuB,SAASrM,GAAG,MAAM,WAAWmB,IAAInB,GAAGA,EAAElS,IAAI,GAAGzoB,KAAKwhC,MAAM7G,IAAIqL,QAAQ,SAASrL,GAAG36B,KAAKwjC,WAAWx7B,KAAK2yB,IAAIsM,SAAS,WAAWjnC,KAAKiF,OAAOgB,OAAOjG,KAAKiF,OAAO,GAAGjF,KAAK4jC,SAASa,QAAQC,aAAa,WAAW,IAAI1kC,KAAKknC,WAAWlnC,KAAKikC,UAAU,CAAC,IAAItJ,EAAE36B,KAAKshC,oBAAoBl7B,EAAEpG,KAAK8D,SAAS,OAAO9D,KAAK+iC,kBAAkB,CAACzB,oBAAoB3G,EAAE72B,SAASsC,MAAMpG,KAAKiF,OAAO,SAASjF,KAAK6mC,qBAAqB7mC,KAAKknC,WAAU,EAAG,IAAIlnC,KAAKiF,OAAOgB,QAAQ,IAAIjG,KAAKwD,QAAQyC,QAAQjG,KAAK6mC,sBAAsBlC,cAAc,WAAW3kC,KAAKg9B,MAAK,EAAGh9B,KAAKsyB,MAAM,iBAAiB6U,YAAY,WAAWnnC,KAAKknC,WAAU,GAAIE,UAAU,WAAWpnC,KAAKknC,WAAU,GAAI1C,gBAAgB,SAAS7J,GAAG,IAAIv0B,EAAEpG,KAAKg7B,EAAE,SAASL,GAAG,OAAOA,EAAEt0B,kBAAkBD,EAAE87B,aAAa97B,EAAEw3B,mBAAmBn6B,EAAE,CAACs4B,EAAE,SAASpB,GAAG,OAAOv0B,EAAE0gC,oBAAoBO,EAAE,SAAS1M,GAAG,OAAOv0B,EAAE47B,SAASsF,GAAG,SAAS3M,GAAG,OAAOv0B,EAAE6gC,YAAYM,GAAG,SAAS5M,GAAG,OAAOA,EAAEt0B,iBAAiBD,EAAEs3B,eAAe8J,GAAG,SAAS7M,GAAG,OAAOA,EAAEt0B,iBAAiBD,EAAEu3B,kBAAkB39B,KAAKmjC,iBAAiBjM,SAAQ,SAAUyD,GAAG,OAAOl3B,EAAEk3B,GAAGK,KAAK,IAAIh1B,EAAEhG,KAAKqjC,WAAW5/B,EAAEzD,MAAM,GAAG,mBAAmBgG,EAAE20B,EAAE8M,SAAS,OAAOzhC,EAAE20B,EAAE8M,SAAS9M,OAAM,WAAY,IAAIA,EAAE36B,KAAKoG,EAAEu0B,EAAEwE,eAAenE,EAAEL,EAAEz6B,MAAMD,IAAImG,EAAE,OAAO40B,EAAE,MAAM,CAAC76B,YAAY,WAAW6kC,MAAMrK,EAAE4K,aAAallC,MAAM,CAAC6iC,IAAIvI,EAAEuI,MAAM,CAACvI,EAAE+M,GAAG,SAAS,KAAK,KAAK/M,EAAEqJ,MAAMmB,QAAQxK,EAAEv6B,GAAG,KAAK46B,EAAE,MAAM,CAACr5B,IAAI,SAASxB,YAAY,sBAAsBE,MAAM,CAACsL,GAAG,KAAKgvB,EAAE4I,IAAI,aAAanzB,KAAK,WAAW,gBAAgBuqB,EAAEyJ,aAAa3I,WAAW,YAAY,KAAKd,EAAE4I,IAAI,YAAY,aAAa,qBAAqBxiC,GAAG,CAACmmC,UAAU,SAAS9gC,GAAG,OAAOu0B,EAAE2L,eAAelgC,MAAM,CAAC40B,EAAE,MAAM,CAACr5B,IAAI,kBAAkBxB,YAAY,wBAAwB,CAACw6B,EAAE3H,GAAG2H,EAAE8C,eAAc,SAAUr3B,GAAG,OAAOu0B,EAAE+M,GAAG,4BAA4B,CAAC1M,EAAE,OAAO,CAACp6B,IAAI+5B,EAAEoH,aAAa37B,GAAGjG,YAAY,gBAAgB,CAACw6B,EAAE+M,GAAG,kBAAkB,CAAC/M,EAAEv6B,GAAG,iBAAiBu6B,EAAEv5B,GAAGu5B,EAAEiH,eAAex7B,IAAI,iBAAiB,KAAKu0B,EAAEqM,uBAAuB5gC,IAAIu0B,EAAEv6B,GAAG,KAAKu6B,EAAE72B,SAASk3B,EAAE,SAAS,CAACr5B,IAAI,kBAAkBgmC,UAAS,EAAGxnC,YAAY,eAAeE,MAAM,CAAC0gC,SAASpG,EAAEoG,SAAS94B,KAAK,SAAS7D,MAAM,YAAYu2B,EAAEiH,eAAex7B,GAAG,aAAa,YAAYu0B,EAAEiH,eAAex7B,IAAIrF,GAAG,CAAC6mC,MAAM,SAAS5M,GAAG,OAAOL,EAAEyK,SAASh/B,MAAM,CAAC40B,EAAEL,EAAE2K,gBAAgBpG,SAAS,CAAC2I,IAAI,eAAe,GAAGlN,EAAEr5B,MAAM,IAAI,CAACQ,OAAO64B,EAAEqM,uBAAuB5gC,GAAGg/B,SAASzK,EAAEyK,SAASthC,SAAS62B,EAAE72B,SAASi9B,SAASpG,EAAEoG,cAAcpG,EAAEv6B,GAAG,KAAKu6B,EAAE+M,GAAG,SAAS,CAAC1M,EAAE,QAAQL,EAAEv4B,GAAGu4B,EAAEt4B,GAAG,CAAClC,YAAY,cAAc,QAAQw6B,EAAEqJ,MAAM/+B,OAAO/C,YAAW,GAAIy4B,EAAEqJ,MAAM/+B,OAAO9C,UAAU,KAAKw4B,EAAEqJ,MAAM/+B,SAAS,GAAG01B,EAAEv6B,GAAG,KAAK46B,EAAE,MAAM,CAACr5B,IAAI,UAAUxB,YAAY,eAAe,CAAC66B,EAAE,SAAS,CAACl4B,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASP,MAAMk4B,EAAEgL,gBAAgB9iC,WAAW,oBAAoBlB,IAAI,cAAcxB,YAAY,YAAYE,MAAM,CAAC0gC,SAASpG,EAAEoG,SAAS94B,KAAK,SAAS7D,MAAM,iBAAiB,aAAa,kBAAkBrD,GAAG,CAAC6mC,MAAMjN,EAAEiL,iBAAiB,CAAC5K,EAAEL,EAAE2K,gBAAgBpG,SAAS,CAAC2I,IAAI,eAAe,GAAGlN,EAAEv6B,GAAG,KAAKu6B,EAAE+M,GAAG,iBAAiB,CAAC/M,EAAEqI,OAAOrI,EAAEr5B,KAAK05B,EAAEL,EAAE2K,gBAAgBjG,cAAc1E,EAAEt4B,GAAG,CAACwlC,IAAI,aAAa,YAAYlN,EAAEqJ,MAAMe,cAAc7iC,YAAW,KAAM,KAAKy4B,EAAEqJ,MAAMe,eAAepK,EAAEv6B,GAAG,KAAKu6B,EAAE+M,GAAG,UAAU,CAAC1M,EAAE,MAAM,CAACl4B,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAASP,MAAMk4B,EAAEqD,eAAen7B,WAAW,mBAAmB1C,YAAY,eAAe,CAACw6B,EAAEv6B,GAAG,iBAAiB,KAAKu6B,EAAEqJ,MAAMa,UAAU,KAAKlK,EAAEv6B,GAAG,KAAK46B,EAAE,aAAa,CAAC36B,MAAM,CAAC0C,KAAK43B,EAAE0G,aAAa,CAAC1G,EAAEyJ,aAAapJ,EAAE,KAAK,CAACl4B,WAAW,CAAC,CAACC,KAAK,iBAAiBC,QAAQ,qBAAqBpC,IAAI,KAAK+5B,EAAE4I,IAAI,YAAY5hC,IAAI,eAAexB,YAAY,oBAAoBE,MAAM,CAACsL,GAAG,KAAKgvB,EAAE4I,IAAI,YAAYnzB,KAAK,UAAUgyB,SAAS,MAAMrhC,GAAG,CAACmmC,UAAU,SAAS9gC,GAAG,OAAOA,EAAEC,iBAAiBs0B,EAAEwM,YAAY/gC,IAAI0hC,QAAQnN,EAAEyM,YAAY,CAACzM,EAAE+M,GAAG,cAAc,KAAK,KAAK/M,EAAEqJ,MAAMiB,YAAYtK,EAAEv6B,GAAG,KAAKu6B,EAAE3H,GAAG2H,EAAE2C,iBAAgB,SAAUl3B,EAAE3C,GAAG,OAAOu3B,EAAE,KAAK,CAACp6B,IAAI+5B,EAAEoH,aAAa37B,GAAGjG,YAAY,sBAAsB6kC,MAAM,CAAC,gCAAgCrK,EAAEgM,qBAAqBvgC,IAAI3C,IAAIk3B,EAAEmC,iBAAiB,gCAAgCnC,EAAEuL,iBAAiB9/B,GAAG,iCAAiC3C,IAAIk3B,EAAEmC,iBAAiB,iCAAiCnC,EAAE4C,WAAWn3B,IAAI/F,MAAM,CAACsL,GAAG,KAAKgvB,EAAE4I,IAAI,YAAY9/B,EAAE2M,KAAK,SAAS,gBAAgB3M,IAAIk3B,EAAEmC,kBAAkB,MAAM/7B,GAAG,CAACgnC,UAAU,SAAS/M,GAAGL,EAAE4C,WAAWn3B,KAAKu0B,EAAEmC,iBAAiBr5B,IAAImkC,MAAM,SAAS5M,GAAGA,EAAE30B,iBAAiB20B,EAAEgN,kBAAkBrN,EAAE4C,WAAWn3B,IAAIu0B,EAAEkD,OAAOz3B,MAAM,CAACu0B,EAAE+M,GAAG,SAAS,CAAC/M,EAAEv6B,GAAG,eAAeu6B,EAAEv5B,GAAGu5B,EAAEiH,eAAex7B,IAAI,eAAe,KAAKu0B,EAAEqM,uBAAuB5gC,KAAK,MAAMu0B,EAAEv6B,GAAG,KAAK,IAAIu6B,EAAE2C,gBAAgBr3B,OAAO+0B,EAAE,KAAK,CAAC76B,YAAY,kBAAkB,CAACw6B,EAAE+M,GAAG,aAAa,CAAC/M,EAAEv6B,GAAG,sDAAsD,KAAKu6B,EAAEqJ,MAAMc,YAAY,GAAGnK,EAAEr5B,KAAKq5B,EAAEv6B,GAAG,KAAKu6B,EAAE+M,GAAG,cAAc,KAAK,KAAK/M,EAAEqJ,MAAMkB,aAAa,GAAGlK,EAAE,KAAK,CAACz6B,YAAY,CAAC6L,QAAQ,OAAO8C,WAAW,UAAU7O,MAAM,CAACsL,GAAG,KAAKgvB,EAAE4I,IAAI,YAAYnzB,KAAK,eAAeuqB,EAAEv6B,GAAG,KAAKu6B,EAAE+M,GAAG,SAAS,KAAK,KAAK/M,EAAEqJ,MAAMqB,SAAS,KAAK,IAAG,EAAG,KAAK,KAAK,MAAMxK,QAAQ6B,EAAE,CAACuL,KAAKlK,EAAEmK,QAAQ7K,EAAE8K,cAAcxL,GAAGH,EAAED,GAAn5lB,GAAy5lB94B,GAA7xoB,O,6DCA5P,IAAI3D,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,kBAAkB,CAACF,EAAG,UAAU,CAAC0B,IAAI,kBAAkBtB,MAAM,CAAC,MAAQN,EAAI6yB,WAAW,KAAO,KAAK,cAAc,IAAI7xB,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIqoC,iBAAiB,CAACnoC,EAAG,cAAc,CAACA,EAAG,SAAS,CAACc,GAAG,CAAC,OAAShB,EAAI8xB,OAAO,CAAC5xB,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,eAAeH,EAAG,QAAQ,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAY,SAAE8C,WAAW,aAAalB,IAAI,YAAYxB,YAAY,eAAeE,MAAM,CAAC,KAAO,WAAW,SAAW,IAAIc,SAAS,CAAC,MAASpB,EAAY,UAAGgB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,YAAiBnD,EAAIsoC,SAASrnC,EAAOiC,OAAOR,aAAYxC,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIgyB,YAAY,CAAChyB,EAAIK,GAAG,cAAcH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,WAAW,CAACJ,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,gBAAgBN,EAAIK,GAAG,WAAW,IAAI,MAAM,IAAI,IAAI,IAAI,IAExkC8D,EAAkB,G,wBC8BlB,OAAQorB,IAAI,SAIG,OACXxuB,MAAO,CACH,cAEJqD,KAAM,WACF,MAAO,CACHkkC,SAAU,KAGlB1jC,QAAS,CACLktB,KAAM,SAAUzrB,GACZA,EAAEC,iBACFrG,KAAKyF,MAAM,mBAAmBU,OAC9BnG,KAAKsyB,MAAM,kBAAmBtyB,KAAKqoC,WAGvCpW,UAAW,WACPjyB,KAAKqoC,SAAW,GAChBroC,KAAKyF,MAAM,mBAAmBC,QAElC,SACI1F,KAAKyF,MAAM,mBAAmBU,QAElC,cACInG,KAAKyF,MAAMitB,UAAUC,UAI7B9rB,WAAY,GAGZI,SAAU,GAGVwzB,QAAS,cCtE4M,I,YCOzNvzB,EAAY,eACd,EACApH,EACAoE,GACA,EACA,KACA,WACA,MAIa,OAAAgD,E,2CClBf,IAAIpH,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,kBAAkB,CAACF,EAAG,UAAU,CAAC0B,IAAI,kBAAkBtB,MAAM,CAAC,MAAQN,EAAI6yB,WAAW,KAAO,KAAK,cAAc,KAAK,CAAC3yB,EAAG,cAAc,CAACA,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAAEF,EAAIi0B,SAAS/tB,OAAS,EAAGhG,EAAG,MAAM,CAACA,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACJ,EAAIK,GAAG,oBAAoBL,EAAIizB,GAAIjzB,EAAY,UAAE,SAASkzB,GAAU,OAAOhzB,EAAG,IAAI,CAACE,YAAY,aAAa,CAACF,EAAG,OAAO,CAACE,YAAY,QAAQ,CAACJ,EAAIK,GAAG,eAAeL,EAAIqB,GAAG6xB,EAASC,UAAU,OAAOnzB,EAAIqB,GAAG6xB,EAASE,YAAY,OAAOpzB,EAAIK,GAAG,IAAIL,EAAIqB,GAAG6xB,EAASG,UAAU,WAAU,GAAGrzB,EAAIuB,QAAQ,GAAGrB,EAAG,YAAY,CAACI,MAAM,CAAC,iBAAiBN,EAAIuoC,aAAa,gBAAgBvoC,EAAIwoC,aAAa,oBAAoBxoC,EAAIyoC,oBAAoBvoC,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIgyB,YAAY,CAAChyB,EAAIK,GAAG,aAAcL,EAAa,UAAEE,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI0oC,iBAAiB,CAACxoC,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,gBAAgBN,EAAIK,GAAG,cAAc,GAAGL,EAAIuB,KAAMvB,EAAa,UAAEE,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAUU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI2oC,gBAAgB,CAACzoC,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,UAAUN,EAAIK,GAAG,aAAa,GAAGL,EAAIuB,MAAM,KAAwB,UAAlBvB,EAAI4oC,YAA0B5oC,EAAI01B,YAAc11B,EAAI6oC,eAAgB3oC,EAAG,MAAM,CAAEF,EAAI8oC,QAAQ5iC,OAAS,EAAGhG,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACE,YAAY,kBAAkB,CAACJ,EAAIK,GAAG,cAAcL,EAAIizB,GAAIjzB,EAAW,SAAE,SAAS+oC,GAAU,OAAO7oC,EAAG,MAAM,CAACM,YAAY,CAAC,aAAa,QAAQ,CAACN,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACJ,EAAIK,GAAGL,EAAIqB,GAAGrB,EAAIgpC,WAAWD,EAASE,WAAW,OAAOjpC,EAAIqB,GAAG0nC,EAASG,YAAY,KAAMH,EAAsB,cAAE7oC,EAAG,OAAO,CAACE,YAAY,cAAcY,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAImpC,eAAeJ,EAAS/mC,OAAO,CAAC9B,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,iBAAiB,GAAGN,EAAIuB,KAAKvB,EAAIK,GAAG,OAAOH,EAAG,IAAI,CAACF,EAAIK,GAAGL,EAAIqB,GAAG0nC,EAASK,eAAc,IAAI,GAAGppC,EAAIuB,KAAKrB,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACE,YAAY,QAAQ,CAACJ,EAAIK,GAAG,+BAA+BH,EAAG,WAAW,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAmB,gBAAE8C,WAAW,oBAAoB1C,YAAY,eAAeE,MAAM,CAAC,KAAO,IAAI,KAAO,YAAYc,SAAS,CAAC,MAASpB,EAAmB,iBAAGgB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,YAAiBnD,EAAIqpC,gBAAgBpoC,EAAOiC,OAAOR,WAAU1C,EAAIK,GAAG,KAAKH,EAAG,WAAW,CAACE,YAAY,eAAeI,YAAY,CAAC,aAAa,OAAOF,MAAM,CAAC,KAAO,MAAMU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIspC,iBAAiB,CAACtpC,EAAIK,GAAG,mBAAmB,MAAM,IAAI,GAAGL,EAAIuB,MAAM,GAAGrB,EAAG,2BAA2B,CAAC0B,IAAI,4BAA4BtB,MAAM,CAAC,cAAc,8BAA8BU,GAAG,CAAC,gBAAkBhB,EAAIupC,mBAAmBrpC,EAAG,mBAAmB,CAAC0B,IAAI,4BAA4BZ,GAAG,CAAC,gBAAkBhB,EAAIwpC,mBAAmB,IAAI,IAE/8FrlC,EAAkB,G,wBCFlB,EAAS,WAAkB,IAAInE,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,aAAa,CAAEJ,EAAY,SAAEE,EAAG,MAAM,CAAEF,EAAoB,iBAAEE,EAAG,MAAM,CAACA,EAAG,KAAK,CAACE,YAAY,OAAO,CAACJ,EAAIK,GAAG,gFAAgFH,EAAG,MAAMF,EAAIizB,GAAIjzB,EAAe,aAAE,SAASypC,GAAY,OAAOvpC,EAAG,MAAM,CAACA,EAAG,MAAM,CAACM,YAAY,CAAC,YAAY,OAAO,eAAe,QAAQ,aAAa,QAAQF,MAAM,CAAC,IAAMN,EAAI0pC,gBAAgBD,WAAmB,KAAKvpC,EAAG,MAAM,CAACA,EAAG,SAAS,CAACW,IAAIb,EAAI2pC,WAAWvpC,YAAY,UAAUE,MAAM,CAAC,KAAO,kBAAkB,KAAON,EAAI4pC,kBAEnlB,EAAkB,G,wBCqBH,GACX7oC,MAAO,CACH,eACA,eACA,oBAEJqD,KAAM,WACF,MAAO,CACHylC,WAAY,EACZF,WAAY,IAGpB/kC,QAAS,CACL,gBACI3E,KAAK4E,WAAWC,eAAe,MAAO,0BAA2B,CAAEk0B,OAAQ/4B,KAAKsoC,cAAgBtoC,KAAK6pC,qBAAsB,QAAW,IAE1I,qBAAqB7kC,GACjBhF,KAAK4pC,WAAa5kC,EAASb,KAAKA,KAAKylC,YAEzC,gBAAgBE,GACZ,OAAO9pC,KAAK+pC,SAAW,+BAAiC/pC,KAAKgqC,YAAYhqC,KAAKuoC,cAAgB,WAAavoC,KAAKsoC,aAAe,cAAgBwB,GAEnJ,YAAYlF,GACR,GAAIA,EAAO,CACP,IAAIqF,EAAYrF,EAAMsF,WAAW,IAAK,IACjCA,WAAW,IAAK,IAChBA,WAAW,IAAK,IACrB,OAAOD,EAEP,OAAOrF,GAIf,aACI5kC,KAAK0pC,eAGbjP,QAAS,WACDz6B,KAAKmqC,UAAqC,MAAzBnqC,KAAKwoC,kBACtBxoC,KAAKoqC,iBAIbnjC,SAAU,CACN0iC,UAAW,WACP,GAA6B,MAAzB3pC,KAAKwoC,iBACL,OAAOxoC,KAAK+pC,SAAW,kCAAoC/pC,KAAKgqC,YAAYhqC,KAAKuoC,cAAgB,WAAavoC,KAAKsoC,aAEnH,GAAItoC,KAAKwoC,iBAAiB6B,OAAQ,CAC9B,IAAIC,EAAetqC,KAAKwoC,iBAAiB6B,OAAOvhC,KAAK,KACrD,OAAO9I,KAAK+pC,SAAW,+DAAiEO,EAEvF,OAAyC,MAArCtqC,KAAKwoC,iBAAiB+B,YACpBvqC,KAAK+pC,SAAW,oEAAsE/pC,KAAKwoC,iBAAiB3S,QAAU,gBAAkB71B,KAAKwoC,iBAAiBgC,YAG9JxqC,KAAK+pC,SAAW,oEAAsE/pC,KAAKwoC,iBAAiB3S,QAAU,gBAAkB71B,KAAKwoC,iBAAiBgC,YAAa,gBAAkBxqC,KAAKwoC,iBAAiB+B,aAKtOJ,SAAU,WACN,OAAO,eAEXM,YAAa,WACT,IAAIC,EAAc,GAClB,IAAK,IAAI1kC,EAAI,EAAGA,EAAIhG,KAAK4pC,WAAY5jC,IACjC0kC,EAAY1iC,KAAKhC,GAErB,OAAO0kC,IAGf,UACI,IAAI3kC,EAAK/F,KACT,OAASm1B,IAAI,oBAAqBpvB,EAAG4kC,aAEzC,gBACI,OAASpV,KAAK,uBCpGoL,I,wBCQ1MruB,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,oBCnBX,EAAS,WAAkB,IAAInH,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,oBAAoB,CAACF,EAAG,UAAU,CAAC0B,IAAI,kBAAkBtB,MAAM,CAAC,MAAQ,kBAAkB,KAAO,KAAK,cAAc,IAAIU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIqoC,iBAAiB,CAACnoC,EAAG,cAAc,CAACA,EAAG,SAAS,CAACc,GAAG,CAAC,OAAShB,EAAI8xB,OAAO,CAAC5xB,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,8CAA8CH,EAAG,WAAW,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAY,SAAE8C,WAAW,aAAalB,IAAI,YAAYxB,YAAY,eAAeE,MAAM,CAAC,KAAO,IAAI,KAAO,YAAYc,SAAS,CAAC,MAASpB,EAAY,UAAGgB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,YAAiBnD,EAAIqzB,SAASpyB,EAAOiC,OAAOR,aAAYxC,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIgyB,YAAY,CAAChyB,EAAIK,GAAG,cAAcH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,SAAS,KAAO,WAAW,CAACJ,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,MAAO,UAAUN,EAAIK,GAAG,aAAa,IAAI,MAAM,IAAI,IAAI,IAAI,IAExmC,EAAkB,GC8BlB,OAAQkvB,IAAI,QAIG,OACXxuB,MAAO,CACH,cAEJqD,KAAM,WACF,MAAO,CACHivB,SAAU,KAGlBzuB,QAAS,CACLktB,KAAM,SAAUzrB,GACZA,EAAEC,iBACFrG,KAAKyF,MAAM,mBAAmBU,OAC9BnG,KAAKsyB,MAAM,kBAAmBtyB,KAAKozB,WAGvCnB,UAAW,WACPjyB,KAAKozB,SAAW,GAChBpzB,KAAKyF,MAAM,mBAAmBC,QAElC,SACI1F,KAAKyF,MAAM,mBAAmBU,QAElC,cACInG,KAAKyF,MAAMitB,UAAUC,UAI7B9rB,WAAY,GAGZI,SAAU,GAGVwzB,QAAS,cCtEoM,ICOjN,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,I,QCkDX,OAAQnL,IAAI,QAEZ,OAAQA,IAAI,SAQG,OACXxuB,MAAO,CACH,aAEJqD,KAAM,WACF,MAAO,CACHsxB,WAAY,GACZ6S,aAAc,GACd1V,WAAY,GACZ2V,aAAc,GACdC,iBAAkB,KAClBxU,SAAU,GACV6U,QAAS,GACTD,gBAAgB,EAChBD,WAAY,GACZS,gBAAiB,OAGzBzkC,QAAS,CACLimC,gBAAiB,SAAUC,EAAWC,EAAWC,EAAc7S,EAAa,MACxEl4B,KAAKg0B,SAAW,GAChBh0B,KAAKsoC,aAAeuC,EACpB7qC,KAAK4yB,WAAakY,EAClB9qC,KAAKuoC,aAAewC,EACpB/qC,KAAKy1B,WAAayC,EAClBl4B,KAAK2oC,WAAa,SAClB3oC,KAAKopC,gBAAkB,KACvBppC,KAAK4C,KAAK5C,KAAM,mBAAoB,MAChCk4B,GAAgC,GAAlBl4B,KAAKgrC,WACnBhrC,KAAKirC,cAEL/S,GACAl4B,KAAKkrC,aAGTlrC,KAAKyF,MAAM,mBAAmBC,QAElCylC,6BAA8B,SAAUC,GACpCprC,KAAKg0B,SAAW,GAChBh0B,KAAK4yB,WAAa,iBAClB5yB,KAAK2oC,WAAa,QAClB3oC,KAAKopC,gBAAkB,KACvBppC,KAAK4C,KAAK5C,KAAM,mBAAoB,CAAEqqC,OAAQe,IAC9CprC,KAAKyF,MAAM,mBAAmBC,QAElC2lC,+BAAgC,SAAUxV,EAAS2U,EAAaD,GAC5DvqC,KAAKg0B,SAAW,GAChBh0B,KAAK2oC,WAAa,QAClB3oC,KAAKopC,gBAAkB,KACvBppC,KAAK4yB,WAAa,mBAAqB4X,GAA+B,MAAfD,EAAsB,GAAI,KAAOA,GACxFvqC,KAAK4C,KAAK5C,KAAM,mBAAoB,CAAC61B,QAASA,EAAS2U,YAAaA,EAAaD,YAAaA,IAC9FvqC,KAAKyF,MAAM,mBAAmBC,QAElCqsB,OAAQ,WACJ/xB,KAAKyF,MAAM,mBAAmBU,QAElCsiC,YAAa,WACTzoC,KAAKyF,MAAM,6BAA6BwsB,aAE5CyW,WAAY,WACR1oC,KAAKyF,MAAM,6BAA6BwsB,aAE5C,gBAAgBiH,GACZl5B,KAAKsrC,wBAAwBtrC,KAAKy1B,WAAY,WAAY,KAAMyD,IAEpE,eAAeqS,GACXvrC,KAAKsrC,wBAAwBtrC,KAAKy1B,WAAY,WAAY8V,EAAU,OAExE,wBAAwBrT,EAAYsT,EAAkBD,EAAUrS,GAC5Dl5B,KAAK4E,WAAWC,eAAe,OAAQ,oCAAqC,CAAE+wB,WAAYsC,EAAY3E,iBAAkBiY,EAAkBpY,SAAUmY,EAAUlD,SAAUnP,GAAYl5B,KAAKyrC,+BAAgC,QAAW,IAExO,+BAA+BzmC,GAC3B,OAASstB,MAAM,iBAAkBtyB,KAAK8zB,eAGtC9zB,KAAKyF,MAAM,mBAAmBU,QAElC,cACInG,KAAK4E,WAAWC,eAAe,MAAO,wBAAyB,CAAE+wB,WAAY51B,KAAKy1B,YAAcz1B,KAAK0rC,mBAAoB,QAAW,IAExI,mBAAmB1mC,GACfhF,KAAKg0B,SAAWhvB,EAASb,KAAKA,MAElC,WAAW1B,EAAO4C,EAAM,cACpB,OAAiB,MAAT5C,EACF,GACA8C,OAAO9C,EAAO,cAAc+C,OAAOH,IAI7C,aACIrF,KAAK4E,WAAWC,eAAe,MAAO,kBAAmB,CAAE+wB,WAAY51B,KAAKy1B,YAAcz1B,KAAK2rC,kBAAmB,QAAW,IAEjI,kBAAkB3mC,GAEdhF,KAAK6oC,QAAU7jC,EAASb,KAAKA,KAAKynC,WAClC5rC,KAAK4oC,eAAiB5jC,EAASb,KAAKA,KAAK0nC,oBAE7C,cACI7rC,KAAK4E,WAAWC,eAAe,OAAQ,kBAAmB,CAAE+wB,WAAY51B,KAAKy1B,WAAY0T,KAAMnpC,KAAKopC,iBAAmBppC,KAAK8rC,mBAAoB,QAAW,IAE/J,mBAAmB9mC,GACfhF,KAAKopC,gBAAkB,KACvB,OAAS9W,MAAM,oBAAoB,mBACnCtyB,KAAKkrC,cAET,eAAev/B,GACX3L,KAAK4E,WAAWC,eAAe,SAAU,mBAAqB8G,EAAI,GAAM3L,KAAK8rC,mBAAoB,QAAW,KAIpHjlC,WAAY,CACRklC,YACAC,mBACArS,2BAAA,MAEJ1yB,SAAU,GAGVwzB,QAAS,cCrMkM,ICO/M,EAAY,eACd,EACA36B,EACAoE,GACA,EACA,KACA,WACA,MAIa,S,4BClBf02B,EAAOC,QACE,SAAUoR,GAET,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUvR,QAGnC,IAAID,EAASsR,EAAiBE,GAAY,CACzCpmC,EAAGomC,EACHzP,GAAG,EACH9B,QAAS,IAUV,OANAoR,EAAQG,GAAU7oC,KAAKq3B,EAAOC,QAASD,EAAQA,EAAOC,QAASsR,GAG/DvR,EAAO+B,GAAI,EAGJ/B,EAAOC,QAqCf,OAhCAsR,EAAoB5P,EAAI0P,EAGxBE,EAAoB9O,EAAI6O,EAGxBC,EAAoBjQ,EAAI,SAASrB,EAAS93B,EAAMspC,GAC3CF,EAAoB1oC,EAAEo3B,EAAS93B,IAClC82B,OAAOqB,eAAeL,EAAS93B,EAAM,CACpCq4B,cAAc,EACdD,YAAY,EACZgB,IAAKkQ,KAMRF,EAAoBnR,EAAI,SAASJ,GAChC,IAAIyR,EAASzR,GAAUA,EAAOoB,WAC7B,WAAwB,OAAOpB,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAuR,EAAoBjQ,EAAEmQ,EAAQ,IAAKA,GAC5BA,GAIRF,EAAoB1oC,EAAI,SAAS6oC,EAAQC,GAAY,OAAO1S,OAAOx2B,UAAU02B,eAAex2B,KAAK+oC,EAAQC,IAGzGJ,EAAoBjO,EAAI,GAGjBiO,EAAoBA,EAAoBrQ,EAAI,GA9DpD,CAiEC,CAEJ,SAAUlB,EAAQC,EAASsR,GAEjC,aAGA,IAAIK,EAAW3S,OAAO4S,QAAU,SAAUxpC,GAAU,IAAK,IAAI+C,EAAI,EAAGA,EAAIuB,UAAUtB,OAAQD,IAAK,CAAE,IAAI0mC,EAASnlC,UAAUvB,GAAI,IAAK,IAAIpF,KAAO8rC,EAAc7S,OAAOx2B,UAAU02B,eAAex2B,KAAKmpC,EAAQ9rC,KAAQqC,EAAOrC,GAAO8rC,EAAO9rC,IAAY,OAAOqC,GAEnP0pC,EAAWR,EAAoB,GAE/BS,EAAWT,EAAoB,GAC/BU,EAAgBD,EAASC,cACzBC,EAAWF,EAASE,SACpBC,EAAeH,EAASG,aACxBC,EAAcJ,EAASI,YAEvBC,EAAK,IAAIN,EAETO,EAAUD,EAAGE,aACbC,EAASH,EAAGI,YACZC,EAASL,EAAGM,YACZC,EAAKP,EAAGQ,QACRC,EAAKT,EAAGU,QAERC,EAASf,EAAce,OACvBC,EAAWhB,EAAcgB,SACzBC,EAAKjB,EAAciB,GACnBC,EAAoBlB,EAAckB,kBAClCC,EAAQnB,EAAcmB,MACtBC,EAAUpB,EAAcoB,QACxBC,EAASrB,EAAcqB,OACvBC,EAAOtB,EAAcsB,KACrBC,EAASvB,EAAcuB,OACvBC,EAAgBxB,EAAcwB,cAC9BC,EAASvB,EAAauB,OACtBC,EAASxB,EAAawB,OACtBC,EAAWzB,EAAayB,SACxBC,EAAU1B,EAAa0B,QACvBC,EAAW3B,EAAa2B,SACxBC,EAAU5B,EAAa4B,QACvBC,EAAU9B,EAAS8B,QACnBC,EAAgB/B,EAAS+B,cACzBC,EAAMhC,EAASgC,IAGfC,EAAY,SAAmB9mC,GACjC,OAAQA,GACN,KAAKqmC,EACH,MAAO,CAAEU,UAAU,GACrB,KAAKT,EACH,MAAO,CAAEU,UAAU,GACrB,KAAKT,EACH,MAAO,CAAEU,WAAW,GACtB,KAAKP,EACH,MAAO,CAAEQ,WAAW,GACtB,KAAKT,EACH,MAAO,CAAEU,YAAY,GACvB,KAAKX,EACH,MAAO,CAAEY,WAAW,GACtB,QACE,OAAOrC,IAITsC,EAAa,SAAoBD,EAAWnC,EAASI,EAAQE,EAAIE,GACnE,MAAO,CACL2B,UAAWA,EACXE,oBAAqBrC,EAAQsC,MAC7BC,mBAAoBvC,EAAQwC,QAC5BC,YAAazC,EAAQnqC,KACrB6sC,WAAYtC,EAAOvqC,OAAQ,EAC3B8sC,cAAevC,EAAOoC,QACtBI,OAAQtC,EAAGzqC,KACXgtC,UAAWvC,EAAGkC,QACdM,UAAWtC,IAIXuC,EAAgB,SAAuBhoC,EAAMmlC,EAAQI,EAAIE,GAC3D,OAAOlB,EAAS,GAAIvkC,EAAM,CACxBioC,OAAQ9C,EAAO8C,OACf1tC,MAAO4qC,EAAO5qC,MACdgrC,GAAIA,EAAGzqC,KACPgtC,UAAWvC,EAAGkC,QACdhC,GAAIA,KAIJyC,EAAa,SAAoBjB,EAAW5B,EAAQE,EAAIE,GAC1D,MAAO,CACLwB,UAAWA,EACXU,WAAYtC,EAAOvqC,KACnB8sC,cAAevC,EAAOoC,QACtBI,OAAQtC,EAAGzqC,KACXgtC,UAAWvC,EAAGkC,QACdM,UAAWtC,IAIX0C,EAAiB,SAAwBjB,EAAW7B,EAAQE,EAAIE,GAClE,MAAO,CACLyB,UAAWA,EACXS,WAAYtC,EAAOvqC,KACnB8sC,cAAevC,EAAOoC,QACtBI,OAAQtC,EAAGzqC,KACXgtC,UAAWvC,EAAGkC,QACdM,UAAWtC,IAIX2C,EAAc,SAAqBjB,EAAY9B,EAAQE,EAAIE,GAC7D,MAAO,CACL0B,WAAYA,EACZQ,WAAYtC,EAAOvqC,KACnB8sC,cAAevC,EAAOoC,QACtBI,OAAQtC,EAAGzqC,KACXgtC,UAAWvC,EAAGkC,QACdM,UAAWtC,IAIX4C,EAAe,WACjB,OAAOlD,EAAOnlC,OAASqmC,GAErBiC,EAAe,WACjB,OAAOnD,EAAOnlC,OAASsmC,GAGrBiC,EAAwB,WAC1B,OAAQpD,EAAOnlC,MACb,KAAKqmC,EACL,KAAKC,EACH,OAAO,EACT,QACE,OAAO,IAITkC,EAAgB,WAClB,OAAOrD,EAAOnlC,OAASumC,GAErBkC,EAAgB,WAClB,OAAOtD,EAAOnlC,OAASwmC,GAErBkC,EAAiB,WACnB,OAAOvD,EAAOnlC,OAASymC,GAErBkC,EAAgB,WAClB,OAAOxD,EAAOnlC,OAAS0mC,GAErBkC,EAAgB,WAClB,OAAOrD,EAAGzqC,OAAS6rC,GAEjBkC,EAAiB,WACnB,OAAOtD,EAAGzqC,OAAS8rC,GAEjBkC,EAAY,WACd,OAAOvD,EAAGzqC,OAAS+rC,GAEjBkC,EAAe,WACjB,OAAO9D,EAAQnqC,OAAS6qC,GAEtBqD,EAAgB,WAClB,OAAO/D,EAAQnqC,OAASkrC,GAEtBiD,EAAiB,WACnB,OAAOhE,EAAQnqC,OAAS8qC,GAEtBsD,GAAa,WACf,OAAOjE,EAAQnqC,OAASorC,GAEtBiD,GAAe,WACjB,OAAOlE,EAAQnqC,OAASqrC,GAEtBiD,GAAe,WACjB,OAAOnE,EAAQnqC,OAASmrC,GAAUhB,EAAQnqC,OAASsrC,GAGjDiD,GAAqB,WACvB,OAAOpE,EAAQnqC,OAASsrC,GAEtBkD,GAAc,WAChB,OAAOrE,EAAQnqC,OAASirC,GAEtBwD,GAAW,WACb,OAAOtE,EAAQnqC,OAASgrC,GAAqBb,EAAQnqC,OAAS+qC,GAG5D2D,GAAwB,WAC1B,OAAOvE,EAAQsC,OAEbkC,GAAoB,WACtB,OAAOxE,EAAQwC,SAEbiC,GAAe,WACjB,OAAOnE,EAAGkC,QAAUlC,EAAGkC,QAAU,QAE/BkC,GAAY,WACd,OAAOpE,EAAGzqC,KAAOyqC,EAAGzqC,KAAO,QAEzB8uC,GAAiB,WACnB,OAAO3E,EAAQnqC,MAEb+uC,GAAkB,WACpB,OAAO1E,EAAO8C,OAAS9C,EAAO8C,OAAS,QAErC6B,GAAiB,WACnB,OAAO3E,EAAO5qC,MAAQ4qC,EAAO5qC,MAAQ,QAEnCwvC,GAAgB,WAClB,OAAO1E,EAAOvqC,MAEZkvC,GAAmB,WACrB,OAAO3E,EAAOoC,SAEZwC,GAAe,WACjB,OAAOxE,GAELyE,GAAgB,WAClB,OAAO/E,EAAOnlC,MAGZinC,GAAYuB,IACZtB,GAAYyB,IACZxB,GAAauB,IACbyB,GAAiBd,KACjBe,GAAanB,IACblC,GAAWwB,IACX8B,GAAehC,IACfrB,GAAWsB,IACXlB,GAAYqB,IACZ6B,GAAY1B,IACZ2B,GAAa1B,IACb2B,GAAQ1B,IACR2B,GAAW1B,IACX2B,GAAY1B,IACZ2B,GAAWvB,KACXwB,GAAUtB,KACVuB,GAAOtB,KACPzB,GAAY4B,KACZ7B,GAAS8B,KACTmB,GAAqBtB,KACrBuB,GAAiBtB,KACjB/B,GAAckC,KACdoB,GAAenB,KACfoB,GAAcnB,KACdnC,GAAaoC,KACbnC,GAAgBoC,KAChBtE,GAAQuE,KACRiB,GAAShC,KACTiC,GAAWhC,KACXiC,GAAalB,KAEblqC,GAAO8mC,EAAU3B,EAAOnlC,MAE5B,SAASqrC,KACP,IAAIjE,EAAYpnC,GAAKonC,UACjBL,EAAW/mC,GAAK+mC,SAChBC,EAAWhnC,GAAKgnC,SAChBC,EAAYjnC,GAAKinC,UACjBC,EAAYlnC,GAAKknC,UACjBC,EAAannC,GAAKmnC,WAEtB,OAAIC,EACKC,EAAWD,EAAWnC,EAASI,EAAQE,EAAIE,GAGhDwB,EACKiB,EAAWjB,EAAW5B,EAAQE,EAAIE,GAGvCyB,EACKiB,EAAejB,EAAW7B,EAAQE,EAAIE,GAG3CsB,GAIAC,EAHKgB,EAAchoC,GAAMmlC,EAAQI,EAAIE,GAOrC0B,EACKiB,EAAYjB,EAAY9B,EAAQE,EAAIE,QAD7C,EAKF9S,EAAOC,QAAU,CACfyY,aAAcA,GACdpE,UAAWA,GACXC,UAAWA,GACXC,WAAYA,GACZgD,eAAgBA,GAChBC,WAAYA,GACZrD,SAAUA,GACVsD,aAAcA,GACdrD,SAAUA,GACVI,UAAWA,GACXkD,UAAWA,GACXC,WAAYA,GACZC,MAAOA,GACPC,SAAUA,GACVC,UAAWA,GACXC,SAAUA,GACVC,QAASA,GACTC,KAAMA,GACN/C,UAAWA,GACXD,OAAQA,GACRiD,mBAAoBA,GACpBC,eAAgBA,GAChBrD,YAAaA,GACbsD,aAAcA,GACdC,YAAaA,GACbtD,WAAYA,GACZC,cAAeA,GACflC,MAAOA,GACPwF,OAAQA,GACRC,SAAUA,GACVC,WAAYA,KAKR,SAAUzY,EAAQC,EAASsR,GAEjC,IAAIoH;;;;;;;;IAQJ,SAAU9T,EAAO7a,GAAW,aAAa,IAAI4uB,EAAW,SAASC,EAAM,GAAGC,EAAQ,IAAIC,EAAU,WAAWC,EAAW,YAAYC,EAAS,SAASC,EAAS,SAASC,EAAM,QAAQC,EAAM,QAAQC,EAAK,OAAOC,EAAK,OAAOC,EAAO,SAASC,EAAQ,UAAUC,EAAa,eAAe1F,EAAQ,UAAUL,EAAO,SAASC,EAAO,SAAS+F,EAAQ,UAAU5F,EAAS,WAAW6F,EAAS,WAAeC,EAAK,CAACC,OAAO,SAASC,EAAQC,GAAY,IAAIC,EAAc,GAAG,IAAI,IAAI5uC,KAAK0uC,EAAYC,EAAW3uC,IAAI2uC,EAAW3uC,GAAGC,OAAO,IAAI,EAAG2uC,EAAc5uC,GAAG2uC,EAAW3uC,GAAG6C,OAAO6rC,EAAQ1uC,IAAS4uC,EAAc5uC,GAAG0uC,EAAQ1uC,GAAI,OAAO4uC,GAAeC,IAAI,SAASC,EAAKC,GAAM,MAAiB,kBAAPD,IAA0E,IAAlDC,EAAKC,cAAclX,QAAQgX,EAAKE,gBAAwCC,SAAS,SAASC,GAAK,OAAOA,EAAIF,eAAexF,MAAM,SAASE,GAAS,cAAcA,IAAUoE,EAASpE,EAAQyF,QAAQ,WAAW,IAAI37B,MAAM,KAAK,GAAGoL,GAAWwwB,KAAK,SAASF,GAAK,OAAOA,EAAIC,QAAQ,qCAAqC,MAAUE,EAAO,CAACC,IAAI,SAAS5H,EAAG6H,GAAQ,IAAQC,EAAEC,EAAEvX,EAAEwX,EAAEC,EAAQC,EAApB5vC,EAAE,EAAwB,MAAMA,EAAEuvC,EAAOtvC,SAAS0vC,EAAQ,CAAC,IAAIE,EAAMN,EAAOvvC,GAAGlF,EAAMy0C,EAAOvvC,EAAE,GAAGwvC,EAAEC,EAAE,EAAE,MAAMD,EAAEK,EAAM5vC,SAAS0vC,EAAqC,GAA5BA,EAAQE,EAAML,KAAKM,KAAKpI,GAASiI,EAAS,IAAIzX,EAAE,EAAEA,EAAEp9B,EAAMmF,OAAOi4B,IAAK0X,EAAMD,IAAUF,GAAGC,EAAE50C,EAAMo9B,UAAawX,IAAI7B,GAAU6B,EAAEzvC,OAAO,EAAgB,GAAVyvC,EAAEzvC,cAAqByvC,EAAE,IAAI/B,EAAW3zC,KAAK01C,EAAE,IAAIA,EAAE,GAAGnyC,KAAKvD,KAAK41C,GAAY51C,KAAK01C,EAAE,IAAIA,EAAE,GAAsB,GAAVA,EAAEzvC,cAAqByvC,EAAE,KAAK/B,GAAa+B,EAAE,GAAGI,MAAMJ,EAAE,GAAGv2B,KAAkEnf,KAAK01C,EAAE,IAAIE,EAAMA,EAAMT,QAAQO,EAAE,GAAGA,EAAE,IAAI9wB,EAArG5kB,KAAK01C,EAAE,IAAIE,EAAMF,EAAE,GAAGnyC,KAAKvD,KAAK41C,EAAMF,EAAE,IAAI9wB,EAAsF,GAAV8wB,EAAEzvC,SAAWjG,KAAK01C,EAAE,IAAIE,EAAMF,EAAE,GAAGnyC,KAAKvD,KAAK41C,EAAMT,QAAQO,EAAE,GAAGA,EAAE,KAAK9wB,GAAgB5kB,KAAK01C,GAAGE,GAAYhxB,EAAa5e,GAAG,IAAIkvC,IAAI,SAASA,EAAIvxC,GAAK,IAAI,IAAIqC,KAAKrC,EAAK,UAAUA,EAAIqC,KAAK6tC,GAAUlwC,EAAIqC,GAAGC,OAAO,GAAG,IAAI,IAAIuvC,EAAE,EAAEA,EAAE7xC,EAAIqC,GAAGC,OAAOuvC,IAAK,GAAGhB,EAAKK,IAAIlxC,EAAIqC,GAAGwvC,GAAGN,GAAM,OAAOlvC,IAAI0tC,EAAQ9uB,EAAU5e,OAAS,GAAGwuC,EAAKK,IAAIlxC,EAAIqC,GAAGkvC,GAAM,OAAOlvC,IAAI0tC,EAAQ9uB,EAAU5e,EAAG,OAAOkvC,IAAUa,EAAK,CAAC7I,QAAQ,CAAC8I,UAAU,CAACtG,QAAQ,CAAC,MAAM,KAAKuG,IAAI,KAAKC,IAAI,KAAK,MAAM,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,IAAI,OAAO9I,OAAO,CAAC+I,OAAO,CAAC3zC,MAAM,CAAC,aAAa,CAAC,KAAK,QAAQ4zC,OAAO,CAAC5zC,MAAM,CAAC,eAAe,UAAU0tC,OAAO,CAACmG,IAAI,MAAMC,OAAO,YAAY9I,GAAG,CAAC+I,QAAQ,CAAC7G,QAAQ,CAAC8G,GAAG,OAAO,UAAU,SAAS,SAAS,QAAQC,IAAK,SAASC,GAAG,CAAC,SAAS,UAAUC,MAAM,SAASC,EAAE,SAAS7a,EAAE,SAAS8a,IAAI,SAASC,GAAG,CAAC,SAAS,WAAWC,GAAG,UAAcrC,EAAQ,CAACxH,QAAQ,CAAC,CAAC,6BAA6B,8CAA8C,+BAA+B,4BAA4B,CAAC+G,EAAKG,GAAS,CAAC,4BAA4B,CAAC,CAACH,EAAK,cAAcG,GAAS,CAAC,uBAAuB,CAAC,CAACH,EAAK,SAASG,GAAS,CAAC,uBAAuB,+DAA+D,6DAA6D,4BAA4B,uBAAuB,mIAAmI,CAACH,EAAKG,GAAS,CAAC,6CAA6C,CAAC,CAACH,EAAK,MAAMG,GAAS,CAAC,yCAAyC,CAAC,CAACH,EAAK,QAAQG,GAAS,CAAC,2BAA2B,CAAC,CAACH,EAAK,UAAUG,GAAS,CAAC,wBAAwB,CAAC,CAACH,EAAK,UAAUG,GAAS,CAAC,6DAA6D,CAAC,CAACH,EAAK,aAAaG,GAAS,CAAC,+BAA+B,CAAC,CAACH,EAAK,KAAK,KAAKG,GAAS,CAAC,gCAAgC,CAAC,CAACH,EAAK,UAAUG,GAAS,CAAC,+BAA+B,CAACH,EAAKG,GAAS,CAAC,oBAAoB,CAACH,EAAKG,GAAS,CAAC,kCAAkC,CAACH,EAAKG,GAAS,CAAC,kCAAkC,CAACH,EAAKG,GAAS,CAAC,mCAAmC,CAACH,EAAKG,GAAS,CAAC,6BAA6B,CAACH,GAAM,CAAC,gBAAgB,CAACA,GAAM,CAAC,mCAAmC,CAACG,EAAQ,CAACH,EAAK,iBAAiB,CAAC,sBAAsB,CAACG,EAAQ,CAACH,EAAK,aAAa,CAAC,qCAAqC,CAACG,EAAQ,CAACH,EAAK,oBAAoB,CAAC,gCAAgC,CAAC,CAACA,EAAK,OAAO,cAAcG,GAAS,CAAC,2CAA2C,CAAC,CAACH,EAAK,mBAAmB,SAASG,GAAS,CAAC,8DAA8D,CAACA,EAAQ,CAACH,EAAK,oBAAoB,CAAC,gEAAgE,CAACA,EAAKG,GAAS,CAAC,wBAAwB,CAAC,CAACH,EAAK,WAAWG,GAAS,CAAC,yCAAyC,CAAC,CAACH,EAAK,UAAUG,GAAS,CAAC,uBAAuB,CAAC,CAACH,EAAK,eAAeG,GAAS,CAAC,sBAAsB,CAACA,EAAQ,CAACH,EAAK,YAAY,CAAC,+CAA+C,CAACG,EAAQ,CAACH,EAAK,kBAAkB,CAAC,kDAAkD,CAACG,EAAQH,GAAM,CAAC,oEAAoE,CAAC,CAACA,EAAK,OAAOG,GAAS,CAAC,iDAAiD,CAACH,EAAK,CAACG,EAAQiB,EAAOH,IAAIa,EAAK7I,QAAQ8I,UAAUtG,UAAU,CAAC,0BAA0B,8BAA8B,CAACuE,EAAKG,GAAS,CAAC,qCAAqC,CAAC,CAACH,EAAK,YAAYG,GAAS,CAAC,cAAc,gGAAgG,uGAAuG,0CAA0C,8EAA8E,wBAAwB,2BAA2B,iCAAiC,4BAA4B,CAACH,EAAKG,IAAU4C,IAAI,CAAC,CAAC,iDAAiD,CAAC,CAAC3C,EAAa,UAAU,CAAC,gBAAgB,CAAC,CAACA,EAAaG,EAAKS,WAAW,CAAC,0BAA0B,CAAC,CAACZ,EAAa,SAAS,CAAC,gCAAgC,CAAC,CAACA,EAAa,QAAQ,CAAC,2CAA2C,CAAC,CAACA,EAAa,OAAO,GAAGG,EAAKS,WAAW,CAAC,kBAAkB,CAAC,CAACZ,EAAa,UAAU,CAAC,+GAA+G,CAAC,CAACA,EAAaG,EAAKS,YAAY7H,OAAO,CAAC,CAAC,6CAA6C,CAAC4G,EAAMG,EAAO,CAACD,EAAK3F,IAAS,CAAC,oCAAoC,CAACyF,EAAM,CAACG,EAAO,SAAS,CAACD,EAAK3F,IAAS,CAAC,qBAAqB,CAAC,CAACyF,EAAM,YAAY,CAACG,EAAO,UAAU,CAAC,yBAAyB,oBAAoB,kBAAkB,uBAAuB,+BAA+B,oCAAoC,CAACA,EAAOH,EAAM,CAACE,EAAK3F,IAAS,CAAC,gCAAgC,CAACyF,EAAM,CAACG,EAAO,UAAU,CAACD,EAAK3F,IAAS,CAAC,6CAA6C,CAAC,CAACyF,EAAMqB,EAAOH,IAAIa,EAAK3I,OAAO+I,OAAO3zC,OAAO,CAAC2xC,EAAO,UAAU,CAACD,EAAK5F,IAAS,CAAC,mCAAmC,CAAC0F,EAAMG,EAAO,CAACD,EAAK5F,IAAS,CAAC,0BAA0B,CAAC0F,EAAM,CAACG,EAAO,SAAS,CAACD,EAAK5F,IAAS,CAAC,2BAA2B,mGAAmG,qBAAqB,kBAAkB,CAAC6F,EAAOH,EAAM,CAACE,EAAK5F,IAAS,CAAC,mBAAmB,CAAC0F,EAAM,CAACG,EAAO,cAAc,CAACD,EAAK5F,IAAS,CAAC,6EAA6E,CAAC0F,EAAM,CAACG,EAAO,QAAQ,CAACD,EAAK3F,IAAS,CAAC,mCAAmC,8BAA8B,CAAC,CAAC4F,EAAO,QAAQ,CAACH,EAAM,iBAAiB,CAACE,EAAK3F,IAAS,CAAC,+CAA+C,CAACyF,EAAM,CAACG,EAAO,QAAQ,CAACD,EAAK5F,IAAS,CAAC,cAAc,4BAA4B,CAAC6F,EAAOH,EAAM,CAACE,EAAKvF,IAAU,CAAC,gCAAgC,CAACqF,EAAM,CAACG,EAAO,UAAU,CAACD,EAAKvF,IAAU,CAAC,mCAAmC,CAACqF,EAAM,CAACG,EAAO,QAAQ,CAACD,EAAKvF,IAAU,CAAC,oBAAoB,CAAC,CAACwF,EAAOkB,EAAOH,IAAIa,EAAK3I,OAAOgJ,OAAOlG,QAAQ,CAAC8D,EAAMqB,EAAOH,IAAIa,EAAK3I,OAAOgJ,OAAO5zC,OAAO,CAAC0xC,EAAK5F,IAAS,CAAC,6CAA6C,CAAC6F,EAAOH,EAAM,CAACE,EAAK3F,IAAS,CAAC,qCAAqC,eAAe,4EAA4E,CAAC4F,EAAO,CAACH,EAAM,KAAK,KAAK,CAACE,EAAK5F,IAAS,CAAC,eAAe,CAAC0F,EAAM,CAACG,EAAO,OAAO,CAACD,EAAK3F,IAAS,CAAC,4BAA4B,gBAAgB,CAACyF,EAAM,CAACG,EAAO,UAAU,CAACD,EAAK5F,IAAS,CAAC,iCAAiC,CAAC6F,EAAOH,EAAM,CAACE,EAAK5F,IAAS,CAAC,mCAAmC,CAAC0F,EAAM,CAACG,EAAO,aAAa,CAACD,EAAKvF,IAAU,CAAC,sBAAsB,CAAC,CAACqF,EAAM,MAAM,KAAK,CAACG,EAAO,aAAa,CAACD,EAAK5F,IAAS,CAAC,kFAAkF,kBAAkB,uBAAuB,eAAe,CAAC0F,EAAM,CAACG,EAAO,YAAY,CAACD,EAAK5F,IAAS,CAAC,gDAAgD,CAAC0F,EAAM,CAACG,EAAO,YAAY,CAACD,EAAK3F,IAAS,CAAC,0DAA0D,CAAC,CAAC4F,EAAOK,EAAKY,MAAM,CAACpB,EAAMQ,EAAKY,MAAM,CAAClB,EAAKI,IAAU,CAAC,uBAAuB,CAAC,CAACN,EAAM,IAAI,WAAW,CAACG,EAAO,WAAW,CAACD,EAAKI,IAAU,CAAC,wBAAwB,CAACN,EAAM,CAACG,EAAO,SAAS,CAACD,EAAKI,IAAU,CAAC,8EAA8E,gBAAgB,CAAC,CAACH,EAAO,WAAWH,EAAM,CAACE,EAAK3F,IAAS,CAAC,wBAAwB,CAAC4F,EAAO,CAACD,EAAKI,GAASN,GAAO,CAAC,qDAAqD,mCAAmC,mBAAmB,CAAC,CAACG,EAAO,WAAWH,EAAM,CAACE,EAAK5F,IAAS,CAAC,cAAc,CAAC0F,EAAM,CAACG,EAAO,WAAW,CAACD,EAAK5F,IAAS,CAAC,oCAAoC,2BAA2B,CAAC,CAAC6F,EAAO,SAASH,EAAM,CAACE,EAAK5F,IAAS,CAAC,qCAAqC,CAAC0F,EAAM,CAACG,EAAO,QAAQ,CAACD,EAAK3F,IAAS,CAAC,qCAAqC,CAACyF,EAAM,CAACG,EAAO,MAAM,CAACD,EAAK3F,IAAS,CAAC,iDAAiD,CAAC,CAAC4F,EAAO,MAAMH,EAAM,CAACE,EAAK3F,IAAS,CAAC,qBAAqB,CAAC4F,EAAOH,EAAM,CAACE,EAAKI,IAAU,CAAC,iBAAiB,qBAAqB,oCAAoC,CAACN,EAAM,CAACG,EAAO,MAAM,CAACD,EAAK5F,IAAS,CAAC,oCAAoC,CAAC0F,EAAM,CAACG,EAAO,UAAU,CAACD,EAAK3F,IAAS,CAAC,uBAAuB,CAAC4F,EAAOH,EAAM,CAACE,EAAK5F,IAAS,CAAC,6BAA6B,CAAC6F,EAAOH,EAAM,CAACE,EAAKxF,IAAW,CAAC,0CAA0C,CAACyF,EAAOH,EAAM,CAACE,EAAK5F,IAAS,CAAC,UAAU,CAAC,CAAC0F,EAAM,cAAc,CAACG,EAAO,WAAW,CAAC,4BAA4B,CAACH,EAAM,CAACG,EAAO,UAAU,CAACD,EAAKxF,IAAW,CAAC,4BAA4B,CAACsF,EAAM,CAACG,EAAO,UAAU,CAACD,EAAK3F,IAAS,CAAC,mCAAmC,CAACyF,EAAM,CAACG,EAAO,UAAU,CAACD,EAAK5F,IAAS,CAAC,mCAAmC,qDAAqD,8FAA8F,+DAA+D,CAAC,CAAC0F,EAAM,KAAK,KAAK,CAACG,EAAO,UAAU,CAACD,EAAK5F,IAAS,CAAC,0DAA0D,CAAC,CAAC0F,EAAM,KAAK,KAAK,CAACG,EAAO,UAAU,CAACD,EAAK3F,IAAS,CAAC,sCAAsC,CAACyF,EAAM,CAACG,EAAO,SAAS,CAACD,EAAK3F,IAAS,CAAC,4BAA4B,uCAAuC,CAACyF,EAAM,CAACG,EAAO,WAAW,CAACD,EAAK5F,IAAS,CAAC,0CAA0C,CAAC0F,EAAM,CAACG,EAAO,OAAO,CAACD,EAAK3F,IAAS,CAAC,gDAAgD,CAACyF,EAAM,CAACG,EAAO,QAAQ,CAACD,EAAK3F,IAAS,CAAC,6CAA6C,CAACyF,EAAM,CAACG,EAAO,WAAW,CAACD,EAAK3F,IAAS,CAAC,iEAAiE,CAAC,CAAC4F,EAAO,kBAAkBH,EAAM,CAACE,EAAK3F,IAAS,CAAC,2CAA2C,CAACyF,EAAM,CAACG,EAAO,YAAY,CAACD,EAAK3F,IAAS,CAAC,6BAA6B,CAACyF,EAAM,CAACG,EAAO,OAAO,CAACD,EAAK3F,IAAS,CAAC,6CAA6C,CAACyF,EAAM,CAACG,EAAO,SAAS,CAACD,EAAK5F,IAAS,CAAC,wCAAwC,CAAC0F,EAAM,CAACG,EAAO,SAAS,CAACD,EAAK3F,IAAS,CAAC,6CAA6C,CAACyF,EAAM,CAACG,EAAO,QAAQ,CAACD,EAAK3F,IAAS,CAAC,0CAA0C,8DAA8D,CAAC,CAAC4F,EAAO,gBAAgBH,EAAM,CAACE,EAAK3F,IAAS,CAAC,0CAA0C,CAACyF,EAAM,CAACG,EAAO,YAAY,CAACD,EAAK3F,IAAS,CAAC,kDAAkD,CAACyF,EAAM,CAACG,EAAO,YAAY,CAACD,EAAK3F,IAAS,CAAC,6EAA6E,CAAC,CAAC4F,EAAO,SAASH,EAAM,CAACE,EAAK5F,IAAS,CAAC,gDAAgD,CAAC,CAAC6F,EAAO,SAASH,EAAM,CAACE,EAAK5F,IAAS,CAAC,4DAA4D,CAAC0F,EAAM,CAACG,EAAO,WAAW,CAACD,EAAK3F,IAAS,CAAC,4DAA4D,CAAC4F,EAAOH,EAAM,CAACE,EAAK3F,IAAS,CAAC,6CAA6C,CAACyF,EAAM,CAACG,EAAO,aAAa,CAACD,EAAK3F,IAAS,CAAC,sDAAsD,CAAC4F,EAAOH,EAAM,CAACE,EAAK3F,IAAS,CAAC,uCAAuC,CAACyF,EAAM,CAACG,EAAO,SAAS,CAACD,EAAK3F,IAAS,CAAC,8BAA8B,CAACyF,EAAM,CAACG,EAAO,UAAU,CAACD,EAAK3F,IAAS,CAAC,gDAAgD,CAAC4F,EAAOH,EAAM,CAACE,EAAK3F,IAAS,CAAC,uBAAuB,iCAAiC,CAAC,CAAC2F,EAAKM,EAAKS,UAAUd,EAAOH,GAAO,CAAC,qCAAqC,CAACA,EAAM,CAACG,EAAO,aAAa7G,OAAO,CAAC,CAAC,+BAA+B,CAAC8G,EAAQ,CAACH,EAAK,aAAa,CAAC,uBAAuB,+DAA+D,0CAA0C,gCAAgC,CAACA,EAAKG,GAAS,CAAC,+BAA+B,CAACA,EAAQH,IAAOzG,GAAG,CAAC,CAAC,qCAAqC,CAACyG,EAAKG,GAAS,CAAC,+BAA+B,iDAAiD,sDAAsD,CAACH,EAAK,CAACG,EAAQiB,EAAOH,IAAIa,EAAKvI,GAAG+I,QAAQ7G,UAAU,CAAC,wCAAwC,CAAC,CAACuE,EAAK,WAAW,CAACG,EAAQiB,EAAOH,IAAIa,EAAKvI,GAAG+I,QAAQ7G,UAAU,CAAC,gBAAgB,CAAC,CAACuE,EAAK,cAAcG,GAAS,CAAC,+BAA+B,0BAA0B,oFAAoF,wBAAwB,CAACH,EAAKG,GAAS,CAAC,oDAAoD,CAAC,CAACH,EAAK,WAAWG,GAAS,CAAC,kBAAkB,CAACH,GAAM,CAAC,uCAAuC,CAAC,CAACA,EAAK,cAAcG,GAAS,CAAC,iDAAiD,wBAAwB,6BAA6B,2JAA2J,4BAA4B,sBAAsB,CAACH,EAAKG,GAAS,CAAC,+BAA+B,CAAC,CAACH,EAAK,eAAeG,GAAS,CAAC,0BAA0B,CAAC,CAACH,EAAK,WAAWG,GAAS,CAAC,kDAAkD,CAACH,EAAKG,GAAS,CAAC,mBAAmB,CAACH,EAAKG,GAAS,CAAC,uBAAuB,yDAAyD,CAAC,CAACA,EAAQ,KAAK,KAAK,CAACH,EAAK,QAAQ,CAAC,8BAA8B,kCAAkC,CAAC,CAACA,EAAK,UAAU,CAACG,EAAQ,KAAK,MAAM,CAAC,uCAAuC,oCAAoC,+DAA+D,uBAAuB,CAACH,EAAKG,KAAezH,EAAS,SAASsK,EAAStC,GAAkF,GAAjD,kBAAXsC,IAAqBtC,EAAWsC,EAASA,EAASryB,KAAe5kB,gBAAgB2sC,GAAW,OAAO,IAAIA,EAASsK,EAAStC,GAAYuC,YAAY,IAAIxJ,EAAGuJ,IAAWxX,GAAQA,EAAO0X,WAAW1X,EAAO0X,UAAUnH,UAAUvQ,EAAO0X,UAAUnH,UAAUyD,GAAW2D,EAAOzC,EAAWH,EAAKC,OAAOC,EAAQC,GAAYD,EAAg5B,OAAx4B10C,KAAKmtC,WAAW,WAAW,IAAID,EAAQ,CAACnqC,KAAK6hB,EAAU8qB,QAAQ9qB,GAAgG,OAArFywB,EAAOC,IAAI/xC,KAAK2pC,EAAQQ,EAAG0J,EAAOlK,SAASA,EAAQsC,MAAMgF,EAAKhF,MAAMtC,EAAQwC,SAAgBxC,GAASltC,KAAKq3C,OAAO,WAAW,IAAIL,EAAI,CAACM,aAAa1yB,GAA8C,OAAnCywB,EAAOC,IAAI/xC,KAAKyzC,EAAItJ,EAAG0J,EAAOJ,KAAYA,GAAKh3C,KAAKqtC,UAAU,WAAW,IAAID,EAAO,CAAC8C,OAAOtrB,EAAUpiB,MAAMoiB,EAAU3c,KAAK2c,GAAoD,OAAzCywB,EAAOC,IAAI/xC,KAAK6pC,EAAOM,EAAG0J,EAAOhK,QAAeA,GAAQptC,KAAKutC,UAAU,WAAW,IAAID,EAAO,CAACvqC,KAAK6hB,EAAU8qB,QAAQ9qB,GAAoD,OAAzCywB,EAAOC,IAAI/xC,KAAK+pC,EAAOI,EAAG0J,EAAO9J,QAAeA,GAAQttC,KAAKytC,MAAM,WAAW,IAAID,EAAG,CAACzqC,KAAK6hB,EAAU8qB,QAAQ9qB,GAA4C,OAAjCywB,EAAOC,IAAI/xC,KAAKiqC,EAAGE,EAAG0J,EAAO5J,IAAWA,GAAIxtC,KAAKk3C,UAAU,WAAW,MAAM,CAACxJ,GAAG1tC,KAAK2tC,QAAQT,QAAQltC,KAAKmtC,aAAaG,OAAOttC,KAAKutC,YAAYC,GAAGxtC,KAAKytC,QAAQL,OAAOptC,KAAKqtC,YAAY2J,IAAIh3C,KAAKq3C,WAAWr3C,KAAK2tC,MAAM,WAAW,OAAOD,GAAI1tC,KAAKu3C,MAAM,SAASN,GAAsB,OAAZvJ,EAAGuJ,EAAgBj3C,MAAaA,MAAM2sC,EAASyH,QAAQZ,EAAW7G,EAAS8B,QAAQ,CAACwF,KAAKA,EAAKF,MAAMA,EAAMK,QAAQA,GAASzH,EAAS6K,IAAI,CAACnD,aAAaA,GAAc1H,EAAS8K,OAAO,CAACzD,MAAMA,EAAMG,OAAOA,EAAOD,KAAKA,EAAKvF,QAAQA,EAAQL,OAAOA,EAAOgG,QAAQA,EAAQ/F,OAAOA,EAAOG,SAASA,EAAS6F,SAASA,GAAU5H,EAAS+K,OAAO,CAACzD,KAAKA,EAAKG,QAAQA,GAASzH,EAASgL,GAAG,CAAC1D,KAAKA,EAAKG,QAAQA,UAAmBvZ,IAAU+Y,UAAsBhZ,IAASgZ,GAAYhZ,EAAOC,UAASA,EAAQD,EAAOC,QAAQ8R,GAAS9R,EAAQ8R,SAASA,GAAiB,aAAagH,GAAWxH,EAAoB,IAAMoH,EAAgC,WAAY,OAAO5G,GAAWppC,KAAKs3B,EAASsR,EAAqBtR,EAASD,GACh7gB2Y,IAAkC3uB,IAAcgW,EAAOC,QAAU0Y,IAAwC9T,IAAQA,EAAOkN,SAASA,GAAU,IAAIiL,EAAEnY,IAASA,EAAOoY,QAAQpY,EAAOqY,OAAO,UAAUF,IAAIhE,EAAW,CAAC,IAAImE,EAAO,IAAIpL,EAASiL,EAAElK,GAAGqK,EAAOb,YAAYU,EAAElK,GAAGvR,IAAI,WAAW,OAAO4b,EAAOpK,SAASiK,EAAElK,GAAGsK,IAAI,SAASf,GAAUc,EAAOR,MAAMN,GAAU,IAAIgB,EAAOF,EAAOb,YAAY,IAAI,IAAIgB,KAAQD,EAAQL,EAAElK,GAAGwK,GAAMD,EAAOC,MAD3a,CACsc,kBAATzY,OAAkBA,OAAOz/B,OAIhd,SAAU46B,EAAQC,IAEI,SAASsd,GACrCvd,EAAOC,QAAUsd,IAEY50C,KAAKs3B,EAAS,KAIrC,SAAUD,EAAQC,EAASsR,GAEjC,aAGA,IAAIY,EAAe,CACjBuB,OAAQ,SACRC,OAAQ,SACRC,SAAU,UACVG,QAAS,UACTD,SAAU,WACVD,aAAS7pB,GAGPioB,EAAgB,CAClBe,OAAQ,SACRK,QAAS,UACTD,MAAO,QACPI,OAAQ,SACRF,OAAQ,SACRH,kBAAmB,oBACnBI,KAAM,OACNN,SAAU,WACVC,GAAI,KACJO,cAAe,iBAGbvB,EAAW,CACbgC,IAAK,MACLF,QAAS,UACTC,cAAe,iBAGb7B,EAAc,CAChBgC,UAAU,EACVC,UAAU,EACVI,WAAW,EACXH,WAAW,EACXC,WAAW,EACXC,YAAY,GAGdxU,EAAOC,QAAU,CAAEgS,cAAeA,EAAeE,aAAcA,EAAcD,SAAUA,EAAUE,YAAaA,O,oCCzc9G,sGAgBA,IAAIoL,EAAgB,SAASlc,EAAGxT,GAI5B,OAHA0vB,EAAgBve,OAAOwe,gBAClB,CAAEC,UAAW,cAAgBl1C,OAAS,SAAU84B,EAAGxT,GAAKwT,EAAEoc,UAAY5vB,IACvE,SAAUwT,EAAGxT,GAAK,IAAK,IAAIwV,KAAKxV,EAAOmR,OAAOx2B,UAAU02B,eAAex2B,KAAKmlB,EAAGwV,KAAIhC,EAAEgC,GAAKxV,EAAEwV,KACzFka,EAAclc,EAAGxT,IAGrB,SAAS6vB,EAAUrc,EAAGxT,GACzB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIkT,UAAU,uBAAyBwF,OAAO1Y,GAAK,iCAE7D,SAAS8vB,IAAOx4C,KAAK85B,YAAcoC,EADnCkc,EAAclc,EAAGxT,GAEjBwT,EAAE74B,UAAkB,OAANqlB,EAAamR,OAAO4e,OAAO/vB,IAAM8vB,EAAGn1C,UAAYqlB,EAAErlB,UAAW,IAAIm1C,GAG5E,IAAIE,EAAW,WAQlB,OAPAA,EAAW7e,OAAO4S,QAAU,SAAkB9R,GAC1C,IAAK,IAAImB,EAAG91B,EAAI,EAAGg1B,EAAIzzB,UAAUtB,OAAQD,EAAIg1B,EAAGh1B,IAE5C,IAAK,IAAIk4B,KADTpC,EAAIv0B,UAAUvB,GACA81B,EAAOjC,OAAOx2B,UAAU02B,eAAex2B,KAAKu4B,EAAGoC,KAAIvD,EAAEuD,GAAKpC,EAAEoC,IAE9E,OAAOvD,GAEJ+d,EAASpxC,MAAMtH,KAAMuH,YAoEHsyB,OAAO4e,OA6D7B,SAASE,EAAcC,EAAIld,EAAMmd,GACpC,GAAIA,GAA6B,IAArBtxC,UAAUtB,OAAc,IAAK,IAA4B6yC,EAAxB9yC,EAAI,EAAG22B,EAAIjB,EAAKz1B,OAAYD,EAAI22B,EAAG32B,KACxE8yC,GAAQ9yC,KAAK01B,IACRod,IAAIA,EAAK11C,MAAMC,UAAU0jC,MAAMxjC,KAAKm4B,EAAM,EAAG11B,IAClD8yC,EAAG9yC,GAAK01B,EAAK11B,IAGrB,OAAO4yC,EAAG/vC,OAAOiwC,GAAM11C,MAAMC,UAAU0jC,MAAMxjC,KAAKm4B,IAsC7B7B,OAAO4e,Q,kCCrNhC;;;;;;AAQA,QAAOM,qBAAuB,IAC9B,IAAIC,EAAmB,EACnBC,EAAc,EACdC,GAA6B,EAc7BC,EAAiC,WACjC,SAASA,EAAgBC,GACrB,IAAI/xC,EAAQrH,KACZA,KAAKq5C,UAAY,KAEjBr5C,KAAKs5C,SAAW,GAChBt5C,KAAKu5C,eAAiB,GACtBv5C,KAAKw5C,kBAAmB,EACxBx5C,KAAKy5C,mBAAoB,EAEzBz5C,KAAKqN,YAAa,EAClBrN,KAAK05C,iBAAkB,EACvB15C,KAAK25C,gBAAiB,EAGtB35C,KAAK45C,gBAAkB,SAAUC,GAC7B,IAAKxyC,EAAMyyC,qBACPC,EAAqBF,IACrBxyC,EAAM2yC,SAASH,GAAK,CACpB,IAAII,EAAM5yC,EAAM6yC,qBAAqBL,GAAI,GACzCxyC,EAAM8yC,QAAQC,QAAQ,cAAeH,GACrC5yC,EAAMgzC,gBAAgBJ,GACjB5yC,EAAMmyC,kBACPxZ,SAASsa,iBAAiB,YAAajzC,EAAMkzC,iBAEjDva,SAASsa,iBAAiB,UAAWjzC,EAAMmzC,iBAGnDx6C,KAAKu6C,gBAAkB,SAAUV,GAC7B,IAAII,EAAM5yC,EAAM6yC,qBAAqBL,GACrCxyC,EAAMozC,aAAaR,GACnB5yC,EAAM8yC,QAAQC,QAAQ,cAAeH,IAEzCj6C,KAAKw6C,cAAgB,SAAUX,GAC3B7Z,SAAS0a,oBAAoB,YAAarzC,EAAMkzC,iBAChDva,SAAS0a,oBAAoB,UAAWrzC,EAAMmzC,eAC9CnzC,EAAM8yC,QAAQC,QAAQ,YAAa/yC,EAAM6yC,qBAAqBL,IAC9DxyC,EAAMszC,WAIV36C,KAAK46C,iBAAmB,SAAUf,GAC9B,GAAIxyC,EAAM2yC,SAASH,GAAK,CACpBxyC,EAAMqyC,iBAAkB,EACxB,IAAIO,EAAM5yC,EAAMwzC,qBAAqBhB,GAAI,GACzCxyC,EAAM8yC,QAAQC,QAAQ,cAAeH,GACrC5yC,EAAMgzC,gBAAgBJ,GAGtB,IAAIa,EAAWjB,EAAG52C,OACboE,EAAMmyC,kBACPsB,EAASR,iBAAiB,YAAajzC,EAAM0zC,iBAEjDD,EAASR,iBAAiB,WAAYjzC,EAAM2zC,gBAC5CF,EAASR,iBAAiB,cAAejzC,EAAM2zC,gBAI/Cvb,OAAO6a,iBAAiB,SAAUjzC,EAAM4zC,mBAAmB,KAGnEj7C,KAAK+6C,gBAAkB,SAAUlB,GAC7B,IAAII,EAAM5yC,EAAMwzC,qBAAqBhB,GACrCxyC,EAAMozC,aAAaR,GACnB5yC,EAAM8yC,QAAQC,QAAQ,cAAeH,IAEzCj6C,KAAKg7C,eAAiB,SAAUnB,GAC5B,GAAIxyC,EAAMgG,WAAY,CAClB,IAAIytC,EAAWjB,EAAG52C,OAClB63C,EAASJ,oBAAoB,YAAarzC,EAAM0zC,iBAChDD,EAASJ,oBAAoB,WAAYrzC,EAAM2zC,gBAC/CF,EAASJ,oBAAoB,cAAerzC,EAAM2zC,gBAClDvb,OAAOib,oBAAoB,SAAUrzC,EAAM4zC,mBAAmB,GAC9D5zC,EAAM8yC,QAAQC,QAAQ,YAAa/yC,EAAMwzC,qBAAqBhB,IAC9DxyC,EAAMszC,UACNtzC,EAAMqyC,iBAAkB,EACxBwB,MAGRl7C,KAAKi7C,kBAAoB,WACrB5zC,EAAMsyC,gBAAiB,GAE3B35C,KAAKm7C,aAAe,SAAUtB,GAC1B,IAAKxyC,EAAMmyC,iBAAkB,CACzB,IAAI4B,EAAS3b,OAAOE,YAAct4B,EAAMg0C,YAAeh0C,EAAMi0C,UACzDC,EAAS9b,OAAOI,YAAcx4B,EAAMm0C,YAAen0C,EAAMo0C,UAC7Dp0C,EAAM8yC,QAAQC,QAAQ,cAAe,CACjCsB,UAAW7B,EACX8B,QAASt0C,EAAMqyC,gBACfL,UAAWhyC,EAAMgyC,UACjB+B,MAAOA,EACPG,MAAOA,EACPK,OAAQR,EAAQ/zC,EAAMw0C,UACtBC,OAAQP,EAAQl0C,EAAM00C,cAIlC/7C,KAAKo5C,YAAcA,EACnBp5C,KAAKm6C,QAAU,IAAI,OACnBf,EAAYkB,iBAAiB,YAAat6C,KAAK45C,iBAC/CR,EAAYkB,iBAAiB,aAAct6C,KAAK46C,iBAAkB,CAAEoB,SAAS,IAC7EC,IAyHJ,OAvHA9C,EAAgB91C,UAAU64C,QAAU,WAChCl8C,KAAKo5C,YAAYsB,oBAAoB,YAAa16C,KAAK45C,iBACvD55C,KAAKo5C,YAAYsB,oBAAoB,aAAc16C,KAAK46C,iBAAkB,CAAEoB,SAAS,IACrFG,KAEJhD,EAAgB91C,UAAU22C,SAAW,SAAUH,GAC3C,IAAIR,EAAYr5C,KAAKo8C,eAAevC,GAChCwC,EAASxC,EAAG52C,OAChB,SAAIo2C,GACEr5C,KAAKu5C,iBAAkB,gBAAe8C,EAAQr8C,KAAKu5C,mBACrDv5C,KAAKq5C,UAAYA,EACjBr5C,KAAKqN,YAAa,EAClBrN,KAAK25C,gBAAiB,GACf,IAIfR,EAAgB91C,UAAUs3C,QAAU,WAChCzB,GAA6B,EAC7Bl5C,KAAKqN,YAAa,EAClBrN,KAAKq5C,UAAY,KAEjBr5C,KAAKs8C,sBAETnD,EAAgB91C,UAAU+4C,eAAiB,SAAUvC,GACjD,OAAI75C,KAAKs5C,SACE,gBAAeO,EAAG52C,OAAQjD,KAAKs5C,UAEnCt5C,KAAKo5C,aAEhBD,EAAgB91C,UAAUy2C,kBAAoB,WAC1C,OAAOd,GAAoBh5C,KAAK05C,iBAGpCP,EAAgB91C,UAAUk5C,kBAAoB,WACtCv8C,KAAKqN,aACL6rC,GAA6B,IAKrCC,EAAgB91C,UAAUg3C,gBAAkB,SAAUR,GAC9C75C,KAAKy5C,oBACLz5C,KAAKy6C,aAAaZ,GAClBpa,OAAO6a,iBAAiB,SAAUt6C,KAAKm7C,cAAc,KAG7DhC,EAAgB91C,UAAUo3C,aAAe,SAAUZ,GAC3C75C,KAAKy5C,oBACLz5C,KAAKs7C,UAAYzB,EAAGuB,MACpBp7C,KAAKy7C,UAAY5B,EAAG0B,MACpBv7C,KAAKq7C,YAAc5b,OAAOE,YAC1B3/B,KAAKw7C,YAAc/b,OAAOI,cAGlCsZ,EAAgB91C,UAAUi5C,mBAAqB,WACvCt8C,KAAKy5C,mBACLha,OAAOib,oBAAoB,SAAU16C,KAAKm7C,cAAc,IAKhEhC,EAAgB91C,UAAU62C,qBAAuB,SAAUL,EAAI2C,GAC3D,IAAIZ,EAAS,EACTE,EAAS,EAUb,OARIU,GACAx8C,KAAK67C,UAAYhC,EAAGuB,MACpBp7C,KAAK+7C,UAAYlC,EAAG0B,QAGpBK,EAAS/B,EAAGuB,MAAQp7C,KAAK67C,UACzBC,EAASjC,EAAG0B,MAAQv7C,KAAK+7C,WAEtB,CACHL,UAAW7B,EACX8B,SAAS,EACTtC,UAAWr5C,KAAKq5C,UAChB+B,MAAOvB,EAAGuB,MACVG,MAAO1B,EAAG0B,MACVK,OAAQA,EACRE,OAAQA,IAGhB3C,EAAgB91C,UAAUw3C,qBAAuB,SAAUhB,EAAI2C,GAC3D,IACIpB,EACAG,EAFAkB,EAAU5C,EAAG4C,QAGbb,EAAS,EACTE,EAAS,EAoBb,OAjBIW,GAAWA,EAAQx2C,QACnBm1C,EAAQqB,EAAQ,GAAGrB,MACnBG,EAAQkB,EAAQ,GAAGlB,QAGnBH,EAAQvB,EAAGuB,MACXG,EAAQ1B,EAAG0B,OAGXiB,GACAx8C,KAAK67C,UAAYT,EACjBp7C,KAAK+7C,UAAYR,IAGjBK,EAASR,EAAQp7C,KAAK67C,UACtBC,EAASP,EAAQv7C,KAAK+7C,WAEnB,CACHL,UAAW7B,EACX8B,SAAS,EACTtC,UAAWr5C,KAAKq5C,UAChB+B,MAAOA,EACPG,MAAOA,EACPK,OAAQA,EACRE,OAAQA,IAGT3C,EA9NyB,GAiOpC,SAASY,EAAqBF,GAC1B,OAAqB,IAAdA,EAAG6C,SAAiB7C,EAAG8C,QAIlC,SAASzB,IACLlC,GAAoB,EACpB4D,YAAW,WACP5D,GAAoB,IACrB,QAAOD,sBAId,SAASkD,IACLhD,GAAe,EACK,IAAhBA,GACAxZ,OAAO6a,iBAAiB,YAAauC,EAAmB,CAAEb,SAAS,IAG3E,SAASG,IACLlD,GAAe,EACVA,GACDxZ,OAAOib,oBAAoB,YAAamC,EAAmB,CAAEb,SAAS,IAG9E,SAASa,EAAkBhD,GACnBX,GACAW,EAAGxzC,iBASX,IAAIy2C,EAA+B,WAC/B,SAASA,IACL98C,KAAKyP,WAAY,EACjBzP,KAAK+8C,SAAW,KAChB/8C,KAAKg9C,SAAW,KAChBh9C,KAAKi9C,aAAe,KAEpBj9C,KAAKogC,WAAaJ,SAASC,KAC3BjgC,KAAKstB,OAAS,KACdttB,KAAKk9C,eAAiB,EA2G1B,OAzGAJ,EAAcz5C,UAAU4O,MAAQ,SAAU8qC,EAAU3B,EAAOG,GACvDv7C,KAAK+8C,SAAWA,EAChB/8C,KAAKi9C,aAAej9C,KAAK+8C,SAASxjC,wBAClCvZ,KAAKm9C,YAAc/B,EAAQ3b,OAAOE,YAClC3/B,KAAKo9C,YAAc7B,EAAQ9b,OAAOI,YAClC7/B,KAAK47C,OAAS,EACd57C,KAAK87C,OAAS,EACd97C,KAAKq9C,oBAETP,EAAcz5C,UAAUi6C,WAAa,SAAUlC,EAAOG,GAClDv7C,KAAK47C,OAAUR,EAAQ3b,OAAOE,YAAe3/B,KAAKm9C,YAClDn9C,KAAK87C,OAAUP,EAAQ9b,OAAOI,YAAe7/B,KAAKo9C,YAClDp9C,KAAKq9C,oBAGTP,EAAcz5C,UAAUk6C,aAAe,SAAUC,GACzCA,EACKx9C,KAAKyP,YACFzP,KAAKg9C,WACLh9C,KAAKg9C,SAASnvC,MAAMzB,QAAU,IAElCpM,KAAKyP,UAAY+tC,EACjBx9C,KAAKq9C,oBAGJr9C,KAAKyP,YACNzP,KAAKg9C,WACLh9C,KAAKg9C,SAASnvC,MAAMzB,QAAU,QAElCpM,KAAKyP,UAAY+tC,IAIzBV,EAAcz5C,UAAUo6C,KAAO,SAAUC,EAAsBh7C,GAC3D,IAAI2E,EAAQrH,KACR29C,EAAO,WACPt2C,EAAMszC,UACNj4C,KAEAg7C,GACA19C,KAAKg9C,UACLh9C,KAAKyP,WACLzP,KAAKk9C,iBACJl9C,KAAK47C,QAAU57C,KAAK87C,QAErB97C,KAAK49C,kBAAkBD,EAAM39C,KAAKk9C,gBAGlCN,WAAWe,EAAM,IAGzBb,EAAcz5C,UAAUu6C,kBAAoB,SAAUl7C,EAAUw6C,GAC5D,IAAIF,EAAWh9C,KAAKg9C,SAChBa,EAAoB79C,KAAK+8C,SAASxjC,wBACtCyjC,EAASnvC,MAAMwzB,WACX,OAAS6b,EAAT,WACcA,EAAiB,KACnC,eAAWF,EAAU,CACjBllC,KAAM+lC,EAAkB/lC,KACxBK,IAAK0lC,EAAkB1lC,MAE3B,gBAAmB6kC,GAAU,WACzBA,EAASnvC,MAAMwzB,WAAa,GAC5B3+B,QAGRo6C,EAAcz5C,UAAUs3C,QAAU,WAC1B36C,KAAKg9C,WACL,gBAAch9C,KAAKg9C,UACnBh9C,KAAKg9C,SAAW,MAEpBh9C,KAAK+8C,SAAW,MAEpBD,EAAcz5C,UAAUg6C,iBAAmB,WACnCr9C,KAAK+8C,UAAY/8C,KAAKyP,WACtB,eAAWzP,KAAK89C,cAAe,CAC3BhmC,KAAM9X,KAAKi9C,aAAanlC,KAAO9X,KAAK47C,OACpCzjC,IAAKnY,KAAKi9C,aAAa9kC,IAAMnY,KAAK87C,UAI9CgB,EAAcz5C,UAAUy6C,YAAc,WAClC,IAAIb,EAAej9C,KAAKi9C,aACpBD,EAAWh9C,KAAKg9C,SAoBpB,OAnBKA,IACDA,EAAWh9C,KAAKg9C,SAAWh9C,KAAK+8C,SAASgB,WAAU,GAGnDf,EAASgB,UAAU1uB,IAAI,mBACvB0tB,EAASgB,UAAU1uB,IAAI,qBACvB,eAAW0tB,EAAU,CACjBiB,SAAU,QACV3wB,OAAQttB,KAAKstB,OACbpe,WAAY,GACZgvC,UAAW,aACXtiC,MAAOqhC,EAAallC,MAAQklC,EAAanlC,KACzCsB,OAAQ6jC,EAAapjC,OAASojC,EAAa9kC,IAC3CJ,MAAO,OACP8B,OAAQ,OACRskC,OAAQ,IAEZn+C,KAAKogC,WAAWF,YAAY8c,IAEzBA,GAEJF,EApHuB,GA+H9BsB,EAAiC,SAAUh3C,GAE3C,SAASg3C,EAAgBC,EAAkBC,GACvC,IAAIj3C,EAAQD,EAAO7D,KAAKvD,OAASA,KAkBjC,OAjBAqH,EAAM8zC,aAAe,WACjB9zC,EAAM0b,UAAY1b,EAAMg3C,iBAAiBE,eACzCl3C,EAAMm3C,WAAan3C,EAAMg3C,iBAAiBI,gBAC1Cp3C,EAAMq3C,sBAEVr3C,EAAMg3C,iBAAmBA,EACzBh3C,EAAMi3C,cAAgBA,EACtBj3C,EAAM0b,UAAY1b,EAAMs3C,cAAgBN,EAAiBE,eACzDl3C,EAAMm3C,WAAan3C,EAAMu3C,eAAiBP,EAAiBI,gBAC3Dp3C,EAAMw3C,YAAcR,EAAiBS,iBACrCz3C,EAAM03C,aAAeV,EAAiBW,kBACtC33C,EAAMkR,YAAc8lC,EAAiBY,iBACrC53C,EAAM2U,aAAeqiC,EAAiBa,kBACtC73C,EAAM83C,WAAa93C,EAAM+3C,oBACrB/3C,EAAMi3C,eACNj3C,EAAMg4C,iBAAiB/E,iBAAiB,SAAUjzC,EAAM8zC,cAErD9zC,EA6CX,OAjEA,eAAU+2C,EAAiBh3C,GAsB3Bg3C,EAAgB/6C,UAAU64C,QAAU,WAC5Bl8C,KAAKs+C,eACLt+C,KAAKq/C,iBAAiB3E,oBAAoB,SAAU16C,KAAKm7C,eAGjEiD,EAAgB/6C,UAAUk7C,aAAe,WACrC,OAAOv+C,KAAK+iB,WAEhBq7B,EAAgB/6C,UAAUo7C,cAAgB,WACtC,OAAOz+C,KAAKw+C,YAEhBJ,EAAgB/6C,UAAUi8C,aAAe,SAAUnnC,GAC/CnY,KAAKq+C,iBAAiBiB,aAAannC,GAC9BnY,KAAKs+C,gBAGNt+C,KAAK+iB,UAAY1J,KAAKI,IAAIJ,KAAKwM,IAAI1N,EAAKnY,KAAKu/C,mBAAoB,GACjEv/C,KAAK0+C,uBAGbN,EAAgB/6C,UAAUm8C,cAAgB,SAAUrnC,GAChDnY,KAAKq+C,iBAAiBmB,cAAcrnC,GAC/BnY,KAAKs+C,gBAGNt+C,KAAKw+C,WAAanlC,KAAKI,IAAIJ,KAAKwM,IAAI1N,EAAKnY,KAAKy/C,oBAAqB,GACnEz/C,KAAK0+C,uBAGbN,EAAgB/6C,UAAU47C,eAAiB,WACvC,OAAOj/C,KAAKuY,aAEhB6lC,EAAgB/6C,UAAU67C,gBAAkB,WACxC,OAAOl/C,KAAKgc,cAEhBoiC,EAAgB/6C,UAAUy7C,eAAiB,WACvC,OAAO9+C,KAAK6+C,aAEhBT,EAAgB/6C,UAAU27C,gBAAkB,WACxC,OAAOh/C,KAAK++C,cAEhBX,EAAgB/6C,UAAUq7C,mBAAqB,aAExCN,EAlEyB,CAmElC,QAEEsB,EAAwC,SAAUt4C,GAElD,SAASs4C,EAAuB3vC,EAAIuuC,GAChC,OAAOl3C,EAAO7D,KAAKvD,KAAM,IAAI,OAAwB+P,GAAKuuC,IAAkBt+C,KAQhF,OAVA,eAAU0/C,EAAwBt4C,GAIlCs4C,EAAuBr8C,UAAUg8C,eAAiB,WAC9C,OAAOr/C,KAAKq+C,iBAAiBtuC,IAEjC2vC,EAAuBr8C,UAAU+7C,kBAAoB,WACjD,OAAO,gBAAiBp/C,KAAKq+C,iBAAiBtuC,KAE3C2vC,EAXgC,CAYzCtB,GAEEuB,EAAuC,SAAUv4C,GAEjD,SAASu4C,EAAsBrB,GAC3B,OAAOl3C,EAAO7D,KAAKvD,KAAM,IAAI,OAA0Bs+C,IAAkBt+C,KAkB7E,OApBA,eAAU2/C,EAAuBv4C,GAIjCu4C,EAAsBt8C,UAAUg8C,eAAiB,WAC7C,OAAO5f,QAEXkgB,EAAsBt8C,UAAU+7C,kBAAoB,WAChD,MAAO,CACHtnC,KAAM9X,KAAKw+C,WACXzmC,MAAO/X,KAAKw+C,WAAax+C,KAAKuY,YAC9BJ,IAAKnY,KAAK+iB,UACVlJ,OAAQ7Z,KAAK+iB,UAAY/iB,KAAKgc,eAKtC2jC,EAAsBt8C,UAAUq7C,mBAAqB,WACjD1+C,KAAKm/C,WAAan/C,KAAKo/C,qBAEpBO,EArB+B,CAsBxCvB,GAKEwB,EAAiC,oBAAhBC,YAA6BA,YAAYC,IAAMvvB,KAAKuvB,IAOrEC,EAA8B,WAC9B,SAASA,IACL,IAAI14C,EAAQrH,KAEZA,KAAKggD,WAAY,EACjBhgD,KAAKigD,YAAc,CAACxgB,OAAQ,gBAC5Bz/B,KAAKkgD,cAAgB,GACrBlgD,KAAKmgD,YAAc,IAEnBngD,KAAKogD,eAAiB,KACtBpgD,KAAKqgD,eAAiB,KACtBrgD,KAAKsgD,aAAc,EACnBtgD,KAAKugD,aAAe,KAEpBvgD,KAAKwgD,aAAc,EACnBxgD,KAAKygD,eAAgB,EACrBzgD,KAAK0gD,eAAgB,EACrB1gD,KAAK2gD,gBAAiB,EACtB3gD,KAAK4gD,QAAU,WACX,GAAIv5C,EAAMi5C,YAAa,CACnB,IAAIO,EAAOx5C,EAAMy5C,gBAAgBz5C,EAAM+4C,eAAiB3gB,OAAOE,YAAat4B,EAAMg5C,eAAiB5gB,OAAOI,aAC1G,GAAIghB,EAAM,CACN,IAAIf,EAAMF,IACVv4C,EAAM05C,WAAWF,GAAOf,EAAMz4C,EAAM25C,gBAAkB,KACtD35C,EAAM45C,iBAAiBnB,QAGvBz4C,EAAMi5C,aAAc,IAuIpC,OAlIAP,EAAa18C,UAAU4O,MAAQ,SAAUmpC,EAAOG,EAAO2F,GAC/ClhD,KAAKggD,YACLhgD,KAAKugD,aAAevgD,KAAKmhD,YAAYD,GACrClhD,KAAKogD,eAAiB,KACtBpgD,KAAKqgD,eAAiB,KACtBrgD,KAAKwgD,aAAc,EACnBxgD,KAAKygD,eAAgB,EACrBzgD,KAAK0gD,eAAgB,EACrB1gD,KAAK2gD,gBAAiB,EACtB3gD,KAAKs9C,WAAWlC,EAAOG,KAG/BwE,EAAa18C,UAAUi6C,WAAa,SAAUlC,EAAOG,GACjD,GAAIv7C,KAAKggD,UAAW,CAChB,IAAII,EAAiBhF,EAAQ3b,OAAOE,YAChC0gB,EAAiB9E,EAAQ9b,OAAOI,YAChCuhB,EAAiC,OAAxBphD,KAAKqgD,eAA0B,EAAIA,EAAiBrgD,KAAKqgD,eAClEgB,EAAiC,OAAxBrhD,KAAKogD,eAA0B,EAAIA,EAAiBpgD,KAAKogD,eAClEgB,EAAS,EACTphD,KAAKwgD,aAAc,EAEdY,EAAS,IACdphD,KAAKygD,eAAgB,GAErBY,EAAS,EACTrhD,KAAK0gD,eAAgB,EAEhBW,EAAS,IACdrhD,KAAK2gD,gBAAiB,GAE1B3gD,KAAKogD,eAAiBA,EACtBpgD,KAAKqgD,eAAiBA,EACjBrgD,KAAKsgD,cACNtgD,KAAKsgD,aAAc,EACnBtgD,KAAKihD,iBAAiBrB,QAIlCG,EAAa18C,UAAUo6C,KAAO,WAC1B,GAAIz9C,KAAKggD,UAAW,CAChBhgD,KAAKsgD,aAAc,EACnB,IAAK,IAAIn2C,EAAK,EAAGvC,EAAK5H,KAAKugD,aAAcp2C,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC3D,IAAIm3C,EAAc15C,EAAGuC,GACrBm3C,EAAYpF,UAEhBl8C,KAAKugD,aAAe,OAG5BR,EAAa18C,UAAU49C,iBAAmB,SAAUnB,GAChD9/C,KAAKghD,eAAiBlB,EACtByB,sBAAsBvhD,KAAK4gD,UAE/Bb,EAAa18C,UAAU09C,WAAa,SAAUF,EAAM1wB,GAChD,IAAImxB,EAAcT,EAAKS,YACnBpB,EAAgBlgD,KAAKkgD,cACrBsB,EAActB,EAAgBW,EAAKY,SACnCC,EACDF,EAAcA,GAAgBtB,EAAgBA,GAC7ClgD,KAAKmgD,YAAchwB,EACnBwxB,EAAO,EACX,OAAQd,EAAK99C,MACT,IAAK,OACD4+C,GAAQ,EAEZ,IAAK,QACDL,EAAY9B,cAAc8B,EAAY7C,gBAAkBiD,EAAWC,GACnE,MACJ,IAAK,MACDA,GAAQ,EAEZ,IAAK,SACDL,EAAYhC,aAAagC,EAAY/C,eAAiBmD,EAAWC,GACjE,QAIZ5B,EAAa18C,UAAUy9C,gBAAkB,SAAUhpC,EAAMK,GAIrD,IAHA,IAAI+nC,EAAgBlgD,KAAKkgD,cACrB0B,EAAW,KACXrB,EAAevgD,KAAKugD,cAAgB,GAC/Bp2C,EAAK,EAAG03C,EAAiBtB,EAAcp2C,EAAK03C,EAAe57C,OAAQkE,IAAM,CAC9E,IAAIm3C,EAAcO,EAAe13C,GAC7ByJ,EAAO0tC,EAAYnC,WACnB2C,EAAWhqC,EAAOlE,EAAKkE,KACvBiqC,EAAYnuC,EAAKmE,MAAQD,EACzBkqC,EAAU7pC,EAAMvE,EAAKuE,IACrB8pC,EAAaruC,EAAKiG,OAAS1B,EAE3B2pC,GAAY,GAAKC,GAAa,GAAKC,GAAW,GAAKC,GAAc,IAC7DD,GAAW9B,GAAiBlgD,KAAKwgD,aAAec,EAAYY,iBAC1DN,GAAYA,EAASH,SAAWO,KAClCJ,EAAW,CAAEN,YAAaA,EAAav+C,KAAM,MAAO0+C,SAAUO,IAE9DC,GAAc/B,GAAiBlgD,KAAKygD,eAAiBa,EAAYa,mBAC/DP,GAAYA,EAASH,SAAWQ,KAClCL,EAAW,CAAEN,YAAaA,EAAav+C,KAAM,SAAU0+C,SAAUQ,IAEjEH,GAAY5B,GAAiBlgD,KAAK0gD,eAAiBY,EAAYc,mBAC7DR,GAAYA,EAASH,SAAWK,KAClCF,EAAW,CAAEN,YAAaA,EAAav+C,KAAM,OAAQ0+C,SAAUK,IAE/DC,GAAa7B,GAAiBlgD,KAAK2gD,gBAAkBW,EAAYe,oBAC/DT,GAAYA,EAASH,SAAWM,KAClCH,EAAW,CAAEN,YAAaA,EAAav+C,KAAM,QAAS0+C,SAAUM,KAI5E,OAAOH,GAEX7B,EAAa18C,UAAU89C,YAAc,SAAUD,GAC3C,OAAOlhD,KAAKsiD,eAAepB,GAAev9C,KAAI,SAAUoM,GACpD,OAAIA,IAAO0vB,OACA,IAAIkgB,GAAsB,GAE9B,IAAID,EAAuB3vC,GAAI,OAG9CgwC,EAAa18C,UAAUi/C,eAAiB,SAAUpB,GAE9C,IADA,IAAIx7B,EAAM,GACDvb,EAAK,EAAGvC,EAAK5H,KAAKigD,YAAa91C,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC1D,IAAIo4C,EAAQ36C,EAAGuC,GACM,kBAAVo4C,EACP78B,EAAI1d,KAAKu6C,GAGT78B,EAAI1d,KAAKV,MAAMoe,EAAKtiB,MAAMC,UAAU0jC,MAAMxjC,KAAK,gBAAU29C,GAAesB,iBAAiBD,KAGjG,OAAO78B,GAEJq6B,EAlKsB,GA2K7B0C,EAA2C,SAAUr7C,GAErD,SAASq7C,EAA0BrJ,EAAaE,GAC5C,IAAIjyC,EAAQD,EAAO7D,KAAKvD,KAAMo5C,IAAgBp5C,KAC9CqH,EAAM+xC,YAAcA,EAGpB/xC,EAAMq7C,MAAQ,KACdr7C,EAAMs7C,YAAc,EACpBt7C,EAAMu7C,oBAAqB,EAC3Bv7C,EAAMw7C,mBAAoB,EAC1Bx7C,EAAMy7C,eAAgB,EACtBz7C,EAAMgG,YAAa,EACnBhG,EAAM07C,cAAe,EACrB17C,EAAM27C,qBAAsB,EAC5B37C,EAAM47C,eAAiB,KACvB57C,EAAM67C,cAAgB,SAAUrJ,GACvBxyC,EAAMgG,aACPhG,EAAMy7C,eAAgB,EACtBz7C,EAAM07C,cAAe,EACrB17C,EAAM27C,qBAAsB,EAC5B,gBAAiBhjB,SAASC,MAC1B,gBAAmBD,SAASC,MAIvB4Z,EAAG8B,SACJ9B,EAAG6B,UAAUr1C,iBAEjBgB,EAAM8yC,QAAQC,QAAQ,cAAeP,GACjCxyC,EAAMy7C,gBACLz7C,EAAM6gC,QAAQsR,mBAEfnyC,EAAM87C,OAAO5F,cAAa,GAC1Bl2C,EAAM87C,OAAOlxC,MAAM4nC,EAAGR,UAAWQ,EAAGuB,MAAOvB,EAAG0B,OAC9Cl0C,EAAM+7C,WAAWvJ,GACZxyC,EAAMs7C,aACPt7C,EAAMg8C,wBAAwBxJ,MAK9CxyC,EAAMi8C,cAAgB,SAAUzJ,GAC5B,GAAIxyC,EAAMy7C,cAAe,CAErB,GADAz7C,EAAM8yC,QAAQC,QAAQ,cAAeP,IAChCxyC,EAAM27C,oBAAqB,CAC5B,IAAIL,EAAct7C,EAAMs7C,YACpBY,OAAa,EACb3H,EAAS/B,EAAG+B,OAAQE,EAASjC,EAAGiC,OACpCyH,EAAa3H,EAASA,EAASE,EAASA,EACpCyH,GAAcZ,EAAcA,GAC5Bt7C,EAAMg8C,wBAAwBxJ,GAGlCxyC,EAAMgG,aAEoB,WAAtBwsC,EAAG6B,UAAUzzC,OACbZ,EAAM87C,OAAO7F,WAAWzD,EAAGuB,MAAOvB,EAAG0B,OACrCl0C,EAAMm8C,aAAalG,WAAWzD,EAAGuB,MAAOvB,EAAG0B,QAE/Cl0C,EAAM8yC,QAAQC,QAAQ,WAAYP,MAI9CxyC,EAAMo8C,YAAc,SAAU5J,GACtBxyC,EAAMy7C,gBACNz7C,EAAMy7C,eAAgB,EACtB,eAAe9iB,SAASC,MACxB,eAAiBD,SAASC,MAC1B54B,EAAM8yC,QAAQC,QAAQ,YAAaP,GAC/BxyC,EAAMgG,aACNhG,EAAMm8C,aAAa/F,OACnBp2C,EAAMq8C,YAAY7J,IAElBxyC,EAAM47C,iBACNU,aAAat8C,EAAM47C,gBACnB57C,EAAM47C,eAAiB,QAInC,IAAI/a,EAAU7gC,EAAM6gC,QAAU,IAAIiR,EAAgBC,GASlD,OARAlR,EAAQiS,QAAQp5C,GAAG,cAAesG,EAAM67C,eACxChb,EAAQiS,QAAQp5C,GAAG,cAAesG,EAAMi8C,eACxCpb,EAAQiS,QAAQp5C,GAAG,YAAasG,EAAMo8C,aAClCnK,IACApR,EAAQoR,SAAWA,GAEvBjyC,EAAM87C,OAAS,IAAIrG,EACnBz1C,EAAMm8C,aAAe,IAAIzD,EAClB14C,EA+DX,OAvJA,eAAUo7C,EAA2Br7C,GA0FrCq7C,EAA0Bp/C,UAAU64C,QAAU,WAC1Cl8C,KAAKkoC,QAAQgU,UAGbl8C,KAAKyjD,YAAY,KAErBhB,EAA0Bp/C,UAAU+/C,WAAa,SAAUvJ,GACvD,IAAIxyC,EAAQrH,KACc,kBAAfA,KAAK0iD,MACZ1iD,KAAKijD,eAAiBrG,YAAW,WAC7Bv1C,EAAM47C,eAAiB,KACvB57C,EAAMu8C,eAAe/J,KACtB75C,KAAK0iD,OAGR1iD,KAAK4jD,eAAe/J,IAG5B4I,EAA0Bp/C,UAAUugD,eAAiB,SAAU/J,GAC3D75C,KAAK+iD,cAAe,EACpB/iD,KAAK6jD,aAAahK,IAEtB4I,EAA0Bp/C,UAAUggD,wBAA0B,SAAUxJ,GACpE75C,KAAKgjD,qBAAsB,EAC3BhjD,KAAK6jD,aAAahK,IAEtB4I,EAA0Bp/C,UAAUwgD,aAAe,SAAUhK,GACrD75C,KAAK+iD,cAAgB/iD,KAAKgjD,sBACrBhjD,KAAKkoC,QAAQyR,iBAAkB35C,KAAK4iD,qBACrC5iD,KAAKqN,YAAa,EAClBrN,KAAK6iD,mBAAoB,EACzB7iD,KAAKwjD,aAAavxC,MAAM4nC,EAAGuB,MAAOvB,EAAG0B,MAAOv7C,KAAKo5C,aACjDp5C,KAAKm6C,QAAQC,QAAQ,YAAaP,IACF,IAA5B75C,KAAK4iD,oBACL5iD,KAAKkoC,QAAQqU,uBAK7BkG,EAA0Bp/C,UAAUqgD,YAAc,SAAU7J,GAGxD75C,KAAKmjD,OAAO1F,KAAKz9C,KAAK6iD,kBAAmB7iD,KAAK8jD,SAASC,KAAK/jD,KAAM65C,KAEtE4I,EAA0Bp/C,UAAUygD,SAAW,SAAUjK,GACrD75C,KAAKqN,YAAa,EAClBrN,KAAKm6C,QAAQC,QAAQ,UAAWP,IAGpC4I,EAA0Bp/C,UAAU2gD,cAAgB,SAAUxG,GAC1Dx9C,KAAKkoC,QAAQsR,iBAAmBgE,GAEpCiF,EAA0Bp/C,UAAU4gD,mBAAqB,SAAUzG,GAC/Dx9C,KAAKmjD,OAAO5F,aAAaC,IAE7BiF,EAA0Bp/C,UAAU6gD,qBAAuB,SAAU1G,GACjEx9C,KAAK6iD,kBAAoBrF,GAE7BiF,EAA0Bp/C,UAAU8gD,qBAAuB,SAAU3G,GACjEx9C,KAAKwjD,aAAaxD,UAAYxC,GAE3BiF,EAxJmC,CAyJ5C,QAUE2B,EAA+B,WAC/B,SAASA,EAAcr0C,GACnB/P,KAAKqkD,SAAW,gBAAYt0C,GAE5B/P,KAAKugD,aAAe,gBAAmBxwC,GAAIpM,KAAI,SAAU2gD,GAAY,OAAO,IAAI5E,EAAuB4E,GAAU,MAmCrH,OAjCAF,EAAc/gD,UAAU64C,QAAU,WAC9B,IAAK,IAAI/xC,EAAK,EAAGvC,EAAK5H,KAAKugD,aAAcp2C,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC3D,IAAIm3C,EAAc15C,EAAGuC,GACrBm3C,EAAYpF,YAGpBkI,EAAc/gD,UAAUkhD,YAAc,WAElC,IADA,IAAIzsC,EAAO9X,KAAKqkD,SAASvsC,KAChB3N,EAAK,EAAGvC,EAAK5H,KAAKugD,aAAcp2C,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC3D,IAAIm3C,EAAc15C,EAAGuC,GACrB2N,GAAQwpC,EAAY1C,eAAiB0C,EAAY7C,gBAErD,OAAO3mC,GAEXssC,EAAc/gD,UAAUmhD,WAAa,WAEjC,IADA,IAAIrsC,EAAMnY,KAAKqkD,SAASlsC,IACfhO,EAAK,EAAGvC,EAAK5H,KAAKugD,aAAcp2C,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC3D,IAAIm3C,EAAc15C,EAAGuC,GACrBgO,GAAOmpC,EAAY3C,cAAgB2C,EAAY/C,eAEnD,OAAOpmC,GAEXisC,EAAc/gD,UAAUohD,iBAAmB,SAAUrJ,EAAOG,GAExD,IADA,IAAImJ,EAAQ,CAAE5sC,KAAMsjC,EAAOjjC,IAAKojC,GACvBpxC,EAAK,EAAGvC,EAAK5H,KAAKugD,aAAcp2C,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC3D,IAAIm3C,EAAc15C,EAAGuC,GACrB,IAAKw6C,EAAkBrD,EAAYjC,oBAC9B,gBAAgBqF,EAAOpD,EAAYnC,YACpC,OAAO,EAGf,OAAO,GAEJiF,EAvCuB,GA2ClC,SAASO,EAAkBr7B,GACvB,IAAIs7B,EAAUt7B,EAAKs7B,QACnB,MAAmB,SAAZA,GAAkC,SAAZA,EAgBjC,IAAIC,EAA6B,WAC7B,SAASA,EAAYC,EAAUC,GAC3B,IAAI19C,EAAQrH,KAEZA,KAAKglD,kBAAmB,EACxBhlD,KAAKilD,gBAAiB,EACtBjlD,KAAKklD,WAAa,KAClBllD,KAAKmlD,UAAY,KACjBnlD,KAAKolD,SAAW,KAChBplD,KAAKqlD,kBAAoB,SAAUxL,GAC/B,IAAIiL,EAAWz9C,EAAMy9C,SACrBz9C,EAAM69C,WAAa,KACnB79C,EAAM89C,UAAY,KAClB99C,EAAM+9C,SAAW,KACjB/9C,EAAMgV,cACNhV,EAAMi+C,kBAAkBzL,GACpBxyC,EAAM69C,aAAe79C,EAAM49C,gBAC3BH,EAASd,eAAc,GAEvB38C,EAAM8yC,QAAQC,QAAQ,cAAeP,IAGrCiL,EAASd,eAAc,IAG/BhkD,KAAKulD,gBAAkB,SAAU1L,GAC7BxyC,EAAM8yC,QAAQC,QAAQ,YAAaP,GACnCxyC,EAAMi2C,WAAWzD,GAAI,IAEzB75C,KAAKwlD,eAAiB,SAAU3L,GAC5BxyC,EAAM8yC,QAAQC,QAAQ,WAAYP,GAClCxyC,EAAMi2C,WAAWzD,IAErB75C,KAAKylD,gBAAkB,SAAU5L,GAC7BxyC,EAAMq+C,cACNr+C,EAAM8yC,QAAQC,QAAQ,YAAaP,IAEvC75C,KAAK2lD,cAAgB,SAAU9L,GACvBxyC,EAAM89C,WACN99C,EAAM8yC,QAAQC,QAAQ,YAAa,MAAM,EAAMP,GAEnDxyC,EAAM+9C,SAAW/9C,EAAM89C,UACvB99C,EAAM89C,UAAY,KAClB99C,EAAM8yC,QAAQC,QAAQ,UAAWP,IAErC75C,KAAK+kD,eAAiBA,EACtBD,EAAS3K,QAAQp5C,GAAG,cAAef,KAAKqlD,mBACxCP,EAAS3K,QAAQp5C,GAAG,YAAaf,KAAKulD,iBACtCT,EAAS3K,QAAQp5C,GAAG,WAAYf,KAAKwlD,gBACrCV,EAAS3K,QAAQp5C,GAAG,YAAaf,KAAKylD,iBACtCX,EAAS3K,QAAQp5C,GAAG,UAAWf,KAAK2lD,eACpC3lD,KAAK8kD,SAAWA,EAChB9kD,KAAKm6C,QAAU,IAAI,OAqFvB,OAjFA0K,EAAYxhD,UAAUiiD,kBAAoB,SAAUzL,GAChD,IAGI+L,EAHAC,EAAY,CAAE/tC,KAAM+hC,EAAGuB,MAAOjjC,IAAK0hC,EAAG0B,OACtCuK,EAAgBD,EAChBxM,EAAYQ,EAAGR,UAEfA,aAAqB0M,cACrBH,EAAc,gBAAYvM,GAC1ByM,EAAgB,gBAAeA,EAAeF,IAElD,IAAIV,EAAallD,KAAKklD,WAAallD,KAAKgmD,kBAAkBF,EAAchuC,KAAMguC,EAAc3tC,KAC5F,GAAI+sC,EAAY,CACZ,GAAIllD,KAAKglD,kBAAoBY,EAAa,CACtC,IAAIK,EAAoB,gBAAeL,EAAaV,EAAWtxC,MAC3DqyC,IACAH,EAAgB,gBAAcG,IAGtCjmD,KAAKkmD,YAAc,gBAAWJ,EAAeD,QAG7C7lD,KAAKkmD,YAAc,CAAEpuC,KAAM,EAAGK,IAAK,IAG3C0sC,EAAYxhD,UAAUi6C,WAAa,SAAUzD,EAAIsM,GAC7C,IAAIC,EAAMpmD,KAAKgmD,kBAAkBnM,EAAGuB,MAAQp7C,KAAKkmD,YAAYpuC,KAAM+hC,EAAG0B,MAAQv7C,KAAKkmD,YAAY/tC,MAC3FguC,GAAgBE,EAAYrmD,KAAKmlD,UAAWiB,KAC5CpmD,KAAKmlD,UAAYiB,EACjBpmD,KAAKm6C,QAAQC,QAAQ,YAAagM,GAAK,EAAOvM,KAGtDgL,EAAYxhD,UAAUgZ,YAAc,WAChCrc,KAAKsmD,eAAiB,gBAAQtmD,KAAK+kD,gBAAgB,SAAUwB,GAEzD,OADAA,EAAoBr/C,UAAUmV,cACvB,IAAI+nC,EAAcmC,EAAoBx2C,QAGrD80C,EAAYxhD,UAAUqiD,YAAc,WAChC,IAAIY,EAAiBtmD,KAAKsmD,eAC1B,IAAK,IAAI36C,KAAM26C,EACXA,EAAe36C,GAAIuwC,UAEvBl8C,KAAKsmD,eAAiB,IAE1BzB,EAAYxhD,UAAU2iD,kBAAoB,SAAUQ,EAAYppB,GAC5D,IAAIx1B,EAAK5H,KAAM+kD,EAAiBn9C,EAAGm9C,eAAgBuB,EAAiB1+C,EAAG0+C,eACnEG,EAAU,KACd,IAAK,IAAI96C,KAAMo5C,EAAgB,CAC3B,IAAI79C,EAAY69C,EAAep5C,GAAIzE,UAC/Bw/C,EAAgBJ,EAAe36C,GACnC,GAAI+6C,GACAA,EAAcjC,iBAAiB+B,EAAYppB,GAAY,CACvD,IAAIupB,EAAaD,EAAcnC,cAC3BqC,EAAYF,EAAclC,aAC1B7nC,EAAe6pC,EAAaG,EAC5B/pC,EAAcwgB,EAAYwpB,EAC1BvC,EAAWqC,EAAcrC,SACzBzoC,EAAQyoC,EAAStsC,MAAQssC,EAASvsC,KAClCsB,EAASirC,EAASxqC,OAASwqC,EAASlsC,IACxC,GAEAwE,GAAgB,GAAKA,EAAef,GAChCgB,GAAe,GAAKA,EAAcxD,EAAQ,CAC1C,IAAIgtC,EAAMl/C,EAAUwV,SAASC,EAAcC,EAAahB,EAAOxC,GAC3DgtC,GAEJ,eAFW,CAEQA,EAAIl7C,YAAY27C,YAAaT,EAAIrpC,SAAS1I,UACvDoyC,GAAWL,EAAI/oC,MAAQopC,EAAQppC,SACjC+oC,EAAIU,YAAcn7C,EAClBy6C,EAAIv+C,QAAUX,EAAUW,QAExBu+C,EAAIxyC,KAAKkE,MAAQ6uC,EACjBP,EAAIxyC,KAAKmE,OAAS4uC,EAClBP,EAAIxyC,KAAKuE,KAAOyuC,EAChBR,EAAIxyC,KAAKiG,QAAU+sC,EACnBH,EAAUL,KAK1B,OAAOK,GAEJ5B,EAzIqB,GA2IhC,SAASwB,EAAYU,EAAMC,GACvB,OAAKD,IAASC,GAGVlwC,QAAQiwC,KAAUjwC,QAAQkwC,IAGvB,gBAAiBD,EAAKhqC,SAAUiqC,EAAKjqC,UAGhD,SAASkqC,EAA6BlqC,EAAUlV,GAE5C,IADA,IAAI/G,EAAQ,GACHqJ,EAAK,EAAGvC,EAAKC,EAAQ0B,YAAY29C,oBAAqB/8C,EAAKvC,EAAG3B,OAAQkE,IAAM,CACjF,IAAIg9C,EAAYv/C,EAAGuC,GACnB,eAASrJ,EAAOqmD,EAAUpqC,EAAUlV,IAGxC,OADA,eAAS/G,EAAOsmD,EAAkBrqC,EAAUlV,EAAQ6X,UAC7C5e,EAEX,SAASsmD,EAAkBv9C,EAAM6V,GAC7B,MAAO,CACHzU,KAAMyU,EAAQkC,OAAO/X,EAAKwK,MAAMpC,OAChCo1C,QAAS3nC,EAAQ4nC,UAAUz9C,EAAKwK,MAAMpC,MAAO,CAAEs1C,SAAU19C,EAAK0C,SAC9DA,OAAQ1C,EAAK0C,QAQrB,IAAIi7C,EAA8B,SAAUpgD,GAExC,SAASogD,EAAaC,GAClB,IAAIpgD,EAAQD,EAAO7D,KAAKvD,KAAMynD,IAAaznD,KAC3CqH,EAAMg+C,kBAAoB,SAAUpL,GAChC,IAAI6K,EAAWz9C,EAAMy9C,SACjBzI,EAASpC,EAAIyB,UAAUz4C,OAE3B6hD,EAASd,eAAe38C,EAAMH,UAAUwgD,kBAAkBrL,KAG9Dh1C,EAAMs+C,cAAgB,SAAU9L,GAC5B,IAAI3yC,EAAYG,EAAMH,UAClBghC,EAAU7gC,EAAMy9C,SAAS5c,QAC7B,IAAKA,EAAQyR,eAAgB,CACzB,IAAI/xC,EAAKP,EAAMsgD,YAAazC,EAAat9C,EAAGs9C,WAAYE,EAAWx9C,EAAGw9C,SACtE,GAAIF,GAAcE,GAAYiB,EAAYnB,EAAYE,GAAW,CAC7D,IAAIv9C,EAAUX,EAAUW,QACpBsc,EAAM,eAAS,eAAS,GAAI8iC,EAA6B/B,EAAWnoC,SAAUlV,IAAW,CAAEoV,MAAOioC,EAAWjoC,MAAO2qC,QAAS/N,EAAG6B,UAAW75B,KAAMha,EAAQyZ,SAAWzZ,EAAQggD,YAAYhmC,OAC5Lha,EAAQsyC,QAAQC,QAAQ,YAAaj2B,MAKjD9c,EAAMy9C,SAAW,IAAIrC,EAA0BgF,EAAS13C,IACxD1I,EAAMy9C,SAAStB,aAAaxD,WAAY,EACxC,IAAI2H,EAActgD,EAAMsgD,YAAc,IAAI9C,EAAYx9C,EAAMy9C,SAAU,gBAA2B2C,IAGjG,OAFAE,EAAYxN,QAAQp5C,GAAG,cAAesG,EAAMg+C,mBAC5CsC,EAAYxN,QAAQp5C,GAAG,UAAWsG,EAAMs+C,eACjCt+C,EAKX,OAjCA,eAAUmgD,EAAcpgD,GA8BxBogD,EAAankD,UAAU64C,QAAU,WAC7Bl8C,KAAK8kD,SAAS5I,WAEXsL,EAlCsB,CAmC/B,QAMEM,EAA+B,SAAU1gD,GAEzC,SAAS0gD,EAAcL,GACnB,IAAIpgD,EAAQD,EAAO7D,KAAKvD,KAAMynD,IAAaznD,KAC3CqH,EAAM0gD,cAAgB,KACtB1gD,EAAMg+C,kBAAoB,SAAUxL,GAChC,IAAIjyC,EAAKP,EAAOH,EAAYU,EAAGV,UAAW49C,EAAWl9C,EAAGk9C,SACpDthD,EAAU0D,EAAUW,QAAQrE,QAC5BwkD,EAAYxkD,EAAQ+5B,YACpBr2B,EAAUwgD,kBAAkB7N,EAAG6B,UAAUz4C,QAE7C6hD,EAASd,eAAegE,GAExBlD,EAASpC,MAAQ7I,EAAG8B,QAAUsM,EAAyB/gD,GAAa,MAExEG,EAAMk+C,gBAAkB,SAAU1L,GAC9BxyC,EAAMH,UAAUW,QAAQggD,YAAYK,SAASrO,IAEjDxyC,EAAM8gD,gBAAkB,SAAU/B,EAAKgC,GACnC,IAAIvgD,EAAUR,EAAMH,UAAUW,QAC1BkgD,EAAgB,KAChBM,GAAY,EAChB,GAAIjC,EAAK,CACL,IAAIlB,EAAa79C,EAAMsgD,YAAYzC,WAC/BoD,EAAalC,EAAIU,cAAgB5B,EAAW4B,aACzCz/C,EAAM6T,oBACL7T,EAAM6T,kBAAkBgqC,EAAYkB,GACvCkC,IACDP,EAAgBQ,EAAsBrD,EAAYkB,EAAKv+C,EAAQ0B,YAAYi/C,4BAE1ET,GAAkB,gBAAqBA,EAAe3B,EAAIl7C,YAAarD,KACxEwgD,GAAY,EACZN,EAAgB,MAGpBA,EACAlgD,EAAQ4gD,SAAS,CAAExgD,KAAM,eAAgBygD,UAAWX,IAE9CK,GACNvgD,EAAQ4gD,SAAS,CAAExgD,KAAM,mBAExBogD,EAID,kBAHA,kBAKCD,IACD/gD,EAAM0gD,cAAgBA,IAG9B1gD,EAAMo+C,gBAAkB,SAAUxL,GAC1B5yC,EAAM0gD,gBAEN,gBAAkB1gD,EAAM0gD,cAAe9N,EAAK5yC,EAAMH,UAAUW,SAC5DR,EAAM0gD,cAAgB,OAG9B,IAAI7gD,EAAYugD,EAASvgD,UACrB1D,EAAU0D,EAAUW,QAAQrE,QAC5BshD,EAAWz9C,EAAMy9C,SAAW,IAAIrC,EAA0BgF,EAAS13C,IACvE+0C,EAASlC,oBAAqB,EAC9BkC,EAASnC,YAAcn/C,EAAQmlD,mBAAqB,EACpD7D,EAAStB,aAAaxD,UAAYx8C,EAAQolD,WAC1C,IAAIjB,EAActgD,EAAMsgD,YAAc,IAAI9C,EAAYx9C,EAAMy9C,SAAU,gBAA2B2C,IAKjG,OAJAE,EAAYxN,QAAQp5C,GAAG,cAAesG,EAAMg+C,mBAC5CsC,EAAYxN,QAAQp5C,GAAG,YAAasG,EAAMk+C,iBAC1CoC,EAAYxN,QAAQp5C,GAAG,YAAasG,EAAM8gD,iBAC1CR,EAAYxN,QAAQp5C,GAAG,YAAasG,EAAMo+C,iBACnCp+C,EAKX,OAzEA,eAAUygD,EAAe1gD,GAsEzB0gD,EAAczkD,UAAU64C,QAAU,WAC9Bl8C,KAAK8kD,SAAS5I,WAEX4L,EA1EuB,CA2EhC,QACF,SAASG,EAAyB/gD,GAC9B,IAAI1D,EAAU0D,EAAUW,QAAQrE,QAC5Bk/C,EAAQl/C,EAAQqlD,qBAIpB,OAHa,MAATnG,IACAA,EAAQl/C,EAAQslD,gBAEbpG,EAEX,SAAS6F,EAAsBxB,EAAMC,EAAMwB,GACvC,IAAIO,EAAYhC,EAAKhqC,SACjBisC,EAAYhC,EAAKjqC,SACjBksC,EAAK,CACLF,EAAU10C,MAAMpC,MAChB82C,EAAU10C,MAAMnC,IAChB82C,EAAU30C,MAAMpC,MAChB+2C,EAAU30C,MAAMnC,KAEpB+2C,EAAG3gC,KAAK,SAER,IADA,IAAIxnB,EAAQ,GACHqJ,EAAK,EAAG++C,EAA8BV,EAA2Br+C,EAAK++C,EAA4BjjD,OAAQkE,IAAM,CACrH,IAAIg/C,EAAcD,EAA4B/+C,GAC1C4f,EAAMo/B,EAAYpC,EAAMC,GAC5B,IAAY,IAARj9B,EACA,OAAO,KAEPA,GACA,eAASjpB,EAAOipB,GAKxB,OAFAjpB,EAAMuT,MAAQ,CAAEpC,MAAOg3C,EAAG,GAAI/2C,IAAK+2C,EAAG,IACtCnoD,EAAMyL,OAASw8C,EAAUx8C,OAClBzL,EAGX,IAAIsoD,EAA+B,SAAUhiD,GAEzC,SAASgiD,EAAc3B,GACnB,IAAIpgD,EAAQD,EAAO7D,KAAKvD,KAAMynD,IAAaznD,KAE3CqH,EAAMgyC,UAAY,KAClBhyC,EAAMgiD,WAAa,KACnBhiD,EAAMgG,YAAa,EACnBhG,EAAMgF,WAAa,KACnBhF,EAAMiiD,eAAiB,KACvBjiD,EAAMkiD,iBAAmB,KACzBliD,EAAMmiD,cAAgB,KACtBniD,EAAMoiD,sBAAwB,KAC9BpiD,EAAMg+C,kBAAoB,SAAUxL,GAChC,IAAI6P,EAAa7P,EAAG6B,UAAUz4C,OAC1B2E,EAAKP,EAAOH,EAAYU,EAAGV,UAAW49C,EAAWl9C,EAAGk9C,SACpD3B,EAAS2B,EAAS3B,OAClB3/C,EAAU0D,EAAUW,QAAQrE,QAC5BmmD,EAAiBziD,EAAUW,QAC/BR,EAAMgyC,UAAYQ,EAAGR,UACrB,IAAIgQ,EAAahiD,EAAMgiD,WAAa,gBAASxP,EAAGR,WAC5ChtC,EAAahF,EAAMgF,WAAag9C,EAAWh9C,WAC3Cu9C,EAAkBv9C,EAAW4C,SAASD,WAC1C3H,EAAMiiD,eAAiB,gBAAkBK,EAAeE,iBAAiBhrC,WAAY+qC,GACrF9E,EAASnC,YAAc9I,EAAG8B,QAAU,EAAIn4C,EAAQsmD,qBAChDhF,EAASpC,MAEJ7I,EAAG8B,SAAWiO,IAAoB1iD,EAAUpG,MAAMqO,eAC/C46C,EAAuB7iD,GACvB,KACJ1D,EAAQwmD,kBACR7G,EAAO/iB,WAAa58B,EAAQwmD,kBAG5B7G,EAAO/iB,WAAa,gBAAespB,EAAY,OAEnDvG,EAAOjG,eAAiB15C,EAAQymD,mBAChC,IAAIC,EAAUhjD,EAAUijD,iBAAiBT,KACpC,gBAAeA,EAAY,qBAChC5E,EAASd,eAAekG,GAGxB7iD,EAAMgG,WAAa68C,GACfrQ,EAAGR,UAAU2E,UAAUtX,SAAS,uBAExCr/B,EAAMk+C,gBAAkB,SAAU1L,GAC9B,IAAI8P,EAAiBtiD,EAAMH,UAAUW,QACjCwE,EAAahF,EAAMgF,WACnBu9C,EAAkBv9C,EAAW4C,SAASD,WACtC6qC,EAAG8B,QAECiO,IAAoBviD,EAAMH,UAAUpG,MAAMqO,gBAC1Cw6C,EAAelB,SAAS,CAAExgD,KAAM,eAAgB2hD,gBAAiBA,IAKrED,EAAelB,SAAS,CAAExgD,KAAM,mBAEhCZ,EAAMgG,aACNs8C,EAAe9B,YAAYK,SAASrO,GACpC8P,EAAexP,QAAQC,QAAQ,iBAAkB,CAC7CrqC,GAAI1I,EAAMgyC,UACVrrC,MAAO,IAAI,OAAS27C,EAAgBt9C,EAAWC,IAAKD,EAAW4C,UAC/D24C,QAAS/N,EAAG6B,UACZ75B,KAAM8nC,EAAeroC,YAIjCja,EAAM8gD,gBAAkB,SAAU/B,EAAKgC,GACnC,GAAK/gD,EAAMgG,WAAX,CAGA,IAAIi8C,EAAiBjiD,EAAMiiD,eACvBpE,EAAa79C,EAAMsgD,YAAYzC,WAC/ByE,EAAiBtiD,EAAMH,UAAUW,QAEjC0hD,EAAmB,KACnBa,EAAW,KACXX,EAAwB,KACxBpB,GAAY,EACZgC,EAAc,CACdC,eAAgBhB,EAChBiB,cAAe,kBACfz/C,SAAS,GAEb,GAAIs7C,EAAK,CACLmD,EAAmBnD,EAAIv+C,QACvB,IAAI2iD,EAAmBjB,EAAiB/lD,QACpCmmD,IAAmBJ,GAClBiB,EAAiBC,UAAYD,EAAiBE,WAC/CN,EAAWO,EAAqBzF,EAAYkB,EAAKmD,EAAiBM,iBAAiBtgD,YAAYqhD,4BAC3FR,IACAX,EAAwB,eAA0BH,EAAgBC,EAAiBM,iBAAiB/qC,aAAcsrC,EAAUb,GAC5Hc,EAAYE,cAAgBd,EACvB,gBAAmBY,EAAajE,EAAIl7C,YAAaq+C,KAClDlB,GAAY,EACZ+B,EAAW,KACXX,EAAwB,KACxBY,EAAYE,cAAgB,qBAKpChB,EAAmB,KAG3BliD,EAAMwjD,YAAYtB,EAAkBc,GAC/BhC,EAID,kBAHA,kBAKCD,IACGuB,IAAmBJ,GACnBlD,EAAYnB,EAAYkB,KACxBgE,EAAW,MAEf/iD,EAAMy9C,SAASZ,sBAAsBkG,GAGrC/iD,EAAMy9C,SAASb,oBAAoBmC,IAAQ,gBAAU/+C,EAAMgyC,WAAWtV,cAAc,qBAEpF18B,EAAMkiD,iBAAmBA,EACzBliD,EAAMmiD,cAAgBY,EACtB/iD,EAAMoiD,sBAAwBA,KAGtCpiD,EAAMo+C,gBAAkB,WACfp+C,EAAMgG,YACPhG,EAAMszC,WAGdtzC,EAAMs+C,cAAgB,SAAU9L,GAC5B,GAAIxyC,EAAMgG,WAAY,CAClB,IAAIy9C,EAAmBzjD,EAAMH,UAAUW,QACnCmY,EAAc8qC,EAAiBxpC,QAC/B1Z,EAAKP,EAAO0jD,EAAqBnjD,EAAG2hD,iBAAkBC,EAAgB5hD,EAAG4hD,cACzExoC,EAAW3Z,EAAMgF,WAAWC,IAC5B0+C,EAAgB3jD,EAAMgF,WAAW4C,SACjCg8C,EAAW,IAAI,OAASH,EAAkB9pC,EAAUgqC,GACpDE,EAAmB7jD,EAAMiiD,eACzB6B,EAA0B9jD,EAAMoiD,sBAChCrE,EAAW/9C,EAAMsgD,YAAYvC,SAQjC,GAPA/9C,EAAM+jD,YACNN,EAAiB3Q,QAAQC,QAAQ,gBAAiB,CAC9CrqC,GAAI1I,EAAMgyC,UACVrrC,MAAOi9C,EACPrD,QAAS/N,EAAG6B,UACZ75B,KAAM7B,IAENwpC,GAEA,GAAIuB,IAAuBD,EAAkB,CACzC,IAAIO,EAAkB,IAAI,OAASP,EAAkBK,EAAwBG,KAAKtqC,EAASuqC,OAAQP,EAAgBG,EAAwBK,UAAUR,EAAch8C,YAAc,MACjL87C,EAAiBrC,SAAS,CACtBxgD,KAAM,eACN4W,WAAYssC,IAchB,IAZA,IAAIM,EAAiB,CACjBC,SAAUT,EACVj9C,MAAOq9C,EACPM,cAAe,eAAeR,EAAyBL,EAAkBE,GACzEY,OAAQ,WACJd,EAAiBrC,SAAS,CACtBxgD,KAAM,eACN4W,WAAYqsC,MAIpBW,EAAc,GACT1hD,EAAK,EAAG9H,EAAKyoD,EAAiBjB,iBAAiBtgD,YAAYuiD,sBAAuB3hD,EAAK9H,EAAG4D,OAAQkE,IAAM,CAC7G,IAAIg/C,EAAc9mD,EAAG8H,GACrB,eAAS0hD,EAAa1C,EAAYK,EAAesB,IAErDA,EAAiB3Q,QAAQC,QAAQ,YAAa,eAAS,eAAS,eAAS,GAAIqR,GAAiBI,GAAc,CAAE97C,GAAI8pC,EAAGR,UAAW0S,MAAOvC,EAAcwC,WAAYpE,QAAS/N,EAAG6B,UAAW75B,KAAM7B,KAC9L8qC,EAAiB3Q,QAAQC,QAAQ,cAAeqR,QAG/C,GAAIV,EAAoB,CACzB,IAAIkB,EAAiB,CACjBj+C,MAAOi9C,EACPU,cAAe,eAAeT,EAAkBJ,EAAkBE,GAClEY,OAAQ,WACJd,EAAiBrC,SAAS,CACtBxgD,KAAM,eACN4W,WAAYqsC,MAIxBJ,EAAiB3Q,QAAQC,QAAQ,aAAc,eAAS,eAAS,GAAI6R,GAAiB,CAAEC,UAAWrS,EAAGR,UAAWx3B,KAAM7B,KACvH8qC,EAAiBrC,SAAS,CACtBxgD,KAAM,gBACN4W,WAAYqsC,IAEhBJ,EAAiB3Q,QAAQC,QAAQ,cAAe6R,GAChD,IAAIE,EAAgBhB,EAAwBG,KAAKtqC,EAASuqC,OACtDa,EAAqBjB,EAAwBK,UAAUR,EAAch8C,YACrEq9C,EAAgB,IAAI,OAAStB,EAAoBoB,EAAeC,GACpErB,EAAmBtC,SAAS,CACxBxgD,KAAM,eACN4W,WAAYssC,IAEhB,IAAImB,EAAc,CACdt+C,MAAOq+C,EACPV,cAAe,eAAeR,EAAyBJ,EAAoBqB,GAC3ER,OAAQ,WACJb,EAAmBtC,SAAS,CACxBxgD,KAAM,gBACN4W,WAAYssC,MAIxBJ,EAAmB5Q,QAAQC,QAAQ,WAAYkS,GAC3CzS,EAAG8B,SACHoP,EAAmBtC,SAAS,CACxBxgD,KAAM,eACN2hD,gBAAiBoB,EAAch8C,aAGvC+7C,EAAmB5Q,QAAQC,QAAQ,OAAQ,eAAS,eAAS,GAAI6M,EAA6B7B,EAASroC,SAAUguC,IAAsB,CAAEmB,UAAWrS,EAAGR,UAAWuO,QAAS/N,EAAG6B,UAAW75B,KAAMujC,EAASv9C,QAAQyZ,WAChNypC,EAAmB5Q,QAAQC,QAAQ,eAAgB,eAAS,eAAS,GAAIkS,GAAc,CAAEJ,UAAWrS,EAAGR,UAAWx3B,KAAMujC,EAASv9C,QAAQyZ,iBAI7IwpC,EAAiB3Q,QAAQC,QAAQ,gBAGzC/yC,EAAMszC,WAEV,IAAIzzC,EAAYG,EAAMH,UAClB1D,EAAU0D,EAAUW,QAAQrE,QAC5BshD,EAAWz9C,EAAMy9C,SAAW,IAAIrC,EAA0BgF,EAAS13C,IACvE+0C,EAAS5c,QAAQoR,SAAW8P,EAAcmD,SAC1CzH,EAASlC,oBAAqB,EAC9BkC,EAAStB,aAAaxD,UAAYx8C,EAAQolD,WAC1C,IAAIjB,EAActgD,EAAMsgD,YAAc,IAAI9C,EAAYx9C,EAAMy9C,SAAU,SAOtE,OANA6C,EAAY3C,iBAAmByC,EAAS+E,eACxC7E,EAAYxN,QAAQp5C,GAAG,cAAesG,EAAMg+C,mBAC5CsC,EAAYxN,QAAQp5C,GAAG,YAAasG,EAAMk+C,iBAC1CoC,EAAYxN,QAAQp5C,GAAG,YAAasG,EAAM8gD,iBAC1CR,EAAYxN,QAAQp5C,GAAG,YAAasG,EAAMo+C,iBAC1CkC,EAAYxN,QAAQp5C,GAAG,UAAWsG,EAAMs+C,eACjCt+C,EAuDX,OA1SA,eAAU+hD,EAAehiD,GAqPzBgiD,EAAc/lD,UAAU64C,QAAU,WAC9Bl8C,KAAK8kD,SAAS5I,WAGlBkN,EAAc/lD,UAAUwnD,YAAc,SAAU4B,EAAa58C,GACzD,IAAI85C,EAAiB3pD,KAAKkH,UAAUW,QAChC6kD,EAAc1sD,KAAKupD,iBAEnBmD,GAAeA,IAAgBD,IAG3BC,IAAgB/C,EAChB+C,EAAYjE,SAAS,CACjBxgD,KAAM,iBACN4H,MAAO,CACHy6C,eAAgBz6C,EAAMy6C,eACtBC,cAAe,kBACfz/C,SAAS,KAMjB4hD,EAAYjE,SAAS,CAAExgD,KAAM,sBAGjCwkD,GACAA,EAAYhE,SAAS,CAAExgD,KAAM,iBAAkB4H,MAAOA,KAG9Du5C,EAAc/lD,UAAU+nD,UAAY,WAChC,IAAIuB,EAAkB3sD,KAAKkH,UAAUW,QACjC0hD,EAAmBvpD,KAAKupD,iBACxBA,GACAA,EAAiBd,SAAS,CAAExgD,KAAM,qBAGlC0kD,IAAoBpD,GACpBoD,EAAgBlE,SAAS,CAAExgD,KAAM,sBAGzCmhD,EAAc/lD,UAAUs3C,QAAU,WAC9B36C,KAAKqpD,WAAa,KAClBrpD,KAAKqN,YAAa,EAClBrN,KAAKqM,WAAa,KAClBrM,KAAKspD,eAAiB,KACtBtpD,KAAKupD,iBAAmB,KACxBvpD,KAAKwpD,cAAgB,KACrBxpD,KAAKypD,sBAAwB,MAIjCL,EAAcmD,SAAW,2CAClBnD,EA3SuB,CA4ShC,QACF,SAASuB,EAAqB5D,EAAMC,EAAM4F,GACtC,IAAI7D,EAAYhC,EAAKhqC,SACjBisC,EAAYhC,EAAKjqC,SACjB8vC,EAAQ9D,EAAU10C,MAAMpC,MACxB66C,EAAQ9D,EAAU30C,MAAMpC,MACxB86C,EAAgB,GAChBhE,EAAUx8C,SAAWy8C,EAAUz8C,SAC/BwgD,EAAcxgD,OAASy8C,EAAUz8C,OACjCwgD,EAAcC,OAAShG,EAAKn/C,QAAQrE,QAAQypD,uBACxCjE,EAAUz8C,SAGVsgD,EAAQ,gBAAWA,KAG3B,IAAId,EAAQ,gBAAUc,EAAOC,EAAO/F,EAAKl/C,QAAQ6X,QAASqnC,EAAKD,cAAgBE,EAAKF,YAChFC,EAAKmG,UACL,MACAnB,EAAMnmC,eACNmnC,EAAcxgD,QAAS,GAM3B,IAJA,IAAI69C,EAAW,CACX4B,WAAYD,EACZgB,cAAeA,GAEV5iD,EAAK,EAAGgjD,EAAcP,EAAWziD,EAAKgjD,EAAYlnD,OAAQkE,IAAM,CACrE,IAAIijD,EAAWD,EAAYhjD,GAC3BijD,EAAShD,EAAUrD,EAAMC,GAE7B,OAAOoD,EAEX,SAASL,EAAuB7iD,GAC5B,IAAI1D,EAAU0D,EAAUW,QAAQrE,QAC5Bk/C,EAAQl/C,EAAQ6pD,oBAIpB,OAHa,MAAT3K,IACAA,EAAQl/C,EAAQslD,gBAEbpG,EAGX,IAAI4K,EAA+B,SAAUlmD,GAEzC,SAASkmD,EAAc7F,GACnB,IAAIpgD,EAAQD,EAAO7D,KAAKvD,KAAMynD,IAAaznD,KAE3CqH,EAAMkmD,cAAgB,KACtBlmD,EAAMmmD,YAAc,KACpBnmD,EAAMgF,WAAa,KACnBhF,EAAMiiD,eAAiB,KACvBjiD,EAAMmiD,cAAgB,KACtBniD,EAAMoiD,sBAAwB,KAC9BpiD,EAAMg+C,kBAAoB,SAAUxL,GAChC,IAAI3yC,EAAYG,EAAMH,UAClBumD,EAAQpmD,EAAMqmD,WAAW7T,GACzBxvC,EAAM,gBAASojD,GACfphD,EAAahF,EAAMgF,WAAahC,EAAIgC,WACxChF,EAAMy9C,SAASnC,YAAcz7C,EAAUW,QAAQrE,QAAQsmD,qBAEvDziD,EAAMy9C,SAASd,eAAe38C,EAAMH,UAAUijD,iBAAiBtQ,EAAG6B,UAAUz4C,SACvE42C,EAAG8B,SAAWt0C,EAAMH,UAAUpG,MAAMqO,iBAAmB9C,EAAW4C,SAASD,aAEpF3H,EAAMk+C,gBAAkB,SAAU1L,GAC9B,IAAIhyC,EAAUR,EAAMH,UAAUW,QAC1BwE,EAAahF,EAAMgF,WACvBhF,EAAMiiD,eAAiB,gBAAkBzhD,EAAQgiD,iBAAiBhrC,WAAYxX,EAAMgF,WAAW4C,SAASD,YACxG,IAAIy+C,EAAQpmD,EAAMqmD,WAAW7T,GAC7BxyC,EAAMkmD,cAAgBE,EACtBpmD,EAAMmmD,YAAc,gBAASC,GAC7B5lD,EAAQggD,YAAYK,WACpBrgD,EAAQsyC,QAAQC,QAAQ,mBAAoB,CACxCrqC,GAAI09C,EACJz/C,MAAO,IAAI,OAASnG,EAASwE,EAAWC,IAAKD,EAAW4C,UACxD24C,QAAS/N,EAAG6B,UACZ75B,KAAMha,EAAQyZ,WAGtBja,EAAM8gD,gBAAkB,SAAU/B,EAAKgC,EAASvO,GAC5C,IAAIhyC,EAAUR,EAAMH,UAAUW,QAC1ByhD,EAAiBjiD,EAAMiiD,eACvBpE,EAAa79C,EAAMsgD,YAAYzC,WAC/B8F,EAAgB3jD,EAAMgF,WAAW4C,SACjCm7C,EAAW,KACXX,EAAwB,KACxBpB,GAAY,EACZgC,EAAc,CACdC,eAAgBhB,EAChBiB,cAAe,kBACfz/C,SAAS,GAEb,GAAIs7C,EAAK,CACL,IAAIkC,EAAalC,EAAIU,cAAgB5B,EAAW4B,aACzCz/C,EAAM6T,oBACL7T,EAAM6T,kBAAkBgqC,EAAYkB,GACvCkC,IACD8B,EAAWuD,EAAgBzI,EAAYkB,EAAKvM,EAAGR,UAAU2E,UAAUtX,SAAS,0BAA2BskB,EAAc32C,QAGzH+1C,IACAX,EAAwB,eAA0BH,EAAgBzhD,EAAQgiD,iBAAiB/qC,aAAcsrC,EAAUviD,GACnHwiD,EAAYE,cAAgBd,EACvB,gBAAmBY,EAAajE,EAAIl7C,YAAarD,KAClDwgD,GAAY,EACZ+B,EAAW,KACXX,EAAwB,KACxBY,EAAYE,cAAgB,OAGhCd,EACA5hD,EAAQ4gD,SAAS,CACbxgD,KAAM,mBACN4H,MAAOw6C,IAIXxiD,EAAQ4gD,SAAS,CAAExgD,KAAM,uBAExBogD,EAID,kBAHA,kBAKCD,IACGgC,GAAY/D,EAAYnB,EAAYkB,KACpCgE,EAAW,MAEf/iD,EAAMmiD,cAAgBY,EACtB/iD,EAAMoiD,sBAAwBA,IAGtCpiD,EAAMs+C,cAAgB,SAAU9L,GAC5B,IAAIhyC,EAAUR,EAAMH,UAAUW,QAC1BmZ,EAAW3Z,EAAMgF,WAAWC,IAC5B0+C,EAAgB3jD,EAAMgF,WAAW4C,SACjCg8C,EAAW,IAAI,OAASpjD,EAASmZ,EAAUgqC,GAC3C1B,EAAiBjiD,EAAMiiD,eACvBG,EAAwBpiD,EAAMoiD,sBAOlC,GANA5hD,EAAQsyC,QAAQC,QAAQ,kBAAmB,CACvCrqC,GAAI1I,EAAMkmD,cACVv/C,MAAOi9C,EACPrD,QAAS/N,EAAG6B,UACZ75B,KAAMha,EAAQyZ,UAEdja,EAAMmiD,cAAe,CACrB,IAAI6B,EAAkB,IAAI,OAASxjD,EAAS4hD,EAAsB6B,KAAKtqC,EAASuqC,OAAQP,EAAgBvB,EAAsB+B,UAAUR,EAAch8C,YAAc,MACpKnH,EAAQ4gD,SAAS,CACbxgD,KAAM,eACN4W,WAAY4qC,IAEhB,IAAIgC,EAAiB,CACjBC,SAAUT,EACVj9C,MAAOq9C,EACPM,cAAe,eAAelC,EAAuB5hD,EAASmjD,GAC9DY,OAAQ,WACJ/jD,EAAQ4gD,SAAS,CACbxgD,KAAM,eACN4W,WAAYyqC,MAIxBzhD,EAAQsyC,QAAQC,QAAQ,cAAe,eAAS,eAAS,GAAIqR,GAAiB,CAAE17C,GAAI1I,EAAMkmD,cAAeK,WAAYvmD,EAAMmiD,cAAcoE,YAAc,gBAAe,GAAIC,SAAUxmD,EAAMmiD,cAAcqE,UAAY,gBAAe,GAAIjG,QAAS/N,EAAG6B,UAAW75B,KAAMha,EAAQyZ,WAC5QzZ,EAAQsyC,QAAQC,QAAQ,cAAeqR,QAGvC5jD,EAAQsyC,QAAQC,QAAQ,kBAG5B/yC,EAAMmmD,YAAc,KACpBnmD,EAAMiiD,eAAiB,KACvBjiD,EAAMmiD,cAAgB,MAG1B,IAAItiD,EAAYugD,EAASvgD,UACrB49C,EAAWz9C,EAAMy9C,SAAW,IAAIrC,EAA0BgF,EAAS13C,IACvE+0C,EAAS5c,QAAQoR,SAAW,oBAC5BwL,EAASlC,oBAAqB,EAC9BkC,EAAStB,aAAaxD,UAAY94C,EAAUW,QAAQrE,QAAQolD,WAC5D,IAAIjB,EAActgD,EAAMsgD,YAAc,IAAI9C,EAAYx9C,EAAMy9C,SAAU,gBAA2B2C,IAKjG,OAJAE,EAAYxN,QAAQp5C,GAAG,cAAesG,EAAMg+C,mBAC5CsC,EAAYxN,QAAQp5C,GAAG,YAAasG,EAAMk+C,iBAC1CoC,EAAYxN,QAAQp5C,GAAG,YAAasG,EAAM8gD,iBAC1CR,EAAYxN,QAAQp5C,GAAG,UAAWsG,EAAMs+C,eACjCt+C,EAQX,OArJA,eAAUimD,EAAelmD,GA+IzBkmD,EAAcjqD,UAAU64C,QAAU,WAC9Bl8C,KAAK8kD,SAAS5I,WAElBoR,EAAcjqD,UAAUqqD,WAAa,SAAU7T,GAC3C,OAAO,gBAAeA,EAAGR,UAAW,cAEjCiU,EAtJuB,CAuJhC,QACF,SAASK,EAAgB5G,EAAMC,EAAM8G,EAAaC,GAC9C,IAAIruC,EAAUqnC,EAAKl/C,QAAQ6X,QACvBmtC,EAAQ9F,EAAKhqC,SAAS1I,MAAMpC,MAC5B66C,EAAQ9F,EAAKjqC,SAAS1I,MAAMpC,MAC5B85C,EAAQ,gBAAUc,EAAOC,EAAOptC,EAASqnC,EAAKmG,WAClD,GAAIY,GACA,GAAIpuC,EAAQ4P,IAAIy+B,EAAc97C,MAAO85C,GAASgC,EAAc77C,IACxD,MAAO,CAAE07C,WAAY7B,QAGxB,GAAIrsC,EAAQ4P,IAAIy+B,EAAc77C,IAAK65C,GAASgC,EAAc97C,MAC3D,MAAO,CAAE47C,SAAU9B,GAEvB,OAAO,KAGX,IAAIiC,EAA8B,WAC9B,SAASA,EAAanmD,GAClB,IAAIR,EAAQrH,KACZA,KAAK6H,QAAUA,EACf7H,KAAKiuD,2BAA4B,EACjCjuD,KAAKkuD,eAAgB,EACrBluD,KAAKmuD,cAAe,EACpBnuD,KAAKouD,SAAW,SAAUC,GAClBA,EAAWzG,UACXvgD,EAAM4mD,2BAA4B,IAG1CjuD,KAAKsuD,sBAAwB,SAAUrU,GACnC,IAAIsU,EAAiBlnD,EAAMQ,QAAQrE,QAAQ+qD,eACvClS,EAAS,gBAAsBpC,EAAIyB,WACvCr0C,EAAM6mD,gBAAkB,gBAAe7R,EAAQkS,GAC/ClnD,EAAM8mD,eAAiB,gBAAe9R,EAAQ+M,EAAcmD,WAEhEvsD,KAAKwuD,oBAAsB,SAAUvU,GACjC,IAAIpyC,EAAUR,EAAMQ,QAChB4mD,EAAkBpnD,EAAMonD,gBACxBC,EAAgB7mD,EAAQgiD,iBAE5B,IAAK4E,EAAgB9U,eAAgB,CACjC,GAAI+U,EAAc9vC,gBACbvX,EAAM4mD,0BACT,CACE,IAAIU,EAAe9mD,EAAQrE,QAAQmrD,cAC/BA,GAAkBA,GAAiBtnD,EAAM6mD,eACzCrmD,EAAQggD,YAAYK,SAASjO,GAGjCyU,EAAcv/C,iBACb9H,EAAM8mD,cAEPtmD,EAAQ4gD,SAAS,CAAExgD,KAAM,mBAGjCZ,EAAM4mD,2BAA4B,GAEtC,IAAIQ,EAAkBzuD,KAAKyuD,gBAAkB,IAAItV,EAAgBnZ,UACjEyuB,EAAgBjV,kBAAmB,EACnCiV,EAAgBhV,mBAAoB,EACpCgV,EAAgBtU,QAAQp5C,GAAG,cAAef,KAAKsuD,uBAC/CG,EAAgBtU,QAAQp5C,GAAG,YAAaf,KAAKwuD,qBAI7C3mD,EAAQsyC,QAAQp5C,GAAG,SAAUf,KAAKouD,UAMtC,OAJAJ,EAAa3qD,UAAU64C,QAAU,WAC7Bl8C,KAAK6H,QAAQsyC,QAAQyU,IAAI,SAAU5uD,KAAKouD,UACxCpuD,KAAKyuD,gBAAgBvS,WAElB8R,EAtDsB,GAyD7B18B,EAAkB,CAClB04B,kBAAmB,SAEnB6E,EAAoB,CACpBC,UAAW,QACXC,eAAgB,QAChBC,cAAe,QACfC,UAAW,QACXC,iBAAkB,QAClBC,gBAAiB,QACjBpgD,YAAa,QACbqgD,KAAM,QACNC,aAAc,QACdC,WAAY,SAQZC,EAAyC,WACzC,SAASA,EAAwBzK,EAAU0K,GACvC,IAAInoD,EAAQrH,KACZA,KAAKupD,iBAAmB,KACxBvpD,KAAKyvD,eAAiB,KACtBzvD,KAAKwvD,iBAAmB,KACxBxvD,KAAK0vD,SAAW,KAChB1vD,KAAKulD,gBAAkB,SAAU1L,GAC7BxyC,EAAMqoD,SAAWroD,EAAMsoD,cAAc9V,EAAGR,YAE5Cr5C,KAAKmoD,gBAAkB,SAAU/B,EAAKgC,EAASvO,GAC3C,IAAIiL,EAAWz9C,EAAMsgD,YAAY7C,SAC7ByE,EAAmB,KACnBkG,EAAiB,KACjBpH,GAAY,EACZgC,EAAc,CACdC,eAAgB,kBAChBC,cAAe,kBACfz/C,QAASzD,EAAMqoD,SAASjX,QAExB2N,IACAmD,EAAmBnD,EAAIv+C,QACnBR,EAAMuoD,oBAAoB/V,EAAGR,UAAWkQ,KACxCkG,EAAiBI,EAAwBzJ,EAAIrpC,SAAU1V,EAAMqoD,SAAUnG,GACvEc,EAAYE,cAAgB,gBAAkBkF,GAC9CpH,GAAa,gBAAmBgC,EAAajE,EAAIl7C,YAAaq+C,GAC1DlB,IACAgC,EAAYE,cAAgB,kBAC5BkF,EAAiB,QAI7BpoD,EAAMwjD,YAAYtB,EAAkBc,GAGpCvF,EAASb,mBAAmBmE,IAAYqH,IAAmBzvB,SAAS+D,cAAc,qBAC7EskB,EAID,kBAHA,kBAKCD,IACDtD,EAASZ,sBAAsBuL,GAC/BpoD,EAAMkiD,iBAAmBA,EACzBliD,EAAMooD,eAAiBA,IAG/BzvD,KAAK2lD,cAAgB,SAAU1L,GAC3B,IAAIryC,EAAKP,EAAOkiD,EAAmB3hD,EAAG2hD,iBAAkBkG,EAAiB7nD,EAAG6nD,eAE5E,GADApoD,EAAM+jD,YACF7B,GAAoBkG,EAAgB,CACpC,IAAIrK,EAAW/9C,EAAMsgD,YAAYvC,SAC7B0K,EAAY1K,EAASv9C,QAAQyZ,QAC7BouC,EAAWroD,EAAMqoD,SAErB,GADAnG,EAAiBpP,QAAQC,QAAQ,OAAQ,eAAS,eAAS,GAAI6M,EAA6B7B,EAASroC,SAAUwsC,IAAoB,CAAE2C,UAAWjS,EAAIZ,UAAWuO,QAAS3N,EAAIyB,UAAW75B,KAAMiuC,KACzLJ,EAASjX,OAAQ,CACjB,IAAIsX,EAAiB,gBAAkBN,GACvClG,EAAiBd,SAAS,CACtBxgD,KAAM,eACN4W,WAAYkxC,IAEZ9V,EAAI0B,SACJ4N,EAAiBd,SAAS,CACtBxgD,KAAM,eACN2hD,gBAAiB6F,EAAexgD,SAASD,aAIjDu6C,EAAiBpP,QAAQC,QAAQ,eAAgB,CAC7CpsC,MAAO,IAAI,OAASu7C,EAAkBkG,EAAenjD,IAAKmjD,EAAexgD,UACzE08C,cAAe,GACfC,OAAQ,WACJrC,EAAiBd,SAAS,CACtBxgD,KAAM,gBACN4W,WAAYkxC,KAGpB7D,UAAWjS,EAAIZ,UACfx3B,KAAMiuC,KAIlBzoD,EAAMkiD,iBAAmB,KACzBliD,EAAMooD,eAAiB,MAE3B,IAAI9H,EAAc3nD,KAAK2nD,YAAc,IAAI9C,EAAYC,EAAU,SAC/D6C,EAAY1C,gBAAiB,EAC7B0C,EAAYxN,QAAQp5C,GAAG,YAAaf,KAAKulD,iBACzCoC,EAAYxN,QAAQp5C,GAAG,YAAaf,KAAKmoD,iBACzCR,EAAYxN,QAAQp5C,GAAG,UAAWf,KAAK2lD,eACvC3lD,KAAKwvD,iBAAmBA,EAmC5B,OAjCAD,EAAwBlsD,UAAUssD,cAAgB,SAAUtW,GACxD,MAAqC,kBAA1Br5C,KAAKwvD,iBACL,gBAAcxvD,KAAKwvD,kBAEO,oBAA1BxvD,KAAKwvD,iBACL,gBAAcxvD,KAAKwvD,iBAAiBnW,IAExC2W,EAAkB3W,IAE7BkW,EAAwBlsD,UAAUwnD,YAAc,SAAU4B,EAAa58C,GACnE,IAAI68C,EAAc1sD,KAAKupD,iBACnBmD,GAAeA,IAAgBD,GAC/BC,EAAYjE,SAAS,CAAExgD,KAAM,qBAE7BwkD,GACAA,EAAYhE,SAAS,CAAExgD,KAAM,iBAAkB4H,MAAOA,KAG9D0/C,EAAwBlsD,UAAU+nD,UAAY,WACtCprD,KAAKupD,kBACLvpD,KAAKupD,iBAAiBd,SAAS,CAAExgD,KAAM,sBAG/CsnD,EAAwBlsD,UAAUusD,oBAAsB,SAAU7/C,EAAIw5C,GAClE,IAAI0G,EAAa1G,EAAiB/lD,QAAQysD,WAC1C,MAA0B,oBAAfA,EACAA,EAAW1sD,KAAKgmD,EAAiB1B,YAAa93C,GAE/B,kBAAfkgD,IAA2BA,GAC3Bn5C,QAAQ,gBAAe/G,EAAIkgD,KAInCV,EA9HiC,GAkI5C,SAASM,EAAwB9yC,EAAU2yC,EAAU7nD,GAEjD,IADA,IAAIqoD,EAAW,eAAS,GAAIR,EAASS,eAC5BhmD,EAAK,EAAGvC,EAAKC,EAAQ0B,YAAY6mD,sBAAuBjmD,EAAKvC,EAAG3B,OAAQkE,IAAM,CACnF,IAAIg9C,EAAYv/C,EAAGuC,GACnB,eAAS+lD,EAAU/I,EAAUpqC,EAAU2yC,IAE3C,IAAIrtD,EAAK,gBAAe6tD,EAAUroD,GAAUwoD,EAAUhuD,EAAGguD,QAASC,EAAQjuD,EAAGiuD,MACzEhkD,EAAM,gBAAc+jD,EAASC,EAAOZ,EAASa,SAAUxzC,EAASxQ,OAAQ1E,EAAQrE,QAAQgtD,oBAAsB15C,QAAQ44C,EAASrvC,UACnIxY,GACIoK,EAAQ8K,EAAS1I,MAAMpC,MAGvB8K,EAASxQ,QAAUmjD,EAASe,YAC5Bx+C,EAAQpK,EAAQ6X,QAAQ4P,IAAIrd,EAAOy9C,EAASe,YAEhD,IAAIv+C,EAAMw9C,EAASrvC,SACfxY,EAAQ6X,QAAQ4P,IAAIrd,EAAOy9C,EAASrvC,UACpC,gBAAmBtD,EAASxQ,OAAQ0F,EAAOpK,GAC3CoH,EAAW,gBAAoB3C,EAAIi/C,MAAO,CAAEt5C,MAAOA,EAAOC,IAAKA,IACnE,MAAO,CAAE5F,IAAKA,EAAK2C,SAAUA,GAIjC,SAAS+gD,EAAkBjgD,GACvB,IAAImlC,EAAMwb,EAAkB3gD,EAAI,SAC5B4gD,EAAMzb,EACNtvC,KAAKC,MAAMqvC,GACX,CAAEuD,QAAQ,GACd,OAAO,gBAAckY,GAGzB,SAASD,EAAkB3gD,EAAIhN,GAC3B,IAAI6tD,EAAS,QAAOC,eAChBC,GAAgBF,EAASA,EAAS,IAAM,IAAM7tD,EAClD,OAAOgN,EAAGghD,aAAa,QAAUD,IAAiB,GAJtD,QAAOD,eAAiB,IAYe,WACnC,SAASG,EAAkBjhD,EAAI03C,GAC3B,IAAIpgD,EAAQrH,UACK,IAAbynD,IAAuBA,EAAW,IACtCznD,KAAKqlD,kBAAoB,SAAUxL,GAC/B,IAAIiL,EAAWz9C,EAAMy9C,SACjBl9C,EAAKP,EAAMogD,SAAU9E,EAAc/6C,EAAG+6C,YAAamG,EAAiBlhD,EAAGkhD,eAC3EhE,EAASnC,YACU,MAAfA,EACIA,EACC9I,EAAG8B,QAAU,EAAI,OAAqBmO,qBAC/ChF,EAASpC,MACL7I,EAAG8B,QACoB,MAAlBmN,EAAyBA,EAAiB,OAAqBA,eAChE,GAEZ9oD,KAAKulD,gBAAkB,SAAU1L,GACzBA,EAAG8B,SACHt0C,EAAMy9C,SAASpC,OACf7I,EAAGR,UAAU2E,UAAUtX,SAAS,aAChCr/B,EAAMy9C,SAAS3B,OAAOrF,cAAcE,UAAU1uB,IAAI,sBAG1DtvB,KAAKynD,SAAWA,EAChB,IAAI3C,EAAW9kD,KAAK8kD,SAAW,IAAIrC,EAA0B1yC,GAC7D+0C,EAASlC,oBAAqB,EACD,MAAzB6E,EAASwJ,eACTnM,EAAS5c,QAAQoR,SAAWmO,EAASwJ,cAEhB,MAArBxJ,EAASyJ,WACTpM,EAAS3B,OAAO/iB,WAAaqnB,EAASyJ,UAE1CpM,EAAS3K,QAAQp5C,GAAG,cAAef,KAAKqlD,mBACxCP,EAAS3K,QAAQp5C,GAAG,YAAaf,KAAKulD,iBACtC,IAAIgK,EAAwBzK,EAAU2C,EAAS0J,WAEnDH,EAAkB3tD,UAAU64C,QAAU,WAClCl8C,KAAK8kD,SAAS5I,YArCgB,GAAtC,IAgDIkV,EAAyC,SAAUhqD,GAEnD,SAASgqD,EAAwBhY,GAC7B,IAAI/xC,EAAQD,EAAO7D,KAAKvD,KAAMo5C,IAAgBp5C,KAC9CqH,EAAMmyC,kBAAmB,EACzBnyC,EAAMgqD,eAAiB,GACvBhqD,EAAMiqD,gBAAkB,KACxBjqD,EAAMg+C,kBAAoB,SAAUxL,GAChCxyC,EAAM8yC,QAAQC,QAAQ,cAAeP,GAChCxyC,EAAMmyC,kBAEPnyC,EAAM8yC,QAAQC,QAAQ,YAAaP,IAG3CxyC,EAAMkqD,kBAAoB,SAAU1X,GAC3BxyC,EAAMmyC,kBACPnyC,EAAM8yC,QAAQC,QAAQ,WAAYP,IAG1CxyC,EAAMo+C,gBAAkB,SAAU5L,GAC9BxyC,EAAM8yC,QAAQC,QAAQ,YAAaP,GAC9BxyC,EAAMmyC,kBAEPnyC,EAAM8yC,QAAQC,QAAQ,UAAWP,IAGzC,IAAI3R,EAAU7gC,EAAM6gC,QAAU,IAAIiR,EAAgBC,GAIlD,OAHAlR,EAAQiS,QAAQp5C,GAAG,cAAesG,EAAMg+C,mBACxCnd,EAAQiS,QAAQp5C,GAAG,cAAesG,EAAMkqD,mBACxCrpB,EAAQiS,QAAQp5C,GAAG,YAAasG,EAAMo+C,iBAC/Bp+C,EA4BX,OAzDA,eAAU+pD,EAAyBhqD,GA+BnCgqD,EAAwB/tD,UAAU64C,QAAU,WACxCl8C,KAAKkoC,QAAQgU,WAEjBkV,EAAwB/tD,UAAU2gD,cAAgB,SAAUxG,GACxDx9C,KAAKw5C,iBAAmBgE,GAE5B4T,EAAwB/tD,UAAU4gD,mBAAqB,SAAUzG,GAC7D,GAAIA,EAGIx9C,KAAKsxD,kBACLtxD,KAAKsxD,gBAAgBzjD,MAAMqB,WAAa,GACxClP,KAAKsxD,gBAAkB,UAG1B,CACD,IAAItU,EAAWh9C,KAAKqxD,eAEdrxB,SAAS+D,cAAc/jC,KAAKqxD,gBAC5B,KACFrU,IACAh9C,KAAKsxD,gBAAkBtU,EACvBA,EAASnvC,MAAMqB,WAAa,YAIjCkiD,EA1DiC,CA2D1C,QAqCErxC,GA/BqC,WACrC,SAASyxC,EAAoBC,EAAqBhK,GAC9C,IAAIrO,EAAcpZ,SAGlByxB,IAAwBzxB,UACpByxB,aAA+BC,SAC/BtY,EAAcqY,EACdhK,EAAWA,GAAY,IAGvBA,EAAYgK,GAAuB,GAEvC,IAAI3M,EAAW9kD,KAAK8kD,SAAW,IAAIsM,EAAwBhY,GACtB,kBAA1BqO,EAASwJ,aAChBnM,EAAS5c,QAAQoR,SAAWmO,EAASwJ,aAEhC7X,IAAgBpZ,WACrB8kB,EAAS5c,QAAQoR,SAAW,gBAEO,kBAA5BmO,EAAS4J,iBAChBvM,EAASuM,eAAiB5J,EAAS4J,gBAEvC,IAAI9B,EAAwBzK,EAAU2C,EAAS0J,WAEnDK,EAAoBnuD,UAAU64C,QAAU,WACpCl8C,KAAK8kD,SAAS5I,WA1BkB,GA+B7B,gBAAa,CACpByV,sBAAuB,CAACnK,EAAcM,EAAesB,EAAekE,GACpEsE,qBAAsB,CAAC5D,GACvB6D,oBAAqBpP,EACrBlxB,eAAgBD,EAChBwgC,iBAAkBjD,KAGP,U,yCC7mEf,IAAI/uD,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,iBAAiB,CAACI,MAAM,CAAC,iBAAiB,mBAAmB,IAEzI6D,EAAkB,GCFlB,EAAS,WAAkB,IAAInE,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,eAAe,CAAC0B,IAAI,WAAWtB,MAAM,CAAC,QAAUN,EAAIgyD,mBAAmB9xD,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,kBAAkB,CAACI,MAAM,CAAC,KAAO,eAAe,OAAS,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOjB,EAAIiyD,oBAAoBxvD,MAAM,CAACC,MAAO1C,EAAmB,gBAAE2C,SAAS,SAAUC,GAAM5C,EAAIkyD,gBAAgBtvD,GAAKE,WAAW,oBAAoB,CAAC9C,EAAIK,GAAG,+BAA+B,GAAGH,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,kBAAkB,CAACI,MAAM,CAAC,KAAO,eAAe,OAAS,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOjB,EAAImyD,oBAAoB1vD,MAAM,CAACC,MAAO1C,EAAa,UAAE2C,SAAS,SAAUC,GAAM5C,EAAIoyD,UAAUxvD,GAAKE,WAAW,cAAc,CAAC9C,EAAIK,GAAG,mBAAmB,KAAKH,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,sBAAsB,CAACI,MAAM,CAAC,iBAAiBN,EAAIqyD,kBAAkB,KAAMryD,EAAIyB,gBAAgB,2CAA4CvB,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,sBAAsB,CAACI,MAAM,CAAC,iBAAiBN,EAAIqyD,cAAc,YAAY,cAAc,GAAGnyD,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,sBAAsB,CAACI,MAAM,CAAC,iBAAiBN,EAAIqyD,cAAc,YAAY,cAAc,KAAKryD,EAAIuB,MAAM,GAAGrB,EAAG,UAAU,CAAC0B,IAAI,wBAAwBtB,MAAM,CAAC,KAAO,KAAK,MAAQ,yBAAyB,cAAc,KAAK,CAACJ,EAAG,cAAc,CAACA,EAAG,SAAS,CAACc,GAAG,CAAC,OAAShB,EAAIsyD,uBAAuB,CAACpyD,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,aAAaH,EAAG,WAAW,CAACI,MAAM,CAAC,SAAW,GAAG,QAAUN,EAAIuyD,sBAAsB,MAAQ,QAAQ,OAASxwD,GAAUA,EAAOC,IAAIhB,GAAG,CAAC,MAAQhB,EAAIwyD,6BAA6B7xD,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,UAAS,WAACqB,EAAU,OAAEC,IAAS,MAAO,CAAClC,EAAG,QAAQF,EAAIqC,GAAGrC,EAAIsC,GAAG,CAAClC,YAAY,aAAaE,MAAM,CAAC,UAAYN,EAAIyyD,eAAe1tD,+BAA+B,QAAQ5C,GAAW,GAAOC,SAAcK,MAAM,CAACC,MAAO1C,EAAIyyD,eAA2C,6BAAE9vD,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIyyD,eAAgB,+BAAgC7vD,IAAME,WAAW,kDAAkD,MAAM,GAAG5C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,aAAaH,EAAG,aAAa,CAACE,YAAY,eAAeE,MAAM,CAAC,SAAW,GAAG,OAASN,EAAI0yD,gBAAgBjwD,MAAM,CAACC,MAAO1C,EAAIyyD,eAA4B,cAAE9vD,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIyyD,eAAgB,gBAAiB7vD,IAAME,WAAW,mCAAmC,KAAK5C,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,WAAWH,EAAG,aAAa,CAACE,YAAY,eAAeE,MAAM,CAAC,SAAW,GAAG,OAASN,EAAI0yD,gBAAgBjwD,MAAM,CAACC,MAAO1C,EAAIyyD,eAA0B,YAAE9vD,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIyyD,eAAgB,cAAe7vD,IAAME,WAAW,iCAAiC,MAAM,GAAG5C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,uBAAuBH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAAgC,kBAAE3vD,WAAW,qCAAqC1C,YAAY,eAAeE,MAAM,CAAC,SAAW,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIyyD,eAAgB,oBAAqBxxD,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAOpD,EAAIizB,GAAIjzB,EAA0B,wBAAE,SAAS2yD,GAAO,OAAOzyD,EAAG,WAAW,CAACI,MAAM,CAAC,MAAQqyD,EAAMlxB,QAAQzhC,EAAIizB,GAAI0/B,EAAa,SAAE,SAAS5wD,GAAQ,OAAO7B,EAAG,SAAS,CAACkB,SAAS,CAAC,MAAQW,EAAOC,KAAK,CAAChC,EAAIK,GAAGL,EAAIqB,GAAGU,EAAOk4B,aAAY,MAAK,QAAQ,GAAG/5B,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,aAAaH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAAqB,OAAE3vD,WAAW,0BAA0B1C,YAAY,eAAeE,MAAM,CAAC,SAAW,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIyyD,eAAgB,SAAUxxD,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAO,CAAClD,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,MAAMJ,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,cAAc,CAACN,EAAIK,GAAG,eAAeH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIK,GAAG,WAAWH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIK,GAAG,iBAAiBH,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,oBAAoBH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAA2B,aAAE3vD,WAAW,gCAAgC1C,YAAY,eAAeE,MAAM,CAAC,SAAW,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIyyD,eAAgB,eAAgBxxD,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAO,CAAClD,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,MAAMJ,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,SAAS,CAACN,EAAIK,GAAG,UAAUH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,WAAW,CAACN,EAAIK,GAAG,YAAYH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIK,GAAG,WAAWH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,WAAW,CAACN,EAAIK,GAAG,YAAYH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIK,GAAG,kBAAkB,GAAGH,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,eAAeH,EAAG,WAAW,CAACI,MAAM,CAAC,SAAW,GAAG,QAAUN,EAAI4yD,iBAAiBjyD,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,UAAS,WAACqB,EAAU,OAAEC,IAAS,MAAO,CAAClC,EAAG,QAAQF,EAAIqC,GAAGrC,EAAIsC,GAAG,CAAClC,YAAY,aAAaE,MAAM,CAAC,UAAYN,EAAIyyD,eAAeI,WAAW,QAAQ1wD,GAAW,GAAOC,SAAcK,MAAM,CAACC,MAAO1C,EAAIyyD,eAAuB,SAAE9vD,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIyyD,eAAgB,WAAY7vD,IAAME,WAAW,8BAA8B,MAAM,GAAG5C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,yCAAyCH,EAAG,WAAW,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAAoB,MAAE3vD,WAAW,yBAAyB1C,YAAY,eAAeE,MAAM,CAAC,KAAO,KAAKc,SAAS,CAAC,MAASpB,EAAIyyD,eAAoB,OAAGzxD,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,WAAiBnD,EAAI6C,KAAK7C,EAAIyyD,eAAgB,QAASxxD,EAAOiC,OAAOR,gBAAgB,GAAGxC,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI8yD,0BAA0B,CAAC9yD,EAAIK,GAAG,cAAcH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,WAAW,CAACN,EAAIK,GAAG,YAAY,MAAM,IAAI,IAAI,GAAGH,EAAG,UAAU,CAAC0B,IAAI,yBAAyBtB,MAAM,CAAC,KAAO,KAAK,MAAQ,mBAAmB,cAAc,KAAK,CAACJ,EAAG,cAAc,CAAEF,EAAIyyD,eAAyC,2BAAEvyD,EAAG,SAAS,CAACc,GAAG,CAAC,OAAShB,EAAI+yD,kBAAkB,CAAC7yD,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,cAAcL,EAAIK,GAAG,KAAKH,EAAG,OAAO,CAACE,YAAY,QAAQ,CAACJ,EAAIK,GAAGL,EAAIqB,GAAGrB,EAAIyyD,eAAeO,2BAA2BC,OAAOC,OAAOv/B,kBAAkB,GAAGzzB,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,aAAaH,EAAG,aAAa,CAACE,YAAY,eAAeE,MAAM,CAAC,SAAW,GAAG,OAASN,EAAI0yD,gBAAgBjwD,MAAM,CAACC,MAAO1C,EAAIyyD,eAA4B,cAAE9vD,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIyyD,eAAgB,gBAAiB7vD,IAAME,WAAW,mCAAmC,KAAK5C,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,WAAWH,EAAG,aAAa,CAACE,YAAY,eAAeE,MAAM,CAAC,SAAW,GAAG,OAASN,EAAI0yD,gBAAgBjwD,MAAM,CAACC,MAAO1C,EAAIyyD,eAA0B,YAAE9vD,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIyyD,eAAgB,cAAe7vD,IAAME,WAAW,iCAAiC,MAAM,GAAG5C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,uBAAuBH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAAgC,kBAAE3vD,WAAW,qCAAqC1C,YAAY,eAAeE,MAAM,CAAC,SAAWN,EAAIyyD,eAAe58B,YAAc71B,EAAIyyD,eAAeU,aAAa,SAAW,IAAInyD,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIyyD,eAAgB,oBAAqBxxD,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAOpD,EAAIizB,GAAIjzB,EAA0B,wBAAE,SAAS2yD,GAAO,OAAOzyD,EAAG,WAAW,CAACI,MAAM,CAAC,MAAQqyD,EAAMlxB,QAAQzhC,EAAIizB,GAAI0/B,EAAa,SAAE,SAAS5wD,GAAQ,OAAO7B,EAAG,SAAS,CAACkB,SAAS,CAAC,MAAQW,EAAOC,KAAK,CAAChC,EAAIK,GAAGL,EAAIqB,GAAGU,EAAOk4B,aAAY,MAAK,QAAQ,GAAG/5B,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,aAAaH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAAqB,OAAE3vD,WAAW,0BAA0B1C,YAAY,eAAeE,MAAM,CAAC,SAAW,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIyyD,eAAgB,SAAUxxD,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAO,CAAClD,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,MAAMJ,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,cAAc,CAACN,EAAIK,GAAG,eAAeH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIK,GAAG,WAAWH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIK,GAAG,iBAAiBH,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,oBAAoBH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAA2B,aAAE3vD,WAAW,gCAAgC1C,YAAY,eAAeE,MAAM,CAAC,SAAW,IAAIU,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIyyD,eAAgB,eAAgBxxD,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAO,CAAClD,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,MAAMJ,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,SAAS,CAACN,EAAIK,GAAG,UAAUH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,WAAW,CAACN,EAAIK,GAAG,YAAYH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIK,GAAG,WAAWH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,WAAW,CAACN,EAAIK,GAAG,YAAYH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIK,GAAG,kBAAkB,GAAGH,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,eAAeH,EAAG,WAAW,CAACI,MAAM,CAAC,SAAW,GAAG,QAAUN,EAAI4yD,iBAAiBjyD,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,SAASC,GAAG,UAAS,WAACqB,EAAU,OAAEC,IAAS,MAAO,CAAClC,EAAG,QAAQF,EAAIqC,GAAGrC,EAAIsC,GAAG,CAAClC,YAAY,aAAaE,MAAM,CAAC,UAAYN,EAAIyyD,eAAeI,WAAW,QAAQ1wD,GAAW,GAAOC,QAAa,MAAK,EAAM,YAAYK,MAAM,CAACC,MAAO1C,EAAIyyD,eAAuB,SAAE9vD,SAAS,SAAUC,GAAM5C,EAAI6C,KAAK7C,EAAIyyD,eAAgB,WAAY7vD,IAAME,WAAW,8BAA8B,MAAM,GAAG5C,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,yCAAyCH,EAAG,WAAW,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAAoB,MAAE3vD,WAAW,yBAAyB1C,YAAY,eAAeE,MAAM,CAAC,KAAO,KAAKc,SAAS,CAAC,MAASpB,EAAIyyD,eAAoB,OAAGzxD,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOiC,OAAOC,WAAiBnD,EAAI6C,KAAK7C,EAAIyyD,eAAgB,QAASxxD,EAAOiC,OAAOR,gBAAgB,GAAGxC,EAAG,QAAQ,CAACA,EAAG,QAAQ,CAACA,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,QAAQ,CAACF,EAAIK,GAAG,yBAAyBH,EAAG,SAAS,CAAC6C,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUP,MAAO1C,EAAIyyD,eAAgC,kBAAE3vD,WAAW,qCAAqC1C,YAAY,eAAeE,MAAM,CAAC,SAAWN,EAAIyyD,eAAe58B,YAAc71B,EAAIyyD,eAAeU,aAAa,SAAW,IAAInyD,GAAG,CAAC,OAAS,SAASC,GAAQ,IAAImC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKvC,EAAOiC,OAAOO,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEhB,MAAM,OAAOmB,KAAO7D,EAAI6C,KAAK7C,EAAIyyD,eAAgB,oBAAqBxxD,EAAOiC,OAAOa,SAAWX,EAAgBA,EAAc,OAAO,CAAClD,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,YAAY,CAACN,EAAIK,GAAG,aAAaH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,aAAa,CAACN,EAAIK,GAAG,cAAcH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,wBAAwB,CAACN,EAAIK,GAAG,yBAAyBH,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQ,0BAA0B,CAACN,EAAIK,GAAG,kCAAkC,GAAGH,EAAG,QAAQ,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,aAAaU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIozD,2BAA2B,CAACpzD,EAAIK,GAAG,aAAaH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAU,KAAO,WAAW,CAACN,EAAIK,GAAG,cAAgBL,EAAIyyD,eAAe58B,YAAe71B,EAAIyyD,eAAeU,cAAwD,WAAxCnzD,EAAIyyD,eAAeY,kBAAgPrzD,EAAIuB,KAApNrB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIszD,0BAA0B,CAACpzD,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,WAAWN,EAAIK,GAAG,oBAAoB,GAAyD,SAA5CL,EAAIyyD,eAAec,sBAAkCrzD,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIwzD,aAAaxzD,EAAIyyD,eAAe58B,eAAe,CAAC31B,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,WAAWN,EAAIK,GAAG,oBAAoB,GAAGL,EAAIuB,KAAkD,SAA5CvB,EAAIyyD,eAAec,uBAAgF,MAA5CvzD,EAAIyyD,eAAec,sBAA+BrzD,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIyzD,aAAazzD,EAAIyyD,eAAeiB,SAASC,UAAW,gBAAiB,wBAAwB,CAACzzD,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,UAAUN,EAAIK,GAAG,oBAAoB,GAAGL,EAAIuB,KAAoD,SAA9CvB,EAAIyyD,eAAemB,wBAAoC1zD,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIwzD,aAAaxzD,EAAIyyD,eAAeU,iBAAiB,CAACjzD,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,WAAWN,EAAIK,GAAG,cAAc,GAAGL,EAAIuB,KAAoD,SAA9CvB,EAAIyyD,eAAemB,yBAAoF,MAA9C5zD,EAAIyyD,eAAemB,yBAAiF,gBAA9C5zD,EAAIyyD,eAAemB,wBAA2C1zD,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,WAAWU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAIyzD,aAAazzD,EAAIyyD,eAAeoB,WAAWF,UAAW,mBAAoB,0BAA0B,CAACzzD,EAAG,oBAAoB,CAACI,MAAM,CAAC,KAAO,CAAC,KAAM,UAAUN,EAAIK,GAAG,cAAc,GAAGL,EAAIuB,KAAOvB,EAAIyyD,eAAe58B,YAAe71B,EAAIyyD,eAAeU,aAAyJnzD,EAAIuB,KAA/IrB,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,KAAK,QAAU,UAAUU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOjB,EAAI8zD,uBAAuB,CAAC9zD,EAAIK,GAAG,eAAwB,MAAM,GAAGL,EAAIuB,MAAM,IAAI,GAAGrB,EAAG,iBAAiB,CAAC0B,IAAI,kCAAkCtB,MAAM,CAAC,8BAA6B,GAAOU,GAAG,CAAC,cAAgB,SAASC,GAAQ,OAAOjB,EAAI+zD,gBAAgB7zD,EAAG,iBAAiB,CAAC0B,IAAI,kCAAkCtB,MAAM,CAAC,WAAY,MAAU,IAExge,EAAkB,G,0LC0SlB,OAAQivB,IAAI,SAEZ,OAAQA,IAAI,QAEZ,OAAQA,IAAI,QAEZ,OAAQA,IAAI,SAMG,OACX,UACI,OAAS6F,IAAI,iBAAkB4+B,IAC3B/zD,KAAKgyD,kBACDhyD,KAAKyF,MAAM,0BAA0BuuD,QACrCh0D,KAAKi0D,oBAAoBj0D,KAAKwyD,eAAezwD,OAIzD,gBACI,OAASwzB,KAAK,mBAElBz0B,MAAO,CACH,gBAEJqD,KAAM,WACF,MAAO,CACHiuD,cAAe,GACfI,eAAgB,GAChBG,gBAAiB,GACjBV,iBAAiB,EACjBiC,iBAAkB,GAClB5B,sBAAuB,GAEvBG,eAAgB,CACZ0B,YAAY,EACZ7vD,WAAY,YACZC,YAAY,EACZC,UAAU,EACVC,UAAW,eAGf0tD,WAAW,IAGnBxtD,QAAS,CAEL,kBACI,IAAIyvD,EAASp0D,KAAKyF,MAAM,YAAY4uD,SACpCD,EAAOE,iBAEXC,aAAc,SAAUpwC,GACpBnkB,KAAKw0D,mBAAmBrwC,EAAIswC,SAAUtwC,EAAIuwC,SAE9CC,iBAAkB,SAAUxwC,GACxBnkB,KAAKi0D,oBAAoB9vC,EAAInW,MAAMrC,KAEvCipD,kBAAmB,SAAUzwC,GACzBnkB,KAAK60D,sBAAsB1wC,EAAInW,MAAMrC,GAAIwY,EAAInW,MAAMymD,SAAUtwC,EAAInW,MAAM0mD,SAE3EI,gBAAiB,SAAU3wC,GACvBnkB,KAAK60D,sBAAsB1wC,EAAInW,MAAMrC,GAAIwY,EAAInW,MAAMymD,SAAUtwC,EAAInW,MAAM0mD,SAE3E,sBAAsB/oD,EAAIopD,EAAUC,GAChCh1D,KAAK4E,WAAWC,eAAe,OAAQ,kDAAmD,CAAE9C,GAAI4J,EAAIspD,cAAeF,EAAUG,YAAaF,GAAUh1D,KAAKgyD,gBAAiBhyD,KAAKgyD,iBAAiB,IAEpM,aAAa95B,GACTl4B,KAAKyF,MAAM,mCAAmCwyB,0BAA0BC,IAE5E,aAAa2S,EAAWC,EAAWC,GAC/B/qC,KAAKyF,MAAM,mCAAmCmlC,gBAAgBC,EAAWC,EAAWC,IAIxF,4BAA4BoqB,GACxBn1D,KAAK2yD,gBAAkB,GACvB3yD,KAAK4E,WAAWC,eAAe,MAAO,kDAAmD,CAAEswD,6BAA8BA,GAAgCn1D,KAAKo1D,mCAAoC,QAAW,IAEjN,mCAAmCpwD,GAC/BhF,KAAK2yD,gBAAkB3tD,EAASb,KAAKA,MAGzC,mBAAmBkxD,EAAUC,GACzBt1D,KAAKwyD,eAAiB,CAClByC,cAAeI,EACfH,YAAaI,GAEjBt1D,KAAKyF,MAAM,yBAAyBC,QAExC,uBACI1F,KAAKyF,MAAM,yBAAyBU,QAExC,qBAAqBC,GACjBA,EAAEC,iBACFrG,KAAK4E,WAAWC,eAAe,OAAQ,8CAA+C7E,KAAKwyD,eAAgBxyD,KAAKu1D,4BAA6Bv1D,KAAKgyD,iBAAiB,IAEvK,4BAA4BhtD,GACxBhF,KAAKgyD,kBACLhyD,KAAKyF,MAAM,yBAAyBU,OACpCnG,KAAKi0D,oBAAoBjvD,EAASb,KAAKA,KAAKpC,MAkGpD8E,WAAY,CACR2uD,aAAA,OACAC,iBAAA,KACAC,iBAAA,KACA3uD,UAAA,IACAC,QAAA,IACA2uD,oBAAA,MAEJ,UACI31D,KAAK41D,2BACL51D,KAAK61D,6BAET5uD,SAAU,CACN6uD,uBAAwB,WACpB,IAAIC,EAAS,GACTC,EAAS,GAab,OAZAh2D,KAAKk0D,iBAAiBh9B,SAAQ,SAAUC,GAC/B4+B,EAAOjzB,SAAS3L,EAAK8+B,cACtBF,EAAO/tD,KAAKmvB,EAAK8+B,gBAGzBF,EAAO7+B,SAAQ,SAAUC,GACrB6+B,EAAOhuD,KAAK,CACRw5B,MAAOrK,EACP3zB,QAAS0yD,YAAY5yD,OAAO6yD,GAAOA,EAAIF,aAAe9+B,QAIvD6+B,GAEXjE,gBAAiB,WACb,IAAIhsD,EAAK/F,KACLo2D,EAAiB,CACjBC,QAAS,CAAC,OAAgB,OAAmB,QAC7Cr2C,YAAa,eACbyqC,UAAU,EACVr5B,YAAY,EACZlM,YAAa,WACbC,YAAa,WACbmxC,cAAe,KACfl9C,OAAQ,IACRmkB,YAAY,EACZnM,YAAY,EACZyM,OAAQ79B,KAAKu0D,aACbgC,WAAYv2D,KAAK20D,iBACjB5lD,YAAa/O,KAAK40D,kBAClB3F,UAAWjvD,KAAK80D,gBAEhB0B,aAAc,CACV,CACIC,IAAK,wDACLC,YAAa,CAAEzE,gBAAiBjyD,KAAKiyD,mBAG7C0E,mBAAoB,SAAUnuD,EAASouD,GAEnC,OADA7wD,EAAGqsD,cAAgB5pD,EAAQrE,KAAK0yD,eACzBruD,EAAQrE,KAAK2yD,SAI5B,OAAOV,KC/iB4L,I,YCO/MlvD,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCTI,GACXnE,KAAM,sBACNjC,MAAO,GAGPqD,KAAM,WACF,MAAO,IAIXQ,QAAS,GAGTkC,WAAY,CACRkwD,kBAEJ9vD,SAAU,CACN+vD,aAAc,WACV,OAAOh3D,KAAKi3D,OAAO1U,MAAMyU,gBC3ByK,ICO9M,EAAY,eACd,EACAl3D,EACAoE,GACA,EACA,KACA,KACA,MAIa,e,+gJCjBf,GAAgC,qBAArBgzD,iBACP,MAAM,IAAIztD,MAAM,sFAEpB,IAAI0tD,EAAYD,iBAAiBC,UAC7BC,EAAgBF,iBAAiBE,cACjCt3D,EAASo3D,iBAAiBp3D,OAC1BiX,EAAYmgD,iBAAiBngD,UAC7BsgD,EAAWH,iBAAiBG,SAC5BC,EAAgBJ,iBAAiBI,cACjCC,EAAeL,iBAAiBK,aAChCC,EAAYN,iBAAiBM,UAC7BC,EAAyBP,iBAAiBO,uBCC1CC,EAAgC,WAChC,SAASA,EAAe7vD,EAAS8vD,GAC7B33D,KAAK6H,QAAUA,EACf7H,KAAK23D,oBAAsBA,EAoC/B,OAlCAD,EAAer0D,UAAUu0D,OAAS,WAC9B53D,KAAK6H,QAAQ4gD,SAAS,CAClBxgD,KAAM,sBACNsoD,SAAUvwD,KAAK23D,oBAAoBpH,YAG3CmH,EAAer0D,UAAUw0D,QAAU,WAC/B73D,KAAK6H,QAAQ4gD,SAAS,CAClBxgD,KAAM,sBACN6vD,UAAW,CAAC93D,KAAK23D,oBAAoBpH,UACrCwH,WAAW,KAGnBl+B,OAAOqB,eAAew8B,EAAer0D,UAAW,KAAM,CAClD84B,IAAK,WACD,OAAOn8B,KAAK23D,oBAAoBK,UAEpC78B,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAew8B,EAAer0D,UAAW,MAAO,CACnD84B,IAAK,WACD,OAAOn8B,KAAK23D,oBAAoBM,KAAKxB,KAEzCt7B,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAew8B,EAAer0D,UAAW,SAAU,CACtD84B,IAAK,WACD,OAAOn8B,KAAK23D,oBAAoBM,KAAKzyD,QAEzC21B,YAAY,EACZC,cAAc,IAEXs8B,EAvCwB,GA0CnC,SAASQ,EAAcnoD,GACfA,EAAGqwB,YACHrwB,EAAGqwB,WAAWC,YAAYtwB,GAKlC,SAASooD,EAAepoD,EAAIupC,GACxB,GAAIvpC,EAAGqoD,QACH,OAAOroD,EAAGqoD,QAAQ9e,GAItB,IAAKtZ,SAASq4B,gBAAgB3xB,SAAS32B,GACnC,OAAO,KAEX,EAAG,CACC,GAAIuoD,EAAevoD,EAAIupC,GACnB,OAAOvpC,EAEXA,EAAMA,EAAGwoD,eAAiBxoD,EAAGqwB,iBACjB,OAAPrwB,GAA+B,IAAhBA,EAAGyoD,UAC3B,OAAO,KAEX,SAASF,EAAevoD,EAAIupC,GACxB,IAAImf,EAAS1oD,EAAG4lC,SAAW5lC,EAAG2oD,iBAAmB3oD,EAAG4oD,kBACpD,OAAOF,EAAOl1D,KAAKwM,EAAIupC,GAK3B,SAASsf,EAAaC,EAAWvf,GAG7B,IAFA,IAAIwf,EAAaD,aAAqB9S,YAAc,CAAC8S,GAAaA,EAC9DE,EAAa,GACR/yD,EAAI,EAAGA,EAAI8yD,EAAW7yD,OAAQD,GAAK,EAExC,IADA,IAAI2vC,EAAUmjB,EAAW9yD,GAAGw8C,iBAAiBlJ,GACpC9D,EAAI,EAAGA,EAAIG,EAAQ1vC,OAAQuvC,GAAK,EACrCujB,EAAW/wD,KAAK2tC,EAAQH,IAGhC,OAAOujB,EAoBX,IAAIC,EAAgB,yCACpB,SAASC,EAAWlpD,EAAIjP,GACpB,IAAK,IAAIo4D,KAAYp4D,EACjBq4D,EAAeppD,EAAImpD,EAAUp4D,EAAMo4D,IAG3C,SAASC,EAAeppD,EAAIhN,EAAMa,GACnB,MAAPA,EACAmM,EAAGlC,MAAM9K,GAAQ,GAEG,kBAARa,GAAoBo1D,EAAc75C,KAAKpc,GACnDgN,EAAGlC,MAAM9K,GAAQa,EAAM,KAGvBmM,EAAGlC,MAAM9K,GAAQa,EAQzB,SAASw1D,EAAsBvf,GAC3B,IAAIjyC,EAAIvF,EACR,OAA6F,QAArFA,EAAgC,QAA1BuF,EAAKiyC,EAAGwf,oBAAiC,IAAPzxD,OAAgB,EAASA,EAAGrE,KAAKs2C,GAAI,UAAuB,IAAPx3C,EAAgBA,EAAKw3C,EAAG52C,OAIjI,SAASq2D,EAAUvpD,GACf,OAAOA,EAAGwpD,YAAcxpD,EAAGwpD,cAAgBv5B,SAG/C,IAAIw5B,EAAS,EACb,SAASC,IAEL,OADAD,GAAU,EACH,UAAYA,EAIvB,SAASnzD,EAAewzC,GACpBA,EAAGxzC,iBAIP,SAASqzD,EAAuBpgB,EAAUvT,GACtC,OAAO,SAAU8T,GACb,IAAI8f,EAAexB,EAAete,EAAG52C,OAAQq2C,GACzCqgB,GACA5zB,EAAQxiC,KAAKo2D,EAAc9f,EAAI8f,IAI3C,SAASC,EAAiBf,EAAWgB,EAAWvgB,EAAUvT,GACtD,IAAI+zB,EAAkBJ,EAAuBpgB,EAAUvT,GAEvD,OADA8yB,EAAUve,iBAAiBuf,EAAWC,GAC/B,WACHjB,EAAUne,oBAAoBmf,EAAWC,IAGjD,SAASC,EAAwBlB,EAAWvf,EAAU0gB,EAAcC,GAChE,IAAIC,EACJ,OAAON,EAAiBf,EAAW,YAAavf,GAAU,SAAU6gB,EAAaR,GAC7E,GAAIA,IAAiBO,EAAqB,CACtCA,EAAsBP,EACtBK,EAAaG,EAAaR,GAC1B,IAAIS,EAAqB,SAAUC,GAC/BH,EAAsB,KACtBD,EAAaI,EAAcV,GAC3BA,EAAajf,oBAAoB,aAAc0f,IAGnDT,EAAarf,iBAAiB,aAAc8f,OAMxD,IAAIE,EAAuB,CACvB,sBACA,iBACA,iBACA,kBACA,iBAGJ,SAASC,EAAmBxqD,EAAIrN,GAC5B,IAAI83D,EAAe,SAAU3gB,GACzBn3C,EAASm3C,GACTygB,EAAqBpjC,SAAQ,SAAUujC,GACnC1qD,EAAG2qC,oBAAoB+f,EAAWD,OAG1CF,EAAqBpjC,SAAQ,SAAUujC,GACnC1qD,EAAGuqC,iBAAiBmgB,EAAWD,MAKvC,SAASE,EAAqB30B,GAC1B,OAAO,eAAS,CAAE5e,QAAS4e,GAAW40B,EAAwB50B,IAElE,SAAS40B,EAAwB50B,GAC7B,MAAO,CACH60B,SAAU,EACVC,UAAW,SAAUhhB,GACF,UAAXA,EAAGj5C,KAA8B,MAAXi5C,EAAGj5C,MACzBmlC,EAAQ8T,GACRA,EAAGxzC,oBAMnB,IAAIy0D,EAAa,EACjB,SAASC,IAEL,OADAD,GAAc,EACP15B,OAAO05B,GAKlB,SAASE,IACLh7B,SAASC,KAAK+d,UAAU1uB,IAAI,kBAGhC,SAAS2rC,IACLj7B,SAASC,KAAK+d,UAAU4Z,OAAO,kBAInC,SAASsD,EAAiBnrD,GACtBA,EAAGiuC,UAAU1uB,IAAI,mBACjBvf,EAAGuqC,iBAAiB,cAAej0C,GAEvC,SAAS80D,EAAeprD,GACpBA,EAAGiuC,UAAU4Z,OAAO,mBACpB7nD,EAAG2qC,oBAAoB,cAAer0C,GAI1C,SAAS+0D,EAAmBrrD,GACxBA,EAAGuqC,iBAAiB,cAAej0C,GAEvC,SAASg1D,EAAiBtrD,GACtBA,EAAG2qC,oBAAoB,cAAer0C,GAE1C,SAASi1D,EAAgB12B,GACrB,IAEI5+B,EACAu1D,EAHAC,EAAQ,GACRC,EAAS,GAYb,IATqB,kBAAV72B,EACP62B,EAAS72B,EAAMprB,MAAM,WAEC,oBAAVorB,EACZ62B,EAAS,CAAC72B,GAELxhC,MAAMqe,QAAQmjB,KACnB62B,EAAS72B,GAER5+B,EAAI,EAAGA,EAAIy1D,EAAOx1D,OAAQD,GAAK,EAChCu1D,EAAQE,EAAOz1D,GACM,kBAAVu1D,EACPC,EAAMxzD,KAAyB,MAApBuzD,EAAMG,OAAO,GACpB,CAAEC,MAAOJ,EAAMK,UAAU,GAAIC,OAAQ,GACrC,CAAEF,MAAOJ,EAAOM,MAAO,IAEL,oBAAVN,GACZC,EAAMxzD,KAAK,CAAE8zD,KAAMP,IAG3B,OAAOC,EAEX,SAASO,EAAoBC,EAAMC,EAAMC,GACrC,IAAIl2D,EACAm2D,EACJ,IAAKn2D,EAAI,EAAGA,EAAIk2D,EAAWj2D,OAAQD,GAAK,EAEpC,GADAm2D,EAAMC,EAAmBJ,EAAMC,EAAMC,EAAWl2D,IAC5Cm2D,EACA,OAAOA,EAGf,OAAO,EAEX,SAASC,EAAmBJ,EAAMC,EAAMI,GACpC,OAAIA,EAAUP,KACHO,EAAUP,KAAKE,EAAMC,GAEzBK,EAAgBN,EAAKK,EAAUV,OAAQM,EAAKI,EAAUV,SACtDU,EAAUR,OAAS,GAE9B,SAASS,EAAgB7zC,EAAGC,GACxB,OAAKD,GAAMC,EAGF,MAALA,GACQ,EAEH,MAALD,EACO,EAEM,kBAANA,GAA+B,kBAANC,EACzB0Y,OAAO3Y,GAAG8zC,cAAcn7B,OAAO1Y,IAEnCD,EAAIC,EAXA,EAef,SAAS8zC,EAAS54D,EAAK6hB,GACnB,IAAIqW,EAAIsF,OAAOx9B,GACf,MAAO,MAAM64D,OAAO,EAAGh3C,EAAMqW,EAAE71B,QAAU61B,EAE7C,SAAS4gC,EAAmBC,EAAWlyC,EAAMmyC,GACzC,MAAyB,oBAAdD,EACAA,EAAUr1D,WAAM,EAAQmjB,GAEV,kBAAdkyC,EACAlyC,EAAKiX,QAAO,SAAUwT,EAAK/wB,EAAKpS,GAAS,OAAQmjC,EAAIC,QAAQ,IAAMpjC,EAAOoS,GAAO,MAASw4C,GAE9FC,EAIX,SAASC,EAAep0C,EAAGC,GACvB,OAAOD,EAAIC,EAEf,SAASo0C,EAAM9hC,GACX,OAAOA,EAAI,IAAM,EAIrB,SAAS+hC,EAAyBpjD,GAC9B,IAAIqjD,EAAarjD,EAAOoqB,cAAc,+BAClCk5B,EAAiBtjD,EAAOoqB,cAAc,iCAC1C,IAAKi5B,EACD,MAAM,IAAIvzD,MAAM,8CAEpB,IAAKwzD,EACD,MAAM,IAAIxzD,MAAM,gDAEpB,OAAOkQ,EAAOJ,wBAAwBqC,MAAQohD,EAAWzjD,wBAAwBqC,MAC7EqhD,EAAe1jD,wBAAwBqC,MAG/C,IAAIshD,EAAU,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAEzD,SAASC,EAAS5gC,EAAGvB,GACjB,IAAIvS,EAAI20C,GAAe7gC,GAEvB,OADA9T,EAAE,IAAU,EAAJuS,EACDqiC,GAAe50C,GAE1B,SAAS60C,EAAQ/gC,EAAGvB,GAChB,IAAIvS,EAAI20C,GAAe7gC,GAEvB,OADA9T,EAAE,IAAMuS,EACDqiC,GAAe50C,GAE1B,SAAS80C,EAAMhhC,EAAGvB,GACd,IAAIvS,EAAI20C,GAAe7gC,GAEvB,OADA9T,EAAE,IAAMuS,EACDqiC,GAAe50C,GAI1B,SAAS+0C,GAAUC,EAAIC,GACnB,OAAOC,GAASF,EAAIC,GAAM,EAE9B,SAASC,GAASF,EAAIC,GAClB,OAAQA,EAAGlpD,UAAYipD,EAAGjpD,WAAa,MAE3C,SAASopD,GAAUH,EAAIC,GACnB,OAAQA,EAAGlpD,UAAYipD,EAAGjpD,WAAa,KAE3C,SAASqpD,GAAYJ,EAAIC,GACrB,OAAQA,EAAGlpD,UAAYipD,EAAGjpD,WAAa,IAE3C,SAASspD,GAAYL,EAAIC,GACrB,OAAQA,EAAGlpD,UAAYipD,EAAGjpD,WAAa,IAE3C,SAASupD,GAAeN,EAAIC,GACxB,IAAIM,EAAQC,GAAWR,GACnBS,EAAQD,GAAWP,GACvB,MAAO,CACHS,MAAO,EACPz9C,OAAQ,EACRJ,KAAMjH,KAAKC,MAAMqkD,GAASK,EAAOE,IACjCt4C,aAAe83C,EAAGlpD,UAAY0pD,EAAM1pD,WAAcipD,EAAGjpD,UAAYwpD,EAAMxpD,YAI/E,SAAS4pD,GAAeX,EAAIC,GACxB,IAAIxhC,EAAImiC,GAAcZ,EAAIC,GAC1B,OAAU,OAANxhC,GAAcA,EAAI,IAAM,EACjBA,EAAI,EAER,KAEX,SAASmiC,GAAcZ,EAAIC,GACvB,OAAIY,GAASb,KAAQa,GAASZ,GACnBrkD,KAAKC,MAAMqkD,GAASF,EAAIC,IAE5B,KAGX,SAASO,GAAW1hC,GAChB,OAAO8gC,GAAe,CAClB9gC,EAAEgiC,iBACFhiC,EAAEiiC,cACFjiC,EAAEkiC,eAGV,SAASC,GAAYniC,GACjB,OAAO8gC,GAAe,CAClB9gC,EAAEgiC,iBACFhiC,EAAEiiC,cACFjiC,EAAEkiC,aACFliC,EAAEoiC,gBAGV,SAASC,GAAcriC,GACnB,OAAO8gC,GAAe,CAClB9gC,EAAEgiC,iBACFhiC,EAAEiiC,cACFjiC,EAAEkiC,aACFliC,EAAEoiC,cACFpiC,EAAEsiC,kBAGV,SAASC,GAAcviC,GACnB,OAAO8gC,GAAe,CAClB9gC,EAAEgiC,iBACFhiC,EAAEiiC,cACFjiC,EAAEkiC,aACFliC,EAAEoiC,cACFpiC,EAAEsiC,gBACFtiC,EAAEwiC,kBAIV,SAASC,GAAWC,EAAQC,EAAKC,GAC7B,IAAI3+B,EAAIy+B,EAAOV,iBACXa,EAAIC,GAAgBJ,EAAQz+B,EAAG0+B,EAAKC,GACxC,GAAIC,EAAI,EACJ,OAAOC,GAAgBJ,EAAQz+B,EAAI,EAAG0+B,EAAKC,GAE/C,IAAIG,EAAQD,GAAgBJ,EAAQz+B,EAAI,EAAG0+B,EAAKC,GAChD,OAAIG,GAAS,EACFjmD,KAAKwM,IAAIu5C,EAAGE,GAEhBF,EAEX,SAASC,GAAgBJ,EAAQM,EAAML,EAAKC,GACxC,IAAIK,EAAiBnC,GAAe,CAACkC,EAAM,EAAG,EAAIE,GAAgBF,EAAML,EAAKC,KACzE7uC,EAAW2tC,GAAWgB,GACtB3+C,EAAOjH,KAAKC,MAAMqkD,GAAS6B,EAAgBlvC,IAC/C,OAAOjX,KAAKyM,MAAMxF,EAAO,GAAK,EAGlC,SAASm/C,GAAgBF,EAAML,EAAKC,GAEhC,IAAIO,EAAM,EAAIR,EAAMC,EAEhBQ,GAAS,EAAItC,GAAe,CAACkC,EAAM,EAAGG,IAAME,YAAcV,GAAO,EACrE,OAAQS,EAAQD,EAAM,EAG1B,SAASG,GAAiB50D,GACtB,MAAO,CACHA,EAAK60D,cACL70D,EAAK80D,WACL90D,EAAK+0D,UACL/0D,EAAKg1D,WACLh1D,EAAKi1D,aACLj1D,EAAKk1D,aACLl1D,EAAKm1D,mBAGb,SAASC,GAAiB53C,GACtB,OAAO,IAAI8H,KAAK9H,EAAE,GAAIA,EAAE,IAAM,EAAW,MAARA,EAAE,GAAa,EAAIA,EAAE,GACtDA,EAAE,IAAM,EAAGA,EAAE,IAAM,EAAGA,EAAE,IAAM,GAElC,SAAS20C,GAAenyD,GACpB,MAAO,CACHA,EAAKszD,iBACLtzD,EAAKuzD,cACLvzD,EAAKwzD,aACLxzD,EAAK0zD,cACL1zD,EAAK4zD,gBACL5zD,EAAK8zD,gBACL9zD,EAAKq1D,sBAGb,SAASjD,GAAe50C,GAMpB,OAHiB,IAAbA,EAAExiB,SACFwiB,EAAIA,EAAE5f,OAAO,CAAC,KAEX,IAAI0nB,KAAKA,KAAKgwC,IAAIj5D,MAAMipB,KAAM9H,IAGzC,SAAS+3C,GAAYjkC,GACjB,OAAQkkC,MAAMlkC,EAAE/nB,WAEpB,SAAS8pD,GAAS/hC,GACd,OAAyB,IAAlBA,EAAEoiC,cAAuB,GAAK,GACb,IAApBpiC,EAAEsiC,gBAAyB,GACP,IAApBtiC,EAAEwiC,gBACFxiC,EAAE+jC,qBAGV,SAASI,GAAoBnV,EAAOl3C,EAAOssD,EAAgBC,GACvD,MAAO,CACH5xD,WAAY+rD,IACZxP,MAAOA,EACPl3C,MAAOA,EACPssD,eAAkC,MAAlBA,EAAyB,KAAOA,EAChDC,aAA8B,MAAhBA,EAAuB,KAAOA,GAIpD,IAAI,GAAiB/mC,OAAOx2B,UAAU02B,eAGtC,SAAS8mC,GAAWC,EAAUC,GAC1B,IAAIC,EAAO,GACX,GAAID,EACA,IAAK,IAAIE,KAAUF,EAAiB,CAGhC,IAFA,IAAIG,EAAc,GAETl7D,EAAI86D,EAAS76D,OAAS,EAAGD,GAAK,EAAGA,GAAK,EAAG,CAC9C,IAAIpC,EAAMk9D,EAAS96D,GAAGi7D,GACtB,GAAmB,kBAARr9D,GAAoBA,EAC3Bs9D,EAAYx7B,QAAQ9hC,QAEnB,QAAYghB,IAARhhB,EAAmB,CACxBo9D,EAAKC,GAAUr9D,EACf,OAIJs9D,EAAYj7D,SACZ+6D,EAAKC,GAAUJ,GAAWK,IAKtC,IAASl7D,EAAI86D,EAAS76D,OAAS,EAAGD,GAAK,EAAGA,GAAK,EAAG,CAC9C,IAAIlF,EAAQggE,EAAS96D,GACrB,IAAK,IAAIm7D,KAAUrgE,EACTqgE,KAAUH,IACZA,EAAKG,GAAUrgE,EAAMqgE,IAIjC,OAAOH,EAEX,SAASI,GAAWC,EAAMvF,GACtB,IAAIwF,EAAW,GACf,IAAK,IAAI1gE,KAAOygE,EACRvF,EAAKuF,EAAKzgE,GAAMA,KAChB0gE,EAAS1gE,GAAOygE,EAAKzgE,IAG7B,OAAO0gE,EAEX,SAASC,GAAQF,EAAMvF,GACnB,IAAI0F,EAAU,GACd,IAAK,IAAI5gE,KAAOygE,EACZG,EAAQ5gE,GAAOk7D,EAAKuF,EAAKzgE,GAAMA,GAEnC,OAAO4gE,EAEX,SAASC,GAAYh5C,GAEjB,IADA,IAAI44C,EAAO,GACFl3D,EAAK,EAAGu3D,EAAMj5C,EAAGte,EAAKu3D,EAAIz7D,OAAQkE,IAAM,CAC7C,IAAIgtB,EAAOuqC,EAAIv3D,GACfk3D,EAAKlqC,IAAQ,EAEjB,OAAOkqC,EAUX,SAASM,GAAkBhR,GACvB,IAAIloC,EAAI,GACR,IAAK,IAAI7nB,KAAO+vD,EACZloC,EAAEzgB,KAAK2oD,EAAI/vD,IAEf,OAAO6nB,EAEX,SAASm5C,GAAa5F,EAAMC,GACxB,GAAID,IAASC,EACT,OAAO,EAEX,IAAK,IAAIr7D,KAAOo7D,EACZ,GAAI,GAAez4D,KAAKy4D,EAAMp7D,MACpBA,KAAOq7D,GACT,OAAO,EAInB,IAAK,IAAIr7D,KAAOq7D,EACZ,GAAI,GAAe14D,KAAK04D,EAAMr7D,IACtBo7D,EAAKp7D,KAASq7D,EAAKr7D,GACnB,OAAO,EAInB,OAAO,EAEX,SAASihE,GAAgB7F,EAAMC,GAC3B,IAAI17B,EAAO,GACX,IAAK,IAAI3/B,KAAOo7D,EACR,GAAez4D,KAAKy4D,EAAMp7D,KACpBA,KAAOq7D,GACT17B,EAAKv4B,KAAKpH,IAItB,IAAK,IAAIA,KAAOq7D,EACR,GAAe14D,KAAK04D,EAAMr7D,IACtBo7D,EAAKp7D,KAASq7D,EAAKr7D,IACnB2/B,EAAKv4B,KAAKpH,GAItB,OAAO2/B,EAEX,SAASuhC,GAAYC,EAAUC,EAAUC,GAErC,QADsB,IAAlBA,IAA4BA,EAAgB,IAC5CF,IAAaC,EACb,OAAO,EAEX,IAAK,IAAIphE,KAAOohE,EACZ,KAAIphE,KAAOmhE,KAAYG,GAAeH,EAASnhE,GAAMohE,EAASphE,GAAMqhE,EAAcrhE,IAE9E,OAAO,EAIf,IAAK,IAAIA,KAAOmhE,EACZ,KAAMnhE,KAAOohE,GACT,OAAO,EAGf,OAAO,EAKX,SAASE,GAAeC,EAAMC,EAAMC,GAChC,OAAIF,IAASC,IAAuB,IAAfC,KAGjBA,GACOA,EAAWF,EAAMC,GAIhC,SAASE,GAAgBjB,EAAMkB,EAAYC,EAAUC,QAC9B,IAAfF,IAAyBA,EAAa,QAC7B,IAATE,IAAmBA,EAAO,GAC9B,IAAI14C,EAAM,GACM,MAAZy4C,IACAA,EAAW3oC,OAAO0G,KAAK8gC,GAAMp7D,QAEjC,IAAK,IAAID,EAAIu8D,EAAYv8D,EAAIw8D,EAAUx8D,GAAKy8D,EAAM,CAC9C,IAAI7+D,EAAMy9D,EAAKr7D,QACH4e,IAARhhB,GACAmmB,EAAI/hB,KAAKpE,GAGjB,OAAOmmB,EAGX,SAAS24C,GAAerS,EAASsS,EAAejjD,EAASkjD,GACrD,IAAK,IAAI58D,EAAI,EAAGA,EAAI48D,EAAe38D,OAAQD,GAAK,EAAG,CAC/C,IAAI68D,EAASD,EAAe58D,GAAGH,MAAMwqD,EAAS3wC,GAC9C,GAAImjD,EAAQ,CACR,IAAIt2D,EAAS8jD,EAAQ9jD,OAUrB,OATc,MAAVA,IACAA,EAASo2D,EACK,MAAVp2D,IACAA,EAASs2D,EAAOC,YACF,MAAVv2D,IACAA,GAAS,KAId,CACHA,OAAQA,EACR8T,SAAUwiD,EAAOxiD,SACjB0iD,SAAUF,EAAOE,SACjBC,OAAQh9D,IAIpB,OAAO,KAEX,SAASi9D,GAAgBpkD,EAAYqkD,EAAcr7D,GAC/C,IAAI6X,EAAU7X,EAAQ6X,QAASnW,EAAc1B,EAAQ0B,YAAa/F,EAAUqE,EAAQrE,QAChF8nD,EAAOzsC,EAAWysC,KAAME,EAAY3sC,EAAW2sC,UAInD,IAAK,IAAID,KADTC,EAAY4V,GAAW5V,GAAW,SAAUv8C,GAAY,OAAQq8C,EAAKr8C,EAASs8C,OAAO4X,gBACnE7X,EAAM,CACpB,IAAIh/C,EAAMg/C,EAAKC,GACf,GAAIj/C,EAAI62D,aAAc,CAClB,IAAI9iD,EAAW/T,EAAI62D,aAAa9iD,SAC3BA,IACDA,EAAW/T,EAAIC,OACX/I,EAAQ4/D,2BACR5/D,EAAQ6/D,2BAGhB,IADA,IAAIC,EAASC,GAAsBj3D,EAAK+T,EAAU6iD,EAAcxjD,EAASnW,EAAYq5D,gBAC5Ez4D,EAAK,EAAGq5D,EAAWF,EAAQn5D,EAAKq5D,EAASv9D,OAAQkE,IAAM,CAC5D,IAAI8H,EAAQuxD,EAASr5D,GACjB8E,EAAWyxD,GAAoBnV,EAAO,CACtCt5C,MAAOA,EACPC,IAAKwN,EAAQ4P,IAAIrd,EAAOoO,KAE5BmrC,EAAUv8C,EAASD,YAAcC,IAI7C,MAAO,CAAEq8C,KAAMA,EAAME,UAAWA,GAKpC,SAAS+X,GAAsBviD,EAAUX,EAAU6iD,EAAcxjD,EAASkjD,GACtE,IAAIa,EAAUb,EAAe5hD,EAASmiD,aAAaH,QAC/CU,EAAUD,EAAQE,OAAO3iD,EAASmiD,aAAaJ,SAAU,CACzD9wD,MAAOyN,EAAQkkD,SAASV,EAAajxD,MAAOoO,GAC5CnO,IAAKgxD,EAAahxD,KACnBwN,GAKH,OAHIsB,EAASzU,SACTm3D,EAAUA,EAAQ//D,IAAIs6D,KAEnByF,EAGX,IAAIG,GAAiB,CAAC,QAAS,SAAU,OAAQ,gBAC7CC,GAAW,2DAEf,SAASC,GAAen/B,EAAO9oB,GAC3B,IAAIlU,EACJ,MAAqB,kBAAVg9B,EACAo/B,GAAYp/B,GAEF,kBAAVA,GAAsBA,EACtBq/B,GAAYr/B,GAEF,kBAAVA,EACAq/B,IAAar8D,EAAK,GAAIA,EAAGkU,GAAQ,gBAAkB8oB,EAAOh9B,IAE9D,KAEX,SAASo8D,GAAYloC,GACjB,IAAIS,EAAIunC,GAAShuB,KAAKha,GACtB,GAAIS,EAAG,CACH,IAAIolB,EAAOplB,EAAE,IAAM,EAAI,EACvB,MAAO,CACH4hC,MAAO,EACPz9C,OAAQ,EACRJ,KAAMqhC,GAAQplB,EAAE,GAAK2nC,SAAS3nC,EAAE,GAAI,IAAM,GAC1C3W,aAAc+7B,GAA0C,IAAjCplB,EAAE,GAAK2nC,SAAS3nC,EAAE,GAAI,IAAM,GAAU,GAAK,IAC5B,IAAjCA,EAAE,GAAK2nC,SAAS3nC,EAAE,GAAI,IAAM,GAAU,IACL,KAAjCA,EAAE,GAAK2nC,SAAS3nC,EAAE,GAAI,IAAM,IAC5BA,EAAE,GAAK2nC,SAAS3nC,EAAE,GAAI,IAAM,KAIzC,OAAO,KAEX,SAAS0nC,GAAYtT,GACjB,IAAItwC,EAAW,CACX89C,MAAOxN,EAAIwN,OAASxN,EAAI4O,MAAQ,EAChC7+C,OAAQiwC,EAAIjwC,QAAUiwC,EAAIwT,OAAS,EACnC7jD,KAAMqwC,EAAIrwC,MAAQqwC,EAAIyT,KAAO,EAC7Bx+C,aAA6C,IAA9B+qC,EAAI1gC,OAAS0gC,EAAI5kD,MAAQ,GAAU,GAAK,IAChB,IAAlC4kD,EAAIzgC,SAAWygC,EAAI3kD,QAAU,GAAU,IACL,KAAlC2kD,EAAIxgC,SAAWwgC,EAAI0T,QAAU,IAC7B1T,EAAI/qC,cAAgB+qC,EAAI2T,aAAe3T,EAAI1H,IAAM,IAEtDzoC,EAAQmwC,EAAInwC,OAASmwC,EAAIhhD,KAK7B,OAJI6Q,IACAH,EAASC,MAAgB,EAARE,EACjBH,EAASkkD,gBAAiB,GAEvBlkD,EAGX,SAASmkD,GAAeC,EAAIC,GACxB,OAAOD,EAAGtG,QAAUuG,EAAGvG,OACnBsG,EAAG/jD,SAAWgkD,EAAGhkD,QACjB+jD,EAAGnkD,OAASokD,EAAGpkD,MACfmkD,EAAG7+C,eAAiB8+C,EAAG9+C,aAS/B,SAAS++C,GAAaF,EAAIC,GACtB,MAAO,CACHvG,MAAOsG,EAAGtG,MAAQuG,EAAGvG,MACrBz9C,OAAQ+jD,EAAG/jD,OAASgkD,EAAGhkD,OACvBJ,KAAMmkD,EAAGnkD,KAAOokD,EAAGpkD,KACnBsF,aAAc6+C,EAAG7+C,aAAe8+C,EAAG9+C,cAG3C,SAASg/C,GAAkBF,EAAID,GAC3B,MAAO,CACHtG,MAAOuG,EAAGvG,MAAQsG,EAAGtG,MACrBz9C,OAAQgkD,EAAGhkD,OAAS+jD,EAAG/jD,OACvBJ,KAAMokD,EAAGpkD,KAAOmkD,EAAGnkD,KACnBsF,aAAc8+C,EAAG9+C,aAAe6+C,EAAG7+C,cAG3C,SAASi/C,GAAiB3oC,EAAGlB,GACzB,MAAO,CACHmjC,MAAOjiC,EAAEiiC,MAAQnjC,EACjBta,OAAQwb,EAAExb,OAASsa,EACnB1a,KAAM4b,EAAE5b,KAAO0a,EACfpV,aAAcsW,EAAEtW,aAAeoV,GAKvC,SAAS8pC,GAAaC,GAClB,OAAOC,GAAYD,GAAO,IAE9B,SAASE,GAAcF,GACnB,OAAOC,GAAYD,GAAO,GAE9B,SAASC,GAAYD,GACjB,OAAOG,GAAUH,GAAO,MAQ5B,SAASG,GAAUH,GACf,OAAmB,QAAZA,EAAI5G,MACM,OAAb4G,EAAIrkD,OACO,MAAXqkD,EAAIzkD,KACJykD,EAAIn/C,aAGZ,SAASu/C,GAAqBC,EAAWC,GAErC,IADA,IAAIt7C,EAAM,KACD/jB,EAAI,EAAGA,EAAI69D,GAAe59D,OAAQD,GAAK,EAAG,CAC/C,IAAI8V,EAAO+nD,GAAe79D,GAC1B,GAAIq/D,EAAYvpD,GAAO,CACnB,IAAIwpD,EAAWF,EAAUtpD,GAAQupD,EAAYvpD,GAC7C,IAAKghD,EAAMwI,IAAsB,OAARv7C,GAAgBA,IAAQu7C,EAC7C,OAAO,KAEXv7C,EAAMu7C,OAEL,GAAIF,EAAUtpD,GAEf,OAAO,KAGf,OAAOiO,EAEX,SAASw7C,GAA4BR,GACjC,IAAI9b,EAAK8b,EAAIn/C,aACb,GAAIqjC,EAAI,CACJ,GAAIA,EAAK,MAAS,EACd,MAAO,CAAEntC,KAAM,cAAerZ,MAAOwmD,GAEzC,GAAIA,EAAK,MAAgB,EACrB,MAAO,CAAEntC,KAAM,SAAUrZ,MAAOwmD,EAAK,KAEzC,GAAIA,EAAK,OAAqB,EAC1B,MAAO,CAAEntC,KAAM,SAAUrZ,MAAOwmD,EAAK,KAEzC,GAAIA,EACA,MAAO,CAAEntC,KAAM,OAAQrZ,MAAOwmD,EAAK,MAG3C,OAAI8b,EAAIzkD,KACAykD,EAAIR,gBAAkBQ,EAAIzkD,KAAO,IAAM,EAChC,CAAExE,KAAM,OAAQrZ,MAAOsiE,EAAIzkD,KAAO,GAEtC,CAAExE,KAAM,MAAOrZ,MAAOsiE,EAAIzkD,MAEjCykD,EAAIrkD,OACG,CAAE5E,KAAM,QAASrZ,MAAOsiE,EAAIrkD,QAEnCqkD,EAAI5G,MACG,CAAEriD,KAAM,OAAQrZ,MAAOsiE,EAAI5G,OAE/B,CAAEriD,KAAM,cAAerZ,MAAO,GAIzC,SAAS+iE,GAAevG,EAAQwG,EAAgBC,QACtB,IAAlBA,IAA4BA,GAAgB,GAChD,IAAI5pC,EAAImjC,EAAO/iD,cAcf,OAbA4f,EAAIA,EAAEqZ,QAAQ,OAAQ,IAClBuwB,IACA5pC,EAAIA,EAAEqZ,QAAQ,aAAc,KAE5BrZ,EAAE71B,OAAS,KACW,MAAlBw/D,EACA3pC,EAAIA,EAAEqZ,QAAQ,IAAK,IAEK,IAAnBswB,IACL3pC,EAAIA,EAAEqZ,QAAQ,IAAKwwB,GAAqBF,GAAgB,MAIzD3pC,EAKX,SAAS8pC,GAAgB3G,GACrB,OAAOA,EAAO/iD,cAAci5B,QAAQ,OAAQ,IAGhD,SAAS0wB,GAAoB5G,GACzB,OAAOzC,EAASyC,EAAON,cAAe,GAAK,IACvCnC,EAASyC,EAAOJ,gBAAiB,GAAK,IACtCrC,EAASyC,EAAOF,gBAAiB,GAEzC,SAAS4G,GAAqBz1C,EAAS41C,QACrB,IAAVA,IAAoBA,GAAQ,GAChC,IAAInkB,EAAOzxB,EAAU,EAAI,IAAM,IAC3B61C,EAAM1sD,KAAK0sD,IAAI71C,GACfD,EAAQ5W,KAAKyM,MAAMigD,EAAM,IACzBC,EAAO3sD,KAAKC,MAAMysD,EAAM,IAC5B,OAAID,EACOnkB,EAAO6a,EAASvsC,EAAO,GAAK,IAAMusC,EAASwJ,EAAM,GAErD,MAAQrkB,EAAO1xB,GAAS+1C,EAAO,IAAMxJ,EAASwJ,EAAM,GAAK,IAkBpE,SAASC,GAAcC,EAAIC,EAAIC,GAC3B,GAAIF,IAAOC,EACP,OAAO,EAEX,IACIngE,EADAyf,EAAMygD,EAAGjgE,OAEb,GAAIwf,IAAQ0gD,EAAGlgE,OACX,OAAO,EAEX,IAAKD,EAAI,EAAGA,EAAIyf,EAAKzf,GAAK,EACtB,KAAMogE,EAAeA,EAAaF,EAAGlgE,GAAImgE,EAAGngE,IAAMkgE,EAAGlgE,KAAOmgE,EAAGngE,IAC3D,OAAO,EAGf,OAAO,EAGX,SAASqgE,GAAQC,EAAYC,EAAaC,GACtC,IAAIC,EACAC,EACJ,OAAO,WAEH,IADA,IAAIC,EAAU,GACLx8D,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCw8D,EAAQx8D,GAAM5C,UAAU4C,GAE5B,GAAKs8D,GAGA,IAAKR,GAAcQ,EAAaE,GAAU,CACvCH,GACAA,EAAaE,GAEjB,IAAI38C,EAAMu8C,EAAWh/D,MAAMtH,KAAM2mE,GAC5BJ,GAAgBA,EAAYx8C,EAAK28C,KAClCA,EAAa38C,SARjB28C,EAAaJ,EAAWh/D,MAAMtH,KAAM2mE,GAYxC,OADAF,EAAcE,EACPD,GAGf,SAASE,GAAcN,EAAYC,EAAaC,GAC5C,IACIK,EACAH,EAFAr/D,EAAQrH,KAGZ,OAAO,SAAU8mE,GACb,GAAKD,GAGA,IAAKjF,GAAaiF,EAAYC,GAAS,CACpCN,GACAA,EAAaE,GAEjB,IAAI38C,EAAMu8C,EAAW/iE,KAAK8D,EAAOy/D,GAC5BP,GAAgBA,EAAYx8C,EAAK28C,KAClCA,EAAa38C,SARjB28C,EAAaJ,EAAW/iE,KAAK8D,EAAOy/D,GAYxC,OADAD,EAAaC,EACNJ,GAiEf,IAAIK,GAAmC,CACnCp3D,KAAM,EACNq3D,UAAW,EACX/6D,eAAgB,EAChBC,SAAU,EACV+6D,WAAY,GAEZC,GAAgC,CAChCC,aAAc,EACdC,IAAK,EACL7H,KAAM,EACN4E,MAAO,EACPC,IAAK,EACLiD,QAAS,EACTt7D,KAAM,EACNC,OAAQ,EACRq4D,OAAQ,GAERiD,GAAc,oBACdC,GAAW,KACXC,GAAiB,OACjBC,GAAS,UACTC,GAAS,UACTC,GAAiC,WACjC,SAASA,EAAgBC,GACrB,IAAIC,EAAoB,GACpBC,EAAmB,GACnBC,EAAW,EACf,IAAK,IAAI9G,KAAU2G,EACX3G,KAAU8F,IACVe,EAAiB7G,GAAU2G,EAAe3G,GAC1C8G,EAAW1uD,KAAKI,IAAIstD,GAAiC9F,GAAS8G,KAG9DF,EAAkB5G,GAAU2G,EAAe3G,GACvCA,KAAUiG,KACVa,EAAW1uD,KAAKI,IAAIytD,GAA8BjG,GAAS8G,KAIvE/nE,KAAK6nE,kBAAoBA,EACzB7nE,KAAK8nE,iBAAmBA,EACxB9nE,KAAK+nE,SAAWA,EAChB/nE,KAAKgoE,oBAAsB3B,GAAQ2B,IAkDvC,OAhDAL,EAAgBtkE,UAAUmC,OAAS,SAAUyF,EAAMpD,GAC/C,OAAO7H,KAAKgoE,oBAAoBhoE,KAAK6nE,kBAAmB7nE,KAAK8nE,iBAAkBjgE,EAAxE7H,CAAiFiL,IAE5F08D,EAAgBtkE,UAAU4kE,YAAc,SAAUh2D,EAAOC,EAAKrK,EAASqgE,GACnE,IAAItgE,EAAK5H,KAAM6nE,EAAoBjgE,EAAGigE,kBAAmBC,EAAmBlgE,EAAGkgE,iBAC3EK,EAAeC,GAA0Bn2D,EAAMgtD,OAAQ/sD,EAAI+sD,OAAQp3D,EAAQwgE,gBAC/E,IAAKF,EACD,OAAOnoE,KAAKwF,OAAOyM,EAAOpK,GAE9B,IAAIygE,EAAwBH,IACxBG,EAAwB,IACI,YAA3BT,EAAkBtI,MAAiD,YAA3BsI,EAAkBtI,MAC9B,YAA5BsI,EAAkB1D,OAAmD,YAA5B0D,EAAkB1D,OACjC,YAA1B0D,EAAkBzD,KAA+C,YAA1ByD,EAAkBzD,MAC1DkE,EAAwB,GAE5B,IAAIC,EAAQvoE,KAAKwF,OAAOyM,EAAOpK,GAC3B2gE,EAAQxoE,KAAKwF,OAAO0M,EAAKrK,GAC7B,GAAI0gE,IAAUC,EACV,OAAOD,EAEX,IAAIE,EAAmBC,GAAgCb,EAAmBS,GACtEK,EAAwBX,GAAoBS,EAAkBX,EAAkBjgE,GAChF+gE,EAAWD,EAAsB12D,GACjC42D,EAAWF,EAAsBz2D,GACjC6C,EAAY+zD,GAAoBP,EAAOK,EAAUJ,EAAOK,GACxD7B,EAAYc,EAAiBd,WAAakB,GAA0BrgE,EAAQkhE,kBAAoB,GACpG,OAAIh0D,EACOA,EAAUi0D,OAASJ,EAAW5B,EAAY6B,EAAW9zD,EAAUk0D,MAEnEV,EAAQvB,EAAYwB,GAE/Bb,EAAgBtkE,UAAU6lE,eAAiB,WACvC,OAAQlpE,KAAK+nE,UACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,OACX,KAAK,EACD,MAAO,QACX,KAAK,EACD,MAAO,OACX,KAAK,EACD,MAAO,MACX,QACI,MAAO,SAGZJ,EAtEyB,GAwEpC,SAASK,GAAoBH,EAAmBC,EAAkBjgE,GAC9D,IAAIshE,EAAsBtvC,OAAO0G,KAAKsnC,GAAmB5hE,OACzD,OAA4B,IAAxBkjE,GAAgE,UAAnCtB,EAAkBV,aACxC,SAAUl8D,GAAQ,OAAQ06D,GAAqB16D,EAAKw6D,iBAEnC,IAAxB0D,GAA6BrB,EAAiBn4D,KACvC,SAAU1E,GAAQ,OAAQm+D,GAAiBvhE,EAAQwhE,kBAAkBp+D,EAAKg0D,QAASp3D,EAAQyhE,SAAUzhE,EAAQ0hE,aAAc1hE,EAAQ2hE,OAAQ1B,EAAiBn4D,OAEhK85D,GAA0B5B,EAAmBC,EAAkBjgE,GAE1E,SAAS4hE,GAA0B5B,EAAmBC,EAAkBjgE,GACpEggE,EAAoB,eAAS,GAAIA,GACjCC,EAAmB,eAAS,GAAIA,GAChC4B,GAAiB7B,EAAmBC,GACpCD,EAAkB8B,SAAW,MAC7B,IACIC,EADAC,EAAe,IAAIC,KAAKC,eAAeliE,EAAQ2hE,OAAOQ,MAAOnC,GAEjE,GAAIC,EAAiB77D,eAAgB,CACjC,IAAIg+D,EAAY,eAAS,GAAIpC,UACtBoC,EAAUj+D,OACjB49D,EAAa,IAAIE,KAAKC,eAAeliE,EAAQ2hE,OAAOQ,MAAOC,GAE/D,OAAO,SAAUh/D,GACb,IACIzF,EADAy5D,EAASh0D,EAAKg0D,OAGdz5D,EADAokE,IAAe3K,EAAOJ,gBACb+K,EAGAC,EAEb,IAAI/tC,EAAIt2B,EAAOA,OAAOy5D,GACtB,OAAOiL,GAAYpuC,EAAG7wB,EAAM48D,EAAmBC,EAAkBjgE,IAGzE,SAAS6hE,GAAiB7B,EAAmBC,GAGrCD,EAAkBV,eACbU,EAAkB97D,OACnB87D,EAAkB97D,KAAO,WAExB87D,EAAkB77D,SACnB67D,EAAkB77D,OAAS,YAII,SAAnC67D,EAAkBV,eAClBU,EAAkBV,aAAe,SAGjCW,EAAiB77D,iBAAmB47D,EAAkBxD,QAAUwD,EAAkBvD,qBAC3EwD,EAAiB77D,eAGhC,SAASi+D,GAAYpuC,EAAG7wB,EAAM48D,EAAmBC,EAAkBjgE,GA6B/D,OA5BAi0B,EAAIA,EAAEqZ,QAAQsyB,GAAQ,IACiB,UAAnCI,EAAkBV,eAClBrrC,EAAIquC,GAAaruC,EAAyB,QAArBj0B,EAAQ8hE,UAA6C,MAAvB1+D,EAAKw6D,eACpD,MACAE,GAAqB16D,EAAKw6D,kBAE9BqC,EAAiBb,aACjBnrC,EAAIA,EAAEqZ,QAAQoyB,GAAU,IAAInyB,QAE5B0yB,EAAiB77D,iBACjB6vB,EAAIA,EAAEqZ,QAAQ,MAAO,MAIS,IAA9B2yB,EAAiB57D,SACjB4vB,EAAIA,EAAEqZ,QAAQmyB,GAAa,IAAIlyB,OAEI,WAA9B0yB,EAAiB57D,SACtB4vB,EAAIA,EAAEqZ,QAAQmyB,IAAa,SAAU7J,EAAIC,GAAM,OAAOA,EAAGj7B,uBAEtB,UAA9BqlC,EAAiB57D,SACtB4vB,EAAIA,EAAEqZ,QAAQmyB,IAAa,SAAU7J,EAAIC,GAAM,OAAOA,EAAGj7B,oBAAsB,OAE5C,cAA9BqlC,EAAiB57D,WACtB4vB,EAAIA,EAAEqZ,QAAQmyB,IAAa,SAAU7J,GAAM,OAAOA,EAAGh7B,wBAEzD3G,EAAIA,EAAEqZ,QAAQqyB,GAAgB,KAC9B1rC,EAAIA,EAAEsZ,OACCtZ,EAEX,SAASquC,GAAaruC,EAAGsuC,GACrB,IAAIC,GAAW,EASf,OARAvuC,EAAIA,EAAEqZ,QAAQuyB,IAAQ,WAElB,OADA2C,GAAW,EACJD,KAGNC,IACDvuC,GAAK,IAAMsuC,GAERtuC,EAEX,SAASstC,GAAiBkB,EAAKhB,EAAUC,EAAcC,EAAQp9D,GAC3D,IAAIm+D,EAAQ,GAcZ,MAbgB,SAAZn+D,EACAm+D,EAAMviE,KAAKuhE,GAEM,UAAZn9D,GAAmC,WAAZA,GAC5Bm+D,EAAMviE,KAAKshE,GAEC,SAAZl9D,GAAkC,UAAZA,GACtBm+D,EAAMviE,KAAK,KAEfuiE,EAAMviE,KAAKwhE,EAAOgB,mBAAmBhlE,OAAO8kE,IACX,QAA7Bd,EAAOhmE,QAAQinE,WACfF,EAAMG,UAEHH,EAAMzhE,KAAK,IAMtB,SAASs/D,GAA0B3D,EAAIC,EAAIiG,GACvC,OAAIA,EAAGC,cAAcnG,KAAQkG,EAAGC,cAAclG,GACnC,EAEPiG,EAAGE,eAAepG,KAAQkG,EAAGE,eAAenG,GACrC,EAEPiG,EAAGG,aAAarG,KAAQkG,EAAGG,aAAapG,GACjC,EAEPpG,GAASmG,KAAQnG,GAASoG,GACnB,EAEJ,EAEX,SAASgE,GAAgCllE,EAASunE,GAC9C,IAAIC,EAAiB,GACrB,IAAK,IAAI7J,KAAU39D,KACT29D,KAAU+F,KACZA,GAA8B/F,IAAW4J,KACzCC,EAAe7J,GAAU39D,EAAQ29D,IAGzC,OAAO6J,EAEX,SAASlC,GAAoBP,EAAOK,EAAUJ,EAAOK,GACjD,IAAIoC,EAAK,EACT,MAAOA,EAAK1C,EAAMtiE,OAAQ,CACtB,IAAIilE,EAAS3C,EAAMzqC,QAAQ8qC,EAAUqC,GACrC,IAAgB,IAAZC,EACA,MAEJ,IAAIC,EAAU5C,EAAM9L,OAAO,EAAGyO,GAC9BD,EAAKC,EAAStC,EAAS3iE,OACvB,IAAImlE,EAAS7C,EAAM9L,OAAOwO,GACtBI,EAAK,EACT,MAAOA,EAAK7C,EAAMviE,OAAQ,CACtB,IAAIqlE,EAAS9C,EAAM1qC,QAAQ+qC,EAAUwC,GACrC,IAAgB,IAAZC,EACA,MAEJ,IAAIC,EAAU/C,EAAM/L,OAAO,EAAG6O,GAC9BD,EAAKC,EAASzC,EAAS5iE,OACvB,IAAIulE,EAAShD,EAAM/L,OAAO4O,GAC1B,GAAIF,IAAYI,GAAWH,IAAWI,EAClC,MAAO,CACHxC,OAAQmC,EACRlC,MAAOmC,IAKvB,OAAO,KAGX,SAASK,GAAkBC,EAAUrD,GACjC,IAAI5/C,EAAI4/C,EAAesD,cAAcD,EAASzM,QAC9C,MAAO,CACHA,OAAQyM,EAASzM,OACjBwG,eAAgBiG,EAASjG,eACzBmG,MAAOnjD,EACP82C,KAAM92C,EAAE,GACR07C,MAAO17C,EAAE,GACT27C,IAAK37C,EAAE,GACP1c,KAAM0c,EAAE,GACRzc,OAAQyc,EAAE,GACV47C,OAAQ57C,EAAE,GACV67C,YAAa77C,EAAE,IAIvB,SAASojD,GAA2B55D,EAAOC,EAAKrK,EAASqgE,GACrD,IAAI4D,EAAYL,GAAkBx5D,EAAOpK,EAAQwgE,gBAC7C0D,EAAU75D,EAAMu5D,GAAkBv5D,EAAKrK,EAAQwgE,gBAAkB,KACrE,MAAO,CACHp9D,KAAM6gE,EACN75D,MAAO65D,EACP55D,IAAK65D,EACLpC,SAAU9hE,EAAQ8hE,SAClBqC,YAAankE,EAAQ2hE,OAAOQ,MAC5BjB,iBAAkBb,GAA0BrgE,EAAQkhE,kBAW5D,IAAIkD,GAA8B,WAC9B,SAASA,EAAaC,GAClBlsE,KAAKksE,OAASA,EAQlB,OANAD,EAAa5oE,UAAUmC,OAAS,SAAUyF,EAAMpD,EAASqgE,GACrD,OAAOrgE,EAAQskE,aAAansE,KAAKksE,OAAQL,GAA2B5gE,EAAM,KAAMpD,EAASqgE,KAE7F+D,EAAa5oE,UAAU4kE,YAAc,SAAUh2D,EAAOC,EAAKrK,EAASqgE,GAChE,OAAOrgE,EAAQskE,aAAansE,KAAKksE,OAAQL,GAA2B55D,EAAOC,EAAKrK,EAASqgE,KAEtF+D,EAVsB,GAa7BG,GAA+B,WAC/B,SAASA,EAActQ,GACnB97D,KAAK87D,KAAOA,EAQhB,OANAsQ,EAAc/oE,UAAUmC,OAAS,SAAUyF,EAAMpD,EAASqgE,GACtD,OAAOloE,KAAK87D,KAAK+P,GAA2B5gE,EAAM,KAAMpD,EAASqgE,KAErEkE,EAAc/oE,UAAU4kE,YAAc,SAAUh2D,EAAOC,EAAKrK,EAASqgE,GACjE,OAAOloE,KAAK87D,KAAK+P,GAA2B55D,EAAOC,EAAKrK,EAASqgE,KAE9DkE,EAVuB,GAalC,SAASC,GAAgBznC,GACrB,MAAqB,kBAAVA,GAAsBA,EACtB,IAAI+iC,GAAgB/iC,GAEV,kBAAVA,EACA,IAAIqnC,GAAarnC,GAEP,oBAAVA,EACA,IAAIwnC,GAAcxnC,GAEtB,KAKX,IAAI0nC,GAAuB,CACvBC,gBAAiBC,GACjBC,iBAAkBD,GAClBnsD,SAAU0jD,GACV2I,qBAAsBF,GACtBG,YAAaH,GACbI,cAAeJ,GACfpJ,2BAA4BW,GAC5BV,0BAA2BU,GAC3BhmD,iBAAkBgmD,GAClB8I,WAAY9I,GACZ+I,gBAAiBh2D,QACjBoO,YAAa6+C,GACb5+C,YAAa4+C,GACbgJ,iBAAkBV,GAClBtnD,aAAcg/C,GACdl1C,aAAck1C,GACdiJ,cAAeR,GACfS,cAAeT,GACfU,sBAAuB9rC,OACvB+rC,oBAAqB/rC,OACrBovB,mBAAoB15C,QACpBwH,WAAYxH,QACZs2D,gBAAiBf,GACjBgB,oBAAqBb,GACrBc,iBAAkBd,GAClBe,kBAAmBf,GACnBgB,qBAAsBhB,GACtBiB,kBAAmBjB,GACnBkB,eAAgBlB,GAChBmB,gBAAiBnB,GACjBoB,mBAAoBpB,GACpBxsD,YAAaohB,OACbysC,YAAaxrC,OACbyrC,SAAUh3D,QACVi3D,sBAAuBvB,GACvBxtD,YAAalI,QACbk3D,qBAAsBxB,GACtByB,kBAAmBzB,GACnB0B,mBAAoB1B,GACpB2B,sBAAuB3B,GACvB/hB,SAAU3zC,QACVs3D,eAAgB5B,GAChB6B,aAAc7B,GACd8B,gBAAiB9B,GACjBjoD,aAAczN,QACdy3D,uBAAwB/B,GACxBgC,oBAAqBhC,GACrBiC,qBAAsBjC,GACtBkC,wBAAyBlC,GACzBmC,oBAAqB73D,QACrB83D,aAAc93D,QACd+3D,WAAYztC,OACZ0tC,SAAU1tC,OACV2tC,cAAe3tC,OACfuoC,SAAUvoC,OACV4tC,QAASxC,GACThD,OAAQgD,GACRyC,YAAa7tC,OACb6oB,mBAAoB5nB,OACpBumB,WAAY9xC,QACZm2C,uBAAwBn2C,QACxB63C,aAAc73C,QACdm5C,WAAYuc,GACZl2D,WAAYglD,EACZ/kD,iBAAkBO,QAClBo4D,mBAAoBp4D,QACpBq4D,kBAAmB9sC,OACnBymB,eAAgBzmB,OAChBynB,qBAAsBznB,OACtBjnB,WAAYtE,QACZsC,OAAQozD,GACRlW,cAAekW,GACf/B,UAAWrpC,OACXguC,iBAAkB/C,GAClBgD,wBAAyBv4D,QACzBw4D,iBAAkBx4D,QAClBy4D,gBAAiBz4D,QACjBwyD,SAAUloC,OACVmoC,aAAcnoC,OACdouC,0BAA2B14D,QAC3B6H,cAAe6tD,GACfiD,YAAajD,GACb1sB,IAAK0sB,GACLkD,mBAAoBlD,GACpBzkE,kBAAmBykE,GACnB9iE,sBAAuB8iE,GACvBmD,WAAYnD,GACZ7J,cAAe7rD,QACf84D,mBAAoBpD,GACpB7V,mBAAoB6V,GACpBqD,aAAczuC,OACd0uC,mBAAoBh5D,QACpBi5D,sBAAuBj5D,QACvBk5D,aAAcxD,GACdyD,gBAAiBzD,GACjB0D,WAAY1D,GACZ2D,qBAAsB/uC,OACtBgvC,iBAAkBhvC,OAClBivC,eAAgBjvC,OAChBkvC,WAAYlvC,OACZmvC,gBAAiB/D,GACjBgE,aAAchE,GACdiE,cAAejE,GACfkE,iBAAkBlE,GAClBmE,iBAAkBnE,GAClBoE,cAAepE,GACfqE,YAAarE,GACb9hB,UAAW5zC,QACXy3C,eAAgBntB,OAChB5f,gBAAiBgrD,GACjBrmD,mBAAoBqmD,GACpBpmD,gBAAiBomD,GACjBnmD,iBAAkBmmD,GAClBlmD,oBAAqBkmD,GACrBzqD,oBAAqByqD,GACrBxqD,iBAAkBwqD,GAClBtqD,kBAAmBsqD,GACnBpqD,qBAAsBoqD,GACtBx7D,aAAcw7D,GACdv7D,gBAAiBu7D,GACjBnjE,YAAag5B,OACbpR,kBAAmB8yC,GACnBxgD,WAAY6d,OACZ5d,iBAAkBgpD,GAClB/oD,cAAe+oD,GACf7oD,eAAgB6oD,GAChB5oD,kBAAmB4oD,GACnBsE,aAAczuC,OACd0uC,SAAUj6D,QACV5J,gBAAiBm/D,GACjB2E,cAAe3uC,OACf4uC,aAAczE,GACd0E,aAAc1E,GACd7jB,kBAAmBtmB,OACnB9E,WAAYzmB,QACZ+xC,qBAAsBxmB,OACtBgrB,oBAAqBhrB,OACrBxW,aAAc/U,QACdkU,cAAeqX,OACfzX,eAAgByX,OAChB8uC,cAAe9uC,OACfhW,iBAAkBgW,OAClBlV,iBAAkBrW,QAClBu/C,QAASmW,GACT4E,SAAU/uC,OACVgvC,SAAUhvC,OACVivC,cAAelwC,OACfmwC,cAAexN,GACfyN,WAAYhF,GACZ5sD,UAAW9I,QACX+I,eAAgB/I,QAChB26D,WAAYjF,GACZkF,aAAclF,GACdmF,YAAanF,GACboF,iBAAkB96D,QAElB+6D,aAAczwC,OACd0wC,SAAUtF,GACVuF,YAAavF,GACbwF,UAAW5wC,OACX6wC,SAAU7wC,OACV8wC,UAAW9wC,OACX+wC,cAAe3F,GACf4F,mBAAoB5F,GACpB6F,gBAAiB7F,GACjB8F,iBAAkB9F,GAClB+F,oBAAqB/F,IAIrBgG,GAAuB,CACvB3C,aAAc,OACd3C,sBAAuB,MACvBC,oBAAqB,MACrB9J,0BAA2B,WAC3BD,2BAA4B,CAAEgB,IAAK,GACnC5T,oBAAoB,EACpBzyC,iBAAkB,WAClBO,YAAY,EACZ0B,YAAa,GACb6tD,YAAa,KACbb,cAAe,CACX/6D,MAAO,QACPwgE,OAAQ,GACRvgE,IAAK,mBAET47D,UAAU,EACV9uD,aAAa,EACb+uD,sBAAuB,QACvBtjB,UAAU,EACVlmC,cAAc,EACdsoD,WAAY,WACZC,iBAAiB,EACjB5nD,YAAa,WACbC,YAAa,WACbwpD,qBAAqB,EACrBC,cAAc,EACdC,WAAY,QACZC,SAAU,MACVC,cAAe,WACfpF,SAAU,QACVqF,QAAS,GACTxF,OAAQ,GACRyF,YAAa,WACbhlB,mBAAoB,IACpBrB,YAAY,EACZqE,wBAAwB,EACxB0B,cAAc,EACdsB,WAAY,IACZ35C,WAAY,+BACZy2D,iBAAkB,CAAE5I,MAAO,OAAQC,IAAK,UAAW7E,KAAM,WACzD2P,oBAAoB,EACpBC,kBAAmB,IACnBrmB,eAAgB,IAChBgB,qBAAsB,EACtB1uC,YAAY,EACZ21D,UAAU,EACVxzC,YAAY,EACZ3S,eAAgB,GAChBumD,cAAe,GACf9kD,iBAAkB,IAIlBqmD,GAA6B,CAC7BC,SAAUnG,GACVoG,UAAWpG,GACXqG,SAAUrG,GACVsG,YAAatG,GACbuG,YAAavG,GACbwG,aAAcxG,GACdjW,WAAYiW,GACZyG,gBAAiBzG,GACjB0G,gBAAiB1G,GACjB3uC,OAAQ2uC,GACRtkB,SAAUskB,GACVtnE,QAASsnE,GAET2G,SAAU3G,GACV4G,aAAc5G,GACd6G,YAAa7G,GACb8G,aAAc9G,GACd+G,eAAgB/G,GAChBgH,QAAShH,GACTiH,eAAgBjH,IAIhBkH,GAA2B,CAC3BC,WAAYnH,GACZoH,YAAapH,GACbvsD,MAAOusD,GACPnW,QAASmW,GACTqH,cAAerH,GACfrqE,OAAQqqE,GACRhW,aAAcgW,IAEdsH,GAA6B,CAC7B9G,cAAe+G,GACf9G,cAAe8G,GACfJ,WAAYI,GACZH,YAAaG,GACbpH,YAAaoH,GACbxC,cAAewC,IAEnB,SAASA,GAAoBtrD,EAAGC,GAC5B,MAAiB,kBAAND,GAA+B,kBAANC,GAAkBD,GAAKC,EAChDk5C,GAAan5C,EAAGC,GAEpBD,IAAMC,EAIjB,IAAIsrD,GAAuB,CACvB/rE,KAAMm5B,OACNl6B,UAAWslE,GACXmH,WAAYvyC,OACZ6yC,cAAe7yC,OACfjhB,0BAA2BqsD,GAC3B/6C,eAAgB3a,QAChBnO,WAAY6jE,GACZhkE,QAASgkE,GACTvqD,SAAUuqD,GACVrqD,YAAaqqD,IAIjB,SAAS0H,GAAgBC,GACrB,OAAOtT,GAAWsT,EAAYL,IAElC,SAASM,GAAYxvC,EAAOyvC,GACxB,IAAIhkB,EAAU,GACVC,EAAQ,GACZ,IAAK,IAAI4I,KAAYmb,EACbnb,KAAYt0B,IACZyrB,EAAQ6I,GAAYmb,EAASnb,GAAUt0B,EAAMs0B,KAGrD,IAAK,IAAIA,KAAYt0B,EACXs0B,KAAYmb,IACd/jB,EAAM4I,GAAYt0B,EAAMs0B,IAGhC,MAAO,CAAE7I,QAASA,EAASC,MAAOA,GAEtC,SAASkc,GAAS8H,GACd,OAAOA,EAGX,SAASC,GAAYC,EAAWC,EAAa5sE,EAAS6sE,GAGlD,IAFA,IAAI71D,EAAa81D,KACbC,EAAgBC,GAAmBhtE,GAC9BsC,EAAK,EAAG2qE,EAAcN,EAAWrqE,EAAK2qE,EAAY7uE,OAAQkE,IAAM,CACrE,IAAI4qE,EAAWD,EAAY3qE,GACvB6qE,EAAQC,GAAWF,EAAUN,EAAa5sE,EAAS6sE,EAAgBE,GACnEI,GACAE,GAAkBF,EAAOn2D,GAGjC,OAAOA,EAEX,SAASq2D,GAAkBF,EAAOn2D,GAM9B,YALmB,IAAfA,IAAyBA,EAAa81D,MAC1C91D,EAAWysC,KAAK0pB,EAAM1oE,IAAIi/C,OAASypB,EAAM1oE,IACrC0oE,EAAM/lE,WACN4P,EAAW2sC,UAAUwpB,EAAM/lE,SAASD,YAAcgmE,EAAM/lE,UAErD4P,EAKX,SAASs2D,GAAkBt2D,EAAY7P,GACnC,IAAIC,EAAW4P,EAAW2sC,UAAUx8C,GACpC,GAAIC,EAAU,CACV,IAAImmE,EAAQv2D,EAAWysC,KAAKr8C,EAASs8C,OAEjC8pB,EAAWC,GAAqBz2D,GAAY,SAAU02D,GAAW,OAAOC,GAAmBJ,EAAOG,MAKtG,OAFAF,EAAS/pB,KAAK8pB,EAAM7pB,OAAS6pB,EAC7BC,EAAS7pB,UAAUv8C,EAASD,YAAcC,EACnComE,EAEX,OAAOV,KAEX,SAASa,GAAmBC,EAAMC,GAC9B,OAAO5+D,QAAQ2+D,EAAKE,SAAWF,EAAKE,UAAYD,EAAKC,SAEzD,SAAShB,KACL,MAAO,CAAErpB,KAAM,GAAIE,UAAW,IAElC,SAASoqB,GAAiBC,EAAQC,GAC9B,MAAO,CACHxqB,KAAM,eAAS,eAAS,GAAIuqB,EAAOvqB,MAAOwqB,EAAOxqB,MACjDE,UAAW,eAAS,eAAS,GAAIqqB,EAAOrqB,WAAYsqB,EAAOtqB,YAGnE,SAAS8pB,GAAqBz2D,EAAYk3D,GACtC,IAAIzqB,EAAO8V,GAAWviD,EAAWysC,KAAMyqB,GACnCvqB,EAAY4V,GAAWviD,EAAW2sC,WAAW,SAAUv8C,GAAY,OAAQq8C,EAAKr8C,EAASs8C,UAE7F,MAAO,CAAED,KAAMA,EAAME,UAAWA,GAEpC,SAASwqB,GAAqBC,EAAQC,GAClC,IAAI5qB,EAAO2qB,EAAO3qB,KAAME,EAAYyqB,EAAOzqB,UACvC2qB,EAAe,GACfC,EAAoB,GACxB,IAAK,IAAI7qB,KAASD,EACT4qB,EAAI5qB,KAAKC,KACV4qB,EAAa5qB,GAASD,EAAKC,IAGnC,IAAK,IAAIv8C,KAAcw8C,GACd0qB,EAAI1qB,UAAUx8C,IACfmnE,EAAa3qB,EAAUx8C,GAAYu8C,SAEnC6qB,EAAkBpnE,GAAcw8C,EAAUx8C,IAGlD,MAAO,CACHs8C,KAAM6qB,EACN3qB,UAAW4qB,GAInB,SAASC,GAAoBzxC,EAAO/8B,GAChC,OAAIzE,MAAMqe,QAAQmjB,GACP2vC,GAAY3vC,EAAO,KAAM/8B,GAAS,GAExB,kBAAV+8B,GAAsBA,EACtB2vC,GAAY,CAAC3vC,GAAQ,KAAM/8B,GAAS,GAElC,MAAT+8B,EACOxD,OAAOwD,GAEX,KAGX,SAAS0xC,GAAgBhC,GACrB,OAAIlxE,MAAMqe,QAAQ6yD,GACPA,EAEQ,kBAARA,EACAA,EAAI96D,MAAM,OAEd,GAMX,IAAI+8D,GAAoB,CACpBnqE,QAASg1B,OACTqpB,SAAU3zC,QACV0/D,cAAe1/D,QACfvC,iBAAkBuC,QAClB2/D,WAAYjK,GACZkK,QAASlK,GACTmK,MAAOnK,GACP5jE,UAAW0tE,GACX3tE,WAAY2tE,GACZM,MAAOx1C,OACPrzB,gBAAiBqzB,OACjBtzB,YAAaszB,OACby1C,UAAWz1C,QAEX01C,GAAiB,CACjB1qE,QAAS,KACToqE,cAAe,KACfjiE,iBAAkB,KAClBwiE,YAAa,GACbL,QAAS,KACTM,OAAQ,GACRjpE,gBAAiB,GACjBD,YAAa,GACb+oE,UAAW,GACXluE,WAAY,IAEhB,SAASsuE,GAAc5mB,EAASxoD,GAC5B,IAAI4uE,EAAaJ,GAAoBhmB,EAAQomB,WAAY5uE,GACzD,MAAO,CACHuE,QAASikD,EAAQjkD,SAAW,KAC5BoqE,cAAwC,MAAzBnmB,EAAQmmB,cAAwBnmB,EAAQmmB,cAAgBnmB,EAAQ5F,SAC/El2C,iBAA8C,MAA5B87C,EAAQ97C,iBAA2B87C,EAAQ97C,iBAAmB87C,EAAQ5F,SACxFssB,YAA2B,MAAdN,EAAqB,CAACA,GAAc,GACjDC,QAA4B,MAAnBrmB,EAAQqmB,QAAkBrmB,EAAQqmB,QAAU,KACrDM,OAAyB,MAAjB3mB,EAAQsmB,MAAgB,CAACtmB,EAAQsmB,OAAS,GAClD5oE,gBAAiBsiD,EAAQtiD,iBAAmBsiD,EAAQumB,OAAS,GAC7D9oE,YAAauiD,EAAQviD,aAAeuiD,EAAQumB,OAAS,GACrDC,UAAWxmB,EAAQwmB,WAAa,GAChCluE,YAAa0nD,EAAQznD,WAAa,IAAIC,OAAOwnD,EAAQ1nD,YAAc,KAI3E,SAASuuE,GAAgBC,GACrB,OAAOA,EAAIz1C,OAAO01C,GAAoBN,IAE1C,SAASM,GAAmBC,EAAOC,GAC/B,MAAO,CACHlrE,QAA0B,MAAjBkrE,EAAMlrE,QAAkBkrE,EAAMlrE,QAAUirE,EAAMjrE,QACvDoqE,cAAsC,MAAvBc,EAAMd,cAAwBc,EAAMd,cAAgBa,EAAMb,cACzEjiE,iBAA4C,MAA1B+iE,EAAM/iE,iBAA2B+iE,EAAM/iE,iBAAmB8iE,EAAM9iE,iBAClFwiE,YAAaM,EAAMN,YAAYluE,OAAOyuE,EAAMP,aAC5CL,QAAkC,mBAAlBY,EAAMZ,QAAwBY,EAAMZ,QAAUW,EAAMX,QACpEM,OAAQK,EAAML,OAAOnuE,OAAOyuE,EAAMN,QAClCjpE,gBAAiBupE,EAAMvpE,iBAAmBspE,EAAMtpE,gBAChDD,YAAawpE,EAAMxpE,aAAeupE,EAAMvpE,YACxC+oE,UAAWS,EAAMT,WAAaQ,EAAMR,UACpCluE,WAAY0uE,EAAM1uE,WAAWE,OAAOyuE,EAAM3uE,aAIlD,IAAI4uE,GAA0B,CAC1B5rE,GAAIy1B,OACJu0C,QAASv0C,OACTh9B,MAAOg9B,OACPq1B,IAAKr1B,OACLo2C,YAAa1gE,SAEb2gE,GAAsB,CACtBxlE,MAAOu6D,GACPt6D,IAAKs6D,GACLvhE,KAAMuhE,GACNjgE,OAAQuK,SAER4gE,GAAiB,eAAS,eAAS,eAAS,GAAIH,IAA0BE,IAAsB,CAAEE,cAAenL,KACrH,SAASyI,GAAWX,EAAKG,EAAa5sE,EAAS6sE,EAAgBL,QAC1C,IAAbA,IAAuBA,EAAWQ,GAAmBhtE,IACzD,IAAID,EAAKgwE,GAAetD,EAAKzsE,EAASwsE,GAAWhkB,EAAUzoD,EAAGyoD,QAASC,EAAQ1oD,EAAG0oD,MAC9EqS,EAAgBkV,GAAuBpD,EAAa5sE,GACpDiwE,EAAepV,GAAerS,EAASsS,EAAe96D,EAAQ6X,QAAS7X,EAAQ0B,YAAYq5D,gBAC/F,GAAIkV,EAAc,CACd,IAAIxrE,EAAMyrE,GAAc1nB,EAASC,EAAOmkB,EAAcA,EAAYlkB,SAAW,GAAIunB,EAAavrE,OAAQuK,QAAQghE,EAAaz3D,UAAWxY,GAMtI,OALAyE,EAAI62D,aAAe,CACfH,OAAQ8U,EAAa9U,OACrBD,SAAU+U,EAAa/U,SACvB1iD,SAAUy3D,EAAaz3D,UAEpB,CAAE/T,IAAKA,EAAK2C,SAAU,MAEjC,IAAI+oE,EAAYC,GAAY5nB,EAASsS,EAAe96D,EAAS6sE,GAC7D,GAAIsD,EAAW,CACP1rE,EAAMyrE,GAAc1nB,EAASC,EAAOmkB,EAAcA,EAAYlkB,SAAW,GAAIynB,EAAUzrE,OAAQyrE,EAAUhrB,OAAQnlD,GAArH,IACIoH,EAAWyxD,GAAoBp0D,EAAIi/C,MAAOysB,EAAU3jE,MAAO2jE,EAAUrX,eAAgBqX,EAAUpX,cACnG,MAAO,CAAEt0D,IAAKA,EAAK2C,SAAUA,GAEjC,OAAO,KAEX,SAAS2oE,GAAetD,EAAKzsE,EAASwsE,GAElC,YADiB,IAAbA,IAAuBA,EAAWQ,GAAmBhtE,IAClDusE,GAAYE,EAAKD,GAE5B,SAASQ,GAAmBhtE,GACxB,OAAO,eAAS,eAAS,eAAS,GAAI0uE,IAAoBmB,IAAiB7vE,EAAQ0B,YAAYqrE,eAMnG,SAASmD,GAAc1nB,EAASC,EAAOC,EAAUhkD,EAAQygD,EAAQnlD,GAe7D,IAdA,IAAIyE,EAAM,CACNlI,MAAOisD,EAAQjsD,OAAS,GACxBuxE,QAAStlB,EAAQslB,SAAW,GAC5B3d,SAAU3H,EAAQ1kD,IAAM,GACxB8qD,IAAKpG,EAAQoG,KAAO,GACpB0M,aAAc,KACd5X,MAAOwP,IACPxK,SAAUA,EACVhkD,OAAQA,EACRygD,OAAQA,EACRwqB,YAAannB,EAAQmnB,YACrB5sE,GAAIqsE,GAAc5mB,EAASxoD,GAC3B8vE,cAAe,eAAS,eAAS,GAAKtnB,EAAQsnB,eAAiB,IAAMrnB,IAEhEnmD,EAAK,EAAGvC,EAAKC,EAAQ0B,YAAY2uE,qBAAsB/tE,EAAKvC,EAAG3B,OAAQkE,IAAM,CAClF,IAAIguE,EAAcvwE,EAAGuC,GACrB,eAASmC,EAAK6rE,EAAY9nB,IAK9B,OAFAx2B,OAAOu+C,OAAO9rE,EAAI1B,GAAGjC,YACrBkxB,OAAOu+C,OAAO9rE,EAAIqrE,eACXrrE,EAEX,SAAS2rE,GAAY5nB,EAASsS,EAAe96D,EAAS6sE,GAClD,IACI2D,EAGAC,EAJA/rE,EAAS8jD,EAAQ9jD,OAEjBgsE,EAAc,KACdvrB,GAAS,EAETwrB,EAAY,KACZC,EAA8B,MAAjBpoB,EAAQp+C,MAAgBo+C,EAAQp+C,MAAQo+C,EAAQplD,KAEjE,GADAotE,EAAYxwE,EAAQ6X,QAAQg5D,iBAAiBD,GACzCJ,EACAE,EAAcF,EAAUpZ,YAEvB,IAAKyV,EACN,OAAO,KAoCX,OAlCmB,MAAfrkB,EAAQn+C,MACRomE,EAAUzwE,EAAQ6X,QAAQg5D,iBAAiBroB,EAAQn+C,MAEzC,MAAV3F,IAEIA,EADiB,MAAjBo2D,EACSA,IAIE0V,GAAaA,EAAUM,sBAC5BL,GAAWA,EAAQK,oBAG7BpsE,GAAUgsE,IACVA,EAActa,GAAWsa,IAEzBD,IACAE,EAAYF,EAAQrZ,OAChB1yD,IACAisE,EAAYva,GAAWua,IAEvBD,GAAeC,GAAaD,IAC5BC,EAAY,OAGhBA,EACAxrB,GAAS,EAEH0nB,IACN1nB,EAASnlD,EAAQrE,QAAQgtD,qBAAsB,EAC/CgoB,EAAY3wE,EAAQ6X,QAAQ4P,IAAIipD,EAAahsE,EACzC1E,EAAQrE,QAAQ4/D,2BAChBv7D,EAAQrE,QAAQ6/D,4BAEjB,CACH92D,OAAQA,EACRygD,OAAQA,EACR34C,MAAO,CAAEpC,MAAOsmE,EAAarmE,IAAKsmE,GAClC7X,eAAgB0X,EAAYA,EAAUO,UAAY,KAClDhY,aAAc0X,EAAUA,EAAQM,UAAY,MAGpD,SAASf,GAAuBpD,EAAa5sE,GACzC,IAAIkiB,EAAM,KAOV,OANI0qD,IACA1qD,EAAM0qD,EAAY9R,eAEX,MAAP54C,IACAA,EAAMliB,EAAQrE,QAAQm/D,eAEnB54C,EAOX,SAAS8uD,GAAuBC,GAC5B,IAAI11D,EAAS/J,KAAKyM,MAAM63C,GAASmb,EAAW7mE,MAAO6mE,EAAW5mE,OAAS,EACnED,EAAQgsD,GAAW6a,EAAW7mE,OAC9BC,EAAMorD,EAAQrrD,EAAOmR,GACzB,MAAO,CAAEnR,MAAOA,EAAOC,IAAKA,GAIhC,SAAS6mE,GAAuBD,EAAY/6D,QACf,IAArBA,IAA+BA,EAAmBgmD,GAAe,IACrE,IAAIiV,EAAW,KACXC,EAAS,KACb,GAAIH,EAAW5mE,IAAK,CAChB+mE,EAAShb,GAAW6a,EAAW5mE,KAC/B,IAAIgnE,EAAYJ,EAAW5mE,IAAIsC,UAAYykE,EAAOzkE,UAI9C0kE,GAAaA,GAAahU,GAAUnnD,KACpCk7D,EAAS3b,EAAQ2b,EAAQ,IAUjC,OAPIH,EAAW7mE,QACX+mE,EAAW/a,GAAW6a,EAAW7mE,OAE7BgnE,GAAUA,GAAUD,IACpBC,EAAS3b,EAAQ0b,EAAU,KAG5B,CAAE/mE,MAAO+mE,EAAU9mE,IAAK+mE,GAOnC,SAASE,GAAUtsB,EAAOC,EAAOptC,EAASwtC,GACtC,MAAkB,SAAdA,EACO6W,GAAerkD,EAAQ05D,eAAevsB,EAAOC,GAAQ,QAE9C,UAAdI,EACO6W,GAAerkD,EAAQ25D,gBAAgBxsB,EAAOC,GAAQ,SAE1DiR,GAAelR,EAAOC,GAGjC,SAASwsB,GAAW10C,EAAOllB,GACvB,IAAIzN,EAAQ,KACRC,EAAM,KAOV,OANI0yB,EAAM3yB,QACNA,EAAQyN,EAAQ65D,aAAa30C,EAAM3yB,QAEnC2yB,EAAM1yB,MACNA,EAAMwN,EAAQ65D,aAAa30C,EAAM1yB,MAEhCD,GAAUC,EAGXD,GAASC,GAAOA,EAAMD,EACf,KAEJ,CAAEA,MAAOA,EAAOC,IAAKA,GALjB,KASf,SAASsnE,GAAazpD,EAAQ0pD,GAC1B,IAEIzzE,EACAyX,EAHAi8D,EAAiB,GACjBznE,EAAQwnE,EAAgBxnE,MAK5B,IADA8d,EAAOzH,KAAKqxD,IACP3zE,EAAI,EAAGA,EAAI+pB,EAAO9pB,OAAQD,GAAK,EAChCyX,EAAYsS,EAAO/pB,GAEfyX,EAAUxL,MAAQA,GAClBynE,EAAe1xE,KAAK,CAAEiK,MAAOA,EAAOC,IAAKuL,EAAUxL,QAEnDwL,EAAUvL,IAAMD,IAChBA,EAAQwL,EAAUvL,KAO1B,OAHID,EAAQwnE,EAAgBvnE,KACxBwnE,EAAe1xE,KAAK,CAAEiK,MAAOA,EAAOC,IAAKunE,EAAgBvnE,MAEtDwnE,EAEX,SAASC,GAAcC,EAAQC,GAC3B,OAAOD,EAAO3nE,MAAMuC,UAAYqlE,EAAO5nE,MAAMuC,UAEjD,SAASslE,GAAgBF,EAAQC,GAC7B,IAAI5nE,EAAQ2nE,EAAO3nE,MAAOC,EAAM0nE,EAAO1nE,IACnC6nE,EAAW,KAoBf,OAnBqB,OAAjBF,EAAO5nE,QAEHA,EADU,OAAVA,EACQ4nE,EAAO5nE,MAGP,IAAIse,KAAKlX,KAAKI,IAAIxH,EAAMuC,UAAWqlE,EAAO5nE,MAAMuC,aAG9C,MAAdqlE,EAAO3nE,MAEHA,EADQ,OAARA,EACM2nE,EAAO3nE,IAGP,IAAIqe,KAAKlX,KAAKwM,IAAI3T,EAAIsC,UAAWqlE,EAAO3nE,IAAIsC,cAG5C,OAAVvC,GAA0B,OAARC,GAAgBD,EAAQC,KAC1C6nE,EAAW,CAAE9nE,MAAOA,EAAOC,IAAKA,IAE7B6nE,EAEX,SAASC,GAAYJ,EAAQC,GACzB,OAAyB,OAAjBD,EAAO3nE,MAAiB,KAAO2nE,EAAO3nE,MAAMuC,cAAiC,OAAjBqlE,EAAO5nE,MAAiB,KAAO4nE,EAAO5nE,MAAMuC,aAC5F,OAAfolE,EAAO1nE,IAAe,KAAO0nE,EAAO1nE,IAAIsC,cAA+B,OAAfqlE,EAAO3nE,IAAe,KAAO2nE,EAAO3nE,IAAIsC,WAEzG,SAASylE,GAAgBL,EAAQC,GAC7B,OAAuB,OAAfD,EAAO1nE,KAAiC,OAAjB2nE,EAAO5nE,OAAkB2nE,EAAO1nE,IAAM2nE,EAAO5nE,SACtD,OAAjB2nE,EAAO3nE,OAAiC,OAAf4nE,EAAO3nE,KAAgB0nE,EAAO3nE,MAAQ4nE,EAAO3nE,KAE/E,SAASgoE,GAAmBC,EAAYC,GACpC,OAA6B,OAArBD,EAAWloE,OAAwC,OAArBmoE,EAAWnoE,OAAkBmoE,EAAWnoE,OAASkoE,EAAWloE,SAC1E,OAAnBkoE,EAAWjoE,KAAoC,OAAnBkoE,EAAWloE,KAAgBkoE,EAAWloE,KAAOioE,EAAWjoE,KAE7F,SAASmoE,GAAoBhmE,EAAOpJ,GAChC,OAAwB,OAAhBoJ,EAAMpC,OAAkBhH,GAAQoJ,EAAMpC,SAC3B,OAAdoC,EAAMnC,KAAgBjH,EAAOoJ,EAAMnC,KAI5C,SAASooE,GAAuBrvE,EAAMoJ,GAClC,OAAmB,MAAfA,EAAMpC,OAAiBhH,EAAOoJ,EAAMpC,MAC7BoC,EAAMpC,MAEA,MAAboC,EAAMnC,KAAejH,GAAQoJ,EAAMnC,IAC5B,IAAIqe,KAAKlc,EAAMnC,IAAIsC,UAAY,GAEnCvJ,EAMX,SAASsvE,GAAgB17D,EAAYC,EAAcokD,EAAcnlD,GAC7D,IAAIy8D,EAAqB,GACrBC,EAAmB,GACnBC,EAAe,GACfC,EAAW,GACXC,EAAW,GACXC,EAAWC,GAAgBj8D,EAAWysC,KAAMxsC,GAChD,IAAK,IAAIysC,KAAS1sC,EAAWysC,KAAM,CAC/B,IAAIh/C,EAAMuS,EAAWysC,KAAKC,GACtB3gD,EAAKiwE,EAASvuE,EAAIi/C,OACH,uBAAf3gD,EAAGwB,UACCE,EAAIqpE,SACJ6E,EAAmBluE,EAAIqpE,SAAW,GAC7B+E,EAAapuE,EAAIqpE,WAClB+E,EAAapuE,EAAIqpE,SAAWrpE,IAIhCmuE,EAAiBlvB,GAAS,IAItC,IAAK,IAAIv8C,KAAc6P,EAAW2sC,UAAW,CACzC,IAAIv8C,EAAW4P,EAAW2sC,UAAUx8C,GAGhCoF,GAFA9H,EAAMuS,EAAWysC,KAAKr8C,EAASs8C,OAC/B3gD,EAAKiwE,EAASvuE,EAAIi/C,OACNt8C,EAASoF,OACrB0mE,GAAgBzuE,EAAIC,QAAUwR,EAC9Bg7D,GAAuB3kE,EAAW2J,GAClC3J,EACAE,EAAcwlE,GAAgBiB,EAAa7X,GAC3C5uD,IACmB,uBAAf1J,EAAGwB,QACCE,EAAIqpE,QACJ6E,EAAmBluE,EAAIqpE,SAAS3tE,KAAKsM,GAGrCmmE,EAAiBxrE,EAASs8C,OAAOvjD,KAAKsM,GAGtB,SAAf1J,EAAGwB,UACQ,eAAfxB,EAAGwB,QAA2BuuE,EAAWC,GAAU5yE,KAAK,CACrDsE,IAAKA,EACL1B,GAAIA,EACJqE,SAAUA,EACVoF,MAAOC,EACP7H,QAASsuE,EAAY9oE,OAAS8oE,EAAY9oE,MAAMuC,YAAcF,EAAYrC,MAAMuC,UAChF9H,MAAOquE,EAAY7oE,KAAO6oE,EAAY7oE,IAAIsC,YAAcF,EAAYpC,IAAIsC,aAKxF,IAAK,IAAImhE,KAAW6E,EAGhB,IAFA,IAAIzqD,EAASyqD,EAAmB7E,GAC5B+D,EAAiBF,GAAazpD,EAAQmzC,GACjC/4D,EAAK,EAAG6wE,EAAmBtB,EAAgBvvE,EAAK6wE,EAAiB/0E,OAAQkE,IAAM,CACpF,IAAI8wE,EAAgBD,EAAiB7wE,GACjCmC,EAAMouE,EAAa/E,GACnB/qE,EAAKiwE,EAASvuE,EAAIi/C,OACtBovB,EAAS3yE,KAAK,CACVsE,IAAKA,EACL1B,GAAIA,EACJqE,SAAU,KACVoF,MAAO4mE,EACPxuE,SAAS,EACTC,OAAO,IAInB,IAAK,IAAI6+C,KAASkvB,EACd,CAAI1qD,EAAS0qD,EAAiBlvB,GAC1BmuB,EAAiBF,GAAazpD,EAAQmzC,GAC1C,IAFA,IAESt7D,EAAK,EAAGszE,EAAmBxB,EAAgB9xE,EAAKszE,EAAiBj1E,OAAQ2B,IAAM,CAChFqzE,EAAgBC,EAAiBtzE,GACrC+yE,EAAS3yE,KAAK,CACVsE,IAAKuS,EAAWysC,KAAKC,GACrB3gD,GAAIiwE,EAAStvB,GACbt8C,SAAU,KACVoF,MAAO4mE,EACPxuE,SAAS,EACTC,OAAO,KAInB,MAAO,CAAEyuE,GAAIR,EAAUS,GAAIR,GAE/B,SAASS,GAAe/uE,GACpB,MAA0B,eAAnBA,EAAI1B,GAAGwB,SAA+C,uBAAnBE,EAAI1B,GAAGwB,QAErD,SAASkvE,GAASvrE,EAAI1F,GAClB0F,EAAGwrE,MAAQlxE,EAEf,SAASmxE,GAASzrE,GACd,OAAOA,EAAGwrE,OACNxrE,EAAGqwB,WAAWm7C,OACd,KAGR,SAAST,GAAgBW,EAAW38D,GAChC,OAAOyiD,GAAQka,GAAW,SAAUz6D,GAAY,OAAO06D,GAAe16D,EAAUlC,MAEpF,SAAS48D,GAAe16D,EAAUlC,GAC9B,IAAIq4D,EAAM,GAQV,OAPIr4D,EAAa,KACbq4D,EAAInvE,KAAK8W,EAAa,KAEtBA,EAAakC,EAASuqC,QACtB4rB,EAAInvE,KAAK8W,EAAakC,EAASuqC,QAEnC4rB,EAAInvE,KAAKgZ,EAASpW,IACXssE,GAAgBC,GAE3B,SAASxrD,GAAc3hB,EAAM2xE,GACzB,IAAIC,EAAO5xE,EAAKrG,IAAIk4E,IAEpB,OADAD,EAAKtzD,MAAK,SAAU0zC,EAAMC,GAAQ,OAAOF,EAAoBC,EAAMC,EAAM0f,MAClEC,EAAKj4E,KAAI,SAAU05B,GAAK,OAAOA,EAAEy+C,QAG5C,SAASD,GAAmBxxE,GACxB,IAAIgC,EAAahC,EAAIgC,WACjB2U,EAAW3U,EAAWC,IACtB+H,EAAQhI,EAAW4C,SAAW5C,EAAW4C,SAASoF,MAAQhI,EAAWgI,MACrEpC,EAAQoC,EAAMpC,MAAQoC,EAAMpC,MAAMuC,UAAY,EAC9CtC,EAAMmC,EAAMnC,IAAMmC,EAAMnC,IAAIsC,UAAY,EAC5C,OAAO,eAAS,eAAS,eAAS,GAAIwM,EAAS22D,eAAgB32D,GAAW,CAAErV,GAAIqV,EAASg3C,SAAU/lD,MAAOA,EACtGC,IAAKA,EAAKmO,SAAUnO,EAAMD,EAAO1F,OAAQ81B,OAAOrhB,EAASzU,QAASuvE,KAAMzxE,IAEhF,SAAS0xE,GAAoB1xE,EAAKxC,GAK9B,IAJA,IAAI0B,EAAc1B,EAAQ0B,YACtByyE,EAAezyE,EAAY0yE,wBAC3Br0E,EAAKyC,EAAIgC,WAAYC,EAAM1E,EAAG0E,IAAK1B,EAAKhD,EAAGgD,GAC3ChH,EAAMgH,EAAG4rE,cACJrsE,EAAK,EAAG+xE,EAAiBF,EAAc7xE,EAAK+xE,EAAej2E,OAAQkE,IAAM,CAC9E,IAAIg/C,EAAc+yB,EAAe/xE,GACjCvG,EAAMulD,EAAYvlD,EAAK0I,EAAK1B,EAAI/C,GAEpC,OAAOjE,EAEX,SAASu4E,GAAyB9xE,EAAKxC,GACnC,OAAOwC,EAAIoC,SAAWpC,EAAIgC,WAAWzB,GAAG2J,kBAAoB1M,EAAQrE,QAAQ6rE,wBAEhF,SAAS+M,GAAuB/xE,EAAKxC,GACjC,OAAOwC,EAAIqC,OAASrC,EAAIgC,WAAWzB,GAAG2J,iBAE1C,SAAS8nE,GAAiBhyE,EAAK4C,EAAYpF,EAASy0E,EACpDxvE,EACAyvE,EAAeC,GACX,IAAI98D,EAAU7X,EAAQ6X,QAASlc,EAAUqE,EAAQrE,QAC7C8rE,EAAmB9rE,EAAQ8rE,iBAAkBC,EAAkB/rE,EAAQ+rE,gBACvEvuD,EAAW3W,EAAIgC,WAAWC,IAC1B0+C,EAAgB3gD,EAAIgC,WAAW4C,SACX,MAApBqgE,IACAA,GAA+C,IAA5BgN,GAEA,MAAnB/M,IACAA,GAA6C,IAA3BziE,GAEtB,IAAI2vE,EAAkBzxB,EAAc32C,MAAMpC,MACtCyqE,EAAgB1xB,EAAc32C,MAAMnC,IACpCyqE,EAAWJ,GAAiBlyE,EAAI4H,OAAS5H,EAAIgC,WAAWgI,MAAMpC,MAC9D2qE,EAASJ,GAAenyE,EAAI6H,KAAO7H,EAAIgC,WAAWgI,MAAMnC,IACxD2qE,EAAa5e,GAAWwe,GAAiBjoE,YAAcypD,GAAW0e,GAAUnoE,UAC5EsoE,EAAW7e,GAAWV,EAAMmf,GAAgB,IAAIloE,YAAcypD,GAAWV,EAAMqf,GAAS,IAAIpoE,UAChG,OAAI86D,IAAqBtuD,EAASzU,SAAWswE,GAAcC,IACvDH,EAAWE,EAAaJ,EAAkBE,EAC1CC,EAASE,EAAWJ,EAAgBE,EAChCrN,GAAmBvuD,EAASgsC,OACrBttC,EAAQuoD,YAAY0U,EAAUC,EAAQ3vE,EAAY,CACrD0zD,eAAgB4b,EAAgB,KAAOvxB,EAAc2V,eACrDC,aAAc4b,EAAc,KAAOxxB,EAAc4V,eAGlDlhD,EAAQla,OAAOm3E,EAAU1vE,EAAY,CACxC2rE,UAAW2D,EAAgB,KAAOvxB,EAAc2V,kBAGjD,GAEX,SAASoc,GAAW1yE,EAAKc,EAAY4Q,GACjC,IAAI2T,EAAWrlB,EAAIgC,WAAWgI,MAC9B,MAAO,CACH5G,OAAQiiB,EAASxd,KAAO6J,GAAW5Q,EAAW8G,OAC9CvE,SAAUgiB,EAASzd,QAAU8J,GAAW5Q,EAAW+G,KACnDvE,QAASxC,GAAckvE,GAAoBlvE,EAAYukB,EAASzd,QAGxE,SAAS+qE,GAAmBl8E,GACxB,IAAI6H,EAAa,CAAC,YAkClB,OAjCI7H,EAAM6W,UACNhP,EAAWX,KAAK,mBAEhBlH,EAAMm8E,aACNt0E,EAAWX,KAAK,uBAEhBlH,EAAMo8E,kBAAoBp8E,EAAMq8E,iBAChCx0E,EAAWX,KAAK,sBAEhBlH,EAAMuM,YACN1E,EAAWX,KAAK,qBAEhBlH,EAAMwM,YACN3E,EAAWX,KAAK,qBAEhBlH,EAAM0M,YACN7E,EAAWX,KAAK,qBAEhBlH,EAAM2L,SACN9D,EAAWX,KAAK,kBAEhBlH,EAAM4L,OACN/D,EAAWX,KAAK,gBAEhBlH,EAAM2M,QACN9E,EAAWX,KAAK,iBAEhBlH,EAAM6M,SACNhF,EAAWX,KAAK,kBAEhBlH,EAAM4M,UACN/E,EAAWX,KAAK,mBAEbW,EAEX,SAASy0E,GAAmB/wE,GACxB,OAAOA,EAAW4C,SACZ5C,EAAW4C,SAASD,WACpB3C,EAAWC,IAAIi/C,MAAQ,IAAMl/C,EAAWgI,MAAMpC,MAAMiK,cAG9D,SAASmhE,GAAkBhzE,EAAKxC,GAC5B,IAAID,EAAKyC,EAAIgC,WAAYC,EAAM1E,EAAG0E,IAAK2C,EAAWrH,EAAGqH,SACjDwnD,EAAMnqD,EAAImqD,IACd,GAAIA,EACA,MAAO,CAAE6mB,KAAM7mB,GAEnB,IAAItc,EAAUtyC,EAAQsyC,QAAS32C,EAAUqE,EAAQrE,QAC7CouE,EAAmBpuE,EAAQouE,iBAQ/B,OAPwB,MAApBA,IACAA,EAAmBtlE,EAAIkrE,YACC,MAApB5F,IACAA,EAAmB96D,QAAQqjC,EAAQojC,YAAY,iBAInD3L,EAEOjX,GAAwB,SAAU9gB,GACrCM,EAAQC,QAAQ,aAAc,CAC1BrqC,GAAI8pC,EAAG52C,OACP+K,MAAO,IAAI,GAASnG,EAASyE,EAAK2C,GAClC24C,QAAS/N,EACTh4B,KAAMha,EAAQyZ,aAInB,GAGX,IAAIk8D,GAAiB,CACjBvrE,MAAOu6D,GACPt6D,IAAKs6D,GACLjgE,OAAQuK,SAEZ,SAAS2mE,GAAcnJ,EAAK50D,EAASg+D,GACjC,IAAI7zE,EAAO8zE,GAAkBrJ,EAAK50D,GAC9BrL,EAAQxK,EAAKwK,MACjB,IAAKA,EAAMpC,MACP,OAAO,KAEX,IAAKoC,EAAMnC,IAAK,CACZ,GAAuB,MAAnBwrE,EACA,OAAO,KAEXrpE,EAAMnC,IAAMwN,EAAQ4P,IAAIjb,EAAMpC,MAAOyrE,GAEzC,OAAO7zE,EAMX,SAAS8zE,GAAkBrJ,EAAK50D,GAC5B,IAAI9X,EAAKwsE,GAAYE,EAAKkJ,IAAiBzwB,EAAgBnlD,EAAGyoD,QAASC,EAAQ1oD,EAAG0oD,MAC9E+nB,EAAYtrB,EAAc96C,MAAQyN,EAAQg5D,iBAAiB3rB,EAAc96C,OAAS,KAClFqmE,EAAUvrB,EAAc76C,IAAMwN,EAAQg5D,iBAAiB3rB,EAAc76C,KAAO,KAC5E3F,EAASwgD,EAAcxgD,OAK3B,OAJc,MAAVA,IACAA,EAAU8rE,GAAaA,EAAUM,qBAC3BL,GAAWA,EAAQK,oBAEtB,eAAS,CAAEtkE,MAAO,CACjBpC,MAAOomE,EAAYA,EAAUpZ,OAAS,KACtC/sD,IAAKomE,EAAUA,EAAQrZ,OAAS,MACjC1yD,OAAQA,GAAU+jD,GAE7B,SAASstB,GAAiBC,EAAOC,GAC7B,OAAO9D,GAAY6D,EAAMxpE,MAAOypE,EAAMzpE,QAClCwpE,EAAMtxE,SAAWuxE,EAAMvxE,QACvBwxE,GAAiBF,EAAOC,GAGhC,SAASC,GAAiBF,EAAOC,GAC7B,IAAK,IAAI5kB,KAAY4kB,EACjB,GAAiB,UAAb5kB,GAAqC,WAAbA,GACpB2kB,EAAM3kB,KAAc4kB,EAAM5kB,GAC1B,OAAO,EAMnB,IAAK,IAAIA,KAAY2kB,EACjB,KAAM3kB,KAAY4kB,GACd,OAAO,EAGf,OAAO,EAEX,SAASE,GAAiBn0E,EAAM6V,GAC5B,OAAO,eAAS,eAAS,GAAIu+D,GAAcp0E,EAAKwK,MAAOqL,EAAS7V,EAAK0C,SAAU,CAAEA,OAAQ1C,EAAK0C,SAElG,SAAS2xE,GAA0B7pE,EAAOqL,EAAS6nC,GAC/C,OAAO,eAAS,eAAS,GAAI02B,GAAc5pE,EAAOqL,EAAS6nC,IAAY,CAAEoiB,SAAUjqD,EAAQiqD,WAE/F,SAASsU,GAAc5pE,EAAOqL,EAAS6nC,GACnC,MAAO,CACHt1C,MAAOyN,EAAQkC,OAAOvN,EAAMpC,OAC5BC,IAAKwN,EAAQkC,OAAOvN,EAAMnC,KAC1BuiD,SAAU/0C,EAAQ4nC,UAAUjzC,EAAMpC,MAAO,CAAEs1C,SAAUA,IACrDmN,OAAQh1C,EAAQ4nC,UAAUjzC,EAAMnC,IAAK,CAAEq1C,SAAUA,KAGzD,SAAS42B,GAAoBphE,EAAU+B,EAAcjX,GACjD,IAAIkiB,EAAM6tD,GAAe,CAAEntB,UAAU,GAAS5iD,GAC1CyE,EAAMyrE,GAAchuD,EAAIsmC,QAAStmC,EAAIumC,MAAO,GAChDvzC,EAASxQ,QAAQ,EACjB1E,GACA,MAAO,CACHyE,IAAKA,EACL1B,GAAI8wE,GAAepvE,EAAKwS,GACxB7P,SAAUyxD,GAAoBp0D,EAAIi/C,MAAOxuC,EAAS1I,OAClDA,MAAO0I,EAAS1I,MAChB5H,SAAS,EACTC,OAAO,GAIf,SAAS0xE,GAAkB11B,EAAWzO,EAAKpyC,GACvCA,EAAQsyC,QAAQC,QAAQ,SAAU,eAAS,eAAS,GAAIikC,GAA4B31B,EAAW7gD,IAAW,CAAE+/C,QAAS3N,EAAMA,EAAIyB,UAAY,KAAM75B,KAAMha,EAAQyZ,SAAWzZ,EAAQggD,YAAYhmC,QAElM,SAASy8D,GAAoBrkC,EAAKpyC,GAC9BA,EAAQsyC,QAAQC,QAAQ,WAAY,CAChCwN,QAAS3N,EAAMA,EAAIyB,UAAY,KAC/B75B,KAAMha,EAAQyZ,SAAWzZ,EAAQggD,YAAYhmC,OAGrD,SAASw8D,GAA4BthE,EAAUlV,GAE3C,IADA,IAAI/G,EAAQ,GACHqJ,EAAK,EAAGvC,EAAKC,EAAQ0B,YAAYg1E,mBAAoBp0E,EAAKvC,EAAG3B,OAAQkE,IAAM,CAChF,IAAIg9C,EAAYv/C,EAAGuC,GACnB,eAASrJ,EAAOqmD,EAAUpqC,EAAUlV,IAGxC,OADA,eAAS/G,EAAOk9E,GAAiBjhE,EAAUlV,EAAQ6X,UAC5C5e,EAIX,SAAS09E,GAAmBjyE,EAAQ0yD,EAAQp3D,GACxC,IAAI6X,EAAU7X,EAAQ6X,QAASlc,EAAUqE,EAAQrE,QAC7C0O,EAAM+sD,EAQV,OAPI1yD,GACA2F,EAAM+rD,GAAW/rD,GACjBA,EAAMwN,EAAQ4P,IAAIpd,EAAK1O,EAAQ4/D,6BAG/BlxD,EAAMwN,EAAQ4P,IAAIpd,EAAK1O,EAAQ6/D,2BAE5BnxD,EAIX,SAASusE,GAA0B5/D,EAAY6/D,EAAiBt0B,EAAUviD,GACtE,IAAI82E,EAAe7D,GAAgBj8D,EAAWysC,KAAMozB,GAChD1d,EAAO2T,KACX,IAAK,IAAIppB,KAAS1sC,EAAWysC,KAAM,CAC/B,IAAIh/C,EAAMuS,EAAWysC,KAAKC,GAC1ByV,EAAK1V,KAAKC,GAASqzB,GAAwBtyE,EAAKqyE,EAAapzB,GAAQnB,EAAUviD,GAEnF,IAAK,IAAImH,KAAc6P,EAAW2sC,UAAW,CACzC,IAAIv8C,EAAW4P,EAAW2sC,UAAUx8C,GAChC1C,EAAM00D,EAAK1V,KAAKr8C,EAASs8C,OAC7ByV,EAAKxV,UAAUx8C,GAAc6vE,GAA6B5vE,EAAU3C,EAAKqyE,EAAa1vE,EAASs8C,OAAQnB,EAAUviD,GAErH,OAAOm5D,EAEX,SAAS4d,GAAwB59D,EAAU89D,EAAa10B,EAAUviD,GAC9D,IAAIklD,EAAgB3C,EAAS2C,eAAiB,GAIlB,MAAxBA,EAAcC,QACd8xB,EAAYvqE,mBACX61C,EAASwD,YAAcxD,EAASyD,YACjCd,EAAcC,QAAS,GAE3B,IAAI+xB,EAAO,eAAS,eAAS,eAAS,GAAI/9D,GAAW+rC,GAAgB,CAAEniD,GAAI,eAAS,eAAS,GAAIoW,EAASpW,IAAKmiD,EAAcniD,MACzHw/C,EAASutB,gBACToH,EAAKpH,cAAgB,eAAS,eAAS,GAAIoH,EAAKpH,eAAgBvtB,EAASutB,gBAE7E,IAAK,IAAIxtE,EAAK,EAAGvC,EAAKC,EAAQ0B,YAAYy1E,yBAA0B70E,EAAKvC,EAAG3B,OAAQkE,IAAM,CACtF,IAAI80E,EAAUr3E,EAAGuC,GACjB80E,EAAQF,EAAM30B,EAAUviD,GAK5B,OAHKk3E,EAAK/xB,QAAUnlD,EAAQrE,QAAQgtD,qBAChCuuB,EAAK/xB,QAAS,GAEX+xB,EAEX,SAASF,GAA6B7zB,EAAehqC,EACrD89D,EAAa10B,EAAUviD,GACnB,IAAI6X,EAAU7X,EAAQ6X,QAClBw/D,EAAc90B,EAAS2C,gBAAmD,IAAlC3C,EAAS2C,cAAcxgD,OAC/D4yE,EAAW/0B,EAAS2C,gBAAmD,IAAlC3C,EAAS2C,cAAcC,OAC5D+xB,EAAO,eAAS,GAAI/zB,GAwCxB,OAvCIk0B,IACAH,EAAK1qE,MAAQwkE,GAAuBkG,EAAK1qE,QAEzC+1C,EAAS4B,YAAc8yB,EAAYtI,gBACnCuI,EAAK1qE,MAAQ,CACTpC,MAAOyN,EAAQ4P,IAAIyvD,EAAK1qE,MAAMpC,MAAOm4C,EAAS4B,YAC9C95C,IAAKwN,EAAQ4P,IAAIyvD,EAAK1qE,MAAMnC,IAAKk4C,EAAS4B,cAG9C5B,EAASwD,YAAckxB,EAAYvqE,mBACnCwqE,EAAK1qE,MAAQ,CACTpC,MAAOyN,EAAQ4P,IAAIyvD,EAAK1qE,MAAMpC,MAAOm4C,EAASwD,YAC9C17C,IAAK6sE,EAAK1qE,MAAMnC,MAGpBk4C,EAASyD,UAAYixB,EAAYvqE,mBACjCwqE,EAAK1qE,MAAQ,CACTpC,MAAO8sE,EAAK1qE,MAAMpC,MAClBC,IAAKwN,EAAQ4P,IAAIyvD,EAAK1qE,MAAMnC,IAAKk4C,EAASyD,YAG9CsxB,IACAJ,EAAK1qE,MAAQ,CACTpC,MAAO8sE,EAAK1qE,MAAMpC,MAClBC,IAAKssE,GAAmBx9D,EAASzU,OAAQwyE,EAAK1qE,MAAMpC,MAAOpK,KAK/DmZ,EAASzU,SACTwyE,EAAK1qE,MAAQ,CACTpC,MAAOgsD,GAAW8gB,EAAK1qE,MAAMpC,OAC7BC,IAAK+rD,GAAW8gB,EAAK1qE,MAAMnC,OAI/B6sE,EAAK1qE,MAAMnC,IAAM6sE,EAAK1qE,MAAMpC,QAC5B8sE,EAAK1qE,MAAMnC,IAAMssE,GAAmBx9D,EAASzU,OAAQwyE,EAAK1qE,MAAMpC,MAAOpK,IAEpEk3E,EAKX,IAAIK,GAAyB,WACzB,SAASA,EAAQn3E,EAAM4hD,EAAgBnqC,GACnC1f,KAAKiI,KAAOA,EACZjI,KAAK6pD,eAAiBA,EACtB7pD,KAAK0f,QAAUA,EA+CnB,OA7CAma,OAAOqB,eAAekkD,EAAQ/7E,UAAW,WAAY,CACjD84B,IAAK,WACD,OAAOn8B,KAAK6pD,iBAAiBhC,aAEjC1sB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAekkD,EAAQ/7E,UAAW,QAAS,CAC9C84B,IAAK,WACD,OAAOn8B,KAAK6pD,iBAAiBw1B,WAEjClkD,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAekkD,EAAQ/7E,UAAW,cAAe,CACpD84B,IAAK,WACD,OAAOn8B,KAAK0f,QAAQkC,OAAO5hB,KAAK6pD,iBAAiB3+C,YAAY27C,YAAY50C,QAE7EkpB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAekkD,EAAQ/7E,UAAW,YAAa,CAClD84B,IAAK,WACD,OAAOn8B,KAAK0f,QAAQkC,OAAO5hB,KAAK6pD,iBAAiB3+C,YAAY27C,YAAY30C,MAE7EipB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAekkD,EAAQ/7E,UAAW,eAAgB,CACrD84B,IAAK,WACD,OAAOn8B,KAAK0f,QAAQkC,OAAO5hB,KAAK6pD,iBAAiB3+C,YAAYqU,aAAatN,QAE9EkpB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAekkD,EAAQ/7E,UAAW,aAAc,CACnD84B,IAAK,WACD,OAAOn8B,KAAK0f,QAAQkC,OAAO5hB,KAAK6pD,iBAAiB3+C,YAAYqU,aAAarN,MAE9EipB,YAAY,EACZC,cAAc,IAElBgkD,EAAQ/7E,UAAUi8E,UAAY,SAAUv8E,GACpC,OAAO/C,KAAK6pD,iBAAiBrmD,QAAQT,IAElCq8E,EAnDiB,GAsDxBG,GAAwB,CACxB5zE,GAAIy1B,OACJuhC,cAAe7rD,QACf2/C,IAAKr1B,OACL57B,OAAQ47B,OACRj/B,OAAQqqE,GACRkD,mBAAoBlD,GAEpBgT,QAAShT,GACTiT,QAASjT,IAEb,SAASkT,GAAiBpL,EAAKzsE,EAASwsE,GAEpC,IAAIsL,EAUJ,QAXiB,IAAbtL,IAAuBA,EAAWuL,GAAyB/3E,IAE5C,kBAARysE,EACPqL,EAAS,CAAElpB,IAAK6d,GAEI,oBAARA,GAAsBlxE,MAAMqe,QAAQ6yD,GAChDqL,EAAS,CAAEx9E,OAAQmyE,GAEC,kBAARA,GAAoBA,IAChCqL,EAASrL,GAETqL,EAAQ,CACR,IAAI/3E,EAAKwsE,GAAYuL,EAAQtL,GAAWhkB,EAAUzoD,EAAGyoD,QAASC,EAAQ1oD,EAAG0oD,MACrEuvB,EAAUC,GAAqBzvB,EAASxoD,GAC5C,GAAIg4E,EACA,MAAO,CACHE,KAAMzL,EACN0L,YAAY,EACZC,cAAe,GACfC,WAAY,KACZvd,cAAetS,EAAQsS,cACvB+M,mBAAoBrf,EAAQqf,mBAC5B8P,QAASnvB,EAAQmvB,QACjBC,QAASpvB,EAAQovB,QACjBznB,SAAU3H,EAAQ1kD,IAAM,GACxB4kD,SAAUwK,IACVolB,YAAaN,EAAQM,YACrBloB,KAAM4nB,EAAQ5nB,KACdrtD,GAAIqsE,GAAc5mB,EAASxoD,GAC3B8vE,cAAernB,GAI3B,OAAO,KAEX,SAASsvB,GAAyB/3E,GAC9B,OAAO,eAAS,eAAS,eAAS,GAAI0uE,IAAoBgJ,IAAwB13E,EAAQ0B,YAAY62E,qBAE1G,SAASN,GAAqBxL,EAAKzsE,GAE/B,IADA,IAAIyjD,EAAOzjD,EAAQ0B,YAAY82E,gBACtBr6E,EAAIslD,EAAKrlD,OAAS,EAAGD,GAAK,EAAGA,GAAK,EAAG,CAC1C,IAAIsG,EAAMg/C,EAAKtlD,GACXiyD,EAAO3rD,EAAIg0E,UAAUhM,GACzB,GAAIrc,EACA,MAAO,CAAEkoB,YAAan6E,EAAGiyD,KAAMA,GAGvC,OAAO,KAGX,SAASsoB,GAAkBC,EAAaC,GACpC,OAAQA,EAAOx4E,MACX,IAAK,cACD,OAAOw4E,EAAOC,WAClB,QACI,OAAOF,GAGnB,SAASG,GAAen9E,EAASkc,GAC7B,IAAIkhE,EAAmBp9E,EAAQisE,YAE/B,OAAwB,MAApBmR,EACOlhE,EAAQ65D,aAAaqH,GAEzBC,GAAOr9E,EAAQs8C,IAAKpgC,GAE/B,SAASmhE,GAAOC,EAAUphE,GAItB,MAHwB,oBAAbohE,IACPA,EAAWA,KAEC,MAAZA,EACOphE,EAAQqhE,kBAEZrhE,EAAQ65D,aAAauH,GAGhC,IAAI,GAA6B,WAC7B,SAASE,KAuYT,OArYAA,EAAY39E,UAAUwmD,eAAiB,WACnC,OAAO7pD,KAAKihF,mBAAmBp3B,kBAEnCm3B,EAAY39E,UAAUolD,SAAW,SAAUg4B,GACvC,OAAOzgF,KAAKihF,mBAAmBx4B,SAASg4B,IAE5C5mD,OAAOqB,eAAe8lD,EAAY39E,UAAW,OAAQ,CACjD84B,IAAK,WAAc,OAAOn8B,KAAK6pD,iBAAiBvoC,SAEhD6Z,YAAY,EACZC,cAAc,IAElB4lD,EAAY39E,UAAU69E,eAAiB,SAAUx+E,GAC7CA,KAEJs+E,EAAY39E,UAAU89E,WAAa,WAC/BnhF,KAAKo6C,QAAQ,WAAW,IAI5B4mC,EAAY39E,UAAU+9E,UAAY,SAAUr+E,EAAMa,GAC9C5D,KAAKyoD,SAAS,CACVxgD,KAAM,aACNo5E,WAAYt+E,EACZu+E,eAAgB19E,KAGxBo9E,EAAY39E,UAAUi8E,UAAY,SAAUv8E,GACxC,OAAO/C,KAAKihF,mBAAmBM,4BAA4Bx+E,IAE/Di+E,EAAY39E,UAAUm+E,wBAA0B,WAC5C,OAAO3nD,OAAO0G,KAAKvgC,KAAK6pD,iBAAiB43B,sBAI7CT,EAAY39E,UAAUtC,GAAK,SAAU2gF,EAAa37C,GAC9C,IAAIk7C,EAAqBjhF,KAAKihF,mBAC1BA,EAAmBU,+BAA+BD,GAClDT,EAAmB9mC,QAAQp5C,GAAG2gF,EAAa37C,GAG3ClE,QAAQC,KAAK,0BAA4B4/C,EAAc,MAG/DV,EAAY39E,UAAUurD,IAAM,SAAU8yB,EAAa37C,GAC/C/lC,KAAKihF,mBAAmB9mC,QAAQyU,IAAI8yB,EAAa37C,IAGrDi7C,EAAY39E,UAAU+2C,QAAU,SAAUsnC,GAGtC,IAFA,IAAI95E,EACA6iB,EAAO,GACFtgB,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCsgB,EAAKtgB,EAAK,GAAK5C,UAAU4C,IAE5BvC,EAAK5H,KAAKihF,mBAAmB9mC,SAASC,QAAQ9yC,MAAMM,EAAI,eAAc,CAAC85E,GAAcj3D,KAI1Fu2D,EAAY39E,UAAUu+E,WAAa,SAAUC,EAAUC,GACnD,IAAIz6E,EAAQrH,KACZA,KAAKkhF,gBAAe,WAEhB,GADA75E,EAAM6gD,WACF45B,EACA,GAAIA,EAAY7vE,OAAS6vE,EAAY5vE,IACjC7K,EAAMohD,SAAS,CACXxgD,KAAM,mBACN45E,SAAUA,IAEdx6E,EAAMohD,SAAS,CACXxgD,KAAM,aACNo5E,WAAY,eACZC,eAAgBQ,QAGnB,CACD,IAAIpiE,EAAUrY,EAAMwiD,iBAAiBnqC,QACrCrY,EAAMohD,SAAS,CACXxgD,KAAM,mBACN45E,SAAUA,EACVnB,WAAYhhE,EAAQ65D,aAAauI,UAKzCz6E,EAAMohD,SAAS,CACXxgD,KAAM,mBACN45E,SAAUA,QAQ1Bb,EAAY39E,UAAU0+E,OAAS,SAAUrB,EAAYmB,GACjD,IACIG,EADAnyE,EAAQ7P,KAAK6pD,iBAEjBg4B,EAAWA,GAAY,MACvBG,EAAOnyE,EAAMoyE,UAAUJ,IAAa7hF,KAAKkiF,gBAAgBL,GACzD7hF,KAAKkoD,WACD85B,EACAhiF,KAAKyoD,SAAS,CACVxgD,KAAM,mBACN45E,SAAUG,EAAK/5E,KACfy4E,WAAYA,IAIhB1gF,KAAKyoD,SAAS,CACVxgD,KAAM,cACNy4E,WAAYA,KAMxBM,EAAY39E,UAAU6+E,gBAAkB,SAAUpmE,GAC9C,IAEI9V,EACAg8E,EAHAp6E,EAAK5H,KAAK6pD,iBAAkBo4B,EAAYr6E,EAAGq6E,UAAWE,EAAgBv6E,EAAGu6E,cACzEC,EAAY,GAAGv5E,OAAOs5E,EAAch9C,OAASg9C,EAAch9C,OAAOk9C,iBAAmB,GAAIF,EAAc98C,OAAS88C,EAAc98C,OAAOg9C,iBAAmB,IAG5J,IAAK,IAAIR,KAAYI,EACjBG,EAAUp6E,KAAK65E,GAEnB,IAAK77E,EAAI,EAAGA,EAAIo8E,EAAUn8E,OAAQD,GAAK,EAEnC,GADAg8E,EAAOC,EAAUG,EAAUp8E,IACvBg8E,GACIA,EAAKM,aAAexmE,EACpB,OAAOkmE,EAInB,OAAO,MAIXhB,EAAY39E,UAAUk/E,KAAO,WACzBviF,KAAKkoD,WACLloD,KAAKyoD,SAAS,CAAExgD,KAAM,UAE1B+4E,EAAY39E,UAAUm/E,KAAO,WACzBxiF,KAAKkoD,WACLloD,KAAKyoD,SAAS,CAAExgD,KAAM,UAE1B+4E,EAAY39E,UAAUo/E,SAAW,WAC7B,IAAI5yE,EAAQ7P,KAAK6pD,iBACjB7pD,KAAKkoD,WACLloD,KAAKyoD,SAAS,CACVxgD,KAAM,cACNy4E,WAAY7wE,EAAM6P,QAAQgjE,SAAS7yE,EAAM2wE,aAAc,MAG/DQ,EAAY39E,UAAUs/E,SAAW,WAC7B,IAAI9yE,EAAQ7P,KAAK6pD,iBACjB7pD,KAAKkoD,WACLloD,KAAKyoD,SAAS,CACVxgD,KAAM,cACNy4E,WAAY7wE,EAAM6P,QAAQgjE,SAAS7yE,EAAM2wE,YAAa,MAG9DQ,EAAY39E,UAAUu/E,MAAQ,WAC1B,IAAI/yE,EAAQ7P,KAAK6pD,iBACjB7pD,KAAKkoD,WACLloD,KAAKyoD,SAAS,CACVxgD,KAAM,cACNy4E,WAAYG,GAAOhxE,EAAMgzE,gBAAgB/iC,IAAKjwC,EAAM6P,YAG5DshE,EAAY39E,UAAUy/E,SAAW,SAAUC,GACvC,IAAIlzE,EAAQ7P,KAAK6pD,iBACjB7pD,KAAKkoD,WACLloD,KAAKyoD,SAAS,CACVxgD,KAAM,cACNy4E,WAAY7wE,EAAM6P,QAAQ65D,aAAawJ,MAG/C/B,EAAY39E,UAAU2/E,cAAgB,SAAUC,GAC5C,IAAIpzE,EAAQ7P,KAAK6pD,iBACbkC,EAAQgY,GAAekf,GACvBl3B,IACA/rD,KAAKkoD,WACLloD,KAAKyoD,SAAS,CACVxgD,KAAM,cACNy4E,WAAY7wE,EAAM6P,QAAQ4P,IAAIzf,EAAM2wE,YAAaz0B,OAK7Di1B,EAAY39E,UAAU28D,QAAU,WAC5B,IAAInwD,EAAQ7P,KAAK6pD,iBACjB,OAAOh6C,EAAM6P,QAAQkC,OAAO/R,EAAM2wE,cAItCQ,EAAY39E,UAAU0lC,WAAa,SAAU7M,EAAGygC,GAC5C,IAAIj9C,EAAU1f,KAAK6pD,iBAAiBnqC,QACpC,OAAOA,EAAQla,OAAOka,EAAQ65D,aAAar9C,GAAImwC,GAAgB1P,KAGnEqkB,EAAY39E,UAAU4kE,YAAc,SAAUxD,EAAIC,EAAIjd,GAClD,IAAI/nC,EAAU1f,KAAK6pD,iBAAiBnqC,QACpC,OAAOA,EAAQuoD,YAAYvoD,EAAQ65D,aAAa9U,GAAK/kD,EAAQ65D,aAAa7U,GAAK2H,GAAgB5kB,GAAWA,IAE9Gu5B,EAAY39E,UAAUikD,UAAY,SAAUprB,EAAGqrB,GAC3C,IAAI7nC,EAAU1f,KAAK6pD,iBAAiBnqC,QACpC,OAAOA,EAAQ4nC,UAAU5nC,EAAQ65D,aAAar9C,GAAI,CAAEqrB,SAAUA,KAMlEy5B,EAAY39E,UAAUw6B,OAAS,SAAUqlD,EAAW3sD,GAChD,IAAI4sD,EAGIA,EAFO,MAAX5sD,EACuB,MAAnB2sD,EAAUjxE,MACOixE,EAGA,CACbjxE,MAAOixE,EACPhxE,IAAK,MAKI,CACbD,MAAOixE,EACPhxE,IAAKqkB,GAGb,IAAI1mB,EAAQ7P,KAAK6pD,iBACbnB,EAAY+0B,GAAc0F,EAAgBtzE,EAAM6P,QAASqkD,GAAe,CAAEzjD,KAAM,KAChFooC,IACA1oD,KAAKyoD,SAAS,CAAExgD,KAAM,eAAgBygD,UAAWA,IACjD01B,GAAkB11B,EAAW,KAAM74C,KAI3CmxE,EAAY39E,UAAU6kD,SAAW,SAAUjO,GACvC,IAAIpqC,EAAQ7P,KAAK6pD,iBACbh6C,EAAM+O,gBACN5e,KAAKyoD,SAAS,CAAExgD,KAAM,mBACtBq2E,GAAoBrkC,EAAKpqC,KAKjCmxE,EAAY39E,UAAU+/E,SAAW,SAAUC,EAAYC,GACnD,GAAID,aAAsB,GAAU,CAChC,IAAI/2E,EAAM+2E,EAAWE,KACjBt0E,EAAWo0E,EAAWG,UACtBC,EAAczjF,KAAK6pD,iBASvB,OAPK45B,EAAY5kE,WAAWysC,KAAKh/C,EAAIi/C,SACjCvrD,KAAKyoD,SAAS,CACVxgD,KAAM,aACN4W,WAAYq2D,GAAkB,CAAE5oE,IAAKA,EAAK2C,SAAUA,MAExDjP,KAAK0jF,gBAAgBL,IAElBA,EAEX,IACI5O,EADA5kE,EAAQ7P,KAAK6pD,iBAEjB,GAAIy5B,aAAuB5rB,EACvB+c,EAAc6O,EAAY3rB,yBAEzB,GAA2B,mBAAhB2rB,EACRA,IACA7O,EAAc9S,GAAkB9xD,EAAM2mD,cAAc,SAGvD,GAAmB,MAAf8sB,EAAqB,CAC1B,IAAIK,EAAY3jF,KAAK4jF,mBAAmBN,GACxC,IAAKK,EAED,OADA9hD,QAAQC,KAAK,2CAA8CwhD,EAAc,KAClE,KAEX7O,EAAckP,EAAUhsB,oBAE5B,IAAIqd,EAAQC,GAAWoO,EAAY5O,EAAa5kE,GAAO,GACvD,GAAImlE,EAAO,CACP,IAAI6O,EAAc,IAAI,GAASh0E,EAAOmlE,EAAM1oE,IAAK0oE,EAAM1oE,IAAI62D,aAAe,KAAO6R,EAAM/lE,UAMvF,OALAjP,KAAKyoD,SAAS,CACVxgD,KAAM,aACN4W,WAAYq2D,GAAkBF,KAElCh1E,KAAK0jF,gBAAgBG,GACdA,EAEX,OAAO,MAEX7C,EAAY39E,UAAUqgF,gBAAkB,SAAUz4B,GAC9C,IAAI5jD,EAAQrH,KACRm6C,EAAUn6C,KAAK6pD,iBAAiB1P,QACpCA,EAAQC,QAAQ,WAAY,CACxBpsC,MAAOi9C,EACPU,cAAe,GACfC,OAAQ,WACJvkD,EAAMohD,SAAS,CACXxgD,KAAM,gBACN4W,WAAYilE,GAAgB74B,SAM5C+1B,EAAY39E,UAAU0gF,aAAe,SAAUp4E,GAC3C,IAAIkE,EAAQ7P,KAAK6pD,iBACbjiD,EAAKiI,EAAMgP,WAAYysC,EAAO1jD,EAAG0jD,KAAME,EAAY5jD,EAAG4jD,UAE1D,IAAK,IAAID,KADT5/C,EAAKy1B,OAAOz1B,GACM2/C,EAAM,CACpB,IAAIh/C,EAAMg/C,EAAKC,GACf,GAAIj/C,EAAI0rD,WAAarsD,EAAI,CACrB,GAAIW,EAAI62D,aACJ,OAAO,IAAI,GAAStzD,EAAOvD,EAAK,MAEpC,IAAK,IAAI0C,KAAcw8C,EAAW,CAC9B,IAAIv8C,EAAWu8C,EAAUx8C,GACzB,GAAIC,EAASs8C,QAAUj/C,EAAIi/C,MACvB,OAAO,IAAI,GAAS17C,EAAOvD,EAAK2C,KAKhD,OAAO,MAEX+xE,EAAY39E,UAAU2gF,UAAY,WAC9B,IAAIP,EAAczjF,KAAK6pD,iBACvB,OAAOo6B,GAAeR,EAAY5kE,WAAY4kE,IAElDzC,EAAY39E,UAAU6gF,gBAAkB,WACpClkF,KAAKyoD,SAAS,CAAExgD,KAAM,uBAI1B+4E,EAAY39E,UAAU8gF,gBAAkB,WACpC,IAAIt0E,EAAQ7P,KAAK6pD,iBACbu6B,EAAav0E,EAAM2mD,aACnB6tB,EAAa,GACjB,IAAK,IAAIC,KAAcF,EACnBC,EAAWr8E,KAAK,IAAI0vD,EAAe7nD,EAAOu0E,EAAWE,KAEzD,OAAOD,GAEXrD,EAAY39E,UAAUugF,mBAAqB,SAAUj4E,GACjD,IAAIkE,EAAQ7P,KAAK6pD,iBACbu6B,EAAav0E,EAAM2mD,aAEvB,IAAK,IAAIjG,KADT5kD,EAAKy1B,OAAOz1B,GACSy4E,EACjB,GAAIA,EAAW7zB,GAAUyH,WAAarsD,EAClC,OAAO,IAAI+rD,EAAe7nD,EAAOu0E,EAAW7zB,IAGpD,OAAO,MAEXywB,EAAY39E,UAAUkhF,eAAiB,SAAUjB,GAC7C,IAAIzzE,EAAQ7P,KAAK6pD,iBACjB,GAAIy5B,aAAuB5rB,EAQvB,OANK7nD,EAAM2mD,aAAa8sB,EAAY3rB,oBAAoBpH,WACpDvwD,KAAKyoD,SAAS,CACVxgD,KAAM,oBACNu8E,QAAS,CAAClB,EAAY3rB,uBAGvB2rB,EAEX,IAAI7O,EAAciL,GAAiB4D,EAAazzE,GAChD,OAAI4kE,GACAz0E,KAAKyoD,SAAS,CAAExgD,KAAM,oBAAqBu8E,QAAS,CAAC/P,KAC9C,IAAI/c,EAAe7nD,EAAO4kE,IAE9B,MAEXuM,EAAY39E,UAAUohF,sBAAwB,WAC1CzkF,KAAKyoD,SAAS,CAAExgD,KAAM,8BAE1B+4E,EAAY39E,UAAUixD,cAAgB,WAClCt0D,KAAKyoD,SAAS,CAAExgD,KAAM,sBAAuB8vD,WAAW,KAI5DipB,EAAY39E,UAAUqhF,aAAe,SAAUC,GAC3C,IAAIhjE,EAAOoiD,GAAe4gB,GACtBhjE,GACA3hB,KAAKo6C,QAAQ,iBAAkB,CAAEz4B,KAAMA,KAGxCq/D,EAxYqB,GA2Y5B,GAA0B,WAG1B,SAAS4D,EAAS/8E,EAASyE,EAAK2C,GAC5BjP,KAAK6kF,SAAWh9E,EAChB7H,KAAKujF,KAAOj3E,EACZtM,KAAKwjF,UAAYv0E,GAAY,KAyajC,OApaA21E,EAASvhF,UAAUyhF,QAAU,SAAU/hF,EAAMa,GACzC,IAAIgE,EAAIvF,EACR,GAAIU,KAAQ00E,GACR51C,QAAQC,KAAK,6FAGZ,GAAa,OAAT/+B,EACLa,EAAM2zE,GAAwBx0E,GAAMa,GACpC5D,KAAK+kF,OAAO,CACRh4B,cAAe,CAAEiL,SAAUp0D,UAG9B,GAAIb,KAAQw0E,GACb3zE,EAAM2zE,GAAwBx0E,GAAMa,GACpC5D,KAAK+kF,OAAO,CACRh4B,eAAgBnlD,EAAK,GAAIA,EAAG7E,GAAQa,EAAKgE,UAG5C,GAAI7E,KAAQwzE,GAAmB,CAChC,IAAI3rE,EAAK2rE,GAAkBxzE,GAAMa,GACpB,UAATb,EACA6H,EAAK,CAAEmD,gBAAiBnK,EAAKkK,YAAalK,GAE5B,aAATb,EACL6H,EAAK,CAAE4rE,cAAe5yE,EAAK2Q,iBAAkB3Q,IAGvCvB,EAAK,GAAIA,EAAGU,GAAQa,EAA1BgH,EAA+BvI,GAEnCrC,KAAK+kF,OAAO,CACRh4B,cAAe,CAAEniD,GAAIA,UAIzBi3B,QAAQC,KAAK,uBAAyB/+B,EAAO,oCAGrD6hF,EAASvhF,UAAU2hF,gBAAkB,SAAUjiF,EAAMa,GACjD,IAAIgE,EACJ5H,KAAK+kF,OAAO,CACRpN,eAAgB/vE,EAAK,GAAIA,EAAG7E,GAAQa,EAAKgE,MAGjDg9E,EAASvhF,UAAU4hF,SAAW,SAAUxM,EAAYj1E,QAChC,IAAZA,IAAsBA,EAAU,IACpC,IAAIkc,EAAU1f,KAAK6kF,SAASnlE,QACxBzN,EAAQyN,EAAQ65D,aAAad,GACjC,GAAIxmE,GAASjS,KAAKwjF,UAAW,CACzB,IAAIz1B,EAAgB/tD,KAAKwjF,UAAUnvE,MAC/Bu5C,EAAaurB,GAAUprB,EAAc97C,MAAOA,EAAOyN,EAASlc,EAAQ0hF,aACpE1hF,EAAQ2hF,iBACRnlF,KAAK+kF,OAAO,CAAE/4B,WAAY4B,IAG1B5tD,KAAK+kF,OAAO,CAAEn3B,WAAYA,MAItCg3B,EAASvhF,UAAU+hF,OAAS,SAAUC,EAAU7hF,QAC5B,IAAZA,IAAsBA,EAAU,IACpC,IACI0O,EADAwN,EAAU1f,KAAK6kF,SAASnlE,QAE5B,IAAgB,MAAZ2lE,IACAnzE,EAAMwN,EAAQ65D,aAAa8L,GACtBnzE,KAILlS,KAAKwjF,UACL,GAAItxE,EAAK,CACL,IAAI27C,EAAWsrB,GAAUn5E,KAAKwjF,UAAUnvE,MAAMnC,IAAKA,EAAKwN,EAASlc,EAAQ0hF,aACzEllF,KAAK+kF,OAAO,CAAEl3B,SAAUA,SAGxB7tD,KAAK+kF,OAAO,CAAEh4B,cAAe,CAAEC,QAAQ,MAInD43B,EAASvhF,UAAUiiF,SAAW,SAAU7M,EAAY4M,EAAU7hF,QAC1C,IAAZA,IAAsBA,EAAU,IACpC,IAGI0O,EAHAwN,EAAU1f,KAAK6kF,SAASnlE,QACxBqtC,EAAgB,CAAExgD,OAAQ/I,EAAQ+I,QAClC0F,EAAQyN,EAAQ65D,aAAad,GAEjC,GAAKxmE,IAGW,MAAZozE,IACAnzE,EAAMwN,EAAQ65D,aAAa8L,GACtBnzE,KAILlS,KAAKwjF,UAAW,CAChB,IAAIz1B,EAAgB/tD,KAAKwjF,UAAUnvE,OAGZ,IAAnB7Q,EAAQ+I,SACRwhD,EAAgB8qB,GAAuB9qB,IAE3C,IAAIH,EAAaurB,GAAUprB,EAAc97C,MAAOA,EAAOyN,EAASlc,EAAQ0hF,aACxE,GAAIhzE,EAAK,CACL,IAAI27C,EAAWsrB,GAAUprB,EAAc77C,IAAKA,EAAKwN,EAASlc,EAAQ0hF,aAC9D1gB,GAAe5W,EAAYC,GAC3B7tD,KAAK+kF,OAAO,CAAE/4B,WAAY4B,EAAYb,cAAeA,IAGrD/sD,KAAK+kF,OAAO,CAAEn3B,WAAYA,EAAYC,SAAUA,EAAUd,cAAeA,SAI7EA,EAAcC,QAAS,EACvBhtD,KAAK+kF,OAAO,CAAE/4B,WAAY4B,EAAYb,cAAeA,MAIjE63B,EAASvhF,UAAUkiF,UAAY,SAAUtC,GACrC,IAAIl3B,EAAQgY,GAAekf,GACvBl3B,GACA/rD,KAAK+kF,OAAO,CAAEn3B,WAAY7B,KAGlC64B,EAASvhF,UAAUmiF,QAAU,SAAUvC,GACnC,IAAIl3B,EAAQgY,GAAekf,GACvBl3B,GACA/rD,KAAK+kF,OAAO,CAAEl3B,SAAU9B,KAGhC64B,EAASvhF,UAAUoiF,UAAY,SAAUxC,GACrC,IAAIl3B,EAAQgY,GAAekf,GACvBl3B,GACA/rD,KAAK+kF,OAAO,CAAE/4B,WAAYD,KAGlC64B,EAASvhF,UAAUqiF,UAAY,SAAUn5E,EAAQ/I,QAC7B,IAAZA,IAAsBA,EAAU,IACpC,IAAIupD,EAAgB,CAAExgD,OAAQA,GAC1B44E,EAAmB3hF,EAAQ2hF,iBACP,MAApBA,IACAA,EAAmBnlF,KAAK6kF,SAASrhF,QAAQypD,wBAEzCjtD,KAAKujF,KAAKh3E,SAAWA,IACrBwgD,EAAcC,OAASm4B,GAE3BnlF,KAAK+kF,OAAO,CAAEh4B,cAAeA,KAEjC63B,EAASvhF,UAAU4kE,YAAc,SAAU0d,GACvC,IAAIjmE,EAAU1f,KAAK6kF,SAASnlE,QACxBzQ,EAAWjP,KAAKwjF,UAChB7mB,EAAY0P,GAAgBsZ,GAChC,OAAI3lF,KAAKujF,KAAKv2B,OACHttC,EAAQuoD,YAAYh5D,EAASoF,MAAMpC,MAAOhD,EAASoF,MAAMnC,IAAKyqD,EAAW,CAC5EgE,eAAgB1xD,EAAS0xD,eACzBC,aAAc3xD,EAAS2xD,eAGxBlhD,EAAQla,OAAOyJ,EAASoF,MAAMpC,MAAO0qD,EAAW,CACnDic,UAAW3pE,EAAS0xD,kBAG5BikB,EAASvhF,UAAU0hF,OAAS,SAAU36B,GAClC,IAAIn7C,EAAWjP,KAAKwjF,UACpB,GAAIv0E,EAAU,CACV,IAAI3C,EAAMtM,KAAKujF,KACXqC,EAAY5lF,KAAK6kF,SACjBgB,EAAeD,EAAU/7B,iBAAiBhrC,WAC1CyqC,EAAiB6rB,GAAkB0Q,EAAc52E,EAASD,YAC1D0vE,EAAkB,CAClB,GAAI,CACAtyE,QAAS,GACToqE,eAAe,EACfjiE,kBAAkB,EAClBwiE,YAAa,GACbL,QAAS,KACTM,OAAQ,GACRjpE,gBAAiB,GACjBD,YAAa,GACb+oE,UAAW,GACXluE,WAAY,KAGpB2gD,EAAiBm1B,GAA0Bn1B,EAAgBo1B,EAAiBt0B,EAAUw7B,GACtF,IAAIl6B,EAAW,IAAIk5B,EAASgB,EAAWt5E,EAAK2C,GAC5CjP,KAAKujF,KAAOj6B,EAAegC,KAAKh/C,EAAIi/C,OACpCvrD,KAAKwjF,UAAYl6B,EAAekC,UAAUv8C,EAASD,YACnD42E,EAAUn9B,SAAS,CACfxgD,KAAM,eACN4W,WAAYyqC,IAEhBs8B,EAAUzrC,QAAQC,QAAQ,cAAe,CACrCsR,SAAUA,EACV19C,MAAOhO,KACP2rD,cAAes4B,GAAe36B,EAAgBs8B,EAAW32E,GACzD28C,OAAQ,WACJg6B,EAAUn9B,SAAS,CACfxgD,KAAM,eACN4W,WAAYgnE,SAMhCjB,EAASvhF,UAAUu0D,OAAS,WACxB,IAAI/vD,EAAU7H,KAAK6kF,SACfiB,EAAUhC,GAAgB9jF,MAC9B6H,EAAQ4gD,SAAS,CACbxgD,KAAM,gBACN4W,WAAYinE,IAEhBj+E,EAAQsyC,QAAQC,QAAQ,cAAe,CACnCpsC,MAAOhO,KACP2rD,cAAe,GACfC,OAAQ,WACJ/jD,EAAQ4gD,SAAS,CACbxgD,KAAM,eACN4W,WAAYinE,QAK5BjsD,OAAOqB,eAAe0pD,EAASvhF,UAAW,SAAU,CAChD84B,IAAK,WACD,IAAIo0B,EAAWvwD,KAAKujF,KAAKhzB,SACzB,OAAIA,EACO,IAAImH,EAAe13D,KAAK6kF,SAAU7kF,KAAK6kF,SAASh7B,iBAAiB2M,aAAajG,IAElF,MAEXp1B,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,QAAS,CAC/C84B,IAAK,WACD,OAAOn8B,KAAKwjF,UACRxjF,KAAK6kF,SAASnlE,QAAQkC,OAAO5hB,KAAKwjF,UAAUnvE,MAAMpC,OAClD,MAERkpB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,MAAO,CAC7C84B,IAAK,WACD,OAAQn8B,KAAKwjF,WAAaxjF,KAAKujF,KAAKv2B,OAChChtD,KAAK6kF,SAASnlE,QAAQkC,OAAO5hB,KAAKwjF,UAAUnvE,MAAMnC,KAClD,MAERipB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,WAAY,CAClD84B,IAAK,WACD,IAAIltB,EAAWjP,KAAKwjF,UACpB,OAAIv0E,EACOjP,KAAK6kF,SAASnlE,QAAQ4nC,UAAUr4C,EAASoF,MAAMpC,MAAO,CACzDs1C,SAAUvnD,KAAKujF,KAAKh3E,OACpBqsE,UAAW3pE,EAAS0xD,iBAGrB,IAEXxlC,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,SAAU,CAChD84B,IAAK,WACD,IAAIltB,EAAWjP,KAAKwjF,UACpB,OAAIv0E,GAAYjP,KAAKujF,KAAKv2B,OACfhtD,KAAK6kF,SAASnlE,QAAQ4nC,UAAUr4C,EAASoF,MAAMnC,IAAK,CACvDq1C,SAAUvnD,KAAKujF,KAAKh3E,OACpBqsE,UAAW3pE,EAAS2xD,eAGrB,IAEXzlC,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,KAAM,CAG5C84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAKvrB,UACpC78B,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,UAAW,CACjD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK5N,SACpCx6C,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,SAAU,CAChD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAKh3E,QACpC4uB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,QAAS,CAC/C84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAKn/E,OACpC+2B,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,MAAO,CAC7C84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK9sB,KACpCt7B,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,UAAW,CACjD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAGwB,SAAW,QAElD+uB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,gBAAiB,CACvD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAG4rE,eACvCr7C,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,mBAAoB,CAC1D84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAG2J,kBACvC4mB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,aAAc,CACpD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAGmsE,YAAY,IAAM,MACzD57C,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,UAAW,CACjD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAG8rE,SACvCv7C,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,QAAS,CAC/C84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAGosE,OAAO,IAAM,MACpD77C,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,kBAAmB,CACzD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAGmD,iBACvCotB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,cAAe,CACrD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAGkD,aACvCqtB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,YAAa,CACnD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAGisE,WACvC17C,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,aAAc,CAEpD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK34E,GAAGjC,YACvCwyB,YAAY,EACZC,cAAc,IAElBvB,OAAOqB,eAAe0pD,EAASvhF,UAAW,gBAAiB,CACvD84B,IAAK,WAAc,OAAOn8B,KAAKujF,KAAK5L,eACpCx8C,YAAY,EACZC,cAAc,IAElBwpD,EAASvhF,UAAU0iF,cAAgB,SAAUt+B,QACxB,IAAbA,IAAuBA,EAAW,IACtC,IAAIn7C,EAAMtM,KAAKujF,KACX34E,EAAK0B,EAAI1B,GACThD,EAAK5H,KAAMy0D,EAAW7sD,EAAG6sD,SAAUC,EAAS9sD,EAAG8sD,OAC/C3qC,EAAM,GAiDV,OAhDIzd,EAAIlI,QACJ2lB,EAAI3lB,MAAQkI,EAAIlI,OAEhBqwD,IACA1qC,EAAI9X,MAAQwiD,GAEZC,IACA3qC,EAAI7X,IAAMwiD,GAEVpoD,EAAI0rD,WACJjuC,EAAIpe,GAAKW,EAAI0rD,UAEb1rD,EAAIqpE,UACJ5rD,EAAI4rD,QAAUrpE,EAAIqpE,SAElBrpE,EAAImqD,MACJ1sC,EAAI0sC,IAAMnqD,EAAImqD,KAEd7rD,EAAGwB,SAA0B,SAAfxB,EAAGwB,UACjB2d,EAAI3d,QAAUxB,EAAGwB,SAIjBq7C,EAASu+B,eAAiBp7E,EAAGmD,iBAAmBnD,EAAGmD,kBAAoBnD,EAAGkD,YAC1Eic,EAAI6sD,MAAQhsE,EAAGmD,iBAGXnD,EAAGmD,kBACHgc,EAAIhc,gBAAkBnD,EAAGmD,iBAEzBnD,EAAGkD,cACHic,EAAIjc,YAAclD,EAAGkD,cAGzBlD,EAAGisE,YACH9sD,EAAI8sD,UAAYjsE,EAAGisE,WAEnBjsE,EAAGjC,WAAW1C,SACd8jB,EAAIphB,WAAaiC,EAAGjC,YAEpBkxB,OAAO0G,KAAKj0B,EAAIqrE,eAAe1xE,SAC3BwhD,EAASw+B,sBACT,eAASl8D,EAAKzd,EAAIqrE,eAGlB5tD,EAAI4tD,cAAgBrrE,EAAIqrE,eAGzB5tD,GAEX66D,EAASvhF,UAAU6iF,OAAS,WACxB,OAAOlmF,KAAK+lF,iBAETnB,EA/akB,GAib7B,SAASd,GAAgB74B,GACrB,IAAIrjD,EAAIvF,EACJiK,EAAM2+C,EAASs4B,KACft0E,EAAWg8C,EAASu4B,UACxB,MAAO,CACHl4B,MAAO1jD,EAAK,GAAIA,EAAG0E,EAAIi/C,OAASj/C,EAAK1E,GACrC4jD,UAAWv8C,GACJ5M,EAAK,GAAIA,EAAG4M,EAASD,YAAcC,EAAU5M,GAAM,IAGlE,SAAS4hF,GAAeplE,EAAYhX,EAASs+E,GACzC,IAAI76B,EAAOzsC,EAAWysC,KAAME,EAAY3sC,EAAW2sC,UAC/C46B,EAAY,GACZC,EAAoBF,EAAkBA,EAAgBn3E,WAAa,GACvE,IAAK,IAAIrD,KAAM6/C,EAAW,CACtB,IAAIv8C,EAAWu8C,EAAU7/C,GACrBW,EAAMg/C,EAAKr8C,EAASs8C,OACpBt8C,EAASD,aAAeq3E,GACxBD,EAAUp+E,KAAK,IAAI,GAASH,EAASyE,EAAK2C,IAGlD,OAAOm3E,EAGX,IAAIE,GAAyB,GAC7B,SAASC,GAAuBxjF,EAAMyjF,GAClCF,GAAuBvjF,GAAQyjF,EAEnC,SAASC,GAAqB1jF,GAC1B,OAAO,IAAIujF,GAAuBvjF,GAEtC,IAAI2jF,GAAyC,WACzC,SAASA,KAiBT,OAfAA,EAAwBrjF,UAAUunE,cAAgB,SAAU1uC,GACxD,OAAOA,EAAEqiC,kBAEbmoB,EAAwBrjF,UAAUwnE,eAAiB,SAAU3uC,GACzD,OAAOA,EAAEsiC,eAEbkoB,EAAwBrjF,UAAUynE,aAAe,SAAU5uC,GACvD,OAAOA,EAAEuiC,cAEbioB,EAAwBrjF,UAAUsjF,cAAgB,SAAUC,GACxD,OAAOvpB,GAAeupB,IAE1BF,EAAwBrjF,UAAUsoE,cAAgB,SAAU1M,GACxD,OAAO7B,GAAe6B,IAEnBynB,EAlBiC,GAoB5CH,GAAuB,UAAWG,IAElC,IAAIG,GAAS,oHACb,SAAShhF,GAAMqvC,GACX,IAAI3Y,EAAIsqD,GAAO/wC,KAAKZ,GACpB,GAAI3Y,EAAG,CACH,IAAI0iC,EAAS,IAAI1uC,KAAKA,KAAKgwC,IAAIl+B,OAAO9F,EAAE,IAAKA,EAAE,GAAK8F,OAAO9F,EAAE,IAAM,EAAI,EAAG8F,OAAO9F,EAAE,IAAM,GAAI8F,OAAO9F,EAAE,IAAM,GAAI8F,OAAO9F,EAAE,IAAM,GAAI8F,OAAO9F,EAAE,KAAO,GAAIA,EAAE,IAA6B,IAAvB8F,OAAO,KAAO9F,EAAE,KAAc,IAC7L,GAAIikC,GAAYvB,GAAS,CACrB,IAAIwG,EAAiB,KAKrB,OAJIlpC,EAAE,MACFkpC,GAA4B,MAAVlpC,EAAE,KAAe,EAAI,IAA2B,GAArB8F,OAAO9F,EAAE,KAAO,GACzD8F,OAAO9F,EAAE,KAAO,KAEjB,CACH0iC,OAAQA,EACR0Z,mBAAoBp8C,EAAE,GACtBkpC,eAAgBA,IAI5B,OAAO,KAGX,IAAIqhB,GAAyB,WACzB,SAASA,EAAQr/B,GACb,IAAIkiB,EAAW3pE,KAAK2pE,SAAWliB,EAASkiB,SACpCod,EAA+B,UAAbpd,GAAqC,QAAbA,EAC1CliB,EAASu/B,mBAAqBD,IAC9B/mF,KAAKgnF,kBAAoB,IAAIv/B,EAASu/B,kBAAkBrd,IAE5D3pE,KAAKinF,iBAAmBnwE,SAASiwE,GAAmB/mF,KAAKgnF,mBACzDhnF,KAAKqoE,eAAiBoe,GAAqBh/B,EAAS4gB,gBACpDroE,KAAKwpE,OAAS/hB,EAAS+hB,OACvBxpE,KAAKknF,QAAUz/B,EAAS+hB,OAAO75D,KAAKuvD,IACpCl/D,KAAKmnF,QAAU1/B,EAAS+hB,OAAO75D,KAAKwvD,IACG,QAAnC1X,EAASsmB,wBACT/tE,KAAKknF,QAAU,EACflnF,KAAKmnF,QAAU,GAEc,kBAAtB1/B,EAAS2pB,WAChBpxE,KAAKknF,QAAUz/B,EAAS2pB,UAEkB,oBAAnC3pB,EAASsmB,wBAChB/tE,KAAKonF,eAAiB3/B,EAASsmB,uBAEnC/tE,KAAKspE,SAAgC,MAArB7hB,EAAS6hB,SAAmB7hB,EAAS6hB,SAAW7hB,EAAS+hB,OAAOhmE,QAAQ8lE,SACxFtpE,KAAKupE,cAAyC,MAAzB9hB,EAAS8hB,aAAuB9hB,EAAS8hB,aAAe9hB,EAAS+hB,OAAOhmE,QAAQ+lE,eAAiBvpE,KAAKspE,SAC3HtpE,KAAKmsE,aAAe1kB,EAAS0kB,aAC7BnsE,KAAK+oE,iBAAmBthB,EAASshB,iBAwSrC,OArSA+d,EAAQzjF,UAAUk2E,aAAe,SAAU30C,GACvC,IAAIqzB,EAAOj4D,KAAK04E,iBAAiB9zC,GACjC,OAAa,OAATqzB,EACO,KAEJA,EAAKgH,QAEhB6nB,EAAQzjF,UAAU09E,gBAAkB,WAChC,OAAI/gF,KAAKinF,iBACEjnF,KAAKqnF,mBAAkB,IAAI92D,MAAO/b,WAItC6oD,GAAewC,GAAiB,IAAItvC,QAE/Cu2D,EAAQzjF,UAAUq1E,iBAAmB,SAAU9zC,GAC3C,GAAqB,kBAAVA,EACP,OAAO5kC,KAAK6F,MAAM++B,GAEtB,IAAIq6B,EAAS,KAab,MAZqB,kBAAVr6B,EACPq6B,EAASj/D,KAAKqnF,kBAAkBziD,GAE3BA,aAAiBrU,MACtBqU,EAAQA,EAAMpwB,UACTisD,MAAM77B,KACPq6B,EAASj/D,KAAKqnF,kBAAkBziD,KAG/BxhC,MAAMqe,QAAQmjB,KACnBq6B,EAAS5B,GAAez4B,IAEb,OAAXq6B,GAAoBuB,GAAYvB,GAG7B,CAAEA,OAAQA,EAAQ0Z,mBAAmB,EAAOC,UAAW,MAFnD,MAIfkO,EAAQzjF,UAAUwC,MAAQ,SAAUi2B,GAChC,IAAIyuC,EAAQ1kE,GAAMi2B,GAClB,GAAc,OAAVyuC,EACA,OAAO,KAEX,IAAItL,EAASsL,EAAMtL,OACf2Z,EAAY,KAShB,OAR6B,OAAzBrO,EAAM9E,iBACFzlE,KAAKinF,iBACLhoB,EAASj/D,KAAKqnF,kBAAkBpoB,EAAOzqD,UAAmC,GAAvB+1D,EAAM9E,eAAsB,KAG/EmT,EAAYrO,EAAM9E,gBAGnB,CAAExG,OAAQA,EAAQ0Z,kBAAmBpO,EAAMoO,kBAAmBC,UAAWA,IAGpFkO,EAAQzjF,UAAUikF,QAAU,SAAUroB,GAClC,OAAOj/D,KAAKqoE,eAAeuC,cAAc3L,IAE7C6nB,EAAQzjF,UAAU08D,SAAW,SAAUd,GACnC,OAAOj/D,KAAKqoE,eAAewC,eAAe5L,IAG9C6nB,EAAQzjF,UAAUisB,IAAM,SAAU2vC,EAAQ8F,GACtC,IAAIt8C,EAAIzoB,KAAKqoE,eAAesD,cAAc1M,GAK1C,OAJAx2C,EAAE,IAAMs8C,EAAI5G,MACZ11C,EAAE,IAAMs8C,EAAIrkD,OACZ+H,EAAE,IAAMs8C,EAAIzkD,KACZmI,EAAE,IAAMs8C,EAAIn/C,aACL5lB,KAAKqoE,eAAese,cAAcl+D,IAE7Cq+D,EAAQzjF,UAAUugE,SAAW,SAAU3E,EAAQ8F,GAC3C,IAAIt8C,EAAIzoB,KAAKqoE,eAAesD,cAAc1M,GAK1C,OAJAx2C,EAAE,IAAMs8C,EAAI5G,MACZ11C,EAAE,IAAMs8C,EAAIrkD,OACZ+H,EAAE,IAAMs8C,EAAIzkD,KACZmI,EAAE,IAAMs8C,EAAIn/C,aACL5lB,KAAKqoE,eAAese,cAAcl+D,IAE7Cq+D,EAAQzjF,UAAUq/E,SAAW,SAAUzjB,EAAQjkC,GAC3C,IAAIvS,EAAIzoB,KAAKqoE,eAAesD,cAAc1M,GAE1C,OADAx2C,EAAE,IAAMuS,EACDh7B,KAAKqoE,eAAese,cAAcl+D,IAE7Cq+D,EAAQzjF,UAAUkkF,UAAY,SAAUtoB,EAAQjkC,GAC5C,IAAIvS,EAAIzoB,KAAKqoE,eAAesD,cAAc1M,GAE1C,OADAx2C,EAAE,IAAMuS,EACDh7B,KAAKqoE,eAAese,cAAcl+D,IAG7Cq+D,EAAQzjF,UAAU+1E,eAAiB,SAAU3b,EAAIC,GAC7C,IAAI2K,EAAiBroE,KAAKqoE,eAC1B,OAAI/J,GAASb,KAAQa,GAASZ,IAC1B2K,EAAeyC,aAAarN,KAAQ4K,EAAeyC,aAAapN,IAChE2K,EAAewC,eAAepN,KAAQ4K,EAAewC,eAAenN,GAC7D2K,EAAeuC,cAAclN,GAAM2K,EAAeuC,cAAcnN,GAEpE,MAEXqpB,EAAQzjF,UAAUg2E,gBAAkB,SAAU5b,EAAIC,GAC9C,IAAI2K,EAAiBroE,KAAKqoE,eAC1B,OAAI/J,GAASb,KAAQa,GAASZ,IAC1B2K,EAAeyC,aAAarN,KAAQ4K,EAAeyC,aAAapN,GACxD2K,EAAewC,eAAenN,GAAM2K,EAAewC,eAAepN,GACE,IAAvE4K,EAAeuC,cAAclN,GAAM2K,EAAeuC,cAAcnN,IAElE,MAGXqpB,EAAQzjF,UAAUmkF,kBAAoB,SAAU/pB,EAAIC,GAChD,IAAI1iC,EAAIh7B,KAAKo5E,eAAe3b,EAAIC,GAChC,OAAU,OAAN1iC,EACO,CAAElf,KAAM,OAAQrZ,MAAOu4B,IAElCA,EAAIh7B,KAAKq5E,gBAAgB5b,EAAIC,GACnB,OAAN1iC,EACO,CAAElf,KAAM,QAASrZ,MAAOu4B,IAEnCA,EAAIojC,GAAeX,EAAIC,GACb,OAAN1iC,EACO,CAAElf,KAAM,OAAQrZ,MAAOu4B,IAElCA,EAAIqjC,GAAcZ,EAAIC,GACZ,OAAN1iC,EACO,CAAElf,KAAM,MAAOrZ,MAAOu4B,IAEjCA,EAAI4iC,GAAUH,EAAIC,GACdZ,EAAM9hC,GACC,CAAElf,KAAM,OAAQrZ,MAAOu4B,IAElCA,EAAI6iC,GAAYJ,EAAIC,GAChBZ,EAAM9hC,GACC,CAAElf,KAAM,SAAUrZ,MAAOu4B,IAEpCA,EAAI8iC,GAAYL,EAAIC,GAChBZ,EAAM9hC,GACC,CAAElf,KAAM,SAAUrZ,MAAOu4B,GAE7B,CAAElf,KAAM,cAAerZ,MAAOi7D,EAAGlpD,UAAYipD,EAAGjpD,kBAE3DsyE,EAAQzjF,UAAUokF,sBAAwB,SAAUhqB,EAAIC,EAAIxhC,GAExD,IAAIwrD,EACJ,OAAIxrD,EAAEiiC,QACFupB,EAAO1nF,KAAKo5E,eAAe3b,EAAIC,GAClB,OAATgqB,GACOA,EAAO5iB,GAAa5oC,GAG/BA,EAAExb,SACFgnE,EAAO1nF,KAAKq5E,gBAAgB5b,EAAIC,GACnB,OAATgqB,GACOA,EAAOziB,GAAc/oC,GAGhCA,EAAE5b,OACFonE,EAAOrpB,GAAcZ,EAAIC,GACZ,OAATgqB,GACOA,EAAO1iB,GAAY9oC,IAG1BwhC,EAAGlpD,UAAYipD,EAAGjpD,WAAa0wD,GAAUhpC,IAIrD4qD,EAAQzjF,UAAUskF,QAAU,SAAUprD,EAAGzgB,GACrC,MAAa,SAATA,EACO9b,KAAK4nF,YAAYrrD,GAEf,UAATzgB,EACO9b,KAAK6nF,aAAatrD,GAEhB,SAATzgB,EACO9b,KAAK2f,YAAY4c,GAEf,QAATzgB,EACOmiD,GAAW1hC,GAET,SAATzgB,EACO4iD,GAAYniC,GAEV,WAATzgB,EACO8iD,GAAcriC,GAEZ,WAATzgB,EACOgjD,GAAcviC,GAElB,MAEXuqD,EAAQzjF,UAAUukF,YAAc,SAAUrrD,GACtC,OAAOv8B,KAAKqoE,eAAese,cAAc,CACrC3mF,KAAKqoE,eAAeuC,cAAcruC,MAG1CuqD,EAAQzjF,UAAUwkF,aAAe,SAAUtrD,GACvC,OAAOv8B,KAAKqoE,eAAese,cAAc,CACrC3mF,KAAKqoE,eAAeuC,cAAcruC,GAClCv8B,KAAKqoE,eAAewC,eAAetuC,MAG3CuqD,EAAQzjF,UAAUsc,YAAc,SAAU4c,GACtC,OAAOv8B,KAAKqoE,eAAese,cAAc,CACrC3mF,KAAKqoE,eAAeuC,cAAcruC,GAClCv8B,KAAKqoE,eAAewC,eAAetuC,GACnCA,EAAEkiC,cAAiBliC,EAAEqjC,YAAc5/D,KAAKknF,QAAU,GAAK,KAI/DJ,EAAQzjF,UAAUgmE,kBAAoB,SAAUpK,GAC5C,OAAIj/D,KAAKonF,eACEpnF,KAAKonF,eAAepnF,KAAK4hB,OAAOq9C,IAEpCD,GAAWC,EAAQj/D,KAAKknF,QAASlnF,KAAKmnF,UAGjDL,EAAQzjF,UAAUmC,OAAS,SAAUy5D,EAAQtC,EAAWmrB,GAEpD,YADoB,IAAhBA,IAA0BA,EAAc,IACrCnrB,EAAUn3D,OAAO,CACpBy5D,OAAQA,EACRwG,eAAyC,MAAzBqiB,EAAYlP,UACxBkP,EAAYlP,UACZ54E,KAAK+nF,gBAAgB9oB,IAC1Bj/D,OAEP8mF,EAAQzjF,UAAU4kE,YAAc,SAAUh2D,EAAOC,EAAKyqD,EAAWmrB,GAK7D,YAJoB,IAAhBA,IAA0BA,EAAc,IACxCA,EAAYE,iBACZ91E,EAAMqrD,EAAMrrD,GAAM,IAEfyqD,EAAUsL,YAAY,CACzBhJ,OAAQhtD,EACRwzD,eAA8C,MAA9BqiB,EAAYnnB,eACxBmnB,EAAYnnB,eACZ3gE,KAAK+nF,gBAAgB91E,IAC1B,CACCgtD,OAAQ/sD,EACRuzD,eAA4C,MAA5BqiB,EAAYlnB,aACxBknB,EAAYlnB,aACZ5gE,KAAK+nF,gBAAgB71E,IAC1BlS,KAAM8nF,EAAY/e,mBAMzB+d,EAAQzjF,UAAUikD,UAAY,SAAU2X,EAAQgpB,QACvB,IAAjBA,IAA2BA,EAAe,IAC9C,IAAIxiB,EAAiB,KASrB,OARKwiB,EAAaC,qBAEVziB,EAD0B,MAA1BwiB,EAAarP,UACIqP,EAAarP,UAGb54E,KAAK+nF,gBAAgB9oB,IAGvCuG,GAAevG,EAAQwG,EAAgBwiB,EAAa1gC,WAG/Du/B,EAAQzjF,UAAUgkF,kBAAoB,SAAUp+B,GAC5C,MAAsB,UAAlBjpD,KAAK2pE,SACEtM,GAAewC,GAAiB,IAAItvC,KAAK04B,KAE9B,QAAlBjpD,KAAK2pE,UAAuB3pE,KAAKgnF,kBAG9B3pB,GAAer9D,KAAKgnF,kBAAkBmB,iBAAiBl/B,IAFnD,IAAI14B,KAAK04B,IAIxB69B,EAAQzjF,UAAU0kF,gBAAkB,SAAUxrD,GAC1C,MAAsB,UAAlBv8B,KAAK2pE,UACGtJ,GAAiBjD,GAAe7gC,IAAI6rD,oBAE1B,QAAlBpoF,KAAK2pE,SACE,EAEP3pE,KAAKgnF,kBACEhnF,KAAKgnF,kBAAkBqB,eAAejrB,GAAe7gC,IAEzD,MAGXuqD,EAAQzjF,UAAUue,OAAS,SAAU2a,EAAGq8C,GACpC,MAAsB,UAAlB54E,KAAK2pE,SACEtJ,GAAiBjD,GAAe7gC,IAErB,QAAlBv8B,KAAK2pE,SACE,IAAIp5C,KAAKgM,EAAE/nB,WAEjBxU,KAAKgnF,kBAGH,IAAIz2D,KAAKgM,EAAE/nB,UAC6C,IAA3DxU,KAAKgnF,kBAAkBqB,eAAejrB,GAAe7gC,IAAa,IAH3D,IAAIhM,KAAKgM,EAAE/nB,WAAaokE,GAAa,KAK7CkO,EAjUiB,GAoUxBwB,GAAgB,GAEhBC,GAAwB,CACxBC,KAAM,KACN74E,KAAM,CACFuvD,IAAK,EACLC,IAAK,GAETsL,UAAW,MACXkJ,WAAY,CACR4O,KAAM,OACNC,KAAM,OACNC,SAAU,YACVE,SAAU,YACVpjB,KAAM,OACNqjB,MAAO,QACPze,MAAO,QACPx0D,KAAM,OACNy0D,IAAK,MACLqkB,KAAM,QAEVnf,SAAU,IACVC,aAAc,OACdyI,UAAW,QACXC,SAAU,OACVC,UAAW,QACX3uD,WAAY,UACZ0tD,aAAc,OACdY,aAAc,wBAEd6W,GAAgB,eAAS,eAAS,GAAIH,IAAwB,CAG9D3U,YAAa,CACT2O,KAAM,cACNC,KAAM,UACNI,MAAO,SAAUjP,EAAY73D,GACzB,MAAiB,QAATA,EACF,QACA,QAAU63D,IAErB7B,SAAU,UAAWC,YAAa,WAAYb,aAAc,SAAUyX,GACrE,MAAO,QAAUA,EAAW,eAA8B,IAAbA,EAAiB,GAAK,QAE3E,SAASC,GAAmBC,GAMxB,IALA,IAAIC,EAAcD,EAAmB5iF,OAAS,EAAI4iF,EAAmB,GAAGL,KAAO,KAC3EO,EAAgBT,GAAcz/E,OAAOggF,GACrCG,EAAe,CACfC,GAAIP,IAECv+E,EAAK,EAAG++E,EAAkBH,EAAe5+E,EAAK++E,EAAgBjjF,OAAQkE,IAAM,CACjF,IAAIg/E,EAAYD,EAAgB/+E,GAChC6+E,EAAaG,EAAUX,MAAQW,EAEnC,MAAO,CACHxlF,IAAKqlF,EACLF,YAAaA,GAGrB,SAASM,GAAYC,EAAeC,GAChC,MAA6B,kBAAlBD,GAA+BjmF,MAAMqe,QAAQ4nE,GAGjDE,GAAYF,EAAeC,GAFvBE,GAAYH,EAAcb,KAAM,CAACa,EAAcb,MAAOa,GAIrE,SAASE,GAAYE,EAASH,GAC1B,IAAItf,EAAQ,GAAGnhE,OAAO4gF,GAAW,IAC7BnV,EAAMoV,GAAe1f,EAAOsf,IAAcZ,GAC9C,OAAOc,GAAYC,EAASzf,EAAOsK,GAEvC,SAASoV,GAAe1f,EAAOsf,GAC3B,IAAK,IAAItjF,EAAI,EAAGA,EAAIgkE,EAAM/jE,OAAQD,GAAK,EAEnC,IADA,IAAIukE,EAAQP,EAAMhkE,GAAGy8B,oBAAoBjpB,MAAM,KACtCg8B,EAAI+0B,EAAMtkE,OAAQuvC,EAAI,EAAGA,GAAK,EAAG,CACtC,IAAIm0C,EAAWpf,EAAMxjC,MAAM,EAAGyO,GAAG1sC,KAAK,KACtC,GAAIwgF,EAAUK,GACV,OAAOL,EAAUK,GAI7B,OAAO,KAEX,SAASH,GAAYC,EAASzf,EAAOsK,GACjC,IAAIsV,EAAS/oB,GAAW,CAAC0nB,GAAuBjU,GAAM,CAAC,sBAChDsV,EAAOpB,KACd,IAAI74E,EAAOi6E,EAAOj6E,KAElB,cADOi6E,EAAOj6E,KACP,CACH85E,QAASA,EACTzf,MAAOA,EACPr6D,KAAMA,EACN66D,mBAAoB,IAAIV,KAAK+f,aAAaJ,GAC1CjmF,QAASomF,GAqCjB,IAkFIE,GAlFAC,GAAe,CACft5B,UAAW,QACXu5B,QAAS,QACTC,WAAY,CAAC,EAAG,EAAG,EAAG,EAAG,GACzB79E,QAAS,qBACTzD,WAAY,kBACZgtE,QAAS,kBAKb,SAASuU,GAAmBtlD,EAAO/8B,GAC/B,OAAO0sE,GAAY4V,GAAavlD,GAAQ,KAAM/8B,GAElD,SAASsiF,GAAavlD,GAClB,IAAIwlD,EAeJ,OAbIA,GADU,IAAVxlD,EACU,CAAC,IAENxhC,MAAMqe,QAAQmjB,GAETA,EAAMthC,QAAO,SAAU+mF,GAAU,OAAOA,EAAOJ,cAEnC,kBAAVrlD,GAAsBA,EACxB,CAACA,GAGD,GAEdwlD,EAAUA,EAAQzmF,KAAI,SAAU0mF,GAAU,OAAQ,cAAD,CAAU,eAAS,GAAIN,IAAeM,MAChFD,EAGX,SAASE,GAAgB5lC,EAAO9wC,GAC5B,OAAO8wC,EAAM5sC,MAAQlE,EAAKkE,MACtB4sC,EAAM5sC,KAAOlE,EAAKmE,OAClB2sC,EAAMvsC,KAAOvE,EAAKuE,KAClBusC,EAAMvsC,IAAMvE,EAAKiG,OAGzB,SAAS0wE,GAAeC,EAAOC,GAC3B,IAAI1gE,EAAM,CACNjS,KAAMuB,KAAKI,IAAI+wE,EAAM1yE,KAAM2yE,EAAM3yE,MACjCC,MAAOsB,KAAKwM,IAAI2kE,EAAMzyE,MAAO0yE,EAAM1yE,OACnCI,IAAKkB,KAAKI,IAAI+wE,EAAMryE,IAAKsyE,EAAMtyE,KAC/B0B,OAAQR,KAAKwM,IAAI2kE,EAAM3wE,OAAQ4wE,EAAM5wE,SAEzC,OAAIkQ,EAAIjS,KAAOiS,EAAIhS,OAASgS,EAAI5R,IAAM4R,EAAIlQ,QAC/BkQ,EAaf,SAAS2gE,GAAehmC,EAAO9wC,GAC3B,MAAO,CACHkE,KAAMuB,KAAKwM,IAAIxM,KAAKI,IAAIirC,EAAM5sC,KAAMlE,EAAKkE,MAAOlE,EAAKmE,OACrDI,IAAKkB,KAAKwM,IAAIxM,KAAKI,IAAIirC,EAAMvsC,IAAKvE,EAAKuE,KAAMvE,EAAKiG,SAI1D,SAAS8wE,GAAc/2E,GACnB,MAAO,CACHkE,MAAOlE,EAAKkE,KAAOlE,EAAKmE,OAAS,EACjCI,KAAMvE,EAAKuE,IAAMvE,EAAKiG,QAAU,GAIxC,SAAS+wE,GAAWC,EAAQC,GACxB,MAAO,CACHhzE,KAAM+yE,EAAO/yE,KAAOgzE,EAAOhzE,KAC3BK,IAAK0yE,EAAO1yE,IAAM2yE,EAAO3yE,KAKjC,SAAS4yE,KAIL,OAH0B,MAAtBjB,KACAA,GAAqBkB,MAElBlB,GAEX,SAASkB,KAGL,GAAwB,qBAAbhrD,SACP,OAAO,EAEX,IAAIjwB,EAAKiwB,SAASo3B,cAAc,OAChCrnD,EAAGlC,MAAMowC,SAAW,WACpBluC,EAAGlC,MAAMsK,IAAM,MACfpI,EAAGlC,MAAMiK,KAAO,MAChB/H,EAAGk7E,UAAY,+CACfl7E,EAAGg0B,cAAc,SAASl2B,MAAMuL,OAAS,QACzCrJ,EAAGg0B,cAAc,OAAOl2B,MAAMuL,OAAS,OACvC4mB,SAASC,KAAKC,YAAYnwB,GAC1B,IAAIm7E,EAAMn7E,EAAGg0B,cAAc,OACvBonD,EAAWD,EAAIvkE,aAAe,EAElC,OADAqZ,SAASC,KAAKI,YAAYtwB,GACnBo7E,EAGX,IAAIC,GAAoBzW,KACpB0W,GAA0B,WAC1B,SAASA,IACLrrF,KAAKsrF,oBAAsBjlB,GAAQrmE,KAAKurF,sBACxCvrF,KAAKwrF,mBAAqBnlB,GAAQrmE,KAAKyrF,gBACvCzrF,KAAK0rF,gBAAkBrlB,GAAQrmE,KAAK2rF,kBACpC3rF,KAAK4rF,kBAAoBvlB,GAAQrmE,KAAK6rF,oBACtC7rF,KAAK6a,eAAiBwrD,GAAQrmE,KAAK8rF,mBACnC9rF,KAAK8a,iBAAmBurD,GAAQrmE,KAAK8rF,mBACrC9rF,KAAK+rF,gBAAkB,GA2G3B,OAzGAV,EAAShoF,UAAU2tB,WAAa,SAAUlwB,GACtC,IAAIuG,EAAQrH,KACRgsF,EAAWhsF,KAAK4gB,WAAW9f,GAC3BmrF,EAAUjsF,KAAKsrF,oBAAoBxqF,EAAM+d,YACzCqtE,EAAiBlsF,KAAKwrF,mBAAmB1qF,EAAM8d,eAC/CutE,EAAensF,KAAK4rF,kBAAkB9qF,EAAMge,aAAcmtE,GAC1DG,EAAcpsF,KAAK0rF,gBAAgB5qF,EAAM+d,WAAYotE,GACrDI,EAAarsF,KAAK6a,eAAe/Z,EAAMgO,WACvCw9E,EAAetsF,KAAK8a,iBAAiBha,EAAMiO,aAC3CiiB,EAAa,GAEjB,IAAK,IAAIpwB,KADTZ,KAAK+rF,gBAAkBxqB,GAAQyqB,GAAU,SAAUO,EAAM3rF,GAAO,OAAOyG,EAAM0kF,gBAAgBnrF,IAAQylE,GAAQmmB,OAC7FR,EAAU,CACtB,IAAIS,EAAUT,EAASprF,GACnBie,EAAautE,EAAYxrF,IAAQwqF,GACjCsB,EAAe1sF,KAAK+rF,gBAAgBnrF,GACxCowB,EAAWpwB,GAAO,CACd+d,cAAe8tE,EAAQ9tE,eAAiB7d,EAAM6d,cAC9CC,cAAestE,EAAetrF,IAAQ,KACtCie,WAAYA,EACZC,aAAc4tE,EAAa5rF,EAAMge,aAAa,IAAK2tE,EAAQ7hF,GAAIuhF,EAAavrF,IAC5EuO,eAAgB0P,EAAW2sC,UAAU1qD,EAAMqO,gBAAkBrO,EAAMqO,eAAiB,GACpFL,UAAWu9E,EAAWzrF,IAAQ,KAC9BmO,YAAau9E,EAAa1rF,IAAQ,MAG1C,OAAOowB,GAEXq6D,EAAShoF,UAAUooF,eAAiB,SAAU1uE,GAC1C,IAAI4vE,EAAY,GAChB,GAAI5vE,EAEA,IADA,IAAIwjB,EAAOvgC,KAAK8gB,mBAAmB/D,GAC1B5S,EAAK,EAAGyiF,EAASrsD,EAAMp2B,EAAKyiF,EAAO3mF,OAAQkE,IAAM,CACtD,IAAIvJ,EAAMgsF,EAAOziF,GACjBwiF,EAAU/rF,GAAOmc,EAGzB,OAAO4vE,GAEXtB,EAAShoF,UAAUkoF,qBAAuB,SAAU1sE,GAChD,IAAIxX,EAAQrH,KACZ,OAAOuhE,GAAQ1iD,EAAWysC,MAAM,SAAUtqC,GAAY,OAAO3Z,EAAM0Z,mBAAmBC,OAE1FqqE,EAAShoF,UAAUsoF,iBAAmB,SAAU9sE,EAAYotE,GACxD,IAAI3gC,EAAOzsC,EAAWysC,KAAME,EAAY3sC,EAAW2sC,UAC/CqhC,EAAc,GAClB,IAAK,IAAIthC,KAASD,EACd,IAAK,IAAInhD,EAAK,EAAGvC,EAAKqkF,EAAQ1gC,GAAQphD,EAAKvC,EAAG3B,OAAQkE,IAAM,CACxD,IAAIvJ,EAAMgH,EAAGuC,GACR0iF,EAAYjsF,KACbisF,EAAYjsF,GAAO+zE,MAEvBkY,EAAYjsF,GAAK0qD,KAAKC,GAASD,EAAKC,GAG5C,IAAK,IAAIv8C,KAAcw8C,EAEnB,IADA,IAAIv8C,EAAWu8C,EAAUx8C,GAChB3M,EAAK,EAAGpC,EAAKgsF,EAAQh9E,EAASs8C,OAAQlpD,EAAKpC,EAAGgG,OAAQ5D,IAAM,CAC7DzB,EAAMX,EAAGoC,GACTwqF,EAAYjsF,KACZisF,EAAYjsF,GAAK4qD,UAAUx8C,GAAcC,GAIrD,OAAO49E,GAEXxB,EAAShoF,UAAUwoF,mBAAqB,SAAU/sE,EAAcmtE,GAC5D,IAAIa,EAAc,GAClB,IAAK,IAAIvhC,KAASzsC,EACd,GAAIysC,EACA,IAAK,IAAIphD,EAAK,EAAGvC,EAAKqkF,EAAQ1gC,GAAQphD,EAAKvC,EAAG3B,OAAQkE,IAAM,CACxD,IAAIvJ,EAAMgH,EAAGuC,GACR2iF,EAAYlsF,KACbksF,EAAYlsF,GAAO,IAEvBksF,EAAYlsF,GAAK2qD,GAASzsC,EAAaysC,GAInD,OAAOuhC,GAEXzB,EAAShoF,UAAUyoF,kBAAoB,SAAUzhC,GAC7C,IAAI0iC,EAAc,GAClB,GAAI1iC,EAAa,CACb,IAAI2iC,EAAmBhtF,KAAK2rF,iBAAiBthC,EAAYC,eAAgBtqD,KAAKurF,qBAAqBlhC,EAAYC,iBAE3G2iC,EAAqBjtF,KAAKurF,qBAAqBlhC,EAAYE,eAC3D2iC,EAAkBltF,KAAK2rF,iBAAiBthC,EAAYE,cAAe0iC,GACnEE,EAAW,SAAUvsF,GAChBmsF,EAAYnsF,KACbmsF,EAAYnsF,GAAO,CACf0pD,eAAgB0iC,EAAiBpsF,IAAQwqF,GACzC7gC,cAAe2iC,EAAgBtsF,IAAQwqF,GACvCtgF,QAASu/C,EAAYv/C,WAIjC,IAAK,IAAIlK,KAAOosF,EACZG,EAASvsF,GAEb,IAAK,IAAIA,KAAOssF,EACZC,EAASvsF,GAGjB,OAAOmsF,GAEJ1B,EAnHkB,GAqH7B,SAASmB,GAAmBY,EAAOC,EAAelB,GAC9C,IAAImB,EAAY,GACZF,GACAE,EAAUtlF,KAAKolF,GAEfC,GACAC,EAAUtlF,KAAKqlF,GAEnB,IAAIE,EAAQ,CACR,GAAIrW,GAAgBoW,IAKxB,OAHInB,GACA,eAASoB,EAAOpB,GAEboB,EAGX,SAASC,GAAYviF,EAAME,EAAY4Q,EAAS7Q,GAC5C,MAAO,CACHg0D,IAAKj0D,EAAK20D,YACVzvD,WAAY2G,QAAQ5L,IAAgBmvE,GAAoBnvE,EAAY27C,YAAa57C,IACjFwiF,QAAS32E,QAAQ5L,IAAgBmvE,GAAoBnvE,EAAYqU,aAActU,IAC/E0C,QAASmJ,QAAQ3L,GAAckvE,GAAoBlvE,EAAYF,IAC/DwC,OAAQqJ,QAAQiF,EAAW9Q,EAAO8Q,IAAW5Q,GAAcF,EAAOE,EAAW8G,OAC7EvE,SAAUoJ,QAAQiF,EAAW9Q,EAAO8Q,IAAW5Q,GAAcF,GAAQE,EAAW+G,MAGxF,SAASw7E,GAAiBz1B,EAAMj0C,GAC5B,IAAIrb,EAAa,CACb,SACA,UAAYu0D,EAAQjF,EAAKiH,MAoB7B,OAlBIjH,EAAK9nD,WACLxH,EAAWX,KAAK,oBAGZiwD,EAAKtqD,UACLhF,EAAWX,KAAK,gBAChBW,EAAWX,KAAKgc,EAAMC,SAAS,WAE/Bg0C,EAAKxqD,QACL9E,EAAWX,KAAK,eAEhBiwD,EAAKvqD,UACL/E,EAAWX,KAAK,iBAEhBiwD,EAAKw1B,SACL9kF,EAAWX,KAAK,iBAGjBW,EAyBX,IAAIglF,GAAathB,GAAgB,CAAE9M,KAAM,UAAW4E,MAAO,OAAQC,IAAK,YACpEwpB,GAAcvhB,GAAgB,CAAE18D,KAAM,SAC1C,SAASk+E,GAAkBhmF,EAAS64E,EAAYmB,EAAUiM,QACrC,IAAbjM,IAAuBA,EAAW,YACnB,IAAfiM,IAAyBA,GAAa,GAC1C,IAAIpuE,EAAU7X,EAAQ6X,QAASlc,EAAUqE,EAAQrE,QAASqkD,EAAchgD,EAAQggD,YAC5ER,EAAU3nC,EAAQla,OAAOk7E,EAAyB,SAAbmB,EAAsB+L,GAAcD,IAC7E,GAAInqF,EAAQutE,SAAU,CAClB,IAAIgd,EAAYruE,EAAQkC,OAAO8+D,GAC3BsN,EAAoB,SAAUn0C,GAC9B,IAAIo0C,EAA4B,QAAbpM,EAAqBr+E,EAAQ+oE,gBAC/B,SAAbsV,EAAsBr+E,EAAQipE,iBAAmB,KACzB,oBAAjBwhB,EACPA,EAAa1qF,KAAKskD,EAAanoC,EAAQkC,OAAO8+D,GAAa7mC,IAG/B,kBAAjBo0C,IACPpM,EAAWoM,GAEfpmC,EAAYk6B,OAAOrB,EAAYmB,KAGvC,OAAO,eAAS,CAAEz9E,MAAOs4D,EAAmBl5D,EAAQuuE,YAAa,CAAC1qB,EAAS0mC,GAAY1mC,GAAU,eAAgB,IAAOymC,EAClHpzB,EAAqBszB,GACrB,CAAE7mE,QAAS6mE,IAErB,MAAO,CAAE,aAAc3mC,GAG3B,IA0BI6mC,GA1BAC,GAAwB,KAC5B,SAASC,KAIL,OAH8B,OAA1BD,KACAA,GAAwBE,MAErBF,GAEX,SAASE,KACL,IAAIC,EAAUtuD,SAASo3B,cAAc,OACrC6B,EAAWq1B,EAAS,CAChBrwC,SAAU,WACV9lC,KAAM,IACNL,KAAM,EACNy2E,OAAQ,EACRC,QAAS,EACTC,SAAU,SACVhkB,UAAW,QAEf6jB,EAAQrD,UAAY,cACpBjrD,SAASC,KAAKC,YAAYouD,GAC1B,IAAII,EAAUJ,EAAQK,WAClB5kE,EAAM2kE,EAAQn1E,wBAAwBzB,KAAOw2E,EAAQ/0E,wBAAwBzB,KAEjF,OADAogD,EAAco2B,GACPvkE,EAIX,SAAS6kE,KAIL,OAHKV,KACDA,GAAmBW,MAEhBX,GAEX,SAASW,KACL,IAAI9+E,EAAKiwB,SAASo3B,cAAc,OAChCrnD,EAAGlC,MAAM4gF,SAAW,SACpB1+E,EAAGlC,MAAMowC,SAAW,WACpBluC,EAAGlC,MAAMsK,IAAM,UACfpI,EAAGlC,MAAMiK,KAAO,UAChBkoB,SAASC,KAAKC,YAAYnwB,GAC1B,IAAIga,EAAM+kE,GAA4B/+E,GAEtC,OADAiwB,SAASC,KAAKI,YAAYtwB,GACnBga,EAGX,SAAS+kE,GAA4B/+E,GACjC,MAAO,CACHyqB,EAAGzqB,EAAG4W,aAAe5W,EAAGiM,aACxBwkB,EAAGzwB,EAAGg/E,YAAch/E,EAAGwI,aAI/B,SAASy2E,GAAaj/E,EAAIk/E,QACH,IAAfA,IAAyBA,GAAa,GAC1C,IAAIC,EAAgBzvD,OAAO0vD,iBAAiBp/E,GACxCq/E,EAAalrB,SAASgrB,EAAcG,gBAAiB,KAAO,EAC5DC,EAAcprB,SAASgrB,EAAcK,iBAAkB,KAAO,EAC9DC,EAAYtrB,SAASgrB,EAAcO,eAAgB,KAAO,EAC1DC,EAAexrB,SAASgrB,EAAcS,kBAAmB,KAAO,EAChEC,EAAqBd,GAA4B/+E,GACjD8/E,EAAqBD,EAAmBpvD,EAAI4uD,EAAaE,EACzDQ,EAAkBF,EAAmBp1D,EAAIg1D,EAAYE,EACrD3lE,EAAM,CACNqlE,WAAYA,EACZE,YAAaA,EACbE,UAAWA,EACXE,aAAcA,EACdI,gBAAiBA,EACjBC,cAAe,EACfC,eAAgB,GAcpB,OAZI5B,MAAyD,QAA5Bc,EAAczkB,UAC3C1gD,EAAIgmE,cAAgBF,EAGpB9lE,EAAIimE,eAAiBH,EAErBZ,IACAllE,EAAIkmE,YAAc/rB,SAASgrB,EAAce,YAAa,KAAO,EAC7DlmE,EAAImmE,aAAehsB,SAASgrB,EAAcgB,aAAc,KAAO,EAC/DnmE,EAAIomE,WAAajsB,SAASgrB,EAAciB,WAAY,KAAO,EAC3DpmE,EAAIqmE,cAAgBlsB,SAASgrB,EAAckB,cAAe,KAAO,GAE9DrmE,EAEX,SAASsmE,GAAiBtgF,EAAIugF,EAAiBC,QACnB,IAApBD,IAA8BA,GAAkB,GACpD,IAAIE,EAAYD,EAAuBxgF,EAAGwJ,wBAA0Bk3E,GAAY1gF,GAC5E2gF,EAAQ1B,GAAaj/E,EAAIugF,GACzBvmE,EAAM,CACNjS,KAAM04E,EAAU14E,KAAO44E,EAAMtB,WAAasB,EAAMX,cAChDh4E,MAAOy4E,EAAUz4E,MAAQ24E,EAAMpB,YAAcoB,EAAMV,eACnD73E,IAAKq4E,EAAUr4E,IAAMu4E,EAAMlB,UAC3B31E,OAAQ22E,EAAU32E,OAAS62E,EAAMhB,aAAegB,EAAMZ,iBAQ1D,OANIQ,IACAvmE,EAAIjS,MAAQ44E,EAAMT,YAClBlmE,EAAIhS,OAAS24E,EAAMR,aACnBnmE,EAAI5R,KAAOu4E,EAAMP,WACjBpmE,EAAIlQ,QAAU62E,EAAMN,eAEjBrmE,EAEX,SAAS0mE,GAAY1gF,GACjB,IAAI6D,EAAO7D,EAAGwJ,wBACd,MAAO,CACHzB,KAAMlE,EAAKkE,KAAO2nB,OAAOE,YACzBxnB,IAAKvE,EAAKuE,IAAMsnB,OAAOI,YACvB9nB,MAAOnE,EAAKmE,MAAQ0nB,OAAOE,YAC3B9lB,OAAQjG,EAAKiG,OAAS4lB,OAAOI,aAGrC,SAAS8wD,GAAyB5gF,GAG9B,IAFA,IAAI6gF,EAAkBC,GAAmB9gF,GACrC6D,EAAO7D,EAAGwJ,wBACLpP,EAAK,EAAG2mF,EAAoBF,EAAiBzmF,EAAK2mF,EAAkB7qF,OAAQkE,IAAM,CACvF,IAAI4mF,EAAiBD,EAAkB3mF,GACnC6mF,EAAezG,GAAe32E,EAAMm9E,EAAex3E,yBACvD,IAAIy3E,EAIA,OAAO,KAHPp9E,EAAOo9E,EAMf,OAAOp9E,EAWX,SAASi9E,GAAmB9gF,GACxB,IAAIkhF,EAAU,GACd,MAAOlhF,aAAcg2C,YAAa,CAC9B,IAAImpC,EAAgBzvD,OAAO0vD,iBAAiBp/E,GAC5C,GAA+B,UAA3Bm/E,EAAcjxC,SACd,MAEA,gBAAkB9+B,KAAK+vE,EAAcT,SAAWS,EAAcgC,UAAYhC,EAAciC,YACxFF,EAAQjpF,KAAK+H,GAEjBA,EAAKA,EAAGqwB,WAEZ,OAAO6wD,EAOX,SAASG,GAAYt1B,EAAM0jB,EAASC,GAGhC,IAAI4R,GAAa,EACbC,EAAiB,WACZD,IACDA,GAAa,EACb7R,EAAQl4E,MAAMtH,KAAMuH,aAGxBgqF,EAAiB,WACZF,IACDA,GAAa,EACT5R,GACAA,EAAQn4E,MAAMtH,KAAMuH,aAI5BwiB,EAAM+xC,EAAKw1B,EAAgBC,GAC3BxnE,GAA2B,oBAAbA,EAAIynE,MAClBznE,EAAIynE,KAAKF,EAAgBC,GAIjC,IAAIE,GAAyB,WACzB,SAASA,IACLzxF,KAAK0xF,SAAW,GAChB1xF,KAAK2xF,YAAc,KA+BvB,OA7BAF,EAAQpuF,UAAUuuF,eAAiB,SAAUD,GACzC3xF,KAAK2xF,YAAcA,GAEvBF,EAAQpuF,UAAUwuF,WAAa,SAAUruF,GACrCxD,KAAKwD,QAAUA,GAEnBiuF,EAAQpuF,UAAUtC,GAAK,SAAUkH,EAAM89B,GACnC+rD,GAAU9xF,KAAK0xF,SAAUzpF,EAAM89B,IAEnC0rD,EAAQpuF,UAAUurD,IAAM,SAAU3mD,EAAM89B,GACpCgsD,GAAe/xF,KAAK0xF,SAAUzpF,EAAM89B,IAExC0rD,EAAQpuF,UAAU+2C,QAAU,SAAUnyC,GAElC,IADA,IAAIwiB,EAAO,GACFtgB,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCsgB,EAAKtgB,EAAK,GAAK5C,UAAU4C,GAK7B,IAHA,IAAI6nF,EAAmBhyF,KAAK0xF,SAASzpF,IAAS,GAC1CgqF,EAAgBjyF,KAAKwD,SAAWxD,KAAKwD,QAAQyE,GAC7CypF,EAAW,GAAG7oF,OAAOopF,GAAiB,GAAID,GACrCpqF,EAAK,EAAGsqF,EAAaR,EAAU9pF,EAAKsqF,EAAWjsF,OAAQ2B,IAAM,CAClE,IAAIm+B,EAAUmsD,EAAWtqF,GACzBm+B,EAAQz+B,MAAMtH,KAAK2xF,YAAalnE,KAGxCgnE,EAAQpuF,UAAUk6E,YAAc,SAAUt1E,GACtC,OAAO6O,QAAS9W,KAAK0xF,SAASzpF,IAASjI,KAAK0xF,SAASzpF,GAAMhC,QACtDjG,KAAKwD,SAAWxD,KAAKwD,QAAQyE,KAE/BwpF,EAlCiB,GAoC5B,SAASK,GAAUzwB,EAAMp5D,EAAM89B,IAC1Bs7B,EAAKp5D,KAAUo5D,EAAKp5D,GAAQ,KACxBD,KAAK+9B,GAEd,SAASgsD,GAAe1wB,EAAMp5D,EAAM89B,GAC5BA,EACIs7B,EAAKp5D,KACLo5D,EAAKp5D,GAAQo5D,EAAKp5D,GAAM3E,QAAO,SAAUw4D,GAAQ,OAAOA,IAAS/1B,aAI9Ds7B,EAAKp5D,GASpB,IAAIkqF,GAA+B,WAC/B,SAASA,EAAcz5E,EAAUgN,EAAK0sE,EAAcC,GAChDryF,KAAK0lB,IAAMA,EACX,IAAI4sE,EAAmBtyF,KAAKsyF,iBAAmB55E,EAASa,wBACpD64E,GACApyF,KAAKuyF,mBAAmBD,EAAiBx6E,MAEzCu6E,GACAryF,KAAKwyF,iBAAiBF,EAAiBn6E,KA+D/C,OA3DAg6E,EAAc9uF,UAAUkvF,mBAAqB,SAAUE,GAGnD,IAFA,IAAIx6E,EAAQ,GACRC,EAAS,GACJ/N,EAAK,EAAGvC,EAAK5H,KAAK0lB,IAAKvb,EAAKvC,EAAG3B,OAAQkE,IAAM,CAClD,IAAI4F,EAAKnI,EAAGuC,GACRyJ,EAAO7D,EAAGwJ,wBACdtB,EAAMjQ,KAAK4L,EAAKkE,KAAO26E,GACvBv6E,EAAOlQ,KAAK4L,EAAKmE,MAAQ06E,GAE7BzyF,KAAKiY,MAAQA,EACbjY,KAAKkY,OAASA,GAGlBi6E,EAAc9uF,UAAUmvF,iBAAmB,SAAUE,GAGjD,IAFA,IAAIv1E,EAAO,GACPC,EAAU,GACLjT,EAAK,EAAGvC,EAAK5H,KAAK0lB,IAAKvb,EAAKvC,EAAG3B,OAAQkE,IAAM,CAClD,IAAI4F,EAAKnI,EAAGuC,GACRyJ,EAAO7D,EAAGwJ,wBACd4D,EAAKnV,KAAK4L,EAAKuE,IAAMu6E,GACrBt1E,EAAQpV,KAAK4L,EAAKiG,OAAS64E,GAE/B1yF,KAAKmd,KAAOA,EACZnd,KAAKod,QAAUA,GAInB+0E,EAAc9uF,UAAUwZ,YAAc,SAAU81E,GAC5C,IAEI3sF,EAFA4B,EAAK5H,KAAMiY,EAAQrQ,EAAGqQ,MAAOC,EAAStQ,EAAGsQ,OACzCuN,EAAMxN,EAAMhS,OAEhB,IAAKD,EAAI,EAAGA,EAAIyf,EAAKzf,GAAK,EACtB,GAAI2sF,GAAgB16E,EAAMjS,IAAM2sF,EAAez6E,EAAOlS,GAClD,OAAOA,GAOnBmsF,EAAc9uF,UAAUyZ,WAAa,SAAU81E,GAC3C,IAEI5sF,EAFA4B,EAAK5H,KAAMmd,EAAOvV,EAAGuV,KAAMC,EAAUxV,EAAGwV,QACxCqI,EAAMtI,EAAKlX,OAEf,IAAKD,EAAI,EAAGA,EAAIyf,EAAKzf,GAAK,EACtB,GAAI4sF,GAAez1E,EAAKnX,IAAM4sF,EAAcx1E,EAAQpX,GAChD,OAAOA,GAMnBmsF,EAAc9uF,UAAUwvF,SAAW,SAAUC,GACzC,OAAO9yF,KAAKkY,OAAO46E,GAAa9yF,KAAKiY,MAAM66E,IAG/CX,EAAc9uF,UAAU0iB,UAAY,SAAUgtE,GAC1C,OAAO/yF,KAAKod,QAAQ21E,GAAY/yF,KAAKmd,KAAK41E,IAEvCZ,EAvEuB,GAgF9Ba,GAAkC,WAClC,SAASA,KA0BT,OAxBAA,EAAiB3vF,UAAUk8C,gBAAkB,WACzC,OAAOv/C,KAAKg/C,kBAAoBh/C,KAAKk/C,mBAEzC8zC,EAAiB3vF,UAAUo8C,iBAAmB,WAC1C,OAAOz/C,KAAK8+C,iBAAmB9+C,KAAKi/C,kBAExC+zC,EAAiB3vF,UAAU4vF,oBAAsB,WAC7C,OAAOjzF,KAAKu/C,kBAAoB,GAEpCyzC,EAAiB3vF,UAAU6vF,sBAAwB,WAC/C,OAAOlzF,KAAKy/C,mBAAqB,GAErCuzC,EAAiB3vF,UAAU6+C,YAAc,WACrC,OAAOliD,KAAKu+C,eAAiB,GAEjCy0C,EAAiB3vF,UAAU8+C,cAAgB,WACvC,OAAOniD,KAAKu+C,eAAiBv+C,KAAKu/C,mBAEtCyzC,EAAiB3vF,UAAU++C,cAAgB,WACvC,OAAOpiD,KAAKy+C,gBAAkB,GAElCu0C,EAAiB3vF,UAAUg/C,eAAiB,WACxC,OAAOriD,KAAKy+C,gBAAkBz+C,KAAKy/C,oBAEhCuzC,EA3B0B,GA6BjC,GAAyC,SAAU5rF,GAEnD,SAAS+rF,EAAwBpjF,GAC7B,IAAI1I,EAAQD,EAAO7D,KAAKvD,OAASA,KAEjC,OADAqH,EAAM0I,GAAKA,EACJ1I,EA0BX,OA9BA,eAAU8rF,EAAyB/rF,GAMnC+rF,EAAwB9vF,UAAUk7C,aAAe,WAC7C,OAAOv+C,KAAK+P,GAAGgT,WAEnBowE,EAAwB9vF,UAAUo7C,cAAgB,WAC9C,OAAOz+C,KAAK+P,GAAGyuC,YAEnB20C,EAAwB9vF,UAAUi8C,aAAe,SAAUnnC,GACvDnY,KAAK+P,GAAGgT,UAAY5K,GAExBg7E,EAAwB9vF,UAAUm8C,cAAgB,SAAU1nC,GACxD9X,KAAK+P,GAAGyuC,WAAa1mC,GAEzBq7E,EAAwB9vF,UAAUy7C,eAAiB,WAC/C,OAAO9+C,KAAK+P,GAAG8uC,aAEnBs0C,EAAwB9vF,UAAU27C,gBAAkB,WAChD,OAAOh/C,KAAK+P,GAAGgvC,cAEnBo0C,EAAwB9vF,UAAU67C,gBAAkB,WAChD,OAAOl/C,KAAK+P,GAAGiM,cAEnBm3E,EAAwB9vF,UAAU47C,eAAiB,WAC/C,OAAOj/C,KAAK+P,GAAGwI,aAEZ46E,EA/BiC,CAgC1CH,IACE,GAAwC,SAAU5rF,GAElD,SAASgsF,IACL,OAAkB,OAAXhsF,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KA0B/D,OA5BA,eAAUozF,EAAwBhsF,GAIlCgsF,EAAuB/vF,UAAUk7C,aAAe,WAC5C,OAAO9e,OAAOI,aAElBuzD,EAAuB/vF,UAAUo7C,cAAgB,WAC7C,OAAOhf,OAAOE,aAElByzD,EAAuB/vF,UAAUi8C,aAAe,SAAUtkB,GACtDyE,OAAO4zD,OAAO5zD,OAAOE,YAAa3E,IAEtCo4D,EAAuB/vF,UAAUm8C,cAAgB,SAAUxkB,GACvDyE,OAAO4zD,OAAOr4D,EAAGyE,OAAOI,cAE5BuzD,EAAuB/vF,UAAUy7C,eAAiB,WAC9C,OAAO9e,SAASq4B,gBAAgBxZ,aAEpCu0C,EAAuB/vF,UAAU27C,gBAAkB,WAC/C,OAAOhf,SAASq4B,gBAAgBtZ,cAEpCq0C,EAAuB/vF,UAAU67C,gBAAkB,WAC/C,OAAOlf,SAASq4B,gBAAgBr8C,cAEpCo3E,EAAuB/vF,UAAU47C,eAAiB,WAC9C,OAAOjf,SAASq4B,gBAAgB9/C,aAE7B66E,EA7BgC,CA8BzCJ,IAEE,GAAuB,WACvB,SAASM,EAAMzQ,GACP7iF,KAAKuzF,oBACLvzF,KAAKwzF,gBAAgB3Q,EAAgB7iF,KAAKuzF,qBAkDlD,OA/CAD,EAAMjwF,UAAUmwF,gBAAkB,SAAUC,GACxC,IAAIC,EACAC,EACJ,GAAgC,kBAArBF,GAAiCA,EAAkB,CAE1D,IAAKE,KADLD,EAAkB,eAAS,GAAI1zF,KAAK4zF,aACjBH,EACfC,EAAgBC,GAAc3zF,KAAK6zF,wBAAwBJ,EAAiBE,IAEhF3zF,KAAK4zF,YAAcF,OAEO,IAArBD,IACLzzF,KAAK4zF,YAAc,KAG3BN,EAAMjwF,UAAUwwF,wBAA0B,SAAUjrF,GAChD,IAAIgoD,EAAS5wD,KAAK8zF,mBAIlB,OAHIljC,GAAwC,IAA9BhoD,EAAUk1B,QAAQ8yB,KAC5BhoD,EAAYgoD,EAAShoD,GAElBA,GAEX0qF,EAAMjwF,UAAU4gB,SAAW,SAAUrjB,GACjC,OAAOZ,KAAK+zF,QAAQnzF,IAAQ,IAEhC0yF,EAAMjwF,UAAU2wF,aAAe,SAAUL,EAAY37E,GACjD,IAAIpP,EAOJ,OALIA,EADAoP,GAAShY,KAAKi0F,gBACFj0F,KAAKi0F,eAAeN,IAGpB3zF,KAAK4zF,YAAYD,GAE7B/qF,EACO5I,KAAKk0F,cAAgB,IAAMtrF,EAE/B,IAEX0qF,EAAMjwF,UAAU8wF,yBAA2B,SAAUC,GACjD,IAAIxrF,EACJ,OAAI5I,KAAKq0F,iCACLzrF,EAAYwrF,EAAkBp0F,KAAKq0F,gCAC/BzrF,GACO5I,KAAKk0F,cAAgB,IAAMl0F,KAAK6zF,wBAAwBjrF,GAGhE,IAEJ0qF,EArDe,GAuD1B,GAAMjwF,UAAU0wF,QAAU,GAC1B,GAAM1wF,UAAUuwF,YAAc,GAC9B,GAAMvwF,UAAU6wF,cAAgB,GAChC,GAAM7wF,UAAUywF,mBAAqB,GAErC,IAAI,GAAiC,WACjC,SAASQ,EAAgBC,EAAUp6C,EAAS0yB,EAAYC,GACpD,IAAIzlE,EAAQrH,KACZA,KAAKu0F,SAAWA,EAChBv0F,KAAKm6C,QAAUA,EACfn6C,KAAK6sE,WAAaA,EAClB7sE,KAAK8sE,gBAAkBA,EACvB9sE,KAAKkuB,oBAAsB,SAAUC,GACjC9mB,EAAMmtF,cAAgB,eAAS,GAAIntF,EAAMmtF,eAAiB,GAAIrmE,GAC9D9mB,EAAMotF,SAEVt6C,EAAQp5C,GAAG,iBAAkBf,KAAKkuB,qBAClCluB,KAAK00F,oBAuBT,OArBAJ,EAAgBjxF,UAAUurB,OAAS,WAC/B5uB,KAAKm6C,QAAQyU,IAAI,iBAAkB5uD,KAAKkuB,sBAE5ComE,EAAgBjxF,UAAUsrB,OAAS,SAAUgmE,GACrCA,GAAc30F,KAAK8sE,gBACnB9sE,KAAK00F,oBAGL10F,KAAKy0F,SAGbH,EAAgBjxF,UAAUqxF,kBAAoB,WAC1C10F,KAAKkuB,oBAAoB,CACrBvM,KAAM3hB,KAAK6sE,cAGnBynB,EAAgBjxF,UAAUoxF,MAAQ,WAC1Bz0F,KAAKw0F,eAAiBx0F,KAAKu0F,SAASv0F,KAAKw0F,iBACzCx0F,KAAKw0F,cAAgB,OAGtBF,EAnCyB,GAsChCM,GAAkBt9B,EAAc,IACpC,SAASu9B,GAAiBpsF,EAAU6Y,EAASwzE,EAAa12E,EAAsBsB,EAASsE,EAAOza,EAAak/C,EAAUoB,EAAgB1P,EAAS0N,EAAa5sC,EAA8BE,GACvL,MAAO,CACHuE,QAASA,EACTlc,QAASsxF,EACTvrF,YAAaA,EACb4wC,QAASA,EACTsO,SAAUA,EACVoB,eAAgBA,EAChBhC,YAAaA,EACbp/C,SAAUA,EACV6Y,QAASA,EACTlD,qBAAsBA,EACtB4F,MAAOA,EACPhM,MAAiC,QAA1B88E,EAAYrqB,UACnBsqB,iBAAkB,SAAUhvD,GACxBoU,EAAQp5C,GAAG,UAAWglC,IAE1BivD,oBAAqB,SAAUjvD,GAC3BoU,EAAQyU,IAAI,UAAW7oB,IAE3BrX,sBAAuB,SAAU6lE,GAC7B,OAAO,IAAI,GAAgBA,EAAUp6C,EAAS4pB,GAAe+wB,EAAYjoB,YAAaioB,EAAYhoB,kBAEtG7xD,6BAA8BA,EAC9BE,+BAAgCA,GAKxC,IAAI,GAA+B,SAAU/T,GAEzC,SAAS6tF,IACL,OAAkB,OAAX7tF,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAmB/D,OArBA,eAAUi1F,EAAe7tF,GAIzB6tF,EAAc5xF,UAAU6xF,sBAAwB,SAAUC,EAAWC,GAKjE,OAJIp1F,KAAKq1F,OAELxzD,QAAQyzD,IAAIzzB,GAAgBszB,EAAWn1F,KAAKc,OAAQ+gE,GAAgBuzB,EAAWp1F,KAAK6P,SAEhFiyD,GAAY9hE,KAAKc,MAAOq0F,EAAWn1F,KAAKu1F,gBAC3CzzB,GAAY9hE,KAAK6P,MAAOulF,EAAWp1F,KAAKw1F,gBAGjDP,EAAc5xF,UAAU4V,aAAe,SAAUw8E,GACxC3zB,GAAY9hE,KAAK6P,MAAO,eAAS,eAAS,GAAI7P,KAAK6P,OAAQ4lF,GAAWz1F,KAAKw1F,gBAC5Ex1F,KAAK4Y,SAAS68E,IAGtBR,EAAcS,iBAAmBA,GACjCT,EAAc16E,iBAAmBA,GACjC06E,EAAcU,YAAcf,GACrBK,EAtBuB,CAuBhC99B,GACF,GAAc9zD,UAAUkyF,aAAe,GACvC,GAAclyF,UAAUmyF,cAAgB,GACxC,IAAI,GAA+B,SAAUpuF,GAEzC,SAASwuF,IACL,OAAkB,OAAXxuF,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAG/D,OALA,eAAU41F,EAAexuF,GAIzBwuF,EAAcD,YAAcf,GACrBgB,EANuB,CAOhC,IACF,SAASF,GAAiBH,GACtB,IAAIl0B,EAAOxnC,OAAO4e,OAAOz4C,KAAKqD,UAAUkyF,cACxC,eAASl0B,EAAMk0B,GACfv1F,KAAKqD,UAAUkyF,aAAel0B,EAElC,SAAS9mD,GAAiBi7E,GACtB,IAAIn0B,EAAOxnC,OAAO4e,OAAOz4C,KAAKqD,UAAUmyF,eACxC,eAASn0B,EAAMm0B,GACfx1F,KAAKqD,UAAUmyF,cAAgBn0B,EAGnC,SAASw0B,GAAOl0F,EAAKgX,GACE,oBAARhX,EACPA,EAAIgX,GAEChX,IAELA,EAAIgX,QAAUA,GAWtB,IAAI,GAA+B,SAAUvR,GAEzC,SAAS0uF,IACL,IAAIzuF,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMk8B,IAAMw3B,IACL1zD,EAsBX,OA1BA,eAAUyuF,EAAe1uF,GAQzB0uF,EAAczyF,UAAUgZ,YAAc,aAEtCy5E,EAAczyF,UAAUqZ,SAAW,SAAUC,EAAcC,EAAam5E,EAASC,GAC7E,OAAO,MAIXF,EAAczyF,UAAU8mD,iBAAmB,SAAUp6C,GACjD,OAAQ/P,KAAKc,MAAMgO,YACd9O,KAAKc,MAAMiO,cACXopD,EAAepoD,EAAI,qBAE5B+lF,EAAczyF,UAAUqkD,kBAAoB,SAAU33C,GAClD,OAAQooD,EAAepoD,EAAI,iCACtBooD,EAAepoD,EAAI,mBACnBooD,EAAepoD,EAAI,qBACnBooD,EAAepoD,EAAI,gBAErB+lF,EA3BuB,CA4BhC,IAGF,SAASG,GAAarxD,GAClB,MAAO,CACHj5B,GAAIovD,IACJm7B,KAAMtxD,EAAMsxD,MAAQ,GACpBC,SAAUvxD,EAAMuxD,UAAY,GAC5BC,eAAgBxxD,EAAMwxD,gBAAkB,GACxCC,YAAa,GAAGxtF,OAAO+7B,EAAMyxD,aAAe,IAC5CzhB,cAAehwC,EAAMgwC,eAAiB,GACtCsD,qBAAsBtzC,EAAMszC,sBAAwB,GACpDkI,oBAAqBx7C,EAAMw7C,qBAAuB,GAClDnE,wBAAyBr3C,EAAMq3C,yBAA2B,GAC1DrxB,2BAA4BhmB,EAAMgmB,4BAA8B,GAChEo0B,yBAA0Bp6C,EAAMo6C,0BAA4B,GAC5Dx2B,0BAA2B5jB,EAAM4jB,2BAA6B,GAC9DtB,oBAAqBtiB,EAAMsiB,qBAAuB,GAClDq3B,mBAAoB35C,EAAM25C,oBAAsB,GAChDt+D,MAAO2kB,EAAM3kB,OAAS,GACtBq2E,sBAAuB1xD,EAAM0xD,uBAAyB,GACtDC,aAAc3xD,EAAM2xD,cAAgB,KACpCnmC,sBAAuBxrB,EAAMwrB,uBAAyB,GACtDomC,qBAAsB5xD,EAAM4xD,sBAAwB,GACpD1qC,sBAAuBlnB,EAAMknB,uBAAyB,GACtD6F,sBAAuB/sB,EAAM+sB,uBAAyB,GACtDC,qBAAsBhtB,EAAMgtB,sBAAwB,GACpD6kC,aAAc7xD,EAAM6xD,cAAgB,GACpCpW,gBAAiBz7C,EAAMy7C,iBAAmB,GAC1ClU,aAAcvnC,EAAMunC,aACpBvJ,eAAgBh+B,EAAMg+B,gBAAkB,GACxC8zB,mBAAoB9xD,EAAM8xD,mBAC1B12E,YAAa4kB,EAAM5kB,aAAe,GAClC6xC,oBAAqBjtB,EAAMitB,oBAC3B8kC,qBAAsB/xD,EAAM+xD,sBAAwB,GACpDntF,eAAgBo7B,EAAMp7B,gBAAkB,KACxCotF,oBAAqBhyD,EAAMgyD,qBAAuB,GAClD9kC,iBAAkBltB,EAAMktB,kBAAoB,GAC5CvgC,eAAgBqT,EAAMrT,gBAAkB,GACxCslE,gBAAiBjyD,EAAMiyD,iBAAmB,IAGlD,SAASC,GAAiBC,EAAYC,GAClC,IAAIC,EAAU,GACVC,EAAQ,CACRf,SAAU,GACVC,eAAgB,GAChBC,YAAa,GACbzhB,cAAe,GACfsD,qBAAsB,GACtBkI,oBAAqB,GACrBnE,wBAAyB,GACzBrxB,2BAA4B,GAC5Bo0B,yBAA0B,GAC1Bx2B,0BAA2B,GAC3BtB,oBAAqB,GACrBq3B,mBAAoB,GACpBt+D,MAAO,GACPq2E,sBAAuB,GACvBC,aAAc,KACdnmC,sBAAuB,GACvBomC,qBAAsB,GACtB1qC,sBAAuB,GACvB6F,sBAAuB,GACvBC,qBAAsB,GACtB6kC,aAAc,GACdpW,gBAAiB,GACjBlU,aAAc,KACdvJ,eAAgB,GAChB8zB,mBAAoB,KACpB12E,YAAa,GACb6xC,oBAAqB,KACrB8kC,qBAAsB,GACtBntF,eAAgB,KAChBotF,oBAAqB,GACrB9kC,iBAAkB,GAClBvgC,eAAgB,GAChBslE,gBAAiB,IAErB,SAASM,EAAQ7rC,GACb,IAAK,IAAInhD,EAAK,EAAGitF,EAAS9rC,EAAMnhD,EAAKitF,EAAOnxF,OAAQkE,IAAM,CACtD,IAAImC,EAAM8qF,EAAOjtF,GACZ8sF,EAAQ3qF,EAAIX,MACbsrF,EAAQ3qF,EAAIX,KAAM,EAClBwrF,EAAQ7qF,EAAI4pF,MACZgB,EAAQG,GAAaH,EAAO5qF,KAQxC,OAJIyqF,GACAI,EAAQJ,GAEZI,EAAQH,GACDE,EAEX,SAASI,KACL,IAEIC,EAFAC,EAAsB,GACtBC,EAAoB,GAExB,OAAO,SAAUC,EAAcV,GAM3B,OALKO,GAAiBtxB,GAAcyxB,EAAcF,IAAyBvxB,GAAc+wB,EAAYS,KACjGF,EAAeT,GAAiBY,EAAcV,IAElDQ,EAAsBE,EACtBD,EAAoBT,EACbO,GAGf,SAASF,GAAaM,EAAQC,GAC1B,MAAO,CACHzB,SAAUwB,EAAOxB,SAASttF,OAAO+uF,EAAOzB,UACxCC,eAAgBuB,EAAOvB,eAAevtF,OAAO+uF,EAAOxB,gBACpDC,YAAasB,EAAOtB,YAAYxtF,OAAO+uF,EAAOvB,aAC9CzhB,cAAe,eAAS,eAAS,GAAI+iB,EAAO/iB,eAAgBgjB,EAAOhjB,eACnEsD,qBAAsByf,EAAOzf,qBAAqBrvE,OAAO+uF,EAAO1f,sBAChEkI,oBAAqB,eAAS,eAAS,GAAIuX,EAAOvX,qBAAsBwX,EAAOxX,qBAC/EnE,wBAAyB0b,EAAO1b,wBAAwBpzE,OAAO+uF,EAAO3b,yBACtErxB,2BAA4B+sC,EAAO/sC,2BAA2B/hD,OAAO+uF,EAAOhtC,4BAC5Eo0B,yBAA0B2Y,EAAO3Y,yBAAyBn2E,OAAO+uF,EAAO5Y,0BACxEx2B,0BAA2BmvC,EAAOnvC,0BAA0B3/C,OAAO+uF,EAAOpvC,2BAC1EtB,oBAAqBywC,EAAOzwC,oBAAoBr+C,OAAO+uF,EAAO1wC,qBAC9Dq3B,mBAAoBoZ,EAAOpZ,mBAAmB11E,OAAO+uF,EAAOrZ,oBAC5Dt+D,MAAO,eAAS,eAAS,GAAI03E,EAAO13E,OAAQ23E,EAAO33E,OACnDq2E,sBAAuBqB,EAAOrB,sBAAsBztF,OAAO+uF,EAAOtB,uBAClEC,aAAcqB,EAAOrB,cAAgBoB,EAAOpB,aAC5CnmC,sBAAuBunC,EAAOvnC,sBAAsBvnD,OAAO+uF,EAAOxnC,uBAClEomC,qBAAsBmB,EAAOnB,qBAAqB3tF,OAAO+uF,EAAOpB,sBAChE1qC,sBAAuB6rC,EAAO7rC,sBAAsBjjD,OAAO+uF,EAAO9rC,uBAClE8F,qBAAsB+lC,EAAO/lC,qBAAqB/oD,OAAO+uF,EAAOhmC,sBAChED,sBAAuBgmC,EAAOhmC,sBAAsB9oD,OAAO+uF,EAAOjmC,uBAClE8kC,aAAc,eAAS,eAAS,GAAIkB,EAAOlB,cAAemB,EAAOnB,cACjEpW,gBAAiBsX,EAAOtX,gBAAgBx3E,OAAO+uF,EAAOvX,iBACtDlU,aAAcyrB,EAAOzrB,cAAgBwrB,EAAOxrB,aAC5CvJ,eAAgB+0B,EAAO/0B,eAAe/5D,OAAO+uF,EAAOh1B,gBACpD8zB,mBAAoBkB,EAAOlB,oBAAsBiB,EAAOjB,mBACxD12E,YAAa23E,EAAO33E,aAAe43E,EAAO53E,YAC1C6xC,oBAAqB8lC,EAAO9lC,qBAAuB+lC,EAAO/lC,oBAC1D8kC,qBAAsB,eAAS,eAAS,GAAIgB,EAAOhB,sBAAuBiB,EAAOjB,sBACjFntF,eAAgBouF,EAAOpuF,gBAAkBmuF,EAAOnuF,eAChDotF,oBAAqB,eAAS,eAAS,GAAIe,EAAOf,qBAAsBgB,EAAOhB,qBAC/E9kC,iBAAkB,eAAS,eAAS,GAAI6lC,EAAO7lC,kBAAmB8lC,EAAO9lC,kBACzEvgC,eAAgB,eAAS,eAAS,GAAIomE,EAAOpmE,gBAAiBqmE,EAAOrmE,gBACrEslE,gBAAiB,eAAS,eAAS,GAAIc,EAAOd,iBAAkBe,EAAOf,kBAI/E,IAAI,GAA+B,SAAUzvF,GAEzC,SAASywF,IACL,OAAkB,OAAXzwF,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAE/D,OAJA,eAAU63F,EAAezwF,GAIlBywF,EALuB,CAMhC,IA0BF,SAASC,GAAgBC,EAAgBC,GACrC,IACInW,EADAxgB,EAAO,GAEX,IAAKwgB,KAAYkW,EACbE,GAAcpW,EAAUxgB,EAAM02B,EAAgBC,GAElD,IAAKnW,KAAYmW,EACbC,GAAcpW,EAAUxgB,EAAM02B,EAAgBC,GAElD,OAAO32B,EAEX,SAAS42B,GAAcpW,EAAUxgB,EAAM02B,EAAgBC,GACnD,GAAI32B,EAAKwgB,GACL,OAAOxgB,EAAKwgB,GAEhB,IAAIqW,EAAUC,GAAatW,EAAUxgB,EAAM02B,EAAgBC,GAI3D,OAHIE,IACA72B,EAAKwgB,GAAYqW,GAEdA,EAEX,SAASC,GAAatW,EAAUxgB,EAAM02B,EAAgBC,GAClD,IAAII,EAAgBL,EAAelW,GAC/BwW,EAAiBL,EAAgBnW,GACjCyW,EAAY,SAAUv1F,GAAQ,OAASq1F,GAAyC,OAAxBA,EAAcr1F,GAAkBq1F,EAAcr1F,GACpGs1F,GAA2C,OAAzBA,EAAet1F,GAAkBs1F,EAAet1F,GAAQ,MAC5Ew1F,EAAeD,EAAU,aACzBE,EAAYF,EAAU,aACtBG,EAAW,KACf,GAAID,EAAW,CACX,GAAIA,IAAc3W,EACd,MAAM,IAAIp4E,MAAM,wDAEpBgvF,EAAWR,GAAcO,EAAWn3B,EAAM02B,EAAgBC,GAK9D,OAHKO,GAAgBE,IACjBF,EAAeE,EAASvxF,WAEvBqxF,EAGE,CACHtwF,KAAM45E,EACN36E,UAAWqxF,EACXG,SAAU,eAAS,eAAS,GAAKD,EAAWA,EAASC,SAAW,IAAON,EAAgBA,EAAcO,WAAa,IAClHC,UAAW,eAAS,eAAS,GAAKH,EAAWA,EAASG,UAAY,IAAOP,EAAiBA,EAAeM,WAAa,KAN/G,KAhEf,GAAct1F,UAAU0wF,QAAU,CAC9B8E,KAAM,oBACNC,gBAAiB,iBACjBC,YAAa,kBACbr8C,OAAQ,8BACRs8C,aAAc,oBAElB,GAAc31F,UAAU6wF,cAAgB,UACxC,GAAc7wF,UAAUuwF,YAAc,CAClCqF,MAAO,YACP1W,KAAM,uBACNC,KAAM,wBACNC,SAAU,wBACVE,SAAU,0BAEd,GAAct/E,UAAU4wF,eAAiB,CACrC1R,KAAM,wBACNC,KAAM,uBACNC,SAAU,yBACVE,SAAU,yBAEd,GAAct/E,UAAUkwF,mBAAqB,cAC7C,GAAclwF,UAAUgxF,+BAAiC,OACzD,GAAchxF,UAAUywF,mBAAqB,WAqD7C,IAAI,GAA4B,SAAU1sF,GAEtC,SAAS8xF,IACL,IAAI7xF,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAQhE,OAPAqH,EAAMqB,UAAYqO,IAClB1P,EAAMyI,aAAe,SAAUC,GAC3B8lF,GAAOxuF,EAAMqB,UAAWqH,GACpB1I,EAAMvG,MAAMsH,OACZytF,GAAOxuF,EAAMvG,MAAMsH,MAAO2H,IAG3B1I,EAQX,OAlBA,eAAU6xF,EAAY9xF,GAYtB8xF,EAAW71F,UAAUvD,OAAS,WAC1B,IAAIuH,EAAQrH,KACRc,EAAQd,KAAKc,MACb4gB,EAAY5gB,EAAM4gB,UACtB,OAAQ01C,EAAc,GAAW,CAAE11C,UAAWA,EAAWO,SAAUnhB,EAAMmhB,SAAUE,YAAarhB,EAAMqhB,YAAa/Z,MAAOpI,KAAK8P,eAAgB,SAAUpH,GAAa,OAAQ0uD,EAAc+hC,GAAa,CAAEz3E,UAAWA,EAAWlZ,QAAS1H,EAAM0H,QAAS8C,eAAgBxK,EAAMwK,eAAgB8tF,YAAa/xF,EAAMqB,YAAa,SAAU8C,EAAYC,GAAgB,OAAO3K,EAAMksB,SAAStkB,EAAW2wF,GAAoBv4F,EAAM6H,WAAY+Y,GAAYlW,EAAYC,UAEjcytF,EAnBoB,CAoB7B,IAGEI,GAA6BhiC,EAAc,GAC/C,SAAS6hC,GAAYr4F,GACjB,OAAQs2D,EAAckiC,GAA2Bl4E,SAAU,MAAM,SAAUm4E,GAAY,OAAQniC,EAAc,GAAkB,eAAS,CAAEmiC,SAAUA,GAAYz4F,OAEpK,IAAI,GAAkC,SAAUsG,GAE5C,SAASoyF,IACL,IAAInyF,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMmE,WAAauL,IACZ1P,EAuEX,OA3EA,eAAUmyF,EAAkBpyF,GAM5BoyF,EAAiBn2F,UAAUvD,OAAS,WAChC,OAAOE,KAAKc,MAAMksB,SAAShtB,KAAKwL,WAAYxL,KAAKoN,uBAErDosF,EAAiBn2F,UAAU8T,kBAAoB,WAC3CnX,KAAKy5F,uBAETD,EAAiBn2F,UAAUgU,mBAAqB,WAC5CrX,KAAKy5F,uBAETD,EAAiBn2F,UAAUojB,qBAAuB,WAC1CzmB,KAAK05F,mBAAqB15F,KAAK05F,kBAAkBx9C,SACjDl8C,KAAK05F,kBAAkBx9C,WAG/Bs9C,EAAiBn2F,UAAU+J,mBAAqB,WAC5C,IAAIssF,EAAoB15F,KAAK05F,kBACzBjuF,EAAezL,KAAK25F,kBACpB1hC,EAAOj4D,KAAK45F,eAAenuF,GAmB/B,OAjBKiuF,GAAqBA,EAAkBG,aAAe5hC,EAAK4hC,WAcvDH,IACLA,EAAkBI,WAAaruF,EAAawsD,EAAK4hC,cAb7CH,IACIA,EAAkBx9C,SAClBw9C,EAAkBx9C,UAEtBw9C,EAAoB15F,KAAK05F,kBAAoB,MAG7CzhC,EAAK4hC,aACLH,EAAoB15F,KAAK05F,kBAAoB,eAAS,CAAEG,WAAY5hC,EAAK4hC,WAAYC,WAAYruF,EAAawsD,EAAK4hC,aAAe5hC,EAAK8hC,yBAOxIL,EACD,GACAjuF,GAEV+tF,EAAiBn2F,UAAUs2F,gBAAkB,WACzC,IAAI74F,EAAQd,KAAKc,MACb2K,EAAeuuF,GAAiBl5F,EAAM0H,QAAS1H,EAAM4gB,WAIzD,YAHqBkD,IAAjBnZ,IACAA,EAAeuuF,GAAiBl5F,EAAMwK,eAAgBxK,EAAM4gB,YAEzC,MAAhBjW,EAAuB,KAAOA,GAEzC+tF,EAAiBn2F,UAAUu2F,eAAiB,SAAUnuF,GAClD,IAAImrF,EAAsB52F,KAAK6H,QAAQ0B,YAAYqtF,oBAC/CiD,EAAa,GACbE,EAAsB,KAC1B,GAAItuF,EACA,IAAK,IAAIwuF,KAAarD,EAClB,QAAgChyE,IAA5BnZ,EAAawuF,GAA0B,CACvCJ,EAAaI,EACbF,EAAsBnD,EAAoBqD,GAC1C,MAIZ,MAAO,CAAEJ,WAAYA,EAAYE,oBAAqBA,IAE1DP,EAAiBn2F,UAAUo2F,oBAAsB,WACzCz5F,KAAK05F,mBACL15F,KAAK05F,kBAAkB55F,OAAOE,KAAKwL,WAAWmN,SAAW3Y,KAAKc,MAAMs4F,YAAYzgF,QAChF3Y,KAAK05F,kBAAkBI,aAGxBN,EA5E0B,CA6EnC,IACE,GAA2B,SAAUpyF,GAErC,SAAS8yF,IACL,IAAI7yF,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAOhE,OANAqH,EAAMyI,aAAe,SAAUkL,GAC3B3T,EAAM2T,OAASA,EACX3T,EAAMvG,MAAMsH,OACZytF,GAAOxuF,EAAMvG,MAAMsH,MAAO4S,IAG3B3T,EAiBX,OA1BA,eAAU6yF,EAAW9yF,GAWrB8yF,EAAU72F,UAAUvD,OAAS,WACzB,OAAOE,KAAKc,MAAMksB,SAAShtB,KAAK8P,eAEpCoqF,EAAU72F,UAAU8T,kBAAoB,WACpC,IAAIzU,EAAW1C,KAAKc,MAAMmhB,SACtBvf,GACAA,EAAS,eAAS,eAAS,GAAI1C,KAAKc,MAAM4gB,WAAY,CAAE3R,GAAI/P,KAAKgb,WAGzEk/E,EAAU72F,UAAUojB,qBAAuB,WACvC,IAAI/jB,EAAW1C,KAAKc,MAAMqhB,YACtBzf,GACAA,EAAS,eAAS,eAAS,GAAI1C,KAAKc,MAAM4gB,WAAY,CAAE3R,GAAI/P,KAAKgb,WAGlEk/E,EA3BmB,CA4B5B,IACF,SAASC,KACL,IAAIC,EACAC,EACAC,EAAoB,GACxB,OAAO,SAAUC,EAAW74E,GAMxB,OALK24E,GAAqBz4B,GAAay4B,EAAkB34E,IAAc64E,IAAcH,IACjFA,EAAmBG,EACnBF,EAAmB34E,EACnB44E,EAAoBjB,GAAoBkB,EAAW74E,IAEhD44E,GAGf,SAASjB,GAAoB1wF,EAAY+Y,GAIrC,MAH0B,oBAAf/Y,IACPA,EAAaA,EAAW+Y,IAErB40D,GAAgB3tE,GAE3B,SAASqxF,GAAiBp1D,EAAOljB,GAC7B,MAAqB,oBAAVkjB,EACAA,EAAMljB,EAAW01C,GAErBxyB,EAGX,IAAI,GAA0B,SAAUx9B,GAEpC,SAASozF,IACL,IAAInzF,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMgyF,oBAAsBc,KACrB9yF,EASX,OAbA,eAAUmzF,EAAUpzF,GAMpBozF,EAASn3F,UAAUvD,OAAS,WACxB,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CrE,EAAUqE,EAAQrE,QAClBke,EAAY,CAAEG,KAAMha,EAAQyZ,SAC5Be,EAAmBriB,KAAKq5F,oBAAoB71F,EAAQ4qE,eAAgB1sD,GACxE,OAAQ01C,EAAc,GAAW,CAAE11C,UAAWA,EAAWO,SAAUze,EAAQ6qE,aAAclsD,YAAa3e,EAAQ8qE,gBAAiBlmE,MAAOtH,EAAMsH,QAAS,SAAUM,GAAa,OAAO5H,EAAMksB,SAAStkB,EAAW,CAAC,MAAQ5H,EAAM2H,SAASR,KAAO,QAAS,WAAWY,OAAOwZ,QAEpQm4E,EAdkB,CAe3B,IAEF,SAASC,GAAiBC,GACtB,OAAOn5B,GAAQm5B,EAAQC,IAE3B,SAASA,GAAgB/1D,GACrB,IAAI+zD,EAA8B,oBAAV/zD,EACpB,CAAE19B,UAAW09B,GACbA,EACA19B,EAAYyxF,EAAWzxF,UAK3B,OAJIyxF,EAAWnwF,UACXtB,EAAY0zF,GAAwBjC,IAGjC,CACHH,UAAWG,EAAW1wF,KACtBf,UAAWA,EACXyxF,WAAYA,GAGpB,SAASiC,GAAwBp3F,GAC7B,OAAO,SAAUq3F,GAAa,OAAQzjC,EAAcw9B,GAAgBxzE,SAAU,MAAM,SAAUvZ,GAAW,OAAQuvD,EAAc,GAAU,CAAE3uD,SAAUZ,EAAQY,WAAY,SAAUqyF,EAAW1sB,GAC1L,IAAI1sD,EAAY,eAAS,eAAS,GAAIm5E,GAAY,CAAE98E,iBAAkBlW,EAAQrE,QAAQua,mBACtF,OAAQq5C,EAAc,GAAY,CAAE11C,UAAWA,EAAW/Y,WAAYnF,EAAQmF,WAAYH,QAAShF,EAAQgF,QAASyZ,SAAUze,EAAQye,SAAUE,YAAa3e,EAAQ2e,YAAa/Z,MAAO0yF,IAAa,SAAUpyF,EAAW2Z,EAAkB7W,EAAYC,GAAgB,OAAQ2rD,EAAc,MAAO,CAAExuD,UAAWwlE,EAAevlE,OAAOwZ,GAAkBvZ,KAAK,KAAMnH,IAAK+G,GAAa+C,aAIhY,SAASsvF,GAAeC,EAAeC,EAAiBC,EAAwBC,GAC5E,IAAIpD,EAAiB0C,GAAiBO,GAClChD,EAAkByC,GAAiBQ,EAAgBh7E,OACnDm7E,EAAWtD,GAAgBC,EAAgBC,GAC/C,OAAOz2B,GAAQ65B,GAAU,SAAUlD,GAAW,OAAOmD,GAAcnD,EAASF,EAAiBiD,EAAiBC,EAAwBC,MAE1I,SAASE,GAAcnD,EAASF,EAAiBiD,EAAiBC,EAAwBC,GACtF,IAAIG,EAAgBpD,EAAQU,UAAUv4E,UAClC63E,EAAQQ,SAASr4E,UACjB66E,EAAuB76E,UACvB46E,EAAgB56E,SAChBA,EAAW,KACXk7E,EAAe,GACfjZ,EAAa,GACbkZ,EAAsB,GAC1B,GAAIF,IACAj7E,EAAWo7E,GAAqBH,GAC5Bj7E,GAAU,CACV,IAAIq7E,EAAQn2B,GAA4BllD,GACxCk7E,EAAeG,EAAM5/E,KACD,IAAhB4/E,EAAMj5F,QACN6/E,EAAaiZ,EACbC,EAAsBxD,EAAgBuD,GAAgBvD,EAAgBuD,GAAc5C,WAAa,IAI7G,IAAIgD,EAAkB,SAAUC,GAC5B,IAAIC,EAAgBD,EAAcjoB,YAAc,GAC5CM,EAAgBikB,EAAQQ,SAASzkB,cACrC,OAAqB,MAAjBA,GAAyD,MAAhC4nB,EAAc5nB,GAChC4nB,EAAc5nB,GAEU,MAA/B4nB,EAAc3D,EAAQjwF,MACf4zF,EAAc3D,EAAQjwF,MAEA,MAA7B4zF,EAAcvZ,GACPuZ,EAAcvZ,GAElB,MAEPwZ,EAAmB,SAAUF,GAC7B,IAAIhoB,EAAcgoB,EAAchoB,aAAe,GAC3CmoB,EAAY7D,EAAQQ,SAASzkB,cACjC,OAAiB,MAAb8nB,GAA+C,MAA1BnoB,EAAYmoB,GAC1BnoB,EAAYmoB,GAEU,MAA7BnoB,EAAYskB,EAAQjwF,MACb2rE,EAAYskB,EAAQjwF,MAEA,MAA3B2rE,EAAY0O,GACL1O,EAAY0O,GAEhB,MAEX,MAAO,CACHr6E,KAAMiwF,EAAQjwF,KACdf,UAAWgxF,EAAQhxF,UACnBmZ,SAAUA,EACVk7E,aAAcA,EACdjZ,WAAYA,EACZ0Z,eAAgB9D,EAAQQ,SACxBuC,gBAAiB,eAAS,eAAS,GAAIO,GAAsBtD,EAAQU,WACrEqD,mBAAoBN,EAAgBT,IAChCS,EAAgBV,IAChB/C,EAAQU,UAAUjlB,WACtBuoB,kBAAmBP,EAAgBR,IAC/BjD,EAAQQ,SAAS/kB,YACjBgoB,EAAgBnpB,KAChB0lB,EAAQjwF,KAEZk0F,oBAAqBL,EAAiBZ,IAClCY,EAAiBb,IACjB/C,EAAQU,UAAUwD,WACtBC,mBAAoBP,EAAiBX,IACjCjD,EAAQQ,SAAS0D,YACjBN,EAAiBtpB,KAK7B,IAAI8pB,GAAmB,GACvB,SAASb,GAAqBH,GAC1B,IAAIiB,EAAO32F,KAAKE,UAAUw1F,GACtBvxE,EAAMuyE,GAAiBC,GAK3B,YAJY33E,IAARmF,IACAA,EAAMg6C,GAAeu3B,GACrBgB,GAAiBC,GAAQxyE,GAEtBA,EAGX,IAAIyyE,GAAsC,WACtC,SAASA,EAAqB17F,GAC1Bd,KAAKc,MAAQA,EACbd,KAAK+b,QAAU8kE,GAAO//E,EAAMggF,SAAUhgF,EAAM4e,SAC5C1f,KAAKy8F,iBA+ST,OA1SAD,EAAqBn5F,UAAUq5F,UAAY,SAAUC,EAAoBnc,EAAaoc,GAClF,IAAIl9E,EAAU1f,KAAKc,MAAM4e,QACrBm9E,EAAWn9E,EAAQkkD,SAASlkD,EAAQioE,QAAQnH,EAAamc,EAAmBv9E,kBAChFu9E,EAAmBprB,eACnB,OAAOvxE,KAAK88F,MAAMD,GAAW,EAAGD,IAGpCJ,EAAqBn5F,UAAU05F,UAAY,SAAUJ,EAAoBnc,EAAaoc,GAClF,IAAIl9E,EAAU1f,KAAKc,MAAM4e,QACrBs9E,EAAWt9E,EAAQ4P,IAAI5P,EAAQioE,QAAQnH,EAAamc,EAAmBv9E,kBAC3Eu9E,EAAmBprB,eACnB,OAAOvxE,KAAK88F,MAAME,EAAU,EAAGJ,IAKnCJ,EAAqBn5F,UAAUy5F,MAAQ,SAAUtc,EAAa/V,EAAWmyB,QAChD,IAAjBA,IAA2BA,GAAe,GAC9C,IACInrB,EACAwrB,EACAz9E,EACAN,EACA2nC,EACAqD,EANAppD,EAAQd,KAAKc,MAyBjB,OAlBA2wE,EAAazxE,KAAKk9F,kBAClBzrB,EAAazxE,KAAKm9F,eAAe1rB,GAC7BmrB,IACApc,EAAclG,GAAuBkG,EAAa/O,IAEtDwrB,EAAcj9F,KAAKo9F,sBAAsB5c,EAAa/V,GACtDjrD,EAAgB,0BAA0BL,KAAK89E,EAAYnhF,MAC3DoD,EAAclf,KAAKsf,iBAAiBtf,KAAKm9F,eAAeF,EAAY5oF,OAAQ4oF,EAAYnhF,KAAM0D,GAC9FN,EAAclf,KAAKm9F,eAAej+E,GAClC2nC,EAAc3nC,EACTpe,EAAM6tE,sBACP9nB,EAAcizB,GAAgBjzB,EAAao2C,EAAY5oF,QAE3DwyC,EAAc7mD,KAAKq9F,kBAAkBx2C,GACrCA,EAAcizB,GAAgBjzB,EAAa4qB,GAG3CvnB,EAAU+vB,GAAgBgjB,EAAY5oF,MAAOo9D,GACtC,CAGHA,WAAYA,EAGZlyD,aAAc09E,EAAY5oF,MAE1B+K,iBAAkB69E,EAAYnhF,KAC9B0D,cAAeA,EAGfqnC,YAAaA,EAGb3nC,YAAaA,EAEbgG,YAAapkB,EAAMokB,YAEnBC,YAAarkB,EAAMqkB,YACnB+kC,QAASA,EAETqnB,cAAevxE,KAAKs9F,mBAAmBL,EAAY58E,YAO3Dm8E,EAAqBn5F,UAAU65F,gBAAkB,WAC7C,IAAIt4D,EAAQ5kC,KAAKc,MAAMy8F,gBACnBC,EAA+B,oBAAV54D,EACnBA,EAAMrhC,KAAKvD,KAAKc,MAAM+mD,YAAa7nD,KAAK+b,SACxC6oB,EACN,OAAO5kC,KAAKy9F,YAAYD,IACpB,CAAEvrF,MAAO,KAAMC,IAAK,OAM5BsqF,EAAqBn5F,UAAU+5F,sBAAwB,SAAUnyF,EAAMw/D,GACnE,IAII4G,EAJAvwE,EAAQd,KAAKc,MACbuf,EAAW,KACXvE,EAAO,KACPzH,EAAQ,KAmBZ,OAjBIvT,EAAMuf,UACNA,EAAWvf,EAAMuf,SACjBvE,EAAOhb,EAAMy6F,aACblnF,EAAQrU,KAAK09F,uBAAuBzyF,EAAMw/D,EAAWpqD,EAAUvE,KAEzDu1D,EAAWrxE,KAAKc,MAAMuwE,WAC5Bv1D,EAAO,MACPzH,EAAQrU,KAAK29F,uBAAuB1yF,EAAMw/D,EAAW4G,KAE/Ch9D,EAAQrU,KAAK49F,wBAAwB3yF,IAC3C6Q,EAAOhb,EAAM4e,QAAQ8nE,kBAAkBnzE,EAAMpC,MAAOoC,EAAMnC,KAAK4J,MAG/DuE,EAAWrgB,KAAK69F,sBAChB/hF,EAAOypD,GAA4BllD,GAAUvE,KAC7CzH,EAAQrU,KAAK09F,uBAAuBzyF,EAAMw/D,EAAWpqD,EAAUvE,IAE5D,CAAEuE,SAAUA,EAAUvE,KAAMA,EAAMzH,MAAOA,IAEpDmoF,EAAqBn5F,UAAUw6F,oBAAsB,WACjD,OAAO95B,GAAe,CAAEK,IAAK,KAIjCo4B,EAAqBn5F,UAAUg6F,kBAAoB,SAAUhpF,GACzD,IAAIzM,EAAK5H,KAAKc,MAAO4e,EAAU9X,EAAG8X,QAAS+R,EAAiB7pB,EAAG6pB,eAAgBvM,EAActd,EAAGsd,YAAaC,EAAcvd,EAAGud,YAC1HlT,EAAQoC,EAAMpC,MAAOC,EAAMmC,EAAMnC,IAcrC,OAbIuf,IAEIuzC,GAAY9/C,GAAe,IAC3BjT,EAAQgsD,GAAWhsD,GACnBA,EAAQyN,EAAQ4P,IAAIrd,EAAOiT,IAG3B8/C,GAAY7/C,GAAe,IAC3BjT,EAAM+rD,GAAW/rD,GACjBA,EAAMorD,EAAQprD,GAAM,GACpBA,EAAMwN,EAAQ4P,IAAIpd,EAAKiT,KAGxB,CAAElT,MAAOA,EAAOC,IAAKA,IAIhCsqF,EAAqBn5F,UAAUq6F,uBAAyB,SAAUzyF,EAAMw/D,EAAWpqD,EAAUvE,GACzF,IACI7J,EACAC,EACA6X,EAHAniB,EAAK5H,KAAKc,MAAO4e,EAAU9X,EAAG8X,QAAS4xD,EAAgB1pE,EAAG0pE,cAK9D,IAAKA,EAAe,CAChB,IAAIC,EAAgBvxE,KAAKc,MAAMywE,cAIvBD,EAHJC,GAEIrM,GAAUqM,GAAiBrM,GAAU7kD,GACrBklD,GAA4BgM,GAAez1D,KAO/CA,EAUxB,SAASgiF,IACL7rF,EAAQyN,EAAQioE,QAAQ18E,EAAMqmE,GAC9Bp/D,EAAMwN,EAAQ4P,IAAIrd,EAAOoO,GACzB0J,EAAM,CAAE9X,MAAOA,EAAOC,IAAKA,GAQ/B,OAjBI8yD,GAAY3kD,IAAa,GACrBrgB,KAAK+9F,YAAY9rF,KACjBA,EAAQjS,KAAKg+F,eAAe/rF,EAAOw4D,GACnCx4D,EAAQgsD,GAAWhsD,IAQ3B6rF,IAEK99F,KAAKm9F,eAAepzE,KACrB9e,EAAOjL,KAAKg+F,eAAe/yF,EAAMw/D,GACjCqzB,KAEG/zE,GAGXyyE,EAAqBn5F,UAAUs6F,uBAAyB,SAAU1yF,EAAMw/D,EAAW4G,GAC/E,IAGIn/D,EAHAtK,EAAK5H,KAAKc,MAAO4e,EAAU9X,EAAG8X,QAAS4xD,EAAgB1pE,EAAG0pE,cAC1D2sB,EAAe,EACfhsF,EAAQhH,EAERqmE,IACAr/D,EAAQyN,EAAQioE,QAAQ11E,EAAOq/D,IAEnCr/D,EAAQgsD,GAAWhsD,GACnBA,EAAQjS,KAAKg+F,eAAe/rF,EAAOw4D,GACnCv4D,EAAMD,EACN,GACIC,EAAMorD,EAAQprD,EAAK,GACdlS,KAAK+9F,YAAY7rF,KAClB+rF,GAAgB,SAEfA,EAAe5sB,GACxB,MAAO,CAAEp/D,MAAOA,EAAOC,IAAKA,IAIhCsqF,EAAqBn5F,UAAUu6F,wBAA0B,SAAU3yF,GAC/D,IAAInK,EAAQd,KAAKc,MACb8jC,EAAQ9jC,EAAMo9F,kBACdV,EAA+B,oBAAV54D,EACnBA,EAAMrhC,KAAKzC,EAAM+mD,YAAa/mD,EAAM4e,QAAQkC,OAAO3W,IACnD25B,EACFvwB,EAAQrU,KAAKy9F,YAAYD,GAC7B,OAAInpF,GAAyB,MAAfA,EAAMpC,OAA8B,MAAboC,EAAMnC,IAGpCmC,EAFI,MAOfmoF,EAAqBn5F,UAAUic,iBAAmB,SAAUC,EAAcH,EAAkBI,GACxF,OAAOD,GAIXi9E,EAAqBn5F,UAAUi6F,mBAAqB,SAAUa,GAC1D,IACIC,EADA7sB,EAAgBvxE,KAAKc,MAAMywE,cAE/B,OAAIA,KAGC6sB,EAAkBp+F,KAAKc,MAAMwwE,eACvBvN,GAAe,EAAGq6B,GAEzBD,GAGGp6B,GAAe,CAAEzjD,KAAM,MAElCk8E,EAAqBn5F,UAAUo6F,YAAc,SAAUY,GACnD,GAAIA,EAAY,CACZ,IAAIhqF,EAAQilE,GAAW+kB,EAAYr+F,KAAKc,MAAM4e,SAI9C,OAHIrL,IACAA,EAAQ0kE,GAAuB1kE,IAE5BA,EAEX,OAAO,MAKXmoF,EAAqBn5F,UAAUo5F,eAAiB,WAC5C,IAGIz2F,EAHAwrE,EAAaxxE,KAAKc,MAAM0wE,YAAc,GACtC8sB,EAAkB,GAClBl7E,EAAS,EAKb,KAH4B,IAAxBpjB,KAAKc,MAAMgtE,UACX0D,EAAWxpE,KAAK,EAAG,GAElBhC,EAAI,EAAGA,EAAI,EAAGA,GAAK,GACds4F,EAAgBt4F,IAAgC,IAA3BwrE,EAAW1zC,QAAQ93B,MAC1Cod,GAAU,GAGlB,IAAKA,EACD,MAAM,IAAI3Z,MAAM,sBAEpBzJ,KAAKs+F,gBAAkBA,GAI3B9B,EAAqBn5F,UAAU85F,eAAiB,SAAU9oF,GACtD,IAAIpC,EAAQoC,EAAMpC,MAAOC,EAAMmC,EAAMnC,IAOrC,OANID,IACAA,EAAQjS,KAAKg+F,eAAe/rF,IAE5BC,IACAA,EAAMlS,KAAKg+F,eAAe9rF,GAAM,GAAG,IAE1B,MAATD,GAAwB,MAAPC,GAAeD,EAAQC,EACjC,CAAED,MAAOA,EAAOC,IAAKA,GAEzB,MAIXsqF,EAAqBn5F,UAAU06F,YAAc,SAAU35B,GAInD,OAHIA,aAAe7zC,OACf6zC,EAAMA,EAAIxE,aAEP5/D,KAAKs+F,gBAAgBl6B,IAOhCo4B,EAAqBn5F,UAAU26F,eAAiB,SAAU/yF,EAAMszF,EAAKC,QACrD,IAARD,IAAkBA,EAAM,QACR,IAAhBC,IAA0BA,GAAc,GAC5C,MAAOx+F,KAAKs+F,iBAAiBrzF,EAAK20D,aAAe4+B,EAAcD,EAAM,GAAK,GAAK,GAC3EtzF,EAAOqyD,EAAQryD,EAAMszF,GAEzB,OAAOtzF,GAEJuxF,EAnT8B,GAsTzC,SAASiC,GAAe5c,EAAUpB,GAC9B,OAAQA,EAAOx4E,MACX,IAAK,mBACD45E,EAAWpB,EAAOoB,SAE1B,OAAOA,EAGX,SAAS6c,GAA6BxD,EAAwBza,GAC1D,IAAI74E,EACJ,OAAQ64E,EAAOx4E,MACX,IAAK,aACD,OAAO,eAAS,eAAS,GAAIizF,IAA0BtzF,EAAK,GAAIA,EAAG64E,EAAOY,YAAcZ,EAAOa,eAAgB15E,IACnH,QACI,OAAOszF,GAInB,SAASyD,GAAkBhC,EAAoBlc,EAAQD,EAAapiE,GAChE,IAAIwgF,EACJ,OAAQne,EAAOx4E,MACX,IAAK,mBACD,OAAOmW,EAAqB0+E,MAAMrc,EAAOC,YAAcF,GAC3D,IAAK,cACD,OAAOpiE,EAAqB0+E,MAAMrc,EAAOC,YAC7C,IAAK,OAED,GADAke,EAAKxgF,EAAqBs+E,UAAUC,EAAoBnc,GACpDoe,EAAG10C,QACH,OAAO00C,EAEX,MACJ,IAAK,OAED,GADAA,EAAKxgF,EAAqB2+E,UAAUJ,EAAoBnc,GACpDoe,EAAG10C,QACH,OAAO00C,EAEX,MAER,OAAOjC,EAGX,SAASkC,GAAiBhc,EAAiB33E,EAAarD,GACpD,IAAIg/C,EAAc37C,EAAcA,EAAY27C,YAAc,KAC1D,OAAOi4C,GAAW,GAAIC,GAAoBlc,EAAiBh7E,GAAUg/C,EAAah/C,GAEtF,SAASm3F,GAAmBxoC,EAAciqB,EAAQv1E,EAAarD,GAC3D,IAAIg/C,EAAc37C,EAAcA,EAAY27C,YAAc,KAC1D,OAAQ45B,EAAOx4E,MACX,IAAK,oBACD,OAAO62F,GAAWtoC,EAAciqB,EAAO+D,QAAS39B,EAAah/C,GACjE,IAAK,sBACD,OAAOo3F,GAAazoC,EAAciqB,EAAOlwB,UAC7C,IAAK,OACL,IAAK,OACL,IAAK,cACL,IAAK,mBACD,OAAIrlD,EACOg0F,GAAkB1oC,EAAc3P,EAAah/C,GAEjD2uD,EACX,IAAK,sBACD,OAAO2oC,GAAkB3oC,EAAciqB,EAAO3oB,UAC1C2J,GAAYgf,EAAO3oB,WACnBsnC,GAAqB5oC,EAAc3uD,GAAUg/C,EAAa45B,EAAO1oB,YAAa,EAAOlwD,GAC7F,IAAK,iBACL,IAAK,sBACD,OAAOw3F,GAAgB7oC,EAAciqB,EAAOlwB,SAAUkwB,EAAO6e,QAAS7e,EAAOP,YACjF,IAAK,2BACD,MAAO,GACX,QACI,OAAO1pB,GAGnB,SAAS+oC,GAA8B/oC,EAActrD,EAAarD,GAC9D,IAAIg/C,EAAc37C,EAAcA,EAAY27C,YAAc,KAC1D,OAAOs4C,GAAkB3oC,EAAc4oC,GAAqB5oC,EAAc3uD,GAAUg/C,GAAa,EAAMh/C,GAE3G,SAAS23F,GAA2BhpC,GAChC,IAAK,IAAIjG,KAAYiG,EACjB,GAAIA,EAAajG,GAAUyvB,WACvB,OAAO,EAGf,OAAO,EAEX,SAAS8e,GAAWW,EAAiBjb,EAAStE,EAAYr4E,GAEtD,IADA,IAAIw5D,EAAO,GACFl3D,EAAK,EAAGu1F,EAAYlb,EAASr6E,EAAKu1F,EAAUz5F,OAAQkE,IAAM,CAC/D,IAAIuiC,EAASgzD,EAAUv1F,GACvBk3D,EAAK30B,EAAO6jB,UAAY7jB,EAK5B,OAHIwzC,IACA7e,EAAO69B,GAAkB79B,EAAM6e,EAAYr4E,IAExC,eAAS,eAAS,GAAI43F,GAAkBp+B,GAEnD,SAAS49B,GAAaQ,EAAiBlvC,GACnC,OAAO6Q,GAAWq+B,GAAiB,SAAUhrB,GAAe,OAAOA,EAAYlkB,WAAaA,KAEhG,SAAS2uC,GAAkB9a,EAAYlE,EAAYr4E,GAC/C,OAAOs3F,GAAkB/a,EAAYhjB,GAAWgjB,GAAY,SAAU3P,GAAe,OAAOkrB,GAAclrB,EAAayL,EAAYr4E,MAAcq4E,GAAY,EAAOr4E,GAExK,SAAS83F,GAAclrB,EAAayL,EAAYr4E,GAC5C,OAAK+3F,GAAoBnrB,EAAa5sE,IAG9BA,EAAQrE,QAAQorE,eACnB6F,EAAYyL,YACbzL,EAAYuL,YACZE,EAAWjuE,MAAQwiE,EAAYyL,WAAWjuE,OAC1CiuE,EAAWhuE,IAAMuiE,EAAYyL,WAAWhuE,KANhCuiE,EAAYwL,cAQ5B,SAASkf,GAAkBU,EAAaC,EAAc5f,EAAYnoB,EAAWlwD,GACzE,IAAIk4F,EAAc,GAClB,IAAK,IAAIxvC,KAAYsvC,EAAa,CAC9B,IAAInzD,EAASmzD,EAAYtvC,GACrBuvC,EAAavvC,GACbwvC,EAAYxvC,GAAYyvC,GAAYtzD,EAAQwzC,EAAYnoB,EAAWlwD,GAGnEk4F,EAAYxvC,GAAY7jB,EAGhC,OAAOqzD,EAEX,SAASC,GAAYvrB,EAAayL,EAAYnoB,EAAWlwD,GACrD,IAAIrE,EAAUqE,EAAQrE,QAASqkD,EAAchgD,EAAQggD,YACjDo4C,EAAYp4F,EAAQ0B,YAAY82E,gBAAgB5L,EAAY0L,aAC5Dmf,EAAUvkC,IAqCd,OApCAklC,EAAUC,MAAM,CACZzrB,YAAaA,EACbpgE,MAAO6rE,EACPnoB,UAAWA,EACXlwD,QAASA,IACV,SAAUkiB,GACT,IAAIyqD,EAAYzqD,EAAIyqD,UAChBhxE,EAAQmzD,qBACR6d,EAAYhxE,EAAQmzD,mBAAmBpzD,KAAKskD,EAAa2sB,EAAWzqD,EAAI6sC,MAAQ4d,GAEhFC,EAAY+K,UACZhL,EAAYC,EAAY+K,QAAQj8E,KAAKskD,EAAa2sB,EAAWzqD,EAAI6sC,MAAQ4d,GAE7E3sE,EAAQ4gD,SAAS,CACbxgD,KAAM,iBACNsoD,SAAUkkB,EAAYlkB,SACtB+uC,QAASA,EACTpf,WAAYA,EACZ1L,UAAWA,OAEhB,SAAUt+C,GACT2L,QAAQC,KAAK5L,EAAMiqE,QAASjqE,GACxB1yB,EAAQosE,oBACRpsE,EAAQosE,mBAAmBrsE,KAAKskD,EAAa3xB,GAE7Cu+C,EAAYgL,SACZhL,EAAYgL,QAAQvpD,GAExBruB,EAAQ4gD,SAAS,CACbxgD,KAAM,sBACNsoD,SAAUkkB,EAAYlkB,SACtB+uC,QAASA,EACTpf,WAAYA,EACZhqD,MAAOA,OAGR,eAAS,eAAS,GAAIu+C,GAAc,CAAEuL,YAAY,EAAMC,cAAeqf,IAElF,SAASD,GAAgBjb,EAAY7zB,EAAU+uC,EAASpf,GACpD,IAAIt4E,EACA6sE,EAAc2P,EAAW7zB,GAC7B,OAAIkkB,GACA6qB,IAAY7qB,EAAYwL,cACjB,eAAS,eAAS,GAAImE,IAAcx8E,EAAK,GAAIA,EAAG2oD,GAAY,eAAS,eAAS,GAAIkkB,GAAc,CAAEuL,YAAY,EAAOE,WAAYA,IAAet4E,IAEpJw8E,EAEX,SAASgb,GAAqB5oC,EAAc3uD,GACxC,OAAOu5D,GAAW5K,GAAc,SAAUie,GAAe,OAAOmrB,GAAoBnrB,EAAa5sE,MAErG,SAASk3F,GAAoBpG,EAAY9wF,GACrC,IAAIwsE,EAAWuL,GAAyB/3E,GACpCu4F,EAAa,GAAGv3F,OAAO8vF,EAAWniC,cAAgB,IAClDguB,EAAU,GACVmU,EAAW9kB,eACXusB,EAAW16D,QAAQizD,EAAW9kB,eAE9B8kB,EAAWx2F,QACXi+F,EAAW16D,QAAQizD,EAAWx2F,QAElC,IAAK,IAAIgI,EAAK,EAAGk2F,EAAeD,EAAYj2F,EAAKk2F,EAAap6F,OAAQkE,IAAM,CACxE,IAAIm2F,EAAYD,EAAal2F,GACzBuiC,EAASgzC,GAAiB4gB,EAAWz4F,EAASwsE,GAC9C3nC,GACA83C,EAAQx8E,KAAK0kC,GAGrB,OAAO83C,EAEX,SAASob,GAAoBnrB,EAAa5sE,GACtC,IAAIyjD,EAAOzjD,EAAQ0B,YAAY82E,gBAC/B,OAAQ/0B,EAAKmpB,EAAY0L,aAAaogB,YAG1C,SAASC,GAAiB3hF,EAAY4hE,EAAQjqB,EAActrD,EAAarD,GACrE,OAAQ44E,EAAOx4E,MACX,IAAK,iBACD,OAAOw4F,GAAiB5hF,EAAY23C,EAAaiqB,EAAOlwB,UAAWkwB,EAAO6e,QAAS7e,EAAOP,WAAYO,EAAOjM,UAAW3sE,GAC5H,IAAK,aACD,OAAOu7E,GAASvkE,EAAY4hE,EAAO5hE,WACnC3T,EAAcA,EAAY27C,YAAc,KAAMh/C,GAClD,IAAK,eACD,OAAO44E,EAAO5hE,WAClB,IAAK,eACD,OAAO+2D,GAAiB/2D,EAAY4hE,EAAO5hE,YAC/C,IAAK,OACL,IAAK,OACL,IAAK,cACL,IAAK,mBACD,OAAI3T,EACO+3D,GAAgBpkD,EAAY3T,EAAY27C,YAAah/C,GAEzDgX,EACX,IAAK,gBACD,OAAOm3D,GAAqBn3D,EAAY4hE,EAAO5hE,YACnD,IAAK,sBACD,OAAO6hF,GAAwB7hF,EAAY4hE,EAAOlwB,UACtD,IAAK,2BACD,OAAO+kB,GAAqBz2D,GAAY,SAAUmC,GAAY,OAASA,EAASuvC,YAEpF,IAAK,oBACD,OAAOokB,KACX,QACI,OAAO91D,GAGnB,SAAS4hF,GAAiB5hF,EAAY41D,EAAa6qB,EAASpf,EAAY1L,EAAW3sE,GAC/E,GAAI4sE,GACA6qB,IAAY7qB,EAAYwL,cAC1B,CACE,IAAI0gB,EAASpsB,GAAYqsB,GAAmBpsB,EAAWC,EAAa5sE,GAAU4sE,EAAa5sE,GAI3F,OAHIq4E,IACAygB,EAAS19B,GAAgB09B,EAAQzgB,EAAYr4E,IAE1C+tE,GAAiB8qB,GAAwB7hF,EAAY41D,EAAYlkB,UAAWowC,GAEvF,OAAO9hF,EAEX,SAAS+hF,GAAmBpsB,EAAWC,EAAa5sE,GAChD,IAAIg5F,EAAmBh5F,EAAQrE,QAAQksE,mBACnCoxB,EAAsBrsB,EAAcA,EAAY/E,mBAAqB,KAOzE,OANIoxB,IACAtsB,EAAYusB,GAAsBvsB,EAAWssB,IAE7CD,IACArsB,EAAYusB,GAAsBvsB,EAAWqsB,IAE1CrsB,EAEX,SAASusB,GAAsBvsB,EAAW1Y,GACtC,IAAIklC,EACJ,GAAKllC,EAGA,CACDklC,EAAgB,GAChB,IAAK,IAAI72F,EAAK,EAAG2qE,EAAcN,EAAWrqE,EAAK2qE,EAAY7uE,OAAQkE,IAAM,CACrE,IAAI4qE,EAAWD,EAAY3qE,GACvB82F,EAAenlC,EAAKiZ,GACpBksB,EACAD,EAAch5F,KAAKi5F,GAEE,MAAhBA,GACLD,EAAch5F,KAAK+sE,SAX3BisB,EAAgBxsB,EAepB,OAAOwsB,EAEX,SAAS5d,GAASvkE,EAAY8hF,EAAQO,EAAar5F,GAI/C,OAHIq5F,IACAP,EAAS19B,GAAgB09B,EAAQO,EAAar5F,IAE3C+tE,GAAiB/2D,EAAY8hF,GAExC,SAASQ,GAAsBtiF,EAAYuiF,EAAYC,GACnD,IAAI/1C,EAAOzsC,EAAWysC,KAClBE,EAAY+V,GAAQ1iD,EAAW2sC,WAAW,SAAUv8C,GACpD,IAAI3C,EAAMg/C,EAAKr8C,EAASs8C,OACxB,OAAIj/C,EAAIC,QAAUD,EAAI62D,aACXl0D,EAEJ,eAAS,eAAS,GAAIA,GAAW,CAAEoF,MAAO,CACzCpC,MAAOovF,EAAW9nB,aAAa6nB,EAAWx/E,OAAO3S,EAASoF,MAAMpC,MAAOhD,EAAS0xD,iBAChFzuD,IAAKmvF,EAAW9nB,aAAa6nB,EAAWx/E,OAAO3S,EAASoF,MAAMnC,IAAKjD,EAAS2xD,gBAC7ED,eAAgB0gC,EAAWpa,iBAAmB,KAAOh4E,EAAS0xD,eAAgBC,aAAcygC,EAAWpa,iBAAmB,KAAOh4E,EAAS2xD,kBAErJ,MAAO,CAAEtV,KAAMA,EAAME,UAAWA,GAEpC,SAASk1C,GAAwB7hF,EAAY0xC,GACzC,OAAO+kB,GAAqBz2D,GAAY,SAAUmC,GAAY,OAAOA,EAASuvC,WAAaA,KAG/F,SAAS+wC,GAAiBziF,EAAY0iF,GAClC,MAAO,CACHj2C,KAAMzsC,EAAWysC,KACjBE,UAAW4V,GAAWviD,EAAW2sC,WAAW,SAAUv8C,GAAY,OAAQsyF,EAAStyF,EAASD,gBAIpG,SAASwyF,GAAoBC,EAAkBhhB,GAC3C,OAAQA,EAAOx4E,MACX,IAAK,iBACD,OAAO,KACX,IAAK,eACD,OAAOw4E,EAAO/3B,UAClB,QACI,OAAO+4C,GAInB,SAASC,GAAoBC,EAAmBlhB,GAC5C,OAAQA,EAAOx4E,MACX,IAAK,iBACD,MAAO,GACX,IAAK,eACD,OAAOw4E,EAAO72B,gBAClB,QACI,OAAO+3C,GAInB,SAASC,GAAgBC,EAAaphB,GAClC,IAAIqhB,EACJ,OAAQrhB,EAAOx4E,MACX,IAAK,mBACD,OAAO,KACX,IAAK,iBAED,OADA65F,EAAUrhB,EAAO5wE,MACV,CACHy6C,eAAgBw3C,EAAQx3C,eACxBC,cAAeu3C,EAAQv3C,cACvBz/C,QAASg3F,EAAQh3F,SAEzB,QACI,OAAO+2F,GAInB,SAASE,GAAkBC,EAAevhB,GACtC,IAAIwhB,EACJ,OAAQxhB,EAAOx4E,MACX,IAAK,qBACD,OAAO,KACX,IAAK,mBAED,OADAg6F,EAAYxhB,EAAO5wE,MACZ,CACHy6C,eAAgB23C,EAAU33C,eAC1BC,cAAe03C,EAAU13C,cACzBz/C,QAASm3F,EAAUn3F,SAE3B,QACI,OAAOk3F,GAInB,SAASE,GAAcrf,EAAiBsf,EAAyBn+E,EAAOi+D,EAAWp6B,GAC/E,IAAI1iB,EAAS09C,EAAgB7V,cAAgBo1B,GAAavf,EAAgB7V,cAAe6V,EAAiBsf,EAAyBn+E,EAAOi+D,EAAWp6B,GAAe,KAChKxiB,EAASw9C,EAAgB5V,cAAgBm1B,GAAavf,EAAgB5V,cAAe4V,EAAiBsf,EAAyBn+E,EAAOi+D,EAAWp6B,GAAe,KACpK,MAAO,CAAE1iB,OAAQA,EAAQE,OAAQA,GAErC,SAAS+8D,GAAaC,EAAgBxf,EAAiBsf,EAAyBn+E,EAAOi+D,EAAWp6B,GAC9F,IAAIy6C,EAAiB,GACjBjgB,EAAmB,GACnBkgB,GAAW,EACf,IAAK,IAAIC,KAAeH,EAAgB,CACpC,IAAII,EAAaJ,EAAeG,GAC5BE,EAAaC,GAAaF,EAAY5f,EAAiBsf,EAAyBn+E,EAAOi+D,EAAWp6B,GACtGy6C,EAAeE,GAAeE,EAAWE,QACzCvgB,EAAiBr6E,KAAKV,MAAM+6E,EAAkBqgB,EAAWrgB,kBACzDkgB,EAAWA,GAAYG,EAAWH,SAEtC,MAAO,CAAED,eAAgBA,EAAgBjgB,iBAAkBA,EAAkBkgB,SAAUA,GAK3F,SAASI,GAAaF,EAAY5f,EAClCsf,EACAn+E,EAAOi+D,EAAWp6B,GACd,IAAI7vC,EAAsC,QAA9B6qE,EAAgBpY,UACxBo4B,EAAwBhgB,EAAgBjW,eAAiB,GACzDk2B,EAA8BX,EAAwBxuB,YAAc,GACpEovB,EAAqBlgB,EAAgBlP,YAAc,GACnDqvB,EAA8Bb,EAAwBvuB,aAAe,GACrEqvB,EAAsBpgB,EAAgBjP,aAAe,GACrDsvB,EAAiBT,EAAaA,EAAWjpF,MAAM,KAAO,GACtD6oE,EAAmB,GACnBkgB,GAAW,EACXK,EAAUM,EAAev/F,KAAI,SAAUw/F,GAAkB,OAAQA,EAAe3pF,MAAM,KAAK7V,KAAI,SAAUgwF,GACzG,GAAmB,UAAfA,EAEA,OADA4O,GAAW,EACJ,CAAE5O,WAAYA,GAEzB,IAAIS,EACA3rF,EACA26F,EACAC,EACA1vB,EACAyoB,EAEJ,GAAKhI,EAAoByO,EAAsBlP,GAC3CyP,EAAc,SAAUvpD,GAChBu6C,EAAkBxsD,OAClBwsD,EAAkBxsD,MAAMrkC,KAAKs2C,EAAG52C,OAAQ42C,EAAIA,EAAG52C,UAGtDogG,EAAar/E,EAAMmwE,yBAAyBC,MACxCiP,EAAar/E,EAAMgwE,aAAaL,EAAY37E,MAC5C27D,EAAaygB,EAAkBtyE,MACpCs6E,EAAahI,EAAkBkP,MAAQlP,EAAkBtyE,UAExD,GAAKrZ,EAAWw5E,EAAU0R,GAAc,CACzCtR,EAAiBr6E,KAAK2rF,GACtByP,EAAc,WACVv7C,EAAY+5B,WAAW+R,KAE1BhgB,EAAalrE,EAASwzF,sBAClBoH,EAAar/E,EAAMgwE,aAAaL,EAAY37E,MAC5C27D,EAAalrE,EAASyzF,mBAC3B,IAAIqH,EAAe96F,EAASwzF,oBACxBxzF,EAASyzF,kBACbE,EAAa1/B,EAAmBj0D,EAAS0zF,qBACrC1zF,EAAS4zF,oBACTxZ,EAAgB/Q,SAAU,CAACyxB,EAAc5P,GAC7C4P,QAEC,GAAI17C,EAAY8rC,GAOjB,GANAyP,EAAc,WACVv7C,EAAY8rC,OAEfhgB,EAAamvB,EAA4BnP,MACrC0P,EAAar/E,EAAMgwE,aAAaL,EAAY37E,MAC5C27D,EAAaovB,EAAmBpP,IAClB,aAAfA,GAA4C,aAAfA,EAA2B,CACxD,IAAI6P,EAA4B,aAAf7P,EAA4B,OAAS,OACtDyI,EAAa1/B,EAAmBsmC,EAA4BQ,IACxDP,EAAoBO,GAAa,CACjCT,EAAmBxjC,MAAQ,OAC3B,QACDwjC,EAAmBpP,SAGtByI,EAAa,SAAUqH,GAAW,OAAO/mC,EAAmBsmC,EAA4BrP,IACpFsP,EAAoBtP,GAAa,CACjCoP,EAAmBU,IAAYA,EAC/BA,GACDV,EAAmBpP,KAG9B,MAAO,CAAEA,WAAYA,EAAYyP,YAAaA,EAAaC,WAAYA,EAAY1vB,WAAYA,EAAYyoB,WAAYA,SAE3H,MAAO,CAAEwG,QAASA,EAASvgB,iBAAkBA,EAAkBkgB,SAAUA,GAG7E,IAAImB,GAAmB,CACnBnD,aAAa,EACbjgB,UAAW,SAAUjwB,GACjB,OAAIjtD,MAAMqe,QAAQ4uC,EAAQluD,QACfkuD,EAAQluD,OAEZ,MAEX+9F,MAAO,SAAU/7E,EAAKq7D,GAClBA,EAAQ,CACJhL,UAAWrwD,EAAIswD,YAAYxc,SAInC0rC,GAAyB1N,GAAa,CACtC5V,gBAAiB,CAACqjB,MAGlBE,GAAmB,CACnBtjB,UAAW,SAAUjwB,GACjB,MAA8B,oBAAnBA,EAAQluD,OACRkuD,EAAQluD,OAEZ,MAEX+9F,MAAO,SAAU/7E,EAAKq7D,EAASC,GAC3B,IAAI//D,EAAUyE,EAAItc,QAAQ6X,QACtBo8C,EAAO33C,EAAIswD,YAAYxc,KAC3Bm5B,GAAYt1B,EAAK/X,KAAK,KAAMm6B,GAA0B/5D,EAAI9P,MAAOqL,KAAW,SAAU80D,GAClFgL,EAAQ,CAAEhL,UAAWA,MACtBiL,KAGPokB,GAAwB5N,GAAa,CACrC5V,gBAAiB,CAACujB,MAGtB,SAASE,GAAYrrC,EAAQhC,EAAKstC,EAAQC,EAAiBC,GACvDxrC,EAASA,EAAOzjC,cAChB,IAAIiL,EAAO,KACI,QAAXw4B,EACAhC,EAAMytC,GAAwBztC,EAAKstC,GAGnC9jE,EAAOkkE,GAAaJ,GAExB,IAAIntC,EAAM,IAAIwtC,eACdxtC,EAAI55B,KAAKy7B,EAAQhC,GAAK,GACP,QAAXgC,GACA7B,EAAIytC,iBAAiB,eAAgB,qCAEzCztC,EAAI0tC,OAAS,WACT,GAAI1tC,EAAI2tC,QAAU,KAAO3tC,EAAI2tC,OAAS,IAAK,CACvC,IAAI1hC,GAAS,EACT94C,OAAM,EACV,IACIA,EAAMnkB,KAAKC,MAAM+wD,EAAI4tC,cACrB3hC,GAAS,EAEb,MAAO4hC,IAGH5hC,EACAmhC,EAAgBj6E,EAAK6sC,GAGrBqtC,EAAgB,uBAAwBrtC,QAI5CqtC,EAAgB,iBAAkBrtC,IAG1CA,EAAI8tC,QAAU,WACVT,EAAgB,iBAAkBrtC,IAEtCA,EAAI+tC,KAAK1kE,GAEb,SAASikE,GAAwBztC,EAAKstC,GAClC,OAAOttC,IACoB,IAAtBA,EAAI34B,QAAQ,KAAc,IAAM,KACjCqmE,GAAaJ,GAErB,SAASI,GAAaJ,GAClB,IAAIx5B,EAAQ,GACZ,IAAK,IAAI3pE,KAAOmjG,EACZx5B,EAAMviE,KAAK48F,mBAAmBhkG,GAAO,IAAMgkG,mBAAmBb,EAAOnjG,KAEzE,OAAO2pE,EAAMzhE,KAAK,KAGtB,IAAI+7F,GAAkC,CAClCpsC,OAAQr3B,OACRs1B,YAAa8V,GACbqC,WAAYztC,OACZ0tC,SAAU1tC,OACV2tC,cAAe3tC,QAGf0jE,GAAiB,CACjBxkB,UAAW,SAAUjwB,GACjB,OAAIA,EAAQoG,KAA2B,SAAnBpG,EAAQ7qD,QAAsB6qD,EAAQ7qD,OAWnD,KAVI,CACHixD,IAAKpG,EAAQoG,IACbjxD,OAAQ,OACRizD,QAASpI,EAAQoI,QAAU,OAAOzjC,cAClC0hC,YAAarG,EAAQqG,YACrBmY,WAAYxe,EAAQwe,WACpBC,SAAUze,EAAQye,SAClBC,cAAe1e,EAAQ0e,gBAKnCmxB,MAAO,SAAU/7E,EAAKq7D,EAASC,GAC3B,IAAIxnB,EAAO9zC,EAAIswD,YAAYxc,KACvB8sC,EAAgBC,GAAmB/sC,EAAM9zC,EAAI9P,MAAO8P,EAAItc,SAC5Di8F,GAAY7rC,EAAKQ,OAAQR,EAAKxB,IAAKsuC,GAAe,SAAUvwB,EAAW5d,GACnE4oB,EAAQ,CAAEhL,UAAWA,EAAW5d,IAAKA,OACtC,SAAUquC,EAAcruC,GACvB6oB,EAAQ,CAAE0gB,QAAS8E,EAAcruC,IAAKA,SAI9CsuC,GAA4BjP,GAAa,CACzC7V,oBAAqBykB,GACrBxkB,gBAAiB,CAACykB,MAEtB,SAASE,GAAmB/sC,EAAM5jD,EAAOxM,GACrC,IACIgnE,EACAC,EACAC,EACAo2B,EAJAzlF,EAAU7X,EAAQ6X,QAASlc,EAAUqE,EAAQrE,QAK7CugG,EAAS,GA4Bb,OA3BAl1B,EAAa5W,EAAK4W,WACA,MAAdA,IACAA,EAAarrE,EAAQqrE,YAEzBC,EAAW7W,EAAK6W,SACA,MAAZA,IACAA,EAAWtrE,EAAQsrE,UAEvBC,EAAgB9W,EAAK8W,cACA,MAAjBA,IACAA,EAAgBvrE,EAAQurE,eAKxBo2B,EAF4B,oBAArBltC,EAAKvB,YAEUuB,EAAKvB,cAILuB,EAAKvB,aAAe,GAE9C,eAASqtC,EAAQoB,GACjBpB,EAAOl1B,GAAcnvD,EAAQ4nC,UAAUjzC,EAAMpC,OAC7C8xF,EAAOj1B,GAAYpvD,EAAQ4nC,UAAUjzC,EAAMnC,KAClB,UAArBwN,EAAQiqD,WACRo6B,EAAOh1B,GAAiBrvD,EAAQiqD,UAE7Bo6B,EAGX,IAAIqB,GAA4B,CAC5Bnb,WAAYzd,GACZ/b,UAAWsT,GACXimB,QAASjmB,GACT1jD,SAAU0jD,GACVshC,WAAY74B,GACZ84B,SAAU94B,IAGV+4B,GAAY,CACZ1/F,MAAO,SAAUwqD,EAAS3wC,GACtB,GAAI2wC,EAAQ45B,YAAc55B,EAAQI,WAAaJ,EAAQ25B,SAAW35B,EAAQg1C,YAAch1C,EAAQi1C,SAAU,CACtG,IAAIE,EAAgB,CAChBvb,WAAY55B,EAAQ45B,YAAc,KAClCx5B,UAAWJ,EAAQI,WAAa,KAChCu5B,QAAS35B,EAAQ25B,SAAW,KAC5Bqb,WAAYh1C,EAAQg1C,WAAa3lF,EAAQ65D,aAAalpB,EAAQg1C,YAAc,KAC5EC,SAAUj1C,EAAQi1C,SAAW5lF,EAAQ65D,aAAalpB,EAAQi1C,UAAY,MAEtEjlF,OAAW,EAOf,OANIgwC,EAAQhwC,WACRA,EAAWgwC,EAAQhwC,WAElBA,GAAYgwC,EAAQI,WAAaJ,EAAQ25B,UAC1C3pE,EAAWukD,GAAkBvU,EAAQ25B,QAAS35B,EAAQI,YAEnD,CACHqS,YAAahsD,SAASu5C,EAAQI,YAAcJ,EAAQ25B,SACpD3pE,SAAUA,EACV0iD,SAAUyiC,GAGlB,OAAO,MAEX7hC,OAAQ,SAAUZ,EAAUG,EAAcxjD,GACtC,IAAI+lF,EAAsB3rB,GAAgB5W,EAAc,CAAEjxD,MAAO8wD,EAASsiC,WAAYnzF,IAAK6wD,EAASuiC,WACpG,OAAIG,EACOC,GAAa3iC,EAASknB,WAAYlnB,EAAStS,UAAWg1C,EAAqB/lF,GAE/E,KAGXimF,GAA8B1P,GAAa,CAC3CrzB,eAAgB,CAAC2iC,IACjB3wB,cAAewwB,KAEnB,SAASM,GAAazb,EAAYx5B,EAAWyS,EAAcxjD,GACvD,IAAIkmF,EAAU3b,EAAaxoB,GAAYwoB,GAAc,KACjD4b,EAAY5nC,GAAWiF,EAAajxD,OACpCumE,EAAYtV,EAAahxD,IACzB4zF,EAAiB,GACrB,MAAOD,EAAYrtB,EAAW,CAC1B,IAAIutB,OAEF,EAEGH,IAAWA,EAAQC,EAAUjmC,eAE1BmmC,EADAt1C,EACgB/wC,EAAQ4P,IAAIu2E,EAAWp1C,GAGvBo1C,EAEpBC,EAAe99F,KAAK+9F,IAExBF,EAAYvoC,EAAQuoC,EAAW,GAEnC,OAAOC,EAGX,IAAIE,GAAsB/P,GAAa,CACnCU,qBAAsB,CAClBx0F,OAAQ,SAAUA,EAAQ0F,GACtBo+F,GAAmB,CAAC9jG,GAAS0F,IAEjC2uD,aAAcyvC,MAMtB,SAASA,GAAmBvL,EAAQ7yF,GAGhC,IAFA,IAAIq+F,EAAiBvkC,GAAkB95D,EAAQgiD,iBAAiB2M,cAC5D2vC,EAAY,GACPh8F,EAAK,EAAGi8F,EAAW1L,EAAQvwF,EAAKi8F,EAASngG,OAAQkE,IAAM,CAG5D,IAFA,IAAIy6B,EAAQwhE,EAASj8F,GACjBk8F,GAAa,EACRrgG,EAAI,EAAGA,EAAIkgG,EAAejgG,OAAQD,GAAK,EAC5C,GAAIkgG,EAAelgG,GAAG+5E,OAASn7C,EAAO,CAClCshE,EAAeI,OAAOtgG,EAAG,GACzBqgG,GAAa,EACb,MAGHA,GACDF,EAAUn+F,KAAK48B,GAGvB,IAAK,IAAIh9B,EAAK,EAAG2+F,EAAmBL,EAAgBt+F,EAAK2+F,EAAiBtgG,OAAQ2B,IAAM,CACpF,IAAI4+F,EAAgBD,EAAiB3+F,GACrCC,EAAQ4gD,SAAS,CACbxgD,KAAM,sBACNsoD,SAAUi2C,EAAcj2C,WAGhC,IAAK,IAAIluD,EAAK,EAAGokG,EAAcN,EAAW9jG,EAAKokG,EAAYxgG,OAAQ5D,IAAM,CACrE,IAAIqkG,EAAWD,EAAYpkG,GAC3BwF,EAAQggD,YAAY08B,eAAemiB,IAI3C,SAASC,GAAkBz7F,EAAarD,GACpCA,EAAQsyC,QAAQC,QAAQ,WAAY,eAAS,eAAS,GAAI8jC,GAA0BhzE,EAAY27C,YAAah/C,EAAQ6X,UAAW,CAAEmC,KAAMha,EAAQyZ,WAGpJ,SAASslF,GAAiB/nF,EAAYhX,GAClC,IAAIsyC,EAAUtyC,EAAQsyC,QAClBA,EAAQojC,YAAY,cACpBpjC,EAAQC,QAAQ,YAAa6pC,GAAeplE,EAAYhX,IAQhE,IAAIg/F,GAAgB,CAChBlD,GACAE,GACAqB,GACAS,GACAK,GACA/P,GAAa,CACTG,eAAgB,CACZ,SAAUvmF,GAAS,OAAO2vF,GAA2B3vF,EAAM2mD,gBAE/DogC,oBAAqB,CACjBkQ,KAAMC,GACNC,SAAUC,IAEdpQ,gBAAiB,CACb3rF,YAAay7F,GACb9nF,WAAY+nF,OAIxB,SAASG,KACL,IAAIG,EAAY,KACZC,EAAc,GAClB,SAASrnG,EAAOiQ,EAAI+2F,GACZ/2F,IAAOm3F,GAAaJ,IAASK,IAC7Bp3F,EAAGk7E,UAAY6b,GAEnBI,EAAYn3F,EACZo3F,EAAcL,EAElB,SAAS5qD,IACLgrD,EAAUjc,UAAY,GACtBic,EAAY,KACZC,EAAc,GAElB,MAAO,CAAErnG,OAAQA,EAAQo8C,QAASA,GAEtC,SAAS+qD,KACL,IAAIC,EAAY,KACZE,EAAkB,GACtB,SAAStnG,EAAOiQ,EAAIi3F,GAChB,IAAIK,EAAcjkG,MAAMC,UAAU0jC,MAAMxjC,KAAKyjG,GAC7C,GAAIj3F,IAAOm3F,IAAcjhC,GAAcmhC,EAAiBC,GAAc,CAElE,IAAK,IAAIl9F,EAAK,EAAGm9F,EAAgBD,EAAal9F,EAAKm9F,EAAcrhG,OAAQkE,IAAM,CAC3E,IAAIo9F,EAAUD,EAAcn9F,GAC5B4F,EAAGmwB,YAAYqnE,GAEnBrrD,IAEJgrD,EAAYn3F,EACZq3F,EAAkBC,EAEtB,SAASnrD,IACLkrD,EAAgBlwE,QAAQghC,GACxBkvC,EAAkB,GAClBF,EAAY,KAEhB,MAAO,CAAEpnG,OAAQA,EAAQo8C,QAASA,GAGtC,IAAIsrD,GAA+B,WAC/B,SAASA,EAAcC,GACnBznG,KAAKynG,cAAgBA,EACrBznG,KAAK0nG,WAAY,EACjB1nG,KAAK2nG,SAAU,EACf3nG,KAAK4nG,YAAc,GACnB5nG,KAAK6nG,UAAY,EAmErB,OAjEAL,EAAcnkG,UAAU8qB,QAAU,SAAUu0B,GACxC1iD,KAAK2nG,SAAU,EACV3nG,KAAK8nG,aACN9nG,KAAK2jD,eACQ,MAATjB,EACA1iD,KAAK+nG,WAGL/nG,KAAK6nG,UAAYjrD,WACjB58C,KAAK+nG,SAAShkD,KAAK/jD,MAAO0iD,KAItC8kD,EAAcnkG,UAAU2kG,MAAQ,SAAUhkE,QACxB,IAAVA,IAAoBA,EAAQ,IAChC,IAAI4jE,EAAc5nG,KAAK4nG,YACvBA,EAAY5jE,IAAU4jE,EAAY5jE,IAAU,GAAK,EACjDhkC,KAAK2jD,gBAET6jD,EAAcnkG,UAAU4kG,OAAS,SAAUjkE,EAAOkkE,QAChC,IAAVlkE,IAAoBA,EAAQ,IAChC,IAAI4jE,EAAc5nG,KAAK4nG,YACvB,GAAI5jE,KAAS4jE,EAAa,CACtB,GAAIM,SACON,EAAY5jE,OAElB,CACD4jE,EAAY5jE,IAAU,EACtB,IAAImkE,EAAQP,EAAY5jE,GACpBmkE,GAAS,UACFP,EAAY5jE,GAG3BhkC,KAAK+nG,aAGbP,EAAcnkG,UAAUykG,SAAW,WAC/B,OAAOjuE,OAAO0G,KAAKvgC,KAAK4nG,aAAa3hG,QAEzCuhG,EAAcnkG,UAAU0kG,SAAW,WAC/B,IAAK/nG,KAAK0nG,YAAc1nG,KAAK8nG,WAAY,CACrC9nG,KAAK0nG,WAAY,EACjB,MAAO1nG,KAAK2nG,QACR3nG,KAAK2nG,SAAU,EACf3nG,KAAKooG,UAETpoG,KAAK0nG,WAAY,IAGzBF,EAAcnkG,UAAUglG,MAAQ,WAC5BroG,KAAK2jD,eACL3jD,KAAK2nG,SAAU,EACf3nG,KAAK4nG,YAAc,IAEvBJ,EAAcnkG,UAAUsgD,aAAe,WAC/B3jD,KAAK6nG,YACLlkD,aAAa3jD,KAAK6nG,WAClB7nG,KAAK6nG,UAAY,IAGzBL,EAAcnkG,UAAU+kG,QAAU,WAC1BpoG,KAAKynG,eACLznG,KAAKynG,iBAGND,EAzEuB,GA4E9Bc,GAA4B,WAC5B,SAASA,EAAWC,EAAed,GAC/BznG,KAAKuoG,cAAgBA,EACrBvoG,KAAKynG,cAAgBA,EACrBznG,KAAKwoG,MAAQ,GACbxoG,KAAKyoG,cAAgB,IAAIjB,GAAcxnG,KAAKy0F,MAAM1wC,KAAK/jD,OAkC3D,OAhCAsoG,EAAWjlG,UAAU8qB,QAAU,SAAUu6E,EAAMhmD,GAC3C1iD,KAAKwoG,MAAMxgG,KAAK0gG,GAChB1oG,KAAKyoG,cAAct6E,QAAQu0B,IAE/B4lD,EAAWjlG,UAAU2kG,MAAQ,SAAUhkE,GACnChkC,KAAKyoG,cAAcT,MAAMhkE,IAE7BskE,EAAWjlG,UAAU4kG,OAAS,SAAUjkE,EAAOkkE,GAC3CloG,KAAKyoG,cAAcR,OAAOjkE,EAAOkkE,IAErCI,EAAWjlG,UAAUoxF,MAAQ,WACzB,IAAI+T,EAAQxoG,KAAKwoG,MACjB,MAAOA,EAAMviG,OAAQ,CACjB,IAAI0iG,EAAiB,GACjBD,OAAO,EACX,MAAQA,EAAOF,EAAMI,QACjB5oG,KAAK6oG,QAAQH,GACbC,EAAe3gG,KAAK0gG,GAExB1oG,KAAKooG,QAAQO,KAGrBL,EAAWjlG,UAAUwlG,QAAU,SAAUH,GACjC1oG,KAAKuoG,eACLvoG,KAAKuoG,cAAcG,IAG3BJ,EAAWjlG,UAAU+kG,QAAU,SAAUO,GACjC3oG,KAAKynG,eACLznG,KAAKynG,cAAckB,IAGpBL,EAvCoB,GA2C/B,SAASQ,GAAW59F,EAAa4pF,EAAap1E,GAC1C,IAAIrL,EAQJ,OALIA,EADA,iBAAiB8K,KAAKjU,EAAYkU,kBAC1BlU,EAAYqU,aAGZrU,EAAY27C,YAEjBnnC,EAAQuoD,YAAY5zD,EAAMpC,MAAOoC,EAAMnC,IAAKm6D,GAAgByoB,EAAYnjB,aAAeo3B,GAAiB79F,IAAe,CAC1H88E,eAAgB98E,EAAYsU,cAC5BupD,iBAAkB+rB,EAAY3nB,sBAKtC,SAAS47B,GAAiB79F,GACtB,IAAIkU,EAAmBlU,EAAYkU,iBACnC,GAAyB,SAArBA,EACA,MAAO,CAAEmgD,KAAM,WAEnB,GAAyB,UAArBngD,EACA,MAAO,CAAEmgD,KAAM,UAAW4E,MAAO,QAErC,IAAI7jD,EAAO+9C,GAAcnzD,EAAYqU,aAAatN,MAAO/G,EAAYqU,aAAarN,KAClF,OAAa,OAAToO,GAAiBA,EAAO,EAEjB,CAAEi/C,KAAM,UAAW4E,MAAO,QAASC,IAAK,WAG5C,CAAE7E,KAAM,UAAW4E,MAAO,OAAQC,IAAK,WAKlD,IAAI,GAAqC,WACrC,SAAS4kC,EAAoBloG,GACzB,IAAIuG,EAAQrH,KACZA,KAAKipG,mBAAqB5iC,GAAQrmE,KAAKkpG,qBACvClpG,KAAKmpG,uBAAyB9iC,GAAQrmE,KAAKopG,yBAC3CppG,KAAK4oF,mBAAqBviB,GAAQuiB,IAClC5oF,KAAKopF,YAAc/iB,GAAQ+iB,IAC3BppF,KAAK82F,iBAAmBQ,KACxBt3F,KAAKqpG,aAAehjC,GAAQgjC,IAC5BrpG,KAAKspG,WAAajjC,GAAQijC,IAC1BtpG,KAAKkiG,cAAgB77B,GAAQ67B,IAC7BliG,KAAK+6F,eAAiB10B,GAAQ00B,IAC9B/6F,KAAKupG,0BAA4B3iC,GAAc2iC,IAC/CvpG,KAAKwpG,aAAenjC,GAAQmjC,IAC5BxpG,KAAKypG,iBAAmB7iC,GAAc6iC,IACtCzpG,KAAK0pG,qBAAuBrjC,GAAQqjC,GAAsB9nC,IAC1D5hE,KAAK2pG,kBAAoBtjC,GAAQsjC,IACjC3pG,KAAK4pG,0BAA4BhjC,GAAcgjC,IAC/C5pG,KAAK8oG,WAAaziC,GAAQyiC,IAC1B9oG,KAAKm6C,QAAU,IAAIs3C,GACnBzxF,KAAK6pG,aAAe,IAAIvB,GAAWtoG,KAAK8pG,cAAc/lD,KAAK/jD,MAAOA,KAAK+pG,WAAWhmD,KAAK/jD,OACvFA,KAAKuhF,4BAA8B,GACnCvhF,KAAKgqG,8BAAgC,GACrChqG,KAAKiqG,wBAA0B,GAC/BjqG,KAAKkqG,0BAA4B,GACjClqG,KAAK2hF,+BAAiC,GACtC3hF,KAAK6pD,eAAiB,WAAc,OAAOxiD,EAAMlD,MACjDnE,KAAKyoD,SAAW,SAAUg4B,GACtBp5E,EAAMwiG,aAAa17E,QAAQsyD,IAE/BzgF,KAAKc,MAAQA,EACbd,KAAK6pG,aAAa7B,QAClB,IAAI9M,EAAyB,GACzBiP,EAAcnqG,KAAKipG,mBAAmBnoG,EAAMm6F,gBAAiBC,EAAwBp6F,EAAM+mD,aAC3FuiD,EAAkBD,EAAYtnB,gBAAgB7iE,aAAemqF,EAAY5gG,YAAYyW,YACrFqqF,EAAkBrqG,KAAKmpG,uBAAuBiB,EAAiBD,EAAarpG,EAAMm6F,gBAAiBC,GAGvGp6F,EAAM+mD,YAAYo5B,mBAAqBjhF,KACvCA,KAAKm6C,QAAQy3C,eAAe9wF,EAAM+mD,aAClC7nD,KAAKm6C,QAAQ03C,WAAWwY,EAAgB7mG,SACxC,IAAIg9E,EAAcG,GAAewpB,EAAYtnB,gBAAiBsnB,EAAYzqF,SACtExU,EAAcm/F,EAAgBjsF,qBAAqB0+E,MAAMtc,GACxDnG,GAAoBnvE,EAAY27C,YAAa25B,KAC9CA,EAAct1E,EAAYqU,aAAatN,OAY3C,IAVA,IAAIq4F,EAAkB,CAClB5qF,QAASyqF,EAAYzqF,QACrBlc,QAAS2mG,EAAYtnB,gBACrBt5E,YAAa4gG,EAAY5gG,YACzBs+C,YAAa/mD,EAAM+mD,YACnBY,SAAUzoD,KAAKyoD,SACftO,QAASn6C,KAAKm6C,QACd0P,eAAgB7pD,KAAK6pD,gBAGhB1/C,EAAK,EAAGvC,EAAKuiG,EAAY5gG,YAAY8sF,YAAalsF,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC7E,IAAIzH,EAAWkF,EAAGuC,GAClBzH,EAAS4nG,GAqBb,IAlBA,IAAI9zC,EAAeqoC,GAAiBsL,EAAYtnB,gBAAiB33E,EAAao/F,GAC1EC,EAAe,CACfrP,uBAAwBA,EACxBkP,gBAAiBA,EACjB5pB,YAAaA,EACbt1E,YAAaA,EACbyT,cAAe3e,KAAK4pG,0BAA0BU,GAC9C9zC,aAAcA,EACd13C,aAAc,GACdD,WAAY81D,KACZ61B,qBAAsB71B,KACtB/1D,cAAe,KACfzP,eAAgB,GAChBL,UAAW,KACXC,YAAa,KACb07F,gBAAiBzqG,KAAKypG,iBAAiBa,GAAiBG,iBAExDC,EAAkB,eAAS,eAAS,GAAIJ,GAAkBC,GACrDloG,EAAK,EAAGpC,EAAKkqG,EAAY5gG,YAAY4sF,SAAU9zF,EAAKpC,EAAGgG,OAAQ5D,IAAM,CAC1E,IAAIsoG,EAAU1qG,EAAGoC,GACjB,eAASkoG,EAAcI,EAAQ,KAAM,KAAMD,IAE3CE,GAAiBL,EAAcD,IAC/BtqG,KAAKm6C,QAAQC,QAAQ,WAAW,GAEpCp6C,KAAK6P,MAAQ06F,EACbvqG,KAAK+pG,aACL/pG,KAAK6pG,aAAa5B,SAqQtB,OAnQAe,EAAoB3lG,UAAUwnG,aAAe,SAAU5P,EAAiBljE,GACpE,IAAIj3B,EAAQd,KAAKc,MACjBA,EAAMm6F,gBAAkBljE,EAClB,eAAS,eAAS,GAAIj3B,EAAMm6F,iBAAkBA,GAAmBA,EACvEj7F,KAAK6pG,aAAa17E,QAAQ,CACtBlmB,KAAM,aAGd+gG,EAAoB3lG,UAAUymG,cAAgB,SAAUrpB,GACpD,IAAI74E,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MAAOsqC,EAAUvyC,EAAGuyC,QAC5D+gD,EAAyBwD,GAA6B7uF,EAAMqrF,uBAAwBza,GACpF0pB,EAAcnqG,KAAKipG,mBAAmBnoG,EAAMm6F,gBAAiBC,EAAwBp6F,EAAM+mD,aAC3FuiD,EAAkB3L,GAAe5uF,EAAMu6F,gBAAiB3pB,GACxD4pB,EAAkBrqG,KAAKmpG,uBAAuBiB,EAAiBD,EAAarpG,EAAMm6F,gBAAiBC,GAGvGp6F,EAAM+mD,YAAYo5B,mBAAqBjhF,KACvCm6C,EAAQy3C,eAAe9wF,EAAM+mD,aAC7B1N,EAAQ03C,WAAWwY,EAAgB7mG,SACnC,IAAI8mG,EAAkB,CAClB5qF,QAASyqF,EAAYzqF,QACrBlc,QAAS2mG,EAAYtnB,gBACrBt5E,YAAa4gG,EAAY5gG,YACzBs+C,YAAa/mD,EAAM+mD,YACnBY,SAAUzoD,KAAKyoD,SACftO,QAASA,EACT0P,eAAgB7pD,KAAK6pD,gBAErB22B,EAAc3wE,EAAM2wE,YAAat1E,EAAc2E,EAAM3E,YACrDlL,KAAKmE,MAAQnE,KAAKmE,KAAKia,uBAAyBisF,EAAgBjsF,uBAChElT,EAAcm/F,EAAgBjsF,qBAAqB0+E,MAAMtc,IAE7DA,EAAcD,GAAkBC,EAAaC,GAC7Cv1E,EAAcyzF,GAAkBzzF,EAAau1E,EAAQD,EAAa6pB,EAAgBjsF,sBAC9D,SAAhBqiE,EAAOx4E,MACS,SAAhBw4E,EAAOx4E,MACNoyE,GAAoBnvE,EAAYqU,aAAcihE,KAC/CA,EAAct1E,EAAYqU,aAAatN,OA4B3C,IA1BA,IAAIukD,EAAewoC,GAAmBnvF,EAAM2mD,aAAciqB,EAAQv1E,EAAao/F,GAC3EzrF,EAAa2hF,GAAiB3wF,EAAMgP,WAAY4hE,EAAQjqB,EAActrD,EAAao/F,GACnFQ,EAAkBtL,GAA2BhpC,GAC7Cg0C,EAAwBM,IAAoBT,EAAgB7mG,QAAQgsE,2BACnE3/D,EAAM26F,sBACP3rF,EACAxc,EAAKrC,KAAKypG,iBAAiBa,GAAkBS,EAAoB1oG,EAAG0oG,kBAAmBN,EAAkBpoG,EAAGooG,gBAC5GO,EAAkBhrG,KAAK0pG,qBAAqBlzC,GAC5C13C,EAAe9e,KAAK2pG,kBAAkBa,EAAqBl/C,KAAMy/C,EAAmBC,GACpFvV,EAAW,CACXyF,uBAAwBA,EACxBkP,gBAAiBA,EACjB5pB,YAAaA,EACbt1E,YAAaA,EACbsrD,aAAcA,EACd33C,WAAYA,EACZ2rF,qBAAsBA,EACtBC,gBAAiBA,EACjB3rF,aAAcA,EACdH,cAAe3e,KAAK4pG,0BAA0BU,GAC9C1rF,cAAe4iF,GAAoB3xF,EAAM+O,cAAe6hE,GACxDtxE,eAAgBuyF,GAAoB7xF,EAAMV,eAAgBsxE,GAC1D3xE,UAAW8yF,GAAgB/xF,EAAMf,UAAW2xE,GAC5C1xE,YAAagzF,GAAkBlyF,EAAMd,YAAa0xE,IAElDiqB,EAAkB,eAAS,eAAS,GAAIJ,GAAkB7U,GACrDtrF,EAAK,EAAGlK,EAAKkqG,EAAY5gG,YAAY4sF,SAAUhsF,EAAKlK,EAAGgG,OAAQkE,IAAM,CAC1E,IAAIwgG,EAAU1qG,EAAGkK,GACjB,eAASsrF,EAAUkV,EAAQ96F,EAAO4wE,EAAQiqB,IAE9C,IAAIO,EAAaL,GAAiB/6F,EAAOy6F,GACrCY,EAAYN,GAAiBnV,EAAU6U,IAEtCW,GAAcC,EACf/wD,EAAQC,QAAQ,WAAW,GAEtB6wD,IAAeC,GACpB/wD,EAAQC,QAAQ,WAAW,GAE/Bp6C,KAAK6P,MAAQ4lF,EACT30F,EAAMqqG,UACNrqG,EAAMqqG,SAAS1qB,IAGvBuoB,EAAoB3lG,UAAU0mG,WAAa,WACvC,IAAIniG,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MACxCu7F,EAAUprG,KAAKmE,KACfgmG,EAAcnqG,KAAKipG,mBAAmBnoG,EAAMm6F,gBAAiBprF,EAAMqrF,uBAAwBp6F,EAAM+mD,aACjGwiD,EAAkBrqG,KAAKmpG,uBAAuBt5F,EAAMu6F,gBAAiBD,EAAarpG,EAAMm6F,gBAAiBprF,EAAMqrF,wBAC/G/2F,EAAOnE,KAAKmE,KAAO,eAAS,eAAS,eAAS,CAAEk7E,UAAWr/E,KAAK8oG,WAAWj5F,EAAM3E,YAAam/F,EAAgB7mG,QAAS2mG,EAAYzqF,SAAUmoC,YAAa/mD,EAAM+mD,YAAaY,SAAUzoD,KAAKyoD,SAAUtO,QAASn6C,KAAKm6C,QAAS0P,eAAgB7pD,KAAK6pD,gBAAkBsgD,GAAcE,GAAkBx6F,GACpSw7F,EAAiBlB,EAAY5gG,YAAYotF,qBACzC2U,EAAqBF,GAAWA,EAAQvoB,gBACxC0oB,EAAqBpB,EAAYtnB,gBACrC,GAAIyoB,GAAsBA,IAAuBC,EAM7C,IAAK,IAAIlqB,KALLiqB,EAAmB3hC,WAAa4hC,EAAmB5hC,WAEnD95D,EAAM2mD,aAAeryD,EAAKqyD,aAAe+oC,GAA8Bp7F,EAAKqyD,aAAc3mD,EAAM3E,YAAa/G,GAC7G0L,EAAMgP,WAAa1a,EAAK0a,WAAasiF,GAAsBh9F,EAAK0a,WAAYusF,EAAQ1rF,QAASvb,EAAKub,UAE/E2rF,EACfC,EAAmBjqB,KAAgBkqB,EAAmBlqB,IACtDgqB,EAAehqB,GAAYkqB,EAAmBlqB,GAAal9E,GAInErD,EAAM0qG,QACN1qG,EAAM0qG,OAAOrnG,IAGrB6kG,EAAoB3lG,UAAU6lG,oBAAsB,SAAUjO,EAAiBC,EAAwBrzC,GAEnG,IAAIjgD,EAAK5H,KAAKyrG,0BAA0BxQ,EAAiBC,GAAyBwQ,EAAiB9jG,EAAG8jG,eAAgBniG,EAAc3B,EAAG2B,YAAa4xF,EAAiBvzF,EAAGuzF,eAAgBwQ,EAAsB/jG,EAAG+jG,oBAAqBr7C,EAAQ1oD,EAAG0oD,MACjPs7C,GAAmBt7C,GACnB,IAAI5wC,EAAU1f,KAAKqpG,aAAaqC,EAAe/hC,SAAU+hC,EAAeliC,OAAQkiC,EAAe39B,sBAAuB29B,EAAet6B,SAAUs6B,EAAepiC,SAAU//D,EAAaoiG,EAAqBD,EAAex+B,uBACrN+U,EAAYjiF,KAAK+6F,eAAexxF,EAAY0W,MAAOg7E,EAAiBC,EAAwBC,GAC5Fn3E,EAAQhkB,KAAKspG,WAAWoC,EAAgBniG,GACxC44E,EAAgBniF,KAAKkiG,cAAcwJ,EAAgBzQ,EAAiBj3E,EAAOi+D,EAAWp6B,GAC1F,MAAO,CACHg7B,gBAAiB6oB,EACjBniG,YAAaA,EACbmW,QAASA,EACTuiE,UAAWA,EACXj+D,MAAOA,EACPm+D,cAAeA,EACfgZ,eAAgBA,EAChB1Z,oBAAqBkqB,EAAoBhoG,MAIjDqlG,EAAoB3lG,UAAUooG,0BAA4B,SAAUxQ,EAAiBC,GACjF,IAAItzF,EAAKssE,GAAgB,CACrB1B,GACAyoB,EACAC,IACAlsB,EAAUpnE,EAAGonE,QAASxF,EAAS5hE,EAAG4hE,OAClCmiC,EAAsB3rG,KAAK4oF,mBAAmB5Z,GAC9CyS,EAAsBkqB,EAAoBhoG,IAC1Cw3F,EAAiBn7F,KAAKopF,YAAY5f,GAAUmiC,EAAoB7iB,YAAarH,GAAqBj+E,QAClG+F,EAAcvJ,KAAK82F,iBAAiBmE,EAAgB5kC,SAAW,GAAIwwC,IACnExyB,EAAWr0E,KAAK2hF,+BAAiC,eAAS,eAAS,eAAS,eAAS,eAAS,GAAIrV,IAAuBoG,IAA6BgB,IAA2BnqE,EAAYuoD,kBAAmBvoD,EAAYgoB,gBAC5N++B,EAAQ,GACRgkB,EAAMJ,GAAgB,CACtB1B,GACA2oB,EACAF,EACAC,IAEA7qC,EAAU,GACVw7C,EAAa7rG,KAAKuhF,4BAClBuqB,EAAiB9rG,KAAKgqG,8BACtB+B,GAAa,EACjB,IAAK,IAAI1qB,KAAc/M,EACA,YAAf+M,IACI/M,EAAI+M,KAAgBwqB,EAAWxqB,IAC9BvN,GAA2BuN,IACvBA,KAAcwqB,GACf/3B,GAA2BuN,GAAYwqB,EAAWxqB,GAAa/M,EAAI+M,IACvEhxB,EAAQgxB,GAAcyqB,EAAezqB,GAEhChN,EAASgN,IACdhxB,EAAQgxB,GAAchN,EAASgN,GAAY/M,EAAI+M,IAC/C0qB,GAAa,GAGbz7C,EAAM+wB,GAAcwqB,EAAWxqB,IAQ3C,OAJI0qB,IACA/rG,KAAKuhF,4BAA8BjN,EACnCt0E,KAAKgqG,8BAAgC35C,GAElC,CACHsoC,WAAY34F,KAAKuhF,4BACjBmqB,eAAgB1rG,KAAKgqG,8BACrBzgG,YAAaA,EACboiG,oBAAqBA,EACrBxQ,eAAgBA,EAChB7qC,MAAOA,IAGf04C,EAAoB3lG,UAAU+lG,wBAA0B,SAAUvnB,EAAUsoB,EAAalP,EAAiBC,GACtG,IAAIzyF,EAAW0hG,EAAYloB,UAAUJ,GACrC,IAAKp5E,EACD,MAAM,IAAIgB,MAAM,aAAgBo4E,EAAW,8EAE/C,IAAIj6E,EAAK5H,KAAKgsG,sBAAsBvjG,EAAU0hG,EAAY5gG,YAAa4gG,EAAYhP,eAAgBF,EAAiBC,GAAyBwQ,EAAiB9jG,EAAG8jG,eAAgBp7C,EAAQ1oD,EAAG0oD,MAC5Ls7C,GAAmBt7C,GACnB,IAAIlyC,EAAuBpe,KAAKupG,0BAA0B,CACtDppF,0BAA2B1X,EAASuzF,eAAe77E,0BACnDE,SAAU5X,EAAS4X,SACnBk7E,aAAc9yF,EAAS8yF,aACvB9pE,eAAgBhpB,EAASuzF,eAAevqE,eACxC/R,QAASyqF,EAAYzqF,QACrBmoC,YAAa7nD,KAAKc,MAAM+mD,YACxB3iC,YAAawmF,EAAexmF,YAC5BC,YAAaumF,EAAevmF,YAC5BwpD,oBAAqB+8B,EAAe/8B,oBACpC0C,SAAUq6B,EAAer6B,SACzBC,cAAeo6B,EAAep6B,cAC9BC,cAAem6B,EAAen6B,cAC9BC,WAAYk6B,EAAel6B,WAC3B1D,SAAU49B,EAAe59B,SACzBgT,SAAU4qB,EAAe5rD,IACzBy9C,gBAAiBmO,EAAej6B,WAChCysB,kBAAmBwN,EAAeh6B,aAClC9xD,UAAW8rF,EAAe9rF,UAC1BC,eAAgB6rF,EAAe7rF,iBAE/ByB,EAAUthB,KAAKwpG,aAAa3nB,EAAU7hF,KAAK6pD,eAAgBsgD,EAAYzqF,SAC3E,MAAO,CAAEjX,SAAUA,EAAUjF,QAASkoG,EAAgBttF,qBAAsBA,EAAsBkD,QAASA,IAE/G0nF,EAAoB3lG,UAAU2oG,sBAAwB,SAAUvjG,EAAUc,EAAa4xF,EAAgBF,EAAiBC,GACpH,IAAI5mB,EAAMJ,GAAgB,CACtB1B,GACA/pE,EAASuzF,eACTb,EACAF,EACAxyF,EAASwyF,gBACTC,IAEA7mB,EAAW,eAAS,eAAS,eAAS,eAAS,eAAS,eAAS,GAAI/H,IAAuBoG,IAA6BgB,IAA2BM,IAAuBzqE,EAAYuoD,kBAAmBvoD,EAAYgoB,gBACtN8+B,EAAU,GACVw7C,EAAa7rG,KAAKiqG,wBAClB6B,EAAiB9rG,KAAKkqG,0BACtB6B,GAAa,EACbz7C,EAAQ,GACZ,IAAK,IAAI+wB,KAAc/M,EACfA,EAAI+M,KAAgBwqB,EAAWxqB,IAC9BvN,GAA2BuN,IACxBvN,GAA2BuN,GAAY/M,EAAI+M,GAAawqB,EAAWxqB,IACvEhxB,EAAQgxB,GAAcyqB,EAAezqB,IAGjC/M,EAAI+M,KAAgBrhF,KAAKuhF,4BAA4BF,IACpDvN,GAA2BuN,IACxBvN,GAA2BuN,GAAY/M,EAAI+M,GAAarhF,KAAKuhF,4BAA4BF,IACzFA,KAAcrhF,KAAKgqG,gCACnB35C,EAAQgxB,GAAcrhF,KAAKgqG,8BAA8B3oB,IAGxDhN,EAASgN,GACdhxB,EAAQgxB,GAAchN,EAASgN,GAAY/M,EAAI+M,IAG/C/wB,EAAM+wB,GAAc/M,EAAI+M,GAE5B0qB,GAAa,GAOrB,OAJIA,IACA/rG,KAAKiqG,wBAA0B31B,EAC/Bt0E,KAAKkqG,0BAA4B75C,GAE9B,CACHsoC,WAAY34F,KAAKiqG,wBACjByB,eAAgB1rG,KAAKkqG,0BACrB55C,MAAOA,IAGR04C,EA7V6B,GA+VxC,SAASK,GAAa1/B,EAAUsiC,EAAgBl+B,EAAuBqD,EAAU9H,EAAU//D,EAAaoiG,EAAqB5iC,GACzH,IAAIS,EAAS4f,GAAY6iB,GAAkBN,EAAoB7iB,YAAa6iB,EAAoBhoG,KAChG,OAAO,IAAImjF,GAAQ,CACfze,eAAgB,UAChBsB,SAAUA,EACVqd,kBAAmBz9E,EAAYmtF,mBAC/BltB,OAAQA,EACRuE,sBAAuBA,EACvBqD,SAAUA,EACV9H,SAAUA,EACV6C,aAAc5iE,EAAY4iE,aAC1BpD,iBAAkBA,IAG1B,SAASugC,GAAW9lG,EAAS+F,GACzB,IAAI2iG,EAAa3iG,EAAYktF,aAAajzF,EAAQyrE,cAAgB,GAClE,OAAO,IAAIi9B,EAAW1oG,GAE1B,SAAS+lG,GAA0BzoG,GAC/B,IAAIqrG,EAA4BrrG,EAAMqf,2BAA6Bq8E,GACnE,OAAO,IAAI2P,EAA0BrrG,GAEzC,SAAS0oG,GAAavhG,EAAM4hD,EAAgBnqC,GACxC,OAAO,IAAI0/D,GAAQn3E,EAAM4hD,EAAgBnqC,GAE7C,SAASgqF,GAAqBlzC,GAC1B,OAAO+K,GAAQ/K,GAAc,SAAUie,GAAe,OAAOA,EAAY7pE,MAE7E,SAAS++F,GAAkBluB,EAAWsvB,EAAmBC,GACrD,IAAIlsF,EAAe,CAAE,GAAIisF,GACzB,IAAK,IAAIx/C,KAASkwB,EAAW,CACzB,IAAInvE,EAAMmvE,EAAUlwB,GAChBj/C,EAAIikD,UAAYy6C,EAAgB1+F,EAAIikD,YACpCzxC,EAAaysC,GAASy/C,EAAgB1+F,EAAIikD,WAGlD,OAAOzxC,EAEX,SAAS2qF,GAAiBa,GACtB,IAAI9mG,EAAU8mG,EAAgB9mG,QAC9B,MAAO,CACHunG,kBAAmB9zB,GAAc,CAC7B7qE,QAAS5I,EAAQqsE,aACjBplB,SAAUjnD,EAAQinD,SAClB+rB,cAAehzE,EAAQssE,mBACvBv7D,iBAAkB/Q,EAAQusE,sBAC1B0G,WAAYjzE,EAAQysE,gBACpByG,QAAyC,mBAAzBlzE,EAAQwsE,aAA6BxsE,EAAQwsE,kBAAeprD,EAC5E+xD,MAAOnzE,EAAQ0sE,WACfniE,gBAAiBvK,EAAQ2sE,qBACzBriE,YAAatK,EAAQ4sE,iBACrByG,UAAWrzE,EAAQ6sE,eACnBuG,MAAOpzE,EAAQ8sE,YAEhBg6B,GACHG,gBAAiBxzB,GAAc,CAC3BR,WAAYjzE,EAAQmtE,iBACpB+F,QAA0C,mBAA1BlzE,EAAQotE,cAA8BptE,EAAQotE,mBAAgBhsD,EAC9E+xD,MAAOnzE,EAAQqtE,aAChBy5B,IAGX,SAASM,GAAiB/6F,EAAOhI,GAC7B,IAAK,IAAIsC,EAAK,EAAGvC,EAAKC,EAAQ0B,YAAY6sF,eAAgBjsF,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC5E,IAAIiiG,EAAgBxkG,EAAGuC,GACvB,GAAIiiG,EAAcv8F,GACd,OAAO,EAGf,OAAO,EAEX,SAAS+5F,GAA0BU,GAC/B,OAAOpgB,GAAmBogB,EAAgB9mG,QAAQmb,cAAe2rF,GAErE,SAASsB,GAAmBpoG,EAAS6oG,GACjC,IAAK,IAAIhrB,KAAc79E,EACnBq+B,QAAQC,KAAK,mBAAqBu/C,EAAa,KAC1CgrB,EAAW,cAAgBA,EAAW,IAAM,MAKf,SAAUjlG,GAEhD,SAASklG,EAAqBxrG,GAC1B,IAAIuG,EAAQD,EAAO7D,KAAKvD,KAAMc,IAAUd,KAexC,OAdAqH,EAAMklG,WAAa,SAAUpoG,GACpBkD,EAAMmlG,YAKPnlG,EAAMuR,SAASzU,GAHfkD,EAAMwI,MAAQ1L,GAMtBkD,EAAMmlG,YAAc,IAAI,GAAoB,CACxCvR,gBAAiBn6F,EAAMm6F,gBACvBpzC,YAAa/mD,EAAM+mD,YACnB2jD,OAAQnkG,EAAMklG,aAEXllG,EAjBX,eAAUilG,EAAsBllG,GAmBhCklG,EAAqBjpG,UAAUvD,OAAS,WACpC,OAAOE,KAAKc,MAAMksB,SAAShtB,KAAK6P,QAEpCy8F,EAAqBjpG,UAAUgU,mBAAqB,SAAUC,GAC1D,IAAIm1F,EAAqBzsG,KAAKc,MAAMm6F,gBAChCwR,IAAuBn1F,EAAU2jF,iBACjCj7F,KAAKwsG,YAAY3B,aAAa4B,KA1BD,CA8BvCt1C,IAWqC,WACnC,SAASu1C,EAAkBvlC,GACvBnnE,KAAKmnE,aAAeA,IAFU,GAAtC,IAOI,GAA8B,WAC9B,SAASwlC,IAEL3sG,KAAKkR,aAAc,EACnBlR,KAAKwR,gBAAiB,EACtBxR,KAAKyR,UAAY,EACjBzR,KAAK2R,aAAe,EACpB3R,KAAK6oB,YAAc,GACnB7oB,KAAK0U,eAAiB,GACtB1U,KAAK4sG,UAAY,GAsJrB,OApJAD,EAAatpG,UAAU+O,QAAU,SAAUsoF,GAEvC,IADA,IAAIvoF,EAAgB,GACXhI,EAAK,EAAGi8F,EAAW1L,EAAQvwF,EAAKi8F,EAASngG,OAAQkE,IAAM,CAC5D,IAAIy6B,EAAQwhE,EAASj8F,GACrBnK,KAAK6sG,YAAYjoE,EAAOzyB,GAE5B,OAAOA,GAEXw6F,EAAatpG,UAAUwpG,YAAc,SAAUj4F,EAAOzC,GAClD,IAAI4C,EAAY/U,KAAK8sG,cAAcl4F,GACnC,OAAI5U,KAAK+sG,iBAAiBh4F,EAAWH,IACjC5U,KAAKgtG,cAAcp4F,EAAOG,GACnB,GAEJ/U,KAAK8U,uBAAuBC,EAAWH,EAAOzC,IAEzDw6F,EAAatpG,UAAU0pG,iBAAmB,SAAUh4F,EAAWH,GAC3D,QAA2B,IAAnB5U,KAAKyR,UAAmBsD,EAAUlB,WAAae,EAAM5C,WAAahS,KAAKyR,aACpD,IAAtBzR,KAAK2R,aAAsBoD,EAAUk4F,SAAWjtG,KAAK2R,cAG9Dg7F,EAAatpG,UAAUyR,uBAAyB,SAAUC,EAAWH,EAAOzC,GACxE,OAAInS,KAAKwR,gBAAkBuD,EAAUC,cAC1BhV,KAAKsV,WAAWV,EAAOG,EAAUC,cAAe7C,IAE3DA,EAAcnK,KAAK4M,GACZ,IAEX+3F,EAAatpG,UAAUiS,WAAa,SAAUV,EAAOs4F,EAAS/6F,GAC1D,IAAIg7F,EAAU,EACVC,EAAqB,GACrBC,EAAYz4F,EAAM/K,KAClByjG,EAAcJ,EAAQrjG,KAe1B,OAdIwjG,EAAUp7F,MAAQq7F,EAAYr7F,QAC9Bk7F,GAAWntG,KAAK6sG,YAAY,CACxB96F,MAAO6C,EAAM7C,MACbC,UAAW4C,EAAM5C,UACjBnI,KAAM,CAAEoI,MAAOo7F,EAAUp7F,MAAOC,IAAKo7F,EAAYr7F,QAClDm7F,IAEHC,EAAUn7F,IAAMo7F,EAAYp7F,MAC5Bi7F,GAAWntG,KAAK6sG,YAAY,CACxB96F,MAAO6C,EAAM7C,MACbC,UAAW4C,EAAM5C,UACjBnI,KAAM,CAAEoI,MAAOq7F,EAAYp7F,IAAKA,IAAKm7F,EAAUn7F,MAChDk7F,IAEHD,GACAh7F,EAAcnK,KAAKV,MAAM6K,EAAe,eAAc,CAAC,CAC/CJ,MAAO6C,EAAM7C,MACbC,UAAW4C,EAAM5C,UACjBnI,KAAM0jG,GAAeD,EAAaD,KAClCD,IACDD,IAEXh7F,EAAcnK,KAAK4M,GACZ,IAEX+3F,EAAatpG,UAAU2pG,cAAgB,SAAUp4F,EAAOG,GACpD,IAAInN,EAAK5H,KAAM0U,EAAiB9M,EAAG8M,eAAgBmU,EAAcjhB,EAAGihB,aACzC,IAAvB9T,EAAU8S,SAEV2lF,GAAS3kF,EAAa9T,EAAUF,MAAOE,EAAUlB,YACjD25F,GAAS94F,EAAgBK,EAAUF,MAAO,CAACD,KAI3C44F,GAAS94F,EAAeK,EAAUF,OAAQE,EAAU8S,QAASjT,GAEjE5U,KAAK4sG,UAAUa,GAAc74F,IAAUG,EAAUk4F,UAErDN,EAAatpG,UAAUypG,cAAgB,SAAUY,GAQ7C,IAPA,IAAI9lG,EAAK5H,KAAM6oB,EAAcjhB,EAAGihB,YAAanU,EAAiB9M,EAAG8M,eAAgBxD,EAActJ,EAAGsJ,YAAa07F,EAAYhlG,EAAGglG,UAC1H5jF,EAAWH,EAAY5iB,OACvB0nG,EAAiB,EACjB14F,GAAiB,EACjBC,GAAmB,EACnBF,EAAgB,KAChBi4F,EAAW,EACNW,EAAgB,EAAGA,EAAgB5kF,EAAU4kF,GAAiB,EAAG,CACtE,IAAIC,EAAgBhlF,EAAY+kF,GAGhC,IAAK18F,GAAe28F,GAAiBF,EAAiBD,EAAS17F,UAC3D,MAEJ,IAAI87F,EAAkBp5F,EAAek5F,GACjCG,OAAgB,EAChBC,EAAYC,GAAaH,EAAiBJ,EAAS7jG,KAAKoI,MAAOi8F,IAC/DC,EAAeH,EAAU,GAAKA,EAAU,GAC5C,OACCD,EAAgBD,EAAgBK,KAC7BJ,EAAclkG,KAAKoI,MAAQy7F,EAAS7jG,KAAKqI,IAC3C,CACE,IAAIk8F,EAAsBP,EAAgBE,EAAc/7F,UAEpDo8F,EAAsBT,IACtBA,EAAiBS,EACjBp5F,EAAgB+4F,EAChB94F,EAAgB24F,EAChB14F,EAAkBi5F,GAGlBC,IAAwBT,IAExBV,EAAW5zF,KAAKI,IAAIwzF,EAAUL,EAAUa,GAAcM,IAAkB,IAE5EI,GAAgB,GAIxB,IAAIE,EAAY,EAChB,GAAIr5F,EAAe,CACfq5F,EAAYp5F,EAAgB,EAC5B,MAAOo5F,EAAYrlF,GAAYH,EAAYwlF,GAAaV,EACpDU,GAAa,EAIrB,IAAIC,GAAe,EAInB,OAHID,EAAYrlF,GAAYH,EAAYwlF,KAAeV,IACnDW,EAAcL,GAAav5F,EAAe25F,GAAYX,EAAS7jG,KAAKqI,IAAKg8F,IAAiB,IAEvF,CACHj5F,cAAeA,EACfC,gBAAiBA,EACjBF,cAAeA,EACfi4F,SAAUA,EACVp5F,WAAY85F,EACZ94F,MAAOw5F,EACPxmF,QAASymF,IAIjB3B,EAAatpG,UAAUiP,QAAU,WAI7B,IAHA,IAAI1K,EAAK5H,KAAM0U,EAAiB9M,EAAG8M,eAAgBmU,EAAcjhB,EAAGihB,YAChEG,EAAWtU,EAAezO,OAC1BuN,EAAQ,GACHqB,EAAQ,EAAGA,EAAQmU,EAAUnU,GAAS,EAG3C,IAFA,IAAIoU,EAAUvU,EAAeG,GACzBhB,EAAagV,EAAYhU,GACpB1K,EAAK,EAAGokG,EAAYtlF,EAAS9e,EAAKokG,EAAUtoG,OAAQkE,IAAM,CAC/D,IAAIyK,EAAQ25F,EAAUpkG,GACtBqJ,EAAMxL,KAAK,eAAS,eAAS,GAAI4M,GAAQ,CAAEf,WAAYA,KAG/D,OAAOL,GAEJm5F,EA/JsB,GAiKjC,SAASuB,GAAgBt5F,GACrB,OAAOA,EAAM/K,KAAKqI,IAEtB,SAASu7F,GAAc74F,GACnB,OAAOA,EAAM7C,MAAQ,IAAM6C,EAAM/K,KAAKoI,MAG1C,SAASu8F,GAAyBvlF,GAE9B,IADA,IAAIwlF,EAAS,GACJtkG,EAAK,EAAGukG,EAAYzlF,EAAS9e,EAAKukG,EAAUzoG,OAAQkE,IAAM,CAO/D,IANA,IAAIyK,EAAQ85F,EAAUvkG,GAClBwkG,EAAiB,GACjBC,EAAc,CACd/kG,KAAM+K,EAAM/K,KACZof,QAAS,CAACrU,IAELhN,EAAK,EAAGinG,EAAWJ,EAAQ7mG,EAAKinG,EAAS5oG,OAAQ2B,IAAM,CAC5D,IAAIknG,EAAQD,EAASjnG,GACjB2lG,GAAeuB,EAAMjlG,KAAM+kG,EAAY/kG,MACvC+kG,EAAc,CACV3lF,QAAS6lF,EAAM7lF,QAAQpgB,OAAO+lG,EAAY3lF,SAC1Cpf,KAAMklG,GAAUD,EAAMjlG,KAAM+kG,EAAY/kG,OAI5C8kG,EAAe3mG,KAAK8mG,GAG5BH,EAAe3mG,KAAK4mG,GACpBH,EAASE,EAEb,OAAOF,EAEX,SAASM,GAAUlxB,EAAOC,GACtB,MAAO,CACH7rE,MAAOoH,KAAKwM,IAAIg4D,EAAM5rE,MAAO6rE,EAAM7rE,OACnCC,IAAKmH,KAAKI,IAAIokE,EAAM3rE,IAAK4rE,EAAM5rE,MAGvC,SAASq7F,GAAe1vB,EAAOC,GAC3B,IAAI7rE,EAAQoH,KAAKI,IAAIokE,EAAM5rE,MAAO6rE,EAAM7rE,OACpCC,EAAMmH,KAAKwM,IAAIg4D,EAAM3rE,IAAK4rE,EAAM5rE,KACpC,OAAID,EAAQC,EACD,CAAED,MAAOA,EAAOC,IAAKA,GAEzB,KAIX,SAASs7F,GAAS5mB,EAAK70E,EAAOolB,GAC1ByvD,EAAI0f,OAAOv0F,EAAO,EAAGolB,GAEzB,SAAS82E,GAAaxlF,EAAGumF,EAAWC,GAChC,IAAI1sC,EAAa,EACbC,EAAW/5C,EAAExiB,OACjB,IAAKu8D,GAAYwsC,EAAYC,EAAWxmF,EAAE85C,IACtC,MAAO,CAAC,EAAG,GAEf,GAAIysC,EAAYC,EAAWxmF,EAAE+5C,EAAW,IACpC,MAAO,CAACA,EAAU,GAEtB,MAAOD,EAAaC,EAAU,CAC1B,IAAI0sC,EAAc71F,KAAKyM,MAAMy8C,GAAcC,EAAWD,GAAc,GAChE4sC,EAAYF,EAAWxmF,EAAEymF,IAC7B,GAAIF,EAAYG,EACZ3sC,EAAW0sC,MAEV,MAAIF,EAAYG,GAIjB,MAAO,CAACD,EAAa,GAHrB3sC,EAAa2sC,EAAc,GAMnC,MAAO,CAAC3sC,EAAY,GAGxB,IAAI6sC,GAA6B,WAC7B,SAASA,EAAY3nD,GACjBznD,KAAKkH,UAAYugD,EAASvgD,UAC1BlH,KAAKkb,kBAAoBusC,EAASvsC,mBAAqB,KAI3D,OAFAk0F,EAAY/rG,UAAU64C,QAAU,aAEzBkzD,EAPqB,GAShC,SAASC,GAAyBnoG,EAAW09B,GACzC,MAAO,CACH19B,UAAWA,EACX6I,GAAI60B,EAAM70B,GACVy8C,eAAwC,MAAxB5nB,EAAM4nB,gBAAyB5nB,EAAM4nB,eACrDtxC,kBAAmB0pB,EAAM1pB,mBAAqB,MAGtD,SAASo0F,GAA2B7nD,GAChC,IAAI7/C,EACJ,OAAOA,EAAK,GACRA,EAAG6/C,EAASvgD,UAAUq8B,KAAOkkB,EAC7B7/C,EAGR,IAAI2nG,GAA2B,GAe3BC,GAAiC,WACjC,SAASA,EAAgBz/F,EAAIupC,GACzBt5C,KAAKm6C,QAAU,IAAIs3C,GAavB,OAXA+d,EAAgBnsG,UAAU64C,QAAU,aAEpCszD,EAAgBnsG,UAAU4gD,mBAAqB,SAAUzG,KAGzDgyD,EAAgBnsG,UAAU6gD,qBAAuB,SAAU1G,KAG3DgyD,EAAgBnsG,UAAU8gD,qBAAuB,SAAU3G,KAGpDgyD,EAfyB,GAoBhCC,GAAS,GAMTC,GAAqB,CACrBj/C,UAAWsT,GACX1jD,SAAU0jD,GACVtrB,OAAQ3hC,QACRy5C,SAAUnvB,QAEd,SAASuuE,GAAcr7B,GACnB,IAAI1sE,EAAKwsE,GAAYE,EAAKo7B,IAAqBr/C,EAAUzoD,EAAGyoD,QAASC,EAAQ1oD,EAAG0oD,MAChF,MAAO,CACHG,UAAWJ,EAAQI,WAAa,KAChCpwC,SAAUgwC,EAAQhwC,UAAY,KAC9Bo4B,OAA0B,MAAlB4X,EAAQ5X,QAAiB4X,EAAQ5X,OACzC8X,SAAUF,EAAQE,SAClBJ,cAAeG,GAIvB,IAAI,GAAgC,SAAUlpD,GAE1C,SAASwoG,IACL,OAAkB,OAAXxoG,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAqC/D,OAvCA,eAAU4vG,EAAgBxoG,GAI1BwoG,EAAevsG,UAAUvD,OAAS,WAC9B,IAAIuH,EAAQrH,KACRgtB,EAAWhtB,KAAKc,MAAM+uG,aAAalsG,KAAI,SAAUmsG,GAAe,OAAOzoG,EAAM0oG,kBAAkBD,MACnG,OAAO14C,EAAc9vD,WAAM,EAAQ,eAAc,CAAC,MAAO,CAAEsB,UAAW,qBAAuBokB,KAEjG4iF,EAAevsG,UAAU0sG,kBAAoB,SAAUD,GAKnD,IAJA,IAAIhvG,EAAQd,KAAKc,MACbkjB,EAAQhkB,KAAK6H,QAAQmc,MACrBgJ,EAAW,GACXgjF,GAAgB,EACX7lG,EAAK,EAAG8lG,EAAgBH,EAAa3lG,EAAK8lG,EAAchqG,OAAQkE,IAAM,CAC3E,IAAI+lG,EAASD,EAAc9lG,GACvBwpF,EAAauc,EAAOvc,WAAYyP,EAAc8M,EAAO9M,YAAazvB,EAAau8B,EAAOv8B,WAAY0vB,EAAa6M,EAAO7M,WAAYjH,EAAa8T,EAAO9T,WAC1J,GAAmB,UAAfzI,EACAqc,GAAgB,EAChBhjF,EAAShlB,KAAKovD,EAAc,KAAM,CAAExuD,UAAW,mBAAoB+C,GAAI7K,EAAMqvG,SAAWrvG,EAAMsD,YAE7F,CACD,IAAIgsG,EAAYzc,IAAe7yF,EAAMuvG,aACjClgG,GAAerP,EAAMwvG,gBAAiC,UAAf3c,IACrC7yF,EAAMyvG,eAAgC,SAAf5c,IACvB7yF,EAAM0vG,eAAgC,SAAf7c,EACzB8c,EAAgB,CAAC,MAAQ9c,EAAa,UAAW3vE,EAAMC,SAAS,WAChEmsF,GACAK,EAAczoG,KAAKgc,EAAMC,SAAS,iBAEtC+I,EAAShlB,KAAKovD,EAAc,SAAU,CAAEnvD,KAAM,SAAU7D,MAA6B,oBAAfg4F,EAA4BA,EAAWt7F,EAAM2iG,SAAWrH,EAAYr7D,SAAU5wB,EAAY,eAAgBigG,EAAWxnG,UAAW6nG,EAAc3nG,KAAK,KAAMqe,QAASi8E,GAAezvB,IAAe0vB,EAAajsC,EAAc,OAAQ,CAAExuD,UAAWy6F,IAAgB,OAG9U,GAAIr2E,EAAS/mB,OAAS,EAAG,CACrB,IAAIyqG,EAAkBV,GAAiBhsF,EAAMC,SAAS,gBAAmB,GACzE,OAAOmzC,EAAc9vD,WAAM,EAAQ,eAAc,CAAC,MAAO,CAAEsB,UAAW8nG,IAAmB1jF,IAE7F,OAAOA,EAAS,IAEb4iF,EAxCwB,CAyCjC,IAEE,GAAyB,SAAUxoG,GAEnC,SAASupG,IACL,OAAkB,OAAXvpG,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAqC/D,OAvCA,eAAU2wG,EAASvpG,GAInBupG,EAAQttG,UAAUvD,OAAS,WACvB,IAEI8wG,EACAC,EAHAjpG,EAAK5H,KAAKc,MAAO0B,EAAQoF,EAAGpF,MAAOsuG,EAAiBlpG,EAAGkpG,eACvDC,GAAW,EAGXzO,EAAiB9/F,EAAM8/F,eACvB0O,EAAgB1O,EAAe7vB,OAC/B6vB,EAAexqF,MACfi5F,GAAW,EACXH,EAAetO,EAAexqF,MAG9B84F,EAAetO,EAAerwF,MAE9BqwF,EAAevqF,OACfg5F,GAAW,EACXF,EAAavO,EAAevqF,OAG5B84F,EAAavO,EAAepwF,IAEhC,IAAIvJ,EAAa,CACbmoG,GAAkB,GAClB,aACAC,EAAW,iBAAmB,IAElC,OAAQ35C,EAAc,MAAO,CAAExuD,UAAWD,EAAWG,KAAK,MACtD9I,KAAKixG,cAAc,QAASL,GAAgB,IAC5C5wG,KAAKixG,cAAc,SAAUD,GAAiB,IAC9ChxG,KAAKixG,cAAc,MAAOJ,GAAc,MAEhDF,EAAQttG,UAAU4tG,cAAgB,SAAUrwG,EAAKivG,GAC7C,IAAI/uG,EAAQd,KAAKc,MACjB,OAAQs2D,EAAc,GAAgB,CAAEx2D,IAAKA,EAAKivG,aAAcA,EAAczrG,MAAOtD,EAAMsD,MAAOq/F,QAAS3iG,EAAM2iG,QAAS4M,aAAcvvG,EAAMuvG,aAAcC,eAAgBxvG,EAAMwvG,eAAgBC,cAAezvG,EAAMyvG,cAAeC,cAAe1vG,EAAM0vG,cAAeL,QAASrvG,EAAMqvG,WAEtRQ,EAxCiB,CAyC1B,IAGE,GAA+B,SAAUvpG,GAEzC,SAAS8pG,IACL,IAAI7pG,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAYhE,OAXAqH,EAAMwI,MAAQ,CACVshG,eAAgB,MAEpB9pG,EAAM+pG,SAAW,SAAUrhG,GACvB1I,EAAM0I,GAAKA,EACX8lF,GAAOxuF,EAAMvG,MAAMsH,MAAO2H,GAC1B1I,EAAMgqG,wBAEVhqG,EAAMiqG,aAAe,WACjBjqG,EAAMgqG,wBAEHhqG,EA2CX,OAzDA,eAAU6pG,EAAe9pG,GAgBzB8pG,EAAc7tG,UAAUvD,OAAS,WAC7B,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MACxCg+D,EAAc/sE,EAAM+sE,YACpBllE,EAAa,CACb,kBACCklE,GAAe/sE,EAAMyH,QAAUzH,EAAMsY,OAChC,yBACA,2BAENA,EAAS,GACTg3E,EAAgB,GAgBpB,OAfIviB,EAC6B,OAAzBh+D,EAAMshG,eACN/3F,EAASvJ,EAAMshG,eAAiBtjC,EAOhCuiB,EAAiB,EAAIviB,EAAe,IAAM,IAI9Cz0D,EAAStY,EAAMsY,QAAU,GAErBg+C,EAAc,MAAO,CAAE,kBAAmBt2D,EAAMywG,YAAa5vG,IAAK3B,KAAKoxG,SAAUxoG,UAAWD,EAAWG,KAAK,KAAM+E,MAAO,CAAEuL,OAAQA,EAAQg3E,cAAeA,IAAmBtvF,EAAMksB,WAE/LkkF,EAAc7tG,UAAU8T,kBAAoB,WACxCnX,KAAK6H,QAAQktF,iBAAiB/0F,KAAKsxG,eAEvCJ,EAAc7tG,UAAUojB,qBAAuB,WAC3CzmB,KAAK6H,QAAQmtF,oBAAoBh1F,KAAKsxG,eAE1CJ,EAAc7tG,UAAUguG,qBAAuB,WACvCrxG,KAAK+P,IACL/P,KAAKc,MAAM+sE,aAEX7tE,KAAK4Y,SAAS,CAAEu4F,eAAgBnxG,KAAK+P,GAAGg/E,eAGzCmiB,EA1DuB,CA2DhC,IAKE,GAA+B,SAAU9pG,GAEzC,SAASoqG,EAAc/pD,GACnB,IAAIpgD,EAAQD,EAAO7D,KAAKvD,KAAMynD,IAAaznD,KAwB3C,OAvBAqH,EAAMoqG,eAAiB,SAAU53D,EAAI4T,GACjC,IAAIvmD,EAAYG,EAAMH,UAClBW,EAAUX,EAAUW,QACpBwC,EAAMmxE,GAAS/tB,GACnB,GAAIpjD,GACAnD,EAAUijD,iBAAiBtQ,EAAG52C,QAAS,CAGvC,IAAIyuG,EAAkBv5C,EAAete,EAAG52C,OAAQ,wBAC5CwzD,EAAMi7C,EAAkBA,EAAgB3tE,cAAc,WAAWu5C,KAAO,GAC5Ez1E,EAAQsyC,QAAQC,QAAQ,aAAc,CAClCrqC,GAAI09C,EACJz/C,MAAO,IAAI,GAAS9G,EAAUW,QAASwC,EAAIgC,WAAWC,IAAKjC,EAAIgC,WAAW4C,UAC1E24C,QAAS/N,EACTh4B,KAAMha,EAAQyZ,UAEdm1C,IAAQ5c,EAAG83D,mBACXlyE,OAAOmyE,SAASt0B,KAAO7mB,KAInCpvD,EAAM60C,QAAU0d,EAAiBnS,EAAS13C,GAAI,QAAS,YACvD1I,EAAMoqG,gBACCpqG,EAEX,OA5BA,eAAUmqG,EAAepqG,GA4BlBoqG,EA7BuB,CA8BhCpC,IAME,GAA+B,SAAUhoG,GAEzC,SAASyqG,EAAcpqD,GACnB,IAAIpgD,EAAQD,EAAO7D,KAAKvD,KAAMynD,IAAaznD,KAqB3C,OAnBAqH,EAAMyqG,oBAAsB,SAAU/hG,GAC9BA,IAAO1I,EAAM0qG,cACb1qG,EAAM2qG,eAAe,KAAM3qG,EAAM0qG,eAGzC1qG,EAAM4qG,eAAiB,SAAUp4D,EAAI4T,GAC7B+tB,GAAS/tB,KACTpmD,EAAM0qG,aAAetkD,EACrBpmD,EAAM6qG,aAAa,kBAAmBr4D,EAAI4T,KAGlDpmD,EAAM2qG,eAAiB,SAAUn4D,EAAI4T,GAC7BpmD,EAAM0qG,eACN1qG,EAAM0qG,aAAe,KACrB1qG,EAAM6qG,aAAa,kBAAmBr4D,EAAI4T,KAGlDpmD,EAAM8qG,qBAAuBp4C,EAAwBtS,EAAS13C,GAAI,YAClE1I,EAAM4qG,eAAgB5qG,EAAM2qG,gBACrB3qG,EAkBX,OAzCA,eAAUwqG,EAAezqG,GAyBzByqG,EAAcxuG,UAAU64C,QAAU,WAC9Bl8C,KAAKmyG,wBAETN,EAAcxuG,UAAU6uG,aAAe,SAAUE,EAAcv4D,EAAI4T,GAC/D,IAAIvmD,EAAYlH,KAAKkH,UACjBW,EAAUX,EAAUW,QACpBwC,EAAMmxE,GAAS/tB,GACd5T,IAAM3yC,EAAUijD,iBAAiBtQ,EAAG52C,SACrC4E,EAAQsyC,QAAQC,QAAQg4D,EAAc,CAClCriG,GAAI09C,EACJz/C,MAAO,IAAI,GAASnG,EAASwC,EAAIgC,WAAWC,IAAKjC,EAAIgC,WAAW4C,UAChE24C,QAAS/N,EACTh4B,KAAMha,EAAQyZ,WAInBuwF,EA1CuB,CA2ChCzC,IAEE,GAAiC,SAAUhoG,GAE3C,SAASirG,IACL,IAAIhrG,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAiDhE,OAhDAqH,EAAMwtF,iBAAmBxuB,GAAQwuB,IACjCxtF,EAAMirG,0BAA4BjsC,GAAQisC,IAC1CjrG,EAAMkrG,kBAAoBlsC,GAAQksC,IAClClrG,EAAM8W,UAAYpH,IAClB1P,EAAMmrG,UAAYz7F,IAClB1P,EAAMorG,kBAAoB,GAE1BprG,EAAMwI,MAAQ,CACV6iG,YAAaj5C,KAIjBpyD,EAAM4T,6BAA+B,SAAU/T,EAAWyrG,GACtD,IAAIlrD,EAAW4nD,GAAyBnoG,EAAWyrG,GAC/CC,EAAuB,CACvB,GACA,IAEAC,EAAqBD,EAAqB/pG,OAAOxB,EAAMvG,MAAMyI,YAAYooD,uBACzEmhD,EAAeD,EAAmBlvG,KAAI,SAAUovG,GAAuB,OAAO,IAAIA,EAAoBtrD,MAC1GpgD,EAAMorG,kBAAkBvrG,EAAUq8B,KAAOuvE,EACzCvD,GAAyBroG,EAAUq8B,KAAOkkB,GAE9CpgD,EAAM8T,+BAAiC,SAAUjU,GAC7C,IAAI8rG,EAAY3rG,EAAMorG,kBAAkBvrG,EAAUq8B,KAClD,GAAIyvE,EAAW,CACX,IAAK,IAAI7oG,EAAK,EAAG8oG,EAAcD,EAAW7oG,EAAK8oG,EAAYhtG,OAAQkE,IAAM,CACrE,IAAI+oG,EAAWD,EAAY9oG,GAC3B+oG,EAASh3D,iBAEN70C,EAAMorG,kBAAkBvrG,EAAUq8B,YAEtCgsE,GAAyBroG,EAAUq8B,MAI9Cl8B,EAAM8rG,aAAe,IAAI3L,IAAc,WACnCngG,EAAMvG,MAAMq5C,QAAQC,QAAQ,WAAW,GACvC/yC,EAAMvG,MAAMq5C,QAAQC,QAAQ,eAAgB,CAAEv4B,KAAMxa,EAAMvG,MAAMwgB,aAEpEja,EAAM6nE,mBAAqB,SAAUr1B,GACjC,IAAIr2C,EAAU6D,EAAMvG,MAAM0C,QACtBA,EAAQ0rE,oBACRr1B,EAAG52C,SAAWw8B,QAEdp4B,EAAM8rG,aAAahlF,QAAQ3qB,EAAQ2rE,oBAGpC9nE,EA4FX,OA/IA,eAAUgrG,EAAiBjrG,GAwD3BirG,EAAgBhvG,UAAUvD,OAAS,WAC/B,IAMIszG,EANAtyG,EAAQd,KAAKc,MACbqhF,EAAgBrhF,EAAMqhF,cAAe3+E,EAAU1C,EAAM0C,QACrD6vG,EAAerzG,KAAKuyG,kBAAkBzxG,EAAM2H,SAAU3H,EAAMoK,YAAapK,EAAMsd,qBAAsBtd,EAAM0/E,YAAaK,GAAO//E,EAAM0C,QAAQs8C,IAAKh/C,EAAM4e,SAC5J5e,EAAMu+E,WACFi0B,GAAY,EACZ3jC,EAAa,GAEb7uE,EAAMiI,cAAgBjI,EAAMkI,SAC5B2mE,EAAa,GAEU,MAAlBnsE,EAAQ4V,OACbk6F,GAAY,EAEkB,MAAzB9vG,EAAQ8yD,cACbqZ,EAAansE,EAAQ8yD,cAGrB88C,EAAkB/5F,KAAKI,IAAIjW,EAAQqqE,YAAa,IAEpD,IAAI0lC,EAAcvzG,KAAK60F,iBAAiB/zF,EAAM2H,SAAU3H,EAAMwgB,QAASxgB,EAAM0C,QAAS1C,EAAMsd,qBAAsBtd,EAAM4e,QAAS5e,EAAMkjB,MAAOljB,EAAMyI,YAAazI,EAAM2nD,SAAU3nD,EAAM+oD,eAAgB/oD,EAAMq5C,QAASr5C,EAAM+mD,YAAa7nD,KAAKib,6BAA8Bjb,KAAKmb,gCAC7Qu3F,EAAevwB,EAAch9C,QAAUg9C,EAAch9C,OAAOo9D,SAC1DviG,KAAK6P,MAAM6iG,YACX,GACN,OAAQt7C,EAAcw9B,GAAgB4e,SAAU,CAAE/wG,MAAO8wG,GACrDpxB,EAAch9C,QAAWiyB,EAAc,GAAS,eAAS,CAAEz1D,IAAK3B,KAAKme,UAAW2yF,eAAgB,oBAAqBtuG,MAAO2/E,EAAch9C,OAAQgrE,QAASuC,GAAeW,IAC1Kj8C,EAAc,GAAe,CAAE7uD,OAAQ+qG,EAAWl6F,OAAQu2D,EAAY9B,YAAaulC,EAAiB7B,YAAamB,GAC7G1yG,KAAKyzG,WAAW3yG,GAChBd,KAAK0zG,sBACTvxB,EAAc98C,QAAW+xB,EAAc,GAAS,eAAS,CAAEz1D,IAAK3B,KAAKwyG,UAAW1B,eAAgB,oBAAqBtuG,MAAO2/E,EAAc98C,OAAQ8qE,QAAS,IAAMkD,MAEzKhB,EAAgBhvG,UAAU8T,kBAAoB,WAC1C,IAAIrW,EAAQd,KAAKc,MACjBd,KAAK4xD,qBAAuB9wD,EAAMyI,YAAYqoD,qBACzCjuD,KAAI,SAAUgwG,GAA4B,OAAO,IAAIA,EAAyB7yG,MACnF2+B,OAAO6a,iBAAiB,SAAUt6C,KAAKkvE,oBACvC,IAAI2nB,EAAkB/1F,EAAMyI,YAAYstF,gBACxC,IAAK,IAAI39B,KAAY29B,EACjBA,EAAgB39B,GAAUp4D,EAAMo4D,GAAWp4D,IAGnDuxG,EAAgBhvG,UAAUgU,mBAAqB,SAAUC,GACrD,IAAIxW,EAAQd,KAAKc,MACb+1F,EAAkB/1F,EAAMyI,YAAYstF,gBACxC,IAAK,IAAI39B,KAAY29B,EACb/1F,EAAMo4D,KAAc5hD,EAAU4hD,IAC9B29B,EAAgB39B,GAAUp4D,EAAMo4D,GAAWp4D,IAIvDuxG,EAAgBhvG,UAAUojB,qBAAuB,WAC7CgZ,OAAOib,oBAAoB,SAAU16C,KAAKkvE,oBAC1ClvE,KAAKmzG,aAAa9K,QAClB,IAAK,IAAIl+F,EAAK,EAAGvC,EAAK5H,KAAK4xD,qBAAsBznD,EAAKvC,EAAG3B,OAAQkE,IAAM,CACnE,IAAIkgD,EAAcziD,EAAGuC,GACrBkgD,EAAYnO,UAEhBl8C,KAAKc,MAAMq5C,QAAQC,QAAQ,aAE/Bi4D,EAAgBhvG,UAAUqwG,mBAAqB,WAC3C,IAAI5yG,EAAQd,KAAKc,MACbksB,EAAWlsB,EAAMyI,YAAYitF,qBAAqB7yF,KAAI,SAAU+vG,GAAsB,OAAOA,EAAmB5yG,MACpH,OAAOs2D,EAAc9vD,WAAM,EAAQ,eAAc,CAAC+vD,EAAU,IAAKrqC,KAErEqlF,EAAgBhvG,UAAUowG,WAAa,SAAU3yG,GAgB7C,IAfA,IAAIyI,EAAczI,EAAMyI,YACpBd,EAAW3H,EAAM2H,SACjBoyF,EAAY,CACZ3vF,YAAapK,EAAMoK,YACnByT,cAAe7d,EAAM6d,cACrBE,WAAY/d,EAAM0pG,qBAClB1rF,aAAche,EAAMge,aACpBF,cAAe9d,EAAM8d,cACrBzP,eAAgBrO,EAAMqO,eACtBL,UAAWhO,EAAMgO,UACjBC,YAAajO,EAAMiO,YACnBhG,aAAcjI,EAAMiI,aACpBC,SAAUlI,EAAMkI,UAEhBgzE,EAAeh8E,KAAKsyG,0BAA0B/oG,EAAY+sF,uBACrDnsF,EAAK,EAAG+xE,EAAiBF,EAAc7xE,EAAK+xE,EAAej2E,OAAQkE,IAAM,CAC9E,IAAIg/C,EAAc+yB,EAAe/xE,GACjC,eAAS0wF,EAAW1xC,EAAYhC,UAAU0zC,EAAW/5F,IAEzD,IAAI8yG,EAAgBnrG,EAASvB,UAC7B,OAAQkwD,EAAcw8C,EAAe,eAAS,GAAI/Y,KAE/CwX,EAhJyB,CAiJlC,IACF,SAASE,GAAkB9pG,EAAUyC,EAAakT,EAAsBoiE,EAAa1gC,EAAK17C,GAEtF,IAAIyvG,EAAYz1F,EAAqB0+E,MAAMh9C,OAAKl7B,GAAW,GACvDkvF,EAAW11F,EAAqBs+E,UAAUxxF,EAAas1E,GAAa,GACpEuzB,EAAW31F,EAAqB2+E,UAAU7xF,EAAas1E,GAAa,GACxE,MAAO,CACHp8E,MAAOA,EACPisG,aAAc5nG,EAASR,KACvBw7F,QAASh7F,EAAS65E,WAClBguB,eAAgBuD,EAAU3pD,UAAYmwB,GAAoBnvE,EAAYqU,aAAcugC,GACpFywD,cAAeuD,EAAS5pD,QACxBsmD,cAAeuD,EAAS7pD,SAKhC,SAASooD,GAA0B0B,GAC/B,OAAOA,EAAWrwG,KAAI,SAAUswG,GAAY,OAAO,IAAIA,KAG3D,IAAI,GAA8B,SAAU7sG,GAExC,SAAS8sG,IACL,IAAI7sG,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAUhE,OATAqH,EAAMwI,MAAQ,CACV7G,UAAU,GAEd3B,EAAM8sG,kBAAoB,WACtB9sG,EAAMuR,SAAS,CAAE5P,UAAU,KAE/B3B,EAAM+sG,iBAAmB,WACrB/sG,EAAMuR,SAAS,CAAE5P,UAAU,KAExB3B,EA6BX,OAzCA,eAAU6sG,EAAc9sG,GAcxB8sG,EAAa7wG,UAAUvD,OAAS,WAC5B,IAAIgB,EAAQd,KAAKc,MACb0C,EAAU1C,EAAM0C,QAChBwF,EAAWhJ,KAAK6P,MAAM7G,SACtBD,EAAeC,GAA+B,SAAnBxF,EAAQ4V,QAA+C,SAA1B5V,EAAQ8yD,cAChEl9C,EAAWrQ,GAAkC,MAAlBvF,EAAQ4V,OAAmC,GAAjB5V,EAAQ4V,OAC7DzQ,EAAa,CACb,KACAK,EAAW,iBAAmB,kBAC9B,gBAAkBxF,EAAQinE,UAC1B3pE,EAAMkjB,MAAMC,SAAS,SAKzB,OAHK8mE,MACDpiF,EAAWX,KAAK,kBAEblH,EAAMksB,SAASrkB,EAAYyQ,EAAQrQ,EAAcC,IAE5DkrG,EAAa7wG,UAAU8T,kBAAoB,WACvC,IAAIgjC,EAAUn6C,KAAKc,MAAMq5C,QACzBA,EAAQp5C,GAAG,eAAgBf,KAAKm0G,mBAChCh6D,EAAQp5C,GAAG,cAAef,KAAKo0G,mBAEnCF,EAAa7wG,UAAUojB,qBAAuB,WAC1C,IAAI0zB,EAAUn6C,KAAKc,MAAMq5C,QACzBA,EAAQyU,IAAI,eAAgB5uD,KAAKm0G,mBACjCh6D,EAAQyU,IAAI,cAAe5uD,KAAKo0G,mBAE7BF,EA1CsB,CA2C/B,IAGF,SAASG,GAA4B51F,EAAsB2E,GAGvD,OACWipD,IADN5tD,GAAwB2E,EAAS,GACX,CAAEikD,QAAS,SAElCjkD,EAAS,EACc,CAAEikD,QAAS,QAASlD,MAAO,UAAWC,IAAK,UAAW6C,YAAY,GAEtE,CAAEI,QAAS,SAGtC,IAAIitC,GAAa,qBACjB,SAASC,GAAc7yF,GACnB,OAAOA,EAAUI,KAGrB,IAAI,GAA+B,SAAU1a,GAEzC,SAASotG,IACL,OAAkB,OAAXptG,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAoB/D,OAtBA,eAAUw0G,EAAeptG,GAIzBotG,EAAcnxG,UAAUvD,OAAS,WAC7B,IAAI8H,EAAK5H,KAAK6H,QAAS6X,EAAU9X,EAAG8X,QAASlc,EAAUoE,EAAGpE,QAASwgB,EAAQpc,EAAGoc,MAAO1C,EAAU1Z,EAAG0Z,QAC9FxgB,EAAQd,KAAKc,MACbmK,EAAOnK,EAAMmK,KAAMC,EAAcpK,EAAMoK,YACvCupG,EAAUjnB,GAAYviF,EAAMnK,EAAMqK,WAAY,KAAMD,GACpDvC,EAAa,CAAC2rG,IAAYzrG,OAAO6kF,GAAiB+mB,EAASzwF,IAC3DlC,EAAOpC,EAAQla,OAAOyF,EAAMnK,EAAMssE,iBAElCpiE,GAAiBypG,EAAQtkG,YAAcrP,EAAMsI,OAAS,EACpDykF,GAAkB7tF,KAAK6H,QAASoD,GAChC,GACFyW,EAAY,eAAS,eAAS,eAAS,CAAEzW,KAAMyU,EAAQkC,OAAO3W,GAAO4W,KAAMP,GAAWxgB,EAAMuK,gBAAiB,CAAEyW,KAAMA,IAAS2yF,GAClI,OAAQr9C,EAAc,GAAY,CAAE11C,UAAWA,EAAW/Y,WAAYnF,EAAQ6pE,oBAAqB7kE,QAAShF,EAAQ8pE,iBAAkBhiE,eAAgBipG,GAAetyF,SAAUze,EAAQ+pE,kBAAmBprD,YAAa3e,EAAQgqE,uBAAwB,SAAU9kE,EAAW2Z,EAAkB7W,EAAYC,GAAgB,OAAQ2rD,EAAc,KAAM,eAAS,CAAEz1D,IAAK+G,EAAW0H,KAAM,eAAgBxH,UAAWD,EAAWE,OAAOwZ,GAAkBvZ,KAAK,KAAM,YAAc2rG,EAAQtkG,gBAAqCyU,EAAxBghD,GAAgB36D,GAAmBoZ,QAASvjB,EAAMujB,SAAWvjB,EAAMuP,gBACniB+mD,EAAc,MAAO,CAAExuD,UAAW,6BAA+B6rG,EAAQtkG,YAAeinD,EAAc,IAAK,eAAS,CAAEz1D,IAAK6J,EAAY5C,UAAW,CAC1I,6BACA9H,EAAMoH,SAAW,YAAc,IACjCY,KAAK,MAAQkC,GAAeS,SAEnC+oG,EAvBuB,CAwBhC,IAEEE,GAAiBroC,GAAgB,CAAEhF,QAAS,SAC5C,GAA8B,SAAUjgE,GAExC,SAASutG,IACL,OAAkB,OAAXvtG,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAyB/D,OA3BA,eAAU20G,EAAcvtG,GAIxButG,EAAatxG,UAAUvD,OAAS,WAC5B,IAAIgB,EAAQd,KAAKc,MACb8G,EAAK5H,KAAK6H,QAAS6X,EAAU9X,EAAG8X,QAASsE,EAAQpc,EAAGoc,MAAO1C,EAAU1Z,EAAG0Z,QAAS9d,EAAUoE,EAAGpE,QAC9FyH,EAAOqyD,EAAQ,IAAI/sC,KAAK,QAAYzvB,EAAMo+D,KAC1C01C,EAAW,CACX11C,IAAKp+D,EAAMo+D,IACX/uD,YAAY,EACZzC,UAAU,EACVD,QAAQ,EACRE,SAAS,EACT8/E,SAAS,GAET9kF,EAAa,CAAC2rG,IAAYzrG,OAAO6kF,GAAiBknB,EAAU5wF,GAAQljB,EAAM8L,iBAAmB,IAC7FkV,EAAOpC,EAAQla,OAAOyF,EAAMnK,EAAMssE,iBAClC1rD,EAAY,eAAS,eAAS,eAAS,eAAS,CAChDzW,KAAMA,GAAQ2pG,GAAW,CAAE/yF,KAAMP,IAAYxgB,EAAMuK,gBAAiB,CAAEyW,KAAMA,IAChF,OAAQs1C,EAAc,GAAY,CAAE11C,UAAWA,EAAW/Y,WAAYnF,EAAQ6pE,oBAAqB7kE,QAAShF,EAAQ8pE,iBAAkBhiE,eAAgBipG,GAAetyF,SAAUze,EAAQ+pE,kBAAmBprD,YAAa3e,EAAQgqE,uBAAwB,SAAU9kE,EAAW2Z,EAAkB7W,EAAYC,GAAgB,OAAQ2rD,EAAc,KAAM,eAAS,CAAEz1D,IAAK+G,EAAW0H,KAAM,eAAgBxH,UAAWD,EAAWE,OAAOwZ,GAAkBvZ,KAAK,KAAMub,QAASvjB,EAAMujB,SAAWvjB,EAAMuP,gBAC7d+mD,EAAc,MAAO,CAAExuD,UAAW,4BAC9BwuD,EAAc,IAAK,CAAE,aAAc13C,EAAQla,OAAOyF,EAAMypG,IAAiB9rG,UAAW,CAC5E,6BACA9H,EAAMoH,SAAW,YAAc,IACjCY,KAAK,KAAMnH,IAAK6J,GAAcC,SAEzCkpG,EA5BsB,CA6B/B,IAEE,GAA0B,SAAUvtG,GAEpC,SAASytG,EAAS/zG,EAAO+G,GACrB,IAAIR,EAAQD,EAAO7D,KAAKvD,KAAMc,EAAO+G,IAAY7H,KAIjD,OAHAqH,EAAMytG,eAAiBj0B,GAAOh5E,EAAQrE,QAAQs8C,IAAKj4C,EAAQ6X,SAC3DrY,EAAM0tG,qBAAsB,IAAIxkF,MAAO/b,UACvCnN,EAAMwI,MAAQxI,EAAM2tG,gBAAgBC,aAC7B5tG,EAgDX,OAtDA,eAAUwtG,EAAUztG,GAQpBytG,EAASxxG,UAAUvD,OAAS,WACxB,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MAC5C,OAAO/O,EAAMksB,SAASnd,EAAMkM,QAASlM,EAAM1E,aAE/C0pG,EAASxxG,UAAU8T,kBAAoB,WACnCnX,KAAK48C,cAETi4D,EAASxxG,UAAUgU,mBAAqB,SAAUC,GAC1CA,EAAUwE,OAAS9b,KAAKc,MAAMgb,OAC9B9b,KAAK2jD,eACL3jD,KAAK48C,eAGbi4D,EAASxxG,UAAUojB,qBAAuB,WACtCzmB,KAAK2jD,gBAETkxD,EAASxxG,UAAU2xG,cAAgB,WAC/B,IAAIptG,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CqtG,EAAe33C,EAAMv9D,KAAK80G,gBAAgB,IAAIvkF,MAAO/b,UAAYxU,KAAK+0G,qBACtEI,EAAmBttG,EAAQ6X,QAAQioE,QAAQutB,EAAcp0G,EAAMgb,MAC/Ds5F,EAAgBvtG,EAAQ6X,QAAQ4P,IAAI6lF,EAAkBpxC,GAAe,EAAGjjE,EAAMgb,OAC9Eu5F,EAASD,EAAc5gG,UAAY0gG,EAAa1gG,UAIpD,OADA6gG,EAASh8F,KAAKwM,IAAI,MAAqBwvF,GAChC,CACHJ,aAAc,CAAEl5F,QAASo5F,EAAkBhqG,WAAYmqG,GAAcH,IACrE/f,UAAW,CAAEr5E,QAASq5F,EAAejqG,WAAYmqG,GAAcF,IAC/DC,OAAQA,IAGhBR,EAASxxG,UAAUu5C,WAAa,WAC5B,IAAIv1C,EAAQrH,KACR4H,EAAK5H,KAAKg1G,gBAAiB5f,EAAYxtF,EAAGwtF,UAAWigB,EAASztG,EAAGytG,OACrEr1G,KAAK6nG,UAAYjrD,YAAW,WACxBv1C,EAAMuR,SAASw8E,GAAW,WACtB/tF,EAAMu1C,kBAEXy4D,IAEPR,EAASxxG,UAAUsgD,aAAe,WAC1B3jD,KAAK6nG,WACLlkD,aAAa3jD,KAAK6nG,YAG1BgN,EAASlf,YAAcf,GAChBigB,EAvDkB,CAwD3B19C,GACF,SAASm+C,GAAcrqG,GACnB,IAAIgH,EAAQgsD,GAAWhzD,GACnBiH,EAAMorD,EAAQrrD,EAAO,GACzB,MAAO,CAAEA,MAAOA,EAAOC,IAAKA,GAGhC,IAAI,GAA2B,SAAU9K,GAErC,SAASmuG,IACL,IAAIluG,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMmuG,yBAA2BnvC,GAAQmvC,IAClCnuG,EAUX,OAdA,eAAUkuG,EAAWnuG,GAMrBmuG,EAAUlyG,UAAUvD,OAAS,WACzB,IAAI+H,EAAU7H,KAAK6H,QACfD,EAAK5H,KAAKc,MAAOyd,EAAQ3W,EAAG2W,MAAOrT,EAActD,EAAGsD,YAAauT,EAAuB7W,EAAG6W,qBAAsBjI,EAAc5O,EAAG4O,YAClI42D,EAAkBptE,KAAKw1G,yBAAyB3tG,EAAQrE,QAAQ4pE,gBAAiB3uD,EAAsBF,EAAMtY,QACjH,OAAQmxD,EAAc,GAAU,CAAEt7C,KAAM,QAAS,SAAUC,EAAS5Q,GAAc,OAAQisD,EAAc,KAAM,CAAEhnD,KAAM,OAClHoG,GAAeA,EAAY,OAC3B+H,EAAM5a,KAAI,SAAUsH,GAAQ,OAAQwT,EAAwB24C,EAAc,GAAe,CAAEx2D,IAAKqK,EAAKiR,cAAejR,KAAMA,EAAMC,YAAaA,EAAaC,WAAYA,EAAY/B,OAAQmV,EAAMtY,OAAQmnE,gBAAiBA,IAAuBhW,EAAc,GAAc,CAAEx2D,IAAKqK,EAAK20D,YAAaV,IAAKj0D,EAAK20D,YAAawN,gBAAiBA,YAE9UmoC,EAfmB,CAgB5B,IACF,SAASC,GAAyBC,EAAgBh3F,EAAsBi3F,GACpE,OAAOD,GAAkBpB,GAA4B51F,EAAsBi3F,GAG/E,IAAIC,GAAgC,WAChC,SAASA,EAAethG,EAAO+J,GAC3B,IAAInT,EAAOoJ,EAAMpC,MACbC,EAAMmC,EAAMnC,IACZ0jG,EAAU,GACVr3F,EAAQ,GACRs3F,GAAY,EAChB,MAAO5qG,EAAOiH,EACNkM,EAAqB2/E,YAAY9yF,GACjC2qG,EAAQ5tG,KAAK6tG,EAAW,KAGxBA,GAAY,EACZD,EAAQ5tG,KAAK6tG,GACbt3F,EAAMvW,KAAKiD,IAEfA,EAAOqyD,EAAQryD,EAAM,GAEzBjL,KAAKue,MAAQA,EACbve,KAAK41G,QAAUA,EACf51G,KAAK81G,IAAMv3F,EAAMtY,OAoCrB,OAlCA0vG,EAAetyG,UAAUma,WAAa,SAAUnJ,GAC5C,IAAI0hG,EAAa/1G,KAAKg2G,gBAAgB3hG,EAAMpC,OACxCgkG,EAAYj2G,KAAKg2G,gBAAgB14C,EAAQjpD,EAAMnC,KAAM,IACrDgkG,EAAoB78F,KAAKI,IAAI,EAAGs8F,GAChCI,EAAmB98F,KAAKwM,IAAI7lB,KAAK81G,IAAM,EAAGG,GAI9C,OAFAC,EAAoB78F,KAAKyG,KAAKo2F,GAC9BC,EAAmB98F,KAAKyM,MAAMqwF,GAC1BD,GAAqBC,EACd,CACHJ,WAAYG,EACZD,UAAWE,EACX1pG,QAASspG,IAAeG,EACxBxpG,MAAOupG,IAAcE,GAGtB,MAOXR,EAAetyG,UAAU2yG,gBAAkB,SAAU/qG,GACjD,IAAI2qG,EAAU51G,KAAK41G,QACfQ,EAAY/8F,KAAKyM,MAAM63C,GAAS39D,KAAKue,MAAM,GAAItT,IACnD,OAAImrG,EAAY,EACLR,EAAQ,GAAK,EAEpBQ,GAAaR,EAAQ3vG,OACd2vG,EAAQA,EAAQ3vG,OAAS,GAAK,EAElC2vG,EAAQQ,IAEZT,EAxDwB,GA2D/BU,GAA+B,WAC/B,SAASA,EAAcp3F,EAAWq3F,GAC9B,IACIC,EACAnlC,EACAnnE,EAHAsU,EAAQU,EAAUV,MAItB,GAAI+3F,EAAc,CAGd,IADAllC,EAAW7yD,EAAM,GAAGqhD,YACf22C,EAAa,EAAGA,EAAah4F,EAAMtY,OAAQswG,GAAc,EAC1D,GAAIh4F,EAAMg4F,GAAY32C,cAAgBwR,EAClC,MAGRnnE,EAASoP,KAAKyG,KAAKvB,EAAMtY,OAASswG,QAGlCtsG,EAAS,EACTssG,EAAah4F,EAAMtY,OAEvBjG,KAAKiK,OAASA,EACdjK,KAAKoJ,OAASmtG,EACdv2G,KAAKif,UAAYA,EACjBjf,KAAKqR,MAAQrR,KAAKw2G,aAClBx2G,KAAKwe,YAAcxe,KAAKy2G,mBAiD5B,OA/CAJ,EAAchzG,UAAUmzG,WAAa,WAEjC,IADA,IAAIE,EAAO,GACFpsG,EAAM,EAAGA,EAAMtK,KAAKiK,OAAQK,GAAO,EAAG,CAE3C,IADA,IAAI+G,EAAQ,GACH2B,EAAM,EAAGA,EAAMhT,KAAKoJ,OAAQ4J,GAAO,EACxC3B,EAAMrJ,KAAKhI,KAAK22G,UAAUrsG,EAAK0I,IAEnC0jG,EAAK1uG,KAAKqJ,GAEd,OAAOqlG,GAEXL,EAAchzG,UAAUszG,UAAY,SAAUrsG,EAAK0I,GAC/C,IAAI/H,EAAOjL,KAAKif,UAAUV,MAAMjU,EAAMtK,KAAKoJ,OAAS4J,GACpD,MAAO,CACHpS,IAAKqK,EAAKiR,cACVjR,KAAMA,IAGdorG,EAAchzG,UAAUozG,iBAAmB,WAEvC,IADA,IAAIl4F,EAAQ,GACHvL,EAAM,EAAGA,EAAMhT,KAAKoJ,OAAQ4J,GAAO,EACxCuL,EAAMvW,KAAKhI,KAAKqR,MAAM,GAAG2B,GAAK/H,MAElC,OAAOsT,GAEX83F,EAAchzG,UAAUma,WAAa,SAAUnJ,GAC3C,IAAIjL,EAASpJ,KAAKoJ,OACdwtG,EAAY52G,KAAKif,UAAUzB,WAAWnJ,GACtCrK,EAAO,GACX,GAAI4sG,EAAW,CACX,IAAIb,EAAaa,EAAUb,WAAYE,EAAYW,EAAUX,UACzDlkG,EAAQgkG,EACZ,MAAOhkG,GAASkkG,EAAW,CACvB,IAAI3rG,EAAM+O,KAAKyM,MAAM/T,EAAQ3I,GACzBytG,EAAYx9F,KAAKwM,KAAKvb,EAAM,GAAKlB,EAAQ6sG,EAAY,GACzDjsG,EAAKhC,KAAK,CACNsC,IAAKA,EACLI,SAAUqH,EAAQ3I,EAClBoD,SAAUqqG,EAAY,GAAKztG,EAC3BqD,QAASmqG,EAAUnqG,SAAWsF,IAAUgkG,EACxCrpG,MAAOkqG,EAAUlqG,OAAUmqG,EAAY,IAAOZ,IAElDlkG,EAAQ8kG,GAGhB,OAAO7sG,GAEJqsG,EAzEuB,GA4E9B,GAAwB,WACxB,SAASS,IACL92G,KAAK+2G,mBAAqB1wC,GAAQrmE,KAAKg3G,qBACvCh3G,KAAKi3G,mBAAqB5wC,GAAQrmE,KAAKk3G,gBACvCl3G,KAAKu6E,gBAAkBlU,GAAQrmE,KAAKm3G,kBACpCn3G,KAAKo3G,eAAiB/wC,GAAQrmE,KAAKq3G,mBACnCr3G,KAAKs3G,iBAAmBjxC,GAAQrmE,KAAKq3G,mBACrCr3G,KAAKud,oBAAqB,EAuH9B,OArHAu5F,EAAOzzG,UAAUya,WAAa,SAAUhd,EAAOoK,EAAa6S,EAAkBlW,GAE1E,IADA,IAAI0vG,EAAY,GACPptG,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCotG,EAAUptG,EAAK,GAAK5C,UAAU4C,GAElC,IAAI2U,EAAehe,EAAMge,aACrB04F,EAAYx3G,KAAKu6E,gBAAgBjzE,MAAMtH,KAAM,eAAc,CAACc,EAAM+d,WAAYC,EAAc5T,EAAa6S,GAAmBw5F,IAChI,MAAO,CACH9/F,kBAAmBzX,KAAKi3G,mBAAmB3vG,MAAMtH,KAAM,eAAc,CAACc,EAAM8d,cAAeE,EAAcjX,GAAU0vG,IACnHzhG,iBAAkB9V,KAAK+2G,mBAAmBzvG,MAAMtH,KAAM,eAAc,CAACc,EAAM6d,cAAezT,EAAa6S,EAAkBlW,GAAU0vG,IACnIlhG,YAAamhG,EAAUp8B,GACvBplE,YAAawhG,EAAUr8B,GACvBrsE,UAAW9O,KAAKo3G,eAAe9vG,MAAMtH,KAAM,eAAc,CAACc,EAAMgO,UAAWgQ,EAAc5T,EAAa6S,GAAmBw5F,IACzHxoG,YAAa/O,KAAKs3G,iBAAiBhwG,MAAMtH,KAAM,eAAc,CAACc,EAAMiO,YAAa+P,EAAc5T,EAAa6S,GAAmBw5F,IAC/HpoG,eAAgBrO,EAAMqO,iBAG9B2nG,EAAOzzG,UAAUysB,aAAe,SAChC7kB,EAAMpD,GAEF,IADA,IAAI0vG,EAAY,GACPptG,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCotG,EAAUptG,EAAK,GAAK5C,UAAU4C,GAElC,OAAOnK,KAAKk3G,eAAe5vG,MAAMtH,KAAM,eAAc,CAAC,CAAEqU,MAAO,CAAEpC,MAAOhH,EAAMiH,IAAKqrD,EAAMtyD,EAAM,IAAMsB,QAAQ,GACzG,GACA1E,GAAU0vG,KAElBT,EAAOzzG,UAAU2zG,oBAAsB,SAAUr4F,EAAezT,EAAa6S,EAAkBlW,GAE3F,IADA,IAAI0vG,EAAY,GACPptG,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCotG,EAAUptG,EAAK,GAAK5C,UAAU4C,GAElC,OAAKwU,EAGE3e,KAAKm3G,iBAAiB7vG,MAAMtH,KAAM,eAAc,CAACijE,GAAgBtkD,EAAe84F,GAAmBvsG,EAAa4L,QAAQiH,IAAoBlW,GAC/I,GACAqD,EACA6S,GAAmBw5F,IAAYp8B,GALxB,IAOf27B,EAAOzzG,UAAU8zG,iBAAmB,SAAUt4F,EAAYC,EAAc5T,EAAa6S,GAEjF,IADA,IAAIw5F,EAAY,GACPptG,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCotG,EAAUptG,EAAK,GAAK5C,UAAU4C,GAElC,GAAI0U,EAAY,CACZ,IAAI64F,EAAWn9B,GAAgB17D,EAAYC,EAAc24F,GAAmBvsG,EAAa4L,QAAQiH,IAAoBA,GACrH,MAAO,CACHo9D,GAAIn7E,KAAK23G,iBAAiBD,EAASv8B,GAAIo8B,GACvCn8B,GAAIp7E,KAAK23G,iBAAiBD,EAASt8B,GAAIm8B,IAG/C,MAAO,CAAEp8B,GAAI,GAAIC,GAAI,KAEzB07B,EAAOzzG,UAAUg0G,kBAAoB,SAAUhtD,EAAavrC,EAAc5T,EAAa6S,GAEnF,IADA,IAAIw5F,EAAY,GACPptG,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCotG,EAAUptG,EAAK,GAAK5C,UAAU4C,GAElC,IAAKkgD,EACD,OAAO,KAEX,IAAIqtD,EAAWn9B,GAAgBlwB,EAAYE,cAAezrC,EAAc24F,GAAmBvsG,EAAa4L,QAAQiH,IAAoBA,GACpI,MAAO,CACH/T,KAAMhK,KAAK23G,iBAAiBD,EAASt8B,GAAIm8B,GACzC1sG,kBAAmBw/C,EAAYC,eAAekB,UAC9C1gD,QAASu/C,EAAYv/C,UAG7BgsG,EAAOzzG,UAAU6zG,eAAiB,SAAUn6F,EAAU+B,EAAcjX,GAEhE,IADA,IAAI0vG,EAAY,GACPptG,EAAK,EAAGA,EAAK5C,UAAUtB,OAAQkE,IACpCotG,EAAUptG,EAAK,GAAK5C,UAAU4C,GAElC,IAAK4S,EACD,MAAO,GAIX,IAFA,IAAI1Q,EAAa8xE,GAAoBphE,EAAU+B,EAAcjX,GACzDmC,EAAOhK,KAAKwd,WAAWlW,MAAMtH,KAAM,eAAc,CAAC+c,EAAS1I,OAAQkjG,IAC9D3vG,EAAK,EAAGwC,EAASJ,EAAMpC,EAAKwC,EAAOnE,OAAQ2B,IAAM,CACtD,IAAIyC,EAAMD,EAAOxC,GACjByC,EAAIgC,WAAaA,EAErB,OAAOrC,GAKX8sG,EAAOzzG,UAAUs0G,iBAAmB,SAAUC,EAAaL,GAEvD,IADA,IAAIvtG,EAAO,GACFG,EAAK,EAAG0tG,EAAgBD,EAAaztG,EAAK0tG,EAAc5xG,OAAQkE,IAAM,CAC3E,IAAIkC,EAAawrG,EAAc1tG,GAC/BH,EAAKhC,KAAKV,MAAM0C,EAAMhK,KAAK83G,gBAAgBzrG,EAAYkrG,IAE3D,OAAOvtG,GAKX8sG,EAAOzzG,UAAUy0G,gBAAkB,SAAUzrG,EAAYkrG,GACrD,IAAI95F,EAAYpR,EAAWgI,MAEvBrU,KAAKud,oBAAgD,cAA1BlR,EAAWzB,GAAGwB,UACzCqR,EAAY,CACRxL,MAAOwL,EAAUxL,MACjBC,IAAKorD,EAAQ7/C,EAAUxL,MAAO,KAItC,IADA,IAAIjI,EAAOhK,KAAKwd,WAAWlW,MAAMtH,KAAM,eAAc,CAACyd,GAAY85F,IACzDptG,EAAK,EAAGM,EAAST,EAAMG,EAAKM,EAAOxE,OAAQkE,IAAM,CACtD,IAAIE,EAAMI,EAAON,GACjBE,EAAIgC,WAAaA,EACjBhC,EAAIoC,QAAUJ,EAAWI,SAAWpC,EAAIoC,QACxCpC,EAAIqC,MAAQL,EAAWK,OAASrC,EAAIqC,MAExC,OAAO1C,GAEJ8sG,EA9HgB,GAqI3B,SAASW,GAAmBvsG,EAAa6sG,GACrC,IAAI1jG,EAAQnJ,EAAY27C,YACxB,OAAIkxD,EACO1jG,EAEJ,CACHpC,MAAOsrD,EAAMlpD,EAAMpC,MAAO/G,EAAYga,YAAYU,cAClD1T,IAAKqrD,EAAMlpD,EAAMnC,IAAKhH,EAAYia,YAAYS,aAAe,QAMrE,SAASoyF,GAAmB3tD,EAAan/C,EAAarD,GAClD,IAAI2jD,EAAYnB,EAAYE,cAAciB,UAC1C,IAAK,IAAIx8C,KAAcw8C,EACnB,IAAK0uB,GAAmBhvE,EAAYumE,WAAYjmB,EAAUx8C,GAAYqF,OAClE,OAAO,EAGf,OAAO4jG,GAAgB,CAAEnpG,UAAWu7C,GAAexiD,GAEvD,SAASqwG,GAAqBt5F,EAAe1T,EAAarD,GACtD,QAAKqyE,GAAmBhvE,EAAYumE,WAAY7yD,EAAcvK,QAGvD4jG,GAAgB,CAAEr5F,cAAeA,GAAiB/W,GAE7D,SAASowG,GAAgBj2C,EAAUn6D,GAC/B,IAAI6mD,EAAgB7mD,EAAQgiD,iBACxB/oD,EAAQ,eAAS,CAAE6d,cAAe+vC,EAAc/vC,cAAeC,cAAe,GAAIC,WAAY6vC,EAAc7vC,WAAYC,aAAc4vC,EAAc5vC,aAAc3P,eAAgB,GAAIL,UAAW,KAAMC,YAAa,MAAQizD,GAChO,OAAQn6D,EAAQ0B,YAAYgtF,cAAgBA,IAAcz1F,EAAO+G,GAErE,SAAS0uF,GAAa1mF,EAAOhI,EAASswG,EAAcC,GAEhD,YADqB,IAAjBD,IAA2BA,EAAe,MAC1CtoG,EAAMf,YAAcupG,GAAwBxoG,EAAOhI,EAASswG,EAAcC,OAG1EvoG,EAAM+O,gBAAkB05F,GAA0BzoG,EAAOhI,EAASswG,EAAcC,IAOxF,SAASC,GAAwBxoG,EAAOhI,EAASswG,EAAcC,GAC3D,IAAInD,EAAeptG,EAAQgiD,iBACvBQ,EAAcx6C,EAAMf,UACpBypG,EAAoBluD,EAAYE,cAChCiuD,EAAcD,EAAkBjtD,KAChCmtD,EAAmBF,EAAkB/sD,UACrCktD,EAAiB59B,GAAgB09B,EAAanuD,EAAYv/C,QAC1D+E,EAAMiP,aACN,CAAE,GAAIm2F,EAAaxK,kBACnB2N,IACAM,EAAiBn3C,GAAQm3C,EAAgBN,IAG7C,IAAIO,EAAkBrX,GAAiBzxF,EAAMgP,WAAYwrC,EAAYC,eAAekB,WAChFotD,EAAYD,EAAgBrtD,KAC5ButD,EAAiBF,EAAgBntD,UACjCstD,EAAeh+B,GAAgB89B,EAAW/oG,EAAMiP,cACpD,IAAK,IAAIi6F,KAAqBN,EAAkB,CAC5C,IAAIO,EAAkBP,EAAiBM,GACnCE,EAAeD,EAAgB3kG,MAC/B6kG,EAAgBR,EAAeM,EAAgBztD,OAC/C4tD,EAAaX,EAAYQ,EAAgBztD,OAE7C,IAAK6tD,GAAmBF,EAAcniC,YAAakiC,EAAcN,EAAiB9oG,EAAM8O,cAAe9W,GACnG,OAAO,EAGX,IAAImoE,EAAenoE,EAAQrE,QAAQwsE,aAC/BqpC,EAA2C,oBAAjBrpC,EAA8BA,EAAe,KAC3E,IAAK,IAAIspC,KAAmBT,EAAgB,CACxC,IAAIU,EAAgBV,EAAeS,GAEnC,GAAIr/B,GAAgBg/B,EAAcM,EAAcllG,OAAQ,CACpD,IAAImlG,EAAeV,EAAaS,EAAchuD,OAAOmrB,QAErD,IAAqB,IAAjB8iC,GAA0BnvD,EAAYv/C,QACtC,OAAO,EAEX,IAA8B,IAA1BouG,EAAcxiC,QACd,OAAO,EAEX,GAAI2iC,IAAqBA,EAAiB,IAAI,GAASxxG,EAAS+wG,EAAUW,EAAchuD,OAAQguD,GAChG,IAAI,GAAS1xG,EAASsxG,EAAYH,IAC9B,OAAO,GAMnB,IADA,IAAIS,EAAqBxE,EAAap2F,WAC7B1U,EAAK,EAAGvC,EAAKsxG,EAAcliC,OAAQ7sE,EAAKvC,EAAG3B,OAAQkE,IAAM,CAC9D,IAAIuvG,EAAe9xG,EAAGuC,GAClBwvG,EAAkB,eAAS,eAAS,GAAIxB,GAAe,CAAE9jG,MAAO2kG,EAAgB3kG,MAAO9H,OAAQ4sG,EAAW5sG,SAC1GqtG,EAAUH,EAAmBnuD,KAAK6tD,EAAW5tD,OAC7CsuD,EAAeJ,EAAmBjuD,UAAUutD,GAC5C9tD,OAAW,EAOf,GALIA,EADA2uD,EACW,IAAI,GAAS/xG,EAAS+xG,EAASC,GAG/B,IAAI,GAAShyG,EAASsxG,IAEhCO,EAAar7B,GAA4Bs7B,EAAiB9xG,GAAUojD,GACrE,OAAO,GAInB,OAAO,EAIX,SAASqtD,GAA0BzoG,EAAOhI,EAASswG,EAAcC,GAC7D,IAAI0B,EAAqBjqG,EAAMgP,WAC3Bk7F,EAAeD,EAAmBxuD,KAClC0uD,EAAoBF,EAAmBtuD,UACvC9C,EAAY74C,EAAM+O,cAClBq7F,EAAiBvxD,EAAUr0C,MAC3Bo2F,EAAkB5iG,EAAQgiD,iBAAiB4gD,gBAK/C,GAJI2N,IACA3N,EAAkB2N,EAAa3N,KAG9B2O,GAAmB3O,EAAgB1zB,YAAakjC,EAAgBH,EAAoBjqG,EAAM8O,cAAe9W,GAC1G,OAAO,EAGX,IAAI+oE,EAAgB/oE,EAAQrE,QAAQotE,cAChCspC,EAA6C,oBAAlBtpC,EAA+BA,EAAgB,KAC9E,IAAK,IAAIupC,KAAsBH,EAAmB,CAC9C,IAAII,EAAmBJ,EAAkBG,GAEzC,GAAIlgC,GAAgBggC,EAAgBG,EAAiB/lG,OAAQ,CACzD,IAAgC,IAA5Bo2F,EAAgB/zB,QAChB,OAAO,EAEX,GAAIwjC,IAAsBA,EAAkB,IAAI,GAASryG,EAASkyG,EAAaK,EAAiB7uD,OAAQ6uD,GAAmB,MACvH,OAAO,GAKnB,IAAK,IAAIjwG,EAAK,EAAGvC,EAAK6iG,EAAgBzzB,OAAQ7sE,EAAKvC,EAAG3B,OAAQkE,IAAM,CAChE,IAAIkwG,EAAiBzyG,EAAGuC,GACpBmwG,EAAe,eAAS,eAAS,GAAInC,GAAezvD,GACxD,IAAK2xD,EAAeh8B,GAA4Bi8B,EAAczyG,GAAU,MACpE,OAAO,EAGf,OAAO,EAIX,SAASuxG,GAAmBriC,EAAakiC,EAAcN,EAAiB4B,EAAyB1yG,GAC7F,IAAK,IAAIsC,EAAK,EAAGqwG,EAAgBzjC,EAAa5sE,EAAKqwG,EAAcv0G,OAAQkE,IAAM,CAC3E,IAAIssE,EAAa+jC,EAAcrwG,GAC/B,IAAKswG,GAAsBC,GAAmBjkC,EAAYwiC,EAAcN,EAAiB4B,EAAyB1yG,GAAUoxG,GACxH,OAAO,EAGf,OAAO,EAEX,SAASyB,GAAmBjkC,EAAYwiC,EACxCN,EACA4B,EACA1yG,GACI,MAAmB,kBAAf4uE,EACOkkC,GAAmB13C,GAAgBs3C,EAAyBtB,EAAcpxG,IAE3D,kBAAf4uE,EACAkkC,GAAmBrlC,GAAqBqjC,GAAiB,SAAU33F,GAAY,OAAOA,EAAS20D,UAAYc,MAE5F,kBAAfA,GAA2BA,EAC3BkkC,GAAmB13C,GAAgBwT,EAAYwiC,EAAcpxG,IAEjE,GAGX,SAAS8yG,GAAmB97F,GACxB,IAAI2sC,EAAY3sC,EAAW2sC,UACvBz7B,EAAS,GACb,IAAK,IAAI/gB,KAAcw8C,EACnBz7B,EAAO/nB,KAAKwjD,EAAUx8C,GAAYqF,OAEtC,OAAO0b,EAGX,SAAS0qF,GAAsBG,EAAaxgC,GACxC,IAAK,IAAIjwE,EAAK,EAAG0wG,EAAgBD,EAAazwG,EAAK0wG,EAAc50G,OAAQkE,IAAM,CAC3E,IAAIgwE,EAAa0gC,EAAc1wG,GAC/B,GAAI+vE,GAAmBC,EAAYC,GAC/B,OAAO,EAGf,OAAO,EAGX,IAAI0gC,GAAoB,qBACpB,GAA0B,SAAU1zG,GAEpC,SAAS2zG,IACL,IAAI1zG,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAKhE,OAJAqH,EAAM+pG,SAAW,SAAUrhG,GACvB1I,EAAM0I,GAAKA,EACX8lF,GAAOxuF,EAAMvG,MAAMsH,MAAO2H,IAEvB1I,EA2EX,OAlFA,eAAU0zG,EAAU3zG,GASpB2zG,EAAS13G,UAAUvD,OAAS,WACxB,IAAIgB,EAAQd,KAAKc,MACbyH,EAASzH,EAAMyH,OAAQyyG,EAAmBl6G,EAAMk6G,iBAChDloG,EAAavK,GAAUyyG,EACvBpyG,EAAY,CAAC,eASjB,OARIL,IACIyyG,EACApyG,EAAUZ,KAAK,+BAGfY,EAAUZ,KAAK,uBAGfovD,EAAc,MAAO,CAAEz1D,IAAK3B,KAAKoxG,SAAUxoG,UAAWA,EAAUE,KAAK,KAAM+E,MAAO,CAClFsjF,UAAWrwF,EAAMqwF,UACjBD,UAAWpwF,EAAMowF,UACjBp5E,KAAOhF,KAAgBhS,EAAMm6G,cAAgB,IAAO,GACpDljG,MAAQjF,KAAgBhS,EAAMo6G,eAAiB,IAAO,GACtDrhG,OAAS/G,KAAgBhS,EAAMq6G,gBAAkB,IAAO,GACxDC,YAActoG,KAAgBhS,EAAMm6G,cAAgB,IAAO,GAC3DI,aAAevoG,KAAgBhS,EAAMo6G,eAAiB,IAAO,GAC7DI,cAAgBxoG,KAAgBhS,EAAMq6G,gBAAkB,IAAO,GAC/DI,UAAWz6G,EAAMy6G,WAAa,KAC7Bz6G,EAAMksB,WAEnB+tF,EAAS13G,UAAUm4G,gBAAkB,WACjC,GAAIV,GAAkB37F,KAAKnf,KAAKc,MAAMqwF,WAClC,OAAO,EAQX,IAHA,IAAIphF,EAAK/P,KAAK+P,GACV0rG,EAAkBz7G,KAAK+P,GAAGwJ,wBAAwBqC,MAAQ5b,KAAK07G,qBAC/D1uF,EAAWjd,EAAGid,SACThnB,EAAI,EAAGA,EAAIgnB,EAAS/mB,OAAQD,GAAK,EAAG,CACzC,IAAI21G,EAAU3uF,EAAShnB,GACvB,GAAI21G,EAAQpiG,wBAAwBqC,MAAQ6/F,EACxC,OAAO,EAGf,OAAO,GAEXV,EAAS13G,UAAUu4G,gBAAkB,WACjC,GAAId,GAAkB37F,KAAKnf,KAAKc,MAAMowF,WAClC,OAAO,EAQX,IAHA,IAAInhF,EAAK/P,KAAK+P,GACV8rG,EAAmB77G,KAAK+P,GAAGwJ,wBAAwBH,OAASpZ,KAAK87G,qBACjE9uF,EAAWjd,EAAGid,SACThnB,EAAI,EAAGA,EAAIgnB,EAAS/mB,OAAQD,GAAK,EAAG,CACzC,IAAI21G,EAAU3uF,EAAShnB,GACvB,GAAI21G,EAAQpiG,wBAAwBH,OAASyiG,EACzC,OAAO,EAGf,OAAO,GAEXd,EAAS13G,UAAUy4G,mBAAqB,WACpC,OAAIhB,GAAkB37F,KAAKnf,KAAKc,MAAMqwF,WAC3B,EAEJnxF,KAAK+P,GAAG4W,aAAe3mB,KAAK+P,GAAGiM,cAE1C++F,EAAS13G,UAAUq4G,mBAAqB,WACpC,OAAIZ,GAAkB37F,KAAKnf,KAAKc,MAAMowF,WAC3B,EAEJlxF,KAAK+P,GAAGg/E,YAAc/uF,KAAK+P,GAAGwI,aAElCwiG,EAnFkB,CAoF3B,IAMEgB,GAAwB,WACxB,SAASA,EAAOC,GACZ,IAAI30G,EAAQrH,KACZA,KAAKg8G,eAAiBA,EACtBh8G,KAAKyY,WAAa,GAClBzY,KAAKi8G,OAAS,GACdj8G,KAAKk8G,YAAc,GACnBl8G,KAAKm8G,YAAc,SAAUv4G,EAAKhD,GAC9B,IAAIgH,EAAKP,EAAO40G,EAASr0G,EAAGq0G,OAAQxjG,EAAa7Q,EAAG6Q,WAChD2jG,GAAU,EACVC,GAAQ,EACA,OAARz4G,GAEAw4G,EAAWx7G,KAAO6X,EAClBA,EAAW7X,GAAOgD,EAClBq4G,EAAOr7G,IAAQq7G,EAAOr7G,IAAQ,GAAK,EACnCy7G,GAAQ,IAGRJ,EAAOr7G,IAAQ,EACVq7G,EAAOr7G,YACD6X,EAAW7X,UACXyG,EAAM60G,YAAYt7G,GACzBw7G,GAAU,IAGd/0G,EAAM20G,iBACFI,GACA/0G,EAAM20G,eAAe,KAAM56E,OAAOxgC,IAElCy7G,GACAh1G,EAAM20G,eAAep4G,EAAKw9B,OAAOxgC,MAwBjD,OAnBAm7G,EAAO14G,UAAU0T,UAAY,SAAUnW,GACnC,IAAIyG,EAAQrH,KACRs8G,EAAct8G,KAAKk8G,YAAYt7G,GAMnC,OALK07G,IACDA,EAAct8G,KAAKk8G,YAAYt7G,GAAO,SAAUgD,GAC5CyD,EAAM80G,YAAYv4G,EAAKw9B,OAAOxgC,MAG/B07G,GAKXP,EAAO14G,UAAUkZ,QAAU,SAAUgmD,EAAYC,EAAUC,GACvD,OAAOH,GAAgBtiE,KAAKyY,WAAY8pD,EAAYC,EAAUC,IAElEs5C,EAAO14G,UAAUk5G,OAAS,WACtB,OAAO56C,GAAkB3hE,KAAKyY,aAE3BsjG,EAvDgB,GA0D3B,SAASS,GAAmBC,GAGxB,IAFA,IAAIC,EAAc9jD,EAAa6jD,EAAU,yBACrCE,EAAe,EACVxyG,EAAK,EAAGyyG,EAAgBF,EAAavyG,EAAKyyG,EAAc32G,OAAQkE,IAAM,CAC3E,IAAI0yG,EAAaD,EAAczyG,GAC/BwyG,EAAetjG,KAAKI,IAAIkjG,EAAc5/C,EAAyB8/C,IAEnE,OAAOxjG,KAAKyG,KAAK68F,GAErB,SAASG,GAA0Bh8G,EAAOi8G,GACtC,OAAOj8G,EAAMyH,QAAUw0G,EAAcx0G,OAEzC,SAASy0G,GAAmBl8G,EAAOi8G,GAC/B,OAAkC,MAA3BA,EAAcxB,WACjBuB,GAA0Bh8G,EAAOi8G,GAGzC,SAASE,GAAmBF,EAAeG,EAAa/4F,EAAKg5F,GACzD,IAAI/hG,EAAa+I,EAAI/I,WACjB5S,EAAyC,oBAAxB00G,EAAY10G,QAC7B00G,EAAY10G,QAAQ2b,GACpBizC,EAAc,QAAS,CACnBhnD,KAAM,eACNxH,UAAW,CACPs0G,EAAY70G,eACZ00G,EAAc74F,eAAiB,2BAA6B,IAC9Dpb,KAAK,KACP+E,MAAO,CACH/D,SAAUqa,EAAItI,cACdD,MAAOuI,EAAI5L,YACXa,OAAQgC,EAAa+I,EAAInI,aAAe,KAE7CmI,EAAIpF,kBAAmBq4C,EAAc+lD,EAAW,QAAU,QAAS,CAClE/sG,KAAM,gBAC2B,oBAA3B8sG,EAAY50G,WAChB40G,EAAY50G,WAAW6b,GACvB+4F,EAAY50G,aACtB,OAAOE,EAEX,SAAS40G,GAAgBC,EAAOC,GAC5B,OAAOr3C,GAAco3C,EAAOC,EAAO17C,IAEvC,SAAS27C,GAAoBr0G,EAAMs0G,GAO/B,IANA,IAAIC,EAAW,GAMNtzG,EAAK,EAAGuzG,EAASx0G,EAAMiB,EAAKuzG,EAAOz3G,OAAQkE,IAGhD,IAFA,IAAIwzG,EAAWD,EAAOvzG,GAClBN,EAAO8zG,EAAS9zG,MAAQ,EACnB7D,EAAI,EAAGA,EAAI6D,EAAM7D,GAAK,EAC3By3G,EAASz1G,KAAKovD,EAAc,MAAO,CAAEvpD,MAAO,CACpC+N,MAA0B,WAAnB+hG,EAAS/hG,MAAqBgiG,GAAoBJ,GAAgBG,EAAS/hG,OAAS,GAC3F9R,SAAU6zG,EAAS7zG,UAAY,OAI/C,OAAOstD,EAAc9vD,WAAM,EAAQ,eAAc,CAAC,WAAY,IAAKm2G,IAEvE,SAASG,GAAoBJ,GAGzB,OAAsB,MAAfA,EAAsB,EAAIA,EAErC,SAASK,GAAe30G,GACpB,IAAK,IAAIiB,EAAK,EAAG2zG,EAAS50G,EAAMiB,EAAK2zG,EAAO73G,OAAQkE,IAAM,CACtD,IAAI6I,EAAM8qG,EAAO3zG,GACjB,GAAkB,WAAd6I,EAAI4I,MACJ,OAAO,EAGf,OAAO,EAEX,SAASmiG,GAAwBx1G,EAAQV,GACrC,IAAIc,EAAa,CACb,gBACAd,EAAQmc,MAAMC,SAAS,UAK3B,OAHI1b,GACAI,EAAWX,KAAK,wBAEbW,EAEX,SAASq1G,GAAqBjB,EAAekB,GACzC,IAAIt1G,EAAa,CACb,wBACA,yBAA2Bo0G,EAAc90G,KACzC80G,EAAcn0G,WAQlB,OANIq1G,GAAmBlB,EAAcx0G,QAAqC,MAA3Bw0G,EAAcxB,WACzD5yG,EAAWX,KAAK,gCAEhB+0G,EAAc70G,UACdS,EAAWX,KAAK,gCAEbW,EAEX,SAASu1G,GAAiB/5F,GACtB,OAAQizC,EAAc,MAAO,CAAExuD,UAAW,4BAA6BiF,MAAO,CACtE+N,MAAOuI,EAAI5L,YACXzO,SAAUqa,EAAItI,iBAG1B,SAASsiG,GAAqB36G,GAC1B,IAAIuE,EAAoBvE,EAAQuE,kBAIhC,OAHyB,MAArBA,GAAmD,SAAtBA,IAC7BA,EAAuC,SAAnBvE,EAAQ4V,QAA4C,SAAvB5V,EAAQmsE,YAEtD5nE,EAEX,SAASq2G,GAAyB56G,GAC9B,IAAIkG,EAAwBlG,EAAQkG,sBAIpC,OAH6B,MAAzBA,GAA2D,SAA1BA,IACjCA,EAA2C,SAAnBlG,EAAQ4V,QAA4C,SAAvB5V,EAAQmsE,YAE1DjmE,EAGX,IAAI,GAAkC,SAAUtC,GAE5C,SAASi3G,IACL,IAAIh3G,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAgBhE,OAfAqH,EAAMi3G,YAAcj4C,IAAQ,SAAU59C,GAAK,OAAOA,IAAM20F,IAExD/1G,EAAMk2G,oBAAsBl3C,GAAQk3C,IACpCl2G,EAAMk3G,aAAe,IAAIxC,GACzB10G,EAAMm3G,eAAiB,IAAIzC,GAAO10G,EAAMo3G,kBAAkB16D,KAAK18C,IAC/DA,EAAMwI,MAAQ,CACV2tG,YAAa,KACbkB,kBAAkB,EAClBC,qBAAsB,GACtBC,sBAAuB,IAG3Bv3G,EAAMw3G,aAAe,WACjBx3G,EAAM4R,aAAa,eAAS,CAAEukG,YAAan2G,EAAMm1G,sBAAwBn1G,EAAMy3G,yBAE5Ez3G,EAiIX,OAnJA,eAAUg3G,EAAkBj3G,GAoB5Bi3G,EAAiBh7G,UAAUvD,OAAS,WAChC,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MAAOhI,EAAUD,EAAGC,QAC5Dk3G,EAAiBj+G,EAAMgH,UAAY,GACnCoB,EAAOlJ,KAAKs+G,YAAYx9G,EAAMoI,MAC9B81G,EAAoBh/G,KAAKu9G,oBAAoBr0G,EAAM2G,EAAM2tG,aACzD70G,EAAao1G,GAAwBj9G,EAAMyH,OAAQV,GACnD/G,EAAMmI,kBACNN,EAAWX,KAAK,6BAGpB,IAEIi3G,EAFAC,EAAYH,EAAe94G,OAC3Bk5G,EAAU,EAEVC,EAAmB,GACnBC,EAAmB,GACnBC,EAAmB,GACvB,MAAOH,EAAUD,GAAgE,YAAlDD,EAAgBF,EAAeI,IAAUl3G,KACpEm3G,EAAiBp3G,KAAKhI,KAAKixG,cAAcgO,EAAeD,GAAmB,IAC3EG,GAAW,EAEf,MAAOA,EAAUD,GAAgE,UAAlDD,EAAgBF,EAAeI,IAAUl3G,KACpEo3G,EAAiBr3G,KAAKhI,KAAKixG,cAAcgO,EAAeD,GAAmB,IAC3EG,GAAW,EAEf,MAAOA,EAAUD,GAAgE,YAAlDD,EAAgBF,EAAeI,IAAUl3G,KACpEq3G,EAAiBt3G,KAAKhI,KAAKixG,cAAcgO,EAAeD,GAAmB,IAC3EG,GAAW,EAMf,IAAII,GAAWx0B,KACXy0B,EAAY,CAAEpvG,KAAM,YACxB,OAAOgnD,EAAc,QAAS,CAC1BhnD,KAAM,OACNxH,UAAWD,EAAWG,KAAK,KAC3B+E,MAAO,CAAEuL,OAAQtY,EAAMsY,SACxBtC,SAASyoG,GAAWH,EAAiBn5G,SAAWmxD,EAAc9vD,WAAM,EAAQ,eAAc,CAAC,QAASk4G,GAAYJ,IAAoBtoG,SAASyoG,GAAWF,EAAiBp5G,SAAWmxD,EAAc9vD,WAAM,EAAQ,eAAc,CAAC,QAASk4G,GAAYH,IAAoBvoG,SAASyoG,GAAWD,EAAiBr5G,SAAWmxD,EAAc9vD,WAAM,EAAQ,eAAc,CAAC,QAASk4G,GAAYF,IAAoBC,GAAWnoD,EAAc9vD,WAAM,EAAQ,eAAc,eAAc,eAAc,CAAC,QAASk4G,GAAYJ,GAAmBC,GAAmBC,MAEhiBjB,EAAiBh7G,UAAU4tG,cAAgB,SAAU8L,EAAeiC,EAAmB7B,GACnF,MAAI,iBAAkBJ,EACV3lD,EAAcC,EAAU,CAAEz2D,IAAKm8G,EAAcn8G,KAAOm8G,EAAch5F,cAEtEqzC,EAAc,KAAM,CAAEx2D,IAAKm8G,EAAcn8G,IAAKwP,KAAM,eAAgBxH,UAAWo1G,GAAqBjB,EAAe/8G,KAAKc,MAAMyH,QAAQO,KAAK,MAAQ9I,KAAKy/G,cAAc1C,EAAeiC,EAAmBjC,EAAc50G,MAAOg1G,KAEzOkB,EAAiBh7G,UAAUo8G,cAAgB,SAAU1C,EAAeiC,EAAmB9B,EAAaC,GAChG,GAAI,iBAAkBD,EAClB,OAAOA,EAAYn5F,aAEvB,IAAIjjB,EAAQd,KAAKc,MACb8G,EAAK5H,KAAK6P,MAAO6uG,EAAmB92G,EAAG82G,iBAAkBC,EAAuB/2G,EAAG+2G,qBAAsBC,EAAwBh3G,EAAGg3G,sBACpIhD,EAAkBoB,GAAmBl8G,EAAOi8G,GAC5C2C,EAAW5C,GAA0Bh8G,EAAOi8G,GAG5C7rB,EAAapwF,EAAMyH,OACnBm2G,EAAmB,SACd9C,EACG,OADe,SAFK,UAI5B+D,EAAa5C,EAAcn8G,IAC3B4H,EAAUy0G,GAAmBF,EAAeG,EAAa,CACzDn+F,kBAAmBigG,EACnBnjG,cAAe,GACftD,YAAezX,EAAMmI,uBAAyD2b,IAArC+5F,EAAqBgB,GAAgE,KAAnChB,EAAqBgB,GAChH3jG,kBAAoD4I,IAAtCg6F,EAAsBe,GAA4Bf,EAAsBe,GAAc,KACpGvkG,WAAY2hG,EAAc3hG,WAC1B8I,gBAAgB,EAChBE,eAAgB,GAChBw7F,sBAAuB,cACxBzC,GACH,OAAO/lD,EAAc+lD,EAAW,KAAO,KAAM,CACzCx7G,IAAKu7G,EAAY90G,MACjBgI,KAAM,gBACPgnD,EAAc,MAAO,CAAExuD,UAAW,uBAAyB82G,EAAW,8BAAgC,KACrGtoD,EAAc,GAAU,CAAEz1D,IAAK3B,KAAKu+G,aAAaxnG,UAAU4oG,GAAav3G,MAAOpI,KAAKw+G,eAAeznG,UAAU4oG,GAAazuB,UAAWA,EAAWC,UAAYrwF,EAAMyH,OAAqB,SAAZ,UAA4CgzG,UAAWwB,EAAcxB,UAAWhzG,OAAQm3G,EAAU1E,kBACvQ,GAAQxyG,MAEtB61G,EAAiBh7G,UAAUo7G,kBAAoB,SAAUz7F,EAAYpiB,GACjE,IAAIi/G,EAAUC,GAAgB9/G,KAAKc,MAAMgH,SAAUlH,GAC/Ci/G,GACAhqB,GAAOgqB,EAAQ13G,MAAMya,cAAeI,IAG5Cq7F,EAAiBh7G,UAAU8T,kBAAoB,WAC3CnX,KAAK6+G,eACL7+G,KAAK6H,QAAQktF,iBAAiB/0F,KAAK6+G,eAEvCR,EAAiBh7G,UAAUgU,mBAAqB,WAE5CrX,KAAK6+G,gBAETR,EAAiBh7G,UAAUojB,qBAAuB,WAC9CzmB,KAAK6H,QAAQmtF,oBAAoBh1F,KAAK6+G,eAE1CR,EAAiBh7G,UAAUm5G,mBAAqB,WAC5C,OAAOqB,GAAe79G,KAAKc,MAAMoI,MAC3BszG,GAAmBx8G,KAAKw+G,eAAejC,UACvC,GAEV8B,EAAiBh7G,UAAUy7G,oBAAsB,WAC7C,IAAIiB,EAAiBnxB,KACjBhnF,EAAK5H,KAAMu+G,EAAe32G,EAAG22G,aAAcC,EAAiB52G,EAAG42G,eAC/DE,GAAmB,EACnBC,EAAuB,GACvBC,EAAwB,GAC5B,IAAK,IAAIe,KAAcpB,EAAa9lG,WAAY,CAC5C,IAAIunG,EAAWzB,EAAa9lG,WAAWknG,GACvC,GAAIK,GAAYA,EAASpE,kBAAmB,CACxC8C,GAAmB,EACnB,OAGR,IAAK,IAAIv0G,EAAK,EAAG9H,EAAKrC,KAAKc,MAAMgH,SAAUqC,EAAK9H,EAAG4D,OAAQkE,IAAM,CAC7D,IAAI01G,EAAUx9G,EAAG8H,GAEb6Y,GADA28F,EAAaE,EAAQj/G,IACR49G,EAAe/lG,WAAWknG,IAC3C,GAAI38F,EAAY,CACZ,IAAIi9F,EAAYj9F,EAAWod,WAC3Bu+E,EAAqBgB,GAActmG,KAAKyM,MAAMm6F,EAAU1mG,wBAAwBqC,OAAS8iG,EACnFqB,EAAev/E,EACf,IACNo+E,EAAsBe,GAActmG,KAAKyM,MAAMm6F,EAAU1mG,wBAAwBH,SAGzF,MAAO,CAAEslG,iBAAkBA,EAAkBC,qBAAsBA,EAAsBC,sBAAuBA,IAE7GP,EApJ0B,CAqJnC,IAKF,SAASyB,GAAgBh4G,EAAUlH,GAC/B,IAAK,IAAIuJ,EAAK,EAAG+1G,EAAap4G,EAAUqC,EAAK+1G,EAAWj6G,OAAQkE,IAAM,CAClE,IAAI01G,EAAUK,EAAW/1G,GACzB,GAAI01G,EAAQj/G,MAAQA,EAChB,OAAOi/G,EAGf,OAAO,KAXX,GAAiBtlG,iBAAiB,CAC9BokG,qBAAsB/8C,GACtBg9C,sBAAuBh9C,KAY3B,IAAI,GAA2B,SAAUx6D,GAErC,SAAS+4G,IACL,IAAI94G,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAEhE,OADAqH,EAAMe,MAAQ2O,IACP1P,EA2CX,OA/CA,eAAU84G,EAAW/4G,GAMrB+4G,EAAU98G,UAAUvD,OAAS,WACzB,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CrE,EAAUqE,EAAQrE,QAClB6G,EAAMvJ,EAAMuJ,IACZgC,EAAahC,EAAIgC,WACjBzB,EAAKyB,EAAWzB,GAChB8W,EAAY,CACZ1T,MAAO,IAAI,GAASnG,EAASwE,EAAWC,IAAKD,EAAW4C,UACxD4S,KAAMha,EAAQyZ,QACdnU,SAAUrM,EAAMqM,SAChB0pE,UAAWjsE,EAAGisE,UACd9oE,gBAAiBnD,EAAGmD,gBACpBD,YAAalD,EAAGkD,YAChBmvE,aAAcn8E,EAAMs/G,iBAAmBrkC,GAAoB1xE,EAAKxC,GAChEq1E,kBAAmBp8E,EAAMiM,iBAAmBovE,GAAyB9xE,EAAKxC,GAC1Es1E,gBAAiBr8E,EAAMiM,iBAAmBqvE,GAAuB/xE,GACjEsN,SAAUb,QAAQhW,EAAMuM,YAAcvM,EAAMwM,YAAcxM,EAAMyM,iBAChEd,QAASqK,QAAQzM,EAAIoC,SACrBC,MAAOoK,QAAQzM,EAAIqC,OACnBe,OAAQqJ,QAAQhW,EAAM2M,QACtBC,SAAUoJ,QAAQhW,EAAM4M,UACxBC,QAASmJ,QAAQhW,EAAM6M,SACvBH,WAAYsJ,QAAQhW,EAAM0M,YAC1BH,WAAYyJ,QAAQhW,EAAMuM,YAC1BC,WAAYwJ,QAAQhW,EAAMwM,aAE1B+yG,EAAqBrjC,GAAmBt7D,GAAW7Y,OAAO+B,EAAGjC,YACjE,OAAQyuD,EAAc,GAAY,CAAE11C,UAAWA,EAAW/Y,WAAYnF,EAAQ+sE,gBAAiB/nE,QAAShF,EAAQgtE,aAAcllE,eAAgBxK,EAAMwK,eAAgB2W,SAAUze,EAAQitE,cAAetuD,YAAa3e,EAAQktE,iBAAkBtoE,MAAOpI,KAAKoI,QAAS,SAAUM,EAAW2Z,EAAkB7W,EAAYC,GAAgB,OAAO3K,EAAMksB,SAAStkB,EAAW23G,EAAmBx3G,OAAOwZ,GAAmB7W,EAAYC,EAAciW,OAEhby+F,EAAU98G,UAAU8T,kBAAoB,WACpCmkE,GAASt7E,KAAKoI,MAAMuQ,QAAS3Y,KAAKc,MAAMuJ,MAK5C81G,EAAU98G,UAAUgU,mBAAqB,SAAUC,GAC/C,IAAIjN,EAAMrK,KAAKc,MAAMuJ,IACjBA,IAAQiN,EAAUjN,KAClBixE,GAASt7E,KAAKoI,MAAMuQ,QAAStO,IAG9B81G,EAhDmB,CAiD5B,IAGE,GAA+B,SAAU/4G,GAEzC,SAASk5G,IACL,OAAkB,OAAXl5G,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAiB/D,OAnBA,eAAUsgH,EAAel5G,GAIzBk5G,EAAcj9G,UAAUvD,OAAS,WAC7B,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CwC,EAAMvJ,EAAMuJ,IACZ4C,EAAapF,EAAQrE,QAAQ0J,iBAAmBpM,EAAM+L,kBACtDM,EAAWkvE,GAAiBhyE,EAAK4C,EAAYpF,EAAS/G,EAAMw7E,wBAAyBx7E,EAAMgM,wBAC/F,OAAQsqD,EAAc,GAAW,CAAE/sD,IAAKA,EAAK8C,SAAUA,EAAUizG,gBAAiBt/G,EAAMs/G,gBAAiBrzG,gBAAiBjM,EAAMiM,gBAAiBzB,eAAgBxK,EAAMwK,gBAAkBi1G,GAAsBlzG,WAAYvM,EAAMuM,WAAYC,WAAYxM,EAAMwM,WAAYC,gBAAiBzM,EAAMyM,gBAAiBC,WAAY1M,EAAM0M,WAAYC,OAAQ3M,EAAM2M,OAAQC,SAAU5M,EAAM4M,SAAUC,QAAS7M,EAAM6M,UAAW,SAAUjF,EAAWC,EAAY6C,EAAYC,EAAciW,GAAa,OAAQ01C,EAAc,IAAK,eAAS,CAAExuD,UAAW9H,EAAM8L,gBAAgB/D,OAAOF,GAAYG,KAAK,KAAM+E,MAAO,CACvkBC,YAAa4T,EAAU5T,YACvBC,gBAAiB2T,EAAU3T,iBAC5BpM,IAAK+G,GAAa20E,GAAkBhzE,EAAKxC,IAC5CuvD,EAAc,MAAO,CAAExuD,UAAW,gBAAiBjH,IAAK6J,EAAYqC,MAAO,CAAE+oE,MAAOl1D,EAAUm1D,YAAeprE,GAC7GiW,EAAUw7D,kBACN9lB,EAAc,MAAO,CAAExuD,UAAW,4CACtC8Y,EAAUy7D,gBACN/lB,EAAc,MAAO,CAAExuD,UAAW,+CAEvC03G,EApBuB,CAqBhC,IACF,SAASC,GAAqB3yG,GAC1B,OAAQwpD,EAAc,MAAO,CAAExuD,UAAW,uBACtCgF,EAAWT,UAAaiqD,EAAc,MAAO,CAAExuD,UAAW,iBAAmBgF,EAAWT,UACxFiqD,EAAc,MAAO,CAAExuD,UAAW,4BAC9BwuD,EAAc,MAAO,CAAExuD,UAAW,4BAA8BgF,EAAWI,MAAM5J,OAASgzD,EAAcC,EAAU,KAAM,QAGpI,IAAImpD,GAAmB,SAAU1/G,GAAS,OAAQs2D,EAAcw9B,GAAgBxzE,SAAU,MAAM,SAAUvZ,GACtG,IAAIrE,EAAUqE,EAAQrE,QAClBke,EAAY,CACZgD,OAAQ5jB,EAAM4jB,OACdzZ,KAAMpD,EAAQ6X,QAAQkC,OAAO9gB,EAAMmK,MACnC4W,KAAMha,EAAQyZ,SAElB,OAAQ81C,EAAc,GAAY,CAAE11C,UAAWA,EAAW/Y,WAAYnF,EAAQ+qE,uBAAwB/lE,QAAShF,EAAQgrE,oBAAqBvsD,SAAUze,EAAQirE,qBAAsBtsD,YAAa3e,EAAQkrE,yBAA2B5tE,EAAMksB,cAG1OyzF,GAAiBp0C,GAAgB,CAAEjI,IAAK,YACxC,GAAgC,SAAUh9D,GAE1C,SAASs5G,IACL,OAAkB,OAAXt5G,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAgB/D,OAlBA,eAAU0gH,EAAgBt5G,GAI1Bs5G,EAAer9G,UAAUvD,OAAS,WAC9B,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CrE,EAAUqE,EAAQrE,QAClBke,EAAYi/F,GAAuB,CACnC11G,KAAMnK,EAAMmK,KACZC,YAAapK,EAAMoK,YACnBC,WAAYrK,EAAMqK,WAClBC,cAAetK,EAAMsK,cACrBw1G,WAAY9/G,EAAMuK,eAClBiW,QAASzZ,EAAQyZ,QACjB5B,QAAS7X,EAAQ6X,UAErB,OAAQ03C,EAAc+hC,GAAa,CAAEz3E,UAAWA,EAAWlZ,QAAShF,EAAQkqE,eAAgBpiE,eAAgBxK,EAAMwK,gBAAkBxK,EAAMksB,WAEvI0zF,EAnBwB,CAoBjC,IACF,SAASC,GAAuBrsC,GAC5B,IAAIrpE,EAAOqpE,EAAIrpE,KAAMyU,EAAU40D,EAAI50D,QAC/B+0F,EAAUjnB,GAAYviF,EAAMqpE,EAAInpE,WAAY,KAAMmpE,EAAIppE,aAC1D,OAAO,eAAS,eAAS,eAAS,CAAED,KAAMyU,EAAQkC,OAAO3W,GAAO4W,KAAMyyD,EAAIhzD,SAAWmzF,GAAU,CAAE5oG,cAAeyoE,EAAIlpE,cAAgBsU,EAAQla,OAAOyF,EAAMw1G,IAAkB,KAAOnsC,EAAIssC,YAG1L,IAAI,GAA6B,SAAUx5G,GAEvC,SAASy5G,IACL,IAAIx5G,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAGhE,OAFAqH,EAAMy5G,gBAAkBl6C,GAAc+5C,IACtCt5G,EAAMgyF,oBAAsBc,KACrB9yF,EAsBX,OA3BA,eAAUw5G,EAAaz5G,GAOvBy5G,EAAYx9G,UAAUvD,OAAS,WAC3B,IAAI8H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC1CrE,EAAUqE,EAAQrE,QAClBke,EAAY1hB,KAAK8gH,gBAAgB,CACjC71G,KAAMnK,EAAMmK,KACZC,YAAapK,EAAMoK,YACnBC,WAAYrK,EAAMqK,WAClBC,cAAetK,EAAMsK,cACrBw1G,WAAY9/G,EAAMuK,eAClBiW,QAASzZ,EAAQyZ,QACjB5B,QAAS7X,EAAQ6X,UAEjB/W,EAAa+kF,GAAiBhsE,EAAW7Z,EAAQmc,OAAOnb,OAAO6Y,EAAUvR,WACvE,GACAnQ,KAAKq5F,oBAAoB71F,EAAQiqE,kBAAmB/rD,IACtDsK,EAAYtK,EAAUvR,WAAa,GAAK,CACxC,YAAay1D,GAAgB9kE,EAAMmK,OAEvC,OAAQmsD,EAAc,GAAW,CAAE11C,UAAWA,EAAWO,SAAUze,EAAQmqE,gBAAiBxrD,YAAa3e,EAAQoqE,mBAAoBxlE,MAAOtH,EAAMsH,QAAS,SAAUM,GAAa,OAAO5H,EAAMksB,SAAStkB,EAAWC,EAAYqjB,EAAWtK,EAAUvR,gBAEjP0wG,EA5BqB,CA6B9B,IAEF,SAASE,GAAW3oG,GAChB,OAAQg/C,EAAc,MAAO,CAAExuD,UAAW,MAAQwP,IAEtD,IAAI4oG,GAAU,SAAUlgH,GAAS,OAAQs2D,EAAc,GAAW,CAAE9rD,eAAgB8B,GAAoB/C,IAAKvJ,EAAMuJ,IAA4B8C,SAAU,GAAIizG,iBAAiB,EAAMrzG,iBAAiB,EAAMM,YAAY,EAAOC,YAAY,EAAOC,iBAAiB,EAAOC,YAAY,EAAOC,OAAQ3M,EAAM2M,OAAQC,SAAU5M,EAAM4M,SAAUC,QAAS7M,EAAM6M,UAAW,SAAUjF,EAAWC,EAAY6C,EAAYC,EAAciW,GAAa,OAAQ01C,EAAc,MAAO,CAAEz1D,IAAK+G,EAAWE,UAAW,CAAC,eAAeC,OAAOF,GAAYG,KAAK,KAAM+E,MAAO,CACrhBE,gBAAiB2T,EAAU3T,kBAC1BtC,OACT,SAAS2B,GAAmBtM,GACxB,IAAIsD,EAAQtD,EAAMkN,MAAM5J,MACxB,OAAOA,GAAUgzD,EAAc,MAAO,CAAExuD,UAAW,kBAAoB9H,EAAMkN,MAAM5J,OAGvF,IAAI68G,GAAiB,SAAUngH,GAAS,OAAQs2D,EAAcw9B,GAAgBxzE,SAAU,MAAM,SAAUvZ,GACpG,IAAI6X,EAAU7X,EAAQ6X,QAASlc,EAAUqE,EAAQrE,QAC7CyH,EAAOnK,EAAMmK,KACbzF,EAAShC,EAAQ4rE,kBAAoBtuE,EAAMyP,cAC3C+5D,EAAM5qD,EAAQ2pD,kBAAkBp+D,GAChC6W,EAAOpC,EAAQla,OAAOyF,EAAMzF,GAC5Bkc,EAAY,CAAE4oD,IAAKA,EAAKxoD,KAAMA,EAAM7W,KAAMA,GAC9C,OAAQmsD,EAAc,GAAY,CAAE11C,UAAWA,EAAW/Y,WAAYnF,EAAQwqE,qBAAsBxlE,QAAShF,EAAQyqE,kBAAmB3iE,eAAgB41G,GAAaj/F,SAAUze,EAAQ0qE,mBAAoB/rD,YAAa3e,EAAQ2qE,uBAAyBrtE,EAAMksB,cAEnQ,SAASk0F,GAAYtzG,GACjB,OAAOA,EAAWkU,KAGtB,IAAIq/F,GAAwB,GACxB,GAAyB,SAAU/5G,GAEnC,SAASg6G,IACL,IAAI/5G,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KA6BhE,OA5BAqH,EAAMwI,MAAQ,CACVsgG,QAAS12C,KAEbpyD,EAAMyI,aAAe,SAAUC,GAC3B1I,EAAM2T,OAASjL,EACX1I,EAAMvG,MAAMsH,OACZytF,GAAOxuF,EAAMvG,MAAMsH,MAAO2H,IAIlC1I,EAAMg6G,wBAA0B,SAAUxnE,GAEtC,IAAI52C,EAASm2D,EAAsBvf,GAC9BxyC,EAAM2T,OAAO0rB,SAASzjC,IACvBoE,EAAMi6G,oBAGdj6G,EAAMk6G,sBAAwB,SAAU1nE,GACrB,WAAXA,EAAGj5C,KACHyG,EAAMi6G,oBAGdj6G,EAAMi6G,iBAAmB,WACrB,IAAIE,EAAUn6G,EAAMvG,MAAM0gH,QACtBA,GACAA,KAGDn6G,EA+CX,OA9EA,eAAU+5G,EAASh6G,GAiCnBg6G,EAAQ/9G,UAAUvD,OAAS,WACvB,IAAI8H,EAAK5H,KAAK6H,QAASmc,EAAQpc,EAAGoc,MAAOxgB,EAAUoE,EAAGpE,QAClDnB,EAAKrC,KAAMc,EAAQuB,EAAGvB,MAAO+O,EAAQxN,EAAGwN,MACxClH,EAAa,CACb,aACAqb,EAAMC,SAAS,YACjBpb,OAAO/H,EAAM8L,iBAAmB,IAClC,OAAO2qD,EAAaH,EAAc,MAAO,eAAS,CAAEzrD,GAAI7K,EAAM6K,GAAI/C,UAAWD,EAAWG,KAAK,KAAM,kBAAmB+G,EAAMsgG,SAAWrvG,EAAM2gH,WAAY,CAAE9/G,IAAK3B,KAAK8P,eACjKsnD,EAAc,MAAO,CAAExuD,UAAW,qBAAuBob,EAAMC,SAAS,kBACpEmzC,EAAc,OAAQ,CAAExuD,UAAW,mBAAoB+C,GAAIkE,EAAMsgG,SAAWrvG,EAAMsD,OAClFgzD,EAAc,OAAQ,CAAExuD,UAAW,oBAAsBob,EAAMgwE,aAAa,SAAU5vF,MAAOZ,EAAQwuE,UAAW7qD,QAASnnB,KAAKshH,oBAClIlqD,EAAc,MAAO,CAAExuD,UAAW,mBAAqBob,EAAMC,SAAS,mBAAqBnjB,EAAMksB,WAAYlsB,EAAM4gH,WAE3HN,EAAQ/9G,UAAU8T,kBAAoB,WAClC6oB,SAASsa,iBAAiB,YAAat6C,KAAKqhH,yBAC5CrhF,SAASsa,iBAAiB,UAAWt6C,KAAKuhH,uBAC1CvhH,KAAKmhF,cAETigC,EAAQ/9G,UAAUojB,qBAAuB,WACrCuZ,SAAS0a,oBAAoB,YAAa16C,KAAKqhH,yBAC/CrhF,SAAS0a,oBAAoB,UAAW16C,KAAKuhH,wBAEjDH,EAAQ/9G,UAAU89E,WAAa,WAC3B,IAAInpE,EAAQhY,KAAK6H,QAAQmQ,MACrBpQ,EAAK5H,KAAKc,MAAO6gH,EAAc/5G,EAAG+5G,YAAajzG,EAAe9G,EAAG8G,aACjEsM,EAAShb,KAAKgb,OACd4mG,EAAgBjxB,GAAyBgxB,GAC7C,GAAIC,EAAe,CACf,IAAIC,EAAc7mG,EAAOzB,wBAErBuoG,EAAapzG,EACXypD,EAAewpD,EAAa,kBAAkBpoG,wBAAwBpB,IACtEypG,EAAczpG,IAChB4pG,EAAc/pG,EAAQ4pG,EAAc7pG,MAAQ8pG,EAAYjmG,MAAQgmG,EAAc9pG,KAElFgqG,EAAazoG,KAAKI,IAAIqoG,EAAYX,IAClCY,EAAc1oG,KAAKwM,IAAIk8F,EAAa/hF,SAASq4B,gBAAgB9/C,YAAc4oG,GAAwBU,EAAYjmG,OAC/GmmG,EAAc1oG,KAAKI,IAAIsoG,EAAaZ,IACpC,IAAIa,EAAWhnG,EAAOinG,aAAa1oG,wBACnC0/C,EAAWj+C,EAAQ,CACf7C,IAAK2pG,EAAaE,EAAS7pG,IAC3BL,KAAMiqG,EAAcC,EAASlqG,SAIlCspG,EA/EiB,CAgF1B,IAEE,GAA6B,SAAUh6G,GAEvC,SAAS86G,IACL,IAAI76G,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAahE,OAZAqH,EAAMyI,aAAe,SAAUkL,GAC3B3T,EAAM2T,OAASA,EACXA,EACA3T,EAAMQ,QAAQoT,6BAA6B5T,EAAO,CAC9C0I,GAAIiL,EACJwxC,gBAAgB,IAIpBnlD,EAAMQ,QAAQsT,+BAA+B9T,IAG9CA,EAkCX,OAjDA,eAAU66G,EAAa96G,GAiBvB86G,EAAY7+G,UAAUvD,OAAS,WAC3B,IAAI8H,EAAK5H,KAAK6H,QAASrE,EAAUoE,EAAGpE,QAASkc,EAAU9X,EAAG8X,QACtD5e,EAAQd,KAAKc,MACbw1B,EAAYx1B,EAAMw1B,UAAWnrB,EAAarK,EAAMqK,WAAYD,EAAcpK,EAAMoK,YAChF9G,EAAQsb,EAAQla,OAAO8wB,EAAW9yB,EAAQupE,kBAC9C,OAAQ3V,EAAc,GAAa,CAAEnsD,KAAMqrB,EAAWprB,YAAaA,EAAaC,WAAYA,EAAY/C,MAAOpI,KAAK8P,eAAgB,SAAUpH,EAAWuH,EAAe+b,GAAa,OAAQorC,EAAc,GAAS,CAAEhvD,MAAOM,EAAWiD,GAAI7K,EAAM6K,GAAIvH,MAAOA,EAAOwI,gBAAiB,CAAC,mBAAmB/D,OAAOoH,GAAgBwxG,WAAYz1F,EAAiE01F,SAAU5gH,EAAM4gH,SAAUC,YAAa7gH,EAAM6gH,YAAajzG,aAAc5N,EAAM4N,aAAc8yG,QAAS1gH,EAAM0gH,SACpfpqD,EAAc,GAAgB,CAAEnsD,KAAMqrB,EAAWprB,YAAaA,EAAaC,WAAYA,IAAc,SAAUK,EAAYC,GAAgB,OAAQA,GAC/I2rD,EAAc,MAAO,CAAExuD,UAAW,uBAAwBjH,IAAK6J,GAAcC,MACjF3K,EAAMksB,cAEdk1F,EAAY7+G,UAAUqZ,SAAW,SAAUC,EAAcC,EAAam5E,EAASC,GAC3E,IAAIpuF,EAAK5H,KAAMgb,EAASpT,EAAGoT,OAAQla,EAAQ8G,EAAG9G,MAC9C,OAAI6b,GAAgB,GAAKA,EAAeo5E,GACpCn5E,GAAe,GAAKA,EAAco5E,EAC3B,CACH9qF,YAAapK,EAAMoK,YACnB6R,SAAU,eAAS,CAAExQ,QAAQ,EAAM8H,MAAO,CAClCpC,MAAOnR,EAAMw1B,UACbpkB,IAAKpR,EAAMy1B,UACVz1B,EAAM6N,eACfsO,MAAOjC,EACPpH,KAAM,CACFkE,KAAM,EACNK,IAAK,EACLJ,MAAOg+E,EACPl8E,OAAQm8E,GAEZ34E,MAAO,GAGR,MAEJ6kG,EAlDqB,CAmD9B,IAEE,GAA8B,SAAU96G,GAExC,SAAS+6G,IACL,IAAI96G,EAAmB,OAAXD,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAwChE,OAvCAqH,EAAM+6G,UAAYrrG,IAClB1P,EAAMwI,MAAQ,CACVwyG,eAAe,EACf/yG,UAAWmqD,KAEfpyD,EAAM+H,YAAc,SAAUyqC,GAC1B,IAAIjyC,EAAKP,EAAOvG,EAAQ8G,EAAG9G,MAAO+G,EAAUD,EAAGC,QAC3CsqE,EAAgBtqE,EAAQrE,QAAQ2uE,cAChClnE,EAAOq3G,GAAaxhH,GAAOmR,MAC/B,SAASswG,EAAel4G,GACpB,IAAIzC,EAAKyC,EAAIgC,WAAYC,EAAM1E,EAAG0E,IAAK2C,EAAWrH,EAAGqH,SAAUoF,EAAQzM,EAAGyM,MAC1E,MAAO,CACHrG,MAAO,IAAI,GAASnG,EAASyE,EAAK2C,GAClCgD,MAAOpK,EAAQ6X,QAAQkC,OAAOvN,EAAMpC,OACpCC,IAAKrK,EAAQ6X,QAAQkC,OAAOvN,EAAMnC,KAClCzF,QAASpC,EAAIoC,QACbC,MAAOrC,EAAIqC,OAGU,oBAAlBylE,IACPA,EAAgBA,EAAc,CAC1BlnE,KAAMA,EACNsB,OAAQuK,QAAQhW,EAAMwN,YACtBF,QAAStN,EAAMsN,QAAQzK,IAAI4+G,GAC3B/zG,WAAY1N,EAAM0N,WAAW7K,IAAI4+G,GACjC36D,QAAS/N,EACTh4B,KAAMha,EAAQyZ,WAGjB6wD,GAAmC,YAAlBA,EAGY,kBAAlBA,GACZtqE,EAAQggD,YAAYk6B,OAAO92E,EAAMknE,GAHjC9qE,EAAMuR,SAAS,CAAEypG,eAAe,KAMxCh7G,EAAMm7G,mBAAqB,WACvBn7G,EAAMuR,SAAS,CAAEypG,eAAe,KAE7Bh7G,EAoCX,OA9EA,eAAU86G,EAAc/6G,GA4CxB+6G,EAAa9+G,UAAUvD,OAAS,WAC5B,IAAIuH,EAAQrH,KACR4H,EAAK5H,KAAMc,EAAQ8G,EAAG9G,MAAO+O,EAAQjI,EAAGiI,MAC5C,OAAQunD,EAAcw9B,GAAgBxzE,SAAU,MAAM,SAAUvZ,GAC5D,IAAIyZ,EAAUzZ,EAAQyZ,QAAS9d,EAAUqE,EAAQrE,QAASqkD,EAAchgD,EAAQggD,YAC5EopB,EAAeztE,EAAQytE,aACvB1iE,EAAUzN,EAAMyN,QAChB8F,EAAQiuG,GAAaxhH,GACrBghB,EAA+B,oBAAjBmvD,EACZA,EAAa1tE,KAAKskD,EAAat5C,GAC/B,IAAMA,EAAU,IAAM0iE,EACxB7sE,EAAQs4D,EAAmBl5D,EAAQ0tE,aAAc,CAAC3iE,GAAUuT,GAC5DJ,EAAY,CACZ4oD,IAAK/7D,EACL6Y,UAAW,IAAM7Y,EACjBuT,KAAMA,EACND,KAAMP,GAEV,OAAQ81C,EAAcC,EAAU,KAC5BvgD,QAAQhW,EAAMyN,UAAa6oD,EAAc,GAAY,CAAEhvD,MAAOf,EAAM+6G,UAAW1gG,UAAWA,EAAW/Y,WAAYnF,EAAQ4uE,mBAAoB5pE,QAAShF,EAAQ6uE,gBAAiB/mE,eAAgBxK,EAAMwK,gBAAkB2b,GAAqBhF,SAAUze,EAAQ8uE,iBAAkBnwD,YAAa3e,EAAQ+uE,sBAAuB,SAAU7pE,EAAW2Z,EAAkB7W,EAAYC,GAAgB,OAAO3K,EAAMksB,SAAStkB,EAAW,CAAC,gBAAgBG,OAAOwZ,GAAmB7W,EAAYC,EAAcpE,EAAM+H,YAAahL,EAAOyL,EAAMwyG,cAAexyG,EAAMwyG,cAAgBxyG,EAAMP,UAAY,OAC5jBO,EAAMwyG,eAAkBjrD,EAAc,GAAa,CAAEzrD,GAAIkE,EAAMP,UAAWgnB,UAAWjiB,EAAMpC,MAAOskB,QAASliB,EAAMnC,IAAKhH,YAAapK,EAAMoK,YAAaC,WAAYrK,EAAMqK,WAAYwD,cAAe7N,EAAM6N,cAAe+yG,SAAUr6G,EAAMq6G,SAAUC,YAAa7gH,EAAM2N,eAAekK,QAASjK,aAAc5N,EAAM4N,aAAc8yG,QAASn6G,EAAMm7G,oBAAsB1hH,EAAM8N,uBAGtXuzG,EAAa9+G,UAAU8T,kBAAoB,WACvCnX,KAAKyiH,kBAETN,EAAa9+G,UAAUgU,mBAAqB,WACxCrX,KAAKyiH,kBAETN,EAAa9+G,UAAUo/G,eAAiB,WAChCziH,KAAKoiH,UAAUzpG,UACf3Y,KAAK0hH,SAAWvpD,EAAen4D,KAAKoiH,UAAUzpG,QAAS,sBAGxDwpG,EA/EsB,CAgF/B,IACF,SAASl7F,GAAoBnmB,GACzB,OAAOA,EAAMghB,KAEjB,SAASwgG,GAAaxhH,GAClB,GAAIA,EAAMwN,WACN,MAAO,CACH2D,MAAOnR,EAAMwN,WACb4D,IAAKorD,EAAQx8D,EAAMwN,WAAY,IAGvC,IAAIE,EAAa1N,EAAM0N,WACvB,MAAO,CACHyD,MAAOywG,GAAwBl0G,GAC/B0D,IAAKywG,GAAoBn0G,IAGjC,SAASk0G,GAAwB14G,GAC7B,OAAOA,EAAK03B,OAAOkhF,IAAmBv2G,WAAWgI,MAAMpC,MAE3D,SAAS2wG,GAAkBC,EAAMC,GAC7B,OAAOD,EAAKx2G,WAAWgI,MAAMpC,MAAQ6wG,EAAKz2G,WAAWgI,MAAMpC,MAAQ4wG,EAAOC,EAE9E,SAASH,GAAoB34G,GACzB,OAAOA,EAAK03B,OAAOqhF,IAAe12G,WAAWgI,MAAMnC,IAEvD,SAAS6wG,GAAcF,EAAMC,GACzB,OAAOD,EAAKx2G,WAAWgI,MAAMnC,IAAM4wG,EAAKz2G,WAAWgI,MAAMnC,IAAM2wG,EAAOC,I,6DC97StE,EAAE,EAAE,EAAI,EAAE,EAAE,E,wBAAExiF,EAAE,GAAG,EAAE,GAAG,EAAE,oEAAoE,SAASxE,EAAEd,EAAE2B,GAAG,IAAI,IAAIoB,KAAKpB,EAAE3B,EAAE+C,GAAGpB,EAAEoB,GAAG,OAAO/C,EAAE,SAASvS,EAAEuS,GAAG,IAAI2B,EAAE3B,EAAEoF,WAAWzD,GAAGA,EAAE0D,YAAYrF,GAAG,SAASiE,EAAEtC,EAAEoB,EAAE/3B,GAAG,IAAI20B,EAAEl3B,EAAE24B,EAAEkE,EAAE,GAAG,IAAIlE,KAAK2B,EAAE,OAAO3B,EAAEzB,EAAEoD,EAAE3B,GAAG,OAAOA,EAAE34B,EAAEs6B,EAAE3B,GAAGkE,EAAElE,GAAG2B,EAAE3B,GAAG,GAAG70B,UAAUtB,OAAO,IAAIq6B,EAAEtT,SAASzlB,UAAUtB,OAAO,EAAE,EAAE1C,KAAKgE,UAAU,GAAGvB,GAAG,mBAAmB22B,GAAG,MAAMA,EAAEqmF,aAAa,IAAI5mF,KAAKO,EAAEqmF,kBAAa,IAAS1iF,EAAElE,KAAKkE,EAAElE,GAAGO,EAAEqmF,aAAa5mF,IAAI,OAAOwE,EAAEjE,EAAE2D,EAAE3F,EAAEl3B,EAAE,MAAM,SAASm9B,EAAE5F,EAAEh1B,EAAE20B,EAAEl3B,EAAE24B,GAAG,IAAIkE,EAAE,CAACr4B,KAAK+yB,EAAEl6B,MAAMkF,EAAEpF,IAAI+5B,EAAEh5B,IAAI8B,EAAEw/G,IAAI,KAAKzqE,GAAG,KAAK0qE,IAAI,EAAEC,IAAI,KAAKC,SAAI,EAAOC,IAAI,KAAKC,IAAI,KAAKxpF,iBAAY,EAAOypF,IAAI,MAAMnnF,IAAI,EAAEA,GAAG,OAAO,MAAMA,GAAG,MAAM,EAAEonF,OAAO,EAAEA,MAAMljF,GAAGA,EAAE,SAASE,IAAI,MAAM,CAAC7nB,QAAQ,MAAM,SAASulB,EAAElD,GAAG,OAAOA,EAAEhO,SAAS,SAASkP,EAAElB,EAAE2B,GAAG38B,KAAKc,MAAMk6B,EAAEh7B,KAAK6H,QAAQ80B,EAAE,SAASD,EAAE1B,EAAE2B,GAAG,GAAG,MAAMA,EAAE,OAAO3B,EAAEwd,GAAG9b,EAAE1B,EAAEwd,GAAGxd,EAAEwd,GAAGyqE,IAAInlF,QAAQ9C,GAAG,GAAG,KAAK,IAAI,IAAI+C,EAAEpB,EAAE3B,EAAEioF,IAAIh9G,OAAO02B,IAAI,GAAG,OAAOoB,EAAE/C,EAAEioF,IAAItmF,KAAK,MAAMoB,EAAEolF,IAAI,OAAOplF,EAAEolF,IAAI,MAAM,mBAAmBnoF,EAAE/yB,KAAKy0B,EAAE1B,GAAG,KAAK,SAASya,EAAEza,GAAG,IAAI2B,EAAEoB,EAAE,GAAG,OAAO/C,EAAEA,EAAEwd,KAAK,MAAMxd,EAAEqoF,IAAI,CAAC,IAAIroF,EAAEmoF,IAAInoF,EAAEqoF,IAAII,KAAK,KAAK9mF,EAAE,EAAEA,EAAE3B,EAAEioF,IAAIh9G,OAAO02B,IAAI,GAAG,OAAOoB,EAAE/C,EAAEioF,IAAItmF,KAAK,MAAMoB,EAAEolF,IAAI,CAACnoF,EAAEmoF,IAAInoF,EAAEqoF,IAAII,KAAK1lF,EAAEolF,IAAI,MAAM,OAAO1tE,EAAEza,IAAI,SAAStS,EAAEsS,KAAKA,EAAEooF,MAAMpoF,EAAEooF,KAAI,IAAK,EAAEp7G,KAAKgzB,KAAKyF,EAAEijF,OAAO,IAAI,EAAEC,sBAAsB,EAAE,EAAEA,oBAAoB/mE,YAAYnc,GAAG,SAASA,IAAI,IAAI,IAAIzF,EAAEyF,EAAEijF,IAAI,EAAEz9G,QAAQ+0B,EAAE,EAAE1S,MAAK,SAAS0S,EAAE2B,GAAG,OAAO3B,EAAEuoF,IAAIL,IAAIvmF,EAAE4mF,IAAIL,OAAM,EAAE,GAAGloF,EAAEyL,MAAK,SAASzL,GAAG,IAAI2B,EAAEoB,EAAE/3B,EAAE20B,EAAEl3B,EAAE24B,EAAEpB,EAAEooF,MAAM3/G,GAAGk3B,GAAGgC,EAAE3B,GAAGuoF,KAAKJ,KAAK/mF,EAAEO,EAAEinF,OAAO7lF,EAAE,IAAI/3B,EAAE81B,EAAE,GAAGnB,IAAI4oF,IAAI5oF,EAAE4oF,IAAI,EAAE/tE,EAAEpZ,EAAEzB,EAAE30B,EAAE22B,EAAEknF,SAAI,IAASznF,EAAE0nF,gBAAgB,MAAMnpF,EAAE2oF,IAAI,CAAC7/G,GAAG,KAAKs6B,EAAE,MAAMt6B,EAAEi5B,EAAE/B,GAAGl3B,EAAEk3B,EAAE2oF,KAAKS,EAAEhmF,EAAEpD,GAAGA,EAAEwoF,KAAK1/G,GAAGgyC,EAAE9a,QAAO,SAASykC,EAAEpkC,EAAE2B,EAAEoB,EAAE/3B,EAAE20B,EAAEl3B,EAAE24B,EAAEiB,EAAEvB,EAAErT,GAAG,IAAIwW,EAAEuB,EAAEtE,EAAEuZ,EAAE/sB,EAAE+X,EAAE2+B,EAAE5kC,EAAEx0B,GAAGA,EAAEi9G,KAAK,EAAEe,EAAExpF,EAAEv0B,OAAO,IAAI83B,EAAEklF,IAAI,GAAGhkF,EAAE,EAAEA,EAAEtC,EAAE12B,OAAOg5B,IAAI,GAAG,OAAOwW,EAAE1X,EAAEklF,IAAIhkF,GAAG,OAAOwW,EAAE9Y,EAAEsC,KAAK,kBAAkBwW,EAAE,KAAK,iBAAiBA,GAAG,iBAAiBA,GAAG,iBAAiBA,EAAE7U,EAAE,KAAK6U,EAAE,KAAK,KAAKA,GAAGryC,MAAMqe,QAAQg0B,GAAG7U,EAAE1C,EAAE,CAAClR,SAASyoB,GAAG,KAAK,KAAK,MAAMA,EAAEytE,IAAI,EAAEtiF,EAAE6U,EAAExtC,KAAKwtC,EAAE30C,MAAM20C,EAAE70C,IAAI,KAAK60C,EAAE8tE,KAAK9tE,GAAG,CAAC,GAAGA,EAAE+C,GAAGza,EAAE0X,EAAEytE,IAAInlF,EAAEmlF,IAAI,EAAE,QAAQhnF,EAAE1B,EAAEyE,KAAK/C,GAAGuZ,EAAE70C,KAAKs7B,EAAEt7B,KAAK60C,EAAExtC,OAAOi0B,EAAEj0B,KAAKuyB,EAAEyE,QAAG,OAAY,IAAIuB,EAAE,EAAEA,EAAEwjF,EAAExjF,IAAI,CAAC,IAAItE,EAAE1B,EAAEgG,KAAKiV,EAAE70C,KAAKs7B,EAAEt7B,KAAK60C,EAAExtC,OAAOi0B,EAAEj0B,KAAK,CAACuyB,EAAEgG,QAAG,EAAO,MAAMtE,EAAE,KAAKsZ,EAAExa,EAAEya,EAAEvZ,EAAEA,GAAGoE,EAAE3F,EAAEl3B,EAAE24B,EAAEiB,EAAEvB,EAAErT,GAAGC,EAAE+sB,EAAE0tE,KAAK3iF,EAAEiV,EAAE9zC,MAAMu6B,EAAEv6B,KAAK6+B,IAAI4+B,IAAIA,EAAE,IAAIljC,EAAEv6B,KAAKy9D,EAAEp3D,KAAKk0B,EAAEv6B,IAAI,KAAK8zC,GAAG2pB,EAAEp3D,KAAKw4B,EAAEiV,EAAE4tE,KAAK36F,EAAE+sB,IAAI,MAAM/sB,GAAG,MAAM+X,IAAIA,EAAE/X,GAAG,mBAAmB+sB,EAAExtC,MAAMwtC,EAAEwtE,MAAM/mF,EAAE+mF,IAAIxtE,EAAE2tE,IAAItnF,EAAES,EAAEkZ,EAAE3Z,EAAEd,GAAGc,EAAEmoF,EAAEjpF,EAAEya,EAAEvZ,EAAE1B,EAAE9R,EAAEoT,GAAG,mBAAmBiC,EAAE91B,OAAO81B,EAAEqlF,IAAItnF,IAAIA,GAAGI,EAAEinF,KAAKrnF,GAAGA,EAAEsE,YAAYpF,IAAIc,EAAEY,EAAER,IAAI,IAAI6B,EAAEolF,IAAI1iF,EAAExB,EAAE+kF,EAAE/kF,KAAK,MAAMzE,EAAEyE,KAAK,mBAAmBlB,EAAE91B,MAAM,MAAMuyB,EAAEyE,GAAGkkF,KAAK3oF,EAAEyE,GAAGkkF,KAAKplF,EAAEqlF,MAAMrlF,EAAEqlF,IAAI1mF,EAAE12B,EAAEi5B,EAAE,IAAIilF,EAAE1pF,EAAEyE,GAAGzE,EAAEyE,KAAK,GAAGmgC,EAAE,IAAIngC,EAAE,EAAEA,EAAEmgC,EAAEn5D,OAAOg5B,IAAIklF,EAAE/kD,EAAEngC,GAAGmgC,IAAIngC,GAAGmgC,IAAIngC,IAAI,SAAS1C,EAAEvB,EAAE2B,EAAEoB,GAAG,IAAI,IAAI/3B,EAAE20B,EAAEK,EAAEioF,IAAIx/G,EAAE,EAAEk3B,GAAGl3B,EAAEk3B,EAAE10B,OAAOxC,KAAKuC,EAAE20B,EAAEl3B,MAAMuC,EAAEwyC,GAAGxd,EAAE2B,EAAE,mBAAmB32B,EAAEiC,KAAKs0B,EAAEv2B,EAAE22B,EAAEoB,GAAGkmF,EAAElmF,EAAE/3B,EAAEA,EAAE20B,EAAE30B,EAAEm9G,IAAIxmF,IAAI,OAAOA,EAAE,SAASnC,EAAEQ,EAAE2B,GAAG,OAAOA,EAAEA,GAAG,GAAG,MAAM3B,GAAG,kBAAkBA,IAAI53B,MAAMqe,QAAQuZ,GAAGA,EAAEyL,MAAK,SAASzL,GAAGR,EAAEQ,EAAE2B,MAAKA,EAAE30B,KAAKgzB,IAAI2B,EAAE,SAASsnF,EAAEjpF,EAAE2B,EAAEoB,EAAE/3B,EAAE20B,EAAEl3B,GAAG,IAAI24B,EAAEkE,EAAEl6B,EAAE,QAAG,IAASu2B,EAAEymF,IAAIhnF,EAAEO,EAAEymF,IAAIzmF,EAAEymF,SAAI,OAAY,GAAG,MAAMrlF,GAAGpD,GAAGl3B,GAAG,MAAMk3B,EAAEyF,WAAWpF,EAAE,GAAG,MAAMv3B,GAAGA,EAAE28B,aAAapF,EAAEA,EAAEkF,YAAYvF,GAAGyB,EAAE,SAAS,CAAC,IAAIkE,EAAE78B,EAAE2C,EAAE,GAAGk6B,EAAEA,EAAE8jF,cAAch+G,EAAEJ,EAAEC,OAAOG,GAAG,EAAE,GAAGk6B,GAAG3F,EAAE,MAAMK,EAAEA,EAAEqpF,aAAa1pF,EAAEl3B,GAAG24B,EAAE34B,EAAE,YAAO,IAAS24B,EAAEA,EAAEzB,EAAEypF,YAAY,SAASJ,EAAEhpF,EAAE2B,EAAEoB,EAAE/3B,EAAE20B,GAAG,IAAIl3B,EAAE,IAAIA,KAAKs6B,EAAE,aAAat6B,GAAG,QAAQA,GAAGA,KAAKk5B,GAAG2nF,EAAEtpF,EAAEv3B,EAAE,KAAKs6B,EAAEt6B,GAAGuC,GAAG,IAAIvC,KAAKk5B,EAAEhC,GAAG,mBAAmBgC,EAAEl5B,IAAI,aAAaA,GAAG,QAAQA,GAAG,UAAUA,GAAG,YAAYA,GAAGs6B,EAAEt6B,KAAKk5B,EAAEl5B,IAAI6gH,EAAEtpF,EAAEv3B,EAAEk5B,EAAEl5B,GAAGs6B,EAAEt6B,GAAGuC,GAAG,SAAS4xC,EAAE5c,EAAE2B,EAAEoB,GAAG,MAAMpB,EAAE,GAAG3B,EAAEupF,YAAY5nF,EAAEoB,GAAG/C,EAAE2B,GAAG,MAAMoB,EAAE,GAAG,iBAAiBA,GAAG,EAAE5e,KAAKwd,GAAGoB,EAAEA,EAAE,KAAK,SAASumF,EAAEtpF,EAAE2B,EAAEoB,EAAE/3B,EAAE20B,GAAG,IAAIl3B,EAAEu3B,EAAE,GAAG,UAAU2B,EAAE,GAAG,iBAAiBoB,EAAE/C,EAAEntB,MAAM22G,QAAQzmF,MAAM,CAAC,GAAG,iBAAiB/3B,IAAIg1B,EAAEntB,MAAM22G,QAAQx+G,EAAE,IAAIA,EAAE,IAAI22B,KAAK32B,EAAE+3B,GAAGpB,KAAKoB,GAAG6Z,EAAE5c,EAAEntB,MAAM8uB,EAAE,IAAI,GAAGoB,EAAE,IAAIpB,KAAKoB,EAAE/3B,GAAG+3B,EAAEpB,KAAK32B,EAAE22B,IAAIib,EAAE5c,EAAEntB,MAAM8uB,EAAEoB,EAAEpB,SAAS,GAAG,MAAMA,EAAE,IAAI,MAAMA,EAAE,GAAGl5B,EAAEk5B,KAAKA,EAAEA,EAAEwY,QAAQ,WAAW,KAAKxY,EAAEA,EAAEqY,gBAAgBha,EAAE2B,EAAEqY,cAAcjO,MAAM,GAAGpK,EAAEoK,MAAM,GAAG/L,EAAE2B,IAAI3B,EAAE2B,EAAE,IAAI3B,EAAE2B,EAAEA,EAAEl5B,GAAGs6B,EAAEA,EAAE/3B,GAAGg1B,EAAEsf,iBAAiB3d,EAAEl5B,EAAEghH,EAAEC,EAAEjhH,GAAGu3B,EAAE0f,oBAAoB/d,EAAEl5B,EAAEghH,EAAEC,EAAEjhH,QAAQ,GAAG,4BAA4Bk5B,EAAE,CAAC,GAAGhC,EAAEgC,EAAEA,EAAEwY,QAAQ,cAAc,KAAKA,QAAQ,SAAS,UAAU,GAAG,SAASxY,GAAG,SAASA,GAAG,SAASA,GAAG,aAAaA,GAAG,aAAaA,GAAGA,KAAK3B,EAAE,IAAIA,EAAE2B,GAAG,MAAMoB,EAAE,GAAGA,EAAE,MAAM/C,EAAE,MAAMA,IAAI,mBAAmB+C,IAAI,MAAMA,KAAI,IAAKA,GAAG,MAAMpB,EAAE,IAAI,MAAMA,EAAE,IAAI3B,EAAE2pF,aAAahoF,EAAEoB,GAAG/C,EAAE4pF,gBAAgBjoF,KAAK,SAAS+nF,EAAE1pF,GAAGh7B,KAAK28B,EAAE3B,EAAE/yB,MAAK,GAAI,EAAE+F,MAAM,EAAEA,MAAMgtB,GAAGA,GAAG,SAASypF,EAAEzpF,GAAGh7B,KAAK28B,EAAE3B,EAAE/yB,MAAK,GAAI,EAAE+F,MAAM,EAAEA,MAAMgtB,GAAGA,GAAG,SAASwa,EAAExa,EAAE+C,EAAE/3B,EAAE20B,EAAEl3B,EAAE24B,EAAEkE,EAAEl6B,EAAEi3B,GAAG,IAAI5U,EAAEwW,EAAE2B,EAAEJ,EAAE9D,EAAE+Y,EAAE/sB,EAAE+X,EAAElE,EAAE/B,EAAEypF,EAAED,EAAEpsE,EAAE0sE,EAAEvmF,EAAE91B,KAAK,QAAG,IAAS81B,EAAEjE,YAAY,OAAO,KAAK,MAAM9zB,EAAEs9G,MAAMjmF,EAAEr3B,EAAEs9G,IAAIl9G,EAAE23B,EAAEolF,IAAIn9G,EAAEm9G,IAAIplF,EAAEulF,IAAI,KAAKlnF,EAAE,CAACh2B,KAAKqiB,EAAE,EAAEy6F,MAAMz6F,EAAEsV,GAAG,IAAI/C,EAAE,GAAG,mBAAmBspF,EAAE,CAAC,GAAG7jF,EAAE1C,EAAEj9B,MAAMy7B,GAAG9T,EAAE67F,EAAE3uB,cAAch7D,EAAElS,EAAE46F,KAAK7oF,EAAE/R,EAAE8T,EAAEA,EAAEz7B,MAAM2B,MAAMgmB,EAAE+vB,GAAG7d,EAAE30B,EAAEq9G,IAAI36F,GAAGuW,EAAElB,EAAEslF,IAAIr9G,EAAEq9G,KAAK7qE,GAAGvZ,EAAE4lF,KAAK,cAAcP,GAAGA,EAAEjhH,UAAUvD,OAAOi+B,EAAEslF,IAAIpkF,EAAE,IAAIqlF,EAAE7jF,EAAEjG,IAAIuD,EAAEslF,IAAIpkF,EAAE,IAAI/C,EAAEuE,EAAEjG,GAAGyE,EAAEnF,YAAYwqF,EAAErlF,EAAEn/B,OAAO08B,GAAGD,GAAGA,EAAE25C,IAAIj3C,GAAGA,EAAEn+B,MAAM2/B,EAAExB,EAAEpvB,QAAQovB,EAAEpvB,MAAM,IAAIovB,EAAEp3B,QAAQ2yB,EAAEyE,EAAE4kF,IAAIlpF,EAAEiG,EAAE3B,EAAEmkF,KAAI,EAAGnkF,EAAEqkF,IAAI,IAAI,MAAMrkF,EAAE6lF,MAAM7lF,EAAE6lF,IAAI7lF,EAAEpvB,OAAO,MAAMy0G,EAAES,2BAA2B9lF,EAAE6lF,KAAK7lF,EAAEpvB,QAAQovB,EAAE6lF,IAAIhpF,EAAE,GAAGmD,EAAE6lF,MAAMhpF,EAAEmD,EAAE6lF,IAAIR,EAAES,yBAAyBtkF,EAAExB,EAAE6lF,OAAOtkF,EAAEvB,EAAEn+B,MAAM47B,EAAEuC,EAAEpvB,MAAM+wB,EAAE,MAAM0jF,EAAES,0BAA0B,MAAM9lF,EAAE+lF,oBAAoB/lF,EAAE+lF,qBAAqB,MAAM/lF,EAAE9nB,mBAAmB8nB,EAAEqkF,IAAIt7G,KAAKi3B,EAAE9nB,uBAAuB,CAAC,GAAG,MAAMmtG,EAAES,0BAA0BtkF,IAAID,GAAG,MAAMvB,EAAEgmF,2BAA2BhmF,EAAEgmF,0BAA0BxkF,EAAEjG,IAAIyE,EAAEkkF,KAAK,MAAMlkF,EAAEi2D,wBAAuB,IAAKj2D,EAAEi2D,sBAAsBz0D,EAAExB,EAAE6lF,IAAItqF,IAAIuD,EAAEwlF,MAAMv9G,EAAEu9G,IAAI,CAACtkF,EAAEn+B,MAAM2/B,EAAExB,EAAEpvB,MAAMovB,EAAE6lF,IAAI/mF,EAAEwlF,MAAMv9G,EAAEu9G,MAAMtkF,EAAEmkF,KAAI,GAAInkF,EAAEskF,IAAIxlF,EAAEA,EAAEolF,IAAIn9G,EAAEm9G,IAAIplF,EAAEklF,IAAIj9G,EAAEi9G,IAAIllF,EAAEklF,IAAI/rF,SAAQ,SAAS8D,GAAGA,IAAIA,EAAEwd,GAAGza,MAAKkB,EAAEqkF,IAAIr9G,QAAQq6B,EAAEt4B,KAAKi3B,GAAG,MAAMjE,EAAE,MAAMiE,EAAEimF,qBAAqBjmF,EAAEimF,oBAAoBzkF,EAAExB,EAAE6lF,IAAItqF,GAAG,MAAMyE,EAAE5nB,oBAAoB4nB,EAAEqkF,IAAIt7G,MAAK,WAAWi3B,EAAE5nB,mBAAmBmpB,EAAE9D,EAAE+Y,MAAK,GAAGxW,EAAEp3B,QAAQ2yB,EAAEyE,EAAEn+B,MAAM2/B,EAAExB,EAAEskF,IAAIxlF,EAAEkB,EAAE2kF,IAAI5oF,EAAEipF,EAAE,EAAEP,IAAIM,EAAE,EAAE,cAAcM,GAAGA,EAAEjhH,UAAUvD,OAAOm/B,EAAEpvB,MAAMovB,EAAE6lF,IAAI7lF,EAAEmkF,KAAI,EAAGa,GAAGA,EAAElmF,GAAGtV,EAAEwW,EAAEn/B,OAAOm/B,EAAEn+B,MAAMm+B,EAAEpvB,MAAMovB,EAAEp3B,cAAc,GAAGo3B,EAAEmkF,KAAI,EAAGa,GAAGA,EAAElmF,GAAGtV,EAAEwW,EAAEn/B,OAAOm/B,EAAEn+B,MAAMm+B,EAAEpvB,MAAMovB,EAAEp3B,SAASo3B,EAAEpvB,MAAMovB,EAAE6lF,UAAU7lF,EAAEmkF,OAAOY,EAAE,IAAI/kF,EAAEpvB,MAAMovB,EAAE6lF,IAAI,MAAM7lF,EAAEkmF,kBAAkBxqF,EAAEmB,EAAEA,EAAE,GAAGnB,GAAGsE,EAAEkmF,oBAAoBvkF,GAAG,MAAM3B,EAAEmmF,0BAA0B3vE,EAAExW,EAAEmmF,wBAAwB5kF,EAAE9D,IAAIkb,EAAE,MAAMnvB,GAAGA,EAAExgB,OAAOi2B,GAAG,MAAMzV,EAAE7nB,IAAI6nB,EAAE3nB,MAAMksB,SAASvE,EAAE22C,EAAEpkC,EAAE53B,MAAMqe,QAAQm2B,GAAGA,EAAE,CAACA,GAAG7Z,EAAE/3B,EAAE20B,EAAEl3B,EAAE24B,EAAEkE,EAAEl6B,EAAEi3B,GAAG4B,EAAEwkF,KAAK1lF,EAAEolF,IAAIplF,EAAEulF,IAAI,KAAKrkF,EAAEqkF,IAAIr9G,QAAQq6B,EAAEt4B,KAAKi3B,GAAGvW,IAAIuW,EAAE4lF,IAAI5lF,EAAEuZ,GAAG,MAAMvZ,EAAEkkF,KAAI,OAAQ,MAAM/mF,GAAG2B,EAAEwlF,MAAMv9G,EAAEu9G,KAAKxlF,EAAEklF,IAAIj9G,EAAEi9G,IAAIllF,EAAEolF,IAAIn9G,EAAEm9G,KAAKplF,EAAEolF,IAAIkC,EAAEr/G,EAAEm9G,IAAIplF,EAAE/3B,EAAE20B,EAAEl3B,EAAE24B,EAAEkE,EAAEjD,IAAI5U,EAAE,EAAE68F,SAAS78F,EAAEsV,GAAG,MAAM/C,GAAG+C,EAAEwlF,IAAI,MAAMlmF,GAAG,MAAMjB,KAAK2B,EAAEolF,IAAI/8G,EAAE23B,EAAEulF,MAAMjmF,EAAEjB,EAAEA,EAAE0B,QAAQ13B,IAAI,MAAM,EAAE+8G,IAAInoF,EAAE+C,EAAE/3B,IAAI,SAAS+9G,EAAE/oF,EAAE+C,GAAG,EAAEslF,KAAK,EAAEA,IAAItlF,EAAE/C,GAAGA,EAAEyL,MAAK,SAAS1I,GAAG,IAAI/C,EAAE+C,EAAEulF,IAAIvlF,EAAEulF,IAAI,GAAGtoF,EAAEyL,MAAK,SAASzL,GAAGA,EAAEz3B,KAAKw6B,MAAK,MAAM/C,GAAG,EAAEmoF,IAAInoF,EAAE+C,EAAEwlF,SAAQ,SAAS8B,EAAE1oF,EAAEoB,EAAE/3B,EAAE20B,EAAEl3B,EAAE24B,EAAEh2B,EAAEi3B,GAAG,IAAIvB,EAAEmD,EAAE2B,EAAEJ,EAAEx6B,EAAElF,MAAMo9B,EAAEH,EAAEj9B,MAAMo7B,EAAE6B,EAAE91B,KAAKwtC,EAAE,EAAE,GAAG,QAAQvZ,IAAIz4B,GAAE,GAAI,MAAM24B,EAAE,KAAKqZ,EAAErZ,EAAEn2B,OAAOwvC,IAAI,IAAI3Z,EAAEM,EAAEqZ,KAAK,iBAAiB3Z,KAAKI,IAAIA,EAAEJ,EAAEypF,YAAYrpF,EAAE,IAAIJ,EAAE08B,UAAU,CAAC77B,EAAEb,EAAEM,EAAEqZ,GAAG,KAAK,MAAM,GAAG,MAAM9Y,EAAE,CAAC,GAAG,OAAOT,EAAE,OAAO8D,SAASwlF,eAAetnF,GAAGvB,EAAEl5B,EAAEu8B,SAASylF,gBAAgB,6BAA6BvpF,GAAG8D,SAASo3B,cAAcl7B,EAAEgC,EAAEwnF,IAAIxnF,GAAG9B,EAAE,KAAKiB,GAAE,EAAG,GAAG,OAAOnB,EAAEsE,IAAItC,GAAGb,GAAGV,EAAEx4B,OAAO+5B,IAAIvB,EAAEx4B,KAAK+5B,OAAO,CAAC,GAAG9B,EAAEA,GAAG,EAAE74B,KAAKo5B,EAAEgpF,YAAY1mF,GAAGuB,EAAEx6B,EAAElF,OAAOw/B,GAAGslF,wBAAwBhlF,EAAE1C,EAAE0nF,yBAAyBvoF,EAAE,CAAC,GAAG,MAAMjB,EAAE,IAAIoE,EAAE,GAAGiV,EAAE,EAAEA,EAAE9Y,EAAEz6B,WAAW+D,OAAOwvC,IAAIjV,EAAE7D,EAAEz6B,WAAWuzC,GAAG1yC,MAAM45B,EAAEz6B,WAAWuzC,GAAGhzC,OAAOm+B,GAAG3B,KAAK2B,IAAI3B,GAAG2B,EAAEilF,QAAQ5mF,EAAE4mF,QAAQjlF,EAAEilF,SAASlpF,EAAEsuD,aAAatuD,EAAEsuD,UAAUrqD,GAAGA,EAAEilF,QAAQ,KAAK,GAAG7B,EAAErnF,EAAEuB,EAAEsC,EAAE/8B,EAAE45B,GAAGuD,EAAE7C,EAAEklF,IAAI,QAAQ,GAAGxtE,EAAE1X,EAAEj9B,MAAMksB,SAASoyC,EAAEziC,EAAEv5B,MAAMqe,QAAQg0B,GAAGA,EAAE,CAACA,GAAG1X,EAAE/3B,EAAE20B,EAAEl3B,GAAG,kBAAkBy4B,EAAEE,EAAEh2B,EAAEg2B,EAAEA,EAAE,GAAGp2B,EAAEi9G,KAAKvmF,EAAE12B,EAAE,GAAGq3B,GAAG,MAAMjB,EAAE,IAAIqZ,EAAErZ,EAAEn2B,OAAOwvC,KAAK,MAAMrZ,EAAEqZ,IAAIhtB,EAAE2T,EAAEqZ,IAAIpY,IAAI,UAAUa,QAAG,KAAUuX,EAAEvX,EAAEz7B,SAASgzC,IAAI9Y,EAAEl6B,OAAO,aAAay5B,IAAIuZ,GAAG,WAAWvZ,GAAGuZ,IAAIjV,EAAE/9B,QAAQ6hH,EAAE3nF,EAAE,QAAQ8Y,EAAEjV,EAAE/9B,OAAM,GAAI,YAAYy7B,QAAG,KAAUuX,EAAEvX,EAAE4nF,UAAUrwE,IAAI9Y,EAAEmpF,SAASxB,EAAE3nF,EAAE,UAAU8Y,EAAEjV,EAAEslF,SAAQ,IAAK,OAAOnpF,EAAE,SAASwnF,EAAEnpF,EAAE+C,EAAE/3B,GAAG,IAAI,mBAAmBg1B,EAAEA,EAAE+C,GAAG/C,EAAEriB,QAAQolB,EAAE,MAAM/C,GAAG,EAAEmoF,IAAInoF,EAAEh1B,IAAI,SAASk+G,EAAElpF,EAAE+C,EAAE/3B,GAAG,IAAI20B,EAAEl3B,EAAE,GAAG,EAAEsiH,SAAS,EAAEA,QAAQ/qF,IAAIL,EAAEK,EAAEr5B,OAAOg5B,EAAEhiB,SAASgiB,EAAEhiB,UAAUqiB,EAAEmoF,KAAKgB,EAAExpF,EAAE,KAAKoD,IAAI,OAAOpD,EAAEK,EAAEqoF,KAAK,CAAC,GAAG1oF,EAAElU,qBAAqB,IAAIkU,EAAElU,uBAAuB,MAAMuU,GAAG,EAAEmoF,IAAInoF,EAAE+C,GAAGpD,EAAE8oF,KAAK9oF,EAAEipF,IAAI,KAAK,GAAGjpF,EAAEK,EAAEioF,IAAI,IAAIx/G,EAAE,EAAEA,EAAEk3B,EAAE10B,OAAOxC,IAAIk3B,EAAEl3B,IAAIygH,EAAEvpF,EAAEl3B,GAAGs6B,EAAE,mBAAmB/C,EAAE/yB,MAAMjC,GAAG,MAAMg1B,EAAEmoF,KAAK16F,EAAEuS,EAAEmoF,KAAKnoF,EAAEmoF,IAAInoF,EAAEooF,SAAI,EAAO,SAAS5mF,EAAExB,EAAE2B,EAAEoB,GAAG,OAAO/9B,KAAK85B,YAAYkB,EAAE+C,GAAG,SAASioF,EAAEjoF,EAAE/3B,EAAE20B,GAAG,IAAIl3B,EAAE24B,EAAEh2B,EAAE,EAAEoyC,IAAI,EAAEA,GAAGza,EAAE/3B,GAAGo2B,GAAG34B,EAAE,mBAAmBk3B,GAAG,KAAKA,GAAGA,EAAEsoF,KAAKj9G,EAAEi9G,IAAI78G,EAAE,GAAGovC,EAAExvC,EAAE+3B,IAAIt6B,GAAGk3B,GAAG30B,GAAGi9G,IAAIhkF,EAAEf,EAAE,KAAK,CAACH,IAAI3B,GAAGkE,EAAEA,OAAE,IAASt6B,EAAE89G,iBAAiBrgH,GAAGk3B,EAAE,CAACA,GAAGyB,EAAE,KAAKp2B,EAAE2oF,WAAW,EAAEprF,KAAKyC,EAAE2/G,YAAY,KAAKv/G,GAAG3C,GAAGk3B,EAAEA,EAAEyB,EAAEA,EAAE+mF,IAAIn9G,EAAE2oF,WAAWlrF,GAAGsgH,EAAE39G,EAAE23B,GAAiP,SAASkoF,EAAEjrF,EAAE2B,GAAG,IAAIoB,EAAE,CAACslF,IAAI1mF,EAAE,OAAO,IAAI6b,GAAGxd,EAAE5Z,SAAS,SAAS4Z,EAAE2B,GAAG,OAAO3B,EAAEhO,SAAS2P,IAAI62E,SAAS,SAASx4E,GAAG,IAAI+C,EAAE/3B,EAAE,OAAOhG,KAAKmlH,kBAAkBpnF,EAAE,IAAI/3B,EAAE,IAAI22B,GAAG38B,KAAKA,KAAKmlH,gBAAgB,WAAW,OAAOn/G,GAAGhG,KAAKk1F,sBAAsB,SAASl6D,GAAGh7B,KAAKc,MAAM2B,QAAQu4B,EAAEv4B,OAAOs7B,EAAE0I,KAAK/d,IAAI1oB,KAAKk2E,IAAI,SAASl7C,GAAG+C,EAAE/1B,KAAKgzB,GAAG,IAAI2B,EAAE3B,EAAEvU,qBAAqBuU,EAAEvU,qBAAqB,WAAWsX,EAAEuoE,OAAOvoE,EAAED,QAAQ9C,GAAG,GAAG2B,GAAGA,EAAEp5B,KAAKy3B,MAAMA,EAAEhO,WAAW,OAAO+Q,EAAEy1E,SAASh7D,GAAGza,EAAE3c,SAASu0E,YAAY53D,EAAE,EAAE,EAAEgJ,MAAM,EAAE,CAACo8E,IAAI,SAASnoF,EAAE2B,EAAEoB,EAAE/3B,GAAG,IAAI,IAAI20B,EAAEl3B,EAAE24B,EAAEO,EAAEA,EAAE6b,IAAI,IAAI7d,EAAEgC,EAAE0mF,OAAO1oF,EAAE6d,GAAG,IAAI,IAAI/0C,EAAEk3B,EAAEb,cAAc,MAAMr2B,EAAEyiH,2BAA2BvrF,EAAE/hB,SAASnV,EAAEyiH,yBAAyBlrF,IAAIoB,EAAEzB,EAAEyoF,KAAK,MAAMzoF,EAAEwrF,oBAAoBxrF,EAAEwrF,kBAAkBnrF,EAAEh1B,GAAG,IAAIo2B,EAAEzB,EAAEyoF,KAAKhnF,EAAE,OAAOzB,EAAEkqF,IAAIlqF,EAAE,MAAMgC,GAAG3B,EAAE2B,EAAE,MAAM3B,IAAI,EAAE,EAAwDkB,EAAE74B,UAAUuV,SAAS,SAASoiB,EAAE2B,GAAG,IAAIoB,EAAEA,EAAE,MAAM/9B,KAAK8kH,KAAK9kH,KAAK8kH,MAAM9kH,KAAK6P,MAAM7P,KAAK8kH,IAAI9kH,KAAK8kH,IAAIhpF,EAAE,GAAG97B,KAAK6P,OAAO,mBAAmBmrB,IAAIA,EAAEA,EAAEc,EAAE,GAAGiC,GAAG/9B,KAAKc,QAAQk6B,GAAGc,EAAEiC,EAAE/C,GAAG,MAAMA,GAAGh7B,KAAKujH,MAAM5mF,GAAG38B,KAAKsjH,IAAIt7G,KAAK20B,GAAGjU,EAAE1oB,QAAQk8B,EAAE74B,UAAU+iH,YAAY,SAASprF,GAAGh7B,KAAKujH,MAAMvjH,KAAKmjH,KAAI,EAAGnoF,GAAGh7B,KAAKsjH,IAAIt7G,KAAKgzB,GAAGtS,EAAE1oB,QAAQk8B,EAAE74B,UAAUvD,OAAOo+B,EAAE,EAAE,GAAGuC,EAAEijF,IAAI,EAAE,EAAE,ECAnmT,IAAM,EAAE,EAAE,EAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAER,IAAI,EAAE,EAAEQ,IAAI,EAAE,EAAE4B,OAAO,EAAE,EAAEjC,IAAI,EAAE,EAAE0C,QAAklD,SAAS,IAAI,IAAI,IAAIprF,EAAEA,EAAE,EAAEiuE,SAAS,GAAGjuE,EAAEipF,KAAKjpF,EAAE0rF,IAAI,IAAI1rF,EAAE0rF,IAAI/C,IAAIpsF,QAAQ,IAAGyD,EAAE0rF,IAAI/C,IAAIpsF,QAAQ,IAAGyD,EAAE0rF,IAAI/C,IAAI,GAAG,MAAMlnF,GAAGzB,EAAE0rF,IAAI/C,IAAI,GAAG,EAAEH,IAAI/mF,EAAEzB,EAAE4oF,MAAM,EAAEL,IAAI,SAASloF,GAAG,EAAE,KAAK,GAAG,EAAEA,IAAI,EAAE0oF,IAAI,SAAS1oF,GAAG,GAAG,EAAEA,GAAK,EAAE,IAAIh1B,GAAG,EAAEg1B,EAAEqoF,KAAKgD,IAAIrgH,IAAI,IAAI,GAAGA,EAAEs9G,IAAI,GAAG,EAAEA,IAAI,GAAGt9G,EAAEwyC,GAAGthB,SAAQ,SAAS8D,GAAGA,EAAEsrF,MAAMtrF,EAAEwd,GAAGxd,EAAEsrF,KAAKtrF,EAAEurF,IAAI,EAAEvrF,EAAEsrF,IAAItrF,EAAEh1B,OAAE,OAAWA,EAAEs9G,IAAIpsF,QAAQ,IAAGlxB,EAAEs9G,IAAIpsF,QAAQ,IAAGlxB,EAAEs9G,IAAI,KAAK,EAAE,GAAG,EAAEgC,OAAO,SAAS3qF,GAAG,GAAG,EAAEA,GAAG,IAAIl3B,EAAEk3B,EAAE0oF,IAAI5/G,GAAGA,EAAE4iH,MAAM5iH,EAAE4iH,IAAI/C,IAAIr9G,SAAS,IAAI,EAAE+B,KAAKvE,IAAI,IAAI,EAAE89C,yBAAyB,EAAE,EAAEA,wBAAwB,SAASvmB,GAAG,IAAIL,EAAEyB,EAAE,WAAWunB,aAAa5lB,GAAG,GAAGyoF,qBAAqB7rF,GAAGiiB,WAAW5hB,IAAI+C,EAAE6e,WAAWxgB,EAAE,KAAK,IAAIzB,EAAE4mB,sBAAsBnlB,MAAM,IAAI34B,EAAE4iH,IAAI7tE,GAAGthB,SAAQ,SAAS8D,GAAGA,EAAEh1B,IAAIg1B,EAAEqrF,IAAIrrF,EAAEh1B,GAAGg1B,EAAEurF,MAAM,IAAIvrF,EAAEwd,GAAGxd,EAAEurF,KAAKvrF,EAAEh1B,OAAE,EAAOg1B,EAAEurF,IAAI,MAAK,EAAE,EAAE,MAAM,EAAElD,IAAI,SAAS1oF,EAAEyB,GAAGA,EAAEqK,MAAK,SAAS9L,GAAG,IAAIA,EAAE2oF,IAAIpsF,QAAQ,IAAGyD,EAAE2oF,IAAI3oF,EAAE2oF,IAAIhgH,QAAO,SAAS03B,GAAG,OAAOA,EAAEwd,IAAI,GAAExd,MAAK,MAAM+C,GAAG3B,EAAEqK,MAAK,SAASzL,GAAGA,EAAEsoF,MAAMtoF,EAAEsoF,IAAI,OAAMlnF,EAAE,GAAG,EAAE+mF,IAAIplF,EAAEpD,EAAE4oF,SAAQ,GAAG,EAAE5oF,EAAEyB,IAAI,EAAE2pF,QAAQ,SAASprF,GAAG,GAAG,EAAEA,GAAG,IAAIyB,EAAE2B,EAAEpD,EAAE0oF,IAAItlF,GAAGA,EAAEsoF,MAAMtoF,EAAEsoF,IAAI7tE,GAAGthB,SAAQ,SAAS8D,GAAG,IAAI,GAAEA,GAAG,MAAMA,GAAGoB,EAAEpB,MAAKoB,GAAG,EAAE+mF,IAAI/mF,EAAE2B,EAAEwlF,OAAO,IAAI,EAAE,mBAAmBhiE,sBAAsB,SAAS,GAAEvmB,GAAG,IAAIL,EAAE,EAAEoD,EAAE/C,EAAEqoF,IAAI,mBAAmBtlF,IAAI/C,EAAEqoF,SAAI,EAAOtlF,KAAK,EAAEpD,EAAE,SAAS,GAAEK,GAAG,IAAIL,EAAE,EAAEK,EAAEqoF,IAAIroF,EAAEwd,KAAK,EAAE7d,ECAx8E,SAAS,GAAEK,EAAEL,GAAG,IAAI,IAAIv0B,KAAKu0B,EAAEK,EAAE50B,GAAGu0B,EAAEv0B,GAAG,OAAO40B,EAAE,SAAS,GAAEA,EAAEL,GAAG,IAAI,IAAIv0B,KAAK40B,EAAE,GAAG,aAAa50B,KAAKA,KAAKu0B,GAAG,OAAM,EAAG,IAAI,IAAIyB,KAAKzB,EAAE,GAAG,aAAayB,GAAGpB,EAAEoB,KAAKzB,EAAEyB,GAAG,OAAM,EAAG,OAAM,EAAG,SAAS,GAAEpB,GAAGh7B,KAAKc,MAAMk6B,GAAkT,GAAE33B,UAAU,IAAI,GAAGojH,sBAAqB,EAAG,GAAEpjH,UAAU6xF,sBAAsB,SAASl6D,EAAEL,GAAG,OAAO,GAAE36B,KAAKc,MAAMk6B,IAAI,GAAEh7B,KAAK6P,MAAM8qB,IAAI,IAAI,GAAE,EAAEuoF,IAAI,EAAEA,IAAI,SAASloF,GAAGA,EAAE/yB,MAAM+yB,EAAE/yB,KAAKy+G,KAAK1rF,EAAEr5B,MAAMq5B,EAAEl6B,MAAMa,IAAIq5B,EAAEr5B,IAAIq5B,EAAEr5B,IAAI,MAAM,IAAG,GAAEq5B,IAAU,oBAAoBO,QAAQA,OAAOorF,KAAKprF,OAAOorF,IAAI,qBAAyO,IAA8M,GAAE,EAAExD,IAAI,EAAEA,IAAI,SAASnoF,EAAEL,EAAEv0B,EAAEg2B,GAAG,GAAGpB,EAAEw2D,KAAK,IAAI,IAAIzzD,EAAEt6B,EAAEk3B,EAAEl3B,EAAEA,EAAE+0C,IAAI,IAAIza,EAAEt6B,EAAE4/G,MAAMtlF,EAAEslF,IAAI,OAAO,MAAM1oF,EAAEwoF,MAAMxoF,EAAEwoF,IAAI/8G,EAAE+8G,IAAIxoF,EAAEsoF,IAAI78G,EAAE68G,KAAKllF,EAAEslF,IAAIroF,EAAEL,GAAG,GAAEK,EAAEL,EAAEv0B,EAAEg2B,IAAI,IAAI,GAAE,EAAE2pF,QAAQ,SAAS,KAAI/lH,KAAK4mH,IAAI,EAAE5mH,KAAK26B,EAAE,KAAK36B,KAAKkjH,IAAI,KAAK,SAAS,GAAEloF,GAAG,IAAIL,EAAEK,EAAEwd,GAAG6qE,IAAI,OAAO1oF,GAAGA,EAAEksF,KAAKlsF,EAAEksF,IAAI7rF,GAAuL,SAAS8rF,KAAI9mH,KAAK+9B,EAAE,KAAK/9B,KAAKyD,EAAE,KAAK,EAAEsiH,QAAQ,SAAS/qF,GAAG,IAAIL,EAAEK,EAAEqoF,IAAI1oF,GAAGA,EAAEosF,KAAKpsF,EAAEosF,MAAMpsF,IAAG,IAAKK,EAAEsoF,MAAMtoF,EAAE/yB,KAAK,MAAM,IAAG,GAAE+yB,KAAK,GAAE33B,UAAU,IAAI,GAAGggH,IAAI,SAASroF,EAAEL,GAAG,IAAIv0B,EAAEu0B,EAAE0oF,IAAIjnF,EAAEp8B,KAAK,MAAMo8B,EAAEzB,IAAIyB,EAAEzB,EAAE,IAAIyB,EAAEzB,EAAE3yB,KAAK5B,GAAG,IAAI23B,EAAE,GAAE3B,EAAEmnF,KAAK9/G,GAAE,EAAGuC,EAAE,WAAWvC,IAAIA,GAAE,EAAG2C,EAAE2gH,IAAI,KAAKhpF,EAAEA,EAAEpB,GAAGA,MAAMv2B,EAAE2gH,IAAI/gH,EAAE,IAAI22B,EAAE,WAAW,MAAMP,EAAEwqF,IAAI,CAAC,GAAGxqF,EAAEvsB,MAAMg3G,IAAI,CAAC,IAAI7rF,EAAEoB,EAAEvsB,MAAMg3G,IAAIzqF,EAAEmnF,IAAIN,IAAI,GAAG,SAASjoF,EAAEL,EAAEv0B,EAAEg2B,GAAG,OAAOzB,IAAIA,EAAE4oF,IAAI,KAAK5oF,EAAEsoF,IAAItoF,EAAEsoF,KAAKtoF,EAAEsoF,IAAIt/G,KAAI,SAASg3B,GAAG,OAAOK,EAAEL,EAAEv0B,EAAEg2B,MAAKzB,EAAE0oF,KAAK1oF,EAAE0oF,IAAIO,MAAMx9G,IAAIu0B,EAAEwoF,KAAK/mF,EAAEioF,aAAa1pF,EAAEwoF,IAAIxoF,EAAEyoF,KAAKzoF,EAAE0oF,IAAIF,KAAI,EAAGxoF,EAAE0oF,IAAIO,IAAIxnF,IAAIzB,EAAlL,CAAqLK,EAAEA,EAAEqoF,IAAIO,IAAI5oF,EAAEqoF,IAAI2D,KAAK,IAAIrsF,EAAE,IAAIyB,EAAExjB,SAAS,CAACiuG,IAAIzqF,EAAE8mF,IAAI,OAAOvoF,EAAEyB,EAAEzB,EAAEssF,OAAOtsF,EAAEyrF,gBAAgB/oF,GAAE,IAAK1C,EAAE2oF,IAAIlnF,EAAEwqF,OAAOvpF,GAAGjB,EAAExjB,SAAS,CAACiuG,IAAIzqF,EAAE8mF,IAAI9mF,EAAEmnF,IAAIN,IAAI,KAAKjoF,EAAEw2D,KAAKxrF,EAAEA,IAAI,GAAE3C,UAAUojB,qBAAqB,WAAWzmB,KAAK26B,EAAE,IAAI,GAAEt3B,UAAUvD,OAAO,SAASk7B,EAAEL,GAAG,GAAG36B,KAAKkjH,IAAI,CAAC,GAAGljH,KAAKujH,IAAIN,IAAI,CAAC,IAAI78G,EAAE45B,SAASo3B,cAAc,OAAOh7B,EAAEp8B,KAAKujH,IAAIN,IAAI,GAAGI,IAAIrjH,KAAKujH,IAAIN,IAAI,GAAG,SAASjoF,EAAEL,EAAEv0B,EAAEg2B,GAAG,OAAOzB,IAAIA,EAAE0oF,KAAK1oF,EAAE0oF,IAAIgD,MAAM1rF,EAAE0oF,IAAIgD,IAAI7tE,GAAGthB,SAAQ,SAAS8D,GAAG,mBAAmBA,EAAEqoF,KAAKroF,EAAEqoF,SAAQ1oF,EAAE0oF,IAAIgD,IAAI,MAAM,OAAO1rF,EAAE,GAAE,GAAGA,IAAI0oF,MAAM1oF,EAAE0oF,IAAIO,MAAMxnF,IAAIzB,EAAE0oF,IAAIO,IAAIx9G,GAAGu0B,EAAE0oF,IAAI,MAAM1oF,EAAEsoF,IAAItoF,EAAEsoF,KAAKtoF,EAAEsoF,IAAIt/G,KAAI,SAASg3B,GAAG,OAAOK,EAAEL,EAAEv0B,EAAEg2B,OAAMzB,EAA5P,CAA+P36B,KAAKkjH,IAAI98G,EAAEg2B,EAAE4qF,IAAI5qF,EAAEwnF,KAAK5jH,KAAKkjH,IAAI,KAAK,IAAInlF,EAAEpD,EAAEksF,KAAK,EAAE,EAAE,KAAK7rF,EAAEmjE,UAAU,OAAOpgE,IAAIA,EAAEulF,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK3oF,EAAEksF,IAAI,KAAK7rF,EAAEhO,UAAU+Q,IAAI,IAAI,GAAE,SAAS/C,EAAEL,EAAEv0B,GAAG,KAAKA,EAAE,KAAKA,EAAE,IAAI40B,EAAEv3B,EAAEyjH,OAAOvsF,GAAGK,EAAEl6B,MAAMqmH,cAAc,MAAMnsF,EAAEl6B,MAAMqmH,YAAY,KAAKnsF,EAAEv3B,EAAE2jH,MAAM,IAAIhhH,EAAE40B,EAAE+C,EAAE33B,GAAG,CAAC,KAAKA,EAAEH,OAAO,GAAGG,EAAE6gH,KAAF7gH,GAAU,GAAGA,EAAE,GAAGA,EAAE,GAAG,MAAM40B,EAAE+C,EAAE33B,EAAEA,EAAE,KAAK,SAAS,GAAE40B,GAAG,OAAOh7B,KAAKmlH,gBAAgB,WAAW,OAAOnqF,EAAEnzB,SAASmzB,EAAEhO,SAAS,SAAS,GAAEgO,GAAG,IAAIL,EAAE36B,KAAKoG,EAAE40B,EAAEh1B,EAAE20B,EAAElU,qBAAqB,WAAW,EAAE,KAAKkU,EAAEgC,GAAGhC,EAAEgC,EAAE,KAAKhC,EAAE30B,EAAE,MAAM20B,EAAE30B,GAAG20B,EAAE30B,IAAII,GAAGu0B,EAAElU,uBAAuBuU,EAAEuoF,KAAK5oF,EAAEgC,IAAIhC,EAAE30B,EAAEI,EAAEu0B,EAAEgC,EAAE,CAAC67B,SAAS,EAAEp4B,WAAWh6B,EAAEu/G,WAAW,GAAGzlF,YAAY,SAASlF,GAAGh7B,KAAK2lH,WAAW39G,KAAKgzB,GAAGL,EAAE30B,EAAEk6B,YAAYlF,IAAIqpF,aAAa,SAASrpF,EAAE50B,GAAGpG,KAAK2lH,WAAW39G,KAAKgzB,GAAGL,EAAE30B,EAAEk6B,YAAYlF,IAAIqF,YAAY,SAASrF,GAAGh7B,KAAK2lH,WAAWrf,OAAOtmG,KAAK2lH,WAAW7nF,QAAQ9C,KAAK,EAAE,GAAGL,EAAE30B,EAAEq6B,YAAYrF,MAAM,EAAE,EAAE,GAAE,CAACnzB,QAAQ8yB,EAAE9yB,SAASmzB,EAAEuoF,KAAK5oF,EAAEgC,IAAIhC,EAAEgC,GAAGhC,EAAElU,uBAAuB,SAAS,GAAEuU,EAAEL,GAAG,IAAIv0B,EAAE,EAAE,GAAE,CAACm9G,IAAIvoF,EAAEh1B,EAAE20B,IAAI,OAAOv0B,EAAEihH,cAAc1sF,EAAEv0B,GAAG0gH,GAAEzjH,UAAU,IAAI,GAAGwjH,IAAI,SAAS7rF,GAAG,IAAIL,EAAE36B,KAAKoG,EAAE,GAAEu0B,EAAE4oF,KAAKnnF,EAAEzB,EAAEl3B,EAAE04B,IAAInB,GAAG,OAAOoB,EAAE,KAAK,SAAS2B,GAAG,IAAIt6B,EAAE,WAAWk3B,EAAE75B,MAAMqmH,aAAa/qF,EAAEp0B,KAAK+1B,GAAG,GAAEpD,EAAEK,EAAEoB,IAAI2B,KAAK33B,EAAEA,EAAE3C,GAAGA,MAAMqjH,GAAEzjH,UAAUvD,OAAO,SAASk7B,GAAGh7B,KAAK+9B,EAAE,KAAK/9B,KAAKyD,EAAE,IAAI6jH,IAAI,IAAI3sF,EAAE,EAAEK,EAAEhO,UAAUgO,EAAEmsF,aAAa,MAAMnsF,EAAEmsF,YAAY,IAAIxsF,EAAE+vC,UAAU,IAAI,IAAItkE,EAAEu0B,EAAE10B,OAAOG,KAAKpG,KAAKyD,EAAEu0C,IAAIrd,EAAEv0B,GAAGpG,KAAK+9B,EAAE,CAAC,EAAE,EAAE/9B,KAAK+9B,IAAI,OAAO/C,EAAEhO,UAAU85F,GAAEzjH,UAAUgU,mBAAmByvG,GAAEzjH,UAAU8T,kBAAkB,WAAW,IAAI6jB,EAAEh7B,KAAKA,KAAKyD,EAAEyzB,SAAQ,SAASyD,EAAEv0B,GAAG,GAAE40B,EAAE50B,EAAEu0B,OAAM,IAAI4sF,GAAE,oBAAoBhsF,QAAQA,OAAOorF,KAAKprF,OAAOorF,IAAI,kBAAkB,MAAM,GAAE,0RAA0R,GAAE,oBAAoB3mF,SAAS,GAAE,SAAShF,GAAG,OAAO,oBAAoBO,QAAQ,iBAAiBA,SAAS,eAAe,eAAepc,KAAK6b,IAAkL,EAAE33B,UAAUmkH,iBAAiB,GAAG,CAAC,qBAAqB,4BAA4B,uBAAuBtwF,SAAQ,SAAS8D,GAAGnB,OAAOqB,eAAe,EAAE73B,UAAU23B,EAAE,CAACI,cAAa,EAAGe,IAAI,WAAW,OAAOn8B,KAAK,UAAUg7B,IAAIgd,IAAI,SAASrd,GAAGd,OAAOqB,eAAel7B,KAAKg7B,EAAE,CAACI,cAAa,EAAGC,UAAS,EAAG54B,MAAMk4B,UAAS,IAAI,GAAE,EAAE3sB,MAAM,SAASy5G,MAAK,SAASC,KAAI,OAAO1nH,KAAK2nH,aAAa,SAAS,KAAI,OAAO3nH,KAAK2xG,iBAAiB,EAAE3jG,MAAM,SAASgtB,GAAG,OAAO,KAAIA,EAAE,GAAEA,IAAIA,EAAE4sF,QAAQH,GAAEzsF,EAAE6sF,qBAAqBH,GAAE1sF,EAAE8sF,mBAAmB,GAAE9sF,EAAE+sF,YAAY/sF,GAAG,IAAMgtF,GAAE,CAAC5sF,cAAa,EAAGe,IAAI,WAAW,OAAOn8B,KAAKglC,QAAQijF,GAAE,EAAEzE,MAAM,EAAEA,MAAM,SAASxoF,GAAG,IAAIL,EAAEK,EAAE/yB,KAAK7B,EAAE40B,EAAEl6B,MAAMs7B,EAAEh2B,EAAE,GAAG,iBAAiBu0B,EAAE,CAAC,IAAIoD,GAAG,IAAIpD,EAAEmD,QAAQ,KAAK,IAAI,IAAIr6B,KAAK24B,EAAE,GAAGh2B,EAAE,CAAC,IAAIJ,EAAEI,EAAE3C,GAAG,IAAG,aAAaA,GAAG,aAAak3B,GAAG,UAAUl3B,GAAG,iBAAiB2C,GAAG,MAAMJ,IAAI,iBAAiBvC,GAAG,UAAU2C,GAAG,MAAMA,EAAE3D,MAAMgB,EAAE,QAAQ,aAAaA,IAAG,IAAKuC,EAAEA,EAAE,GAAG,iBAAiBmZ,KAAK1b,GAAGA,EAAE,aAAa,6BAA6B0b,KAAK1b,EAAEk3B,KAAK,GAAEv0B,EAAE6B,MAAMxE,EAAE,UAAU,aAAa0b,KAAK1b,GAAGA,EAAE,YAAY,YAAY0b,KAAK1b,GAAGA,EAAE,aAAa,mCAAmC0b,KAAK1b,GAAGA,EAAEA,EAAEuxC,cAAcjX,GAAG,GAAE5e,KAAK1b,GAAGA,EAAEA,EAAE0xC,QAAQ,YAAY,OAAOH,cAAc,OAAOhvC,IAAIA,OAAE,GAAQ,aAAamZ,KAAK1b,KAAKA,EAAEA,EAAEuxC,cAAc5Y,EAAE34B,KAAKA,EAAE,mBAAmB24B,EAAE34B,GAAGuC,GAAG,UAAU20B,GAAGyB,EAAEt4B,UAAUV,MAAMqe,QAAQ2a,EAAE35B,SAAS25B,EAAE35B,MAAM,EAAE2D,EAAE4mB,UAAUkK,SAAQ,SAAS8D,GAAGA,EAAEl6B,MAAM4C,UAAU,GAAG04B,EAAE35B,MAAMq7B,QAAQ9C,EAAEl6B,MAAM2B,WAAU,UAAUk4B,GAAG,MAAMyB,EAAE8rF,eAAe9rF,EAAE35B,MAAM,EAAE2D,EAAE4mB,UAAUkK,SAAQ,SAAS8D,GAAGA,EAAEl6B,MAAM4C,SAAS04B,EAAEt4B,UAAU,GAAGs4B,EAAE8rF,aAAapqF,QAAQ9C,EAAEl6B,MAAM2B,OAAO25B,EAAE8rF,cAAcltF,EAAEl6B,MAAM2B,UAASu4B,EAAEl6B,MAAMs7B,EAAEh2B,EAAE4+B,OAAO5+B,EAAEwC,YAAYo/G,GAAE7sF,WAAW,cAAc/0B,EAAE,MAAMA,EAAEwC,YAAYwzB,EAAE4I,MAAM5+B,EAAEwC,WAAWixB,OAAOqB,eAAekB,EAAE,YAAY4rF,KAAIhtF,EAAEmtF,SAASZ,GAAEU,IAAGA,GAAEjtF,IAAI,IAAIotF,GAAE,EAAE1E,IAAI,EAAEA,IAAI,SAAS1oF,GAAGotF,IAAGA,GAAEptF,GAAKA,EAAEqoF,KAA4tB,ICI32PgF,GAAkC,qBAAfC,WAA6BA,WAAa7oF,OAoBjE,SAAS+3B,GAAU+wD,GACfA,IACA,IAAIC,EAAuB,EAAe7E,kBACtC8E,EAAY,GAChB,SAASC,EAAiBhmH,GACtB+lH,EAAUzgH,KAAKtF,GAEnB,EAAeihH,kBAAoB+E,EACnC,EAAc,EAAqB,GAAe,IAAK1oF,SAASo3B,cAAc,QAC9E,MAAOqxD,EAAUxiH,OACbwiH,EAAU7f,OAAV6f,GAEJ,EAAe9E,kBAAoB6E,EA/BnCH,GAAUnxD,iBACVr1B,QAAQC,KAAK,oCAGbumF,GAAUnxD,iBAAmB,CACzBC,UAAW,EACXC,cAAe,EACft3D,OAAQ,EACRiX,UAAW,EACXsgD,SAAUn5B,EACVo5B,cAAeA,GACfC,aAAc,GACdC,UAAWA,GACXC,uBAAwBA,IAoBhC,IAAI,GAA+B,SAAUrwD,GAEzC,SAASuhH,IACL,OAAkB,OAAXvhH,GAAmBA,EAAOE,MAAMtH,KAAMuH,YAAcvH,KAI/D,OANA,eAAU2oH,EAAevhH,GAIzBuhH,EAActlH,UAAUvD,OAAS,WAAc,OAAO,EAAqB,MAAO,KAClF6oH,EAActlH,UAAU8T,kBAAoB,WAAcnX,KAAK4Y,SAAS,KACjE+vG,EAPuB,CAQhC,GACF,SAASrxD,GAAc4wD,GACnB,IAAIU,EAAc,EAAqBV,GACnCW,EAAeD,EAAYpV,SA0B/B,OAzBAoV,EAAYpV,SAAW,WACnB,IAAInsG,EAAQrH,KACR8oH,GAAS9oH,KAAKmlH,gBACdn4F,EAAW67F,EAAavhH,MAAMtH,KAAMuH,WACxC,GAAIuhH,EAAO,CACP,IAAIC,EAAS,GACb/oH,KAAKk1F,sBAAwB,SAAU8zB,GAC/B3hH,EAAMvG,MAAM2B,QAAUumH,EAAOvmH,OAC7BsmH,EAAO7xF,SAAQ,SAAUmG,GACrBA,EAAEx1B,QAAUmhH,EAAOvmH,MACnB46B,EAAE+oF,kBAIdpmH,KAAKk2E,IAAM,SAAU74C,GACjB0rF,EAAO/gH,KAAKq1B,GACZ,IAAI4rF,EAAM5rF,EAAE5W,qBACZ4W,EAAE5W,qBAAuB,WACrBsiG,EAAOziB,OAAOyiB,EAAOjrF,QAAQT,GAAI,GACjC4rF,GAAOA,EAAI1lH,KAAK85B,KAI5B,OAAOrQ,GAEJ47F,EAEX,SAASnxD,GAAuBnuC,GAC5B,EAAc,KAAMA,G,iBCpEpB,GAA0B,SAAUliB,GAEpC,SAAS8hH,EAASn5G,EAAIkrF,QACM,IAApBA,IAA8BA,EAAkB,IACpD,IAAI5zF,EAAQD,EAAO7D,KAAKvD,OAASA,KA6CjC,OA5CAqH,EAAM8hH,aAAc,EACpB9hH,EAAM+hH,YAAa,EACnB/hH,EAAMizF,kBAAoB,GAC1BjzF,EAAMgiH,sBAAwB,EAC9BhiH,EAAMiiH,aAAe,SAAU7oC,GAE3B,OAAQA,EAAOx4E,MACX,IAAK,iBACL,IAAK,mBACDZ,EAAMkiH,aAAaxhB,aAG/B1gG,EAAMklG,WAAa,SAAUpoG,GACzBkD,EAAMo8E,YAAct/E,EACpBkD,EAAMkiH,aAAap7F,QAAQhqB,EAAK0+E,gBAAgB7R,gBAEpD3pE,EAAMmiH,oBAAsB,WACxB,GAAIniH,EAAM8hH,YAAa,CACnB9hH,EAAM+hH,YAAa,EACnB,IAAIK,EAAgBpiH,EAAMo8E,YAC1B,kBAAU,WACN,iBAAO,iBAAc,QAAc,CAAEjgF,QAASimH,EAAc5mC,gBAAiB7+D,MAAOylG,EAAczlG,MAAOm2B,QAASsvE,EAActvE,UAAW,SAAUxxC,EAAYyQ,EAAQrQ,EAAcC,GAGnL,OAFA3B,EAAMqiH,cAAc/gH,GACpBtB,EAAMsiH,UAAUvwG,GACR,gBAAD,CAAe,QAA2Bo6F,SAAU,CAAE/wG,MAAO4E,EAAMgiH,uBACtE,iBAAc,QAAiB,eAAS,CAAEtgH,aAAcA,EAAcC,SAAUA,GAAYygH,QAChGpiH,EAAM0I,YAGT1I,EAAM+hH,aACX/hH,EAAM+hH,YAAa,EACnB,iBAAuB/hH,EAAM0I,IAC7B1I,EAAMqiH,cAAc,IACpBriH,EAAMsiH,UAAU,MAGxBtiH,EAAM0I,GAAKA,EACX1I,EAAMkiH,aAAe,IAAI,QAAcliH,EAAMmiH,qBAC7C,IAAI,QAAoB,CACpBvuB,gBAAiBA,EACjBpzC,YAAaxgD,EACb8jG,SAAU9jG,EAAMiiH,aAChB9d,OAAQnkG,EAAMklG,aAEXllG,EAgEX,OAhHA,eAAU6hH,EAAU9hH,GAkDpByyB,OAAOqB,eAAeguF,EAAS7lH,UAAW,OAAQ,CAC9C84B,IAAK,WAAc,OAAOn8B,KAAKyjF,YAAYniE,SAE3C6Z,YAAY,EACZC,cAAc,IAElB8tF,EAAS7lH,UAAUvD,OAAS,WACxB,IAAI8pH,EAAe5pH,KAAKmpH,YACnBS,EAID5pH,KAAKqpH,uBAAyB,EAH9BrpH,KAAKmpH,aAAc,EAKvBnpH,KAAKupH,aAAap7F,UACdy7F,GACA5pH,KAAKmhF,cAGb+nC,EAAS7lH,UAAU64C,QAAU,WACrBl8C,KAAKmpH,cACLnpH,KAAKmpH,aAAc,EACnBnpH,KAAKupH,aAAap7F,YAG1B+6F,EAAS7lH,UAAU89E,WAAa,WAC5B,IAAI95E,EAAQrH,KACZ,kBAAU,WACNoH,EAAO/D,UAAU89E,WAAW59E,KAAK8D,OAGzC6hH,EAAS7lH,UAAU69E,eAAiB,SAAUplB,GAC1C97D,KAAKupH,aAAavhB,MAAM,kBACxBlsC,IACA97D,KAAKupH,aAAathB,OAAO,mBAE7BihB,EAAS7lH,UAAUwmH,eAAiB,WAChC7pH,KAAKupH,aAAavhB,MAAM,mBAE5BkhB,EAAS7lH,UAAUymH,gBAAkB,WACjC9pH,KAAKupH,aAAathB,OAAO,kBAAkB,IAE/CihB,EAAS7lH,UAAUwnG,aAAe,SAAU5P,EAAiBljE,GACzD/3B,KAAKihF,mBAAmB4pB,aAAa5P,EAAiBljE,IAE1DmxF,EAAS7lH,UAAUqmH,cAAgB,SAAU/gH,GACzC,IAAK,iBAAcA,EAAY3I,KAAKs6F,mBAAoB,CAEpD,IADA,IAAIt8C,EAAYh+C,KAAK+P,GAAGiuC,UACf7zC,EAAK,EAAGvC,EAAK5H,KAAKs6F,kBAAmBnwF,EAAKvC,EAAG3B,OAAQkE,IAAM,CAChE,IAAIvB,EAAYhB,EAAGuC,GACnB6zC,EAAU4Z,OAAOhvD,GAErB,IAAK,IAAIvG,EAAK,EAAG0nH,EAAephH,EAAYtG,EAAK0nH,EAAa9jH,OAAQ5D,IAAM,CACpEuG,EAAYmhH,EAAa1nH,GAC7B27C,EAAU1uB,IAAI1mB,GAElB5I,KAAKs6F,kBAAoB3xF,IAGjCugH,EAAS7lH,UAAUsmH,UAAY,SAAUvwG,GACrC,gBAAepZ,KAAK+P,GAAI,SAAUqJ,IAE/B8vG,EAjHkB,CAkH3B,SC5HSc,GAAoB,CAC3Bh9C,eAAe,EACfC,eAAe,EACf9qE,QAAQ,EACRq0D,cAAc,EACdyzD,WAAW;;;;;ECAR,SAASC,GAAYtmH,GASxB,MARmB,kBAARA,IACHR,MAAMqe,QAAQ7d,GACdA,EAAMR,MAAMC,UAAU0jC,MAAMxjC,KAAKK,GAE5BA,IACLA,EAAM,eAAS,GAAIA,KAGpBA,EAEJ,SAAS29D,GAAQ38B,EAAOk3B,GAC3B,IAAI9F,EAAS,GACb,IAAK,IAAIp1D,KAAOgkC,EACRA,EAAM7K,eAAen5B,KACrBo1D,EAAOp1D,GAAOk7D,EAAKl3B,EAAMhkC,GAAMA,IAGvC,OAAOo1D,EClBJ,SAASm0D,GAAkBC,GAC9B,OAAO,SAAUtpH,GACb,MAAO,CAAEupH,IAAKD,EAActpH,KAG7B,SAASwpH,GAA2B9rF,GACvC,OAAO,iBAAa,CAChBo4D,oBAAqB,CACjByzB,IAAK,WAAc,OAAOE,GAAiB/rF,OAIvD,SAAS+rF,GAAiB/rF,GACtB,IAAI0oE,EACAtmE,EACJ,SAAS9gC,EAAOiQ,EAAIy6G,GAOhB,GANItjB,IAAcn3F,IACVm3F,GAAatmE,GACbA,EAAE6pF,WAENvjB,EAAYn3F,GAEX6wB,EAQDA,EAAEp4B,QAAUgiH,MARR,CACJ5pF,EAAI8pF,GAAQF,EAAahsF,GAEzB,IAAIkwD,EAAU1uD,SAASo3B,cAAc,QACrCrnD,EAAGmwB,YAAYwuD,GACf9tD,EAAE+pF,OAAOj8B,IAMjB,SAASxyC,IACDtb,GACAA,EAAE6pF,WAGV,MAAO,CAAE3qH,OAAQA,EAAQo8C,QAASA,GAEtC,SAASwuE,GAAQE,EAAgBpsF,GAC7B,OAAO,IAAI,aAAI,CACXA,OAAQA,EACRr6B,KAAM,CACFqE,QAASoiH,GAEb9qH,OAAQ,SAAUm/B,GACd,IAAIz2B,EAAUxI,KAAKwI,QAGnB,OAAuB,IAAnBA,EAAQvC,OACDuC,EAAQ,GAGRy2B,EAAE,OAAQ,GAAIz2B,MCrDrC,IAAIgtD,GAAe,aAAI/gB,OAAO,CAC1B3zC,MAAO,CACH0C,QAASq2B,QAEb11B,KAAM0mH,GACN/qH,OAAQ,SAAUs3D,GACd,OAAOA,EAAc,MAAO,CAExB/2D,MAAO,CAAE,oBAAqBL,KAAKu5F,aAG3C9+D,QAAS,WACL,IAAIqwF,EAAW9qH,KAAK6+B,SACpBisF,EAASC,kBAAoBxpD,GAAQvhE,KAAK6jC,aAAcsmF,IACxD,IAAIa,EAAW,IAAI,GAAShrH,KAAKirH,IAAKjrH,KAAKkrH,aAAalrH,KAAKwD,QAASxD,OACtE8qH,EAASE,SAAWA,EACpBA,EAASlrH,UAEb6E,QAAS,CACL0vD,OAAQA,GACR62D,aAAcA,IAElBC,aAAc,WACVnrH,KAAKq0D,SAASy1D,mBAElBsB,cAAe,WACXprH,KAAKq0D,SAASnY,WAElBrf,MAAOwuF,OAEX,SAASR,KACL,MAAO,CACHtxB,SAAU,GAGlB,SAAS2xB,GAAaI,EAAiB9sF,GACnC,IAAIssF,EAAW9qH,KAAK6+B,SAEpB,OADAysF,EAAkBA,GAAmB,GAC9B,eAAS,eAAS,eAAS,GAAIR,EAASC,mBAAoBO,GAAkB,CAAEj1D,SAAUi1D,EAAgBj1D,SAAW,IAAIxtD,OAAO,CAC/HyhH,GAA2B9rF,OAGvC,SAAS61B,KACL,IAAIy2D,EAAW9qH,KAAK6+B,SACpB,OAAOisF,EAASE,SAEpB,SAASK,KACL,IAAIE,EAAW,CAGX/nH,QAAS,CACLgoH,MAAM,EACNzlF,QAAS,SAAUviC,GACf,IAAIwnH,EAAWhrH,KAAKq0D,SACpB22D,EAASnB,iBACTmB,EAASngB,aAAa7qG,KAAKkrH,aAAa1nH,EAASxD,OACjDA,KAAKu5F,cAIbkyB,EAAU,SAAUC,GAEpBH,EAAS,WAAaG,GAAqB,CACvCF,MAAM,EACNzlF,QAAS,SAAUniC,GACf,IAAIgE,EAEJ,QAAYgd,IAARhhB,EAAmB,CACnB,IAAIonH,EAAWhrH,KAAKq0D,SACpB22D,EAASnB,iBACTmB,EAASngB,cAAcjjG,EAAK,GAGxBA,EAAG8jH,GAAqBxB,GAAYtmH,GACpCgE,IAAK,GACT5H,KAAKu5F,eAKrB,IAAK,IAAImyB,KAAqB1B,GAC1ByB,EAAQC,GAEZ,OAAOH,EAEI,IC1EXI,GD0EW,MCnFXC,IAAY,EAET,SAASC,GAAQC,GACfF,KACDA,IAAY,EACZE,EAAI5kH,UAAU,eAAgB,KAMlCykH,GADsB,qBAAfrD,WACKA,WAAWwD,IAGXrsF,OAAOqsF,IAGnBH,IACAA,GAAUI,IAAI,CACVF,QAASA,KAIF","file":"js/chunk-fbb2cc6e.7f82e0f0.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PDFViewer.vue?vue&type=style&index=0&id=95c293e4&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ProblemsListEditor\"},[_c('div',{staticClass:\"container-fluid\"},[_c('b-row',[_c('b-col',[_c('h4',[_vm._v(\"Problems List: \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":'/API/MentalHealth/Clients/ClientMHProblems/ProblemsReport?ClientSubProgramMembershipID=' + _vm.ChartId}},[_c('i',{staticClass:\"fa fa-download\"})])])])],1),_c('b-row',{staticStyle:{\"overflow-x\":\"auto\"}},[_c('b-col',{attrs:{\"cols\":\"11\"}},[_c('vuetable',{staticClass:\"vue-datatable\",attrs:{\"fields\":_vm.Fields,\"data\":_vm.FieldData,\"pagination-path\":\"\",\"api-mode\":false},scopedSlots:_vm._u([{key:\"DetailView\",fn:function(props){return [(_vm.EditMode)?_c('div',{staticClass:\"DetailView\"},[_c('span',{staticClass:\"underline pointer\",on:{\"click\":function($event){return _vm.ShowDetail(props.rowData)}}},[_c('span',{domProps:{\"innerHTML\":_vm._s(props.rowData.DiagnosticDescription)}}),_vm._v(\" \"),(_vm.EditMode)?_c('font-awesome-icon',{attrs:{\"icon\":['fa', 'edit']}}):_vm._e()],1)]):_c('div',{staticClass:\"DetailView\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(props.rowData.DiagnosticDescription)}})])]}}])})],1),_c('b-col',{attrs:{\"cols\":\"1\"}},[(_vm.EditMode && _vm.CheckPermission(_vm.EditPermission))?_c('div',{staticClass:\"vert-icons\"},[_c('b-row',[_c('font-awesome-icon',{staticClass:\"pointer olive-green-text\",attrs:{\"icon\":['fa', 'plus']},on:{\"click\":function($event){return _vm.ShowNewDetail()}}})],1)],1):_vm._e()])],1)],1),_c('b-modal',{ref:\"detail-modal\",attrs:{\"size\":\"lg\",\"title\":\"Problems List Item\",\"hide-footer\":\"\",\"scrollable\":true}},[_c('b-container',[_c('b-form',{on:{\"submit\":_vm.CreateEditProblem}},[_c('b-row',[_c('b-col',[_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Problem:\")]),_c('v-select',{attrs:{\"required\":\"\",\"options\":_vm.ProblemOptions,\"label\":\"CodeDescription\",\"reduce\":option => option.Id},on:{\"search\":_vm.GetMHProblemOptions,\"input\":_vm.SetCodeAndDescription},scopedSlots:_vm._u([{key:\"search\",fn:function({attributes, events}){return [_c('input',_vm._g(_vm._b({staticClass:\"vs__search\",attrs:{\"required\":!_vm.TargetRecord.DiagnosticCodeID}},'input',attributes,false),events))]}}]),model:{value:(_vm.TargetRecord.DiagnosticCodeID),callback:function ($$v) {_vm.$set(_vm.TargetRecord, \"DiagnosticCodeID\", $$v)},expression:\"TargetRecord.DiagnosticCodeID\"}})],1),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Code:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.TargetRecord.DiagnosticCode),expression:\"TargetRecord.DiagnosticCode\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"readonly\":\"\",\"required\":\"\"},domProps:{\"value\":(_vm.TargetRecord.DiagnosticCode)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.TargetRecord, \"DiagnosticCode\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Description:\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.TargetRecord.DiagnosticDescription),expression:\"TargetRecord.DiagnosticDescription\"}],staticClass:\"form-control\",attrs:{\"rows\":\"5\",\"readonly\":\"\",\"required\":\"\"},domProps:{\"value\":(_vm.TargetRecord.DiagnosticDescription)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.TargetRecord, \"DiagnosticDescription\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Problem Context:\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.TargetRecord.ProblemContext),expression:\"TargetRecord.ProblemContext\"}],staticClass:\"form-control\",attrs:{\"required\":\"\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.TargetRecord, \"ProblemContext\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"\"}}),_c('option',{attrs:{\"value\":\"Principal Diagnosis\"}},[_vm._v(\"Principal Diagnosis\")]),_c('option',{attrs:{\"value\":\"Clinical Disorders Related to Treatment\"}},[_vm._v(\"Clinical Disorders Related to Treatment\")]),_c('option',{attrs:{\"value\":\"Admitting Diagnosis\"}},[_vm._v(\"Admitting Diagnosis\")]),_c('option',{attrs:{\"value\":\"Other Conditions that may be the Focus of Clinical Attention\"}},[_vm._v(\"Other Conditions that may be the Focus of Clinical Attention\")]),_c('option',{attrs:{\"value\":\"External Cause of Injury\"}},[_vm._v(\"External Cause of Injury\")]),_c('option',{attrs:{\"value\":\"Patient's Reason for Visit\"}},[_vm._v(\"Patient's Reason for Visit\")])])])]),_c('b-col',[_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Problem Status:\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.TargetRecord.Status),expression:\"TargetRecord.Status\"}],staticClass:\"form-control\",attrs:{\"required\":\"\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.TargetRecord, \"Status\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"\"}}),_c('option',{attrs:{\"value\":\"Current\"}},[_vm._v(\"Current\")]),_c('option',{attrs:{\"value\":\"At Risk For\"}},[_vm._v(\"At Risk For\")]),_c('option',{attrs:{\"value\":\"Resolved/Inactive\"}},[_vm._v(\"Resolved/Inactive\")])])]),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Date Identified:\")]),_c('flat-pickr',{staticClass:\"form-control\",attrs:{\"required\":\"\",\"config\":_vm.DateConfig},model:{value:(_vm.TargetRecord.DateReported),callback:function ($$v) {_vm.$set(_vm.TargetRecord, \"DateReported\", $$v)},expression:\"TargetRecord.DateReported\"}})],1),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Identified By: (include professional title)\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.TargetRecord.ReportingEmployeeName),expression:\"TargetRecord.ReportingEmployeeName\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"required\":\"\"},domProps:{\"value\":(_vm.TargetRecord.ReportingEmployeeName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.TargetRecord, \"ReportingEmployeeName\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Date Added:\")]),_c('flat-pickr',{staticClass:\"form-control\",attrs:{\"required\":\"\",\"config\":_vm.DateConfig},model:{value:(_vm.TargetRecord.DateAdded),callback:function ($$v) {_vm.$set(_vm.TargetRecord, \"DateAdded\", $$v)},expression:\"TargetRecord.DateAdded\"}})],1),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Date Resolved:\")]),_c('flat-pickr',{staticClass:\"form-control\",attrs:{\"config\":_vm.DateConfig},model:{value:(_vm.TargetRecord.DateResolved),callback:function ($$v) {_vm.$set(_vm.TargetRecord, \"DateResolved\", $$v)},expression:\"TargetRecord.DateResolved\"}})],1),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Resolved By: (include professional title)\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.TargetRecord.ResolvingEmployeeName),expression:\"TargetRecord.ResolvingEmployeeName\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.TargetRecord.ResolvingEmployeeName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.TargetRecord, \"ResolvingEmployeeName\", $event.target.value)}}})])])],1),_c('b-row',{staticClass:\"modal-btn-row\"},[_c('div',{staticClass:\"modal-btn-row-div\"},[_c('b-button',{attrs:{\"size\":\"md\",\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.CancelDetail()}}},[_vm._v(\" CANCEL \")]),_c('b-button',{attrs:{\"size\":\"md\",\"variant\":\"success\",\"type\":\"submit\"}},[_vm._v(\" SAVE \")]),(_vm.TargetRecord.Id)?_c('b-button',{attrs:{\"size\":\"md\",\"variant\":\"danger\"},on:{\"click\":function($event){return _vm.DeleteProblem()}}},[_vm._v(\" DELETE \")]):_vm._e()],1)])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyAppointments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MyAppointments.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MyAppointments.vue?vue&type=template&id=09cd7f10&scoped=true&\"\nimport script from \"./MyAppointments.vue?vue&type=script&lang=js&\"\nexport * from \"./MyAppointments.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09cd7f10\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmbedMyAppointments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmbedMyAppointments.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EmbedMyAppointments.vue?vue&type=template&id=7d7a1357&\"\nimport script from \"./EmbedMyAppointments.vue?vue&type=script&lang=js&\"\nexport * from \"./EmbedMyAppointments.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/// \nif (typeof FullCalendarVDom === 'undefined') {\n throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');\n}\nvar Component = FullCalendarVDom.Component;\nvar createElement = FullCalendarVDom.createElement;\nvar render = FullCalendarVDom.render;\nvar createRef = FullCalendarVDom.createRef;\nvar Fragment = FullCalendarVDom.Fragment;\nvar createContext = FullCalendarVDom.createContext;\nvar createPortal = FullCalendarVDom.createPortal;\nvar flushSync = FullCalendarVDom.flushSync;\nvar unmountComponentAtNode = FullCalendarVDom.unmountComponentAtNode;\n/* eslint-enable */\n\nexport { Component, Fragment, createContext, createElement, createPortal, createRef, flushSync, render, unmountComponentAtNode };\n","/*!\nFullCalendar v5.11.2\nDocs & License: https://fullcalendar.io/\n(c) 2022 Adam Shaw\n*/\nimport './main.css';\n\nimport { __assign, __spreadArray, __extends } from 'tslib';\nimport { createContext, Component, createRef, createElement, Fragment, createPortal } from './vdom.js';\nexport * from './vdom.js';\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\nvar EventSourceApi = /** @class */ (function () {\n function EventSourceApi(context, internalEventSource) {\n this.context = context;\n this.internalEventSource = internalEventSource;\n }\n EventSourceApi.prototype.remove = function () {\n this.context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId,\n });\n };\n EventSourceApi.prototype.refetch = function () {\n this.context.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId],\n isRefetch: true,\n });\n };\n Object.defineProperty(EventSourceApi.prototype, \"id\", {\n get: function () {\n return this.internalEventSource.publicId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"url\", {\n get: function () {\n return this.internalEventSource.meta.url;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"format\", {\n get: function () {\n return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n },\n enumerable: false,\n configurable: true\n });\n return EventSourceApi;\n}());\n\nfunction removeElement(el) {\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\nfunction elementClosest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n // really bad fallback for IE\n // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n }\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (elementMatches(el, selector)) {\n return el;\n }\n el = (el.parentElement || el.parentNode);\n } while (el !== null && el.nodeType === 1);\n return null;\n}\nfunction elementMatches(el, selector) {\n var method = el.matches || el.matchesSelector || el.msMatchesSelector;\n return method.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nfunction findElements(container, selector) {\n var containers = container instanceof HTMLElement ? [container] : container;\n var allMatches = [];\n for (var i = 0; i < containers.length; i += 1) {\n var matches = containers[i].querySelectorAll(selector);\n for (var j = 0; j < matches.length; j += 1) {\n allMatches.push(matches[j]);\n }\n }\n return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nfunction findDirectChildren(parent, selector) {\n var parents = parent instanceof HTMLElement ? [parent] : parent;\n var allMatches = [];\n for (var i = 0; i < parents.length; i += 1) {\n var childNodes = parents[i].children; // only ever elements\n for (var j = 0; j < childNodes.length; j += 1) {\n var childNode = childNodes[j];\n if (!selector || elementMatches(childNode, selector)) {\n allMatches.push(childNode);\n }\n }\n }\n return allMatches;\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nvar PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nfunction applyStyle(el, props) {\n for (var propName in props) {\n applyStyleProp(el, propName, props[propName]);\n }\n}\nfunction applyStyleProp(el, name, val) {\n if (val == null) {\n el.style[name] = '';\n }\n else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n el.style[name] = val + \"px\";\n }\n else {\n el.style[name] = val;\n }\n}\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nfunction getEventTargetViaRoot(ev) {\n var _a, _b;\n return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n}\n// Shadow DOM consuderations\n// ----------------------------------------------------------------------------------------------------------------\nfunction getElRoot(el) {\n return el.getRootNode ? el.getRootNode() : document;\n}\n// Unique ID for DOM attribute\nvar guid$1 = 0;\nfunction getUniqueDomId() {\n guid$1 += 1;\n return 'fc-dom-' + guid$1;\n}\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nfunction buildDelegationHandler(selector, handler) {\n return function (ev) {\n var matchedChild = elementClosest(ev.target, selector);\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild);\n }\n };\n}\nfunction listenBySelector(container, eventType, selector, handler) {\n var attachedHandler = buildDelegationHandler(selector, handler);\n container.addEventListener(eventType, attachedHandler);\n return function () {\n container.removeEventListener(eventType, attachedHandler);\n };\n}\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n var currentMatchedChild;\n return listenBySelector(container, 'mouseover', selector, function (mouseOverEv, matchedChild) {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild;\n onMouseEnter(mouseOverEv, matchedChild);\n var realOnMouseLeave_1 = function (mouseLeaveEv) {\n currentMatchedChild = null;\n onMouseLeave(mouseLeaveEv, matchedChild);\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);\n };\n // listen to the next mouseleave, and then unattach\n matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);\n }\n });\n}\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\nvar transitionEventNames = [\n 'webkitTransitionEnd',\n 'otransitionend',\n 'oTransitionEnd',\n 'msTransitionEnd',\n 'transitionend',\n];\n// triggered only when the next single subsequent transition finishes\nfunction whenTransitionDone(el, callback) {\n var realCallback = function (ev) {\n callback(ev);\n transitionEventNames.forEach(function (eventName) {\n el.removeEventListener(eventName, realCallback);\n });\n };\n transitionEventNames.forEach(function (eventName) {\n el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n });\n}\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\nfunction createAriaClickAttrs(handler) {\n return __assign({ onClick: handler }, createAriaKeyboardAttrs(handler));\n}\nfunction createAriaKeyboardAttrs(handler) {\n return {\n tabIndex: 0,\n onKeyDown: function (ev) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n handler(ev);\n ev.preventDefault(); // if space, don't scroll down page\n }\n },\n };\n}\n\nvar guidNumber = 0;\nfunction guid() {\n guidNumber += 1;\n return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventSelection(el) {\n el.classList.add('fc-unselectable');\n el.addEventListener('selectstart', preventDefault);\n}\nfunction allowSelection(el) {\n el.classList.remove('fc-unselectable');\n el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventContextMenu(el) {\n el.addEventListener('contextmenu', preventDefault);\n}\nfunction allowContextMenu(el) {\n el.removeEventListener('contextmenu', preventDefault);\n}\nfunction parseFieldSpecs(input) {\n var specs = [];\n var tokens = [];\n var i;\n var token;\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/);\n }\n else if (typeof input === 'function') {\n tokens = [input];\n }\n else if (Array.isArray(input)) {\n tokens = input;\n }\n for (i = 0; i < tokens.length; i += 1) {\n token = tokens[i];\n if (typeof token === 'string') {\n specs.push(token.charAt(0) === '-' ?\n { field: token.substring(1), order: -1 } :\n { field: token, order: 1 });\n }\n else if (typeof token === 'function') {\n specs.push({ func: token });\n }\n }\n return specs;\n}\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n var i;\n var cmp;\n for (i = 0; i < fieldSpecs.length; i += 1) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n if (cmp) {\n return cmp;\n }\n }\n return 0;\n}\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1);\n }\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n * (fieldSpec.order || 1);\n}\nfunction flexibleCompare(a, b) {\n if (!a && !b) {\n return 0;\n }\n if (b == null) {\n return -1;\n }\n if (a == null) {\n return 1;\n }\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction padStart(val, len) {\n var s = String(val);\n return '000'.substr(0, len - s.length) + s;\n}\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n if (typeof formatter === 'function') {\n return formatter.apply(void 0, args);\n }\n if (typeof formatter === 'string') { // non-blank string\n return args.reduce(function (str, arg, index) { return (str.replace('$' + index, arg || '')); }, formatter);\n }\n return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction compareNumbers(a, b) {\n return a - b;\n}\nfunction isInt(n) {\n return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\nfunction computeSmallestCellWidth(cellEl) {\n var allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n var contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n if (!allWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n }\n if (!contentWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-cushion className');\n }\n return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width + // the cell padding+border\n contentWidthEl.getBoundingClientRect().width;\n}\n\nvar DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nfunction addWeeks(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n * 7;\n return arrayToUtcDate(a);\n}\nfunction addDays(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n;\n return arrayToUtcDate(a);\n}\nfunction addMs(m, n) {\n var a = dateToUtcArray(m);\n a[6] += n;\n return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\n// TODO: why not use ranges?\nfunction diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7;\n}\nfunction diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nfunction diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nfunction diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nfunction diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nfunction diffDayAndTime(m0, m1) {\n var m0day = startOfDay(m0);\n var m1day = startOfDay(m1);\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf()),\n };\n}\n// Diffing Whole Units\nfunction diffWholeWeeks(m0, m1) {\n var d = diffWholeDays(m0, m1);\n if (d !== null && d % 7 === 0) {\n return d / 7;\n }\n return null;\n}\nfunction diffWholeDays(m0, m1) {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1));\n }\n return null;\n}\n// Start-Of\nfunction startOfDay(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n ]);\n}\nfunction startOfHour(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n ]);\n}\nfunction startOfMinute(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n ]);\n}\nfunction startOfSecond(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n m.getUTCSeconds(),\n ]);\n}\n// Week Computation\nfunction weekOfYear(marker, dow, doy) {\n var y = marker.getUTCFullYear();\n var w = weekOfGivenYear(marker, y, dow, doy);\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy);\n }\n var nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n if (nextW >= 1) {\n return Math.min(w, nextW);\n }\n return w;\n}\nfunction weekOfGivenYear(marker, year, dow, doy) {\n var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n var dayStart = startOfDay(marker);\n var days = Math.round(diffDays(firstWeekStart, dayStart));\n return Math.floor(days / 7) + 1; // zero-indexed\n}\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n var fwd = 7 + dow - doy;\n // first-week day local weekday -- which local weekday is fwd\n var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n}\n// Array Conversion\nfunction dateToLocalArray(date) {\n return [\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n ];\n}\nfunction arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n return [\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds(),\n ];\n}\nfunction arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0]);\n }\n return new Date(Date.UTC.apply(Date, a));\n}\n// Other Utils\nfunction isValidDate(m) {\n return !isNaN(m.valueOf());\n}\nfunction timeAsMs(m) {\n return m.getUTCHours() * 1000 * 60 * 60 +\n m.getUTCMinutes() * 1000 * 60 +\n m.getUTCSeconds() * 1000 +\n m.getUTCMilliseconds();\n}\n\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n return {\n instanceId: guid(),\n defId: defId,\n range: range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo,\n };\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexPropsMap) {\n var dest = {};\n if (complexPropsMap) {\n for (var name_1 in complexPropsMap) {\n var complexObjs = [];\n // collect the trailing object values, stopping when a non-object is discovered\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var val = propObjs[i][name_1];\n if (typeof val === 'object' && val) { // non-null object\n complexObjs.unshift(val);\n }\n else if (val !== undefined) {\n dest[name_1] = val; // if there were no objects, this value will be used\n break;\n }\n }\n // if the trailing values were objects, use the merged value\n if (complexObjs.length) {\n dest[name_1] = mergeProps(complexObjs);\n }\n }\n }\n // copy values into the destination, going from last to first\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var props = propObjs[i];\n for (var name_2 in props) {\n if (!(name_2 in dest)) { // if already assigned by previous props or complex props, don't reassign\n dest[name_2] = props[name_2];\n }\n }\n }\n return dest;\n}\nfunction filterHash(hash, func) {\n var filtered = {};\n for (var key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key];\n }\n }\n return filtered;\n}\nfunction mapHash(hash, func) {\n var newHash = {};\n for (var key in hash) {\n newHash[key] = func(hash[key], key);\n }\n return newHash;\n}\nfunction arrayToHash(a) {\n var hash = {};\n for (var _i = 0, a_1 = a; _i < a_1.length; _i++) {\n var item = a_1[_i];\n hash[item] = true;\n }\n return hash;\n}\nfunction buildHashFromArray(a, func) {\n var hash = {};\n for (var i = 0; i < a.length; i += 1) {\n var tuple = func(a[i], i);\n hash[tuple[0]] = tuple[1];\n }\n return hash;\n}\nfunction hashValuesToArray(obj) {\n var a = [];\n for (var key in obj) {\n a.push(obj[key]);\n }\n return a;\n}\nfunction isPropsEqual(obj0, obj1) {\n if (obj0 === obj1) {\n return true;\n }\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false;\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false;\n }\n }\n }\n return true;\n}\nfunction getUnequalProps(obj0, obj1) {\n var keys = [];\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n keys.push(key);\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n keys.push(key);\n }\n }\n }\n return keys;\n}\nfunction compareObjs(oldProps, newProps, equalityFuncs) {\n if (equalityFuncs === void 0) { equalityFuncs = {}; }\n if (oldProps === newProps) {\n return true;\n }\n for (var key in newProps) {\n if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;\n else {\n return false;\n }\n }\n // check for props that were omitted in the new\n for (var key in oldProps) {\n if (!(key in newProps)) {\n return false;\n }\n }\n return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual(val0, val1, comparator) {\n if (val0 === val1 || comparator === true) {\n return true;\n }\n if (comparator) {\n return comparator(val0, val1);\n }\n return false;\n}\nfunction collectFromHash(hash, startIndex, endIndex, step) {\n if (startIndex === void 0) { startIndex = 0; }\n if (step === void 0) { step = 1; }\n var res = [];\n if (endIndex == null) {\n endIndex = Object.keys(hash).length;\n }\n for (var i = startIndex; i < endIndex; i += step) {\n var val = hash[i];\n if (val !== undefined) { // will disregard undefined for sparse arrays\n res.push(val);\n }\n }\n return res;\n}\n\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n for (var i = 0; i < recurringTypes.length; i += 1) {\n var parsed = recurringTypes[i].parse(refined, dateEnv);\n if (parsed) {\n var allDay = refined.allDay;\n if (allDay == null) {\n allDay = defaultAllDay;\n if (allDay == null) {\n allDay = parsed.allDayGuess;\n if (allDay == null) {\n allDay = false;\n }\n }\n }\n return {\n allDay: allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i,\n };\n }\n }\n return null;\n}\nfunction expandRecurring(eventStore, framingRange, context) {\n var dateEnv = context.dateEnv, pluginHooks = context.pluginHooks, options = context.options;\n var defs = eventStore.defs, instances = eventStore.instances;\n // remove existing recurring instances\n // TODO: bad. always expand events as a second step\n instances = filterHash(instances, function (instance) { return !defs[instance.defId].recurringDef; });\n for (var defId in defs) {\n var def = defs[defId];\n if (def.recurringDef) {\n var duration = def.recurringDef.duration;\n if (!duration) {\n duration = def.allDay ?\n options.defaultAllDayEventDuration :\n options.defaultTimedEventDuration;\n }\n var starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) {\n var start = starts_1[_i];\n var instance = createEventInstance(defId, {\n start: start,\n end: dateEnv.add(start, duration),\n });\n instances[instance.instanceId] = instance;\n }\n }\n }\n return { defs: defs, instances: instances };\n}\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n var typeDef = recurringTypes[eventDef.recurringDef.typeId];\n var markers = typeDef.expand(eventDef.recurringDef.typeData, {\n start: dateEnv.subtract(framingRange.start, duration),\n end: framingRange.end,\n }, dateEnv);\n // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n if (eventDef.allDay) {\n markers = markers.map(startOfDay);\n }\n return markers;\n}\n\nvar INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nvar PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nfunction createDuration(input, unit) {\n var _a;\n if (typeof input === 'string') {\n return parseString(input);\n }\n if (typeof input === 'object' && input) { // non-null object\n return parseObject(input);\n }\n if (typeof input === 'number') {\n return parseObject((_a = {}, _a[unit || 'milliseconds'] = input, _a));\n }\n return null;\n}\nfunction parseString(s) {\n var m = PARSE_RE.exec(s);\n if (m) {\n var sign = m[1] ? -1 : 1;\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n (m[6] ? parseInt(m[6], 10) : 0) // ms\n ),\n };\n }\n return null;\n}\nfunction parseObject(obj) {\n var duration = {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: obj.days || obj.day || 0,\n milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n (obj.seconds || obj.second || 0) * 1000 + // seconds\n (obj.milliseconds || obj.millisecond || obj.ms || 0), // ms\n };\n var weeks = obj.weeks || obj.week;\n if (weeks) {\n duration.days += weeks * 7;\n duration.specifiedWeeks = true;\n }\n return duration;\n}\n// Equality\nfunction durationsEqual(d0, d1) {\n return d0.years === d1.years &&\n d0.months === d1.months &&\n d0.days === d1.days &&\n d0.milliseconds === d1.milliseconds;\n}\nfunction asCleanDays(dur) {\n if (!dur.years && !dur.months && !dur.milliseconds) {\n return dur.days;\n }\n return 0;\n}\n// Simple Math\nfunction addDurations(d0, d1) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds,\n };\n}\nfunction subtractDurations(d1, d0) {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds,\n };\n}\nfunction multiplyDuration(d, n) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n,\n };\n}\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\nfunction asRoughYears(dur) {\n return asRoughDays(dur) / 365;\n}\nfunction asRoughMonths(dur) {\n return asRoughDays(dur) / 30;\n}\nfunction asRoughDays(dur) {\n return asRoughMs(dur) / 864e5;\n}\nfunction asRoughMinutes(dur) {\n return asRoughMs(dur) / (1000 * 60);\n}\nfunction asRoughSeconds(dur) {\n return asRoughMs(dur) / 1000;\n}\nfunction asRoughMs(dur) {\n return dur.years * (365 * 864e5) +\n dur.months * (30 * 864e5) +\n dur.days * 864e5 +\n dur.milliseconds;\n}\n// Advanced Math\nfunction wholeDivideDurations(numerator, denominator) {\n var res = null;\n for (var i = 0; i < INTERNAL_UNITS.length; i += 1) {\n var unit = INTERNAL_UNITS[i];\n if (denominator[unit]) {\n var localRes = numerator[unit] / denominator[unit];\n if (!isInt(localRes) || (res !== null && res !== localRes)) {\n return null;\n }\n res = localRes;\n }\n else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null;\n }\n }\n return res;\n}\nfunction greatestDurationDenominator(dur) {\n var ms = dur.milliseconds;\n if (ms) {\n if (ms % 1000 !== 0) {\n return { unit: 'millisecond', value: ms };\n }\n if (ms % (1000 * 60) !== 0) {\n return { unit: 'second', value: ms / 1000 };\n }\n if (ms % (1000 * 60 * 60) !== 0) {\n return { unit: 'minute', value: ms / (1000 * 60) };\n }\n if (ms) {\n return { unit: 'hour', value: ms / (1000 * 60 * 60) };\n }\n }\n if (dur.days) {\n if (dur.specifiedWeeks && dur.days % 7 === 0) {\n return { unit: 'week', value: dur.days / 7 };\n }\n return { unit: 'day', value: dur.days };\n }\n if (dur.months) {\n return { unit: 'month', value: dur.months };\n }\n if (dur.years) {\n return { unit: 'year', value: dur.years };\n }\n return { unit: 'millisecond', value: 0 };\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime) {\n if (stripZeroTime === void 0) { stripZeroTime = false; }\n var s = marker.toISOString();\n s = s.replace('.000', '');\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '');\n }\n if (s.length > 10) { // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n }\n else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n }\n // otherwise, its UTC-0 and we want to keep the Z\n }\n return s;\n}\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nfunction formatDayString(marker) {\n return marker.toISOString().replace(/T.*$/, '');\n}\n// TODO: use Date::toISOString and use everything after the T?\nfunction formatIsoTimeString(marker) {\n return padStart(marker.getUTCHours(), 2) + ':' +\n padStart(marker.getUTCMinutes(), 2) + ':' +\n padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes, doIso) {\n if (doIso === void 0) { doIso = false; }\n var sign = minutes < 0 ? '-' : '+';\n var abs = Math.abs(minutes);\n var hours = Math.floor(abs / 60);\n var mins = Math.round(abs % 60);\n if (doIso) {\n return sign + padStart(hours, 2) + \":\" + padStart(mins, 2);\n }\n return \"GMT\" + sign + hours + (mins ? \":\" + padStart(mins, 2) : '');\n}\n\n// TODO: new util arrayify?\nfunction removeExact(array, exactVal) {\n var removeCnt = 0;\n var i = 0;\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1);\n removeCnt += 1;\n }\n else {\n i += 1;\n }\n }\n return removeCnt;\n}\nfunction isArraysEqual(a0, a1, equalityFunc) {\n if (a0 === a1) {\n return true;\n }\n var len = a0.length;\n var i;\n if (len !== a1.length) { // not array? or not same length?\n return false;\n }\n for (i = 0; i < len; i += 1) {\n if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n var currentArgs;\n var currentRes;\n return function () {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (!currentArgs) {\n currentRes = workerFunc.apply(this, newArgs);\n }\n else if (!isArraysEqual(currentArgs, newArgs)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n var res = workerFunc.apply(this, newArgs);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArgs = newArgs;\n return currentRes;\n };\n}\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArg;\n var currentRes;\n return function (newArg) {\n if (!currentArg) {\n currentRes = workerFunc.call(_this, newArg);\n }\n else if (!isPropsEqual(currentArg, newArg)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n var res = workerFunc.call(_this, newArg);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArg = newArg;\n return currentRes;\n };\n}\nfunction memoizeArraylike(// used at all?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgSets = [];\n var currentResults = [];\n return function (newArgSets) {\n var currentLen = currentArgSets.length;\n var newLen = newArgSets.length;\n var i = 0;\n for (; i < currentLen; i += 1) {\n if (!newArgSets[i]) { // one of the old sets no longer exists\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n }\n else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n var res = workerFunc.apply(_this, newArgSets[i]);\n if (!resEquality || !resEquality(res, currentResults[i])) {\n currentResults[i] = res;\n }\n }\n }\n for (; i < newLen; i += 1) {\n currentResults[i] = workerFunc.apply(_this, newArgSets[i]);\n }\n currentArgSets = newArgSets;\n currentResults.splice(newLen); // remove excess\n return currentResults;\n };\n}\nfunction memoizeHashlike(workerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgHash = {};\n var currentResHash = {};\n return function (newArgHash) {\n var newResHash = {};\n for (var key in newArgHash) {\n if (!currentResHash[key]) {\n newResHash[key] = workerFunc.apply(_this, newArgHash[key]);\n }\n else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n if (teardownFunc) {\n teardownFunc(currentResHash[key]);\n }\n var res = workerFunc.apply(_this, newArgHash[key]);\n newResHash[key] = (resEquality && resEquality(res, currentResHash[key]))\n ? currentResHash[key]\n : res;\n }\n else {\n newResHash[key] = currentResHash[key];\n }\n }\n currentArgHash = newArgHash;\n currentResHash = newResHash;\n return newResHash;\n };\n}\n\nvar EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0,\n omitZeroMinute: 0,\n meridiem: 0,\n omitCommas: 0,\n};\nvar STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1,\n};\nvar MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nvar COMMA_RE = /,/g; // we need re for globalness\nvar MULTI_SPACE_RE = /\\s+/g;\nvar LTR_RE = /\\u200e/g; // control character\nvar UTC_RE = /UTC|GMT/;\nvar NativeFormatter = /** @class */ (function () {\n function NativeFormatter(formatSettings) {\n var standardDateProps = {};\n var extendedSettings = {};\n var severity = 0;\n for (var name_1 in formatSettings) {\n if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name_1] = formatSettings[name_1];\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);\n }\n else {\n standardDateProps[name_1] = formatSettings[name_1];\n if (name_1 in STANDARD_DATE_PROP_SEVERITIES) { // TODO: what about hour12? no severity\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);\n }\n }\n }\n this.standardDateProps = standardDateProps;\n this.extendedSettings = extendedSettings;\n this.severity = severity;\n this.buildFormattingFunc = memoize(buildFormattingFunc);\n }\n NativeFormatter.prototype.format = function (date, context) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n };\n NativeFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n var _a = this, standardDateProps = _a.standardDateProps, extendedSettings = _a.extendedSettings;\n var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n if (!diffSeverity) {\n return this.format(start, context);\n }\n var biggestUnitForPartial = diffSeverity;\n if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n }\n var full0 = this.format(start, context);\n var full1 = this.format(end, context);\n if (full0 === full1) {\n return full0;\n }\n var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n var partial0 = partialFormattingFunc(start);\n var partial1 = partialFormattingFunc(end);\n var insertion = findCommonInsertion(full0, partial0, full1, partial1);\n var separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after;\n }\n return full0 + separator + full1;\n };\n NativeFormatter.prototype.getLargestUnit = function () {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year';\n case 4:\n return 'month';\n case 3:\n return 'week';\n case 2:\n return 'day';\n default:\n return 'time'; // really?\n }\n };\n return NativeFormatter;\n}());\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n var standardDatePropCnt = Object.keys(standardDateProps).length;\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return function (date) { return (formatTimeZoneOffset(date.timeZoneOffset)); };\n }\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return function (date) { return (formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week)); };\n }\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n standardDateProps = __assign({}, standardDateProps); // copy\n extendedSettings = __assign({}, extendedSettings); // copy\n sanitizeSettings(standardDateProps, extendedSettings);\n standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n var zeroFormat; // needed?\n if (extendedSettings.omitZeroMinute) {\n var zeroProps = __assign({}, standardDateProps);\n delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n }\n return function (date) {\n var marker = date.marker;\n var format;\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat;\n }\n else {\n format = normalFormat;\n }\n var s = format.format(marker);\n return postProcess(s, date, standardDateProps, extendedSettings, context);\n };\n}\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit';\n }\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit';\n }\n }\n // only support short timezone names\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short';\n }\n // if requesting to display seconds, MUST display minutes\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute;\n }\n}\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n 'UTC' : // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset));\n }\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim();\n }\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n }\n // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim();\n }\n else if (extendedSettings.meridiem === 'narrow') { // a/p\n s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase(); });\n }\n else if (extendedSettings.meridiem === 'short') { // am/pm\n s = s.replace(MERIDIEM_RE, function (m0, m1) { return m1.toLocaleLowerCase() + \"m\"; });\n }\n else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, function (m0) { return m0.toLocaleLowerCase(); });\n }\n s = s.replace(MULTI_SPACE_RE, ' ');\n s = s.trim();\n return s;\n}\nfunction injectTzoStr(s, tzoStr) {\n var replaced = false;\n s = s.replace(UTC_RE, function () {\n replaced = true;\n return tzoStr;\n });\n // IE11 doesn't include UTC/GMT in the original string, so append to end\n if (!replaced) {\n s += \" \" + tzoStr;\n }\n return s;\n}\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n var parts = [];\n if (display === 'long') {\n parts.push(weekTextLong);\n }\n else if (display === 'short' || display === 'narrow') {\n parts.push(weekText);\n }\n if (display === 'long' || display === 'short') {\n parts.push(' ');\n }\n parts.push(locale.simpleNumberFormat.format(num));\n if (locale.options.direction === 'rtl') { // TODO: use control characters instead?\n parts.reverse();\n }\n return parts.join('');\n}\n// Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5;\n }\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4;\n }\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2;\n }\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1;\n }\n return 0;\n}\nfunction computePartialFormattingOptions(options, biggestUnit) {\n var partialOptions = {};\n for (var name_2 in options) {\n if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) {\n partialOptions[name_2] = options[name_2];\n }\n }\n return partialOptions;\n}\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n var i0 = 0;\n while (i0 < full0.length) {\n var found0 = full0.indexOf(partial0, i0);\n if (found0 === -1) {\n break;\n }\n var before0 = full0.substr(0, found0);\n i0 = found0 + partial0.length;\n var after0 = full0.substr(i0);\n var i1 = 0;\n while (i1 < full1.length) {\n var found1 = full1.indexOf(partial1, i1);\n if (found1 === -1) {\n break;\n }\n var before1 = full1.substr(0, found1);\n i1 = found1 + partial1.length;\n var after1 = full1.substr(i1);\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0,\n };\n }\n }\n }\n return null;\n}\n\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n var a = calendarSystem.markerToArray(dateInfo.marker);\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6],\n };\n}\n\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n var startInfo = expandZonedMarker(start, context.calendarSystem);\n var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n defaultSeparator: betterDefaultSeparator || context.defaultSeparator,\n };\n}\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nvar CmdFormatter = /** @class */ (function () {\n function CmdFormatter(cmdStr) {\n this.cmdStr = cmdStr;\n }\n CmdFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n CmdFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n return CmdFormatter;\n}());\n\nvar FuncFormatter = /** @class */ (function () {\n function FuncFormatter(func) {\n this.func = func;\n }\n FuncFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n FuncFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n return FuncFormatter;\n}());\n\nfunction createFormatter(input) {\n if (typeof input === 'object' && input) { // non-null object\n return new NativeFormatter(input);\n }\n if (typeof input === 'string') {\n return new CmdFormatter(input);\n }\n if (typeof input === 'function') {\n return new FuncFormatter(input);\n }\n return null;\n}\n\n// base options\n// ------------\nvar BASE_OPTION_REFINERS = {\n navLinkDayClick: identity,\n navLinkWeekClick: identity,\n duration: createDuration,\n bootstrapFontAwesome: identity,\n buttonIcons: identity,\n customButtons: identity,\n defaultAllDayEventDuration: createDuration,\n defaultTimedEventDuration: createDuration,\n nextDayThreshold: createDuration,\n scrollTime: createDuration,\n scrollTimeReset: Boolean,\n slotMinTime: createDuration,\n slotMaxTime: createDuration,\n dayPopoverFormat: createFormatter,\n slotDuration: createDuration,\n snapDuration: createDuration,\n headerToolbar: identity,\n footerToolbar: identity,\n defaultRangeSeparator: String,\n titleRangeSeparator: String,\n forceEventDuration: Boolean,\n dayHeaders: Boolean,\n dayHeaderFormat: createFormatter,\n dayHeaderClassNames: identity,\n dayHeaderContent: identity,\n dayHeaderDidMount: identity,\n dayHeaderWillUnmount: identity,\n dayCellClassNames: identity,\n dayCellContent: identity,\n dayCellDidMount: identity,\n dayCellWillUnmount: identity,\n initialView: String,\n aspectRatio: Number,\n weekends: Boolean,\n weekNumberCalculation: identity,\n weekNumbers: Boolean,\n weekNumberClassNames: identity,\n weekNumberContent: identity,\n weekNumberDidMount: identity,\n weekNumberWillUnmount: identity,\n editable: Boolean,\n viewClassNames: identity,\n viewDidMount: identity,\n viewWillUnmount: identity,\n nowIndicator: Boolean,\n nowIndicatorClassNames: identity,\n nowIndicatorContent: identity,\n nowIndicatorDidMount: identity,\n nowIndicatorWillUnmount: identity,\n showNonCurrentDates: Boolean,\n lazyFetching: Boolean,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n timeZone: String,\n locales: identity,\n locale: identity,\n themeSystem: String,\n dragRevertDuration: Number,\n dragScroll: Boolean,\n allDayMaintainDuration: Boolean,\n unselectAuto: Boolean,\n dropAccept: identity,\n eventOrder: parseFieldSpecs,\n eventOrderStrict: Boolean,\n handleWindowResize: Boolean,\n windowResizeDelay: Number,\n longPressDelay: Number,\n eventDragMinDistance: Number,\n expandRows: Boolean,\n height: identity,\n contentHeight: identity,\n direction: String,\n weekNumberFormat: createFormatter,\n eventResizableFromStart: Boolean,\n displayEventTime: Boolean,\n displayEventEnd: Boolean,\n weekText: String,\n weekTextLong: String,\n progressiveEventRendering: Boolean,\n businessHours: identity,\n initialDate: identity,\n now: identity,\n eventDataTransform: identity,\n stickyHeaderDates: identity,\n stickyFooterScrollbar: identity,\n viewHeight: identity,\n defaultAllDay: Boolean,\n eventSourceFailure: identity,\n eventSourceSuccess: identity,\n eventDisplay: String,\n eventStartEditable: Boolean,\n eventDurationEditable: Boolean,\n eventOverlap: identity,\n eventConstraint: identity,\n eventAllow: identity,\n eventBackgroundColor: String,\n eventBorderColor: String,\n eventTextColor: String,\n eventColor: String,\n eventClassNames: identity,\n eventContent: identity,\n eventDidMount: identity,\n eventWillUnmount: identity,\n selectConstraint: identity,\n selectOverlap: identity,\n selectAllow: identity,\n droppable: Boolean,\n unselectCancel: String,\n slotLabelFormat: identity,\n slotLaneClassNames: identity,\n slotLaneContent: identity,\n slotLaneDidMount: identity,\n slotLaneWillUnmount: identity,\n slotLabelClassNames: identity,\n slotLabelContent: identity,\n slotLabelDidMount: identity,\n slotLabelWillUnmount: identity,\n dayMaxEvents: identity,\n dayMaxEventRows: identity,\n dayMinWidth: Number,\n slotLabelInterval: createDuration,\n allDayText: String,\n allDayClassNames: identity,\n allDayContent: identity,\n allDayDidMount: identity,\n allDayWillUnmount: identity,\n slotMinWidth: Number,\n navLinks: Boolean,\n eventTimeFormat: createFormatter,\n rerenderDelay: Number,\n moreLinkText: identity,\n moreLinkHint: identity,\n selectMinDistance: Number,\n selectable: Boolean,\n selectLongPressDelay: Number,\n eventLongPressDelay: Number,\n selectMirror: Boolean,\n eventMaxStack: Number,\n eventMinHeight: Number,\n eventMinWidth: Number,\n eventShortHeight: Number,\n slotEventOverlap: Boolean,\n plugins: identity,\n firstDay: Number,\n dayCount: Number,\n dateAlignment: String,\n dateIncrement: createDuration,\n hiddenDays: identity,\n monthMode: Boolean,\n fixedWeekCount: Boolean,\n validRange: identity,\n visibleRange: identity,\n titleFormat: identity,\n eventInteractive: Boolean,\n // only used by list-view, but languages define the value, so we need it in base options\n noEventsText: String,\n viewHint: identity,\n navLinkHint: identity,\n closeHint: String,\n timeHint: String,\n eventHint: String,\n moreLinkClick: identity,\n moreLinkClassNames: identity,\n moreLinkContent: identity,\n moreLinkDidMount: identity,\n moreLinkWillUnmount: identity,\n};\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nvar BASE_OPTION_DEFAULTS = {\n eventDisplay: 'auto',\n defaultRangeSeparator: ' - ',\n titleRangeSeparator: ' \\u2013 ',\n defaultTimedEventDuration: '01:00:00',\n defaultAllDayEventDuration: { day: 1 },\n forceEventDuration: false,\n nextDayThreshold: '00:00:00',\n dayHeaders: true,\n initialView: '',\n aspectRatio: 1.35,\n headerToolbar: {\n start: 'title',\n center: '',\n end: 'today prev,next',\n },\n weekends: true,\n weekNumbers: false,\n weekNumberCalculation: 'local',\n editable: false,\n nowIndicator: false,\n scrollTime: '06:00:00',\n scrollTimeReset: true,\n slotMinTime: '00:00:00',\n slotMaxTime: '24:00:00',\n showNonCurrentDates: true,\n lazyFetching: true,\n startParam: 'start',\n endParam: 'end',\n timeZoneParam: 'timeZone',\n timeZone: 'local',\n locales: [],\n locale: '',\n themeSystem: 'standard',\n dragRevertDuration: 500,\n dragScroll: true,\n allDayMaintainDuration: false,\n unselectAuto: true,\n dropAccept: '*',\n eventOrder: 'start,-duration,allDay,title',\n dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n handleWindowResize: true,\n windowResizeDelay: 100,\n longPressDelay: 1000,\n eventDragMinDistance: 5,\n expandRows: false,\n navLinks: false,\n selectable: false,\n eventMinHeight: 15,\n eventMinWidth: 30,\n eventShortHeight: 30,\n};\n// calendar listeners\n// ------------------\nvar CALENDAR_LISTENER_REFINERS = {\n datesSet: identity,\n eventsSet: identity,\n eventAdd: identity,\n eventChange: identity,\n eventRemove: identity,\n windowResize: identity,\n eventClick: identity,\n eventMouseEnter: identity,\n eventMouseLeave: identity,\n select: identity,\n unselect: identity,\n loading: identity,\n // internal\n _unmount: identity,\n _beforeprint: identity,\n _afterprint: identity,\n _noEventDrop: identity,\n _noEventResize: identity,\n _resize: identity,\n _scrollRequest: identity,\n};\n// calendar-specific options\n// -------------------------\nvar CALENDAR_OPTION_REFINERS = {\n buttonText: identity,\n buttonHints: identity,\n views: identity,\n plugins: identity,\n initialEvents: identity,\n events: identity,\n eventSources: identity,\n};\nvar COMPLEX_OPTION_COMPARATORS = {\n headerToolbar: isMaybeObjectsEqual,\n footerToolbar: isMaybeObjectsEqual,\n buttonText: isMaybeObjectsEqual,\n buttonHints: isMaybeObjectsEqual,\n buttonIcons: isMaybeObjectsEqual,\n dateIncrement: isMaybeObjectsEqual,\n};\nfunction isMaybeObjectsEqual(a, b) {\n if (typeof a === 'object' && typeof b === 'object' && a && b) { // both non-null objects\n return isPropsEqual(a, b);\n }\n return a === b;\n}\n// view-specific options\n// ---------------------\nvar VIEW_OPTION_REFINERS = {\n type: String,\n component: identity,\n buttonText: String,\n buttonTextKey: String,\n dateProfileGeneratorClass: identity,\n usesMinMaxTime: Boolean,\n classNames: identity,\n content: identity,\n didMount: identity,\n willUnmount: identity,\n};\n// util funcs\n// ----------------------------------------------------------------------------------------------------\nfunction mergeRawOptions(optionSets) {\n return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\nfunction refineProps(input, refiners) {\n var refined = {};\n var extra = {};\n for (var propName in refiners) {\n if (propName in input) {\n refined[propName] = refiners[propName](input[propName]);\n }\n }\n for (var propName in input) {\n if (!(propName in refiners)) {\n extra[propName] = input[propName];\n }\n }\n return { refined: refined, extra: extra };\n}\nfunction identity(raw) {\n return raw;\n}\n\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange) {\n var eventStore = createEmptyEventStore();\n var eventRefiners = buildEventRefiners(context);\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners);\n if (tuple) {\n eventTupleToStore(tuple, eventStore);\n }\n }\n return eventStore;\n}\nfunction eventTupleToStore(tuple, eventStore) {\n if (eventStore === void 0) { eventStore = createEmptyEventStore(); }\n eventStore.defs[tuple.def.defId] = tuple.def;\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n }\n return eventStore;\n}\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nfunction getRelevantEvents(eventStore, instanceId) {\n var instance = eventStore.instances[instanceId];\n if (instance) {\n var def_1 = eventStore.defs[instance.defId];\n // get events/instances with same group\n var newStore = filterEventStoreDefs(eventStore, function (lookDef) { return isEventDefsGrouped(def_1, lookDef); });\n // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n newStore.defs[def_1.defId] = def_1;\n newStore.instances[instance.instanceId] = instance;\n return newStore;\n }\n return createEmptyEventStore();\n}\nfunction isEventDefsGrouped(def0, def1) {\n return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nfunction createEmptyEventStore() {\n return { defs: {}, instances: {} };\n}\nfunction mergeEventStores(store0, store1) {\n return {\n defs: __assign(__assign({}, store0.defs), store1.defs),\n instances: __assign(__assign({}, store0.instances), store1.instances),\n };\n}\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n var defs = filterHash(eventStore.defs, filterFunc);\n var instances = filterHash(eventStore.instances, function (instance) { return (defs[instance.defId] // still exists?\n ); });\n return { defs: defs, instances: instances };\n}\nfunction excludeSubEventStore(master, sub) {\n var defs = master.defs, instances = master.instances;\n var filteredDefs = {};\n var filteredInstances = {};\n for (var defId in defs) {\n if (!sub.defs[defId]) { // not explicitly excluded\n filteredDefs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n if (!sub.instances[instanceId] && // not explicitly excluded\n filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n ) {\n filteredInstances[instanceId] = instances[instanceId];\n }\n }\n return {\n defs: filteredDefs,\n instances: filteredInstances,\n };\n}\n\nfunction normalizeConstraint(input, context) {\n if (Array.isArray(input)) {\n return parseEvents(input, null, context, true); // allowOpenRange=true\n }\n if (typeof input === 'object' && input) { // non-null object\n return parseEvents([input], null, context, true); // allowOpenRange=true\n }\n if (input != null) {\n return String(input);\n }\n return null;\n}\n\nfunction parseClassNames(raw) {\n if (Array.isArray(raw)) {\n return raw;\n }\n if (typeof raw === 'string') {\n return raw.split(/\\s+/);\n }\n return [];\n}\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\nvar EVENT_UI_REFINERS = {\n display: String,\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: identity,\n overlap: identity,\n allow: identity,\n className: parseClassNames,\n classNames: parseClassNames,\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String,\n};\nvar EMPTY_EVENT_UI = {\n display: null,\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: [],\n};\nfunction createEventUi(refined, context) {\n var constraint = normalizeConstraint(refined.constraint, context);\n return {\n display: refined.display || null,\n startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: refined.overlap != null ? refined.overlap : null,\n allows: refined.allow != null ? [refined.allow] : [],\n backgroundColor: refined.backgroundColor || refined.color || '',\n borderColor: refined.borderColor || refined.color || '',\n textColor: refined.textColor || '',\n classNames: (refined.className || []).concat(refined.classNames || []), // join singular and plural\n };\n}\n// TODO: prevent against problems with <2 args!\nfunction combineEventUis(uis) {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction combineTwoEventUis(item0, item1) {\n return {\n display: item1.display != null ? item1.display : item0.display,\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames),\n };\n}\n\nvar EVENT_NON_DATE_REFINERS = {\n id: String,\n groupId: String,\n title: String,\n url: String,\n interactive: Boolean,\n};\nvar EVENT_DATE_REFINERS = {\n start: identity,\n end: identity,\n date: identity,\n allDay: Boolean,\n};\nvar EVENT_REFINERS = __assign(__assign(__assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity });\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners) {\n if (refiners === void 0) { refiners = buildEventRefiners(context); }\n var _a = refineEventDef(raw, context, refiners), refined = _a.refined, extra = _a.extra;\n var defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n var recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n if (recurringRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context);\n def.recurringDef = {\n typeId: recurringRes.typeId,\n typeData: recurringRes.typeData,\n duration: recurringRes.duration,\n };\n return { def: def, instance: null };\n }\n var singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n if (singleRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context);\n var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n return { def: def, instance: instance };\n }\n return null;\n}\nfunction refineEventDef(raw, context, refiners) {\n if (refiners === void 0) { refiners = buildEventRefiners(context); }\n return refineProps(raw, refiners);\n}\nfunction buildEventRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context) {\n var def = {\n title: refined.title || '',\n groupId: refined.groupId || '',\n publicId: refined.id || '',\n url: refined.url || '',\n recurringDef: null,\n defId: guid(),\n sourceId: sourceId,\n allDay: allDay,\n hasEnd: hasEnd,\n interactive: refined.interactive,\n ui: createEventUi(refined, context),\n extendedProps: __assign(__assign({}, (refined.extendedProps || {})), extra),\n };\n for (var _i = 0, _a = context.pluginHooks.eventDefMemberAdders; _i < _a.length; _i++) {\n var memberAdder = _a[_i];\n __assign(def, memberAdder(refined));\n }\n // help out EventApi from having user modify props\n Object.freeze(def.ui.classNames);\n Object.freeze(def.extendedProps);\n return def;\n}\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n var allDay = refined.allDay;\n var startMeta;\n var startMarker = null;\n var hasEnd = false;\n var endMeta;\n var endMarker = null;\n var startInput = refined.start != null ? refined.start : refined.date;\n startMeta = context.dateEnv.createMarkerMeta(startInput);\n if (startMeta) {\n startMarker = startMeta.marker;\n }\n else if (!allowOpenRange) {\n return null;\n }\n if (refined.end != null) {\n endMeta = context.dateEnv.createMarkerMeta(refined.end);\n }\n if (allDay == null) {\n if (defaultAllDay != null) {\n allDay = defaultAllDay;\n }\n else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n }\n if (allDay && startMarker) {\n startMarker = startOfDay(startMarker);\n }\n if (endMeta) {\n endMarker = endMeta.marker;\n if (allDay) {\n endMarker = startOfDay(endMarker);\n }\n if (startMarker && endMarker <= startMarker) {\n endMarker = null;\n }\n }\n if (endMarker) {\n hasEnd = true;\n }\n else if (!allowOpenRange) {\n hasEnd = context.options.forceEventDuration || false;\n endMarker = context.dateEnv.add(startMarker, allDay ?\n context.options.defaultAllDayEventDuration :\n context.options.defaultTimedEventDuration);\n }\n return {\n allDay: allDay,\n hasEnd: hasEnd,\n range: { start: startMarker, end: endMarker },\n forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n forcedEndTzo: endMeta ? endMeta.forcedTzo : null,\n };\n}\nfunction computeIsDefaultAllDay(eventSource, context) {\n var res = null;\n if (eventSource) {\n res = eventSource.defaultAllDay;\n }\n if (res == null) {\n res = context.options.defaultAllDay;\n }\n return res;\n}\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nfunction computeAlignedDayRange(timedRange) {\n var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n var start = startOfDay(timedRange.start);\n var end = addDays(start, dayCnt);\n return { start: start, end: end };\n}\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nfunction computeVisibleDayRange(timedRange, nextDayThreshold) {\n if (nextDayThreshold === void 0) { nextDayThreshold = createDuration(0); }\n var startDay = null;\n var endDay = null;\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end);\n var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1);\n }\n }\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1);\n }\n }\n return { start: startDay, end: endDay };\n}\n// spans from one day into another?\nfunction isMultiDayRange(range) {\n var visibleRange = computeVisibleDayRange(range);\n return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n }\n if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n }\n return diffDayAndTime(date0, date1); // returns a duration\n}\n\nfunction parseRange(input, dateEnv) {\n var start = null;\n var end = null;\n if (input.start) {\n start = dateEnv.createMarker(input.start);\n }\n if (input.end) {\n end = dateEnv.createMarker(input.end);\n }\n if (!start && !end) {\n return null;\n }\n if (start && end && end < start) {\n return null;\n }\n return { start: start, end: end };\n}\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nfunction invertRanges(ranges, constraintRange) {\n var invertedRanges = [];\n var start = constraintRange.start; // the end of the previous range. the start of the new range\n var i;\n var dateRange;\n // ranges need to be in order. required for our date-walking algorithm\n ranges.sort(compareRanges);\n for (i = 0; i < ranges.length; i += 1) {\n dateRange = ranges[i];\n // add the span of time before the event (if there is any)\n if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: dateRange.start });\n }\n if (dateRange.end > start) {\n start = dateRange.end;\n }\n }\n // add the span of time after the last event (if there is any)\n if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: constraintRange.end });\n }\n return invertedRanges;\n}\nfunction compareRanges(range0, range1) {\n return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nfunction intersectRanges(range0, range1) {\n var start = range0.start, end = range0.end;\n var newRange = null;\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n }\n else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n }\n }\n if (range1.end != null) {\n if (end === null) {\n end = range1.end;\n }\n else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n }\n }\n if (start === null || end === null || start < end) {\n newRange = { start: start, end: end };\n }\n return newRange;\n}\nfunction rangesEqual(range0, range1) {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\nfunction rangesIntersect(range0, range1) {\n return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n (range0.start === null || range1.end === null || range0.start < range1.end);\n}\nfunction rangeContainsRange(outerRange, innerRange) {\n return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));\n}\nfunction rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) &&\n (range.end === null || date < range.end);\n}\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nfunction constrainMarkerToRange(date, range) {\n if (range.start != null && date < range.start) {\n return range.start;\n }\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1);\n }\n return date;\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n var inverseBgByGroupId = {};\n var inverseBgByDefId = {};\n var defByGroupId = {};\n var bgRanges = [];\n var fgRanges = [];\n var eventUis = compileEventUis(eventStore.defs, eventUiBases);\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n var ui = eventUis[def.defId];\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = [];\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def;\n }\n }\n else {\n inverseBgByDefId[defId] = [];\n }\n }\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = eventStore.defs[instance.defId];\n var ui = eventUis[def.defId];\n var origRange = instance.range;\n var normalRange = (!def.allDay && nextDayThreshold) ?\n computeVisibleDayRange(origRange, nextDayThreshold) :\n origRange;\n var slicedRange = intersectRanges(normalRange, framingRange);\n if (slicedRange) {\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange);\n }\n else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\n }\n else if (ui.display !== 'none') {\n (ui.display === 'background' ? bgRanges : fgRanges).push({\n def: def,\n ui: ui,\n instance: instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf(),\n });\n }\n }\n }\n for (var groupId in inverseBgByGroupId) { // BY GROUP\n var ranges = inverseBgByGroupId[groupId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) {\n var invertedRange = invertedRanges_1[_i];\n var def = defByGroupId[groupId];\n var ui = eventUis[def.defId];\n bgRanges.push({\n def: def,\n ui: ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false,\n });\n }\n }\n for (var defId in inverseBgByDefId) {\n var ranges = inverseBgByDefId[defId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) {\n var invertedRange = invertedRanges_2[_a];\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false,\n });\n }\n }\n return { bg: bgRanges, fg: fgRanges };\n}\nfunction hasBgRendering(def) {\n return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\nfunction setElSeg(el, seg) {\n el.fcSeg = seg;\n}\nfunction getElSeg(el) {\n return el.fcSeg ||\n el.parentNode.fcSeg || // for the harness\n null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, function (eventDef) { return compileEventUi(eventDef, eventUiBases); });\n}\nfunction compileEventUi(eventDef, eventUiBases) {\n var uis = [];\n if (eventUiBases['']) {\n uis.push(eventUiBases['']);\n }\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId]);\n }\n uis.push(eventDef.ui);\n return combineEventUis(uis);\n}\nfunction sortEventSegs(segs, eventOrderSpecs) {\n var objs = segs.map(buildSegCompareObj);\n objs.sort(function (obj0, obj1) { return compareByFieldSpecs(obj0, obj1, eventOrderSpecs); });\n return objs.map(function (c) { return c._seg; });\n}\n// returns a object with all primitive props that can be compared\nfunction buildSegCompareObj(seg) {\n var eventRange = seg.eventRange;\n var eventDef = eventRange.def;\n var range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n var end = range.end ? range.end.valueOf() : 0; // \"\n return __assign(__assign(__assign({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start: start,\n end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg });\n}\nfunction computeSegDraggable(seg, context) {\n var pluginHooks = context.pluginHooks;\n var transformers = pluginHooks.isDraggableTransformers;\n var _a = seg.eventRange, def = _a.def, ui = _a.ui;\n var val = ui.startEditable;\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n val = transformer(val, def, ui, context);\n }\n return val;\n}\nfunction computeSegStartResizable(seg, context) {\n return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\nfunction computeSegEndResizable(seg, context) {\n return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime, // defaults to true\ndefaultDisplayEventEnd, // defaults to true\nstartOverride, endOverride) {\n var dateEnv = context.dateEnv, options = context.options;\n var displayEventTime = options.displayEventTime, displayEventEnd = options.displayEventEnd;\n var eventDef = seg.eventRange.def;\n var eventInstance = seg.eventRange.instance;\n if (displayEventTime == null) {\n displayEventTime = defaultDisplayEventTime !== false;\n }\n if (displayEventEnd == null) {\n displayEventEnd = defaultDisplayEventEnd !== false;\n }\n var wholeEventStart = eventInstance.range.start;\n var wholeEventEnd = eventInstance.range.end;\n var segStart = startOverride || seg.start || seg.eventRange.range.start;\n var segEnd = endOverride || seg.end || seg.eventRange.range.end;\n var isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n var isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n segStart = isStartDay ? wholeEventStart : segStart;\n segEnd = isEndDay ? wholeEventEnd : segEnd;\n if (displayEventEnd && eventDef.hasEnd) {\n return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo,\n });\n }\n return dateEnv.format(segStart, timeFormat, {\n forcedTzo: startOverride ? null : eventInstance.forcedStartTzo, // nooooo, same\n });\n }\n return '';\n}\nfunction getSegMeta(seg, todayRange, nowDate) {\n var segRange = seg.eventRange.range;\n return {\n isPast: segRange.end < (nowDate || todayRange.start),\n isFuture: segRange.start >= (nowDate || todayRange.end),\n isToday: todayRange && rangeContainsMarker(todayRange, segRange.start),\n };\n}\nfunction getEventClassNames(props) {\n var classNames = ['fc-event'];\n if (props.isMirror) {\n classNames.push('fc-event-mirror');\n }\n if (props.isDraggable) {\n classNames.push('fc-event-draggable');\n }\n if (props.isStartResizable || props.isEndResizable) {\n classNames.push('fc-event-resizable');\n }\n if (props.isDragging) {\n classNames.push('fc-event-dragging');\n }\n if (props.isResizing) {\n classNames.push('fc-event-resizing');\n }\n if (props.isSelected) {\n classNames.push('fc-event-selected');\n }\n if (props.isStart) {\n classNames.push('fc-event-start');\n }\n if (props.isEnd) {\n classNames.push('fc-event-end');\n }\n if (props.isPast) {\n classNames.push('fc-event-past');\n }\n if (props.isToday) {\n classNames.push('fc-event-today');\n }\n if (props.isFuture) {\n classNames.push('fc-event-future');\n }\n return classNames;\n}\nfunction buildEventRangeKey(eventRange) {\n return eventRange.instance\n ? eventRange.instance.instanceId\n : eventRange.def.defId + \":\" + eventRange.range.start.toISOString();\n // inverse-background events don't have specific instances. TODO: better solution\n}\nfunction getSegAnchorAttrs(seg, context) {\n var _a = seg.eventRange, def = _a.def, instance = _a.instance;\n var url = def.url;\n if (url) {\n return { href: url };\n }\n var emitter = context.emitter, options = context.options;\n var eventInteractive = options.eventInteractive;\n if (eventInteractive == null) {\n eventInteractive = def.interactive;\n if (eventInteractive == null) {\n eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n }\n }\n // mock what happens in EventClicking\n if (eventInteractive) {\n // only attach keyboard-related handlers because click handler is already done in EventClicking\n return createAriaKeyboardAttrs(function (ev) {\n emitter.trigger('eventClick', {\n el: ev.target,\n event: new EventApi(context, def, instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n });\n }\n return {};\n}\n\nvar STANDARD_PROPS = {\n start: identity,\n end: identity,\n allDay: Boolean,\n};\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n var span = parseOpenDateSpan(raw, dateEnv);\n var range = span.range;\n if (!range.start) {\n return null;\n }\n if (!range.end) {\n if (defaultDuration == null) {\n return null;\n }\n range.end = dateEnv.add(range.start, defaultDuration);\n }\n return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nfunction parseOpenDateSpan(raw, dateEnv) {\n var _a = refineProps(raw, STANDARD_PROPS), standardProps = _a.refined, extra = _a.extra;\n var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n var allDay = standardProps.allDay;\n if (allDay == null) {\n allDay = (startMeta && startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n return __assign({ range: {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null,\n }, allDay: allDay }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) &&\n span0.allDay === span1.allDay &&\n isSpanPropsEqual(span0, span1);\n}\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0, span1) {\n for (var propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false;\n }\n }\n }\n // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n for (var propName in span0) {\n if (!(propName in span1)) {\n return false;\n }\n }\n return true;\n}\nfunction buildDateSpanApi(span, dateEnv) {\n return __assign(__assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), { allDay: span.allDay });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n return __assign(__assign({}, buildRangeApi(range, dateEnv, omitTime)), { timeZone: dateEnv.timeZone });\n}\nfunction buildRangeApi(range, dateEnv, omitTime) {\n return {\n start: dateEnv.toDate(range.start),\n end: dateEnv.toDate(range.end),\n startStr: dateEnv.formatIso(range.start, { omitTime: omitTime }),\n endStr: dateEnv.formatIso(range.end, { omitTime: omitTime }),\n };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n var res = refineEventDef({ editable: false }, context);\n var def = parseEventDef(res.refined, res.extra, '', // sourceId\n dateSpan.allDay, true, // hasEnd\n context);\n return {\n def: def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true,\n };\n}\n\nfunction triggerDateSelect(selection, pev, context) {\n context.emitter.trigger('select', __assign(__assign({}, buildDateSpanApiWithContext(selection, context)), { jsEvent: pev ? pev.origEvent : null, view: context.viewApi || context.calendarApi.view }));\n}\nfunction triggerDateUnselect(pev, context) {\n context.emitter.trigger('unselect', {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view,\n });\n}\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n var props = {};\n for (var _i = 0, _a = context.pluginHooks.dateSpanTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(props, transform(dateSpan, context));\n }\n __assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n return props;\n}\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nfunction getDefaultEventEnd(allDay, marker, context) {\n var dateEnv = context.dateEnv, options = context.options;\n var end = marker;\n if (allDay) {\n end = startOfDay(end);\n end = dateEnv.add(end, options.defaultAllDayEventDuration);\n }\n else {\n end = dateEnv.add(end, options.defaultTimedEventDuration);\n }\n return end;\n}\n\n// applies the mutation to ALL defs/instances within the event store\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n var dest = createEmptyEventStore();\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = dest.defs[instance.defId]; // important to grab the newly modified def\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n }\n return dest;\n}\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n var standardProps = mutation.standardProps || {};\n // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n if (standardProps.hasEnd == null &&\n eventConfig.durationEditable &&\n (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n var copy = __assign(__assign(__assign({}, eventDef), standardProps), { ui: __assign(__assign({}, eventDef.ui), standardProps.ui) });\n if (mutation.extendedProps) {\n copy.extendedProps = __assign(__assign({}, copy.extendedProps), mutation.extendedProps);\n }\n for (var _i = 0, _a = context.pluginHooks.eventDefMutationAppliers; _i < _a.length; _i++) {\n var applier = _a[_i];\n applier(copy, mutation, context);\n }\n if (!copy.hasEnd && context.options.forceEventDuration) {\n copy.hasEnd = true;\n }\n return copy;\n}\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n var dateEnv = context.dateEnv;\n var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n var copy = __assign({}, eventInstance);\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range);\n }\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta),\n };\n }\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end,\n };\n }\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta),\n };\n }\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context),\n };\n }\n // in case event was all-day but the supplied deltas were not\n // better util for this?\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end),\n };\n }\n // handle invalid durations\n if (copy.range.end < copy.range.start) {\n copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n }\n return copy;\n}\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\nvar ViewApi = /** @class */ (function () {\n function ViewApi(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n Object.defineProperty(ViewApi.prototype, \"calendar\", {\n get: function () {\n return this.getCurrentData().calendarApi;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"title\", {\n get: function () {\n return this.getCurrentData().viewTitle;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeStart\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeEnd\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentStart\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentEnd\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n },\n enumerable: false,\n configurable: true\n });\n ViewApi.prototype.getOption = function (name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n };\n return ViewApi;\n}());\n\nvar EVENT_SOURCE_REFINERS = {\n id: String,\n defaultAllDay: Boolean,\n url: String,\n format: String,\n events: identity,\n eventDataTransform: identity,\n // for any network-related sources\n success: identity,\n failure: identity,\n};\nfunction parseEventSource(raw, context, refiners) {\n if (refiners === void 0) { refiners = buildEventSourceRefiners(context); }\n var rawObj;\n if (typeof raw === 'string') {\n rawObj = { url: raw };\n }\n else if (typeof raw === 'function' || Array.isArray(raw)) {\n rawObj = { events: raw };\n }\n else if (typeof raw === 'object' && raw) { // not null\n rawObj = raw;\n }\n if (rawObj) {\n var _a = refineProps(rawObj, refiners), refined = _a.refined, extra = _a.extra;\n var metaRes = buildEventSourceMeta(refined, context);\n if (metaRes) {\n return {\n _raw: raw,\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n defaultAllDay: refined.defaultAllDay,\n eventDataTransform: refined.eventDataTransform,\n success: refined.success,\n failure: refined.failure,\n publicId: refined.id || '',\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n ui: createEventUi(refined, context),\n extendedProps: extra,\n };\n }\n }\n return null;\n}\nfunction buildEventSourceRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\nfunction buildEventSourceMeta(raw, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n for (var i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n var def = defs[i];\n var meta = def.parseMeta(raw);\n if (meta) {\n return { sourceDefId: i, meta: meta };\n }\n }\n return null;\n}\n\nfunction reduceCurrentDate(currentDate, action) {\n switch (action.type) {\n case 'CHANGE_DATE':\n return action.dateMarker;\n default:\n return currentDate;\n }\n}\nfunction getInitialDate(options, dateEnv) {\n var initialDateInput = options.initialDate;\n // compute the initial ambig-timezone date\n if (initialDateInput != null) {\n return dateEnv.createMarker(initialDateInput);\n }\n return getNow(options.now, dateEnv); // getNow already returns unzoned\n}\nfunction getNow(nowInput, dateEnv) {\n if (typeof nowInput === 'function') {\n nowInput = nowInput();\n }\n if (nowInput == null) {\n return dateEnv.createNowMarker();\n }\n return dateEnv.createMarker(nowInput);\n}\n\nvar CalendarApi = /** @class */ (function () {\n function CalendarApi() {\n }\n CalendarApi.prototype.getCurrentData = function () {\n return this.currentDataManager.getCurrentData();\n };\n CalendarApi.prototype.dispatch = function (action) {\n return this.currentDataManager.dispatch(action);\n };\n Object.defineProperty(CalendarApi.prototype, \"view\", {\n get: function () { return this.getCurrentData().viewApi; } // for public API\n ,\n enumerable: false,\n configurable: true\n });\n CalendarApi.prototype.batchRendering = function (callback) {\n callback();\n };\n CalendarApi.prototype.updateSize = function () {\n this.trigger('_resize', true);\n };\n // Options\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.setOption = function (name, val) {\n this.dispatch({\n type: 'SET_OPTION',\n optionName: name,\n rawOptionValue: val,\n });\n };\n CalendarApi.prototype.getOption = function (name) {\n return this.currentDataManager.currentCalendarOptionsInput[name];\n };\n CalendarApi.prototype.getAvailableLocaleCodes = function () {\n return Object.keys(this.getCurrentData().availableRawLocales);\n };\n // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.on = function (handlerName, handler) {\n var currentDataManager = this.currentDataManager;\n if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n currentDataManager.emitter.on(handlerName, handler);\n }\n else {\n console.warn(\"Unknown listener name '\" + handlerName + \"'\");\n }\n };\n CalendarApi.prototype.off = function (handlerName, handler) {\n this.currentDataManager.emitter.off(handlerName, handler);\n };\n // not meant for public use\n CalendarApi.prototype.trigger = function (handlerName) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n (_a = this.currentDataManager.emitter).trigger.apply(_a, __spreadArray([handlerName], args));\n };\n // View\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.changeView = function (viewType, dateOrRange) {\n var _this = this;\n this.batchRendering(function () {\n _this.unselect();\n if (dateOrRange) {\n if (dateOrRange.start && dateOrRange.end) { // a range\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n });\n _this.dispatch({\n type: 'SET_OPTION',\n optionName: 'visibleRange',\n rawOptionValue: dateOrRange,\n });\n }\n else {\n var dateEnv = _this.getCurrentData().dateEnv;\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n dateMarker: dateEnv.createMarker(dateOrRange),\n });\n }\n }\n else {\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n });\n }\n });\n };\n // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n CalendarApi.prototype.zoomTo = function (dateMarker, viewType) {\n var state = this.getCurrentData();\n var spec;\n viewType = viewType || 'day'; // day is default zoom\n spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n this.unselect();\n if (spec) {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: spec.type,\n dateMarker: dateMarker,\n });\n }\n else {\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: dateMarker,\n });\n }\n };\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n CalendarApi.prototype.getUnitViewSpec = function (unit) {\n var _a = this.getCurrentData(), viewSpecs = _a.viewSpecs, toolbarConfig = _a.toolbarConfig;\n var viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n var i;\n var spec;\n for (var viewType in viewSpecs) {\n viewTypes.push(viewType);\n }\n for (i = 0; i < viewTypes.length; i += 1) {\n spec = viewSpecs[viewTypes[i]];\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec;\n }\n }\n }\n return null;\n };\n // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.prev = function () {\n this.unselect();\n this.dispatch({ type: 'PREV' });\n };\n CalendarApi.prototype.next = function () {\n this.unselect();\n this.dispatch({ type: 'NEXT' });\n };\n CalendarApi.prototype.prevYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, -1),\n });\n };\n CalendarApi.prototype.nextYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, 1),\n });\n };\n CalendarApi.prototype.today = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: getNow(state.calendarOptions.now, state.dateEnv),\n });\n };\n CalendarApi.prototype.gotoDate = function (zonedDateInput) {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.createMarker(zonedDateInput),\n });\n };\n CalendarApi.prototype.incrementDate = function (deltaInput) {\n var state = this.getCurrentData();\n var delta = createDuration(deltaInput);\n if (delta) { // else, warn about invalid input?\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.add(state.currentDate, delta),\n });\n }\n };\n // for external API\n CalendarApi.prototype.getDate = function () {\n var state = this.getCurrentData();\n return state.dateEnv.toDate(state.currentDate);\n };\n // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.formatDate = function (d, formatter) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n };\n // `settings` is for formatter AND isEndExclusive\n CalendarApi.prototype.formatRange = function (d0, d1, settings) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n };\n CalendarApi.prototype.formatIso = function (d, omitTime) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime });\n };\n // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n // this public method receives start/end dates in any format, with any timezone\n // NOTE: args were changed from v3\n CalendarApi.prototype.select = function (dateOrObj, endDate) {\n var selectionInput;\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj;\n }\n else {\n selectionInput = {\n start: dateOrObj,\n end: null,\n };\n }\n }\n else {\n selectionInput = {\n start: dateOrObj,\n end: endDate,\n };\n }\n var state = this.getCurrentData();\n var selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 }));\n if (selection) { // throw parse error otherwise?\n this.dispatch({ type: 'SELECT_DATES', selection: selection });\n triggerDateSelect(selection, null, state);\n }\n };\n // public method\n CalendarApi.prototype.unselect = function (pev) {\n var state = this.getCurrentData();\n if (state.dateSelection) {\n this.dispatch({ type: 'UNSELECT_DATES' });\n triggerDateUnselect(pev, state);\n }\n };\n // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.addEvent = function (eventInput, sourceInput) {\n if (eventInput instanceof EventApi) {\n var def = eventInput._def;\n var instance = eventInput._instance;\n var currentData = this.getCurrentData();\n // not already present? don't want to add an old snapshot\n if (!currentData.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({ def: def, instance: instance }), // TODO: better util for two args?\n });\n this.triggerEventAdd(eventInput);\n }\n return eventInput;\n }\n var state = this.getCurrentData();\n var eventSource;\n if (sourceInput instanceof EventSourceApi) {\n eventSource = sourceInput.internalEventSource;\n }\n else if (typeof sourceInput === 'boolean') {\n if (sourceInput) { // true. part of the first event source\n eventSource = hashValuesToArray(state.eventSources)[0];\n }\n }\n else if (sourceInput != null) { // an ID. accepts a number too\n var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n if (!sourceApi) {\n console.warn(\"Could not find an event source with ID \\\"\" + sourceInput + \"\\\"\"); // TODO: test\n return null;\n }\n eventSource = sourceApi.internalEventSource;\n }\n var tuple = parseEvent(eventInput, eventSource, state, false);\n if (tuple) {\n var newEventApi = new EventApi(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple),\n });\n this.triggerEventAdd(newEventApi);\n return newEventApi;\n }\n return null;\n };\n CalendarApi.prototype.triggerEventAdd = function (eventApi) {\n var _this = this;\n var emitter = this.getCurrentData().emitter;\n emitter.trigger('eventAdd', {\n event: eventApi,\n relatedEvents: [],\n revert: function () {\n _this.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: eventApiToStore(eventApi),\n });\n },\n });\n };\n // TODO: optimize\n CalendarApi.prototype.getEventById = function (id) {\n var state = this.getCurrentData();\n var _a = state.eventStore, defs = _a.defs, instances = _a.instances;\n id = String(id);\n for (var defId in defs) {\n var def = defs[defId];\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventApi(state, def, null);\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n if (instance.defId === def.defId) {\n return new EventApi(state, def, instance);\n }\n }\n }\n }\n return null;\n };\n CalendarApi.prototype.getEvents = function () {\n var currentData = this.getCurrentData();\n return buildEventApis(currentData.eventStore, currentData);\n };\n CalendarApi.prototype.removeAllEvents = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENTS' });\n };\n // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.getEventSources = function () {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n var sourceApis = [];\n for (var internalId in sourceHash) {\n sourceApis.push(new EventSourceApi(state, sourceHash[internalId]));\n }\n return sourceApis;\n };\n CalendarApi.prototype.getEventSourceById = function (id) {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n id = String(id);\n for (var sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceApi(state, sourceHash[sourceId]);\n }\n }\n return null;\n };\n CalendarApi.prototype.addEventSource = function (sourceInput) {\n var state = this.getCurrentData();\n if (sourceInput instanceof EventSourceApi) {\n // not already present? don't want to add an old snapshot\n if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource],\n });\n }\n return sourceInput;\n }\n var eventSource = parseEventSource(sourceInput, state);\n if (eventSource) { // TODO: error otherwise?\n this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });\n return new EventSourceApi(state, eventSource);\n }\n return null;\n };\n CalendarApi.prototype.removeAllEventSources = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });\n };\n CalendarApi.prototype.refetchEvents = function () {\n this.dispatch({ type: 'FETCH_EVENT_SOURCES', isRefetch: true });\n };\n // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.scrollToTime = function (timeInput) {\n var time = createDuration(timeInput);\n if (time) {\n this.trigger('_scrollRequest', { time: time });\n }\n };\n return CalendarApi;\n}());\n\nvar EventApi = /** @class */ (function () {\n // instance will be null if expressing a recurring event that has no current instances,\n // OR if trying to validate an incoming external event that has no dates assigned\n function EventApi(context, def, instance) {\n this._context = context;\n this._def = def;\n this._instance = instance || null;\n }\n /*\n TODO: make event struct more responsible for this\n */\n EventApi.prototype.setProp = function (name, val) {\n var _a, _b;\n if (name in EVENT_DATE_REFINERS) {\n console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.');\n // TODO: make proper aliasing system?\n }\n else if (name === 'id') {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: { publicId: val }, // hardcoded internal name\n });\n }\n else if (name in EVENT_NON_DATE_REFINERS) {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: (_a = {}, _a[name] = val, _a),\n });\n }\n else if (name in EVENT_UI_REFINERS) {\n var ui = EVENT_UI_REFINERS[name](val);\n if (name === 'color') {\n ui = { backgroundColor: val, borderColor: val };\n }\n else if (name === 'editable') {\n ui = { startEditable: val, durationEditable: val };\n }\n else {\n ui = (_b = {}, _b[name] = val, _b);\n }\n this.mutate({\n standardProps: { ui: ui },\n });\n }\n else {\n console.warn(\"Could not set prop '\" + name + \"'. Use setExtendedProp instead.\");\n }\n };\n EventApi.prototype.setExtendedProp = function (name, val) {\n var _a;\n this.mutate({\n extendedProps: (_a = {}, _a[name] = val, _a),\n });\n };\n EventApi.prototype.setStart = function (startInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var start = dateEnv.createMarker(startInput);\n if (start && this._instance) { // TODO: warning if parsed bad\n var instanceRange = this._instance.range;\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n if (options.maintainDuration) {\n this.mutate({ datesDelta: startDelta });\n }\n else {\n this.mutate({ startDelta: startDelta });\n }\n }\n };\n EventApi.prototype.setEnd = function (endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var end;\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) {\n return; // TODO: warning if parsed bad\n }\n }\n if (this._instance) {\n if (end) {\n var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n this.mutate({ endDelta: endDelta });\n }\n else {\n this.mutate({ standardProps: { hasEnd: false } });\n }\n }\n };\n EventApi.prototype.setDates = function (startInput, endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._context.dateEnv;\n var standardProps = { allDay: options.allDay };\n var start = dateEnv.createMarker(startInput);\n var end;\n if (!start) {\n return; // TODO: warning if parsed bad\n }\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) { // TODO: warning if parsed bad\n return;\n }\n }\n if (this._instance) {\n var instanceRange = this._instance.range;\n // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange);\n }\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n if (end) {\n var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n else {\n this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps });\n }\n }\n else { // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n }\n };\n EventApi.prototype.moveStart = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ startDelta: delta });\n }\n };\n EventApi.prototype.moveEnd = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ endDelta: delta });\n }\n };\n EventApi.prototype.moveDates = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ datesDelta: delta });\n }\n };\n EventApi.prototype.setAllDay = function (allDay, options) {\n if (options === void 0) { options = {}; }\n var standardProps = { allDay: allDay };\n var maintainDuration = options.maintainDuration;\n if (maintainDuration == null) {\n maintainDuration = this._context.options.allDayMaintainDuration;\n }\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration;\n }\n this.mutate({ standardProps: standardProps });\n };\n EventApi.prototype.formatRange = function (formatInput) {\n var dateEnv = this._context.dateEnv;\n var instance = this._instance;\n var formatter = createFormatter(formatInput);\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo,\n });\n }\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo,\n });\n };\n EventApi.prototype.mutate = function (mutation) {\n var instance = this._instance;\n if (instance) {\n var def = this._def;\n var context_1 = this._context;\n var eventStore_1 = context_1.getCurrentData().eventStore;\n var relevantEvents = getRelevantEvents(eventStore_1, instance.instanceId);\n var eventConfigBase = {\n '': {\n display: '',\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: [],\n },\n };\n relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context_1);\n var oldEvent = new EventApi(context_1, def, instance); // snapshot\n this._def = relevantEvents.defs[def.defId];\n this._instance = relevantEvents.instances[instance.instanceId];\n context_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents,\n });\n context_1.emitter.trigger('eventChange', {\n oldEvent: oldEvent,\n event: this,\n relatedEvents: buildEventApis(relevantEvents, context_1, instance),\n revert: function () {\n context_1.dispatch({\n type: 'RESET_EVENTS',\n eventStore: eventStore_1,\n });\n },\n });\n }\n };\n EventApi.prototype.remove = function () {\n var context = this._context;\n var asStore = eventApiToStore(this);\n context.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: asStore,\n });\n context.emitter.trigger('eventRemove', {\n event: this,\n relatedEvents: [],\n revert: function () {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: asStore,\n });\n },\n });\n };\n Object.defineProperty(EventApi.prototype, \"source\", {\n get: function () {\n var sourceId = this._def.sourceId;\n if (sourceId) {\n return new EventSourceApi(this._context, this._context.getCurrentData().eventSources[sourceId]);\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"start\", {\n get: function () {\n return this._instance ?\n this._context.dateEnv.toDate(this._instance.range.start) :\n null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"end\", {\n get: function () {\n return (this._instance && this._def.hasEnd) ?\n this._context.dateEnv.toDate(this._instance.range.end) :\n null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startStr\", {\n get: function () {\n var instance = this._instance;\n if (instance) {\n return this._context.dateEnv.formatIso(instance.range.start, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedStartTzo,\n });\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"endStr\", {\n get: function () {\n var instance = this._instance;\n if (instance && this._def.hasEnd) {\n return this._context.dateEnv.formatIso(instance.range.end, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedEndTzo,\n });\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"id\", {\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get: function () { return this._def.publicId; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"groupId\", {\n get: function () { return this._def.groupId; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allDay\", {\n get: function () { return this._def.allDay; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"title\", {\n get: function () { return this._def.title; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"url\", {\n get: function () { return this._def.url; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"display\", {\n get: function () { return this._def.ui.display || 'auto'; } // bad. just normalize the type earlier\n ,\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startEditable\", {\n get: function () { return this._def.ui.startEditable; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"durationEditable\", {\n get: function () { return this._def.ui.durationEditable; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"constraint\", {\n get: function () { return this._def.ui.constraints[0] || null; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"overlap\", {\n get: function () { return this._def.ui.overlap; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allow\", {\n get: function () { return this._def.ui.allows[0] || null; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"backgroundColor\", {\n get: function () { return this._def.ui.backgroundColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"borderColor\", {\n get: function () { return this._def.ui.borderColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"textColor\", {\n get: function () { return this._def.ui.textColor; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"classNames\", {\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get: function () { return this._def.ui.classNames; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"extendedProps\", {\n get: function () { return this._def.extendedProps; },\n enumerable: false,\n configurable: true\n });\n EventApi.prototype.toPlainObject = function (settings) {\n if (settings === void 0) { settings = {}; }\n var def = this._def;\n var ui = def.ui;\n var _a = this, startStr = _a.startStr, endStr = _a.endStr;\n var res = {};\n if (def.title) {\n res.title = def.title;\n }\n if (startStr) {\n res.start = startStr;\n }\n if (endStr) {\n res.end = endStr;\n }\n if (def.publicId) {\n res.id = def.publicId;\n }\n if (def.groupId) {\n res.groupId = def.groupId;\n }\n if (def.url) {\n res.url = def.url;\n }\n if (ui.display && ui.display !== 'auto') {\n res.display = ui.display;\n }\n // TODO: what about recurring-event properties???\n // TODO: include startEditable/durationEditable/constraint/overlap/allow\n if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.color = ui.backgroundColor;\n }\n else {\n if (ui.backgroundColor) {\n res.backgroundColor = ui.backgroundColor;\n }\n if (ui.borderColor) {\n res.borderColor = ui.borderColor;\n }\n }\n if (ui.textColor) {\n res.textColor = ui.textColor;\n }\n if (ui.classNames.length) {\n res.classNames = ui.classNames;\n }\n if (Object.keys(def.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n __assign(res, def.extendedProps);\n }\n else {\n res.extendedProps = def.extendedProps;\n }\n }\n return res;\n };\n EventApi.prototype.toJSON = function () {\n return this.toPlainObject();\n };\n return EventApi;\n}());\nfunction eventApiToStore(eventApi) {\n var _a, _b;\n var def = eventApi._def;\n var instance = eventApi._instance;\n return {\n defs: (_a = {}, _a[def.defId] = def, _a),\n instances: instance\n ? (_b = {}, _b[instance.instanceId] = instance, _b) : {},\n };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n var defs = eventStore.defs, instances = eventStore.instances;\n var eventApis = [];\n var excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n for (var id in instances) {\n var instance = instances[id];\n var def = defs[instance.defId];\n if (instance.instanceId !== excludeInstanceId) {\n eventApis.push(new EventApi(context, def, instance));\n }\n }\n return eventApis;\n}\n\nvar calendarSystemClassMap = {};\nfunction registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass;\n}\nfunction createCalendarSystem(name) {\n return new calendarSystemClassMap[name]();\n}\nvar GregorianCalendarSystem = /** @class */ (function () {\n function GregorianCalendarSystem() {\n }\n GregorianCalendarSystem.prototype.getMarkerYear = function (d) {\n return d.getUTCFullYear();\n };\n GregorianCalendarSystem.prototype.getMarkerMonth = function (d) {\n return d.getUTCMonth();\n };\n GregorianCalendarSystem.prototype.getMarkerDay = function (d) {\n return d.getUTCDate();\n };\n GregorianCalendarSystem.prototype.arrayToMarker = function (arr) {\n return arrayToUtcDate(arr);\n };\n GregorianCalendarSystem.prototype.markerToArray = function (marker) {\n return dateToUtcArray(marker);\n };\n return GregorianCalendarSystem;\n}());\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\n\nvar ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nfunction parse(str) {\n var m = ISO_RE.exec(str);\n if (m) {\n var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(\"0.\" + m[12]) * 1000 : 0));\n if (isValidDate(marker)) {\n var timeZoneOffset = null;\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 +\n Number(m[18] || 0));\n }\n return {\n marker: marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset: timeZoneOffset,\n };\n }\n }\n return null;\n}\n\nvar DateEnv = /** @class */ (function () {\n function DateEnv(settings) {\n var timeZone = this.timeZone = settings.timeZone;\n var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n }\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n this.locale = settings.locale;\n this.weekDow = settings.locale.week.dow;\n this.weekDoy = settings.locale.week.doy;\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1;\n this.weekDoy = 4;\n }\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay;\n }\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation;\n }\n this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n this.cmdFormatter = settings.cmdFormatter;\n this.defaultSeparator = settings.defaultSeparator;\n }\n // Creating / Parsing\n DateEnv.prototype.createMarker = function (input) {\n var meta = this.createMarkerMeta(input);\n if (meta === null) {\n return null;\n }\n return meta.marker;\n };\n DateEnv.prototype.createNowMarker = function () {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf());\n }\n // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n return arrayToUtcDate(dateToLocalArray(new Date()));\n };\n DateEnv.prototype.createMarkerMeta = function (input) {\n if (typeof input === 'string') {\n return this.parse(input);\n }\n var marker = null;\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input);\n }\n else if (input instanceof Date) {\n input = input.valueOf();\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n }\n else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n return { marker: marker, isTimeUnspecified: false, forcedTzo: null };\n };\n DateEnv.prototype.parse = function (s) {\n var parts = parse(s);\n if (parts === null) {\n return null;\n }\n var marker = parts.marker;\n var forcedTzo = null;\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n }\n else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo };\n };\n // Accessors\n DateEnv.prototype.getYear = function (marker) {\n return this.calendarSystem.getMarkerYear(marker);\n };\n DateEnv.prototype.getMonth = function (marker) {\n return this.calendarSystem.getMarkerMonth(marker);\n };\n // Adding / Subtracting\n DateEnv.prototype.add = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += dur.years;\n a[1] += dur.months;\n a[2] += dur.days;\n a[6] += dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.subtract = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] -= dur.years;\n a[1] -= dur.months;\n a[2] -= dur.days;\n a[6] -= dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addYears = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addMonths = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[1] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n // Diffing Whole Units\n DateEnv.prototype.diffWholeYears = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n }\n return null;\n };\n DateEnv.prototype.diffWholeMonths = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n }\n return null;\n };\n // Range / Duration\n DateEnv.prototype.greatestWholeUnit = function (m0, m1) {\n var n = this.diffWholeYears(m0, m1);\n if (n !== null) {\n return { unit: 'year', value: n };\n }\n n = this.diffWholeMonths(m0, m1);\n if (n !== null) {\n return { unit: 'month', value: n };\n }\n n = diffWholeWeeks(m0, m1);\n if (n !== null) {\n return { unit: 'week', value: n };\n }\n n = diffWholeDays(m0, m1);\n if (n !== null) {\n return { unit: 'day', value: n };\n }\n n = diffHours(m0, m1);\n if (isInt(n)) {\n return { unit: 'hour', value: n };\n }\n n = diffMinutes(m0, m1);\n if (isInt(n)) {\n return { unit: 'minute', value: n };\n }\n n = diffSeconds(m0, m1);\n if (isInt(n)) {\n return { unit: 'second', value: n };\n }\n return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };\n };\n DateEnv.prototype.countDurationsBetween = function (m0, m1, d) {\n // TODO: can use greatestWholeUnit\n var diff;\n if (d.years) {\n diff = this.diffWholeYears(m0, m1);\n if (diff !== null) {\n return diff / asRoughYears(d);\n }\n }\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1);\n if (diff !== null) {\n return diff / asRoughMonths(d);\n }\n }\n if (d.days) {\n diff = diffWholeDays(m0, m1);\n if (diff !== null) {\n return diff / asRoughDays(d);\n }\n }\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n };\n // Start-Of\n // these DON'T return zoned-dates. only UTC start-of dates\n DateEnv.prototype.startOf = function (m, unit) {\n if (unit === 'year') {\n return this.startOfYear(m);\n }\n if (unit === 'month') {\n return this.startOfMonth(m);\n }\n if (unit === 'week') {\n return this.startOfWeek(m);\n }\n if (unit === 'day') {\n return startOfDay(m);\n }\n if (unit === 'hour') {\n return startOfHour(m);\n }\n if (unit === 'minute') {\n return startOfMinute(m);\n }\n if (unit === 'second') {\n return startOfSecond(m);\n }\n return null;\n };\n DateEnv.prototype.startOfYear = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n ]);\n };\n DateEnv.prototype.startOfMonth = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n ]);\n };\n DateEnv.prototype.startOfWeek = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7),\n ]);\n };\n // Week Number\n DateEnv.prototype.computeWeekNumber = function (marker) {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker));\n }\n return weekOfYear(marker, this.weekDow, this.weekDoy);\n };\n // TODO: choke on timeZoneName: long\n DateEnv.prototype.format = function (marker, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n return formatter.format({\n marker: marker,\n timeZoneOffset: dateOptions.forcedTzo != null ?\n dateOptions.forcedTzo :\n this.offsetForMarker(marker),\n }, this);\n };\n DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ?\n dateOptions.forcedStartTzo :\n this.offsetForMarker(start),\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ?\n dateOptions.forcedEndTzo :\n this.offsetForMarker(end),\n }, this, dateOptions.defaultSeparator);\n };\n /*\n DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n might as well use buildIsoString or some other util directly\n */\n DateEnv.prototype.formatIso = function (marker, extraOptions) {\n if (extraOptions === void 0) { extraOptions = {}; }\n var timeZoneOffset = null;\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n }\n else {\n timeZoneOffset = this.offsetForMarker(marker);\n }\n }\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n };\n // TimeZone\n DateEnv.prototype.timestampToMarker = function (ms) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n }\n if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms);\n }\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n };\n DateEnv.prototype.offsetForMarker = function (m) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n }\n if (this.timeZone === 'UTC') {\n return 0;\n }\n if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n }\n return null;\n };\n // Conversion\n DateEnv.prototype.toDate = function (m, forcedTzo) {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m));\n }\n if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()); // make sure it's a copy\n }\n if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0));\n }\n return new Date(m.valueOf() -\n this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n };\n return DateEnv;\n}());\n\nvar globalLocales = [];\n\nvar MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4, // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list',\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display',\n};\nvar RAW_EN_LOCALE = __assign(__assign({}, MINIMAL_RAW_EN_LOCALE), { \n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today: function (buttonText, unit) {\n return (unit === 'day')\n ? 'Today'\n : \"This \" + buttonText;\n },\n }, viewHint: '$0 view', navLinkHint: 'Go to $0', moreLinkHint: function (eventCnt) {\n return \"Show \" + eventCnt + \" more event\" + (eventCnt === 1 ? '' : 's');\n } });\nfunction organizeRawLocales(explicitRawLocales) {\n var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n var allRawLocales = globalLocales.concat(explicitRawLocales);\n var rawLocaleMap = {\n en: RAW_EN_LOCALE,\n };\n for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {\n var rawLocale = allRawLocales_1[_i];\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode: defaultCode,\n };\n}\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n var codes = [].concat(codeArg || []); // will convert to array\n var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n for (var i = 0; i < codes.length; i += 1) {\n var parts = codes[i].toLocaleLowerCase().split('-');\n for (var j = parts.length; j > 0; j -= 1) {\n var simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n var merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n var week = merged.week;\n delete merged.week;\n return {\n codeArg: codeArg,\n codes: codes,\n week: week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged,\n };\n}\n\nfunction formatDate(dateInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = buildDateEnv$1(options);\n var formatter = createFormatter(options);\n var dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo,\n });\n}\nfunction formatRange(startInput, endInput, options) {\n var dateEnv = buildDateEnv$1(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n var formatter = createFormatter(options);\n var startMeta = dateEnv.createMarkerMeta(startInput);\n var endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator,\n });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv$1(settings) {\n var locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n return new DateEnv(__assign(__assign({ timeZone: BASE_OPTION_DEFAULTS.timeZone, calendarSystem: 'gregory' }, settings), { locale: locale }));\n}\n\nvar DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5],\n display: 'inverse-background',\n classNames: 'fc-non-business',\n groupId: '_businessHours', // so multiple defs get grouped\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\nfunction parseBusinessHours(input, context) {\n return parseEvents(refineInputs(input), null, context);\n}\nfunction refineInputs(input) {\n var rawDefs;\n if (input === true) {\n rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n }\n else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter(function (rawDef) { return rawDef.daysOfWeek; });\n }\n else if (typeof input === 'object' && input) { // non-null object\n rawDefs = [input];\n }\n else { // is probably false\n rawDefs = [];\n }\n rawDefs = rawDefs.map(function (rawDef) { return (__assign(__assign({}, DEF_DEFAULTS), rawDef)); });\n return rawDefs;\n}\n\nfunction pointInsideRect(point, rect) {\n return point.left >= rect.left &&\n point.left < rect.right &&\n point.top >= rect.top &&\n point.top < rect.bottom;\n}\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n var res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom),\n };\n if (res.left < res.right && res.top < res.bottom) {\n return res;\n }\n return false;\n}\nfunction translateRect(rect, deltaX, deltaY) {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY,\n };\n}\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom),\n };\n}\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2,\n };\n}\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top,\n };\n}\n\nvar canVGrowWithinCell;\nfunction getCanVGrowWithinCell() {\n if (canVGrowWithinCell == null) {\n canVGrowWithinCell = computeCanVGrowWithinCell();\n }\n return canVGrowWithinCell;\n}\nfunction computeCanVGrowWithinCell() {\n // for SSR, because this function is call immediately at top-level\n // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n if (typeof document === 'undefined') {\n return true;\n }\n var el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '0px';\n el.style.left = '0px';\n el.innerHTML = '
';\n el.querySelector('table').style.height = '100px';\n el.querySelector('div').style.height = '100%';\n document.body.appendChild(el);\n var div = el.querySelector('div');\n var possible = div.offsetHeight > 0;\n document.body.removeChild(el);\n return possible;\n}\n\nvar EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nvar Splitter = /** @class */ (function () {\n function Splitter() {\n this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n this.splitDateSelection = memoize(this._splitDateSpan);\n this.splitEventStore = memoize(this._splitEventStore);\n this.splitIndividualUi = memoize(this._splitIndividualUi);\n this.splitEventDrag = memoize(this._splitInteraction);\n this.splitEventResize = memoize(this._splitInteraction);\n this.eventUiBuilders = {}; // TODO: typescript protection\n }\n Splitter.prototype.splitProps = function (props) {\n var _this = this;\n var keyInfos = this.getKeyInfo(props);\n var defKeys = this.getKeysForEventDefs(props.eventStore);\n var dateSelections = this.splitDateSelection(props.dateSelection);\n var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n var eventStores = this.splitEventStore(props.eventStore, defKeys);\n var eventDrags = this.splitEventDrag(props.eventDrag);\n var eventResizes = this.splitEventResize(props.eventResize);\n var splitProps = {};\n this.eventUiBuilders = mapHash(keyInfos, function (info, key) { return _this.eventUiBuilders[key] || memoize(buildEventUiForKey); });\n for (var key in keyInfos) {\n var keyInfo = keyInfos[key];\n var eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n var buildEventUi = this.eventUiBuilders[key];\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore: eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null,\n };\n }\n return splitProps;\n };\n Splitter.prototype._splitDateSpan = function (dateSpan) {\n var dateSpans = {};\n if (dateSpan) {\n var keys = this.getKeysForDateSpan(dateSpan);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n dateSpans[key] = dateSpan;\n }\n }\n return dateSpans;\n };\n Splitter.prototype._getKeysForEventDefs = function (eventStore) {\n var _this = this;\n return mapHash(eventStore.defs, function (eventDef) { return _this.getKeysForEventDef(eventDef); });\n };\n Splitter.prototype._splitEventStore = function (eventStore, defKeys) {\n var defs = eventStore.defs, instances = eventStore.instances;\n var splitStores = {};\n for (var defId in defs) {\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore();\n }\n splitStores[key].defs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (splitStores[key]) { // must have already been created\n splitStores[key].instances[instanceId] = instance;\n }\n }\n }\n return splitStores;\n };\n Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) {\n var splitHashes = {};\n for (var defId in eventUiBases) {\n if (defId) { // not the '' key\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitHashes[key]) {\n splitHashes[key] = {};\n }\n splitHashes[key][defId] = eventUiBases[defId];\n }\n }\n }\n return splitHashes;\n };\n Splitter.prototype._splitInteraction = function (interaction) {\n var splitStates = {};\n if (interaction) {\n var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));\n // can't rely on defKeys because event data is mutated\n var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n var populate = function (key) {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent,\n };\n }\n };\n for (var key in affectedStores_1) {\n populate(key);\n }\n for (var key in mutatedStores_1) {\n populate(key);\n }\n }\n return splitStates;\n };\n return Splitter;\n}());\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n var baseParts = [];\n if (allUi) {\n baseParts.push(allUi);\n }\n if (eventUiForKey) {\n baseParts.push(eventUiForKey);\n }\n var stuff = {\n '': combineEventUis(baseParts),\n };\n if (individualUi) {\n __assign(stuff, individualUi);\n }\n return stuff;\n}\n\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n return {\n dow: date.getUTCDay(),\n isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),\n isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n isPast: Boolean(nowDate ? (date < nowDate) : todayRange ? (date < todayRange.start) : false),\n isFuture: Boolean(nowDate ? (date > nowDate) : todayRange ? (date >= todayRange.end) : false),\n };\n}\nfunction getDayClassNames(meta, theme) {\n var classNames = [\n 'fc-day',\n \"fc-day-\" + DAY_IDS[meta.dow],\n ];\n if (meta.isDisabled) {\n classNames.push('fc-day-disabled');\n }\n else {\n if (meta.isToday) {\n classNames.push('fc-day-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-day-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-day-future');\n }\n if (meta.isOther) {\n classNames.push('fc-day-other');\n }\n }\n return classNames;\n}\nfunction getSlotClassNames(meta, theme) {\n var classNames = [\n 'fc-slot',\n \"fc-slot-\" + DAY_IDS[meta.dow],\n ];\n if (meta.isDisabled) {\n classNames.push('fc-slot-disabled');\n }\n else {\n if (meta.isToday) {\n classNames.push('fc-slot-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-slot-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-slot-future');\n }\n }\n return classNames;\n}\n\nvar DAY_FORMAT = createFormatter({ year: 'numeric', month: 'long', day: 'numeric' });\nvar WEEK_FORMAT = createFormatter({ week: 'long' });\nfunction buildNavLinkAttrs(context, dateMarker, viewType, isTabbable) {\n if (viewType === void 0) { viewType = 'day'; }\n if (isTabbable === void 0) { isTabbable = true; }\n var dateEnv = context.dateEnv, options = context.options, calendarApi = context.calendarApi;\n var dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n if (options.navLinks) {\n var zonedDate = dateEnv.toDate(dateMarker);\n var handleInteraction = function (ev) {\n var customAction = viewType === 'day' ? options.navLinkDayClick :\n viewType === 'week' ? options.navLinkWeekClick : null;\n if (typeof customAction === 'function') {\n customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n }\n else {\n if (typeof customAction === 'string') {\n viewType = customAction;\n }\n calendarApi.zoomTo(dateMarker, viewType);\n }\n };\n return __assign({ title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr), 'data-navlink': '' }, (isTabbable\n ? createAriaClickAttrs(handleInteraction)\n : { onClick: handleInteraction }));\n }\n return { 'aria-label': dateStr };\n}\n\nvar _isRtlScrollbarOnLeft = null;\nfunction getIsRtlScrollbarOnLeft() {\n if (_isRtlScrollbarOnLeft === null) {\n _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n }\n return _isRtlScrollbarOnLeft;\n}\nfunction computeIsRtlScrollbarOnLeft() {\n var outerEl = document.createElement('div');\n applyStyle(outerEl, {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl',\n });\n outerEl.innerHTML = '
';\n document.body.appendChild(outerEl);\n var innerEl = outerEl.firstChild;\n var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n removeElement(outerEl);\n return res;\n}\n\nvar _scrollbarWidths;\nfunction getScrollbarWidths() {\n if (!_scrollbarWidths) {\n _scrollbarWidths = computeScrollbarWidths();\n }\n return _scrollbarWidths;\n}\nfunction computeScrollbarWidths() {\n var el = document.createElement('div');\n el.style.overflow = 'scroll';\n el.style.position = 'absolute';\n el.style.top = '-9999px';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n var res = computeScrollbarWidthsForEl(el);\n document.body.removeChild(el);\n return res;\n}\n// WARNING: will include border\nfunction computeScrollbarWidthsForEl(el) {\n return {\n x: el.offsetHeight - el.clientHeight,\n y: el.offsetWidth - el.clientWidth,\n };\n}\n\nfunction computeEdges(el, getPadding) {\n if (getPadding === void 0) { getPadding = false; }\n var computedStyle = window.getComputedStyle(el);\n var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n var badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n var scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n var scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n var res = {\n borderLeft: borderLeft,\n borderRight: borderRight,\n borderTop: borderTop,\n borderBottom: borderBottom,\n scrollbarBottom: scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0,\n };\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight;\n }\n else {\n res.scrollbarRight = scrollbarLeftRight;\n }\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n }\n return res;\n}\nfunction computeInnerRect(el, goWithinPadding, doFromWindowViewport) {\n if (goWithinPadding === void 0) { goWithinPadding = false; }\n var outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n var edges = computeEdges(el, goWithinPadding);\n var res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom,\n };\n if (goWithinPadding) {\n res.left += edges.paddingLeft;\n res.right -= edges.paddingRight;\n res.top += edges.paddingTop;\n res.bottom -= edges.paddingBottom;\n }\n return res;\n}\nfunction computeRect(el) {\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n right: rect.right + window.pageXOffset,\n bottom: rect.bottom + window.pageYOffset,\n };\n}\nfunction computeClippedClientRect(el) {\n var clippingParents = getClippingParents(el);\n var rect = el.getBoundingClientRect();\n for (var _i = 0, clippingParents_1 = clippingParents; _i < clippingParents_1.length; _i++) {\n var clippingParent = clippingParents_1[_i];\n var intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n if (intersection) {\n rect = intersection;\n }\n else {\n return null;\n }\n }\n return rect;\n}\nfunction computeHeightAndMargins(el) {\n return el.getBoundingClientRect().height + computeVMargins(el);\n}\nfunction computeVMargins(el) {\n var computed = window.getComputedStyle(el);\n return parseInt(computed.marginTop, 10) +\n parseInt(computed.marginBottom, 10);\n}\n// does not return window\nfunction getClippingParents(el) {\n var parents = [];\n while (el instanceof HTMLElement) { // will stop when gets to document or null\n var computedStyle = window.getComputedStyle(el);\n if (computedStyle.position === 'fixed') {\n break;\n }\n if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el);\n }\n el = el.parentNode;\n }\n return parents;\n}\n\n// given a function that resolves a result asynchronously.\n// the function can either call passed-in success and failure callbacks,\n// or it can return a promise.\n// if you need to pass additional params to func, bind them first.\nfunction unpromisify(func, success, failure) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n var isResolved = false;\n var wrappedSuccess = function () {\n if (!isResolved) {\n isResolved = true;\n success.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n };\n var wrappedFailure = function () {\n if (!isResolved) {\n isResolved = true;\n if (failure) {\n failure.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n }\n };\n var res = func(wrappedSuccess, wrappedFailure);\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure);\n }\n}\n\nvar Emitter = /** @class */ (function () {\n function Emitter() {\n this.handlers = {};\n this.thisContext = null;\n }\n Emitter.prototype.setThisContext = function (thisContext) {\n this.thisContext = thisContext;\n };\n Emitter.prototype.setOptions = function (options) {\n this.options = options;\n };\n Emitter.prototype.on = function (type, handler) {\n addToHash(this.handlers, type, handler);\n };\n Emitter.prototype.off = function (type, handler) {\n removeFromHash(this.handlers, type, handler);\n };\n Emitter.prototype.trigger = function (type) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var attachedHandlers = this.handlers[type] || [];\n var optionHandler = this.options && this.options[type];\n var handlers = [].concat(optionHandler || [], attachedHandlers);\n for (var _a = 0, handlers_1 = handlers; _a < handlers_1.length; _a++) {\n var handler = handlers_1[_a];\n handler.apply(this.thisContext, args);\n }\n };\n Emitter.prototype.hasHandlers = function (type) {\n return Boolean((this.handlers[type] && this.handlers[type].length) ||\n (this.options && this.options[type]));\n };\n return Emitter;\n}());\nfunction addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = []))\n .push(handler);\n}\nfunction removeFromHash(hash, type, handler) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter(function (func) { return func !== handler; });\n }\n }\n else {\n delete hash[type]; // remove all handler funcs for this type\n }\n}\n\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nvar PositionCache = /** @class */ (function () {\n function PositionCache(originEl, els, isHorizontal, isVertical) {\n this.els = els;\n var originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n if (isHorizontal) {\n this.buildElHorizontals(originClientRect.left);\n }\n if (isVertical) {\n this.buildElVerticals(originClientRect.top);\n }\n }\n // Populates the left/right internal coordinate arrays\n PositionCache.prototype.buildElHorizontals = function (originClientLeft) {\n var lefts = [];\n var rights = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n lefts.push(rect.left - originClientLeft);\n rights.push(rect.right - originClientLeft);\n }\n this.lefts = lefts;\n this.rights = rights;\n };\n // Populates the top/bottom internal coordinate arrays\n PositionCache.prototype.buildElVerticals = function (originClientTop) {\n var tops = [];\n var bottoms = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n tops.push(rect.top - originClientTop);\n bottoms.push(rect.bottom - originClientTop);\n }\n this.tops = tops;\n this.bottoms = bottoms;\n };\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.leftToIndex = function (leftPosition) {\n var _a = this, lefts = _a.lefts, rights = _a.rights;\n var len = lefts.length;\n var i;\n for (i = 0; i < len; i += 1) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n };\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.topToIndex = function (topPosition) {\n var _a = this, tops = _a.tops, bottoms = _a.bottoms;\n var len = tops.length;\n var i;\n for (i = 0; i < len; i += 1) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n };\n // Gets the width of the element at the given index\n PositionCache.prototype.getWidth = function (leftIndex) {\n return this.rights[leftIndex] - this.lefts[leftIndex];\n };\n // Gets the height of the element at the given index\n PositionCache.prototype.getHeight = function (topIndex) {\n return this.bottoms[topIndex] - this.tops[topIndex];\n };\n return PositionCache;\n}());\n\n/* eslint max-classes-per-file: \"off\" */\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nvar ScrollController = /** @class */ (function () {\n function ScrollController() {\n }\n ScrollController.prototype.getMaxScrollTop = function () {\n return this.getScrollHeight() - this.getClientHeight();\n };\n ScrollController.prototype.getMaxScrollLeft = function () {\n return this.getScrollWidth() - this.getClientWidth();\n };\n ScrollController.prototype.canScrollVertically = function () {\n return this.getMaxScrollTop() > 0;\n };\n ScrollController.prototype.canScrollHorizontally = function () {\n return this.getMaxScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollUp = function () {\n return this.getScrollTop() > 0;\n };\n ScrollController.prototype.canScrollDown = function () {\n return this.getScrollTop() < this.getMaxScrollTop();\n };\n ScrollController.prototype.canScrollLeft = function () {\n return this.getScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollRight = function () {\n return this.getScrollLeft() < this.getMaxScrollLeft();\n };\n return ScrollController;\n}());\nvar ElementScrollController = /** @class */ (function (_super) {\n __extends(ElementScrollController, _super);\n function ElementScrollController(el) {\n var _this = _super.call(this) || this;\n _this.el = el;\n return _this;\n }\n ElementScrollController.prototype.getScrollTop = function () {\n return this.el.scrollTop;\n };\n ElementScrollController.prototype.getScrollLeft = function () {\n return this.el.scrollLeft;\n };\n ElementScrollController.prototype.setScrollTop = function (top) {\n this.el.scrollTop = top;\n };\n ElementScrollController.prototype.setScrollLeft = function (left) {\n this.el.scrollLeft = left;\n };\n ElementScrollController.prototype.getScrollWidth = function () {\n return this.el.scrollWidth;\n };\n ElementScrollController.prototype.getScrollHeight = function () {\n return this.el.scrollHeight;\n };\n ElementScrollController.prototype.getClientHeight = function () {\n return this.el.clientHeight;\n };\n ElementScrollController.prototype.getClientWidth = function () {\n return this.el.clientWidth;\n };\n return ElementScrollController;\n}(ScrollController));\nvar WindowScrollController = /** @class */ (function (_super) {\n __extends(WindowScrollController, _super);\n function WindowScrollController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WindowScrollController.prototype.getScrollTop = function () {\n return window.pageYOffset;\n };\n WindowScrollController.prototype.getScrollLeft = function () {\n return window.pageXOffset;\n };\n WindowScrollController.prototype.setScrollTop = function (n) {\n window.scroll(window.pageXOffset, n);\n };\n WindowScrollController.prototype.setScrollLeft = function (n) {\n window.scroll(n, window.pageYOffset);\n };\n WindowScrollController.prototype.getScrollWidth = function () {\n return document.documentElement.scrollWidth;\n };\n WindowScrollController.prototype.getScrollHeight = function () {\n return document.documentElement.scrollHeight;\n };\n WindowScrollController.prototype.getClientHeight = function () {\n return document.documentElement.clientHeight;\n };\n WindowScrollController.prototype.getClientWidth = function () {\n return document.documentElement.clientWidth;\n };\n return WindowScrollController;\n}(ScrollController));\n\nvar Theme = /** @class */ (function () {\n function Theme(calendarOptions) {\n if (this.iconOverrideOption) {\n this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n }\n }\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\n var iconClassesCopy;\n var buttonName;\n if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n iconClassesCopy = __assign({}, this.iconClasses);\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n }\n this.iconClasses = iconClassesCopy;\n }\n else if (iconOverrideHash === false) {\n this.iconClasses = {};\n }\n };\n Theme.prototype.applyIconOverridePrefix = function (className) {\n var prefix = this.iconOverridePrefix;\n if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n className = prefix + className;\n }\n return className;\n };\n Theme.prototype.getClass = function (key) {\n return this.classes[key] || '';\n };\n Theme.prototype.getIconClass = function (buttonName, isRtl) {\n var className;\n if (isRtl && this.rtlIconClasses) {\n className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n }\n else {\n className = this.iconClasses[buttonName];\n }\n if (className) {\n return this.baseIconClass + \" \" + className;\n }\n return '';\n };\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\n var className;\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption];\n if (className) {\n return this.baseIconClass + \" \" + this.applyIconOverridePrefix(className);\n }\n }\n return '';\n };\n return Theme;\n}());\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\nvar ScrollResponder = /** @class */ (function () {\n function ScrollResponder(execFunc, emitter, scrollTime, scrollTimeReset) {\n var _this = this;\n this.execFunc = execFunc;\n this.emitter = emitter;\n this.scrollTime = scrollTime;\n this.scrollTimeReset = scrollTimeReset;\n this.handleScrollRequest = function (request) {\n _this.queuedRequest = __assign({}, _this.queuedRequest || {}, request);\n _this.drain();\n };\n emitter.on('_scrollRequest', this.handleScrollRequest);\n this.fireInitialScroll();\n }\n ScrollResponder.prototype.detach = function () {\n this.emitter.off('_scrollRequest', this.handleScrollRequest);\n };\n ScrollResponder.prototype.update = function (isDatesNew) {\n if (isDatesNew && this.scrollTimeReset) {\n this.fireInitialScroll(); // will drain\n }\n else {\n this.drain();\n }\n };\n ScrollResponder.prototype.fireInitialScroll = function () {\n this.handleScrollRequest({\n time: this.scrollTime,\n });\n };\n ScrollResponder.prototype.drain = function () {\n if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n this.queuedRequest = null;\n }\n };\n return ScrollResponder;\n}());\n\nvar ViewContextType = createContext({}); // for Components\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n return {\n dateEnv: dateEnv,\n options: viewOptions,\n pluginHooks: pluginHooks,\n emitter: emitter,\n dispatch: dispatch,\n getCurrentData: getCurrentData,\n calendarApi: calendarApi,\n viewSpec: viewSpec,\n viewApi: viewApi,\n dateProfileGenerator: dateProfileGenerator,\n theme: theme,\n isRtl: viewOptions.direction === 'rtl',\n addResizeHandler: function (handler) {\n emitter.on('_resize', handler);\n },\n removeResizeHandler: function (handler) {\n emitter.off('_resize', handler);\n },\n createScrollResponder: function (execFunc) {\n return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n },\n registerInteractiveComponent: registerInteractiveComponent,\n unregisterInteractiveComponent: unregisterInteractiveComponent,\n };\n}\n\n/* eslint max-classes-per-file: off */\nvar PureComponent = /** @class */ (function (_super) {\n __extends(PureComponent, _super);\n function PureComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PureComponent.prototype.shouldComponentUpdate = function (nextProps, nextState) {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));\n }\n return !compareObjs(this.props, nextProps, this.propEquality) ||\n !compareObjs(this.state, nextState, this.stateEquality);\n };\n // HACK for freakin' React StrictMode\n PureComponent.prototype.safeSetState = function (newState) {\n if (!compareObjs(this.state, __assign(__assign({}, this.state), newState), this.stateEquality)) {\n this.setState(newState);\n }\n };\n PureComponent.addPropsEquality = addPropsEquality;\n PureComponent.addStateEquality = addStateEquality;\n PureComponent.contextType = ViewContextType;\n return PureComponent;\n}(Component));\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\nvar BaseComponent = /** @class */ (function (_super) {\n __extends(BaseComponent, _super);\n function BaseComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BaseComponent.contextType = ViewContextType;\n return BaseComponent;\n}(PureComponent));\nfunction addPropsEquality(propEquality) {\n var hash = Object.create(this.prototype.propEquality);\n __assign(hash, propEquality);\n this.prototype.propEquality = hash;\n}\nfunction addStateEquality(stateEquality) {\n var hash = Object.create(this.prototype.stateEquality);\n __assign(hash, stateEquality);\n this.prototype.stateEquality = hash;\n}\n// use other one\nfunction setRef(ref, current) {\n if (typeof ref === 'function') {\n ref(current);\n }\n else if (ref) {\n // see https://github.com/facebook/react/issues/13029\n ref.current = current;\n }\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nvar DateComponent = /** @class */ (function (_super) {\n __extends(DateComponent, _super);\n function DateComponent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.uid = guid();\n return _this;\n }\n // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.prepareHits = function () {\n };\n DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n return null; // this should be abstract\n };\n // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.isValidSegDownEl = function (el) {\n return !this.props.eventDrag && // HACK\n !this.props.eventResize && // HACK\n !elementClosest(el, '.fc-event-mirror');\n };\n DateComponent.prototype.isValidDateDownEl = function (el) {\n return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&\n !elementClosest(el, '.fc-more-link') && // a \"more..\" link\n !elementClosest(el, 'a[data-navlink]') && // a clickable nav link\n !elementClosest(el, '.fc-popover'); // hack\n };\n return DateComponent;\n}(BaseComponent));\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n return {\n id: guid(),\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n contentTypeHandlers: input.contentTypeHandlers || {},\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {},\n };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n var isAdded = {};\n var hooks = {\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n contentTypeHandlers: {},\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {},\n };\n function addDefs(defs) {\n for (var _i = 0, defs_1 = defs; _i < defs_1.length; _i++) {\n var def = defs_1[_i];\n if (!isAdded[def.id]) {\n isAdded[def.id] = true;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n }\n }\n }\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n addDefs(globalDefs);\n return hooks;\n}\nfunction buildBuildPluginHooks() {\n var currentOverrideDefs = [];\n var currentGlobalDefs = [];\n var currentHooks;\n return function (overrideDefs, globalDefs) {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\nfunction combineHooks(hooks0, hooks1) {\n return {\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: __assign(__assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: __assign(__assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: __assign(__assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: __assign(__assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: __assign(__assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n contentTypeHandlers: __assign(__assign({}, hooks0.contentTypeHandlers), hooks1.contentTypeHandlers),\n listenerRefiners: __assign(__assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: __assign(__assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: __assign(__assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers),\n };\n}\n\nvar StandardTheme = /** @class */ (function (_super) {\n __extends(StandardTheme, _super);\n function StandardTheme() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StandardTheme;\n}(Theme));\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right',\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left',\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n var hash = {};\n var viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n var defaultConfig = defaultConfigs[viewType];\n var overrideConfig = overrideConfigs[viewType];\n var queryProp = function (name) { return ((defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null)); };\n var theComponent = queryProp('component');\n var superType = queryProp('superType');\n var superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n component: theComponent,\n defaults: __assign(__assign({}, (superDef ? superDef.defaults : {})), (defaultConfig ? defaultConfig.rawOptions : {})),\n overrides: __assign(__assign({}, (superDef ? superDef.overrides : {})), (overrideConfig ? overrideConfig.rawOptions : {})),\n };\n}\n\n/* eslint max-classes-per-file: off */\n// NOTE: in JSX, you should always use this class with arg. otherwise, will default to any???\nvar RenderHook = /** @class */ (function (_super) {\n __extends(RenderHook, _super);\n function RenderHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rootElRef = createRef();\n _this.handleRootEl = function (el) {\n setRef(_this.rootElRef, el);\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n return _this;\n }\n RenderHook.prototype.render = function () {\n var _this = this;\n var props = this.props;\n var hookProps = props.hookProps;\n return (createElement(MountHook, { hookProps: hookProps, didMount: props.didMount, willUnmount: props.willUnmount, elRef: this.handleRootEl }, function (rootElRef) { return (createElement(ContentHook, { hookProps: hookProps, content: props.content, defaultContent: props.defaultContent, backupElRef: _this.rootElRef }, function (innerElRef, innerContent) { return props.children(rootElRef, normalizeClassNames(props.classNames, hookProps), innerElRef, innerContent); })); }));\n };\n return RenderHook;\n}(BaseComponent));\n// TODO: rename to be about function, not default. use in above type\n// for forcing rerender of components that use the ContentHook\nvar CustomContentRenderContext = createContext(0);\nfunction ContentHook(props) {\n return (createElement(CustomContentRenderContext.Consumer, null, function (renderId) { return (createElement(ContentHookInner, __assign({ renderId: renderId }, props))); }));\n}\nvar ContentHookInner = /** @class */ (function (_super) {\n __extends(ContentHookInner, _super);\n function ContentHookInner() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.innerElRef = createRef();\n return _this;\n }\n ContentHookInner.prototype.render = function () {\n return this.props.children(this.innerElRef, this.renderInnerContent());\n };\n ContentHookInner.prototype.componentDidMount = function () {\n this.updateCustomContent();\n };\n ContentHookInner.prototype.componentDidUpdate = function () {\n this.updateCustomContent();\n };\n ContentHookInner.prototype.componentWillUnmount = function () {\n if (this.customContentInfo && this.customContentInfo.destroy) {\n this.customContentInfo.destroy();\n }\n };\n ContentHookInner.prototype.renderInnerContent = function () {\n var customContentInfo = this.customContentInfo; // only populated if using non-[p]react node(s)\n var innerContent = this.getInnerContent();\n var meta = this.getContentMeta(innerContent);\n // initial run, or content-type changing? (from vue -> react for example)\n if (!customContentInfo || customContentInfo.contentKey !== meta.contentKey) {\n // clearing old value\n if (customContentInfo) {\n if (customContentInfo.destroy) {\n customContentInfo.destroy();\n }\n customContentInfo = this.customContentInfo = null;\n }\n // assigning new value\n if (meta.contentKey) {\n customContentInfo = this.customContentInfo = __assign({ contentKey: meta.contentKey, contentVal: innerContent[meta.contentKey] }, meta.buildLifecycleFuncs());\n }\n // updating\n }\n else if (customContentInfo) {\n customContentInfo.contentVal = innerContent[meta.contentKey];\n }\n return customContentInfo\n ? [] // signal that something was specified\n : innerContent; // assume a [p]react vdom node. use it\n };\n ContentHookInner.prototype.getInnerContent = function () {\n var props = this.props;\n var innerContent = normalizeContent(props.content, props.hookProps);\n if (innerContent === undefined) { // use the default\n innerContent = normalizeContent(props.defaultContent, props.hookProps);\n }\n return innerContent == null ? null : innerContent; // convert undefined to null (better for React)\n };\n ContentHookInner.prototype.getContentMeta = function (innerContent) {\n var contentTypeHandlers = this.context.pluginHooks.contentTypeHandlers;\n var contentKey = '';\n var buildLifecycleFuncs = null;\n if (innerContent) { // allowed to be null, for convenience to caller\n for (var searchKey in contentTypeHandlers) {\n if (innerContent[searchKey] !== undefined) {\n contentKey = searchKey;\n buildLifecycleFuncs = contentTypeHandlers[searchKey];\n break;\n }\n }\n }\n return { contentKey: contentKey, buildLifecycleFuncs: buildLifecycleFuncs };\n };\n ContentHookInner.prototype.updateCustomContent = function () {\n if (this.customContentInfo) { // for non-[p]react\n this.customContentInfo.render(this.innerElRef.current || this.props.backupElRef.current, // the element to render into\n this.customContentInfo.contentVal);\n }\n };\n return ContentHookInner;\n}(BaseComponent));\nvar MountHook = /** @class */ (function (_super) {\n __extends(MountHook, _super);\n function MountHook() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (_this.props.elRef) {\n setRef(_this.props.elRef, rootEl);\n }\n };\n return _this;\n }\n MountHook.prototype.render = function () {\n return this.props.children(this.handleRootEl);\n };\n MountHook.prototype.componentDidMount = function () {\n var callback = this.props.didMount;\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));\n }\n };\n MountHook.prototype.componentWillUnmount = function () {\n var callback = this.props.willUnmount;\n if (callback) {\n callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));\n }\n };\n return MountHook;\n}(BaseComponent));\nfunction buildClassNameNormalizer() {\n var currentGenerator;\n var currentHookProps;\n var currentClassNames = [];\n return function (generator, hookProps) {\n if (!currentHookProps || !isPropsEqual(currentHookProps, hookProps) || generator !== currentGenerator) {\n currentGenerator = generator;\n currentHookProps = hookProps;\n currentClassNames = normalizeClassNames(generator, hookProps);\n }\n return currentClassNames;\n };\n}\nfunction normalizeClassNames(classNames, hookProps) {\n if (typeof classNames === 'function') {\n classNames = classNames(hookProps);\n }\n return parseClassNames(classNames);\n}\nfunction normalizeContent(input, hookProps) {\n if (typeof input === 'function') {\n return input(hookProps, createElement); // give the function the vdom-creation func\n }\n return input;\n}\n\nvar ViewRoot = /** @class */ (function (_super) {\n __extends(ViewRoot, _super);\n function ViewRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n ViewRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = { view: context.viewApi };\n var customClassNames = this.normalizeClassNames(options.viewClassNames, hookProps);\n return (createElement(MountHook, { hookProps: hookProps, didMount: options.viewDidMount, willUnmount: options.viewWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, [\"fc-\" + props.viewSpec.type + \"-view\", 'fc-view'].concat(customClassNames)); }));\n };\n return ViewRoot;\n}(BaseComponent));\n\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n var rawOptions = typeof input === 'function' ?\n { component: input } :\n input;\n var component = rawOptions.component;\n if (rawOptions.content) {\n component = createViewHookComponent(rawOptions);\n // TODO: remove content/classNames/didMount/etc from options?\n }\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions: rawOptions,\n };\n}\nfunction createViewHookComponent(options) {\n return function (viewProps) { return (createElement(ViewContextType.Consumer, null, function (context) { return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (viewElRef, viewClassNames) {\n var hookProps = __assign(__assign({}, viewProps), { nextDayThreshold: context.options.nextDayThreshold });\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.classNames, content: options.content, didMount: options.didMount, willUnmount: options.willUnmount, elRef: viewElRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"div\", { className: viewClassNames.concat(customClassNames).join(' '), ref: rootElRef }, innerContent)); }));\n })); })); };\n}\n\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var defaultConfigs = parseViewConfigs(defaultInputs);\n var overrideConfigs = parseViewConfigs(optionOverrides.views);\n var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, function (viewDef) { return buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults); });\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n var durationInput = viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n dynamicOptionOverrides.duration ||\n optionOverrides.duration;\n var duration = null;\n var durationUnit = '';\n var singleUnit = '';\n var singleUnitOverrides = {};\n if (durationInput) {\n duration = createDurationCached(durationInput);\n if (duration) { // valid?\n var denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n var queryButtonText = function (optionsSubset) {\n var buttonTextMap = optionsSubset.buttonText || {};\n var buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n return null;\n };\n var queryButtonTitle = function (optionsSubset) {\n var buttonHints = optionsSubset.buttonHints || {};\n var buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n return null;\n };\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration: duration,\n durationUnit: durationUnit,\n singleUnit: singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: __assign(__assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) ||\n queryButtonText(optionOverrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(BASE_OPTION_DEFAULTS) ||\n viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) ||\n queryButtonTitle(optionOverrides) ||\n viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) ||\n viewDef.defaults.buttonHint ||\n queryButtonTitle(BASE_OPTION_DEFAULTS),\n // will eventually fall back to buttonText\n };\n}\n// hack to get memoization working\nvar durationInputMap = {};\nfunction createDurationCached(durationInput) {\n var json = JSON.stringify(durationInput);\n var res = durationInputMap[json];\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n return res;\n}\n\nvar DateProfileGenerator = /** @class */ (function () {\n function DateProfileGenerator(props) {\n this.props = props;\n this.nowDate = getNow(props.nowInput, props.dateEnv);\n this.initHiddenDays();\n }\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(prevDate, -1, forceToValid);\n };\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate, forceToValid) {\n var dateEnv = this.props.dateEnv;\n var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(nextDate, 1, forceToValid);\n };\n // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) {\n if (forceToValid === void 0) { forceToValid = true; }\n var props = this.props;\n var validRange;\n var currentInfo;\n var isRangeAllDay;\n var renderRange;\n var activeRange;\n var isValid;\n validRange = this.buildValidRange();\n validRange = this.trimHiddenDays(validRange);\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange);\n }\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n renderRange = this.trimHiddenDays(renderRange);\n activeRange = renderRange;\n if (!props.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range);\n }\n activeRange = this.adjustActiveRange(activeRange);\n activeRange = intersectRanges(activeRange, validRange); // might return null\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n isValid = rangesIntersect(currentInfo.range, validRange);\n return {\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange: validRange,\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n isRangeAllDay: isRangeAllDay,\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange: activeRange,\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange: renderRange,\n // Duration object that denotes the first visible time of any given day\n slotMinTime: props.slotMinTime,\n // Duration object that denotes the exclusive visible end time of any given day\n slotMaxTime: props.slotMaxTime,\n isValid: isValid,\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration),\n // pass a fallback (might be null) ^\n };\n };\n // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildValidRange = function () {\n var input = this.props.validRangeInput;\n var simpleInput = typeof input === 'function'\n ? input.call(this.props.calendarApi, this.nowDate)\n : input;\n return this.refineRange(simpleInput) ||\n { start: null, end: null }; // completely open-ended\n };\n // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\n var props = this.props;\n var duration = null;\n var unit = null;\n var range = null;\n var dayCount;\n if (props.duration) {\n duration = props.duration;\n unit = props.durationUnit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n else if ((dayCount = this.props.dayCount)) {\n unit = 'day';\n range = this.buildRangeFromDayCount(date, direction, dayCount);\n }\n else if ((range = this.buildCustomVisibleRange(date))) {\n unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n }\n else {\n duration = this.getFallbackDuration();\n unit = greatestDurationDenominator(duration).unit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n return { duration: duration, unit: unit, range: range };\n };\n DateProfileGenerator.prototype.getFallbackDuration = function () {\n return createDuration({ day: 1 });\n };\n // Returns a new activeRange to have time values (un-ambiguate)\n // slotMinTime or slotMaxTime causes the range to expand.\n DateProfileGenerator.prototype.adjustActiveRange = function (range) {\n var _a = this.props, dateEnv = _a.dateEnv, usesMinMaxTime = _a.usesMinMaxTime, slotMinTime = _a.slotMinTime, slotMaxTime = _a.slotMaxTime;\n var start = range.start, end = range.end;\n if (usesMinMaxTime) {\n // expand active range if slotMinTime is negative (why not when positive?)\n if (asRoughDays(slotMinTime) < 0) {\n start = startOfDay(start); // necessary?\n start = dateEnv.add(start, slotMinTime);\n }\n // expand active range if slotMaxTime is beyond one day (why not when negative?)\n if (asRoughDays(slotMaxTime) > 1) {\n end = startOfDay(end); // necessary?\n end = addDays(end, -1);\n end = dateEnv.add(end, slotMaxTime);\n }\n }\n return { start: start, end: end };\n };\n // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\n var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment;\n var start;\n var end;\n var res;\n // compute what the alignment should be\n if (!dateAlignment) {\n var dateIncrement = this.props.dateIncrement;\n if (dateIncrement) {\n // use the smaller of the two units\n if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n }\n else {\n dateAlignment = unit;\n }\n }\n else {\n dateAlignment = unit;\n }\n }\n // if the view displays a single day or smaller\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction);\n start = startOfDay(start);\n }\n }\n function computeRes() {\n start = dateEnv.startOf(date, dateAlignment);\n end = dateEnv.add(start, duration);\n res = { start: start, end: end };\n }\n computeRes();\n // if range is completely enveloped by hidden days, go past the hidden days\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction);\n computeRes();\n }\n return res;\n };\n // Builds the \"current\" range when a dayCount is specified.\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\n var _a = this.props, dateEnv = _a.dateEnv, dateAlignment = _a.dateAlignment;\n var runningCount = 0;\n var start = date;\n var end;\n if (dateAlignment) {\n start = dateEnv.startOf(start, dateAlignment);\n }\n start = startOfDay(start);\n start = this.skipHiddenDays(start, direction);\n end = start;\n do {\n end = addDays(end, 1);\n if (!this.isHiddenDay(end)) {\n runningCount += 1;\n }\n } while (runningCount < dayCount);\n return { start: start, end: end };\n };\n // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\n var props = this.props;\n var input = props.visibleRangeInput;\n var simpleInput = typeof input === 'function'\n ? input.call(props.calendarApi, props.dateEnv.toDate(date))\n : input;\n var range = this.refineRange(simpleInput);\n if (range && (range.start == null || range.end == null)) {\n return null;\n }\n return range;\n };\n // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n return currentRange;\n };\n // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\n var dateIncrement = this.props.dateIncrement;\n var customAlignment;\n if (dateIncrement) {\n return dateIncrement;\n }\n if ((customAlignment = this.props.dateAlignment)) {\n return createDuration(1, customAlignment);\n }\n if (fallback) {\n return fallback;\n }\n return createDuration({ days: 1 });\n };\n DateProfileGenerator.prototype.refineRange = function (rangeInput) {\n if (rangeInput) {\n var range = parseRange(rangeInput, this.props.dateEnv);\n if (range) {\n range = computeVisibleDayRange(range);\n }\n return range;\n }\n return null;\n };\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n // Initializes internal variables related to calculating hidden days-of-week\n DateProfileGenerator.prototype.initHiddenDays = function () {\n var hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n var dayCnt = 0;\n var i;\n if (this.props.weekends === false) {\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n }\n for (i = 0; i < 7; i += 1) {\n if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n dayCnt += 1;\n }\n }\n if (!dayCnt) {\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n }\n this.isHiddenDayHash = isHiddenDayHash;\n };\n // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n DateProfileGenerator.prototype.trimHiddenDays = function (range) {\n var start = range.start, end = range.end;\n if (start) {\n start = this.skipHiddenDays(start);\n }\n if (end) {\n end = this.skipHiddenDays(end, -1, true);\n }\n if (start == null || end == null || start < end) {\n return { start: start, end: end };\n }\n return null;\n };\n // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n DateProfileGenerator.prototype.isHiddenDay = function (day) {\n if (day instanceof Date) {\n day = day.getUTCDay();\n }\n return this.isHiddenDayHash[day];\n };\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) {\n if (inc === void 0) { inc = 1; }\n if (isExclusive === void 0) { isExclusive = false; }\n while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n date = addDays(date, inc);\n }\n return date;\n };\n return DateProfileGenerator;\n}());\n\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n return viewType;\n}\n\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n var _a;\n switch (action.type) {\n case 'SET_OPTION':\n return __assign(__assign({}, dynamicOptionOverrides), (_a = {}, _a[action.optionName] = action.rawOptionValue, _a));\n default:\n return dynamicOptionOverrides;\n }\n}\n\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n var dp;\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n }\n return currentDateProfile;\n}\n\nfunction initEventSources(calendarOptions, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n return eventSources;\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ? // why no type?\n arrayToHash(action.sourceIds) :\n excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n var activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n for (var sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n var hash = {};\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n return __assign(__assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, function (eventSource) { return eventSource.sourceId !== sourceId; });\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) { return isSourceDirty(eventSource, fetchRange, context); }), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n return !context.options.lazyFetching ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n var nextSources = {};\n for (var sourceId in prevSources) {\n var source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n }\n else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n var options = context.options, calendarApi = context.calendarApi;\n var sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n var fetchId = guid();\n sourceDef.fetch({\n eventSource: eventSource,\n range: fetchRange,\n isRefetch: isRefetch,\n context: context,\n }, function (res) {\n var rawEvents = res.rawEvents;\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.xhr) || rawEvents;\n }\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n rawEvents: rawEvents,\n });\n }, function (error) {\n console.warn(error.message, error);\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n }\n if (eventSource.failure) {\n eventSource.failure(error);\n }\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n error: error,\n });\n });\n return __assign(__assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n var _a;\n var eventSource = sourceHash[sourceId];\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return __assign(__assign({}, sourceHash), (_a = {}, _a[sourceId] = __assign(__assign({}, eventSource), { isFetching: false, fetchRange: fetchRange }), _a));\n }\n return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, function (eventSource) { return doesSourceNeedRange(eventSource, context); });\n}\nfunction parseInitialSources(rawOptions, context) {\n var refiners = buildEventSourceRefiners(context);\n var rawSources = [].concat(rawOptions.eventSources || []);\n var sources = []; // parsed\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) {\n var rawSource = rawSources_1[_i];\n var source = parseEventSource(rawSource, context, refiners);\n if (source) {\n sources.push(source);\n }\n }\n return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\n\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n switch (action.type) {\n case 'RECEIVE_EVENTS': // raw\n return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n case 'ADD_EVENTS': // already parsed, but not expanded\n return addEvent(eventStore, action.eventStore, // new ones\n dateProfile ? dateProfile.activeRange : null, context);\n case 'RESET_EVENTS':\n return action.eventStore;\n case 'MERGE_EVENTS': // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, context);\n }\n return eventStore;\n case 'REMOVE_EVENTS':\n return excludeSubEventStore(eventStore, action.eventStore);\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, function (eventDef) { return (!eventDef.sourceId // only keep events with no source id\n ); });\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore();\n default:\n return eventStore;\n }\n}\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n var subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, context);\n }\n return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n }\n return eventStore;\n}\nfunction transformRawEvents(rawEvents, eventSource, context) {\n var calEachTransform = context.options.eventDataTransform;\n var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n }\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n }\n return rawEvents;\n}\nfunction transformEachRawEvent(rawEvents, func) {\n var refinedEvents;\n if (!func) {\n refinedEvents = rawEvents;\n }\n else {\n refinedEvents = [];\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var refinedEvent = func(rawEvent);\n if (refinedEvent) {\n refinedEvents.push(refinedEvent);\n }\n else if (refinedEvent == null) {\n refinedEvents.push(rawEvent);\n } // if a different falsy value, do nothing\n }\n }\n return refinedEvents;\n}\nfunction addEvent(eventStore, subset, expandRange, context) {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, context);\n }\n return mergeEventStores(eventStore, subset);\n}\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n var defs = eventStore.defs;\n var instances = mapHash(eventStore.instances, function (instance) {\n var def = defs[instance.defId];\n if (def.allDay || def.recurringDef) {\n return instance; // isn't dependent on timezone\n }\n return __assign(__assign({}, instance), { range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo)),\n }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });\n });\n return { defs: defs, instances: instances };\n}\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n return filterEventStoreDefs(eventStore, function (eventDef) { return eventDef.sourceId !== sourceId; });\n}\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nfunction excludeInstances(eventStore, removals) {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, function (instance) { return !removals[instance.instanceId]; }),\n };\n}\n\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n case 'SELECT_DATES':\n return action.selection;\n default:\n return currentSelection;\n }\n}\n\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n default:\n return currentInstanceId;\n }\n}\n\nfunction reduceEventDrag(currentDrag, action) {\n var newDrag;\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n };\n default:\n return currentDrag;\n }\n}\n\nfunction reduceEventResize(currentResize, action) {\n var newResize;\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n };\n default:\n return currentResize;\n }\n}\n\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n var footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return { header: header, footer: footer };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n var sectionWidgets = {};\n var viewsWithButtons = [];\n var hasTitle = false;\n for (var sectionName in sectionStrHash) {\n var sectionStr = sectionStrHash[sectionName];\n var sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push.apply(viewsWithButtons, sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n return { sectionWidgets: sectionWidgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions, // defaults+overrides, then refined\ncalendarOptionOverrides, // overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n var isRtl = calendarOptions.direction === 'rtl';\n var calendarCustomButtons = calendarOptions.customButtons || {};\n var calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n var calendarButtonText = calendarOptions.buttonText || {};\n var calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n var calendarButtonHints = calendarOptions.buttonHints || {};\n var sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n var viewsWithButtons = [];\n var hasTitle = false;\n var widgets = sectionSubstrs.map(function (buttonGroupStr) { return (buttonGroupStr.split(',').map(function (buttonName) {\n if (buttonName === 'title') {\n hasTitle = true;\n return { buttonName: buttonName };\n }\n var customButtonProps;\n var viewSpec;\n var buttonClick;\n var buttonIcon; // only one of these will be set\n var buttonText; // \"\n var buttonHint;\n // ^ for the title=\"\" attribute, for accessibility\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = function (ev) {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n }\n else if ((viewSpec = viewSpecs[buttonName])) {\n viewsWithButtons.push(buttonName);\n buttonClick = function () {\n calendarApi.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = viewSpec.buttonTextDefault);\n var textFallback = viewSpec.buttonTextOverride ||\n viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride ||\n viewSpec.buttonTitleDefault ||\n calendarOptions.viewHint, [textFallback, buttonName], // view-name = buttonName\n textFallback);\n }\n else if (calendarApi[buttonName]) { // a calendarApi method\n buttonClick = function () {\n calendarApi[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName, isRtl)) ||\n (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n var prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] ||\n calendarButtonHints[prevOrNext], [\n calendarButtonText.year || 'year',\n 'year',\n ], calendarButtonText[buttonName]);\n }\n else {\n buttonHint = function (navUnit) { return formatWithOrdinals(calendarButtonHintOverrides[buttonName] ||\n calendarButtonHints[buttonName], [\n calendarButtonText[navUnit] || navUnit,\n navUnit,\n ], calendarButtonText[buttonName]); };\n }\n }\n return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText, buttonHint: buttonHint };\n })); });\n return { widgets: widgets, viewsWithButtons: viewsWithButtons, hasTitle: hasTitle };\n}\n\nvar eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta: function (refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n return null;\n },\n fetch: function (arg, success) {\n success({\n rawEvents: arg.eventSource.meta,\n });\n },\n};\nvar arrayEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$2],\n});\n\nvar eventSourceDef$1 = {\n parseMeta: function (refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var dateEnv = arg.context.dateEnv;\n var func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), function (rawEvents) {\n success({ rawEvents: rawEvents }); // needs an object response\n }, failure);\n },\n};\nvar funcEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$1],\n});\n\nfunction requestJson(method, url, params, successCallback, failureCallback) {\n method = method.toUpperCase();\n var body = null;\n if (method === 'GET') {\n url = injectQueryStringParams(url, params);\n }\n else {\n body = encodeParams(params);\n }\n var xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (method !== 'GET') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 400) {\n var parsed = false;\n var res = void 0;\n try {\n res = JSON.parse(xhr.responseText);\n parsed = true;\n }\n catch (err) {\n // will handle parsed=false\n }\n if (parsed) {\n successCallback(res, xhr);\n }\n else {\n failureCallback('Failure parsing JSON', xhr);\n }\n }\n else {\n failureCallback('Request failed', xhr);\n }\n };\n xhr.onerror = function () {\n failureCallback('Request failed', xhr);\n };\n xhr.send(body);\n}\nfunction injectQueryStringParams(url, params) {\n return url +\n (url.indexOf('?') === -1 ? '?' : '&') +\n encodeParams(params);\n}\nfunction encodeParams(params) {\n var parts = [];\n for (var key in params) {\n parts.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]));\n }\n return parts.join('&');\n}\n\nvar JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n};\n\nvar eventSourceDef = {\n parseMeta: function (refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam,\n };\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var meta = arg.eventSource.meta;\n var requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) {\n success({ rawEvents: rawEvents, xhr: xhr });\n }, function (errorMessage, xhr) {\n failure({ message: errorMessage, xhr: xhr });\n });\n },\n};\nvar jsonFeedEventSourcePlugin = createPlugin({\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef],\n});\nfunction buildRequestParams(meta, range, context) {\n var dateEnv = context.dateEnv, options = context.options;\n var startParam;\n var endParam;\n var timeZoneParam;\n var customRequestParams;\n var params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n __assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n}\n\nvar SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity,\n};\n\nvar recurring = {\n parse: function (refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n var recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null,\n };\n var duration = void 0;\n if (refined.duration) {\n duration = refined.duration;\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration: duration,\n typeData: recurringData, // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand: function (typeData, framingRange, dateEnv) {\n var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n return [];\n },\n};\nvar simpleRecurringEventsPlugin = createPlugin({\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS,\n});\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n var dayMarker = startOfDay(framingRange.start);\n var endMarker = framingRange.end;\n var instanceStarts = [];\n while (dayMarker < endMarker) {\n var instanceStart \n // if everyday, or this particular day-of-week\n = void 0;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n }\n else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(instanceStart);\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n}\n\nvar changeHandlerPlugin = createPlugin({\n optionChangeHandlers: {\n events: function (events, context) {\n handleEventSources([events], context);\n },\n eventSources: handleEventSources,\n },\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n var unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n var newInputs = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n var inputFound = false;\n for (var i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) {\n var unfoundSource = unfoundSources_1[_a];\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId,\n });\n }\n for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {\n var newInput = newInputs_1[_b];\n context.calendarApi.addEventSource(newInput);\n }\n}\n\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', __assign(__assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));\n}\n\nfunction handleEventStore(eventStore, context) {\n var emitter = context.emitter;\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nvar globalPlugins = [\n arrayEventSourcePlugin,\n funcEventSourcePlugin,\n jsonFeedEventSourcePlugin,\n simpleRecurringEventsPlugin,\n changeHandlerPlugin,\n createPlugin({\n isLoadingFuncs: [\n function (state) { return computeEventSourcesLoading(state.eventSources); },\n ],\n contentTypeHandlers: {\n html: buildHtmlRenderer,\n domNodes: buildDomNodeRenderer,\n },\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore,\n },\n }),\n];\nfunction buildHtmlRenderer() {\n var currentEl = null;\n var currentHtml = '';\n function render(el, html) {\n if (el !== currentEl || html !== currentHtml) {\n el.innerHTML = html;\n }\n currentEl = el;\n currentHtml = html;\n }\n function destroy() {\n currentEl.innerHTML = '';\n currentEl = null;\n currentHtml = '';\n }\n return { render: render, destroy: destroy };\n}\nfunction buildDomNodeRenderer() {\n var currentEl = null;\n var currentDomNodes = [];\n function render(el, domNodes) {\n var newDomNodes = Array.prototype.slice.call(domNodes);\n if (el !== currentEl || !isArraysEqual(currentDomNodes, newDomNodes)) {\n // append first, remove second (for scroll resetting)\n for (var _i = 0, newDomNodes_1 = newDomNodes; _i < newDomNodes_1.length; _i++) {\n var newNode = newDomNodes_1[_i];\n el.appendChild(newNode);\n }\n destroy();\n }\n currentEl = el;\n currentDomNodes = newDomNodes;\n }\n function destroy() {\n currentDomNodes.forEach(removeElement);\n currentDomNodes = [];\n currentEl = null;\n }\n return { render: render, destroy: destroy };\n}\n\nvar DelayedRunner = /** @class */ (function () {\n function DelayedRunner(drainedOption) {\n this.drainedOption = drainedOption;\n this.isRunning = false;\n this.isDirty = false;\n this.pauseDepths = {};\n this.timeoutId = 0;\n }\n DelayedRunner.prototype.request = function (delay) {\n this.isDirty = true;\n if (!this.isPaused()) {\n this.clearTimeout();\n if (delay == null) {\n this.tryDrain();\n }\n else {\n this.timeoutId = setTimeout(// NOT OPTIMAL! TODO: look at debounce\n this.tryDrain.bind(this), delay);\n }\n }\n };\n DelayedRunner.prototype.pause = function (scope) {\n if (scope === void 0) { scope = ''; }\n var pauseDepths = this.pauseDepths;\n pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n this.clearTimeout();\n };\n DelayedRunner.prototype.resume = function (scope, force) {\n if (scope === void 0) { scope = ''; }\n var pauseDepths = this.pauseDepths;\n if (scope in pauseDepths) {\n if (force) {\n delete pauseDepths[scope];\n }\n else {\n pauseDepths[scope] -= 1;\n var depth = pauseDepths[scope];\n if (depth <= 0) {\n delete pauseDepths[scope];\n }\n }\n this.tryDrain();\n }\n };\n DelayedRunner.prototype.isPaused = function () {\n return Object.keys(this.pauseDepths).length;\n };\n DelayedRunner.prototype.tryDrain = function () {\n if (!this.isRunning && !this.isPaused()) {\n this.isRunning = true;\n while (this.isDirty) {\n this.isDirty = false;\n this.drained(); // might set isDirty to true again\n }\n this.isRunning = false;\n }\n };\n DelayedRunner.prototype.clear = function () {\n this.clearTimeout();\n this.isDirty = false;\n this.pauseDepths = {};\n };\n DelayedRunner.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = 0;\n }\n };\n DelayedRunner.prototype.drained = function () {\n if (this.drainedOption) {\n this.drainedOption();\n }\n };\n return DelayedRunner;\n}());\n\nvar TaskRunner = /** @class */ (function () {\n function TaskRunner(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n TaskRunner.prototype.request = function (task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n };\n TaskRunner.prototype.pause = function (scope) {\n this.delayedRunner.pause(scope);\n };\n TaskRunner.prototype.resume = function (scope, force) {\n this.delayedRunner.resume(scope, force);\n };\n TaskRunner.prototype.drain = function () {\n var queue = this.queue;\n while (queue.length) {\n var completedTasks = [];\n var task = void 0;\n while ((task = queue.shift())) {\n this.runTask(task);\n completedTasks.push(task);\n }\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n };\n TaskRunner.prototype.runTask = function (task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n };\n TaskRunner.prototype.drained = function (completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n };\n return TaskRunner;\n}());\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n var range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n }\n else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator,\n });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n var currentRangeUnit = dateProfile.currentRangeUnit;\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' };\n }\n if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n }\n var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' };\n }\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' };\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nvar CalendarDataManager = /** @class */ (function () {\n function CalendarDataManager(props) {\n var _this = this;\n this.computeOptionsData = memoize(this._computeOptionsData);\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n this.getCurrentData = function () { return _this.data; };\n this.dispatch = function (action) {\n _this.actionRunner.request(action); // protects against recursive calls to _handleAction\n };\n this.props = props;\n this.actionRunner.pause();\n var dynamicOptionOverrides = {};\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n var currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);\n var dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData,\n };\n // needs to be after setThisContext\n for (var _i = 0, _a = optionsData.pluginHooks.contextInit; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback(calendarContext);\n }\n // NOT DRY\n var eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n var initialState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources: eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig,\n };\n var contextAndState = __assign(__assign({}, calendarContext), initialState);\n for (var _b = 0, _c = optionsData.pluginHooks.reducers; _b < _c.length; _b++) {\n var reducer = _c[_b];\n __assign(initialState, reducer(null, null, contextAndState));\n }\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n CalendarDataManager.prototype.resetOptions = function (optionOverrides, append) {\n var props = this.props;\n props.optionOverrides = append\n ? __assign(__assign({}, props.optionOverrides), optionOverrides) : optionOverrides;\n this.actionRunner.request({\n type: 'NOTHING',\n });\n };\n CalendarDataManager.prototype._handleAction = function (action) {\n var _a = this, props = _a.props, state = _a.state, emitter = _a.emitter;\n var dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n var optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n var currentViewType = reduceViewType(state.currentViewType, action);\n var currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n var calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: emitter,\n getCurrentData: this.getCurrentData,\n };\n var currentDate = state.currentDate, dateProfile = state.dateProfile;\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) { // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n if (action.type === 'PREV' || // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' || // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n var eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n var isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n var renderableEventStore = (isEventsLoading && !currentViewData.options.progressiveEventRendering) ?\n (state.renderableEventStore || eventStore) : // try from previous state\n eventStore;\n var _b = this.buildViewUiProps(calendarContext), eventUiSingleBase = _b.eventUiSingleBase, selectionConfig = _b.selectionConfig; // will memoize obj\n var eventUiBySource = this.buildEventUiBySource(eventSources);\n var eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n var newState = {\n dynamicOptionOverrides: dynamicOptionOverrides,\n currentViewType: currentViewType,\n currentDate: currentDate,\n dateProfile: dateProfile,\n eventSources: eventSources,\n eventStore: eventStore,\n renderableEventStore: renderableEventStore,\n selectionConfig: selectionConfig,\n eventUiBases: eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action),\n };\n var contextAndState = __assign(__assign({}, calendarContext), newState);\n for (var _i = 0, _c = optionsData.pluginHooks.reducers; _i < _c.length; _i++) {\n var reducer = _c[_i];\n __assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n }\n var wasLoading = computeIsLoading(state, calendarContext);\n var isLoading = computeIsLoading(newState, calendarContext);\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n }\n else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n this.state = newState;\n if (props.onAction) {\n props.onAction(action);\n }\n };\n CalendarDataManager.prototype.updateData = function () {\n var _a = this, props = _a.props, state = _a.state;\n var oldData = this.data;\n var optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n var currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n var data = this.data = __assign(__assign(__assign({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);\n var changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n var oldCalendarOptions = oldData && oldData.calendarOptions;\n var newCalendarOptions = optionsData.calendarOptions;\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n }\n for (var optionName in changeHandlers) {\n if (oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n if (props.onData) {\n props.onData(data);\n }\n };\n CalendarDataManager.prototype._computeOptionsData = function (optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n var _a = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, pluginHooks = _a.pluginHooks, localeDefaults = _a.localeDefaults, availableLocaleData = _a.availableLocaleData, extra = _a.extra;\n warnUnknownOptions(extra);\n var dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n var viewSpecs = this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults);\n var theme = this.buildTheme(refinedOptions, pluginHooks);\n var toolbarConfig = this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi);\n return {\n calendarOptions: refinedOptions,\n pluginHooks: pluginHooks,\n dateEnv: dateEnv,\n viewSpecs: viewSpecs,\n theme: theme,\n toolbarConfig: toolbarConfig,\n localeDefaults: localeDefaults,\n availableRawLocales: availableLocaleData.map,\n };\n };\n // always called from behind a memoizer\n CalendarDataManager.prototype.processRawCalendarOptions = function (optionOverrides, dynamicOptionOverrides) {\n var _a = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n optionOverrides,\n dynamicOptionOverrides,\n ]), locales = _a.locales, locale = _a.locale;\n var availableLocaleData = this.organizeRawLocales(locales);\n var availableRawLocales = availableLocaleData.map;\n var localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n var pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n var refiners = this.currentCalendarOptionsRefiners = __assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n var extra = {};\n var raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n localeDefaults,\n optionOverrides,\n dynamicOptionOverrides,\n ]);\n var refined = {};\n var currentRaw = this.currentCalendarOptionsInput;\n var currentRefined = this.currentCalendarOptionsRefined;\n var anyChanges = false;\n for (var optionName in raw) {\n if (optionName !== 'plugins') { // because plugins is special-cased\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n (optionName in currentRaw) &&\n COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n }\n else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n }\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks: pluginHooks,\n availableLocaleData: availableLocaleData,\n localeDefaults: localeDefaults,\n extra: extra,\n };\n };\n CalendarDataManager.prototype._computeCurrentViewData = function (viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n var viewSpec = optionsData.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(\"viewType \\\"\" + viewType + \"\\\" is not available. Please make sure you've loaded all neccessary plugins\");\n }\n var _a = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides), refinedOptions = _a.refinedOptions, extra = _a.extra;\n warnUnknownOptions(extra);\n var dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n monthMode: refinedOptions.monthMode,\n fixedWeekCount: refinedOptions.fixedWeekCount,\n });\n var viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return { viewSpec: viewSpec, options: refinedOptions, dateProfileGenerator: dateProfileGenerator, viewApi: viewApi };\n };\n CalendarDataManager.prototype.processRawViewOptions = function (viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n var raw = mergeRawOptions([\n BASE_OPTION_DEFAULTS,\n viewSpec.optionDefaults,\n localeDefaults,\n optionOverrides,\n viewSpec.optionOverrides,\n dynamicOptionOverrides,\n ]);\n var refiners = __assign(__assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n var refined = {};\n var currentRaw = this.currentViewOptionsInput;\n var currentRefined = this.currentViewOptionsRefined;\n var anyChanges = false;\n var extra = {};\n for (var optionName in raw) {\n if (raw[optionName] === currentRaw[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n }\n else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName] ||\n (COMPLEX_OPTION_COMPARATORS[optionName] &&\n COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName]))) {\n if (optionName in this.currentCalendarOptionsRefined) { // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n }\n else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n }\n else {\n extra[optionName] = raw[optionName];\n }\n anyChanges = true;\n }\n }\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra: extra,\n };\n };\n return CalendarDataManager;\n}());\nfunction buildDateEnv(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n var locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone: timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale: locale,\n weekNumberCalculation: weekNumberCalculation,\n firstDay: firstDay,\n weekText: weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator: defaultSeparator,\n });\n}\nfunction buildTheme(options, pluginHooks) {\n var ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n var DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewApi(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, function (eventSource) { return eventSource.ui; });\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n var eventUiBases = { '': eventUiSingleBase };\n for (var defId in eventDefs) {\n var def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n var options = calendarContext.options;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor,\n // classNames: options.eventClassNames // render hook will handle this\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow,\n }, calendarContext),\n };\n}\nfunction computeIsLoading(state, context) {\n for (var _i = 0, _a = context.pluginHooks.isLoadingFuncs; _i < _a.length; _i++) {\n var isLoadingFunc = _a[_i];\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n for (var optionName in options) {\n console.warn(\"Unknown option '\" + optionName + \"'\" +\n (viewName ? \" for view '\" + viewName + \"'\" : ''));\n }\n}\n\n// TODO: move this to react plugin?\nvar CalendarDataProvider = /** @class */ (function (_super) {\n __extends(CalendarDataProvider, _super);\n function CalendarDataProvider(props) {\n var _this = _super.call(this, props) || this;\n _this.handleData = function (data) {\n if (!_this.dataManager) { // still within initial run, before assignment in constructor\n // eslint-disable-next-line react/no-direct-mutation-state\n _this.state = data; // can't use setState yet\n }\n else {\n _this.setState(data);\n }\n };\n _this.dataManager = new CalendarDataManager({\n optionOverrides: props.optionOverrides,\n calendarApi: props.calendarApi,\n onData: _this.handleData,\n });\n return _this;\n }\n CalendarDataProvider.prototype.render = function () {\n return this.props.children(this.state);\n };\n CalendarDataProvider.prototype.componentDidUpdate = function (prevProps) {\n var newOptionOverrides = this.props.optionOverrides;\n if (newOptionOverrides !== prevProps.optionOverrides) { // prevent recursive handleData\n this.dataManager.resetOptions(newOptionOverrides);\n }\n };\n return CalendarDataProvider;\n}(Component));\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\n\nvar NamedTimeZoneImpl = /** @class */ (function () {\n function NamedTimeZoneImpl(timeZoneName) {\n this.timeZoneName = timeZoneName;\n }\n return NamedTimeZoneImpl;\n}());\n\nvar SegHierarchy = /** @class */ (function () {\n function SegHierarchy() {\n // settings\n this.strictOrder = false;\n this.allowReslicing = false;\n this.maxCoord = -1; // -1 means no max\n this.maxStackCnt = -1; // -1 means no max\n this.levelCoords = []; // ordered\n this.entriesByLevel = []; // parallel with levelCoords\n this.stackCnts = {}; // TODO: use better technique!?\n }\n SegHierarchy.prototype.addSegs = function (inputs) {\n var hiddenEntries = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n this.insertEntry(input, hiddenEntries);\n }\n return hiddenEntries;\n };\n SegHierarchy.prototype.insertEntry = function (entry, hiddenEntries) {\n var insertion = this.findInsertion(entry);\n if (this.isInsertionValid(insertion, entry)) {\n this.insertEntryAt(entry, insertion);\n return 1;\n }\n return this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n };\n SegHierarchy.prototype.isInsertionValid = function (insertion, entry) {\n return (this.maxCoord === -1 || insertion.levelCoord + entry.thickness <= this.maxCoord) &&\n (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n };\n // returns number of new entries inserted\n SegHierarchy.prototype.handleInvalidInsertion = function (insertion, entry, hiddenEntries) {\n if (this.allowReslicing && insertion.touchingEntry) {\n return this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n }\n hiddenEntries.push(entry);\n return 0;\n };\n SegHierarchy.prototype.splitEntry = function (entry, barrier, hiddenEntries) {\n var partCnt = 0;\n var splitHiddenEntries = [];\n var entrySpan = entry.span;\n var barrierSpan = barrier.span;\n if (entrySpan.start < barrierSpan.start) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: entrySpan.start, end: barrierSpan.start },\n }, splitHiddenEntries);\n }\n if (entrySpan.end > barrierSpan.end) {\n partCnt += this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: { start: barrierSpan.end, end: entrySpan.end },\n }, splitHiddenEntries);\n }\n if (partCnt) {\n hiddenEntries.push.apply(hiddenEntries, __spreadArray([{\n index: entry.index,\n thickness: entry.thickness,\n span: intersectSpans(barrierSpan, entrySpan), // guaranteed to intersect\n }], splitHiddenEntries));\n return partCnt;\n }\n hiddenEntries.push(entry);\n return 0;\n };\n SegHierarchy.prototype.insertEntryAt = function (entry, insertion) {\n var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords;\n if (insertion.lateral === -1) {\n // create a new level\n insertAt(levelCoords, insertion.level, insertion.levelCoord);\n insertAt(entriesByLevel, insertion.level, [entry]);\n }\n else {\n // insert into existing level\n insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n }\n this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n };\n SegHierarchy.prototype.findInsertion = function (newEntry) {\n var _a = this, levelCoords = _a.levelCoords, entriesByLevel = _a.entriesByLevel, strictOrder = _a.strictOrder, stackCnts = _a.stackCnts;\n var levelCnt = levelCoords.length;\n var candidateCoord = 0;\n var touchingLevel = -1;\n var touchingLateral = -1;\n var touchingEntry = null;\n var stackCnt = 0;\n for (var trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n var trackingCoord = levelCoords[trackingLevel];\n // if the current level is past the placed entry, we have found a good empty space and can stop.\n // if strictOrder, keep finding more lateral intersections.\n if (!strictOrder && trackingCoord >= candidateCoord + newEntry.thickness) {\n break;\n }\n var trackingEntries = entriesByLevel[trackingLevel];\n var trackingEntry = void 0;\n var searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n var lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n while ( // loop through entries that horizontally intersect\n (trackingEntry = trackingEntries[lateralIndex]) && // but not past the whole entry list\n trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n ) {\n var trackingEntryBottom = trackingCoord + trackingEntry.thickness;\n // intersects into the top of the candidate?\n if (trackingEntryBottom > candidateCoord) {\n candidateCoord = trackingEntryBottom;\n touchingEntry = trackingEntry;\n touchingLevel = trackingLevel;\n touchingLateral = lateralIndex;\n }\n // butts up against top of candidate? (will happen if just intersected as well)\n if (trackingEntryBottom === candidateCoord) {\n // accumulate the highest possible stackCnt of the trackingEntries that butt up\n stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n }\n lateralIndex += 1;\n }\n }\n // the destination level will be after touchingEntry's level. find it\n var destLevel = 0;\n if (touchingEntry) {\n destLevel = touchingLevel + 1;\n while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n destLevel += 1;\n }\n }\n // if adding to an existing level, find where to insert\n var destLateral = -1;\n if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n }\n return {\n touchingLevel: touchingLevel,\n touchingLateral: touchingLateral,\n touchingEntry: touchingEntry,\n stackCnt: stackCnt,\n levelCoord: candidateCoord,\n level: destLevel,\n lateral: destLateral,\n };\n };\n // sorted by levelCoord (lowest to highest)\n SegHierarchy.prototype.toRects = function () {\n var _a = this, entriesByLevel = _a.entriesByLevel, levelCoords = _a.levelCoords;\n var levelCnt = entriesByLevel.length;\n var rects = [];\n for (var level = 0; level < levelCnt; level += 1) {\n var entries = entriesByLevel[level];\n var levelCoord = levelCoords[level];\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n rects.push(__assign(__assign({}, entry), { levelCoord: levelCoord }));\n }\n }\n return rects;\n };\n return SegHierarchy;\n}());\nfunction getEntrySpanEnd(entry) {\n return entry.span.end;\n}\nfunction buildEntryKey(entry) {\n return entry.index + ':' + entry.span.start;\n}\n// returns groups with entries sorted by input order\nfunction groupIntersectingEntries(entries) {\n var merges = [];\n for (var _i = 0, entries_2 = entries; _i < entries_2.length; _i++) {\n var entry = entries_2[_i];\n var filteredMerges = [];\n var hungryMerge = {\n span: entry.span,\n entries: [entry],\n };\n for (var _a = 0, merges_1 = merges; _a < merges_1.length; _a++) {\n var merge = merges_1[_a];\n if (intersectSpans(merge.span, hungryMerge.span)) {\n hungryMerge = {\n entries: merge.entries.concat(hungryMerge.entries),\n span: joinSpans(merge.span, hungryMerge.span),\n };\n }\n else {\n filteredMerges.push(merge);\n }\n }\n filteredMerges.push(hungryMerge);\n merges = filteredMerges;\n }\n return merges;\n}\nfunction joinSpans(span0, span1) {\n return {\n start: Math.min(span0.start, span1.start),\n end: Math.max(span0.end, span1.end),\n };\n}\nfunction intersectSpans(span0, span1) {\n var start = Math.max(span0.start, span1.start);\n var end = Math.min(span0.end, span1.end);\n if (start < end) {\n return { start: start, end: end };\n }\n return null;\n}\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\nfunction insertAt(arr, index, item) {\n arr.splice(index, 0, item);\n}\nfunction binarySearch(a, searchVal, getItemVal) {\n var startIndex = 0;\n var endIndex = a.length; // exclusive\n if (!endIndex || searchVal < getItemVal(a[startIndex])) { // no items OR before first item\n return [0, 0];\n }\n if (searchVal > getItemVal(a[endIndex - 1])) { // after last item\n return [endIndex, 0];\n }\n while (startIndex < endIndex) {\n var middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n var middleVal = getItemVal(a[middleIndex]);\n if (searchVal < middleVal) {\n endIndex = middleIndex;\n }\n else if (searchVal > middleVal) {\n startIndex = middleIndex + 1;\n }\n else { // equal!\n return [middleIndex, 1];\n }\n }\n return [startIndex, 0];\n}\n\nvar Interaction = /** @class */ (function () {\n function Interaction(settings) {\n this.component = settings.component;\n this.isHitComboAllowed = settings.isHitComboAllowed || null;\n }\n Interaction.prototype.destroy = function () {\n };\n return Interaction;\n}());\nfunction parseInteractionSettings(component, input) {\n return {\n component: component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n isHitComboAllowed: input.isHitComboAllowed || null,\n };\n}\nfunction interactionSettingsToStore(settings) {\n var _a;\n return _a = {},\n _a[settings.component.uid] = settings,\n _a;\n}\n// global state\nvar interactionSettingsStore = {};\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nvar ElementDragging = /** @class */ (function () {\n function ElementDragging(el, selector) {\n this.emitter = new Emitter();\n }\n ElementDragging.prototype.destroy = function () {\n };\n ElementDragging.prototype.setMirrorIsVisible = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setMirrorNeedsRevert = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setAutoScrollEnabled = function (bool) {\n // optional\n };\n return ElementDragging;\n}());\n\n// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nvar config = {};\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\nvar DRAG_META_REFINERS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String,\n};\nfunction parseDragMeta(raw) {\n var _a = refineProps(raw, DRAG_META_REFINERS), refined = _a.refined, extra = _a.extra;\n return {\n startTime: refined.startTime || null,\n duration: refined.duration || null,\n create: refined.create != null ? refined.create : true,\n sourceId: refined.sourceId,\n leftoverProps: extra,\n };\n}\n\nvar ToolbarSection = /** @class */ (function (_super) {\n __extends(ToolbarSection, _super);\n function ToolbarSection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ToolbarSection.prototype.render = function () {\n var _this = this;\n var children = this.props.widgetGroups.map(function (widgetGroup) { return _this.renderWidgetGroup(widgetGroup); });\n return createElement.apply(void 0, __spreadArray(['div', { className: 'fc-toolbar-chunk' }], children));\n };\n ToolbarSection.prototype.renderWidgetGroup = function (widgetGroup) {\n var props = this.props;\n var theme = this.context.theme;\n var children = [];\n var isOnlyButtons = true;\n for (var _i = 0, widgetGroup_1 = widgetGroup; _i < widgetGroup_1.length; _i++) {\n var widget = widgetGroup_1[_i];\n var buttonName = widget.buttonName, buttonClick = widget.buttonClick, buttonText = widget.buttonText, buttonIcon = widget.buttonIcon, buttonHint = widget.buttonHint;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", { className: \"fc-toolbar-title\", id: props.titleId }, props.title));\n }\n else {\n var isPressed = buttonName === props.activeButton;\n var isDisabled = (!props.isTodayEnabled && buttonName === 'today') ||\n (!props.isPrevEnabled && buttonName === 'prev') ||\n (!props.isNextEnabled && buttonName === 'next');\n var buttonClasses = [\"fc-\" + buttonName + \"-button\", theme.getClass('button')];\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n children.push(createElement(\"button\", { type: \"button\", title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint, disabled: isDisabled, \"aria-pressed\": isPressed, className: buttonClasses.join(' '), onClick: buttonClick }, buttonText || (buttonIcon ? createElement(\"span\", { className: buttonIcon }) : '')));\n }\n }\n if (children.length > 1) {\n var groupClassName = (isOnlyButtons && theme.getClass('buttonGroup')) || '';\n return createElement.apply(void 0, __spreadArray(['div', { className: groupClassName }], children));\n }\n return children[0];\n };\n return ToolbarSection;\n}(BaseComponent));\n\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Toolbar.prototype.render = function () {\n var _a = this.props, model = _a.model, extraClassName = _a.extraClassName;\n var forceLtr = false;\n var startContent;\n var endContent;\n var sectionWidgets = model.sectionWidgets;\n var centerContent = sectionWidgets.center;\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n }\n else {\n startContent = sectionWidgets.start;\n }\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n }\n else {\n endContent = sectionWidgets.end;\n }\n var classNames = [\n extraClassName || '',\n 'fc-toolbar',\n forceLtr ? 'fc-toolbar-ltr' : '',\n ];\n return (createElement(\"div\", { className: classNames.join(' ') },\n this.renderSection('start', startContent || []),\n this.renderSection('center', centerContent || []),\n this.renderSection('end', endContent || [])));\n };\n Toolbar.prototype.renderSection = function (key, widgetGroups) {\n var props = this.props;\n return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, navUnit: props.navUnit, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled, titleId: props.titleId }));\n };\n return Toolbar;\n}(BaseComponent));\n\n// TODO: do function component?\nvar ViewContainer = /** @class */ (function (_super) {\n __extends(ViewContainer, _super);\n function ViewContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n availableWidth: null,\n };\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n _this.updateAvailableWidth();\n };\n _this.handleResize = function () {\n _this.updateAvailableWidth();\n };\n return _this;\n }\n ViewContainer.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n var aspectRatio = props.aspectRatio;\n var classNames = [\n 'fc-view-harness',\n (aspectRatio || props.liquid || props.height)\n ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive', // let the view do the height\n ];\n var height = '';\n var paddingBottom = '';\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n }\n else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = (1 / aspectRatio) * 100 + \"%\";\n }\n }\n else {\n height = props.height || '';\n }\n return (createElement(\"div\", { \"aria-labelledby\": props.labeledById, ref: this.handleEl, className: classNames.join(' '), style: { height: height, paddingBottom: paddingBottom } }, props.children));\n };\n ViewContainer.prototype.componentDidMount = function () {\n this.context.addResizeHandler(this.handleResize);\n };\n ViewContainer.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleResize);\n };\n ViewContainer.prototype.updateAvailableWidth = function () {\n if (this.el && // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({ availableWidth: this.el.offsetWidth });\n }\n };\n return ViewContainer;\n}(BaseComponent));\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nvar EventClicking = /** @class */ (function (_super) {\n __extends(EventClicking, _super);\n function EventClicking(settings) {\n var _this = _super.call(this, settings) || this;\n _this.handleSegClick = function (ev, segEl) {\n var component = _this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n if (seg && // might be the
surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n var hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventApi(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n _this.destroy = listenBySelector(settings.el, 'click', '.fc-event', // on both fg and bg events\n _this.handleSegClick);\n return _this;\n }\n return EventClicking;\n}(Interaction));\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nvar EventHovering = /** @class */ (function (_super) {\n __extends(EventHovering, _super);\n function EventHovering(settings) {\n var _this = _super.call(this, settings) || this;\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n _this.handleEventElRemove = function (el) {\n if (el === _this.currentSegEl) {\n _this.handleSegLeave(null, _this.currentSegEl);\n }\n };\n _this.handleSegEnter = function (ev, segEl) {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n _this.currentSegEl = segEl;\n _this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n _this.handleSegLeave = function (ev, segEl) {\n if (_this.currentSegEl) {\n _this.currentSegEl = null;\n _this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n _this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event', // on both fg and bg events\n _this.handleSegEnter, _this.handleSegLeave);\n return _this;\n }\n EventHovering.prototype.destroy = function () {\n this.removeHoverListeners();\n };\n EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) {\n var component = this.component;\n var context = component.context;\n var seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventApi(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n };\n return EventHovering;\n}(Interaction));\n\nvar CalendarContent = /** @class */ (function (_super) {\n __extends(CalendarContent, _super);\n function CalendarContent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildViewContext = memoize(buildViewContext);\n _this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n _this.buildToolbarProps = memoize(buildToolbarProps);\n _this.headerRef = createRef();\n _this.footerRef = createRef();\n _this.interactionsStore = {};\n // eslint-disable-next-line\n _this.state = {\n viewLabelId: getUniqueDomId(),\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n _this.registerInteractiveComponent = function (component, settingsInput) {\n var settings = parseInteractionSettings(component, settingsInput);\n var DEFAULT_INTERACTIONS = [\n EventClicking,\n EventHovering,\n ];\n var interactionClasses = DEFAULT_INTERACTIONS.concat(_this.props.pluginHooks.componentInteractions);\n var interactions = interactionClasses.map(function (TheInteractionClass) { return new TheInteractionClass(settings); });\n _this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n _this.unregisterInteractiveComponent = function (component) {\n var listeners = _this.interactionsStore[component.uid];\n if (listeners) {\n for (var _i = 0, listeners_1 = listeners; _i < listeners_1.length; _i++) {\n var listener = listeners_1[_i];\n listener.destroy();\n }\n delete _this.interactionsStore[component.uid];\n }\n delete interactionSettingsStore[component.uid];\n };\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n _this.resizeRunner = new DelayedRunner(function () {\n _this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n _this.props.emitter.trigger('windowResize', { view: _this.props.viewApi });\n });\n _this.handleWindowResize = function (ev) {\n var options = _this.props.options;\n if (options.handleWindowResize &&\n ev.target === window // avoid jqui events\n ) {\n _this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n return _this;\n }\n /*\n renders INSIDE of an outer div\n */\n CalendarContent.prototype.render = function () {\n var props = this.props;\n var toolbarConfig = props.toolbarConfig, options = props.options;\n var toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv), // TODO: use NowTimer????\n props.viewTitle);\n var viewVGrow = false;\n var viewHeight = '';\n var viewAspectRatio;\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n }\n else if (options.height != null) {\n viewVGrow = true;\n }\n else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n }\n else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n var viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n var viewLabelId = (toolbarConfig.header && toolbarConfig.header.hasTitle)\n ? this.state.viewLabelId\n : '';\n return (createElement(ViewContextType.Provider, { value: viewContext },\n toolbarConfig.header && (createElement(Toolbar, __assign({ ref: this.headerRef, extraClassName: \"fc-header-toolbar\", model: toolbarConfig.header, titleId: viewLabelId }, toolbarProps))),\n createElement(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, labeledById: viewLabelId },\n this.renderView(props),\n this.buildAppendContent()),\n toolbarConfig.footer && (createElement(Toolbar, __assign({ ref: this.footerRef, extraClassName: \"fc-footer-toolbar\", model: toolbarConfig.footer, titleId: \"\" }, toolbarProps)))));\n };\n CalendarContent.prototype.componentDidMount = function () {\n var props = this.props;\n this.calendarInteractions = props.pluginHooks.calendarInteractions\n .map(function (CalendarInteractionClass) { return new CalendarInteractionClass(props); });\n window.addEventListener('resize', this.handleWindowResize);\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n for (var propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n };\n CalendarContent.prototype.componentDidUpdate = function (prevProps) {\n var props = this.props;\n var propSetHandlers = props.pluginHooks.propSetHandlers;\n for (var propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n };\n CalendarContent.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) {\n var interaction = _a[_i];\n interaction.destroy();\n }\n this.props.emitter.trigger('_unmount');\n };\n CalendarContent.prototype.buildAppendContent = function () {\n var props = this.props;\n var children = props.pluginHooks.viewContainerAppends.map(function (buildAppendContent) { return buildAppendContent(props); });\n return createElement.apply(void 0, __spreadArray([Fragment, {}], children));\n };\n CalendarContent.prototype.renderView = function (props) {\n var pluginHooks = props.pluginHooks;\n var viewSpec = props.viewSpec;\n var viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint,\n };\n var transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n __assign(viewProps, transformer.transform(viewProps, props));\n }\n var ViewComponent = viewSpec.component;\n return (createElement(ViewComponent, __assign({}, viewProps)));\n };\n return CalendarContent;\n}(PureComponent));\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n var todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title: title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid,\n };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map(function (TheClass) { return new TheClass(); });\n}\n\nvar CalendarRoot = /** @class */ (function (_super) {\n __extends(CalendarRoot, _super);\n function CalendarRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n forPrint: false,\n };\n _this.handleBeforePrint = function () {\n _this.setState({ forPrint: true });\n };\n _this.handleAfterPrint = function () {\n _this.setState({ forPrint: false });\n };\n return _this;\n }\n CalendarRoot.prototype.render = function () {\n var props = this.props;\n var options = props.options;\n var forPrint = this.state.forPrint;\n var isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n var height = (!isHeightAuto && options.height != null) ? options.height : '';\n var classNames = [\n 'fc',\n forPrint ? 'fc-media-print' : 'fc-media-screen',\n \"fc-direction-\" + options.direction,\n props.theme.getClass('root'),\n ];\n if (!getCanVGrowWithinCell()) {\n classNames.push('fc-liquid-hack');\n }\n return props.children(classNames, height, isHeightAuto, forPrint);\n };\n CalendarRoot.prototype.componentDidMount = function () {\n var emitter = this.props.emitter;\n emitter.on('_beforeprint', this.handleBeforePrint);\n emitter.on('_afterprint', this.handleAfterPrint);\n };\n CalendarRoot.prototype.componentWillUnmount = function () {\n var emitter = this.props.emitter;\n emitter.off('_beforeprint', this.handleBeforePrint);\n emitter.off('_afterprint', this.handleAfterPrint);\n };\n return CalendarRoot;\n}(BaseComponent));\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return createFormatter({ weekday: 'short' }); // \"Sat\"\n }\n if (dayCnt > 1) {\n return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }); // \"Sat 11/12\"\n }\n return createFormatter({ weekday: 'long' }); // \"Saturday\"\n}\n\nvar CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\nfunction renderInner$1(hookProps) {\n return hookProps.text;\n}\n\nvar TableDateCell = /** @class */ (function (_super) {\n __extends(TableDateCell, _super);\n function TableDateCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableDateCell.prototype.render = function () {\n var _a = this.context, dateEnv = _a.dateEnv, options = _a.options, theme = _a.theme, viewApi = _a.viewApi;\n var props = this.props;\n var date = props.date, dateProfile = props.dateProfile;\n var dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n var classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n var text = dateEnv.format(date, props.dayHeaderFormat);\n // if colCnt is 1, we are already in a day-view and don't need a navlink\n var navLinkAttrs = (!dayMeta.isDisabled && props.colCnt > 1)\n ? buildNavLinkAttrs(this.context, date)\n : {};\n var hookProps = __assign(__assign(__assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraHookProps), { text: text }), dayMeta);\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"th\", __assign({ ref: rootElRef, role: \"columnheader\", className: classNames.concat(customClassNames).join(' '), \"data-date\": !dayMeta.isDisabled ? formatDayString(date) : undefined, colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" }, !dayMeta.isDisabled && (createElement(\"a\", __assign({ ref: innerElRef, className: [\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' ') }, navLinkAttrs), innerContent))))); }));\n };\n return TableDateCell;\n}(BaseComponent));\n\nvar WEEKDAY_FORMAT = createFormatter({ weekday: 'long' });\nvar TableDowCell = /** @class */ (function (_super) {\n __extends(TableDowCell, _super);\n function TableDowCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TableDowCell.prototype.render = function () {\n var props = this.props;\n var _a = this.context, dateEnv = _a.dateEnv, theme = _a.theme, viewApi = _a.viewApi, options = _a.options;\n var date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n var dateMeta = {\n dow: props.dow,\n isDisabled: false,\n isFuture: false,\n isPast: false,\n isToday: false,\n isOther: false,\n };\n var classNames = [CLASS_NAME].concat(getDayClassNames(dateMeta, theme), props.extraClassNames || []);\n var text = dateEnv.format(date, props.dayHeaderFormat);\n var hookProps = __assign(__assign(__assign(__assign({ // TODO: make this public?\n date: date }, dateMeta), { view: viewApi }), props.extraHookProps), { text: text });\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner$1, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return (createElement(\"th\", __assign({ ref: rootElRef, role: \"columnheader\", className: classNames.concat(customClassNames).join(' '), colSpan: props.colSpan }, props.extraDataAttrs),\n createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n createElement(\"a\", { \"aria-label\": dateEnv.format(date, WEEKDAY_FORMAT), className: [\n 'fc-col-header-cell-cushion',\n props.isSticky ? 'fc-sticky' : '',\n ].join(' '), ref: innerElRef }, innerContent)))); }));\n };\n return TableDowCell;\n}(BaseComponent));\n\nvar NowTimer = /** @class */ (function (_super) {\n __extends(NowTimer, _super);\n function NowTimer(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.initialNowDate = getNow(context.options.now, context.dateEnv);\n _this.initialNowQueriedMs = new Date().valueOf();\n _this.state = _this.computeTiming().currentState;\n return _this;\n }\n NowTimer.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state;\n return props.children(state.nowDate, state.todayRange);\n };\n NowTimer.prototype.componentDidMount = function () {\n this.setTimeout();\n };\n NowTimer.prototype.componentDidUpdate = function (prevProps) {\n if (prevProps.unit !== this.props.unit) {\n this.clearTimeout();\n this.setTimeout();\n }\n };\n NowTimer.prototype.componentWillUnmount = function () {\n this.clearTimeout();\n };\n NowTimer.prototype.computeTiming = function () {\n var _a = this, props = _a.props, context = _a.context;\n var unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);\n var currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);\n var nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));\n var waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();\n // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n // ensure no longer than a day\n waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n return {\n currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },\n nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },\n waitMs: waitMs,\n };\n };\n NowTimer.prototype.setTimeout = function () {\n var _this = this;\n var _a = this.computeTiming(), nextState = _a.nextState, waitMs = _a.waitMs;\n this.timeoutId = setTimeout(function () {\n _this.setState(nextState, function () {\n _this.setTimeout();\n });\n }, waitMs);\n };\n NowTimer.prototype.clearTimeout = function () {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n };\n NowTimer.contextType = ViewContextType;\n return NowTimer;\n}(Component));\nfunction buildDayRange(date) {\n var start = startOfDay(date);\n var end = addDays(start, 1);\n return { start: start, end: end };\n}\n\nvar DayHeader = /** @class */ (function (_super) {\n __extends(DayHeader, _super);\n function DayHeader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n return _this;\n }\n DayHeader.prototype.render = function () {\n var context = this.context;\n var _a = this.props, dates = _a.dates, dateProfile = _a.dateProfile, datesRepDistinctDays = _a.datesRepDistinctDays, renderIntro = _a.renderIntro;\n var dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n return (createElement(NowTimer, { unit: \"day\" }, function (nowDate, todayRange) { return (createElement(\"tr\", { role: \"row\" },\n renderIntro && renderIntro('day'),\n dates.map(function (date) { return (datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat })) : (createElement(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat }))); }))); }));\n };\n return DayHeader;\n}(BaseComponent));\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\n\nvar DaySeriesModel = /** @class */ (function () {\n function DaySeriesModel(range, dateProfileGenerator) {\n var date = range.start;\n var end = range.end;\n var indices = [];\n var dates = [];\n var dayIndex = -1;\n while (date < end) { // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5); // mark that it's between indices\n }\n else {\n dayIndex += 1;\n indices.push(dayIndex);\n dates.push(date);\n }\n date = addDays(date, 1);\n }\n this.dates = dates;\n this.indices = indices;\n this.cnt = dates.length;\n }\n DaySeriesModel.prototype.sliceRange = function (range) {\n var firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n var clippedFirstIndex = Math.max(0, firstIndex);\n var clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n // deal with in-between indices\n clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex,\n };\n }\n return null;\n };\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n DaySeriesModel.prototype.getDateDayIndex = function (date) {\n var indices = this.indices;\n var dayOffset = Math.floor(diffDays(this.dates[0], date));\n if (dayOffset < 0) {\n return indices[0] - 1;\n }\n if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1;\n }\n return indices[dayOffset];\n };\n return DaySeriesModel;\n}());\n\nvar DayTableModel = /** @class */ (function () {\n function DayTableModel(daySeries, breakOnWeeks) {\n var dates = daySeries.dates;\n var daysPerRow;\n var firstDay;\n var rowCnt;\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay();\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break;\n }\n }\n rowCnt = Math.ceil(dates.length / daysPerRow);\n }\n else {\n rowCnt = 1;\n daysPerRow = dates.length;\n }\n this.rowCnt = rowCnt;\n this.colCnt = daysPerRow;\n this.daySeries = daySeries;\n this.cells = this.buildCells();\n this.headerDates = this.buildHeaderDates();\n }\n DayTableModel.prototype.buildCells = function () {\n var rows = [];\n for (var row = 0; row < this.rowCnt; row += 1) {\n var cells = [];\n for (var col = 0; col < this.colCnt; col += 1) {\n cells.push(this.buildCell(row, col));\n }\n rows.push(cells);\n }\n return rows;\n };\n DayTableModel.prototype.buildCell = function (row, col) {\n var date = this.daySeries.dates[row * this.colCnt + col];\n return {\n key: date.toISOString(),\n date: date,\n };\n };\n DayTableModel.prototype.buildHeaderDates = function () {\n var dates = [];\n for (var col = 0; col < this.colCnt; col += 1) {\n dates.push(this.cells[0][col].date);\n }\n return dates;\n };\n DayTableModel.prototype.sliceRange = function (range) {\n var colCnt = this.colCnt;\n var seriesSeg = this.daySeries.sliceRange(range);\n var segs = [];\n if (seriesSeg) {\n var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex;\n var index = firstIndex;\n while (index <= lastIndex) {\n var row = Math.floor(index / colCnt);\n var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n segs.push({\n row: row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex,\n });\n index = nextIndex;\n }\n }\n return segs;\n };\n return DayTableModel;\n}());\n\nvar Slicer = /** @class */ (function () {\n function Slicer() {\n this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n this.sliceDateSelection = memoize(this._sliceDateSpan);\n this.sliceEventStore = memoize(this._sliceEventStore);\n this.sliceEventDrag = memoize(this._sliceInteraction);\n this.sliceEventResize = memoize(this._sliceInteraction);\n this.forceDayIfListItem = false; // hack\n }\n Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n var eventUiBases = props.eventUiBases;\n var eventSegs = this.sliceEventStore.apply(this, __spreadArray([props.eventStore, eventUiBases, dateProfile, nextDayThreshold], extraArgs));\n return {\n dateSelectionSegs: this.sliceDateSelection.apply(this, __spreadArray([props.dateSelection, eventUiBases, context], extraArgs)),\n businessHourSegs: this.sliceBusinessHours.apply(this, __spreadArray([props.businessHours, dateProfile, nextDayThreshold, context], extraArgs)),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag.apply(this, __spreadArray([props.eventDrag, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventResize: this.sliceEventResize.apply(this, __spreadArray([props.eventResize, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),\n eventSelection: props.eventSelection,\n }; // TODO: give interactionSegs?\n };\n Slicer.prototype.sliceNowDate = function (// does not memoize\n date, context) {\n var extraArgs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n extraArgs[_i - 2] = arguments[_i];\n }\n return this._sliceDateSpan.apply(this, __spreadArray([{ range: { start: date, end: addMs(date, 1) }, allDay: false },\n {},\n context], extraArgs));\n };\n Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, context) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (!businessHours) {\n return [];\n }\n return this._sliceEventStore.apply(this, __spreadArray([expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context),\n {},\n dateProfile,\n nextDayThreshold], extraArgs)).bg;\n };\n Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (eventStore) {\n var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, extraArgs),\n };\n }\n return { bg: [], fg: [] };\n };\n Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold) {\n var extraArgs = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n extraArgs[_i - 4] = arguments[_i];\n }\n if (!interaction) {\n return null;\n }\n var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent,\n };\n };\n Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, context) {\n var extraArgs = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n extraArgs[_i - 3] = arguments[_i];\n }\n if (!dateSpan) {\n return [];\n }\n var eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n var segs = this.sliceRange.apply(this, __spreadArray([dateSpan.range], extraArgs));\n for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) {\n var seg = segs_1[_a];\n seg.eventRange = eventRange;\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRanges = function (eventRanges, extraArgs) {\n var segs = [];\n for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {\n var eventRange = eventRanges_1[_i];\n segs.push.apply(segs, this.sliceEventRange(eventRange, extraArgs));\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRange = function (eventRange, extraArgs) {\n var dateRange = eventRange.range;\n // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n dateRange = {\n start: dateRange.start,\n end: addDays(dateRange.start, 1),\n };\n }\n var segs = this.sliceRange.apply(this, __spreadArray([dateRange], extraArgs));\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n seg.eventRange = eventRange;\n seg.isStart = eventRange.isStart && seg.isStart;\n seg.isEnd = eventRange.isEnd && seg.isEnd;\n }\n return segs;\n };\n return Slicer;\n}());\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n var range = dateProfile.activeRange;\n if (isComponentAllDay) {\n return range;\n }\n return {\n start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5), // 864e5 = ms in a day\n };\n}\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionValid(interaction, dateProfile, context) {\n var instances = interaction.mutatedEvents.instances;\n for (var instanceId in instances) {\n if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n return false;\n }\n }\n return isNewPropsValid({ eventDrag: interaction }, context); // HACK: the eventDrag props is used for ALL interactions\n}\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n return false;\n }\n return isNewPropsValid({ dateSelection: dateSelection }, context);\n}\nfunction isNewPropsValid(newProps, context) {\n var calendarState = context.getCurrentData();\n var props = __assign({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);\n return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\nfunction isPropsValid(state, context, dateSpanMeta, filterConfig) {\n if (dateSpanMeta === void 0) { dateSpanMeta = {}; }\n if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n return true;\n}\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var currentState = context.getCurrentData();\n var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n var subjectEventStore = interaction.mutatedEvents;\n var subjectDefs = subjectEventStore.defs;\n var subjectInstances = subjectEventStore.instances;\n var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?\n state.eventUiBases :\n { '': currentState.selectionConfig });\n if (filterConfig) {\n subjectConfigs = mapHash(subjectConfigs, filterConfig);\n }\n // exclude the subject events. TODO: exclude defs too?\n var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n var otherDefs = otherEventStore.defs;\n var otherInstances = otherEventStore.instances;\n var otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n for (var subjectInstanceId in subjectInstances) {\n var subjectInstance = subjectInstances[subjectInstanceId];\n var subjectRange = subjectInstance.range;\n var subjectConfig = subjectConfigs[subjectInstance.defId];\n var subjectDef = subjectDefs[subjectInstance.defId];\n // constraint\n if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n var eventOverlap = context.options.eventOverlap;\n var eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n for (var otherInstanceId in otherInstances) {\n var otherInstance = otherInstances[otherInstanceId];\n // intersect! evaluate\n if (rangesIntersect(subjectRange, otherInstance.range)) {\n var otherOverlap = otherConfigs[otherInstance.defId].overlap;\n // consider the other event's overlap. only do this if the subject event is a \"real\" event\n if (otherOverlap === false && interaction.isEvent) {\n return false;\n }\n if (subjectConfig.overlap === false) {\n return false;\n }\n if (eventOverlapFunc && !eventOverlapFunc(new EventApi(context, otherDefs[otherInstance.defId], otherInstance), // still event\n new EventApi(context, subjectDef, subjectInstance))) {\n return false;\n }\n }\n }\n // allow (a function)\n var calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) {\n var subjectAllow = _a[_i];\n var subjectDateSpan = __assign(__assign({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay });\n var origDef = calendarEventStore.defs[subjectDef.defId];\n var origInstance = calendarEventStore.instances[subjectInstanceId];\n var eventApi = void 0;\n if (origDef) { // was previously in the calendar\n eventApi = new EventApi(context, origDef, origInstance);\n }\n else { // was an external event\n eventApi = new EventApi(context, subjectDef); // no instance, because had no dates\n }\n if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n return false;\n }\n }\n }\n return true;\n}\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n var relevantEventStore = state.eventStore;\n var relevantDefs = relevantEventStore.defs;\n var relevantInstances = relevantEventStore.instances;\n var selection = state.dateSelection;\n var selectionRange = selection.range;\n var selectionConfig = context.getCurrentData().selectionConfig;\n if (filterConfig) {\n selectionConfig = filterConfig(selectionConfig);\n }\n // constraint\n if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n var selectOverlap = context.options.selectOverlap;\n var selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n for (var relevantInstanceId in relevantInstances) {\n var relevantInstance = relevantInstances[relevantInstanceId];\n // intersect! evaluate\n if (rangesIntersect(selectionRange, relevantInstance.range)) {\n if (selectionConfig.overlap === false) {\n return false;\n }\n if (selectOverlapFunc && !selectOverlapFunc(new EventApi(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n return false;\n }\n }\n }\n // allow (a function)\n for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) {\n var selectionAllow = _a[_i];\n var fullDateSpan = __assign(__assign({}, dateSpanMeta), selection);\n if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n return false;\n }\n }\n return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) {\n var constraint = constraints_1[_i];\n if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n return false;\n }\n }\n return true;\n}\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncontext) {\n if (constraint === 'businessHours') {\n return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n }\n if (typeof constraint === 'string') { // an group ID\n return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) { return eventDef.groupId === constraint; }));\n }\n if (typeof constraint === 'object' && constraint) { // non-null object\n return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n }\n return []; // if it's false\n}\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore) {\n var instances = eventStore.instances;\n var ranges = [];\n for (var instanceId in instances) {\n ranges.push(instances[instanceId].range);\n }\n return ranges;\n}\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges, innerRange) {\n for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) {\n var outerRange = outerRanges_1[_i];\n if (rangeContainsRange(outerRange, innerRange)) {\n return true;\n }\n }\n return false;\n}\n\nvar VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\nvar Scroller = /** @class */ (function (_super) {\n __extends(Scroller, _super);\n function Scroller() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleEl = function (el) {\n _this.el = el;\n setRef(_this.props.elRef, el);\n };\n return _this;\n }\n Scroller.prototype.render = function () {\n var props = this.props;\n var liquid = props.liquid, liquidIsAbsolute = props.liquidIsAbsolute;\n var isAbsolute = liquid && liquidIsAbsolute;\n var className = ['fc-scroller'];\n if (liquid) {\n if (liquidIsAbsolute) {\n className.push('fc-scroller-liquid-absolute');\n }\n else {\n className.push('fc-scroller-liquid');\n }\n }\n return (createElement(\"div\", { ref: this.handleEl, className: className.join(' '), style: {\n overflowX: props.overflowX,\n overflowY: props.overflowY,\n left: (isAbsolute && -(props.overcomeLeft || 0)) || '',\n right: (isAbsolute && -(props.overcomeRight || 0)) || '',\n bottom: (isAbsolute && -(props.overcomeBottom || 0)) || '',\n marginLeft: (!isAbsolute && -(props.overcomeLeft || 0)) || '',\n marginRight: (!isAbsolute && -(props.overcomeRight || 0)) || '',\n marginBottom: (!isAbsolute && -(props.overcomeBottom || 0)) || '',\n maxHeight: props.maxHeight || '',\n } }, props.children));\n };\n Scroller.prototype.needsXScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return false;\n }\n // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n var el = this.el;\n var realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n var children = el.children;\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n if (childEl.getBoundingClientRect().width > realClientWidth) {\n return true;\n }\n }\n return false;\n };\n Scroller.prototype.needsYScrolling = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return false;\n }\n // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n var el = this.el;\n var realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n var children = el.children;\n for (var i = 0; i < children.length; i += 1) {\n var childEl = children[i];\n if (childEl.getBoundingClientRect().height > realClientHeight) {\n return true;\n }\n }\n return false;\n };\n Scroller.prototype.getXScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return 0;\n }\n return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n Scroller.prototype.getYScrollbarWidth = function () {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return 0;\n }\n return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n };\n return Scroller;\n}(BaseComponent));\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nvar RefMap = /** @class */ (function () {\n function RefMap(masterCallback) {\n var _this = this;\n this.masterCallback = masterCallback;\n this.currentMap = {};\n this.depths = {};\n this.callbackMap = {};\n this.handleValue = function (val, key) {\n var _a = _this, depths = _a.depths, currentMap = _a.currentMap;\n var removed = false;\n var added = false;\n if (val !== null) {\n // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n removed = (key in currentMap);\n currentMap[key] = val;\n depths[key] = (depths[key] || 0) + 1;\n added = true;\n }\n else {\n depths[key] -= 1;\n if (!depths[key]) {\n delete currentMap[key];\n delete _this.callbackMap[key];\n removed = true;\n }\n }\n if (_this.masterCallback) {\n if (removed) {\n _this.masterCallback(null, String(key));\n }\n if (added) {\n _this.masterCallback(val, String(key));\n }\n }\n };\n }\n RefMap.prototype.createRef = function (key) {\n var _this = this;\n var refCallback = this.callbackMap[key];\n if (!refCallback) {\n refCallback = this.callbackMap[key] = function (val) {\n _this.handleValue(val, String(key));\n };\n }\n return refCallback;\n };\n // TODO: check callers that don't care about order. should use getAll instead\n // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n RefMap.prototype.collect = function (startIndex, endIndex, step) {\n return collectFromHash(this.currentMap, startIndex, endIndex, step);\n };\n RefMap.prototype.getAll = function () {\n return hashValuesToArray(this.currentMap);\n };\n return RefMap;\n}());\n\nfunction computeShrinkWidth(chunkEls) {\n var shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n var largestWidth = 0;\n for (var _i = 0, shrinkCells_1 = shrinkCells; _i < shrinkCells_1.length; _i++) {\n var shrinkCell = shrinkCells_1[_i];\n largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n }\n return Math.ceil(largestWidth); // elements work best with integers. round up to ensure contents fits\n}\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\nfunction getAllowYScrolling(props, sectionConfig) {\n return sectionConfig.maxHeight != null || // if its possible for the height to max out, we might need scrollbars\n getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n}\n// TODO: ONLY use `arg`. force out internal function to use same API\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n var expandRows = arg.expandRows;\n var content = typeof chunkConfig.content === 'function' ?\n chunkConfig.content(arg) :\n createElement('table', {\n role: 'presentation',\n className: [\n chunkConfig.tableClassName,\n sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : '',\n ].join(' '),\n style: {\n minWidth: arg.tableMinWidth,\n width: arg.clientWidth,\n height: expandRows ? arg.clientHeight : '', // css `height` on a
serves as a min-height\n },\n }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n role: 'presentation',\n }, typeof chunkConfig.rowContent === 'function'\n ? chunkConfig.rowContent(arg)\n : chunkConfig.rowContent));\n return content;\n}\nfunction isColPropsEqual(cols0, cols1) {\n return isArraysEqual(cols0, cols1, isPropsEqual);\n}\nfunction renderMicroColGroup(cols, shrinkWidth) {\n var colNodes = [];\n /*\n for ColProps with spans, it would have been great to make a single \n HOWEVER, Chrome was getting messing up distributing the width to elements makes Chrome behave.\n */\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var colProps = cols_1[_i];\n var span = colProps.span || 1;\n for (var i = 0; i < span; i += 1) {\n colNodes.push(createElement(\"col\", { style: {\n width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : (colProps.width || ''),\n minWidth: colProps.minWidth || '',\n } }));\n }\n }\n return createElement.apply(void 0, __spreadArray(['colgroup', {}], colNodes));\n}\nfunction sanitizeShrinkWidth(shrinkWidth) {\n /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n 4 accounts for 2 2-pixel borders. TODO: better solution? */\n return shrinkWidth == null ? 4 : shrinkWidth;\n}\nfunction hasShrinkWidth(cols) {\n for (var _i = 0, cols_2 = cols; _i < cols_2.length; _i++) {\n var col = cols_2[_i];\n if (col.width === 'shrink') {\n return true;\n }\n }\n return false;\n}\nfunction getScrollGridClassNames(liquid, context) {\n var classNames = [\n 'fc-scrollgrid',\n context.theme.getClass('table'),\n ];\n if (liquid) {\n classNames.push('fc-scrollgrid-liquid');\n }\n return classNames;\n}\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n var classNames = [\n 'fc-scrollgrid-section',\n \"fc-scrollgrid-section-\" + sectionConfig.type,\n sectionConfig.className, // used?\n ];\n if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n classNames.push('fc-scrollgrid-section-liquid');\n }\n if (sectionConfig.isSticky) {\n classNames.push('fc-scrollgrid-section-sticky');\n }\n return classNames;\n}\nfunction renderScrollShim(arg) {\n return (createElement(\"div\", { className: \"fc-scrollgrid-sticky-shim\", style: {\n width: arg.clientWidth,\n minWidth: arg.tableMinWidth,\n } }));\n}\nfunction getStickyHeaderDates(options) {\n var stickyHeaderDates = options.stickyHeaderDates;\n if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyHeaderDates;\n}\nfunction getStickyFooterScrollbar(options) {\n var stickyFooterScrollbar = options.stickyFooterScrollbar;\n if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyFooterScrollbar;\n}\n\nvar SimpleScrollGrid = /** @class */ (function (_super) {\n __extends(SimpleScrollGrid, _super);\n function SimpleScrollGrid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.processCols = memoize(function (a) { return a; }, isColPropsEqual); // so we get same `cols` props every time\n // yucky to memoize VNodes, but much more efficient for consumers\n _this.renderMicroColGroup = memoize(renderMicroColGroup);\n _this.scrollerRefs = new RefMap();\n _this.scrollerElRefs = new RefMap(_this._handleScrollerEl.bind(_this));\n _this.state = {\n shrinkWidth: null,\n forceYScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n };\n // TODO: can do a really simple print-view. dont need to join rows\n _this.handleSizing = function () {\n _this.safeSetState(__assign({ shrinkWidth: _this.computeShrinkWidth() }, _this.computeScrollerDims()));\n };\n return _this;\n }\n SimpleScrollGrid.prototype.render = function () {\n var _a = this, props = _a.props, state = _a.state, context = _a.context;\n var sectionConfigs = props.sections || [];\n var cols = this.processCols(props.cols);\n var microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n var classNames = getScrollGridClassNames(props.liquid, context);\n if (props.collapsibleWidth) {\n classNames.push('fc-scrollgrid-collapsible');\n }\n // TODO: make DRY\n var configCnt = sectionConfigs.length;\n var configI = 0;\n var currentConfig;\n var headSectionNodes = [];\n var bodySectionNodes = [];\n var footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n // firefox bug: when setting height on table and there is a thead or tfoot,\n // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n // if so, use a simpler dom structure, jam everything into a lone tbody.\n var isBuggy = !getCanVGrowWithinCell();\n var roleAttrs = { role: 'rowgroup' };\n return createElement('table', {\n role: 'grid',\n className: classNames.join(' '),\n style: { height: props.height },\n }, Boolean(!isBuggy && headSectionNodes.length) && createElement.apply(void 0, __spreadArray(['thead', roleAttrs], headSectionNodes)), Boolean(!isBuggy && bodySectionNodes.length) && createElement.apply(void 0, __spreadArray(['tbody', roleAttrs], bodySectionNodes)), Boolean(!isBuggy && footSectionNodes.length) && createElement.apply(void 0, __spreadArray(['tfoot', roleAttrs], footSectionNodes)), isBuggy && createElement.apply(void 0, __spreadArray(__spreadArray(__spreadArray(['tbody', roleAttrs], headSectionNodes), bodySectionNodes), footSectionNodes)));\n };\n SimpleScrollGrid.prototype.renderSection = function (sectionConfig, microColGroupNode, isHeader) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader)));\n };\n SimpleScrollGrid.prototype.renderChunkTd = function (sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n if ('outerContent' in chunkConfig) {\n return chunkConfig.outerContent;\n }\n var props = this.props;\n var _a = this.state, forceYScrollbars = _a.forceYScrollbars, scrollerClientWidths = _a.scrollerClientWidths, scrollerClientHeights = _a.scrollerClientHeights;\n var needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n var isLiquid = getSectionHasLiquidHeight(props, sectionConfig);\n // for `!props.liquid` - is WHOLE scrollgrid natural height?\n // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n var overflowY = !props.liquid ? 'visible' :\n forceYScrollbars ? 'scroll' :\n !needsYScrolling ? 'hidden' :\n 'auto';\n var sectionKey = sectionConfig.key;\n var content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth: '',\n clientWidth: (!props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined) ? scrollerClientWidths[sectionKey] : null,\n clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n expandRows: sectionConfig.expandRows,\n syncRowHeights: false,\n rowSyncHeights: [],\n reportRowHeightChange: function () { },\n }, isHeader);\n return createElement(isHeader ? 'th' : 'td', {\n ref: chunkConfig.elRef,\n role: 'presentation',\n }, createElement(\"div\", { className: \"fc-scroller-harness\" + (isLiquid ? ' fc-scroller-harness-liquid' : '') },\n createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionKey), elRef: this.scrollerElRefs.createRef(sectionKey), overflowY: overflowY, overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */, maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute // because its within a harness\n : true }, content)));\n };\n SimpleScrollGrid.prototype._handleScrollerEl = function (scrollerEl, key) {\n var section = getSectionByKey(this.props.sections, key);\n if (section) {\n setRef(section.chunk.scrollerElRef, scrollerEl);\n }\n };\n SimpleScrollGrid.prototype.componentDidMount = function () {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n };\n SimpleScrollGrid.prototype.componentDidUpdate = function () {\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing();\n };\n SimpleScrollGrid.prototype.componentWillUnmount = function () {\n this.context.removeResizeHandler(this.handleSizing);\n };\n SimpleScrollGrid.prototype.computeShrinkWidth = function () {\n return hasShrinkWidth(this.props.cols)\n ? computeShrinkWidth(this.scrollerElRefs.getAll())\n : 0;\n };\n SimpleScrollGrid.prototype.computeScrollerDims = function () {\n var scrollbarWidth = getScrollbarWidths();\n var _a = this, scrollerRefs = _a.scrollerRefs, scrollerElRefs = _a.scrollerElRefs;\n var forceYScrollbars = false;\n var scrollerClientWidths = {};\n var scrollerClientHeights = {};\n for (var sectionKey in scrollerRefs.currentMap) {\n var scroller = scrollerRefs.currentMap[sectionKey];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (var _i = 0, _b = this.props.sections; _i < _b.length; _i++) {\n var section = _b[_i];\n var sectionKey = section.key;\n var scrollerEl = scrollerElRefs.currentMap[sectionKey];\n if (scrollerEl) {\n var harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n }\n }\n return { forceYScrollbars: forceYScrollbars, scrollerClientWidths: scrollerClientWidths, scrollerClientHeights: scrollerClientHeights };\n };\n return SimpleScrollGrid;\n}(BaseComponent));\nSimpleScrollGrid.addStateEquality({\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n});\nfunction getSectionByKey(sections, key) {\n for (var _i = 0, sections_1 = sections; _i < sections_1.length; _i++) {\n var section = sections_1[_i];\n if (section.key === key) {\n return section;\n }\n }\n return null;\n}\n\nvar EventRoot = /** @class */ (function (_super) {\n __extends(EventRoot, _super);\n function EventRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.elRef = createRef();\n return _this;\n }\n EventRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var seg = props.seg;\n var eventRange = seg.eventRange;\n var ui = eventRange.ui;\n var hookProps = {\n event: new EventApi(context, eventRange.def, eventRange.instance),\n view: context.viewApi,\n timeText: props.timeText,\n textColor: ui.textColor,\n backgroundColor: ui.backgroundColor,\n borderColor: ui.borderColor,\n isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n isStart: Boolean(seg.isStart),\n isEnd: Boolean(seg.isEnd),\n isPast: Boolean(props.isPast),\n isFuture: Boolean(props.isFuture),\n isToday: Boolean(props.isToday),\n isSelected: Boolean(props.isSelected),\n isDragging: Boolean(props.isDragging),\n isResizing: Boolean(props.isResizing),\n };\n var standardClassNames = getEventClassNames(hookProps).concat(ui.classNames);\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.eventClassNames, content: options.eventContent, defaultContent: props.defaultContent, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount, elRef: this.elRef }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps); }));\n };\n EventRoot.prototype.componentDidMount = function () {\n setElSeg(this.elRef.current, this.props.seg);\n };\n /*\n need to re-assign seg to the element if seg changes, even if the element is the same\n */\n EventRoot.prototype.componentDidUpdate = function (prevProps) {\n var seg = this.props.seg;\n if (seg !== prevProps.seg) {\n setElSeg(this.elRef.current, seg);\n }\n };\n return EventRoot;\n}(BaseComponent));\n\n// should not be a purecomponent\nvar StandardEvent = /** @class */ (function (_super) {\n __extends(StandardEvent, _super);\n function StandardEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StandardEvent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var seg = props.seg;\n var timeFormat = context.options.eventTimeFormat || props.defaultTimeFormat;\n var timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n return (createElement(EventRoot, { seg: seg, timeText: timeText, disableDragging: props.disableDragging, disableResizing: props.disableResizing, defaultContent: props.defaultContent || renderInnerContent$1, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement(\"a\", __assign({ className: props.extraClassNames.concat(classNames).join(' '), style: {\n borderColor: hookProps.borderColor,\n backgroundColor: hookProps.backgroundColor,\n }, ref: rootElRef }, getSegAnchorAttrs(seg, context)),\n createElement(\"div\", { className: \"fc-event-main\", ref: innerElRef, style: { color: hookProps.textColor } }, innerContent),\n hookProps.isStartResizable &&\n createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-start\" }),\n hookProps.isEndResizable &&\n createElement(\"div\", { className: \"fc-event-resizer fc-event-resizer-end\" }))); }));\n };\n return StandardEvent;\n}(BaseComponent));\nfunction renderInnerContent$1(innerProps) {\n return (createElement(\"div\", { className: \"fc-event-main-frame\" },\n innerProps.timeText && (createElement(\"div\", { className: \"fc-event-time\" }, innerProps.timeText)),\n createElement(\"div\", { className: \"fc-event-title-container\" },\n createElement(\"div\", { className: \"fc-event-title fc-sticky\" }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\")))));\n}\n\nvar NowIndicatorRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {\n var options = context.options;\n var hookProps = {\n isAxis: props.isAxis,\n date: context.dateEnv.toDate(props.date),\n view: context.viewApi,\n };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.nowIndicatorClassNames, content: options.nowIndicatorContent, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));\n})); };\n\nvar DAY_NUM_FORMAT = createFormatter({ day: 'numeric' });\nvar DayCellContent = /** @class */ (function (_super) {\n __extends(DayCellContent, _super);\n function DayCellContent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DayCellContent.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = refineDayCellHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n });\n return (createElement(ContentHook, { hookProps: hookProps, content: options.dayCellContent, defaultContent: props.defaultContent }, props.children));\n };\n return DayCellContent;\n}(BaseComponent));\nfunction refineDayCellHookProps(raw) {\n var date = raw.date, dateEnv = raw.dateEnv;\n var dayMeta = getDateMeta(date, raw.todayRange, null, raw.dateProfile);\n return __assign(__assign(__assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT) : '' }), raw.extraProps);\n}\n\nvar DayCellRoot = /** @class */ (function (_super) {\n __extends(DayCellRoot, _super);\n function DayCellRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.refineHookProps = memoizeObjArg(refineDayCellHookProps);\n _this.normalizeClassNames = buildClassNameNormalizer();\n return _this;\n }\n DayCellRoot.prototype.render = function () {\n var _a = this, props = _a.props, context = _a.context;\n var options = context.options;\n var hookProps = this.refineHookProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n extraProps: props.extraHookProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n });\n var classNames = getDayClassNames(hookProps, context.theme).concat(hookProps.isDisabled\n ? [] // don't use custom classNames if disabled\n : this.normalizeClassNames(options.dayCellClassNames, hookProps));\n var dataAttrs = hookProps.isDisabled ? {} : {\n 'data-date': formatDayString(props.date),\n };\n return (createElement(MountHook, { hookProps: hookProps, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount, elRef: props.elRef }, function (rootElRef) { return props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled); }));\n };\n return DayCellRoot;\n}(BaseComponent));\n\nfunction renderFill(fillType) {\n return (createElement(\"div\", { className: \"fc-\" + fillType }));\n}\nvar BgEvent = function (props) { return (createElement(EventRoot, { defaultContent: renderInnerContent, seg: props.seg /* uselesss i think */, timeText: \"\", disableDragging: true, disableResizing: true, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps) { return (createElement(\"div\", { ref: rootElRef, className: ['fc-bg-event'].concat(classNames).join(' '), style: {\n backgroundColor: hookProps.backgroundColor,\n } }, innerContent)); })); };\nfunction renderInnerContent(props) {\n var title = props.event.title;\n return title && (createElement(\"div\", { className: \"fc-event-title\" }, props.event.title));\n}\n\nvar WeekNumberRoot = function (props) { return (createElement(ViewContextType.Consumer, null, function (context) {\n var dateEnv = context.dateEnv, options = context.options;\n var date = props.date;\n var format = options.weekNumberFormat || props.defaultFormat;\n var num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n var text = dateEnv.format(date, format);\n var hookProps = { num: num, text: text, date: date };\n return (createElement(RenderHook, { hookProps: hookProps, classNames: options.weekNumberClassNames, content: options.weekNumberContent, defaultContent: renderInner, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));\n})); };\nfunction renderInner(innerProps) {\n return innerProps.text;\n}\n\nvar PADDING_FROM_VIEWPORT = 10;\nvar Popover = /** @class */ (function (_super) {\n __extends(Popover, _super);\n function Popover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n titleId: getUniqueDomId(),\n };\n _this.handleRootEl = function (el) {\n _this.rootEl = el;\n if (_this.props.elRef) {\n setRef(_this.props.elRef, el);\n }\n };\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n _this.handleDocumentMouseDown = function (ev) {\n // only hide the popover if the click happened outside the popover\n var target = getEventTargetViaRoot(ev);\n if (!_this.rootEl.contains(target)) {\n _this.handleCloseClick();\n }\n };\n _this.handleDocumentKeyDown = function (ev) {\n if (ev.key === 'Escape') {\n _this.handleCloseClick();\n }\n };\n _this.handleCloseClick = function () {\n var onClose = _this.props.onClose;\n if (onClose) {\n onClose();\n }\n };\n return _this;\n }\n Popover.prototype.render = function () {\n var _a = this.context, theme = _a.theme, options = _a.options;\n var _b = this, props = _b.props, state = _b.state;\n var classNames = [\n 'fc-popover',\n theme.getClass('popover'),\n ].concat(props.extraClassNames || []);\n return createPortal(createElement(\"div\", __assign({ id: props.id, className: classNames.join(' '), \"aria-labelledby\": state.titleId }, props.extraAttrs, { ref: this.handleRootEl }),\n createElement(\"div\", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },\n createElement(\"span\", { className: \"fc-popover-title\", id: state.titleId }, props.title),\n createElement(\"span\", { className: 'fc-popover-close ' + theme.getIconClass('close'), title: options.closeHint, onClick: this.handleCloseClick })),\n createElement(\"div\", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)), props.parentEl);\n };\n Popover.prototype.componentDidMount = function () {\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n this.updateSize();\n };\n Popover.prototype.componentWillUnmount = function () {\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n };\n Popover.prototype.updateSize = function () {\n var isRtl = this.context.isRtl;\n var _a = this.props, alignmentEl = _a.alignmentEl, alignGridTop = _a.alignGridTop;\n var rootEl = this.rootEl;\n var alignmentRect = computeClippedClientRect(alignmentEl);\n if (alignmentRect) {\n var popoverDims = rootEl.getBoundingClientRect();\n // position relative to viewport\n var popoverTop = alignGridTop\n ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top\n : alignmentRect.top;\n var popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;\n // constrain\n popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n var origin_1 = rootEl.offsetParent.getBoundingClientRect();\n applyStyle(rootEl, {\n top: popoverTop - origin_1.top,\n left: popoverLeft - origin_1.left,\n });\n }\n };\n return Popover;\n}(BaseComponent));\n\nvar MorePopover = /** @class */ (function (_super) {\n __extends(MorePopover, _super);\n function MorePopover() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleRootEl = function (rootEl) {\n _this.rootEl = rootEl;\n if (rootEl) {\n _this.context.registerInteractiveComponent(_this, {\n el: rootEl,\n useEventCenter: false,\n });\n }\n else {\n _this.context.unregisterInteractiveComponent(_this);\n }\n };\n return _this;\n }\n MorePopover.prototype.render = function () {\n var _a = this.context, options = _a.options, dateEnv = _a.dateEnv;\n var props = this.props;\n var startDate = props.startDate, todayRange = props.todayRange, dateProfile = props.dateProfile;\n var title = dateEnv.format(startDate, options.dayPopoverFormat);\n return (createElement(DayCellRoot, { date: startDate, dateProfile: dateProfile, todayRange: todayRange, elRef: this.handleRootEl }, function (rootElRef, dayClassNames, dataAttrs) { return (createElement(Popover, { elRef: rootElRef, id: props.id, title: title, extraClassNames: ['fc-more-popover'].concat(dayClassNames), extraAttrs: dataAttrs /* TODO: make these time-based when not whole-day? */, parentEl: props.parentEl, alignmentEl: props.alignmentEl, alignGridTop: props.alignGridTop, onClose: props.onClose },\n createElement(DayCellContent, { date: startDate, dateProfile: dateProfile, todayRange: todayRange }, function (innerElRef, innerContent) { return (innerContent &&\n createElement(\"div\", { className: \"fc-more-popover-misc\", ref: innerElRef }, innerContent)); }),\n props.children)); }));\n };\n MorePopover.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n var _a = this, rootEl = _a.rootEl, props = _a.props;\n if (positionLeft >= 0 && positionLeft < elWidth &&\n positionTop >= 0 && positionTop < elHeight) {\n return {\n dateProfile: props.dateProfile,\n dateSpan: __assign({ allDay: true, range: {\n start: props.startDate,\n end: props.endDate,\n } }, props.extraDateSpan),\n dayEl: rootEl,\n rect: {\n left: 0,\n top: 0,\n right: elWidth,\n bottom: elHeight,\n },\n layer: 1, // important when comparing with hits from other components\n };\n }\n return null;\n };\n return MorePopover;\n}(DateComponent));\n\nvar MoreLinkRoot = /** @class */ (function (_super) {\n __extends(MoreLinkRoot, _super);\n function MoreLinkRoot() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.linkElRef = createRef();\n _this.state = {\n isPopoverOpen: false,\n popoverId: getUniqueDomId(),\n };\n _this.handleClick = function (ev) {\n var _a = _this, props = _a.props, context = _a.context;\n var moreLinkClick = context.options.moreLinkClick;\n var date = computeRange(props).start;\n function buildPublicSeg(seg) {\n var _a = seg.eventRange, def = _a.def, instance = _a.instance, range = _a.range;\n return {\n event: new EventApi(context, def, instance),\n start: context.dateEnv.toDate(range.start),\n end: context.dateEnv.toDate(range.end),\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n };\n }\n if (typeof moreLinkClick === 'function') {\n moreLinkClick = moreLinkClick({\n date: date,\n allDay: Boolean(props.allDayDate),\n allSegs: props.allSegs.map(buildPublicSeg),\n hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n jsEvent: ev,\n view: context.viewApi,\n });\n }\n if (!moreLinkClick || moreLinkClick === 'popover') {\n _this.setState({ isPopoverOpen: true });\n }\n else if (typeof moreLinkClick === 'string') { // a view name\n context.calendarApi.zoomTo(date, moreLinkClick);\n }\n };\n _this.handlePopoverClose = function () {\n _this.setState({ isPopoverOpen: false });\n };\n return _this;\n }\n MoreLinkRoot.prototype.render = function () {\n var _this = this;\n var _a = this, props = _a.props, state = _a.state;\n return (createElement(ViewContextType.Consumer, null, function (context) {\n var viewApi = context.viewApi, options = context.options, calendarApi = context.calendarApi;\n var moreLinkText = options.moreLinkText;\n var moreCnt = props.moreCnt;\n var range = computeRange(props);\n var text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n ? moreLinkText.call(calendarApi, moreCnt)\n : \"+\" + moreCnt + \" \" + moreLinkText;\n var title = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n var hookProps = {\n num: moreCnt,\n shortText: \"+\" + moreCnt,\n text: text,\n view: viewApi,\n };\n return (createElement(Fragment, null,\n Boolean(props.moreCnt) && (createElement(RenderHook, { elRef: _this.linkElRef, hookProps: hookProps, classNames: options.moreLinkClassNames, content: options.moreLinkContent, defaultContent: props.defaultContent || renderMoreLinkInner, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent) { return props.children(rootElRef, ['fc-more-link'].concat(customClassNames), innerElRef, innerContent, _this.handleClick, title, state.isPopoverOpen, state.isPopoverOpen ? state.popoverId : ''); })),\n state.isPopoverOpen && (createElement(MorePopover, { id: state.popoverId, startDate: range.start, endDate: range.end, dateProfile: props.dateProfile, todayRange: props.todayRange, extraDateSpan: props.extraDateSpan, parentEl: _this.parentEl, alignmentEl: props.alignmentElRef.current, alignGridTop: props.alignGridTop, onClose: _this.handlePopoverClose }, props.popoverContent()))));\n }));\n };\n MoreLinkRoot.prototype.componentDidMount = function () {\n this.updateParentEl();\n };\n MoreLinkRoot.prototype.componentDidUpdate = function () {\n this.updateParentEl();\n };\n MoreLinkRoot.prototype.updateParentEl = function () {\n if (this.linkElRef.current) {\n this.parentEl = elementClosest(this.linkElRef.current, '.fc-view-harness');\n }\n };\n return MoreLinkRoot;\n}(BaseComponent));\nfunction renderMoreLinkInner(props) {\n return props.text;\n}\nfunction computeRange(props) {\n if (props.allDayDate) {\n return {\n start: props.allDayDate,\n end: addDays(props.allDayDate, 1),\n };\n }\n var hiddenSegs = props.hiddenSegs;\n return {\n start: computeEarliestSegStart(hiddenSegs),\n end: computeLatestSegEnd(hiddenSegs),\n };\n}\nfunction computeEarliestSegStart(segs) {\n return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\nfunction pickEarliestStart(seg0, seg1) {\n return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\nfunction computeLatestSegEnd(segs) {\n return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\nfunction pickLatestEnd(seg0, seg1) {\n return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n}\n\n// exports\n// --------------------------------------------------------------------------------------------------\nvar version = '5.11.2'; // important to type it, so .d.ts has generic string\n\nexport { BASE_OPTION_DEFAULTS, BASE_OPTION_REFINERS, BaseComponent, BgEvent, CalendarApi, CalendarContent, CalendarDataManager, CalendarDataProvider, CalendarRoot, ContentHook, CustomContentRenderContext, DateComponent, DateEnv, DateProfileGenerator, DayCellContent, DayCellRoot, DayHeader, DaySeriesModel, DayTableModel, DelayedRunner, ElementDragging, ElementScrollController, Emitter, EventApi, EventRoot, EventSourceApi, Interaction, MoreLinkRoot, MountHook, NamedTimeZoneImpl, NowIndicatorRoot, NowTimer, PositionCache, RefMap, RenderHook, ScrollController, ScrollResponder, Scroller, SegHierarchy, SimpleScrollGrid, Slicer, Splitter, StandardEvent, TableDateCell, TableDowCell, Theme, ViewApi, ViewContextType, ViewRoot, WeekNumberRoot, WindowScrollController, addDays, addDurations, addMs, addWeeks, allowContextMenu, allowSelection, applyMutationToEventStore, applyStyle, applyStyleProp, asCleanDays, asRoughMinutes, asRoughMs, asRoughSeconds, binarySearch, buildClassNameNormalizer, buildEntryKey, buildEventApis, buildEventRangeKey, buildHashFromArray, buildIsoString, buildNavLinkAttrs, buildSegCompareObj, buildSegTimeText, collectFromHash, combineEventUis, compareByFieldSpec, compareByFieldSpecs, compareNumbers, compareObjs, computeEarliestSegStart, computeEdges, computeFallbackHeaderFormat, computeHeightAndMargins, computeInnerRect, computeRect, computeSegDraggable, computeSegEndResizable, computeSegStartResizable, computeShrinkWidth, computeSmallestCellWidth, computeVisibleDayRange, config, constrainPoint, createAriaClickAttrs, createDuration, createEmptyEventStore, createEventInstance, createEventUi, createFormatter, createPlugin, diffDates, diffDayAndTime, diffDays, diffPoints, diffWeeks, diffWholeDays, diffWholeWeeks, disableCursor, elementClosest, elementMatches, enableCursor, eventTupleToStore, filterEventStoreDefs, filterHash, findDirectChildren, findElements, flexibleCompare, formatDate, formatDayString, formatIsoTimeString, formatRange, getAllowYScrolling, getCanVGrowWithinCell, getClippingParents, getDateMeta, getDayClassNames, getDefaultEventEnd, getElRoot, getElSeg, getEntrySpanEnd, getEventClassNames, getEventTargetViaRoot, getIsRtlScrollbarOnLeft, getRectCenter, getRelevantEvents, getScrollGridClassNames, getScrollbarWidths, getSectionClassNames, getSectionHasLiquidHeight, getSegAnchorAttrs, getSegMeta, getSlotClassNames, getStickyFooterScrollbar, getStickyHeaderDates, getUnequalProps, getUniqueDomId, globalLocales, globalPlugins, greatestDurationDenominator, groupIntersectingEntries, guid, hasBgRendering, hasShrinkWidth, identity, interactionSettingsStore, interactionSettingsToStore, intersectRanges, intersectRects, intersectSpans, isArraysEqual, isColPropsEqual, isDateSelectionValid, isDateSpansEqual, isInt, isInteractionValid, isMultiDayRange, isPropsEqual, isPropsValid, isValidDate, joinSpans, listenBySelector, mapHash, memoize, memoizeArraylike, memoizeHashlike, memoizeObjArg, mergeEventStores, multiplyDuration, padStart, parseBusinessHours, parseClassNames, parseDragMeta, parseEventDef, parseFieldSpecs, parse as parseMarker, pointInsideRect, preventContextMenu, preventDefault, preventSelection, rangeContainsMarker, rangeContainsRange, rangesEqual, rangesIntersect, refineEventDef, refineProps, removeElement, removeExact, renderChunkContent, renderFill, renderMicroColGroup, renderScrollShim, requestJson, sanitizeShrinkWidth, setElSeg, setRef, sliceEventStore, sliceEvents, sortEventSegs, startOfDay, translateRect, triggerDateSelect, unpromisify, version, whenTransitionDone, wholeDivideDurations };\n//# sourceMappingURL=main.js.map\n","var n,l,u,i,t,o,r,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function h(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return v(l,f,t,o,null)}function v(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function y(){return{current:null}}function p(n){return n.children}function d(n,l){this.props=n,this.context=l}function _(n,l){if(null==l)return n.__?_(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l0?v(k.type,k.props,k.key,null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(d=x[h])||d&&k.key==d.key&&k.type===d.type)x[h]=void 0;else for(y=0;y2&&(f.children=arguments.length>3?n.call(arguments,2):i),v(l.type,f,t||l.key,o||l.ref,null)}function B(n,l){var u={__c:l=\"__cC\"+r++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(b)},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=e.slice,l={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},d.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=s({},this.state),\"function\"==typeof n&&(n=n(s({},u),this.props)),n&&s(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),b(this))},d.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),b(this))},d.prototype.render=p,t=[],g.__r=0,r=0;export{P as render,S as hydrate,h as createElement,h,p as Fragment,y as createRef,i as isValidElement,d as Component,q as cloneElement,B as createContext,x as toChildArray,l as options};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,c=[],f=[],e=n.__b,a=n.__r,v=n.diffed,l=n.__c,m=n.unmount;function d(t,u){n.__h&&n.__h(r,t,o||u),o=0;var i=r.__H||(r.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({__V:f}),i.__[t]}function p(n){return o=1,y(z,n)}function y(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):z(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){r.u=!0;var c=r.shouldComponentUpdate;r.shouldComponentUpdate=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!!i&&(!c||c.call(this,n,t,r))}}return o.__N||o.__}function h(u,i){var o=d(t++,3);!n.__s&&w(o.__H,i)&&(o.__=u,o.i=i,r.__H.__h.push(o))}function s(u,i){var o=d(t++,4);!n.__s&&w(o.__H,i)&&(o.__=u,o.i=i,r.__h.push(o))}function _(n){return o=5,F(function(){return{current:n}},[])}function A(n,t,r){o=6,s(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function F(n,r){var u=d(t++,7);return w(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function T(n,t){return o=8,F(function(){return n},t)}function q(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function x(t,r){n.useDebugValue&&n.useDebugValue(r?r(t):t)}function V(n){var u=d(t++,10),i=p();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n){u.__&&u.__(n),i[1](n)}),[i[0],function(){i[1](void 0)}]}function b(){for(var t;t=c.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(j),t.__H.__h.forEach(k),t.__H.__h=[]}catch(r){t.__H.__h=[],n.__e(r,t.__v)}}n.__b=function(n){r=null,e&&e(n)},n.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=f,n.__N=n.i=void 0})):(i.__h.forEach(j),i.__h.forEach(k),i.__h=[])),u=r},n.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==c.push(o)&&i===n.requestAnimationFrame||((i=n.requestAnimationFrame)||function(n){var t,r=function(){clearTimeout(u),g&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);g&&(t=requestAnimationFrame(r))})(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==f&&(n.__=n.__V),n.i=void 0,n.__V=f})),u=r=null},n.__c=function(t,r){r.some(function(t){try{t.__h.forEach(j),t.__h=t.__h.filter(function(n){return!n.__||k(n)})}catch(u){r.some(function(n){n.__h&&(n.__h=[])}),r=[],n.__e(u,t.__v)}}),l&&l(t,r)},n.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{j(n)}catch(n){r=n}}),r&&n.__e(r,u.__v))};var g=\"function\"==typeof requestAnimationFrame;function j(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function k(n){var t=r;n.__c=n.__(),r=t}function w(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function z(n,t){return\"function\"==typeof t?t(n):t}export{p as useState,y as useReducer,h as useEffect,s as useLayoutEffect,_ as useRef,A as useImperativeHandle,F as useMemo,T as useCallback,q as useContext,x as useDebugValue,V as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n","import{useState as n,useReducer as t,useEffect as e,useLayoutEffect as r,useRef as u,useImperativeHandle as o,useMemo as i,useCallback as l,useContext as c,useDebugValue as f}from\"preact/hooks\";export*from\"preact/hooks\";import{Component as a,createElement as s,options as h,toChildArray as v,Fragment as d,render as p,hydrate as m,cloneElement as y,createRef as _,createContext as b}from\"preact\";export{createElement,createContext,createRef,Fragment,Component}from\"preact\";function S(n,t){for(var e in t)n[e]=t[e];return n}function g(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n){this.props=n}function E(n,t){function e(n){var e=this.props.ref,r=e==n.ref;return!r&&e&&(e.call?e(null):e.current=null),t?!t(this.props,n)||!r:g(this.props,n)}function r(t){return this.shouldComponentUpdate=e,s(n,t)}return r.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",r.prototype.isReactComponent=!0,r.__f=!0,r}(C.prototype=new a).isPureReactComponent=!0,C.prototype.shouldComponentUpdate=function(n,t){return g(this.props,n)||g(this.state,t)};var w=h.__b;h.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),w&&w(n)};var x=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function R(n){function t(t){var e=S({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=x,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var N=function(n,t){return null==n?null:v(v(n).map(t))},k={map:N,forEach:N,count:function(n){return n?v(n).length:0},only:function(n){var t=v(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:v},A=h.__e;h.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);A(n,t,e,r)};var O=h.unmount;function T(){this.__u=0,this.t=null,this.__b=null}function L(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function U(n){var t,e,r;function u(u){if(t||(t=n()).then(function(n){e=n.default||n},function(n){r=n}),r)throw r;if(!e)throw t;return s(e,u)}return u.displayName=\"Lazy\",u.__f=!0,u}function D(){this.u=null,this.o=null}h.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),O&&O(n)},(T.prototype=new a).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=L(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=function n(t,e,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)}),t.__c&&t.__c.__P===e&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},T.prototype.componentWillUnmount=function(){this.t=[]},T.prototype.render=function(n,t){if(this.__b){if(this.__v.__k){var e=document.createElement(\"div\"),r=this.__v.__k[0].__c;this.__v.__k[0]=function n(t,e,r){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),t.__c.__H=null),null!=(t=S({},t)).__c&&(t.__c.__P===r&&(t.__c.__P=e),t.__c=null),t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)})),t}(this.__b,e,r.__O=r.__P)}this.__b=null}var u=t.__a&&s(d,null,n.fallback);return u&&(u.__h=null),[s(d,null,t.__a?null:n.children),u]};var F=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),t.i.removeChild(n)}}),p(s(I,{context:t.context},n.__v),t.l)):t.l&&t.componentWillUnmount()}function V(n,t){var e=s(M,{__v:n,i:t});return e.containerInfo=t,e}(D.prototype=new a).__a=function(n){var t=this,e=L(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),F(t,n,r)):u()};e?e(o):o()}},D.prototype.render=function(n){this.u=null,this.o=new Map;var t=v(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},D.prototype.componentDidUpdate=D.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){F(n,e,t)})};var W=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,P=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,$=\"undefined\"!=typeof document,j=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function z(n,t,e){return null==t.__k&&(t.textContent=\"\"),p(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function B(n,t,e){return m(n,t),\"function\"==typeof e&&e(),n?n.__c:null}a.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(n){Object.defineProperty(a.prototype,n,{configurable:!0,get:function(){return this[\"UNSAFE_\"+n]},set:function(t){Object.defineProperty(this,n,{configurable:!0,writable:!0,value:t})}})});var H=h.event;function Z(){}function Y(){return this.cancelBubble}function q(){return this.defaultPrevented}h.event=function(n){return H&&(n=H(n)),n.persist=Z,n.isPropagationStopped=Y,n.isDefaultPrevented=q,n.nativeEvent=n};var G,J={configurable:!0,get:function(){return this.class}},K=h.vnode;h.vnode=function(n){var t=n.type,e=n.props,r=e;if(\"string\"==typeof t){var u=-1===t.indexOf(\"-\");for(var o in r={},e){var i=e[o];$&&\"children\"===o&&\"noscript\"===t||\"value\"===o&&\"defaultValue\"in e&&null==i||(\"defaultValue\"===o&&\"value\"in e&&null==e.value?o=\"value\":\"download\"===o&&!0===i?i=\"\":/ondoubleclick/i.test(o)?o=\"ondblclick\":/^onchange(textarea|input)/i.test(o+t)&&!j(e.type)?o=\"oninput\":/^onfocus$/i.test(o)?o=\"onfocusin\":/^onblur$/i.test(o)?o=\"onfocusout\":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(o)?o=o.toLowerCase():u&&P.test(o)?o=o.replace(/[A-Z0-9]/g,\"-$&\").toLowerCase():null===i&&(i=void 0),/^oninput$/i.test(o)&&(o=o.toLowerCase(),r[o]&&(o=\"oninputCapture\")),r[o]=i)}\"select\"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=v(e.children).forEach(function(n){n.props.selected=-1!=r.value.indexOf(n.props.value)})),\"select\"==t&&null!=r.defaultValue&&(r.value=v(e.children).forEach(function(n){n.props.selected=r.multiple?-1!=r.defaultValue.indexOf(n.props.value):r.defaultValue==n.props.value})),n.props=r,e.class!=e.className&&(J.enumerable=\"className\"in e,null!=e.className&&(r.class=e.className),Object.defineProperty(r,\"className\",J))}n.$$typeof=W,K&&K(n)};var Q=h.__r;h.__r=function(n){Q&&Q(n),G=n.__c};var X={ReactCurrentDispatcher:{current:{readContext:function(n){return G.__n[n.__c].props.value}}}},nn=\"17.0.2\";function tn(n){return s.bind(null,n)}function en(n){return!!n&&n.$$typeof===W}function rn(n){return en(n)?y.apply(null,arguments):n}function un(n){return!!n.__k&&(p(null,n),!0)}function on(n){return n&&(n.base||1===n.nodeType&&n)||null}var ln=function(n,t){return n(t)},cn=function(n,t){return n(t)},fn=d;function an(n){n()}function sn(n){return n}function hn(){return[!1,an]}var vn=r;function dn(t,u){var o=u(),i=n({s:{__:o,h:u}}),l=i[0].s,c=i[1];return r(function(){l.__=o,l.h=u,l.__!==u()&&c({s:l})},[t,o,u]),e(function(){return l.__!==l.h()&&c({s:l}),t(function(){l.__!==l.h()&&c({s:l})})},[t]),o}export default{useState:n,useReducer:t,useEffect:e,useLayoutEffect:r,useInsertionEffect:r,useTransition:hn,useDeferredValue:sn,useSyncExternalStore:dn,startTransition:an,useRef:u,useImperativeHandle:o,useMemo:i,useCallback:l,useContext:c,useDebugValue:f,version:\"17.0.2\",Children:k,render:z,hydrate:B,unmountComponentAtNode:un,createPortal:V,createElement:s,createContext:b,createFactory:tn,cloneElement:rn,createRef:_,Fragment:d,isValidElement:en,findDOMNode:on,Component:a,PureComponent:C,memo:E,forwardRef:R,flushSync:cn,unstable_batchedUpdates:ln,StrictMode:d,Suspense:T,SuspenseList:D,lazy:U,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:X};export{an as startTransition,sn as useDeferredValue,hn as useTransition,vn as useInsertionEffect,dn as useSyncExternalStore,nn as version,k as Children,z as render,B as hydrate,un as unmountComponentAtNode,V as createPortal,tn as createFactory,rn as cloneElement,en as isValidElement,on as findDOMNode,C as PureComponent,E as memo,R as forwardRef,cn as flushSync,ln as unstable_batchedUpdates,fn as StrictMode,T as Suspense,D as SuspenseList,U as lazy,X as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED};\n//# sourceMappingURL=compat.module.js.map\n","import { __extends } from 'tslib';\nimport * as preact from 'preact';\nimport * as preactCompat from 'preact/compat';\n\nvar globalObj = typeof globalThis !== 'undefined' ? globalThis : window; // // TODO: streamline when killing IE11 support\nif (globalObj.FullCalendarVDom) {\n console.warn('FullCalendar VDOM already loaded');\n}\nelse {\n globalObj.FullCalendarVDom = {\n Component: preact.Component,\n createElement: preact.createElement,\n render: preact.render,\n createRef: preact.createRef,\n Fragment: preact.Fragment,\n createContext: createContext,\n createPortal: preactCompat.createPortal,\n flushSync: flushSync,\n unmountComponentAtNode: unmountComponentAtNode,\n };\n}\n// HACKS...\n// TODO: lock version\n// TODO: link gh issues\nfunction flushSync(runBeforeFlush) {\n runBeforeFlush();\n var oldDebounceRendering = preact.options.debounceRendering; // orig\n var callbackQ = [];\n function execCallbackSync(callback) {\n callbackQ.push(callback);\n }\n preact.options.debounceRendering = execCallbackSync;\n preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n while (callbackQ.length) {\n callbackQ.shift()();\n }\n preact.options.debounceRendering = oldDebounceRendering;\n}\nvar FakeComponent = /** @class */ (function (_super) {\n __extends(FakeComponent, _super);\n function FakeComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FakeComponent.prototype.render = function () { return preact.createElement('div', {}); };\n FakeComponent.prototype.componentDidMount = function () { this.setState({}); };\n return FakeComponent;\n}(preact.Component));\nfunction createContext(defaultValue) {\n var ContextType = preact.createContext(defaultValue);\n var origProvider = ContextType.Provider;\n ContextType.Provider = function () {\n var _this = this;\n var isNew = !this.getChildContext;\n var children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n if (isNew) {\n var subs_1 = [];\n this.shouldComponentUpdate = function (_props) {\n if (_this.props.value !== _props.value) {\n subs_1.forEach(function (c) {\n c.context = _props.value;\n c.forceUpdate();\n });\n }\n };\n this.sub = function (c) {\n subs_1.push(c);\n var old = c.componentWillUnmount;\n c.componentWillUnmount = function () {\n subs_1.splice(subs_1.indexOf(c), 1);\n old && old.call(c);\n };\n };\n }\n return children;\n };\n return ContextType;\n}\nfunction unmountComponentAtNode(node) {\n preact.render(null, node);\n}\n","/*!\nFullCalendar v5.11.2\nDocs & License: https://fullcalendar.io/\n(c) 2022 Adam Shaw\n*/\nimport './vdom.js';\nimport { __extends, __assign } from 'tslib';\nimport { flushSync, render, createElement, CalendarRoot, CustomContentRenderContext, CalendarContent, unmountComponentAtNode, DelayedRunner, CalendarDataManager, isArraysEqual, applyStyleProp, CalendarApi } from '@fullcalendar/common';\nexport * from '@fullcalendar/common';\n\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n function Calendar(el, optionOverrides) {\n if (optionOverrides === void 0) { optionOverrides = {}; }\n var _this = _super.call(this) || this;\n _this.isRendering = false;\n _this.isRendered = false;\n _this.currentClassNames = [];\n _this.customContentRenderId = 0; // will affect custom generated classNames?\n _this.handleAction = function (action) {\n // actions we know we want to render immediately\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n case 'SET_EVENT_RESIZE':\n _this.renderRunner.tryDrain();\n }\n };\n _this.handleData = function (data) {\n _this.currentData = data;\n _this.renderRunner.request(data.calendarOptions.rerenderDelay);\n };\n _this.handleRenderRequest = function () {\n if (_this.isRendering) {\n _this.isRendered = true;\n var currentData_1 = _this.currentData;\n flushSync(function () {\n render(createElement(CalendarRoot, { options: currentData_1.calendarOptions, theme: currentData_1.theme, emitter: currentData_1.emitter }, function (classNames, height, isHeightAuto, forPrint) {\n _this.setClassNames(classNames);\n _this.setHeight(height);\n return (createElement(CustomContentRenderContext.Provider, { value: _this.customContentRenderId },\n createElement(CalendarContent, __assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData_1))));\n }), _this.el);\n });\n }\n else if (_this.isRendered) {\n _this.isRendered = false;\n unmountComponentAtNode(_this.el);\n _this.setClassNames([]);\n _this.setHeight('');\n }\n };\n _this.el = el;\n _this.renderRunner = new DelayedRunner(_this.handleRenderRequest);\n new CalendarDataManager({\n optionOverrides: optionOverrides,\n calendarApi: _this,\n onAction: _this.handleAction,\n onData: _this.handleData,\n });\n return _this;\n }\n Object.defineProperty(Calendar.prototype, \"view\", {\n get: function () { return this.currentData.viewApi; } // for public API\n ,\n enumerable: false,\n configurable: true\n });\n Calendar.prototype.render = function () {\n var wasRendering = this.isRendering;\n if (!wasRendering) {\n this.isRendering = true;\n }\n else {\n this.customContentRenderId += 1;\n }\n this.renderRunner.request();\n if (wasRendering) {\n this.updateSize();\n }\n };\n Calendar.prototype.destroy = function () {\n if (this.isRendering) {\n this.isRendering = false;\n this.renderRunner.request();\n }\n };\n Calendar.prototype.updateSize = function () {\n var _this = this;\n flushSync(function () {\n _super.prototype.updateSize.call(_this);\n });\n };\n Calendar.prototype.batchRendering = function (func) {\n this.renderRunner.pause('batchRendering');\n func();\n this.renderRunner.resume('batchRendering');\n };\n Calendar.prototype.pauseRendering = function () {\n this.renderRunner.pause('pauseRendering');\n };\n Calendar.prototype.resumeRendering = function () {\n this.renderRunner.resume('pauseRendering', true);\n };\n Calendar.prototype.resetOptions = function (optionOverrides, append) {\n this.currentDataManager.resetOptions(optionOverrides, append);\n };\n Calendar.prototype.setClassNames = function (classNames) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n var classList = this.el.classList;\n for (var _i = 0, _a = this.currentClassNames; _i < _a.length; _i++) {\n var className = _a[_i];\n classList.remove(className);\n }\n for (var _b = 0, classNames_1 = classNames; _b < classNames_1.length; _b++) {\n var className = classNames_1[_b];\n classList.add(className);\n }\n this.currentClassNames = classNames;\n }\n };\n Calendar.prototype.setHeight = function (height) {\n applyStyleProp(this.el, 'height', height);\n };\n return Calendar;\n}(CalendarApi));\n\nexport { Calendar };\n//# sourceMappingURL=main.js.map\n","export var OPTION_IS_COMPLEX = {\n headerToolbar: true,\n footerToolbar: true,\n events: true,\n eventSources: true,\n resources: true\n};\n//# sourceMappingURL=options.js.map","// TODO: add types!\nimport { __assign } from \"tslib\";\n/*\nworks with objects and arrays\n*/\nexport function shallowCopy(val) {\n if (typeof val === 'object') {\n if (Array.isArray(val)) {\n val = Array.prototype.slice.call(val);\n }\n else if (val) { // non-null\n val = __assign({}, val);\n }\n }\n return val;\n}\nexport function mapHash(input, func) {\n var output = {};\n for (var key in input) {\n if (input.hasOwnProperty(key)) {\n output[key] = func(input[key], key);\n }\n }\n return output;\n}\n//# sourceMappingURL=utils.js.map","import Vue from 'vue';\nimport { createPlugin } from '@fullcalendar/core';\n/*\nwrap it in an object with a `vue` key, which the custom content-type handler system will look for\n*/\nexport function wrapVDomGenerator(vDomGenerator) {\n return function (props) {\n return { vue: vDomGenerator(props) };\n };\n}\nexport function createVueContentTypePlugin(parent) {\n return createPlugin({\n contentTypeHandlers: {\n vue: function () { return buildVDomHandler(parent); }, // looks for the `vue` key\n }\n });\n}\nfunction buildVDomHandler(parent) {\n var currentEl;\n var v; // the Vue instance\n function render(el, vDomContent) {\n if (currentEl !== el) {\n if (currentEl && v) { // if changing elements, recreate the vue\n v.$destroy();\n }\n currentEl = el;\n }\n if (!v) {\n v = initVue(vDomContent, parent);\n // vue's mount method *replaces* the given element. create an artificial inner el\n var innerEl = document.createElement('span');\n el.appendChild(innerEl);\n v.$mount(innerEl);\n }\n else {\n v.content = vDomContent;\n }\n }\n function destroy() {\n if (v) { // needed?\n v.$destroy();\n }\n }\n return { render: render, destroy: destroy };\n}\nfunction initVue(initialContent, parent) {\n return new Vue({\n parent: parent,\n data: {\n content: initialContent,\n },\n render: function (h) {\n var content = this.content;\n // the slot result can be an array, but the returned value of a vue component's\n // render method must be a single node.\n if (content.length === 1) {\n return content[0];\n }\n else {\n return h('span', {}, content);\n }\n }\n });\n}\n//# sourceMappingURL=custom-content-type.js.map","import { __assign } from \"tslib\";\nimport Vue from 'vue';\nimport { Calendar } from '@fullcalendar/core';\nimport { OPTION_IS_COMPLEX } from './options';\nimport { shallowCopy, mapHash } from './utils';\nimport { wrapVDomGenerator, createVueContentTypePlugin } from './custom-content-type';\nvar FullCalendar = Vue.extend({\n props: {\n options: Object\n },\n data: initData,\n render: function (createElement) {\n return createElement('div', {\n // when renderId is changed, Vue will trigger a real-DOM async rerender, calling beforeUpdate/updated\n attrs: { 'data-fc-render-id': this.renderId }\n });\n },\n mounted: function () {\n var internal = this.$options;\n internal.scopedSlotOptions = mapHash(this.$scopedSlots, wrapVDomGenerator); // needed for buildOptions\n var calendar = new Calendar(this.$el, this.buildOptions(this.options, this));\n internal.calendar = calendar;\n calendar.render();\n },\n methods: {\n getApi: getApi,\n buildOptions: buildOptions,\n },\n beforeUpdate: function () {\n this.getApi().resumeRendering(); // the watcher handlers paused it\n },\n beforeDestroy: function () {\n this.getApi().destroy();\n },\n watch: buildWatchers()\n});\nfunction initData() {\n return {\n renderId: 0\n };\n}\nfunction buildOptions(suppliedOptions, parent) {\n var internal = this.$options;\n suppliedOptions = suppliedOptions || {};\n return __assign(__assign(__assign({}, internal.scopedSlotOptions), suppliedOptions), { plugins: (suppliedOptions.plugins || []).concat([\n createVueContentTypePlugin(parent)\n ]) });\n}\nfunction getApi() {\n var internal = this.$options;\n return internal.calendar;\n}\nfunction buildWatchers() {\n var watchers = {\n // watches changes of ALL options and their nested objects,\n // but this is only a means to be notified of top-level non-complex options changes.\n options: {\n deep: true,\n handler: function (options) {\n var calendar = this.getApi();\n calendar.pauseRendering();\n calendar.resetOptions(this.buildOptions(options, this));\n this.renderId++; // will queue a rerender\n }\n }\n };\n var _loop_1 = function (complexOptionName) {\n // handlers called when nested objects change\n watchers[\"options.\" + complexOptionName] = {\n deep: true,\n handler: function (val) {\n var _a;\n // unfortunately the handler is called with undefined if new props were set, but the complex one wasn't ever set\n if (val !== undefined) {\n var calendar = this.getApi();\n calendar.pauseRendering();\n calendar.resetOptions((_a = {},\n // the only reason we shallow-copy is to trick FC into knowing there's a nested change.\n // TODO: future versions of FC will more gracefully handle event option-changes that are same-reference.\n _a[complexOptionName] = shallowCopy(val),\n _a), true);\n this.renderId++; // will queue a rerender\n }\n }\n };\n };\n for (var complexOptionName in OPTION_IS_COMPLEX) {\n _loop_1(complexOptionName);\n }\n return watchers;\n}\nexport default FullCalendar;\n//# sourceMappingURL=FullCalendar.js.map","import FullCalendarComponent from './FullCalendar';\n/*\nRegisters the component globally if appropriate.\nThis modules exposes the component AND an install function.\n\nDerived from:\nhttps://vuejs.org/v2/cookbook/packaging-sfc-for-npm.html\n*/\nvar installed = false;\n// declare install function executed by Vue.use()\nexport function install(Vue) {\n if (!installed) {\n installed = true;\n Vue.component('FullCalendar', FullCalendarComponent);\n }\n}\n// detect a globally availble version of Vue (eg. in browser via
/ elements with colspans.\n SOLUTION: making individual