{"version":3,"sources":["webpack:///./node_modules/select-files/dist/index.esm.js","webpack:///./node_modules/bytemd/dist/index.js","webpack:///./src/views/more_list.vue?faad","webpack:///./src/views/more_list.vue?5e40","webpack:///./src/views/book_list.vue?20e8","webpack:///./src/views/temp.vue","webpack:///./src/components/cardList_temp.vue","webpack:///src/components/cardList_temp.vue","webpack:///./src/components/cardList_temp.vue?3392","webpack:///./src/components/cardList_temp.vue?3d70","webpack:///./src/components/cardList_temp_phone.vue","webpack:///src/components/cardList_temp_phone.vue","webpack:///./src/components/cardList_temp_phone.vue?656e","webpack:///./src/components/cardList_temp_phone.vue?cadd","webpack:///src/views/temp.vue","webpack:///./src/views/temp.vue?b744","webpack:///./src/views/temp.vue?335b","webpack:///./src/components/cardList_temp_phone.vue?7e97","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/utils/math.js","webpack:///./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/@popperjs/core/lib/createPopper.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/popper.js","webpack:///./node_modules/tippy.js/dist/tippy.esm.js","webpack:///./src/views/book_list.vue?c909","webpack:///./src/views/more_list.vue","webpack:///src/views/more_list.vue","webpack:///./src/views/more_list.vue?32fa","webpack:///./src/views/more_list.vue?f667","webpack:///./src/views/home_detail.vue?bc37","webpack:///./src/views/more_list.vue?a9f6","webpack:///./src/views/home_detail.vue","webpack:///src/views/home_detail.vue","webpack:///./src/views/home_detail.vue?c738","webpack:///./src/views/home_detail.vue?d335","webpack:///./src/views/temp.vue?f40c","webpack:///./src/components/hCard.vue?cc98","webpack:///./src/views/book_list.vue","webpack:///./node_modules/micromark-util-chunked/index.js","webpack:///./node_modules/micromark-util-combine-extensions/index.js","webpack:///./node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","webpack:///./node_modules/micromark-util-character/index.js","webpack:///./node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js","webpack:///./node_modules/micromark-factory-space/index.js","webpack:///./node_modules/micromark-core-commonmark/lib/blank-line.js","webpack:///./node_modules/micromark-util-normalize-identifier/index.js","webpack:///./node_modules/micromark-extension-gfm-footnote/lib/syntax.js","webpack:///./node_modules/micromark-util-classify-character/index.js","webpack:///./node_modules/micromark-util-resolve-all/index.js","webpack:///./node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js","webpack:///./node_modules/micromark-extension-gfm-table/lib/edit-map.js","webpack:///./node_modules/micromark-extension-gfm-table/lib/infer.js","webpack:///./node_modules/micromark-extension-gfm-table/lib/syntax.js","webpack:///./node_modules/micromark-extension-gfm-tagfilter/index.js","webpack:///./node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js","webpack:///./node_modules/micromark-extension-gfm/index.js","webpack:///./node_modules/ccount/index.js","webpack:///./node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js","webpack:///./node_modules/unist-util-is/lib/index.js","webpack:///./node_modules/unist-util-visit-parents/lib/color.browser.js","webpack:///./node_modules/unist-util-visit-parents/lib/index.js","webpack:///./node_modules/mdast-util-find-and-replace/lib/index.js","webpack:///./node_modules/mdast-util-gfm-autolink-literal/lib/index.js","webpack:///./node_modules/character-entities/index.js","webpack:///./node_modules/decode-named-character-reference/index.js","webpack:///./node_modules/micromark-util-decode-numeric-character-reference/index.js","webpack:///./node_modules/micromark-util-decode-string/index.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/association.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/container-flow.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/pattern-compile.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/safe.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/track.js","webpack:///./node_modules/mdast-util-gfm-footnote/lib/index.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js","webpack:///./node_modules/mdast-util-gfm-strikethrough/lib/index.js","webpack:///./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js","webpack:///./node_modules/markdown-table/index.js","webpack:///./node_modules/mdast-util-gfm-table/lib/index.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js","webpack:///./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js","webpack:///./node_modules/mdast-util-to-markdown/lib/handle/list-item.js","webpack:///./node_modules/mdast-util-gfm-task-list-item/lib/index.js","webpack:///./node_modules/mdast-util-gfm/lib/index.js","webpack:///./node_modules/remark-gfm/index.js","webpack:///./node_modules/@bytemd/plugin-gfm/dist/index.mjs","webpack:///./node_modules/micromark-extension-math/lib/math-flow.js","webpack:///./node_modules/micromark-extension-math/lib/math-text.js","webpack:///./node_modules/micromark-extension-math/lib/syntax.js","webpack:///./node_modules/longest-streak/index.js","webpack:///./node_modules/mdast-util-math/lib/index.js","webpack:///./node_modules/remark-math/index.js","webpack:///./node_modules/@bytemd/plugin-math/dist/index.mjs","webpack:///./node_modules/gemoji/index.js","webpack:///./node_modules/unist-util-visit/lib/index.js","webpack:///./node_modules/remark-gemoji/index.js","webpack:///./node_modules/@bytemd/plugin-gemoji/dist/index.mjs","webpack:///./node_modules/@bytemd/vue/dist/index.mjs","webpack:///src/views/book_list.vue","webpack:///./src/views/book_list.vue?0779","webpack:///./src/views/book_list.vue?8852","webpack:///./src/views/temp.vue?3771","webpack:///./node_modules/word-count/index.js","webpack:///./src/components/cardList_temp.vue?34b8","webpack:///./src/views/search_list.vue?1386","webpack:///./src/views/pdf_list.vue","webpack:///./src/views/pdf_list.vue?d099","webpack:///./node_modules/qrcodejs2/qrcode.js","webpack:///./src/images/logo (2).png","webpack:///./src/components/hCard.vue","webpack:///src/components/hCard.vue","webpack:///./src/components/hCard.vue?7120","webpack:///./src/components/hCard.vue?2e1e","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?e677","webpack:///./src/views/search_list.vue","webpack:///src/views/search_list.vue","webpack:///./src/views/search_list.vue?4df1","webpack:///./src/views/search_list.vue?550d"],"names":["createInputFile","ref","accept","capture","multiple","input","document","createElement","type","selectFiles","options","Promise","resolve","addEventListener","files","setTimeout","event","MouseEvent","dispatchEvent","Object","defineProperty","exports","Symbol","toStringTag","value","wordCount","tippy_js","noop","run","fn","blank_object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","not_equal","is_empty","obj","keys","length","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","d","element$5","name","text$7","data2","createTextNode","empty","listen","handler","removeEventListener","self$1","this","call","attr","attribute","removeAttribute","getAttribute","setAttribute","children","element2","Array","from","childNodes","set_data","text2","wholeText","data","toggle_class","toggle","classList","custom_event","detail","bubbles","cancelable","e","createEvent","initCustomEvent","current_component","set_current_component","component","get_current_component","Error","onMount","$$","on_mount","push","afterUpdate","after_update","onDestroy","on_destroy","createEventDispatcher","callbacks","slice","defaultPrevented","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","then","flush","tick","add_render_callback","seen_callbacks","Set","flushidx","saved_component","update","pop","callback","has","add","clear","$$7","fragment","before_update","dirty","p","ctx","flush_render_callbacks","filtered","targets","c","indexOf","outroing","outros","group_outros","r","check_outros","transition_in","block","local","delete","transition_out","detach2","o","create_component","mount_component","customElement","fragment2","m","new_on_destroy","map","filter","destroy_component","make_dirty","fill","init","instance2","create_fragment2","not_equal2","props","append_styles","parent_component","bound","on_disconnect","context","Map","skip_bound","root","ready","ret","rest","hydrate","nodes2","l","intro","SvelteComponent","$destroy","index2","splice","$$props","$$set","bold","boldText","cheatsheet","closeHelp","closeToc","code$1","codeBlock","codeLang","codeText$1","exitFullscreen","exitPreviewOnly","exitWriteOnly","fullscreen","h1","h2","h3","h4","h5","h6","headingText","help","hr","image$1","imageAlt","imageTitle","italic","italicText","limited","lines","link$1","linkText","ol","olItem","preview","previewOnly","quote","quotedText","shortcuts","source","sync","toc","top","ul","ulItem","words","write","writeOnly","en","code","codeText","image","link","icons","Close","H","H1","H2","H3","LevelFourTitle","LevelFiveTitle","LevelSixTitle","TextBold","TextItalic","Quote","LinkOne","Pic","Code","CodeBrackets","ListTwo","OrderedList","DividingLine","AlignTextLeftOne","Helpcenter","LeftExpand","RightExpand","OffScreen","FullScreen","GithubOne","factory$1","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","match","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","current","className","after","index","removeChildren","count","firstChild","removeChildrenAndAdd","parent","elt","tag","content2","style2","style","cssText","i2","eltP","contains","child","nodeType","host","activeElt","activeElement","body","shadowRoot","addClass","joinClasses","as","split","createRange","start","end","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","bind","f","args","prototype","arguments","apply","copyObj","overwrite","prop2","hasOwnProperty","countColumn","string2","tabSize","startIndex","startValue","search","n","nextTab","selectionStart","selectionEnd","_e","Delayed","id","time","onTimeout","array","elt2","self2","Date","set","ms","clearTimeout","scrollerGap","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","lst","arr","map2","out","insertSorted","score","priority","nothing","createObj","base2","inst","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","to","midF","mid","ceil","floor","iterateBidiSections","order2","found","part","max","level","bidiOther","getBidiPartAt","sticky","cur","bidiOrdering","lowTypes","arabicTypes","charType","code2","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","len","types2","i$12","prev","i$22","type$1","i$3","prev$1","type$2","i$4","type$3","replace","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","i$7","at","isRTL","j$2","nstart","unshift","reverse","getOrder","line","order","text","noHandlers","on","emitter","attachEvent","map3","_handlers","concat","getHandlers","off","detachEvent","signal","handlers2","signalDOMEvent","cm","override","preventDefault","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","result","nl","rt","hasSelection","window","getSelection","te","range2","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","abs","modes","mimeModes","defineMode","mode","dependencies","defineMIME","mime","spec","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","val","innerMode","info","startState","a1","a2","StringStream","lineOracle","string","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","size","chunk","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","diff","lineNo","no","lineAtHeight","h7","outer","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","clipPos","last","clipToLen","linelen","clipPosArray","eol","sol","peek","next","eat","ok2","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","o2","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","display","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","search2","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","addMarkedSpan","op","inThisOp","WeakSet","markedSpans","attachLine","markedSpansBefore","old","startCh","isInsert","nw","startsBefore","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","offset","span$1","found$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","markers","i3","mark2","readOnly","parts","mk","find","p2","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","lineNo2","visualLine","merged","visualLineEnd","visualLineContinued","lines2","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight2","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","content","trailingSpace","splitSpaces","getOption","addToken","buildToken","buildTokenBadBidi","allowFrontierUpdate","externalMeasured","insertLineContent","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","title","startStyle","endStyle","css","attributes2","displayText","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr2","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","attributes","upto","tokenText","LineView","hidden","buildViewArray","nextPos","view","operationGroup","pushOperation","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","list2","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","updateLineBackground","background","wrap2","getLineContent","ext","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$12","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","ensureLineHeights","rect","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","key2","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","charWidth","rbot","top2","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","get","ch2","getBidi","partPos2","invert","partPos","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","targetTop","boxIsAfter","box","widgetHeight2","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","part2","ltr2","_lineNo","closestDist","endX","dist","textHeight","clientLeft","offsetLeft","compensateForHScroll","estimateHeight","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","customCursor","$customCursor","sel","ranges","primIndex","head2","drawSelectionCursor","showCursorWhenSelecting","head","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","defaultCharWidth","otherCursor","cmpCoords","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openLeft","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","on2","cursorDiv","visibility","cursorBlinkRate","setInterval","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","screen2","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","scrollbarsClipped","marginBottom","borderRightWidth","selectionSnapshot","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","update2","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","container","rm","node2","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","pixelsPerUnit","deltaMode","deltaX","deltaY","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","text3","linesFor","firstLine","lastText","lastSpans","nlines","remove","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","doc2","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","History","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","history","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","extend3","posBefore","extendSelection","setSelection","extendSelections","heads","newSel","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","source2","antiChanges","returned","v","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","assign","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","children2","removeInner","insertInner","iterN","remaining","leaf","maybeSpill","me","spilled","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","cloneNode","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","constructor","getValue","join","lineSeparator","setValue","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","line2","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","off2","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","CodeMirror","link2","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","t","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$12","getData","selected","onDragStart","setData","effectAllowed","setDragImage","img","src","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","onResize","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","145","173","186","187","188","189","190","191","192","219","220","221","222","224","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","i$1","fromCharCode","i$2","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys2","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","moveInStorageOrder","prep","moveVisually","bidi","mv","dir2","getWrappedLineExtent","wrappedLineExtent2","searchInVisualLine","wrappedLineExtent3","getRes","ch3","moveInStorageOrder3","moveInStorageOrder2","res","nextCh","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","leftPos","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","dropShift","ensurePolled","prevShift","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","now2","compare","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","option2","unit","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","ranges2","startCol","posCol","oldRange","range3","ranges$1","bidiSimplify","editorSize","counter","curCount","move","buttons","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","defineOptions","CodeMirror2","optionHandlers2","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","spellcheck","autocorrect","autocapitalize","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","wasOn","funcs","dragFunctions","enter","over","leave","drop","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","inp","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","hiddenTextarea","border","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help2","_global","getStateAfter","defaultTextHeight","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","check","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing2","extraLinebreak","recognizeMarker","close","addText","walk","cmText","markerID","isBlock","textContent","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","find2","textNode2","topNode2","offset2","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","label","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","textarea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","cm2","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","dontDelegate","prop","method","defineExtension","func","defineDocExtension","version","usePlaceholder","clearPlaceholder","setPlaceholder","placeHolder","onComposition","empty2","onChange","placeholderCompose","useContinuelist","listRE","emptyListRE","unorderedListRE","incrementRemainingMarkdownListNumbers","startLine","skipCount","startItem","startIndent","nextLineNumber","nextItem","nextIndent","newNumber","nextNumber","itemNumber","newlineAndIndentContinueMarkdownList","replacements","eolState","inList","list","inQuote","cursorBeforeBullet","endOfQuote","endOfList","numbered","bullet","useOverlay","overlayMode","combine","base","basePos","baseCur","overlayPos","overlayCur","streamSeen","combineTokens","textAfter","overlayToken","useGfm","urlRE","config","modeConfig","codeDepth","blankLine2","gfmOverlay","ateSpace","s2","difference","gitHubSpice","markdownConfig","taskLists","strikethrough","emoji","useMarkdown","cmCfg","modeCfg","htmlMode","htmlModeMissing","findModeByName","mimes","mode2","highlightFormatting","maxBlockquoteDepth","fencedCodeBlockHighlighting","fencedCodeBlockDefaultMode","xml","tokenTypeOverrides","tokenTypes","header","list1","list3","imageAltText","imageMarker","formatting","linkInline","linkEmail","linkHref","em","strong","tokenType","hrRE","taskListRE","atxHeaderRE","allowAtxHeaderWithoutSpace","setextHeaderRE","textRE","fencedCodeRE","linkDefRE","punctuation","expandedTab","switchInline","inline","switchBlock","lineIsEmpty","linkTitle","indentedCode","htmlBlock","exit2","htmlState","tagStart","tokenize","isInText","inlineNormal","blockNormal","trailingSpaceNewLine","prevLine","thisLine","firstTokenOnLine","prevLineLineIsEmpty","prevLineIsIndentedCode","prevLineIsHr","prevLineIsList","maxNonCodeIndentation","listStack","lineIndentation","indentationDiff","allowsInlineContinuation","fencedCodeEnd","isHr","getType","setext","listType","taskList","fencedEndRE","localMode","localState","footnoteLink","md_inside","returnType","currListInd","hasExitedList","maxFencedEndInd","taskOpen","taskClosed","listMod","handleText","matchCh","regex","previousFormatting","formattingEscape","atts","substring","leftFlanking","rightFlanking","setEm","setStrong","retType","getLinkHrefInside","linkRE","endChar","returnState","footnoteLinkInside","footnoteUrl","blockCommentStart","blockCommentEnd","closeBrackets","fold","useXml","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","inText","chain","parser2","inBlock","doctype2","inTag","baseState","tagName","inAttribute","stringStartCol","quote2","closure","isInAttribute","terminator","depth","lower","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","type2","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","cx","useYamlFrontmatter","START","FRONTMATTER","BODY","parserConfig","yamlMode","yaml","useYaml","cons","keywordRegex","esc","escaped","literal","keyCol","pair","pairStart","inlinePairs","inlineList","lineComment","createCodeMirror","codemirror","createEditorUtils","editor","fromBefore","toAfter","emptyLine","trim","findStartIndex","num","nums","getShortcutWithPrefix","shiftPrefix","CmdPrefix","async","handleImageUpload","appendBlock","uploadImages","imgs","url","getBuiltinActions","locale","plugins","leftActions","icon","actions","replaceLines","shortcut","wrapText","fileList","rightActions","action","get_each_context$2","child_ctx","get_each_context_1$1","create_if_block_1$2","li2","div0","div1","t0","div2","t1","raw_value","t0_value","t1_value","innerHTML","ctx2","create_each_block_1$1","if_block_anchor","if_block","create_if_block$3","kbd","create_each_block$2","create_fragment$5","h20","ul0","h21","ul1","each_value_1","each_blocks_1","each_value","each_blocks","instance$5","$$self","$$invalidate","items","flatItems","actions2","items2","cheatsheet2","$$props2","Help","super","create_if_block_1$1","t_value","create_if_block$2","mounted","dispose","checked","create_fragment$4","span0","strong0","t2","span1","t3","t4","strong1","t5","span2","t6","t3_value","t6_value","if_block0","if_block1","instance$4","words2","showSync","syncEnabled","islimited","dispatch","change_handler","click_handler","keydown_handler","includes","Status","convert$1","ok$1","typeFactory$1","isArray","anyFactory$2","propsFactory$1","castFactory$2","tests","checks2","any","parameters","index3","all2","assertion","Boolean","color$1","CONTINUE$1","EXIT$1","SKIP$1","visitParents$1","tree","visitor","is","step","factory2","parents","visit2","subresult","grandparents","toResult$1","visit$1","overload","get_each_context$1","create_each_block$1","li_class_value","li_style_value","new_ctx","create_fragment$3","h22","ul2","instance$3","hast","currentBlockIndex","minLevel","currentHeadingIndex","stringifyHeading","Toc","get_each_context","get_each_context_1","create_else_block","create_if_block_1","each_1_anchor","create_each_block_1","create_if_block_2","tippyClass","create_if_block$1","tippyClassRight","create_each_block","create_fragment$2","select_block_type","current_block_type","tippyPathKey","instance$2","tocActive","helpActive","writeActive","previewActive","toolbar","delegateInstance","activeTab","fullscreen2","sidebar","rightAfferentActions","getPayloadFromElement","_a","_b","paths","item","_a2","init2","delegate","setProps","reference","payload","ins","destroy","dropdown","dropdownTitle","subAction","dropdownItem","allowHTML","showOnCreate","placement","interactive","interactiveDebounce","arrow","outerHTML","popper","querySelectorAll","el","actionHandler","mouseenter","mouseleave","handleClick","closest","click","click_handler_1","keydown_handler_1","div2_binding","$$value","keydown_handler_2","open","Toolbar","defaultSchema","strip","clobberPrefix","clobber","ancestors","tbody","tfoot","thead","td","tr","protocols","href","cite","longDesc","tagNames","li","blockquote","del","q","required","own$f","nodeSchema","all$4","doctype","handleDoctype","comment","handleComment","element","handleTagName","handleProperties","handleValue","allow","sanitize","schema","one$4","stack","replacement","definition2","allowed","results","allowDoctypes","handleDoctypeName","allowComments","handleCommentValue","attrs","reqs","toPropertyValueMap","handlePropertyValues","handlePropertyValue","_","values","safeProtocol","some","colon","questionMark","numberSign","slash","unicode$3","UNDEFINED_CODE_POINTS","REPLACEMENT_CHARACTER","CODE_POINTS","EOF","NULL","TABULATION","CARRIAGE_RETURN","LINE_FEED","FORM_FEED","SPACE","EXCLAMATION_MARK","QUOTATION_MARK","NUMBER_SIGN","AMPERSAND","APOSTROPHE","HYPHEN_MINUS","SOLIDUS","DIGIT_0","DIGIT_9","SEMICOLON","LESS_THAN_SIGN","EQUALS_SIGN","GREATER_THAN_SIGN","QUESTION_MARK","LATIN_CAPITAL_A","LATIN_CAPITAL_F","LATIN_CAPITAL_X","LATIN_CAPITAL_Z","RIGHT_SQUARE_BRACKET","GRAVE_ACCENT","LATIN_SMALL_A","LATIN_SMALL_F","LATIN_SMALL_X","LATIN_SMALL_Z","CODE_POINT_SEQUENCES","DASH_DASH_STRING","DOCTYPE_STRING","CDATA_START_STRING","SCRIPT_STRING","PUBLIC_STRING","SYSTEM_STRING","isSurrogate","cp","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","isControlCodePoint","isUndefinedCodePoint","errorCodes","controlCharacterInInputStream","noncharacterInInputStream","surrogateInInputStream","nonVoidHtmlElementStartTagWithTrailingSolidus","endTagWithAttributes","endTagWithTrailingSolidus","unexpectedSolidusInTag","unexpectedNullCharacter","unexpectedQuestionMarkInsteadOfTagName","invalidFirstCharacterOfTagName","unexpectedEqualsSignBeforeAttributeName","missingEndTagName","unexpectedCharacterInAttributeName","unknownNamedCharacterReference","missingSemicolonAfterCharacterReference","unexpectedCharacterAfterDoctypeSystemIdentifier","unexpectedCharacterInUnquotedAttributeValue","eofBeforeTagName","eofInTag","missingAttributeValue","missingWhitespaceBetweenAttributes","missingWhitespaceAfterDoctypePublicKeyword","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingWhitespaceAfterDoctypeSystemKeyword","missingQuoteBeforeDoctypePublicIdentifier","missingQuoteBeforeDoctypeSystemIdentifier","missingDoctypePublicIdentifier","missingDoctypeSystemIdentifier","abruptDoctypePublicIdentifier","abruptDoctypeSystemIdentifier","cdataInHtmlContent","incorrectlyOpenedComment","eofInScriptHtmlCommentLikeText","eofInDoctype","nestedComment","abruptClosingOfEmptyComment","eofInComment","incorrectlyClosedComment","eofInCdata","absenceOfDigitsInNumericCharacterReference","nullCharacterReference","surrogateCharacterReference","characterReferenceOutsideUnicodeRange","controlCharacterReference","noncharacterCharacterReference","missingWhitespaceBeforeDoctypeName","missingDoctypeName","invalidCharacterSequenceAfterDoctypeName","duplicateAttribute","nonConformingDoctype","missingDoctype","misplacedDoctype","endTagWithoutMatchingOpenElement","closingOfElementWithOpenChildElements","disallowedContentInNoscriptInHead","openElementsLeftAfterEof","abandonedHeadElementChild","misplacedStartTagForHeadElement","nestedNoscriptInHead","eofInElementThatCanContainOnlyText","unicode$2","ERR$2","$$6","DEFAULT_BUFFER_WATERLINE","Preprocessor$1","html","lastGapPos","lastCharPos","gapStack","skipNextNewLine","lastChunkWritten","endOfChunkHit","bufferWaterline","nextCp","_addGap","_err","isLastChunk","advance","_processSurrogate","isCommonValidRange","_checkForProblematicCharacters","preprocessor","namedEntityData","Uint16Array","Preprocessor2","unicode$1","neTree","ERR$1","$$5","C1_CONTROLS_REFERENCE_REPLACEMENTS","128","130","131","132","133","134","135","136","137","138","139","140","142","146","147","148","149","150","151","152","153","154","155","156","158","159","HAS_DATA_FLAG","DATA_DUPLET_FLAG","HAS_BRANCHES_FLAG","MAX_BRANCH_MARKER_VALUE","DATA_STATE","RCDATA_STATE","RAWTEXT_STATE","SCRIPT_DATA_STATE","PLAINTEXT_STATE","TAG_OPEN_STATE","END_TAG_OPEN_STATE","TAG_NAME_STATE","RCDATA_LESS_THAN_SIGN_STATE","RCDATA_END_TAG_OPEN_STATE","RCDATA_END_TAG_NAME_STATE","RAWTEXT_LESS_THAN_SIGN_STATE","RAWTEXT_END_TAG_OPEN_STATE","RAWTEXT_END_TAG_NAME_STATE","SCRIPT_DATA_LESS_THAN_SIGN_STATE","SCRIPT_DATA_END_TAG_OPEN_STATE","SCRIPT_DATA_END_TAG_NAME_STATE","SCRIPT_DATA_ESCAPE_START_STATE","SCRIPT_DATA_ESCAPE_START_DASH_STATE","SCRIPT_DATA_ESCAPED_STATE","SCRIPT_DATA_ESCAPED_DASH_STATE","SCRIPT_DATA_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE","SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE","SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE","BEFORE_ATTRIBUTE_NAME_STATE","ATTRIBUTE_NAME_STATE","AFTER_ATTRIBUTE_NAME_STATE","BEFORE_ATTRIBUTE_VALUE_STATE","ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE","ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE","ATTRIBUTE_VALUE_UNQUOTED_STATE","AFTER_ATTRIBUTE_VALUE_QUOTED_STATE","SELF_CLOSING_START_TAG_STATE","BOGUS_COMMENT_STATE","MARKUP_DECLARATION_OPEN_STATE","COMMENT_START_STATE","COMMENT_START_DASH_STATE","COMMENT_STATE","COMMENT_LESS_THAN_SIGN_STATE","COMMENT_LESS_THAN_SIGN_BANG_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE","COMMENT_END_DASH_STATE","COMMENT_END_STATE","COMMENT_END_BANG_STATE","DOCTYPE_STATE","BEFORE_DOCTYPE_NAME_STATE","DOCTYPE_NAME_STATE","AFTER_DOCTYPE_NAME_STATE","AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE","AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE","AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE","BOGUS_DOCTYPE_STATE","CDATA_SECTION_STATE","CDATA_SECTION_BRACKET_STATE","CDATA_SECTION_END_STATE","CHARACTER_REFERENCE_STATE","NAMED_CHARACTER_REFERENCE_STATE","AMBIGUOUS_AMPERSAND_STATE","NUMERIC_CHARACTER_REFERENCE_STATE","HEXADEMICAL_CHARACTER_REFERENCE_START_STATE","DECIMAL_CHARACTER_REFERENCE_START_STATE","HEXADEMICAL_CHARACTER_REFERENCE_STATE","DECIMAL_CHARACTER_REFERENCE_STATE","NUMERIC_CHARACTER_REFERENCE_END_STATE","isWhitespace","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","isAsciiAlphaNumeric","isAsciiUpperHexDigit","isAsciiLowerHexDigit","isAsciiHexDigit","toAsciiLowerCodePoint","toChar","toAsciiLowerChar","findNamedEntityTreeBranch","nodeIx","branchCount","lo","hi","midCp","Tokenizer$4","Tokenizer","tokenQueue","allowCDATA","charRefCode","tempBuff","lastStartTagName","consumedAfterSnapshot","currentCharacterToken","currentToken","currentAttr","err","_consume","_unconsume","_ensureHibernation","insertHtmlAtCurrentPos","retreat","HIBERNATION_TOKEN","startCp","caseSensitive","consumedCount","isMatch","patternLength","patternPos","patternCp","START_TAG_TOKEN","selfClosing","ackSelfClosing","END_TAG_TOKEN","COMMENT_TOKEN","initialName","DOCTYPE_TOKEN","forceQuirks","publicId","systemId","chars","EOF_TOKEN","attrNameFirstCh","toState","getTokenAttr","_emitCurrentCharacterToken","ct","_createEOFToken","_emitCurrentToken","_createCharacterToken","CHARACTER_TOKEN","WHITESPACE_CHARACTER_TOKEN","NULL_CHARACTER_TOKEN","_appendCharToCurrentCharacterToken","codePoints","_emitCodePoint","excess","inNode","nodeWithData","withSemicolon","_isCharacterReferenceInAttribute","_emitSeveralCodePoints","dropParsedChunk","_emitEOFToken","_emitChars","_createStartTagToken","_reconsumeInState","_createCommentToken","_createEndTagToken","_isTempBufferEqualToScriptString","_createAttr","_leaveAttrName","_leaveAttrValue","_consumeSequenceIfMatch","_createDoctypeToken","_flushCodePointsConsumedAsCharacterReference","matchResult","_matchNamedCharacterReference","_isCharacterReferenceAttributeQuirk","_errOnNextCodePoint","MODE","DATA","RCDATA","RAWTEXT","SCRIPT_DATA","PLAINTEXT","attrName","tokenizer","html$5","NS$3","NAMESPACES","HTML","MATHML","SVG","XLINK","XML","XMLNS","ATTRS","TYPE","ACTION","ENCODING","PROMPT","NAME","COLOR","FACE","SIZE","DOCUMENT_MODE","NO_QUIRKS","QUIRKS","LIMITED_QUIRKS","$$4","TAG_NAMES","A","ADDRESS","ANNOTATION_XML","APPLET","AREA","ARTICLE","ASIDE","B","BASE","BASEFONT","BGSOUND","BIG","BLOCKQUOTE","BR","BUTTON","CAPTION","CENTER","CODE","COL","COLGROUP","DD","DESC","DETAILS","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FOREIGN_OBJECT","FORM","FRAME","FRAMESET","H4","H5","H6","HEAD","HEADER","HGROUP","HR","I","IMG","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LI","LINK","LISTING","MAIN","MALIGNMARK","MARQUEE","MATH","MENU","META","MGLYPH","MI","MO","MN","MS","MTEXT","NAV","NOBR","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","P","PARAM","PRE","RB","RP","RT","RTC","RUBY","S","SCRIPT","SECTION","SELECT","SOURCE","SMALL","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","TABLE","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TITLE","TR","TRACK","TT","U","UL","VAR","WBR","XMP","SPECIAL_ELEMENTS","HTML$3","$$3","NS$2","isImpliedEndTagRequired","tn","isImpliedEndTagRequiredThoroughly","isScopingElement","ns2","OpenElementStack$1","document2","treeAdapter","stackTop","currentTagName","currentTmplContent","tmplCount","idx","getNamespaceURI","getTagName","_isInTemplate","getTemplateContent","_updateCurrentElement","oldElement","newElement","_indexOf","referenceElement","insertionIdx","poppedElement","elementIdx","exclusionTagName","openElementStack","NOAH_ARK_CAPACITY","FormattingElementList$1","FormattingElementList","entries","bookmark","candidates","neAttrsLength","getAttrList","neTagName","neNamespaceURI","entry","MARKER_ENTRY","elementAttrs","isCandidate","_getNoahArkConditionCandidates","cLength","neAttrs","neAttrsMap","neAttr","cAttr","_ensureNoahArkCondition","ELEMENT_ENTRY","bookmarkIdx","formattingElementList","Mixin$9","originalMethods","overriddenMethods","_getOverriddenMethods","install","Ctor","opts","__mixins","mixin2","mixin","Mixin$8","PositionTrackingPreprocessorMixin$2","preprocessor2","isEol","lineStartPos","droppedBufferSize","mxn","orig","prevPos","reduction","preprocessorMixin$1","Mixin$7","Tokenizer$3","PositionTrackingPreprocessorMixin$1","LocationInfoTokenizerMixin$2","tokenizer2","posTracker","currentAttrLocation","ctLoc","startOffset","endLine","endCol","endOffset","location","methods","_getCurrentLocation","_attachCurrentAttrLocationInfo","modeName","tokenizerMixin$1","Mixin$6","LocationInfoOpenElementStackMixin$1","onItemPop","popAllUpToHtmlElement","openElementStackMixin","Mixin$5","Tokenizer$2","LocationInfoTokenizerMixin$1","LocationInfoOpenElementStackMixin2","HTML$2","$$2","LocationInfoParserMixin$1","parser","lastStartTagToken","lastFosterParentingLocation","loc","startTag","setNodeSourceCodeLocation","closingToken","getNodeSourceCodeLocation","isClosingEndTag","endLoc","endTag","updateNodeSourceCodeLocation","fragmentContext","_bootstrap","tokenizerMixin2","openElements","_setEndLocation","scriptHandler","_runParsingLoop","_processTokenInForeignContent","_processToken","requireExplicitUpdate","hasInScope","_setDocumentType","documentChildren","getChildNodes","cnLength","isDocumentTypeNode","_setStartLocation","_attachElementToTree","namespaceURI","_appendElement","_insertElement","_insertTemplate","tmplContent","_insertFakeRootElement","_appendCommentNode","commentNode","_findFosterParentingLocation","_insertCharacters","hasFosterParent","_shouldFosterParentOnInsertion","siblings2","textNodeIdx","beforeElement","tnLoc","parserMixin$1","Mixin$4","ErrorReportingMixinBase$3","onParseError","_setErrorLocation","_reportError","mixinBase","ErrorReportingMixinBase$2","PositionTrackingPreprocessorMixin2","Mixin$3","ErrorReportingPreprocessorMixin$1","lastErrOffset","preprocessorMixin","ErrorReportingMixinBase$1","ErrorReportingPreprocessorMixin2","Mixin$2","ErrorReportingTokenizerMixin$1","preprocessorMixin2","tokenizerMixin","ErrorReportingMixinBase2","ErrorReportingTokenizerMixin2","LocationInfoTokenizerMixin2","Mixin$1","ErrorReportingParserMixin$1","locBeforeToken","_processInputToken","beforeToken","parserMixin","_default","DOCUMENT_MODE$1","createDocument","createCommentNode","newNode","referenceNode","setTemplateContent","templateElement","contentElement","setDocumentType","doctypeNode","setDocumentMode","getDocumentMode","detachNode","insertText","prevNode","insertTextBefore","adoptAttributes","recipient","recipientAttrsMap","getFirstChild","getParentNode","getTextNodeContent","getCommentNodeContent","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isTextNode","isCommentNode","isElementNode","location2","sourceCodeLocation","endLocation","mergeOptions$1","reduce","optObj","doctype$4","VALID_DOCTYPE_NAME","VALID_SYSTEM_ID","QUIRKS_MODE_SYSTEM_ID","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","enquoteDoctypeId","hasPrefix","prefixes","isConforming","serializeContent","foreignContent$1","Tokenizer$1","HTML$1","$$1","NS$1","ATTRS$1","MIME_TYPES","TEXT_HTML","APPLICATION_XML","DEFINITION_URL_ATTR","ADJUSTED_DEFINITION_URL_ATTR","SVG_ATTRS_ADJUSTMENT_MAP","attributename","attributetype","basefrequency","baseprofile","calcmode","clippathunits","diffuseconstant","edgemode","filterunits","glyphref","gradienttransform","gradientunits","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","limitingconeangle","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","pathlength","patterncontentunits","patterntransform","patternunits","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","repeatcount","repeatdur","requiredextensions","requiredfeatures","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","surfacescale","systemlanguage","tablevalues","targetx","targety","textlength","viewbox","viewtarget","xchannelselector","ychannelselector","zoomandpan","XML_ATTRS_ADJUSTMENT_MAP","prefix","namespace","xmlns","SVG_TAG_NAMES_ADJUSTMENT_MAP","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","lineargradient","radialgradient","textpath","EXITS_FOREIGN_CONTENT","isMathMLTextIntegrationPoint","isHtmlIntegrationPoint","causesExit","startTagToken2","isFontWithAttrs","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isIntegrationPoint","foreignNS","Tokenizer2","OpenElementStack2","FormattingElementList2","LocationInfoParserMixin2","ErrorReportingParserMixin2","Mixin2","defaultTreeAdapter","mergeOptions2","doctype$3","foreignContent","ERR","unicode","$","NS","DEFAULT_OPTIONS","scriptingEnabled","sourceCodeLocationInfo","HIDDEN_INPUT_TYPE","AA_OUTER_LOOP_ITER","AA_INNER_LOOP_ITER","INITIAL_MODE","BEFORE_HTML_MODE","BEFORE_HEAD_MODE","IN_HEAD_MODE","IN_HEAD_NO_SCRIPT_MODE","AFTER_HEAD_MODE","IN_BODY_MODE","TEXT_MODE","IN_TABLE_MODE","IN_TABLE_TEXT_MODE","IN_CAPTION_MODE","IN_COLUMN_GROUP_MODE","IN_TABLE_BODY_MODE","IN_ROW_MODE","IN_CELL_MODE","IN_SELECT_MODE","IN_SELECT_IN_TABLE_MODE","IN_TEMPLATE_MODE","AFTER_BODY_MODE","IN_FRAMESET_MODE","AFTER_FRAMESET_MODE","AFTER_AFTER_BODY_MODE","AFTER_AFTER_FRAMESET_MODE","INSERTION_MODE_RESET_MAP","TEMPLATE_INSERTION_MODE_SWITCH_MAP","TOKEN_HANDLERS","tokenInInitialMode","ignoreToken","appendComment","doctypeInInitialMode","tokenBeforeHtml","startTagBeforeHtml","endTagBeforeHtml","tokenBeforeHead","startTagBeforeHead","endTagBeforeHead","tokenInHead","insertCharacters","startTagInHead","endTagInHead","tokenInHeadNoScript","startTagInHeadNoScript","endTagInHeadNoScript","tokenAfterHead","startTagAfterHead","endTagAfterHead","characterInBody","whitespaceCharacterInBody","startTagInBody","endTagInBody","eofInBody","endTagInText","eofInText","characterInTable","startTagInTable","endTagInTable","characterInTableText","whitespaceCharacterInTableText","tokenInTableText","startTagInCaption","endTagInCaption","tokenInColumnGroup","startTagInColumnGroup","endTagInColumnGroup","startTagInTableBody","endTagInTableBody","startTagInRow","endTagInRow","startTagInCell","endTagInCell","startTagInSelect","endTagInSelect","startTagInSelectInTable","endTagInSelectInTable","startTagInTemplate","endTagInTemplate","eofInTemplate","tokenAfterBody","appendCommentToRootHtmlElement","startTagAfterBody","endTagAfterBody","stopParsing","startTagInFrameset","endTagInFrameset","startTagAfterFrameset","endTagAfterFrameset","tokenAfterAfterBody","appendCommentToDocument","startTagAfterAfterBody","startTagAfterAfterFrameset","Parser","pendingScript","html2","documentMock","_pushTmplInsertionMode","_initTokenizerForFragmentParsing","_resetInsertionMode","_findFormInFragmentContext","rootElement","_adoptNodes","stopped","insertionMode","originalInsertionMode","headElement","formElement","activeFormattingElements","tmplInsertionModeStack","tmplInsertionModeStackTop","currentTmplInsertionMode","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","framesetOk","fosterParentingEnabled","_setupTokenizerCDATAMode","getNextToken","writeCallback","script","_getAdjustedCurrentElement","_isIntegrationPoint","nextTokenizerState","_fosterParentElement","tmpl","_fosterParentText","donor","isCharacterToken","isMathMLTextStartTag","characterInForeignContent","nullCharacterInForeignContent","startTagInForeignContent","endTagInForeignContent","_shouldProcessTokenInForeignContent","listLength","unopenIdx","generateImpliedEndTags","popUntilTableCellPopped","clearToLastMarker","generateImpliedEndTagsWithExclusion","popUntilTagNamePopped","newInsertionMode","_resetInsertionModeForSelect","selectIdx","ancestor","_isElementCausesFosterParenting","openElement","aaObtainFormattingElementEntry","formattingElementEntry","getElementEntryInScopeWithTagName","removeEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","popUntilElementPopped","aaInnerLoop","formattingElement","lastElement","nextElement","getCommonAncestor","elementEntry","getElementEntry","counterOverflow","shouldRemoveFromOpenElements","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","insertElementAfterBookmark","insertAfter","callAdoptionAgency","_insertFakeElement","_switchToTextParsing","insertMarker","generateImpliedEndTagsThoroughly","_popTmplInsertionMode","errCode","_reconstructActiveFormattingElements","htmlStartTagInBody","bodyStartTagInBody","bodyElement","tryPeekProperlyNestedBodyElement","framesetStartTagInBody","addressStartTagInBody","hasInButtonScope","_closePElement","numberedHeaderStartTagInBody","preStartTagInBody","formStartTagInBody","inTemplate","listItemStartTagInBody","elementTn","closeTn","plaintextStartTagInBody","buttonStartTagInBody","aStartTagInBody","activeElementEntry","pushElement","bStartTagInBody","nobrStartTagInBody","appletStartTagInBody","tableStartTagInBody","areaStartTagInBody","inputStartTagInBody","inputType","paramStartTagInBody","hrStartTagInBody","imageStartTagInBody","textareaStartTagInBody","xmpStartTagInBody","iframeStartTagInBody","noembedStartTagInBody","selectStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","rtStartTagInBody","menuStartTagInBody","mathStartTagInBody","svgStartTagInBody","genericStartTagInBody","bodyEndTagInBody","htmlEndTagInBody","addressEndTagInBody","formEndTagInBody","pEndTagInBody","liEndTagInBody","hasInListItemScope","ddEndTagInBody","numberedHeaderEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","appletEndTagInBody","brEndTagInBody","curTn","tokenInTable","captionStartTagInTable","clearBackToTableContext","colgroupStartTagInTable","colStartTagInTable","tbodyStartTagInTable","tdStartTagInTable","tableStartTagInTable","hasInTableScope","inputStartTagInTable","formStartTagInTable","savedFosterParentingState","_processTokenInBodyMode","clearBackToTableBodyContext","hasTableBodyContextInTableScope","clearBackToTableRowContext","_closeTableCell","hasInSelectScope","prevOpenElement","prevOpenElementTn","isRootHtmlElementCurrent","currentNs","pointStart","point$2","pointEnd","point2","point3","Schema","property","merge","definitions2","normalize$1","Info","boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated","mustUseProperty","defined","powers","increment","types","freeze","__proto__","checks","DefinedInfo","mask","mark","own$e","transform","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","html$4","acceptcharset","classname","htmlfor","httpequiv","abbr","acceptCharset","accessKey","allowFullScreen","allowPaymentRequest","allowUserMedia","autoCapitalize","autoComplete","autoFocus","autoPlay","charSet","cols","colSpan","controls","controlsList","crossOrigin","dateTime","decoding","default","defer","dirName","download","encType","enterKeyHint","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","high","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","kind","lang","language","loading","low","manifest","maxLength","media","minLength","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onCancel","onCanPlay","onCanPlayThrough","onClick","onClose","onContextLost","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDurationChange","onEmptied","onEnded","onError","onFormData","onHashChange","onInput","onInvalid","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onScroll","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","poster","preload","referrerPolicy","reversed","rows","rowSpan","sandbox","scope","scoped","seamless","shape","slot","spellCheck","srcDoc","srcLang","srcSet","translate","typeMustMatch","useMap","wrap","aLink","archive","bgColor","borderColor","bottomMargin","cellPadding","cellSpacing","char","charOff","classId","codeBase","codeType","color","compact","declare","face","frame","frameBorder","hSpace","leftMargin","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","object","profile","prompt","rev","rightMargin","rules","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","svg$1","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cy","defaultAction","descent","diffuseConstant","dur","divisor","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","format","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","observer","opacity","operator","orient","orientation","overflow","path","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","resource","restart","rotate","rx","ry","scale","seed","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","viewBox","viewTarget","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","z","zoomAndPan","valid","dash","cap","Type","camelcase","dashes","kebab","$0","hastToReact","html$3","svg","search$1","parseSelector","selector","defaultTagName","subvalue","previous2","parse$3","stringify$1","parse$2","stringify","settings","padRight","padLeft","buttonTypes","own$d","core$1","adjust","createAdjustMap","isProperties","addProperty","addChild","parsePrimitive","finalResult","h","svgCaseSensitiveTagNames","s","indices","toPoint","toOffset","webNamespaces","mathml","own$c","root$5","text$6","comment$3","doctype$2","fromParse5","ast","isFile","transform$1","verbose","element$4","nodes","position2","createLocation","quirksMode","startTag2","position$1","endTag2","tail","opening","closing","point$1","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","NEWLINE","FORWARD_SLASH","ASTERISK","EMPTY_STRING","TYPE_COMMENT","TYPE_DECLARATION","inlineStyleParser","TypeError","lineno","updatePosition","lastIndexOf","Position","whitespace2","error","msg","reason","filename","silent","re","comments","comment2","declaration","declarations","decl","decls","parse$1","StyleToObject","iterator","hasIterator","styleToObject","ns","toReact","own$b","root$4","element$3","text$5","toH","react","vue","vd","vdom","key","hyperscript","parentSchema","addAttribute","subprop","parseStyle","_isVue","value2","$1","message","own$a","zwitch","one2","invalid","handlers","unknown","own$9","one$3","root$3","element$2","text$4","comment$2","doctype$1","toParse5","p5","all$3","patch","htmlVoidElements","inTemplateMode","dataState","characterToken","startTagToken","endTagToken","commentToken","doctypeToken","parseOptions","raw$1","parser$1","root2","raw","handleRaw","unknown$1","stitches","locationTracker","isOptions","passThrough","stitch","stitch2","mock","resetTokenizer","createParse5Location","clone","rehypeRaw","rehypeSanitize","isElement","convertElement","POSITIVE_INFINITY","element$1","tagNameFactory","anyFactory$1","castFactory$1","convert","ok","typeFactory","anyFactory","propsFactory","castFactory","comment$1","whitespace","siblingAfter","siblings","siblingBefore","increment2","includeWhitespace","isText","whitespaceStart","own$8","omission$1","omit","html$2","headOrColgroupOrCaption","body$1","dt","dd","rubyElement","rp","optgroup","option","menuitem","colgroup","caption","tbody$1","cells","html$1","seen","omission","core","subset","charactersToExpression","escapeOnly","surrogate","character","groups","toHexadecimal","toDecimal","characterEntitiesLegacy","characterEntitiesHtml4","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","fnof","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","bull","hellip","prime","Prime","oline","frasl","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","exist","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","and","or","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","rang","loz","spades","clubs","hearts","diams","quot","amp","lt","gt","OElig","oelig","Scaron","scaron","Yuml","circ","tilde","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","permil","lsaquo","rsaquo","euro","dangerous","own$7","characters","toNamed","formatSmart","named","numeric","omitOptionalSemicolons","useNamedReferences","useShortestReferences","decimal","stringifyEntities","ccount","constants","unquoted","single","double","bogusComments","entities","encode2","upperDoctype","tightDoctype","text$3","handlers$1","all$2","own$6","one$2","closeEmpty","voids","serializeAttributes","tightClose","serializeAttribute","tight","safe","tightLists","collapseEmpty","smart","alternative","toHtml","allowParseErrors","allowDangerousCharacters","omitOptionalTags","quoteSmart","preferUnquoted","tightAttributes","tightCommaSeparatedLists","tightSelfClosing","collapseEmptyAttributes","allowDangerousHtml","closeSelfClosing","closeEmptyElements","rehypeStringify","processorSettings","compiler2","Compiler","includeImageAlt","one$1","all$1","chunkStart","hasOwnProperty$1","combineExtensions","extensions","syntaxExtension","extension2","hook","maybe","constructs","unicodePunctuationRegex","asciiAlpha","regexCheck","asciiDigit","asciiHexDigit","asciiAlphanumeric","asciiPunctuation","asciiAtext","asciiControl","markdownLineEndingOrSpace","markdownLineEnding","markdownSpace","unicodeWhitespace","unicodePunctuation","factorySpace","effects","exit","content$1","initializeContent","contentStart","attempt","contentInitial","afterContentStartConstruct","paragraphInitial","contentType","previous","document$2","initializeDocument","containerConstruct","tokenizeContainer","childFlow","childToken","lineStartOffset","continued","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","thereIsANewContainer","thereIsNoNewContainer","lazy","now","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","sliceStream","defineSkip","nok","disable","null","classifyCharacter","resolveAll","constructs2","called","attention","tokenizeAttention","resolveAllAttention","openingSequence","closingSequence","use","nextEvents","_close","_open","sliceSerialize","movePoint","insideSpan","attentionMarkers2","attentionMarkers","sequence","_bufferIndex","autolink","tokenizeAutolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","tokenizeBlankLine","partial","afterWhitespace","blockQuote","tokenizeBlockQuoteStart","tokenizeBlockQuoteContinuation","_container","characterEscape","tokenizeCharacterEscape","characterEntities","AEli","AM","AMP","Aacut","Abreve","Acir","Acy","Afr","Agrav","Amacr","And","Aogon","Aopf","ApplyFunction","Arin","Ascr","Assign","Atild","Aum","Backslash","Barv","Barwed","Bcy","Because","Bernoullis","Bfr","Bopf","Breve","Bscr","Bumpeq","CHcy","COP","COPY","Cacute","Cap","CapitalDifferentialD","Cayleys","Ccaron","Ccedi","Ccirc","Cconint","Cdot","Cedilla","CenterDot","Cfr","CircleDot","CircleMinus","CirclePlus","CircleTimes","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","Colon","Colone","Congruent","Conint","ContourIntegral","Copf","Coproduct","CounterClockwiseContourIntegral","Cross","Cscr","Cup","CupCap","DDotrahd","DJcy","DScy","DZcy","Darr","Dashv","Dcaron","Dcy","Del","Dfr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","Diamond","DifferentialD","Dopf","Dot","DotDot","DotEqual","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","DownArrowBar","DownArrowUpArrow","DownBreve","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","Downarrow","Dscr","Dstrok","ENG","ET","Eacut","Ecaron","Ecir","Ecy","Edot","Efr","Egrav","Element","Emacr","EmptySmallSquare","EmptyVerySmallSquare","Eogon","Eopf","Equal","EqualTilde","Equilibrium","Escr","Esim","Eum","Exists","ExponentialE","Fcy","Ffr","FilledSmallSquare","FilledVerySmallSquare","Fopf","ForAll","Fouriertrf","Fscr","GJcy","G","GT","Gammad","Gbreve","Gcedil","Gcirc","Gcy","Gdot","Gfr","Gg","Gopf","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","Gt","HARDcy","Hacek","Hat","Hcirc","Hfr","HilbertSpace","Hopf","HorizontalLine","Hscr","Hstrok","HumpDownHump","HumpEqual","IEcy","IJlig","IOcy","Iacut","Icir","Icy","Idot","Ifr","Igrav","Im","Imacr","ImaginaryI","Implies","Int","Integral","Intersection","InvisibleComma","InvisibleTimes","Iogon","Iopf","Iscr","Itilde","Iukcy","Ium","Jcirc","Jcy","Jfr","Jopf","Jscr","Jsercy","Jukcy","KHcy","KJcy","Kcedil","Kcy","Kfr","Kopf","Kscr","LJcy","L","LT","Lacute","Lang","Laplacetrf","Larr","Lcaron","Lcedil","Lcy","LeftAngleBracket","LeftArrow","LeftArrowBar","LeftArrowRightArrow","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","LeftRightArrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","Leftarrow","Leftrightarrow","LessEqualGreater","LessFullEqual","LessGreater","LessLess","LessSlantEqual","LessTilde","Lfr","Ll","Lleftarrow","Lmidot","LongLeftArrow","LongLeftRightArrow","LongRightArrow","Longleftarrow","Longleftrightarrow","Longrightarrow","Lopf","LowerLeftArrow","LowerRightArrow","Lscr","Lsh","Lstrok","Lt","Mcy","MediumSpace","Mellintrf","Mfr","MinusPlus","Mopf","Mscr","NJcy","Nacute","Ncaron","Ncedil","Ncy","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","NestedGreaterGreater","NestedLessLess","NewLine","Nfr","NoBreak","NonBreakingSpace","Nopf","Not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","Nscr","Ntild","Oacut","Ocir","Ocy","Odblac","Ofr","Ograv","Omacr","Oopf","OpenCurlyDoubleQuote","OpenCurlyQuote","Or","Oscr","Oslas","Otild","Otimes","Oum","OverBar","OverBrace","OverBracket","OverParenthesis","PartialD","Pcy","Pfr","PlusMinus","Poincareplane","Popf","Pr","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","Product","Proportion","Proportional","Pscr","QUO","QUOT","Qfr","Qopf","Qscr","RBarr","RE","REG","Racute","Rang","Rarr","Rarrtl","Rcaron","Rcedil","Rcy","Re","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","Rfr","RightAngleBracket","RightArrow","RightArrowBar","RightArrowLeftArrow","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","RightTee","RightTeeArrow","RightTeeVector","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","Rightarrow","Ropf","RoundImplies","Rrightarrow","Rscr","Rsh","RuleDelayed","SHCHcy","SHcy","SOFTcy","Sacute","Sc","Scedil","Scirc","Scy","Sfr","ShortDownArrow","ShortLeftArrow","ShortRightArrow","ShortUpArrow","SmallCircle","Sopf","Sqrt","Square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","Sscr","Star","Sub","Subset","SubsetEqual","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","SuchThat","Sum","Sup","Superset","SupersetEqual","Supset","THOR","TRADE","TSHcy","TScy","Tab","Tcaron","Tcedil","Tcy","Tfr","Therefore","ThickSpace","ThinSpace","Tilde","TildeEqual","TildeFullEqual","TildeTilde","Topf","TripleDot","Tscr","Tstrok","Uacut","Uarr","Uarrocir","Ubrcy","Ubreve","Ucir","Ucy","Udblac","Ufr","Ugrav","Umacr","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","Uopf","UpArrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","UpEquilibrium","UpTee","UpTeeArrow","Uparrow","Updownarrow","UpperLeftArrow","UpperRightArrow","Upsi","Uring","Uscr","Utilde","Uum","VDash","Vbar","Vcy","Vdash","Vdashl","Vee","Verbar","Vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","Vopf","Vscr","Vvdash","Wcirc","Wedge","Wfr","Wopf","Wscr","Xfr","Xopf","Xscr","YAcy","YIcy","YUcy","Yacut","Ycirc","Ycy","Yfr","Yopf","Yscr","ZHcy","Zacute","Zcaron","Zcy","Zdot","ZeroWidthSpace","Zfr","Zopf","Zscr","aacut","abreve","ac","acE","acd","acir","acut","acy","aeli","af","afr","agrav","aleph","amacr","amalg","am","andand","andd","andslope","andv","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","aogon","aopf","ap","apE","apacir","ape","apid","apos","approx","approxeq","arin","ascr","asympeq","atild","aum","awconint","awint","bNot","backcong","backepsilon","backprime","backsim","backsimeq","barvee","barwed","barwedge","bbrk","bbrktbrk","bcong","bcy","becaus","because","bemptyv","bepsi","bernou","beth","between","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","bne","bnequiv","bnot","bopf","bowtie","boxDL","boxDR","boxDl","boxDr","boxH","boxHD","boxHU","boxHd","boxHu","boxUL","boxUR","boxUl","boxUr","boxV","boxVH","boxVL","boxVR","boxVh","boxVl","boxVr","boxbox","boxdL","boxdR","boxdl","boxdr","boxh","boxhD","boxhU","boxhd","boxhu","boxminus","boxplus","boxtimes","boxuL","boxuR","boxul","boxur","boxv","boxvH","boxvL","boxvR","boxvh","boxvl","boxvr","bprime","breve","brvba","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bump","bumpE","bumpe","bumpeq","cacute","capand","capbrcup","capcap","capcup","capdot","caps","caret","caron","ccaps","ccaron","ccedi","ccirc","ccups","ccupssm","cdot","cedi","cemptyv","cen","centerdot","cfr","chcy","checkmark","cir","cirE","circeq","circlearrowleft","circlearrowright","circledR","circledS","circledast","circledcirc","circleddash","cire","cirfnint","cirmid","cirscir","clubsuit","colone","coloneq","comma","commat","compfn","complement","complexes","congdot","conint","copf","coprod","cop","copysr","cross","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","cupbrcap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curre","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","dHar","daleth","dashv","dbkarow","dblac","dcaron","dcy","ddagger","ddarr","ddotseq","de","demptyv","dfisht","dfr","dharl","dharr","diam","diamond","diamondsuit","die","digamma","disin","divid","divideontimes","divonx","djcy","dlcorn","dlcrop","dollar","dopf","dot","doteq","doteqdot","dotminus","dotplus","dotsquare","doublebarwedge","downarrow","downdownarrows","downharpoonleft","downharpoonright","drbkarow","drcorn","drcrop","dscr","dscy","dsol","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","dzcy","dzigrarr","eDDot","eDot","eacut","easter","ecaron","ecir","ecolon","ecy","edot","ee","efDot","efr","eg","egrav","egs","egsdot","elinters","ell","els","elsdot","emacr","emptyset","emptyv","emsp13","emsp14","eng","eogon","eopf","epar","eparsl","eplus","epsi","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","equest","equivDD","eqvparsl","erDot","erarr","escr","esdot","esim","et","eum","excl","expectation","exponentiale","fallingdotseq","fcy","female","ffilig","fflig","ffllig","ffr","filig","fjlig","flat","fllig","fltns","fopf","fork","forkv","fpartint","frac1","frac13","frac15","frac16","frac18","frac23","frac25","frac3","frac35","frac38","frac45","frac56","frac58","frac78","frown","fscr","gE","gEl","gacute","gammad","gbreve","gcirc","gcy","gdot","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","gfr","gg","ggg","gimel","gjcy","gl","glE","gla","glj","gnE","gnap","gnapprox","gne","gneq","gneqq","gnsim","gopf","grave","gscr","gsim","gsime","gsiml","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","hairsp","half","hamilt","hardcy","harrcir","harrw","hbar","hcirc","heartsuit","hercon","hfr","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","hopf","horbar","hscr","hslash","hstrok","hybull","hyphen","iacut","ic","icir","icy","iecy","iexc","iff","ifr","igrav","ii","iiiint","iiint","iinfin","iiota","ijlig","imacr","imagline","imagpart","imath","imof","imped","incare","infintie","inodot","intcal","integers","intercal","intlarhk","intprod","iocy","iogon","iopf","iprod","iques","iscr","isinE","isindot","isins","isinsv","isinv","it","itilde","iukcy","ium","jcirc","jcy","jfr","jmath","jopf","jscr","jsercy","jukcy","kappav","kcedil","kcy","kfr","kgreen","khcy","kjcy","kopf","kscr","lAarr","lAtail","lBarr","lE","lEg","lHar","lacute","laemptyv","lagran","langd","langle","lap","laqu","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","latail","late","lates","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","lcaron","lcedil","lcub","lcy","ldca","ldquor","ldrdhar","ldrushar","ldsh","leftarrow","leftarrowtail","leftharpoondown","leftharpoonup","leftleftarrows","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","leftthreetimes","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","lessgtr","lesssim","lfisht","lfr","lg","lgE","lhard","lharu","lharul","lhblk","ljcy","ll","llarr","llcorner","llhard","lltri","lmidot","lmoust","lmoustache","lnE","lnap","lnapprox","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","longleftarrow","longleftrightarrow","longmapsto","longrightarrow","looparrowleft","looparrowright","lopar","lopf","loplus","lotimes","lowbar","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrtri","lscr","lsh","lsim","lsime","lsimg","lsqb","lsquor","lstrok","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltrPar","ltri","ltrie","ltrif","lurdshar","luruhar","lvertneqq","lvnE","mDDot","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","mcomma","mcy","measuredangle","mfr","mho","micr","midast","midcir","middo","minusb","minusd","minusdu","mlcp","mldr","mnplus","models","mopf","mp","mscr","mstpos","multimap","mumap","nGg","nGt","nGtv","nLeftarrow","nLeftrightarrow","nLl","nLt","nLtv","nRightarrow","nVDash","nVdash","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbs","nbump","nbumpe","ncap","ncaron","ncedil","ncong","ncongdot","ncup","ncy","neArr","nearhk","nearr","nearrow","nedot","nequiv","nesear","nesim","nexist","nexists","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","ngsim","ngt","ngtr","nhArr","nharr","nhpar","nis","nisd","niv","njcy","nlArr","nlE","nlarr","nldr","nle","nleftarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nlsim","nlt","nltri","nltrie","nmid","nopf","notinE","notindot","notinva","notinvb","notinvc","notni","notniva","notnivb","notnivc","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","ntild","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","numero","numsp","nvDash","nvHarr","nvap","nvdash","nvge","nvgt","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwArr","nwarhk","nwarr","nwarrow","nwnear","oS","oacut","oast","ocir","ocy","odash","odblac","odiv","odot","odsold","ofcir","ofr","ogon","ograv","ogt","ohbar","ohm","oint","olarr","olcir","olcross","olt","omacr","omid","ominus","oopf","opar","operp","orarr","ord","orderof","origof","oror","orslope","orv","oscr","oslas","osol","otild","otimesas","oum","ovbar","par","parallel","parsim","parsl","pcy","percnt","period","pertenk","pfr","phiv","phmmat","phone","pitchfork","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","plusm","plussim","plustwo","pm","pointint","popf","poun","pr","prE","prap","prcue","prec","precapprox","preccurlyeq","preceq","precnapprox","precneqq","precnsim","precsim","primes","prnE","prnap","prnsim","profalar","profline","profsurf","propto","prsim","prurel","pscr","puncsp","qfr","qint","qopf","qprime","qscr","quaternions","quatint","quest","questeq","quo","rAarr","rAtail","rBarr","rHar","race","racute","raemptyv","rangd","rangle","raqu","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","rarrtl","rarrw","ratail","ratio","rationals","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","rcaron","rcedil","rcub","rcy","rdca","rdldhar","rdquor","rdsh","realine","realpart","reals","rfisht","rfr","rhard","rharu","rharul","rhov","rightarrow","rightarrowtail","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","rightthreetimes","ring","risingdotseq","rlarr","rlhar","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","ropf","roplus","rotimes","rpar","rpargt","rppolint","rrarr","rscr","rsh","rsqb","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","ruluhar","sacute","sc","scE","scap","sccue","sce","scedil","scirc","scnE","scnap","scnsim","scpolint","scsim","scy","sdotb","sdote","seArr","searhk","searr","searrow","sec","semi","seswar","setminus","setmn","sext","sfr","sfrown","sharp","shchcy","shcy","shortmid","shortparallel","sh","sigmav","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","softcy","solb","solbar","sopf","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","square","squarf","squf","srarr","sscr","ssetmn","ssmile","sstarf","star","starf","straightepsilon","straightphi","strns","subE","subdot","subedot","submult","subnE","subne","subplus","subrarr","subseteq","subseteqq","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","succeq","succnapprox","succneqq","succnsim","succsim","sung","supE","supdot","supdsub","supedot","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swArr","swarhk","swarr","swarrow","swnwar","szli","tbrk","tcaron","tcedil","tcy","tdot","telrec","tfr","therefore","thetav","thickapprox","thicksim","thkap","thksim","thor","timesb","timesbar","timesd","tint","toea","topbot","topcir","topf","topfork","tosa","tprime","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","triplus","trisb","tritime","trpezium","tscr","tscy","tshcy","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","uHar","uacut","ubrcy","ubreve","ucir","ucy","udarr","udblac","udhar","ufisht","ufr","ugrav","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","umacr","um","uogon","uopf","uparrow","updownarrow","upharpoonleft","upharpoonright","uplus","upsi","upuparrows","urcorn","urcorner","urcrop","uring","urtri","uscr","utdot","utilde","utri","utrif","uuarr","uum","uwangle","vArr","vBar","vBarv","vDash","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","vcy","vdash","vee","veebar","veeeq","vellip","verbar","vfr","vltri","vnsub","vnsup","vopf","vprop","vrtri","vscr","vsubnE","vsubne","vsupnE","vsupne","vzigzag","wcirc","wedbar","wedge","wedgeq","wfr","wopf","wp","wr","wreath","wscr","xcap","xcirc","xcup","xdtri","xfr","xhArr","xharr","xlArr","xlarr","xmap","xnis","xodot","xopf","xoplus","xotime","xrArr","xrarr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","yacut","yacy","ycirc","ycy","ye","yfr","yicy","yopf","yscr","yucy","yum","zacute","zcaron","zcy","zdot","zeetrf","zfr","zhcy","zigrarr","zopf","zscr","own$5","decodeNamedCharacterReference","characterReference","tokenizeCharacterReference","codeFenced","tokenizeCodeFenced","closingFenceConstruct","tokenizeClosingFence","nonLazyLine","tokenizeNonLazyLine","initialPrefix","sizeOpen","sequenceOpen","infoOpen","openAfter","infoAfter","meta","contentContinue","effects2","ok3","nok2","self3","start2","closingSequenceStart","closingSequenceEnd","codeIndented","tokenizeCodeIndented","indentedContent","tokenizeIndentedContent","afterStartPrefix","afterPrefix","tokenizeCodeText","resolveCodeText","tailExitIndex","headEnterIndex","subtokenize","jumps","lineIndex","otherIndex","otherEvent","subevents","more","_isInFirstContentOfListItem","subcontent","eventIndex","startPosition","startPositions","childEvents","gaps","breaks","_gfmTasklistFirstContentOfListItem","tokenizeContent","resolveContent","continuationConstruct","tokenizeContinuation","contentEnd","startLookahead","prefixed","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","factoryLabel","markerType","atBreak","labelEscape","factoryTitle","atFirstTitleBreak","atTitleBreak","titleEscape","factoryWhitespace","normalizeIdentifier","definition","tokenizeDefinition","titleConstruct","tokenizeTitle","identifier","labelAfter","hardBreakEscape","tokenizeHardBreakEscape","headingAtx","tokenizeHeadingAtx","resolveHeadingAtx","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","htmlFlow","tokenizeHtmlFlow","resolveTo","resolveToHtmlFlow","nextBlankConstruct","tokenizeNextBlank","buffer2","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","htmlContinueStart","htmlLineEnd","continuationRawEndTag","htmlText","tokenizeHtmlText","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","commentStart","commentStartDash","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelEnd","tokenizeLabelEnd","resolveToLabelEnd","resolveAllLabelEnd","resourceConstruct","tokenizeResource","fullReferenceConstruct","tokenizeFullReference","collapsedReferenceConstruct","tokenizeCollapsedReference","_inactive","_balanced","labelStart","balanced","afterLabelEnd","destinationAfter","afterLabel","labelStartImage","tokenizeLabelStartImage","labelStartLink","tokenizeLabelStartLink","lineEnding","tokenizeLineEnding","thematicBreak$1","tokenizeThematicBreak","list$1","tokenizeListStart","tokenizeListContinuation","tokenizeListEnd","listItemPrefixWhitespaceConstruct","tokenizeListItemPrefixWhitespace","indentConstruct","tokenizeIndent","initialSize","atMarker","inside","onBlank","endOfPrefix","otherPrefix","initialBlankLine","notBlank","furtherBlankLines","notInCurrentItem","setextUnderline","tokenizeSetextUnderline","resolveToSetextUnderline","heading2","paragraph2","flow$1","initializeFlow","initial","atBlankEnding","flowInitial","afterConstruct","resolver","createResolver","string$1","initializeFactory","text$2","initializeText","resolveAllLineSuffixes","notText","extraResolver","resolveAllText","chunks","tabs","bufferIndex","_index","createTokenizer","initialize","columnStart","resolveAllConstructs","constructFactory","onsuccessfulconstruct","onsuccessfulcheck","write2","main","addResult","expandTabs","serializeChunks","sliceChunks","accountForPotentialSkip","chunkIndex","go","fields","construct","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleMapOfConstructs","def","handleConstruct","store","from2","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","startBufferIndex","endIndex","endBufferIndex","atTab","document$1","text$1","defaultConstructs","parse","create2","creator","preprocess","atCarriageReturn","encoding","endPosition","postprocess","decodeNumericCharacterReference","characterEscapeOrReference","decodeString","decode","$2","head3","hex","stringifyPosition","point","own$4","fromMarkdown","compiler","configure","transforms","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","blockQuote2","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeText2","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","emphasis2","hardBreak2","hardBreakTrailing","htmlFlowData","htmlTextData","image2","listItem","listItem2","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","paragraph","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong2","thematicBreak","thematicBreak2","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","compile","tokenStack","buffer","resume","prepareList","defaultOnError","listItem3","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","errorHandler","onExitError","data3","referenceType","ordered","spread","combined","extension","remarkParse","u","own$3","augment","all","one","returnNode","unknownHandler","generated","CONTINUE","SKIP","EXIT","visitParents","toResult","visit","own$2","definitions","ondefinition","getDefinition","clean","characterReferences","encode$1","sanitizeUri","protocol","normalizeUri","encodeURIComponent","wrap$1","loose","footer","listItems","footnoteOrder","footnoteById","safeId","referenceIndex","backReferences","footnoteCounts","backReference","dataFootnoteBackref","footnoteBackLabel","tailTail","dataFootnotes","footnoteLabel","hardBreak","footnoteReference","reuseCounter","dataFootnoteRef","footnote","heading","encodeCache","getEncodeCache","exclude","encode","keepEscaped","nextCode","defaultChars","componentChars","encode_1","revert","subtype","suffix","contents","imageReference","inlineCode","linkReference","listLoose","listItemLoose","wrapped","root$2","table","row","cellIndex","cell","break","toml","ignore","footnoteDefinition","own$1","factory","dangerous2","hName","hProperties","hChildren","toHast","foot","remarkRehype","destination","bridge","mutate","remarkRehype$1","bail","isBuffer","hasOwn","toStr","gOPD","getOwnPropertyDescriptor","isPlainObject$1","hasOwnConstructor","hasIsPrototypeOf","setProperty","enumerable","configurable","newValue","writable","getProperty","extend2","copyIsArray","deep","isPlainObject2","getPrototypeOf","trough","pipeline","run2","middlewareIndex","middelware","middleware","fnExpectsCallback","exception","VFileMessage","fatal","ruleId","actual","expected","note","basename","dirname","extname","sep","path2","assertPath$1","seenNonSlash","firstNonSlashEnd","extIndex","unmatchedSlash","startPart","startDot","preDotState","segments","joined","normalize","absolute","normalizeString","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","JSON","proc","cwd","isUrl","fileUrlOrPath","urlToPath","URL","getPathFromURLPosix","hostname","pathname","third","decodeURIComponent","VFile","messages","stored","assertNonEmpty","dirname2","assertPath","basename2","assertPart","extname2","stem","unified","own","transformers","attachers","frozen","freezeIndex","processor","parse2","stringify2","runSync","process","processSync","assertUnfrozen","attacher","transformer","addPlugin","addList","addPreset","plugin","options2","vfile","Parser2","assertParser","newable","assertCompiler","assertNode","executor","reject","complete","assertDone","file2","looksLikeAVFileValue","asyncName","looksLikeAVFile","schemaStr","getProcessor","sanitize2","remarkRehypeOptions","remark","rehype","create_fragment$1","instance$1","markdownBody","remarkRehype2","cbs","viewerEffect","cb","startsWith","dispatchPlugin","div_binding","console","Viewer","freeGlobal","global","freeGlobal$1","freeSelf","self","Function","root$1","Symbol$1","Symbol$2","objectProto$1","nativeObjectToString$1","symToStringTag$1","getRawTag","isOwn","unmasked","objectProto","nativeObjectToString","objectToString","nullTag","undefinedTag","symToStringTag","baseGetTag","isObjectLike","symbolTag","isSymbol","reWhitespace","trimmedEndIndex","reTrimStart","baseTrim","isObject","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","valueOf","isBinary","now$1","FUNC_ERROR_TEXT$1","nativeMax","nativeMin","debounce","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","flush2","debounced","isInvoking","FUNC_ERROR_TEXT","throttle","create_if_block","viewer","$on","viewer_changes","$set","create_fragment","div5","div4","div0_style_value","div1_style_value","div3","toc2","status","edit","toolbar_changes","help_changes","toc_changes","status_changes","instance","mergedLocale","previewDebounce","editorConfig","overridePreview","editorEl","previewEl","containerWidth","editorEffect","debouncedValue","setDebouncedValue","editPs","previewPs","vfile2","editCalled","previewCalled","Enter","updateBlockPositions","scrollInfo","body2","HTMLElement","leftNodes","rightNodes","leftNode","rightNode","editorScrollHandler","leftRatio","rightRatio","previewScrollHandler","passive","handleImages","itemList","getAsFile","ResizeObserver","contentRect","observe","key_handler","tab_handler","div0_binding","hast_handler","div1_binding","click_handler_2","headings","sync_handler","top_handler","div5_binding","preview2","context2","Editor","render","_vm","_c","_self","staticClass","bg","staticStyle","iconpath","_v","_s","bigTitle","float","backIndex","bannerIs","_l","imgAry","backgroundSize","listFun","model","input3","$$v","expression","moreAry","moreCount","changePage","staticRenderFns","moreAryCur","imgpath","$event","goTo","author","moreCountCur","currentPage3","handleSizeChange","handleCurrentChange","currentDate","page","watch","log","localStorage","setItem","seqid","loginFun","_this","$ajax","post","Qs","response","catch","$emit","components","cardList","footerC","VueMarkdown","cardListPhone","typeUrl","$route","query","lbtFun","windowWidth","innerWidth","chnageWidth","$router","_id","banner","recordcount","getWindow","defaultView","OwnElement","isHTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","_ref","visualViewport","addVisualOffsets","getWindowScroll","win","getHTMLElementScroll","getNodeScroll","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","isElementScaled","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","offsets","clientTop","getLayoutRect","assignedSlot","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","perspective","contain","willChange","getOffsetParent","auto","basePlacements","variationPlacements","acc","beforeRead","afterRead","beforeMain","afterMain","beforeWrite","afterWrite","modifierPhases","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","orderModifiers","orderedModifiers","pending","undefined","mergeByName","strategy","areValidElements","_len","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","modifiersData","elements","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","enabled","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_options","_ref$options","effect","cleanupFn","noopFn","onFirstUpdate","_options$scroll","_options$resize","resize","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","roundOffsetsByDPR","dpr","devicePixelRatio","mapToStyles","_ref2","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","_Object$assign","commonStyles","_ref4","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","popperOffsets","applyStyles","initialStyles","styleProperties","distanceAndSkiddingToXY","invertDistance","skidding","_options$offset","_data$state$placement","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getViewportRect","layoutViewport","getDocumentRect","winScroll","rootNode","getRootNode","isSameNode","rectToClientRect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","clippingParents","canEscapeClipping","clipperElement","getClippingRect","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","placements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","every","numberOfChecks","_loop","_i","fittingPlacement","_ret","getAltAxis","within","withinMaxClamp","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","_state$modifiersData$","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","eventListeners","ROUND_ARROW","BOX_CLASS","CONTENT_CLASS","BACKDROP_CLASS","ARROW_CLASS","SVG_ARROW_CLASS","TOUCH_OPTIONS","TIPPY_DEFAULT_APPEND_TO","getValueAtIndexOrReturn","defaultValue","isType","invokeWithArgsOrReturn","arg","timeout","removeProperties","splitBySpaces","normalizeToArray","pushIfUnique","unique","arrayFrom","removeUndefinedProps","isNodeList","isMouseEvent","isReferenceElement","_tippy","getArrayOfElements","setTransitionDuration","transitionDuration","setVisibilityState","getOwnerDocument","elementOrElements","_normalizeToArray","isCursorOutsideInteractiveBorder","popperTreeData","popperState","interactiveBorder","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","updateTransitionEndListener","listener","actualContains","_target$getRootNode","currentInput","isTouch","lastMouseMoveTime","onDocumentTouchStart","performance","onDocumentMouseMove","onWindowBlur","isVisible","bindGlobalEventListeners","isBrowser","isIE11","msCrypto","pluginProps","animateFill","followCursor","inlinePositioning","renderProps","animation","inertia","maxWidth","defaultProps","appendTo","expanded","duration","getReferenceClientRect","hideOnClick","ignoreAttributes","moveTransition","onAfterUpdate","onBeforeUpdate","onCreate","onHidden","onHide","onShown","onTrigger","onUntrigger","onClickOutside","popperOptions","trigger","triggerTarget","defaultKeys","setDefaultProps","partialProps","getExtendedPassedProps","passedProps","_name","getDataAttributeProps","propKeys","valueAsString","evaluateProps","dangerouslySetInnerHTML","createArrowElement","getChildren","firstElementChild","boxChildren","backdrop","onUpdate","prevProps","nextProps","_getChildren","$$tippy","idCounter","mouseMoveListeners","mountedInstances","createTippy","showTimeout","hideTimeout","scheduleHideAnimationFrame","lastTriggerEvent","currentTransitionEndListener","currentTarget","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","listeners","debouncedOnMouseMove","popperInstance","isEnabled","isMounted","isShown","clearDelayTimeouts","setContent","show","hide","hideWithInteractivity","enable","unmount","_props$render","pluginsHooks","hasAriaExpanded","hasAttribute","addListeners","handleAriaExpandedAttribute","handleStyles","invokeHook","scheduleShow","getDocument","getNormalizedTouchSettings","getIsCustomTouchBehavior","getIsDefaultRenderFn","_instance$props$rende","getCurrentTarget","getDefaultTemplateChildren","getDelay","isShow","fromHide","shouldInvokePropsHook","_instance$props","pluginHooks","handleAriaContentAttribute","currentValue","nextValue","cleanupInteractiveMouseListeners","onDocumentPress","actualTarget","composedPath","removeDocumentPress","onTouchMove","onTouchStart","addDocumentPress","onTransitionedOut","onTransitionEnd","onTransitionedIn","eventType","onBlurOrFocusOut","removeListeners","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","getNestedPopperTree","_instance$popperInsta","shouldBail","relatedTarget","createPopperInstance","destroyPopperInstance","_instance$props2","computedReference","tippyModifier","_getDefaultTemplateCh","mount","_getNormalizedTouchSe","touchValue","touchDelay","requestAnimationFrame","cancelAnimationFrame","nestedPopper","isAlreadyVisible","isDisabled","isTouchAndTouchDisabled","transition","_getDefaultTemplateCh2","_instance$popperInsta2","_getDefaultTemplateCh3","_box","_content","isAlreadyHidden","_getDefaultTemplateCh4","tippy","optionalProps","instances","hideAll","_temp","excludedReferenceOrInstance","isExcluded","originalDuration","applyStylesModifier","createSingleton","tippyInstances","_optionalProps$popper","individualInstances","references","triggerTargets","overrides","interceptSetPropsCleanups","shownOnCreate","setTriggerTargets","setReferences","enableInstances","interceptSetProps","singleton","originalSetProps","prepareInstance","overrideProps","_references$index","originalShow","showNext","showPrevious","setInstances","nextInstances","BUBBLING_EVENTS_MAP","mouseover","focusin","childTippyInstances","nativeProps","parentProps","childProps","normalizedReturnValue","targetNode","addEventListeners","removeEventListeners","applyMutations","originalDestroy","originalEnable","originalDisable","shouldDestroyChildInstances","createBackdropElement","transitionDelay","mouseCoords","activeInstances","storeMouseCoords","addMouseCoordsListener","removeMouseCoordsListener","isInternalUpdate","wasFocusEvent","isUnmounted","getIsInitialBehavior","addListener","removeListener","unsetGetReferenceClientRect","isCursorOverReference","relativeX","relativeY","getProps","_props$popperOptions","cursorRectIndex","triedPlacements","_getReferenceClientRect","getInlineBoundingClientRect","setInternalProps","addModifier","cursorRect","currentBasePlacement","boundingRect","clientRects","firstRect","lastRect","isTop","minLeft","maxRight","measureRects","_bottom","_left","_right","_width","_height","getReference","shouldCheck","prevRefRect","prevPopRect","currentRefRect","currentPopRect","areRectsDifferent","rectA","rectB","goBack","moreBook","tabPosition","activeName","typeList","heade","HCard","getItem","initColumn","istop","press","producer","translator","pagecount","redFun","lefeSpan","require","foldM","foldFuM","class","loadNode","handleNodeClick","scopedSlots","_u","joinnumber","bjFun","rightSpan","foldFun","readB","run_url","goFun","mooc_url","read_url","course_url","course_list","handleCommand","github_url","curiFrame","iframeSrc","bjFunList","bjAry","_sys_creattime","wwwPrefix","tokenizeWwwPrefix","domain","tokenizeDomain","tokenizePath","tokenizeTrail","emailDomainDotTrail","tokenizeEmailDomainDotTrail","wwwAutolink","tokenizeWwwAutolink","previousWww","protocolAutolink","tokenizeProtocolAutolink","previousProtocol","emailAutolink","tokenizeEmailAutolink","previousEmail","gfmAutolinkLiteral","gfmAtext","previousUnbalanced","atext","emailDomain","emailDomainAfter","emailDomainDot","wwwStart","wwwAfter","protocolStart","fromCodePoint","protocolPrefixInside","protocolSlashesInside","afterProtocol","protocolAfter","wwwPrefixInside","wwwPrefixAfter","underscoreInLastSegment","underscoreInLastLastSegment","domainInside","domainAfter","domainAtPunctuation","sizeClose","pathInside","pathAtPunctuation","trail","trailCharRefStart","trailBracketAfter","trailCharRefInside","_gfmAutolinkLiteralWalkedInto","gfmFootnote","tokenizeDefinitionStart","tokenizeDefinitionContinuation","gfmFootnoteDefinitionEnd","tokenizeGfmFootnoteCall","tokenizePotentialGfmFootnoteCall","resolveToPotentialGfmFootnoteCall","gfmFootnotes","codePointAt","callStart","callData","callEscape","labelAtMarker","labelInside","whitespaceAfter","gfmStrikethrough","options_","singleTilde","tokenizeStrikethrough","resolveAllStrikethrough","EditMap","addImpl","vecs","editMap","gfmTableAlign","inDelimiterRow","alignIndex","gfmTable","tokenizeTable","resolveTable","sizeB","bodyRowStart","headRowBefore","headRowStart","headRowBreak","headDelimiterStart","headRowData","headRowEscape","headDelimiterBefore","headDelimiterValueBefore","headDelimiterCellBefore","headDelimiterNok","headDelimiterLeftAlignmentAfter","headDelimiterCellAfter","headDelimiterFiller","headDelimiterRightAlignmentAfter","bodyRowBreak","bodyRowData","bodyRowEscape","currentTable","currentBody","currentCell","inFirstCellAwaitingPipe","rowKind","lastCell","afterHeadAwaitingFirstBodyRow","lastTableEnd","flushTableEnd","flushCell","_align","rowEnd","previousCell","groupName","valueName","getPoint","relatedStart","relatedEnd","valueToken","tableBody","exits","related","reFlow","tasklistCheck","tokenizeTasklistCheck","gfmTaskListItem","spaceThenNonSpace","gfm","escapeStringRegexp","findAndReplace","ignored","pairs","toPairs","pairIndex","grandparent","matchObject","toExpression","toFunction","inConstruct","notInConstruct","gfmAutolinkLiteralFromMarkdown","transformGfmAutolinkLiterals","literalAutolink","enterLiteralAutolink","literalAutolinkEmail","enterLiteralAutolinkValue","literalAutolinkHttp","literalAutolinkWww","exitLiteralAutolink","exitLiteralAutolinkEmail","exitLiteralAutolinkHttp","exitLiteralAutolinkWww","gfmAutolinkLiteralToMarkdown","unsafe","findUrl","findEmail","isCorrectDomain","splitUrl","trailExec","closingParenIndex","openingParens","closingParens","email","association","containerFlow","indexStack","tracker","createTracker","bulletLastUsed","indentLines","patternCompile","_compiled","patternInScope","listInScope","none","positions","infos","numerical","escapeBackslashes","whole","track","lineShift","gfmFootnoteFromMarkdown","gfmFootnoteDefinition","enterFootnoteDefinition","gfmFootnoteDefinitionLabelString","enterFootnoteDefinitionLabelString","gfmFootnoteCall","enterFootnoteCall","gfmFootnoteCallString","enterFootnoteCallString","exitFootnoteDefinition","exitFootnoteDefinitionLabelString","exitFootnoteCall","exitFootnoteCallString","gfmFootnoteToMarkdown","safeOptions","subexit","footnoteReferencePeek","containerPhrasing","constructsWithoutStrikethrough","handleDelete","peekDelete","gfmStrikethroughFromMarkdown","enterStrikethrough","exitStrikethrough","gfmStrikethroughToMarkdown","inlineCodePeek","markdownTable","stringLength","defaultStringLength","alignments","cellMatrix","sizeMatrix","longestCellByColumn","mostCellsPerRow","rowIndex","columnIndex","serialize","alignDelimiters","toAlignment","delimiterStart","delimiterEnd","gfmTableFromMarkdown","enterTable","tableData","enterCell","tableHeader","tableRow","enterRow","exitCodeText","exitTable","gfmTableToMarkdown","tableCellPadding","tablePipeAlign","around","handleTable","handleTableRow","tableCell","handleTableCell","inlineCodeWithTable","serializeData","handleTableAsData","handleTableRowAsData","matrix","checkBullet","checkListItemIndent","listItemIndent","bulletCurrent","incrementListMarker","gfmTaskListItemFromMarkdown","taskListCheckValueChecked","exitCheck","taskListCheckValueUnchecked","exitParagraphWithTaskListItem","gfmTaskListItemToMarkdown","listItemWithTaskListItem","firstParaghraph","checkable","checkbox","gfmFromMarkdown","gfmToMarkdown","remarkGfm","Strikethrough","CheckCorrect","InsertTable","strike","strikeText","tableHeading","task","taskText","_locale","remarkGfmOptions","mathFlow","tokenizeMathFenced","nonLazyContinuation","tokenizeNonLazyContinuation","metaBefore","metaAfter","beforeNonLazyContinuation","beforeContentChunk","contentChunk","beforeSequenceClose","sequenceClose","afterSequenceClose","mathText","singleDollarTextMath","tokenizeMathText","resolveMathText","longestStreak","mathFromMarkdown","enterMathFlow","mathFlowFenceMeta","enterMathFlowMeta","enterMathText","exitMathFlow","mathFlowFence","exitMathFlowFence","exitMathFlowMeta","mathFlowValue","exitMathData","exitMathText","mathTextData","mathToMarkdown","inlineMath","inlineMathPeek","math","remarkMath","blockText","inlineText","Formula","Inline","Block","getMathActions","katexOptions","katex","renderMath","displayMode","innerText","throwOnError","nameToEmoji","100","1234","grinning","smiley","grin","laughing","satisfied","sweat_smile","rofl","joy","slightly_smiling_face","upside_down_face","wink","blush","innocent","smiling_face_with_three_hearts","heart_eyes","star_struck","kissing_heart","kissing","relaxed","kissing_closed_eyes","kissing_smiling_eyes","smiling_face_with_tear","stuck_out_tongue","stuck_out_tongue_winking_eye","zany_face","stuck_out_tongue_closed_eyes","money_mouth_face","hugs","hand_over_mouth","shushing_face","thinking","zipper_mouth_face","raised_eyebrow","neutral_face","expressionless","no_mouth","face_in_clouds","smirk","unamused","roll_eyes","grimacing","face_exhaling","lying_face","relieved","pensive","sleepy","drooling_face","sleeping","face_with_thermometer","face_with_head_bandage","nauseated_face","vomiting_face","sneezing_face","hot_face","cold_face","woozy_face","dizzy_face","face_with_spiral_eyes","exploding_head","cowboy_hat_face","partying_face","disguised_face","sunglasses","nerd_face","monocle_face","confused","worried","slightly_frowning_face","frowning_face","open_mouth","hushed","astonished","flushed","pleading_face","frowning","anguished","fearful","cold_sweat","disappointed_relieved","cry","sob","scream","confounded","persevere","disappointed","sweat","weary","tired_face","yawning_face","triumph","rage","pout","angry","cursing_face","smiling_imp","imp","skull","skull_and_crossbones","hankey","poop","shit","clown_face","japanese_ogre","japanese_goblin","ghost","alien","space_invader","robot","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","see_no_evil","hear_no_evil","speak_no_evil","kiss","love_letter","cupid","gift_heart","sparkling_heart","heartpulse","heartbeat","revolving_hearts","two_hearts","heart_decoration","heavy_heart_exclamation","broken_heart","heart_on_fire","mending_heart","heart","orange_heart","yellow_heart","green_heart","blue_heart","purple_heart","brown_heart","black_heart","white_heart","anger","boom","collision","dizzy","sweat_drops","hole","bomb","speech_balloon","eye_speech_bubble","left_speech_bubble","right_anger_bubble","thought_balloon","zzz","wave","raised_back_of_hand","raised_hand_with_fingers_splayed","hand","raised_hand","vulcan_salute","ok_hand","pinched_fingers","pinching_hand","crossed_fingers","love_you_gesture","metal","call_me_hand","point_left","point_right","point_up_2","middle_finger","fu","point_down","point_up","thumbsup","thumbsdown","fist_raised","fist","fist_oncoming","facepunch","punch","fist_left","fist_right","clap","raised_hands","open_hands","palms_up_together","handshake","pray","writing_hand","nail_care","selfie","muscle","mechanical_arm","mechanical_leg","ear","ear_with_hearing_aid","nose","brain","anatomical_heart","lungs","tooth","bone","eyes","eye","tongue","lips","baby","boy","girl","adult","blond_haired_person","man","bearded_person","man_beard","woman_beard","red_haired_man","curly_haired_man","white_haired_man","bald_man","woman","red_haired_woman","person_red_hair","curly_haired_woman","person_curly_hair","white_haired_woman","person_white_hair","bald_woman","person_bald","blond_haired_woman","blonde_woman","blond_haired_man","older_adult","older_man","older_woman","frowning_person","frowning_man","frowning_woman","pouting_face","pouting_man","pouting_woman","no_good","no_good_man","ng_man","no_good_woman","ng_woman","ok_person","ok_man","ok_woman","tipping_hand_person","information_desk_person","tipping_hand_man","sassy_man","tipping_hand_woman","sassy_woman","raising_hand","raising_hand_man","raising_hand_woman","deaf_person","deaf_man","deaf_woman","bow","bowing_man","bowing_woman","facepalm","man_facepalming","woman_facepalming","shrug","man_shrugging","woman_shrugging","health_worker","man_health_worker","woman_health_worker","student","man_student","woman_student","teacher","man_teacher","woman_teacher","judge","man_judge","woman_judge","farmer","man_farmer","woman_farmer","cook","man_cook","woman_cook","mechanic","man_mechanic","woman_mechanic","factory_worker","man_factory_worker","woman_factory_worker","office_worker","man_office_worker","woman_office_worker","scientist","man_scientist","woman_scientist","technologist","man_technologist","woman_technologist","singer","man_singer","woman_singer","artist","man_artist","woman_artist","pilot","man_pilot","woman_pilot","astronaut","man_astronaut","woman_astronaut","firefighter","man_firefighter","woman_firefighter","police_officer","policeman","policewoman","detective","male_detective","female_detective","guard","guardsman","guardswoman","ninja","construction_worker","construction_worker_man","construction_worker_woman","prince","princess","person_with_turban","man_with_turban","woman_with_turban","man_with_gua_pi_mao","woman_with_headscarf","person_in_tuxedo","man_in_tuxedo","woman_in_tuxedo","person_with_veil","man_with_veil","woman_with_veil","bride_with_veil","pregnant_woman","breast_feeding","woman_feeding_baby","man_feeding_baby","person_feeding_baby","angel","santa","mrs_claus","mx_claus","superhero","superhero_man","superhero_woman","supervillain","supervillain_man","supervillain_woman","mage","mage_man","mage_woman","fairy","fairy_man","fairy_woman","vampire","vampire_man","vampire_woman","merperson","merman","mermaid","elf","elf_man","elf_woman","genie","genie_man","genie_woman","zombie","zombie_man","zombie_woman","massage","massage_man","massage_woman","haircut","haircut_man","haircut_woman","walking","walking_man","walking_woman","standing_person","standing_man","standing_woman","kneeling_person","kneeling_man","kneeling_woman","person_with_probing_cane","man_with_probing_cane","woman_with_probing_cane","person_in_motorized_wheelchair","man_in_motorized_wheelchair","woman_in_motorized_wheelchair","person_in_manual_wheelchair","man_in_manual_wheelchair","woman_in_manual_wheelchair","runner","running","running_man","running_woman","woman_dancing","dancer","man_dancing","business_suit_levitating","dancers","dancing_men","dancing_women","sauna_person","sauna_man","sauna_woman","climbing","climbing_man","climbing_woman","person_fencing","horse_racing","skier","snowboarder","golfing","golfing_man","golfing_woman","surfer","surfing_man","surfing_woman","rowboat","rowing_man","rowing_woman","swimmer","swimming_man","swimming_woman","bouncing_ball_person","bouncing_ball_man","basketball_man","bouncing_ball_woman","basketball_woman","weight_lifting","weight_lifting_man","weight_lifting_woman","bicyclist","biking_man","biking_woman","mountain_bicyclist","mountain_biking_man","mountain_biking_woman","cartwheeling","man_cartwheeling","woman_cartwheeling","wrestling","men_wrestling","women_wrestling","water_polo","man_playing_water_polo","woman_playing_water_polo","handball_person","man_playing_handball","woman_playing_handball","juggling_person","man_juggling","woman_juggling","lotus_position","lotus_position_man","lotus_position_woman","bath","sleeping_bed","people_holding_hands","two_women_holding_hands","couple","two_men_holding_hands","couplekiss","couplekiss_man_woman","couplekiss_man_man","couplekiss_woman_woman","couple_with_heart","couple_with_heart_woman_man","couple_with_heart_man_man","couple_with_heart_woman_woman","family","family_man_woman_boy","family_man_woman_girl","family_man_woman_girl_boy","family_man_woman_boy_boy","family_man_woman_girl_girl","family_man_man_boy","family_man_man_girl","family_man_man_girl_boy","family_man_man_boy_boy","family_man_man_girl_girl","family_woman_woman_boy","family_woman_woman_girl","family_woman_woman_girl_boy","family_woman_woman_boy_boy","family_woman_woman_girl_girl","family_man_boy","family_man_boy_boy","family_man_girl","family_man_girl_boy","family_man_girl_girl","family_woman_boy","family_woman_boy_boy","family_woman_girl","family_woman_girl_boy","family_woman_girl_girl","speaking_head","bust_in_silhouette","busts_in_silhouette","people_hugging","footprints","monkey_face","monkey","gorilla","orangutan","dog","dog2","guide_dog","service_dog","poodle","wolf","fox_face","raccoon","cat","cat2","black_cat","lion","tiger","tiger2","leopard","horse","racehorse","unicorn","zebra","deer","bison","cow","ox","water_buffalo","cow2","pig","pig2","boar","pig_nose","ram","sheep","goat","dromedary_camel","camel","llama","giraffe","elephant","mammoth","rhinoceros","hippopotamus","mouse","mouse2","rat","hamster","rabbit","rabbit2","chipmunk","beaver","hedgehog","bat","bear","polar_bear","koala","panda_face","sloth","otter","skunk","kangaroo","badger","feet","paw_prints","turkey","chicken","rooster","hatching_chick","baby_chick","hatched_chick","bird","penguin","dove","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","frog","crocodile","turtle","lizard","snake","dragon_face","dragon","sauropod","whale","whale2","dolphin","flipper","seal","fish","tropical_fish","blowfish","shark","octopus","shell","snail","butterfly","bug","ant","bee","honeybee","beetle","lady_beetle","cricket","cockroach","spider","spider_web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry_blossom","white_flower","rosette","rose","wilted_flower","hibiscus","sunflower","blossom","tulip","seedling","potted_plant","evergreen_tree","deciduous_tree","palm_tree","cactus","ear_of_rice","herb","shamrock","four_leaf_clover","maple_leaf","fallen_leaf","leaves","grapes","melon","watermelon","tangerine","orange","mandarin","lemon","banana","pineapple","mango","apple","green_apple","pear","peach","cherries","strawberry","blueberries","kiwi_fruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","corn","hot_pepper","bell_pepper","cucumber","leafy_green","broccoli","garlic","onion","mushroom","peanuts","chestnut","bread","croissant","baguette_bread","flatbread","pretzel","bagel","pancakes","waffle","cheese","meat_on_bone","poultry_leg","cut_of_meat","bacon","hamburger","fries","pizza","hotdog","sandwich","taco","burrito","tamale","stuffed_flatbread","falafel","egg","fried_egg","shallow_pan_of_food","stew","fondue","bowl_with_spoon","green_salad","popcorn","butter","salt","canned_food","bento","rice_cracker","rice_ball","rice","curry","ramen","spaghetti","sweet_potato","oden","sushi","fried_shrimp","fish_cake","moon_cake","dango","dumpling","fortune_cookie","takeout_box","crab","lobster","shrimp","squid","oyster","icecream","shaved_ice","ice_cream","doughnut","cookie","birthday","cake","cupcake","pie","chocolate_bar","candy","lollipop","custard","honey_pot","baby_bottle","milk_glass","coffee","teapot","tea","sake","champagne","wine_glass","cocktail","tropical_drink","beer","beers","clinking_glasses","tumbler_glass","cup_with_straw","bubble_tea","beverage_box","mate","ice_cube","chopsticks","plate_with_cutlery","fork_and_knife","spoon","hocho","knife","amphora","earth_africa","earth_americas","earth_asia","globe_with_meridians","world_map","japan","compass","mountain_snow","mountain","volcano","mount_fuji","camping","beach_umbrella","desert","desert_island","national_park","stadium","classical_building","building_construction","bricks","rock","wood","hut","houses","derelict_house","house","house_with_garden","office","post_office","european_post_office","hospital","bank","hotel","love_hotel","convenience_store","school","department_store","japanese_castle","european_castle","wedding","tokyo_tower","statue_of_liberty","church","mosque","hindu_temple","synagogue","shinto_shrine","kaaba","fountain","tent","foggy","night_with_stars","cityscape","sunrise_over_mountains","sunrise","city_sunset","city_sunrise","bridge_at_night","hotsprings","carousel_horse","ferris_wheel","roller_coaster","barber","circus_tent","steam_locomotive","railway_car","bullettrain_side","bullettrain_front","train2","metro","light_rail","station","tram","monorail","mountain_railway","train","bus","oncoming_bus","trolleybus","minibus","ambulance","fire_engine","police_car","oncoming_police_car","taxi","oncoming_taxi","car","red_car","oncoming_automobile","blue_car","pickup_truck","truck","articulated_lorry","tractor","racing_car","motorcycle","motor_scooter","manual_wheelchair","motorized_wheelchair","auto_rickshaw","bike","kick_scooter","skateboard","roller_skate","busstop","motorway","railway_track","oil_drum","fuelpump","rotating_light","traffic_light","vertical_traffic_light","stop_sign","construction","boat","sailboat","canoe","speedboat","passenger_ship","ferry","motor_boat","ship","airplane","small_airplane","flight_departure","flight_arrival","parachute","seat","helicopter","suspension_railway","mountain_cableway","aerial_tramway","artificial_satellite","rocket","flying_saucer","bellhop_bell","luggage","hourglass","hourglass_flowing_sand","alarm_clock","stopwatch","timer_clock","mantelpiece_clock","clock12","clock1230","clock1","clock130","clock2","clock230","clock3","clock330","clock4","clock430","clock5","clock530","clock6","clock630","clock7","clock730","clock8","clock830","clock9","clock930","clock10","clock1030","clock11","clock1130","new_moon","waxing_crescent_moon","first_quarter_moon","moon","waxing_gibbous_moon","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","crescent_moon","new_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","thermometer","sunny","full_moon_with_face","sun_with_face","ringed_planet","star2","stars","milky_way","cloud","partly_sunny","cloud_with_lightning_and_rain","sun_behind_small_cloud","sun_behind_large_cloud","sun_behind_rain_cloud","cloud_with_rain","cloud_with_snow","cloud_with_lightning","tornado","fog","wind_face","cyclone","rainbow","closed_umbrella","open_umbrella","umbrella","parasol_on_ground","zap","snowflake","snowman_with_snow","snowman","comet","fire","droplet","ocean","jack_o_lantern","christmas_tree","fireworks","sparkler","firecracker","sparkles","balloon","tada","confetti_ball","tanabata_tree","bamboo","dolls","flags","wind_chime","rice_scene","red_envelope","ribbon","gift","reminder_ribbon","tickets","ticket","medal_military","trophy","medal_sports","soccer","baseball","softball","basketball","volleyball","football","rugby_football","tennis","flying_disc","bowling","cricket_game","field_hockey","ice_hockey","lacrosse","ping_pong","badminton","boxing_glove","martial_arts_uniform","goal_net","golf","ice_skate","fishing_pole_and_fish","diving_mask","running_shirt_with_sash","ski","sled","curling_stone","dart","yo_yo","kite","crystal_ball","magic_wand","nazar_amulet","video_game","joystick","slot_machine","game_die","jigsaw","teddy_bear","pinata","nesting_dolls","diamonds","chess_pawn","black_joker","mahjong","flower_playing_cards","performing_arts","framed_picture","art","thread","sewing_needle","yarn","knot","eyeglasses","dark_sunglasses","goggles","lab_coat","safety_vest","necktie","shirt","tshirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","one_piece_swimsuit","swim_brief","shorts","bikini","womans_clothes","purse","handbag","pouch","shopping","school_satchel","thong_sandal","mans_shoe","shoe","athletic_shoe","hiking_boot","flat_shoe","high_heel","sandal","ballet_shoes","boot","crown","womans_hat","tophat","mortar_board","billed_cap","military_helmet","rescue_worker_helmet","prayer_beads","lipstick","gem","mute","speaker","sound","loud_sound","loudspeaker","mega","postal_horn","bell","no_bell","musical_score","musical_note","notes","studio_microphone","level_slider","control_knobs","microphone","headphones","radio","saxophone","accordion","guitar","musical_keyboard","trumpet","violin","banjo","drum","long_drum","iphone","calling","telephone","telephone_receiver","pager","fax","battery","electric_plug","computer","desktop_computer","printer","keyboard","computer_mouse","trackball","minidisc","floppy_disk","cd","dvd","abacus","movie_camera","film_strip","film_projector","clapper","tv","camera","camera_flash","video_camera","vhs","mag","mag_right","candle","bulb","flashlight","izakaya_lantern","lantern","diya_lamp","notebook_with_decorative_cover","closed_book","book","open_book","green_book","blue_book","orange_book","books","notebook","ledger","page_with_curl","page_facing_up","newspaper","newspaper_roll","bookmark_tabs","moneybag","coin","money_with_wings","credit_card","receipt","chart","envelope","incoming_envelope","envelope_with_arrow","outbox_tray","inbox_tray","package","mailbox","mailbox_closed","mailbox_with_mail","mailbox_with_no_mail","postbox","ballot_box","pencil2","black_nib","fountain_pen","pen","paintbrush","crayon","memo","pencil","briefcase","file_folder","open_file_folder","card_index_dividers","date","calendar","spiral_notepad","spiral_calendar","card_index","chart_with_upwards_trend","chart_with_downwards_trend","bar_chart","clipboard","pushpin","round_pushpin","paperclip","paperclips","straight_ruler","triangular_ruler","scissors","card_file_box","file_cabinet","wastebasket","lock","unlock","lock_with_ink_pen","closed_lock_with_key","old_key","hammer","axe","pick","hammer_and_pick","hammer_and_wrench","crossed_swords","gun","boomerang","bow_and_arrow","shield","carpentry_saw","wrench","screwdriver","nut_and_bolt","gear","clamp","balance_scale","probing_cane","chains","toolbox","magnet","ladder","alembic","test_tube","petri_dish","dna","microscope","telescope","satellite","syringe","drop_of_blood","pill","adhesive_bandage","stethoscope","door","elevator","mirror","bed","couch_and_lamp","chair","toilet","plunger","shower","bathtub","mouse_trap","razor","lotion_bottle","safety_pin","broom","basket","roll_of_paper","bucket","soap","toothbrush","sponge","fire_extinguisher","shopping_cart","smoking","coffin","headstone","funeral_urn","moyai","placard","atm","put_litter_in_its_place","potable_water","wheelchair","mens","womens","restroom","baby_symbol","wc","passport_control","customs","baggage_claim","left_luggage","warning","children_crossing","no_entry","no_entry_sign","no_bicycles","no_smoking","do_not_litter","no_pedestrians","no_mobile_phones","underage","radioactive","biohazard","arrow_up","arrow_upper_right","arrow_right","arrow_lower_right","arrow_down","arrow_lower_left","arrow_left","arrow_upper_left","arrow_up_down","left_right_arrow","leftwards_arrow_with_hook","arrow_right_hook","arrow_heading_up","arrow_heading_down","arrows_clockwise","arrows_counterclockwise","back","soon","place_of_worship","atom_symbol","om","star_of_david","wheel_of_dharma","yin_yang","latin_cross","orthodox_cross","star_and_crescent","peace_symbol","menorah","six_pointed_star","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","ophiuchus","twisted_rightwards_arrows","repeat_one","arrow_forward","fast_forward","next_track_button","play_or_pause_button","arrow_backward","rewind","previous_track_button","arrow_up_small","arrow_double_up","arrow_down_small","arrow_double_down","pause_button","stop_button","record_button","eject_button","cinema","low_brightness","high_brightness","signal_strength","vibration_mode","mobile_phone_off","female_sign","male_sign","transgender_symbol","heavy_multiplication_x","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","infinity","bangbang","interrobang","question","grey_question","grey_exclamation","exclamation","heavy_exclamation_mark","wavy_dash","currency_exchange","heavy_dollar_sign","medical_symbol","recycle","fleur_de_lis","trident","name_badge","beginner","white_check_mark","ballot_box_with_check","heavy_check_mark","negative_squared_cross_mark","curly_loop","part_alternation_mark","eight_spoked_asterisk","eight_pointed_black_star","sparkle","copyright","registered","tm","asterisk","zero","two","three","four","five","six","seven","eight","nine","keycap_ten","capital_abcd","abcd","symbols","abc","ab","cl","cool","free","information_source","new","ng","parking","sos","vs","koko","sa","u6708","u6709","u6307","ideograph_advantage","u5272","u7121","u7981","u7533","u5408","u7a7a","congratulations","secret","u55b6","u6e80","red_circle","orange_circle","yellow_circle","green_circle","large_blue_circle","purple_circle","brown_circle","black_circle","white_circle","red_square","orange_square","yellow_square","green_square","blue_square","purple_square","brown_square","black_large_square","white_large_square","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_small_square","white_small_square","large_orange_diamond","large_blue_diamond","small_orange_diamond","small_blue_diamond","small_red_triangle","small_red_triangle_down","diamond_shape_with_a_dot_inside","radio_button","white_square_button","black_square_button","checkered_flag","triangular_flag_on_post","crossed_flags","black_flag","white_flag","rainbow_flag","transgender_flag","pirate_flag","ascension_island","andorra","united_arab_emirates","afghanistan","antigua_barbuda","anguilla","albania","armenia","angola","antarctica","argentina","american_samoa","austria","australia","aruba","aland_islands","azerbaijan","bosnia_herzegovina","barbados","bangladesh","belgium","burkina_faso","bulgaria","bahrain","burundi","benin","st_barthelemy","bermuda","brunei","bolivia","caribbean_netherlands","brazil","bahamas","bhutan","bouvet_island","botswana","belarus","belize","canada","cocos_islands","congo_kinshasa","central_african_republic","congo_brazzaville","switzerland","cote_divoire","cook_islands","chile","cameroon","cn","colombia","clipperton_island","costa_rica","cuba","cape_verde","curacao","christmas_island","cyprus","czech_republic","diego_garcia","djibouti","denmark","dominica","dominican_republic","algeria","ceuta_melilla","ecuador","estonia","egypt","western_sahara","eritrea","es","ethiopia","eu","european_union","finland","fiji","falkland_islands","micronesia","faroe_islands","gabon","gb","uk","grenada","georgia","french_guiana","guernsey","ghana","gibraltar","greenland","gambia","guinea","guadeloupe","equatorial_guinea","greece","south_georgia_south_sandwich_islands","guatemala","guam","guinea_bissau","guyana","hong_kong","heard_mcdonald_islands","honduras","croatia","haiti","hungary","canary_islands","indonesia","ireland","israel","isle_of_man","india","british_indian_ocean_territory","iraq","iran","iceland","jersey","jamaica","jordan","jp","kenya","kyrgyzstan","cambodia","kiribati","comoros","st_kitts_nevis","north_korea","kr","kuwait","cayman_islands","kazakhstan","laos","lebanon","st_lucia","liechtenstein","sri_lanka","liberia","lesotho","lithuania","luxembourg","latvia","libya","morocco","monaco","moldova","montenegro","st_martin","madagascar","marshall_islands","macedonia","mali","myanmar","mongolia","macau","northern_mariana_islands","martinique","mauritania","montserrat","malta","mauritius","maldives","malawi","mexico","malaysia","mozambique","namibia","new_caledonia","niger","norfolk_island","nigeria","nicaragua","netherlands","norway","nepal","nauru","niue","new_zealand","oman","panama","peru","french_polynesia","papua_new_guinea","philippines","pakistan","poland","st_pierre_miquelon","pitcairn_islands","puerto_rico","palestinian_territories","portugal","palau","paraguay","qatar","reunion","romania","serbia","ru","rwanda","saudi_arabia","solomon_islands","seychelles","sudan","sweden","singapore","st_helena","slovenia","svalbard_jan_mayen","slovakia","sierra_leone","san_marino","senegal","somalia","suriname","south_sudan","sao_tome_principe","el_salvador","sint_maarten","syria","swaziland","tristan_da_cunha","turks_caicos_islands","chad","french_southern_territories","togo","thailand","tajikistan","tokelau","timor_leste","turkmenistan","tunisia","tonga","trinidad_tobago","tuvalu","taiwan","tanzania","ukraine","uganda","us_outlying_islands","united_nations","us","uruguay","uzbekistan","vatican_city","st_vincent_grenadines","venezuela","british_virgin_islands","us_virgin_islands","vietnam","vanuatu","wallis_futuna","samoa","kosovo","yemen","mayotte","south_africa","zambia","zimbabwe","england","scotland","wales","remarkGemoji","slices","render$1","_h","$createElement","staticRenderFns$1","normalizeComponent","scriptExports","render2","staticRenderFns2","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","_injectStyles","originalRender","beforeCreate","__vue2_script$1","editor2","$el","$props","oldValue","__cssModules$1","__component__$1","__vue2_injectStyles$1","domProps","__vue2_script","computed","needUpdate","$nextTick","__cssModules","__component__","__vue2_injectStyles","pluginGemoji","isLeaf","FxUrl","degin","bsLogin","markdown","download_url","zjId","timer","newId","iconF","htmlContent","courseId","currentTime","setTimeFun","creatQrCode","beforeDestroy","beforeRouteLeave","handleChange","command","$confirm","confirmButtonText","cancelButtonText","tokenFun","username","$message","seachFun","initZ","getQueryString","unescape","QRCode","$refs","qrCodeUrl","colorDark","colorLight","correctLevel","CorrectLevel","year","getFullYear","month","getMonth","dateArr","getDate","getHours","getMinutes","getSeconds","strDate","writeText","success","bjList","readlogFun","html_url","MDbody","pdf_url","online","pid","curType","readpercentFun","cid","uid","percent","getTime","getElementById","contentWindow","module","_m","QR8bitByte","QRMode","MODE_8BIT_BYTE","parsedData","byteArray","QRCodeModel","typeNumber","errorCorrectLevel","modules","moduleCount","dataCache","dataList","getLength","put","addData","newData","isDark","getModuleCount","make","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","lostPoint","QRUtil","getLostPoint","createMovieClip","target_mc","instance_name","qr_mc","createEmptyMovieClip","cs","dark","beginFill","moveTo","lineTo","endFill","getPatternPosition","bits","getBCHTypeNumber","getBCHTypeInfo","inc","bitIndex","byteIndex","getMask","PAD0","PAD1","rsBlocks","QRRSBlock","getRSBlocks","QRBitBuffer","getLengthInBits","totalDataCount","dataCount","putBit","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","rsPoly","getErrorCorrectPolynomial","rawPoly","QRPolynomial","modPoly","modIndex","totalCodeCount","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","QRErrorCorrectLevel","M","Q","QRMaskPattern","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","errorCorrectLength","QRMath","gexp","qrCode","sameCount","darkCount","glog","LOG_TABLE","EXP_TABLE","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","bufIndex","bit","QRCodeLimitLength","_isSupportCanvas","CanvasRenderingContext2D","_getAndroid","sAgent","aMat","parseFloat","svgDrawer","Drawing","htOption","_el","_htOption","draw","oQRCode","nCount","makeSVG","createElementNS","setAttributeNS","hasChildNodes","useSVG","_onMakeImage","_elImage","_elCanvas","toDataURL","_android","factor","drawImage","sx","sy","sw","dw","dh","_safeSetDataURI","fSuccess","fFail","_fFail","_fSuccess","_bSupportDataURI","fOnError","fOnSuccess","onabort","_bIsPainted","_oContext","getContext","nWidth","nHeight","nRoundedWidth","nRoundedHeight","bIsDark","nLeft","nTop","strokeStyle","lineWidth","fillStyle","fillRect","strokeRect","makeImage","isPainted","clearRect","nNumber","aHTML","elTable","nLeftMarginTable","nTopMarginTable","_getTypeNumber","sText","nCorrectLevel","nType","_getUTF8Length","nLimit","replacedText","encodeURI","vOption","_oQRCode","_oDrawing","makeCode","justifyContent","totalCur","total","searchFun","searchVal"],"mappings":"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E,KAAMuJ,EAAc94E,GAAMuB,UAAYvB,GAAMwB,WAC5C3M,QAAS,CACP3D,KAAM,SACN,QACEgjF,EAAS,QAAS,iBAIxB,CACE9uD,MAAOgqD,EAAOlwE,OACdqwE,KAAMvvE,GAAMyB,UACZ5M,QAAS,CACP3D,KAAM,SACN,QACE0hB,OAAO2oE,KAAK,6CAIfvC,KAIF,CACLpzE,EACAizE,EACAzJ,EACAI,EACAmJ,EACA9I,EACAqE,EACA6G,EACAp/E,EACAm9E,EACAC,EACAC,EACAN,EACAD,EACAD,EACAD,EACAnE,EACAC,EACA6G,EACAC,EACAC,EACAE,GAGJ,MAAME,WAAgBl/E,GACpB,YAAYlL,GACVmhF,QACAr3E,GAAKlG,KAAM5D,EAASknF,GAAYJ,GAAmBhlF,EAAW,CAC5DyI,QAAS,EACTiK,MAAO,EACPizE,UAAW,EACXr7E,WAAY,EACZu7E,QAAS,GACT3J,OAAQ,EACRI,QAAS,EACTwJ,qBAAsB,MAI5B,MAAMyC,GAAgB,CACpBC,MAAO,CAAC,UACRC,cAAe,gBACfC,QAAS,CAAC,OAAQ,MAClBC,UAAW,CACTC,MAAO,CAAC,SACRC,MAAO,CAAC,SACRC,MAAO,CAAC,SACRC,GAAI,CAAC,SACL/mD,GAAI,CAAC,SACLgnD,GAAI,CAAC,UAEPC,UAAW,CACTC,KAAM,CAAC,OAAQ,QAAS,SAAU,OAAQ,MAAO,QACjDC,KAAM,CAAC,OAAQ,SACf9/B,IAAK,CAAC,OAAQ,SACd+/B,SAAU,CAAC,OAAQ,UAErBC,SAAU,CACR,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,SACA,KACA,IACA,MACA,OACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,IACA,KACA,KACA,QACA,QACA,QACA,QACA,aACA,KACA,KACA,KACA,MACA,IACA,OACA,MACA,KACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,SACA,UACA,UACA,UACA,SACA,aACA,OACA,MACA,OACA,MACA,OACA,QACA,OACA,OACA,MACA,SAEFp1D,WAAY,CACVn0B,EAAG,CAAC,QACJspD,I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I,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,GAAI,EAAG,GAAI,EAAG,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,KAAM,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,KAAM,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,EAAG,GAAI,KAAM,EAAG,GAAI,IAAK,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,EAAG,GAAI,KAAM,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,EAAG,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,KAAM,EAAG,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,GAAI,EAAG,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,KAAM,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,GAAI,EAAG,GAAI,KAAM,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,GAAI,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,EAAG,GAAI,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,IAAK,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,GAAI,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,GAAI,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,KAAM,KAAM,KAAM,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,MAAO,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,EAAG,KAAM,GAAI,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,KAAM,KAAM,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,EAAG,IAAK,EAAG,GAAI,KAAM,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,KAAM,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,MAAO,MAAO,MAAO,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,MAAO,GAAI,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,MAAO,GAAI,GAAI,EAAG,KAAM,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,MAAO,GAAI,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,MAAO,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,GAAI,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,MAAO,GAAI,GAAI,EAAG,KAAM,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,KAAM,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,KAAM,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,IAAK,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,MAAO,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,MAAO,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,KAAM,GAAI,EAAG,GAAI,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,GAAI,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,KAAM,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,EAAG,IAAK,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,GAAI,EAAG,GAAI,MAAO,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,GAAI,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,KAAM,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,IAAK,GAAI,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,GAAI,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,GAAI,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,MAAO,MAAO,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,MAAO,GAAI,EAAG,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,MAAO,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,MAAO,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,IAAK,MAAO,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,KAAM,KAAM,GAAI,EAAG,KAAM,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,MAAO,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,EAAG,KAAM,GAAI,IAAK,IAAK,GAAI,EAAG,KAAM,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,GAAI,EAAG,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,GAAI,MAAO,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,IAAK,GAAI,EAAG,MAAO,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,MAAO,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,GAAI,EAAG,KAAM,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAAK,GAAI,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,MAAO,MAAO,GAAI,IAAK,GAAI,EAAG,MAAO,MAAO,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,GAAI,EAAG,KAAM,IAAK,EAAG,IAAK,EAAG,GAAI,MAAO,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,IAAK,MAAO,MAAO,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,KAAM,IAAK,IAAK,GAAI,EAAG,IAAK,EAAG,EAAG,IAAK,IAAK,MAAO,MAAO,IAA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Q,KAAOglB,OAAOxK,GAC5B,OAAOumI,GAAQ56H,IAAS,KAAKtW,KAAKmV,OAAO8pC,aAAa3oC,IAASnmB,EAAQA,EAAQ,IAEjF,MAAM0iJ,GAA0B,CAC9B,QACA,MACA,SACA,QACA,SACA,QACA,SACA,OACA,OACA,SACA,MACA,SACA,QACA,SACA,OACA,KACA,SACA,QACA,SACA,OACA,KACA,SACA,SACA,QACA,SACA,SACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,QACA,QACA,SACA,MACA,QACA,SACA,OACA,SACA,SACA,QACA,OACA,OACA,SACA,MACA,SACA,SACA,QACA,SACA,MACA,OACA,SACA,SACA,SACA,KACA,SACA,QACA,QACA,SACA,SACA,OACA,QACA,KACA,OACA,QACA,SACA,OACA,MACA,SACA,SACA,QACA,SACA,OACA,OACA,SACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,MACA,OACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,MACA,QAEIC,GAAyB,CAC7BC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,IAAK,IACL/4H,KAAM,IACNg5H,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,QAAS,IACTC,GAAI,IACJC,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,QAAS,IACTC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPnzG,MAAO,IACPozG,QAAS,IACTC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,QAAS,IACTC,GAAI,IACJC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,QAAS,IACTC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,SAAU,IACVC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRz+I,MAAO,IACP0+I,KAAM,IACNC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRvzI,KAAM,IACNwzI,MAAO,IACP5qJ,MAAO,IACP6qJ,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,GAAI,IACJC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACP1hF,KAAM,IACN2hF,MAAO,IACPC,IAAK,IACLC,IAAK,IACLC,GAAI,IACJhZ,IAAK,IACLiZ,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,GAAI,IACJC,MAAO,IACPC,GAAI,IACJC,GAAI,IACJntG,IAAK,IACLotG,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRtzB,KAAM,IACNuzB,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,GAAI,IACJC,GAAI,IACJC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,KAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KAEFC,GAAY,CAChB,OACA,OACA,SACA,KACA,KACA,MACA,OACA,SAEIC,GAAQ,GAAG/8I,eACXg9I,GAAa,GACnB,IAAIhW,GACJ,IAAKA,MAAO0G,GACNqP,GAAMjvJ,KAAK4/I,GAAwB1G,MACrCgW,GAAWtP,GAAuB1G,KAAQA,IAG9C,SAASiW,GAAQ13I,EAAO2L,EAAM46H,EAAM99I,GAClC,MAAMq/I,EAAYt9H,OAAO8pC,aAAat0C,GACtC,GAAIw3I,GAAMjvJ,KAAKkvJ,GAAY3P,GAAY,CACrC,MAAMjgJ,EAAO4vJ,GAAW3P,GAClBtiJ,EAAQ,IAAMqC,EACpB,OAAI0+I,GAAQ2B,GAAwBtgE,SAAS//E,KAAU0vJ,GAAU3vE,SAAS//E,MAAWY,GAAakjB,GAAiB,KAATA,GAAe,YAAYtW,KAAKmV,OAAO8pC,aAAa3oC,KACrJnmB,EAEFA,EAAQ,IAEjB,MAAO,GAET,SAASmyJ,GAAY33I,EAAO2L,EAAMjnB,GAChC,IACIkzJ,EADAC,EAAU7P,GAAchoI,EAAO2L,EAAMjnB,EAAQozJ,wBAUjD,IARIpzJ,EAAQqzJ,oBAAsBrzJ,EAAQszJ,yBACxCJ,EAAQF,GACN13I,EACA2L,EACAjnB,EAAQozJ,uBACRpzJ,EAAQ+D,aAGP/D,EAAQszJ,wBAA0BJ,IAAUlzJ,EAAQszJ,sBAAuB,CAC9E,MAAMC,EAAUhQ,GAAUjoI,EAAO2L,EAAMjnB,EAAQozJ,wBAC3CG,EAAQrxJ,OAASixJ,EAAQjxJ,SAC3BixJ,EAAUI,GAGd,OAAOL,KAAWlzJ,EAAQszJ,uBAAyBJ,EAAMhxJ,OAASixJ,EAAQjxJ,QAAUgxJ,EAAQC,EAE9F,SAASK,GAAkB1yJ,EAAOd,GAChC,OAAO+iJ,GAAKjiJ,EAAOL,OAAO0hD,OAAO,CAAE2sF,OAAQmkB,IAAejzJ,IAE5D,SAASyzJ,GAAO3yJ,EAAOsiJ,GACrB,MAAM9hG,EAAUx7B,OAAOhlB,GACvB,GAAyB,kBAAdsiJ,EACT,MAAM,IAAIvI,UAAU,sBAEtB,IAAI5nI,EAAQ,EACR7H,EAASk2C,EAAQh5C,QAAQ86I,GAC7B,OAAmB,IAAZh4I,EACL6H,IACA7H,EAASk2C,EAAQh5C,QAAQ86I,EAAWh4I,EAASg4I,EAAUlhJ,QAEzD,OAAO+Q,EAET,MAAMygJ,GAAY,CAEhBvwJ,KAAM,CACJ,CAAC,gBAAeqR,MAAM,IAAK,oBAAmBA,MAAM,KACpD,CAAC,sBACSA,MAAM,IAAK,uBAAsBA,MAAM,MAGnDm/I,SAAU,CACR,CAAC,cAAan/I,MAAM,IAAK,sBAAqBA,MAAM,KACpD,CAAC,sBAAqBA,MAAM,IAAK,sBAAqBA,MAAM,MAG9Do/I,OAAQ,CACN,CAAC,KAAKp/I,MAAM,IAAK,QAAQA,MAAM,KAC/B,CAAC,OAAOA,MAAM,IAAK,UAAUA,MAAM,MAGrCq/I,OAAQ,CACN,CAAC,KAAKr/I,MAAM,IAAK,QAAQA,MAAM,KAC/B,CAAC,OAAOA,MAAM,IAAK,UAAUA,MAAM,OAGvC,SAASs3E,GAAQ7jF,EAAK5F,GACpB,OAAO4F,EAAI6rJ,cAAgB,KAAON,GAChCnxJ,EAAKvB,MACLL,OAAO0hD,OAAO,GAAIl6C,EAAI8rJ,SAAU,CAAE/Q,OAAQ,CAAC,QACzC,IAAM,UAAS3gJ,EAAKvB,MAAM4b,QAAQ,6BAA8Bs3I,GAAW,SAC/E,SAASA,EAAQ3d,GACf,OAAOmd,GACLnd,EACA51I,OAAO0hD,OAAO,GAAIl6C,EAAI8rJ,SAAU,CAAE/Q,OAAQ,CAAC,IAAK,SAItD,SAASp3D,GAAQ3jF,GACf,MAAO,MAAQA,EAAIgsJ,aAAe,UAAY,YAAchsJ,EAAIisJ,aAAe,GAAK,KAAO,QAE7F,SAASC,GAAOlsJ,EAAK5F,EAAMirF,EAAGl6E,GAC5B,OAAOA,GAA0B,YAAhBA,EAAOtT,MACJ,WAAnBsT,EAAO8lE,SAA2C,UAAnB9lE,EAAO8lE,QAAoCs6E,GACzEnxJ,EAAKvB,MACLL,OAAO0hD,OAAO,GAAIl6C,EAAI8rJ,SAAU,CAAE/Q,OAAQ,CAAC,IAAK,QAFY3gJ,EAAKvB,MAKrE,SAASw+I,GAAIr3I,EAAK5F,EAAM+I,EAAQgI,GAC9B,OAAOnL,EAAI4qJ,UAAYxwJ,EAAKvB,MAAQqzJ,GAAOlsJ,EAAK5F,EAAM+I,EAAQgI,GAEhE,MAAMghJ,GAAa,CACjBtoE,WACAF,WACAI,WAEAszD,OAEA50I,KAAM2pJ,GACNv2I,KAAMq2I,IAEFG,GAAQ,GAAGv+I,eACjB,SAASw+I,GAAMtsJ,EAAK5F,EAAM+I,EAAQgI,GAChC,IAAK/Q,IAASA,EAAKvC,KACjB,MAAM,IAAI4F,MAAM,uBAAyBrD,EAAO,KAElD,IAAKiyJ,GAAMzwJ,KAAKuwJ,GAAY/xJ,EAAKvC,MAC/B,MAAM,IAAI4F,MAAM,gCAAkCrD,EAAKvC,KAAO,KAEhE,OAAOs0J,GAAW/xJ,EAAKvC,MAAMmI,EAAK5F,EAAM+I,EAAQgI,GAElD,SAASihJ,GAAMpsJ,EAAKmL,GAClB,MAAMw5E,EAAU,GACV9pC,EAAY1vC,GAAUA,EAAOjP,UAAY,GAC/C,IAAIiH,GAAU,EACd,QAASA,EAAS03C,EAAU5gD,OAC1B0qF,EAAQxhF,GAAUmpJ,GAAMtsJ,EAAK66C,EAAU13C,GAASA,EAAQgI,GAE1D,OAAOw5E,EAAQ7mC,KAAK,IAEtB,SAASimC,GAAQ/jF,EAAK5F,EAAM+I,EAAQgI,GAClC,MAAMk5E,EAASrkF,EAAIqkF,OACbu1D,EAAwB,QAAjBv1D,EAAOhoD,WAAkB,EAASr8B,EAAI45I,KACnD,IAAIxhD,EAA+B,QAAjB/T,EAAOhoD,MAAkBr8B,EAAIusJ,WAAavsJ,EAAIwsJ,MAAMvxE,SAAS7gF,EAAK62E,QAAQ5/D,eAC5F,MAAM+V,EAAQ,GACd,IAAI3I,EACiB,SAAjB4lE,EAAOhoD,OAAqC,QAAjBjiC,EAAK62E,UAClCjxE,EAAIqkF,OAASkqD,IAEf,MAAMvpD,EAAQynE,GAAoBzsJ,EAAK5F,EAAKohB,YACtClQ,EAAW8gJ,GACfpsJ,EACiB,SAAjBqkF,EAAOhoD,OAAqC,aAAjBjiC,EAAK62E,QAAyB72E,EAAK4wB,QAAU5wB,GAoB1E,OAlBA4F,EAAIqkF,OAASA,EACT/4E,IACF8sF,GAAc,IACZpT,GAAU40D,GAASA,EAAKlI,QAAQt3I,EAAM+I,EAAQgI,KAChDic,EAAMvpB,KAAK,IAAKzD,EAAK62E,QAAS+T,EAAQ,IAAMA,EAAQ,IAChDoT,IAAiC,QAAjB/T,EAAOhoD,OAAmBr8B,EAAIs+D,SAChD7/C,EAAOumE,EAAMjzE,OAAOizE,EAAM/qF,OAAS,KAC9B+F,EAAI0sJ,YAAuB,MAATjuI,GAAgBA,GAAiB,MAATA,GAAyB,MAATA,IAC7D2I,EAAMvpB,KAAK,KAEbupB,EAAMvpB,KAAK,MAEbupB,EAAMvpB,KAAK,MAEbupB,EAAMvpB,KAAKyN,GACN8sF,GAAiBwhD,GAASA,EAAKjI,QAAQv3I,EAAM+I,EAAQgI,IACxDic,EAAMvpB,KAAK,KAAOzD,EAAK62E,QAAU,KAE5B7pD,EAAM02B,KAAK,IAEpB,SAAS2uG,GAAoBzsJ,EAAKiC,GAChC,MAAMqjF,EAAS,GACf,IACI3vD,EACA98B,EACA4lB,EAHAtb,GAAU,EAId,IAAKwyB,KAAQ1zB,OACS,IAAhBA,EAAM0zB,IAAoC,OAAhB1zB,EAAM0zB,KAClC98B,EAAQ8zJ,GAAmB3sJ,EAAK21B,EAAM1zB,EAAM0zB,IACxC98B,GACFysF,EAAOznF,KAAKhF,IAGlB,QAASsK,EAASmiF,EAAOrrF,OACvBwkB,EAAOze,EAAI4sJ,MAAQtnE,EAAOniF,GAAQ4O,OAAOuzE,EAAOniF,GAAQlJ,OAAS,GAAK,KAClEkJ,IAAWmiF,EAAOrrF,OAAS,GAAc,MAATwkB,GAAyB,MAATA,IAClD6mE,EAAOniF,IAAW,KAGtB,OAAOmiF,EAAOxnC,KAAK,IAErB,SAAS6uG,GAAmB3sJ,EAAK21B,EAAM98B,GACrC,MAAMijB,EAAOwL,GAAKtnB,EAAIqkF,OAAQ1uD,GAC9B,IACIxc,EADAi4D,EAASpxE,EAAI0F,MAOjB,IALIoW,EAAK4wG,mBAAsB7zH,IAAUijB,EAAKhgB,WAAuB,KAAVjD,GAEhDijB,EAAK0wG,SAAW1wG,EAAK4wG,mBAAsC,kBAAV7zH,KAC1DA,EAAQojF,QAAQpjF,IAFhBA,GAAQ,OAII,IAAVA,GAA8B,OAAVA,IAA4B,IAAVA,GAAoC,kBAAVA,GAAsBsR,OAAOwpB,MAAM96B,GACrG,MAAO,GAET,MAAMqC,EAAOqwJ,GACXzvI,EAAKhgB,UACLtD,OAAO0hD,OAAO,GAAIl6C,EAAI8rJ,SAAU,CAE9B/Q,OAAQ0Q,GAAUvwJ,KAA0B,SAArB8E,EAAIqkF,OAAOhoD,MAAmBr8B,EAAI6tI,MAAQ,GAAG7tI,EAAI6sJ,SAG5E,OAAc,IAAVh0J,EACKqC,GACTrC,EAAyB,kBAAVA,GAAsB,WAAYA,GAG9CijB,EAAK8wG,eAAiBqiB,GAAYF,IAAal2I,EAAO,CACrDu2I,SAAUpvI,EAAI8sJ,aAEdjvI,OAAOhlB,GACPmH,EAAI+sJ,gBAAkBl0J,EACjBqC,GACL8E,EAAI0rJ,WACNvyI,EAASoyI,GACP1yJ,EACAL,OAAO0hD,OAAO,GAAIl6C,EAAI8rJ,SAAU,CAC9B/Q,OAAQ0Q,GAAUC,SAAS1rJ,EAAI6tI,OAAO7tI,EAAI6sJ,MAC1C/wJ,WAAW,MAIbqd,IAAWtgB,IACTmH,EAAIgtJ,OAASxB,GAAO3yJ,EAAOu4E,GAAUo6E,GAAO3yJ,EAAOmH,EAAIitJ,eACzD77E,EAASpxE,EAAIitJ,aAEf9zI,EAASi4D,EAASm6E,GAChB1yJ,EACAL,OAAO0hD,OAAO,GAAIl6C,EAAI8rJ,SAAU,CAE9B/Q,QAAoB,MAAX3pE,EAAiBq6E,GAAUE,OAASF,GAAUG,QAA6B,SAArB5rJ,EAAIqkF,OAAOhoD,MAAmBr8B,EAAI6tI,MAAQ,GAAG7tI,EAAI6sJ,MAChH/wJ,WAAW,KAEXs1E,GAECl2E,GAAQie,EAAS,IAAMA,EAASA,KAEzC,SAAS+zI,GAAO9yJ,EAAMrC,EAAU,IAC9B,MAAMq5E,EAASr5E,EAAQ2N,OAAS,IAC1BunJ,EAAyB,MAAX77E,EAAiB,IAAM,IAC3C,GAAe,MAAXA,GAA6B,MAAXA,EACpB,MAAM,IAAI3zE,MAAM,kBAAoB2zE,EAAS,2BAE/C,MAAM9uE,EAAU,CACdurI,MAAO91I,EAAQo1J,iBAAmB,EAAI,EACtCN,KAAM90J,EAAQq1J,yBAA2B,EAAI,EAC7C/oE,OAA0B,QAAlBtsF,EAAQskC,MAAkBkyG,GAAMD,GACxCsL,KAAM7hJ,EAAQs1J,iBAAmBxS,QAAW,EAC5Cn1I,MAAO0rE,EACP67E,cACAD,MAAOj1J,EAAQu1J,WACf5B,SAAU3zJ,EAAQw1J,eAClBX,MAAO70J,EAAQy1J,gBACfxB,aAAcj0J,EAAQi0J,aACtBC,aAAcl0J,EAAQk0J,aACtBJ,cAAe9zJ,EAAQ8zJ,cACvBiB,WAAY/0J,EAAQ01J,yBACpBf,WAAY30J,EAAQ21J,iBACpBX,cAAeh1J,EAAQ41J,wBACvB/C,UAAW7yJ,EAAQ61J,mBACnBpB,MAAOz0J,EAAQy0J,OAAS/V,GAAiBrgI,SACzC01I,SAAU/zJ,EAAQ+zJ,UAAY,GAC9BxtF,MAAOvmE,EAAQ81J,iBACftB,WAAYx0J,EAAQ+1J,oBAEtB,OAAOxB,GACLhqJ,EAEAlG,MAAMk/E,QAAQlhF,GAAQ,CAAEvC,KAAM,OAAQqE,SAAU9B,GAASA,EACzD,KACA,MAGJ,SAAS2zJ,GAAgBxlF,GACvB,MAAMylF,EAEJryJ,KAAKe,KAAK,YAENwyI,EAAW12I,OAAO0hD,OAAO,GAAI8zG,EAAmBzlF,GAEtD,SAAS0lF,EAAU1xE,GACjB,OAAO2wE,GAAO3wE,EAAM2yD,GAFtB12I,OAAO0hD,OAAOv+C,KAAM,CAAEuyJ,SAAUD,IAKlC,SAAS1+I,GAASnV,EAAMrC,GACtB,IAAI,gBAAEo2J,GAAkB,GAASp2J,GAAW,GAC5C,OAAOq2J,GAAMh0J,EAAM+zJ,GAErB,SAASC,GAAMh0J,EAAM+zJ,GACnB,OAAO/zJ,GAAwB,kBAATA,IACrBA,EAAKvB,QACLs1J,EAAkB/zJ,EAAK2tD,IAAM,KAC9B,aAAc3tD,GAAQi0J,GAAMj0J,EAAK8B,SAAUiyJ,IAAoB/xJ,MAAMk/E,QAAQlhF,IAASi0J,GAAMj0J,EAAM+zJ,KAAqB,GAEzH,SAASE,GAAM/oE,EAAQ6oE,GACrB,IAAIh1I,EAAS,GACThW,GAAU,EACd,QAASA,EAASmiF,EAAOrrF,OACvBkf,EAAOhW,GAAUirJ,GAAM9oE,EAAOniF,GAASgrJ,GAEzC,OAAOh1I,EAAO2kC,KAAK,IAErB,SAAS16C,GAAO8rB,EAAOziB,EAAOsmC,EAAQ4lC,GACpC,MAAMjsE,EAAMwiB,EAAMj1B,OAClB,IACI4hF,EADAyyE,EAAa,EAQjB,GALE7hJ,EADEA,EAAQ,GACDA,EAAQC,EAAM,EAAIA,EAAMD,EAEzBA,EAAQC,EAAMA,EAAMD,EAE9BsmC,EAASA,EAAS,EAAIA,EAAS,EAC3B4lC,EAAM1+E,OAAS,IACjB4hF,EAAaz/E,MAAMC,KAAKs8E,GACxBkD,EAAWrmE,QAAQ/I,EAAOsmC,GAC1B,GAAG3vC,OAAOsK,MAAMwhB,EAAO2sD,OAClB,CACD9oC,GACF,GAAG3vC,OAAOsK,MAAMwhB,EAAO,CAACziB,EAAOsmC,IACjC,MAAOu7G,EAAa31E,EAAM1+E,OACxB4hF,EAAalD,EAAMv6E,MAAMkwJ,EAAYA,EAAa,KAClDzyE,EAAWrmE,QAAQ/I,EAAO,GAC1B,GAAGrJ,OAAOsK,MAAMwhB,EAAO2sD,GACvByyE,GAAc,IACd7hJ,GAAS,KAIf,SAAS5O,GAAKqxB,EAAOypD,GACnB,OAAIzpD,EAAMj1B,OAAS,GACjBmJ,GAAO8rB,EAAOA,EAAMj1B,OAAQ,EAAG0+E,GACxBzpD,GAEFypD,EAET,MAAM41E,GAAmB,GAAGzgJ,eAC5B,SAAS0gJ,GAAkBC,GACzB,MAAM1yE,EAAO,GACb,IAAI54E,GAAU,EACd,QAASA,EAASsrJ,EAAWx0J,OAC3By0J,GAAgB3yE,EAAM0yE,EAAWtrJ,IAEnC,OAAO44E,EAET,SAAS2yE,GAAgB3yE,EAAM4yE,GAC7B,IAAIC,EACJ,IAAKA,KAAQD,EAAY,CACvB,MAAME,EAAQN,GAAiB3yJ,KAAKmgF,EAAM6yE,GAAQ7yE,EAAK6yE,QAAQ,EACzD51I,EAAO61I,IAAU9yE,EAAK6yE,GAAQ,IAC9B31I,EAAQ01I,EAAWC,GACzB,IAAIv7I,EACJ,IAAKA,KAAS4F,EAAO,CACds1I,GAAiB3yJ,KAAKod,EAAM3F,KAC/B2F,EAAK3F,GAAS,IAChB,MAAMxa,EAAQogB,EAAM5F,GACpBy7I,GAEE91I,EAAK3F,GACLjX,MAAMk/E,QAAQziF,GAASA,EAAQA,EAAQ,CAACA,GAAS,MAKzD,SAASi2J,GAAWn5G,EAAUzmB,GAC5B,IAAI/rB,GAAU,EACd,MAAM6R,EAAS,GACf,QAAS7R,EAAS+rB,EAAMj1B,QACC,UAAtBi1B,EAAM/rB,GAAQ1D,IAAkBk2C,EAAW3gC,GAAQnX,KAAKqxB,EAAM/rB,IAEjEC,GAAOuyC,EAAU,EAAG,EAAG3gC,GAEzB,MAAM+5I,GAA0B,8vCAC1BC,GAAaC,GAAW,YACxBC,GAAaD,GAAW,MACxBE,GAAgBF,GAAW,cAC3BG,GAAoBH,GAAW,cAC/BI,GAAmBJ,GAAW,kBAC9BK,GAAaL,GAAW,uBAC9B,SAASM,GAAal8I,GACpB,OAGY,OAAVA,IAAmBA,EAAQ,IAAgB,MAAVA,GAGrC,SAASm8I,GAA0Bn8I,GACjC,OAAiB,OAAVA,IAAmBA,EAAQ,GAAe,KAAVA,GAEzC,SAASo8I,GAAmBp8I,GAC1B,OAAiB,OAAVA,GAAkBA,GAAS,EAEpC,SAASq8I,GAAcr8I,GACrB,OAAkB,IAAXA,IAA2B,IAAXA,GAA0B,KAAVA,EAEzC,MAAMs8I,GAAoBV,GAAW,MAC/BW,GAAqBX,GAAWF,IACtC,SAASE,GAAWzgF,GAClB,OAAO1S,EACP,SAASA,EAAMzoD,GACb,OAAiB,OAAVA,GAAkBm7D,EAAM9lE,KAAKmV,OAAO8pC,aAAat0C,KAG5D,SAASw8I,GAAaC,EAAS5wI,EAAKrnB,EAAM8a,GACxC,MAAM8wB,EAAQ9wB,EAAMA,EAAM,EAAIxI,OAAOmuI,kBACrC,IAAI37H,EAAO,EACX,OAAOlQ,EACP,SAASA,EAAM4G,GACb,OAAIq8I,GAAcr8I,IAChBy8I,EAAQn6F,MAAM99D,GACPw/G,EAAOhkG,IAET6L,EAAI7L,GAEb,SAASgkG,EAAOhkG,GACd,OAAIq8I,GAAcr8I,IAAUsJ,IAAS8mB,GACnCqsH,EAAQnwI,QAAQtM,GACTgkG,IAETy4C,EAAQC,KAAKl4J,GACNqnB,EAAI7L,KAGf,MAAM28I,GAAY,CAChB7jF,SAAU8jF,IAEZ,SAASA,GAAkBH,GACzB,MAAMI,EAAeJ,EAAQK,QAC3Bx0J,KAAKuvG,OAAO4jD,WAAWsB,eACvBC,EACAC,GAEF,IAAIzhB,EACJ,OAAOqhB,EACP,SAASG,EAA2Bh9I,GAClC,GAAc,OAAVA,EAOJ,OAHAy8I,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACNF,GAAaC,EAASI,EAAc,cANzCJ,EAAQnwI,QAAQtM,GAQpB,SAASi9I,EAAiBj9I,GAExB,OADAy8I,EAAQn6F,MAAM,aACPp5C,EAAUlJ,GAEnB,SAASkJ,EAAUlJ,GACjB,MAAM4P,EAAQ6sI,EAAQn6F,MAAM,YAAa,CACvC46F,YAAa,OACbC,SAAU3hB,IAMZ,OAJIA,IACFA,EAAU7vH,KAAOiE,GAEnB4rH,EAAY5rH,EACL7nB,EAAMiY,GAEf,SAASjY,EAAMiY,GACb,OAAc,OAAVA,GACFy8I,EAAQC,KAAK,aACbD,EAAQC,KAAK,kBACbD,EAAQnwI,QAAQtM,IAGdo8I,GAAmBp8I,IACrBy8I,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,aACNxzI,IAETuzI,EAAQnwI,QAAQtM,GACTjY,IAGX,MAAMq1J,GAAa,CACjBtkF,SAAUukF,IAENC,GAAqB,CACzBxkF,SAAUykF,IAEZ,SAASF,GAAmBZ,GAC1B,MAAM9gJ,EAAQrT,KACR4oF,EAAQ,GACd,IACIssE,EACAC,EACAC,EAHAC,EAAY,EAIhB,OAAOvkJ,EACP,SAASA,EAAM4G,GACb,GAAI29I,EAAYzsE,EAAMtqF,OAAQ,CAC5B,MAAM+lF,EAAOuE,EAAMysE,GAEnB,OADAhiJ,EAAMiiJ,eAAiBjxE,EAAK,GACrB8vE,EAAQK,QACbnwE,EAAK,GAAGkxE,aACRC,EACAC,EAHKtB,CAILz8I,GAEJ,OAAO+9I,EAAmB/9I,GAE5B,SAAS89I,EAAiB99I,GAExB,GADA29I,IACIhiJ,EAAMiiJ,eAAeI,WAAY,CACnCriJ,EAAMiiJ,eAAeI,gBAAa,EAC9BR,GACFS,IAEF,MAAMC,EAAmBviJ,EAAMg9B,OAAO/xC,OACtC,IACI+xH,EADAwlC,EAAkBD,EAEtB,MAAOC,IACL,GAAyC,SAArCxiJ,EAAMg9B,OAAOwlH,GAAiB,IAA2D,cAA1CxiJ,EAAMg9B,OAAOwlH,GAAiB,GAAG35J,KAAsB,CACxGm0H,EAASh9G,EAAMg9B,OAAOwlH,GAAiB,GAAG9kJ,IAC1C,MAGJ+kJ,EAAeT,GACf,IAAI7tJ,EAASouJ,EACb,MAAOpuJ,EAAS6L,EAAMg9B,OAAO/xC,OAC3B+U,EAAMg9B,OAAO7oC,GAAQ,GAAGuJ,IAAMlU,OAAO0hD,OAAO,GAAI8xE,GAChD7oH,IASF,OAPAC,GACE4L,EAAMg9B,OACNwlH,EAAkB,EAClB,EACAxiJ,EAAMg9B,OAAO5tC,MAAMmzJ,IAErBviJ,EAAMg9B,OAAO/xC,OAASkJ,EACfiuJ,EAAmB/9I,GAE5B,OAAO5G,EAAM4G,GAEf,SAAS+9I,EAAmB/9I,GAC1B,GAAI29I,IAAczsE,EAAMtqF,OAAQ,CAC9B,IAAK42J,EACH,OAAOa,EAAkBr+I,GAE3B,GAAIw9I,EAAUc,kBAAoBd,EAAUc,iBAAiBC,SAC3D,OAAOC,EAAUx+I,GAEnBrE,EAAM8iJ,UAAY71E,QAChB40E,EAAUc,mBAAqBd,EAAUkB,+BAI7C,OADA/iJ,EAAMiiJ,eAAiB,GAChBnB,EAAQh0F,MACb60F,GACAqB,EACAC,EAHKnC,CAILz8I,GAEJ,SAAS2+I,EAAqB3+I,GAI5B,OAHIw9I,GACFS,IACFG,EAAeT,GACRU,EAAkBr+I,GAE3B,SAAS4+I,EAAsB5+I,GAG7B,OAFArE,EAAMk8F,OAAOgnD,KAAKljJ,EAAMmjJ,MAAMx8I,MAAQq7I,IAAczsE,EAAMtqF,OAC1D82J,EAAkB/hJ,EAAMmjJ,MAAM5rI,OACvBsrI,EAAUx+I,GAEnB,SAASq+I,EAAkBr+I,GAEzB,OADArE,EAAMiiJ,eAAiB,GAChBnB,EAAQK,QACbQ,GACAyB,EACAP,EAHK/B,CAILz8I,GAEJ,SAAS++I,EAAkB/+I,GAGzB,OAFA29I,IACAzsE,EAAM1mF,KAAK,CAACmR,EAAM2iJ,iBAAkB3iJ,EAAMiiJ,iBACnCS,EAAkBr+I,GAE3B,SAASw+I,EAAUx+I,GACjB,OAAc,OAAVA,GACEw9I,GACFS,IACFG,EAAe,QACf3B,EAAQnwI,QAAQtM,KAGlBw9I,EAAYA,GAAa7hJ,EAAMk8F,OAAOmnD,KAAKrjJ,EAAMmjJ,OACjDrC,EAAQn6F,MAAM,YAAa,CACzB46F,YAAa,OACbC,SAAUM,EACVwB,WAAYzB,IAEP0B,EAAal/I,IAEtB,SAASk/I,EAAal/I,GACpB,OAAc,OAAVA,GACFm/I,EAAa1C,EAAQC,KAAK,cAAc,GACxC0B,EAAe,QACf3B,EAAQnwI,QAAQtM,IAGdo8I,GAAmBp8I,IACrBy8I,EAAQnwI,QAAQtM,GAChBm/I,EAAa1C,EAAQC,KAAK,cAC1BiB,EAAY,EACZhiJ,EAAM8iJ,eAAY,EACXrlJ,IAETqjJ,EAAQnwI,QAAQtM,GACTk/I,GAET,SAASC,EAAavvI,EAAOwvI,GAC3B,MAAM5vI,EAAS7T,EAAM0jJ,YAAYzvI,GASjC,GARIwvI,GACF5vI,EAAOhlB,KAAK,MACdolB,EAAMutI,SAAWM,EACbA,IACFA,EAAW9xI,KAAOiE,GACpB6tI,EAAa7tI,EACb4tI,EAAU8B,WAAW1vI,EAAMxW,OAC3BokJ,EAAUzqJ,MAAMyc,GACZ7T,EAAMk8F,OAAOgnD,KAAKjvI,EAAMxW,MAAMkJ,MAAO,CACvC,IAAIxS,EAAS0tJ,EAAU7kH,OAAO/xC,OAC9B,MAAOkJ,IACL,GAEE0tJ,EAAU7kH,OAAO7oC,GAAQ,GAAGsJ,MAAM8Z,OAASwqI,KACzCF,EAAU7kH,OAAO7oC,GAAQ,GAAGuJ,KAC9BmkJ,EAAU7kH,OAAO7oC,GAAQ,GAAGuJ,IAAI6Z,OAASwqI,GAEzC,OAGJ,MAAMQ,EAAmBviJ,EAAMg9B,OAAO/xC,OACtC,IACI2gJ,EACA5uB,EAFAwlC,EAAkBD,EAGtB,MAAOC,IACL,GAAyC,SAArCxiJ,EAAMg9B,OAAOwlH,GAAiB,IAA2D,cAA1CxiJ,EAAMg9B,OAAOwlH,GAAiB,GAAG35J,KAAsB,CACxG,GAAI+iJ,EAAM,CACR5uB,EAASh9G,EAAMg9B,OAAOwlH,GAAiB,GAAG9kJ,IAC1C,MAEFkuI,GAAO,EAGX6W,EAAeT,GACf7tJ,EAASouJ,EACT,MAAOpuJ,EAAS6L,EAAMg9B,OAAO/xC,OAC3B+U,EAAMg9B,OAAO7oC,GAAQ,GAAGuJ,IAAMlU,OAAO0hD,OAAO,GAAI8xE,GAChD7oH,IAEFC,GACE4L,EAAMg9B,OACNwlH,EAAkB,EAClB,EACAxiJ,EAAMg9B,OAAO5tC,MAAMmzJ,IAErBviJ,EAAMg9B,OAAO/xC,OAASkJ,GAG1B,SAASsuJ,EAAe90I,GACtB,IAAIxZ,EAASohF,EAAMtqF,OACnB,MAAOkJ,KAAWwZ,EAAM,CACtB,MAAMsqF,EAAQ1iB,EAAMphF,GACpB6L,EAAMiiJ,eAAiBhqD,EAAM,GAC7BA,EAAM,GAAG8oD,KAAKn0J,KAAKoT,EAAO8gJ,GAE5BvrE,EAAMtqF,OAAS0iB,EAEjB,SAAS20I,IACPT,EAAUzqJ,MAAM,CAAC,OACjB0qJ,OAAa,EACbD,OAAY,EACZ7hJ,EAAMiiJ,eAAeI,gBAAa,GAGtC,SAAST,GAAkBd,EAAS5wI,EAAK0zI,GACvC,OAAO/C,GACLC,EACAA,EAAQK,QAAQx0J,KAAKuvG,OAAO4jD,WAAWn3J,SAAUunB,EAAK0zI,GACtD,aACAj3J,KAAKuvG,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,qBAAkB,EAAS,GAG5E,SAAS83E,GAAkB1/I,GACzB,OAAc,OAAVA,GAAkBm8I,GAA0Bn8I,IAAUs8I,GAAkBt8I,GACnE,EAELu8I,GAAmBv8I,GACd,OADT,EAIF,SAAS2/I,GAAWC,EAAajnH,EAAQ1pC,GACvC,MAAM4wJ,EAAS,GACf,IAAI/vJ,GAAU,EACd,QAASA,EAAS8vJ,EAAYh5J,OAAQ,CACpC,MAAMhC,EAAUg7J,EAAY9vJ,GAAQ6vJ,WAChC/6J,IAAYi7J,EAAOj4E,SAAShjF,KAC9B+zC,EAAS/zC,EAAQ+zC,EAAQ1pC,GACzB4wJ,EAAOr1J,KAAK5F,IAGhB,OAAO+zC,EAET,MAAMmnH,GAAY,CAChBj4J,KAAM,YACNixE,SAAUinF,GACVJ,WAAYK,IAEd,SAASA,GAAoBrnH,EAAQ1pC,GACnC,IACI4/E,EACAtzD,EACApyB,EACA82J,EACAC,EACAC,EACAC,EACAltI,EARApjB,GAAU,EASd,QAASA,EAAS6oC,EAAO/xC,OACvB,GAA0B,UAAtB+xC,EAAO7oC,GAAQ,IAA6C,sBAA3B6oC,EAAO7oC,GAAQ,GAAGtL,MAAgCm0C,EAAO7oC,GAAQ,GAAGuwJ,OAAQ,CAC/GxxE,EAAO/+E,EACP,MAAO++E,IACL,GAAwB,SAApBl2C,EAAOk2C,GAAM,IAA0C,sBAAzBl2C,EAAOk2C,GAAM,GAAGrqF,MAAgCm0C,EAAOk2C,GAAM,GAAGyxE,OAClGrxJ,EAAQsxJ,eAAe5nH,EAAOk2C,GAAM,IAAIvwE,WAAW,KAAOrP,EAAQsxJ,eAAe5nH,EAAO7oC,GAAQ,IAAIwO,WAAW,GAAI,CACjH,IAAKq6B,EAAOk2C,GAAM,GAAGwxE,QAAU1nH,EAAO7oC,GAAQ,GAAGwwJ,SAAW3nH,EAAO7oC,GAAQ,GAAGuJ,IAAI6Z,OAASylB,EAAO7oC,GAAQ,GAAGsJ,MAAM8Z,QAAU,MAAQylB,EAAOk2C,GAAM,GAAGx1E,IAAI6Z,OAASylB,EAAOk2C,GAAM,GAAGz1E,MAAM8Z,OAASylB,EAAO7oC,GAAQ,GAAGuJ,IAAI6Z,OAASylB,EAAO7oC,GAAQ,GAAGsJ,MAAM8Z,QAAU,GAChQ,SAEFitI,EAAMxnH,EAAOk2C,GAAM,GAAGx1E,IAAI6Z,OAASylB,EAAOk2C,GAAM,GAAGz1E,MAAM8Z,OAAS,GAAKylB,EAAO7oC,GAAQ,GAAGuJ,IAAI6Z,OAASylB,EAAO7oC,GAAQ,GAAGsJ,MAAM8Z,OAAS,EAAI,EAAI,EAC/I,MAAM9Z,EAAQjU,OAAO0hD,OAAO,GAAIlO,EAAOk2C,GAAM,GAAGx1E,KAC1CA,EAAMlU,OAAO0hD,OAAO,GAAIlO,EAAO7oC,GAAQ,GAAGsJ,OAChDonJ,GAAUpnJ,GAAQ+mJ,GAClBK,GAAUnnJ,EAAK8mJ,GACfF,EAAkB,CAChBz7J,KAAM27J,EAAM,EAAI,iBAAmB,mBACnC/mJ,QACAC,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOk2C,GAAM,GAAGx1E,MAEzC6mJ,EAAkB,CAChB17J,KAAM27J,EAAM,EAAI,iBAAmB,mBACnC/mJ,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAO7oC,GAAQ,GAAGsJ,OAC3CC,OAEFlQ,EAAQ,CACN3E,KAAM27J,EAAM,EAAI,aAAe,eAC/B/mJ,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOk2C,GAAM,GAAGx1E,KACzCA,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAO7oC,GAAQ,GAAGsJ,QAE3CmiB,EAAQ,CACN/2B,KAAM27J,EAAM,EAAI,SAAW,WAC3B/mJ,MAAOjU,OAAO0hD,OAAO,GAAIo5G,EAAgB7mJ,OACzCC,IAAKlU,OAAO0hD,OAAO,GAAIq5G,EAAgB7mJ,MAEzCs/B,EAAOk2C,GAAM,GAAGx1E,IAAMlU,OAAO0hD,OAAO,GAAIo5G,EAAgB7mJ,OACxDu/B,EAAO7oC,GAAQ,GAAGsJ,MAAQjU,OAAO0hD,OAAO,GAAIq5G,EAAgB7mJ,KAC5D+mJ,EAAa,GACTznH,EAAOk2C,GAAM,GAAGx1E,IAAI6Z,OAASylB,EAAOk2C,GAAM,GAAGz1E,MAAM8Z,SACrDktI,EAAa51J,GAAK41J,EAAY,CAC5B,CAAC,QAASznH,EAAOk2C,GAAM,GAAI5/E,GAC3B,CAAC,OAAQ0pC,EAAOk2C,GAAM,GAAI5/E,MAG9BmxJ,EAAa51J,GAAK41J,EAAY,CAC5B,CAAC,QAAS7kI,EAAOtsB,GACjB,CAAC,QAASgxJ,EAAiBhxJ,GAC3B,CAAC,OAAQgxJ,EAAiBhxJ,GAC1B,CAAC,QAAS9F,EAAO8F,KAEnBmxJ,EAAa51J,GACX41J,EACAT,GACE1wJ,EAAQ4oG,OAAO4jD,WAAWgF,WAAWhB,KACrC9mH,EAAO5tC,MAAM8jF,EAAO,EAAG/+E,GACvBb,IAGJmxJ,EAAa51J,GAAK41J,EAAY,CAC5B,CAAC,OAAQj3J,EAAO8F,GAChB,CAAC,QAASixJ,EAAiBjxJ,GAC3B,CAAC,OAAQixJ,EAAiBjxJ,GAC1B,CAAC,OAAQssB,EAAOtsB,KAEd0pC,EAAO7oC,GAAQ,GAAGuJ,IAAI6Z,OAASylB,EAAO7oC,GAAQ,GAAGsJ,MAAM8Z,QACzDA,EAAS,EACTktI,EAAa51J,GAAK41J,EAAY,CAC5B,CAAC,QAASznH,EAAO7oC,GAAQ,GAAIb,GAC7B,CAAC,OAAQ0pC,EAAO7oC,GAAQ,GAAIb,MAG9BikB,EAAS,EAEXnjB,GAAO4oC,EAAQk2C,EAAO,EAAG/+E,EAAS++E,EAAO,EAAGuxE,GAC5CtwJ,EAAS++E,EAAOuxE,EAAWx5J,OAASssB,EAAS,EAC7C,OAKRpjB,GAAU,EACV,QAASA,EAAS6oC,EAAO/xC,OACQ,sBAA3B+xC,EAAO7oC,GAAQ,GAAGtL,OACpBm0C,EAAO7oC,GAAQ,GAAGtL,KAAO,QAG7B,OAAOm0C,EAET,SAASonH,GAAkBtD,EAAS5wI,GAClC,MAAM60I,EAAoBp4J,KAAKuvG,OAAO4jD,WAAWkF,iBAAiBlB,KAC5DjkB,EAAYlzI,KAAK60J,SACjBx7I,EAAS+9I,GAAkBlkB,GACjC,IAAInqH,EACJ,OAAOjY,EACP,SAASA,EAAM4G,GAGb,OAFAy8I,EAAQn6F,MAAM,qBACdjxC,EAASrR,EACF4gJ,EAAS5gJ,GAElB,SAAS4gJ,EAAS5gJ,GAChB,GAAIA,IAAUqR,EAEZ,OADAorI,EAAQnwI,QAAQtM,GACT4gJ,EAET,MAAMhxI,EAAQ6sI,EAAQC,KAAK,qBACrBllJ,EAAQkoJ,GAAkB1/I,GAC1B6uE,GAAQr3E,GAAmB,IAAVA,GAAemK,GAAU++I,EAAkB94E,SAAS5nE,GACrEirD,GAAStpD,GAAqB,IAAXA,GAAgBnK,GAASkpJ,EAAkB94E,SAAS4zD,GAG7E,OAFA5rH,EAAM0wI,MAAQ13E,QAAmB,KAAXv3D,EAAgBw9D,EAAOA,IAASltE,IAAWspD,IACjEr7C,EAAMywI,OAASz3E,QAAmB,KAAXv3D,EAAgB45C,EAAQA,IAAUzzD,IAAUq3E,IAC5DhjE,EAAI7L,IAGf,SAASwgJ,GAAU7nC,EAAQzlG,GACzBylG,EAAOxsG,QAAU+G,EACjBylG,EAAOzlG,QAAUA,EACjBylG,EAAOkoC,cAAgB3tI,EAEzB,MAAM4tI,GAAW,CACfj5J,KAAM,WACNixE,SAAUioF,IAEZ,SAASA,GAAiBtE,EAAS5wI,EAAK0zI,GACtC,IAAIj2I,EAAO,EACX,OAAOlQ,EACP,SAASA,EAAM4G,GAMb,OALAy8I,EAAQn6F,MAAM,YACdm6F,EAAQn6F,MAAM,kBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,kBACbD,EAAQn6F,MAAM,oBACPusB,EAET,SAASA,EAAK7uE,GACZ,OAAI27I,GAAW37I,IACby8I,EAAQnwI,QAAQtM,GACTghJ,GAEF/E,GAAWj8I,GAASihJ,EAAWjhJ,GAASu/I,EAAIv/I,GAErD,SAASghJ,EAAmBhhJ,GAC1B,OAAiB,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAAgB+7I,GAAkB/7I,GAASkhJ,EAAyBlhJ,GAASihJ,EAAWjhJ,GAEjI,SAASkhJ,EAAyBlhJ,GAChC,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTmhJ,IAEM,KAAVnhJ,GAA0B,KAAVA,GAA0B,KAAVA,GAAgB+7I,GAAkB/7I,KAAWsJ,IAAS,IACzFmzI,EAAQnwI,QAAQtM,GACTkhJ,GAEFD,EAAWjhJ,GAEpB,SAASmhJ,EAAUnhJ,GACjB,OAAc,KAAVA,GACFy8I,EAAQC,KAAK,oBACNrjJ,EAAI2G,IAEC,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,GAAgBk8I,GAAal8I,GAC1Du/I,EAAIv/I,IAEby8I,EAAQnwI,QAAQtM,GACTmhJ,GAET,SAASF,EAAWjhJ,GAClB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GAChBsJ,EAAO,EACA83I,GAELnF,GAAWj8I,IACby8I,EAAQnwI,QAAQtM,GACTihJ,GAEF1B,EAAIv/I,GAEb,SAASohJ,EAAiBphJ,GACxB,OAAO+7I,GAAkB/7I,GAASqhJ,EAAWrhJ,GAASu/I,EAAIv/I,GAE5D,SAASqhJ,EAAWrhJ,GAClB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GAChBsJ,EAAO,EACA83I,GAEK,KAAVphJ,GACFy8I,EAAQC,KAAK,oBAAoBl4J,KAAO,gBACjC6U,EAAI2G,IAENshJ,EAAWthJ,GAEpB,SAASshJ,EAAWthJ,GAClB,OAAe,KAAVA,GAAgB+7I,GAAkB/7I,KAAWsJ,IAAS,IACzDmzI,EAAQnwI,QAAQtM,GACC,KAAVA,EAAeshJ,EAAaD,GAE9B9B,EAAIv/I,GAEb,SAAS3G,EAAI2G,GAKX,OAJAy8I,EAAQn6F,MAAM,kBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,kBACbD,EAAQC,KAAK,YACN7wI,GAGX,MAAM8D,GAAY,CAChBmpD,SAAUyoF,GACVC,SAAS,GAEX,SAASD,GAAkB9E,EAAS5wI,EAAK0zI,GACvC,OAAO/C,GAAaC,EAASgF,EAAiB,cAC9C,SAASA,EAAgBzhJ,GACvB,OAAiB,OAAVA,GAAkBo8I,GAAmBp8I,GAAS6L,EAAI7L,GAASu/I,EAAIv/I,IAG1E,MAAM0hJ,GAAa,CACjB75J,KAAM,aACNixE,SAAU6oF,GACV9D,aAAc,CACZ/kF,SAAU8oF,IAEZlF,SAEF,SAASiF,GAAwBlF,EAAS5wI,EAAK0zI,GAC7C,MAAM5jJ,EAAQrT,KACd,OAAO8Q,EACP,SAASA,EAAM4G,GACb,GAAc,KAAVA,EAAc,CAChB,MAAMqI,EAAQ1M,EAAMiiJ,eAWpB,OAVKv1I,EAAMwmE,OACT4tE,EAAQn6F,MAAM,aAAc,CAC1Bu/F,YAAY,IAEdx5I,EAAMwmE,MAAO,GAEf4tE,EAAQn6F,MAAM,oBACdm6F,EAAQn6F,MAAM,oBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,oBACNllJ,EAET,OAAO+nJ,EAAIv/I,GAEb,SAASxI,EAAMwI,GACb,OAAIq8I,GAAcr8I,IAChBy8I,EAAQn6F,MAAM,8BACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,8BACbD,EAAQC,KAAK,oBACN7wI,IAET4wI,EAAQC,KAAK,oBACN7wI,EAAI7L,KAGf,SAAS4hJ,GAA+BnF,EAAS5wI,EAAK0zI,GACpD,OAAO/C,GACLC,EACAA,EAAQK,QAAQ4E,GAAY71I,EAAK0zI,GACjC,aACAj3J,KAAKuvG,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,qBAAkB,EAAS,GAG5E,SAAS80E,GAAKD,GACZA,EAAQC,KAAK,cAEf,MAAMoF,GAAkB,CACtBj6J,KAAM,kBACNixE,SAAUipF,IAEZ,SAASA,GAAwBtF,EAAS5wI,EAAK0zI,GAC7C,OAAOnmJ,EACP,SAASA,EAAM4G,GAKb,OAJAy8I,EAAQn6F,MAAM,mBACdm6F,EAAQn6F,MAAM,gBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,gBACN7tE,EAET,SAASA,EAAK7uE,GACZ,OAAIg8I,GAAiBh8I,IACnBy8I,EAAQn6F,MAAM,wBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,wBACbD,EAAQC,KAAK,mBACN7wI,GAEF0zI,EAAIv/I,IAGf,MAAMgiJ,GAAoB,CACxBC,KAAM,IACNxX,MAAO,IACPyX,GAAI,IACJC,IAAK,IACLC,MAAO,IACPhY,OAAQ,IACRiY,OAAQ,IACRC,KAAM,IACNjY,MAAO,IACPkY,IAAK,IACLC,IAAK,KACLC,MAAO,IACPtY,OAAQ,IACRiE,MAAO,IACPsU,MAAO,IACPC,IAAK,IACLC,MAAO,IACPC,KAAM,KACNC,cAAe,IACfC,KAAM,IACNvY,MAAO,IACPwY,KAAM,KACNC,OAAQ,IACRC,MAAO,IACP5Y,OAAQ,IACR6Y,IAAK,IACL5Y,KAAM,IACN6Y,UAAW,IACXC,KAAM,IACNC,OAAQ,IACRC,IAAK,IACLC,QAAS,IACTC,WAAY,IACZpV,KAAM,IACNqV,IAAK,KACLC,KAAM,KACNC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,IAAK,IACLC,qBAAsB,IACtBC,QAAS,IACTC,OAAQ,IACRC,MAAO,IACP7Z,OAAQ,IACR8Z,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,QAAS,IACTC,UAAW,IACXC,IAAK,IACLpV,IAAK,IACLqV,UAAW,IACXC,YAAa,IACbC,WAAY,IACZC,YAAa,IACbC,yBAA0B,IAC1BC,sBAAuB,IACvBC,gBAAiB,IACjBC,MAAO,IACPC,OAAQ,IACRC,UAAW,IACXC,OAAQ,IACRC,gBAAiB,IACjBC,KAAM,IACNC,UAAW,IACXC,gCAAiC,IACjCC,MAAO,IACPC,KAAM,KACNC,IAAK,IACLC,OAAQ,IACR56D,GAAI,IACJ66D,SAAU,IACVC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNlP,OAAQ,IACRmP,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLlY,MAAO,IACPmY,IAAK,KACLC,iBAAkB,IAClBC,eAAgB,IAChBC,uBAAwB,IACxBC,iBAAkB,IAClBC,iBAAkB,IAClBC,QAAS,IACTC,cAAe,IACfC,KAAM,KACNC,IAAK,IACLC,OAAQ,IACRC,SAAU,IACVC,sBAAuB,IACvBC,UAAW,IACXC,gBAAiB,IACjBC,gBAAiB,IACjBC,qBAAsB,IACtBC,cAAe,IACfC,oBAAqB,IACrBC,yBAA0B,IAC1BC,qBAAsB,IACtBC,iBAAkB,IAClBC,eAAgB,IAChBC,cAAe,IACfC,kBAAmB,IACnBC,kBAAmB,IACnBC,UAAW,IACXC,aAAc,IACdC,iBAAkB,IAClBC,UAAW,IACXC,oBAAqB,IACrBC,kBAAmB,IACnBC,eAAgB,IAChBC,kBAAmB,IACnBC,mBAAoB,IACpBC,gBAAiB,IACjBC,mBAAoB,IACpBC,QAAS,IACTC,aAAc,IACdC,UAAW,IACXC,KAAM,KACNC,OAAQ,IACRC,IAAK,IACLC,GAAI,IACJle,IAAK,IACLme,MAAO,IACP1e,OAAQ,IACR2e,OAAQ,IACRC,KAAM,IACN3e,MAAO,IACP4e,IAAK,IACLC,KAAM,IACNC,IAAK,KACLC,MAAO,IACPjf,OAAQ,IACRkf,QAAS,IACTC,MAAO,IACPC,iBAAkB,IAClBC,qBAAsB,IACtBC,MAAO,IACPC,KAAM,KACN1b,QAAS,IACT2b,MAAO,IACPC,WAAY,IACZC,YAAa,IACbC,KAAM,IACNC,KAAM,IACN7b,IAAK,IACL8b,IAAK,IACL1f,KAAM,IACN2f,OAAQ,IACRC,aAAc,IACdC,IAAK,IACLC,IAAK,KACLC,kBAAmB,IACnBC,sBAAuB,IACvBC,KAAM,KACNC,OAAQ,IACRC,WAAY,IACZC,KAAM,IACNC,KAAM,IACNC,EAAG,IACHC,GAAI,IACJ/c,MAAO,IACPgd,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,IAAK,KACLC,GAAI,IACJC,KAAM,KACNC,aAAc,IACdC,iBAAkB,IAClBC,iBAAkB,IAClBC,eAAgB,IAChBC,YAAa,IACbC,kBAAmB,IACnBC,aAAc,IACdC,KAAM,KACNC,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,aAAc,IACdC,KAAM,IACNC,eAAgB,IAChBC,KAAM,IACNC,OAAQ,IACRC,aAAc,IACdC,UAAW,IACXC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPviB,OAAQ,IACRwiB,KAAM,IACNviB,MAAO,IACPwiB,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,MAAO,IACP7iB,OAAQ,IACR8iB,GAAI,IACJC,MAAO,IACPC,WAAY,IACZC,QAAS,IACTC,IAAK,IACLC,SAAU,IACVC,aAAc,IACdC,eAAgB,IAChBC,eAAgB,IAChBC,MAAO,IACPC,KAAM,KACN3f,KAAM,IACN4f,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLzjB,KAAM,IACN0jB,MAAO,IACPC,IAAK,IACLC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNvgB,MAAO,IACPwgB,OAAQ,IACRC,IAAK,IACLC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,EAAG,IACHC,GAAI,IACJC,OAAQ,IACR/gB,OAAQ,IACRghB,KAAM,IACNC,WAAY,IACZC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,iBAAkB,IAClBC,UAAW,IACXC,aAAc,IACdC,oBAAqB,IACrBC,YAAa,IACbC,kBAAmB,IACnBC,kBAAmB,IACnBC,eAAgB,IAChBC,kBAAmB,IACnBC,UAAW,IACXC,eAAgB,IAChBC,gBAAiB,IACjBC,QAAS,IACTC,aAAc,IACdC,cAAe,IACfC,aAAc,IACdC,gBAAiB,IACjBC,kBAAmB,IACnBC,iBAAkB,IAClBC,gBAAiB,IACjBC,aAAc,IACdC,gBAAiB,IACjBC,WAAY,IACZC,cAAe,IACfC,UAAW,IACXC,eAAgB,IAChBC,iBAAkB,IAClBC,cAAe,IACfC,YAAa,IACbC,SAAU,IACVC,eAAgB,IAChBC,UAAW,IACXC,IAAK,KACLC,GAAI,IACJC,WAAY,IACZC,OAAQ,IACRC,cAAe,IACfC,mBAAoB,IACpBC,eAAgB,IAChBC,cAAe,IACfC,mBAAoB,IACpBC,eAAgB,IAChBC,KAAM,KACNC,eAAgB,IAChBC,gBAAiB,IACjBC,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,GAAI,IACJlkK,IAAK,IACLmkK,IAAK,IACLC,YAAa,IACbC,UAAW,IACXC,IAAK,KACLC,UAAW,IACXC,KAAM,KACNC,KAAM,IACN5kB,GAAI,IACJ6kB,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,oBAAqB,IACrBC,mBAAoB,IACpBC,kBAAmB,IACnBC,sBAAuB,IACvBC,qBAAsB,IACtBC,eAAgB,IAChBC,QAAS,KACTC,IAAK,KACLC,QAAS,IACTC,iBAAkB,IAClBC,KAAM,IACNC,IAAK,IACLC,aAAc,IACdC,UAAW,IACXC,qBAAsB,IACtBC,WAAY,IACZC,SAAU,IACVC,cAAe,KACfC,UAAW,IACXC,WAAY,IACZC,gBAAiB,IACjBC,oBAAqB,KACrBC,kBAAmB,KACnBC,eAAgB,IAChBC,qBAAsB,KACtBC,gBAAiB,IACjBC,gBAAiB,KACjBC,aAAc,KACdC,gBAAiB,IACjBC,mBAAoB,KACpBC,qBAAsB,IACtBC,QAAS,IACTC,aAAc,IACdC,eAAgB,IAChBC,YAAa,KACbC,kBAAmB,KACnBC,aAAc,IACdC,wBAAyB,KACzBC,kBAAmB,KACnBC,YAAa,IACbC,iBAAkB,KAClBC,sBAAuB,IACvBC,kBAAmB,IACnBC,iBAAkB,IAClBC,oBAAqB,KACrBC,sBAAuB,IACvBC,gBAAiB,KACjBC,qBAAsB,IACtBC,kBAAmB,KACnBC,uBAAwB,IACxBC,UAAW,KACXC,eAAgB,IAChBC,YAAa,IACbC,iBAAkB,KAClBC,sBAAuB,IACvBC,iBAAkB,KAClBC,YAAa,KACbC,iBAAkB,IAClBC,SAAU,IACVC,cAAe,IACfC,kBAAmB,IACnBC,cAAe,IACfC,eAAgB,IAChBC,KAAM,KACNC,MAAO,IACP7sB,OAAQ,IACR4D,GAAI,IACJ2G,MAAO,IACPuiB,MAAO,IACP5sB,OAAQ,IACR6sB,KAAM,IACN5sB,MAAO,IACP6sB,IAAK,IACLC,OAAQ,IACRC,IAAK,KACLC,MAAO,IACPltB,OAAQ,IACRmtB,MAAO,IACP7oB,MAAO,IACPT,QAAS,IACTupB,KAAM,KACNC,qBAAsB,IACtBC,eAAgB,IAChBC,GAAI,IACJC,KAAM,KACNC,MAAO,IACPntB,OAAQ,IACRotB,MAAO,IACPvtB,OAAQ,IACRwtB,OAAQ,IACRC,IAAK,IACLxtB,KAAM,IACNytB,QAAS,IACTC,UAAW,IACXC,YAAa,IACbC,gBAAiB,IACjBC,SAAU,IACVC,IAAK,IACLC,IAAK,KACLhqB,IAAK,IACLL,GAAI,IACJsqB,UAAW,IACXC,cAAe,IACfC,KAAM,IACNC,GAAI,IACJC,SAAU,IACVC,cAAe,IACfC,mBAAoB,IACpBC,cAAe,IACftoB,MAAO,IACPuoB,QAAS,IACTC,WAAY,IACZC,aAAc,IACdC,KAAM,KACN1qB,IAAK,IACL2qB,IAAK,IACLC,KAAM,IACNC,IAAK,KACLC,KAAM,IACNC,KAAM,KACNC,MAAO,IACPC,GAAI,IACJC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,GAAI,IACJC,eAAgB,IAChBC,mBAAoB,IACpBC,qBAAsB,IACtBC,IAAK,IACLpsB,IAAK,IACLqsB,kBAAmB,IACnBC,WAAY,IACZC,cAAe,IACfC,oBAAqB,IACrBC,aAAc,IACdC,mBAAoB,IACpBC,mBAAoB,IACpBC,gBAAiB,IACjBC,mBAAoB,IACpBC,WAAY,IACZC,SAAU,IACVC,cAAe,IACfC,eAAgB,IAChBC,cAAe,IACfC,iBAAkB,IAClBC,mBAAoB,IACpBC,kBAAmB,IACnBC,iBAAkB,IAClBC,cAAe,IACfC,iBAAkB,IAClBC,YAAa,IACbC,eAAgB,IAChBC,WAAY,IACZC,KAAM,IACNC,aAAc,IACdC,YAAa,IACbC,KAAM,IACNC,IAAK,IACLC,YAAa,IACbC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,GAAI,IACJ7nB,OAAQ,IACR8nB,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,IAAK,KACLC,eAAgB,IAChBC,eAAgB,IAChBC,gBAAiB,IACjBC,aAAc,IACd7uB,MAAO,IACP8uB,YAAa,IACbC,KAAM,KACNC,KAAM,IACNC,OAAQ,IACRC,mBAAoB,IACpBC,aAAc,IACdC,kBAAmB,IACnBC,eAAgB,IAChBC,oBAAqB,IACrBC,YAAa,IACbC,KAAM,KACNC,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,cAAe,IACfC,mBAAoB,IACpBC,cAAe,IACfC,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,SAAU,IACVC,cAAe,IACfC,OAAQ,IACRC,KAAM,IACN3zB,MAAO,IACP4zB,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,IAAK,KACL1wB,IAAK,IACL2wB,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,KACLC,UAAW,IACX1xB,MAAO,IACP2xB,WAAY,KACZC,UAAW,IACXC,MAAO,IACPC,WAAY,IACZC,eAAgB,IAChBC,WAAY,IACZC,KAAM,KACNC,UAAW,IACXC,KAAM,KACNC,OAAQ,IACRC,MAAO,IACPn1B,OAAQ,IACRo1B,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNv1B,MAAO,IACPw1B,IAAK,IACLC,OAAQ,IACRC,IAAK,KACLC,MAAO,IACP71B,OAAQ,IACR81B,MAAO,IACPC,SAAU,IACVC,WAAY,IACZC,aAAc,IACdC,iBAAkB,IAClBC,MAAO,IACPC,UAAW,IACXC,MAAO,IACPC,KAAM,KACNC,QAAS,IACTC,WAAY,IACZC,iBAAkB,IAClBC,YAAa,IACbC,cAAe,IACfC,MAAO,IACPC,WAAY,IACZC,QAAS,IACTC,YAAa,IACbC,eAAgB,IAChBC,gBAAiB,IACjBC,KAAM,IACNvzB,QAAS,IACTwzB,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,IAAK,IACLn3B,KAAM,IACNo3B,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,YAAa,IACbC,aAAc,IACdC,kBAAmB,IACnBC,cAAe,IACfC,cAAe,IACfC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,IAAK,KACLx1B,GAAI,IACJy1B,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNC,MAAO,IACP/4B,OAAQ,IACRg5B,MAAO,IACPC,IAAK,IACLC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNrvB,KAAM,IACNsvB,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,eAAgB,IAChBj3B,KAAM,IACNk3B,IAAK,IACLC,KAAM,IACNC,KAAM,KACNC,MAAO,IACP15B,OAAQ,IACR25B,OAAQ,IACRC,GAAI,IACJC,IAAK,KACLC,IAAK,IACLC,KAAM,IACN95B,MAAO,IACP+5B,KAAM,IACN78B,MAAO,IACP88B,IAAK,IACLC,KAAM,IACN75B,MAAO,IACP85B,GAAI,IACJC,IAAK,KACLC,MAAO,IACPt6B,OAAQ,IACR6F,QAAS,IACT00B,MAAO,IACP92B,MAAO,IACP+2B,MAAO,IACPC,MAAO,IACPC,GAAI,IACJrxB,IAAK,IACL/B,IAAK,IACLqzB,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,KAAM,IACNzzB,IAAK,IACL0zB,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,KAAM,KACNC,GAAI,IACJC,IAAK,IACLC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNr8B,MAAO,IACPs8B,KAAM,KACNtrC,IAAK,IACLwW,MAAO,IACP+0B,QAAS,IACTC,MAAO,IACP18B,OAAQ,IACR28B,IAAK,IACL18B,KAAM,IACN28B,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,SAAU,IACVC,YAAa,IACbC,UAAW,IACXC,QAAS,IACTC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,IAAK,IACLhzB,MAAO,IACPizB,OAAQ,IACRC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRx6B,KAAM,IACNy6B,KAAM,IACNC,QAAS,IACTC,IAAK,KACLC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,UAAW,IACXC,SAAU,IACVC,QAAS,IACTC,gBAAiB,IACjBC,cAAe,IACfC,SAAU,IACVC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,aAAc,IACdC,YAAa,IACbC,cAAe,IACfC,kBAAmB,IACnBC,kBAAmB,IACnBC,mBAAoB,IACpBC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPz+K,MAAO,IACP0+K,IAAK,KACLC,QAAS,KACTC,KAAM,IACNC,KAAM,KACN3oJ,IAAK,IACLlC,OAAQ,IACR8qJ,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,QAAS,IACTC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACP1mC,OAAQ,IACR2mC,KAAM,KACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,MAAO,IACPC,SAAU,IACVp+B,KAAM,IACNp9E,OAAQ,IACRy7G,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRt1C,IAAK,IACLu1C,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPjkC,OAAQ,IACRkkC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNrnC,MAAO,IACPsnC,QAAS,IACTC,IAAK,IACL5oC,KAAM,IACN6oC,UAAW,IACXC,IAAK,KACLC,KAAM,IACN5oH,MAAO,IACP6oH,UAAW,IACXrgC,IAAK,IACLsgC,IAAK,IACLC,KAAM,IACNx7B,KAAM,IACNy7B,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,SAAU,IACVC,SAAU,IACVC,WAAY,IACZC,YAAa,IACbC,YAAa,IACbC,KAAM,IACNC,SAAU,IACVC,OAAQ,IACRC,QAAS,IACTh9B,MAAO,IACPi9B,SAAU,IACVjgG,MAAO,IACPkgG,OAAQ,IACRC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRz3I,KAAM,IACN03I,OAAQ,IACRC,WAAY,IACZC,UAAW,IACX7+B,KAAM,IACN8+B,QAAS,IACTC,OAAQ,IACRC,KAAM,KACNC,OAAQ,IACRC,IAAK,IACLpjK,KAAM,IACNqjK,OAAQ,IACR5gC,MAAO,IACP6gC,MAAO,IACPC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTpgC,IAAK,IACLqgC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACTC,YAAa,IACbC,YAAa,IACbC,SAAU,IACVC,WAAY,IACZC,MAAO,IACPpsC,OAAQ,IACRqsC,eAAgB,IAChBC,gBAAiB,IACjBC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRziC,KAAM,IACN0iC,KAAM,IACNn+B,OAAQ,IACRo+B,OAAQ,IACRjjC,KAAM,IACN3X,KAAM,IACN66C,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACL9uC,GAAI,IACJ+uC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,GAAI,IACJ3sC,IAAK,IACLxsG,MAAO,IACPo5I,QAAS,IACTC,OAAQ,IACRC,IAAK,KACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,QAAS,IACTC,YAAa,IACbhhC,MAAO,IACPihC,IAAK,IACLC,QAAS,IACTC,MAAO,IACPxxK,IAAK,IACLyxK,MAAO,IACPhpC,OAAQ,IACRipC,cAAe,IACfC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,IAAK,IACLC,MAAO,IACPC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTC,UAAW,IACXC,eAAgB,IAChBC,UAAW,IACXC,eAAgB,IAChBC,gBAAiB,IACjBC,iBAAkB,IAClBC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPlsC,OAAQ,IACRmsC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNpsC,MAAO,IACPqsC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,GAAI,IACJC,MAAO,IACPC,IAAK,KACLC,GAAI,IACJC,MAAO,IACP9sC,OAAQ,IACR+sC,IAAK,IACLC,OAAQ,IACR1rG,GAAI,IACJ2rG,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACP/xL,MAAO,IACPgyL,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRjkC,KAAM,IACNkkC,IAAK,IACLnkC,KAAM,IACNokC,MAAO,IACPC,KAAM,KACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACN5qC,QAAS,IACT6qC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,MAAO,IACPC,WAAY,IACZC,YAAa,IACbz9I,OAAQ,IACR09I,OAAQ,IACRhnC,MAAO,IACPinC,QAAS,IACTC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNxrC,IAAK,IACLyrC,GAAI,IACJvuC,IAAK,IACLwuC,IAAK,IACL7uC,KAAM,IACNwK,KAAM,IACNskC,KAAM,IACN/oC,MAAO,IACPgpC,YAAa,IACbC,aAAc,IACdC,cAAe,IACfC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,IAAK,KACLC,MAAO,IACPC,MAAO,KACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPvuC,KAAM,IACNwuC,KAAM,KACN/pC,OAAQ,IACRgqC,KAAM,IACNC,MAAO,IACPC,SAAU,IACVC,MAAO,IACP/yC,OAAQ,IACRgzC,OAAQ,IACRjzC,OAAQ,IACRkzC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPrzC,OAAQ,IACRszC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRhsC,MAAO,IACPisC,MAAO,IACPC,KAAM,KACNC,GAAI,IACJC,IAAK,IACLC,OAAQ,IACRnuC,MAAO,IACPouC,OAAQ,IACR1qK,IAAK,IACL2qK,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNlqC,GAAI,IACJmqC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,OAAQ,IACRC,IAAK,KACLC,GAAI,IACJC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACP//H,EAAG,IACHk1F,GAAI,IACJ8qC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,UAAW,IACXC,WAAY,IACZC,QAAS,IACTC,OAAQ,IACRC,UAAW,KACXC,KAAM,KACN1uC,KAAM,IACN2uC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRpvC,KAAM,IACNqvC,QAAS,IACTC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPxsC,OAAQ,IACRysC,UAAW,IACXtwC,OAAQ,IACRuwC,OAAQ,IACRC,IAAK,KACLC,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRC,cAAe,IACfC,eAAgB,IAChBC,KAAM,KACNC,OAAQ,IACRC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACP91C,OAAQ,IACR+1C,GAAI,IACJC,KAAM,IACN/1C,MAAO,IACPg2C,IAAK,IACLC,KAAM,IACNC,KAAM,IACN96C,MAAO,IACP+6C,IAAK,IACLC,IAAK,KACLC,MAAO,IACPv2C,OAAQ,IACRw2C,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPzwL,MAAO,IACP0wL,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,MAAO,IACP5vD,GAAI,IACJ6vD,OAAQ,IACR5wC,MAAO,IACP6wC,SAAU,IACVC,OAAQ,IACRzwC,IAAK,IACL0wC,OAAQ,IACRC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTC,KAAM,IACNC,MAAO,IACPC,KAAM,KACN10C,KAAM,IACN20C,MAAO,IACPC,MAAO,IACP76C,OAAQ,IACR86C,KAAM,KACNjyC,KAAM,IACNkyC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLv4C,KAAM,IACNw4C,MAAO,IACPC,IAAK,IACLC,IAAK,KACLC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,MAAO,IACP71C,MAAO,IACP81C,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,KACLC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,MAAO,IACPp0C,KAAM,IACNq0C,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACR92C,OAAQ,IACR3uB,KAAM,IACN0lE,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNz+C,MAAO,IACPmJ,KAAM,IACNu1C,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,MAAO,KACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACR/zC,MAAO,IACPg0C,KAAM,IACNC,IAAK,IACLC,KAAM,IACNjyC,MAAO,IACPkyC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,IACNh1C,GAAI,IACJi1C,UAAW,IACXC,cAAe,IACfC,gBAAiB,IACjBC,cAAe,IACfC,eAAgB,IAChBC,eAAgB,IAChBC,gBAAiB,IACjBC,kBAAmB,IACnBC,oBAAqB,IACrBC,eAAgB,IAChBC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,OAAQ,IACRC,WAAY,IACZC,QAAS,IACTC,UAAW,IACXC,WAAY,IACZC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRh2C,OAAQ,IACRi2C,IAAK,KACLC,GAAI,IACJC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,GAAI,IACJC,MAAO,IACPC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,WAAY,IACZC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,cAAe,IACfC,mBAAoB,IACpBC,WAAY,IACZC,eAAgB,IAChBC,cAAe,IACfC,eAAgB,IAChBC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACT95C,OAAQ,IACR+5C,OAAQ,IACRl4C,IAAK,IACLm4C,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRr3C,IAAK,IACLs3C,MAAO,IACPz2C,OAAQ,IACR02C,KAAM,KACNC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNx3C,MAAO,IACPy3C,OAAQ,IACRC,OAAQ,IACR3+L,EAAG,IACH+lJ,GAAI,IACJ64C,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,QAAS,IACTC,UAAW,KACXC,KAAM,KACNC,MAAO,IACP54L,IAAK,IACLyyI,KAAM,IACNomD,KAAM,IACNC,KAAM,IACNC,QAAS,IACTrhM,IAAK,IACLshM,OAAQ,IACRC,WAAY,IACZC,WAAY,IACZC,SAAU,IACVv+K,OAAQ,IACRw+K,OAAQ,IACRC,IAAK,IACLp5C,MAAO,IACPq5C,cAAe,IACfC,IAAK,KACLC,IAAK,IACLC,KAAM,IACN1mD,MAAO,IACPzqI,IAAK,IACLoxL,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACP3mD,OAAQ,IACR0J,MAAO,IACPk9C,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,GAAI,IACJC,KAAM,KACNC,OAAQ,IACR1gD,GAAI,IACJ2gD,SAAU,IACVC,MAAO,IACPC,IAAK,KACLC,IAAK,KACLC,KAAM,KACNC,WAAY,IACZC,gBAAiB,IACjBC,IAAK,KACLC,IAAK,KACLC,KAAM,KACNC,YAAa,IACbC,OAAQ,IACRC,OAAQ,IACR/+C,MAAO,IACPg/C,OAAQ,IACRC,KAAM,KACNC,IAAK,IACLC,KAAM,KACNC,MAAO,KACPC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,IAAK,IACLpqD,KAAM,IACNqqD,MAAO,KACPC,OAAQ,KACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,SAAU,KACVC,KAAM,IACNC,IAAK,IACLx8C,MAAO,IACPxC,GAAI,IACJi/C,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,MAAO,KACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,KACPC,OAAQ,IACRC,QAAS,IACTC,IAAK,KACLC,IAAK,KACLC,IAAK,IACLC,KAAM,IACNC,MAAO,KACPC,UAAW,KACXC,KAAM,KACNC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPvhD,GAAI,IACJwhD,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,IAAK,KACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,WAAY,IACZC,gBAAiB,IACjBC,KAAM,IACNC,MAAO,KACPC,UAAW,KACXC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,KAAM,KACN7rL,GAAI,IACJ8+H,IAAK,IACLiK,MAAO,IACP+iD,OAAQ,KACRC,SAAU,KACVC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,KAAM,IACNC,UAAW,IACXC,OAAQ,KACRC,MAAO,KACPC,QAAS,IACTC,IAAK,IACLC,OAAQ,IACRC,KAAM,KACNC,MAAO,IACPC,QAAS,KACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,KACRC,OAAQ,KACRC,YAAa,IACbC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,UAAW,IACXC,eAAgB,IAChBC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACT/jD,KAAM,IACNgkD,MAAO,KACPC,MAAO,IACPC,QAAS,KACTC,UAAW,IACXC,WAAY,KACZC,MAAO,IACPC,QAAS,KACTC,KAAM,IACNC,MAAO,KACPC,MAAO,IACPC,QAAS,KACTC,UAAW,IACXC,WAAY,KACZC,KAAM,IACNC,MAAO,IACPhsD,OAAQ,IACRisD,KAAM,IACNC,cAAe,IACfC,gBAAiB,IACjBC,eAAgB,IAChBC,iBAAkB,IAClBlpD,GAAI,IACJzuE,IAAK,IACL43H,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,QAAS,IACTC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,QAAS,KACTC,OAAQ,IACRC,QAAS,KACTC,MAAO,KACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,GAAI,IACJC,MAAO,IACP1tD,OAAQ,IACR2tD,KAAM,IACNC,KAAM,IACN3tD,MAAO,IACP4tD,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACR5lD,MAAO,IACP6lD,MAAO,IACPC,IAAK,KACLC,KAAM,IACNC,MAAO,IACPvuD,OAAQ,IACRwuD,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTxqD,MAAO,IACPyqD,IAAK,IACLC,MAAO,IACPlrD,MAAO,IACPV,QAAS,IACT6rD,KAAM,IACNC,OAAQ,IACRC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPjoD,MAAO,IACPf,GAAI,IACJipD,MAAO,IACPC,IAAK,IACLr6L,MAAO,IACPs6L,QAAS,IACTh0D,KAAM,IACNgB,KAAM,IACNizD,OAAQ,IACRC,KAAM,IACNC,QAAS,IACTC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPxvD,OAAQ,IACRyvD,KAAM,IACNC,MAAO,IACP7vD,OAAQ,IACRkH,OAAQ,IACR4oD,SAAU,IACVC,IAAK,IACL9vD,KAAM,IACN+vD,MAAO,IACPC,IAAK,IACLh0D,KAAM,IACNi0D,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPv+L,KAAM,IACNw+L,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACR5mD,OAAQ,IACRxC,KAAM,IACNqpD,QAAS,IACTC,IAAK,KACLjtD,IAAK,IACLktD,KAAM,IACNC,OAAQ,IACRC,MAAO,IACP1tD,GAAI,IACJ2tD,UAAW,IACX/sD,IAAK,IACLgtD,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACP51D,OAAQ,IACR61D,QAAS,IACTC,QAAS,IACTC,GAAI,IACJC,SAAU,IACVC,KAAM,KACNC,KAAM,IACN/2D,MAAO,IACPg3D,GAAI,IACJC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPhoL,IAAK,IACLioL,KAAM,IACNC,WAAY,IACZC,YAAa,IACbC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTzuD,MAAO,IACP0uD,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRptD,KAAM,IACNqtD,SAAU,IACVC,SAAU,IACVC,SAAU,IACV7uI,KAAM,IACN8uI,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,KACN3vD,IAAK,IACL4vD,OAAQ,IACRC,IAAK,KACLC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,KAAM,KACNC,YAAa,IACbC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,IAAK,IACLjsD,KAAM,IACNksD,MAAO,IACPhvD,KAAM,IACNivD,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRxuD,MAAO,IACPyuD,SAAU,IACV9sD,KAAM,IACN+sD,MAAO,IACP5qM,MAAO,IACP6qM,OAAQ,IACRC,KAAM,IACNp4D,MAAO,IACPqI,KAAM,IACNgwD,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,UAAW,IACXC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACR3uD,MAAO,IACP4uD,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,QAAS,IACT9sD,MAAO,IACP+sD,OAAQ,IACRC,KAAM,IACNjyD,KAAM,IACNkyD,QAAS,IACTC,SAAU,IACVC,MAAO,IACPljL,KAAM,IACNk/G,GAAI,IACJ+I,IAAK,IACLk7D,OAAQ,IACRnvD,OAAQ,IACRovD,IAAK,KACLC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACR5zD,IAAK,IACL6zD,KAAM,IACNC,WAAY,IACZC,eAAgB,IAChBC,iBAAkB,IAClBC,eAAgB,IAChBC,gBAAiB,IACjBC,kBAAmB,IACnBC,iBAAkB,IAClBC,gBAAiB,IACjBC,gBAAiB,IACjBC,KAAM,IACNC,aAAc,IACdC,MAAO,IACPC,MAAO,IACP7uD,IAAK,IACL8uD,OAAQ,IACRC,WAAY,IACZC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACTC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACP9uD,OAAQ,IACR+uD,KAAM,KACNC,IAAK,IACLC,KAAM,IACN1vD,MAAO,IACP2vD,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,QAAS,IACT9uE,GAAI,IACJ+uE,OAAQ,IACRlwD,MAAO,IACPmwD,GAAI,IACJC,IAAK,IACLC,KAAM,IACNpxD,OAAQ,IACRqxD,MAAO,IACPC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACPC,IAAK,IACLhzD,KAAM,IACNizD,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,IAAK,IACLx/D,KAAM,IACNy/D,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,IAAK,KACLC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,cAAe,IACfC,GAAI,IACJhgE,IAAK,IACL6H,MAAO,IACPD,OAAQ,IACRq4D,OAAQ,IACRn1D,IAAK,IACLo1D,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,cAAe,IACfC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,KACPC,OAAQ,IACR5+L,IAAK,IACL6+L,KAAM,IACNC,OAAQ,IACRC,KAAM,KACNr1D,OAAQ,IACRs1D,UAAW,IACXC,KAAM,IACNC,MAAO,IACPC,OAAQ,KACRC,MAAO,IACPC,OAAQ,KACRC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,WAAY,IACZC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,WAAY,IACZC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,gBAAiB,IACjBC,YAAa,IACbC,MAAO,IACPnlK,IAAK,IACLolK,KAAM,IACNC,OAAQ,IACR/3D,KAAM,IACNg4D,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTllE,OAAQ,IACRmlE,SAAU,IACVC,UAAW,IACXC,UAAW,IACXC,WAAY,IACZC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,WAAY,IACZC,YAAa,IACbC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTx6D,IAAK,IACLy6D,KAAM,IACNv5D,IAAK,IACLzK,KAAM,IACNP,KAAM,IACNC,KAAM,IACNukE,KAAM,IACNC,OAAQ,IACRC,QAAS,IACTv5D,KAAM,IACNw5D,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,SAAU,IACVC,UAAW,IACXC,UAAW,IACXC,WAAY,IACZC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,KAAM,IACNnjE,MAAO,IACPplJ,OAAQ,IACRgqJ,IAAK,IACLw+D,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,IAAK,KACL/7D,OAAQ,IACRg8D,UAAW,IACX3/D,MAAO,IACPkB,SAAU,IACV0+D,OAAQ,IACRC,YAAa,IACbC,SAAU,IACV55D,OAAQ,IACR65D,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNliE,MAAO,IACPgI,MAAO,IACP16I,KAAM,IACNmwI,MAAO,IACP0kE,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACN79M,IAAK,IACL89M,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,QAAS,IACTC,KAAM,IACNC,OAAQ,IACR/+D,MAAO,IACPg/D,SAAU,IACVC,aAAc,IACdC,aAAc,IACdC,eAAgB,IAChBC,UAAW,IACXC,cAAe,IACfC,gBAAiB,IACjBC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,iBAAkB,IAClBC,kBAAmB,IACnB3/D,KAAM,IACN4/D,KAAM,IACNC,MAAO,IACPxkE,OAAQ,IACRqE,KAAM,IACNogE,MAAO,IACPC,OAAQ,IACRC,KAAM,IACN1kE,MAAO,IACP2kE,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,IAAK,KACLC,MAAO,IACPnlE,OAAQ,IACRolE,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,GAAI,IACJ5qE,IAAK,IACL6qE,MAAO,IACPC,KAAM,KACNC,QAAS,IACTC,YAAa,IACbC,cAAe,IACfC,eAAgB,IAChBC,MAAO,IACPC,KAAM,IACN3iE,MAAO,IACPN,QAAS,IACTkjE,WAAY,IACZC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,IAAK,IACL9mE,KAAM,IACN+mE,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,WAAY,IACZC,SAAU,IACVC,WAAY,IACZC,OAAQ,IACRC,MAAO,IACPC,UAAW,IACXC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,aAAc,KACdC,cAAe,KACfC,aAAc,KACdC,cAAe,KACfC,SAAU,IACVC,gBAAiB,IACjBC,iBAAkB,IAClBC,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRvjL,KAAM,IACNwjL,IAAK,KACLC,MAAO,IACPC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACR9lE,OAAQ,IACR+lE,IAAK,KACLC,KAAM,KACNC,GAAI,IACJC,GAAI,IACJC,OAAQ,IACRC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,IAAK,KACLC,MAAO,IACPC,MAAO,IACPhoE,GAAI,IACJioE,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPzrE,OAAQ,IACR0rE,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,GAAI,IACJpxE,IAAK,IACLqxE,IAAK,KACLC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,IAAK,IACLjsE,KAAM,IACNksE,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRxqE,KAAM,IACNyqE,IAAK,KACLC,KAAM,IACNC,QAAS,IACTC,KAAM,KACNC,KAAM,KACNvkE,IAAK,IACLD,KAAM,KAEFykE,GAAQ,GAAGrgN,eACjB,SAASsgN,GAA8Bv1N,GACrC,QAAOs1N,GAAMvyN,KAAKy5J,GAAmBx8J,IAASw8J,GAAkBx8J,GAElE,MAAMw1N,GAAqB,CACzBnzN,KAAM,qBACNixE,SAAUmiJ,IAEZ,SAASA,GAA2Bx+D,EAAS5wI,EAAK0zI,GAChD,MAAM5jJ,EAAQrT,KACd,IACIgX,EACAjK,EAFAiU,EAAO,EAGX,OAAOlQ,EACP,SAASA,EAAM4G,GAKb,OAJAy8I,EAAQn6F,MAAM,sBACdm6F,EAAQn6F,MAAM,4BACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,4BACN7tE,EAET,SAASA,EAAK7uE,GACZ,OAAc,KAAVA,GACFy8I,EAAQn6F,MAAM,mCACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,mCACN7E,IAET4E,EAAQn6F,MAAM,2BACdhjD,EAAM,GACNjK,EAAO0mJ,GACAv2J,EAAMwa,IAEf,SAAS63I,EAAQ73I,GACf,OAAc,KAAVA,GAA0B,MAAVA,GAClBy8I,EAAQn6F,MAAM,uCACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,uCACbD,EAAQn6F,MAAM,2BACdhjD,EAAM,EACNjK,EAAOymJ,GACAt2J,IAETi3J,EAAQn6F,MAAM,2BACdhjD,EAAM,EACNjK,EAAOwmJ,GACAr2J,EAAMwa,IAEf,SAASxa,EAAMwa,GACb,IAAI4P,EACJ,OAAc,KAAV5P,GAAgBsJ,GAClBsG,EAAQ6sI,EAAQC,KAAK,2BACjBrnJ,IAAS0mJ,IAAsBg/D,GAA8Bp/M,EAAM4kJ,eAAe3wI,KAGtF6sI,EAAQn6F,MAAM,4BACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,4BACbD,EAAQC,KAAK,sBACN7wI,GANE0zI,EAAIv/I,IAQX3K,EAAK2K,IAAUsJ,IAAShK,GAC1Bm9I,EAAQnwI,QAAQtM,GACTxa,GAEF+5J,EAAIv/I,IAGf,MAAMk7M,GAAa,CACjBrzN,KAAM,aACNixE,SAAUqiJ,GACV58D,UAAU,GAEZ,SAAS48D,GAAmB1+D,EAAS5wI,EAAK0zI,GACxC,MAAM5jJ,EAAQrT,KACR8yN,EAAwB,CAC5BtiJ,SAAUuiJ,EACV75D,SAAS,GAEL85D,EAAc,CAClBxiJ,SAAUyiJ,EACV/5D,SAAS,GAELpjB,EAAO91I,KAAKqwC,OAAOrwC,KAAKqwC,OAAO/xC,OAAS,GACxC40N,EAAgBp9E,GAAyB,eAAjBA,EAAK,GAAG55I,KAAwB45I,EAAK,GAAGmiB,eAAeniB,EAAK,IAAI,GAAMx3I,OAAS,EAC7G,IACIyqB,EADAoqM,EAAW,EAEf,OAAOriN,EACP,SAASA,EAAM4G,GAKb,OAJAy8I,EAAQn6F,MAAM,cACdm6F,EAAQn6F,MAAM,mBACdm6F,EAAQn6F,MAAM,2BACdjxC,EAASrR,EACF07M,EAAa17M,GAEtB,SAAS07M,EAAa17M,GACpB,OAAIA,IAAUqR,GACZorI,EAAQnwI,QAAQtM,GAChBy7M,IACOC,IAETj/D,EAAQC,KAAK,2BACN++D,EAAW,EAAIl8D,EAAIv/I,GAASw8I,GAAaC,EAASk/D,EAAU,aAAhCn/D,CAA8Cx8I,IAEnF,SAAS27M,EAAS37M,GAChB,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,GAChC47M,EAAU57M,IAEnBy8I,EAAQn6F,MAAM,uBACdm6F,EAAQn6F,MAAM,cAAe,CAC3B46F,YAAa,WAERz0I,EAAKzI,IAEd,SAASyI,EAAKzI,GACZ,OAAc,OAAVA,GAAkBm8I,GAA0Bn8I,IAC9Cy8I,EAAQC,KAAK,eACbD,EAAQC,KAAK,uBACNF,GAAaC,EAASo/D,EAAW,aAAjCr/D,CAA+Cx8I,IAE1C,KAAVA,GAAgBA,IAAUqR,EACrBkuI,EAAIv/I,IACby8I,EAAQnwI,QAAQtM,GACTyI,GAET,SAASozM,EAAU77M,GACjB,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,GAChC47M,EAAU57M,IAEnBy8I,EAAQn6F,MAAM,uBACdm6F,EAAQn6F,MAAM,cAAe,CAC3B46F,YAAa,WAER4+D,EAAK97M,IAEd,SAAS87M,EAAK97M,GACZ,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,IACvCy8I,EAAQC,KAAK,eACbD,EAAQC,KAAK,uBACNk/D,EAAU57M,IAEL,KAAVA,GAAgBA,IAAUqR,EACrBkuI,EAAIv/I,IACby8I,EAAQnwI,QAAQtM,GACT87M,GAET,SAASF,EAAU57M,GAEjB,OADAy8I,EAAQC,KAAK,mBACN/gJ,EAAM8iJ,UAAY5yI,EAAI7L,GAAS68I,EAAa78I,GAErD,SAAS68I,EAAa78I,GACpB,OAAc,OAAVA,EACKxI,EAAMwI,GAEXo8I,GAAmBp8I,GACdy8I,EAAQK,QACbw+D,EACA7+D,EAAQK,QACNs+D,EACA5jN,EACAgkN,EAAgBh/D,GACdC,EACAI,EACA,aACA2+D,EAAgB,GACd3+D,GAENrlJ,EAZKilJ,CAaLz8I,IAEJy8I,EAAQn6F,MAAM,iBACPy5J,EAAgB/7M,IAEzB,SAAS+7M,EAAgB/7M,GACvB,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,IACvCy8I,EAAQC,KAAK,iBACNG,EAAa78I,KAEtBy8I,EAAQnwI,QAAQtM,GACT+7M,GAET,SAASvkN,EAAMwI,GAEb,OADAy8I,EAAQC,KAAK,cACN7wI,EAAI7L,GAEb,SAASu7M,EAAoBS,EAAUC,EAAKC,GAC1C,MAAMC,EAAQ7zN,KACd,OAAO8zN,EACP,SAASA,EAAOp8M,GAId,OAHAg8M,EAAS15J,MAAM,cACf05J,EAAS1vM,QAAQtM,GACjBg8M,EAASt/D,KAAK,cACPxzI,EAET,SAASA,EAAUlJ,GACjB,OAAOm8M,EAAMtkH,OAAOgnD,KAAKs9D,EAAMr9D,MAAMx8I,MAAQ45M,EAAKl8M,GAASi8M,EAAIj8M,IAGnE,SAASq7M,EAAqBW,EAAUC,EAAKC,GAC3C,IAAI5yM,EAAO,EACX,OAAOkzI,GACLw/D,EACAK,EACA,aACA/zN,KAAKuvG,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,qBAAkB,EAAS,GAE1E,SAASy0I,EAAqBr8M,GAG5B,OAFAg8M,EAAS15J,MAAM,mBACf05J,EAAS15J,MAAM,2BACR49F,EAAgBlgJ,GAEzB,SAASkgJ,EAAgBlgJ,GACvB,OAAIA,IAAUqR,GACZ2qM,EAAS1vM,QAAQtM,GACjBsJ,IACO42I,GAEL52I,EAAOmyM,EACFS,EAAKl8M,IACdg8M,EAASt/D,KAAK,2BACPF,GAAaw/D,EAAUM,EAAoB,aAA3C9/D,CAAyDx8I,IAElE,SAASs8M,EAAmBt8M,GAC1B,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,IACvCg8M,EAASt/D,KAAK,mBACPu/D,EAAIj8M,IAENk8M,EAAKl8M,KAIlB,MAAMu8M,GAAe,CACnB10N,KAAM,eACNixE,SAAU0jJ,IAENC,GAAkB,CACtB3jJ,SAAU4jJ,GACVl7D,SAAS,GAEX,SAASg7D,GAAqB//D,EAAS5wI,EAAK0zI,GAC1C,MAAM5jJ,EAAQrT,KACd,OAAO8Q,EACP,SAASA,EAAM4G,GAEb,OADAy8I,EAAQn6F,MAAM,gBACPk6F,GAAaC,EAASkgE,EAAkB,aAAc,EAAtDngE,CAA6Dx8I,GAEtE,SAAS28M,EAAiB38M,GACxB,MAAMo+H,EAAOziI,EAAMg9B,OAAOh9B,EAAMg9B,OAAO/xC,OAAS,GAChD,OAAOw3I,GAAyB,eAAjBA,EAAK,GAAG55I,MAAyB45I,EAAK,GAAGmiB,eAAeniB,EAAK,IAAI,GAAMx3I,QAAU,EAAIg2N,EAAY58M,GAASu/I,EAAIv/I,GAE/H,SAAS48M,EAAY58M,GACnB,OAAc,OAAVA,EACKxI,EAAMwI,GAEXo8I,GAAmBp8I,GACdy8I,EAAQK,QAAQ2/D,GAAiBG,EAAaplN,EAA9CilJ,CAAqDz8I,IAE9Dy8I,EAAQn6F,MAAM,iBACPrqD,EAAS+H,IAElB,SAAS/H,EAAS+H,GAChB,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,IACvCy8I,EAAQC,KAAK,iBACNkgE,EAAY58M,KAErBy8I,EAAQnwI,QAAQtM,GACT/H,GAET,SAAST,EAAMwI,GAEb,OADAy8I,EAAQC,KAAK,gBACN7wI,EAAI7L,IAGf,SAAS08M,GAAwBjgE,EAAS5wI,EAAK0zI,GAC7C,MAAM5jJ,EAAQrT,KACd,OAAO8Q,EACP,SAASA,EAAM4G,GACb,OAAIrE,EAAMk8F,OAAOgnD,KAAKljJ,EAAMmjJ,MAAMx8I,MACzBi9I,EAAIv/I,GAETo8I,GAAmBp8I,IACrBy8I,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACNtjJ,GAEFojJ,GAAaC,EAASmgE,EAAa,aAAc,EAAjDpgE,CAAwDx8I,GAEjE,SAAS48M,EAAY58M,GACnB,MAAMo+H,EAAOziI,EAAMg9B,OAAOh9B,EAAMg9B,OAAO/xC,OAAS,GAChD,OAAOw3I,GAAyB,eAAjBA,EAAK,GAAG55I,MAAyB45I,EAAK,GAAGmiB,eAAeniB,EAAK,IAAI,GAAMx3I,QAAU,EAAIilB,EAAI7L,GAASo8I,GAAmBp8I,GAAS5G,EAAM4G,GAASu/I,EAAIv/I,IAGpK,MAAM7M,GAAW,CACftL,KAAM,WACNixE,SAAU+jJ,GACVj4N,QAASk4N,GACT3/D,aAEF,SAAS2/D,GAAgBnkL,GACvB,IAEI7oC,EACAwyD,EAHAy6J,EAAgBpkL,EAAO/xC,OAAS,EAChCo2N,EAAiB,EAGrB,IAAwC,eAAnCrkL,EAAOqkL,GAAgB,GAAGx4N,MAA4D,UAAnCm0C,EAAOqkL,GAAgB,GAAGx4N,QAAwD,eAAlCm0C,EAAOokL,GAAe,GAAGv4N,MAA2D,UAAlCm0C,EAAOokL,GAAe,GAAGv4N,MAAmB,CACpMsL,EAASktN,EACT,QAASltN,EAASitN,EAChB,GAA+B,iBAA3BpkL,EAAO7oC,GAAQ,GAAGtL,KAAyB,CAC7Cm0C,EAAOqkL,GAAgB,GAAGx4N,KAAO,kBACjCm0C,EAAOokL,GAAe,GAAGv4N,KAAO,kBAChCw4N,GAAkB,EAClBD,GAAiB,EACjB,OAINjtN,EAASktN,EAAiB,EAC1BD,IACA,QAASjtN,GAAUitN,OACH,IAAVz6J,EACExyD,IAAWitN,GAA4C,eAA3BpkL,EAAO7oC,GAAQ,GAAGtL,OAChD89D,EAAQxyD,GAEDA,IAAWitN,GAA4C,eAA3BpkL,EAAO7oC,GAAQ,GAAGtL,OACvDm0C,EAAO2pB,GAAO,GAAG99D,KAAO,eACpBsL,IAAWwyD,EAAQ,IACrB3pB,EAAO2pB,GAAO,GAAGjpD,IAAMs/B,EAAO7oC,EAAS,GAAG,GAAGuJ,IAC7Cs/B,EAAO5oC,OAAOuyD,EAAQ,EAAGxyD,EAASwyD,EAAQ,GAC1Cy6J,GAAiBjtN,EAASwyD,EAAQ,EAClCxyD,EAASwyD,EAAQ,GAEnBA,OAAQ,GAGZ,OAAO3pB,EAET,SAASwkH,GAASn9I,GAChB,OAAiB,KAAVA,GAAgE,oBAAhD1X,KAAKqwC,OAAOrwC,KAAKqwC,OAAO/xC,OAAS,GAAG,GAAGpC,KAEhE,SAASq4N,GAAiBpgE,EAAS5wI,EAAK0zI,GACtC,IACIj2I,EACAsG,EAFA6rM,EAAW,EAGf,OAAOriN,EACP,SAASA,EAAM4G,GAGb,OAFAy8I,EAAQn6F,MAAM,YACdm6F,EAAQn6F,MAAM,oBACP29F,EAAgBjgJ,GAEzB,SAASigJ,EAAgBjgJ,GACvB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GAChBy7M,IACOx7D,IAETxD,EAAQC,KAAK,oBACNlpI,EAAIxT,IAEb,SAASwT,EAAIxT,GACX,OAAc,OAAVA,EACKu/I,EAAIv/I,GAEC,KAAVA,GACF4P,EAAQ6sI,EAAQn6F,MAAM,oBACtBh5C,EAAO,EACA42I,EAAgBlgJ,IAEX,KAAVA,GACFy8I,EAAQn6F,MAAM,SACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,SACNlpI,GAEL4oI,GAAmBp8I,IACrBy8I,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACNlpI,IAETipI,EAAQn6F,MAAM,gBACPv6D,EAAMiY,IAEf,SAASjY,EAAMiY,GACb,OAAc,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,GAAgBo8I,GAAmBp8I,IACvEy8I,EAAQC,KAAK,gBACNlpI,EAAIxT,KAEby8I,EAAQnwI,QAAQtM,GACTjY,GAET,SAASm4J,EAAgBlgJ,GACvB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GAChBsJ,IACO42I,GAEL52I,IAASmyM,GACXh/D,EAAQC,KAAK,oBACbD,EAAQC,KAAK,YACN7wI,EAAI7L,KAEb4P,EAAMprB,KAAO,eACNuD,EAAMiY,KAGjB,SAASi9M,GAAYtkL,GACnB,MAAMukL,EAAQ,GACd,IACIl4N,EACAm4N,EACAC,EACAC,EACA70I,EACA80I,EACAC,EAPAztN,GAAU,EAQd,QAASA,EAAS6oC,EAAO/xC,OAAQ,CAC/B,MAAOkJ,KAAUotN,EACfptN,EAASotN,EAAMptN,GAGjB,GADA9K,EAAQ2zC,EAAO7oC,GACXA,GAA4B,cAAlB9K,EAAM,GAAGR,MAAuD,mBAA/Bm0C,EAAO7oC,EAAS,GAAG,GAAGtL,OACnE84N,EAAYt4N,EAAM,GAAGi6J,WAAWtmH,OAChCykL,EAAa,EACTA,EAAaE,EAAU12N,QAA4C,oBAAlC02N,EAAUF,GAAY,GAAG54N,OAC5D44N,GAAc,GAEZA,EAAaE,EAAU12N,QAA4C,YAAlC02N,EAAUF,GAAY,GAAG54N,MAC5D,QAAS44N,EAAaE,EAAU12N,OAAQ,CACtC,GAAsC,YAAlC02N,EAAUF,GAAY,GAAG54N,KAC3B,MAEoC,cAAlC84N,EAAUF,GAAY,GAAG54N,OAC3B84N,EAAUF,GAAY,GAAGI,6BAA8B,EACvDJ,KAKR,GAAiB,UAAbp4N,EAAM,GACJA,EAAM,GAAGk4J,cACX/3J,OAAO0hD,OAAOq2K,EAAOO,GAAW9kL,EAAQ7oC,IACxCA,EAASotN,EAAMptN,GACfytN,GAAO,QAEJ,GAAIv4N,EAAM,GAAG68J,WAAY,CAC9Bu7D,EAAattN,EACbqtN,OAAY,EACZ,MAAOC,IAAc,CAEnB,GADAC,EAAa1kL,EAAOykL,GACO,eAAvBC,EAAW,GAAG74N,MAAgD,oBAAvB64N,EAAW,GAAG74N,KASvD,MARsB,UAAlB64N,EAAW,KACTF,IACFxkL,EAAOwkL,GAAW,GAAG34N,KAAO,mBAE9B64N,EAAW,GAAG74N,KAAO,aACrB24N,EAAYC,GAMdD,IACFn4N,EAAM,GAAGqU,IAAMlU,OAAO0hD,OAAO,GAAIlO,EAAOwkL,GAAW,GAAG/jN,OACtDovE,EAAa7vC,EAAO5tC,MAAMoyN,EAAWrtN,GACrC04E,EAAWrmE,QAAQnd,GACnB+K,GAAO4oC,EAAQwkL,EAAWrtN,EAASqtN,EAAY,EAAG30I,KAIxD,OAAQ+0I,EAEV,SAASE,GAAW9kL,EAAQ+kL,GAC1B,MAAM9tM,EAAQ+oB,EAAO+kL,GAAY,GAC3BzuN,EAAU0pC,EAAO+kL,GAAY,GACnC,IAAIC,EAAgBD,EAAa,EACjC,MAAME,EAAiB,GACjBznH,EAAavmF,EAAMqvI,YAAchwJ,EAAQ4oG,OAAOjoF,EAAMstI,aAAattI,EAAMxW,OACzEykN,EAAc1nH,EAAWx9D,OACzBukL,EAAQ,GACRY,EAAO,GACb,IAAItuM,EACAgsH,EACA1rI,GAAU,EACVwH,EAAUsY,EACVusH,EAAS,EACT/iI,EAAQ,EACZ,MAAM2kN,EAAS,CAAC3kN,GAChB,MAAO9B,EAAS,CACd,MAAOqhC,IAASglL,GAAe,KAAOrmN,GAEtCsmN,EAAepzN,KAAKmzN,GACfrmN,EAAQ2nJ,aACXzvI,EAASvgB,EAAQowJ,YAAY/nJ,GACxBA,EAAQqU,MACX6D,EAAOhlB,KAAK,MAEVgxI,GACFrlC,EAAWmpD,WAAWhoJ,EAAQ8B,OAE5B9B,EAAQkmN,8BACVrnH,EAAW6nH,oCAAqC,GAElD7nH,EAAWpjG,MAAMyc,GACblY,EAAQkmN,8BACVrnH,EAAW6nH,wCAAqC,IAGpDxiF,EAAYlkI,EACZA,EAAUA,EAAQqU,KAEpBrU,EAAUsY,EACV,QAAS9f,EAAS+tN,EAAYj3N,OAGC,SAA3Bi3N,EAAY/tN,GAAQ,IAAgD,UAA/B+tN,EAAY/tN,EAAS,GAAG,IAAkB+tN,EAAY/tN,GAAQ,GAAGtL,OAASq5N,EAAY/tN,EAAS,GAAG,GAAGtL,MAAQq5N,EAAY/tN,GAAQ,GAAGsJ,MAAMkJ,OAASu7M,EAAY/tN,GAAQ,GAAGuJ,IAAIiJ,OAEnNlJ,EAAQtJ,EAAS,EACjBiuN,EAAOvzN,KAAK4O,GACZ9B,EAAQ2nJ,gBAAa,EACrB3nJ,EAAQ6lJ,cAAW,EACnB7lJ,EAAUA,EAAQqU,MAGtBwqF,EAAWx9D,OAAS,GAChBrhC,GACFA,EAAQ2nJ,gBAAa,EACrB3nJ,EAAQ6lJ,cAAW,GAEnB4gE,EAAO9xN,MAET6D,EAASiuN,EAAOn3N,OAChB,MAAOkJ,IAAU,CACf,MAAM/E,EAAQ8yN,EAAY9yN,MAAMgzN,EAAOjuN,GAASiuN,EAAOjuN,EAAS,IAC1DssN,EAASwB,EAAe3xN,MAC9BixN,EAAM/6M,QAAQ,CAACi6M,EAAQA,EAASrxN,EAAMnE,OAAS,IAC/CmJ,GAAO4oC,EAAQyjL,EAAQ,EAAGrxN,GAE5B+E,GAAU,EACV,QAASA,EAASotN,EAAMt2N,OACtBk3N,EAAK3hF,EAAS+gF,EAAMptN,GAAQ,IAAMqsI,EAAS+gF,EAAMptN,GAAQ,GACzDqsI,GAAU+gF,EAAMptN,GAAQ,GAAKotN,EAAMptN,GAAQ,GAAK,EAElD,OAAOguN,EAET,MAAMnmM,GAAU,CACdmhD,SAAUmlJ,GACVr5N,QAASs5N,IAELC,GAAwB,CAC5BrlJ,SAAUslJ,GACV58D,SAAS,GAEX,SAAS08D,GAAevlL,GAEtB,OADAskL,GAAYtkL,GACLA,EAET,SAASslL,GAAgBxhE,EAAS5wI,GAChC,IAAI2vH,EACJ,OAAOpiI,EACP,SAASA,EAAM4G,GAKb,OAJAy8I,EAAQn6F,MAAM,WACdk5E,EAAYihB,EAAQn6F,MAAM,eAAgB,CACxC46F,YAAa,YAERn1J,EAAMiY,GAEf,SAASjY,EAAMiY,GACb,OAAc,OAAVA,EACKq+M,EAAWr+M,GAEhBo8I,GAAmBp8I,GACdy8I,EAAQh0F,MACb01J,GACApC,EACAsC,EAHK5hE,CAILz8I,IAEJy8I,EAAQnwI,QAAQtM,GACTjY,GAET,SAASs2N,EAAWr+M,GAGlB,OAFAy8I,EAAQC,KAAK,gBACbD,EAAQC,KAAK,WACN7wI,EAAI7L,GAEb,SAAS+7M,EAAgB/7M,GAQvB,OAPAy8I,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,gBACblhB,EAAU7vH,KAAO8wI,EAAQn6F,MAAM,eAAgB,CAC7C46F,YAAa,UACbC,SAAU3hB,IAEZA,EAAYA,EAAU7vH,KACf5jB,GAGX,SAASq2N,GAAqB3hE,EAAS5wI,EAAK0zI,GAC1C,MAAM5jJ,EAAQrT,KACd,OAAOg2N,EACP,SAASA,EAAet+M,GAKtB,OAJAy8I,EAAQC,KAAK,gBACbD,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACNF,GAAaC,EAAS8hE,EAAU,cAEzC,SAASA,EAASv+M,GAChB,GAAc,OAAVA,GAAkBo8I,GAAmBp8I,GACvC,OAAOu/I,EAAIv/I,GAEb,MAAMo+H,EAAOziI,EAAMg9B,OAAOh9B,EAAMg9B,OAAO/xC,OAAS,GAChD,OAAK+U,EAAMk8F,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,iBAAmBw2D,GAAyB,eAAjBA,EAAK,GAAG55I,MAAyB45I,EAAK,GAAGmiB,eAAeniB,EAAK,IAAI,GAAMx3I,QAAU,EACtJilB,EAAI7L,GAENy8I,EAAQgC,UAAU9iJ,EAAMk8F,OAAO4jD,WAAWuD,KAAMO,EAAK1zI,EAArD4wI,CAA0Dz8I,IAGrE,SAASw+M,GAAmB/hE,EAAS5wI,EAAK0zI,EAAK/6J,EAAMi6N,EAAaC,EAAmBC,EAASC,EAAYt/M,GACxG,MAAM8wB,EAAQ9wB,GAAOxI,OAAOmuI,kBAC5B,IAAI45E,EAAU,EACd,OAAOzlN,EACP,SAASA,EAAM4G,GACb,OAAc,KAAVA,GACFy8I,EAAQn6F,MAAM99D,GACdi4J,EAAQn6F,MAAMm8J,GACdhiE,EAAQn6F,MAAMo8J,GACdjiE,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAKgiE,GACNI,GAEK,OAAV9+M,GAA4B,KAAVA,GAAgBk8I,GAAal8I,GAC1Cu/I,EAAIv/I,IAEby8I,EAAQn6F,MAAM99D,GACdi4J,EAAQn6F,MAAMq8J,GACdliE,EAAQn6F,MAAMs8J,GACdniE,EAAQn6F,MAAM,cAAe,CAC3B46F,YAAa,WAER6hE,EAAe/+M,IAExB,SAAS8+M,EAA0B9+M,GACjC,OAAc,KAAVA,GACFy8I,EAAQn6F,MAAMo8J,GACdjiE,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAKgiE,GACbjiE,EAAQC,KAAK+hE,GACbhiE,EAAQC,KAAKl4J,GACNqnB,IAET4wI,EAAQn6F,MAAMs8J,GACdniE,EAAQn6F,MAAM,cAAe,CAC3B46F,YAAa,WAER8hE,EAAoBh/M,IAE7B,SAASg/M,EAAoBh/M,GAC3B,OAAc,KAAVA,GACFy8I,EAAQC,KAAK,eACbD,EAAQC,KAAKkiE,GACNE,EAA0B9+M,IAErB,OAAVA,GAA4B,KAAVA,GAAgBo8I,GAAmBp8I,GAChDu/I,EAAIv/I,IAEby8I,EAAQnwI,QAAQtM,GACC,KAAVA,EAAei/M,EAA4BD,GAEpD,SAASC,EAA0Bj/M,GACjC,OAAc,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAClCy8I,EAAQnwI,QAAQtM,GACTg/M,GAEFA,EAAoBh/M,GAE7B,SAAS++M,EAAe/+M,GACtB,OAAc,KAAVA,IACI6+M,EAAUzuL,EACPmvH,EAAIv/I,IACby8I,EAAQnwI,QAAQtM,GACT++M,GAEK,KAAV/+M,EACG6+M,KAOLpiE,EAAQnwI,QAAQtM,GACT++M,IAPLtiE,EAAQC,KAAK,eACbD,EAAQC,KAAKkiE,GACbniE,EAAQC,KAAKiiE,GACbliE,EAAQC,KAAKl4J,GACNqnB,EAAI7L,IAKD,OAAVA,GAAkBm8I,GAA0Bn8I,GAC1C6+M,EACKt/D,EAAIv/I,IACby8I,EAAQC,KAAK,eACbD,EAAQC,KAAKkiE,GACbniE,EAAQC,KAAKiiE,GACbliE,EAAQC,KAAKl4J,GACNqnB,EAAI7L,IAETk8I,GAAal8I,GACRu/I,EAAIv/I,IACby8I,EAAQnwI,QAAQtM,GACC,KAAVA,EAAek/M,EAAuBH,GAE/C,SAASG,EAAqBl/M,GAC5B,OAAc,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAClCy8I,EAAQnwI,QAAQtM,GACT++M,GAEFA,EAAe/+M,IAG1B,SAASm/M,GAAa1iE,EAAS5wI,EAAK0zI,EAAK/6J,EAAM46N,EAAYR,GACzD,MAAMjjN,EAAQrT,KACd,IACIP,EADAuhB,EAAO,EAEX,OAAOlQ,EACP,SAASA,EAAM4G,GAMb,OALAy8I,EAAQn6F,MAAM99D,GACdi4J,EAAQn6F,MAAM88J,GACd3iE,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK0iE,GACb3iE,EAAQn6F,MAAMs8J,GACPS,EAET,SAASA,EAAQr/M,GACf,OAAc,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,IAAiBjY,GAK7C,KAAViY,IAAiBsJ,GAAQ,2BAA4B3N,EAAMk8F,OAAO4jD,YAAcnyI,EAAO,IAC9Ei2I,EAAIv/I,GAEC,KAAVA,GACFy8I,EAAQC,KAAKkiE,GACbniE,EAAQn6F,MAAM88J,GACd3iE,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK0iE,GACb3iE,EAAQC,KAAKl4J,GACNqnB,GAELuwI,GAAmBp8I,IACrBy8I,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACN2iE,IAET5iE,EAAQn6F,MAAM,cAAe,CAC3B46F,YAAa,WAERlwF,EAAMhtD,IAEf,SAASgtD,EAAMhtD,GACb,OAAc,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,GAAgBo8I,GAAmBp8I,IAAUsJ,IAAS,KAC1FmzI,EAAQC,KAAK,eACN2iE,EAAQr/M,KAEjBy8I,EAAQnwI,QAAQtM,GAChBjY,EAAQA,IAAUs0J,GAAcr8I,GACf,KAAVA,EAAes/M,EAActyJ,GAEtC,SAASsyJ,EAAYt/M,GACnB,OAAc,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAClCy8I,EAAQnwI,QAAQtM,GAChBsJ,IACO0jD,GAEFA,EAAMhtD,IAGjB,SAASu/M,GAAa9iE,EAAS5wI,EAAK0zI,EAAK/6J,EAAM46N,EAAYR,GACzD,IAAIvtM,EACJ,OAAOjY,EACP,SAASA,EAAM4G,GAMb,OALAy8I,EAAQn6F,MAAM99D,GACdi4J,EAAQn6F,MAAM88J,GACd3iE,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK0iE,GACb/tM,EAAmB,KAAVrR,EAAe,GAAKA,EACtBw/M,EAET,SAASA,EAAkBx/M,GACzB,OAAIA,IAAUqR,GACZorI,EAAQn6F,MAAM88J,GACd3iE,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK0iE,GACb3iE,EAAQC,KAAKl4J,GACNqnB,IAET4wI,EAAQn6F,MAAMs8J,GACPa,EAAaz/M,IAEtB,SAASy/M,EAAaz/M,GACpB,OAAIA,IAAUqR,GACZorI,EAAQC,KAAKkiE,GACNY,EAAkBnuM,IAEb,OAAVrR,EACKu/I,EAAIv/I,GAETo8I,GAAmBp8I,IACrBy8I,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACNF,GAAaC,EAASgjE,EAAc,gBAE7ChjE,EAAQn6F,MAAM,cAAe,CAC3B46F,YAAa,WAERxkI,EAAM1Y,IAEf,SAAS0Y,EAAM1Y,GACb,OAAIA,IAAUqR,GAAoB,OAAVrR,GAAkBo8I,GAAmBp8I,IAC3Dy8I,EAAQC,KAAK,eACN+iE,EAAaz/M,KAEtBy8I,EAAQnwI,QAAQtM,GACC,KAAVA,EAAe0/M,EAAchnM,GAEtC,SAASgnM,EAAY1/M,GACnB,OAAIA,IAAUqR,GAAoB,KAAVrR,GACtBy8I,EAAQnwI,QAAQtM,GACT0Y,GAEFA,EAAM1Y,IAGjB,SAAS2/M,GAAkBljE,EAAS5wI,GAClC,IAAI07H,EACJ,OAAOnuI,EACP,SAASA,EAAM4G,GACb,OAAIo8I,GAAmBp8I,IACrBy8I,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACbnV,GAAO,EACAnuI,GAELijJ,GAAcr8I,GACTw8I,GACLC,EACArjJ,EACAmuI,EAAO,aAAe,aAHjBiV,CAILx8I,GAEG6L,EAAI7L,IAGf,SAAS4/M,GAAoBp6N,GAC3B,OAAOA,EAAM4b,QAAQ,cAAe,KAAKA,QAAQ,SAAU,IAAIpD,cAAcD,cAE/E,MAAM8hN,GAAa,CACjBh4N,KAAM,aACNixE,SAAUgnJ,IAENC,GAAiB,CACrBjnJ,SAAUknJ,GACVx+D,SAAS,GAEX,SAASs+D,GAAmBrjE,EAAS5wI,EAAK0zI,GACxC,MAAM5jJ,EAAQrT,KACd,IAAI23N,EACJ,OAAO7mN,EACP,SAASA,EAAM4G,GAEb,OADAy8I,EAAQn6F,MAAM,cACP68J,GAAa52N,KAClBoT,EACA8gJ,EACAyjE,EACA3gE,EACA,kBACA,wBACA,wBAPK4/D,CAQLn/M,GAEJ,SAASkgN,EAAWlgN,GAIlB,OAHAigN,EAAaL,GACXjkN,EAAM4kJ,eAAe5kJ,EAAMg9B,OAAOh9B,EAAMg9B,OAAO/xC,OAAS,GAAG,IAAImE,MAAM,GAAI,IAE7D,KAAViV,GACFy8I,EAAQn6F,MAAM,oBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,oBACNijE,GACLljE,EACA+hE,GACE/hE,EACAA,EAAQK,QACNijE,GACAvjE,GAAaC,EAASjlJ,EAAO,cAC7BglJ,GAAaC,EAASjlJ,EAAO,eAE/B+nJ,EACA,wBACA,+BACA,qCACA,2BACA,iCAICA,EAAIv/I,GAEb,SAASxI,EAAMwI,GACb,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,IACvCy8I,EAAQC,KAAK,cACR/gJ,EAAMk8F,OAAO8hB,QAAQ/xC,SAASq4I,IACjCtkN,EAAMk8F,OAAO8hB,QAAQnvH,KAAKy1N,GAErBp0M,EAAI7L,IAENu/I,EAAIv/I,IAGf,SAASggN,GAAcvjE,EAAS5wI,EAAK0zI,GACnC,OAAOnmJ,EACP,SAASA,EAAM4G,GACb,OAAOm8I,GAA0Bn8I,GAAS2/M,GAAkBljE,EAAS96I,EAA3Bg+M,CAAmC3/M,GAASu/I,EAAIv/I,GAE5F,SAAS2B,EAAO3B,GACd,OAAc,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,EAC3Bu/M,GACL9iE,EACAD,GAAaC,EAASjlJ,EAAO,cAC7B+nJ,EACA,kBACA,wBACA,wBANKggE,CAOLv/M,GAEGu/I,EAAIv/I,GAEb,SAASxI,EAAMwI,GACb,OAAiB,OAAVA,GAAkBo8I,GAAmBp8I,GAAS6L,EAAI7L,GAASu/I,EAAIv/I,IAG1E,MAAMmgN,GAAkB,CACtBt4N,KAAM,kBACNixE,SAAUsnJ,IAEZ,SAASA,GAAwB3jE,EAAS5wI,EAAK0zI,GAC7C,OAAOnmJ,EACP,SAASA,EAAM4G,GAIb,OAHAy8I,EAAQn6F,MAAM,mBACdm6F,EAAQn6F,MAAM,gBACdm6F,EAAQnwI,QAAQtM,GACT6uE,EAET,SAASA,EAAK7uE,GACZ,OAAIo8I,GAAmBp8I,IACrBy8I,EAAQC,KAAK,gBACbD,EAAQC,KAAK,mBACN7wI,EAAI7L,IAENu/I,EAAIv/I,IAGf,MAAMqgN,GAAa,CACjBx4N,KAAM,aACNixE,SAAUwnJ,GACV17N,QAAS27N,IAEX,SAASA,GAAkB5nL,EAAQ1pC,GACjC,IAEIgJ,EACA9O,EAHAk1N,EAAa1lL,EAAO/xC,OAAS,EAC7Bi2J,EAAe,EAgCnB,MA7BqC,eAAjClkH,EAAOkkH,GAAc,GAAGr4J,OAC1Bq4J,GAAgB,GAEdwhE,EAAa,EAAIxhE,GAA+C,eAA/BlkH,EAAO0lL,GAAY,GAAG75N,OACzD65N,GAAc,GAEmB,uBAA/B1lL,EAAO0lL,GAAY,GAAG75N,OAAkCq4J,IAAiBwhE,EAAa,GAAKA,EAAa,EAAIxhE,GAAmD,eAAnClkH,EAAO0lL,EAAa,GAAG,GAAG75N,QACxJ65N,GAAcxhE,EAAe,IAAMwhE,EAAa,EAAI,GAElDA,EAAaxhE,IACf5kJ,EAAW,CACTzT,KAAM,iBACN4U,MAAOu/B,EAAOkkH,GAAc,GAAGzjJ,MAC/BC,IAAKs/B,EAAO0lL,GAAY,GAAGhlN,KAE7BlQ,EAAQ,CACN3E,KAAM,YACN4U,MAAOu/B,EAAOkkH,GAAc,GAAGzjJ,MAC/BC,IAAKs/B,EAAO0lL,GAAY,GAAGhlN,IAE3B6jJ,YAAa,QAEfntJ,GAAO4oC,EAAQkkH,EAAcwhE,EAAaxhE,EAAe,EAAG,CAC1D,CAAC,QAAS5kJ,EAAUhJ,GACpB,CAAC,QAAS9F,EAAO8F,GACjB,CAAC,OAAQ9F,EAAO8F,GAChB,CAAC,OAAQgJ,EAAUhJ,MAGhB0pC,EAET,SAAS2nL,GAAmB7jE,EAAS5wI,EAAK0zI,GACxC,MAAM5jJ,EAAQrT,KACd,IAAIghB,EAAO,EACX,OAAOlQ,EACP,SAASA,EAAM4G,GAGb,OAFAy8I,EAAQn6F,MAAM,cACdm6F,EAAQn6F,MAAM,sBACPk+J,EAAgBxgN,GAEzB,SAASwgN,EAAgBxgN,GACvB,OAAc,KAAVA,GAAgBsJ,IAAS,GAC3BmzI,EAAQnwI,QAAQtM,GACTwgN,GAEK,OAAVxgN,GAAkBm8I,GAA0Bn8I,IAC9Cy8I,EAAQC,KAAK,sBACN/gJ,EAAM8iJ,UAAY5yI,EAAI7L,GAASygN,EAAazgN,IAE9Cu/I,EAAIv/I,GAEb,SAASygN,EAAazgN,GACpB,OAAc,KAAVA,GACFy8I,EAAQn6F,MAAM,sBACPs+F,EAAS5gJ,IAEJ,OAAVA,GAAkBo8I,GAAmBp8I,IACvCy8I,EAAQC,KAAK,cACN7wI,EAAI7L,IAETq8I,GAAcr8I,GACTw8I,GAAaC,EAASgkE,EAAc,aAApCjkE,CAAkDx8I,IAE3Dy8I,EAAQn6F,MAAM,kBACPv6D,EAAMiY,IAEf,SAAS4gJ,EAAS5gJ,GAChB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACT4gJ,IAETnE,EAAQC,KAAK,sBACN+jE,EAAazgN,IAEtB,SAASjY,EAAMiY,GACb,OAAc,OAAVA,GAA4B,KAAVA,GAAgBm8I,GAA0Bn8I,IAC9Dy8I,EAAQC,KAAK,kBACN+jE,EAAazgN,KAEtBy8I,EAAQnwI,QAAQtM,GACTjY,IAGX,MAAM24N,GAAiB,CACrB,UACA,UACA,QACA,OACA,WACA,aACA,OACA,UACA,SACA,MACA,WACA,KACA,UACA,SACA,MACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,QACA,WACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,KACA,OACA,SACA,SACA,KACA,OACA,OACA,OACA,WACA,MACA,WACA,KACA,WACA,SACA,IACA,QACA,UACA,UACA,QACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,QACA,MAEIC,GAAe,CAAC,MAAO,SAAU,QAAS,YAC1CC,GAAW,CACf/4N,KAAM,WACNixE,SAAU+nJ,GACVC,UAAWC,GACXxiE,UAAU,GAENyiE,GAAqB,CACzBloJ,SAAUmoJ,GACVz/D,SAAS,GAEX,SAASu/D,GAAkBpoL,GACzB,IAAI7oC,EAAS6oC,EAAO/xC,OACpB,MAAOkJ,IACL,GAA0B,UAAtB6oC,EAAO7oC,GAAQ,IAA6C,aAA3B6oC,EAAO7oC,GAAQ,GAAGtL,KACrD,MAQJ,OALIsL,EAAS,GAAoC,eAA/B6oC,EAAO7oC,EAAS,GAAG,GAAGtL,OACtCm0C,EAAO7oC,GAAQ,GAAGsJ,MAAQu/B,EAAO7oC,EAAS,GAAG,GAAGsJ,MAChDu/B,EAAO7oC,EAAS,GAAG,GAAGsJ,MAAQu/B,EAAO7oC,EAAS,GAAG,GAAGsJ,MACpDu/B,EAAO5oC,OAAOD,EAAS,EAAG,IAErB6oC,EAET,SAASkoL,GAAiBpkE,EAAS5wI,EAAK0zI,GACtC,MAAM5jJ,EAAQrT,KACd,IAAIm5H,EACAwc,EACAijF,EACApxN,EACAuhB,EACJ,OAAOjY,EACP,SAASA,EAAM4G,GAIb,OAHAy8I,EAAQn6F,MAAM,YACdm6F,EAAQn6F,MAAM,gBACdm6F,EAAQnwI,QAAQtM,GACT6uE,EAET,SAASA,EAAK7uE,GACZ,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTmhN,GAEK,KAAVnhN,GACFy8I,EAAQnwI,QAAQtM,GACTohN,GAEK,KAAVphN,GACFy8I,EAAQnwI,QAAQtM,GAChByhH,EAAO,EACA9lH,EAAM8iJ,UAAY5yI,EAAMw1M,GAE7B1lE,GAAW37I,IACby8I,EAAQnwI,QAAQtM,GAChBkhN,EAAU12M,OAAO8pC,aAAat0C,GAC9Bi+H,GAAY,EACLrgE,GAEF2hF,EAAIv/I,GAEb,SAASmhN,EAAiBnhN,GACxB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GAChByhH,EAAO,EACA6/F,GAEK,KAAVthN,GACFy8I,EAAQnwI,QAAQtM,GAChByhH,EAAO,EACPy/F,EAAU,SACVpxN,EAAS,EACFyxN,GAEL5lE,GAAW37I,IACby8I,EAAQnwI,QAAQtM,GAChByhH,EAAO,EACA9lH,EAAM8iJ,UAAY5yI,EAAMw1M,GAE1B9hE,EAAIv/I,GAEb,SAASshN,EAAkBthN,GACzB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTrE,EAAM8iJ,UAAY5yI,EAAMw1M,GAE1B9hE,EAAIv/I,GAEb,SAASuhN,EAAgBvhN,GACvB,OAAIA,IAAUkhN,EAAQ5iN,WAAWxO,MAC/B2sJ,EAAQnwI,QAAQtM,GACTlQ,IAAWoxN,EAAQt6N,OAAS+U,EAAM8iJ,UAAY5yI,EAAMgyI,EAAe0jE,GAErEhiE,EAAIv/I,GAEb,SAASohN,EAAcphN,GACrB,OAAI27I,GAAW37I,IACby8I,EAAQnwI,QAAQtM,GAChBkhN,EAAU12M,OAAO8pC,aAAat0C,GACvB49D,GAEF2hF,EAAIv/I,GAEb,SAAS49D,EAAQ59D,GACf,OAAc,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,GAAgBm8I,GAA0Bn8I,GAChE,KAAVA,GAAgBi+H,GAAa0iF,GAAa/4I,SAASs5I,EAAQljN,gBAC7DyjH,EAAO,EACA9lH,EAAM8iJ,UAAY5yI,EAAI7L,GAAS69I,EAAa79I,IAEjD0gN,GAAe94I,SAASs5I,EAAQljN,gBAClCyjH,EAAO,EACO,KAAVzhH,GACFy8I,EAAQnwI,QAAQtM,GACTwhN,GAEF7lN,EAAM8iJ,UAAY5yI,EAAI7L,GAAS69I,EAAa79I,KAErDyhH,EAAO,EACA9lH,EAAM8iJ,YAAc9iJ,EAAMk8F,OAAOgnD,KAAKljJ,EAAMmjJ,MAAMx8I,MAAQi9I,EAAIv/I,GAASi+H,EAAYwjF,EAA4BzhN,GAAS0hN,EAAwB1hN,IAE3I,KAAVA,GAAgB+7I,GAAkB/7I,IACpCy8I,EAAQnwI,QAAQtM,GAChBkhN,GAAW12M,OAAO8pC,aAAat0C,GACxB49D,GAEF2hF,EAAIv/I,GAEb,SAASwhN,EAAiBxhN,GACxB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTrE,EAAM8iJ,UAAY5yI,EAAMgyI,GAE1B0B,EAAIv/I,GAEb,SAAS0hN,EAAwB1hN,GAC/B,OAAIq8I,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACT0hN,GAEFC,EAAY3hN,GAErB,SAASyhN,EAA4BzhN,GACnC,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACT2hN,GAEK,KAAV3hN,GAA0B,KAAVA,GAAgB27I,GAAW37I,IAC7Cy8I,EAAQnwI,QAAQtM,GACT4hN,GAELvlE,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACTyhN,GAEFE,EAAY3hN,GAErB,SAAS4hN,EAAsB5hN,GAC7B,OAAc,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAAgB+7I,GAAkB/7I,IACpFy8I,EAAQnwI,QAAQtM,GACT4hN,GAEFC,EAA2B7hN,GAEpC,SAAS6hN,EAA2B7hN,GAClC,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACT8hN,GAELzlE,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACT6hN,GAEFJ,EAA4BzhN,GAErC,SAAS8hN,EAA6B9hN,GACpC,OAAc,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,EAC7Du/I,EAAIv/I,GAEC,KAAVA,GAA0B,KAAVA,GAClBy8I,EAAQnwI,QAAQtM,GAChBqR,EAASrR,EACF+hN,GAEL1lE,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACT8hN,IAETzwM,EAAS,KACF2wM,EAA+BhiN,IAExC,SAAS+hN,EAA6B/hN,GACpC,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,GAChCu/I,EAAIv/I,GAETA,IAAUqR,GACZorI,EAAQnwI,QAAQtM,GACTiiN,IAETxlE,EAAQnwI,QAAQtM,GACT+hN,GAET,SAASC,EAA+BhiN,GACtC,OAAc,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAAgBm8I,GAA0Bn8I,GACvI6hN,EAA2B7hN,IAEpCy8I,EAAQnwI,QAAQtM,GACTgiN,GAET,SAASC,EAAkCjiN,GACzC,OAAc,KAAVA,GAA0B,KAAVA,GAAgBq8I,GAAcr8I,GACzCyhN,EAA4BzhN,GAE9Bu/I,EAAIv/I,GAEb,SAAS2hN,EAAY3hN,GACnB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTkiN,GAEF3iE,EAAIv/I,GAEb,SAASkiN,EAAcliN,GACrB,OAAIq8I,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACTkiN,GAEQ,OAAVliN,GAAkBo8I,GAAmBp8I,GAAS69I,EAAa79I,GAASu/I,EAAIv/I,GAEjF,SAAS69I,EAAa79I,GACpB,OAAc,KAAVA,GAAyB,IAATyhH,GAClBg7B,EAAQnwI,QAAQtM,GACTmiN,GAEK,KAAVniN,GAAyB,IAATyhH,GAClBg7B,EAAQnwI,QAAQtM,GACToiN,GAEK,KAAVpiN,GAAyB,IAATyhH,GAClBg7B,EAAQnwI,QAAQtM,GACTqiN,GAEK,KAAVriN,GAAyB,IAATyhH,GAClBg7B,EAAQnwI,QAAQtM,GACTqhN,GAEK,KAAVrhN,GAAyB,IAATyhH,GAClBg7B,EAAQnwI,QAAQtM,GACTsiN,IAELlmE,GAAmBp8I,IAAoB,IAATyhH,GAAuB,IAATA,EAOlC,OAAVzhH,GAAkBo8I,GAAmBp8I,GAChCuiN,EAAyBviN,IAElCy8I,EAAQnwI,QAAQtM,GACT69I,GAVEpB,EAAQh0F,MACbu4J,GACAqB,EACAE,EAHK9lE,CAILz8I,GAQN,SAASuiN,EAAyBviN,GAEhC,OADAy8I,EAAQC,KAAK,gBACN8lE,EAAkBxiN,GAE3B,SAASwiN,EAAkBxiN,GACzB,OAAc,OAAVA,EACK2gC,EAAK3gC,GAEVo8I,GAAmBp8I,GACdy8I,EAAQK,QACb,CACEhkF,SAAU2pJ,EACVjhE,SAAS,GAEXghE,EACA7hL,EANK87G,CAOLz8I,IAEJy8I,EAAQn6F,MAAM,gBACPu7F,EAAa79I,IAEtB,SAASyiN,EAAYzG,EAAUC,EAAKC,GAClC,OAAOE,EACP,SAASA,EAAOp8M,GAId,OAHAg8M,EAAS15J,MAAM,cACf05J,EAAS1vM,QAAQtM,GACjBg8M,EAASt/D,KAAK,cACPxzI,EAET,SAASA,EAAUlJ,GACjB,OAAOrE,EAAMk8F,OAAOgnD,KAAKljJ,EAAMmjJ,MAAMx8I,MAAQ45M,EAAKl8M,GAASi8M,EAAIj8M,IAGnE,SAASmiN,EAA0BniN,GACjC,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTqhN,GAEFxjE,EAAa79I,GAEtB,SAASoiN,EAAuBpiN,GAC9B,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GAChBkhN,EAAU,GACHwB,GAEF7kE,EAAa79I,GAEtB,SAAS0iN,EAAsB1iN,GAC7B,OAAc,KAAVA,GAAgB2gN,GAAa/4I,SAASs5I,EAAQljN,gBAChDy+I,EAAQnwI,QAAQtM,GACTqiN,GAEL1mE,GAAW37I,IAAUkhN,EAAQt6N,OAAS,GACxC61J,EAAQnwI,QAAQtM,GAChBkhN,GAAW12M,OAAO8pC,aAAat0C,GACxB0iN,GAEF7kE,EAAa79I,GAEtB,SAASsiN,EAAgCtiN,GACvC,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTqhN,GAEFxjE,EAAa79I,GAEtB,SAASqhN,EAA8BrhN,GACrC,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTqiN,GAEK,KAAVriN,GAAyB,IAATyhH,GAClBg7B,EAAQnwI,QAAQtM,GACTqhN,GAEFxjE,EAAa79I,GAEtB,SAASqiN,EAAkBriN,GACzB,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,IACvCy8I,EAAQC,KAAK,gBACN/7G,EAAK3gC,KAEdy8I,EAAQnwI,QAAQtM,GACTqiN,GAET,SAAS1hL,EAAK3gC,GAEZ,OADAy8I,EAAQC,KAAK,YACN7wI,EAAI7L,IAGf,SAASihN,GAAkBxkE,EAAS5wI,EAAK0zI,GACvC,OAAOnmJ,EACP,SAASA,EAAM4G,GAKb,OAJAy8I,EAAQC,KAAK,gBACbD,EAAQn6F,MAAM,mBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,mBACND,EAAQK,QAAQntI,GAAW9D,EAAK0zI,IAG3C,MAAMojE,GAAW,CACf96N,KAAM,WACNixE,SAAU8pJ,IAEZ,SAASA,GAAiBnmE,EAAS5wI,EAAK0zI,GACtC,MAAM5jJ,EAAQrT,KACd,IAAI+oB,EACA6vM,EACApxN,EACAksE,EACJ,OAAO5iE,EACP,SAASA,EAAM4G,GAIb,OAHAy8I,EAAQn6F,MAAM,YACdm6F,EAAQn6F,MAAM,gBACdm6F,EAAQnwI,QAAQtM,GACT6uE,EAET,SAASA,EAAK7uE,GACZ,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACT6iN,GAEK,KAAV7iN,GACFy8I,EAAQnwI,QAAQtM,GACTohN,GAEK,KAAVphN,GACFy8I,EAAQnwI,QAAQtM,GACT8iN,GAELnnE,GAAW37I,IACby8I,EAAQnwI,QAAQtM,GACT+iN,GAEFxjE,EAAIv/I,GAEb,SAAS6iN,EAAgB7iN,GACvB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTgjN,GAEK,KAAVhjN,GACFy8I,EAAQnwI,QAAQtM,GAChBkhN,EAAU,SACVpxN,EAAS,EACFmzN,GAELtnE,GAAW37I,IACby8I,EAAQnwI,QAAQtM,GACTqgI,GAEFkf,EAAIv/I,GAEb,SAASgjN,EAAYhjN,GACnB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTkjN,GAEF3jE,EAAIv/I,GAEb,SAASkjN,EAAaljN,GACpB,OAAc,OAAVA,GAA4B,KAAVA,EACbu/I,EAAIv/I,GAEC,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTmjN,GAEF/iF,EAASpgI,GAElB,SAASmjN,EAAiBnjN,GACxB,OAAc,OAAVA,GAA4B,KAAVA,EACbu/I,EAAIv/I,GAENogI,EAASpgI,GAElB,SAASogI,EAASpgI,GAChB,OAAc,OAAVA,EACKu/I,EAAIv/I,GAEC,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTojN,GAELhnE,GAAmBp8I,IACrBg8D,EAAcokE,EACPijF,EAAarjN,KAEtBy8I,EAAQnwI,QAAQtM,GACTogI,GAET,SAASgjF,EAAapjN,GACpB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACT3G,GAEF+mI,EAASpgI,GAElB,SAASijN,EAAUjjN,GACjB,OAAIA,IAAUkhN,EAAQ5iN,WAAWxO,MAC/B2sJ,EAAQnwI,QAAQtM,GACTlQ,IAAWoxN,EAAQt6N,OAAS08N,EAAQL,GAEtC1jE,EAAIv/I,GAEb,SAASsjN,EAAMtjN,GACb,OAAc,OAAVA,EACKu/I,EAAIv/I,GAEC,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTujN,GAELnnE,GAAmBp8I,IACrBg8D,EAAcsnJ,EACPD,EAAarjN,KAEtBy8I,EAAQnwI,QAAQtM,GACTsjN,GAET,SAASC,EAAWvjN,GAClB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTwjN,GAEFF,EAAMtjN,GAEf,SAASwjN,EAASxjN,GAChB,OAAc,KAAVA,EACK3G,EAAI2G,GAEC,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTwjN,GAEFF,EAAMtjN,GAEf,SAASqgI,EAAYrgI,GACnB,OAAc,OAAVA,GAA4B,KAAVA,EACb3G,EAAI2G,GAETo8I,GAAmBp8I,IACrBg8D,EAAcqkE,EACPgjF,EAAarjN,KAEtBy8I,EAAQnwI,QAAQtM,GACTqgI,GAET,SAASyiF,EAAY9iN,GACnB,OAAc,OAAVA,EACKu/I,EAAIv/I,GAEC,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACTyjN,GAELrnE,GAAmBp8I,IACrBg8D,EAAc8mJ,EACPO,EAAarjN,KAEtBy8I,EAAQnwI,QAAQtM,GACT8iN,GAET,SAASW,EAAiBzjN,GACxB,OAAiB,KAAVA,EAAe3G,EAAI2G,GAAS8iN,EAAY9iN,GAEjD,SAASohN,EAAcphN,GACrB,OAAI27I,GAAW37I,IACby8I,EAAQnwI,QAAQtM,GACT0jN,GAEFnkE,EAAIv/I,GAEb,SAAS0jN,EAAS1jN,GAChB,OAAc,KAAVA,GAAgB+7I,GAAkB/7I,IACpCy8I,EAAQnwI,QAAQtM,GACT0jN,GAEFC,EAAgB3jN,GAEzB,SAAS2jN,EAAgB3jN,GACvB,OAAIo8I,GAAmBp8I,IACrBg8D,EAAc2nJ,EACPN,EAAarjN,IAElBq8I,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACT2jN,GAEFtqN,EAAI2G,GAEb,SAAS+iN,EAAQ/iN,GACf,OAAc,KAAVA,GAAgB+7I,GAAkB/7I,IACpCy8I,EAAQnwI,QAAQtM,GACT+iN,GAEK,KAAV/iN,GAA0B,KAAVA,GAAgBm8I,GAA0Bn8I,GACrD4jN,EAAe5jN,GAEjBu/I,EAAIv/I,GAEb,SAAS4jN,EAAe5jN,GACtB,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACT3G,GAEK,KAAV2G,GAA0B,KAAVA,GAAgB27I,GAAW37I,IAC7Cy8I,EAAQnwI,QAAQtM,GACT6jN,GAELznE,GAAmBp8I,IACrBg8D,EAAc4nJ,EACPP,EAAarjN,IAElBq8I,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACT4jN,GAEFvqN,EAAI2G,GAEb,SAAS6jN,EAAqB7jN,GAC5B,OAAc,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAAgB+7I,GAAkB/7I,IACpFy8I,EAAQnwI,QAAQtM,GACT6jN,GAEFC,EAA0B9jN,GAEnC,SAAS8jN,EAA0B9jN,GACjC,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GACT+jN,GAEL3nE,GAAmBp8I,IACrBg8D,EAAc8nJ,EACPT,EAAarjN,IAElBq8I,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACT8jN,GAEFF,EAAe5jN,GAExB,SAAS+jN,EAA4B/jN,GACnC,OAAc,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,EAC7Du/I,EAAIv/I,GAEC,KAAVA,GAA0B,KAAVA,GAClBy8I,EAAQnwI,QAAQtM,GAChBqR,EAASrR,EACFgkN,GAEL5nE,GAAmBp8I,IACrBg8D,EAAc+nJ,EACPV,EAAarjN,IAElBq8I,GAAcr8I,IAChBy8I,EAAQnwI,QAAQtM,GACT+jN,IAETtnE,EAAQnwI,QAAQtM,GAChBqR,OAAS,EACF4yM,GAET,SAASD,EAA4BhkN,GACnC,OAAIA,IAAUqR,GACZorI,EAAQnwI,QAAQtM,GACTkkN,GAEK,OAAVlkN,EACKu/I,EAAIv/I,GAETo8I,GAAmBp8I,IACrBg8D,EAAcgoJ,EACPX,EAAarjN,KAEtBy8I,EAAQnwI,QAAQtM,GACTgkN,GAET,SAASE,EAAiClkN,GACxC,OAAc,KAAVA,GAA0B,KAAVA,GAAgBm8I,GAA0Bn8I,GACrD4jN,EAAe5jN,GAEjBu/I,EAAIv/I,GAEb,SAASikN,EAA8BjkN,GACrC,OAAc,OAAVA,GAA4B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,EAC7Eu/I,EAAIv/I,GAEC,KAAVA,GAAgBm8I,GAA0Bn8I,GACrC4jN,EAAe5jN,IAExBy8I,EAAQnwI,QAAQtM,GACTikN,GAET,SAASZ,EAAarjN,GAKpB,OAJAy8I,EAAQC,KAAK,gBACbD,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACNF,GACLC,EACAmgE,EACA,aACAjhN,EAAMk8F,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,qBAAkB,EAAS,GAG7E,SAASg1I,EAAY58M,GAEnB,OADAy8I,EAAQn6F,MAAM,gBACP0Z,EAAYh8D,GAErB,SAAS3G,EAAI2G,GACX,OAAc,KAAVA,GACFy8I,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,gBACbD,EAAQC,KAAK,YACN7wI,GAEF0zI,EAAIv/I,IAGf,MAAMmkN,GAAW,CACft8N,KAAM,WACNixE,SAAUsrJ,GACVtD,UAAWuD,GACX1kE,WAAY2kE,IAERC,GAAoB,CACxBzrJ,SAAU0rJ,IAENC,GAAyB,CAC7B3rJ,SAAU4rJ,IAENC,GAA8B,CAClC7rJ,SAAU8rJ,IAEZ,SAASN,GAAmB3rL,GAC1B,IACI/oB,EADA9f,GAAU,EAEd,QAASA,EAAS6oC,EAAO/xC,OACvBgpB,EAAQ+oB,EAAO7oC,GAAQ,GACJ,eAAf8f,EAAMprB,MAAwC,cAAforB,EAAMprB,MAAuC,aAAforB,EAAMprB,OACrEm0C,EAAO5oC,OAAOD,EAAS,EAAkB,eAAf8f,EAAMprB,KAAwB,EAAI,GAC5DorB,EAAMprB,KAAO,OACbsL,KAGJ,OAAO6oC,EAET,SAAS0rL,GAAkB1rL,EAAQ1pC,GACjC,IAEI2gB,EACAi/D,EACA5jB,EACA+2D,EALAlyH,EAAS6oC,EAAO/xC,OAChBssB,EAAS,EAKb,MAAOpjB,IAEL,GADA8f,EAAQ+oB,EAAO7oC,GAAQ,GACnB++E,EAAM,CACR,GAAmB,SAAfj/D,EAAMprB,MAAkC,cAAforB,EAAMprB,MAAwBorB,EAAMi1M,UAC/D,MAEwB,UAAtBlsL,EAAO7oC,GAAQ,IAAiC,cAAf8f,EAAMprB,OACzCorB,EAAMi1M,WAAY,QAEf,GAAI55J,GACT,GAA0B,UAAtBtyB,EAAO7oC,GAAQ,KAAkC,eAAf8f,EAAMprB,MAAwC,cAAforB,EAAMprB,QAA0BorB,EAAMk1M,YACzGj2I,EAAO/+E,EACY,cAAf8f,EAAMprB,MAAsB,CAC9B0uB,EAAS,EACT,WAGoB,aAAftD,EAAMprB,OACfymE,EAAQn7D,GAGZ,MAAMyrB,EAAQ,CACZ/2B,KAA+B,cAAzBm0C,EAAOk2C,GAAM,GAAGrqF,KAAuB,OAAS,QACtD4U,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOk2C,GAAM,GAAGz1E,OACzCC,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOA,EAAO/xC,OAAS,GAAG,GAAGyS,MAEhD2zD,EAAQ,CACZxoE,KAAM,QACN4U,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOk2C,GAAM,GAAGz1E,OACzCC,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOsyB,GAAO,GAAG5xD,MAEpClQ,EAAQ,CACZ3E,KAAM,YACN4U,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOk2C,EAAO37D,EAAS,GAAG,GAAG7Z,KACtDA,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOsyB,EAAQ,GAAG,GAAG7xD,QAyB9C,OAvBA4oH,EAAQ,CACN,CAAC,QAASzmG,EAAOtsB,GACjB,CAAC,QAAS+9D,EAAO/9D,IAEnB+yH,EAAQx3H,GAAKw3H,EAAOrpF,EAAO5tC,MAAM8jF,EAAO,EAAGA,EAAO37D,EAAS,IAC3D8uG,EAAQx3H,GAAKw3H,EAAO,CAAC,CAAC,QAAS74H,EAAO8F,KACtC+yH,EAAQx3H,GACNw3H,EACA29B,GACE1wJ,EAAQ4oG,OAAO4jD,WAAWgF,WAAWhB,KACrC9mH,EAAO5tC,MAAM8jF,EAAO37D,EAAS,EAAG+3C,EAAQ,GACxCh8D,IAGJ+yH,EAAQx3H,GAAKw3H,EAAO,CAClB,CAAC,OAAQ74H,EAAO8F,GAChB0pC,EAAOsyB,EAAQ,GACftyB,EAAOsyB,EAAQ,GACf,CAAC,OAAQ+B,EAAO/9D,KAElB+yH,EAAQx3H,GAAKw3H,EAAOrpF,EAAO5tC,MAAMkgE,EAAQ,IACzC+2D,EAAQx3H,GAAKw3H,EAAO,CAAC,CAAC,OAAQzmG,EAAOtsB,KACrCc,GAAO4oC,EAAQk2C,EAAMl2C,EAAO/xC,OAAQo7H,GAC7BrpF,EAET,SAASyrL,GAAiB3nE,EAAS5wI,EAAK0zI,GACtC,MAAM5jJ,EAAQrT,KACd,IACIy8N,EACAprG,EAFA7pH,EAAS6L,EAAMg9B,OAAO/xC,OAG1B,MAAOkJ,IACL,IAAsC,eAAjC6L,EAAMg9B,OAAO7oC,GAAQ,GAAGtL,MAA0D,cAAjCmX,EAAMg9B,OAAO7oC,GAAQ,GAAGtL,QAA0BmX,EAAMg9B,OAAO7oC,GAAQ,GAAGg1N,UAAW,CACzIC,EAAappN,EAAMg9B,OAAO7oC,GAAQ,GAClC,MAGJ,OAAOsJ,EACP,SAASA,EAAM4G,GACb,OAAK+kN,EAGDA,EAAWF,UACNG,EAAShlN,IAClB25G,EAAUh+G,EAAMk8F,OAAO8hB,QAAQ/xC,SAC7Bg4I,GACEjkN,EAAM4kJ,eAAe,CACnBnnJ,MAAO2rN,EAAW1rN,IAClBA,IAAKsC,EAAMmjJ,UAIjBrC,EAAQn6F,MAAM,YACdm6F,EAAQn6F,MAAM,eACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,eACbD,EAAQC,KAAK,YACNuoE,GAjBE1lE,EAAIv/I,GAmBf,SAASilN,EAAcjlN,GACrB,OAAc,KAAVA,EACKy8I,EAAQK,QACbynE,GACA14M,EACA8tG,EAAU9tG,EAAMm5M,EAHXvoE,CAILz8I,GAEU,KAAVA,EACKy8I,EAAQK,QACb2nE,GACA54M,EACA8tG,EAAU8iC,EAAQK,QAAQ6nE,GAA6B94M,EAAKm5M,GAAYA,EAHnEvoE,CAILz8I,GAEG25G,EAAU9tG,EAAI7L,GAASglN,EAAShlN,GAEzC,SAASglN,EAAShlN,GAEhB,OADA+kN,EAAWD,WAAY,EAChBvlE,EAAIv/I,IAGf,SAASwkN,GAAiB/nE,EAAS5wI,EAAK0zI,GACtC,OAAOnmJ,EACP,SAASA,EAAM4G,GAKb,OAJAy8I,EAAQn6F,MAAM,YACdm6F,EAAQn6F,MAAM,kBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,kBACNijE,GAAkBljE,EAAS5tE,GAEpC,SAASA,EAAK7uE,GACZ,OAAc,KAAVA,EACK3G,EAAI2G,GAENw+M,GACL/hE,EACAyoE,EACA3lE,EACA,sBACA,6BACA,mCACA,yBACA,4BACA,GATKi/D,CAULx+M,GAEJ,SAASklN,EAAiBllN,GACxB,OAAOm8I,GAA0Bn8I,GAAS2/M,GAAkBljE,EAAS8tB,EAA3Bo1C,CAAoC3/M,GAAS3G,EAAI2G,GAE7F,SAASuqK,EAAQvqK,GACf,OAAc,KAAVA,GAA0B,KAAVA,GAA0B,KAAVA,EAC3Bu/M,GACL9iE,EACAkjE,GAAkBljE,EAASpjJ,GAC3BkmJ,EACA,gBACA,sBACA,sBANKggE,CAOLv/M,GAEG3G,EAAI2G,GAEb,SAAS3G,EAAI2G,GACX,OAAc,KAAVA,GACFy8I,EAAQn6F,MAAM,kBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,kBACbD,EAAQC,KAAK,YACN7wI,GAEF0zI,EAAIv/I,IAGf,SAAS0kN,GAAsBjoE,EAAS5wI,EAAK0zI,GAC3C,MAAM5jJ,EAAQrT,KACd,OAAO8Q,EACP,SAASA,EAAM4G,GACb,OAAOm/M,GAAa52N,KAClBoT,EACA8gJ,EACA0oE,EACA5lE,EACA,YACA,kBACA,kBAPK4/D,CAQLn/M,GAEJ,SAASmlN,EAAWnlN,GAClB,OAAOrE,EAAMk8F,OAAO8hB,QAAQ/xC,SAC1Bg4I,GACEjkN,EAAM4kJ,eAAe5kJ,EAAMg9B,OAAOh9B,EAAMg9B,OAAO/xC,OAAS,GAAG,IAAImE,MAAM,GAAI,KAEzE8gB,EAAI7L,GAASu/I,EAAIv/I,IAGzB,SAAS4kN,GAA2BnoE,EAAS5wI,EAAK0zI,GAChD,OAAOnmJ,EACP,SAASA,EAAM4G,GAKb,OAJAy8I,EAAQn6F,MAAM,aACdm6F,EAAQn6F,MAAM,mBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,mBACN7tE,EAET,SAASA,EAAK7uE,GACZ,OAAc,KAAVA,GACFy8I,EAAQn6F,MAAM,mBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,mBACbD,EAAQC,KAAK,aACN7wI,GAEF0zI,EAAIv/I,IAGf,MAAMolN,GAAkB,CACtBv9N,KAAM,kBACNixE,SAAUusJ,GACV1lE,WAAYwkE,GAASxkE,YAEvB,SAAS0lE,GAAwB5oE,EAAS5wI,EAAK0zI,GAC7C,MAAM5jJ,EAAQrT,KACd,OAAO8Q,EACP,SAASA,EAAM4G,GAKb,OAJAy8I,EAAQn6F,MAAM,cACdm6F,EAAQn6F,MAAM,oBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,oBACN7tE,EAET,SAASA,EAAK7uE,GACZ,OAAc,KAAVA,GACFy8I,EAAQn6F,MAAM,eACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,eACbD,EAAQC,KAAK,cACNllJ,GAEF+nJ,EAAIv/I,GAEb,SAASxI,EAAMwI,GACb,OAAiB,KAAVA,GAAgB,2BAA4BrE,EAAMk8F,OAAO4jD,WAAa8D,EAAIv/I,GAAS6L,EAAI7L,IAGlG,MAAMslN,GAAiB,CACrBz9N,KAAM,iBACNixE,SAAUysJ,GACV5lE,WAAYwkE,GAASxkE,YAEvB,SAAS4lE,GAAuB9oE,EAAS5wI,EAAK0zI,GAC5C,MAAM5jJ,EAAQrT,KACd,OAAO8Q,EACP,SAASA,EAAM4G,GAMb,OALAy8I,EAAQn6F,MAAM,aACdm6F,EAAQn6F,MAAM,eACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,eACbD,EAAQC,KAAK,aACNllJ,EAET,SAASA,EAAMwI,GACb,OAAiB,KAAVA,GAAgB,2BAA4BrE,EAAMk8F,OAAO4jD,WAAa8D,EAAIv/I,GAAS6L,EAAI7L,IAGlG,MAAMwlN,GAAa,CACjB39N,KAAM,aACNixE,SAAU2sJ,IAEZ,SAASA,GAAmBhpE,EAAS5wI,GACnC,OAAOzS,EACP,SAASA,EAAM4G,GAIb,OAHAy8I,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACNF,GAAaC,EAAS5wI,EAAK,eAGtC,MAAM65M,GAAkB,CACtB79N,KAAM,gBACNixE,SAAU6sJ,IAEZ,SAASA,GAAsBlpE,EAAS5wI,EAAK0zI,GAC3C,IACIluI,EADA/H,EAAO,EAEX,OAAOlQ,EACP,SAASA,EAAM4G,GAGb,OAFAy8I,EAAQn6F,MAAM,iBACdjxC,EAASrR,EACFq/M,EAAQr/M,GAEjB,SAASq/M,EAAQr/M,GACf,OAAIA,IAAUqR,GACZorI,EAAQn6F,MAAM,yBACPs+F,EAAS5gJ,IAEdq8I,GAAcr8I,GACTw8I,GAAaC,EAAS4iE,EAAS,aAA/B7iE,CAA6Cx8I,GAElDsJ,EAAO,GAAe,OAAVtJ,IAAmBo8I,GAAmBp8I,GAC7Cu/I,EAAIv/I,IAEby8I,EAAQC,KAAK,iBACN7wI,EAAI7L,IAEb,SAAS4gJ,EAAS5gJ,GAChB,OAAIA,IAAUqR,GACZorI,EAAQnwI,QAAQtM,GAChBsJ,IACOs3I,IAETnE,EAAQC,KAAK,yBACN2iE,EAAQr/M,KAGnB,MAAM4lN,GAAS,CACb/9N,KAAM,OACNixE,SAAU+sJ,GACVhoE,aAAc,CACZ/kF,SAAUgtJ,IAEZppE,KAAMqpE,IAEFC,GAAoC,CACxCltJ,SAAUmtJ,GACVzkE,SAAS,GAEL0kE,GAAkB,CACtBptJ,SAAUqtJ,GACV3kE,SAAS,GAEX,SAASqkE,GAAkBppE,EAAS5wI,EAAK0zI,GACvC,MAAM5jJ,EAAQrT,KACR81I,EAAOziI,EAAMg9B,OAAOh9B,EAAMg9B,OAAO/xC,OAAS,GAChD,IAAIw/N,EAAchoF,GAAyB,eAAjBA,EAAK,GAAG55I,KAAwB45I,EAAK,GAAGmiB,eAAeniB,EAAK,IAAI,GAAMx3I,OAAS,EACrG0iB,EAAO,EACX,OAAOlQ,EACP,SAASA,EAAM4G,GACb,MAAMyhH,EAAO9lH,EAAMiiJ,eAAep5J,OAAmB,KAAVwb,GAA0B,KAAVA,GAA0B,KAAVA,EAAe,gBAAkB,eAC5G,GAAa,kBAATyhH,GAA4B9lH,EAAMiiJ,eAAevsI,QAAUrR,IAAUrE,EAAMiiJ,eAAevsI,OAASwqI,GAAW77I,GAAQ,CAOxH,GANKrE,EAAMiiJ,eAAep5J,OACxBmX,EAAMiiJ,eAAep5J,KAAOi9H,EAC5Bg7B,EAAQn6F,MAAMm/D,EAAM,CAClBogC,YAAY,KAGH,kBAATpgC,EAEF,OADAg7B,EAAQn6F,MAAM,kBACG,KAAVtiD,GAA0B,KAAVA,EAAey8I,EAAQh0F,MAAMi9J,GAAiBnmE,EAAK8mE,EAApC5pE,CAA8Cz8I,GAASqmN,EAASrmN,GAExG,IAAKrE,EAAM8iJ,WAAuB,KAAVz+I,EAGtB,OAFAy8I,EAAQn6F,MAAM,kBACdm6F,EAAQn6F,MAAM,iBACPgkK,EAAOtmN,GAGlB,OAAOu/I,EAAIv/I,GAEb,SAASsmN,EAAOtmN,GACd,OAAI67I,GAAW77I,MAAYsJ,EAAO,IAChCmzI,EAAQnwI,QAAQtM,GACTsmN,KAEH3qN,EAAM8iJ,WAAan1I,EAAO,KAAO3N,EAAMiiJ,eAAevsI,OAASrR,IAAUrE,EAAMiiJ,eAAevsI,OAAmB,KAAVrR,GAA0B,KAAVA,IAC3Hy8I,EAAQC,KAAK,iBACN2pE,EAASrmN,IAEXu/I,EAAIv/I,GAEb,SAASqmN,EAASrmN,GAKhB,OAJAy8I,EAAQn6F,MAAM,kBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,kBACb/gJ,EAAMiiJ,eAAevsI,OAAS1V,EAAMiiJ,eAAevsI,QAAUrR,EACtDy8I,EAAQh0F,MACb94C,GAEAhU,EAAM8iJ,UAAYc,EAAMgnE,EACxB9pE,EAAQK,QACNkpE,GACAQ,EACAC,IAIN,SAASF,EAAQvmN,GAGf,OAFArE,EAAMiiJ,eAAe8oE,kBAAmB,EACxCN,IACOI,EAAYxmN,GAErB,SAASymN,EAAYzmN,GACnB,OAAIq8I,GAAcr8I,IAChBy8I,EAAQn6F,MAAM,4BACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,4BACN8pE,GAEFjnE,EAAIv/I,GAEb,SAASwmN,EAAYxmN,GAEnB,OADArE,EAAMiiJ,eAAet0I,KAAO88M,EAAczqN,EAAM4kJ,eAAe9D,EAAQC,KAAK,mBAAmB,GAAM91J,OAC9FilB,EAAI7L,IAGf,SAAS8lN,GAAyBrpE,EAAS5wI,EAAK0zI,GAC9C,MAAM5jJ,EAAQrT,KAEd,OADAqT,EAAMiiJ,eAAeI,gBAAa,EAC3BvB,EAAQh0F,MAAM94C,GAAW42M,EAASI,GACzC,SAASJ,EAAQvmN,GAEf,OADArE,EAAMiiJ,eAAegpE,kBAAoBjrN,EAAMiiJ,eAAegpE,mBAAqBjrN,EAAMiiJ,eAAe8oE,iBACjGlqE,GACLC,EACA5wI,EACA,iBACAlQ,EAAMiiJ,eAAet0I,KAAO,EAJvBkzI,CAKLx8I,GAEJ,SAAS2mN,EAAS3mN,GAChB,OAAIrE,EAAMiiJ,eAAegpE,oBAAsBvqE,GAAcr8I,IAC3DrE,EAAMiiJ,eAAegpE,uBAAoB,EACzCjrN,EAAMiiJ,eAAe8oE,sBAAmB,EACjCG,EAAiB7mN,KAE1BrE,EAAMiiJ,eAAegpE,uBAAoB,EACzCjrN,EAAMiiJ,eAAe8oE,sBAAmB,EACjCjqE,EAAQK,QAAQopE,GAAiBr6M,EAAKg7M,EAAtCpqE,CAAwDz8I,IAEjE,SAAS6mN,EAAiB7mN,GAGxB,OAFArE,EAAMiiJ,eAAeI,YAAa,EAClCriJ,EAAM8iJ,eAAY,EACXjC,GACLC,EACAA,EAAQK,QAAQ8oE,GAAQ/5M,EAAK0zI,GAC7B,aACA5jJ,EAAMk8F,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,qBAAkB,EAAS,EAJpE40E,CAKLx8I,IAGN,SAASmmN,GAAe1pE,EAAS5wI,EAAK0zI,GACpC,MAAM5jJ,EAAQrT,KACd,OAAOk0J,GACLC,EACAmgE,EACA,iBACAjhN,EAAMiiJ,eAAet0I,KAAO,GAE9B,SAASszM,EAAY58M,GACnB,MAAMo+H,EAAOziI,EAAMg9B,OAAOh9B,EAAMg9B,OAAO/xC,OAAS,GAChD,OAAOw3I,GAAyB,mBAAjBA,EAAK,GAAG55I,MAA6B45I,EAAK,GAAGmiB,eAAeniB,EAAK,IAAI,GAAMx3I,SAAW+U,EAAMiiJ,eAAet0I,KAAOuC,EAAI7L,GAASu/I,EAAIv/I,IAGtJ,SAAS+lN,GAAgBtpE,GACvBA,EAAQC,KAAKp0J,KAAKs1J,eAAep5J,MAEnC,SAASyhO,GAAiCxpE,EAAS5wI,EAAK0zI,GACtD,MAAM5jJ,EAAQrT,KACd,OAAOk0J,GACLC,EACAmgE,EACA,2BACAjhN,EAAMk8F,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,qBAAkB,EAAS,GAE3E,SAASg1I,EAAY58M,GACnB,MAAMo+H,EAAOziI,EAAMg9B,OAAOh9B,EAAMg9B,OAAO/xC,OAAS,GAChD,OAAQy1J,GAAcr8I,IAAUo+H,GAAyB,6BAAjBA,EAAK,GAAG55I,KAAsCqnB,EAAI7L,GAASu/I,EAAIv/I,IAG3G,MAAM8mN,GAAkB,CACtBj/N,KAAM,kBACNixE,SAAUiuJ,GACVjG,UAAWkG,IAEb,SAASA,GAAyBruL,EAAQ1pC,GACxC,IACIgJ,EACA9O,EACAioF,EAHAthF,EAAS6oC,EAAO/xC,OAIpB,MAAOkJ,IACL,GAA0B,UAAtB6oC,EAAO7oC,GAAQ,GAAgB,CACjC,GAA+B,YAA3B6oC,EAAO7oC,GAAQ,GAAGtL,KAAoB,CACxCyT,EAAWnI,EACX,MAE6B,cAA3B6oC,EAAO7oC,GAAQ,GAAGtL,OACpB2E,EAAQ2G,OAGqB,YAA3B6oC,EAAO7oC,GAAQ,GAAGtL,MACpBm0C,EAAO5oC,OAAOD,EAAQ,GAEnBshF,GAA0C,eAA3Bz4C,EAAO7oC,GAAQ,GAAGtL,OACpC4sF,EAActhF,GAIpB,MAAMm3N,EAAW,CACfziO,KAAM,gBACN4U,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOxvC,GAAO,GAAGiQ,OAC1CC,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOA,EAAO/xC,OAAS,GAAG,GAAGyS,MAWtD,OATAs/B,EAAOxvC,GAAO,GAAG3E,KAAO,oBACpB4sF,GACFz4C,EAAO5oC,OAAO5G,EAAO,EAAG,CAAC,QAAS89N,EAAUh4N,IAC5C0pC,EAAO5oC,OAAOqhF,EAAc,EAAG,EAAG,CAAC,OAAQz4C,EAAO1gC,GAAU,GAAIhJ,IAChE0pC,EAAO1gC,GAAU,GAAGoB,IAAMlU,OAAO0hD,OAAO,GAAIlO,EAAOy4C,GAAa,GAAG/3E,MAEnEs/B,EAAO1gC,GAAU,GAAKgvN,EAExBtuL,EAAOnuC,KAAK,CAAC,OAAQy8N,EAAUh4N,IACxB0pC,EAET,SAASouL,GAAwBtqE,EAAS5wI,EAAK0zI,GAC7C,MAAM5jJ,EAAQrT,KACd,IACI+oB,EACA61M,EAFAp3N,EAAS6L,EAAMg9B,OAAO/xC,OAG1B,MAAOkJ,IACL,GAAqC,eAAjC6L,EAAMg9B,OAAO7oC,GAAQ,GAAGtL,MAA0D,eAAjCmX,EAAMg9B,OAAO7oC,GAAQ,GAAGtL,MAA0D,YAAjCmX,EAAMg9B,OAAO7oC,GAAQ,GAAGtL,KAAoB,CAChJ0iO,EAA8C,cAAjCvrN,EAAMg9B,OAAO7oC,GAAQ,GAAGtL,KACrC,MAGJ,OAAO4U,EACP,SAASA,EAAM4G,GACb,OAAKrE,EAAMk8F,OAAOgnD,KAAKljJ,EAAMmjJ,MAAMx8I,QAAU3G,EAAM8iJ,YAAayoE,EAMzD3nE,EAAIv/I,IALTy8I,EAAQn6F,MAAM,qBACdm6F,EAAQn6F,MAAM,6BACdjxC,EAASrR,EACFkgJ,EAAgBlgJ,IAI3B,SAASkgJ,EAAgBlgJ,GACvB,OAAIA,IAAUqR,GACZorI,EAAQnwI,QAAQtM,GACTkgJ,IAETzD,EAAQC,KAAK,6BACNF,GAAaC,EAAS6/D,EAAoB,aAA1C9/D,CAAwDx8I,IAEjE,SAASs8M,EAAmBt8M,GAC1B,OAAc,OAAVA,GAAkBo8I,GAAmBp8I,IACvCy8I,EAAQC,KAAK,qBACN7wI,EAAI7L,IAENu/I,EAAIv/I,IAGf,MAAMmnN,GAAS,CACbruJ,SAAUsuJ,IAEZ,SAASA,GAAe3qE,GACtB,MAAM9gJ,EAAQrT,KACR++N,EAAU5qE,EAAQK,QAEtBntI,GACA23M,EAEA7qE,EAAQK,QACNx0J,KAAKuvG,OAAO4jD,WAAW8rE,YACvBC,EACAhrE,GACEC,EACAA,EAAQK,QACNx0J,KAAKuvG,OAAO4jD,WAAWuD,KACvBwoE,EACA/qE,EAAQK,QAAQnlI,GAAS6vM,IAE3B,gBAIN,OAAOH,EACP,SAASC,EAActnN,GACrB,GAAc,OAAVA,EAQJ,OAJAy8I,EAAQn6F,MAAM,mBACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,mBACb/gJ,EAAM2iJ,sBAAmB,EAClB+oE,EAPL5qE,EAAQnwI,QAAQtM,GASpB,SAASwnN,EAAexnN,GACtB,GAAc,OAAVA,EAQJ,OAJAy8I,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQtM,GAChBy8I,EAAQC,KAAK,cACb/gJ,EAAM2iJ,sBAAmB,EAClB+oE,EAPL5qE,EAAQnwI,QAAQtM,IAUtB,MAAMynN,GAAW,CACf9nE,WAAY+nE,MAERC,GAAWC,GAAkB,UAC7BC,GAASD,GAAkB,QACjC,SAASA,GAAkB1hK,GACzB,MAAO,CACL4S,SAAUgvJ,EACVnoE,WAAY+nE,GACA,SAAVxhK,EAAmB6hK,QAAyB,IAGhD,SAASD,EAAerrE,GACtB,MAAM9gJ,EAAQrT,KACRs3J,EAAct3J,KAAKuvG,OAAO4jD,WAAWv1F,GACrC/8D,EAAQszJ,EAAQK,QAAQ8C,EAAaxmJ,EAAO4uN,GAClD,OAAO5uN,EACP,SAASA,EAAM4G,GACb,OAAOq/M,EAAQr/M,GAAS7W,EAAM6W,GAASgoN,EAAQhoN,GAEjD,SAASgoN,EAAQhoN,GACf,GAAc,OAAVA,EAMJ,OAFAy8I,EAAQn6F,MAAM,QACdm6F,EAAQnwI,QAAQtM,GACTjY,EALL00J,EAAQnwI,QAAQtM,GAOpB,SAASjY,EAAMiY,GACb,OAAIq/M,EAAQr/M,IACVy8I,EAAQC,KAAK,QACNvzJ,EAAM6W,KAEfy8I,EAAQnwI,QAAQtM,GACTjY,GAET,SAASs3N,EAAQr/M,GACf,GAAc,OAAVA,EACF,OAAO,EAET,MAAM6b,EAAQ+jI,EAAY5/I,GAC1B,IAAIlQ,GAAU,EACd,GAAI+rB,EACF,QAAS/rB,EAAS+rB,EAAMj1B,OAAQ,CAC9B,MAAM+lF,EAAO9wD,EAAM/rB,GACnB,IAAK68E,EAAKwwE,UAAYxwE,EAAKwwE,SAAS50J,KAAKoT,EAAOA,EAAMwhJ,UACpD,OAAO,EAIb,OAAO,IAIb,SAASuqE,GAAeO,GACtB,OAAOC,EACP,SAASA,EAAevvL,EAAQ1pC,GAC9B,IACIqzD,EADAxyD,GAAU,EAEd,QAASA,GAAU6oC,EAAO/xC,YACV,IAAV07D,EACE3pB,EAAO7oC,IAAsC,SAA3B6oC,EAAO7oC,GAAQ,GAAGtL,OACtC89D,EAAQxyD,EACRA,KAEQ6oC,EAAO7oC,IAAsC,SAA3B6oC,EAAO7oC,GAAQ,GAAGtL,OAC1CsL,IAAWwyD,EAAQ,IACrB3pB,EAAO2pB,GAAO,GAAGjpD,IAAMs/B,EAAO7oC,EAAS,GAAG,GAAGuJ,IAC7Cs/B,EAAO5oC,OAAOuyD,EAAQ,EAAGxyD,EAASwyD,EAAQ,GAC1CxyD,EAASwyD,EAAQ,GAEnBA,OAAQ,GAGZ,OAAO2lK,EAAgBA,EAActvL,EAAQ1pC,GAAW0pC,GAG5D,SAASovL,GAAuBpvL,EAAQ1pC,GACtC,IAAIyuN,EAAa,EACjB,QAASA,GAAc/kL,EAAO/xC,OAC5B,IAAK82N,IAAe/kL,EAAO/xC,QAAyC,eAA/B+xC,EAAO+kL,GAAY,GAAGl5N,OAA6D,SAAnCm0C,EAAO+kL,EAAa,GAAG,GAAGl5N,KAAiB,CAC9H,MAAMuD,EAAQ4wC,EAAO+kL,EAAa,GAAG,GAC/ByK,EAASl5N,EAAQowJ,YAAYt3J,GACnC,IAGIqgO,EAHAt4N,EAASq4N,EAAOvhO,OAChByhO,GAAe,EACf/+M,EAAO,EAEX,MAAOxZ,IAAU,CACf,MAAMyZ,EAAQ4+M,EAAOr4N,GACrB,GAAqB,kBAAVyZ,EAAoB,CAC7B8+M,EAAc9+M,EAAM3iB,OACpB,MAA6C,KAAtC2iB,EAAMjL,WAAW+pN,EAAc,GACpC/+M,IACA++M,IAEF,GAAIA,EACF,MACFA,GAAe,OACV,IAAe,IAAX9+M,EACT6+M,GAAO,EACP9+M,SACK,IAAe,IAAXC,EAEN,CACHzZ,IACA,OAGJ,GAAIwZ,EAAM,CACR,MAAMsG,EAAQ,CACZprB,KAAMk5N,IAAe/kL,EAAO/xC,QAAUwhO,GAAQ9+M,EAAO,EAAI,aAAe,oBACxElQ,MAAO,CACLkJ,KAAMva,EAAMsR,IAAIiJ,KAChB6J,OAAQpkB,EAAMsR,IAAI8S,OAAS7C,EAC3B4J,OAAQnrB,EAAMsR,IAAI6Z,OAAS5J,EAC3Bg/M,OAAQvgO,EAAMqR,MAAMkvN,OAASx4N,EAC7B+wJ,aAAc/wJ,EAASu4N,EAActgO,EAAMqR,MAAMynJ,aAAewnE,GAElEhvN,IAAKlU,OAAO0hD,OAAO,GAAI9+C,EAAMsR,MAE/BtR,EAAMsR,IAAMlU,OAAO0hD,OAAO,GAAIj3B,EAAMxW,OAChCrR,EAAMqR,MAAM8Z,SAAWnrB,EAAMsR,IAAI6Z,OACnC/tB,OAAO0hD,OAAO9+C,EAAO6nB,IAErB+oB,EAAO5oC,OACL2tN,EACA,EACA,CAAC,QAAS9tM,EAAO3gB,GACjB,CAAC,OAAQ2gB,EAAO3gB,IAElByuN,GAAc,GAGlBA,IAGJ,OAAO/kL,EAET,SAAS4vL,GAAgBhrJ,EAASirJ,EAAYx/N,GAC5C,IAAI2vH,EAASxzH,OAAO0hD,OAClB79C,EAAO7D,OAAO0hD,OAAO,GAAI79C,GAAQ,CAC/BsZ,KAAM,EACN6J,OAAQ,EACR+G,OAAQ,GAEV,CACEo1M,OAAQ,EACRznE,cAAe,IAGnB,MAAM4nE,EAAc,GACdC,EAAuB,GAC7B,IAAIP,EAAS,GACTj3I,EAAQ,GACZ,MAAMurE,EAAU,CACdnwI,UACAg2C,QACAo6F,KAAM/jF,EACNmkF,QAAS6rE,EAAiBC,GAC1BngK,MAAOkgK,EAAiBE,GACxBpqE,UAAWkqE,EAAiBE,EAAmB,CAC7CpqE,WAAW,KAGTxvJ,EAAU,CACdkuJ,SAAU,KACVjqJ,KAAM,KACN0qJ,eAAgB,GAChBjlH,OAAQ,GACRk/D,OAAQt6B,EACR8hF,cACAkB,iBACAzB,IAAK7hG,EACLqiG,aACAvsJ,MAAO+1N,GAET,IAAIzgN,EAAQmgN,EAAW1vJ,SAASvwE,KAAK0G,EAASwtJ,GAI9C,OAHI+rE,EAAW7oE,YACb+oE,EAAqBl+N,KAAKg+N,GAErBv5N,EACP,SAAS65N,EAAO/9N,GAGd,OAFAo9N,EAAS39N,GAAK29N,EAAQp9N,GACtBg+N,IACkC,OAA9BZ,EAAOA,EAAOvhO,OAAS,GAClB,IAEToiO,EAAUR,EAAY,GACtBv5N,EAAQ0pC,OAASgnH,GAAW+oE,EAAsBz5N,EAAQ0pC,OAAQ1pC,GAC3DA,EAAQ0pC,QAEjB,SAAS4nH,EAAe3wI,EAAOq5M,GAC7B,OAAOC,GAAgB7pE,EAAYzvI,GAAQq5M,GAE7C,SAAS5pE,EAAYzvI,GACnB,OAAOu5M,GAAYhB,EAAQv4M,GAE7B,SAASqtC,IACP,OAAO93D,OAAO0hD,OAAO,GAAI8xE,GAE3B,SAAS2mC,EAAW95J,GAClBijO,EAAYjjO,EAAM8c,MAAQ9c,EAAM2mB,OAChCi9M,IAEF,SAASL,IACP,IAAIM,EACJ,MAAO1wG,EAAO2vG,OAASH,EAAOvhO,OAAQ,CACpC,MAAM2iB,EAAQ4+M,EAAOxvG,EAAO2vG,QAC5B,GAAqB,kBAAV/+M,EAAoB,CAC7B8/M,EAAa1wG,EAAO2vG,OAChB3vG,EAAOkoC,aAAe,IACxBloC,EAAOkoC,aAAe,GAExB,MAAOloC,EAAO2vG,SAAWe,GAAc1wG,EAAOkoC,aAAet3I,EAAM3iB,OACjE0iO,EAAG//M,EAAMjL,WAAWq6G,EAAOkoC,oBAG7ByoE,EAAG//M,IAIT,SAAS+/M,EAAGtpN,GACVqI,EAAQA,EAAMrI,GAEhB,SAASsM,EAAQtM,GACXo8I,GAAmBp8I,IACrB24G,EAAOr2G,OACPq2G,EAAOxsG,OAAS,EAChBwsG,EAAOzlG,SAAqB,IAAXlT,EAAe,EAAI,EACpCopN,MACoB,IAAXppN,IACT24G,EAAOxsG,SACPwsG,EAAOzlG,UAELylG,EAAOkoC,aAAe,EACxBloC,EAAO2vG,UAEP3vG,EAAOkoC,eACHloC,EAAOkoC,eAAiBsnE,EAAOxvG,EAAO2vG,QAAQ1hO,SAChD+xH,EAAOkoC,cAAgB,EACvBloC,EAAO2vG,WAGXr5N,EAAQkuJ,SAAWn9I,EAErB,SAASsiD,EAAM99D,EAAM+kO,GACnB,MAAM35M,EAAQ25M,GAAU,GAKxB,OAJA35M,EAAMprB,KAAOA,EACborB,EAAMxW,MAAQ6jD,IACdhuD,EAAQ0pC,OAAOnuC,KAAK,CAAC,QAASolB,EAAO3gB,IACrCiiF,EAAM1mF,KAAKolB,GACJA,EAET,SAAS+oD,EAAMn0E,GACb,MAAMorB,EAAQshE,EAAMjlF,MAGpB,OAFA2jB,EAAMvW,IAAM4jD,IACZhuD,EAAQ0pC,OAAOnuC,KAAK,CAAC,OAAQolB,EAAO3gB,IAC7B2gB,EAET,SAASg5M,EAAsBY,EAAW/gN,GACxCugN,EAAUQ,EAAW/gN,EAAKzf,MAE5B,SAAS6/N,EAAkB72I,EAAGvpE,GAC5BA,EAAKghN,UAEP,SAASd,EAAiBe,EAAUH,GAClC,OAAOhuE,EACP,SAASA,EAAKqE,EAAa5jF,EAAa2tJ,GACtC,IAAIC,EACAC,EACAvrE,EACA71I,EACJ,OAAO1f,MAAMk/E,QAAQ23E,GAEnBkqE,EAAuBlqE,GACrB,aAAcA,EAAckqE,EAAuB,CAAClqE,IAAgBmqE,EAAsBnqE,GAC9F,SAASmqE,EAAsB5sN,GAC7B,OAAO/D,EACP,SAASA,EAAM4G,GACb,MAAMgqN,EAAgB,OAAVhqN,GAAkB7C,EAAK6C,GAC7B0oE,EAAiB,OAAV1oE,GAAkB7C,EAAKsiJ,KAC9B5jI,EAAQ,IAGT9yB,MAAMk/E,QAAQ+hJ,GAAOA,EAAMA,EAAM,CAACA,GAAO,MACzCjhO,MAAMk/E,QAAQS,GAAQA,EAAOA,EAAO,CAACA,GAAQ,IAElD,OAAOohJ,EAAuBjuM,EAAvBiuM,CAA8B9pN,IAGzC,SAAS8pN,EAAuBjuM,GAG9B,OAFA+tM,EAAmB/tM,EACnBguM,EAAiB,EACI,IAAjBhuM,EAAMj1B,OACD+iO,EAEFM,EAAgBpuM,EAAMguM,IAE/B,SAASI,EAAgBT,GACvB,OAAOpwN,EACP,SAASA,EAAM4G,GAMb,OALAyI,EAAOyhN,IACP5rE,EAAmBkrE,EACdA,EAAUhoE,UACbvyJ,EAAQqvJ,iBAAmBkrE,GAEzBA,EAAU3hO,MAAQoH,EAAQ4oG,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS4hJ,EAAU3hO,MACvE03J,IAEFiqE,EAAU1wJ,SAASvwE,KAIxBghO,EAASpkO,OAAO0hD,OAAO1hD,OAAOY,OAAOkJ,GAAUs6N,GAAUt6N,EACzDwtJ,EACA5wI,EACA0zI,EAPKiqE,CAQLxpN,IAGN,SAAS6L,EAAI7L,GAEX,OADA0pN,EAASprE,EAAkB71I,GACpBuzD,EAET,SAASujF,EAAIv/I,GAEX,OADAyI,EAAKghN,YACCI,EAAiBD,EAAiBhjO,OAC/BqjO,EAAgBL,EAAiBC,IAEnCF,IAIb,SAASX,EAAUQ,EAAWW,GACxBX,EAAU7pE,aAAe+oE,EAAqB9gJ,SAAS4hJ,IACzDd,EAAqBl+N,KAAKg/N,GAExBA,EAAU5kO,SACZmL,GACEd,EAAQ0pC,OACRwxL,EACAl7N,EAAQ0pC,OAAO/xC,OAASujO,EACxBX,EAAU5kO,QAAQqK,EAAQ0pC,OAAO5tC,MAAMo/N,GAAQl7N,IAG/Cu6N,EAAU1I,YACZ7xN,EAAQ0pC,OAAS6wL,EAAU1I,UAAU7xN,EAAQ0pC,OAAQ1pC,IAGzD,SAASi7N,IACP,MAAME,EAAantK,IACbotK,EAAgBp7N,EAAQkuJ,SACxBmtE,EAAwBr7N,EAAQqvJ,iBAChCisE,EAAmBt7N,EAAQ0pC,OAAO/xC,OAClC4jO,EAAazhO,MAAMC,KAAKkoF,GAC9B,MAAO,CACLu4I,UACAzgO,KAAMuhO,GAER,SAASd,IACP9wG,EAASyxG,EACTn7N,EAAQkuJ,SAAWktE,EACnBp7N,EAAQqvJ,iBAAmBgsE,EAC3Br7N,EAAQ0pC,OAAO/xC,OAAS2jO,EACxBr5I,EAAQs5I,EACRpB,KAGJ,SAASA,IACHzwG,EAAOr2G,QAAQmmN,GAAe9vG,EAAOxsG,OAAS,IAChDwsG,EAAOxsG,OAASs8M,EAAY9vG,EAAOr2G,MACnCq2G,EAAOzlG,QAAUu1M,EAAY9vG,EAAOr2G,MAAQ,IAIlD,SAAS6mN,GAAYhB,EAAQv4M,GAC3B,MAAM/U,EAAa+U,EAAMxW,MAAMkvN,OACzBmC,EAAmB76M,EAAMxW,MAAMynJ,aAC/B6pE,EAAW96M,EAAMvW,IAAIivN,OACrBqC,EAAiB/6M,EAAMvW,IAAIwnJ,aACjC,IAAI7lI,EAYJ,OAXIngB,IAAe6vN,EACjB1vM,EAAO,CAACmtM,EAAOttN,GAAY9P,MAAM0/N,EAAkBE,KAEnD3vM,EAAOmtM,EAAOp9N,MAAM8P,EAAY6vN,GAC5BD,GAAoB,IACtBzvM,EAAK,GAAKA,EAAK,GAAGjwB,MAAM0/N,IAEtBE,EAAiB,GACnB3vM,EAAKxwB,KAAK29N,EAAOuC,GAAU3/N,MAAM,EAAG4/N,KAGjC3vM,EAET,SAASkuM,GAAgBf,EAAQc,GAC/B,IAAIn5N,GAAU,EACd,MAAMgW,EAAS,GACf,IAAI8kN,EACJ,QAAS96N,EAASq4N,EAAOvhO,OAAQ,CAC/B,MAAM2iB,EAAQ4+M,EAAOr4N,GACrB,IAAItK,EACJ,GAAqB,kBAAV+jB,EACT/jB,EAAQ+jB,OAER,OAAQA,GACN,KAAM,EACJ/jB,EAAQ,KACR,MAEF,KAAM,EACJA,EAAQ,KACR,MAEF,KAAM,EACJA,EAAQ,OACR,MAEF,KAAM,EACJA,EAAQyjO,EAAa,IAAM,KAC3B,MAEF,KAAM,EACJ,IAAKA,GAAc2B,EACjB,SACFplO,EAAQ,IACR,MAEF,QACEA,EAAQglB,OAAO8pC,aAAa/qC,GAGlCqhN,GAAmB,IAAXrhN,EACRzD,EAAOtb,KAAKhF,GAEd,OAAOsgB,EAAO2kC,KAAK,IAErB,MAAMogL,GAAa,CACjB,CAAC,IAAKjF,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKA,GACN,CAAC,IAAKlkE,IAEF3E,GAAiB,CACrB,CAAC,IAAK8iE,IAEF0H,GAAc,CAClB,EAAE,GAAIhL,GACN,EAAE,GAAIA,GACN,CAAC,IAAKA,IAEFv9D,GAAO,CACX,CAAC,IAAKqhE,GACN,CAAC,IAAKqF,GACN,CAAC,IAAK,CAACoB,GAAiBpB,IACxB,CAAC,IAAK9E,GACN,CAAC,IAAKkG,GACN,CAAC,IAAKpB,GACN,CAAC,IAAKxK,GACN,CAAC,KAAMA,IAEHnyM,GAAS,CACb,CAAC,IAAKiyM,GACN,CAAC,IAAKl5D,IAEFgpE,GAAS,CACb,EAAE,GAAItF,GACN,EAAE,GAAIA,GACN,EAAE,GAAIA,GACN,CAAC,IAAKJ,GACN,CAAC,IAAKpK,GACN,CAAC,IAAKl7D,GACN,CAAC,IAAK,CAACgB,GAAU6hE,IACjB,CAAC,IAAK2C,GACN,CAAC,IAAK,CAACnF,GAAiBr+D,IACxB,CAAC,IAAKqiE,GACN,CAAC,IAAKrkE,GACN,CAAC,IAAK3sJ,IAEFstJ,GAAa,CACjBhB,KAAM,CAACK,GAAW2nE,KAEd9mE,GAAmB,CACvBlB,KAAM,CAAC,GAAI,KAEPD,GAAU,CACdC,KAAM,IAEFsrE,GAAoC5lO,OAAO40H,OAAuB50H,OAAOC,eAAe,CAC5F40H,UAAW,KACX2mC,oBACA5D,kBACAyC,WACAl7J,SAAUumO,GACV7rE,QACAuoE,eACA9mE,cACA13I,UACAvG,KAAMsoN,IACLxlO,OAAOC,YAAa,CAAEC,MAAO,YAChC,SAASwlO,GAAMtmO,EAAU,IACvB,MAAMk7J,EAAczE,GAElB,CAAC4vE,IAAmBhoN,OAAOre,EAAQ02J,YAAc,KAE7C79E,EAAU,CACdo8C,QAAS,GACTklC,KAAM,GACNpD,WAAYmE,EACZjoI,QAASszM,EAAQtuE,IACjBr4J,SAAU2mO,EAAQ7tE,IAClB4B,KAAMisE,EAAQ9D,IACdp+M,OAAQkiN,EAAQtD,IAChBnlN,KAAMyoN,EAAQpD,KAEhB,OAAOtqJ,EACP,SAAS0tJ,EAAQ5D,GACf,OAAO6D,EACP,SAASA,EAAQliO,GACf,OAAOu/N,GAAgBhrJ,EAAS8pJ,EAASr+N,KAI/C,MAAM+R,GAAS,cACf,SAASowN,KACP,IAGIC,EAHAj/M,EAAS,EACT+0M,EAAU,GACV9nN,GAAQ,EAEZ,OAAOk8F,EACP,SAASA,EAAc9vG,EAAO6lO,EAAUhyN,GACtC,MAAM8uN,EAAS,GACf,IAAItxN,EACA8U,EACAgyM,EACA2N,EACAtrN,EACJxa,EAAQ07N,EAAU17N,EAAM0W,SAASmvN,GACjC1N,EAAgB,EAChBuD,EAAU,GACN9nN,IAC0B,QAAxB5T,EAAM8Y,WAAW,IACnBq/M,IAEFvkN,OAAQ,GAEV,MAAOukN,EAAgBn4N,EAAMoB,OAAQ,CAKnC,GAJAmU,GAAOqe,UAAYukM,EACnB9mN,EAAQkE,GAAOvF,KAAKhQ,GACpB8lO,EAAcz0N,QAAyB,IAAhBA,EAAMY,MAAmBZ,EAAMY,MAAQjS,EAAMoB,OACpEoZ,EAAQxa,EAAM8Y,WAAWgtN,IACpBz0N,EAAO,CACVqqN,EAAU17N,EAAMuF,MAAM4yN,GACtB,MAEF,GAAc,KAAV39M,GAAgB29M,IAAkB2N,GAAeF,EACnDjD,EAAO39N,MAAM,GACb4gO,OAAmB,OAUnB,OARIA,IACFjD,EAAO39N,MAAM,GACb4gO,OAAmB,GAEjBzN,EAAgB2N,IAClBnD,EAAO39N,KAAKhF,EAAMuF,MAAM4yN,EAAe2N,IACvCn/M,GAAUm/M,EAAc3N,GAElB39M,GACN,KAAK,EACHmoN,EAAO39N,KAAK,OACZ2hB,IACA,MAEF,KAAK,EACHR,EAA+B,EAAxB9O,KAAKmC,KAAKmN,EAAS,GAC1Bg8M,EAAO39N,MAAM,GACb,MAAO2hB,IAAWR,EAChBw8M,EAAO39N,MAAM,GACf,MAEF,KAAK,GACH29N,EAAO39N,MAAM,GACb2hB,EAAS,EACT,MAEF,QACEi/M,GAAmB,EACnBj/M,EAAS,EAIfwxM,EAAgB2N,EAAc,EAShC,OAPIjyN,IACE+xN,GACFjD,EAAO39N,MAAM,GACX02N,GACFiH,EAAO39N,KAAK02N,GACdiH,EAAO39N,KAAK,OAEP29N,GAGX,SAASoD,GAAY5yL,GACnB,OAAQskL,GAAYtkL,IAEpB,OAAOA,EAET,SAAS6yL,GAAgChmO,EAAOkY,GAC9C,MAAMsC,EAAQlJ,OAAOspB,SAAS56B,EAAOkY,GACrC,OAEEsC,EAAQ,GAAe,KAAVA,GAAgBA,EAAQ,IAAMA,EAAQ,IACnDA,EAAQ,KAAOA,EAAQ,KACvBA,EAAQ,OAASA,EAAQ,OACzBA,EAAQ,OAASA,EAAQ,OAA6B,SAAX,MAARA,IAAgD,SAAX,MAARA,IAChEA,EAAQ,QAED,IAEFwK,OAAO8pC,aAAat0C,GAE7B,MAAMyrN,GAA6B,oEACnC,SAASC,GAAalmO,GACpB,OAAOA,EAAM4b,QAAQqqN,GAA4BE,IAEnD,SAASA,GAAO5wF,EAAIkH,EAAI2pF,GACtB,GAAI3pF,EACF,OAAOA,EAET,MAAMh3G,EAAQ2gM,EAAGttN,WAAW,GAC5B,GAAc,KAAV2sB,EAAc,CAChB,MAAM4gM,EAAQD,EAAGttN,WAAW,GACtBwtN,EAAgB,MAAVD,GAA2B,KAAVA,EAC7B,OAAOL,GAAgCI,EAAG7gO,MAAM+gO,EAAM,EAAI,GAAIA,EAAM,GAAK,IAE3E,OAAO/Q,GAA8B6Q,IAAO7wF,EAE9C,SAASgxF,GAAkBvmO,GACzB,OAAKA,GAA0B,kBAAVA,EAGjB,aAAcA,GAAS,SAAUA,EAC5B05B,GAAS15B,EAAM05B,UAEpB,UAAW15B,GAAS,QAASA,EACxB05B,GAAS15B,GAEd,SAAUA,GAAS,WAAYA,EAC1BwmO,GAAMxmO,GAER,GAXE,GAaX,SAASwmO,GAAMrzG,GACb,OAAOlhH,GAAMkhH,GAAUA,EAAOr2G,MAAQ,IAAM7K,GAAMkhH,GAAUA,EAAOxsG,QAErE,SAAS+S,GAASxiB,GAChB,OAAOsvN,GAAMtvN,GAAOA,EAAItD,OAAS,IAAM4yN,GAAMtvN,GAAOA,EAAIrD,KAE1D,SAAS5B,GAAMjS,GACb,OAAOA,GAA0B,kBAAVA,EAAqBA,EAAQ,EAEtD,MAAMymO,GAAQ,GAAGxxN,eACXyxN,GAAe,SAaV1mO,EAAO6lO,EAAU3mO,GAKxB,MAJwB,kBAAb2mO,IACT3mO,EAAU2mO,EACVA,OAAW,GAENc,GAASznO,EAATynO,CACLZ,GACEP,GAAMtmO,GAASJ,WAAWyO,MAAMo4N,KAAa3lO,EAAO6lO,GAAU,OAKtE,SAASc,GAASznO,EAAU,IAC1B,MAAMwwE,EAASk3J,GACb,CACEC,WAAY,GACZC,eAAgB,CACd,WACA,WACA,UACA,YACA,UAEFhqK,MAAO,CACLw+F,SAAUyrE,EAAOz+K,IACjB0+K,iBAAkBC,EAClBC,cAAeD,EACfE,WAAYJ,EAAOtF,GACnBvlE,WAAY6qE,EAAOK,GACnB9qE,gBAAiB2qE,EACjBzR,mBAAoByR,EACpBvR,WAAYqR,EAAOM,GACnBC,oBAAqB5L,EACrB6L,oBAAqB7L,EACrB3E,aAAcgQ,EAAOM,EAAU3L,GAC/B/tN,SAAUo5N,EAAOS,EAAW9L,GAC5B+L,aAAcR,EACdpjO,KAAMojO,EACNS,cAAeT,EACf5M,WAAY0M,EAAOn7I,GACnB+7I,4BAA6BjM,EAC7BkM,sBAAuBlM,EACvBmM,sBAAuBnM,EACvBoM,SAAUf,EAAOgB,GACjBpN,gBAAiBoM,EAAOiB,IACxBC,kBAAmBlB,EAAOiB,IAC1B5M,SAAU2L,EAAOj+G,GAAO4yG,GACxBwM,aAAcjB,EACd9J,SAAU4J,EAAOj+G,GAAO4yG,GACxByM,aAAclB,EACdr5N,MAAOm5N,EAAOqB,IACd5gK,MAAOk0J,EACP7tN,KAAMk5N,EAAOz+K,IACb+/K,SAAUtB,EAAOuB,IACjBC,cAAeC,EACfC,YAAa1B,EAAO1wM,GAAOqyM,GAC3BC,cAAe5B,EAAO1wM,IACtBuyM,UAAW7B,EAAOrF,IAClBl6I,UAAWqhJ,EACXC,gBAAiBpN,EACjBqN,0BAA2BrN,EAC3BsN,oBAAqBtN,EACrBuN,cAAelC,EAAOtF,GACtBzvJ,OAAQ+0J,EAAOmC,IACfC,cAAepC,EAAOqC,KAExBlyE,KAAM,CACJiwE,WAAYkC,IACZC,mBAAoBC,EACpBjuE,SAAU+tE,IACVnC,cAAesC,EACfxC,iBAAkByC,EAClBvtE,WAAYmtE,IACZK,qBAAsBC,EACtBC,oCAAqCC,EACrCC,gCAAiCD,EACjCE,wBAAyBC,EACzBtU,WAAY2T,EAAOY,GACnBC,gBAAiBC,EACjB7C,oBAAqB8C,EACrB7C,oBAAqB8C,EACrB3C,cAAeiC,EACf5S,aAAcsS,EAAOiB,GACrB38N,SAAU07N,EAAOkB,GACjB9C,aAAckC,EACd9lO,KAAM8lO,EACNtP,WAAYgP,IACZ1B,4BAA6B6C,EAC7B5C,sBAAuB6C,EACvB5C,sBAAuB6C,EACvB5C,SAAUuB,IACV1O,gBAAiB0O,EAAOsB,GACxB1C,kBAAmBoB,EAAOsB,GAC1BvP,SAAUiO,EAAOuB,GACjB1C,aAAcyB,EACdxM,SAAUkM,EAAOwB,GACjB1C,aAAcwB,EACd/7N,MAAOy7N,EAAOyB,GACdtjK,MAAOujK,EACPC,UAAWC,EACXjL,WAAYkL,EACZr9N,KAAMw7N,EAAO8B,GACb9C,SAAUgB,IACVZ,YAAaY,IACbV,cAAeU,IACfT,UAAWS,IACXP,gBAAiBsC,EACjBrC,0BAA2BsC,EAC3BrC,oBAAqBsC,EACrBj5F,SAAUk5F,EACVtC,cAAeI,EAAOmC,GACtBC,0BAA2BC,EAC3BC,kBAAmBC,EACnB55J,OAAQq3J,IACRF,cAAeE,MAGnBnqO,EAAQ2sO,iBAAmB,IAEvBtpO,EAAQ,GACd,OAAOupO,EACP,SAASA,EAAQ34L,GACf,IAAIuwC,EAAO,CACT1kF,KAAM,OACNqE,SAAU,IAEZ,MAAMqoF,EAAQ,CAAChI,GACTqoJ,EAAa,GACb53J,EAAY,GACZ1qE,EAAU,CACdiiF,QACAqgJ,aACAr8J,SACA5S,QACAo6F,KAAM/jF,EACN64J,OAAQtQ,EACRuQ,SACAhiL,UACAH,WAEF,IAAIx/C,GAAU,EACd,QAASA,EAAS6oC,EAAO/xC,OACvB,GAA+B,gBAA3B+xC,EAAO7oC,GAAQ,GAAGtL,MAAqD,kBAA3Bm0C,EAAO7oC,GAAQ,GAAGtL,KAChE,GAA0B,UAAtBm0C,EAAO7oC,GAAQ,GACjB6pE,EAAUnvE,KAAKsF,OACV,CACL,MAAMsuI,EAAOzkE,EAAU1tE,MACvB6D,EAAS4hO,EAAY/4L,EAAQylG,EAAMtuI,GAIzCA,GAAU,EACV,QAASA,EAAS6oC,EAAO/xC,OAAQ,CAC/B,MAAMuB,EAAU+sE,EAAOv8B,EAAO7oC,GAAQ,IAClCm8N,GAAM1jO,KAAKJ,EAASwwC,EAAO7oC,GAAQ,GAAGtL,OACxC2D,EAAQwwC,EAAO7oC,GAAQ,GAAGtL,MAAM+D,KAC9BpD,OAAO0hD,OACL,CACE05G,eAAgB5nH,EAAO7oC,GAAQ,GAAGywJ,gBAEpCtxJ,GAEF0pC,EAAO7oC,GAAQ,IAIrB,GAAIyhO,EAAW3qO,OAAS,EAAG,CACzB,MAAMw3I,EAAOmzF,EAAWA,EAAW3qO,OAAS,GACtCuB,EAAUi2I,EAAK,IAAMuzF,GAC3BxpO,EAAQI,KAAK0G,OAAS,EAAQmvI,EAAK,IAErCl1D,EAAKhqD,SAAW,CACd9lB,MAAOu/G,EACLhgF,EAAO/xC,OAAS,EAAI+xC,EAAO,GAAG,GAAGv/B,MAAQ,CACvCkJ,KAAM,EACN6J,OAAQ,EACR+G,OAAQ,IAGZ7Z,IAAKs/G,EACHhgF,EAAO/xC,OAAS,EAAI+xC,EAAOA,EAAO/xC,OAAS,GAAG,GAAGyS,IAAM,CACrDiJ,KAAM,EACN6J,OAAQ,EACR+G,OAAQ,KAIdpjB,GAAU,EACV,QAASA,EAASolE,EAAOm3J,WAAWzlO,OAClCsiF,EAAOhU,EAAOm3J,WAAWv8N,GAAQo5E,IAASA,EAE5C,OAAOA,EAET,SAASwoJ,EAAY/4L,EAAQv/B,EAAOxS,GAClC,IAGIgrO,EACAzU,EACA0U,EACAxL,EANAv2N,EAASsJ,EAAQ,EACjB04N,GAAoB,EACpBC,GAAa,EAKjB,QAASjiO,GAAUlJ,EAAQ,CACzB,MAAM5B,EAAQ2zC,EAAO7oC,GAoBrB,GAnBsB,kBAAlB9K,EAAM,GAAGR,MAA8C,gBAAlBQ,EAAM,GAAGR,MAA4C,eAAlBQ,EAAM,GAAGR,MAClE,UAAbQ,EAAM,GACR8sO,IAEAA,IAEFzL,OAAW,GACgB,oBAAlBrhO,EAAM,GAAGR,KACD,UAAbQ,EAAM,MACJ4sO,GAAcvL,GAAayL,GAAqBD,IAClDA,EAAsB/hO,GAExBu2N,OAAW,GAEc,eAAlBrhO,EAAM,GAAGR,MAA2C,kBAAlBQ,EAAM,GAAGR,MAA8C,mBAAlBQ,EAAM,GAAGR,MAA+C,mBAAlBQ,EAAM,GAAGR,MAA+C,6BAAlBQ,EAAM,GAAGR,OAGrK6hO,OAAW,IAERyL,GAAiC,UAAb9sO,EAAM,IAAoC,mBAAlBA,EAAM,GAAGR,OAAmD,IAAtBstO,GAAwC,SAAb9sO,EAAM,KAAoC,kBAAlBA,EAAM,GAAGR,MAA8C,gBAAlBQ,EAAM,GAAGR,MAAyB,CAC/M,GAAIotO,EAAW,CACb,IAAII,EAAYliO,EAChBqtN,OAAY,EACZ,MAAO6U,IAAa,CAClB,MAAMC,EAAYt5L,EAAOq5L,GACzB,GAA0B,eAAtBC,EAAU,GAAGztO,MAA+C,oBAAtBytO,EAAU,GAAGztO,KAA4B,CACjF,GAAqB,SAAjBytO,EAAU,GACZ,SACE9U,IACFxkL,EAAOwkL,GAAW,GAAG34N,KAAO,kBAC5ButO,GAAa,GAEfE,EAAU,GAAGztO,KAAO,aACpB24N,EAAY6U,OACP,GAA0B,eAAtBC,EAAU,GAAGztO,MAA+C,qBAAtBytO,EAAU,GAAGztO,MAAqD,+BAAtBytO,EAAU,GAAGztO,MAA+D,qBAAtBytO,EAAU,GAAGztO,MAAqD,mBAAtBytO,EAAU,GAAGztO,KAG1M,MAGAqtO,KAAyB1U,GAAa0U,EAAsB1U,KAC9DyU,EAAUM,SAAU,GAEtBN,EAAUv4N,IAAMlU,OAAO0hD,OACrB,GACAs2K,EAAYxkL,EAAOwkL,GAAW,GAAG/jN,MAAQpU,EAAM,GAAGqU,KAEpDs/B,EAAO5oC,OAAOotN,GAAartN,EAAQ,EAAG,CAAC,OAAQ8hO,EAAW5sO,EAAM,KAChE8K,IACAlJ,IAEoB,mBAAlB5B,EAAM,GAAGR,OACXotO,EAAY,CACVptO,KAAM,WAEN0tO,SAAS,EACT94N,MAAOjU,OAAO0hD,OAAO,GAAI7hD,EAAM,GAAGoU,QAEpCu/B,EAAO5oC,OAAOD,EAAQ,EAAG,CAAC,QAAS8hO,EAAW5sO,EAAM,KACpD8K,IACAlJ,IACAirO,OAAsB,EACtBxL,GAAW,IAKjB,OADA1tL,EAAOv/B,GAAO,GAAG84N,QAAUH,EACpBnrO,EAET,SAAS6oD,EAAQntB,EAAM98B,GACrBuC,EAAMu6B,GAAQ98B,EAEhB,SAAS8pD,EAAQhtB,GACf,OAAOv6B,EAAMu6B,GAEf,SAASq2F,EAAOhxH,GACd,MAAO,CACL2a,KAAM3a,EAAE2a,KACR6J,OAAQxkB,EAAEwkB,OACV+G,OAAQvrB,EAAEurB,QAGd,SAASq5M,EAAOtB,EAASx3E,GACvB,OAAO5kE,EACP,SAASA,EAAKj/D,GACZ0yC,EAAM/5D,KAAKD,KAAM2iO,EAAQr7M,GAAQA,GAC7B6jI,GACFA,EAAIlrJ,KAAKD,KAAMsnB,IAGrB,SAASsxM,IACP54N,KAAK4oF,MAAM1mF,KAAK,CACdhG,KAAM,WACNqE,SAAU,KAGd,SAASy5D,EAAMv7D,EAAM6oB,EAAOuiN,GAC1B,MAAMr6N,EAASxP,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAO9C,OANAkR,EAAOjP,SAAS2B,KAAKzD,GACrBuB,KAAK4oF,MAAM1mF,KAAKzD,GAChBuB,KAAKipO,WAAW/mO,KAAK,CAAColB,EAAOuiN,IAC7BprO,EAAKm4B,SAAW,CACd9lB,MAAOu/G,EAAO/oG,EAAMxW,QAEfrS,EAET,SAAS8nO,EAAOp7E,GACd,OAAOxoF,EACP,SAASA,EAAMr7C,GACT6jI,GACFA,EAAIlrJ,KAAKD,KAAMsnB,GACjB+oD,EAAMpwE,KAAKD,KAAMsnB,IAGrB,SAAS+oD,EAAM/oD,EAAOwiN,GACpB,MAAMrrO,EAAOuB,KAAK4oF,MAAMjlF,MAClB4iF,EAAOvmF,KAAKipO,WAAWtlO,MAC7B,IAAK4iF,EACH,MAAM,IAAIzkF,MACR,iBAAmBwlB,EAAMprB,KAAO,MAAQunO,GAAkB,CACxD3yN,MAAOwW,EAAMxW,MACbC,IAAKuW,EAAMvW,MACR,oBAEF,GAAIw1E,EAAK,GAAGrqF,OAASorB,EAAMprB,KAChC,GAAI4tO,EACFA,EAAY7pO,KAAKD,KAAMsnB,EAAOi/D,EAAK,QAC9B,CACL,MAAM1mF,EAAU0mF,EAAK,IAAM8iJ,GAC3BxpO,EAAQI,KAAKD,KAAMsnB,EAAOi/D,EAAK,IAInC,OADA9nF,EAAKm4B,SAAS7lB,IAAMs/G,EAAO/oG,EAAMvW,KAC1BtS,EAET,SAAS0qO,IACP,OAAOv1N,GAAS5T,KAAK4oF,MAAMjlF,OAE7B,SAASiiO,IACPz+K,EAAQ,+BAA+B,GAEzC,SAASu+K,EAAqBp+M,GAC5B,GAAI0/B,EAAQ,+BAAgC,CAC1C,MAAMiiE,EAEJjpH,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjC2qH,EAASn4G,MAAQtC,OAAOspB,SAAS93B,KAAKi4J,eAAe3wI,GAAQ,IAC7D6/B,EAAQ,gCAGZ,SAASmgL,IACP,MAAMyC,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAK26H,KAAO2wG,EAEd,SAASxC,IACP,MAAMwC,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAK+0N,KAAOuW,EAEd,SAAS1C,IACHrgL,EAAQ,oBAEZhnD,KAAKkpO,SACL/hL,EAAQ,kBAAkB,IAE5B,SAASggL,IACP,MAAM4C,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKvB,MAAQ6sO,EAAMjxN,QAAQ,2BAA4B,IACvDquC,EAAQ,kBAEV,SAASqgL,IACP,MAAMuC,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKvB,MAAQ6sO,EAAMjxN,QAAQ,eAAgB,IAE7C,SAAS6uN,EAA4BrgN,GACnC,MAAMo9C,EAAQ1kE,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKimE,MAAQA,EACbjmE,EAAKk5N,WAAaL,GAChBt3N,KAAKi4J,eAAe3wI,IACpB5R,cAEJ,SAASkyN,IACP,MAAMmC,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAK2xB,MAAQ25M,EAEf,SAASrC,IACP,MAAMqC,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKy7E,IAAM6vJ,EAEb,SAAStD,EAAyBn/M,GAChC,MAAM7oB,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjC,IAAKG,EAAKo3E,MAAO,CACf,MAAMA,EAAQ71E,KAAKi4J,eAAe3wI,GAAOhpB,OACzCG,EAAKo3E,MAAQA,GAGjB,SAASizJ,IACP3hL,EAAQ,gCAAgC,GAE1C,SAASyhL,EAAgCthN,GACvC,MAAM7oB,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKo3E,MAAqD,KAA7C71E,KAAKi4J,eAAe3wI,GAAOtR,WAAW,GAAY,EAAI,EAErE,SAAS0yN,IACPvhL,EAAQ,gCAEV,SAASg9K,EAAY78M,GACnB,MAAM9X,EAEJxP,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjC,IAAIw3I,EAAOtmI,EAAOjP,SAASiP,EAAOjP,SAASjC,OAAS,GAC/Cw3I,GAAsB,SAAdA,EAAK55I,OAChB45I,EAAOj1I,KACPi1I,EAAKl/G,SAAW,CACd9lB,MAAOu/G,EAAO/oG,EAAMxW,QAEtBtB,EAAOjP,SAAS2B,KAAK4zI,IAEvB91I,KAAK4oF,MAAM1mF,KAAK4zI,GAElB,SAAS+wF,EAAWv/M,GAClB,MAAMwuH,EAAO91I,KAAK4oF,MAAMjlF,MACxBmyI,EAAK54I,OAAS8C,KAAKi4J,eAAe3wI,GAClCwuH,EAAKl/G,SAAS7lB,IAAMs/G,EAAO/oG,EAAMvW,KAEnC,SAASq3N,EAAiB9gN,GACxB,MAAM3gB,EAAU3G,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAC/C,GAAI0oD,EAAQ,eAAgB,CAC1B,MAAM8uF,EAAOnvI,EAAQpG,SAASoG,EAAQpG,SAASjC,OAAS,GAGxD,OAFAw3I,EAAKl/G,SAAS7lB,IAAMs/G,EAAO/oG,EAAMvW,UACjCo2C,EAAQ,gBAGLH,EAAQ,iCAAmC4lB,EAAOo3J,eAAe1kJ,SAAS34E,EAAQzK,QACrFioO,EAAYlkO,KAAKD,KAAMsnB,GACvBu/M,EAAW5mO,KAAKD,KAAMsnB,IAG1B,SAASugN,IACP1gL,EAAQ,eAAe,GAEzB,SAAS2gL,IACP,MAAMiC,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKvB,MAAQ6sO,EAEf,SAAShC,IACP,MAAMgC,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKvB,MAAQ6sO,EAEf,SAAStC,IACP,MAAMsC,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKvB,MAAQ6sO,EAEf,SAAS1B,IACP,MAAM1hO,EAEJ3G,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAE7B0oD,EAAQ,gBACVrgD,EAAQzK,MAAQ,YAChByK,EAAQqjO,cAAgBhjL,EAAQ,kBAAoB,kBAC7CrgD,EAAQuzE,WACRvzE,EAAQypB,eAERzpB,EAAQgxN,kBACRhxN,EAAQ+9D,OAEjBvd,EAAQ,iBAEV,SAAS6gL,IACP,MAAMrhO,EAEJ3G,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAE7B0oD,EAAQ,gBACVrgD,EAAQzK,MAAQ,YAChByK,EAAQqjO,cAAgBhjL,EAAQ,kBAAoB,kBAC7CrgD,EAAQuzE,WACRvzE,EAAQypB,eAERzpB,EAAQgxN,kBACRhxN,EAAQ+9D,OAEjBvd,EAAQ,iBAEV,SAASghL,EAAgB7gN,GACvB,MAAM2hG,EAEJjpH,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAE3B+T,EAAUrS,KAAKi4J,eAAe3wI,GACpC2hG,EAASvkD,MAAQ0+J,GAAa/wN,GAC9B42G,EAAS0uG,WAAaL,GAAoBjlN,GAASqD,cAErD,SAASuyN,IACP,MAAMviO,EAEJ1F,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAE3BpB,EAAQ8C,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjC6oD,EAAQ,eAAe,GACL,SAAd1oD,EAAKvC,KACPuC,EAAK8B,SAAWmF,EAAUnF,SAE1B9B,EAAK2tD,IAAMlvD,EAGf,SAASqrO,IACP,MAAMwB,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKy7E,IAAM6vJ,EAEb,SAASvB,IACP,MAAMuB,EAAQ/pO,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAK2xB,MAAQ25M,EAEf,SAAStB,IACPthL,EAAQ,eAEV,SAAS4+K,IACP5+K,EAAQ,gBAAiB,aAE3B,SAASmhL,EAAsBhhN,GAC7B,MAAMo9C,EAAQ1kE,KAAKmpO,SACb1qO,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKimE,MAAQA,EACbjmE,EAAKk5N,WAAaL,GAChBt3N,KAAKi4J,eAAe3wI,IACpB5R,cACFyxC,EAAQ,gBAAiB,QAE3B,SAAS4/K,EAA+Bz/M,GACtC6/B,EAAQ,yBAA0B7/B,EAAMprB,MAE1C,SAASgrO,EAA8B5/M,GACrC,MAAMyiN,EAAQ/pO,KAAKi4J,eAAe3wI,GAC5BprB,EAAO8qD,EAAQ,0BACrB,IAAI9pD,EACAhB,GACFgB,EAAQgmO,GACN6G,EACS,oCAAT7tO,EAA6C,GAAK,IAEpDirD,EAAQ,2BAERjqD,EAAQu1N,GAA8BsX,GAExC,MAAMj0F,EAAO91I,KAAK4oF,MAAMjlF,MACxBmyI,EAAK54I,OAASA,EACd44I,EAAKl/G,SAAS7lB,IAAMs/G,EAAO/oG,EAAMvW,KAEnC,SAAS41N,EAAuBr/M,GAC9Bu/M,EAAW5mO,KAAKD,KAAMsnB,GACtB,MAAM7oB,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKy7E,IAAMl6E,KAAKi4J,eAAe3wI,GAEjC,SAASo/M,EAAoBp/M,GAC3Bu/M,EAAW5mO,KAAKD,KAAMsnB,GACtB,MAAM7oB,EAEJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKy7E,IAAM,UAAYl6E,KAAKi4J,eAAe3wI,GAE7C,SAASg9M,IACP,MAAO,CACLpoO,KAAM,aACNqE,SAAU,IAGd,SAASgkO,IACP,MAAO,CACLroO,KAAM,OACNk9H,KAAM,KACNo6F,KAAM,KACNt2N,MAAO,IAGX,SAASwnO,IACP,MAAO,CACLxoO,KAAM,aACNgB,MAAO,IAGX,SAAS4rF,IACP,MAAO,CACL5sF,KAAM,aACNy7N,WAAY,GACZjzJ,MAAO,KACPt0C,MAAO,KACP8pD,IAAK,IAGT,SAAS+qJ,IACP,MAAO,CACL/oO,KAAM,WACNqE,SAAU,IAGd,SAASo+N,IACP,MAAO,CACLziO,KAAM,UACN25E,WAAO,EACPt1E,SAAU,IAGd,SAAS2kO,KACP,MAAO,CACLhpO,KAAM,SAGV,SAAS8pH,KACP,MAAO,CACL9pH,KAAM,OACNgB,MAAO,IAGX,SAASooO,KACP,MAAO,CACLppO,KAAM,QACNk0B,MAAO,KACP8pD,IAAK,GACL9tB,IAAK,MAGT,SAAS5G,KACP,MAAO,CACLtpD,KAAM,OACNk0B,MAAO,KACP8pD,IAAK,GACL35E,SAAU,IAGd,SAASgzB,GAAMjM,GACb,MAAO,CACLprB,KAAM,OACN+tO,QAAwB,gBAAf3iN,EAAMprB,KACf4U,MAAO,KAEPo5N,OAAQ5iN,EAAMsiN,QACdrpO,SAAU,IAGd,SAASilO,GAAUl+M,GACjB,MAAO,CACLprB,KAAM,WAENguO,OAAQ5iN,EAAMsiN,QACd/rJ,QAAS,KACTt9E,SAAU,IAGd,SAASq+N,KACP,MAAO,CACL1iO,KAAM,YACNqE,SAAU,IAGd,SAAS6lO,KACP,MAAO,CACLlqO,KAAM,SACNqE,SAAU,IAGd,SAASM,KACP,MAAO,CACL3E,KAAM,OACNgB,MAAO,IAGX,SAASopO,KACP,MAAO,CACLpqO,KAAM,kBAIZ,SAAS4nO,GAAUqG,EAAUr3E,GAC3B,IAAItrJ,GAAU,EACd,QAASA,EAASsrJ,EAAWx0J,OAAQ,CACnC,MAAMpB,EAAQ41J,EAAWtrJ,GACrB/G,MAAMk/E,QAAQziF,GAChB4mO,GAAUqG,EAAUjtO,GAEpBktO,GAAUD,EAAUjtO,GAGxB,OAAOitO,EAET,SAASC,GAAUD,EAAUn3E,GAC3B,IAAIh5H,EACJ,IAAKA,KAAQg5H,EACX,GAAI2wE,GAAM1jO,KAAK+yJ,EAAYh5H,GAAO,CAChC,MAAMzG,EAAiB,mBAATyG,GAAsC,eAATA,EACrCk5H,EAAQywE,GAAM1jO,KAAKkqO,EAAUnwM,GAAQmwM,EAASnwM,QAAQ,EACtD3c,EAAO61I,IAAUi3E,EAASnwM,GAAQzG,EAAQ,GAAK,IAC/CjW,EAAQ01I,EAAWh5H,GACrB1c,IACEiW,EACF42M,EAASnwM,GAAQ,IAAI3c,KAASC,GAE9BzgB,OAAO0hD,OAAOlhC,EAAMC,KAM9B,SAAS+rN,GAAehsN,EAAMC,GAC5B,MAAID,EACI,IAAIvb,MACR,iBAAmBub,EAAKnhB,KAAO,MAAQunO,GAAkB,CACvD3yN,MAAOuM,EAAKvM,MACZC,IAAKsM,EAAKtM,MACP,0BAA4BuM,EAAMphB,KAAO,MAAQunO,GAAkB,CACtE3yN,MAAOwM,EAAMxM,MACbC,IAAKuM,EAAMvM,MACR,aAGD,IAAIjP,MACR,oCAAsCwb,EAAMphB,KAAO,MAAQunO,GAAkB,CAC3E3yN,MAAOwM,EAAMxM,MACbC,IAAKuM,EAAMvM,MACR,mBAIX,SAASs5N,GAAYjuO,GACnB,MAAM64E,EAAWn0D,IACf,MAAMyyH,EAEJvzI,KAAKe,KAAK,YAEZ,OAAO6iO,GACL9iN,EACAjkB,OAAO0hD,OAAO,GAAIg1F,EAAUn3I,EAAS,CAInC02J,WAAY9yJ,KAAKe,KAAK,wBAA0B,GAChDgoO,gBAAiB/oO,KAAKe,KAAK,2BAA6B,OAI9DlE,OAAO0hD,OAAOv+C,KAAM,CAAE8lH,OAAQ7wC,IAEhC,IAAIq1J,GAAI,SAUGpuO,EAAMoK,EAAOpJ,GACpB,IAAIuB,EAAO,CAAEvC,KAAMgmB,OAAOhmB,IAW1B,YAVe,IAAVgB,GAA8B,OAAVA,GAAqC,kBAAVoJ,IAAsB7F,MAAMk/E,QAAQr5E,GAGtFzJ,OAAO0hD,OAAO9/C,EAAM6H,GAFpBpJ,EAAQoJ,EAIN7F,MAAMk/E,QAAQziF,GAChBuB,EAAK8B,SAAWrD,OACG,IAAVA,GAA8B,OAAVA,IAC7BuB,EAAKvB,MAAQglB,OAAOhlB,IAEfuB,GAGX,MAAM8rO,GAAQ,GAAGp4N,eACjB,SAAS+nI,GAAQr4H,EAAIpjB,GACnB,MAAMgB,EAAQhB,EAAKsC,MAAQ,GAC3B,MAAI,UAAWtC,KAAU8rO,GAAMtqO,KAAKR,EAAO,UAAY8qO,GAAMtqO,KAAKR,EAAO,gBAAkB8qO,GAAMtqO,KAAKR,EAAO,cACpGoiB,EAAG2oN,QAAQ/rO,EAAM6rO,GAAE,OAAQ7rO,EAAKvB,QAElC2kB,EAAGpjB,EAAM,MAAOgsO,GAAI5oN,EAAIpjB,IAEjC,SAASisO,GAAI7oN,EAAIpjB,EAAM+Q,GACrB,MAAMtT,EAAOuC,GAAQA,EAAKvC,KAC1B,IAAIqB,EACJ,IAAKrB,EACH,MAAM,IAAI4F,MAAM,uBAAyBrD,EAAO,KASlD,OANElB,EADEgtO,GAAMtqO,KAAK4hB,EAAGo4H,SAAU/9I,GACrB2lB,EAAGo4H,SAAS/9I,GACR2lB,EAAGm6H,aAAen6H,EAAGm6H,YAAY18D,SAASpjF,GAC9CyuO,GAEA9oN,EAAG+oN,gBAEY,oBAAPrtO,EAAoBA,EAAK28I,IAASr4H,EAAIpjB,EAAM+Q,GAE7D,SAASm7N,GAAW9oN,EAAIpjB,GACtB,MAAO,aAAcA,EAAO,IAAKA,EAAM8B,SAAUkqO,GAAI5oN,EAAIpjB,IAAUA,EAErE,SAASgsO,GAAI5oN,EAAIrS,GACf,MAAMm6E,EAAS,GACf,GAAI,aAAcn6E,EAAQ,CACxB,MAAMrI,EAASqI,EAAOjP,SACtB,IAAIiH,GAAU,EACd,QAASA,EAASL,EAAO7I,OAAQ,CAC/B,MAAMkf,EAASktN,GAAI7oN,EAAI1a,EAAOK,GAASgI,GACvC,GAAIgO,EAAQ,CACV,GAAIhW,GAAsC,UAA5BL,EAAOK,EAAS,GAAGtL,OAC1BuE,MAAMk/E,QAAQniE,IAA2B,SAAhBA,EAAOthB,OACnCshB,EAAOtgB,MAAQsgB,EAAOtgB,MAAM4b,QAAQ,OAAQ,MAEzCrY,MAAMk/E,QAAQniE,IAA2B,YAAhBA,EAAOthB,MAAoB,CACvD,MAAMymC,EAAQnlB,EAAOjd,SAAS,GAC1BoiC,GAAwB,SAAfA,EAAMzmC,OACjBymC,EAAMzlC,MAAQylC,EAAMzlC,MAAM4b,QAAQ,OAAQ,KAI5CrY,MAAMk/E,QAAQniE,GAChBmsE,EAAOznF,QAAQsb,GAEfmsE,EAAOznF,KAAKsb,KAKpB,OAAOmsE,EAET,SAASkhJ,GAAUpsO,GACjB,OAAQA,IAASA,EAAKm4B,WAAan4B,EAAKm4B,SAAS9lB,QAAUrS,EAAKm4B,SAAS9lB,MAAMkJ,OAASvb,EAAKm4B,SAAS9lB,MAAM+S,SAAWplB,EAAKm4B,SAAS7lB,MAAQtS,EAAKm4B,SAAS7lB,IAAIiJ,OAASvb,EAAKm4B,SAAS7lB,IAAI8S,OAE5L,SAAS+8G,GAAMvhI,GACb,OAAOA,EAET,MAAMyrO,IAAW,EACXC,GAAO,OACPC,IAAO,EACPC,GAAe,SAgBVrqJ,EAAM7zE,EAAM8zE,EAAS/mE,GACR,oBAAT/M,GAA0C,oBAAZ8zE,IACvC/mE,EAAU+mE,EACVA,EAAU9zE,EACVA,EAAO,MAET,IAAI+zE,EAAKtB,GAAUzyE,GACfg0E,EAAOjnE,GAAW,EAAI,EAE1B,SAASknE,EAASviF,EAAM+I,EAAQy5E,GAC9B,IACI1hF,EADArC,EAAwB,kBAATuB,GAA8B,OAATA,EAAgBA,EAAO,GAQ/D,MAN0B,kBAAfvB,EAAMhB,OACfqD,EAAgC,kBAAlBrC,EAAMo4E,QAAuBp4E,EAAMo4E,QAAgC,kBAAfp4E,EAAMqC,KAAoBrC,EAAMqC,UAAO,EACzG1C,OAAOC,eAAeokF,EAAQ,OAAQ,CACpChkF,MAAO,SAAW0jI,GAAM1jI,EAAMhB,MAAQqD,EAAO,IAAMA,EAAO,IAAM,KAAO,OAGpE2hF,EACP,SAASA,IACP,IACIC,EACAv2D,EACAw2D,EAHA5jE,EAAS,GAIb,KAAKzQ,GAAQ+zE,EAAGriF,EAAM+I,EAAQy5E,EAAQA,EAAQ3iF,OAAS,IAAM,SAC3Dkf,EAAS0tN,GAASrqJ,EAAQpiF,EAAMwiF,IAC5BzjE,EAAO,KAAOwtN,IAChB,OAAOxtN,EAGX,GAAI/e,EAAK8B,UAAYid,EAAO,KAAOutN,GAAM,CACvCngN,GAAU9Q,EAAUrb,EAAK8B,SAASjC,QAAU,GAAKyiF,EACjDK,EAAeH,EAAQxmE,OAAOhc,GAC9B,MAAOmsB,GAAU,GAAKA,EAASnsB,EAAK8B,SAASjC,OAAQ,CAEnD,GADA6iF,EAAYH,EAASviF,EAAK8B,SAASqqB,GAASA,EAAQw2D,EAAxCJ,GACRG,EAAU,KAAO6pJ,GACnB,OAAO7pJ,EAETv2D,EAAiC,kBAAjBu2D,EAAU,GAAkBA,EAAU,GAAKv2D,EAASm2D,GAGxE,OAAOvjE,GAjCXwjE,EAASJ,EAAM,KAAM,GAArBI,IAsCJ,SAASkqJ,GAAShuO,GAChB,OAAIuD,MAAMk/E,QAAQziF,GACTA,EAEY,kBAAVA,EACF,CAAC4tO,GAAU5tO,GAEb,CAACA,GAEV,MAAMiuO,GAAQ,SAgBHvqJ,EAAM7zE,EAAM8zE,EAAS/mE,GAO5B,SAASynE,EAAS9iF,EAAMwiF,GACtB,IAAIzxE,EAASyxE,EAAQA,EAAQ3iF,OAAS,GACtC,OAAOuiF,EACLpiF,EACA+Q,EAASA,EAAOjP,SAASmE,QAAQjG,GAAQ,KACzC+Q,GAXgB,oBAATzC,GAA0C,oBAAZ8zE,IACvC/mE,EAAU+mE,EACVA,EAAU9zE,EACVA,EAAO,MAETk+N,GAAarqJ,EAAM7zE,EAAMw0E,EAAUznE,IAWjCsxN,GAAQ,GAAGj5N,eACjB,SAASk5N,GAAY5sO,GACnB,MAAMuwB,EAAwBnyB,OAAOY,OAAO,MAC5C,IAAKgB,IAASA,EAAKvC,KACjB,MAAM,IAAI4F,MAAM,wCAGlB,OADAqpO,GAAM1sO,EAAM,aAAc6sO,GACnBC,EACP,SAASD,EAAaxiJ,GACpB,MAAM91E,EAAKw4N,GAAM1iJ,EAAY6uI,YACzB3kN,IAAOo4N,GAAMnrO,KAAK+uB,EAAOhc,KAC3Bgc,EAAMhc,GAAM81E,GAGhB,SAASyiJ,EAAc5T,GACrB,MAAM3kN,EAAKw4N,GAAM7T,GACjB,OAAO3kN,GAAMo4N,GAAMnrO,KAAK+uB,EAAOhc,GAAMgc,EAAMhc,GAAM,MAGrD,SAASw4N,GAAMtuO,GACb,OAAOglB,OAAOhlB,GAAS,IAAIuY,cAE7B,MAAMg2N,GAAsB,CAAE,IAAK,OAAQ,IAAK,MAAO,IAAK,KAAM,IAAK,MACvE,SAASC,GAASxuO,GAChB,OAAOA,EAAM4b,QAAQ,UAAWA,GAChC,SAASA,EAAQ4gI,GACf,MAAO,IAAM+xF,GAAoB/xF,GAAU,KAG/C,SAASiyF,GAAYzxJ,EAAK0xJ,GACxB,MAAM1uO,EAAQwuO,GAASG,GAAa3xJ,GAAO,KAC3C,IAAK0xJ,EACH,OAAO1uO,EAET,MAAM4sF,EAAQ5sF,EAAMwH,QAAQ,KACtBqlF,EAAe7sF,EAAMwH,QAAQ,KAC7BslF,EAAa9sF,EAAMwH,QAAQ,KAC3BulF,EAAQ/sF,EAAMwH,QAAQ,KAC5B,OAEEolF,EAAQ,GACRG,GAAS,GAAKH,EAAQG,GAASF,GAAgB,GAAKD,EAAQC,GAAgBC,GAAc,GAAKF,EAAQE,GACvG4hJ,EAAS7+N,KAAK7P,EAAMuF,MAAM,EAAGqnF,IAEtB5sF,EAEF,GAET,SAAS2uO,GAAa3uO,GACpB,MAAMsgB,EAAS,GACf,IAAIhW,GAAU,EACVsJ,EAAQ,EACR8mC,EAAO,EACX,QAASpwC,EAAStK,EAAMoB,OAAQ,CAC9B,MAAMoZ,EAAQxa,EAAM8Y,WAAWxO,GAC/B,IAAIsR,EAAU,GACd,GAAc,KAAVpB,GAAgB+7I,GAAkBv2J,EAAM8Y,WAAWxO,EAAS,KAAOisJ,GAAkBv2J,EAAM8Y,WAAWxO,EAAS,IACjHowC,EAAO,OACF,GAAIlgC,EAAQ,IACZ,oBAAoB3K,KAAKmV,OAAO8pC,aAAat0C,MAChDoB,EAAUoJ,OAAO8pC,aAAat0C,SAE3B,GAAIA,EAAQ,OAASA,EAAQ,MAAO,CACzC,MAAM2L,EAAOnmB,EAAM8Y,WAAWxO,EAAS,GACnCkQ,EAAQ,OAAS2L,EAAO,OAASA,EAAO,OAC1CvK,EAAUoJ,OAAO8pC,aAAat0C,EAAO2L,GACrCu0B,EAAO,GAEP9+B,EAAU,SAGZA,EAAUoJ,OAAO8pC,aAAat0C,GAE5BoB,IACF0E,EAAOtb,KAAKhF,EAAMuF,MAAMqO,EAAOtJ,GAASskO,mBAAmBhzN,IAC3DhI,EAAQtJ,EAASowC,EAAO,EACxB9+B,EAAU,IAER8+B,IACFpwC,GAAUowC,EACVA,EAAO,GAGX,OAAOp6B,EAAO2kC,KAAK,IAAMjlD,EAAMuF,MAAMqO,GAEvC,SAASi7N,GAAO5kO,EAAQ6kO,GACtB,MAAMxuN,EAAS,GACf,IAAIhW,GAAU,EACVwkO,GACFxuN,EAAOtb,KAAKooO,GAAE,OAAQ,OAExB,QAAS9iO,EAASL,EAAO7I,OACnBkJ,GACFgW,EAAOtb,KAAKooO,GAAE,OAAQ,OACxB9sN,EAAOtb,KAAKiF,EAAOK,IAKrB,OAHIwkO,GAAS7kO,EAAO7I,OAAS,GAC3Bkf,EAAOtb,KAAKooO,GAAE,OAAQ,OAEjB9sN,EAET,SAASyuN,GAAOpqN,GACd,IAAIra,GAAU,EACd,MAAM0kO,EAAY,GAClB,QAAS1kO,EAASqa,EAAGsqN,cAAc7tO,OAAQ,CACzC,MAAMojO,EAAM7/M,EAAGuqN,aAAavqN,EAAGsqN,cAAc3kO,GAAQiO,eACrD,IAAKisN,EACH,SAEF,MAAM/xN,EAAW86N,GAAI5oN,EAAI6/M,GACnB1uN,EAAKkP,OAAOw/M,EAAI/J,YAChB0U,EAASV,GAAY34N,EAAG0C,eAC9B,IAAI42N,EAAiB,EACrB,MAAMC,EAAiB,GACvB,QAASD,GAAkBzqN,EAAG2qN,eAAex5N,GAAK,CAChD,MAAMy5N,EAAgB,CACpBvwO,KAAM,UACNo5E,QAAS,IACTz1D,WAAY,CACVunE,KAAM,IAAMvlE,EAAG8kE,cAAgB,SAAW0lJ,GAAUC,EAAiB,EAAI,IAAMA,EAAiB,IAChGI,qBAAqB,EACrBz9N,UAAW,CAAC,yBACZslH,UAAW1yG,EAAG8qN,mBAEhBpsO,SAAU,CAAC,CAAErE,KAAM,OAAQgB,MAAO,OAEhCovO,EAAiB,GACnBG,EAAclsO,SAAS2B,KAAK,CAC1BhG,KAAM,UACNo5E,QAAS,MACT/0E,SAAU,CAAC,CAAErE,KAAM,OAAQgB,MAAOglB,OAAOoqN,OAGzCC,EAAejuO,OAAS,GAC1BiuO,EAAerqO,KAAK,CAAEhG,KAAM,OAAQgB,MAAO,MAE7CqvO,EAAerqO,KAAKuqO,GAEtB,MAAM32F,EAAOnmI,EAASA,EAASrR,OAAS,GACxC,GAAIw3I,GAAsB,YAAdA,EAAK55I,MAAuC,MAAjB45I,EAAKxgE,QAAiB,CAC3D,MAAMs3J,EAAW92F,EAAKv1I,SAASu1I,EAAKv1I,SAASjC,OAAS,GAClDsuO,GAA8B,SAAlBA,EAAS1wO,KACvB0wO,EAAS1vO,OAAS,IAElB44I,EAAKv1I,SAAS2B,KAAK,CAAEhG,KAAM,OAAQgB,MAAO,MAE5C44I,EAAKv1I,SAAS2B,QAAQqqO,QAEtB58N,EAASzN,QAAQqqO,GAEnB,MAAM/G,EAAY,CAChBtpO,KAAM,UACNo5E,QAAS,KACTz1D,WAAY,CAAE7M,GAAI6O,EAAG8kE,cAAgB,MAAQ0lJ,GAC7C9rO,SAAUwrO,GAAOp8N,GAAU,IAEzB+xN,EAAI9qM,WACN4uM,EAAU5uM,SAAW8qM,EAAI9qM,UAE3Bs1M,EAAUhqO,KAAKsjO,GAEjB,OAAyB,IAArB0G,EAAU5tO,OACL,KAEF,CACLpC,KAAM,UACNo5E,QAAS,UACTz1D,WAAY,CAAEgtN,eAAe,EAAM59N,UAAW,CAAC,cAC/C1O,SAAU,CACR,CACErE,KAAM,UACNo5E,QAAS,KACTz1D,WAAY,CAAE7M,GAAI,iBAAkB/D,UAAW,CAAC,YAChD1O,SAAU,CAAC+pO,GAAE,OAAQzoN,EAAGirN,iBAE1B,CAAE5wO,KAAM,OAAQgB,MAAO,MACvB,CACEhB,KAAM,UACNo5E,QAAS,KACTz1D,WAAY,GACZtf,SAAUwrO,GAAOG,GAAW,IAE9B,CAAEhwO,KAAM,OAAQgB,MAAO,QAI7B,SAASuqF,GAAW5lE,EAAIpjB,GACtB,OAAOojB,EAAGpjB,EAAM,aAAcstO,GAAOtB,GAAI5oN,EAAIpjB,IAAO,IAEtD,SAASsuO,GAAUlrN,EAAIpjB,GACrB,MAAO,CAACojB,EAAGpjB,EAAM,MAAO6rO,GAAE,OAAQ,OAEpC,SAAS1/N,GAAKiX,EAAIpjB,GAChB,MAAMvB,EAAQuB,EAAKvB,MAAQuB,EAAKvB,MAAQ,KAAO,GACzCk8H,EAAO36H,EAAK26H,MAAQ36H,EAAK26H,KAAK7qH,MAAM,uBACpCjI,EAAQ,GACV8yH,IACF9yH,EAAM2I,UAAY,CAAC,YAAcmqH,IAEnC,MAAM1hH,EAAQmK,EAAGpjB,EAAM,OAAQ6H,EAAO,CAACgkO,GAAE,OAAQptO,KAIjD,OAHIuB,EAAK+0N,OACP97M,EAAM3W,KAAO,CAAEyyN,KAAM/0N,EAAK+0N,OAErB3xM,EAAGpjB,EAAKm4B,SAAU,MAAO,CAAClf,IAEnC,SAAS61D,GAAc1rD,EAAIpjB,GACzB,OAAOojB,EAAGpjB,EAAM,MAAOgsO,GAAI5oN,EAAIpjB,IAEjC,SAASumO,GAASnjN,EAAIpjB,GACpB,OAAOojB,EAAGpjB,EAAM,KAAMgsO,GAAI5oN,EAAIpjB,IAEhC,SAASuuO,GAAkBnrN,EAAIpjB,GAC7B,MAAMuU,EAAKkP,OAAOzjB,EAAKk5N,YACjB0U,EAASV,GAAY34N,EAAG0C,eACxBlO,EAASqa,EAAGsqN,cAAcznO,QAAQsO,GACxC,IAAIokD,GACY,IAAZ5vD,GACFqa,EAAGsqN,cAAcjqO,KAAK8Q,GACtB6O,EAAG2qN,eAAex5N,GAAM,EACxBokD,EAAUv1C,EAAGsqN,cAAc7tO,SAE3BujB,EAAG2qN,eAAex5N,KAClBokD,EAAU5vD,EAAS,GAErB,MAAMylO,EAAeprN,EAAG2qN,eAAex5N,GACvC,OAAO6O,EAAGpjB,EAAM,MAAO,CACrBojB,EACEpjB,EAAKm4B,SACL,IACA,CACEwwD,KAAM,IAAMvlE,EAAG8kE,cAAgB,MAAQ0lJ,EACvCr5N,GAAI6O,EAAG8kE,cAAgB,SAAW0lJ,GAAUY,EAAe,EAAI,IAAMA,EAAe,IACpFC,iBAAiB,EACjBv5G,gBAAiB,kBAEnB,CAAC22G,GAAE,OAAQpoN,OAAOk1C,QAIxB,SAAS+1K,GAAStrN,EAAIpjB,GACpB,MAAM2tO,EAAevqN,EAAGuqN,aACxB,IAAIzqN,EAAK,EACT,MAAOA,KAAMyqN,EACXzqN,IACF,MAAMg2M,EAAaz1M,OAAOP,GAO1B,OANAyqN,EAAazU,GAAc,CACzBz7N,KAAM,qBACNy7N,aACAp3N,SAAU,CAAC,CAAErE,KAAM,YAAaqE,SAAU9B,EAAK8B,WAC/Cq2B,SAAUn4B,EAAKm4B,UAEVo2M,GAAkBnrN,EAAI,CAC3B3lB,KAAM,oBACNy7N,aACA/gM,SAAUn4B,EAAKm4B,WAGnB,SAASw2M,GAAQvrN,EAAIpjB,GACnB,OAAOojB,EAAGpjB,EAAM,IAAMA,EAAKo3E,MAAO40J,GAAI5oN,EAAIpjB,IAE5C,SAAS6yF,GAAKzvE,EAAIpjB,GAChB,OAAOojB,EAAGotI,UAAYptI,EAAG2oN,QAAQ/rO,EAAM6rO,GAAE,MAAO7rO,EAAKvB,QAAU,KAEjE,IAAImwO,GAAc,GAClB,SAASC,GAAeC,GACtB,IAAInuO,EAAGoW,EAAIwZ,EAAQq+M,GAAYE,GAC/B,GAAIv+M,EACF,OAAOA,EAGT,IADAA,EAAQq+M,GAAYE,GAAW,GAC1BnuO,EAAI,EAAGA,EAAI,IAAKA,IACnBoW,EAAK0M,OAAO8pC,aAAa5sD,GACrB,cAAc2N,KAAKyI,GACrBwZ,EAAM9sB,KAAKsT,GAEXwZ,EAAM9sB,KAAK,KAAO,IAAM9C,EAAEwU,SAAS,IAAI6B,eAAehT,OAAO,IAGjE,IAAKrD,EAAI,EAAGA,EAAImuO,EAAQjvO,OAAQc,IAC9B4vB,EAAMu+M,EAAQv3N,WAAW5W,IAAMmuO,EAAQnuO,GAEzC,OAAO4vB,EAET,SAASw+M,GAAOn7N,EAASk7N,EAASE,GAChC,IAAIruO,EAAGgI,EAAGsQ,EAAOg2N,EAAU1+M,EAAOxR,EAAS,GAS3C,IARuB,kBAAZ+vN,IACTE,EAAcF,EACdA,EAAUC,GAAOG,cAEQ,qBAAhBF,IACTA,GAAc,GAEhBz+M,EAAQs+M,GAAeC,GAClBnuO,EAAI,EAAGgI,EAAIiL,EAAQ/T,OAAQc,EAAIgI,EAAGhI,IAErC,GADAsY,EAAQrF,EAAQ2D,WAAW5W,GACvBquO,GAAyB,KAAV/1N,GAAgBtY,EAAI,EAAIgI,GACrC,iBAAiB2F,KAAKsF,EAAQ5P,MAAMrD,EAAI,EAAGA,EAAI,IACjDoe,GAAUnL,EAAQ5P,MAAMrD,EAAGA,EAAI,GAC/BA,GAAK,OAIT,GAAIsY,EAAQ,IACV8F,GAAUwR,EAAMtX,QAGlB,GAAIA,GAAS,OAASA,GAAS,MAA/B,CACE,GAAIA,GAAS,OAASA,GAAS,OAAStY,EAAI,EAAIgI,IAC9CsmO,EAAWr7N,EAAQ2D,WAAW5W,EAAI,GAC9BsuO,GAAY,OAASA,GAAY,OAAO,CAC1ClwN,GAAUsuN,mBAAmBz5N,EAAQjT,GAAKiT,EAAQjT,EAAI,IACtDA,IACA,SAGJoe,GAAU,iBAGZA,GAAUsuN,mBAAmBz5N,EAAQjT,IAEvC,OAAOoe,EAETgwN,GAAOG,aAAe,uBACtBH,GAAOI,eAAiB,YACxB,IAAIC,GAAWL,GACf,SAASM,GAAOjsN,EAAIpjB,GAClB,MAAMsvO,EAAUtvO,EAAKurO,cACrB,IAAIgE,EAAS,IAMb,GALgB,cAAZD,EACFC,GAAU,KACW,SAAZD,IACTC,GAAU,KAAOvvO,EAAKimE,OAASjmE,EAAKk5N,YAAc,KAElC,mBAAdl5N,EAAKvC,KACP,OAAOouO,GAAE,OAAQ,KAAO7rO,EAAK2tD,IAAM4hL,GAErC,MAAMC,EAAWxD,GAAI5oN,EAAIpjB,GACnBkkC,EAAQsrM,EAAS,GACnBtrM,GAAwB,SAAfA,EAAMzmC,KACjBymC,EAAMzlC,MAAQ,IAAMylC,EAAMzlC,MAE1B+wO,EAASp0N,QAAQywN,GAAE,OAAQ,MAE7B,MAAMx0F,EAAOm4F,EAASA,EAAS3vO,OAAS,GAMxC,OALIw3I,GAAsB,SAAdA,EAAK55I,KACf45I,EAAK54I,OAAS8wO,EAEdC,EAAS/rO,KAAKooO,GAAE,OAAQ0D,IAEnBC,EAET,SAASC,GAAersN,EAAIpjB,GAC1B,MAAMijO,EAAM7/M,EAAG01M,WAAW94N,EAAKk5N,YAC/B,IAAK+J,EACH,OAAOoM,GAAOjsN,EAAIpjB,GAEpB,MAAM6H,EAAQ,CAAEihD,IAAKsmL,GAASnM,EAAIxnJ,KAAO,IAAK9tB,IAAK3tD,EAAK2tD,KAIxD,OAHkB,OAAds1K,EAAItxM,YAAgC,IAAdsxM,EAAItxM,QAC5B9pB,EAAM8pB,MAAQsxM,EAAItxM,OAEbvO,EAAGpjB,EAAM,MAAO6H,GAEzB,SAASwE,GAAM+W,EAAIpjB,GACjB,MAAM6H,EAAQ,CAAEihD,IAAKsmL,GAASpvO,EAAKy7E,KAAM9tB,IAAK3tD,EAAK2tD,KAInD,OAHmB,OAAf3tD,EAAK2xB,YAAiC,IAAf3xB,EAAK2xB,QAC9B9pB,EAAM8pB,MAAQ3xB,EAAK2xB,OAEdvO,EAAGpjB,EAAM,MAAO6H,GAEzB,SAAS6nO,GAAWtsN,EAAIpjB,GACtB,OAAOojB,EAAGpjB,EAAM,OAAQ,CAAC6rO,GAAE,OAAQ7rO,EAAKvB,MAAM4b,QAAQ,YAAa,QAErE,SAASs1N,GAAcvsN,EAAIpjB,GACzB,MAAMijO,EAAM7/M,EAAG01M,WAAW94N,EAAKk5N,YAC/B,IAAK+J,EACH,OAAOoM,GAAOjsN,EAAIpjB,GAEpB,MAAM6H,EAAQ,CAAE8gF,KAAMymJ,GAASnM,EAAIxnJ,KAAO,KAI1C,OAHkB,OAAdwnJ,EAAItxM,YAAgC,IAAdsxM,EAAItxM,QAC5B9pB,EAAM8pB,MAAQsxM,EAAItxM,OAEbvO,EAAGpjB,EAAM,IAAK6H,EAAOmkO,GAAI5oN,EAAIpjB,IAEtC,SAASsM,GAAK8W,EAAIpjB,GAChB,MAAM6H,EAAQ,CAAE8gF,KAAMymJ,GAASpvO,EAAKy7E,MAIpC,OAHmB,OAAfz7E,EAAK2xB,YAAiC,IAAf3xB,EAAK2xB,QAC9B9pB,EAAM8pB,MAAQ3xB,EAAK2xB,OAEdvO,EAAGpjB,EAAM,IAAK6H,EAAOmkO,GAAI5oN,EAAIpjB,IAEtC,SAAS8mO,GAAS1jN,EAAIpjB,EAAM+Q,GAC1B,MAAMgO,EAASitN,GAAI5oN,EAAIpjB,GACjButO,EAAQx8N,EAAS6+N,GAAU7+N,GAAU8+N,GAAc7vO,GACnD6H,EAAQ,GACRioO,EAAU,GAChB,GAA4B,mBAAjB9vO,EAAKo/E,QAAuB,CACrC,IAAI+gJ,EACAphN,EAAO,IAAyB,YAAnBA,EAAO,GAAGthB,MAA4C,MAAtBshB,EAAO,GAAG83D,QACzDspJ,EAAaphN,EAAO,IAEpBohN,EAAa/8M,EAAG,KAAM,IAAK,IAC3BrE,EAAO3D,QAAQ+kN,IAEbA,EAAWr+N,SAASjC,OAAS,GAC/BsgO,EAAWr+N,SAASsZ,QAAQywN,GAAE,OAAQ,MAExC1L,EAAWr+N,SAASsZ,QAClBgI,EAAG,KAAM,QAAS,CAChB3lB,KAAM,WACN2hF,QAASp/E,EAAKo/E,QACdzU,UAAU,KAGd9iE,EAAM2I,UAAY,CAAC,kBAErB,IAAIzH,GAAU,EACd,QAASA,EAASgW,EAAOlf,OAAQ,CAC/B,MAAM4R,EAAQsN,EAAOhW,IACjBwkO,GAAoB,IAAXxkO,GAA+B,YAAf0I,EAAMhU,MAAwC,MAAlBgU,EAAMolE,UAC7Di5J,EAAQrsO,KAAKooO,GAAE,OAAQ,OAEN,YAAfp6N,EAAMhU,MAAwC,MAAlBgU,EAAMolE,SAAoB02J,EAGxDuC,EAAQrsO,KAAKgO,GAFbq+N,EAAQrsO,QAAQgO,EAAM3P,UAK1B,MAAMu1I,EAAOt4H,EAAOA,EAAOlf,OAAS,GAIpC,OAHIw3I,IAASk2F,GAAW,YAAal2F,GAA0B,MAAjBA,EAAKxgE,SACjDi5J,EAAQrsO,KAAKooO,GAAE,OAAQ,OAElBzoN,EAAGpjB,EAAM,KAAM6H,EAAOioO,GAE/B,SAASF,GAAU5vO,GACjB,IAAIutO,EAAQvtO,EAAKyrO,OACjB,MAAMhrL,EAAYzgD,EAAK8B,SACvB,IAAIiH,GAAU,EACd,OAAQwkO,KAAWxkO,EAAS03C,EAAU5gD,OACpC0tO,EAAQsC,GAAcpvL,EAAU13C,IAElC,OAAO84E,QAAQ0rJ,GAEjB,SAASsC,GAAc7vO,GACrB,MAAMyrO,EAASzrO,EAAKyrO,OACpB,YAAkB,IAAXA,GAAgC,OAAXA,EAAkBzrO,EAAK8B,SAASjC,OAAS,EAAI4rO,EAE3E,SAAS3+J,GAAK1pD,EAAIpjB,GAChB,MAAM6H,EAAQ,GACR/G,EAAOd,EAAKwrO,QAAU,KAAO,KAC7BjtJ,EAAQytJ,GAAI5oN,EAAIpjB,GACtB,IAAI+I,GAAU,EACY,kBAAf/I,EAAKqS,OAAqC,IAAfrS,EAAKqS,QACzCxK,EAAMwK,MAAQrS,EAAKqS,OAErB,QAAStJ,EAASw1E,EAAM1+E,OAAQ,CAC9B,MAAM+lF,EAAOrH,EAAMx1E,GACnB,GAAkB,YAAd68E,EAAKnoF,MAAuC,OAAjBmoF,EAAK/O,SAAoB+O,EAAKxkE,YAAcpf,MAAMk/E,QAAQ0E,EAAKxkE,WAAW5Q,YAAco1E,EAAKxkE,WAAW5Q,UAAUqwE,SAAS,kBAAmB,CAC3Kh5E,EAAM2I,UAAY,CAAC,sBACnB,OAGJ,OAAO4S,EAAGpjB,EAAMc,EAAM+G,EAAOylO,GAAO/uJ,GAAO,IAE7C,SAAS8oJ,GAAUjkN,EAAIpjB,GACrB,OAAOojB,EAAGpjB,EAAM,IAAKgsO,GAAI5oN,EAAIpjB,IAE/B,SAAS+vO,GAAO3sN,EAAIpjB,GAClB,OAAOojB,EAAG2oN,QAAQ/rO,EAAM6rO,GAAE,OAAQyB,GAAOtB,GAAI5oN,EAAIpjB,MAEnD,SAASywE,GAAOrtD,EAAIpjB,GAClB,OAAOojB,EAAGpjB,EAAM,SAAUgsO,GAAI5oN,EAAIpjB,IAEpC,SAASgwO,GAAM5sN,EAAIpjB,GACjB,MAAMugI,EAAOvgI,EAAK8B,SAClB,IAAIiH,GAAU,EACd,MAAMmrC,EAAQl0C,EAAKk0C,OAAS,GACtBn1B,EAAS,GACf,QAAShW,EAASw3H,EAAK1gI,OAAQ,CAC7B,MAAMowO,EAAM1vG,EAAKx3H,GAAQjH,SACnBhB,EAAkB,IAAXiI,EAAe,KAAO,KAC7BsN,EAAM,GACZ,IAAI65N,GAAa,EACjB,MAAMrwO,EAASG,EAAKk0C,MAAQA,EAAMr0C,OAASowO,EAAIpwO,OAC/C,QAASqwO,EAAYrwO,EAAQ,CAC3B,MAAMswO,EAAOF,EAAIC,GACjB75N,EAAI5S,KACF2f,EAAG+sN,EAAMrvO,EAAM,CAAEozC,MAAOA,EAAMg8L,IAAcC,EAAOnE,GAAI5oN,EAAI+sN,GAAQ,KAGvEpxN,EAAOhW,GAAUqa,EAAGm9G,EAAKx3H,GAAS,KAAMukO,GAAOj3N,GAAK,IAEtD,OAAO+M,EACLpjB,EACA,QACAstO,GACE,CAAClqN,EAAGrE,EAAO,GAAGoZ,SAAU,QAASm1M,GAAO,CAACvuN,EAAO,KAAK,KAAQ/C,OAC3D+C,EAAO,GAAKqE,EACV,CACE/Q,MAAOo/G,GAAW1yG,EAAO,IACzBzM,IAAKq/G,GAAS5yG,EAAOA,EAAOlf,OAAS,KAEvC,QACAytO,GAAOvuN,EAAO/a,MAAM,IAAI,IACtB,KAEN,IAIN,SAASyX,GAAK2H,EAAIpjB,GAChB,OAAOojB,EAAG2oN,QACR/rO,EACA6rO,GAAE,OAAQpoN,OAAOzjB,EAAKvB,OAAO4b,QAAQ,0BAA2B,QAGpE,SAASutN,GAAcxkN,EAAIpjB,GACzB,OAAOojB,EAAGpjB,EAAM,MAElB,MAAMw7I,GAAW,CACfxyD,cACAonJ,MAAO9B,GACPniO,QACAzF,OAAQooE,GACRy3J,YACAgI,qBACAG,YACAC,WACA97I,QACA48I,kBACApjO,SACAqjO,cACAC,iBACArjO,QACAw6N,YACAh6J,QACAu6J,aACAh/N,KAAM0nO,GACNt/J,UACAu/J,SACAv0N,QACAmsN,iBACAyI,KAAMC,GACN72J,KAAM62J,GACNxX,WAAYwX,GACZC,mBAAoBD,IAEtB,SAASA,KACP,OAAO,KAET,MAAME,GAAQ,GAAG98N,eACjB,SAAS+8N,GAAQtuJ,EAAMxkF,GACrB,MAAMm3I,EAAWn3I,GAAW,GACtB+yO,EAAa57F,EAAS0e,qBAAsB,EAC5Cm6E,EAAe,GAmBrB,OAlBAvqN,EAAGotI,UAAYkgF,EACfttN,EAAG8kE,mBAA2C,IAA3B4sD,EAAS5sD,eAAuD,OAA3B4sD,EAAS5sD,cAAyB,gBAAkB4sD,EAAS5sD,cACrH9kE,EAAGirN,cAAgBv5F,EAASu5F,eAAiB,YAC7CjrN,EAAG8qN,kBAAoBp5F,EAASo5F,mBAAqB,kBACrD9qN,EAAG01M,WAAa8T,GAAYzqJ,GAC5B/+D,EAAGuqN,aAAeA,EAClBvqN,EAAGsqN,cAAgB,GACnBtqN,EAAG2qN,eAAiB,GACpB3qN,EAAG2oN,QAAUA,EACb3oN,EAAGo4H,SAAW,IAAKA,MAAa1G,EAAS0G,UACzCp4H,EAAG+oN,eAAiBr3F,EAASq3F,eAC7B/oN,EAAGm6H,YAAczI,EAASyI,YAC1B16D,GAAQV,EAAM,qBAAuBkI,IACnC,MAAM91E,EAAKkP,OAAO4mE,EAAY6uI,YAAYliN,cACrCw5N,GAAMhvO,KAAKmsO,EAAcp5N,KAC5Bo5N,EAAap5N,GAAM81E,KAGhBjnE,EACP,SAAS2oN,EAAQntN,EAAMC,GACrB,GAAID,GAAQ,SAAUA,GAAQA,EAAKtc,KAAM,CACvC,MAAMtB,EAAQ4d,EAAKtc,KACftB,EAAM2vO,QACW,YAAf9xN,EAAMphB,OACRohB,EAAQ,CACNphB,KAAM,UACNo5E,QAAS,GACTz1D,WAAY,GACZtf,SAAU,KAGd+c,EAAMg4D,QAAU71E,EAAM2vO,OAEL,YAAf9xN,EAAMphB,MAAsBuD,EAAM4vO,cACpC/xN,EAAMuC,WAAa,IAAKvC,EAAMuC,cAAepgB,EAAM4vO,cAEjD,aAAc/xN,GAASA,EAAM/c,UAAYd,EAAM6vO,YACjDhyN,EAAM/c,SAAWd,EAAM6vO,WAG3B,GAAIjyN,EAAM,CACR,MAAMhZ,EAAM,SAAUgZ,EAAOA,EAAO,CAAEuZ,SAAUvZ,GAC3CwtN,GAAUxmO,KACbiZ,EAAMsZ,SAAW,CAAE9lB,MAAOo/G,GAAW7rH,GAAM0M,IAAKq/G,GAAS/rH,KAG7D,OAAOiZ,EAET,SAASuE,EAAGpjB,EAAM62E,EAAShvE,EAAO44C,GAKhC,OAJIz+C,MAAMk/E,QAAQr5E,KAChB44C,EAAY54C,EACZA,EAAQ,IAEHkkO,EAAQ/rO,EAAM,CACnBvC,KAAM,UACNo5E,UACAz1D,WAAYvZ,GAAS,GACrB/F,SAAU2+C,GAAa,MAI7B,SAASqwL,GAAO3uJ,EAAMxkF,GACpB,MAAMylB,EAAKqtN,GAAQtuJ,EAAMxkF,GACnBqC,EAAOisO,GAAI7oN,EAAI++D,EAAM,MACrB4uJ,EAAOvD,GAAOpqN,GAIpB,OAHI2tN,GACF/wO,EAAK8B,SAAS2B,KAAKooO,GAAE,OAAQ,MAAOkF,GAE/B/uO,MAAMk/E,QAAQlhF,GAAQ,CAAEvC,KAAM,OAAQqE,SAAU9B,GAASA,EAElE,MAAMgxO,GAAe,SAEVC,EAAatzO,GACpB,OAAOszO,GAAe,QAASA,EAAcC,GAAOD,EAAatzO,GAAWwzO,GAAOF,GAAetzO,IAGhGyzO,GAAiBJ,GACvB,SAASE,GAAOD,EAAatzO,GAC3B,MAAO,CAACqC,EAAMgoD,EAAMpjC,KAClBqsN,EAAYpyO,IAAIiyO,GAAO9wO,EAAMrC,GAAUqqD,EAAO8wF,IAC5Cl0H,EAAKk0H,MAIX,SAASq4F,GAAOxzO,GACd,OAAQqC,GAAS8wO,GAAO9wO,EAAMrC,GAEhC,SAAS0zO,GAAKv4F,GACZ,GAAIA,EACF,MAAMA;;;;;;GASV,IAAIw4F,GAAW,SAAmB3xO,GAChC,OAAc,MAAPA,GAAkC,MAAnBA,EAAI6jD,aAA2D,oBAA7B7jD,EAAI6jD,YAAY8tL,UAA2B3xO,EAAI6jD,YAAY8tL,SAAS3xO,IAE1H4xO,GAASnzO,OAAOgV,UAAUM,eAC1B89N,GAAQpzO,OAAOgV,UAAU+B,SACzB9W,GAAiBD,OAAOC,eACxBozO,GAAOrzO,OAAOszO,yBACdxwJ,GAAU,SAAkB/qE,GAC9B,MAA6B,oBAAlBnU,MAAMk/E,QACRl/E,MAAMk/E,QAAQ/qE,GAEI,mBAApBq7N,GAAMhwO,KAAK2U,IAEhBw7N,GAAkB,SAAuBhyO,GAC3C,IAAKA,GAA2B,oBAApB6xO,GAAMhwO,KAAK7B,GACrB,OAAO,EAET,IAKI47B,EALAq2M,EAAoBL,GAAO/vO,KAAK7B,EAAK,eACrCkyO,EAAmBlyO,EAAI6jD,aAAe7jD,EAAI6jD,YAAYpwC,WAAam+N,GAAO/vO,KAAK7B,EAAI6jD,YAAYpwC,UAAW,iBAC9G,GAAIzT,EAAI6jD,cAAgBouL,IAAsBC,EAC5C,OAAO,EAGT,IAAKt2M,KAAQ57B,GAEb,MAAuB,qBAAT47B,GAAwBg2M,GAAO/vO,KAAK7B,EAAK47B,IAErDu2M,GAAc,SAAsB/xO,EAAQpC,GAC1CU,IAAmC,cAAjBV,EAAQmD,KAC5BzC,GAAe0B,EAAQpC,EAAQmD,KAAM,CACnCixO,YAAY,EACZC,cAAc,EACdvzO,MAAOd,EAAQs0O,SACfC,UAAU,IAGZnyO,EAAOpC,EAAQmD,MAAQnD,EAAQs0O,UAG/BE,GAAc,SAAsBxyO,EAAKmB,GAC3C,GAAa,cAATA,EAAsB,CACxB,IAAKywO,GAAO/vO,KAAK7B,EAAKmB,GACpB,OACK,GAAI2wO,GACT,OAAOA,GAAK9xO,EAAKmB,GAAMrC,MAG3B,OAAOkB,EAAImB,IAETqxC,GAAS,SAASigM,IACpB,IAAIz0O,EAASmD,EAAMgoD,EAAKhgC,EAAMupN,EAAax0F,EACvC99I,EAASsT,UAAU,GACnB1S,EAAI,EACJd,EAASwT,UAAUxT,OACnByyO,GAAO,EASX,IARsB,mBAAXvyO,IACTuyO,EAAOvyO,EACPA,EAASsT,UAAU,IAAM,GACzB1S,EAAI,IAEQ,MAAVZ,GAAoC,kBAAXA,GAAyC,oBAAXA,KACzDA,EAAS,IAEJY,EAAId,IAAUc,EAEnB,GADAhD,EAAU0V,UAAU1S,GACL,MAAXhD,EACF,IAAKmD,KAAQnD,EACXmrD,EAAMqpL,GAAYpyO,EAAQe,GAC1BgoB,EAAOqpN,GAAYx0O,EAASmD,GACxBf,IAAW+oB,IACTwpN,GAAQxpN,IAAS6oN,GAAgB7oN,KAAUupN,EAAcnxJ,GAAQp4D,MAC/DupN,GACFA,GAAc,EACdx0F,EAAQ/0F,GAAOo4B,GAAQp4B,GAAOA,EAAM,IAEpC+0F,EAAQ/0F,GAAO6oL,GAAgB7oL,GAAOA,EAAM,GAE9CgpL,GAAY/xO,EAAQ,CAAEe,OAAMmxO,SAAUG,EAAQE,EAAMz0F,EAAO/0H,MAClC,qBAATA,GAChBgpN,GAAY/xO,EAAQ,CAAEe,OAAMmxO,SAAUnpN,KAMhD,OAAO/oB,GAET,SAASwyO,GAAe9zO,GACtB,GAA8C,oBAA1CL,OAAOgV,UAAU+B,SAAS3T,KAAK/C,GACjC,OAAO,EAET,MAAM2U,EAAYhV,OAAOo0O,eAAe/zO,GACxC,OAAqB,OAAd2U,GAAsBA,IAAchV,OAAOgV,UAEpD,SAASq/N,KACP,MAAMvzO,EAAM,GACNwzO,EAAW,CAAE7zO,IAAK8zO,EAAMv5E,OAC9B,OAAOs5E,EACP,SAASC,KAAQznJ,GACf,IAAI0nJ,GAAmB,EACvB,MAAMztO,EAAW+lF,EAAOhmF,MACxB,GAAwB,oBAAbC,EACT,MAAM,IAAIqzI,UAAU,2CAA6CrzI,GAGnE,SAASyf,EAAKk0H,KAAU1vH,GACtB,MAAMtqB,EAAKI,IAAM0zO,GACjB,IAAI7pO,GAAU,EACd,GAAI+vI,EACF3zI,EAAS2zI,OADX,CAIA,QAAS/vI,EAASmiF,EAAOrrF,OACA,OAAnBupB,EAAOrgB,SAAuC,IAAnBqgB,EAAOrgB,KACpCqgB,EAAOrgB,GAAUmiF,EAAOniF,IAG5BmiF,EAAS9hE,EACLtqB,EACFwiI,GAAKxiI,EAAI8lB,EAAT08G,IAAkBl4G,GAElBjkB,EAAS,QAASikB,IAjBtBxE,EAAK,QAASsmE,GAqBhB,SAASkuE,EAAIy5E,GACX,GAA0B,oBAAfA,EACT,MAAM,IAAIr6F,UACR,+CAAiDq6F,GAIrD,OADA3zO,EAAIuE,KAAKovO,GACFH,GAGX,SAASpxG,GAAKwxG,EAAY3tO,GACxB,IAAI2zJ,EACJ,OAAOg3E,EACP,SAASA,KAAWruJ,GAClB,MAAMsxJ,EAAoBD,EAAWjzO,OAAS4hF,EAAW5hF,OACzD,IAAIkf,EACAg0N,GACFtxJ,EAAWh+E,KAAKm2C,GAElB,IACE76B,EAAS+zN,EAAWx/N,MAAM/R,KAAMkgF,GAChC,MAAOq3D,GACP,MAAMk6F,EAAY,EAIlB,GAAID,GAAqBj6E,EACvB,MAAMk6E,EAER,OAAOp5L,EAAKo5L,GAETD,IACCh0N,aAAkBnhB,QACpBmhB,EAAOta,KAAKA,EAAMm1C,GACT76B,aAAkB1b,MAC3Bu2C,EAAK76B,GAELta,EAAKsa,IAIX,SAAS66B,EAAKk/F,KAAU1vH,GACjB0vI,IACHA,GAAS,EACT3zJ,EAAS2zI,KAAU1vH,IAGvB,SAAS3kB,EAAKhG,GACZm7C,EAAK,KAAMn7C,IAGf,MAAMw0O,WAAqB5vO,MAmBzB,YAAY21I,EAAQ58G,EAAO7mB,GACzB,MAAMyX,EAAQ,CAAC,KAAM,MACrB,IAAI+pH,EAAY,CAEd1kI,MAAO,CAAEkJ,KAAM,KAAM6J,OAAQ,MAE7B9S,IAAK,CAAEiJ,KAAM,KAAM6J,OAAQ,OAO7B,GALA05D,QACqB,kBAAV1iD,IACT7mB,EAAS6mB,EACTA,OAAQ,GAEY,kBAAX7mB,EAAqB,CAC9B,MAAMxM,EAASwM,EAAOtP,QAAQ,MACd,IAAZ8C,EACFikB,EAAM,GAAKzX,GAEXyX,EAAM,GAAKzX,EAAOvR,MAAM,EAAG+E,GAC3BikB,EAAM,GAAKzX,EAAOvR,MAAM+E,EAAS,IAGjCqzB,IACE,SAAUA,GAAS,aAAcA,EAC/BA,EAAMjE,WACR4+G,EAAY36G,EAAMjE,UAEX,UAAWiE,GAAS,QAASA,EACtC26G,EAAY36G,GACH,SAAUA,GAAS,WAAYA,KACxC26G,EAAU1kI,MAAQ+pB,IAGtB76B,KAAKT,KAAOkkO,GAAkB5oM,IAAU,MACxC76B,KAAK45I,QAA4B,kBAAXnC,EAAsBA,EAAOmC,QAAUnC,EAC7Dz3I,KAAK4oF,MAAQ,GACS,kBAAX6uD,GAAuBA,EAAO7uD,QACvC5oF,KAAK4oF,MAAQ6uD,EAAO7uD,OAEtB5oF,KAAKy3I,OAASz3I,KAAK45I,QACnB55I,KAAK2xO,MACL3xO,KAAKga,KAAOw7H,EAAU1kI,MAAMkJ,KAC5Bha,KAAK6jB,OAAS2xH,EAAU1kI,MAAM+S,OAC9B7jB,KAAK42B,SAAW4+G,EAChBx1I,KAAKkK,OAASuhB,EAAM,GACpBzrB,KAAK4xO,OAASnmN,EAAM,GACpBzrB,KAAKymD,KACLzmD,KAAK6xO,OACL7xO,KAAK8xO,SACL9xO,KAAKk6E,IACLl6E,KAAK+xO,MAGTL,GAAa7/N,UAAU40C,KAAO,GAC9BirL,GAAa7/N,UAAUtS,KAAO,GAC9BmyO,GAAa7/N,UAAU4lI,OAAS,GAChCi6F,GAAa7/N,UAAU+nI,QAAU,GACjC83F,GAAa7/N,UAAU+2E,MAAQ,GAC/B8oJ,GAAa7/N,UAAU8/N,MAAQ,KAC/BD,GAAa7/N,UAAUgS,OAAS,KAChC6tN,GAAa7/N,UAAUmI,KAAO,KAC9B03N,GAAa7/N,UAAU3H,OAAS,KAChCwnO,GAAa7/N,UAAU+/N,OAAS,KAChCF,GAAa7/N,UAAU+kB,SAAW,KAClC,MAAMo3G,GAAO,CAAEgkG,YAAUC,WAASC,WAAS/vL,QAAMgwL,IAAK,KACtD,SAASH,GAASI,EAAO59M,GACvB,QAAY,IAARA,GAAiC,kBAARA,EAC3B,MAAM,IAAIyiH,UAAU,mCAEtBo7F,GAAaD,GACb,IAGIE,EAHAxhO,EAAQ,EACRC,GAAO,EACPvJ,EAAS4qO,EAAM9zO,OAEnB,QAAY,IAARk2B,GAAiC,IAAfA,EAAIl2B,QAAgBk2B,EAAIl2B,OAAS8zO,EAAM9zO,OAAQ,CACnE,MAAOkJ,IACL,GAAiC,KAA7B4qO,EAAMp8N,WAAWxO,IACnB,GAAI8qO,EAAc,CAChBxhO,EAAQtJ,EAAS,EACjB,YAEOuJ,EAAM,IACfuhO,GAAe,EACfvhO,EAAMvJ,EAAS,GAGnB,OAAOuJ,EAAM,EAAI,GAAKqhO,EAAM3vO,MAAMqO,EAAOC,GAE3C,GAAIyjB,IAAQ49M,EACV,MAAO,GAET,IAAIG,GAAoB,EACpBC,EAAWh+M,EAAIl2B,OAAS,EAC5B,MAAOkJ,IACL,GAAiC,KAA7B4qO,EAAMp8N,WAAWxO,IACnB,GAAI8qO,EAAc,CAChBxhO,EAAQtJ,EAAS,EACjB,YAGE+qO,EAAmB,IACrBD,GAAe,EACfC,EAAmB/qO,EAAS,GAE1BgrO,GAAY,IACVJ,EAAMp8N,WAAWxO,KAAYgtB,EAAIxe,WAAWw8N,KAC1CA,EAAW,IACbzhO,EAAMvJ,IAGRgrO,GAAY,EACZzhO,EAAMwhO,IAUd,OALIzhO,IAAUC,EACZA,EAAMwhO,EACGxhO,EAAM,IACfA,EAAMqhO,EAAM9zO,QAEP8zO,EAAM3vO,MAAMqO,EAAOC,GAE5B,SAASkhO,GAAQG,GAEf,GADAC,GAAaD,GACQ,IAAjBA,EAAM9zO,OACR,MAAO,IAET,IAEIm0O,EAFA1hO,GAAO,EACPvJ,EAAS4qO,EAAM9zO,OAEnB,QAASkJ,EACP,GAAiC,KAA7B4qO,EAAMp8N,WAAWxO,IACnB,GAAIirO,EAAgB,CAClB1hO,EAAMvJ,EACN,YAEQirO,IACVA,GAAiB,GAGrB,OAAO1hO,EAAM,EAA4B,KAAxBqhO,EAAMp8N,WAAW,GAAY,IAAM,IAAc,IAARjF,GAAqC,KAAxBqhO,EAAMp8N,WAAW,GAAY,KAAOo8N,EAAM3vO,MAAM,EAAGsO,GAE5H,SAASmhO,GAAQE,GACfC,GAAaD,GACb,IAKIK,EALAjrO,EAAS4qO,EAAM9zO,OACfyS,GAAO,EACP2hO,EAAY,EACZC,GAAY,EACZC,EAAc,EAElB,MAAOprO,IAAU,CACf,MAAMkQ,EAAQ06N,EAAMp8N,WAAWxO,GAC/B,GAAc,KAAVkQ,EAOA3G,EAAM,IACR0hO,GAAiB,EACjB1hO,EAAMvJ,EAAS,GAEH,KAAVkQ,EACEi7N,EAAW,EACbA,EAAWnrO,EACc,IAAhBorO,IACTA,EAAc,GAEPD,GAAY,IACrBC,GAAe,QAjBf,GAAIH,EAAgB,CAClBC,EAAYlrO,EAAS,EACrB,OAkBN,OAAImrO,EAAW,GAAK5hO,EAAM,GACV,IAAhB6hO,GACgB,IAAhBA,GAAqBD,IAAa5hO,EAAM,GAAK4hO,IAAaD,EAAY,EAC7D,GAEFN,EAAM3vO,MAAMkwO,EAAU5hO,GAE/B,SAASoxC,MAAQ0wL,GACf,IACIC,EADAtrO,GAAU,EAEd,QAASA,EAASqrO,EAASv0O,OACzB+zO,GAAaQ,EAASrrO,IAClBqrO,EAASrrO,KACXsrO,OAAoB,IAAXA,EAAoBD,EAASrrO,GAAUsrO,EAAS,IAAMD,EAASrrO,IAG5E,YAAkB,IAAXsrO,EAAoB,IAAMC,GAAUD,GAE7C,SAASC,GAAUX,GACjBC,GAAaD,GACb,MAAMY,EAAmC,KAAxBZ,EAAMp8N,WAAW,GAClC,IAAI9Y,EAAQ+1O,GAAgBb,GAAQY,GAOpC,OANqB,IAAjB91O,EAAMoB,QAAiB00O,IACzB91O,EAAQ,KAENA,EAAMoB,OAAS,GAA4C,KAAvC8zO,EAAMp8N,WAAWo8N,EAAM9zO,OAAS,KACtDpB,GAAS,KAEJ81O,EAAW,IAAM91O,EAAQA,EAElC,SAAS+1O,GAAgBb,EAAOc,GAC9B,IAKIx7N,EACAy7N,EANA31N,EAAS,GACT41N,EAAoB,EACpBC,GAAa,EACbC,EAAO,EACP9rO,GAAU,EAGd,QAASA,GAAU4qO,EAAM9zO,OAAQ,CAC/B,GAAIkJ,EAAS4qO,EAAM9zO,OACjBoZ,EAAQ06N,EAAMp8N,WAAWxO,OACpB,IAAc,KAAVkQ,EACT,MAEAA,EAAQ,GAEV,GAAc,KAAVA,EAAc,CAChB,GAAI27N,IAAc7rO,EAAS,GAAc,IAAT8rO,QAE3B,GAAID,IAAc7rO,EAAS,GAAc,IAAT8rO,EAAY,CAC/C,GAAI91N,EAAOlf,OAAS,GAA2B,IAAtB80O,GAAoE,KAAzC51N,EAAOxH,WAAWwH,EAAOlf,OAAS,IAAsD,KAAzCkf,EAAOxH,WAAWwH,EAAOlf,OAAS,GACnI,GAAIkf,EAAOlf,OAAS,GAElB,GADA60O,EAAiB31N,EAAO45H,YAAY,KAChC+7F,IAAmB31N,EAAOlf,OAAS,EAAG,CACpC60O,EAAiB,GACnB31N,EAAS,GACT41N,EAAoB,IAEpB51N,EAASA,EAAO/a,MAAM,EAAG0wO,GACzBC,EAAoB51N,EAAOlf,OAAS,EAAIkf,EAAO45H,YAAY,MAE7Di8F,EAAY7rO,EACZ8rO,EAAO,EACP,eAEG,GAAI91N,EAAOlf,OAAS,EAAG,CAC5Bkf,EAAS,GACT41N,EAAoB,EACpBC,EAAY7rO,EACZ8rO,EAAO,EACP,SAGAJ,IACF11N,EAASA,EAAOlf,OAAS,EAAIkf,EAAS,MAAQ,KAC9C41N,EAAoB,QAGlB51N,EAAOlf,OAAS,EAClBkf,GAAU,IAAM40N,EAAM3vO,MAAM4wO,EAAY,EAAG7rO,GAE3CgW,EAAS40N,EAAM3vO,MAAM4wO,EAAY,EAAG7rO,GAEtC4rO,EAAoB5rO,EAAS6rO,EAAY,EAE3CA,EAAY7rO,EACZ8rO,EAAO,OACY,KAAV57N,GAAgB47N,GAAQ,EACjCA,IAEAA,GAAQ,EAGZ,OAAO91N,EAET,SAAS60N,GAAaD,GACpB,GAAqB,kBAAVA,EACT,MAAM,IAAIn7F,UACR,mCAAqCs8F,KAAKjgG,UAAU8+F,IAI1D,MAAMoB,GAAO,CAAEC,QACf,SAASA,KACP,MAAO,IAET,SAASC,GAAMC,GACb,OAAyB,OAAlBA,GAAmD,kBAAlBA,GACxCA,EAAcvsJ,MACdusJ,EAAc3/N,OAEhB,SAAS4/N,GAAUxB,GACjB,GAAqB,kBAAVA,EACTA,EAAQ,IAAIyB,IAAIzB,QACX,IAAKsB,GAAMtB,GAAQ,CACxB,MAAM76F,EAAQ,IAAIN,UAChB,+EAAiFm7F,EAAQ,KAG3F,MADA76F,EAAM3sI,KAAO,uBACP2sI,EAER,GAAuB,UAAnB66F,EAAMxG,SAAsB,CAC9B,MAAMr0F,EAAQ,IAAIN,UAAU,kCAE5B,MADAM,EAAM3sI,KAAO,yBACP2sI,EAER,OAAOu8F,GAAoB1B,GAE7B,SAAS0B,GAAoB55J,GAC3B,GAAqB,KAAjBA,EAAI65J,SAAiB,CACvB,MAAMx8F,EAAQ,IAAIN,UAChB,wDAGF,MADAM,EAAM3sI,KAAO,4BACP2sI,EAER,MAAMy8F,EAAW95J,EAAI85J,SACrB,IAAIxsO,GAAU,EACd,QAASA,EAASwsO,EAAS11O,OACzB,GAAoC,KAAhC01O,EAASh+N,WAAWxO,IAAsD,KAApCwsO,EAASh+N,WAAWxO,EAAS,GAAW,CAChF,MAAMysO,EAAQD,EAASh+N,WAAWxO,EAAS,GAC3C,GAAc,KAAVysO,GAA0B,MAAVA,EAAe,CACjC,MAAM18F,EAAQ,IAAIN,UAChB,uDAGF,MADAM,EAAM3sI,KAAO,4BACP2sI,GAIZ,OAAO28F,mBAAmBF,GAE5B,MAAM/5N,GAAQ,CAAC,UAAW,OAAQ,WAAY,OAAQ,UAAW,WACjE,MAAMk6N,GAuBJ,YAAYj3O,GACV,IAAId,EAIFA,EAHGc,EAEuB,kBAAVA,GAAsBgsO,GAAOhsO,GACnC,CAAEA,SACHw2O,GAAMx2O,GACL,CAAE8wI,KAAM9wI,GAERA,EANA,GAQZ8C,KAAKe,KAAO,GACZf,KAAKo0O,SAAW,GAChBp0O,KAAKy5C,QAAU,GACfz5C,KAAKyzO,IAAMD,GAAKC,MAChBzzO,KAAK9C,MACL8C,KAAKq0O,OACLr0O,KAAKwd,OACLxd,KAAK6F,IACL,IAOIyjE,EAPA9hE,GAAU,EACd,QAASA,EAASyS,GAAM3b,OAAQ,CAC9B,MAAM4T,EAAQ+H,GAAMzS,GAChB0K,KAAS9V,QAA8B,IAAnBA,EAAQ8V,IAAwC,OAAnB9V,EAAQ8V,KAC3DlS,KAAKkS,GAAmB,YAAVA,EAAsB,IAAI9V,EAAQ8V,IAAU9V,EAAQ8V,IAItE,IAAKo3D,KAAQltE,EACN6d,GAAMqlE,SAAShW,KAClBtpE,KAAKspE,GAAQltE,EAAQktE,IAS3B,WACE,OAAOtpE,KAAKy5C,QAAQz5C,KAAKy5C,QAAQn7C,OAAS,GAW5C,SAAS8zO,GACHsB,GAAMtB,KACRA,EAAQwB,GAAUxB,IAEpBkC,GAAelC,EAAO,QAClBpyO,KAAKguI,OAASokG,GAChBpyO,KAAKy5C,QAAQv3C,KAAKkwO,GAMtB,cACE,MAA4B,kBAAdpyO,KAAKguI,KAAoBA,GAAKikG,QAAQjyO,KAAKguI,WAAQ,EAOnE,YAAYumG,GACVC,GAAWx0O,KAAKgyO,SAAU,WAC1BhyO,KAAKguI,KAAOA,GAAK7rF,KAAKoyL,GAAY,GAAIv0O,KAAKgyO,UAK7C,eACE,MAA4B,kBAAdhyO,KAAKguI,KAAoBA,GAAKgkG,SAAShyO,KAAKguI,WAAQ,EASpE,aAAaymG,GACXH,GAAeG,EAAW,YAC1BC,GAAWD,EAAW,YACtBz0O,KAAKguI,KAAOA,GAAK7rF,KAAKniD,KAAKiyO,SAAW,GAAIwC,GAK5C,cACE,MAA4B,kBAAdz0O,KAAKguI,KAAoBA,GAAKkkG,QAAQlyO,KAAKguI,WAAQ,EASnE,YAAY2mG,GAGV,GAFAD,GAAWC,EAAU,WACrBH,GAAWx0O,KAAKiyO,QAAS,WACrB0C,EAAU,CACZ,GAA+B,KAA3BA,EAAS3+N,WAAW,GACtB,MAAM,IAAIlU,MAAM,iCAElB,GAAI6yO,EAASr1J,SAAS,IAAK,GACzB,MAAM,IAAIx9E,MAAM,0CAGpB9B,KAAKguI,KAAOA,GAAK7rF,KAAKniD,KAAKiyO,QAASjyO,KAAK40O,MAAQD,GAAY,KAK/D,WACE,MAA4B,kBAAd30O,KAAKguI,KAAoBA,GAAKgkG,SAAShyO,KAAKguI,KAAMhuI,KAAKkyO,cAAW,EASlF,SAAS0C,GACPN,GAAeM,EAAM,QACrBF,GAAWE,EAAM,QACjB50O,KAAKguI,KAAOA,GAAK7rF,KAAKniD,KAAKiyO,SAAW,GAAI2C,GAAQ50O,KAAKkyO,SAAW,KAWpE,SAASnP,GACP,OAAQ/iO,KAAK9C,OAAS,IAAI0W,SAASmvN,QAAY,GAkBjD,QAAQtrF,EAAQ58G,EAAO7mB,GACrB,MAAM4lI,EAAU,IAAI83F,GAAaj6F,EAAQ58G,EAAO7mB,GAOhD,OANIhU,KAAKguI,OACP4L,EAAQr6I,KAAOS,KAAKguI,KAAO,IAAM4L,EAAQr6I,KACzCq6I,EAAQnzF,KAAOzmD,KAAKguI,MAEtB4L,EAAQ+3F,OAAQ,EAChB3xO,KAAKo0O,SAASlyO,KAAK03I,GACZA,EAkBT,KAAKnC,EAAQ58G,EAAO7mB,GAClB,MAAM4lI,EAAU55I,KAAK45I,QAAQnC,EAAQ58G,EAAO7mB,GAE5C,OADA4lI,EAAQ+3F,MAAQ,KACT/3F,EAsBT,KAAKnC,EAAQ58G,EAAO7mB,GAClB,MAAM4lI,EAAU55I,KAAK45I,QAAQnC,EAAQ58G,EAAO7mB,GAE5C,MADA4lI,EAAQ+3F,OAAQ,EACV/3F,GAGV,SAAS86F,GAAW39N,EAAMxX,GACxB,GAAIwX,GAAQA,EAAKuoE,SAAS0uD,GAAKmkG,KAC7B,MAAM,IAAIrwO,MACR,IAAMvC,EAAO,uCAAyCyuI,GAAKmkG,IAAM,KAIvE,SAASmC,GAAev9N,EAAMxX,GAC5B,IAAKwX,EACH,MAAM,IAAIjV,MAAM,IAAMvC,EAAO,qBAGjC,SAASi1O,GAAWpC,EAAO7yO,GACzB,IAAK6yO,EACH,MAAM,IAAItwO,MAAM,YAAcvC,EAAO,mCAGzC,SAAS2pO,GAAOhsO,GACd,OAAO6yO,GAAS7yO,GAElB,MAAM23O,GAAU5oK,KAAOwlD,SACjBqjH,GAAM,GAAG3iO,eACf,SAAS85D,KACP,MAAM8oK,EAAe7D,KACf8D,EAAY,GAClB,IACIC,EADAt5H,EAAY,GAEZu5H,GAAe,EAanB,OAZAC,EAAUp0O,KAAOtB,EACjB01O,EAAUrvH,YAAS,EACnBqvH,EAAU5iF,cAAW,EACrB4iF,EAAU1jH,OAASA,EACnB0jH,EAAUH,UAAYA,EACtBG,EAAUt9E,IAAMA,EAChBs9E,EAAUzS,MAAQ0S,EAClBD,EAAU7hG,UAAY+hG,EACtBF,EAAU73O,IAAM8zO,EAChB+D,EAAUG,QAAUA,EACpBH,EAAUI,QAAUA,EACpBJ,EAAUK,YAAcA,EACjBL,EACP,SAASA,IACP,MAAMzF,EAAczjK,KACpB,IAAIzkE,GAAU,EACd,QAASA,EAASwtO,EAAU12O,OAC1BoxO,EAAY73E,OAAOm9E,EAAUxtO,IAG/B,OADAkoO,EAAY3uO,KAAK6vC,IAAO,EAAM,GAAI+qE,IAC3B+zH,EAET,SAASjwO,EAAMu6B,EAAM98B,GACnB,MAAoB,kBAAT88B,EACgB,IAArBloB,UAAUxT,QACZm3O,GAAe,OAAQR,GACvBt5H,EAAU3hF,GAAQ98B,EACXi4O,GAEFL,GAAI70O,KAAK07G,EAAW3hF,IAAS2hF,EAAU3hF,IAAS,KAErDA,GACFy7M,GAAe,OAAQR,GACvBt5H,EAAY3hF,EACLm7M,GAEFx5H,EAET,SAAS8V,IACP,GAAIwjH,EACF,OAAOE,EAET,QAASD,EAAcF,EAAU12O,OAAQ,CACvC,MAAOo3O,KAAat5O,GAAW44O,EAAUE,GACzC,IAAmB,IAAf94O,EAAQ,GACV,UAEiB,IAAfA,EAAQ,KACVA,EAAQ,QAAK,GAEf,MAAMu5O,EAAcD,EAASz1O,KAAKk1O,KAAc/4O,GACrB,oBAAhBu5O,GACTZ,EAAal9E,IAAI89E,GAKrB,OAFAV,GAAS,EACTC,EAAc1mO,OAAOmuI,kBACdw4F,EAET,SAASt9E,EAAI36J,KAAUd,GACrB,IAAIm3I,EAEJ,GADAkiG,GAAe,MAAOR,GACR,OAAV/3O,QAA4B,IAAVA,QAEjB,GAAqB,oBAAVA,EACd04O,EAAU14O,KAAUd,OACf,IAAqB,kBAAVc,EAOhB,MAAM,IAAI+5I,UAAU,+BAAiC/5I,EAAQ,KANzDuD,MAAMk/E,QAAQziF,GAChB24O,EAAQ34O,GAER44O,EAAU54O,GAQd,OAHIq2I,IACF53B,EAAU43B,SAAW12I,OAAO0hD,OAAOo9D,EAAU43B,UAAY,GAAIA,IAExD4hG,EACP,SAASrxO,EAAI41I,GACX,GAAsB,oBAAXA,EACTk8F,EAAUl8F,OACL,IAAsB,kBAAXA,EAQhB,MAAM,IAAIzC,UAAU,+BAAiCyC,EAAS,KAP9D,GAAIj5I,MAAMk/E,QAAQ+5D,GAAS,CACzB,MAAOq8F,KAAWC,GAAYt8F,EAC9Bk8F,EAAUG,KAAWC,QAErBF,EAAUp8F,IAMhB,SAASo8F,EAAUt4N,GACjBq4N,EAAQr4N,EAAO68D,SACX78D,EAAO+1H,WACTA,EAAW12I,OAAO0hD,OAAOg1F,GAAY,GAAI/1H,EAAO+1H,WAGpD,SAASsiG,EAAQx7J,GACf,IAAI7yE,GAAU,EACd,GAAgB,OAAZ6yE,QAAgC,IAAZA,OAEnB,KAAI55E,MAAMk/E,QAAQtF,GAMrB,MAAM,IAAI48D,UAAU,oCAAsC58D,EAAU,KALpE,QAAS7yE,EAAS6yE,EAAQ/7E,OAAQ,CAChC,MAAMR,EAAQu8E,EAAQ7yE,GACtB1D,EAAIhG,KAMV,SAAS83O,EAAUG,EAAQr8F,GACzB,IACIpuC,EADA9jG,GAAU,EAEd,QAASA,EAASwtO,EAAU12O,OAC1B,GAAI02O,EAAUxtO,GAAQ,KAAOuuO,EAAQ,CACnCzqI,EAAQ0pI,EAAUxtO,GAClB,MAGA8jG,GACE0lI,GAAe1lI,EAAM,KAAO0lI,GAAet3F,KAC7CA,EAAS9oG,IAAO,EAAM06D,EAAM,GAAIouC,IAElCpuC,EAAM,GAAKouC,GAEXs7F,EAAU9yO,KAAK,IAAI4P,aAIzB,SAASsjO,EAAOt0N,GACdq0N,EAAU1jH,SACV,MAAMhrE,EAAOwvL,GAAMn1N,GACbo1N,EAAUf,EAAUrvH,OAE1B,OADAqwH,GAAa,QAASD,GAClBE,GAAQF,EAAS,SACZ,IAAIA,EAAQh0N,OAAOukC,GAAOA,GAAMi8K,QAElCwT,EAAQh0N,OAAOukC,GAAOA,GAE/B,SAAS4uL,EAAW52O,EAAMqiB,GACxBq0N,EAAU1jH,SACV,MAAMhrE,EAAOwvL,GAAMn1N,GACbyxI,EAAW4iF,EAAU5iF,SAG3B,OAFA8jF,GAAe,YAAa9jF,GAC5B+jF,GAAW73O,GACP23O,GAAQ7jF,EAAU,WACb,IAAIA,EAAS9zJ,EAAMgoD,GAAMuiL,UAE3Bz2E,EAAS9zJ,EAAMgoD,GAExB,SAAS2qL,EAAK3yO,EAAMqiB,EAAKld,GAOvB,GANA0yO,GAAW73O,GACX02O,EAAU1jH,SACL7tH,GAA2B,oBAARkd,IACtBld,EAAWkd,EACXA,OAAM,IAEHld,EACH,OAAO,IAAIvH,QAAQk6O,GAGrB,SAASA,EAASj6O,EAASk6O,GAEzB,SAASn+L,EAAKk/F,EAAO32D,EAAMn6B,GACzBm6B,EAAOA,GAAQniF,EACX84I,EACFi/F,EAAOj/F,GACEj7I,EACTA,EAAQskF,GAERh9E,EAAS,KAAMg9E,EAAMn6B,GARzBsuL,EAAaz3O,IAAImB,EAAMw3O,GAAMn1N,GAAMu3B,GAFrCk+L,EAAS,KAAM3yO,GAejB,SAAS0xO,EAAQ72O,EAAMgoD,GACrB,IAAIjpC,EACAi5N,EAGJ,OAFAtB,EAAU73O,IAAImB,EAAMgoD,EAAMpO,GAC1Bq+L,GAAW,UAAW,MAAOD,GACtBj5N,EACP,SAAS66B,EAAKk/F,EAAO32D,GACnBkvJ,GAAKv4F,GACL/5H,EAASojE,EACT61J,GAAW,GAGf,SAASlB,EAAQz0N,EAAKld,GAIpB,GAHAuxO,EAAU1jH,SACV0kH,GAAa,UAAWhB,EAAUrvH,QAClCuwH,GAAe,UAAWlB,EAAU5iF,WAC/B3uJ,EACH,OAAO,IAAIvH,QAAQk6O,GAGrB,SAASA,EAASj6O,EAASk6O,GACzB,MAAM/vL,EAAOwvL,GAAMn1N,GAgBnB,SAASu3B,EAAKk/F,EAAOo/F,GACfp/F,IAAUo/F,EACZH,EAAOj/F,GACEj7I,EACTA,EAAQq6O,GAER/yO,EAAS,KAAM+yO,GArBnBxB,EAAU73O,IAAI63O,EAAUzS,MAAMj8K,GAAOA,EAAM,CAAC8wF,EAAO32D,EAAM+1J,KACvD,IAAIp/F,GAAU32D,GAAS+1J,EAEhB,CACL,MAAMn5N,EAAS23N,EAAU7hG,UAAU1yD,EAAM+1J,QAC1B,IAAXn5N,GAAgC,OAAXA,IAEhBo5N,GAAqBp5N,GAC5Bm5N,EAAMz5O,MAAQsgB,EAEdm5N,EAAMn5N,OAASA,GAEjB66B,EAAKk/F,EAAOo/F,QAVZt+L,EAAKk/F,KALXg/F,EAAS,KAAM3yO,GA6BjB,SAAS4xO,EAAY10N,GACnB,IAAI21N,EACJtB,EAAU1jH,SACV0kH,GAAa,cAAehB,EAAUrvH,QACtCuwH,GAAe,cAAelB,EAAU5iF,UACxC,MAAM9rG,EAAOwvL,GAAMn1N,GAGnB,OAFAq0N,EAAUI,QAAQ9uL,EAAMpO,GACxBq+L,GAAW,cAAe,UAAWD,GAC9BhwL,EACP,SAASpO,EAAKk/F,GACZk/F,GAAW,EACX3G,GAAKv4F,KAIX,SAAS6+F,GAAQl5O,EAAOqC,GACtB,MAAwB,oBAAVrC,GAEdA,EAAM2U,YAILxT,GAAKnB,EAAM2U,YAActS,KAAQrC,EAAM2U,WAE1C,SAASxT,GAAKnB,GACZ,IAAI88B,EACJ,IAAKA,KAAQ98B,EACX,GAAI43O,GAAI70O,KAAK/C,EAAO88B,GAClB,OAAO,EAGX,OAAO,EAET,SAASm8M,GAAa52O,EAAMrC,GAC1B,GAAqB,oBAAVA,EACT,MAAM,IAAI+5I,UAAU,WAAa13I,EAAO,sBAG5C,SAAS82O,GAAe92O,EAAMrC,GAC5B,GAAqB,oBAAVA,EACT,MAAM,IAAI+5I,UAAU,WAAa13I,EAAO,wBAG5C,SAASk2O,GAAel2O,EAAM01O,GAC5B,GAAIA,EACF,MAAM,IAAInzO,MACR,gBAAkBvC,EAAO,oHAI/B,SAAS+2O,GAAW73O,GAClB,IAAKuyO,GAAevyO,IAA8B,kBAAdA,EAAKvC,KACvC,MAAM,IAAI+6I,UAAU,uBAAyBx4I,EAAO,KAGxD,SAASi4O,GAAWn3O,EAAMs3O,EAAWJ,GACnC,IAAKA,EACH,MAAM,IAAI30O,MACR,IAAMvC,EAAO,0BAA4Bs3O,EAAY,aAI3D,SAASZ,GAAM/4O,GACb,OAAO45O,GAAgB55O,GAASA,EAAQ,IAAIi3O,GAAMj3O,GAEpD,SAAS45O,GAAgB55O,GACvB,OAAOojF,QACLpjF,GAA0B,kBAAVA,GAAsB,YAAaA,GAAS,aAAcA,GAG9E,SAAS05O,GAAqB15O,GAC5B,MAAwB,kBAAVA,GAAsB6yO,GAAS7yO,GAE/C,MAAM65O,GAAYxD,KAAKjgG,UAAU7sD,IACjC,SAASuwJ,IACPvuJ,SAAUwuJ,EAAS,QACnB58J,EACAo1J,aAAcyH,EAAsB,KAEpC,IAAI/B,EAAYN,KAAUh9E,IAAIwyE,IACnB,MAAXhwJ,GAA2BA,EAAQz8E,QAAQ,EAAGu5O,aACxCA,IACFhC,EAAYgC,EAAOhC,MAEvBA,EAAYA,EAAUt9E,IAAIg4E,GAAgB,CAAE59E,oBAAoB,KAASilF,IAAuBr/E,IAAItb,IACpG,IAAI7zD,EAAS6qJ,KAAK7Q,MAAMqU,IAUxB,OATAruJ,EAAOv2D,WAAW,KAAKjwB,KAAK,aACH,oBAAd+0O,IACTvuJ,EAASuuJ,EAAUvuJ,IAErBysJ,EAAYA,EAAUt9E,IAAIrb,GAAgB9zD,GAC/B,MAAXrO,GAA2BA,EAAQz8E,QAAQ,EAAGw5O,aACxCA,IACFjC,EAAYiC,EAAOjC,MAEhBA,EAAUt9E,IAAIzF,IAEvB,SAASilF,GAAkBhzO,GACzB,IAAIsY,EACJ,MAAO,CACL,IACEA,EAAMrd,EAAU,OAChBY,EAAKyc,EAAK,QAAS,kBAErB,EAAEne,EAAQI,GACRD,EAAOH,EAAQme,EAAK/d,GACpB+d,EAAIi/D,UACJv3E,EAAI,GACJA,EAAI,GAAGsY,IAET,EAAEk/D,GAAO13E,IAEP,EADIA,IAEFwY,EAAIi/D,UACJC,EAAK,KAETz8E,EAAG/B,EACHiI,EAAGjI,EACH,EAAE8B,GACIA,GACFL,EAAO6d,GACTtY,EAAI,GAAG,QAIb,SAASizO,GAAWx6J,EAAQp1E,EAASq1E,GACnC,IAAIipC,EACJ,MAAM9mC,EAAW38E,IACjB,IAIIg1O,EAwBA9wL,GA5BA,MAAEvpD,EAAQ,IAAOwK,GACjB,QAAE2yE,EAAU,IAAO3yE,GACjB+gF,SAAUwuJ,GAAuBvvO,GACjC+nO,aAAc+H,GAA2B9vO,EAE3C+vO,EAAM,GACV,SAASr9N,IACPq9N,EAAMp9J,EAAQx0E,IAAK+lB,IACjB,IAAIs4D,EACJ,OAAiC,OAAzBA,EAAKt4D,EAAG8rN,mBAAwB,EAASxzJ,EAAGjkF,KAAK2rB,EAAI,CAAE2rN,eAAc9wL,WAGjF,SAAS9rC,IACP88N,EAAI75O,QAAS+5O,GAAa,MAANA,OAAa,EAASA,KAE5C51O,EAAQ,KACNw1O,EAAah7O,iBAAiB,QAAUgF,IACtC,IAAI2iF,EACJ,MAAMo/I,EAAK/hO,EAAE/C,OACb,GAAmB,MAAf8kO,EAAGhuJ,QACL,OACF,MAAM8R,EAAOk8I,EAAGjjO,aAAa,SACf,MAAR+mF,OAAe,EAASA,EAAKwwJ,WAAW,QAEyB,OAAtE1zJ,EAAKqzJ,EAAarnN,cAAc,iBAAmBk3D,EAAK3kF,MAAM,MAAwByhF,EAAGv8C,sBAG9FtlC,EAAUsY,GAEV,IAAIvb,EAAI,EACR,MAAMy4O,EAAiB,IAAM,CAACj3J,EAAM+1J,KAClCvzO,IAAOF,KAAK,KACVg8E,EAAS,OAAQ,CAAE+C,KAAMrB,EAAMn6B,KAAMkwL,OAOzC,SAASmB,EAAYzxJ,GACnBzjF,EAAkByjF,EAAU,UAAY,QAAQ,KAC9CkxJ,EAAelxJ,EACftJ,EAAa,EAAGw6J,KAyCpB,OAhDAp1O,EAAY,KACVwY,IACAP,MAQF0iE,EAAOn1E,MAAS01E,IACV,UAAWA,GACbN,EAAa,EAAG7/E,EAAQmgF,EAASngF,OAC/B,YAAamgF,GACfN,EAAa,EAAG1C,EAAUgD,EAAShD,SACjC,aAAcgD,GAChBN,EAAa,EAAGk6J,EAAY55J,EAASoL,UACnC,iBAAkBpL,GACpBN,EAAa,EAAGy6J,EAAgBn6J,EAASoyJ,eAE7C3yJ,EAAO96E,GAAG0B,OAAS,KACjB,GACA,IADIo5E,EAAO96E,GAAGmC,MAEZ,IACE44E,EAAa,EAAGt2B,EAAOuwL,GAAa,CAClCvuJ,SAAUwuJ,EACV58J,QAAS,IACJA,EACH,CAKE+8J,OAASjC,GAAcA,EAAUt9E,IAAIggF,KAGzCpI,aAAc+H,IACbhC,YAAYt4O,IACf6/E,EAAa,EAAG39E,IAAKA,GACrB,MAAOs8F,GACPq8I,QAAQxgG,MAAM77C,GAIlB,IADI5e,EAAO96E,GAAGmC,OAEZ44E,EAAa,EAAGipC,EAAQ,GAAGv/D,WAAWrnD,YAGnC,CACLm4O,EACAvxH,EACA9oH,EACAm9E,EACA48J,EACAO,EACA/wL,EACArnD,EACA04O,GAGJ,MAAME,WAAe1wO,GACnB,YAAYlL,GACVmhF,QACAr3E,GAAKlG,KAAM5D,EAASk7O,GAAYD,GAAmBn5O,EAAW,CAC5DhB,MAAO,EACPm9E,QAAS,EACToO,SAAU,EACVgnJ,aAAc,KAIpB,IAAIwI,GAA8B,iBAAVC,GAAsBA,GAAUA,EAAOr7O,SAAWA,QAAUq7O,EACpF,MAAMC,GAAeF,GACrB,IAAIG,GAA0B,iBAARC,MAAoBA,MAAQA,KAAKx7O,SAAWA,QAAUw7O,KACxEvxO,GAAOqxO,IAAgBC,IAAYE,SAAS,cAATA,GACvC,MAAMC,GAASzxO,GACf,IAAI0xO,GAAWD,GAAOv7O,OACtB,MAAMy7O,GAAWD,GACjB,IAAIE,GAAgB77O,OAAOgV,UACvBM,GAAiBumO,GAAcvmO,eAC/BwmO,GAAyBD,GAAc9kO,SACvCglO,GAAmBH,GAAWA,GAASx7O,iBAAc,EACzD,SAAS47O,GAAU37O,GACjB,IAAI47O,EAAQ3mO,GAAelS,KAAK/C,EAAO07O,IAAmBlpO,EAAMxS,EAAM07O,IACtE,IACE17O,EAAM07O,SAAoB,EAC1B,IAAIG,GAAW,EACf,MAAOx3O,IAET,IAAIic,EAASm7N,GAAuB14O,KAAK/C,GAQzC,OAPI67O,IACED,EACF57O,EAAM07O,IAAoBlpO,SAEnBxS,EAAM07O,KAGVp7N,EAET,IAAIw7N,GAAcn8O,OAAOgV,UACrBonO,GAAuBD,GAAYplO,SACvC,SAASslO,GAAeh8O,GACtB,OAAO+7O,GAAqBh5O,KAAK/C,GAEnC,IAAIi8O,GAAU,gBAAiBC,GAAe,qBAC1CC,GAAiBZ,GAAWA,GAASx7O,iBAAc,EACvD,SAASq8O,GAAWp8O,GAClB,OAAa,MAATA,OACe,IAAVA,EAAmBk8O,GAAeD,GAEpCE,IAAkBA,MAAkBx8O,OAAOK,GAAS27O,GAAU37O,GAASg8O,GAAeh8O,GAE/F,SAASq8O,GAAar8O,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EAEjC,IAAIs8O,GAAY,kBAChB,SAASC,GAASv8O,GAChB,MAAuB,iBAATA,GAAqBq8O,GAAar8O,IAAUo8O,GAAWp8O,IAAUs8O,GAEjF,IAAIE,GAAe,KACnB,SAASC,GAAgBtnO,GACvB,IAAI7K,EAAS6K,EAAQ/T,OACrB,MAAOkJ,KAAYkyO,GAAa3sO,KAAKsF,EAAQ+D,OAAO5O,KAEpD,OAAOA,EAET,IAAIoyO,GAAc,OAClB,SAASC,GAASxnO,GAChB,OAAOA,EAAUA,EAAQ5P,MAAM,EAAGk3O,GAAgBtnO,GAAW,GAAGyG,QAAQ8gO,GAAa,IAAMvnO,EAE7F,SAASynO,GAAS58O,GAChB,IAAIhB,SAAcgB,EAClB,OAAgB,MAATA,IAA0B,UAARhB,GAA4B,YAARA,GAE/C,IAAI69O,GAAM,IACNC,GAAa,qBACbC,GAAa,aACbC,GAAY,cACZC,GAAeriN,SACnB,SAASsiN,GAASl9O,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIu8O,GAASv8O,GACX,OAAO68O,GAET,GAAID,GAAS58O,GAAQ,CACnB,IAAI6gC,EAAgC,mBAAjB7gC,EAAMm9O,QAAwBn9O,EAAMm9O,UAAYn9O,EACnEA,EAAQ48O,GAAS/7M,GAASA,EAAQ,GAAKA,EAEzC,GAAoB,iBAAT7gC,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ28O,GAAS38O,GACjB,IAAIo9O,EAAWL,GAAWltO,KAAK7P,GAC/B,OAAOo9O,GAAYJ,GAAUntO,KAAK7P,GAASi9O,GAAaj9O,EAAMuF,MAAM,GAAI63O,EAAW,EAAI,GAAKN,GAAWjtO,KAAK7P,GAAS68O,IAAO78O,EAE9H,IAAIs5J,GAAM,WACR,OAAO+hF,GAAOjlO,KAAKkjJ,OAErB,MAAM+jF,GAAQ/jF,GACd,IAAIgkF,GAAoB,sBACpBC,GAAYlmO,KAAKyC,IAAK0jO,GAAYnmO,KAAKC,IAC3C,SAASmmO,GAASlxK,EAAMmxK,EAAMx+O,GAC5B,IAAIy+O,EAAUC,EAAUC,EAASv9N,EAAQw9N,EAASC,EAAcC,EAAiB,EAAGC,GAAU,EAAOC,GAAS,EAAOC,GAAW,EAChI,GAAmB,mBAAR5xK,EACT,MAAM,IAAIwtE,UAAUujG,IAStB,SAASc,EAAWroO,GAClB,IAAIrB,EAAOipO,EAAUU,EAAUT,EAI/B,OAHAD,EAAWC,OAAW,EACtBI,EAAiBjoO,EACjBuK,EAASisD,EAAK13D,MAAMwpO,EAAS3pO,GACtB4L,EAET,SAASg+N,EAAYvoO,GAGnB,OAFAioO,EAAiBjoO,EACjB+nO,EAAUv+O,WAAWg/O,EAAcb,GAC5BO,EAAUG,EAAWroO,GAAQuK,EAEtC,SAASk+N,EAAczoO,GACrB,IAAI0oO,EAAoB1oO,EAAOgoO,EAAcW,EAAsB3oO,EAAOioO,EAAgBW,EAAcjB,EAAOe,EAC/G,OAAOP,EAASV,GAAUmB,EAAad,EAAUa,GAAuBC,EAE1E,SAASC,EAAa7oO,GACpB,IAAI0oO,EAAoB1oO,EAAOgoO,EAAcW,EAAsB3oO,EAAOioO,EAC1E,YAAwB,IAAjBD,GAA2BU,GAAqBf,GAAQe,EAAoB,GAAKP,GAAUQ,GAAuBb,EAE3H,SAASU,IACP,IAAIxoO,EAAOsnO,KACX,GAAIuB,EAAa7oO,GACf,OAAO8oO,EAAa9oO,GAEtB+nO,EAAUv+O,WAAWg/O,EAAcC,EAAczoO,IAEnD,SAAS8oO,EAAa9oO,GAEpB,OADA+nO,OAAU,EACNK,GAAYR,EACPS,EAAWroO,IAEpB4nO,EAAWC,OAAW,EACft9N,GAET,SAASu/B,SACS,IAAZi+L,GACFvnO,aAAaunO,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAU,EAEjD,SAASgB,IACP,YAAmB,IAAZhB,EAAqBx9N,EAASu+N,EAAaxB,MAEpD,SAAS0B,IACP,IAAIhpO,EAAOsnO,KAAS2B,EAAaJ,EAAa7oO,GAI9C,GAHA4nO,EAAW/oO,UACXgpO,EAAW96O,KACXi7O,EAAehoO,EACXipO,EAAY,CACd,QAAgB,IAAZlB,EACF,OAAOQ,EAAYP,GAErB,GAAIG,EAGF,OAFA3nO,aAAaunO,GACbA,EAAUv+O,WAAWg/O,EAAcb,GAC5BU,EAAWL,GAMtB,YAHgB,IAAZD,IACFA,EAAUv+O,WAAWg/O,EAAcb,IAE9Bp9N,EAIT,OA1EAo9N,EAAOR,GAASQ,IAAS,EACrBd,GAAS19O,KACX++O,IAAY/+O,EAAQ++O,QACpBC,EAAS,YAAah/O,EACtB2+O,EAAUK,EAASX,GAAUL,GAASh+O,EAAQ2+O,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAcj/O,IAAYA,EAAQi/O,SAAWA,GAmE1DY,EAAUl/L,OAASA,EACnBk/L,EAAU94O,MAAQ64O,EACXC,EAET,IAAIE,GAAkB,sBACtB,SAASC,GAAS3yK,EAAMmxK,EAAMx+O,GAC5B,IAAI++O,GAAU,EAAME,GAAW,EAC/B,GAAmB,mBAAR5xK,EACT,MAAM,IAAIwtE,UAAUklG,IAMtB,OAJIrC,GAAS19O,KACX++O,EAAU,YAAa/+O,IAAYA,EAAQ++O,QAAUA,EACrDE,EAAW,aAAcj/O,IAAYA,EAAQi/O,SAAWA,GAEnDV,GAASlxK,EAAMmxK,EAAM,CAC1B,QAAWO,EACX,QAAWP,EACX,SAAYS,IAGhB,SAASgB,GAAgBh4O,GACvB,IAAIi4O,EACAttO,EA0BJ,OAzBAstO,EAAS,IAAItE,GAAO,CAClB1xO,MAAO,CACLpJ,MAEEmH,EAAI,IAENg2E,QAEEh2E,EAAI,GAENokF,SAEEpkF,EAAI,GAENorO,aAEEprO,EAAI,MAIVi4O,EAAOC,IACL,OAEAl4O,EAAI,KAEC,CACL,IACEkB,GAAiB+2O,EAAOt6O,GAAGiC,WAE7B,EAAEzF,EAAQI,GACR4G,GAAgB82O,EAAQ99O,EAAQI,GAChCoQ,GAAU,GAEZ,EAAE6sE,EAAM13E,GACN,MAAMq4O,EAAiB,GAEvB,MADIr4O,EAAM,KAERq4O,EAAet/O,MACf2+E,EAAK,KAEP,EADI13E,EAAM,KAERq4O,EAAeniK,QACfwB,EAAK,IAEP,EADI13E,EAAM,KAERq4O,EAAe/zJ,SACf5M,EAAK,IAEP,EADI13E,EAAM,KAERq4O,EAAe/M,aACf5zJ,EAAK,IACPygK,EAAOG,KAAKD,IAEd,EAAEt3O,GACI8J,IAEJhK,EAAcs3O,EAAOt6O,GAAGiC,SAAUiB,GAClC8J,GAAU,IAEZ,EAAE9J,GACAE,GAAek3O,EAAOt6O,GAAGiC,SAAUiB,GACnC8J,GAAU,GAEZ,EAAE7P,GACA4G,GAAkBu2O,EAAQn9O,KAIhC,SAASu9O,GAAgBr4O,GACvB,IAAIs4O,EACAh5J,EACAi5J,EACAxhK,EACAyhK,EACAxhK,EACAyhK,EACAC,EACAxhK,EAEAzc,EACAk+K,EACAC,EACAjuO,EACA2uE,EACAC,EANAnC,EAAYzwE,GAAMC,MAAQ,GAO9B04E,EAAU,IAAI6C,GAAQ,CACpBlgF,MAAO,CACLK,QAEEtC,EAAI,IAENuM,MAEEvM,EAAI,IAENw/E,UAEEx/E,EAAI,GAEN0/E,QAEE1/E,EAAI,GAENmE,WAEEnE,EAAI,IAEN2/E,qBAEE3/E,EAAI,IACN,aACA+1E,OAEE/1E,EAAI,IAENm2E,QAEEn2E,EAAI,IACN,eAGJs/E,EAAQ44J,IACN,MAEAl4O,EAAI,KAENs/E,EAAQ44J,IACN,MAEAl4O,EAAI,KAENs/E,EAAQ44J,IACN,QAEAl4O,EAAI,KAEN,IAAI23E,GACJ33E,EAAI,KACHA,EAAI,KACM,YAAXA,EAAI,KAAqBg4O,GAAgBh4O,GA4EzC,OA3EAy6D,EAAQ,IAAIwe,GAAK,CACfh3E,MAAO,CACL8zE,OAEE/1E,EAAI,IAENm2E,QAEEn2E,EAAI,IACN,YACA4rC,QAEa,SAAX5rC,EAAI,MAIV24O,EAAO,IAAI16J,GAAI,CACbh8E,MAAO,CACL27E,KAEE59E,EAAI,IAEN+1E,OAEE/1E,EAAI,IAEN69E,kBAEE79E,EAAI,IAEN4rC,QAEa,QAAX5rC,EAAI,MAIV24O,EAAKT,IACH,QAEAl4O,EAAI,KAEN44O,EAAS,IAAI19J,GAAO,CAClBj5E,MAAO,CACL8zE,OAEE/1E,EAAI,IAEN06E,UACA16E,EAAI,IACJA,EAAI,IACJnH,MAEEmH,EAAI,IAEN26E,YAEE36E,EAAI,IAEN46E,UAEE56E,EAAI,GAAG/F,OACP+F,EAAI,MAIV44O,EAAOV,IACL,OAEAl4O,EAAI,KAEN44O,EAAOV,IACL,MAEAl4O,EAAI,KAEC,CACL,IACEs4O,EAAOr9O,EAAU,OACjBiG,GAAiBo+E,EAAQ3hF,GAAGiC,UAC5B24O,EAAOt9O,EAAU,OACjB87E,EAAO97E,EAAU,OACjB+7E,EAAO/7E,EAAU,OACb08E,GACFA,EAASv3E,IACXs4O,EAAOz9O,EAAU,OACjBi8E,EAAOj8E,EAAU,OACjBiG,GAAiBu5D,EAAM98D,GAAGiC,UAC1BsB,GAAiBy3O,EAAKh7O,GAAGiC,UACzBsB,GAAiB03O,EAAOj7O,GAAGiC,UAC3B/D,EAAKk7E,EAAM,QAAS,iBACpBl7E,EAAKk7E,EAAM,QAASyhK,EACpBx4O,EAAI,IAAI64O,MACRh9O,EAAKm7E,EAAM,QAAS,kBACpBn7E,EAAKm7E,EAAM,QAASyhK,EACpBz4O,EAAI,IAAIwF,SACR3J,EAAKq7E,EAAM,QAAS,wBACpBr7E,EAAK68O,EAAM,QAAS,kBACpB/7O,EACE+7O,EACA,iBAEW,IAAX14O,EAAI,IAENnE,EAAK08O,EAAM,QAAS,eACpB18O,EAAKy8O,EAAM,QAAS,UACpB37O,EACE27O,EACA,eAEAt4O,EAAI,MACO,IAAXA,EAAI,IAENrD,EACE27O,EACA,oBAEAt4O,EAAI,MAGR,EAAE7F,EAAQI,GACRD,EAAOH,EAAQm+O,EAAM/9O,GACrB4G,GAAgBm+E,EAASg5J,EAAM,MAC/Bp+O,EAAOo+O,EAAMC,GACbr+O,EAAOq+O,EAAMxhK,GACb/2E,EAAI,IAAI+2E,GACR78E,EAAOq+O,EAAMvhK,GACTW,GACFA,EAASr2E,EAAE01E,EAAM,MACnBh3E,EAAI,IAAIg3E,GACR98E,EAAOq+O,EAAMG,GACbx+O,EAAOw+O,EAAMxhK,GACbA,EAAKK,UAAYH,EACjBj2E,GAAgBs5D,EAAOi+K,EAAM,MAC7Bv3O,GAAgBw3O,EAAMD,EAAM,MAC5Bv3O,GAAgBy3O,EAAQN,EAAM,MAC9Bt4O,EAAI,IAAIs4O,GACR3tO,GAAU,EACL2uE,IACHC,EAAU,CACRh+E,EACE27E,EACA,QAEAl3E,EAAI,KAENzE,EAAO27E,EAAM,UAAWx7E,EAEtBsE,EAAI,OAGRs5E,GAAU,IAGd,EAAE9B,EAAM13E,GACN,MAAMg5O,EAAkB,GAExB,KADIh5O,EAAM,KAERg5O,EAAgBx2O,QAChBk1E,EAAK,KAEP,KADI13E,EAAM,KAERg5O,EAAgBvsO,MAChBirE,EAAK,KAEP,IADI13E,EAAM,KAERg5O,EAAgBt5J,UAChBhI,EAAK,IAEP,IADI13E,EAAM,KAERg5O,EAAgBp5J,QAChBlI,EAAK,IAEP,MADI13E,EAAM,KAERg5O,EAAgB30O,WAChBqzE,EAAK,KAEP,QADI13E,EAAM,KAERg5O,EAAgBn5J,qBAChBnI,EAAK,IAAIhB,cAEX,KADI12E,EAAM,KAERg5O,EAAgB/iK,OAChByB,EAAK,KAEP,QADI13E,EAAM,KAERg5O,EAAgB3iK,QAChBqB,EAAK,IAAIvB,aACXqJ,EAAQ84J,KAAKU,KACRnuO,GACL,QADgB7K,EAAM,IACX04O,KAAsBA,EACjChhK,EAAK,IAAIqhK,QACPh9O,EAAKk7E,EAAM,QAASyhK,GAGtBhhK,EAAK,KACJA,EAAK,KACM,YAAZA,EAAK,GAaMG,IACTn3E,IACAO,GAAe42E,EAAU,EAAG,EAAG,KAC7BA,EAAW,OAEbj3E,KAjBIi3E,GACFA,EAAS53E,EAAEy3E,EAAM13E,GAEjB,KADIA,EAAM,IAERa,EAAcg3E,EAAU,KAG1BA,EAAWqgK,GAAgBxgK,GAC3BG,EAASv3E,IACTO,EAAcg3E,EAAU,GACxBA,EAASr2E,EAAE01E,EAAM,SAShBrsE,GACL,QADgB7K,EAAM,IACX24O,KAAsBA,EACjCjhK,EAAK,IAAIhyE,WACP3J,EAAKm7E,EAAM,QAASyhK,GAEtB,MAAMM,EAAe,GAErB,KADIj5O,EAAM,KAERi5O,EAAahjK,OACbyB,EAAK,KAEP,QADI13E,EAAM,KAERi5O,EAAa5iK,QACbqB,EAAK,IAAIvB,aAEX,IADIn2E,EAAM,KAERi5O,EAAantM,QACD,SAAZ4rC,EAAK,IACP/c,EAAM29K,KAAKW,GACX,MAAMC,EAAc,GAEpB,OADIl5O,EAAM,KAERk5O,EAAYp7J,KACZpG,EAAK,KAEP,KADI13E,EAAM,KAERk5O,EAAYjjK,OACZyB,EAAK,KAEP,QADI13E,EAAM,KAERk5O,EAAYn7J,kBACZrG,EAAK,KAEP,IADI13E,EAAM,KAERk5O,EAAYptM,QACA,QAAZ4rC,EAAK,IACPmhK,EAAKP,KAAKY,KACLruO,GACL,IADgB7K,EAAM,KAEpBnD,EACE+7O,EACA,iBAEY,IAAZlhK,EAAK,IAGT,MAAMyhK,EAAiB,GAEvB,KADIn5O,EAAM,KAERm5O,EAAeljK,OACfyB,EAAK,KAEP,KADI13E,EAAM,KAERm5O,EAAev+J,UACflD,EAAK,IACLA,EAAK,KAEP,MADI13E,EAAM,KAERm5O,EAAepgP,MACf2+E,EAAK,KAEP,OADI13E,EAAM,KAERm5O,EAAet+J,YACfnD,EAAK,KAEP,GADI13E,EAAM,KAERm5O,EAAer+J,UACfpD,EAAK,GAAGv9E,OACRu9E,EAAK,IACPohK,EAAOR,KAAKa,KACPtuO,GACL,KADgB7K,EAAM,KAEpBnD,EACE27O,EACA,eAEA9gK,EAAK,MACO,IAAZA,EAAK,MAGJ7sE,GACL,MADgB7K,EAAM,KAEpBnD,EACE27O,EACA,oBAEA9gK,EAAK,MAIX,EAAE32E,GACI8J,IAEJhK,EAAc2+E,EAAQ3hF,GAAGiC,SAAUiB,GACnCF,EAAcg3E,GACdh3E,EAAc85D,EAAM98D,GAAGiC,SAAUiB,GACjCF,EAAcg4O,EAAKh7O,GAAGiC,SAAUiB,GAChCF,EAAci4O,EAAOj7O,GAAGiC,SAAUiB,GAClC8J,GAAU,IAEZ,EAAE9J,GACAE,GAAeu+E,EAAQ3hF,GAAGiC,SAAUiB,GACpCE,GAAe42E,GACf52E,GAAe05D,EAAM98D,GAAGiC,SAAUiB,GAClCE,GAAe43O,EAAKh7O,GAAGiC,SAAUiB,GACjCE,GAAe63O,EAAOj7O,GAAGiC,SAAUiB,GACnC8J,GAAU,GAEZ,EAAE7P,GACIA,GACFL,EAAO69O,GACT52O,GAAkB49E,GAClBt/E,EAAI,IAAI,MACJ23E,GACFA,EAAS38E,IACXgF,EAAI,IAAI,MACR0B,GAAkB+4D,GAClB/4D,GAAkBi3O,GAClBj3O,GAAkBk3O,GAClB54O,EAAI,IAAI,MACRs5E,GAAU,EACVjgF,EAAQkgF,KAId,SAAS2/J,GAASzgK,EAAQp1E,EAASq1E,GACjC,IAAIygK,EACAhjK,EACA5pE,EACA8U,EACA/e,GACA,MAAEzJ,EAAQ,IAAOwK,GACjB,QAAE2yE,EAAU,IAAO3yE,GACjB+gF,SAAUwuJ,GAAuBvvO,GACjC+nO,aAAc+H,GAA2B9vO,GAC3C,KAAEoX,EAAO,QAAWpX,GACpB,gBAAE+1O,EAAkB,KAAQ/1O,GAC5B,YAAEo/D,GAAyBp/D,GAC3B,aAAEg2O,GAA0Bh2O,GAC5B,OAAE0yE,GAAoB1yE,GACtB,aAAEsyE,GAA0BtyE,GAC5B,gBAAEi2O,GAA6Bj2O,GAC/B,UAAE+xH,EAAYznG,KAAatqB,EAC/B,MAAMw3E,EAAW38E,IACjB,IAAIk5I,EACAmiG,EACAC,EAEA7kK,EACAE,EACA2K,EAHAi6J,EAAiB9rN,IAIjB8xD,GAAc,EACdC,GAAU,EACV0zJ,EAAM,GACNvrL,EAAS,GACb,SAAS9xC,IACPq9N,EAAMp9J,EAAQx0E,IAAK+lB,IACjB,IAAIs4D,EACJ,OAAiC,OAAzBA,EAAKt4D,EAAGmyN,mBAAwB,EAAS75J,EAAGjkF,KAAK2rB,EAAIjlB,KAE/DulD,EAAS,GACTsuB,EAAQF,YAAY18E,QAAQ,EAAGiC,cACqB,YAAlC,MAAXA,OAAkB,EAASA,EAAQ3D,OAAsB2D,EAAQ66E,WACpExuB,EAAOrsD,EAAQ66E,UAAY,KACzB76E,EAAQomF,MAAMt/E,OAIpBuyE,EAAO/a,UAAUjS,GAEnB,SAASvxC,IACP88N,EAAI75O,QAAS+5O,GAAOA,GAAMA,KAChB,MAAVz+J,GAA0BA,EAAO9a,aAAalS,GAEhD,IAAI8xL,EAAiB9gP,EACrB,MAAM+gP,EAAoBtD,GACvBjhG,IACC38D,EAAa,GAAIihK,EAAiBtkG,GACf,MAAnBikG,GAAmCA,EAAgBE,EAAW,CAC5D3gP,MAAO8gP,EACP3jK,UACAoO,SAAUwuJ,EACVxH,aAAc+H,KAGlBiG,GAEF,IAGIS,EACAC,EAEAC,EANAp/J,GAAc,EACdq/J,GAAa,EACbC,GAAgB,EAGhBr8J,EAAO,CAAE/lF,KAAM,OAAQqE,SAAU,IAEjC2hF,EAAoB,EACxBngF,EAAQ83E,UACNkD,EAAa,GAAI/D,EAAaD,MAC9BgE,EAAa,EAAG7D,EAASF,EAAW4kK,EAAU,CAC5C1gP,QACA4hB,KAAM,mBACN8Z,cAAc,EACdtmB,QAAS,EACTwpD,WAAY,EACZ1I,UAAW,CACTmrL,MAAO,2CAENb,EACH52K,iBAEFoS,EAAO/a,UAAU,CACfu5G,IAAK,aACL,YAAa,eAEfx+F,EAAO9+D,GAAG,SAAU,KAClB8kE,EAAS,SAAU,CAAEhiF,MAAOg8E,EAAOh3B,eAErC,MAAMs8L,EAAuBpC,GAC3B,KACE8B,EAAS,GACTC,EAAY,GACZ,MAAMM,EAAavlK,EAAO7Y,gBACpBq+K,EAAQb,EAAUl9O,WAAW,GACnC,KAAM+9O,aAAiBC,aACrB,OACF,MAAMC,EAAY38J,EAAK1hF,SAASuF,OAAQ+3C,GAAiB,YAAXA,EAAE3hD,MAC1C2iP,EAAa,IAAIH,EAAM/9O,YAAYmF,OAAQ+3C,GAAMA,aAAa8gM,aACpE,IAAK,IAAIv/O,EAAI,EAAGA,EAAIw/O,EAAUtgP,OAAQc,IAAK,CACzC,MAAM0/O,EAAWF,EAAUx/O,GACrB2/O,EAAYF,EAAWz/O,GAC7B,IAAK0/O,EAASloN,SACZ,SAEF,MAAMvZ,EAAO67D,EAAOjrD,aAAa6wN,EAASloN,SAAS9lB,MAAMkJ,KAAO,EAAG,UAAYykO,EAAWj9N,OAASi9N,EAAWlmN,cACxGjb,GAASyhO,EAAUvnN,UAAYknN,EAAMlnN,YAAcqmN,EAAU7zM,aAAe6zM,EAAUtlN,cAC5F,GAAIlb,GAAQ,GAAKC,GAAS,EACxB,MAEF4gO,EAAOh8O,KAAKmb,GACZ8gO,EAAUj8O,KAAKob,GAEjB4gO,EAAOh8O,KAAK,GACZi8O,EAAUj8O,KAAK,IAEjB,KAEI88O,EAAsB,KAC1B,GAAIrB,EACF,OACF,IAAK3+J,EACH,OACF,GAAIs/J,EAEF,YADAA,GAAgB,GAGlBE,IACA,MAAMr+N,EAAO+4D,EAAO7Y,gBACd4+K,EAAY9+N,EAAK9V,KAAO8V,EAAKqB,OAASrB,EAAKoY,cAC3ChmB,EAAagnE,GAAe0lK,EAAWf,GACvCgB,GAAcD,EAAYf,EAAO3rO,KAAgB4rO,EAAU5rO,EAAa,GAAK4rO,EAAU5rO,KAAgB2rO,EAAO3rO,EAAa,GAAK2rO,EAAO3rO,IAAe4rO,EAAU5rO,GACtKsrO,EAAUz9K,SAAS,EAAG8+K,GAAcrB,EAAU7zM,aAAe6zM,EAAUtlN,eACvE8lN,GAAa,GAETc,EAAuB,KAC3B,GAAIxB,EACF,OAGF,GAFAa,IACAzhK,EAAa,GAAImF,EAAoB3I,GAAeskK,EAAUnhN,WAAamhN,EAAU7zM,aAAe6zM,EAAU/gO,cAAeqhO,KACxHn/J,EACH,OACF,GAAIq/J,EAEF,YADAA,GAAa,GAGf,MAAMa,EAAarB,EAAUnhN,WAAamhN,EAAU7zM,aAAe6zM,EAAUtlN,cACvEhmB,EAAagnE,GAAe2lK,EAAYf,GACxCc,GAAaC,EAAaf,EAAU5rO,KAAgB2rO,EAAO3rO,EAAa,GAAK2rO,EAAO3rO,KAAgB4rO,EAAU5rO,EAAa,GAAK4rO,EAAU5rO,IAAe2rO,EAAO3rO,GACtK,GAAIylB,MAAMinN,GACR,OAEF,MAAM9+N,EAAO+4D,EAAO7Y,gBACpB6Y,EAAO9Y,SAAS,EAAG6+K,GAAa9+N,EAAKqB,OAASrB,EAAKoY,eACnD+lN,GAAgB,GAElBplK,EAAO9+D,GAAG,SAAU4kO,GACpBnB,EAAUthP,iBAAiB,SAAU4iP,EAAsB,CAAEC,SAAS,IACtE,MAAMC,EAAexlK,MAAOt4E,EAAG+9O,KAC7B,IAAKtlK,EACH,OACF,MAAMx9E,EAAQiE,MAAMC,KAAiB,MAAZ4+O,EAAmBA,EAAW,IAAIz5O,IAAKw+E,IAC9D,GAAIA,EAAKnoF,KAAK07O,WAAW,UACvB,OAAOvzJ,EAAKk7J,cAEbz5O,OAAQ6L,GAAW,MAALA,GACbnV,EAAM8B,SACRiD,EAAE2Z,uBACI4+D,GAAkBnzE,EAASqzE,EAAcx9E,KAGnD08E,EAAO9+D,GAAG,OAAQy/D,MAAO6P,EAAGnoF,KAC1B,IAAI2iF,EACJm7J,EAAa99O,EAA4B,OAAxB2iF,EAAK3iF,EAAE0kD,mBAAwB,EAASi+B,EAAGlH,SAE9D9D,EAAO9+D,GAAG,QAASy/D,MAAO6P,EAAGnoF,KAC3B,IAAI2iF,EACJm7J,EAAa99O,EAA6B,OAAzB2iF,EAAK3iF,EAAE47D,oBAAyB,EAAS+mB,EAAGlH,SAE/D,IAAIwiK,eAAgBz0I,IAClBhuB,EAAa,GAAI+gK,EAAiB/yI,EAAQ,GAAG00I,YAAYjpN,SACxDkpN,QAAQjkG,EAAO,CAChB58G,IAAK,iBAITx8B,EAAUsY,GACV,MAAMglO,EAAep+O,IACnB23E,EAAOjb,UAAU,SAAU18D,EAAEH,QAC7B83E,EAAOlzC,SAEH45M,EAAer+O,IACnB,MAAMs8C,EAAIt8C,EAAEH,OAEV27E,EAAa,EAAG8G,EADdjzE,EAC0BizE,IAAchmC,GAAYA,EAE1BA,GAEZ,UAAdgmC,GACFzgF,IAAOF,KAAK,KACVg2E,GAAUA,EAAOlzC,UAGX,UAAN6X,GACFz6C,IAAOF,KAAK,KACVg2E,GAAUA,EAAO7wB,QAAQ,KAAM,SAI/B+2B,EAAiB79E,IACrB,OAAQA,EAAEH,QACR,IAAK,aACH27E,EAAa,GAAI+G,GAAeA,GAChC,MACF,IAAK,OACH/G,EAAa,EAAGgH,EAAsB,SAAZA,GAA6B,QACvD,MACF,IAAK,MACHhH,EAAa,EAAGgH,EAAsB,QAAZA,GAA4B,OACtD,QAGN,SAAS87J,EAAax5J,GACpBzjF,EAAkByjF,EAAU,UAAY,QAAQ,KAC9Cu3J,EAAWv3J,EACXtJ,EAAa,GAAI6gK,KAGrB,MAAMkC,EAAgBv+O,IACpBw7E,EAAa,GAAIkF,EAAO1gF,EAAEH,OAAO6gF,MACjClF,EAAa,GAAIqhK,EAAS78O,EAAEH,OAAOqlD,OAErC,SAASs5L,GAAa15J,GACpBzjF,EAAkByjF,EAAU,UAAY,QAAQ,KAC9Cw3J,EAAYx3J,EACZtJ,EAAa,GAAI8gK,KAGrB,MAAM33J,GAAkB,KACtBnJ,EAAa,EAAGgH,GAAU,IAEtB1E,GAAmB99E,IACnB,CAAC,QAAS,SAAS+9E,SAAS/9E,EAAEqJ,OAChCmyE,EAAa,EAAGgH,GAAU,IAGxBi8J,GAAmBz+O,IACvB,MAAM0+O,EAAWpC,EAAUn4J,iBAAiB,qBAC5Cu6J,EAAS1+O,EAAEH,QAAQumC,kBAEfu4M,GAAgB3+O,IACpBw7E,EAAa,GAAIiC,EAAcz9E,EAAEH,SAE7B++O,GAAc,KAClBjnK,EAAO9Y,SAAS,KAAM,GACtBy9K,EAAUz9K,SAAS,CAAE/1D,IAAK,KAE5B,SAAS+1O,GAAa/5J,GACpBzjF,EAAkByjF,EAAU,UAAY,QAAQ,KAC9Co1D,EAAQp1D,EACRtJ,EAAa,EAAG0+D,KA0GpB,OAvGA3+D,EAAOn1E,MAAS01E,IACV,UAAWA,GACbN,EAAa,EAAG7/E,EAAQmgF,EAASngF,OAC/B,YAAamgF,GACfN,EAAa,EAAG1C,EAAUgD,EAAShD,SACjC,aAAcgD,GAChBN,EAAa,EAAGk6J,EAAY55J,EAASoL,UACnC,iBAAkBpL,GACpBN,EAAa,EAAGy6J,EAAgBn6J,EAASoyJ,cACvC,SAAUpyJ,GACZN,EAAa,GAAIj+D,EAAOu+D,EAASv+D,MAC/B,oBAAqBu+D,GACvBN,EAAa,GAAI0gK,EAAkBpgK,EAASogK,iBAC1C,gBAAiBpgK,GACnBN,EAAa,GAAIjW,EAAcuW,EAASvW,aACtC,iBAAkBuW,GACpBN,EAAa,GAAI2gK,EAAergK,EAASqgK,cACvC,WAAYrgK,GACdN,EAAa,GAAI3C,EAASiD,EAASjD,QACjC,iBAAkBiD,GACpBN,EAAa,GAAI/C,EAAeqD,EAASrD,cACvC,oBAAqBqD,GACvBN,EAAa,EAAG4gK,EAAkBtgK,EAASsgK,iBACzC,cAAetgK,GACjBN,EAAa,EAAG08C,EAAYp8C,EAASo8C,YAEzC38C,EAAO96E,GAAG0B,OAAS,KAEjB,UADIo5E,EAAO96E,GAAGmC,MAAM,IAElB44E,EAAa,GAAIygK,EAAe,IAAK7yO,MAAOyvE,IAG9C,UADI0C,EAAO96E,GAAGmC,MAAM,IAElB44E,EAAa,GAAIvC,EAAUL,GAAkBqjK,EAAcnjK,EAASL,IAGtE,UADI8C,EAAO96E,GAAGmC,MAAM,IAElB44E,EAAa,GAAInsE,EAAiB,UAATkO,GAA6B,SAATA,GAAmBg/N,GAAkB,KAGpF,KADIhhK,EAAO96E,GAAGmC,MAAM,IAElB,CAAEulF,IACI94E,GACFmsE,EAAa,EAAG8G,GAAY,IAFhC,GAMF,KADI/G,EAAO96E,GAAGmC,MAAM,IAElB44E,EAAa,GAAIr3D,EAAS,MACxB,IAAIw3N,EACAmD,EAgBJ,OAfIzvO,IAAuB,IAAdizE,EACPE,GACFm5J,EAAO,oBAAoBn5J,EAAU,IAAM,OAC3Cs8J,EAAW,oBAAoBt8J,EAAU,IAAM,SAE/Cm5J,EAAO,YACPmD,EAAW,aAEU,YAAdx8J,GACTq5J,EAAO,eACPmD,EAAW,qBAAqBt8J,EAAU,IAAM,SAEhDm5J,EAAO,qBAAqBn5J,EAAU,IAAM,OAC5Cs8J,EAAW,gBAEN,CAAEnD,OAAMrzO,QAASw2O,IAlBA,IAsB5B,WADIvjK,EAAO96E,GAAGmC,MAAM,IAElB44E,EAAa,GAAIp2E,EAAU,MACzB,MAAM25O,EAAW,CAEftnK,aACAE,SACApyE,KAAM20I,KAEHxiE,GAAkBD,EAAYE,IAEnC,OAAOonK,GATkB,IAa7B,EADIxjK,EAAO96E,GAAGmC,MAAM,IAElB85O,EAAkB/gP,GAGpB,IADI4/E,EAAO96E,GAAGmC,MAAM,IAEd+0E,GAAUh8E,IAAUg8E,EAAOh3B,YAC7Bg3B,EAAO72B,SAASnlD,GAIpB,IADI4/E,EAAO96E,GAAGmC,MAAM,IAEd+0E,GAAUmB,IACZ1/D,IACAvX,IAAOF,KAAK,KACVkX,QAKD,CACLld,EACAm9E,EACA48J,EACAO,EACAmG,EACAlkH,EACAgiB,EACAviE,EACA2K,EACAE,EACAp9E,EACAiK,EACA4sO,EACAI,EACAC,EACA/5J,EACAk6J,EACAh/J,EACAiD,EACAm8J,EACAl8J,EACA1H,EACA90D,EACA5G,EACA2+N,EACA32K,EACA42K,EACAtjK,EACAJ,EACA8jK,EACA9kK,EACA2mK,EACAC,EACAxgK,EACAygK,EACAC,EACAC,GACA75J,GACA7G,GACA2gK,GACAE,GACAC,GACAC,IAGJ,MAAMG,WAAej5O,GACnB,YAAYlL,GACVmhF,QACAr3E,GACElG,KACA5D,EACAmhP,GACAb,GACAx+O,EACA,CACEhB,MAAO,EACPm9E,QAAS,EACToO,SAAU,EACVgnJ,aAAc,EACd3wN,KAAM,GACN2+N,gBAAiB,GACjB32K,YAAa,GACb42K,aAAc,GACdtjK,OAAQ,GACRJ,aAAc,GACd2jK,gBAAiB,EACjBlkH,UAAW,GAEb,KACA,EAAE,GAAI,KAIZ18H,EAAQwjP,OAASA,GACjBxjP,EAAQi7O,OAASA,GACjBj7O,EAAQi6O,aAAeA,K,0DCj9kCvB,W,oCCAA,W,kCCAA,W,yCCAA,IAAIwJ,EAAS,WAAkB,IAAIC,EAAIzgP,KAAK0gP,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACF,EAAG,MAAM,CAACE,YAAY,UAAU,CAACF,EAAG,MAAM,CAACE,YAAY,QAAQ/wO,MAAO,CAAE+wH,MAAO6/G,EAAI7/G,MAAOvsG,WAAYosN,EAAII,KAAO,CAACH,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,OAAO,aAAa,OAAO,eAAe,QAAQz3J,MAAM,CAAC,IAAMo3J,EAAIM,SAAS,MAAQ,UAAUN,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAIlhP,MAAM,OAAOkhP,EAAIQ,GAAGR,EAAIS,UAAU,KAAKR,EAAG,YAAY,CAACE,YAAY,UAAU/wO,MAAO,CAAE+wH,MAAO6/G,EAAI7/G,MAAOvsG,WAAYosN,EAAII,GAAIM,MAAO,SAAW93J,MAAM,CAAC,MAAQ,GAAG,KAAO,QAAQjvE,GAAG,CAAC,MAAQqmO,EAAIW,YAAY,CAACV,EAAG,IAAI,CAACE,YAAY,iBAAiBE,YAAY,CAAC,YAAY,aAAa,KAAKJ,EAAG,MAAM,CAACE,YAAY,gBAAgBE,YAAY,CAAC,MAAQ,MAAM,OAAS,WAAW,CAACJ,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,CAAC,QAAU,OAAO,kBAAkB,kBAAkB,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,OAAO,KAAO,MAAM,CAAEL,EAAIY,SAAUX,EAAG,cAAc,CAACr3J,MAAM,CAAC,SAAW,IAAK,MAAQ,SAAS,OAAS,UAAUo3J,EAAIa,GAAIb,EAAIc,QAAQ,SAASl9J,GAAM,OAAOq8J,EAAG,mBAAmB,CAACvnG,IAAI90D,GAAM,CAACq8J,EAAG,MAAM,CAAC7wO,MAAO,CACjjC2mB,MAAO,OACPhV,OAAQ,QACR6S,WAAa,OAAMgwD,0BACnBm9J,eAAgB,QAChB5qN,SAAU,mBACH,GAAG6pN,EAAI3tO,MAAM,GAAG4tO,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,OAAO,OAAS,SAAS,gBAAgB,OAAO,cAAc,MAAM,KAAO,MAAM,CAACJ,EAAG,UAAU,CAACI,YAAY,CAAC,OAAS,SAASz3J,MAAM,CAAC,OAAS,WAAW,CAACq3J,EAAG,IAAI,CAACA,EAAG,MAAM,CAACr3J,MAAM,CAAC,IAAM,6FAA6F,OAAS,QAAQ,MAAQ,YAAYq3J,EAAG,cAAc,CAACE,YAAY,+BAA+BE,YAAY,CAAC,aAAa,OAAO,YAAY,OAAO,SAAW,SAAS,gBAAgB,WAAW,QAAU,cAAc,qBAAqB,KAAK,qBAAqB,YAAYz3J,MAAM,CAAC,OAASo3J,EAAItgO,SAAS,IAAI,KAAKugO,EAAG,MAAM,CAACI,YAAY,CAAC,QAAU,YAAY,aAAa,OAAO,aAAa,OAAO,WAAa,UAAU,gBAAgB,OAAO,gBAAgB,SAAS,CAACJ,EAAG,WAAW,CAACE,YAAY,oBAAoBE,YAAY,CAAC,MAAQ,MAAM,gBAAgB,QAAQz3J,MAAM,CAAC,YAAc,QAAQ,KAAO,QAAQjvE,GAAG,CAAC,OAASqmO,EAAIgB,SAASC,MAAM,CAACxkP,MAAOujP,EAAIkB,OAAQ/9O,SAAS,SAAUg+O,GAAMnB,EAAIkB,OAAOC,GAAKC,WAAW,WAAW,CAACnB,EAAG,YAAY,CAACr3J,MAAM,CAAC,KAAO,SAAS,KAAO,kBAAkBjvE,GAAG,CAAC,MAAQqmO,EAAIgB,SAASliH,KAAK,YAAY,GAA0B,GAAtBkhH,EAAIqB,QAAQxjP,OAAaoiP,EAAG,WAAW,CAACr3J,MAAM,CAAC,QAAUo3J,EAAIqB,QAAQ,UAAYrB,EAAIsB,WAAW3nO,GAAG,CAAC,WAAaqmO,EAAIuB,cAActB,EAAG,MAAM,CAACA,EAAG,YAAY,CAACr3J,MAAM,CAAC,KAAO,UAAU,MAAQ,OAAO,SAAW,OAAO,IAAI,SAASq3J,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACE,YAAY,oBAAoB/wO,MAAO,CAAE+wH,MAAO6/G,EAAI7/G,MAAOvsG,WAAYosN,EAAII,KAAO,CAACH,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,OAAO,aAAa,OAAO,eAAe,QAAQz3J,MAAM,CAAC,IAAMo3J,EAAIM,SAAS,MAAQ,UAAUN,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAIlhP,MAAM,OAAOkhP,EAAIQ,GAAGR,EAAIS,UAAU,KAAKR,EAAG,YAAY,CAACE,YAAY,UAAU/wO,MAAO,CAAE+wH,MAAO6/G,EAAI7/G,MAAOvsG,WAAYosN,EAAII,GAAIM,MAAO,SAAW93J,MAAM,CAAC,MAAQ,GAAG,KAAO,QAAQjvE,GAAG,CAAC,MAAQqmO,EAAIW,YAAY,CAACV,EAAG,IAAI,CAACE,YAAY,iBAAiBE,YAAY,CAAC,YAAY,aAAa,KAAKJ,EAAG,MAAM,CAACE,YAAY,gBAAgBE,YAAY,CAAC,MAAQ,MAAM,OAAS,WAAW,CAACJ,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,CAAC,QAAU,OAAO,kBAAkB,kBAAkB,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,OAAO,KAAO,MAAM,CAAEL,EAAIY,SAAUX,EAAG,cAAc,CAACr3J,MAAM,CAAC,SAAW,IAAK,MAAQ,SAAS,OAAS,UAAUo3J,EAAIa,GAAIb,EAAIc,QAAQ,SAASl9J,GAAM,OAAOq8J,EAAG,mBAAmB,CAACvnG,IAAI90D,GAAM,CAACq8J,EAAG,MAAM,CAAC7wO,MAAO,CACz2E2mB,MAAO,OACPhV,OAAQ,QACR6S,WAAa,OAAMgwD,0BACnBm9J,eAAgB,OAChB5qN,SAAU,mBACH,GAAG6pN,EAAI3tO,MAAM,KAAK4tO,EAAG,MAAM,CAACI,YAAY,CAAC,QAAU,YAAY,aAAa,OAAO,aAAa,OAAO,WAAa,UAAU,gBAAgB,OAAO,gBAAgB,SAAS,CAACJ,EAAG,WAAW,CAACE,YAAY,oBAAoBE,YAAY,CAAC,MAAQ,MAAM,gBAAgB,QAAQz3J,MAAM,CAAC,YAAc,QAAQ,KAAO,QAAQjvE,GAAG,CAAC,OAASqmO,EAAIgB,SAASC,MAAM,CAACxkP,MAAOujP,EAAIkB,OAAQ/9O,SAAS,SAAUg+O,GAAMnB,EAAIkB,OAAOC,GAAKC,WAAW,WAAW,CAACnB,EAAG,YAAY,CAACr3J,MAAM,CAAC,KAAO,SAAS,KAAO,kBAAkBjvE,GAAG,CAAC,MAAQqmO,EAAIgB,SAASliH,KAAK,YAAY,GAA0B,GAAtBkhH,EAAIqB,QAAQxjP,OAAaoiP,EAAG,gBAAgB,CAACr3J,MAAM,CAAC,QAAUo3J,EAAIqB,QAAQ,UAAYrB,EAAIsB,WAAW3nO,GAAG,CAAC,WAAaqmO,EAAIuB,cAActB,EAAG,MAAM,CAACA,EAAG,YAAY,CAACr3J,MAAM,CAAC,KAAO,UAAU,MAAQ,OAAO,SAAW,OAAO,IAAI,SAASq3J,EAAG,UAAU,CAACr3J,MAAM,CAAC,GAAKo3J,EAAIlhP,SAAS,IAEj0B0iP,EAAkB,GCdlBzB,G,UAAS,WAAkB,IAAIC,EAAIzgP,KAAK0gP,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,MAAM,CAACE,YAAY,OAAOH,EAAIa,GAAIb,EAAIyB,YAAY,SAAS58O,EAAE6J,GAAO,OAAOuxO,EAAG,UAAU,CAACvnG,IAAIhqI,EAAMyxO,YAAY,OAAOv3J,MAAM,CAAC,aAAa,CAClN9lD,QAAS,MACT9c,QAAS,QAGT,OAAS,UAAU,CAACi6N,EAAG,MAAM,CAACE,YAAY,QAAQv3J,MAAM,CAAC,IAAM/jF,EAAE68O,SAAS/nO,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAI4B,KAAK/8O,OAAOo7O,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,MAAM,QAAU,SAAS1mO,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAI4B,KAAK/8O,MAAM,CAACo7O,EAAG,OAAO,CAACI,YAAY,CAAC,YAAY,OAAO,OAAS,OAAO,MAAQ,OAAO,QAAU,QAAQ,gBAAgB,WAAW,qBAAqB,WAAW,qBAAqB,IAAI,SAAW,WAAW,CAACL,EAAIO,GAAGP,EAAIQ,GAAG37O,EAAE8qB,UAAUswN,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,OAAO,CAACE,YAAY,QAAQ,CAACH,EAAIO,GAAG,OAAOP,EAAIQ,GAAG37O,EAAEg9O,OAASh9O,EAAEg9O,OAAS,kBAAiB,GAAG5B,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,OAAO,aAAa,SAAS,aAAa,SAAS,CAA2B,GAAzBL,EAAIyB,WAAW5jP,OAAaoiP,EAAG,gBAAgB,CAACr3J,MAAM,CAAC,MAAQ,GAAG,OAAS,oBAAoB,MAAQo3J,EAAI8B,aAAa,eAAe9B,EAAI+B,aAAa,YAAY,IAAIpoO,GAAG,CAAC,cAAcqmO,EAAIgC,iBAAiB,iBAAiBhC,EAAIiC,oBAAoB,qBAAqB,SAASN,GAAQ3B,EAAI+B,aAAaJ,GAAQ,sBAAsB,SAASA,GAAQ3B,EAAI+B,aAAaJ,MAAW3B,EAAI3tO,MAAM,OAEhjCmvO,EAAkB,GCwHP,GACflhP,OACA,OACA4hP,YAAA,IAAArvO,KACAsvO,KAAA,EACAJ,aAAA,EACA16M,MAAA,GACAo6M,WAAA,GACAK,aAAA,IAGAj8O,MAAA,CACAy7O,UAAAvzO,OACAszO,QAAArhP,OAEAoiP,MAAA,CACAf,QAAA7hO,GACA83N,QAAA+K,IAAA7iO,GACA,KAAAiiO,WAAAjiO,EACA83N,QAAA+K,IAAA,KAAAZ,aAEAH,UAAA9hO,GACA83N,QAAA+K,IAAA7iO,GACA,KAAAsiO,aAAAtiO,EACA83N,QAAA+K,IAAA,KAAAP,gBAGA5kK,UACAo6J,QAAA+K,IAAA,KAAAhB,SACA,KAAAI,WAAA,KAAAJ,QACA,KAAAS,aAAA,KAAAR,WAEAzzI,QAAA,CACA+zI,KAAAjkP,GACA25O,QAAA+K,IAAA,GACAllO,OAAAmlO,aAAAC,QAAA,oBAAAzP,KAAAjgG,UAAAl1I,IAGAwf,OAAAywF,SAAAjnB,KAAA,gBAAAhpF,EAAA6kP,OAeAC,WAEA,IAAAniP,EAAA,CACAsoB,GAAA,SAEA85N,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACA0gB,OAAAywF,SAAAjnB,KAAAm8J,EAAAxiP,cAGAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGAkrG,iBAAAxiO,GACA83N,QAAA+K,IAAA,MAAA7iO,QAEAyiO,oBAAAziO,GACA83N,QAAA+K,IAAA,QAAA7iO,GACA,KAAA2iO,KAAA3iO,EACA,KAAAwjO,MAAA,aAAAxjO,MC5MqX,I,wBCQjXre,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QCnBX4+O,EAAS,WAAkB,IAAIC,EAAIzgP,KAAK0gP,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,MAAM,CAACE,YAAY,OAAOH,EAAIa,GAAIb,EAAIyB,YAAY,SAAS58O,EAAE6J,GAAO,OAAOuxO,EAAG,UAAU,CAACvnG,IAAIhqI,EAAMyxO,YAAY,OAAOv3J,MAAM,CAAC,aAAa,CAClN9lD,QAAS,MACT9c,QAAS,QAGT,OAAS,UAAU,CAACi6N,EAAG,MAAM,CAACE,YAAY,QAAQv3J,MAAM,CAAC,IAAM/jF,EAAE68O,SAAS/nO,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAI4B,KAAK/8O,OAAOo7O,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,MAAM,QAAU,SAAS1mO,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAI4B,KAAK/8O,MAAM,CAACo7O,EAAG,OAAO,CAACI,YAAY,CAAC,YAAY,OAAO,OAAS,OAAO,MAAQ,OAAO,QAAU,QAAQ,gBAAgB,WAAW,qBAAqB,WAAW,qBAAqB,IAAI,SAAW,WAAW,CAACL,EAAIO,GAAGP,EAAIQ,GAAG37O,EAAE8qB,UAAUswN,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,OAAO,CAACE,YAAY,QAAQ,CAACH,EAAIO,GAAG,OAAOP,EAAIQ,GAAG37O,EAAEg9O,OAASh9O,EAAEg9O,OAAS,kBAAiB,GAAG5B,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,OAAO,aAAa,SAAS,aAAa,SAAS,CAA2B,GAAzBL,EAAIyB,WAAW5jP,OAAaoiP,EAAG,gBAAgB,CAACr3J,MAAM,CAAC,MAAQ,GAAG,OAAS,oBAAoB,MAAQo3J,EAAI8B,aAAa,eAAe9B,EAAI+B,aAAa,YAAY,IAAIpoO,GAAG,CAAC,cAAcqmO,EAAIgC,iBAAiB,iBAAiBhC,EAAIiC,oBAAoB,qBAAqB,SAASN,GAAQ3B,EAAI+B,aAAaJ,GAAQ,sBAAsB,SAASA,GAAQ3B,EAAI+B,aAAaJ,MAAW3B,EAAI3tO,MAAM,MAEhjCmvO,EAAkB,GCyHP,GACflhP,OACA,OACA4hP,YAAA,IAAArvO,KACAsvO,KAAA,EACAJ,aAAA,EACA16M,MAAA,GACAo6M,WAAA,GACAK,aAAA,IAGAj8O,MAAA,CACAy7O,UAAAvzO,OACAszO,QAAArhP,OAEAoiP,MAAA,CACAf,QAAA7hO,GACA83N,QAAA+K,IAAA7iO,GACA,KAAAiiO,WAAAjiO,EACA83N,QAAA+K,IAAA,KAAAZ,aAEAH,UAAA9hO,GACA83N,QAAA+K,IAAA7iO,GACA,KAAAsiO,aAAAtiO,EACA83N,QAAA+K,IAAA,KAAAP,gBAGA5kK,UACAo6J,QAAA+K,IAAA,KAAAhB,SACA,KAAAI,WAAA,KAAAJ,QACA,KAAAS,aAAA,KAAAR,WAEAzzI,QAAA,CACA+zI,KAAAjkP,GACA25O,QAAA+K,IAAA,GACAllO,OAAAmlO,aAAAC,QAAA,oBAAAzP,KAAAjgG,UAAAl1I,IAGAwf,OAAAywF,SAAAjnB,KAAA,gBAAAhpF,EAAA6kP,OAeAC,WAEA,IAAAniP,EAAA,CACAsoB,GAAA,SAEA85N,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACA0gB,OAAAywF,SAAAjnB,KAAAm8J,EAAAxiP,cAGAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGAkrG,iBAAAxiO,GACA83N,QAAA+K,IAAA,MAAA7iO,QAEAyiO,oBAAAziO,GACA83N,QAAA+K,IAAA,QAAA7iO,GACA,KAAA2iO,KAAA3iO,EACA,KAAAwjO,MAAA,aAAAxjO,MC7M2X,ICQvX,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,yCCiOA,GACf1gB,KAAA,OACAmkP,WAAA,CAAAC,WAAAC,eAAAC,gBAAAC,iBACA/iP,OACA,OACAxB,KAAA,GACAwhP,SAAA,GACA5gO,KAAA,GACAkhO,UAAA,EACAzgH,MAAA,GACAigH,GAAA,GACAK,SAAA,GACAS,OAAA,GACAiB,KAAA,EACA5vO,GAAA,GACAuuO,OAAA,GACAO,QAAA,GACAC,UAAA,EACAa,KAAA,EACA96M,MAAA,GACAi8M,QAAA,OAGApmK,UACAo6J,QAAA+K,IAAA,KAAAkB,OAAAC,OACA,KAAAjxO,GAAA,KAAAgxO,OAAAC,MAAAjxO,GACA,KAAAkxO,SACA,KAAAzC,UACA,IAAA0C,EAAAvmO,OAAAwmO,YAAApoP,SAAAqgC,gBAAAnF,aAAAl7B,SAAAuU,KAAA2mB,YACA6gN,QAAA+K,IAAAqB,GACAA,EAAA,KACA,KAAAJ,QAAA,QACA,KAAAM,YAAA,SAGA,KAAAN,QAAA,KACA,KAAAM,YAAA,WAGA/1I,QAAA,CACA8yI,YACA,KAAAkD,QAAApiP,KAAA,CAAA8rI,KAAA,QAEAg0G,WAAAY,GACA,KAAAA,OACA,KAAAnB,WAEAyC,SACA,IAAAnjP,EAAA,CACAsoB,GAAA,SACAk7N,IAAA,KAAAvxO,IAEAmwO,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,cAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACAimP,EAAA5B,OAAAgC,EAAAxiP,UAAAyjP,OACArB,EAAAjC,SAAAqC,EAAAxiP,UAAAqvB,MACA+yN,EAAAtC,GAAA0C,EAAAxiP,UAAA8/O,GACAsC,EAAAviH,MAAA2iH,EAAAxiP,UAAA6/H,MACAuiH,EAAA9B,SAAAkC,EAAAxiP,UAAAsgP,SACA8B,EAAAhjO,KAAAojO,EAAAxiP,UAAAsG,MACA87O,EAAApC,SAAAwC,EAAAxiP,UAAAggP,SACAoC,EAAA5jP,KAAAgkP,EAAAxiP,UAAAxB,SAGAikP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGAkqG,UACA,IAAA1gP,EAAA,CACAsoB,GAAA,SACAk7N,IAAA,KAAAvxO,GACA4vO,KAAA,KAAAA,KACA96M,MAAA,KAAAA,MACA1X,MAAA,KAAAuxN,QAEAwB,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,cAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACAimP,EAAArB,QAAAyB,EAAAxiP,UACAoiP,EAAApB,UAAAwB,EAAAxiP,KAAA0jP,gBAGAjB,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,SC/U4W,ICSxW,G,oBAAY,eACd,EACAipG,EACAyB,GACA,EACA,KACA,WACA,OAIa,e,2CCpBf,W,kFCAe,SAASyC,EAAUjmP,GAChC,GAAY,MAARA,EACF,OAAOmf,OAGT,GAAwB,oBAApBnf,EAAKmV,WAAkC,CACzC,IAAIoK,EAAgBvf,EAAKuf,cACzB,OAAOA,GAAgBA,EAAc2mO,aAAwB/mO,OAG/D,OAAOnf,ECRT,SAASg+I,EAAUh+I,GACjB,IAAImmP,EAAaF,EAAUjmP,GAAM8iK,QACjC,OAAO9iK,aAAgBmmP,GAAcnmP,aAAgB8iK,QAGvD,SAASsjF,EAAcpmP,GACrB,IAAImmP,EAAaF,EAAUjmP,GAAMkgP,YACjC,OAAOlgP,aAAgBmmP,GAAcnmP,aAAgBkgP,YAGvD,SAASmG,EAAarmP,GAEpB,GAA0B,qBAAfsmP,WACT,OAAO,EAGT,IAAIH,EAAaF,EAAUjmP,GAAMsmP,WACjC,OAAOtmP,aAAgBmmP,GAAcnmP,aAAgBsmP,W,6WCnBhD,IAAI,EAAMxwO,KAAKyC,IACX,EAAMzC,KAAKC,IACXusB,EAAQxsB,KAAKwsB,MCFT,SAASikN,IACtB,IAAIC,EAASr4O,UAAUs4O,cAEvB,OAAc,MAAVD,GAAkBA,EAAOE,QAAU1kP,MAAMk/E,QAAQslK,EAAOE,QACnDF,EAAOE,OAAOt/O,KAAI,SAAUw+E,GACjC,OAAOA,EAAK+gK,MAAQ,IAAM/gK,EAAK1a,WAC9BxnB,KAAK,KAGHv1C,UAAUD,UCRJ,SAAS04O,IACtB,OAAQ,iCAAiCt4O,KAAKi4O,KCEjC,SAAS7nO,EAAsBirE,EAASk9J,EAAcC,QAC9C,IAAjBD,IACFA,GAAe,QAGO,IAApBC,IACFA,GAAkB,GAGpB,IAAIC,EAAap9J,EAAQjrE,wBACrBqe,EAAS,EACTC,EAAS,EAET6pN,GAAgBT,EAAcz8J,KAChC5sD,EAAS4sD,EAAQrrE,YAAc,GAAIgkB,EAAMykN,EAAWhvN,OAAS4xD,EAAQrrE,aAAmB,EACxF0e,EAAS2sD,EAAQtrE,aAAe,GAAIikB,EAAMykN,EAAWhkO,QAAU4mE,EAAQtrE,cAAoB,GAG7F,IAAI2oO,EAAOhpG,EAAUr0D,GAAWs8J,EAAUt8J,GAAWxqE,OACjD8nO,EAAiBD,EAAKC,eAEtBC,GAAoBN,KAAsBE,EAC1C9iO,GAAK+iO,EAAWnoO,MAAQsoO,GAAoBD,EAAiBA,EAAe3lN,WAAa,IAAMvE,EAC/F6C,GAAKmnN,EAAWn7O,KAAOs7O,GAAoBD,EAAiBA,EAAeluN,UAAY,IAAMiE,EAC7FjF,EAAQgvN,EAAWhvN,MAAQgF,EAC3Bha,EAASgkO,EAAWhkO,OAASia,EACjC,MAAO,CACLjF,MAAOA,EACPhV,OAAQA,EACRnX,IAAKg0B,EACL/gB,MAAOmF,EAAI+T,EACXyC,OAAQoF,EAAI7c,EACZnE,KAAMoF,EACNA,EAAGA,EACH4b,EAAGA,GCrCQ,SAASunN,EAAgBnnP,GACtC,IAAIonP,EAAMnB,EAAUjmP,GAChB69B,EAAaupN,EAAIzpN,YACjBM,EAAYmpN,EAAIppN,YACpB,MAAO,CACLH,WAAYA,EACZI,UAAWA,GCPA,SAASopN,EAAqB19J,GAC3C,MAAO,CACL9rD,WAAY8rD,EAAQ9rD,WACpBI,UAAW0rD,EAAQ1rD,WCCR,SAASqpN,EAActnP,GACpC,OAAIA,IAASimP,EAAUjmP,IAAUomP,EAAcpmP,GAGtCqnP,EAAqBrnP,GAFrBmnP,EAAgBnnP,GCNZ,SAASunP,EAAY59J,GAClC,OAAOA,GAAWA,EAAQl3C,UAAY,IAAIx7B,cAAgB,KCA7C,SAASuwO,EAAmB79J,GAEzC,QAASq0D,EAAUr0D,GAAWA,EAAQpqE,cACtCoqE,EAAQpsF,WAAa4hB,OAAO5hB,UAAUqgC,gBCDzB,SAAS6pN,EAAoB99J,GAQ1C,OAAOjrE,EAAsB8oO,EAAmB79J,IAAU/qE,KAAOuoO,EAAgBx9J,GAAS9rD,WCV7E,SAAS1E,EAAiBwwD,GACvC,OAAOs8J,EAAUt8J,GAASxwD,iBAAiBwwD,GCD9B,SAAS+9J,EAAe/9J,GAErC,IAAIg+J,EAAoBxuN,EAAiBwwD,GACrC2lD,EAAWq4G,EAAkBr4G,SAC7Bs4G,EAAYD,EAAkBC,UAC9BC,EAAYF,EAAkBE,UAElC,MAAO,6BAA6Bv5O,KAAKghI,EAAWu4G,EAAYD,GCClE,SAASE,EAAgBn+J,GACvB,IAAI1vD,EAAO0vD,EAAQjrE,wBACfqe,EAASuF,EAAMrI,EAAKlC,OAAS4xD,EAAQrrE,aAAe,EACpD0e,EAASsF,EAAMrI,EAAKlX,QAAU4mE,EAAQtrE,cAAgB,EAC1D,OAAkB,IAAX0e,GAA2B,IAAXC,EAKV,SAAS+qN,EAAiBC,EAAyB59K,EAAc69K,QAC9D,IAAZA,IACFA,GAAU,GAGZ,IAAIC,EAA0B9B,EAAch8K,GACxC+9K,EAAuB/B,EAAch8K,IAAiB09K,EAAgB19K,GACtExsC,EAAkB4pN,EAAmBp9K,GACrCnwC,EAAOvb,EAAsBspO,EAAyBG,EAAsBF,GAC5E5yO,EAAS,CACXwoB,WAAY,EACZI,UAAW,GAETmqN,EAAU,CACZpkO,EAAG,EACH4b,EAAG,GAkBL,OAfIsoN,IAA4BA,IAA4BD,MACxB,SAA9BV,EAAYn9K,IAChBs9K,EAAe9pN,MACbvoB,EAASiyO,EAAcl9K,IAGrBg8K,EAAch8K,IAChBg+K,EAAU1pO,EAAsB0rD,GAAc,GAC9Cg+K,EAAQpkO,GAAKomD,EAAa/oC,WAC1B+mN,EAAQxoN,GAAKwqC,EAAai+K,WACjBzqN,IACTwqN,EAAQpkO,EAAIyjO,EAAoB7pN,KAI7B,CACL5Z,EAAGiW,EAAKrb,KAAOvJ,EAAOwoB,WAAauqN,EAAQpkO,EAC3C4b,EAAG3F,EAAKruB,IAAMyJ,EAAO4oB,UAAYmqN,EAAQxoN,EACzC7H,MAAOkC,EAAKlC,MACZhV,OAAQkX,EAAKlX,QCpDF,SAASulO,EAAc3+J,GACpC,IAAIo9J,EAAaroO,EAAsBirE,GAGnC5xD,EAAQ4xD,EAAQrrE,YAChByE,EAAS4mE,EAAQtrE,aAUrB,OARIvI,KAAKmK,IAAI8mO,EAAWhvN,MAAQA,IAAU,IACxCA,EAAQgvN,EAAWhvN,OAGjBjiB,KAAKmK,IAAI8mO,EAAWhkO,OAASA,IAAW,IAC1CA,EAASgkO,EAAWhkO,QAGf,CACLiB,EAAG2lE,EAAQroD,WACX1B,EAAG+pD,EAAQ5wD,UACXhB,MAAOA,EACPhV,OAAQA,GCnBG,SAAS8zF,EAAcltB,GACpC,MAA6B,SAAzB49J,EAAY59J,GACPA,EAMPA,EAAQ4+J,cACR5+J,EAAQrpF,aACR+lP,EAAa18J,GAAWA,EAAQh4E,KAAO,OAEvC61O,EAAmB79J,GCXR,SAAS6+J,EAAgBxoP,GACtC,MAAI,CAAC,OAAQ,OAAQ,aAAaiG,QAAQshP,EAAYvnP,KAAU,EAEvDA,EAAKuf,cAAczN,KAGxBs0O,EAAcpmP,IAAS0nP,EAAe1nP,GACjCA,EAGFwoP,EAAgB3xI,EAAc72G,ICHxB,SAASyoP,EAAkB9+J,EAAS7c,GACjD,IAAI47K,OAES,IAAT57K,IACFA,EAAO,IAGT,IAAI67K,EAAeH,EAAgB7+J,GAC/Bi/J,EAASD,KAAqE,OAAlDD,EAAwB/+J,EAAQpqE,oBAAyB,EAASmpO,EAAsB52O,MACpHs1O,EAAMnB,EAAU0C,GAChB5oP,EAAS6oP,EAAS,CAACxB,GAAKprO,OAAOorO,EAAIH,gBAAkB,GAAIS,EAAeiB,GAAgBA,EAAe,IAAMA,EAC7GE,EAAc/7K,EAAK9wD,OAAOjc,GAC9B,OAAO6oP,EAASC,EAChBA,EAAY7sO,OAAOysO,EAAkB5xI,EAAc92G,KCvBtC,SAAS+oP,EAAen/J,GACrC,MAAO,CAAC,QAAS,KAAM,MAAM1jF,QAAQshP,EAAY59J,KAAa,ECMhE,SAASo/J,EAAoBp/J,GAC3B,OAAKy8J,EAAcz8J,IACoB,UAAvCxwD,EAAiBwwD,GAASxxD,SAInBwxD,EAAQvf,aAHN,KAQX,SAAS4+K,EAAmBr/J,GAC1B,IAAIs/J,EAAY,WAAW36O,KAAKi4O,KAC5B2C,EAAO,WAAW56O,KAAKi4O,KAE3B,GAAI2C,GAAQ9C,EAAcz8J,GAAU,CAElC,IAAIw/J,EAAahwN,EAAiBwwD,GAElC,GAA4B,UAAxBw/J,EAAWhxN,SACb,OAAO,KAIX,IAAIixN,EAAcvyI,EAAcltB,GAE5B08J,EAAa+C,KACfA,EAAcA,EAAYz3O,MAG5B,MAAOy0O,EAAcgD,IAAgB,CAAC,OAAQ,QAAQnjP,QAAQshP,EAAY6B,IAAgB,EAAG,CAC3F,IAAIt3N,EAAMqH,EAAiBiwN,GAI3B,GAAsB,SAAlBt3N,EAAIyhG,WAA4C,SAApBzhG,EAAIu3N,aAA0C,UAAhBv3N,EAAIw3N,UAAiF,IAA1D,CAAC,YAAa,eAAerjP,QAAQ6rB,EAAIy3N,aAAsBN,GAAgC,WAAnBn3N,EAAIy3N,YAA2BN,GAAan3N,EAAIzqB,QAAyB,SAAfyqB,EAAIzqB,OACjO,OAAO+hP,EAEPA,EAAcA,EAAY9oP,WAI9B,OAAO,KAKM,SAASkpP,EAAgB7/J,GACtC,IAAIxqE,EAAS8mO,EAAUt8J,GACnBvf,EAAe2+K,EAAoBp/J,GAEvC,MAAOvf,GAAgB0+K,EAAe1+K,IAA6D,WAA5CjxC,EAAiBixC,GAAcjyC,SACpFiyC,EAAe2+K,EAAoB3+K,GAGrC,OAAIA,IAA+C,SAA9Bm9K,EAAYn9K,IAA0D,SAA9Bm9K,EAAYn9K,IAAwE,WAA5CjxC,EAAiBixC,GAAcjyC,UAC3HhZ,EAGFirD,GAAgB4+K,EAAmBr/J,IAAYxqE,ECnEjD,IAAI,EAAM,MACNqb,EAAS,SACT3b,EAAQ,QACRD,EAAO,OACP6qO,EAAO,OACPC,EAAiB,CAAC,EAAKlvN,EAAQ3b,EAAOD,GACtCvM,EAAQ,QACRC,EAAM,MACN,EAAkB,kBAClBo2B,EAAW,WACX,EAAS,SACT,EAAY,YACZihN,EAAmCD,EAAehyI,QAAO,SAAUkyI,EAAKjjK,GACjF,OAAOijK,EAAI5tO,OAAO,CAAC2qE,EAAY,IAAMt0E,EAAOs0E,EAAY,IAAMr0E,MAC7D,IACQ,EAA0B,GAAG0J,OAAO0tO,EAAgB,CAACD,IAAO/xI,QAAO,SAAUkyI,EAAKjjK,GAC3F,OAAOijK,EAAI5tO,OAAO,CAAC2qE,EAAWA,EAAY,IAAMt0E,EAAOs0E,EAAY,IAAMr0E,MACxE,IAEQu3O,EAAa,aACbjiM,EAAO,OACPkiM,EAAY,YAEZC,EAAa,aACb/nB,EAAO,OACPgoB,EAAY,YAEZC,EAAc,cACdj+O,EAAQ,QACRk+O,EAAa,aACbC,GAAiB,CAACN,EAAYjiM,EAAMkiM,EAAWC,EAAY/nB,EAAMgoB,EAAWC,EAAaj+O,EAAOk+O,GC5B3G,SAAS1uO,GAAM4uO,GACb,IAAIhjP,EAAM,IAAIe,IACVkiP,EAAU,IAAIvlP,IACdia,EAAS,GAKb,SAASo4B,EAAKmzM,GACZD,EAAQhlP,IAAIilP,EAASxpP,MACrB,IAAIypP,EAAW,GAAGvuO,OAAOsuO,EAASC,UAAY,GAAID,EAASE,kBAAoB,IAC/ED,EAASprP,SAAQ,SAAUsrP,GACzB,IAAKJ,EAAQjlP,IAAIqlP,GAAM,CACrB,IAAIC,EAActjP,EAAI43B,IAAIyrN,GAEtBC,GACFvzM,EAAKuzM,OAIX3rO,EAAOtb,KAAK6mP,GASd,OAzBAF,EAAUjrP,SAAQ,SAAUmrP,GAC1BljP,EAAI0N,IAAIw1O,EAASxpP,KAAMwpP,MAkBzBF,EAAUjrP,SAAQ,SAAUmrP,GACrBD,EAAQjlP,IAAIklP,EAASxpP,OAExBq2C,EAAKmzM,MAGFvrO,EAGM,SAAS4rO,GAAeP,GAErC,IAAIQ,EAAmBpvO,GAAM4uO,GAE7B,OAAOD,GAAezyI,QAAO,SAAUkyI,EAAKh6G,GAC1C,OAAOg6G,EAAI5tO,OAAO4uO,EAAiBvjP,QAAO,SAAUijP,GAClD,OAAOA,EAAS16G,QAAUA,QAE3B,IC1CU,SAASssG,GAASp9O,GAC/B,IAAI+rP,EACJ,OAAO,WAUL,OATKA,IACHA,EAAU,IAAIjtP,SAAQ,SAAUC,GAC9BD,QAAQC,UAAU4G,MAAK,WACrBomP,OAAUC,EACVjtP,EAAQiB,YAKP+rP,GCZI,SAASE,GAAYX,GAClC,IAAIx7N,EAASw7N,EAAU1yI,QAAO,SAAU9oF,EAAQre,GAC9C,IAAIgrC,EAAW3sB,EAAOre,EAAQzP,MAK9B,OAJA8tB,EAAOre,EAAQzP,MAAQy6C,EAAWn9C,OAAO0hD,OAAO,GAAIvE,EAAUhrC,EAAS,CACrE5S,QAASS,OAAO0hD,OAAO,GAAIvE,EAAS59C,QAAS4S,EAAQ5S,SACrD2E,KAAMlE,OAAO0hD,OAAO,GAAIvE,EAASj5C,KAAMiO,EAAQjO,QAC5CiO,EACEqe,IACN,IAEH,OAAOxwB,OAAOwB,KAAKgvB,GAAQxnB,KAAI,SAAUszI,GACvC,OAAO9rH,EAAO8rH,MCFlB,IAAIr5B,GAAkB,CACpB16B,UAAW,SACXyjK,UAAW,GACXY,SAAU,YAGZ,SAASC,KACP,IAAK,IAAIC,EAAO73O,UAAUxT,OAAQsT,EAAO,IAAInR,MAAMkpP,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Eh4O,EAAKg4O,GAAQ93O,UAAU83O,GAGzB,OAAQh4O,EAAKi4E,MAAK,SAAUzB,GAC1B,QAASA,GAAoD,oBAAlCA,EAAQjrE,0BAIhC,SAAS0sO,GAAgBC,QACL,IAArBA,IACFA,EAAmB,IAGrB,IAAIC,EAAoBD,EACpBE,EAAwBD,EAAkBE,iBAC1CA,OAA6C,IAA1BD,EAAmC,GAAKA,EAC3DE,EAAyBH,EAAkBI,eAC3CA,OAA4C,IAA3BD,EAAoCpqI,GAAkBoqI,EAC3E,OAAO,SAAsBxlK,EAAWe,EAAQrpF,QAC9B,IAAZA,IACFA,EAAU+tP,GAGZ,IAAIpqO,EAAQ,CACVqlE,UAAW,SACXikK,iBAAkB,GAClBjtP,QAASS,OAAO0hD,OAAO,GAAIuhE,GAAiBqqI,GAC5CC,cAAe,GACfC,SAAU,CACR3lK,UAAWA,EACXe,OAAQA,GAEVtzD,WAAY,GACZzM,OAAQ,IAEN4kO,EAAmB,GACnBC,GAAc,EACdhN,EAAW,CACbx9N,MAAOA,EACPyqO,WAAY,SAAoBC,GAC9B,IAAIruP,EAAsC,oBAArBquP,EAAkCA,EAAiB1qO,EAAM3jB,SAAWquP,EACzFC,IACA3qO,EAAM3jB,QAAUS,OAAO0hD,OAAO,GAAI4rM,EAAgBpqO,EAAM3jB,QAASA,GACjE2jB,EAAM4qO,cAAgB,CACpBjmK,UAAW+3D,EAAU/3D,GAAawiK,EAAkBxiK,GAAaA,EAAUkmK,eAAiB1D,EAAkBxiK,EAAUkmK,gBAAkB,GAC1InlK,OAAQyhK,EAAkBzhK,IAI5B,IAAI4jK,EAAmBD,GAAeI,GAAY,GAAG/uO,OAAOwvO,EAAkBlqO,EAAM3jB,QAAQysP,aAM5F,OAJA9oO,EAAMspO,iBAAmBA,EAAiBvjP,QAAO,SAAUH,GACzD,OAAOA,EAAEklP,WAEXC,IACOvN,EAAS75O,UAOlBk2B,YAAa,WACX,IAAI2wN,EAAJ,CAIA,IAAIQ,EAAkBhrO,EAAMsqO,SACxB3lK,EAAYqmK,EAAgBrmK,UAC5Be,EAASslK,EAAgBtlK,OAG7B,GAAKikK,GAAiBhlK,EAAWe,GAAjC,CAKA1lE,EAAMgZ,MAAQ,CACZ2rD,UAAW8hK,EAAiB9hK,EAAWujK,EAAgBxiK,GAAoC,UAA3B1lE,EAAM3jB,QAAQqtP,UAC9EhkK,OAAQshK,EAActhK,IAOxB1lE,EAAMumB,OAAQ,EACdvmB,EAAMqlE,UAAYrlE,EAAM3jB,QAAQgpF,UAKhCrlE,EAAMspO,iBAAiBzrP,SAAQ,SAAUmrP,GACvC,OAAOhpO,EAAMqqO,cAAcrB,EAASxpP,MAAQ1C,OAAO0hD,OAAO,GAAIwqM,EAAShoP,SAGzE,IAAK,IAAIoO,EAAQ,EAAGA,EAAQ4Q,EAAMspO,iBAAiB/qP,OAAQ6Q,IACzD,IAAoB,IAAhB4Q,EAAMumB,MAAV,CAMA,IAAI0kN,EAAwBjrO,EAAMspO,iBAAiBl6O,GAC/C5R,EAAKytP,EAAsBztP,GAC3B0tP,EAAyBD,EAAsB5uP,QAC/C8uP,OAAsC,IAA3BD,EAAoC,GAAKA,EACpD1rP,EAAOyrP,EAAsBzrP,KAEf,oBAAPhC,IACTwiB,EAAQxiB,EAAG,CACTwiB,MAAOA,EACP3jB,QAAS8uP,EACT3rP,KAAMA,EACNg+O,SAAUA,KACNx9N,QAjBNA,EAAMumB,OAAQ,EACdn3B,GAAS,KAsBfzL,OAAQi3O,IAAS,WACf,OAAO,IAAIt+O,SAAQ,SAAUC,GAC3BihP,EAAS3jN,cACTt9B,EAAQyjB,SAGZ8kE,QAAS,WACP6lK,IACAH,GAAc,IAIlB,IAAKb,GAAiBhlK,EAAWe,GAC/B,OAAO83J,EAaT,SAASuN,IACP/qO,EAAMspO,iBAAiBzrP,SAAQ,SAAU6nP,GACvC,IAAIlmP,EAAOkmP,EAAKlmP,KACZ4rP,EAAe1F,EAAKrpP,QACpBA,OAA2B,IAAjB+uP,EAA0B,GAAKA,EACzCC,EAAS3F,EAAK2F,OAElB,GAAsB,oBAAXA,EAAuB,CAChC,IAAIC,EAAYD,EAAO,CACrBrrO,MAAOA,EACPxgB,KAAMA,EACNg+O,SAAUA,EACVnhP,QAASA,IAGPkvP,EAAS,aAEbhB,EAAiBpoP,KAAKmpP,GAAaC,OAKzC,SAASZ,IACPJ,EAAiB1sP,SAAQ,SAAUL,GACjC,OAAOA,OAET+sP,EAAmB,GAGrB,OAvCA/M,EAASiN,WAAWpuP,GAAS8G,MAAK,SAAU6c,IACrCwqO,GAAenuP,EAAQmvP,eAC1BnvP,EAAQmvP,cAAcxrO,MAqCnBw9N,GAGJ,IClMH6B,GAAU,CACZA,SAAS,GAGX,SAASgM,GAAO3F,GACd,IAAI1lO,EAAQ0lO,EAAK1lO,MACbw9N,EAAWkI,EAAKlI,SAChBnhP,EAAUqpP,EAAKrpP,QACfovP,EAAkBpvP,EAAQ0X,OAC1BA,OAA6B,IAApB03O,GAAoCA,EAC7CC,EAAkBrvP,EAAQsvP,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7C7tO,EAAS8mO,EAAU3kO,EAAMsqO,SAAS5kK,QAClCklK,EAAgB,GAAGlwO,OAAOsF,EAAM4qO,cAAcjmK,UAAW3kE,EAAM4qO,cAAcllK,QAYjF,OAVI3xE,GACF62O,EAAc/sP,SAAQ,SAAUwpP,GAC9BA,EAAa7qP,iBAAiB,SAAUghP,EAAS75O,OAAQ07O,OAIzDsM,GACF9tO,EAAOrhB,iBAAiB,SAAUghP,EAAS75O,OAAQ07O,IAG9C,WACDtrO,GACF62O,EAAc/sP,SAAQ,SAAUwpP,GAC9BA,EAAatnP,oBAAoB,SAAUy9O,EAAS75O,OAAQ07O,OAI5DsM,GACF9tO,EAAO9d,oBAAoB,SAAUy9O,EAAS75O,OAAQ07O,KAM7C,QACb7/O,KAAM,iBACNsrP,SAAS,EACTx8G,MAAO,QACP9wI,GAAI,aACJ6tP,OAAQA,GACRrqP,KAAM,IC9CO,SAAS4qP,GAAiBvmK,GACvC,OAAOA,EAAUx0E,MAAM,KAAK,GCFf,SAASg7O,GAAaxmK,GACnC,OAAOA,EAAUx0E,MAAM,KAAK,GCDf,SAASi7O,GAAyBzmK,GAC/C,MAAO,CAAC,MAAO,UAAU1gF,QAAQ0gF,IAAc,EAAI,IAAM,ICG5C,SAAS0mK,GAAerG,GACrC,IAOIoB,EAPAniK,EAAY+gK,EAAK/gK,UACjB0D,EAAUq9J,EAAKr9J,QACfhD,EAAYqgK,EAAKrgK,UACjB2mK,EAAgB3mK,EAAYumK,GAAiBvmK,GAAa,KAC1D4mK,EAAY5mK,EAAYwmK,GAAaxmK,GAAa,KAClD6mK,EAAUvnK,EAAUjiE,EAAIiiE,EAAUluD,MAAQ,EAAI4xD,EAAQ5xD,MAAQ,EAC9D01N,EAAUxnK,EAAUrmD,EAAIqmD,EAAUljE,OAAS,EAAI4mE,EAAQ5mE,OAAS,EAGpE,OAAQuqO,GACN,KAAK,EACHlF,EAAU,CACRpkO,EAAGwpO,EACH5tN,EAAGqmD,EAAUrmD,EAAI+pD,EAAQ5mE,QAE3B,MAEF,KAAKyX,EACH4tN,EAAU,CACRpkO,EAAGwpO,EACH5tN,EAAGqmD,EAAUrmD,EAAIqmD,EAAUljE,QAE7B,MAEF,KAAKlE,EACHupO,EAAU,CACRpkO,EAAGiiE,EAAUjiE,EAAIiiE,EAAUluD,MAC3B6H,EAAG6tN,GAEL,MAEF,KAAK7uO,EACHwpO,EAAU,CACRpkO,EAAGiiE,EAAUjiE,EAAI2lE,EAAQ5xD,MACzB6H,EAAG6tN,GAEL,MAEF,QACErF,EAAU,CACRpkO,EAAGiiE,EAAUjiE,EACb4b,EAAGqmD,EAAUrmD,GAInB,IAAI8tN,EAAWJ,EAAgBF,GAAyBE,GAAiB,KAEzE,GAAgB,MAAZI,EAAkB,CACpB,IAAIh0O,EAAmB,MAAbg0O,EAAmB,SAAW,QAExC,OAAQH,GACN,KAAKl7O,EACH+1O,EAAQsF,GAAYtF,EAAQsF,IAAaznK,EAAUvsE,GAAO,EAAIiwE,EAAQjwE,GAAO,GAC7E,MAEF,KAAKpH,EACH81O,EAAQsF,GAAYtF,EAAQsF,IAAaznK,EAAUvsE,GAAO,EAAIiwE,EAAQjwE,GAAO,GAC7E,MAEF,UAIJ,OAAO0uO,EClET,SAAS,GAAcpB,GACrB,IAAI1lO,EAAQ0lO,EAAK1lO,MACbxgB,EAAOkmP,EAAKlmP,KAKhBwgB,EAAMqqO,cAAc7qP,GAAQusP,GAAe,CACzCpnK,UAAW3kE,EAAMgZ,MAAM2rD,UACvB0D,QAASroE,EAAMgZ,MAAM0sD,OACrBgkK,SAAU,WACVrkK,UAAWrlE,EAAMqlE,YAKN,QACb7lF,KAAM,gBACNsrP,SAAS,EACTx8G,MAAO,OACP9wI,GAAI,GACJwD,KAAM,ICdJqrP,GAAa,CACf/hP,IAAK,OACLiT,MAAO,OACP2b,OAAQ,OACR5b,KAAM,QAKR,SAASgvO,GAAkB5G,EAAMI,GAC/B,IAAIpjO,EAAIgjO,EAAKhjO,EACT4b,EAAIonN,EAAKpnN,EACTiuN,EAAMzG,EAAI0G,kBAAoB,EAClC,MAAO,CACL9pO,EAAGse,EAAMte,EAAI6pO,GAAOA,GAAO,EAC3BjuN,EAAG0C,EAAM1C,EAAIiuN,GAAOA,GAAO,GAIxB,SAASE,GAAYC,GAC1B,IAAIC,EAEAjnK,EAASgnK,EAAMhnK,OACfknK,EAAaF,EAAME,WACnBvnK,EAAYqnK,EAAMrnK,UAClB4mK,EAAYS,EAAMT,UAClBnF,EAAU4F,EAAM5F,QAChBjwN,EAAW61N,EAAM71N,SACjBg2N,EAAkBH,EAAMG,gBACxBC,EAAWJ,EAAMI,SACjBC,EAAeL,EAAMK,aACrBpG,EAAU+F,EAAM/F,QAChBqG,EAAalG,EAAQpkO,EACrBA,OAAmB,IAAfsqO,EAAwB,EAAIA,EAChCC,EAAanG,EAAQxoN,EACrBA,OAAmB,IAAf2uN,EAAwB,EAAIA,EAEhCC,EAAgC,oBAAjBH,EAA8BA,EAAa,CAC5DrqO,EAAGA,EACH4b,EAAGA,IACA,CACH5b,EAAGA,EACH4b,EAAGA,GAGL5b,EAAIwqO,EAAMxqO,EACV4b,EAAI4uN,EAAM5uN,EACV,IAAI6uN,EAAOrG,EAAQ10O,eAAe,KAC9Bg7O,EAAOtG,EAAQ10O,eAAe,KAC9Bi7O,EAAQ/vO,EACRgwO,EAAQ,EACRxH,EAAMjoO,OAEV,GAAIivO,EAAU,CACZ,IAAIhkL,EAAeo/K,EAAgBxiK,GAC/B6nK,EAAa,eACbC,EAAY,cAchB,GAZI1kL,IAAiB67K,EAAUj/J,KAC7B5c,EAAeo9K,EAAmBxgK,GAEc,WAA5C7tD,EAAiBixC,GAAcjyC,UAAsC,aAAbA,IAC1D02N,EAAa,eACbC,EAAY,gBAKhB1kL,EAAeA,EAEXuc,IAAc,IAAQA,IAAc/nE,GAAQ+nE,IAAc9nE,IAAU0uO,IAAcj7O,EAAK,CACzFs8O,EAAQp0N,EACR,IAAIu0N,EAAU9G,GAAW79K,IAAiBg9K,GAAOA,EAAIH,eAAiBG,EAAIH,eAAelkO,OACzFqnD,EAAaykL,GACbjvN,GAAKmvN,EAAUb,EAAWnrO,OAC1B6c,GAAKuuN,EAAkB,GAAK,EAG9B,GAAIxnK,IAAc/nE,IAAS+nE,IAAc,GAAOA,IAAcnsD,IAAW+yN,IAAcj7O,EAAK,CAC1Fq8O,EAAQ9vO,EACR,IAAImwO,EAAU/G,GAAW79K,IAAiBg9K,GAAOA,EAAIH,eAAiBG,EAAIH,eAAelvN,MACzFqyC,EAAa0kL,GACb9qO,GAAKgrO,EAAUd,EAAWn2N,MAC1B/T,GAAKmqO,EAAkB,GAAK,GAIhC,IAgBMc,EAhBFC,EAAe9wP,OAAO0hD,OAAO,CAC/B3nB,SAAUA,GACTi2N,GAAYT,IAEXwB,GAAyB,IAAjBd,EAAwBT,GAAkB,CACpD5pO,EAAGA,EACH4b,EAAGA,GACFqmN,EAAUj/J,IAAW,CACtBhjE,EAAGA,EACH4b,EAAGA,GAML,OAHA5b,EAAImrO,EAAMnrO,EACV4b,EAAIuvN,EAAMvvN,EAENuuN,EAGK/vP,OAAO0hD,OAAO,GAAIovM,GAAeD,EAAiB,GAAIA,EAAeL,GAASF,EAAO,IAAM,GAAIO,EAAeN,GAASF,EAAO,IAAM,GAAIQ,EAAe17H,WAAa6zH,EAAI0G,kBAAoB,IAAM,EAAI,aAAe9pO,EAAI,OAAS4b,EAAI,MAAQ,eAAiB5b,EAAI,OAAS4b,EAAI,SAAUqvN,IAG5R7wP,OAAO0hD,OAAO,GAAIovM,GAAejB,EAAkB,GAAIA,EAAgBW,GAASF,EAAO9uN,EAAI,KAAO,GAAIquN,EAAgBU,GAASF,EAAOzqO,EAAI,KAAO,GAAIiqO,EAAgB16H,UAAY,GAAI06H,IAG9L,SAASmB,GAAcC,GACrB,IAAI/tO,EAAQ+tO,EAAM/tO,MACd3jB,EAAU0xP,EAAM1xP,QAChB2xP,EAAwB3xP,EAAQwwP,gBAChCA,OAA4C,IAA1BmB,GAA0CA,EAC5DC,EAAoB5xP,EAAQywP,SAC5BA,OAAiC,IAAtBmB,GAAsCA,EACjDC,EAAwB7xP,EAAQ0wP,aAChCA,OAAyC,IAA1BmB,GAA0CA,EACzDN,EAAe,CACjBvoK,UAAWumK,GAAiB5rO,EAAMqlE,WAClC4mK,UAAWJ,GAAa7rO,EAAMqlE,WAC9BK,OAAQ1lE,EAAMsqO,SAAS5kK,OACvBknK,WAAY5sO,EAAMgZ,MAAM0sD,OACxBmnK,gBAAiBA,EACjBlG,QAAoC,UAA3B3mO,EAAM3jB,QAAQqtP,UAGgB,MAArC1pO,EAAMqqO,cAAc8D,gBACtBnuO,EAAM2F,OAAO+/D,OAAS5oF,OAAO0hD,OAAO,GAAIx+B,EAAM2F,OAAO+/D,OAAQ+mK,GAAY3vP,OAAO0hD,OAAO,GAAIovM,EAAc,CACvG9G,QAAS9mO,EAAMqqO,cAAc8D,cAC7Bt3N,SAAU7W,EAAM3jB,QAAQqtP,SACxBoD,SAAUA,EACVC,aAAcA,OAIe,MAA7B/sO,EAAMqqO,cAAc7kK,QACtBxlE,EAAM2F,OAAO6/D,MAAQ1oF,OAAO0hD,OAAO,GAAIx+B,EAAM2F,OAAO6/D,MAAOinK,GAAY3vP,OAAO0hD,OAAO,GAAIovM,EAAc,CACrG9G,QAAS9mO,EAAMqqO,cAAc7kK,MAC7B3uD,SAAU,WACVi2N,UAAU,EACVC,aAAcA,OAIlB/sO,EAAMoS,WAAWszD,OAAS5oF,OAAO0hD,OAAO,GAAIx+B,EAAMoS,WAAWszD,OAAQ,CACnE,wBAAyB1lE,EAAMqlE,YAKpB,QACb7lF,KAAM,gBACNsrP,SAAS,EACTx8G,MAAO,cACP9wI,GAAIswP,GACJ9sP,KAAM,ICnKR,SAASotP,GAAY1I,GACnB,IAAI1lO,EAAQ0lO,EAAK1lO,MACjBljB,OAAOwB,KAAK0hB,EAAMsqO,UAAUzsP,SAAQ,SAAU2B,GAC5C,IAAIsQ,EAAQkQ,EAAM2F,OAAOnmB,IAAS,GAC9B4yB,EAAapS,EAAMoS,WAAW5yB,IAAS,GACvC6oF,EAAUroE,EAAMsqO,SAAS9qP,GAExBslP,EAAcz8J,IAAa49J,EAAY59J,KAO5CvrF,OAAO0hD,OAAO6pC,EAAQv4E,MAAOA,GAC7BhT,OAAOwB,KAAK8zB,GAAYv0B,SAAQ,SAAU2B,GACxC,IAAIrC,EAAQi1B,EAAW5yB,IAET,IAAVrC,EACFkrF,EAAQhoF,gBAAgBb,GAExB6oF,EAAQ9nF,aAAaf,GAAgB,IAAVrC,EAAiB,GAAKA,UAMzD,SAAS,GAAOuvP,GACd,IAAI1sO,EAAQ0sO,EAAM1sO,MACdquO,EAAgB,CAClB3oK,OAAQ,CACN7uD,SAAU7W,EAAM3jB,QAAQqtP,SACxBpsO,KAAM,IACNhT,IAAK,IACLw9B,OAAQ,KAEV09C,MAAO,CACL3uD,SAAU,YAEZ8tD,UAAW,IASb,OAPA7nF,OAAO0hD,OAAOx+B,EAAMsqO,SAAS5kK,OAAO51E,MAAOu+O,EAAc3oK,QACzD1lE,EAAM2F,OAAS0oO,EAEXruO,EAAMsqO,SAAS9kK,OACjB1oF,OAAO0hD,OAAOx+B,EAAMsqO,SAAS9kK,MAAM11E,MAAOu+O,EAAc7oK,OAGnD,WACL1oF,OAAOwB,KAAK0hB,EAAMsqO,UAAUzsP,SAAQ,SAAU2B,GAC5C,IAAI6oF,EAAUroE,EAAMsqO,SAAS9qP,GACzB4yB,EAAapS,EAAMoS,WAAW5yB,IAAS,GACvC8uP,EAAkBxxP,OAAOwB,KAAK0hB,EAAM2F,OAAOvT,eAAe5S,GAAQwgB,EAAM2F,OAAOnmB,GAAQ6uP,EAAc7uP,IAErGsQ,EAAQw+O,EAAgBl4I,QAAO,SAAUtmG,EAAO2gH,GAElD,OADA3gH,EAAM2gH,GAAY,GACX3gH,IACN,IAEEg1O,EAAcz8J,IAAa49J,EAAY59J,KAI5CvrF,OAAO0hD,OAAO6pC,EAAQv4E,MAAOA,GAC7BhT,OAAOwB,KAAK8zB,GAAYv0B,SAAQ,SAAUuC,GACxCioF,EAAQhoF,gBAAgBD,WAOjB,QACbZ,KAAM,cACNsrP,SAAS,EACTx8G,MAAO,QACP9wI,GAAI4wP,GACJ/C,OAAQ,GACRpC,SAAU,CAAC,kBC/EN,SAASsF,GAAwBlpK,EAAWrsD,EAAOnO,GACxD,IAAImhO,EAAgBJ,GAAiBvmK,GACjCmpK,EAAiB,CAAClxO,EAAM,GAAK3Y,QAAQqnP,IAAkB,GAAK,EAAI,EAEhEtG,EAAyB,oBAAX76N,EAAwBA,EAAO/tB,OAAO0hD,OAAO,GAAIxlB,EAAO,CACxEqsD,UAAWA,KACPx6D,EACF4jO,EAAW/I,EAAK,GAChB1nM,EAAW0nM,EAAK,GAIpB,OAFA+I,EAAWA,GAAY,EACvBzwM,GAAYA,GAAY,GAAKwwM,EACtB,CAAClxO,EAAMC,GAAO5Y,QAAQqnP,IAAkB,EAAI,CACjDtpO,EAAGs7B,EACH1f,EAAGmwN,GACD,CACF/rO,EAAG+rO,EACHnwN,EAAG0f,GAIP,SAAS,GAAO0uM,GACd,IAAI1sO,EAAQ0sO,EAAM1sO,MACd3jB,EAAUqwP,EAAMrwP,QAChBmD,EAAOktP,EAAMltP,KACbkvP,EAAkBryP,EAAQwuB,OAC1BA,OAA6B,IAApB6jO,EAA6B,CAAC,EAAG,GAAKA,EAC/C1tP,EAAO,EAAWo1G,QAAO,SAAUkyI,EAAKjjK,GAE1C,OADAijK,EAAIjjK,GAAakpK,GAAwBlpK,EAAWrlE,EAAMgZ,MAAOnO,GAC1Dy9N,IACN,IACCqG,EAAwB3tP,EAAKgf,EAAMqlE,WACnC3iE,EAAIisO,EAAsBjsO,EAC1B4b,EAAIqwN,EAAsBrwN,EAEW,MAArCte,EAAMqqO,cAAc8D,gBACtBnuO,EAAMqqO,cAAc8D,cAAczrO,GAAKA,EACvC1C,EAAMqqO,cAAc8D,cAAc7vN,GAAKA,GAGzCte,EAAMqqO,cAAc7qP,GAAQwB,EAIf,QACbxB,KAAM,SACNsrP,SAAS,EACTx8G,MAAO,OACP26G,SAAU,CAAC,iBACXzrP,GAAI,ICpDFoxP,GAAO,CACTtxO,KAAM,QACNC,MAAO,OACP2b,OAAQ,MACR5uB,IAAK,UAEQ,SAASukP,GAAqBxpK,GAC3C,OAAOA,EAAUtsE,QAAQ,0BAA0B,SAAU+1O,GAC3D,OAAOF,GAAKE,MCRhB,IAAI,GAAO,CACT/9O,MAAO,MACPC,IAAK,SAEQ,SAAS+9O,GAA8B1pK,GACpD,OAAOA,EAAUtsE,QAAQ,cAAc,SAAU+1O,GAC/C,OAAO,GAAKA,MCFD,SAASE,GAAgB3mK,EAASqhK,GAC/C,IAAI5D,EAAMnB,EAAUt8J,GAChBkJ,EAAO20J,EAAmB79J,GAC1Bs9J,EAAiBG,EAAIH,eACrBlvN,EAAQ86D,EAAKp6D,YACb1V,EAAS8vE,EAAK/4D,aACd9V,EAAI,EACJ4b,EAAI,EAER,GAAIqnN,EAAgB,CAClBlvN,EAAQkvN,EAAelvN,MACvBhV,EAASkkO,EAAelkO,OACxB,IAAIwtO,EAAiB3J,KAEjB2J,IAAmBA,GAA+B,UAAbvF,KACvChnO,EAAIijO,EAAe3lN,WACnB1B,EAAIqnN,EAAeluN,WAIvB,MAAO,CACLhB,MAAOA,EACPhV,OAAQA,EACRiB,EAAGA,EAAIyjO,EAAoB99J,GAC3B/pD,EAAGA,GCrBQ,SAAS4wN,GAAgB7mK,GACtC,IAAI++J,EAEA71J,EAAO20J,EAAmB79J,GAC1B8mK,EAAYtJ,EAAgBx9J,GAC5B73E,EAA0D,OAAlD42O,EAAwB/+J,EAAQpqE,oBAAyB,EAASmpO,EAAsB52O,KAChGimB,EAAQ,EAAI86D,EAAKnnD,YAAamnD,EAAKp6D,YAAa3mB,EAAOA,EAAK45B,YAAc,EAAG55B,EAAOA,EAAK2mB,YAAc,GACvG1V,EAAS,EAAI8vE,EAAKtnD,aAAcsnD,EAAK/4D,aAAchoB,EAAOA,EAAKy5B,aAAe,EAAGz5B,EAAOA,EAAKgoB,aAAe,GAC5G9V,GAAKysO,EAAU5yN,WAAa4pN,EAAoB99J,GAChD/pD,GAAK6wN,EAAUxyN,UAMnB,MAJiD,QAA7C9E,EAAiBrnB,GAAQ+gF,GAAMr5E,YACjCwK,GAAK,EAAI6uE,EAAKp6D,YAAa3mB,EAAOA,EAAK2mB,YAAc,GAAKV,GAGrD,CACLA,MAAOA,EACPhV,OAAQA,EACRiB,EAAGA,EACH4b,EAAGA,GCzBQ,SAASpuB,GAAST,EAAQU,GACvC,IAAIi/O,EAAWj/O,EAAMk/O,aAAel/O,EAAMk/O,cAE1C,GAAI5/O,EAAOS,SAASC,GAClB,OAAO,EAEJ,GAAIi/O,GAAYrK,EAAaqK,GAAW,CACzC,IAAI9rO,EAAOnT,EAEX,EAAG,CACD,GAAImT,GAAQ7T,EAAO6/O,WAAWhsO,GAC5B,OAAO,EAITA,EAAOA,EAAKtkB,YAAcskB,EAAKjT,WACxBiT,GAIb,OAAO,ECrBM,SAASisO,GAAiB52N,GACvC,OAAO77B,OAAO0hD,OAAO,GAAI7lB,EAAM,CAC7Brb,KAAMqb,EAAKjW,EACXpY,IAAKquB,EAAK2F,EACV/gB,MAAOob,EAAKjW,EAAIiW,EAAKlC,MACrByC,OAAQP,EAAK2F,EAAI3F,EAAKlX,SCU1B,SAAS+tO,GAA2BnnK,EAASqhK,GAC3C,IAAI/wN,EAAOvb,EAAsBirE,GAAS,EAAoB,UAAbqhK,GASjD,OARA/wN,EAAKruB,IAAMquB,EAAKruB,IAAM+9E,EAAQ0+J,UAC9BpuN,EAAKrb,KAAOqb,EAAKrb,KAAO+qE,EAAQtoD,WAChCpH,EAAKO,OAASP,EAAKruB,IAAM+9E,EAAQ7vD,aACjCG,EAAKpb,MAAQob,EAAKrb,KAAO+qE,EAAQlxD,YACjCwB,EAAKlC,MAAQ4xD,EAAQlxD,YACrBwB,EAAKlX,OAAS4mE,EAAQ7vD,aACtBG,EAAKjW,EAAIiW,EAAKrb,KACdqb,EAAK2F,EAAI3F,EAAKruB,IACPquB,EAGT,SAAS82N,GAA2BpnK,EAASqnK,EAAgBhG,GAC3D,OAAOgG,IAAmBtoN,EAAWmoN,GAAiBP,GAAgB3mK,EAASqhK,IAAahtG,EAAUgzG,GAAkBF,GAA2BE,EAAgBhG,GAAY6F,GAAiBL,GAAgBhJ,EAAmB79J,KAMrO,SAASsnK,GAAmBtnK,GAC1B,IAAIunK,EAAkBzI,EAAkB5xI,EAAcltB,IAClDwnK,EAAoB,CAAC,WAAY,SAASlrP,QAAQkzB,EAAiBwwD,GAASxxD,WAAa,EACzFi5N,EAAiBD,GAAqB/K,EAAcz8J,GAAW6/J,EAAgB7/J,GAAWA,EAE9F,OAAKq0D,EAAUozG,GAKRF,EAAgB7pP,QAAO,SAAU2pP,GACtC,OAAOhzG,EAAUgzG,IAAmBx/O,GAASw/O,EAAgBI,IAAmD,SAAhC7J,EAAYyJ,MALrF,GAWI,SAASK,GAAgB1nK,EAAS3wB,EAAUs4L,EAActG,GACvE,IAAIuG,EAAmC,oBAAbv4L,EAAiCi4L,GAAmBtnK,GAAW,GAAG3tE,OAAOg9C,GAC/Fk4L,EAAkB,GAAGl1O,OAAOu1O,EAAqB,CAACD,IAClDE,EAAsBN,EAAgB,GACtCO,EAAeP,EAAgBx5I,QAAO,SAAUg6I,EAASV,GAC3D,IAAI/2N,EAAO82N,GAA2BpnK,EAASqnK,EAAgBhG,GAK/D,OAJA0G,EAAQ9lP,IAAM,EAAIquB,EAAKruB,IAAK8lP,EAAQ9lP,KACpC8lP,EAAQ7yO,MAAQ,EAAIob,EAAKpb,MAAO6yO,EAAQ7yO,OACxC6yO,EAAQl3N,OAAS,EAAIP,EAAKO,OAAQk3N,EAAQl3N,QAC1Ck3N,EAAQ9yO,KAAO,EAAIqb,EAAKrb,KAAM8yO,EAAQ9yO,MAC/B8yO,IACNX,GAA2BpnK,EAAS6nK,EAAqBxG,IAK5D,OAJAyG,EAAa15N,MAAQ05N,EAAa5yO,MAAQ4yO,EAAa7yO,KACvD6yO,EAAa1uO,OAAS0uO,EAAaj3N,OAASi3N,EAAa7lP,IACzD6lP,EAAaztO,EAAIytO,EAAa7yO,KAC9B6yO,EAAa7xN,EAAI6xN,EAAa7lP,IACvB6lP,ECpEM,SAASE,KACtB,MAAO,CACL/lP,IAAK,EACLiT,MAAO,EACP2b,OAAQ,EACR5b,KAAM,GCJK,SAASgzO,GAAmBC,GACzC,OAAOzzP,OAAO0hD,OAAO,GAAI6xM,KAAsBE,GCFlC,SAASC,GAAgBrzP,EAAOmB,GAC7C,OAAOA,EAAK83G,QAAO,SAAUq6I,EAASr3G,GAEpC,OADAq3G,EAAQr3G,GAAOj8I,EACRszP,IACN,ICMU,SAASC,GAAe1wO,EAAO3jB,QAC5B,IAAZA,IACFA,EAAU,IAGZ,IAAI8uP,EAAW9uP,EACXs0P,EAAqBxF,EAAS9lK,UAC9BA,OAAmC,IAAvBsrK,EAAgC3wO,EAAMqlE,UAAYsrK,EAC9DC,EAAoBzF,EAASzB,SAC7BA,OAAiC,IAAtBkH,EAA+B5wO,EAAM0pO,SAAWkH,EAC3DC,EAAoB1F,EAASzzL,SAC7BA,OAAiC,IAAtBm5L,EAA+B,EAAkBA,EAC5DC,EAAwB3F,EAAS6E,aACjCA,OAAyC,IAA1Bc,EAAmC1pN,EAAW0pN,EAC7DC,EAAwB5F,EAAS6F,eACjCA,OAA2C,IAA1BD,EAAmC,EAASA,EAC7DE,EAAuB9F,EAAS+F,YAChCA,OAAuC,IAAzBD,GAA0CA,EACxDE,EAAmBhG,EAAS3nN,QAC5BA,OAA+B,IAArB2tN,EAA8B,EAAIA,EAC5CZ,EAAgBD,GAAsC,kBAAZ9sN,EAAuBA,EAAUgtN,GAAgBhtN,EAAS4kN,IACpGgJ,EAAaJ,IAAmB,EAAS,EAAY,EACrDpE,EAAa5sO,EAAMgZ,MAAM0sD,OACzB2C,EAAUroE,EAAMsqO,SAAS4G,EAAcE,EAAaJ,GACpDK,EAAqBtB,GAAgBrzG,EAAUr0D,GAAWA,EAAUA,EAAQwiK,gBAAkB3E,EAAmBlmO,EAAMsqO,SAAS5kK,QAAShuB,EAAUs4L,EAActG,GACjK4H,EAAsBl0O,EAAsB4C,EAAMsqO,SAAS3lK,WAC3DwpK,EAAgBpC,GAAe,CACjCpnK,UAAW2sK,EACXjpK,QAASukK,EACTlD,SAAU,WACVrkK,UAAWA,IAETksK,EAAmBhC,GAAiBzyP,OAAO0hD,OAAO,GAAIouM,EAAYuB,IAClEqD,EAAoBR,IAAmB,EAASO,EAAmBD,EAGnEG,EAAkB,CACpBnnP,IAAK+mP,EAAmB/mP,IAAMknP,EAAkBlnP,IAAMimP,EAAcjmP,IACpE4uB,OAAQs4N,EAAkBt4N,OAASm4N,EAAmBn4N,OAASq3N,EAAcr3N,OAC7E5b,KAAM+zO,EAAmB/zO,KAAOk0O,EAAkBl0O,KAAOizO,EAAcjzO,KACvEC,MAAOi0O,EAAkBj0O,MAAQ8zO,EAAmB9zO,MAAQgzO,EAAchzO,OAExEm0O,EAAa1xO,EAAMqqO,cAAcx/N,OAErC,GAAImmO,IAAmB,GAAUU,EAAY,CAC3C,IAAI7mO,EAAS6mO,EAAWrsK,GACxBvoF,OAAOwB,KAAKmzP,GAAiB5zP,SAAQ,SAAUu7I,GAC7C,IAAIu4G,EAAW,CAACp0O,EAAO2b,GAAQv0B,QAAQy0I,IAAQ,EAAI,GAAK,EACpDnsG,EAAO,CAAC,EAAK/T,GAAQv0B,QAAQy0I,IAAQ,EAAI,IAAM,IACnDq4G,EAAgBr4G,IAAQvuH,EAAOoiB,GAAQ0kN,KAI3C,OAAOF,EC3DM,SAASG,GAAqB5xO,EAAO3jB,QAClC,IAAZA,IACFA,EAAU,IAGZ,IAAI8uP,EAAW9uP,EACXgpF,EAAY8lK,EAAS9lK,UACrB3tB,EAAWyzL,EAASzzL,SACpBs4L,EAAe7E,EAAS6E,aACxBxsN,EAAU2nN,EAAS3nN,QACnBquN,EAAiB1G,EAAS0G,eAC1BC,EAAwB3G,EAAS4G,sBACjCA,OAAkD,IAA1BD,EAAmC,EAAgBA,EAC3E7F,EAAYJ,GAAaxmK,GACzB2sK,EAAa/F,EAAY4F,EAAiBxJ,EAAsBA,EAAoBtiP,QAAO,SAAUs/E,GACvG,OAAOwmK,GAAaxmK,KAAe4mK,KAChC7D,EACD6J,EAAoBD,EAAWjsP,QAAO,SAAUs/E,GAClD,OAAO0sK,EAAsBptP,QAAQ0gF,IAAc,KAGpB,IAA7B4sK,EAAkB1zP,SACpB0zP,EAAoBD,GAItB,IAAIE,EAAYD,EAAkB77I,QAAO,SAAUkyI,EAAKjjK,GAOtD,OANAijK,EAAIjjK,GAAaqrK,GAAe1wO,EAAO,CACrCqlE,UAAWA,EACX3tB,SAAUA,EACVs4L,aAAcA,EACdxsN,QAASA,IACRooN,GAAiBvmK,IACbijK,IACN,IACH,OAAOxrP,OAAOwB,KAAK4zP,GAAWr8M,MAAK,SAAU53C,EAAGC,GAC9C,OAAOg0P,EAAUj0P,GAAKi0P,EAAUh0P,MChCpC,SAASi0P,GAA8B9sK,GACrC,GAAIumK,GAAiBvmK,KAAe8iK,EAClC,MAAO,GAGT,IAAIiK,EAAoBvD,GAAqBxpK,GAC7C,MAAO,CAAC0pK,GAA8B1pK,GAAY+sK,EAAmBrD,GAA8BqD,IAGrG,SAASC,GAAK3M,GACZ,IAAI1lO,EAAQ0lO,EAAK1lO,MACb3jB,EAAUqpP,EAAKrpP,QACfmD,EAAOkmP,EAAKlmP,KAEhB,IAAIwgB,EAAMqqO,cAAc7qP,GAAM8yP,MAA9B,CAoCA,IAhCA,IAAIC,EAAoBl2P,EAAQ+vP,SAC5BoG,OAAsC,IAAtBD,GAAsCA,EACtDE,EAAmBp2P,EAAQq2P,QAC3BC,OAAoC,IAArBF,GAAqCA,EACpDG,EAA8Bv2P,EAAQw2P,mBACtCrvN,EAAUnnC,EAAQmnC,QAClBk0B,EAAWr7D,EAAQq7D,SACnBs4L,EAAe3zP,EAAQ2zP,aACvBkB,EAAc70P,EAAQ60P,YACtB4B,EAAwBz2P,EAAQw1P,eAChCA,OAA2C,IAA1BiB,GAA0CA,EAC3Df,EAAwB11P,EAAQ01P,sBAChCgB,EAAqB/yO,EAAM3jB,QAAQgpF,UACnC2mK,EAAgBJ,GAAiBmH,GACjCC,EAAkBhH,IAAkB+G,EACpCF,EAAqBD,IAAgCI,IAAoBnB,EAAiB,CAAChD,GAAqBkE,IAAuBZ,GAA8BY,IACrKf,EAAa,CAACe,GAAoBr4O,OAAOm4O,GAAoBz8I,QAAO,SAAUkyI,EAAKjjK,GACrF,OAAOijK,EAAI5tO,OAAOkxO,GAAiBvmK,KAAe8iK,EAAOyJ,GAAqB5xO,EAAO,CACnFqlE,UAAWA,EACX3tB,SAAUA,EACVs4L,aAAcA,EACdxsN,QAASA,EACTquN,eAAgBA,EAChBE,sBAAuBA,IACpB1sK,KACJ,IACC4tK,EAAgBjzO,EAAMgZ,MAAM2rD,UAC5BioK,EAAa5sO,EAAMgZ,MAAM0sD,OACzBwtK,EAAY,IAAIrsP,IAChBssP,GAAqB,EACrBC,EAAwBpB,EAAW,GAE9B3yP,EAAI,EAAGA,EAAI2yP,EAAWzzP,OAAQc,IAAK,CAC1C,IAAIgmF,EAAY2sK,EAAW3yP,GAEvBg0P,EAAiBzH,GAAiBvmK,GAElCiuK,EAAmBzH,GAAaxmK,KAAet0E,EAC/CwiP,EAAa,CAAC,EAAKr6N,GAAQv0B,QAAQ0uP,IAAmB,EACtDj7O,EAAMm7O,EAAa,QAAU,SAC7BvlH,EAAW0iH,GAAe1wO,EAAO,CACnCqlE,UAAWA,EACX3tB,SAAUA,EACVs4L,aAAcA,EACdkB,YAAaA,EACb1tN,QAASA,IAEPgwN,EAAoBD,EAAaD,EAAmB/1O,EAAQD,EAAOg2O,EAAmBp6N,EAAS,EAE/F+5N,EAAc76O,GAAOw0O,EAAWx0O,KAClCo7O,EAAoB3E,GAAqB2E,IAG3C,IAAIC,EAAmB5E,GAAqB2E,GACxC5hI,EAAS,GAUb,GARI4gI,GACF5gI,EAAOzvH,KAAK6rI,EAASqlH,IAAmB,GAGtCV,GACF/gI,EAAOzvH,KAAK6rI,EAASwlH,IAAsB,EAAGxlH,EAASylH,IAAqB,GAG1E7hI,EAAO8hI,OAAM,SAAUtzL,GACzB,OAAOA,KACL,CACFgzL,EAAwB/tK,EACxB8tK,GAAqB,EACrB,MAGFD,EAAU1/O,IAAI6xE,EAAWusC,GAG3B,GAAIuhI,EAqBF,IAnBA,IAAIQ,EAAiB9B,EAAiB,EAAI,EAEtC+B,EAAQ,SAAeC,GACzB,IAAIC,EAAmB9B,EAAWpmO,MAAK,SAAUy5D,GAC/C,IAAIusC,EAASshI,EAAUx1N,IAAI2nD,GAE3B,GAAIusC,EACF,OAAOA,EAAOlvH,MAAM,EAAGmxP,GAAIH,OAAM,SAAUtzL,GACzC,OAAOA,QAKb,GAAI0zL,EAEF,OADAV,EAAwBU,EACjB,SAIFD,EAAKF,EAAgBE,EAAK,EAAGA,IAAM,CAC1C,IAAIE,EAAOH,EAAMC,GAEjB,GAAa,UAATE,EAAkB,MAItB/zO,EAAMqlE,YAAc+tK,IACtBpzO,EAAMqqO,cAAc7qP,GAAM8yP,OAAQ,EAClCtyO,EAAMqlE,UAAY+tK,EAClBpzO,EAAMumB,OAAQ,IAKH,QACb/mC,KAAM,OACNsrP,SAAS,EACTx8G,MAAO,OACP9wI,GAAI60P,GACJnJ,iBAAkB,CAAC,UACnBloP,KAAM,CACJsxP,OAAO,IChJI,SAAS0B,GAAW/mN,GACjC,MAAgB,MAATA,EAAe,IAAM,ICAvB,SAASgnN,GAAOx/O,EAAKtX,EAAO8Z,GACjC,OAAO,EAAQxC,EAAK,EAAQtX,EAAO8Z,IAE9B,SAASi9O,GAAez/O,EAAKtX,EAAO8Z,GACzC,IAAI6mC,EAAIm2M,GAAOx/O,EAAKtX,EAAO8Z,GAC3B,OAAO6mC,EAAI7mC,EAAMA,EAAM6mC,ECMzB,SAASq2M,GAAgBzO,GACvB,IAAI1lO,EAAQ0lO,EAAK1lO,MACb3jB,EAAUqpP,EAAKrpP,QACfmD,EAAOkmP,EAAKlmP,KACZ+yP,EAAoBl2P,EAAQ+vP,SAC5BoG,OAAsC,IAAtBD,GAAsCA,EACtDE,EAAmBp2P,EAAQq2P,QAC3BC,OAAoC,IAArBF,GAAsCA,EACrD/6L,EAAWr7D,EAAQq7D,SACnBs4L,EAAe3zP,EAAQ2zP,aACvBkB,EAAc70P,EAAQ60P,YACtB1tN,EAAUnnC,EAAQmnC,QAClB4wN,EAAkB/3P,EAAQg4P,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7CE,EAAwBj4P,EAAQk4P,aAChCA,OAAyC,IAA1BD,EAAmC,EAAIA,EACtDtmH,EAAW0iH,GAAe1wO,EAAO,CACnC03C,SAAUA,EACVs4L,aAAcA,EACdxsN,QAASA,EACT0tN,YAAaA,IAEXlF,EAAgBJ,GAAiB5rO,EAAMqlE,WACvC4mK,EAAYJ,GAAa7rO,EAAMqlE,WAC/B2tK,GAAmB/G,EACnBG,EAAWN,GAAyBE,GACpC0G,EAAUsB,GAAW5H,GACrB+B,EAAgBnuO,EAAMqqO,cAAc8D,cACpC8E,EAAgBjzO,EAAMgZ,MAAM2rD,UAC5BioK,EAAa5sO,EAAMgZ,MAAM0sD,OACzB8uK,EAA4C,oBAAjBD,EAA8BA,EAAaz3P,OAAO0hD,OAAO,GAAIx+B,EAAMgZ,MAAO,CACvGqsD,UAAWrlE,EAAMqlE,aACbkvK,EACFE,EAA2D,kBAAtBD,EAAiC,CACxEpI,SAAUoI,EACV9B,QAAS8B,GACP13P,OAAO0hD,OAAO,CAChB4tM,SAAU,EACVsG,QAAS,GACR8B,GACCE,EAAsB10O,EAAMqqO,cAAcx/N,OAAS7K,EAAMqqO,cAAcx/N,OAAO7K,EAAMqlE,WAAa,KACjGrkF,EAAO,CACT0hB,EAAG,EACH4b,EAAG,GAGL,GAAK6vN,EAAL,CAIA,GAAIqE,EAAe,CACjB,IAAImC,EAEAC,EAAwB,MAAbxI,EAAmB,EAAM9uO,EACpCu3O,EAAuB,MAAbzI,EAAmBlzN,EAAS3b,EACtCnF,EAAmB,MAAbg0O,EAAmB,SAAW,QACpCvhO,EAASsjO,EAAc/B,GACvB33O,EAAMoW,EAASmjH,EAAS4mH,GACxB39O,EAAM4T,EAASmjH,EAAS6mH,GACxB1rH,EAAWkrH,GAAUzH,EAAWx0O,GAAO,EAAI,EAC3C08O,EAAS7I,IAAcl7O,EAAQkiP,EAAc76O,GAAOw0O,EAAWx0O,GAC/D28O,EAAS9I,IAAcl7O,GAAS67O,EAAWx0O,IAAQ66O,EAAc76O,GAGjE48O,EAAeh1O,EAAMsqO,SAAS9kK,MAC9ByvK,EAAYZ,GAAUW,EAAehO,EAAcgO,GAAgB,CACrEv+N,MAAO,EACPhV,OAAQ,GAENyzO,EAAqBl1O,EAAMqqO,cAAc,oBAAsBrqO,EAAMqqO,cAAc,oBAAoB7mN,QAAU6sN,KACjH8E,EAAkBD,EAAmBN,GACrCQ,EAAkBF,EAAmBL,GAMrCQ,EAAWpB,GAAO,EAAGhB,EAAc76O,GAAM68O,EAAU78O,IACnDk9O,GAAYtC,EAAkBC,EAAc76O,GAAO,EAAI+wH,EAAWksH,EAAWF,EAAkBV,EAA4BrI,SAAW0I,EAASO,EAAWF,EAAkBV,EAA4BrI,SACxMmJ,GAAYvC,GAAmBC,EAAc76O,GAAO,EAAI+wH,EAAWksH,EAAWD,EAAkBX,EAA4BrI,SAAW2I,EAASM,EAAWD,EAAkBX,EAA4BrI,SACzMoJ,GAAoBx1O,EAAMsqO,SAAS9kK,OAAS0iK,EAAgBloO,EAAMsqO,SAAS9kK,OAC3EiwK,GAAeD,GAAiC,MAAbpJ,EAAmBoJ,GAAkBzO,WAAa,EAAIyO,GAAkBz1N,YAAc,EAAI,EAC7H21N,GAAwH,OAAjGf,EAA+C,MAAvBD,OAA8B,EAASA,EAAoBtI,IAAqBuI,EAAwB,EACvJgB,GAAY9qO,EAASyqO,GAAYI,GAAsBD,GACvDG,GAAY/qO,EAAS0qO,GAAYG,GACjCG,GAAkB5B,GAAOI,EAAS,EAAQ5/O,EAAKkhP,IAAalhP,EAAKoW,EAAQwpO,EAAS,EAAQp9O,EAAK2+O,IAAa3+O,GAChHk3O,EAAc/B,GAAYyJ,GAC1B70P,EAAKorP,GAAYyJ,GAAkBhrO,EAGrC,GAAI8nO,EAAc,CAChB,IAAImD,GAEAC,GAAyB,MAAb3J,EAAmB,EAAM9uO,EAErC04O,GAAwB,MAAb5J,EAAmBlzN,EAAS3b,EAEvC04O,GAAU9H,EAAcuE,GAExB9I,GAAmB,MAAZ8I,EAAkB,SAAW,QAEpCwD,GAAOD,GAAUjoH,EAAS+nH,IAE1BI,GAAOF,GAAUjoH,EAASgoH,IAE1BI,IAAuD,IAAxC,CAAC,EAAK94O,GAAM3Y,QAAQqnP,GAEnCqK,GAAyH,OAAjGP,GAAgD,MAAvBpB,OAA8B,EAASA,EAAoBhC,IAAoBoD,GAAyB,EAEzJQ,GAAaF,GAAeF,GAAOD,GAAUhD,EAAcrJ,IAAQgD,EAAWhD,IAAQyM,GAAuB5B,EAA4B/B,QAEzI6D,GAAaH,GAAeH,GAAUhD,EAAcrJ,IAAQgD,EAAWhD,IAAQyM,GAAuB5B,EAA4B/B,QAAUyD,GAE5IK,GAAmBnC,GAAU+B,GAAelC,GAAeoC,GAAYL,GAASM,IAActC,GAAOI,EAASiC,GAAaJ,GAAMD,GAAS5B,EAASkC,GAAaJ,IAEpKhI,EAAcuE,GAAW8D,GACzBx1P,EAAK0xP,GAAW8D,GAAmBP,GAGrCj2O,EAAMqqO,cAAc7qP,GAAQwB,GAIf,QACbxB,KAAM,kBACNsrP,SAAS,EACTx8G,MAAO,OACP9wI,GAAI22P,GACJjL,iBAAkB,CAAC,WClIjB,GAAkB,SAAyB1lN,EAASxjB,GAItD,OAHAwjB,EAA6B,oBAAZA,EAAyBA,EAAQ1mC,OAAO0hD,OAAO,GAAIx+B,EAAMgZ,MAAO,CAC/EqsD,UAAWrlE,EAAMqlE,aACb7hD,EACC8sN,GAAsC,kBAAZ9sN,EAAuBA,EAAUgtN,GAAgBhtN,EAAS4kN,KAG7F,SAAS,GAAM1C,GACb,IAAI+Q,EAEAz2O,EAAQ0lO,EAAK1lO,MACbxgB,EAAOkmP,EAAKlmP,KACZnD,EAAUqpP,EAAKrpP,QACf24P,EAAeh1O,EAAMsqO,SAAS9kK,MAC9B2oK,EAAgBnuO,EAAMqqO,cAAc8D,cACpCnC,EAAgBJ,GAAiB5rO,EAAMqlE,WACvCp4C,EAAO6+M,GAAyBE,GAChCuH,EAAa,CAACj2O,EAAMC,GAAO5Y,QAAQqnP,IAAkB,EACrD5zO,EAAMm7O,EAAa,SAAW,QAElC,GAAKyB,GAAiB7G,EAAtB,CAIA,IAAIoC,EAAgB,GAAgBl0P,EAAQmnC,QAASxjB,GACjDi1O,EAAYjO,EAAcgO,GAC1B0B,EAAmB,MAATzpN,EAAe,EAAM3vB,EAC/Bq5O,EAAmB,MAAT1pN,EAAe/T,EAAS3b,EAClCq5O,EAAU52O,EAAMgZ,MAAM2rD,UAAUvsE,GAAO4H,EAAMgZ,MAAM2rD,UAAU13C,GAAQkhN,EAAclhN,GAAQjtB,EAAMgZ,MAAM0sD,OAAOttE,GAC9Gy+O,EAAY1I,EAAclhN,GAAQjtB,EAAMgZ,MAAM2rD,UAAU13C,GACxDuoN,EAAoBtN,EAAgB8M,GACpC8B,EAAatB,EAA6B,MAATvoN,EAAeuoN,EAAkBh9N,cAAgB,EAAIg9N,EAAkBr+N,aAAe,EAAI,EAC3H4/N,EAAoBH,EAAU,EAAIC,EAAY,EAG9CpiP,EAAM87O,EAAcmG,GACpBz/O,EAAM6/O,EAAa7B,EAAU78O,GAAOm4O,EAAcoG,GAClDK,EAASF,EAAa,EAAI7B,EAAU78O,GAAO,EAAI2+O,EAC/ClsO,EAASopO,GAAOx/O,EAAKuiP,EAAQ//O,GAE7BggP,EAAWhqN,EACfjtB,EAAMqqO,cAAc7qP,IAASi3P,EAAwB,GAAIA,EAAsBQ,GAAYpsO,EAAQ4rO,EAAsBS,aAAersO,EAASmsO,EAAQP,IAG3J,SAAS,GAAO/J,GACd,IAAI1sO,EAAQ0sO,EAAM1sO,MACd3jB,EAAUqwP,EAAMrwP,QAChB86P,EAAmB96P,EAAQgsF,QAC3B2sK,OAAoC,IAArBmC,EAA8B,sBAAwBA,EAErD,MAAhBnC,IAKwB,kBAAjBA,IACTA,EAAeh1O,EAAMsqO,SAAS5kK,OAAOv1D,cAAc6kO,GAE9CA,KAKF9kP,GAAS8P,EAAMsqO,SAAS5kK,OAAQsvK,KAIrCh1O,EAAMsqO,SAAS9kK,MAAQwvK,GAIV,QACbx1P,KAAM,QACNsrP,SAAS,EACTx8G,MAAO,OACP9wI,GAAI,GACJ6tP,OAAQ,GACRpC,SAAU,CAAC,iBACXC,iBAAkB,CAAC,oBCrFrB,SAASkO,GAAeppH,EAAUr1G,EAAM0+N,GAQtC,YAPyB,IAArBA,IACFA,EAAmB,CACjB30O,EAAG,EACH4b,EAAG,IAIA,CACLh0B,IAAK0jI,EAAS1jI,IAAMquB,EAAKlX,OAAS41O,EAAiB/4N,EACnD/gB,MAAOywH,EAASzwH,MAAQob,EAAKlC,MAAQ4gO,EAAiB30O,EACtDwW,OAAQ80G,EAAS90G,OAASP,EAAKlX,OAAS41O,EAAiB/4N,EACzDhhB,KAAM0wH,EAAS1wH,KAAOqb,EAAKlC,MAAQ4gO,EAAiB30O,GAIxD,SAAS40O,GAAsBtpH,GAC7B,MAAO,CAAC,EAAKzwH,EAAO2b,EAAQ5b,GAAMwsE,MAAK,SAAU5lD,GAC/C,OAAO8pG,EAAS9pG,IAAS,KAI7B,SAAS,GAAKwhN,GACZ,IAAI1lO,EAAQ0lO,EAAK1lO,MACbxgB,EAAOkmP,EAAKlmP,KACZyzP,EAAgBjzO,EAAMgZ,MAAM2rD,UAC5BioK,EAAa5sO,EAAMgZ,MAAM0sD,OACzB2xK,EAAmBr3O,EAAMqqO,cAAc8J,gBACvCoD,EAAoB7G,GAAe1wO,EAAO,CAC5CgxO,eAAgB,cAEdwG,EAAoB9G,GAAe1wO,EAAO,CAC5CkxO,aAAa,IAEXuG,EAA2BL,GAAeG,EAAmBtE,GAC7DyE,EAAsBN,GAAeI,EAAmB5K,EAAYyK,GACpEM,EAAoBL,GAAsBG,GAC1CG,EAAmBN,GAAsBI,GAC7C13O,EAAMqqO,cAAc7qP,GAAQ,CAC1Bi4P,yBAA0BA,EAC1BC,oBAAqBA,EACrBC,kBAAmBA,EACnBC,iBAAkBA,GAEpB53O,EAAMoS,WAAWszD,OAAS5oF,OAAO0hD,OAAO,GAAIx+B,EAAMoS,WAAWszD,OAAQ,CACnE,+BAAgCiyK,EAChC,sBAAuBC,IAKZ,QACbp4P,KAAM,OACNsrP,SAAS,EACTx8G,MAAO,OACP46G,iBAAkB,CAAC,mBACnB1rP,GAAI,ICjDF,GAAmB,CAACq6P,GAAgB,GAAe,GAAe,GAAa,GAAQ,GAAM,GAAiB,GAAO,IACrH,GAA4B/N,GAAgB,CAC9CI,iBAAkB,KCLhB4N,GAAc,2LACdC,GAAY,YACZC,GAAgB,gBAChBC,GAAiB,iBACjBC,GAAc,cACdC,GAAkB,kBAClBC,GAAgB,CAClB/Y,SAAS,EACTvjP,SAAS,GAEPu8P,GAA0B,WAC5B,OAAOp8P,SAASuU,MAMlB,SAAS8nP,GAAwBn7P,EAAOiS,EAAOmpP,GAC7C,GAAI73P,MAAMk/E,QAAQziF,GAAQ,CACxB,IAAI2gD,EAAI3gD,EAAMiS,GACd,OAAY,MAAL0uC,EAAYp9C,MAAMk/E,QAAQ24K,GAAgBA,EAAanpP,GAASmpP,EAAez6M,EAGxF,OAAO3gD,EAET,SAASq7P,GAAOr7P,EAAOhB,GACrB,IAAIga,EAAM,GAAGtC,SAAS3T,KAAK/C,GAC3B,OAAkC,IAA3BgZ,EAAIxR,QAAQ,YAAoBwR,EAAIxR,QAAQxI,EAAO,MAAQ,EAEpE,SAASs8P,GAAuBt7P,EAAO0U,GACrC,MAAwB,oBAAV1U,EAAuBA,EAAM6U,WAAM,EAAQH,GAAQ1U,EAEnE,SAAS,GAASK,EAAIiW,GAEpB,OAAW,IAAPA,EACKjW,EAIF,SAAUk7P,GACfhlP,aAAailP,GACbA,EAAUj8P,YAAW,WACnBc,EAAGk7P,KACFjlP,IALL,IAAIklP,EAQN,SAASC,GAAiBv6P,EAAKC,GAC7B,IAAIi+I,EAAQz/I,OAAO0hD,OAAO,GAAIngD,GAI9B,OAHAC,EAAKT,SAAQ,SAAUu7I,UACdmD,EAAMnD,MAERmD,EAET,SAASs8G,GAAc17P,GACrB,OAAOA,EAAM0T,MAAM,OAAO9K,OAAOw6E,SAEnC,SAASu4K,GAAiB37P,GACxB,MAAO,GAAGud,OAAOvd,GAEnB,SAAS47P,GAAalkP,EAAK1X,IACG,IAAxB0X,EAAIlQ,QAAQxH,IACd0X,EAAI1S,KAAKhF,GAGb,SAAS67P,GAAOnkP,GACd,OAAOA,EAAI9O,QAAO,SAAUu+E,EAAMl1E,GAChC,OAAOyF,EAAIlQ,QAAQ2/E,KAAUl1E,KAGjC,SAAS,GAAiBi2E,GACxB,OAAOA,EAAUx0E,MAAM,KAAK,GAE9B,SAASooP,GAAU97P,GACjB,MAAO,GAAGuF,MAAMxC,KAAK/C,GAEvB,SAAS+7P,GAAqB76P,GAC5B,OAAOvB,OAAOwB,KAAKD,GAAK+3G,QAAO,SAAUkyI,EAAKlvG,GAK5C,YAJiBowG,IAAbnrP,EAAI+6I,KACNkvG,EAAIlvG,GAAO/6I,EAAI+6I,IAGVkvG,IACN,IAGL,SAAS1rO,KACP,OAAO3gB,SAASC,cAAc,OAEhC,SAAS,GAAUiB,GACjB,MAAO,CAAC,UAAW,YAAY2sF,MAAK,SAAU3tF,GAC5C,OAAOq8P,GAAOr7P,EAAOhB,MAGzB,SAASg9P,GAAWh8P,GAClB,OAAOq7P,GAAOr7P,EAAO,YAEvB,SAASi8P,GAAaj8P,GACpB,OAAOq7P,GAAOr7P,EAAO,cAEvB,SAASk8P,GAAmBl8P,GAC1B,SAAUA,IAASA,EAAMm8P,QAAUn8P,EAAMm8P,OAAO30K,YAAcxnF,GAEhE,SAASo8P,GAAmBp8P,GAC1B,OAAI,GAAUA,GACL,CAACA,GAGNg8P,GAAWh8P,GACN87P,GAAU97P,GAGfuD,MAAMk/E,QAAQziF,GACTA,EAGF87P,GAAUh9P,SAAS0pF,iBAAiBxoF,IAE7C,SAASq8P,GAAsB/nE,EAAKt0L,GAClCs0L,EAAI5zL,SAAQ,SAAU+nF,GAChBA,IACFA,EAAG91E,MAAM2pP,mBAAqBt8P,EAAQ,SAI5C,SAASu8P,GAAmBjoE,EAAKzxK,GAC/ByxK,EAAI5zL,SAAQ,SAAU+nF,GAChBA,GACFA,EAAGrlF,aAAa,aAAcyf,MAIpC,SAAS25O,GAAiBC,GACxB,IAAIxS,EAEAyS,EAAoBf,GAAiBc,GACrCvxK,EAAUwxK,EAAkB,GAGhC,OAAkB,MAAXxxK,GAAsE,OAAlD++J,EAAwB/+J,EAAQpqE,gBAA0BmpO,EAAsB52O,KAAO63E,EAAQpqE,cAAgBhiB,SAE5I,SAAS69P,GAAiCC,EAAgBp9P,GACxD,IAAIikC,EAAUjkC,EAAMikC,QAChBC,EAAUlkC,EAAMkkC,QACpB,OAAOk5N,EAAerG,OAAM,SAAUhO,GACpC,IAAIkH,EAAalH,EAAKkH,WAClBoN,EAActU,EAAKsU,YACnBzzP,EAAQm/O,EAAKn/O,MACb0zP,EAAoB1zP,EAAM0zP,kBAC1BjO,EAAgB,GAAiBgO,EAAY30K,WAC7CqsK,EAAasI,EAAY3P,cAAcx/N,OAE3C,IAAK6mO,EACH,OAAO,EAGT,IAAIwI,EAAgC,WAAlBlO,EAA6B0F,EAAWpnP,IAAIg0B,EAAI,EAC9D67N,EAAmC,QAAlBnO,EAA0B0F,EAAWx4N,OAAOoF,EAAI,EACjE87N,EAAiC,UAAlBpO,EAA4B0F,EAAWp0O,KAAKoF,EAAI,EAC/D23O,EAAkC,SAAlBrO,EAA2B0F,EAAWn0O,MAAMmF,EAAI,EAChE43O,EAAa1N,EAAWtiP,IAAMu2B,EAAUq5N,EAAcD,EACtDM,EAAgB15N,EAAU+rN,EAAW1zN,OAASihO,EAAiBF,EAC/DO,EAAc5N,EAAWtvO,KAAOsjB,EAAUw5N,EAAeH,EACzDQ,EAAe75N,EAAUgsN,EAAWrvO,MAAQ88O,EAAgBJ,EAChE,OAAOK,GAAcC,GAAiBC,GAAeC,KAGzD,SAASC,GAA4B57N,EAAKi8C,EAAQ4/K,GAChD,IAAInxL,EAASuR,EAAS,gBAGtB,CAAC,gBAAiB,uBAAuBl9E,SAAQ,SAAUlB,GACzDmiC,EAAI0qC,GAAQ7sE,EAAOg+P,MAQvB,SAASC,GAAenrP,EAAQU,GAC9B,IAAI1R,EAAS0R,EAEb,MAAO1R,EAAQ,CACb,IAAIo8P,EAEJ,GAAIprP,EAAOS,SAASzR,GAClB,OAAO,EAGTA,EAA+B,MAAtBA,EAAO4wP,aAA+E,OAA/CwL,EAAsBp8P,EAAO4wP,oBAAvC,EAAyEwL,EAAoBxqP,KAGrI,OAAO,EAGT,IAAIyqP,GAAe,CACjBC,SAAS,GAEPC,GAAoB,EAQxB,SAASC,KACHH,GAAaC,UAIjBD,GAAaC,SAAU,EAEnBl9O,OAAOq9O,aACTj/P,SAASO,iBAAiB,YAAa2+P,KAS3C,SAASA,KACP,IAAI1kG,EAAMykG,YAAYzkG,MAElBA,EAAMukG,GAAoB,KAC5BF,GAAaC,SAAU,EACvB9+P,SAAS8D,oBAAoB,YAAao7P,KAG5CH,GAAoBvkG,EAStB,SAAS2kG,KACP,IAAI7qP,EAAgBtU,SAASsU,cAE7B,GAAI8oP,GAAmB9oP,GAAgB,CACrC,IAAIitO,EAAWjtO,EAAc+oP,OAEzB/oP,EAAckpD,OAAS+jL,EAASx9N,MAAMq7O,WACxC9qP,EAAckpD,QAIpB,SAAS6hM,KACPr/P,SAASO,iBAAiB,aAAcy+P,GAAsB7C,IAC9Dv6O,OAAOrhB,iBAAiB,OAAQ4+P,IAGlC,IAAIG,GAA8B,qBAAX19O,QAA8C,qBAAb5hB,SACpDu/P,KAASD,MACX19O,OAAO49O,SAyDT,IAAIC,GAAc,CAChBC,aAAa,EACbC,cAAc,EACdC,mBAAmB,EACnBxkP,QAAQ,GAENykP,GAAc,CAChB32K,WAAW,EACX42K,UAAW,OACXv2K,OAAO,EACPl2D,QAAS,GACT0sO,SAAS,EACTC,SAAU,IACV/lI,KAAM,UACN59D,MAAO,GACPlkC,OAAQ,MAEN8nO,GAAep/P,OAAO0hD,OAAO,CAC/B29M,SAAU9D,GACVplI,KAAM,CACJ3jG,QAAS,OACT8sO,SAAU,QAEZrwN,MAAO,EACPswN,SAAU,CAAC,IAAK,KAChBC,uBAAwB,KACxBC,aAAa,EACbC,kBAAkB,EAClBl3K,aAAa,EACb20K,kBAAmB,EACnB10K,oBAAqB,EACrBk3K,eAAgB,GAChB5xO,OAAQ,CAAC,EAAG,IACZ6xO,cAAe,aACfC,eAAgB,aAChBC,SAAU,aACVt6P,UAAW,aACXu6P,SAAU,aACVC,OAAQ,aACR96P,QAAS,aACTykI,OAAQ,aACRs2H,QAAS,aACTC,UAAW,aACXC,YAAa,aACbC,eAAgB,aAChB73K,UAAW,MACX/K,QAAS,GACT6iL,cAAe,GACf1c,OAAQ,KACRr7J,cAAc,EACdjqB,OAAO,EACPiiM,QAAS,mBACTC,cAAe,MACd3B,GAAaI,IACZwB,GAAcxgQ,OAAOwB,KAAK49P,IAC1BqB,GAAkB,SAAyBC,GAM7C,IAAIl/P,EAAOxB,OAAOwB,KAAKk/P,GACvBl/P,EAAKT,SAAQ,SAAUu7I,GACrB8iH,GAAa9iH,GAAOokH,EAAapkH,OAGrC,SAASqkH,GAAuBC,GAC9B,IAAIpjL,EAAUojL,EAAYpjL,SAAW,GACjCohL,EAAcphL,EAAQ87B,QAAO,SAAUkyI,EAAKtS,GAC9C,IAIM2nB,EAJFn+P,EAAOw2O,EAAOx2O,KACd+4P,EAAeviB,EAAOuiB,aAEtB/4P,IAGF8oP,EAAI9oP,QAA8BgqP,IAAtBkU,EAAYl+P,GAAsBk+P,EAAYl+P,GAAwC,OAA/Bm+P,EAAQzB,GAAa18P,IAAiBm+P,EAAQpF,GAGnH,OAAOjQ,IACN,IACH,OAAOxrP,OAAO0hD,OAAO,GAAIk/M,EAAahC,GAExC,SAASkC,GAAsBj5K,EAAWrK,GACxC,IAAIujL,EAAWvjL,EAAUx9E,OAAOwB,KAAKm/P,GAAuB3gQ,OAAO0hD,OAAO,GAAI09M,GAAc,CAC1F5hL,QAASA,MACJgjL,GACH/2P,EAAQs3P,EAASznJ,QAAO,SAAUkyI,EAAKlvG,GACzC,IAAI0kH,GAAiBn5K,EAAUrkF,aAAa,cAAgB84I,IAAQ,IAAI7/D,OAExE,IAAKukL,EACH,OAAOxV,EAGT,GAAY,YAARlvG,EACFkvG,EAAIlvG,GAAO0kH,OAEX,IACExV,EAAIlvG,GAAOo6F,KAAK7Q,MAAMm7B,GACtB,MAAOt8P,GACP8mP,EAAIlvG,GAAO0kH,EAIf,OAAOxV,IACN,IACH,OAAO/hP,EAET,SAASw3P,GAAcp5K,EAAWp+E,GAChC,IAAIwO,EAAMjY,OAAO0hD,OAAO,GAAIj4C,EAAO,CACjC+oB,QAASmpO,GAAuBlyP,EAAM+oB,QAAS,CAACq1D,KAC/Cp+E,EAAMi2P,iBAAmB,GAAKoB,GAAsBj5K,EAAWp+E,EAAM+zE,UAMxE,OALAvlE,EAAIk+G,KAAOn2H,OAAO0hD,OAAO,GAAI09M,GAAajpI,KAAMl+G,EAAIk+G,MACpDl+G,EAAIk+G,KAAO,CACTmpI,SAAgC,SAAtBrnP,EAAIk+G,KAAKmpI,SAAsB71P,EAAM++E,YAAcvwE,EAAIk+G,KAAKmpI,SACtE9sO,QAA8B,SAArBva,EAAIk+G,KAAK3jG,QAAqB/oB,EAAM++E,YAAc,KAAO,cAAgBvwE,EAAIk+G,KAAK3jG,SAEtFva,EA0BT,IAAI8mE,GAAY,WACd,MAAO,aAGT,SAASmiL,GAAwB31K,EAASkJ,GACxClJ,EAAQxM,MAAe0V,EAGzB,SAAS0sK,GAAmB9gQ,GAC1B,IAAIqoF,EAAQ5oE,KAcZ,OAZc,IAAVzf,EACFqoF,EAAMt2E,UAAYgpP,IAElB1yK,EAAMt2E,UAAYipP,GAEd,GAAUh7P,GACZqoF,EAAM7mF,YAAYxB,GAElB6gQ,GAAwBx4K,EAAOroF,IAI5BqoF,EAGT,SAAS,GAAWl2D,EAAS/oB,GACvB,GAAUA,EAAM+oB,UAClB0uO,GAAwB1uO,EAAS,IACjCA,EAAQ3wB,YAAY4H,EAAM+oB,UACQ,oBAAlB/oB,EAAM+oB,UAClB/oB,EAAM4+E,UACR64K,GAAwB1uO,EAAS/oB,EAAM+oB,SAEvCA,EAAQ4zC,YAAc38D,EAAM+oB,SAIlC,SAAS4uO,GAAYx4K,GACnB,IAAI5mD,EAAM4mD,EAAOy4K,kBACbC,EAAcnF,GAAUn6N,EAAIt+B,UAChC,MAAO,CACLs+B,IAAKA,EACLxP,QAAS8uO,EAAYxyO,MAAK,SAAUltB,GAClC,OAAOA,EAAKyC,UAAU+O,SAAS8nP,OAEjCxyK,MAAO44K,EAAYxyO,MAAK,SAAUltB,GAChC,OAAOA,EAAKyC,UAAU+O,SAASgoP,KAAgBx5P,EAAKyC,UAAU+O,SAASioP,OAEzEkG,SAAUD,EAAYxyO,MAAK,SAAUltB,GACnC,OAAOA,EAAKyC,UAAU+O,SAAS+nP,QAIrC,SAASxX,GAAOjD,GACd,IAAI93J,EAAS9oE,KACTkiB,EAAMliB,KACVkiB,EAAI5vB,UAAY6oP,GAChBj5N,EAAIv+B,aAAa,aAAc,UAC/Bu+B,EAAIv+B,aAAa,WAAY,MAC7B,IAAI+uB,EAAU1S,KAQd,SAAS0hP,EAASC,EAAWC,GAC3B,IAAIC,EAAeP,GAAYx4K,GAC3B5mD,EAAM2/N,EAAa3/N,IACnBxP,EAAUmvO,EAAanvO,QACvBk2D,EAAQi5K,EAAaj5K,MAErBg5K,EAAUlmM,MACZx5B,EAAIv+B,aAAa,aAAci+P,EAAUlmM,OAEzCx5B,EAAIz+B,gBAAgB,cAGa,kBAAxBm+P,EAAUzC,UACnBj9N,EAAIv+B,aAAa,iBAAkBi+P,EAAUzC,WAE7Cj9N,EAAIz+B,gBAAgB,kBAGlBm+P,EAAUxC,QACZl9N,EAAIv+B,aAAa,eAAgB,IAEjCu+B,EAAIz+B,gBAAgB,gBAGtBy+B,EAAIhvB,MAAMmsP,SAAyC,kBAAvBuC,EAAUvC,SAAwBuC,EAAUvC,SAAW,KAAOuC,EAAUvC,SAEhGuC,EAAUtoI,KACZp3F,EAAIv+B,aAAa,OAAQi+P,EAAUtoI,MAEnCp3F,EAAIz+B,gBAAgB,QAGlBk+P,EAAUjvO,UAAYkvO,EAAUlvO,SAAWivO,EAAUp5K,YAAcq5K,EAAUr5K,WAC/E,GAAW71D,EAASkuN,EAASj3O,OAG3Bi4P,EAAUh5K,MACPA,EAEM+4K,EAAU/4K,QAAUg5K,EAAUh5K,QACvC1mD,EAAI7/B,YAAYumF,GAChB1mD,EAAIngC,YAAYs/P,GAAmBO,EAAUh5K,SAH7C1mD,EAAIngC,YAAYs/P,GAAmBO,EAAUh5K,QAKtCA,GACT1mD,EAAI7/B,YAAYumF,GAIpB,OAvDAl2D,EAAQpgB,UAAY8oP,GACpB1oO,EAAQ/uB,aAAa,aAAc,UACnC,GAAW+uB,EAASkuN,EAASj3O,OAC7Bm/E,EAAO/mF,YAAYmgC,GACnBA,EAAIngC,YAAY2wB,GAChBgvO,EAAS9gB,EAASj3O,MAAOi3O,EAASj3O,OAkD3B,CACLm/E,OAAQA,EACR44K,SAAUA,GAKd7d,GAAOie,SAAU,EAEjB,IAAIC,GAAY,EACZC,GAAqB,GAErBC,GAAmB,GACvB,SAASC,GAAYn6K,EAAW+4K,GAC9B,IAIIqB,EACAC,EACAC,EAKAC,EACAC,EACA3T,EAGA4T,EAhBA74P,EAAQw3P,GAAcp5K,EAAW7nF,OAAO0hD,OAAO,GAAI09M,GAAcuB,GAAuBvE,GAAqBwE,MAO7G2B,GAAqB,EACrBC,GAAgC,EAChCC,GAAe,EACfC,GAAsB,EAItBC,EAAY,GACZC,EAAuB,GAASljI,EAAaj2H,EAAMg/E,qBAKnDtyE,EAAK0rP,KACLgB,EAAiB,KACjBrlL,EAAU0+K,GAAOzyP,EAAM+zE,SACvBt6D,EAAQ,CAEV4/O,WAAW,EAEXvE,WAAW,EAEX7Q,aAAa,EAEbqV,WAAW,EAEXC,SAAS,GAEPtiB,EAAW,CAEbvqO,GAAIA,EACJ0xE,UAAWA,EACXe,OAAQ9oE,KACR+iP,eAAgBA,EAChBp5P,MAAOA,EACPyZ,MAAOA,EACPs6D,QAASA,EAETylL,mBAAoBA,GACpBr7K,SAAUA,GACVs7K,WAAYA,GACZC,KAAMA,GACNC,KAAMA,GACNC,sBAAuBA,GACvBC,OAAQA,GACRjpG,QAASA,GACTkpG,QAASA,GACTv7K,QAASA,IAMX,IAAKv+E,EAAMk6O,OAKT,OAAOjD,EAMT,IAAI8iB,EAAgB/5P,EAAMk6O,OAAOjD,GAC7B93J,EAAS46K,EAAc56K,OACvB44K,EAAWgC,EAAchC,SAE7B54K,EAAOnlF,aAAa,kBAAmB,IACvCmlF,EAAOzyE,GAAK,SAAWuqO,EAASvqO,GAChCuqO,EAAS93J,OAASA,EAClBf,EAAU20K,OAAS9b,EACnB93J,EAAO4zK,OAAS9b,EAChB,IAAI+iB,EAAejmL,EAAQx0E,KAAI,SAAUkwO,GACvC,OAAOA,EAAOx4O,GAAGggP,MAEfgjB,EAAkB77K,EAAU87K,aAAa,iBAsB7C,OArBAC,IACAC,IACAC,IACAC,EAAW,WAAY,CAACrjB,IAEpBj3O,EAAM6+E,cACR07K,KAKFp7K,EAAOlpF,iBAAiB,cAAc,WAChCghP,EAASj3O,MAAM++E,aAAek4J,EAASx9N,MAAMq7O,WAC/C7d,EAASuiB,wBAGbr6K,EAAOlpF,iBAAiB,cAAc,WAChCghP,EAASj3O,MAAM++E,aAAek4J,EAASj3O,MAAM62P,QAAQz4P,QAAQ,eAAiB,GAChFo8P,IAAcvkQ,iBAAiB,YAAakjQ,MAGzCliB,EAIP,SAASwjB,IACP,IAAI7lM,EAAQqiL,EAASj3O,MAAM40D,MAC3B,OAAOz6D,MAAMk/E,QAAQzkB,GAASA,EAAQ,CAACA,EAAO,GAGhD,SAAS8lM,IACP,MAA2C,SAApCD,IAA6B,GAGtC,SAASE,IACP,IAAIC,EAGJ,QAA6D,OAAlDA,EAAwB3jB,EAASj3O,MAAMk6O,UAAmB0gB,EAAsBzC,SAG7F,SAAS0C,IACP,OAAOhC,GAAiBz6K,EAG1B,SAASo8K,IACP,IAAItxP,EAAS2xP,IAAmBpiQ,WAChC,OAAOyQ,EAASkqP,GAAiBlqP,GAAUxT,SAG7C,SAASolQ,IACP,OAAOnD,GAAYx4K,GAGrB,SAAS47K,EAASC,GAIhB,OAAI/jB,EAASx9N,MAAM6/O,YAAcriB,EAASx9N,MAAMq7O,WAAaP,GAAaC,SAAWmE,GAA8C,UAA1BA,EAAiB/iQ,KACjH,EAGFm8P,GAAwB9a,EAASj3O,MAAMwlC,MAAOw1N,EAAS,EAAI,EAAGrF,GAAanwN,OAGpF,SAAS60N,EAAaY,QACH,IAAbA,IACFA,GAAW,GAGb97K,EAAO51E,MAAM+7B,cAAgB2xM,EAASj3O,MAAM++E,cAAgBk8K,EAAW,GAAK,OAC5E97K,EAAO51E,MAAMskB,OAAS,GAAKopN,EAASj3O,MAAM6tB,OAG5C,SAASysO,EAAW3tG,EAAMrhJ,EAAM4vP,GAY5B,IAAIC,QAXwB,IAA1BD,IACFA,GAAwB,GAG1BlB,EAAa1iQ,SAAQ,SAAU8jQ,GACzBA,EAAYzuG,IACdyuG,EAAYzuG,GAAMlhJ,MAAM2vP,EAAa9vP,MAIrC4vP,KAGDC,EAAkBlkB,EAASj3O,OAAO2sJ,GAAMlhJ,MAAM0vP,EAAiB7vP,GAIpE,SAAS+vP,IACP,IAAI3uI,EAAOuqH,EAASj3O,MAAM0sH,KAE1B,GAAKA,EAAK3jG,QAAV,CAIA,IAAInvB,EAAO,QAAU8yH,EAAK3jG,QACtBrc,EAAKyyE,EAAOzyE,GACZuiI,EAAQsjH,GAAiBtb,EAASj3O,MAAM82P,eAAiB14K,GAC7D6wD,EAAM33I,SAAQ,SAAUa,GACtB,IAAImjQ,EAAenjQ,EAAK4B,aAAaH,GAErC,GAAIq9O,EAASx9N,MAAMq7O,UACjB38P,EAAK6B,aAAaJ,EAAM0hQ,EAAeA,EAAe,IAAM5uP,EAAKA,OAC5D,CACL,IAAI6uP,EAAYD,GAAgBA,EAAa9oP,QAAQ9F,EAAI,IAAIsmE,OAEzDuoL,EACFpjQ,EAAK6B,aAAaJ,EAAM2hQ,GAExBpjQ,EAAK2B,gBAAgBF,QAM7B,SAASwgQ,IACP,IAAIH,GAAoBhjB,EAASj3O,MAAM0sH,KAAKmpI,SAA5C,CAIA,IAAI5mH,EAAQsjH,GAAiBtb,EAASj3O,MAAM82P,eAAiB14K,GAC7D6wD,EAAM33I,SAAQ,SAAUa,GAClB8+O,EAASj3O,MAAM++E,YACjB5mF,EAAK6B,aAAa,gBAAiBi9O,EAASx9N,MAAMq7O,WAAa38P,IAAS0iQ,IAAqB,OAAS,SAEtG1iQ,EAAK2B,gBAAgB,qBAK3B,SAAS0hQ,IACPhB,IAAchhQ,oBAAoB,YAAa2/P,GAC/Cd,GAAqBA,GAAmB74P,QAAO,SAAU40P,GACvD,OAAOA,IAAa+E,KAIxB,SAASsC,EAAgBrlQ,GAEvB,IAAIm+P,GAAaC,UACXwE,GAA+B,cAAf5iQ,EAAMR,KAD5B,CAMA,IAAI8lQ,EAAetlQ,EAAMulQ,cAAgBvlQ,EAAMulQ,eAAe,IAAMvlQ,EAAM8B,OAE1E,IAAI++O,EAASj3O,MAAM++E,cAAes1K,GAAel1K,EAAQu8K,GAAzD,CAKA,GAAInJ,GAAiBtb,EAASj3O,MAAM82P,eAAiB14K,GAAWmF,MAAK,SAAUlE,GAC7E,OAAOg1K,GAAeh1K,EAAIq8K,MACxB,CACF,GAAInH,GAAaC,QACf,OAGF,GAAIvd,EAASx9N,MAAMq7O,WAAa7d,EAASj3O,MAAM62P,QAAQz4P,QAAQ,UAAY,EACzE,YAGFk8P,EAAW,iBAAkB,CAACrjB,EAAU7gP,KAGP,IAA/B6gP,EAASj3O,MAAMg2P,cACjB/e,EAASuiB,qBACTviB,EAAS0iB,OAITZ,GAAgC,EAChC5iQ,YAAW,WACT4iQ,GAAgC,KAK7B9hB,EAASx9N,MAAM6/O,WAClBsC,OAKN,SAASC,IACP7C,GAAe,EAGjB,SAAS8C,IACP9C,GAAe,EAGjB,SAAS+C,IACP,IAAIvhP,EAAMggP,IACVhgP,EAAIvkB,iBAAiB,YAAawlQ,GAAiB,GACnDjhP,EAAIvkB,iBAAiB,WAAYwlQ,EAAiB5J,IAClDr3O,EAAIvkB,iBAAiB,aAAc6lQ,EAAcjK,IACjDr3O,EAAIvkB,iBAAiB,YAAa4lQ,EAAahK,IAGjD,SAAS+J,IACP,IAAIphP,EAAMggP,IACVhgP,EAAIhhB,oBAAoB,YAAaiiQ,GAAiB,GACtDjhP,EAAIhhB,oBAAoB,WAAYiiQ,EAAiB5J,IACrDr3O,EAAIhhB,oBAAoB,aAAcsiQ,EAAcjK,IACpDr3O,EAAIhhB,oBAAoB,YAAaqiQ,EAAahK,IAGpD,SAASmK,EAAkBlG,EAAUx4P,GACnC2+P,EAAgBnG,GAAU,YACnB7e,EAASx9N,MAAMq7O,WAAa31K,EAAO1mF,YAAc0mF,EAAO1mF,WAAWkR,SAASw1E,IAC/E7hF,OAKN,SAAS4+P,EAAiBpG,EAAUx4P,GAClC2+P,EAAgBnG,EAAUx4P,GAG5B,SAAS2+P,EAAgBnG,EAAUx4P,GACjC,IAAIi7B,EAAMuiO,IAA6BviO,IAEvC,SAAS67N,EAASh+P,GACZA,EAAM8B,SAAWqgC,IACnB47N,GAA4B57N,EAAK,SAAU67N,GAC3C92P,KAMJ,GAAiB,IAAbw4P,EACF,OAAOx4P,IAGT62P,GAA4B57N,EAAK,SAAUqgO,GAC3CzE,GAA4B57N,EAAK,MAAO67N,GACxCwE,EAA+BxE,EAGjC,SAAStgP,EAAGqoP,EAAW5iQ,EAASzD,QACd,IAAZA,IACFA,GAAU,GAGZ,IAAIm5I,EAAQsjH,GAAiBtb,EAASj3O,MAAM82P,eAAiB14K,GAC7D6wD,EAAM33I,SAAQ,SAAUa,GACtBA,EAAKlC,iBAAiBkmQ,EAAW5iQ,EAASzD,GAC1CojQ,EAAUt9P,KAAK,CACbzD,KAAMA,EACNgkQ,UAAWA,EACX5iQ,QAASA,EACTzD,QAASA,OAKf,SAASqkQ,IACHO,MACF5mP,EAAG,aAAc2iP,EAAW,CAC1B3d,SAAS,IAEXhlO,EAAG,WAAYkiH,EAAc,CAC3B8iH,SAAS,KAIbwZ,GAAcrb,EAASj3O,MAAM62P,SAASv/P,SAAQ,SAAU6kQ,GACtD,GAAkB,WAAdA,EAMJ,OAFAroP,EAAGqoP,EAAW1F,GAEN0F,GACN,IAAK,aACHroP,EAAG,aAAckiH,GACjB,MAEF,IAAK,QACHliH,EAAGmhP,GAAS,WAAa,OAAQmH,GACjC,MAEF,IAAK,UACHtoP,EAAG,WAAYsoP,GACf,UAKR,SAASC,IACPnD,EAAU5hQ,SAAQ,SAAU6nP,GAC1B,IAAIhnP,EAAOgnP,EAAKhnP,KACZgkQ,EAAYhd,EAAKgd,UACjB5iQ,EAAU4lP,EAAK5lP,QACfzD,EAAUqpP,EAAKrpP,QACnBqC,EAAKqB,oBAAoB2iQ,EAAW5iQ,EAASzD,MAE/CojQ,EAAY,GAGd,SAASzC,EAAUrgQ,GACjB,IAAIkmQ,EAEAC,GAA0B,EAE9B,GAAKtlB,EAASx9N,MAAM4/O,YAAamD,EAAuBpmQ,KAAU2iQ,EAAlE,CAIA,IAAI0D,EAAoG,WAA5C,OAAzCH,EAAoB3D,QAA4B,EAAS2D,EAAkB1mQ,MAC9F+iQ,EAAmBviQ,EACnByiQ,EAAgBziQ,EAAMyiQ,cACtBuB,KAEKnjB,EAASx9N,MAAMq7O,WAAajC,GAAaz8P,IAK5CiiQ,GAAmB/gQ,SAAQ,SAAU88P,GACnC,OAAOA,EAASh+P,MAKD,UAAfA,EAAMR,OAAqBqhP,EAASj3O,MAAM62P,QAAQz4P,QAAQ,cAAgB,GAAK06P,KAAsD,IAA/B7hB,EAASj3O,MAAMg2P,aAAyB/e,EAASx9N,MAAMq7O,UAC/JyH,GAA0B,EAE1BhC,GAAankQ,GAGI,UAAfA,EAAMR,OACRkjQ,GAAsByD,GAGpBA,IAA4BE,GAC9BC,GAAatmQ,IAIjB,SAAS6/H,EAAY7/H,GACnB,IAAI8B,EAAS9B,EAAM8B,OACfykQ,EAAgC9B,IAAmBlxP,SAASzR,IAAWinF,EAAOx1E,SAASzR,GAE3F,GAAmB,cAAf9B,EAAMR,OAAwB+mQ,EAAlC,CAIA,IAAInJ,EAAiBoJ,KAAsBzoP,OAAOgrE,GAAQ5/E,KAAI,SAAU4/E,GACtE,IAAI09K,EAEA5lB,EAAW93J,EAAO4zK,OAClBt5O,EAA6D,OAApDojP,EAAwB5lB,EAASmiB,qBAA0B,EAASyD,EAAsBpjP,MAEvG,OAAIA,EACK,CACL4sO,WAAYlnK,EAAOtoE,wBACnB48O,YAAah6O,EACbzZ,MAAOA,GAIJ,QACNR,OAAOw6E,SAENu5K,GAAiCC,EAAgBp9P,KACnDolQ,IACAkB,GAAatmQ,KAIjB,SAAS4/H,EAAa5/H,GACpB,IAAI0mQ,EAAaN,EAAuBpmQ,IAAU6gP,EAASj3O,MAAM62P,QAAQz4P,QAAQ,UAAY,GAAK06P,EAE9FgE,IAIA7lB,EAASj3O,MAAM++E,YACjBk4J,EAAS2iB,sBAAsBxjQ,GAIjCsmQ,GAAatmQ,IAGf,SAASgmQ,EAAiBhmQ,GACpB6gP,EAASj3O,MAAM62P,QAAQz4P,QAAQ,WAAa,GAAKhI,EAAM8B,SAAW2iQ,KAKlE5jB,EAASj3O,MAAM++E,aAAe3oF,EAAM2mQ,eAAiB59K,EAAOx1E,SAASvT,EAAM2mQ,gBAI/EL,GAAatmQ,GAGf,SAASomQ,EAAuBpmQ,GAC9B,QAAOm+P,GAAaC,SAAUkG,MAA+BtkQ,EAAMR,KAAKwI,QAAQ,UAAY,EAG9F,SAAS4+P,KACPC,KACA,IAAIC,EAAmBjmB,EAASj3O,MAC5B42P,EAAgBsG,EAAiBtG,cACjC93K,EAAYo+K,EAAiBp+K,UAC7Bx6D,EAAS44O,EAAiB54O,OAC1ByxO,EAAyBmH,EAAiBnH,uBAC1CG,EAAiBgH,EAAiBhH,eAClCj3K,EAAQ07K,IAAyBhD,GAAYx4K,GAAQF,MAAQ,KAC7Dk+K,EAAoBpH,EAAyB,CAC/Cl/O,sBAAuBk/O,EACvBzR,eAAgByR,EAAuBzR,gBAAkBuW,KACvDz8K,EACAg/K,EAAgB,CAClBnkQ,KAAM,UACNsrP,SAAS,EACTx8G,MAAO,cACP26G,SAAU,CAAC,iBACXzrP,GAAI,SAAYkvP,GACd,IAAI1sO,EAAQ0sO,EAAM1sO,MAElB,GAAIkhP,IAAwB,CAC1B,IAAI0C,EAAwBvC,IACxBviO,EAAM8kO,EAAsB9kO,IAEhC,CAAC,YAAa,mBAAoB,WAAWjhC,SAAQ,SAAUsC,GAChD,cAATA,EACF2+B,EAAIv+B,aAAa,iBAAkByf,EAAMqlE,WAErCrlE,EAAMoS,WAAWszD,OAAO,eAAiBvlF,GAC3C2+B,EAAIv+B,aAAa,QAAUJ,EAAM,IAEjC2+B,EAAIz+B,gBAAgB,QAAUF,MAIpC6f,EAAMoS,WAAWszD,OAAS,MAI5BojK,EAAY,CAAC,CACftpP,KAAM,SACNnD,QAAS,CACPwuB,OAAQA,IAET,CACDrrB,KAAM,kBACNnD,QAAS,CACPmnC,QAAS,CACPl5B,IAAK,EACL4uB,OAAQ,EACR5b,KAAM,EACNC,MAAO,KAGV,CACD/d,KAAM,OACNnD,QAAS,CACPmnC,QAAS,IAEV,CACDhkC,KAAM,gBACNnD,QAAS,CACPywP,UAAW2P,IAEZkH,GAECzC,KAA0B17K,GAC5BsjK,EAAU3mP,KAAK,CACb3C,KAAM,QACNnD,QAAS,CACPgsF,QAAS7C,EACThiD,QAAS,KAKfslN,EAAU3mP,KAAK6P,MAAM82O,GAA6B,MAAjBqU,OAAwB,EAASA,EAAcrU,YAAc,IAC9FtL,EAASmiB,eAAiB,GAAa+D,EAAmBh+K,EAAQ5oF,OAAO0hD,OAAO,GAAI2+M,EAAe,CACjG93K,UAAWA,EACXmmK,cAAeA,EACf1C,UAAWA,KAIf,SAAS0a,KACHhmB,EAASmiB,iBACXniB,EAASmiB,eAAe76K,UACxB04J,EAASmiB,eAAiB,MAI9B,SAASkE,KACP,IACI7kQ,EADAm9P,EAAW3e,EAASj3O,MAAM41P,SAO1Bz9P,EAAO0iQ,IAGTpiQ,EADEw+O,EAASj3O,MAAM++E,aAAe62K,IAAa9D,IAAwC,WAAb8D,EAC3Dz9P,EAAKM,WAELy5P,GAAuB0D,EAAU,CAACz9P,IAK5CM,EAAWkR,SAASw1E,IACvB1mF,EAAWL,YAAY+mF,GAGzB83J,EAASx9N,MAAM6/O,WAAY,EAC3B0D,KASF,SAASJ,KACP,OAAOlK,GAAUvzK,EAAOC,iBAAiB,sBAG3C,SAASm7K,GAAankQ,GACpB6gP,EAASuiB,qBAELpjQ,GACFkkQ,EAAW,YAAa,CAACrjB,EAAU7gP,IAGrC2lQ,IACA,IAAIv2N,EAAQu1N,GAAS,GAEjBwC,EAAwB9C,IACxB+C,EAAaD,EAAsB,GACnCE,EAAaF,EAAsB,GAEnChJ,GAAaC,SAA0B,SAAfgJ,GAAyBC,IACnDj4N,EAAQi4N,GAGNj4N,EACFgzN,EAAcriQ,YAAW,WACvB8gP,EAASyiB,SACRl0N,GAEHyxM,EAASyiB,OAIb,SAASgD,GAAatmQ,GAIpB,GAHA6gP,EAASuiB,qBACTc,EAAW,cAAe,CAACrjB,EAAU7gP,IAEhC6gP,EAASx9N,MAAMq7O,WASpB,KAAI7d,EAASj3O,MAAM62P,QAAQz4P,QAAQ,eAAiB,GAAK64O,EAASj3O,MAAM62P,QAAQz4P,QAAQ,UAAY,GAAK,CAAC,aAAc,aAAaA,QAAQhI,EAAMR,OAAS,GAAKkjQ,GAAjK,CAIA,IAAItzN,EAAQu1N,GAAS,GAEjBv1N,EACFizN,EAActiQ,YAAW,WACnB8gP,EAASx9N,MAAMq7O,WACjB7d,EAAS0iB,SAEVn0N,GAIHkzN,EAA6BgF,uBAAsB,WACjDzmB,EAAS0iB,gBAxBXiC,IAgCJ,SAAS/B,KACP5iB,EAASx9N,MAAM4/O,WAAY,EAG7B,SAASzoG,KAGPqmF,EAAS0iB,OACT1iB,EAASx9N,MAAM4/O,WAAY,EAG7B,SAASG,KACPrsP,aAAaqrP,GACbrrP,aAAasrP,GACbkF,qBAAqBjF,GAGvB,SAASv6K,GAAS84K,GAMhB,IAAIhgB,EAASx9N,MAAMwqO,YAAnB,CAIAqW,EAAW,iBAAkB,CAACrjB,EAAUggB,IACxCoF,IACA,IAAIrE,EAAY/gB,EAASj3O,MACrBi4P,EAAYT,GAAcp5K,EAAW7nF,OAAO0hD,OAAO,GAAI+/M,EAAWrF,GAAqBsE,GAAe,CACxGhB,kBAAkB,KAEpBhf,EAASj3O,MAAQi4P,EACjBkC,IAEInC,EAAUh5K,sBAAwBi5K,EAAUj5K,sBAC9Cw8K,IACArC,EAAuB,GAASljI,EAAagiI,EAAUj5K,sBAIrDg5K,EAAUlB,gBAAkBmB,EAAUnB,cACxCvE,GAAiByF,EAAUlB,eAAex/P,SAAQ,SAAUa,GAC1DA,EAAK2B,gBAAgB,oBAEdm+P,EAAUnB,eACnB14K,EAAUtkF,gBAAgB,iBAG5BsgQ,IACAC,IAEItC,GACFA,EAASC,EAAWC,GAGlBhhB,EAASmiB,iBACX4D,KAKAJ,KAAsBtlQ,SAAQ,SAAUsmQ,GAGtCF,sBAAsBE,EAAa7K,OAAOqG,eAAe9lO,iBAI7DgnO,EAAW,gBAAiB,CAACrjB,EAAUggB,KAGzC,SAASwC,GAAW1wO,GAClBkuN,EAAS94J,SAAS,CAChBp1D,QAASA,IAIb,SAAS2wO,KAOP,IAAImE,EAAmB5mB,EAASx9N,MAAMq7O,UAClC7Q,EAAchN,EAASx9N,MAAMwqO,YAC7B6Z,GAAc7mB,EAASx9N,MAAM4/O,UAC7B0E,EAA0BxJ,GAAaC,UAAYvd,EAASj3O,MAAM40D,MAClEkhM,EAAW/D,GAAwB9a,EAASj3O,MAAM81P,SAAU,EAAGH,GAAaG,UAEhF,KAAI+H,GAAoB5Z,GAAe6Z,GAAcC,KAOjDlD,IAAmBX,aAAa,cAIpCI,EAAW,SAAU,CAACrjB,IAAW,IAEO,IAApCA,EAASj3O,MAAMkgI,OAAO+2G,IAA1B,CAmBA,GAfAA,EAASx9N,MAAMq7O,WAAY,EAEvB6F,MACFx7K,EAAO51E,MAAM61B,WAAa,WAG5Bi7N,IACA0B,IAEK9kB,EAASx9N,MAAM6/O,YAClBn6K,EAAO51E,MAAMy0P,WAAa,QAKxBrD,IAAwB,CAC1B,IAAIsD,EAAyBnD,IACzBviO,EAAM0lO,EAAuB1lO,IAC7BxP,EAAUk1O,EAAuBl1O,QAErCkqO,GAAsB,CAAC16N,EAAKxP,GAAU,GAGxCk8N,EAAgB,WACd,IAAIiZ,EAEJ,GAAKjnB,EAASx9N,MAAMq7O,YAAamE,EAAjC,CASA,GALAA,GAAsB,EAEjB95K,EAAO3oE,aACZ2oE,EAAO51E,MAAMy0P,WAAa/mB,EAASj3O,MAAMk2P,eAErCyE,KAA0B1jB,EAASj3O,MAAMw1P,UAAW,CACtD,IAAI2I,EAAyBrD,IACzBsD,EAAOD,EAAuB5lO,IAC9B8lO,EAAWF,EAAuBp1O,QAEtCkqO,GAAsB,CAACmL,EAAMC,GAAWvI,GACxC3C,GAAmB,CAACiL,EAAMC,GAAW,WAGvChD,IACAjB,IACA5H,GAAa8F,GAAkBrhB,GAGuB,OAArDinB,EAAyBjnB,EAASmiB,iBAAmC8E,EAAuB5qO,cAC7FgnO,EAAW,UAAW,CAACrjB,IAEnBA,EAASj3O,MAAMw1P,WAAamF,KAC9BuB,EAAiBpG,GAAU,WACzB7e,EAASx9N,MAAM8/O,SAAU,EACzBe,EAAW,UAAW,CAACrjB,SAK7BqmB,MAGF,SAAS3D,KAOP,IAAI2E,GAAmBrnB,EAASx9N,MAAMq7O,UAClC7Q,EAAchN,EAASx9N,MAAMwqO,YAC7B6Z,GAAc7mB,EAASx9N,MAAM4/O,UAC7BvD,EAAW/D,GAAwB9a,EAASj3O,MAAM81P,SAAU,EAAGH,GAAaG,UAEhF,KAAIwI,GAAmBra,GAAe6Z,KAItCxD,EAAW,SAAU,CAACrjB,IAAW,IAEO,IAApCA,EAASj3O,MAAMu2P,OAAOtf,IAA1B,CAiBA,GAbAA,EAASx9N,MAAMq7O,WAAY,EAC3B7d,EAASx9N,MAAM8/O,SAAU,EACzBN,GAAsB,EACtBH,GAAqB,EAEjB6B,MACFx7K,EAAO51E,MAAM61B,WAAa,UAG5Bo8N,IACAI,IACAvB,GAAa,GAETM,IAAwB,CAC1B,IAAI4D,EAAyBzD,IACzBviO,EAAMgmO,EAAuBhmO,IAC7BxP,EAAUw1O,EAAuBx1O,QAEjCkuN,EAASj3O,MAAMw1P,YACjBvC,GAAsB,CAAC16N,EAAKxP,GAAU+sO,GACtC3C,GAAmB,CAAC56N,EAAKxP,GAAU,WAIvCsyO,IACAjB,IAEInjB,EAASj3O,MAAMw1P,UACbmF,KACFqB,EAAkBlG,EAAU7e,EAAS6iB,SAGvC7iB,EAAS6iB,WAIb,SAASF,GAAsBxjQ,GAM7BokQ,IAAcvkQ,iBAAiB,YAAakjQ,GAC5C3G,GAAa6F,GAAoBc,GACjCA,EAAqB/iQ,GAGvB,SAAS0jQ,KAMH7iB,EAASx9N,MAAMq7O,WACjB7d,EAAS0iB,OAGN1iB,EAASx9N,MAAM6/O,YAIpB2D,KAIAL,KAAsBtlQ,SAAQ,SAAUsmQ,GACtCA,EAAa7K,OAAO+G,aAGlB36K,EAAO1mF,YACT0mF,EAAO1mF,WAAWC,YAAYymF,GAGhCm5K,GAAmBA,GAAiB94P,QAAO,SAAU1G,GACnD,OAAOA,IAAMm+O,KAEfA,EAASx9N,MAAM6/O,WAAY,EAC3BgB,EAAW,WAAY,CAACrjB,KAG1B,SAAS14J,KAMH04J,EAASx9N,MAAMwqO,cAInBhN,EAASuiB,qBACTviB,EAAS6iB,UACTuC,WACOj+K,EAAU20K,OACjB9b,EAASx9N,MAAMwqO,aAAc,EAC7BqW,EAAW,YAAa,CAACrjB,MAI7B,SAASunB,GAAMtgQ,EAASugQ,QACA,IAAlBA,IACFA,EAAgB,IAGlB,IAAI1qL,EAAU4hL,GAAa5hL,QAAQ5/D,OAAOsqP,EAAc1qL,SAAW,IAQnEghL,KACA,IAAIoC,EAAc5gQ,OAAO0hD,OAAO,GAAIwmN,EAAe,CACjD1qL,QAASA,IAEPgwK,EAAWiP,GAAmB90P,GAS9BwgQ,EAAY3a,EAASl0I,QAAO,SAAUkyI,EAAK3jK,GAC7C,IAAI64J,EAAW74J,GAAam6K,GAAYn6K,EAAW+4K,GAMnD,OAJIlgB,GACF8K,EAAInmP,KAAKq7O,GAGJ8K,IACN,IACH,OAAO,GAAU7jP,GAAWwgQ,EAAU,GAAKA,EAG7CF,GAAM7I,aAAeA,GACrB6I,GAAMxH,gBAAkBA,GACxBwH,GAAMjK,aAAeA,GACrB,IAAIoK,GAAU,SAAiBC,GAC7B,IAAIzf,OAAiB,IAAVyf,EAAmB,GAAKA,EAC/BC,EAA8B1f,EAAKlY,QACnC6uB,EAAW3W,EAAK2W,SAEpBwC,GAAiBhhQ,SAAQ,SAAU2/O,GACjC,IAAI6nB,GAAa,EAMjB,GAJID,IACFC,EAAahM,GAAmB+L,GAA+B5nB,EAAS74J,YAAcygL,EAA8B5nB,EAAS93J,SAAW0/K,EAA4B1/K,SAGjK2/K,EAAY,CACf,IAAIC,EAAmB9nB,EAASj3O,MAAM81P,SACtC7e,EAAS94J,SAAS,CAChB23K,SAAUA,IAEZ7e,EAAS0iB,OAEJ1iB,EAASx9N,MAAMwqO,aAClBhN,EAAS94J,SAAS,CAChB23K,SAAUiJ,SAWhBC,GAAsBzoQ,OAAO0hD,OAAO,GAAI,GAAa,CACvD6sM,OAAQ,SAAgB3F,GACtB,IAAI1lO,EAAQ0lO,EAAK1lO,MACbquO,EAAgB,CAClB3oK,OAAQ,CACN7uD,SAAU7W,EAAM3jB,QAAQqtP,SACxBpsO,KAAM,IACNhT,IAAK,IACLw9B,OAAQ,KAEV09C,MAAO,CACL3uD,SAAU,YAEZ8tD,UAAW,IAEb7nF,OAAO0hD,OAAOx+B,EAAMsqO,SAAS5kK,OAAO51E,MAAOu+O,EAAc3oK,QACzD1lE,EAAM2F,OAAS0oO,EAEXruO,EAAMsqO,SAAS9kK,OACjB1oF,OAAO0hD,OAAOx+B,EAAMsqO,SAAS9kK,MAAM11E,MAAOu+O,EAAc7oK,UAO1DggL,GAAkB,SAAyBC,EAAgBT,GAC7D,IAAIU,OAEkB,IAAlBV,IACFA,EAAgB,IAQlB,IAGI5F,EAHAuG,EAAsBF,EACtBG,EAAa,GACbC,EAAiB,GAEjBC,EAAYd,EAAcc,UAC1BC,EAA4B,GAC5BC,GAAgB,EAEpB,SAASC,IACPJ,EAAiBF,EAAoB7/P,KAAI,SAAU03O,GACjD,OAAOsb,GAAiBtb,EAASj3O,MAAM82P,eAAiB7f,EAAS74J,cAChEyxB,QAAO,SAAUkyI,EAAKhkK,GACvB,OAAOgkK,EAAI5tO,OAAO4pE,KACjB,IAGL,SAAS4hL,IACPN,EAAaD,EAAoB7/P,KAAI,SAAU03O,GAC7C,OAAOA,EAAS74J,aAIpB,SAASwhL,EAAgBvG,GACvB+F,EAAoB9nQ,SAAQ,SAAU2/O,GAChCoiB,EACFpiB,EAAS4iB,SAET5iB,EAASrmF,aAKf,SAASivG,EAAkBC,GACzB,OAAOV,EAAoB7/P,KAAI,SAAU03O,GACvC,IAAI8oB,EAAmB9oB,EAAS94J,SAUhC,OARA84J,EAAS94J,SAAW,SAAUn+E,GAC5B+/P,EAAiB//P,GAEbi3O,EAAS74J,YAAcy6K,GACzBiH,EAAU3hL,SAASn+E,IAIhB,WACLi3O,EAAS94J,SAAW4hL,MAM1B,SAASC,EAAgBF,EAAW5nQ,GAClC,IAAI2Q,EAAQy2P,EAAelhQ,QAAQlG,GAEnC,GAAIA,IAAW2gQ,EAAf,CAIAA,EAAgB3gQ,EAChB,IAAI+nQ,GAAiBV,GAAa,IAAIprP,OAAO,WAAW07F,QAAO,SAAUkyI,EAAK/+K,GAE5E,OADA++K,EAAI/+K,GAAQo8L,EAAoBv2P,GAAO7I,MAAMgjE,GACtC++K,IACN,IACH+d,EAAU3hL,SAAS5nF,OAAO0hD,OAAO,GAAIgoN,EAAe,CAClDlK,uBAAwE,oBAAzCkK,EAAclK,uBAAwCkK,EAAclK,uBAAyB,WAC1H,IAAImK,EAEJ,OAAkD,OAA1CA,EAAoBb,EAAWx2P,SAAkB,EAASq3P,EAAkBrpP,6BAK1F+oP,GAAgB,GAChBD,IACAD,IACA,IAAIjwB,EAAS,CACXx4O,GAAI,WACF,MAAO,CACL8E,UAAW,WACT6jQ,GAAgB,IAElBtJ,SAAU,WACRuC,EAAgB,MAElBlC,eAAgB,SAAwB1f,GAClCA,EAASj3O,MAAM6+E,eAAiB4gL,IAClCA,GAAgB,EAChB5G,EAAgB,OAGpB34H,OAAQ,SAAgB+2G,GAClBA,EAASj3O,MAAM6+E,eAAiB4gL,IAClCA,GAAgB,EAChBO,EAAgB/oB,EAAUooB,EAAW,MAGzC5I,UAAW,SAAmBxf,EAAU7gP,GACtC4pQ,EAAgB/oB,EAAU7gP,EAAMyiQ,mBAKpCiH,EAAYtB,GAAMnoP,KAAO9f,OAAO0hD,OAAO,GAAIo6M,GAAiBoM,EAAe,CAAC,cAAe,CAC7F1qL,QAAS,CAAC07J,GAAQt7N,OAAOsqP,EAAc1qL,SAAW,IAClD+iL,cAAewI,EACf1I,cAAergQ,OAAO0hD,OAAO,GAAIwmN,EAAc7H,cAAe,CAC5DrU,UAAW,GAAGpuO,QAAiE,OAAxDgrP,EAAwBV,EAAc7H,oBAAyB,EAASuI,EAAsB5c,YAAc,GAAI,CAACyc,UAGxImB,EAAeL,EAAUpG,KAE7BoG,EAAUpG,KAAO,SAAUxhQ,GAIzB,GAHAioQ,KAGKtH,GAA2B,MAAV3gQ,EACpB,OAAO8nQ,EAAgBF,EAAWT,EAAW,IAK/C,IAAIxG,GAA2B,MAAV3gQ,EAArB,CAKA,GAAsB,kBAAXA,EACT,OAAOmnQ,EAAWnnQ,IAAW8nQ,EAAgBF,EAAWT,EAAWnnQ,IAIrE,GAAIknQ,EAAoBhhQ,QAAQlG,IAAW,EAAG,CAC5C,IAAI7C,EAAM6C,EAAOkmF,UACjB,OAAO4hL,EAAgBF,EAAWzqQ,GAIpC,OAAIgqQ,EAAWjhQ,QAAQlG,IAAW,EACzB8nQ,EAAgBF,EAAW5nQ,QADpC,IAKF4nQ,EAAUM,SAAW,WACnB,IAAI3lP,EAAQ4kP,EAAW,GAEvB,IAAKxG,EACH,OAAOiH,EAAUpG,KAAK,GAGxB,IAAI7wP,EAAQw2P,EAAWjhQ,QAAQy6P,GAC/BiH,EAAUpG,KAAK2F,EAAWx2P,EAAQ,IAAM4R,IAG1CqlP,EAAUO,aAAe,WACvB,IAAI7jP,EAAO6iP,EAAWA,EAAWrnQ,OAAS,GAE1C,IAAK6gQ,EACH,OAAOiH,EAAUpG,KAAKl9O,GAGxB,IAAI3T,EAAQw2P,EAAWjhQ,QAAQy6P,GAC3B3gQ,EAASmnQ,EAAWx2P,EAAQ,IAAM2T,EACtCsjP,EAAUpG,KAAKxhQ,IAGjB,IAAI6nQ,EAAmBD,EAAU3hL,SAuBjC,OArBA2hL,EAAU3hL,SAAW,SAAUn+E,GAC7Bu/P,EAAYv/P,EAAMu/P,WAAaA,EAC/BQ,EAAiB//P,IAGnB8/P,EAAUQ,aAAe,SAAUC,GACjCX,GAAgB,GAChBJ,EAA0BloQ,SAAQ,SAAUL,GAC1C,OAAOA,OAETmoQ,EAAsBmB,EACtBX,GAAgB,GAChBD,IACAD,IACAF,EAA4BK,EAAkBC,GAC9CA,EAAU3hL,SAAS,CACjB24K,cAAewI,KAInBE,EAA4BK,EAAkBC,GACvCA,GAGLU,GAAsB,CACxBC,UAAW,aACXC,QAAS,QACT/gL,MAAO,SAOT,SAASzB,GAAShgF,EAAS8B,GAMzB,IAAIk5P,EAAY,GACZyH,EAAsB,GACtB79L,GAAW,EACX5qE,EAAS8H,EAAM9H,OACf0oQ,EAAcvO,GAAiBryP,EAAO,CAAC,WACvC6gQ,EAActqQ,OAAO0hD,OAAO,GAAI2oN,EAAa,CAC/C/J,QAAS,SACTjiM,OAAO,IAELksM,EAAavqQ,OAAO0hD,OAAO,CAC7B2c,MAAO+gM,GAAa/gM,OACnBgsM,EAAa,CACd/hL,cAAc,IAEZtpE,EAAcipP,GAAMtgQ,EAAS2iQ,GAC7BE,EAAwBxO,GAAiBh9O,GAE7C,SAASkhP,EAAUrgQ,GACjB,GAAKA,EAAM8B,SAAU4qE,EAArB,CAIA,IAAIk+L,EAAa5qQ,EAAM8B,OAAOwnF,QAAQxnF,GAEtC,GAAK8oQ,EAAL,CAQA,IAAInK,EAAUmK,EAAWjnQ,aAAa,uBAAyBiG,EAAM62P,SAAWlB,GAAakB,QAE7F,IAAImK,EAAWjO,SAII,eAAf38P,EAAMR,MAAqD,mBAArBkrQ,EAAWlsM,UAIlC,eAAfx+D,EAAMR,MAAyBihQ,EAAQz4P,QAAQoiQ,GAAoBpqQ,EAAMR,OAAS,GAAtF,CAIA,IAAIqhP,EAAWunB,GAAMwC,EAAYF,GAE7B7pB,IACF0pB,EAAsBA,EAAoBxsP,OAAO8iO,OAIrD,SAASnjO,EAAG3b,EAAMgkQ,EAAW5iQ,EAASzD,QACpB,IAAZA,IACFA,GAAU,GAGZqC,EAAKlC,iBAAiBkmQ,EAAW5iQ,EAASzD,GAC1CojQ,EAAUt9P,KAAK,CACbzD,KAAMA,EACNgkQ,UAAWA,EACX5iQ,QAASA,EACTzD,QAASA,IAIb,SAASmrQ,EAAkBhqB,GACzB,IAAI74J,EAAY64J,EAAS74J,UACzBtqE,EAAGsqE,EAAW,aAAcq4K,EAAW5E,IACvC/9O,EAAGsqE,EAAW,YAAaq4K,GAC3B3iP,EAAGsqE,EAAW,UAAWq4K,GACzB3iP,EAAGsqE,EAAW,QAASq4K,GAGzB,SAASyK,IACPhI,EAAU5hQ,SAAQ,SAAU6nP,GAC1B,IAAIhnP,EAAOgnP,EAAKhnP,KACZgkQ,EAAYhd,EAAKgd,UACjB5iQ,EAAU4lP,EAAK5lP,QACfzD,EAAUqpP,EAAKrpP,QACnBqC,EAAKqB,oBAAoB2iQ,EAAW5iQ,EAASzD,MAE/CojQ,EAAY,GAGd,SAASiI,EAAelqB,GACtB,IAAImqB,EAAkBnqB,EAAS14J,QAC3B8iL,EAAiBpqB,EAAS4iB,OAC1ByH,EAAkBrqB,EAASrmF,QAE/BqmF,EAAS14J,QAAU,SAAUgjL,QACS,IAAhCA,IACFA,GAA8B,GAG5BA,GACFZ,EAAoBrpQ,SAAQ,SAAU2/O,GACpCA,EAAS14J,aAIboiL,EAAsB,GACtBO,IACAE,KAGFnqB,EAAS4iB,OAAS,WAChBwH,IACAV,EAAoBrpQ,SAAQ,SAAU2/O,GACpC,OAAOA,EAAS4iB,YAElB/2L,GAAW,GAGbm0K,EAASrmF,QAAU,WACjB0wG,IACAX,EAAoBrpQ,SAAQ,SAAU2/O,GACpC,OAAOA,EAASrmF,aAElB9tF,GAAW,GAGbm+L,EAAkBhqB,GAIpB,OADA8pB,EAAsBzpQ,QAAQ6pQ,GACvB5rP,EAGT,IAAI6/O,GAAc,CAChBn8P,KAAM,cACN+4P,cAAc,EACd/6P,GAAI,SAAYggP,GACd,IAAI2jB,EAGJ,GAAyD,OAAlDA,EAAwB3jB,EAASj3O,MAAMk6O,UAAmB0gB,EAAsBzC,QAKrF,MAAO,GAGT,IAAID,EAAeP,GAAY1gB,EAAS93J,QACpC5mD,EAAM2/N,EAAa3/N,IACnBxP,EAAUmvO,EAAanvO,QAEvB+uO,EAAW7gB,EAASj3O,MAAMo1P,YAAcoM,KAA0B,KACtE,MAAO,CACLnL,SAAU,WACJyB,IACFv/N,EAAIhgC,aAAau/P,EAAUv/N,EAAIq/N,mBAC/Br/N,EAAIv+B,aAAa,mBAAoB,IACrCu+B,EAAIhvB,MAAMk+H,SAAW,SACrBwvG,EAAS94J,SAAS,CAChBc,OAAO,EACPu2K,UAAW,iBAIjB/5P,QAAS,WACP,GAAIq8P,EAAU,CACZ,IAAI5E,EAAqB36N,EAAIhvB,MAAM2pP,mBAC/B4C,EAAW5tP,OAAOgrP,EAAmB1gP,QAAQ,KAAM,KAIvDuW,EAAQxf,MAAMk4P,gBAAkBxzP,KAAKwsB,MAAMq7N,EAAW,IAAM,KAC5DgC,EAASvuP,MAAM2pP,mBAAqBA,EACpCC,GAAmB,CAAC2E,GAAW,aAGnC53H,OAAQ,WACF43H,IACFA,EAASvuP,MAAM2pP,mBAAqB,QAGxCqD,OAAQ,WACFuB,GACF3E,GAAmB,CAAC2E,GAAW,cAOzC,SAAS0J,KACP,IAAI1J,EAAWzhP,KAGf,OAFAyhP,EAASnvP,UAAY+oP,GACrByB,GAAmB,CAAC2E,GAAW,UACxBA,EAGT,IAAI4J,GAAc,CAChBrnO,QAAS,EACTC,QAAS,GAEPqnO,GAAkB,GAEtB,SAASC,GAAiBziB,GACxB,IAAI9kN,EAAU8kN,EAAK9kN,QACfC,EAAU6kN,EAAK7kN,QACnBonO,GAAc,CACZrnO,QAASA,EACTC,QAASA,GAIb,SAASunO,GAAuBrnP,GAC9BA,EAAIvkB,iBAAiB,YAAa2rQ,IAGpC,SAASE,GAA0BtnP,GACjCA,EAAIhhB,oBAAoB,YAAaooQ,IAGvC,IAAIvM,GAAe,CACjBp8P,KAAM,eACN+4P,cAAc,EACd/6P,GAAI,SAAYggP,GACd,IAAI74J,EAAY64J,EAAS74J,UACrB5jE,EAAM44O,GAAiBnc,EAASj3O,MAAM82P,eAAiB14K,GACvD2jL,GAAmB,EACnBC,GAAgB,EAChBC,GAAc,EACdjK,EAAY/gB,EAASj3O,MAEzB,SAASkiQ,IACP,MAAuC,YAAhCjrB,EAASj3O,MAAMq1P,cAA8Bpe,EAASx9N,MAAMq7O,UAGrE,SAASqN,IACP3nP,EAAIvkB,iBAAiB,YAAaggI,GAGpC,SAASmsI,IACP5nP,EAAIhhB,oBAAoB,YAAay8H,GAGvC,SAASosI,IACPN,GAAmB,EACnB9qB,EAAS94J,SAAS,CAChB43K,uBAAwB,OAE1BgM,GAAmB,EAGrB,SAAS9rI,EAAY7/H,GAGnB,IAAIksQ,GAAwBlsQ,EAAM8B,QAASkmF,EAAUz0E,SAASvT,EAAM8B,QAChEm9P,EAAepe,EAASj3O,MAAMq1P,aAC9Bh7N,EAAUjkC,EAAMikC,QAChBC,EAAUlkC,EAAMkkC,QAChBlI,EAAOgsD,EAAUvnE,wBACjB0rP,EAAYloO,EAAUjI,EAAKrb,KAC3ByrP,EAAYloO,EAAUlI,EAAKruB,KAE3Bu+P,GAA0BrrB,EAASj3O,MAAM++E,aAC3Ck4J,EAAS94J,SAAS,CAEhB43K,uBAAwB,WACtB,IAAI3jO,EAAOgsD,EAAUvnE,wBACjBsF,EAAIke,EACJtC,EAAIuC,EAEa,YAAjB+6N,IACFl5O,EAAIiW,EAAKrb,KAAOwrP,EAChBxqO,EAAI3F,EAAKruB,IAAMy+P,GAGjB,IAAIz+P,EAAuB,eAAjBsxP,EAAgCjjO,EAAKruB,IAAMg0B,EACjD/gB,EAAyB,aAAjBq+O,EAA8BjjO,EAAKpb,MAAQmF,EACnDwW,EAA0B,eAAjB0iO,EAAgCjjO,EAAKO,OAASoF,EACvDhhB,EAAwB,aAAjBs+O,EAA8BjjO,EAAKrb,KAAOoF,EACrD,MAAO,CACL+T,MAAOlZ,EAAQD,EACfmE,OAAQyX,EAAS5uB,EACjBA,IAAKA,EACLiT,MAAOA,EACP2b,OAAQA,EACR5b,KAAMA,MAOhB,SAAS5f,IACH8/O,EAASj3O,MAAMq1P,eACjBsM,GAAgB/lQ,KAAK,CACnBq7O,SAAUA,EACVz8N,IAAKA,IAEPqnP,GAAuBrnP,IAI3B,SAAS+jE,IACPojL,GAAkBA,GAAgBniQ,QAAO,SAAU/E,GACjD,OAAOA,EAAKw8O,WAAaA,KAKb,IAFV0qB,GAAgBniQ,QAAO,SAAU/E,GACnC,OAAOA,EAAK+f,MAAQA,KACnBxiB,QACD8pQ,GAA0BtnP,GAI9B,MAAO,CACL67O,SAAUl/P,EACV4E,UAAWwiF,EACX63K,eAAgB,WACd4B,EAAY/gB,EAASj3O,OAEvBm2P,cAAe,SAAuB/yK,EAAG+iK,GACvC,IAAIkP,EAAelP,EAAMkP,aAErB0M,QAIiB9e,IAAjBoS,GAA8B2C,EAAU3C,eAAiBA,IAC3D92K,IAEI82K,GACFl+P,KAEI8/O,EAASx9N,MAAM6/O,WAAc0I,GAAkBE,KACjDC,MAGFC,IACAC,OAIN5mQ,QAAS,WACHw7O,EAASj3O,MAAMq1P,eAAiB2M,IAC9BC,IACFhsI,EAAYyrI,IACZO,GAAc,GAGXC,KACHC,MAIN1L,UAAW,SAAmBrzK,EAAGhtF,GAC3By8P,GAAaz8P,KACfsrQ,GAAc,CACZrnO,QAASjkC,EAAMikC,QACfC,QAASlkC,EAAMkkC,UAInB0nO,EAA+B,UAAf5rQ,EAAMR,MAExB0gQ,SAAU,WACJrf,EAASj3O,MAAMq1P,eACjBgN,IACAD,IACAH,GAAc,OAOxB,SAASQ,GAASziQ,EAAOyiP,GACvB,IAAIigB,EAEJ,MAAO,CACL9L,cAAergQ,OAAO0hD,OAAO,GAAIj4C,EAAM42P,cAAe,CACpDrU,UAAW,GAAGpuO,SAAyD,OAA/CuuP,EAAuB1iQ,EAAM42P,oBAAyB,EAAS8L,EAAqBngB,YAAc,IAAI/iP,QAAO,SAAU2/O,GAC7I,IAAIlmP,EAAOkmP,EAAKlmP,KAChB,OAAOA,IAASwpP,EAASxpP,QACvB,CAACwpP,OAKX,IAAI6S,GAAoB,CACtBr8P,KAAM,oBACN+4P,cAAc,EACd/6P,GAAI,SAAYggP,GACd,IAMIn4J,EANAV,EAAY64J,EAAS74J,UAEzB,SAASi7K,IACP,QAASpiB,EAASj3O,MAAMs1P,kBAI1B,IAAIqN,GAAmB,EACnBZ,GAAmB,EACnBa,EAAkB,GAClBngB,EAAW,CACbxpP,KAAM,yBACNsrP,SAAS,EACTx8G,MAAO,aACP9wI,GAAI,SAAYkvP,GACd,IAAI1sO,EAAQ0sO,EAAM1sO,MAEd4/O,OACgD,IAA9CuJ,EAAgBxkQ,QAAQqb,EAAMqlE,aAChC8jL,EAAkB,IAGhB9jL,IAAcrlE,EAAMqlE,YAA2D,IAA9C8jL,EAAgBxkQ,QAAQqb,EAAMqlE,aACjE8jL,EAAgBhnQ,KAAK6d,EAAMqlE,WAC3Bm4J,EAAS94J,SAAS,CAEhB43K,uBAAwB,WACtB,OAAO8M,EAAwBppP,EAAMqlE,eAK3CA,EAAYrlE,EAAMqlE,aAKxB,SAAS+jL,EAAwB/jL,GAC/B,OAAOgkL,GAA4B,GAAiBhkL,GAAYV,EAAUvnE,wBAAyB67O,GAAUt0K,EAAU1rD,kBAAmBiwO,GAG5I,SAASI,EAAiB9L,GACxB8K,GAAmB,EACnB9qB,EAAS94J,SAAS84K,GAClB8K,GAAmB,EAGrB,SAASiB,IACFjB,GACHgB,EAAiBN,GAASxrB,EAASj3O,MAAOyiP,IAI9C,MAAO,CACL4T,SAAU2M,EACV7M,cAAe6M,EACfvM,UAAW,SAAmBrzK,EAAGhtF,GAC/B,GAAIy8P,GAAaz8P,GAAQ,CACvB,IAAIq8B,EAAQigO,GAAUzb,EAAS74J,UAAU1rD,kBACrCuwO,EAAaxwO,EAAMpN,MAAK,SAAU+M,GACpC,OAAOA,EAAKrb,KAAO,GAAK3gB,EAAMikC,SAAWjI,EAAKpb,MAAQ,GAAK5gB,EAAMikC,SAAWjI,EAAKruB,IAAM,GAAK3N,EAAMkkC,SAAWlI,EAAKO,OAAS,GAAKv8B,EAAMkkC,WAEpIzxB,EAAQ4pB,EAAMr0B,QAAQ6kQ,GAC1BN,EAAkB95P,GAAS,EAAIA,EAAQ85P,IAG3CrM,SAAU,WACRqM,GAAmB,MAK3B,SAASG,GAA4BI,EAAsBC,EAAcC,EAAaT,GAEpF,GAAIS,EAAYprQ,OAAS,GAA8B,OAAzBkrQ,EAC5B,OAAOC,EAIT,GAA2B,IAAvBC,EAAYprQ,QAAgB2qQ,GAAmB,GAAKS,EAAY,GAAGrsP,KAAOqsP,EAAY,GAAGpsP,MAC3F,OAAOosP,EAAYT,IAAoBQ,EAGzC,OAAQD,GACN,IAAK,MACL,IAAK,SAED,IAAIG,EAAYD,EAAY,GACxBE,EAAWF,EAAYA,EAAYprQ,OAAS,GAC5CurQ,EAAiC,QAAzBL,EACRn/P,EAAMs/P,EAAUt/P,IAChB4uB,EAAS2wO,EAAS3wO,OAClB5b,EAAOwsP,EAAQF,EAAUtsP,KAAOusP,EAASvsP,KACzCC,EAAQusP,EAAQF,EAAUrsP,MAAQssP,EAAStsP,MAC3CkZ,EAAQlZ,EAAQD,EAChBmE,EAASyX,EAAS5uB,EACtB,MAAO,CACLA,IAAKA,EACL4uB,OAAQA,EACR5b,KAAMA,EACNC,MAAOA,EACPkZ,MAAOA,EACPhV,OAAQA,GAId,IAAK,OACL,IAAK,QAED,IAAIsoP,EAAUv1P,KAAKC,IAAIzC,MAAMwC,KAAMm1P,EAAY7jQ,KAAI,SAAUkzB,GAC3D,OAAOA,EAAM1b,SAEX0sP,EAAWx1P,KAAKyC,IAAIjF,MAAMwC,KAAMm1P,EAAY7jQ,KAAI,SAAUkzB,GAC5D,OAAOA,EAAMzb,UAEX0sP,EAAeN,EAAY5jQ,QAAO,SAAU4yB,GAC9C,MAAgC,SAAzB8wO,EAAkC9wO,EAAKrb,OAASysP,EAAUpxO,EAAKpb,QAAUysP,KAE9EviN,EAAOwiN,EAAa,GAAG3/P,IACvB4/P,EAAUD,EAAaA,EAAa1rQ,OAAS,GAAG26B,OAChDixO,EAAQJ,EACRK,EAASJ,EAETK,EAASD,EAASD,EAElBG,EAAUJ,EAAUziN,EAExB,MAAO,CACLn9C,IAAKm9C,EACLvuB,OAAQgxO,EACR5sP,KAAM6sP,EACN5sP,MAAO6sP,EACP3zO,MAAO4zO,EACP5oP,OAAQ6oP,GAId,QAEI,OAAOZ,GAKf,IAAIryP,GAAS,CACX7X,KAAM,SACN+4P,cAAc,EACd/6P,GAAI,SAAYggP,GACd,IAAI74J,EAAY64J,EAAS74J,UACrBe,EAAS83J,EAAS93J,OAEtB,SAAS6kL,IACP,OAAO/sB,EAASmiB,eAAiBniB,EAASmiB,eAAe3/O,MAAMsqO,SAAS3lK,UAAYA,EAGtF,SAAS6lL,EAAYrtQ,GACnB,OAAiC,IAA1BqgP,EAASj3O,MAAM8Q,QAAmBmmO,EAASj3O,MAAM8Q,SAAWla,EAGrE,IAAIstQ,EAAc,KACdC,EAAc,KAElB,SAAStzH,IACP,IAAIuzH,EAAiBH,EAAY,aAAeD,IAAentP,wBAA0B,KACrFwtP,EAAiBJ,EAAY,UAAY9kL,EAAOtoE,wBAA0B,MAE1EutP,GAAkBE,GAAkBJ,EAAaE,IAAmBC,GAAkBC,GAAkBH,EAAaE,KACnHptB,EAASmiB,gBACXniB,EAASmiB,eAAeh8P,SAI5B8mQ,EAAcE,EACdD,EAAcE,EAEVptB,EAASx9N,MAAM6/O,WACjBoE,sBAAsB7sH,GAI1B,MAAO,CACLp1I,QAAS,WACHw7O,EAASj3O,MAAM8Q,QACjB+/H,QAOV,SAASyzH,GAAkBC,EAAOC,GAChC,OAAID,IAASC,IACJD,EAAMxgQ,MAAQygQ,EAAMzgQ,KAAOwgQ,EAAMvtP,QAAUwtP,EAAMxtP,OAASutP,EAAM5xO,SAAW6xO,EAAM7xO,QAAU4xO,EAAMxtP,OAASytP,EAAMztP,MAM3HynP,GAAMxH,gBAAgB,CACpB9c,OAAQA,KAGK,iB,oCCn7Ef,W,yCCAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIzgP,KAAK0gP,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,SAASA,EAAG,MAAM,CAACE,YAAY,gCAAgC,CAACF,EAAG,IAAI,CAACI,YAAY,CAAC,aAAa,OAAO,YAAY,OAAO,cAAc,OAAO,gBAAgB,OAAO,SAAW,OAAO,SAAW,SAAS,IAAM,OAAO,WAAa,OAAO,cAAc,OAAO,UAAU,QAAQ,CAACJ,EAAG,gBAAgB,CAACI,YAAY,CAAC,gBAAgB,QAAQz3J,MAAM,CAAC,UAAY,MAAM,CAACq3J,EAAG,qBAAqB,CAACr3J,MAAM,CAAC,GAAK,CAAE2kD,KAAM,OAAQ,CAACyyG,EAAIO,GAAG,QAAQN,EAAG,qBAAqB,CAACA,EAAG,IAAI,CAACr3J,MAAM,CAAC,KAAO,gBAAgBjvE,GAAG,CAAC,MAAQqmO,EAAIsqB,SAAS,CAACtqB,EAAIO,GAAG,YAAY,GAAGN,EAAG,OAAO,CAACI,YAAY,CAAC,MAAQ,OAAO,eAAe,SAAS,CAACL,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAIuqB,cAAc,GAAGtqB,EAAG,UAAU,CAACr3J,MAAM,CAAC,eAAeo3J,EAAIwqB,aAAa7wP,GAAG,CAAC,YAAYqmO,EAAI16J,aAAa27J,MAAM,CAACxkP,MAAOujP,EAAIyqB,WAAYtnQ,SAAS,SAAUg+O,GAAMnB,EAAIyqB,WAAWtpB,GAAKC,WAAW,eAAe,CAACnB,EAAG,cAAc,CAACr3J,MAAM,CAAC,MAAQ,KAAK,KAAO,UAAU,CAACq3J,EAAG,SAAS,CAACr3J,MAAM,CAAC,QAAUo3J,EAAIqB,QAAQ,MAAQrB,EAAIsB,WAAW3nO,GAAG,CAAC,WAAaqmO,EAAIuB,eAAe,GAAGvB,EAAIa,GAAIb,EAAI0qB,UAAU,SAAS9mL,EAAKl1E,GAAO,OAAOuxO,EAAG,cAAc,CAACvnG,IAAIhqI,EAAMk6E,MAAM,CAAC,MAAQhF,EAAKj0D,MAAM,KAAOjhB,EAAQ,EAAI,KAAK,CAACuxO,EAAG,SAAS,CAACr3J,MAAM,CAAC,QAAUo3J,EAAIqB,QAAQ,MAAQrB,EAAIsB,WAAW3nO,GAAG,CAAC,WAAaqmO,EAAIuB,eAAe,OAAM,IAAI,GAAGtB,EAAG,YAAY,IAE/yCuB,EAAkB,G,gDCoHP,GACfyB,WAAA,CAAA0nB,aAAAC,aAAAznB,gBAIA7iP,OACA,OACAkqQ,YAAA,OACAC,WAAA,QACAhvQ,KAAA,GACA4lP,QAAA,GACAqpB,SAAA,GACAH,SAAA,GACAjpB,UAAA,EACAj6M,MAAA,GACA86M,KAAA,IAGAjlK,UACA//D,OAAAwiD,SAAA,KACA,KAAA4qM,SAAAptP,OAAAmlO,aAAAuoB,QAAA,oBACA,KAAAplQ,QAEAooG,QAAA,CACA0zI,WAAAY,GACA,KAAAA,OACA,KAAA2oB,WAAA,KAAAP,SAAA,IAEA9kQ,OACA,IAAAnF,EAAA,CACAsoB,GAAA,YAEA85N,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACAimP,EAAAgoB,SAAA5nB,EAAAxiP,UACAoiP,EAAAooB,WAAApoB,EAAA6nB,SAAA,OAGAxnB,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGAxxD,YAAA9lE,GACA,MAAAA,EAAAykD,QACAzkD,EAAAykD,MAAA,IAEA,KAAAxoE,KAAA+jB,EAAAykD,MACA,KAAA6mM,WAAA,KAAAP,SAAA,IAEAD,SACA,KAAAzmB,QAAApiP,KAAA,CAAA8rI,KAAA,QAEAu9H,WAAA1nP,EAAA2nP,GACA,IAAAzqQ,EAAA,CACAsoB,GAAA,OACAu5N,KAAA,KAAAA,KACA/+N,SACA3nB,KAAA,KAAAA,KACA4rC,MAAA,KAAAA,MACA0jO,SAEAroB,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACAimP,EAAArB,QAAAyB,EAAAxiP,UACAg3O,QAAA+K,IAAAK,EAAArB,SACAqB,EAAApB,UAAAwB,EAAAxiP,KAAA0jP,gBAGAjB,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,SCnMiX,I,4CCU7W31I,EAAY,eACd,EACA4+O,EACAyB,GACA,EACA,KACA,WACA,MAIa,aAAArgP,E,6CCrBf,W,6DCAA,W,oECAA,IAAI4+O,EAAS,WAAkB,IAAIC,EAAIzgP,KAAK0gP,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACr3J,MAAM,CAAC,IAAM,gCAAgCq3J,EAAG,MAAM,CAACE,YAAY,iBAAiB,CAACF,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,gBAAgB,CAACI,YAAY,CAAC,gBAAgB,QAAQz3J,MAAM,CAAC,UAAY,MAAM,CAACq3J,EAAG,qBAAqB,CAACr3J,MAAM,CAAC,GAAK,CAAE2kD,KAAM,OAAQ,CAACyyG,EAAIO,GAAG,QAAQN,EAAG,qBAAqB,CAACA,EAAG,IAAI,CAACr3J,MAAM,CAAC,KAAO,gBAAgBjvE,GAAG,CAAC,MAAQqmO,EAAIsqB,SAAS,CAACtqB,EAAIO,GAAG,YAAY,GAAGN,EAAG,IAAI,CAACI,YAAY,CAAC,aAAa,OAAO,YAAY,OAAO,cAAc,OAAO,gBAAgB,OAAO,MAAQ,UAAU,CAACL,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAItgO,KAAKiQ,OAAO,OAAOswN,EAAG,KAAK,CAACE,YAAY,MAAM,CAACF,EAAG,KAAK,CAACA,EAAG,MAAM,CAACr3J,MAAM,CAAC,IAAMo3J,EAAItgO,KAAKgiO,QAAQ,MAAQ,aAAazB,EAAG,KAAK,CAACA,EAAG,IAAI,CAACD,EAAIO,GAAG,MAAMP,EAAIQ,GAAGR,EAAItgO,KAAKmiO,OAAO7B,EAAItgO,KAAKmiO,OAAO,SAAS5B,EAAG,IAAI,CAACD,EAAIO,GAAG,OAAOP,EAAIQ,GAAGR,EAAItgO,KAAKsrP,UAAU/qB,EAAG,IAAI,CAACD,EAAIO,GAAG,OAAOP,EAAIQ,GAAGR,EAAItgO,KAAKurP,aAAahrB,EAAG,IAAI,CAACD,EAAIO,GAAG,OAAOP,EAAIQ,GAAGR,EAAItgO,KAAKwrP,eAAejrB,EAAG,IAAI,CAACD,EAAIO,GAAG,QAAQP,EAAIQ,GAAGR,EAAItgO,KAAKlN,SAASytO,EAAG,IAAI,CAACD,EAAIO,GAAG,OAAOP,EAAIQ,GAAGR,EAAItgO,KAAKyrP,cAAclrB,EAAG,YAAY,CAACr3J,MAAM,CAAC,KAAO,UAAU,KAAO,QAAQjvE,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAIorB,OAAOprB,EAAItgO,KAAK8iO,MAAOxC,EAAItgO,KAAKiQ,UAAU,CAACqwN,EAAIO,GAAG,UAAU,MAAM,GAAGN,EAAG,cAAcA,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,IAAI,CAACI,YAAY,CAAC,aAAa,OAAO,YAAY,OAAO,cAAc,OAAO,gBAAgB,SAAS,CAACL,EAAIO,GAAG,YAAYN,EAAG,cAAc,CAACE,YAAY,+BAA+Bv3J,MAAM,CAAC,OAASo3J,EAAItgO,KAAKkP,YAAY,IAAI,GAAGqxN,EAAG,YAAY,IAEp/CuB,EAAkB,G,yDCkGP,GACfyB,WAAA,CAAA0nB,aAAAxnB,eAAAC,iBACA9iP,OACA,OACAof,KAAA,KAIAw9D,UACA//D,OAAAmlO,aAAAuoB,QAAA,qBACA,KAAAnrP,KAAAozN,KAAA7Q,MAAA9kN,OAAAmlO,aAAAuoB,QAAA,sBAIA,KAAAhnB,QAAApiP,KAAA,CAAA8rI,KAAA,OAEA+pG,QAAA+K,OASAx0I,QAAA,CACA8yI,YACA,KAAAkD,QAAApiP,KAAA,CAAA8rI,KAAA,QAEA+8H,SACA,KAAAzmB,QAAAtjB,IAAA,IAEAkiB,WAEA,IAAAniP,EAAA,CACAsoB,GAAA,SAEA85N,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACA0gB,OAAAywF,SAAAjnB,KAAAm8J,EAAAxiP,cAGAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGAs0H,OAAA74P,EAAAzT,GAKAqe,OAAAywF,SAAAjnB,KAAA,gBAAAhpF,IAAA6kP,SC3JmX,I,wBCQ/WrhP,EAAY,eACd,EACA4+O,EACAyB,GACA,EACA,KACA,WACA,MAIa,aAAArgP,E,+FCnBf,W,oCCAA,W,yCCAA,IAAI4+O,EAAS,WAAkB,IAAIC,EAAIzgP,KAAK0gP,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,SAAS,CAACr3J,MAAM,CAAC,OAAS,KAAK,CAACq3J,EAAG,SAAS,CAACI,YAAY,CAAC,aAAa,yBAAyB,gBAAgB,MAAM,OAAS,QAAQ,SAAW,OAAO,SAAW,SAAS,IAAM,KAAKz3J,MAAM,CAAC,KAAOo3J,EAAIqrB,WAAW,CAACprB,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACF,EAAG,YAAY,CAACI,YAAY,CAAC,eAAe,OAAO,aAAa,MAAM,MAAQ,QAAQz3J,MAAM,CAAC,KAAO,UAAU,MAAQ,GAAG,KAAO,QAAQjvE,GAAG,CAAC,MAAQqmO,EAAIW,YAAY,CAACV,EAAG,IAAI,CAACE,YAAY,iBAAiBE,YAAY,CAAC,YAAY,YAAYJ,EAAG,MAAM,CAACE,YAAY,UAAUE,YAAY,CAAC,iBAAiB,SAAS,aAAa,OAAOz3J,MAAM,CAAC,IAAM0iL,EAAQ,QAA0B,MAAQ,UAAUrrB,EAAG,aAAa,CAACE,YAAY,OAAOv3J,MAAM,CAAC,OAAS,OAAO,QAAUo3J,EAAIurB,MAAQ,OAAS,OAAO,UAAY,QAAQ,CAACtrB,EAAG,OAAO,CAACI,YAAY,CAAC,eAAe,OAAO,cAAc,OAAO,YAAY,OAAO,MAAQ,QAAQ,aAAa,MAAM,MAAQ,UAAU,OAAS,WAAW1mO,GAAG,CAAC,MAAQqmO,EAAIwrB,UAAU,CAACvrB,EAAG,IAAI,CAACwrB,MAAMzrB,EAAIurB,MAAQ,iBAAmB,0BAA0B,GAAGtrB,EAAG,MAAM,CAACI,YAAY,CAAC,OAAS,OAAO,SAAW,SAAS,CAACJ,EAAG,UAAU,CAACr3J,MAAM,CAAC,MAAQo3J,EAAIn6O,MAAM,KAAOm6O,EAAI0rB,SAAS,KAAO,GAAG,UAAY,GAAG,KAAO,iBAAiB/xP,GAAG,CAAC,aAAaqmO,EAAI2rB,iBAAiBC,YAAY5rB,EAAI6rB,GAAG,CAAC,CAACnzH,IAAI,UAAU57I,GAAG,UAAS,KAAEkB,EAAI,KAAEsC,IAAQ,OAAO2/O,EAAG,OAAO,CAACE,YAAY,oBAAoB,CAACF,EAAG,OAAO,CAACI,YAAY,CAAC,SAAW,aAAa,CAACJ,EAAG,IAAI,CAACwrB,MAAMztQ,EAAKsC,KAAKw5E,KAAKumK,YAAY,CAAC,MAAQ,UAAU,SAAW,WAAW,KAAO,QAAQ,IAAM,SAASL,EAAIO,GAAGP,EAAIQ,GAAGxiP,EAAKimE,OAAO,gBAAgB,GAAGg8K,EAAG,IAAI,CAACI,YAAY,CAAC,MAAQ,OAAO,OAAS,OAAO,gBAAgB,IAAI,SAAW,WAAW,OAAS,OAAO,KAAO,SAAS,CAACL,EAAIO,GAAG,IAAIP,EAAIQ,GAAGR,EAAI8rB,YAAY,OAA2B,GAAnB9rB,EAAI1/O,KAAKzC,QAAemiP,EAAI5iM,EAAG6iM,EAAG,YAAY,CAACI,YAAY,CAAC,SAAW,WAAW,OAAS,OAAO,MAAQ,QAAQz3J,MAAM,CAAC,KAAO,UAAU,MAAQ,GAAG,KAAO,eAAe,KAAO,QAAQjvE,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAI+rB,MAAM,QAAQ,CAAC/rB,EAAIO,GAAG,QAAQP,EAAI3tO,KAAyB,GAAnB2tO,EAAI1/O,KAAKzC,QAAgBmiP,EAAI5iM,EAAuN4iM,EAAI3tO,KAAxN4tO,EAAG,YAAY,CAACI,YAAY,CAAC,SAAW,WAAW,OAAS,OAAO,MAAQ,QAAQz3J,MAAM,CAAC,KAAO,UAAU,MAAQ,GAAG,KAAO,iBAAiBjvE,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAI+rB,MAAM,QAAQ,CAAC/rB,EAAIO,GAAG,SAAkB,GAAGN,EAAG,SAAS,CAACI,YAAY,CAAC,eAAe,KAAKz3J,MAAM,CAAC,KAAOo3J,EAAIgsB,YAAY,CAAC/rB,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,OAAO,CAACA,EAAG,aAAa,CAACE,YAAY,OAAOv3J,MAAM,CAAC,OAAS,OAAO,QAAUo3J,EAAIzsK,KAAO,QAAU,QAAQ,UAAY,QAAQ,CAAC0sK,EAAG,OAAO,CAACI,YAAY,CAAC,eAAe,OAAO,cAAc,OAAO,YAAY,OAAO,MAAQ,OAAO,aAAa,OAAO,MAAQ,UAAU,OAAS,WAAW1mO,GAAG,CAAC,MAAQqmO,EAAIisB,UAAU,CAAChsB,EAAG,IAAI,CAACwrB,MAAMzrB,EAAIzsK,KAAO,iBAAmB,yBAAyB0sK,EAAG,OAAO,CAACE,YAAY,WAAW,CAACH,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIlhP,UAAU,GAAGmhP,EAAG,OAAO,CAACD,EAAIO,GAAGP,EAAIQ,GAAGR,EAAIksB,UAAUjsB,EAAG,KAAK,CAACE,YAAY,UAAU,CAACF,EAAG,KAAK,CAAC7wO,MAAsB,IAAf4wO,EAAImsB,QACz4F,oCACA,aAAcxyP,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAIosB,MAAMpsB,EAAImsB,YAAY,CAAiB,IAAfnsB,EAAImsB,QAAelsB,EAAG,MAAM,CAACE,YAAY,OAAOE,YAAY,CAAC,eAAe,MAAM,aAAa,MAAM,MAAQ,QAAQz3J,MAAM,CAAC,EAAI,gBAAgB,QAAU,gBAAgB,QAAU,MAAM,MAAQ,6BAA6B,OAAO,OAAO,MAAQ,KAAK,OAAS,OAAO,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,EAAI,8CAA8C,KAAO,UAAU,OAAO,UAAUq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,EAAI,0JAA0J,KAAO,UAAU,OAAO,YAAYq3J,EAAG,MAAM,CAACE,YAAY,OAAOE,YAAY,CAAC,eAAe,MAAM,aAAa,MAAM,MAAQ,QAAQz3J,MAAM,CAAC,EAAI,gBAAgB,QAAU,gBAAgB,QAAU,MAAM,MAAQ,6BAA6B,OAAO,OAAO,MAAQ,KAAK,OAAS,OAAO,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,EAAI,mHAAmH,KAAO,UAAU,OAAO,UAAUq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,EAAI,0KAA0K,KAAO,UAAU,OAAO,YAAYo3J,EAAIO,GAAG,WAAWN,EAAG,KAAK,CAAC7wO,MAAuB,IAAhB4wO,EAAIqsB,SACh0C,oCACA,aAAc1yP,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAIosB,MAAMpsB,EAAIqsB,aAAa,CAACpsB,EAAG,IAAI,CAACE,YAAY,oBAAoBH,EAAIO,GAAG,SAASN,EAAG,KAAK,CAAC7wO,MAAuB,IAAhB4wO,EAAIssB,SAC1J,oCACA,aAAc3yP,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAIosB,MAAMpsB,EAAIssB,aAAa,CAACrsB,EAAG,IAAI,CAACE,YAAY,uBAAuBH,EAAIO,GAAG,SAClH,IAAlBP,EAAIusB,YACe,IAAlBvsB,EAAIusB,YAA8C,GAA1BvsB,EAAIwsB,YAAY3uQ,OACzCoiP,EAAG,KAAK,CAAC7wO,MAAyB,IAAlB4wO,EAAIusB,WAChB,oCACA,aAAc5yP,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAIosB,MAAMpsB,EAAIusB,eAAe,CAACtsB,EAAG,IAAI,CAACE,YAAY,uBAAuBF,EAAG,OAAO,CAACE,YAAY,mBAAmB/wO,MAAyB,IAAlB4wO,EAAIusB,WAC9K,oCACA,cAAe,CAACvsB,EAAIO,GAAG,YAAYN,EAAG,KAAK,CAACA,EAAG,IAAI,CAACE,YAAY,qBAAqBE,YAAY,CAAC,MAAQ,OAAO,aAAa,SAASJ,EAAG,cAAc,CAACtmO,GAAG,CAAC,QAAUqmO,EAAIysB,gBAAgB,CAACxsB,EAAG,OAAO,CAACE,YAAY,mBAAmB/wO,MAAiC,GAA1B4wO,EAAIwsB,YAAY3uQ,OAC3P,oCACA,cAAe,CAACmiP,EAAIO,GAAG,OAAON,EAAG,IAAI,CAACE,YAAY,wCAAwCF,EAAG,mBAAmB,CAACr3J,MAAM,CAAC,KAAO,YAAYk2C,KAAK,YAAYkhH,EAAIa,GAAIb,EAAIwsB,aAAa,SAAS5oL,EAAKl1E,GAAO,OAAOuxO,EAAG,mBAAmB,CAACvnG,IAAIhqI,EAAMk6E,MAAM,CAAC,QAAUhF,EAAKnnF,QAAQ,CAACwjP,EAAG,IAAI,CAACD,EAAIO,GAAGP,EAAIQ,GAAG58J,EAAKj0D,eAAc,IAAI,IAAI,GAAGswN,EAAG,KAAK,CAAC7wO,MAAyB,IAAlB4wO,EAAI0sB,WAC7V,sDACA,+BAAgC/yP,GAAG,CAAC,MAAQ,SAASgoO,GAAQ,OAAO3B,EAAIosB,MAAMpsB,EAAI0sB,eAAe,CAAoB,IAAlB1sB,EAAI0sB,WAAkBzsB,EAAG,MAAM,CAACE,YAAY,OAAOE,YAAY,CAAC,eAAe,MAAM,aAAa,MAAM,MAAQ,QAAQz3J,MAAM,CAAC,EAAI,gBAAgB,QAAU,gBAAgB,QAAU,MAAM,MAAQ,6BAA6B,OAAO,OAAO,MAAQ,KAAK,OAAS,OAAO,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,EAAI,kpBAAkpB,OAAO,OAAO,KAAO,eAAeq3J,EAAG,MAAM,CAACE,YAAY,OAAOE,YAAY,CAAC,eAAe,MAAM,aAAa,MAAM,MAAQ,QAAQz3J,MAAM,CAAC,EAAI,gBAAgB,QAAU,gBAAgB,QAAU,MAAM,MAAQ,6BAA6B,OAAO,OAAO,MAAQ,KAAK,OAAS,OAAO,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,EAAI,kpBAAkpB,OAAO,OAAO,KAAO,eAAeo3J,EAAIO,GAAG,cAAcN,EAAG,KAAK,CAACA,EAAG,aAAa,CAACr3J,MAAM,CAAC,UAAY,YAAY,MAAQ,KAAK,MAAQ,MAAM,QAAU,UAAU,CAACq3J,EAAG,MAAM,CAACA,EAAG,OAAO,CAACI,YAAY,CAAC,cAAc,SAAS,CAACL,EAAIO,GAAG,aAAaN,EAAG,YAAY,CAACr3J,MAAM,CAAC,KAAO,UAAU,MAAQ,GAAG,KAAO,QAAQjvE,GAAG,CAAC,MAAQqmO,EAAIl5N,OAAO,CAACk5N,EAAIO,GAAG,WAAW,GAAGN,EAAG,cAAcA,EAAG,MAAM,CAACE,YAAY,YAAY,CAACF,EAAG,OAAO,CAACI,YAAY,CAAC,cAAc,OAAO,MAAQ,SAAS,CAACL,EAAIO,GAAG,aAAaN,EAAG,MAAM,CAAC/kP,IAAI,YAAYilP,YAAY,UAAUE,YAAY,CAAC,QAAU,oBAAoBJ,EAAG,YAAY,CAACE,YAAY,mBAAmBv3J,MAAM,CAAC,KAAO,YAAY,KAAO,UAAU,MAAQ,IAAIk2C,KAAK,aAAa,CAACkhH,EAAIO,GAAG,SAAS,IAAI,OAAON,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,WAAW,CAAEo3J,EAAI2sB,UAAW1sB,EAAG,SAAS,CAACI,YAAY,CAAC,MAAQ,OAAO,SAAW,OAAO,OAAS,qBAAqB,aAAa,cAAcz3J,MAAM,CAAC,GAAK,IAAI,IAAMo3J,EAAI4sB,aAAa3sB,EAAG,SAAS,CAACI,YAAY,CAAC,QAAU,OAAO,aAAa,QAAQz3J,MAAM,CAAC,MAAQo3J,EAAI4sB,UAAU,QAAU5sB,EAAIpmK,YAAY,GAAuB,GAAnBomK,EAAI1/O,KAAKzC,OAAaoiP,EAAG,MAAM,CAACI,YAAY,CAAC,aAAa,OAAO,aAAa,OAAO,QAAU,SAAS,CAACJ,EAAG,aAAa,CAACr3J,MAAM,CAAC,mBAAmB,SAAS,CAACq3J,EAAG,KAAK,CAACI,YAAY,CAAC,MAAQ,YAAY,CAACJ,EAAG,IAAI,CAACE,YAAY,iBAAiBH,EAAIO,GAAG,gBAAgBN,EAAG,MAAM,CAACI,YAAY,CAAC,QAAU,SAAS,CAACJ,EAAG,WAAW,CAACr3J,MAAM,CAAC,KAAO,WAAW,YAAc,QAAQ,UAAY,MAAM,kBAAkB,IAAIq4J,MAAM,CAACxkP,MAAOujP,EAAI75K,SAAUhjE,SAAS,SAAUg+O,GAAMnB,EAAI75K,SAASg7K,GAAKC,WAAW,cAAcnB,EAAG,YAAY,CAACI,YAAY,CAAC,aAAa,QAAQz3J,MAAM,CAAC,KAAO,UAAU,KAAO,QAAQjvE,GAAG,CAAC,MAAQqmO,EAAI6sB,YAAY,CAAC7sB,EAAIO,GAAG,WAAW,GAAGN,EAAG,KAAK,CAACE,YAAY,UAAUH,EAAIa,GAAIb,EAAI8sB,OAAO,SAASlpL,EAAKl1E,GAAO,OAAOuxO,EAAG,KAAK,CAACvnG,IAAIhqI,GAAO,CAACuxO,EAAG,KAAK,CAACD,EAAIO,GAAG,OAAOP,EAAIQ,GAAG58J,EAAK9kF,MAAM,KAAKmhP,EAAG,OAAO,CAACI,YAAY,CAAC,MAAQ,OAAO,cAAc,SAAS,CAACL,EAAIO,GAAGP,EAAIQ,GAAG58J,EAAKmpL,gBAAgB,SAAS9sB,EAAG,IAAI,CAACI,YAAY,CAAC,MAAQ,mBAAmB,YAAY,OAAO,aAAa,QAAQ,CAACL,EAAIO,GAAG,IAAIP,EAAIQ,GAAG58J,EAAK6D,SAAS,OAAOw4J,EAAG,eAAe,MAAK,IAAI,GAAGD,EAAI3tO,QAAQ,IAAI,IAEnjImvO,EAAkB,G,UCGf,SAASx6O,EAAO8jE,EAAMz6D,EAAOsmC,EAAQ4lC,GAC1C,MAAMjsE,EAAMw6D,EAAKjtE,OACjB,IAEI4hF,EAFAyyE,EAAa,EAajB,GAPE7hJ,EADEA,EAAQ,GACDA,EAAQC,EAAM,EAAIA,EAAMD,EAEzBA,EAAQC,EAAMA,EAAMD,EAE9BsmC,EAASA,EAAS,EAAIA,EAAS,EAG3B4lC,EAAM1+E,OAAS,IACjB4hF,EAAaz/E,MAAMC,KAAKs8E,GACxBkD,EAAWrmE,QAAQ/I,EAAOsmC,GAE1Bm0B,EAAK9jE,UAAUy4E,OACV,CAED9oC,GAAQm0B,EAAK9jE,OAAOqJ,EAAOsmC,GAG/B,MAAOu7G,EAAa31E,EAAM1+E,OACxB4hF,EAAalD,EAAMv6E,MAAMkwJ,EAAYA,EAAa,KAClDzyE,EAAWrmE,QAAQ/I,EAAO,GAE1By6D,EAAK9jE,UAAUy4E,GACfyyE,GAAc,IACd7hJ,GAAS,KC5Cf,MAAM,EAAiB,GAAGqB,eAUnB,SAAS0gJ,EAAkBC,GAEhC,MAAM23E,EAAM,GACZ,IAAIt7N,GAAS,EAEb,QAASA,EAAQ2jJ,EAAWx0J,OAC1By0J,EAAgB03E,EAAK33E,EAAW3jJ,IAGlC,OAAOs7N,EAYT,SAAS13E,EAAgB03E,EAAKL,GAE5B,IAAIn3E,EAEJ,IAAKA,KAAQm3E,EAAW,CACtB,MAAMl3E,EAAQ,EAAejzJ,KAAKwqO,EAAKx3E,GAAQw3E,EAAIx3E,QAAQs2F,EAErDlsO,EAAO61I,IAAUu3E,EAAIx3E,GAAQ,IAE7B31I,EAAQ8sN,EAAUn3E,GAExB,IAAIroJ,EAEJ,GAAI0S,EACF,IAAK1S,KAAQ0S,EAAO,CACb,EAAerd,KAAKod,EAAMzS,KAAOyS,EAAKzS,GAAQ,IACnD,MAAM1N,EAAQogB,EAAM1S,GACpBuoJ,EAEE91I,EAAKzS,GACLnK,MAAMk/E,QAAQziF,GAASA,EAAQA,EAAQ,CAACA,GAAS,MAe3D,SAASi2J,EAAWn5G,EAAUuxB,GAC5B,IAAIp8D,GAAS,EAEb,MAAMkK,EAAS,GAEf,QAASlK,EAAQo8D,EAAKjtE,QAEE,UAApBitE,EAAKp8D,GAAOrL,IAAkBk2C,EAAW3gC,GAAQnX,KAAKqpE,EAAKp8D,IAG/D1H,EAAOuyC,EAAU,EAAG,EAAG3gC,GC3ElB,MAAM+5I,EACX,uwCCYWC,EAAaC,EAAW,YAcxBG,EAAoBH,EAAW,cAuBlBA,EAAW,uBAa9B,SAASM,EAAahpJ,GAC3B,OAGW,OAATA,IAAkBA,EAAO,IAAe,MAATA,GAeT0oJ,EAAW,MAoBRA,EAAW,cAeRA,EAAW,kBAiBpC,SAASQ,EAAmBlpJ,GACjC,OAAgB,OAATA,GAAiBA,GAAQ,EAY3B,SAASipJ,EAA0BjpJ,GACxC,OAAgB,OAATA,IAAkBA,EAAO,GAAc,KAATA,GAkBhC,SAASmpJ,EAAcnpJ,GAC5B,OAAiB,IAAVA,IAAyB,IAAVA,GAAwB,KAATA,EAwBhC,MAAMqpJ,EAAqBX,EAAWF,GAsBhCY,EAAoBV,EAAW,MAQ5C,SAASA,EAAWzgF,GAClB,OAAO1S,EAUP,SAASA,EAAMv1D,GACb,OAAgB,OAATA,GAAiBioE,EAAM9lE,KAAKmV,OAAO8pC,aAAaphD,KChO3D,MAAM6iQ,EAAY,CAChBj9L,SAAUk9L,EACVx0G,SAAS,GAELy0G,EAAS,CACbn9L,SAAUo9L,EACV10G,SAAS,GAELlrB,EAAO,CACXx9D,SAAUq9L,EACV30G,SAAS,GAEL,EAAQ,CACZ1oF,SAAUs9L,EACV50G,SAAS,GAEL60G,EAAsB,CAC1Bv9L,SAAUw9L,EACV90G,SAAS,GAEL+0G,EAAc,CAClBz9L,SAAU09L,EACVr5G,SAAUs5G,GAENC,EAAmB,CACvB59L,SAAU69L,EACVx5G,SAAUy5G,GAENC,EAAgB,CACpB/9L,SAAUg+L,EACV35G,SAAU45G,GAIN,EAAO,GAUAC,EAAqB,CAChCx0P,KAAI,GAIN,IAAI,EAAO,GAGX,MAAO,EAAO,IACZ,EAAK,GAAQq0P,EACb,IACa,KAAT,EAAa,EAAO,GACN,KAAT,IAAa,EAAO,IA4B/B,SAASC,EAAsBr6G,EAASlX,EAAIga,GAC1C,MAAMohF,EAAOr4O,KAEb,IAAI4uL,EAEA7tL,EACJ,OAAO+P,EAYP,SAASA,EAAMlG,GACb,OACG+jQ,EAAS/jQ,IACT6jQ,EAAcxuQ,KAAKo4O,EAAMA,EAAKxjF,YAC/B+5G,EAAmBv2B,EAAKhoM,SAI1B8jH,EAAQn6F,MAAM,mBACdm6F,EAAQn6F,MAAM,wBACP60M,EAAMjkQ,IAJJqsJ,EAAIrsJ,GAiBf,SAASikQ,EAAMjkQ,GACb,OAAI+jQ,EAAS/jQ,IACXupJ,EAAQnwI,QAAQpZ,GACTikQ,GAEI,KAATjkQ,GACFupJ,EAAQnwI,QAAQpZ,GACTkkQ,GAEF73G,EAAIrsJ,GAiBb,SAASkkQ,EAAYlkQ,GAEnB,OAAa,KAATA,EACKupJ,EAAQh0F,MACb4tM,EACAgB,EACAC,EAHK76G,CAILvpJ,GAIS,KAATA,GAAwB,KAATA,GAAe6oJ,EAAkB7oJ,IAClD7J,GAAO,EACPozJ,EAAQnwI,QAAQpZ,GACTkkQ,GASFC,EAAiBnkQ,GAa1B,SAASokQ,EAAepkQ,GAGtB,OAFAupJ,EAAQnwI,QAAQpZ,GAChBgkL,GAAM,EACCkgF,EAaT,SAASC,EAAiBnkQ,GAGxB,OAAI7J,GAAQ6tL,GAAOv7B,EAAWglF,EAAKxjF,WACjCV,EAAQC,KAAK,wBACbD,EAAQC,KAAK,mBACNnX,EAAGryI,IAELqsJ,EAAIrsJ,IAef,SAASsjQ,EAAoB/5G,EAASlX,EAAIga,GACxC,MAAMohF,EAAOr4O,KACb,OAAOivQ,EAYP,SAASA,EAASrkQ,GAChB,OACY,KAATA,GAAwB,MAATA,IACfujQ,EAAYluQ,KAAKo4O,EAAMA,EAAKxjF,WAC7B+5G,EAAmBv2B,EAAKhoM,QAEjB4mH,EAAIrsJ,IAEbupJ,EAAQn6F,MAAM,mBACdm6F,EAAQn6F,MAAM,sBAGPm6F,EAAQh0F,MACbstM,EACAt5G,EAAQK,QAAQm5G,EAAQx5G,EAAQK,QAAQxmB,EAAMkhI,GAAWj4G,GACzDA,EAHK9C,CAILvpJ,IAaJ,SAASskQ,EAAStkQ,GAGhB,OAFAupJ,EAAQC,KAAK,sBACbD,EAAQC,KAAK,mBACNnX,EAAGryI,IAed,SAASyjQ,EAAyBl6G,EAASlX,EAAIga,GAC7C,MAAMohF,EAAOr4O,KACb,IAAIkpO,EAAS,GACTjqF,GAAO,EACX,OAAOkwH,EAYP,SAASA,EAAcvkQ,GACrB,OACY,KAATA,GAAwB,MAATA,IAChB0jQ,EAAiBruQ,KAAKo4O,EAAMA,EAAKxjF,WAChC+5G,EAAmBv2B,EAAKhoM,QAQpB4mH,EAAIrsJ,IANTupJ,EAAQn6F,MAAM,mBACdm6F,EAAQn6F,MAAM,uBACdkvK,GAAUhnN,OAAOktP,cAAcxkQ,GAC/BupJ,EAAQnwI,QAAQpZ,GACTykQ,GAeX,SAASA,EAAqBzkQ,GAE5B,GAAIyoJ,EAAWzoJ,IAASs+N,EAAO5qO,OAAS,EAItC,OAFA4qO,GAAUhnN,OAAOktP,cAAcxkQ,GAC/BupJ,EAAQnwI,QAAQpZ,GACTykQ,EAET,GAAa,KAATzkQ,EAAa,CACf,MAAMghO,EAAW1C,EAAOxzN,cACxB,GAAiB,SAAbk2N,GAAoC,UAAbA,EAEzB,OADAz3E,EAAQnwI,QAAQpZ,GACT0kQ,EAGX,OAAOr4G,EAAIrsJ,GAab,SAAS0kQ,EAAsB1kQ,GAC7B,OAAa,KAATA,GACFupJ,EAAQnwI,QAAQpZ,GACZq0I,EACKswH,GAETtwH,GAAO,EACAqwH,IAEFr4G,EAAIrsJ,GAab,SAAS2kQ,EAAc3kQ,GAGrB,OAAgB,OAATA,GACLgpJ,EAAahpJ,IACbipJ,EAA0BjpJ,IAC1BopJ,EAAkBppJ,IAClBqpJ,EAAmBrpJ,GACjBqsJ,EAAIrsJ,GACJupJ,EAAQK,QAAQm5G,EAAQx5G,EAAQK,QAAQxmB,EAAMwhI,GAAgBv4G,EAA9D9C,CAAmEvpJ,GAazE,SAAS4kQ,EAAc5kQ,GAGrB,OAFAupJ,EAAQC,KAAK,uBACbD,EAAQC,KAAK,mBACNnX,EAAGryI,IAed,SAAS8iQ,EAAkBv5G,EAASlX,EAAIga,GACtC,IAAIj2I,EAAO,EACX,OAAOyuP,EAYP,SAASA,EAAgB7kQ,GACvB,OAAc,KAATA,GAAwB,MAATA,IAAiBoW,EAAO,GAC1CA,IACAmzI,EAAQnwI,QAAQpZ,GACT6kQ,GAEI,KAAT7kQ,GAAwB,IAAToW,GACjBmzI,EAAQnwI,QAAQpZ,GACT8kQ,GAEFz4G,EAAIrsJ,GAab,SAAS8kQ,EAAe9kQ,GAEtB,OAAgB,OAATA,EAAgBqsJ,EAAIrsJ,GAAQqyI,EAAGryI,IAe1C,SAASgjQ,EAAez5G,EAASlX,EAAIga,GAEnC,IAAI04G,EAEAC,EAEA3wH,EACJ,OAAO4wH,EAYP,SAASA,EAAajlQ,GAIpB,OAAa,KAATA,GAAwB,KAATA,EACVupJ,EAAQh0F,MAAM,EAAO2vM,EAAaC,EAAlC57G,CAAuDvpJ,GAUrD,OAATA,GACAipJ,EAA0BjpJ,IAC1BopJ,EAAkBppJ,IACR,KAATA,GAAeqpJ,EAAmBrpJ,GAE5BklQ,EAAYllQ,IAErBq0I,GAAO,EACPkV,EAAQnwI,QAAQpZ,GACTilQ,GAaT,SAASE,EAAoBnlQ,GAY3B,OAVa,KAATA,EACF+kQ,GAA0B,GAK1BC,EAA8BD,EAC9BA,OAA0BpmB,GAE5Bp1F,EAAQnwI,QAAQpZ,GACTilQ,EAYT,SAASC,EAAYllQ,GAGnB,OAAIglQ,GAA+BD,IAA4B1wH,EACtDgY,EAAIrsJ,GAENqyI,EAAGryI,IAed,SAASijQ,EAAa15G,EAASlX,GAC7B,IAAIk2E,EAAW,EACX68C,EAAY,EAChB,OAAOC,EAYP,SAASA,EAAWrlQ,GAClB,OAAa,KAATA,GACFuoN,IACAh/D,EAAQnwI,QAAQpZ,GACTqlQ,GAMI,KAATrlQ,GAAeolQ,EAAY78C,EACtB+8C,EAAkBtlQ,GAOhB,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,MAATA,EAEOupJ,EAAQh0F,MAAM,EAAO88E,EAAIizH,EAAzB/7G,CAA4CvpJ,GAG1C,OAATA,GACAipJ,EAA0BjpJ,IAC1BopJ,EAAkBppJ,GAEXqyI,EAAGryI,IAEZupJ,EAAQnwI,QAAQpZ,GACTqlQ,GAaT,SAASC,EAAkBtlQ,GAMzB,OAJa,KAATA,GACFolQ,IAEF77G,EAAQnwI,QAAQpZ,GACTqlQ,GAmBX,SAASnC,EAAc35G,EAASlX,EAAIga,GAClC,OAAOk5G,EAYP,SAASA,EAAMvlQ,GAEb,OACW,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,MAATA,GAEAupJ,EAAQnwI,QAAQpZ,GACTulQ,GAMI,KAATvlQ,GACFupJ,EAAQnwI,QAAQpZ,GACTwlQ,GAMI,KAATxlQ,GACFupJ,EAAQnwI,QAAQpZ,GACTylQ,GAIE,KAATzlQ,GAES,OAATA,GACAipJ,EAA0BjpJ,IAC1BopJ,EAAkBppJ,GAEXqyI,EAAGryI,GAELqsJ,EAAIrsJ,GAgBb,SAASylQ,EAAkBzlQ,GAGzB,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACAipJ,EAA0BjpJ,IAC1BopJ,EAAkBppJ,GAEXqyI,EAAGryI,GAELulQ,EAAMvlQ,GAaf,SAASwlQ,EAAkBxlQ,GAEzB,OAAOyoJ,EAAWzoJ,GAAQ0lQ,EAAmB1lQ,GAAQqsJ,EAAIrsJ,GAa3D,SAAS0lQ,EAAmB1lQ,GAE1B,OAAa,KAATA,GACFupJ,EAAQnwI,QAAQpZ,GACTulQ,GAEL98G,EAAWzoJ,IACbupJ,EAAQnwI,QAAQpZ,GACT0lQ,GAIFr5G,EAAIrsJ,IAmBf,SAASojQ,EAA4B75G,EAASlX,EAAIga,GAChD,OAAOnmJ,EAYP,SAASA,EAAMlG,GAGb,OADAupJ,EAAQnwI,QAAQpZ,GACTsE,EAaT,SAASA,EAAMtE,GAEb,OAAO6oJ,EAAkB7oJ,GAAQqsJ,EAAIrsJ,GAAQqyI,EAAGryI,IAUpD,SAASujQ,EAAYvjQ,GACnB,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,MAATA,GACAipJ,EAA0BjpJ,GAU9B,SAAS0jQ,EAAiB1jQ,GACxB,OAAQyoJ,EAAWzoJ,GAOrB,SAAS6jQ,EAAc7jQ,GAKrB,QAAkB,KAATA,GAAe+jQ,EAAS/jQ,IAOnC,SAAS+jQ,EAAS/jQ,GAChB,OACW,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACA6oJ,EAAkB7oJ,GAQtB,SAASgkQ,EAAmBv+N,GAC1B,IAAIlhC,EAAQkhC,EAAO/xC,OACfkf,GAAS,EACb,MAAOrO,IAAS,CACd,MAAMmY,EAAQ+oB,EAAOlhC,GAAO,GAC5B,IACkB,cAAfmY,EAAMprB,MAAuC,eAAforB,EAAMprB,QACpCorB,EAAMk1M,UACP,CACAh/M,GAAS,EACT,MAKF,GAAI8J,EAAMipP,8BAA+B,CACvC/yP,GAAS,EACT,OAQJ,OALI6yB,EAAO/xC,OAAS,IAAMkf,IAGxB6yB,EAAOA,EAAO/xC,OAAS,GAAG,GAAGiyQ,+BAAgC,GAExD/yP,EA52BT,EAAK,IAAM+wP,EACX,EAAK,IAAMA,EACX,EAAK,IAAMA,EACX,EAAK,IAAMA,EACX,EAAK,IAAM,CAACA,EAAeH,GAC3B,EAAK,KAAO,CAACG,EAAeH,GAC5B,EAAK,IAAM,CAACG,EAAeN,GAC3B,EAAK,KAAO,CAACM,EAAeN,GC1CrB,SAAS/5G,EAAaC,EAASlX,EAAI/gJ,EAAM8a,GAC9C,MAAM8wB,EAAQ9wB,EAAMA,EAAM,EAAIxI,OAAOmuI,kBACrC,IAAI37H,EAAO,EACX,OAAOlQ,EAGP,SAASA,EAAMlG,GACb,OAAImpJ,EAAcnpJ,IAChBupJ,EAAQn6F,MAAM99D,GACPw/G,EAAO9wG,IAETqyI,EAAGryI,GAIZ,SAAS8wG,EAAO9wG,GACd,OAAImpJ,EAAcnpJ,IAASoW,IAAS8mB,GAClCqsH,EAAQnwI,QAAQpZ,GACT8wG,IAETy4C,EAAQC,KAAKl4J,GACN+gJ,EAAGryI,KCrDP,MAAMyc,EAAY,CACvBmpD,SAAUyoF,EACVC,SAAS,GAOX,SAASD,EAAkB9E,EAASlX,EAAIga,GACtC,OAAOnmJ,EAgBP,SAASA,EAAMlG,GACb,OAAOmpJ,EAAcnpJ,GACjBspJ,EAAaC,EAASjlJ,EAAO,aAA7BglJ,CAA2CtpJ,GAC3CsE,EAAMtE,GAiBZ,SAASsE,EAAMtE,GACb,OAAgB,OAATA,GAAiBkpJ,EAAmBlpJ,GAAQqyI,EAAGryI,GAAQqsJ,EAAIrsJ,ICtC/D,SAAS0sN,EAAoBp6N,GAClC,OACEA,EAEG4b,QAAQ,cAAe,KAEvBA,QAAQ,SAAU,IAOlBpD,cACAD,cClBP,MAAMkmD,EAAS,CACb6U,SAAUqtJ,GACV3kE,SAAS,GAgBJ,SAASs3G,IAEd,MAAO,CACLx0Q,SAAU,CACR,CAAC,IAAK,CACJw0E,SAAUigM,EACVl7G,aAAc,CACZ/kF,SAAUkgM,IAEZt8G,KAAMu8G,KAGVz2P,KAAM,CACJ,CAAC,IAAK,CACJs2D,SAAUogM,GAEZ,CAAC,IAAK,CACJ9sQ,IAAK,QACL0sE,SAAUqgM,EACVr4C,UAAWs4C,KAWnB,SAASD,EAAiC18G,EAASlX,EAAIga,GACrD,MAAMohF,EAAOr4O,KACb,IAAImP,EAAQkpO,EAAKhoM,OAAO/xC,OAGxB,MAAM+yH,EAAUgnH,EAAK9oI,OAAOwhK,eAAiB14B,EAAK9oI,OAAOwhK,aAAe,IAExE,IAAIt0C,EAGJ,MAAOttN,IAAS,CACd,MAAMmY,EAAQ+wN,EAAKhoM,OAAOlhC,GAAO,GACjC,GAAmB,eAAfmY,EAAMprB,KAAuB,CAC/BugO,EAAan1M,EACb,MAIF,GACiB,oBAAfA,EAAMprB,MACS,cAAforB,EAAMprB,MACS,UAAforB,EAAMprB,MACS,UAAforB,EAAMprB,MACS,SAAforB,EAAMprB,KAEN,MAGJ,OAAO4U,EAKP,SAASA,EAAMlG,GACb,IAAK6xN,IAAeA,EAAWD,UAC7B,OAAOvlE,EAAIrsJ,GAEb,MAAMoI,EAAKskN,EACT+gB,EAAKpgF,eAAe,CAClBnnJ,MAAO2rN,EAAW1rN,IAClBA,IAAKsnO,EAAK7hF,SAGd,OAA0B,KAAtBxjJ,EAAGg+P,YAAY,IAAc3/I,EAAQ/xC,SAAStsE,EAAGvQ,MAAM,KAG3D0xJ,EAAQn6F,MAAM,8BACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,8BACNnX,EAAGryI,IALDqsJ,EAAIrsJ,IAWjB,SAASkmQ,EAAkCzgO,EAAQ1pC,GACjD,IAEI81N,EAFAttN,EAAQkhC,EAAO/xC,OAKnB,MAAO6Q,IACL,GAC4B,eAA1BkhC,EAAOlhC,GAAO,GAAGjT,MACI,UAArBm0C,EAAOlhC,GAAO,GACd,CACAstN,EAAapsL,EAAOlhC,GAAO,GAC3B,MAIJkhC,EAAOlhC,EAAQ,GAAG,GAAGjT,KAAO,OAC5Bm0C,EAAOlhC,EAAQ,GAAG,GAAGjT,KAAO,6BAI5B,MAAM+D,EAAO,CACX/D,KAAM,kBACN4U,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOlhC,EAAQ,GAAG,GAAG2B,OAC9CC,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOA,EAAO/xC,OAAS,GAAG,GAAGyS,MAIhDgY,EAAS,CACb7sB,KAAM,wBACN4U,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOlhC,EAAQ,GAAG,GAAG4B,KAC9CA,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOlhC,EAAQ,GAAG,GAAG4B,MAG9CgY,EAAOhY,IAAI8S,SACXkF,EAAOhY,IAAI6Z,SACX7B,EAAOhY,IAAIwnJ,eAEX,MAAM93I,EAAS,CACbvkB,KAAM,wBACN4U,MAAOjU,OAAO0hD,OAAO,GAAIx1B,EAAOhY,KAChCA,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOA,EAAO/xC,OAAS,GAAG,GAAGwS,QAGhDmQ,EAAQ,CACZ/kB,KAAM,cACN04J,YAAa,SACb9jJ,MAAOjU,OAAO0hD,OAAO,GAAI99B,EAAO3P,OAChCC,IAAKlU,OAAO0hD,OAAO,GAAI99B,EAAO1P,MAI1B83E,EAAc,CAElBx4C,EAAOlhC,EAAQ,GACfkhC,EAAOlhC,EAAQ,GACf,CAAC,QAASlP,EAAM0G,GAEhB0pC,EAAOlhC,EAAQ,GACfkhC,EAAOlhC,EAAQ,GAEf,CAAC,QAAS4Z,EAAQpiB,GAClB,CAAC,OAAQoiB,EAAQpiB,GAEjB,CAAC,QAAS8Z,EAAQ9Z,GAClB,CAAC,QAASsa,EAAOta,GACjB,CAAC,OAAQsa,EAAOta,GAChB,CAAC,OAAQ8Z,EAAQ9Z,GAEjB0pC,EAAOA,EAAO/xC,OAAS,GACvB+xC,EAAOA,EAAO/xC,OAAS,GACvB,CAAC,OAAQ2B,EAAM0G,IAGjB,OADA0pC,EAAO5oC,OAAO0H,EAAOkhC,EAAO/xC,OAAS6Q,EAAQ,KAAM05E,GAC5Cx4C,EAOT,SAASugO,EAAwBz8G,EAASlX,EAAIga,GAC5C,MAAMohF,EAAOr4O,KAGPqxH,EAAUgnH,EAAK9oI,OAAOwhK,eAAiB14B,EAAK9oI,OAAOwhK,aAAe,IACxE,IAEIhwQ,EAFAigB,EAAO,EASX,OAAOlQ,EAYP,SAASA,EAAMlG,GAKb,OAJAupJ,EAAQn6F,MAAM,mBACdm6F,EAAQn6F,MAAM,8BACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,8BACN68G,EAaT,SAASA,EAAUrmQ,GACjB,OAAa,KAATA,EAAoBqsJ,EAAIrsJ,IAC5BupJ,EAAQn6F,MAAM,yBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,yBACbD,EAAQn6F,MAAM,yBACdm6F,EAAQn6F,MAAM,eAAe46F,YAAc,SACpCs8G,GAaT,SAASA,EAAStmQ,GAChB,GAEEoW,EAAO,KAEG,KAATpW,IAAgB7J,GAGR,OAAT6J,GACS,KAATA,GACAipJ,EAA0BjpJ,GAE1B,OAAOqsJ,EAAIrsJ,GAEb,GAAa,KAATA,EAAa,CACfupJ,EAAQC,KAAK,eACb,MAAM9sI,EAAQ6sI,EAAQC,KAAK,yBAC3B,OAAK/iC,EAAQ/xC,SAASg4I,EAAoB+gB,EAAKpgF,eAAe3wI,MAG9D6sI,EAAQn6F,MAAM,8BACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,8BACbD,EAAQC,KAAK,mBACNnX,GANEga,EAAIrsJ,GAaf,OALKipJ,EAA0BjpJ,KAC7B7J,GAAO,GAETigB,IACAmzI,EAAQnwI,QAAQpZ,GACA,KAATA,EAAcumQ,EAAaD,EAapC,SAASC,EAAWvmQ,GAClB,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAChCupJ,EAAQnwI,QAAQpZ,GAChBoW,IACOkwP,GAEFA,EAAStmQ,IAQpB,SAAS6lQ,EAAwBt8G,EAASlX,EAAIga,GAC5C,MAAMohF,EAAOr4O,KAGPqxH,EAAUgnH,EAAK9oI,OAAOwhK,eAAiB14B,EAAK9oI,OAAOwhK,aAAe,IAExE,IAAIp5C,EAGA52N,EAFAigB,EAAO,EAGX,OAAOlQ,EAYP,SAASA,EAAMlG,GAMb,OALAupJ,EAAQn6F,MAAM,yBAAyBu/F,YAAa,EACpDpF,EAAQn6F,MAAM,8BACdm6F,EAAQn6F,MAAM,oCACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,oCACNg9G,EAaT,SAASA,EAAcxmQ,GACrB,OAAa,KAATA,GACFupJ,EAAQn6F,MAAM,+BACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,+BACbD,EAAQn6F,MAAM,oCACdm6F,EAAQn6F,MAAM,eAAe46F,YAAc,SACpCy8G,GAEFp6G,EAAIrsJ,GAgBb,SAASymQ,EAAYzmQ,GACnB,GAEEoW,EAAO,KAEG,KAATpW,IAAgB7J,GAGR,OAAT6J,GACS,KAATA,GACAipJ,EAA0BjpJ,GAE1B,OAAOqsJ,EAAIrsJ,GAEb,GAAa,KAATA,EAAa,CACfupJ,EAAQC,KAAK,eACb,MAAM9sI,EAAQ6sI,EAAQC,KAAK,oCAM3B,OALAujE,EAAaL,EAAoB+gB,EAAKpgF,eAAe3wI,IACrD6sI,EAAQn6F,MAAM,oCACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,oCACbD,EAAQC,KAAK,8BACNwjE,EAOT,OALK/jE,EAA0BjpJ,KAC7B7J,GAAO,GAETigB,IACAmzI,EAAQnwI,QAAQpZ,GACA,KAATA,EAAcosN,EAAcq6C,EAgBrC,SAASr6C,EAAYpsN,GACnB,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAChCupJ,EAAQnwI,QAAQpZ,GAChBoW,IACOqwP,GAEFA,EAAYzmQ,GAarB,SAASgtN,EAAWhtN,GAClB,OAAa,KAATA,GACFupJ,EAAQn6F,MAAM,oBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,oBACR/iC,EAAQ/xC,SAASq4I,IACpBtmG,EAAQnvH,KAAKy1N,GAMRzjE,EACLC,EACAm9G,EACA,oCAGGr6G,EAAIrsJ,GAab,SAAS0mQ,EAAgB1mQ,GAEvB,OAAOqyI,EAAGryI,IAQd,SAAS8lQ,GAA+Bv8G,EAASlX,EAAIga,GAUnD,OAAO9C,EAAQh0F,MAAM94C,EAAW41H,EAAIkX,EAAQK,QAAQ74F,EAAQshF,EAAIga,IAIlE,SAAS05G,GAAyBx8G,GAChCA,EAAQC,KAAK,yBAOf,SAASypE,GAAe1pE,EAASlX,EAAIga,GACnC,MAAMohF,EAAOr4O,KACb,OAAOk0J,EACLC,EACAmgE,EACA,8BACA,GAMF,SAASA,EAAY1pN,GACnB,MAAMkrI,EAAOuiG,EAAKhoM,OAAOgoM,EAAKhoM,OAAO/xC,OAAS,GAC9C,OAAOw3I,GACY,gCAAjBA,EAAK,GAAG55I,MACyC,IAAjD45I,EAAK,GAAGmiB,eAAeniB,EAAK,IAAI,GAAMx3I,OACpC2+I,EAAGryI,GACHqsJ,EAAIrsJ,IC7fL,SAASwsJ,GAAkBxsJ,GAChC,OACW,OAATA,GACAipJ,EAA0BjpJ,IAC1BopJ,EAAkBppJ,GAEX,EAELqpJ,EAAmBrpJ,GACd,OADT,ECbK,SAASysJ,GAAWlE,EAAY9iH,EAAQ1pC,GAE7C,MAAM4wJ,EAAS,GACf,IAAIpoJ,GAAS,EAEb,QAASA,EAAQgkJ,EAAW70J,OAAQ,CAClC,MAAMhC,EAAU62J,EAAWhkJ,GAAOkoJ,WAE9B/6J,IAAYi7J,EAAOj4E,SAAShjF,KAC9B+zC,EAAS/zC,EAAQ+zC,EAAQ1pC,GACzB4wJ,EAAOr1J,KAAK5F,IAIhB,OAAO+zC,ECFF,SAASkhO,GAAiBn1Q,GAC/B,MAAMo1Q,EAAWp1Q,GAAW,GAC5B,IAAI4zJ,EAASwhH,EAASC,YACtB,MAAMxxK,EAAY,CAChBzvB,SAAUkhM,EACVr6G,WAAYs6G,GAKd,OAHe,OAAX3hH,QAA8Bu5F,IAAXv5F,IACrBA,GAAS,GAEJ,CACL91I,KAAM,CACJ,CAAC,KAAM+lF,GAETk4D,WAAY,CACVhB,KAAM,CAACl3D,IAETo4D,iBAAkB,CAChBlB,KAAM,CAAC,OASX,SAASw6G,EAAwBthO,EAAQ1pC,GACvC,IAAIwI,GAAS,EAGb,QAASA,EAAQkhC,EAAO/xC,OAEtB,GACuB,UAArB+xC,EAAOlhC,GAAO,IACY,mCAA1BkhC,EAAOlhC,GAAO,GAAGjT,MACjBm0C,EAAOlhC,GAAO,GAAG4oJ,OACjB,CACA,IAAIxxE,EAAOp3E,EAGX,MAAOo3E,IAEL,GACsB,SAApBl2C,EAAOk2C,GAAM,IACY,mCAAzBl2C,EAAOk2C,GAAM,GAAGrqF,MAChBm0C,EAAOk2C,GAAM,GAAGyxE,OAEhB3nH,EAAOlhC,GAAO,GAAG4B,IAAI6Z,OAASylB,EAAOlhC,GAAO,GAAG2B,MAAM8Z,SACnDylB,EAAOk2C,GAAM,GAAGx1E,IAAI6Z,OAASylB,EAAOk2C,GAAM,GAAGz1E,MAAM8Z,OACrD,CACAylB,EAAOlhC,GAAO,GAAGjT,KAAO,wBACxBm0C,EAAOk2C,GAAM,GAAGrqF,KAAO,wBAGvB,MAAMqxE,EAAgB,CACpBrxE,KAAM,gBACN4U,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOk2C,GAAM,GAAGz1E,OACzCC,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOlhC,GAAO,GAAG4B,MAIpCmJ,EAAO,CACXhe,KAAM,oBACN4U,MAAOjU,OAAO0hD,OAAO,GAAIlO,EAAOk2C,GAAM,GAAGx1E,KACzCA,IAAKlU,OAAO0hD,OAAO,GAAIlO,EAAOlhC,GAAO,GAAG2B,QAKpCgnJ,EAAa,CACjB,CAAC,QAASvqF,EAAe5mE,GACzB,CAAC,QAAS0pC,EAAOk2C,GAAM,GAAI5/E,GAC3B,CAAC,OAAQ0pC,EAAOk2C,GAAM,GAAI5/E,GAC1B,CAAC,QAASuT,EAAMvT,IAEZwxJ,EAAaxxJ,EAAQ4oG,OAAO4jD,WAAWgF,WAAWhB,KACpDgB,GAEF1wJ,EACEqwJ,EACAA,EAAWx5J,OACX,EACA+4J,GAAWc,EAAY9nH,EAAO5tC,MAAM8jF,EAAO,EAAGp3E,GAAQxI,IAK1Dc,EAAOqwJ,EAAYA,EAAWx5J,OAAQ,EAAG,CACvC,CAAC,OAAQ4b,EAAMvT,GACf,CAAC,QAAS0pC,EAAOlhC,GAAO,GAAIxI,GAC5B,CAAC,OAAQ0pC,EAAOlhC,GAAO,GAAIxI,GAC3B,CAAC,OAAQ4mE,EAAe5mE,KAE1Bc,EAAO4oC,EAAQk2C,EAAO,EAAGp3E,EAAQo3E,EAAO,EAAGuxE,GAC3C3oJ,EAAQo3E,EAAOuxE,EAAWx5J,OAAS,EACnC,OAKR6Q,GAAS,EACT,QAASA,EAAQkhC,EAAO/xC,OACQ,mCAA1B+xC,EAAOlhC,GAAO,GAAGjT,OACnBm0C,EAAOlhC,GAAO,GAAGjT,KAAO,QAG5B,OAAOm0C,EAOT,SAASqhO,EAAsBv9G,EAASlX,EAAIga,GAC1C,MAAMpC,EAAW70J,KAAK60J,SAChBxkH,EAASrwC,KAAKqwC,OACpB,IAAIrvB,EAAO,EACX,OAAOlQ,EAGP,SAASA,EAAMlG,GACb,OACe,MAAbiqJ,GACsC,oBAAtCxkH,EAAOA,EAAO/xC,OAAS,GAAG,GAAGpC,KAEtB+6J,EAAIrsJ,IAEbupJ,EAAQn6F,MAAM,kCACPi7J,EAAKrqN,IAId,SAASqqN,EAAKrqN,GACZ,MAAMyO,EAAS+9I,GAAkBvC,GACjC,GAAa,MAATjqJ,EAEF,OAAIoW,EAAO,EAAUi2I,EAAIrsJ,IACzBupJ,EAAQnwI,QAAQpZ,GAChBoW,IACOi0M,GAET,GAAIj0M,EAAO,IAAMgvI,EAAQ,OAAOiH,EAAIrsJ,GACpC,MAAM0c,EAAQ6sI,EAAQC,KAAK,kCACrBllJ,EAAQkoJ,GAAkBxsJ,GAGhC,OAFA0c,EAAM0wI,OAAS9oJ,GAAoB,IAAVA,GAAeoxE,QAAQjnE,GAChDiO,EAAMywI,QAAU1+I,GAAsB,IAAXA,GAAgBinE,QAAQpxE,GAC5C+tI,EAAGryI,KCxJT,MAAMgnQ,GAIX,cAME5xQ,KAAK6F,IAAM,GAWb,IAAIsJ,EAAOioC,EAAQtzC,GACjB+tQ,GAAQ7xQ,KAAMmP,EAAOioC,EAAQtzC,GAsB/B,QAAQusC,GAIN,GAHArwC,KAAK6F,IAAI+vC,KAAK,CAAC53C,EAAGC,IAAMD,EAAE,GAAKC,EAAE,IAGT,IAApB+B,KAAK6F,IAAIvH,OACX,OAqBF,IAAI6Q,EAAQnP,KAAK6F,IAAIvH,OAErB,MAAMwzQ,EAAO,GACb,MAAO3iQ,EAAQ,EACbA,GAAS,EACT2iQ,EAAK5vQ,KAAKmuC,EAAO5tC,MAAMzC,KAAK6F,IAAIsJ,GAAO,GAAKnP,KAAK6F,IAAIsJ,GAAO,KAE5D2iQ,EAAK5vQ,KAAKlC,KAAK6F,IAAIsJ,GAAO,IAG1BkhC,EAAO/xC,OAAS0B,KAAK6F,IAAIsJ,GAAO,GAElC2iQ,EAAK5vQ,KAAK,IAAImuC,IACdA,EAAO/xC,OAAS,EAChB,IAAImE,EAAQqvQ,EAAKnuQ,MACjB,MAAOlB,EACL4tC,EAAOnuC,QAAQO,GACfA,EAAQqvQ,EAAKnuQ,MAIf3D,KAAK6F,IAAIvH,OAAS,GAatB,SAASuzQ,GAAQE,EAASt4P,EAAI29B,EAAQtzC,GACpC,IAAIqL,EAAQ,EAGZ,GAAe,IAAXioC,GAA+B,IAAftzC,EAAIxF,OAAxB,CAGA,MAAO6Q,EAAQ4iQ,EAAQlsQ,IAAIvH,OAAQ,CACjC,GAAIyzQ,EAAQlsQ,IAAIsJ,GAAO,KAAOsK,EAW5B,OAVAs4P,EAAQlsQ,IAAIsJ,GAAO,IAAMioC,OAOzB26N,EAAQlsQ,IAAIsJ,GAAO,GAAGjN,QAAQ4B,GAKhCqL,GAAS,EAEX4iQ,EAAQlsQ,IAAI3D,KAAK,CAACuX,EAAI29B,EAAQtzC,KCzIzB,SAASkuQ,GAAc3hO,EAAQlhC,GACpC,IAAI8iQ,GAAiB,EAErB,MAAMt/N,EAAQ,GACd,MAAOxjC,EAAQkhC,EAAO/xC,OAAQ,CAC5B,MAAM5B,EAAQ2zC,EAAOlhC,GACrB,GAAI8iQ,GACF,GAAiB,UAAbv1Q,EAAM,GAGc,iBAAlBA,EAAM,GAAGR,MACXy2C,EAAMzwC,KAC0B,yBAA9BmuC,EAAOlhC,EAAQ,GAAG,GAAGjT,KACjB,OACA,aAOL,GAAsB,iBAAlBQ,EAAM,GAAGR,MAChB,GAAkC,yBAA9Bm0C,EAAOlhC,EAAQ,GAAG,GAAGjT,KAAiC,CACxD,MAAMg2Q,EAAav/N,EAAMr0C,OAAS,EAClCq0C,EAAMu/N,GAAoC,SAAtBv/N,EAAMu/N,GAAyB,SAAW,cAI7D,GAAsB,sBAAlBx1Q,EAAM,GAAGR,KAChB,UAEoB,UAAbQ,EAAM,IAAoC,sBAAlBA,EAAM,GAAGR,OAC1C+1Q,GAAiB,GAEnB9iQ,GAAS,EAEX,OAAOwjC,ECfF,MAAMw/N,GAAW,CACtBz7G,KAAM,CACJS,KAAM,CACJ3mF,SAAU4hM,GACV/6G,WAAYg7G,MASlB,SAASD,GAAcj+G,EAASlX,EAAIga,GAClC,MAAMohF,EAAOr4O,KACb,IAGIi/I,EAHAj+H,EAAO,EACPsxP,EAAQ,EAGZ,OAAOxhQ,EAkBP,SAASA,EAAMlG,GACb,IAAIuE,EAAQkpO,EAAKhoM,OAAO/xC,OAAS,EACjC,MAAO6Q,GAAS,EAAG,CACjB,MAAMjT,EAAOm8O,EAAKhoM,OAAOlhC,GAAO,GAAGjT,KACnC,GACW,eAATA,GAES,eAATA,EAGG,MADHiT,IAGJ,MAAM2mI,EAAO3mI,GAAS,EAAIkpO,EAAKhoM,OAAOlhC,GAAO,GAAGjT,KAAO,KACjDmnB,EACK,cAATyyH,GAAiC,aAATA,EAAsBy8H,EAAeC,EAG/D,OAAInvP,IAASkvP,GAAgBl6B,EAAK9oI,OAAOgnD,KAAK8hF,EAAK7hF,MAAMx8I,MAChDi9I,EAAIrsJ,GAENyY,EAAKzY,GAed,SAAS4nQ,EAAc5nQ,GAGrB,OAFAupJ,EAAQn6F,MAAM,aACdm6F,EAAQn6F,MAAM,YACPy4M,EAAa7nQ,GAetB,SAAS6nQ,EAAa7nQ,GACpB,OAAa,MAATA,IAcJq0I,GAAO,EAEPqzH,GAAS,GAfAI,EAAa9nQ,GAiCxB,SAAS8nQ,EAAa9nQ,GACpB,OAAa,OAATA,EAEKqsJ,EAAIrsJ,GAETkpJ,EAAmBlpJ,GAEjB0nQ,EAAQ,GACVA,EAAQ,EAGRj6B,EAAKliF,WAAY,EACjBhC,EAAQC,KAAK,YACbD,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,cACNu+G,GAIF17G,EAAIrsJ,GAETmpJ,EAAcnpJ,GAITspJ,EAAaC,EAASu+G,EAAc,aAApCx+G,CAAkDtpJ,IAE3D0nQ,GAAS,EACLrzH,IACFA,GAAO,EAEPj+H,GAAQ,GAEG,MAATpW,GACFupJ,EAAQn6F,MAAM,oBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,oBAEbnV,GAAO,EACAyzH,IAITv+G,EAAQn6F,MAAM,QACP44M,EAAYhoQ,KAerB,SAASgoQ,EAAYhoQ,GACnB,OAAa,OAATA,GAA0B,MAATA,GAAgBipJ,EAA0BjpJ,IAC7DupJ,EAAQC,KAAK,QACNs+G,EAAa9nQ,KAEtBupJ,EAAQnwI,QAAQpZ,GACA,KAATA,EAAcioQ,EAAgBD,GAevC,SAASC,EAAcjoQ,GACrB,OAAa,KAATA,GAAwB,MAATA,GACjBupJ,EAAQnwI,QAAQpZ,GACTgoQ,GAEFA,EAAYhoQ,GAerB,SAAS+nQ,EAAmB/nQ,GAK1B,OAHAytO,EAAKliF,WAAY,EAGbkiF,EAAK9oI,OAAOgnD,KAAK8hF,EAAK7hF,MAAMx8I,MACvBi9I,EAAIrsJ,IAEbupJ,EAAQn6F,MAAM,qBAEdilF,GAAO,EACH8U,EAAcnpJ,GACTspJ,EACLC,EACA2+G,EACA,aACAz6B,EAAK9oI,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,qBACzCiqK,EACA,EANCr1F,CAOLtpJ,GAEGkoQ,EAAoBloQ,IAiB7B,SAASkoQ,EAAoBloQ,GAC3B,OAAa,KAATA,GAAwB,KAATA,EACVmoQ,EAAyBnoQ,GAErB,MAATA,GACFq0I,GAAO,EAEPkV,EAAQn6F,MAAM,oBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,oBACN4+G,GAIFC,EAAiBroQ,GAc1B,SAASooQ,EAAwBpoQ,GAC/B,OAAImpJ,EAAcnpJ,GACTspJ,EAAaC,EAAS4+G,EAA0B,aAAhD7+G,CAA8DtpJ,GAEhEmoQ,EAAyBnoQ,GAclC,SAASmoQ,EAAyBnoQ,GAEhC,OAAa,KAATA,GACF0nQ,GAAS,EACTrzH,GAAO,EACPkV,EAAQn6F,MAAM,wBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,wBACN8+G,GAII,KAATtoQ,GACF0nQ,GAAS,EAEFY,EAAgCtoQ,IAE5B,OAATA,GAAiBkpJ,EAAmBlpJ,GAC/BuoQ,EAAuBvoQ,GAEzBqoQ,EAAiBroQ,GAc1B,SAASsoQ,EAAgCtoQ,GACvC,OAAa,KAATA,GACFupJ,EAAQn6F,MAAM,wBACPo5M,EAAoBxoQ,IAItBqoQ,EAAiBroQ,GAc1B,SAASwoQ,EAAoBxoQ,GAC3B,OAAa,KAATA,GACFupJ,EAAQnwI,QAAQpZ,GACTwoQ,GAII,KAATxoQ,GACFq0I,GAAO,EACPkV,EAAQC,KAAK,wBACbD,EAAQn6F,MAAM,wBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,wBACNi/G,IAETl/G,EAAQC,KAAK,wBACNi/G,EAAiCzoQ,IAc1C,SAASyoQ,EAAiCzoQ,GACxC,OAAImpJ,EAAcnpJ,GACTspJ,EAAaC,EAASg/G,EAAwB,aAA9Cj/G,CAA4DtpJ,GAE9DuoQ,EAAuBvoQ,GAchC,SAASuoQ,EAAuBvoQ,GAC9B,OAAa,MAATA,EACKkoQ,EAAoBloQ,IAEhB,OAATA,GAAiBkpJ,EAAmBlpJ,KAKjCq0I,GAAQj+H,IAASsxP,GAKtBn+G,EAAQC,KAAK,qBACbD,EAAQC,KAAK,aAGNnX,EAAGryI,IAELqoQ,EAAiBroQ,GAc1B,SAASqoQ,EAAiBroQ,GAExB,OAAOqsJ,EAAIrsJ,GAeb,SAAS2nQ,EAAa3nQ,GAKpB,OADAupJ,EAAQn6F,MAAM,YACPs5M,EAAa1oQ,GAiBtB,SAAS0oQ,EAAa1oQ,GACpB,OAAa,MAATA,GACFupJ,EAAQn6F,MAAM,oBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,oBACNk/G,GAEI,OAAT1oQ,GAAiBkpJ,EAAmBlpJ,IACtCupJ,EAAQC,KAAK,YACNnX,EAAGryI,IAERmpJ,EAAcnpJ,GACTspJ,EAAaC,EAASm/G,EAAc,aAApCp/G,CAAkDtpJ,IAI3DupJ,EAAQn6F,MAAM,QACPu5M,EAAY3oQ,IAerB,SAAS2oQ,EAAY3oQ,GACnB,OAAa,OAATA,GAA0B,MAATA,GAAgBipJ,EAA0BjpJ,IAC7DupJ,EAAQC,KAAK,QACNk/G,EAAa1oQ,KAEtBupJ,EAAQnwI,QAAQpZ,GACA,KAATA,EAAc4oQ,EAAgBD,GAevC,SAASC,EAAc5oQ,GACrB,OAAa,KAATA,GAAwB,MAATA,GACjBupJ,EAAQnwI,QAAQpZ,GACT2oQ,GAEFA,EAAY3oQ,IAMvB,SAASynQ,GAAahiO,EAAQ1pC,GAC5B,IAWI8sQ,EAEAC,EAEAC,EAfAxkQ,GAAS,EACTykQ,GAA0B,EAE1BC,EAAU,EAEVC,EAAW,CAAC,EAAG,EAAG,EAAG,GAErBllC,EAAO,CAAC,EAAG,EAAG,EAAG,GACjBmlC,GAAgC,EAChCC,EAAe,EAOnB,MAAMnuQ,EAAM,IAAI+rQ,GAChB,QAASziQ,EAAQkhC,EAAO/xC,OAAQ,CAC9B,MAAM5B,EAAQ2zC,EAAOlhC,GACfmY,EAAQ5qB,EAAM,GACH,UAAbA,EAAM,GAEW,cAAf4qB,EAAMprB,MACR63Q,GAAgC,EAGX,IAAjBC,IACFC,GAAcpuQ,EAAKc,EAASqtQ,EAAcP,EAAcC,GACxDA,OAAcnqB,EACdyqB,EAAe,GAIjBP,EAAe,CACbv3Q,KAAM,QACN4U,MAAOjU,OAAO0hD,OAAO,GAAIj3B,EAAMxW,OAE/BC,IAAKlU,OAAO0hD,OAAO,GAAIj3B,EAAMvW,MAE/BlL,EAAI/B,IAAIqL,EAAO,EAAG,CAAC,CAAC,QAASskQ,EAAc9sQ,MAE5B,aAAf2gB,EAAMprB,MACS,sBAAforB,EAAMprB,MAEN03Q,GAA0B,EAC1BD,OAAcpqB,EACduqB,EAAW,CAAC,EAAG,EAAG,EAAG,GACrBllC,EAAO,CAAC,EAAGz/N,EAAQ,EAAG,EAAG,GAGrB4kQ,IACFA,GAAgC,EAChCL,EAAc,CACZx3Q,KAAM,YACN4U,MAAOjU,OAAO0hD,OAAO,GAAIj3B,EAAMxW,OAE/BC,IAAKlU,OAAO0hD,OAAO,GAAIj3B,EAAMvW,MAE/BlL,EAAI/B,IAAIqL,EAAO,EAAG,CAAC,CAAC,QAASukQ,EAAa/sQ,MAE5CktQ,EAAyB,sBAAfvsP,EAAMprB,KAA+B,EAAIw3Q,EAAc,EAAI,IAIrEG,GACgB,SAAfvsP,EAAMprB,MACU,yBAAforB,EAAMprB,MACS,yBAAforB,EAAMprB,KAoBgB,qBAAforB,EAAMprB,OACX03Q,EACFA,GAA0B,GAEN,IAAhBE,EAAS,KACXllC,EAAK,GAAKA,EAAK,GACf+kC,EAAcO,GACZruQ,EACAc,EACAmtQ,EACAD,OACAtqB,EACAoqB,IAGJG,EAAWllC,EACXA,EAAO,CAACklC,EAAS,GAAI3kQ,EAAO,EAAG,MAlCjCykQ,GAA0B,EAGV,IAAZhlC,EAAK,KACa,IAAhBklC,EAAS,KACXllC,EAAK,GAAKA,EAAK,GACf+kC,EAAcO,GACZruQ,EACAc,EACAmtQ,EACAD,OACAtqB,EACAoqB,GAEFG,EAAW,CAAC,EAAG,EAAG,EAAG,IAEvBllC,EAAK,GAAKz/N,IAuBQ,cAAfmY,EAAMprB,MACb63Q,GAAgC,EAChCC,EAAe7kQ,GAEA,aAAfmY,EAAMprB,MACS,sBAAforB,EAAMprB,MAEN83Q,EAAe7kQ,EACK,IAAhB2kQ,EAAS,IACXllC,EAAK,GAAKA,EAAK,GACf+kC,EAAcO,GACZruQ,EACAc,EACAmtQ,EACAD,EACA1kQ,EACAwkQ,IAEmB,IAAZ/kC,EAAK,KACd+kC,EAAcO,GAAUruQ,EAAKc,EAASioO,EAAMilC,EAAS1kQ,EAAOwkQ,IAE9DE,EAAU,IAEVA,GACgB,SAAfvsP,EAAMprB,MACU,yBAAforB,EAAMprB,MACS,yBAAforB,EAAMprB,OAER0yO,EAAK,GAAKz/N,GAGO,IAAjB6kQ,GACFC,GAAcpuQ,EAAKc,EAASqtQ,EAAcP,EAAcC,GAE1D7tQ,EAAIme,QAAQrd,EAAQ0pC,QAKpBlhC,GAAS,EACT,QAASA,EAAQxI,EAAQ0pC,OAAO/xC,OAAQ,CACtC,MAAM5B,EAAQiK,EAAQ0pC,OAAOlhC,GACZ,UAAbzS,EAAM,IAAoC,UAAlBA,EAAM,GAAGR,OACnCQ,EAAM,GAAGy3Q,OAASnC,GAAcrrQ,EAAQ0pC,OAAQlhC,IAGpD,OAAOkhC,EAeT,SAAS6jO,GAAUruQ,EAAKc,EAASmI,EAAO+kQ,EAASO,EAAQC,GAGvD,MAAMC,EACQ,IAAZT,EACI,cACY,IAAZA,EACA,iBACA,YAGAU,EAAY,eASD,IAAbzlQ,EAAM,KACRulQ,EAAatjQ,IAAMlU,OAAO0hD,OAAO,GAAIi2N,GAAS7tQ,EAAQ0pC,OAAQvhC,EAAM,KACpEjJ,EAAI/B,IAAIgL,EAAM,GAAI,EAAG,CAAC,CAAC,OAAQulQ,EAAc1tQ,MAU/C,MAAM6vJ,EAAMg+G,GAAS7tQ,EAAQ0pC,OAAQvhC,EAAM,IAkB3C,GAjBAulQ,EAAe,CACbn4Q,KAAMo4Q,EACNxjQ,MAAOjU,OAAO0hD,OAAO,GAAIi4G,GAEzBzlJ,IAAKlU,OAAO0hD,OAAO,GAAIi4G,IAEzB3wJ,EAAI/B,IAAIgL,EAAM,GAAI,EAAG,CAAC,CAAC,QAASulQ,EAAc1tQ,KAW7B,IAAbmI,EAAM,GAAU,CAClB,MAAM2lQ,EAAeD,GAAS7tQ,EAAQ0pC,OAAQvhC,EAAM,IAC9C4lQ,EAAaF,GAAS7tQ,EAAQ0pC,OAAQvhC,EAAM,IAE5C6lQ,EAAa,CACjBz4Q,KAAMq4Q,EACNzjQ,MAAOjU,OAAO0hD,OAAO,GAAIk2N,GACzB1jQ,IAAKlU,OAAO0hD,OAAO,GAAIm2N,IAGzB,GADA7uQ,EAAI/B,IAAIgL,EAAM,GAAI,EAAG,CAAC,CAAC,QAAS6lQ,EAAYhuQ,KAC5B,IAAZktQ,EAAe,CAEjB,MAAM/iQ,EAAQnK,EAAQ0pC,OAAOvhC,EAAM,IAC7BiC,EAAMpK,EAAQ0pC,OAAOvhC,EAAM,IAMjC,GALAgC,EAAM,GAAGC,IAAMlU,OAAO0hD,OAAO,GAAIxtC,EAAI,GAAGA,KACxCD,EAAM,GAAG5U,KAAO,YAChB4U,EAAM,GAAG8jJ,YAAc,OAGnB9lJ,EAAM,GAAKA,EAAM,GAAK,EAAG,CAC3B,MAAM9Q,EAAI8Q,EAAM,GAAK,EACf7Q,EAAI6Q,EAAM,GAAKA,EAAM,GAAK,EAChCjJ,EAAI/B,IAAI9F,EAAGC,EAAG,KAGlB4H,EAAI/B,IAAIgL,EAAM,GAAK,EAAG,EAAG,CAAC,CAAC,OAAQ6lQ,EAAYhuQ,KAejD,YALe4iP,IAAX6qB,IACFC,EAAatjQ,IAAMlU,OAAO0hD,OAAO,GAAIi2N,GAAS7tQ,EAAQ0pC,OAAQ+jO,IAC9DvuQ,EAAI/B,IAAIswQ,EAAQ,EAAG,CAAC,CAAC,OAAQC,EAAc1tQ,KAC3C0tQ,OAAe9qB,GAEV8qB,EAaT,SAASJ,GAAcpuQ,EAAKc,EAASwI,EAAOs/N,EAAOmmC,GAEjD,MAAMC,EAAQ,GACRC,EAAUN,GAAS7tQ,EAAQ0pC,OAAQlhC,GACrCylQ,IACFA,EAAU7jQ,IAAMlU,OAAO0hD,OAAO,GAAIu2N,GAClCD,EAAM3yQ,KAAK,CAAC,OAAQ0yQ,EAAWjuQ,KAEjC8nO,EAAM19N,IAAMlU,OAAO0hD,OAAO,GAAIu2N,GAC9BD,EAAM3yQ,KAAK,CAAC,OAAQusO,EAAO9nO,IAC3Bd,EAAI/B,IAAIqL,EAAQ,EAAG,EAAG0lQ,GAQxB,SAASL,GAASnkO,EAAQlhC,GACxB,MAAMzS,EAAQ2zC,EAAOlhC,GACf80B,EAAoB,UAAbvnC,EAAM,GAAiB,QAAU,MAC9C,OAAOA,EAAM,GAAGunC,GCx2BlB,MAAM8wO,GACJ,+FAIa,IAAIlmQ,OAAO,IAAMkmQ,GAAO7qQ,OAAQ,KCA/C,MAAM8qQ,GAAgB,CACpBxkM,SAAUykM,IAWCC,GAAkB,CAC7Bh7P,KAAM,CACJ,CAAC,IAAK86P,KAQV,SAASC,GAAsB9gH,EAASlX,EAAIga,GAC1C,MAAMohF,EAAOr4O,KACb,OAAOumF,EAYP,SAASA,EAAK37E,GACZ,OAEoB,OAAlBytO,EAAKxjF,UAGJwjF,EAAK3iB,oCAIRvhE,EAAQn6F,MAAM,iBACdm6F,EAAQn6F,MAAM,uBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,uBACN4pE,GANE/mE,EAAIrsJ,GAmBf,SAASozN,EAAOpzN,GAId,OAAIipJ,EAA0BjpJ,IAC5BupJ,EAAQn6F,MAAM,+BACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,+BACNzxF,GAEI,KAAT/3D,GAAwB,MAATA,GACjBupJ,EAAQn6F,MAAM,6BACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,6BACNzxF,GAEFs0F,EAAIrsJ,GAab,SAAS+3D,EAAM/3D,GACb,OAAa,KAATA,GACFupJ,EAAQn6F,MAAM,uBACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,uBACbD,EAAQC,KAAK,iBACNllJ,GAEF+nJ,EAAIrsJ,GAMb,SAASsE,EAAMtE,GAEb,OAAIkpJ,EAAmBlpJ,GACdqyI,EAAGryI,GAKRmpJ,EAAcnpJ,GACTupJ,EAAQh0F,MACb,CACEqQ,SAAU2kM,IAEZl4H,EACAga,EALK9C,CAMLvpJ,GAIGqsJ,EAAIrsJ,IAQf,SAASuqQ,GAAkBhhH,EAASlX,EAAIga,GACtC,OAAO/C,EAAaC,EAASjlJ,EAAO,cAYpC,SAASA,EAAMtE,GAKb,OAAgB,OAATA,EAAgBqsJ,EAAIrsJ,GAAQqyI,EAAGryI,IC9HnC,SAASwqQ,GAAIh5Q,GAClB,OAAOy2J,EAAkB,CACvB67G,EACA8B,IACAe,GAAiBn1Q,GACjB+1Q,GACA+C,KClCG,SAASrlH,GAAO3yJ,EAAOsiJ,GAC5B,MAAMt1I,EAASgY,OAAOhlB,GAEtB,GAAyB,kBAAdsiJ,EACT,MAAM,IAAIvI,UAAU,sBAGtB,IAAI5nI,EAAQ,EACRF,EAAQjF,EAAOxF,QAAQ86I,GAE3B,OAAkB,IAAXrwI,EACLE,IACAF,EAAQjF,EAAOxF,QAAQ86I,EAAWrwI,EAAQqwI,EAAUlhJ,QAGtD,OAAO+Q,ECzBM,SAASgmQ,GAAmB50P,GAC1C,GAAsB,kBAAXA,EACV,MAAM,IAAIw2H,UAAU,qBAKrB,OAAOx2H,EACL3H,QAAQ,sBAAuB,QAC/BA,QAAQ,KAAM,SCmFV,MAyEMkkI,GAOX,SAKYjwI,GACR,QAAaw8O,IAATx8O,GAA+B,OAATA,EACxB,OAAO,GAGT,GAAoB,kBAATA,EACT,OAAOmwI,GAAYnwI,GAGrB,GAAoB,kBAATA,EACT,OAAOtM,MAAMk/E,QAAQ5yE,GAAQowI,GAAWpwI,GAAQqwI,GAAarwI,GAG/D,GAAoB,oBAATA,EACT,OAAOswI,GAAYtwI,GAGrB,MAAM,IAAIjL,MAAM,iDAQtB,SAASq7I,GAAWp9D,GAElB,MAAM4xC,EAAS,GACf,IAAIxiH,GAAS,EAEb,QAASA,EAAQ4wE,EAAMzhF,OACrBqzH,EAAOxiH,GAAS6tI,GAAQj9D,EAAM5wE,IAGhC,OAAOkuI,GAAYp9D,GAOnB,SAASA,KAAOC,GACd,IAAI/wE,GAAS,EAEb,QAASA,EAAQwiH,EAAOrzH,OACtB,GAAIqzH,EAAOxiH,GAAOlP,KAAKD,QAASkgF,GAAa,OAAO,EAGtD,OAAO,GAUX,SAASk9D,GAAaj9E,GACpB,OAAOk9E,GAAYotF,GAMnB,SAASA,EAAIhsO,GAEX,IAAI06I,EAEJ,IAAKA,KAAOh5E,EAEV,GAAI1hE,EAAK06I,KAASh5E,EAAMg5E,GAAM,OAAO,EAGvC,OAAO,GAUX,SAAS+D,GAAY/8E,GACnB,OAAOk9E,GAAYnhJ,GAKnB,SAASA,EAAKuC,GACZ,OAAOA,GAAQA,EAAKvC,OAASikE,GAUjC,SAASk9E,GAAYl9E,GACnB,OAAOkgB,EAQP,SAASA,EAAU5hF,KAASyhF,GAC1B,OAAOI,QACL7hF,GACkB,kBAATA,GACP,SAAUA,GAEV6hF,QAAQngB,EAAMlgE,KAAKD,KAAMvB,KAASyhF,MAK1C,SAAS,KACP,OAAO,ECvSF,SAAS0gD,GAAMvhI,GACpB,OAAOA,EC2EF,MAAMyrO,IAAW,EAKXE,IAAO,EAKPD,GAAO,OA+BPE,GAOX,SAQYrqJ,EAAM7zE,EAAM8zE,EAAS/mE,GACT,oBAAT/M,GAA0C,oBAAZ8zE,IACvC/mE,EAAU+mE,EAEVA,EAAU9zE,EACVA,EAAO,MAGT,MAAM+zE,EAAKk8D,GAAQjwI,GACbg0E,EAAOjnE,GAAW,EAAI,EAS5B,SAASo1N,EAAQzwO,EAAM0Q,EAAO8xE,GAG5B,MAAM/jF,EAAQuB,GAAwB,kBAATA,EAAoBA,EAAO,GAExD,GAA0B,kBAAfvB,EAAMhB,KAAmB,CAClC,MAAMqD,EAEqB,kBAAlBrC,EAAMo4E,QACTp4E,EAAMo4E,QAEc,kBAAfp4E,EAAMqC,KACXrC,EAAMqC,UACNgqP,EAEN1sP,OAAOC,eAAequO,EAAO,OAAQ,CACnCjuO,MACE,SAAW0jI,GAAMniI,EAAKvC,MAAQqD,EAAO,IAAMA,EAAO,IAAM,KAAO,MAIrE,OAAO4rO,EAEP,SAASA,IAEP,IAEIhqJ,EAEAv2D,EAEAw2D,EANA5jE,EAAS,GAQb,KAAKzQ,GAAQ+zE,EAAGriF,EAAM0Q,EAAO8xE,EAAQA,EAAQ3iF,OAAS,IAAM,SAC1Dkf,EAAS0tN,GAASrqJ,EAAQpiF,EAAMwiF,IAE5BzjE,EAAO,KAAOwtN,IAChB,OAAOxtN,EAKX,GAAI/e,EAAK8B,UAAYid,EAAO,KAAOutN,GAAM,CAEvCngN,GAAU9Q,EAAUrb,EAAK8B,SAASjC,QAAU,GAAKyiF,EAEjDK,EAAeH,EAAQxmE,OAAOhc,GAG9B,MAAOmsB,GAAU,GAAKA,EAASnsB,EAAK8B,SAASjC,OAAQ,CAInD,GAFA6iF,EAAY+tJ,EAAQzwO,EAAK8B,SAASqqB,GAASA,EAAQw2D,EAAvC8tJ,GAER/tJ,EAAU,KAAO6pJ,GACnB,OAAO7pJ,EAGTv2D,EAC0B,kBAAjBu2D,EAAU,GAAkBA,EAAU,GAAKv2D,EAASm2D,GAIjE,OAAOvjE,GArEX0xN,EAAQtuJ,OAAM2oK,EAAW,GAAzBra,IAmFN,SAAShE,GAAShuO,GAChB,OAAIuD,MAAMk/E,QAAQziF,GACTA,EAGY,kBAAVA,EACF,CAAC4tO,GAAU5tO,GAGb,CAACA,GC3KV,MAAM,GAAM,GAAGiV,eAqBFmjQ,GAOX,SASY10L,EAAMj1D,EAAM7S,EAAS1c,GAE7B,IAAIm3I,EAEA7qD,EAEgB,kBAAT/8D,GAAqBA,aAAgB9c,QAE9C65E,EAAS,CAAC,CAAC/8D,EAAM7S,IACjBy6H,EAAWn3I,IAEXssF,EAAS/8D,EAET4nH,EAAWz6H,GAGRy6H,IACHA,EAAW,IAGb,MAAMgiI,EAAUv4H,GAAQzJ,EAASw7F,QAAU,IACrCymC,EAAQC,GAAQ/sL,GACtB,IAAIgtL,GAAa,EAEjB,QAASA,EAAYF,EAAMl3Q,OACzB2sO,GAAarqJ,EAAM,OAAQC,GAI7B,OAAOD,EAGP,SAASC,EAAQpiF,EAAMwiF,GACrB,IAEI00L,EAFAxmQ,GAAS,EAIb,QAASA,EAAQ8xE,EAAQ3iF,OAAQ,CAC/B,MAAMkR,EAASyxE,EAAQ9xE,GAEvB,GACEomQ,EACE/lQ,EAEAmmQ,EAAcA,EAAYp1Q,SAASmE,QAAQ8K,QAAU+5O,EACrDosB,GAGF,OAGFA,EAAcnmQ,EAGhB,GAAImmQ,EACF,OAAO91Q,EAAQpB,EAAMwiF,GAczB,SAASphF,EAAQpB,EAAMwiF,GACrB,MAAMzxE,EAASyxE,EAAQA,EAAQ3iF,OAAS,GAClCqtB,EAAO6pP,EAAME,GAAW,GACxB58P,EAAU08P,EAAME,GAAW,GACjC,IAAI5kQ,EAAQ,EAEZ,MAAM3B,EAAQK,EAAOjP,SAASmE,QAAQjG,GACtC,IAAI8rB,GAAS,EAETgrH,EAAQ,GAEZ5pH,EAAKmF,UAAY,EAEjB,IAAIviB,EAAQod,EAAKze,KAAKzO,EAAKvB,OAE3B,MAAOqR,EAAO,CACZ,MAAMqoB,EAAWroB,EAAMY,MAEjBymQ,EAAc,CAClBzmQ,MAAOZ,EAAMY,MACbpT,MAAOwS,EAAMxS,MAEb6sF,MAAO,IAAI3H,EAASxiF,IAEtB,IAAIvB,EAAQ4b,KAAWvK,EAAOqnQ,GAyB9B,GAvBqB,kBAAV14Q,IACTA,EAAQA,EAAMoB,OAAS,EAAI,CAACpC,KAAM,OAAQgB,cAASqsP,IAIvC,IAAVrsP,IACE4T,IAAU8lB,GACZ2+G,EAAMrzI,KAAK,CACThG,KAAM,OACNgB,MAAOuB,EAAKvB,MAAMuF,MAAMqO,EAAO8lB,KAI/Bn2B,MAAMk/E,QAAQziF,GAChBq4I,EAAMrzI,QAAQhF,GACLA,GACTq4I,EAAMrzI,KAAKhF,GAGb4T,EAAQ8lB,EAAWroB,EAAM,GAAGjQ,OAC5BisB,GAAS,IAGNoB,EAAKusN,OACR,MAGF3pO,EAAQod,EAAKze,KAAKzO,EAAKvB,OAazB,OAVIqtB,GACEzZ,EAAQrS,EAAKvB,MAAMoB,QACrBi3I,EAAMrzI,KAAK,CAAChG,KAAM,OAAQgB,MAAOuB,EAAKvB,MAAMuF,MAAMqO,KAGpDtB,EAAOjP,SAASkH,OAAO0H,EAAO,KAAMomI,IAEpCA,EAAQ,CAAC92I,GAGJ0Q,EAAQomI,EAAMj3I,SAa7B,SAASm3Q,GAAQ/sL,GAEf,MAAMlrE,EAAS,GAEf,GAAsB,kBAAXkrE,EACT,MAAM,IAAIuuD,UAAU,sCAGtB,GAAIx2I,MAAMk/E,QAAQ+I,GAAS,CACzB,IAAIv5E,GAAS,EAEb,QAASA,EAAQu5E,EAAOpqF,OACtBkf,EAAOtb,KAAK,CACV2zQ,GAAantL,EAAOv5E,GAAO,IAC3B2mQ,GAAWptL,EAAOv5E,GAAO,UAGxB,CAEL,IAAIgqI,EAEJ,IAAKA,KAAOzwD,EACN,GAAIzoF,KAAKyoF,EAAQywD,IACnB37H,EAAOtb,KAAK,CAAC2zQ,GAAa18H,GAAM28H,GAAWptL,EAAOywD,MAKxD,OAAO37H,EAWT,SAASq4P,GAAalqP,GACpB,MAAuB,kBAATA,EAAoB,IAAI9c,OAAO,GAAO8c,GAAO,KAAOA,EAWpE,SAASmqP,GAAWh9P,GAClB,MAA0B,oBAAZA,EAAyBA,EAAU,IAAMA,EC5RzD,MAAMi9P,GAAc,WAEdC,GAAiB,CAAC,WAAY,OAAQ,QAAS,SASxCC,GAAiC,CAC5ClyC,WAAY,CAACmyC,IACbl8M,MAAO,CACLm8M,gBAAiBC,GACjBC,qBAAsBC,GACtBC,oBAAqBD,GACrBE,mBAAoBF,IAEtBliH,KAAM,CACJ+hH,gBAAiBM,GACjBJ,qBAAsBK,GACtBH,oBAAqBI,GACrBH,mBAAoBI,KASXC,GAA+B,CAC1CC,OAAQ,CACN,CACEt3H,UAAW,IACXnmI,OAAQ,aACRnK,MAAO,YACP6mQ,eACAC,mBAEF,CACEx2H,UAAW,IACXnmI,OAAQ,OACRnK,MAAO,YACP6mQ,eACAC,mBAEF,CAACx2H,UAAW,IAAKnmI,OAAQ,OAAQnK,MAAO,MAAO6mQ,eAAaC,qBAQhE,SAASI,GAAqB9uP,GAC5BtnB,KAAKg6D,MAAM,CAAC99D,KAAM,OAAQk0B,MAAO,KAAM8pD,IAAK,GAAI35E,SAAU,IAAK+mB,GAOjE,SAASgvP,GAA0BhvP,GACjCtnB,KAAK4sE,OAAO5S,MAAMkqK,iBAAiBjkO,KAAKD,KAAMsnB,GAOhD,SAASqvP,GAAwBrvP,GAC/BtnB,KAAK4sE,OAAOwnF,KAAK8vE,iBAAiBjkO,KAAKD,KAAMsnB,GAO/C,SAASsvP,GAAuBtvP,GAC9BtnB,KAAK4sE,OAAOwnF,KAAKrzJ,KAAKd,KAAKD,KAAMsnB,GACjC,MAAM7oB,EAA4BuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GACjEG,EAAKy7E,IAAM,UAAYl6E,KAAKi4J,eAAe3wI,GAO7C,SAASovP,GAAyBpvP,GAChCtnB,KAAK4sE,OAAOwnF,KAAKgwE,cAAcnkO,KAAKD,KAAMsnB,GAO5C,SAASmvP,GAAoBnvP,GAC3BtnB,KAAKo0J,KAAK9sI,GAIZ,SAAS4uP,GAA6Bt1L,GACpC00L,GACE10L,EACA,CACE,CAAC,kDAAmDm2L,IACpD,CAAC,oCAAqCC,KAExC,CAACjoC,OAAQ,CAAC,OAAQ,mBActB,SAASgoC,GAAQrtL,EAAGkiJ,EAAU+hC,EAAQ3/H,EAAMz/H,GAC1C,IAAImtG,EAAS,GAGb,IAAK,GAASntG,GACZ,OAAO,EAUT,GANI,MAAMxB,KAAK6+N,KACb+hC,EAAS/hC,EAAW+hC,EACpB/hC,EAAW,GACXlwH,EAAS,YAGNu7J,GAAgBtJ,GACnB,OAAO,EAGT,MAAMliP,EAAQyrP,GAASvJ,EAAS3/H,GAEhC,IAAKviH,EAAM,GAAI,OAAO,EAGtB,MAAMjO,EAAS,CACbthB,KAAM,OACNk0B,MAAO,KACP8pD,IAAKwhC,EAASkwH,EAAWngN,EAAM,GAC/BlrB,SAAU,CAAC,CAACrE,KAAM,OAAQgB,MAAO0uO,EAAWngN,EAAM,MAGpD,OAAIA,EAAM,GACD,CAACjO,EAAQ,CAACthB,KAAM,OAAQgB,MAAOuuB,EAAM,KAGvCjO,EAWT,SAASw5P,GAAUttL,EAAGmlL,EAAOnqM,EAAOn2D,GAClC,SAEG,GAASA,GAAO,IAEjB,UAAUxB,KAAK23D,KAKV,CACLxoE,KAAM,OACNk0B,MAAO,KACP8pD,IAAK,UAAY20L,EAAQ,IAAMnqM,EAC/BnkE,SAAU,CAAC,CAACrE,KAAM,OAAQgB,MAAO2xQ,EAAQ,IAAMnqM,KAQnD,SAASuyM,GAAgBtJ,GACvB,MAAMliP,EAAQkiP,EAAO/8P,MAAM,KAE3B,QACE6a,EAAMntB,OAAS,GACdmtB,EAAMA,EAAMntB,OAAS,KACnB,IAAIyO,KAAK0e,EAAMA,EAAMntB,OAAS,MAC5B,aAAayO,KAAK0e,EAAMA,EAAMntB,OAAS,MAC3CmtB,EAAMA,EAAMntB,OAAS,KACnB,IAAIyO,KAAK0e,EAAMA,EAAMntB,OAAS,MAC5B,aAAayO,KAAK0e,EAAMA,EAAMntB,OAAS,MAYhD,SAAS44Q,GAASh9L,GAChB,MAAMi9L,EAAY,sBAAsBjqQ,KAAKgtE,GAE7C,IAAKi9L,EACH,MAAO,CAACj9L,OAAKqvK,GAGfrvK,EAAMA,EAAIz3E,MAAM,EAAG00Q,EAAUhoQ,OAE7B,IAAIghQ,EAAQgH,EAAU,GAClBC,EAAoBjH,EAAMzrQ,QAAQ,KACtC,MAAM2yQ,EAAgBxnH,GAAO31E,EAAK,KAClC,IAAIo9L,EAAgBznH,GAAO31E,EAAK,KAEhC,OAA8B,IAAvBk9L,GAA4BC,EAAgBC,EACjDp9L,GAAOi2L,EAAM1tQ,MAAM,EAAG20Q,EAAoB,GAC1CjH,EAAQA,EAAM1tQ,MAAM20Q,EAAoB,GACxCA,EAAoBjH,EAAMzrQ,QAAQ,KAClC4yQ,IAGF,MAAO,CAACp9L,EAAKi2L,GAQf,SAAS,GAAS5hQ,EAAOgpQ,GACvB,MAAM3sQ,EAAO2D,EAAMxS,MAAMia,WAAWzH,EAAMY,MAAQ,GAElD,OACmB,IAAhBZ,EAAMY,OACL6kJ,EAAkBppJ,IAClBqpJ,EAAmBrpJ,OACnB2sQ,GAAkB,KAAT3sQ,GC1QR,MAAM8uJ,GAAoB,CAC/BvX,MAAO,IACP0X,IAAK,IACL/X,OAAQ,IACRiY,OAAQ,IACRhY,MAAO,IACPkY,IAAK,IACLC,IAAK,KACLrY,OAAQ,IACRiE,MAAO,IACPsU,MAAO,IACPC,IAAK,IACLC,MAAO,IACPC,KAAM,KACNC,cAAe,IACftY,MAAO,IACPwY,KAAM,KACNC,OAAQ,IACR3Y,OAAQ,IACRC,KAAM,IACN6Y,UAAW,IACXC,KAAM,IACNC,OAAQ,IACRC,IAAK,IACLC,QAAS,IACTC,WAAY,IACZpV,KAAM,IACNqV,IAAK,KACLC,KAAM,KACNC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRC,KAAM,IACNE,KAAM,IACNC,OAAQ,IACRC,IAAK,IACLC,qBAAsB,IACtBC,QAAS,IACTC,OAAQ,IACR5Z,OAAQ,IACR8Z,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,QAAS,IACTC,UAAW,IACXC,IAAK,IACLpV,IAAK,IACLqV,UAAW,IACXC,YAAa,IACbC,WAAY,IACZC,YAAa,IACbC,yBAA0B,IAC1BC,sBAAuB,IACvBC,gBAAiB,IACjBC,MAAO,IACPC,OAAQ,IACRC,UAAW,IACXC,OAAQ,IACRC,gBAAiB,IACjBC,KAAM,IACNC,UAAW,IACXC,gCAAiC,IACjCC,MAAO,IACPC,KAAM,KACNC,IAAK,IACLC,OAAQ,IACR56D,GAAI,IACJ66D,SAAU,IACVC,KAAM,IACNC,KAAM,IACNC,KAAM,IACNlP,OAAQ,IACRmP,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,IAAK,IACLlY,MAAO,IACPmY,IAAK,KACLC,iBAAkB,IAClBC,eAAgB,IAChBC,uBAAwB,IACxBC,iBAAkB,IAClBC,iBAAkB,IAClBC,QAAS,IACTC,cAAe,IACfC,KAAM,KACNC,IAAK,IACLC,OAAQ,IACRC,SAAU,IACVC,sBAAuB,IACvBC,UAAW,IACXC,gBAAiB,IACjBC,gBAAiB,IACjBC,qBAAsB,IACtBC,cAAe,IACfC,oBAAqB,IACrBC,yBAA0B,IAC1BC,qBAAsB,IACtBC,iBAAkB,IAClBC,eAAgB,IAChBC,cAAe,IACfC,kBAAmB,IACnBC,kBAAmB,IACnBC,UAAW,IACXC,aAAc,IACdC,iBAAkB,IAClBC,UAAW,IACXC,oBAAqB,IACrBC,kBAAmB,IACnBC,eAAgB,IAChBC,kBAAmB,IACnBC,mBAAoB,IACpBC,gBAAiB,IACjBC,mBAAoB,IACpBC,QAAS,IACTC,aAAc,IACdC,UAAW,IACXC,KAAM,KACNC,OAAQ,IACRC,IAAK,IACLje,IAAK,IACLP,OAAQ,IACR2e,OAAQ,IACR1e,MAAO,IACP4e,IAAK,IACLC,KAAM,IACNC,IAAK,KACLhf,OAAQ,IACRkf,QAAS,IACTC,MAAO,IACPC,iBAAkB,IAClBC,qBAAsB,IACtBC,MAAO,IACPC,KAAM,KACN1b,QAAS,IACT2b,MAAO,IACPC,WAAY,IACZC,YAAa,IACbC,KAAM,IACNC,KAAM,IACN7b,IAAK,IACL5D,KAAM,IACN2f,OAAQ,IACRC,aAAc,IACdC,IAAK,IACLC,IAAK,KACLC,kBAAmB,IACnBC,sBAAuB,IACvBC,KAAM,KACNC,OAAQ,IACRC,WAAY,IACZC,KAAM,IACNC,KAAM,IACNE,GAAI,IACJ/c,MAAO,IACPgd,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,IAAK,KACLC,GAAI,IACJC,KAAM,KACNC,aAAc,IACdC,iBAAkB,IAClBC,iBAAkB,IAClBC,eAAgB,IAChBC,YAAa,IACbC,kBAAmB,IACnBC,aAAc,IACdC,KAAM,KACNC,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,aAAc,IACdC,KAAM,IACNC,eAAgB,IAChBC,KAAM,IACNC,OAAQ,IACRC,aAAc,IACdC,UAAW,IACXC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNtiB,OAAQ,IACRC,MAAO,IACPwiB,IAAK,IACLC,KAAM,IACNC,IAAK,IACL5iB,OAAQ,IACR8iB,GAAI,IACJC,MAAO,IACPC,WAAY,IACZC,QAAS,IACTC,IAAK,IACLC,SAAU,IACVC,aAAc,IACdC,eAAgB,IAChBC,eAAgB,IAChBC,MAAO,IACPC,KAAM,KACN3f,KAAM,IACN4f,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPxjB,KAAM,IACN0jB,MAAO,IACPC,IAAK,IACLC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNvgB,MAAO,IACPwgB,OAAQ,IACRC,IAAK,IACLC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNE,GAAI,IACJC,OAAQ,IACR/gB,OAAQ,IACRghB,KAAM,IACNC,WAAY,IACZC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,iBAAkB,IAClBC,UAAW,IACXC,aAAc,IACdC,oBAAqB,IACrBC,YAAa,IACbC,kBAAmB,IACnBC,kBAAmB,IACnBC,eAAgB,IAChBC,kBAAmB,IACnBC,UAAW,IACXC,eAAgB,IAChBC,gBAAiB,IACjBC,QAAS,IACTC,aAAc,IACdC,cAAe,IACfC,aAAc,IACdC,gBAAiB,IACjBC,kBAAmB,IACnBC,iBAAkB,IAClBC,gBAAiB,IACjBC,aAAc,IACdC,gBAAiB,IACjBC,WAAY,IACZC,cAAe,IACfC,UAAW,IACXC,eAAgB,IAChBC,iBAAkB,IAClBC,cAAe,IACfC,YAAa,IACbC,SAAU,IACVC,eAAgB,IAChBC,UAAW,IACXC,IAAK,KACLC,GAAI,IACJC,WAAY,IACZC,OAAQ,IACRC,cAAe,IACfC,mBAAoB,IACpBC,eAAgB,IAChBC,cAAe,IACfC,mBAAoB,IACpBC,eAAgB,IAChBC,KAAM,KACNC,eAAgB,IAChBC,gBAAiB,IACjBC,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,GAAI,IACJlkK,IAAK,IACLmkK,IAAK,IACLC,YAAa,IACbC,UAAW,IACXC,IAAK,KACLC,UAAW,IACXC,KAAM,KACNC,KAAM,IACN5kB,GAAI,IACJ6kB,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,oBAAqB,IACrBC,mBAAoB,IACpBC,kBAAmB,IACnBC,sBAAuB,IACvBC,qBAAsB,IACtBC,eAAgB,IAChBC,QAAS,KACTC,IAAK,KACLC,QAAS,IACTC,iBAAkB,IAClBC,KAAM,IACNC,IAAK,IACLC,aAAc,IACdC,UAAW,IACXC,qBAAsB,IACtBC,WAAY,IACZC,SAAU,IACVC,cAAe,KACfC,UAAW,IACXC,WAAY,IACZC,gBAAiB,IACjBC,oBAAqB,KACrBC,kBAAmB,KACnBC,eAAgB,IAChBC,qBAAsB,KACtBC,gBAAiB,IACjBC,gBAAiB,KACjBC,aAAc,KACdC,gBAAiB,IACjBC,mBAAoB,KACpBC,qBAAsB,IACtBC,QAAS,IACTC,aAAc,IACdC,eAAgB,IAChBC,YAAa,KACbC,kBAAmB,KACnBC,aAAc,IACdC,wBAAyB,KACzBC,kBAAmB,KACnBC,YAAa,IACbC,iBAAkB,KAClBC,sBAAuB,IACvBC,kBAAmB,IACnBC,iBAAkB,IAClBC,oBAAqB,KACrBC,sBAAuB,IACvBC,gBAAiB,KACjBC,qBAAsB,IACtBC,kBAAmB,KACnBC,uBAAwB,IACxBC,UAAW,KACXC,eAAgB,IAChBC,YAAa,IACbC,iBAAkB,KAClBC,sBAAuB,IACvBC,iBAAkB,KAClBC,YAAa,KACbC,iBAAkB,IAClBC,SAAU,IACVC,cAAe,IACfC,kBAAmB,IACnBC,cAAe,IACfC,eAAgB,IAChBC,KAAM,KACN5sB,OAAQ,IACR4D,GAAI,IACJ2G,MAAO,IACPrK,OAAQ,IACRC,MAAO,IACP6sB,IAAK,IACLC,OAAQ,IACRC,IAAK,KACLjtB,OAAQ,IACRmtB,MAAO,IACP7oB,MAAO,IACPT,QAAS,IACTupB,KAAM,KACNC,qBAAsB,IACtBC,eAAgB,IAChBC,GAAI,IACJC,KAAM,KACNltB,OAAQ,IACRH,OAAQ,IACRwtB,OAAQ,IACRvtB,KAAM,IACNytB,QAAS,IACTC,UAAW,IACXC,YAAa,IACbC,gBAAiB,IACjBC,SAAU,IACVC,IAAK,IACLC,IAAK,KACLhqB,IAAK,IACLL,GAAI,IACJsqB,UAAW,IACXC,cAAe,IACfC,KAAM,IACNC,GAAI,IACJC,SAAU,IACVC,cAAe,IACfC,mBAAoB,IACpBC,cAAe,IACftoB,MAAO,IACPuoB,QAAS,IACTC,WAAY,IACZC,aAAc,IACdC,KAAM,KACN1qB,IAAK,IACL4qB,KAAM,IACNC,IAAK,KACLC,KAAM,IACNC,KAAM,KACNC,MAAO,IACPE,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,GAAI,IACJC,eAAgB,IAChBC,mBAAoB,IACpBC,qBAAsB,IACtBC,IAAK,IACLpsB,IAAK,IACLqsB,kBAAmB,IACnBC,WAAY,IACZC,cAAe,IACfC,oBAAqB,IACrBC,aAAc,IACdC,mBAAoB,IACpBC,mBAAoB,IACpBC,gBAAiB,IACjBC,mBAAoB,IACpBC,WAAY,IACZC,SAAU,IACVC,cAAe,IACfC,eAAgB,IAChBC,cAAe,IACfC,iBAAkB,IAClBC,mBAAoB,IACpBC,kBAAmB,IACnBC,iBAAkB,IAClBC,cAAe,IACfC,iBAAkB,IAClBC,YAAa,IACbC,eAAgB,IAChBC,WAAY,IACZC,KAAM,IACNC,aAAc,IACdC,YAAa,IACbC,KAAM,IACNC,IAAK,IACLC,YAAa,IACbC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,GAAI,IACJ7nB,OAAQ,IACR8nB,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,IAAK,KACLC,eAAgB,IAChBC,eAAgB,IAChBC,gBAAiB,IACjBC,aAAc,IACd7uB,MAAO,IACP8uB,YAAa,IACbC,KAAM,KACNC,KAAM,IACNC,OAAQ,IACRC,mBAAoB,IACpBC,aAAc,IACdC,kBAAmB,IACnBC,eAAgB,IAChBC,oBAAqB,IACrBC,YAAa,IACbC,KAAM,KACNC,KAAM,IACNC,IAAK,IACLC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,cAAe,IACfC,mBAAoB,IACpBC,cAAe,IACfC,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,SAAU,IACVC,cAAe,IACfC,OAAQ,IACR1zB,MAAO,IACP4zB,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,IAAK,KACL1wB,IAAK,IACL2wB,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,KACLC,UAAW,IACX1xB,MAAO,IACP2xB,WAAY,KACZC,UAAW,IACXC,MAAO,IACPC,WAAY,IACZC,eAAgB,IAChBC,WAAY,IACZC,KAAM,KACNC,UAAW,IACXC,KAAM,KACNC,OAAQ,IACRl1B,OAAQ,IACRo1B,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRt1B,MAAO,IACPw1B,IAAK,IACLC,OAAQ,IACRC,IAAK,KACL51B,OAAQ,IACR81B,MAAO,IACPC,SAAU,IACVC,WAAY,IACZC,aAAc,IACdC,iBAAkB,IAClBC,MAAO,IACPC,UAAW,IACXC,MAAO,IACPC,KAAM,KACNC,QAAS,IACTC,WAAY,IACZC,iBAAkB,IAClBC,YAAa,IACbC,cAAe,IACfC,MAAO,IACPC,WAAY,IACZC,QAAS,IACTC,YAAa,IACbC,eAAgB,IAChBC,gBAAiB,IACjBC,KAAM,IACNvzB,QAAS,IACTwzB,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRl3B,KAAM,IACNo3B,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,YAAa,IACbC,aAAc,IACdC,kBAAmB,IACnBC,cAAe,IACfC,cAAe,IACfC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,IAAK,KACLx1B,GAAI,IACJy1B,KAAM,KACNC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,KAAM,IACN94B,OAAQ,IACRg5B,MAAO,IACPC,IAAK,IACLC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNrvB,KAAM,IACNsvB,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,eAAgB,IAChBj3B,KAAM,IACNk3B,IAAK,IACLC,KAAM,IACNC,KAAM,KACNz5B,OAAQ,IACR25B,OAAQ,IACRC,GAAI,IACJC,IAAK,KACLC,IAAK,IACL75B,MAAO,IACP9C,MAAO,IACP88B,IAAK,IACL55B,MAAO,IACP85B,GAAI,IACJC,IAAK,KACLr6B,OAAQ,IACR6F,QAAS,IACT00B,MAAO,IACP92B,MAAO,IACP+2B,MAAO,IACPC,MAAO,IACPpxB,IAAK,IACL/B,IAAK,IACLqzB,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,KAAM,IACNzzB,IAAK,IACL0zB,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,KAAM,KACNC,GAAI,IACJC,IAAK,IACLC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVp8B,MAAO,IACPs8B,KAAM,KACNtrC,IAAK,IACLwW,MAAO,IACP+0B,QAAS,IACTz8B,OAAQ,IACRC,KAAM,IACN28B,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,SAAU,IACVC,YAAa,IACbC,UAAW,IACXC,QAAS,IACTC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,IAAK,IACLhzB,MAAO,IACPizB,OAAQ,IACRC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRx6B,KAAM,IACNy6B,KAAM,IACNC,QAAS,IACTC,IAAK,KACLC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,UAAW,IACXC,SAAU,IACVC,QAAS,IACTC,gBAAiB,IACjBC,cAAe,IACfC,SAAU,IACVC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,aAAc,IACdC,YAAa,IACbC,cAAe,IACfC,kBAAmB,IACnBC,kBAAmB,IACnBC,mBAAoB,IACpBC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPz+K,MAAO,IACP0+K,IAAK,KACLC,QAAS,KACTC,KAAM,IACNC,KAAM,KACN3oJ,IAAK,IACLlC,OAAQ,IACR8qJ,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,QAAS,IACTC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPzmC,OAAQ,IACR2mC,KAAM,KACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,MAAO,IACPC,SAAU,IACVp+B,KAAM,IACNp9E,OAAQ,IACRy7G,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRt1C,IAAK,IACLu1C,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRhkC,OAAQ,IACRkkC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNpnC,MAAO,IACPsnC,QAAS,IACT3oC,KAAM,IACN6oC,UAAW,IACXC,IAAK,KACLC,KAAM,IACN5oH,MAAO,IACP6oH,UAAW,IACXrgC,IAAK,IACLsgC,IAAK,IACLC,KAAM,IACNx7B,KAAM,IACNy7B,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,SAAU,IACVC,SAAU,IACVC,WAAY,IACZC,YAAa,IACbC,YAAa,IACbC,KAAM,IACNC,SAAU,IACVC,OAAQ,IACRC,QAAS,IACTh9B,MAAO,IACPi9B,SAAU,IACVjgG,MAAO,IACPkgG,OAAQ,IACRC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRz3I,KAAM,IACN03I,OAAQ,IACRC,WAAY,IACZC,UAAW,IACX7+B,KAAM,IACN8+B,QAAS,IACTC,OAAQ,IACRC,KAAM,KACNC,OAAQ,IACRnjK,KAAM,IACNqjK,OAAQ,IACR5gC,MAAO,IACP6gC,MAAO,IACPC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTpgC,IAAK,IACLqgC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACTC,YAAa,IACbC,YAAa,IACbC,SAAU,IACVC,WAAY,IACZnsC,OAAQ,IACRqsC,eAAgB,IAChBC,gBAAiB,IACjBC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRziC,KAAM,IACN0iC,KAAM,IACNn+B,OAAQ,IACRo+B,OAAQ,IACRjjC,KAAM,IACN3X,KAAM,IACN66C,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACL9uC,GAAI,IACJ+uC,QAAS,IACTC,MAAO,IACPC,QAAS,IACT1sC,IAAK,IACLxsG,MAAO,IACPo5I,QAAS,IACTC,OAAQ,IACRC,IAAK,KACLC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,QAAS,IACTC,YAAa,IACbhhC,MAAO,IACPihC,IAAK,IACLC,QAAS,IACTC,MAAO,IACPxxK,IAAK,IACLyoI,OAAQ,IACRipC,cAAe,IACfC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,IAAK,IACLC,MAAO,IACPC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTC,UAAW,IACXC,eAAgB,IAChBC,UAAW,IACXC,eAAgB,IAChBC,gBAAiB,IACjBC,iBAAkB,IAClBC,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNjsC,OAAQ,IACRmsC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNpsC,MAAO,IACPqsC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,GAAI,IACJC,MAAO,IACPC,IAAK,KACLC,GAAI,IACJ7sC,OAAQ,IACR+sC,IAAK,IACLC,OAAQ,IACR1rG,GAAI,IACJ2rG,SAAU,IACVC,IAAK,IACLC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACP/xL,MAAO,IACPgyL,SAAU,IACVC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRjkC,KAAM,IACNkkC,IAAK,IACLnkC,KAAM,IACNokC,MAAO,IACPC,KAAM,KACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACN5qC,QAAS,IACT6qC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,MAAO,IACPC,WAAY,IACZC,YAAa,IACbz9I,OAAQ,IACR09I,OAAQ,IACRhnC,MAAO,IACPinC,QAAS,IACTC,SAAU,IACVC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNxrC,IAAK,IACL9C,IAAK,IACLL,KAAM,IACNwK,KAAM,IACNskC,KAAM,IACN/oC,MAAO,IACPgpC,YAAa,IACbC,aAAc,IACdC,cAAe,IACfC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,IAAK,KACLC,MAAO,IACPC,MAAO,KACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPvuC,KAAM,IACNwuC,KAAM,KACN/pC,OAAQ,IACRgqC,KAAM,IACNC,MAAO,IACPC,SAAU,IACV9yC,OAAQ,IACRgzC,OAAQ,IACRjzC,OAAQ,IACRkzC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRpzC,OAAQ,IACRszC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRhsC,MAAO,IACPisC,MAAO,IACPC,KAAM,KACNC,GAAI,IACJC,IAAK,IACLC,OAAQ,IACRnuC,MAAO,IACPouC,OAAQ,IACR1qK,IAAK,IACL2qK,OAAQ,IACRC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNlqC,GAAI,IACJmqC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,OAAQ,IACRC,IAAK,KACLC,GAAI,IACJC,IAAK,IACLC,MAAO,IACPC,KAAM,IACNC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACP7qC,GAAI,IACJ8qC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,UAAW,IACXC,OAAQ,IACRC,OAAQ,IACRC,UAAW,IACXC,WAAY,IACZC,QAAS,IACTC,OAAQ,IACRC,UAAW,KACXC,KAAM,KACN1uC,KAAM,IACN2uC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRpvC,KAAM,IACNqvC,QAAS,IACTC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPxsC,OAAQ,IACRysC,UAAW,IACXtwC,OAAQ,IACRuwC,OAAQ,IACRC,IAAK,KACLC,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRC,cAAe,IACfC,eAAgB,IAChBC,KAAM,KACNC,OAAQ,IACRC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACR71C,OAAQ,IACR+1C,GAAI,IACJ91C,MAAO,IACPg2C,IAAK,IACLC,KAAM,IACN76C,MAAO,IACP+6C,IAAK,IACLC,IAAK,KACLt2C,OAAQ,IACRw2C,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPzwL,MAAO,IACP0wL,SAAU,IACVC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,MAAO,IACP5vD,GAAI,IACJ6vD,OAAQ,IACR5wC,MAAO,IACP6wC,SAAU,IACVC,OAAQ,IACRzwC,IAAK,IACL0wC,OAAQ,IACRC,SAAU,IACVC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTC,KAAM,IACNC,MAAO,IACPC,KAAM,KACN10C,KAAM,IACN20C,MAAO,IACP56C,OAAQ,IACR86C,KAAM,KACNjyC,KAAM,IACNkyC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJC,OAAQ,IACRC,MAAO,IACPt4C,KAAM,IACNw4C,MAAO,IACPC,IAAK,IACLC,IAAK,KACLC,MAAO,IACPC,KAAM,KACNC,KAAM,KACNC,OAAQ,IACRC,MAAO,IACP71C,MAAO,IACP81C,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,IAAK,KACLC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,MAAO,IACPp0C,KAAM,IACNq0C,OAAQ,IACRC,MAAO,IACPC,GAAI,IACJC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACR92C,OAAQ,IACR3uB,KAAM,IACN0lE,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLx+C,MAAO,IACPmJ,KAAM,IACNu1C,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,IACNC,MAAO,KACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACR/zC,MAAO,IACPg0C,KAAM,IACNC,IAAK,IACLC,KAAM,IACNjyC,MAAO,IACPkyC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,IACNh1C,GAAI,IACJi1C,UAAW,IACXC,cAAe,IACfC,gBAAiB,IACjBC,cAAe,IACfC,eAAgB,IAChBC,eAAgB,IAChBC,gBAAiB,IACjBC,kBAAmB,IACnBC,oBAAqB,IACrBC,eAAgB,IAChBC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,OAAQ,IACRC,WAAY,IACZC,QAAS,IACTC,UAAW,IACXC,WAAY,IACZC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRh2C,OAAQ,IACRi2C,IAAK,KACLC,GAAI,IACJC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,GAAI,IACJC,MAAO,IACPC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,WAAY,IACZC,IAAK,IACLC,KAAM,IACNC,SAAU,IACVC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,cAAe,IACfC,mBAAoB,IACpBC,WAAY,IACZC,eAAgB,IAChBC,cAAe,IACfC,eAAgB,IAChBC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACT95C,OAAQ,IACR+5C,OAAQ,IACRl4C,IAAK,IACLm4C,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,MAAO,IACPC,SAAU,IACVC,MAAO,IACPC,OAAQ,IACRr3C,IAAK,IACLs3C,MAAO,IACPz2C,OAAQ,IACR02C,KAAM,KACNC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNx3C,MAAO,IACPy3C,OAAQ,IACRC,OAAQ,IACR54C,GAAI,IACJ64C,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,QAAS,IACTC,UAAW,KACXC,KAAM,KACNC,MAAO,IACPnmD,KAAM,IACNomD,KAAM,IACNC,KAAM,IACNC,QAAS,IACTrhM,IAAK,IACLshM,OAAQ,IACRC,WAAY,IACZC,WAAY,IACZC,SAAU,IACVv+K,OAAQ,IACRw+K,OAAQ,IACRC,IAAK,IACLp5C,MAAO,IACPq5C,cAAe,IACfC,IAAK,KACLC,IAAK,IACLzmD,MAAO,IACPzqI,IAAK,IACLoxL,OAAQ,IACRC,OAAQ,IACR1mD,OAAQ,IACR0J,MAAO,IACPk9C,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,GAAI,IACJC,KAAM,KACNC,OAAQ,IACR1gD,GAAI,IACJ2gD,SAAU,IACVC,MAAO,IACPC,IAAK,KACLC,IAAK,KACLC,KAAM,KACNC,WAAY,IACZC,gBAAiB,IACjBC,IAAK,KACLC,IAAK,KACLC,KAAM,KACNC,YAAa,IACbC,OAAQ,IACRC,OAAQ,IACR/+C,MAAO,IACPg/C,OAAQ,IACRC,KAAM,KACNC,IAAK,IACLC,KAAM,KACNC,MAAO,KACPC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVnqD,KAAM,IACNqqD,MAAO,KACPC,OAAQ,KACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,SAAU,KACVC,KAAM,IACNC,IAAK,IACLx8C,MAAO,IACPxC,GAAI,IACJi/C,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,MAAO,KACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,KACPC,OAAQ,IACRC,QAAS,IACTC,IAAK,KACLC,IAAK,KACLC,IAAK,IACLC,KAAM,IACNC,MAAO,KACPC,UAAW,KACXC,KAAM,KACNC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPvhD,GAAI,IACJwhD,IAAK,IACLC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,IAAK,KACLC,MAAO,IACPC,KAAM,IACNC,IAAK,IACLC,WAAY,IACZC,gBAAiB,IACjBC,KAAM,IACNC,MAAO,KACPC,UAAW,KACXC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,KAAM,KACN/sD,IAAK,IACLiK,MAAO,IACP+iD,OAAQ,KACRC,SAAU,KACVC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,KAAM,IACNC,UAAW,IACXC,OAAQ,KACRC,MAAO,KACPC,QAAS,IACTC,IAAK,IACLC,OAAQ,IACRC,KAAM,KACNC,MAAO,IACPC,QAAS,KACTC,MAAO,IACPC,MAAO,IACPC,OAAQ,KACRC,OAAQ,KACRC,YAAa,IACbC,MAAO,IACPC,OAAQ,IACRC,IAAK,IACLC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,UAAW,IACXC,eAAgB,IAChBC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACT/jD,KAAM,IACNgkD,MAAO,KACPC,MAAO,IACPC,QAAS,KACTC,UAAW,IACXC,WAAY,KACZC,MAAO,IACPC,QAAS,KACTC,KAAM,IACNC,MAAO,KACPC,MAAO,IACPC,QAAS,KACTC,UAAW,IACXC,WAAY,KACZC,KAAM,IACN/rD,OAAQ,IACRisD,KAAM,IACNC,cAAe,IACfC,gBAAiB,IACjBC,eAAgB,IAChBC,iBAAkB,IAClBlpD,GAAI,IACJzuE,IAAK,IACL43H,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,QAAS,IACTC,OAAQ,IACRC,KAAM,KACNC,KAAM,KACNC,QAAS,KACTC,OAAQ,IACRC,QAAS,KACTC,MAAO,KACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,GAAI,IACJztD,OAAQ,IACR2tD,KAAM,IACNC,KAAM,IACN3tD,MAAO,IACP4tD,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACR5lD,MAAO,IACP6lD,MAAO,IACPC,IAAK,KACLC,KAAM,IACNtuD,OAAQ,IACRwuD,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTxqD,MAAO,IACPyqD,IAAK,IACLC,MAAO,IACPlrD,MAAO,IACPV,QAAS,IACT6rD,KAAM,IACNC,OAAQ,IACRC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPjoD,MAAO,IACPf,GAAI,IACJipD,MAAO,IACPC,IAAK,IACLr6L,MAAO,IACPs6L,QAAS,IACTh0D,KAAM,IACNgB,KAAM,IACNizD,OAAQ,IACRC,KAAM,IACNC,QAAS,IACTC,IAAK,IACLC,KAAM,IACNvvD,OAAQ,IACRyvD,KAAM,IACN5vD,OAAQ,IACRkH,OAAQ,IACR4oD,SAAU,IACV7vD,KAAM,IACN+vD,MAAO,IACPC,IAAK,IACLh0D,KAAM,IACNi0D,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPv+L,KAAM,IACNw+L,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACR5mD,OAAQ,IACRxC,KAAM,IACNqpD,QAAS,IACTC,IAAK,KACLjtD,IAAK,IACLktD,KAAM,IACNC,OAAQ,IACRC,MAAO,IACP1tD,GAAI,IACJ2tD,UAAW,IACX/sD,IAAK,IACLgtD,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACP31D,OAAQ,IACR61D,QAAS,IACTC,QAAS,IACTC,GAAI,IACJC,SAAU,IACVC,KAAM,KACN92D,MAAO,IACPg3D,GAAI,IACJC,IAAK,IACLC,KAAM,IACNC,MAAO,IACPhoL,IAAK,IACLioL,KAAM,IACNC,WAAY,IACZC,YAAa,IACbC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTzuD,MAAO,IACP0uD,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRptD,KAAM,IACNqtD,SAAU,IACVC,SAAU,IACVC,SAAU,IACV7uI,KAAM,IACN8uI,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,KACN3vD,IAAK,IACL4vD,OAAQ,IACRC,IAAK,KACLC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRC,KAAM,KACNC,YAAa,IACbC,QAAS,IACTC,MAAO,IACPC,QAAS,IACThsD,KAAM,IACNksD,MAAO,IACPhvD,KAAM,IACNivD,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,KAAM,KACNC,OAAQ,IACRxuD,MAAO,IACPyuD,SAAU,IACV9sD,KAAM,IACN+sD,MAAO,IACP5qM,MAAO,IACP6qM,OAAQ,IACRn4D,MAAO,IACPqI,KAAM,IACNgwD,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,QAAS,IACTC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,UAAW,IACXC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,OAAQ,IACRC,OAAQ,IACR3uD,MAAO,IACP4uD,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,QAAS,IACT9sD,MAAO,IACP+sD,OAAQ,IACRC,KAAM,IACNjyD,KAAM,IACNkyD,QAAS,IACTC,SAAU,IACVC,MAAO,IACPljL,KAAM,IACNioH,IAAK,IACLk7D,OAAQ,IACRnvD,OAAQ,IACRovD,IAAK,KACLC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACR5zD,IAAK,IACL6zD,KAAM,IACNC,WAAY,IACZC,eAAgB,IAChBC,iBAAkB,IAClBC,eAAgB,IAChBC,gBAAiB,IACjBC,kBAAmB,IACnBC,iBAAkB,IAClBC,gBAAiB,IACjBC,gBAAiB,IACjBC,KAAM,IACNC,aAAc,IACdC,MAAO,IACPC,MAAO,IACP7uD,IAAK,IACL8uD,OAAQ,IACRC,WAAY,IACZC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,QAAS,IACTC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACP9uD,OAAQ,IACR+uD,KAAM,KACNC,IAAK,IACLC,KAAM,IACN1vD,MAAO,IACP2vD,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,QAAS,IACT9uE,GAAI,IACJ+uE,OAAQ,IACRlwD,MAAO,IACPmwD,GAAI,IACJC,IAAK,IACLC,KAAM,IACNpxD,OAAQ,IACRqxD,MAAO,IACPC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACPC,IAAK,IACLhzD,KAAM,IACNizD,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTv/D,KAAM,IACNy/D,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,MAAO,IACPC,KAAM,IACNC,IAAK,KACLC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,cAAe,IACf//D,IAAK,IACL6H,MAAO,IACPD,OAAQ,IACRq4D,OAAQ,IACRn1D,IAAK,IACLo1D,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,cAAe,IACfC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,MAAO,IACPC,IAAK,IACLC,KAAM,IACNC,MAAO,KACPC,OAAQ,IACR5+L,IAAK,IACL6+L,KAAM,IACNC,OAAQ,IACRC,KAAM,KACNr1D,OAAQ,IACRs1D,UAAW,IACXC,KAAM,IACNC,MAAO,IACPC,OAAQ,KACRC,MAAO,IACPC,OAAQ,KACRC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,WAAY,IACZC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,WAAY,IACZC,IAAK,IACLC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,gBAAiB,IACjBC,YAAa,IACbC,MAAO,IACPnlK,IAAK,IACLolK,KAAM,IACNC,OAAQ,IACR/3D,KAAM,IACNg4D,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,QAAS,IACTllE,OAAQ,IACRmlE,SAAU,IACVC,UAAW,IACXC,UAAW,IACXC,WAAY,IACZC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,KAAM,IACNC,WAAY,IACZC,YAAa,IACbC,OAAQ,IACRC,YAAa,IACbC,SAAU,IACVC,SAAU,IACVC,QAAS,IACTx6D,IAAK,IACLy6D,KAAM,IACNhkE,KAAM,IACNP,KAAM,IACNC,KAAM,IACN+K,IAAK,IACLw5D,KAAM,IACNC,OAAQ,IACRC,QAAS,IACTv5D,KAAM,IACNw5D,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,MAAO,IACPC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRC,SAAU,IACVC,UAAW,IACXC,UAAW,IACXC,WAAY,IACZC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,QAAS,IACTC,OAAQ,IACRljE,MAAO,IACPplJ,OAAQ,IACRgqJ,IAAK,IACLw+D,KAAM,IACNC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRC,IAAK,KACL/7D,OAAQ,IACRg8D,UAAW,IACX3/D,MAAO,IACPkB,SAAU,IACV0+D,OAAQ,IACRC,YAAa,IACbC,SAAU,IACV55D,OAAQ,IACR65D,MAAO,IACPC,OAAQ,IACRjiE,MAAO,IACPgI,MAAO,IACPvK,MAAO,IACP0kE,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,KAAM,IACNC,KAAM,IACN79M,IAAK,IACL89M,OAAQ,IACRC,OAAQ,IACRC,KAAM,KACNC,QAAS,IACTC,KAAM,IACNC,OAAQ,IACR/+D,MAAO,IACPg/D,SAAU,IACVC,aAAc,IACdC,aAAc,IACdC,eAAgB,IAChBC,UAAW,IACXC,cAAe,IACfC,gBAAiB,IACjBC,OAAQ,IACRC,KAAM,IACNC,SAAU,IACVC,QAAS,IACTC,MAAO,IACPC,QAAS,IACTC,SAAU,IACVC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,iBAAkB,IAClBC,kBAAmB,IACnB3/D,KAAM,IACN4/D,KAAM,IACNvkE,OAAQ,IACRqE,KAAM,IACNogE,MAAO,IACPC,OAAQ,IACRzkE,MAAO,IACP2kE,IAAK,IACLC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,IAAK,KACLllE,OAAQ,IACRolE,MAAO,IACPC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACP3qE,IAAK,IACL6qE,MAAO,IACPC,KAAM,KACNC,QAAS,IACTC,YAAa,IACbC,cAAe,IACfC,eAAgB,IAChBC,MAAO,IACPC,KAAM,IACN3iE,MAAO,IACPN,QAAS,IACTkjE,WAAY,IACZC,OAAQ,IACRC,SAAU,IACVC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,MAAO,IACPC,OAAQ,IACRC,KAAM,IACNC,MAAO,IACPC,MAAO,IACP7mE,KAAM,IACN+mE,QAAS,IACTC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,OAAQ,IACRC,WAAY,IACZC,SAAU,IACVC,WAAY,IACZC,OAAQ,IACRC,MAAO,IACPC,UAAW,IACXC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,aAAc,KACdC,cAAe,KACfC,aAAc,KACdC,cAAe,KACfC,SAAU,IACVC,gBAAiB,IACjBC,iBAAkB,IAClBC,IAAK,IACLC,MAAO,IACPC,IAAK,IACLC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRvjL,KAAM,IACNwjL,IAAK,KACLC,MAAO,IACPC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,QAAS,IACTC,MAAO,IACPC,OAAQ,IACRC,MAAO,IACPC,OAAQ,IACR9lE,OAAQ,IACR+lE,IAAK,KACLC,KAAM,KACNC,GAAI,IACJC,GAAI,IACJC,OAAQ,IACRC,KAAM,KACNC,KAAM,IACNC,MAAO,IACPC,KAAM,IACNC,MAAO,IACPC,IAAK,KACLC,MAAO,IACPC,MAAO,IACPhoE,GAAI,IACJioE,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,MAAO,IACPC,KAAM,KACNC,OAAQ,IACRC,OAAQ,IACRC,MAAO,IACPC,KAAM,IACNC,OAAQ,IACRxrE,OAAQ,IACR0rE,KAAM,IACNC,MAAO,IACPC,IAAK,IACLnxE,IAAK,IACLqxE,IAAK,KACLC,KAAM,IACNC,KAAM,KACNC,KAAM,KACNC,KAAM,IACNhsE,KAAM,IACNksE,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,KAAM,IACNC,OAAQ,IACRxqE,KAAM,IACNyqE,IAAK,KACLC,KAAM,IACNC,QAAS,IACTC,KAAM,KACNC,KAAM,KACNvkE,IAAK,IACLD,KAAM,KChlEF,GAAM,GAAG57I,eAaR,SAASsgN,GAA8Bv1N,GAC5C,QAAO,GAAI+C,KAAKy5J,GAAmBx8J,IAASw8J,GAAkBx8J,GCFzD,SAASgmO,GAAgChmO,EAAO+uE,GACrD,MAAMrhE,EAAO4D,OAAOspB,SAAS56B,EAAO+uE,GACpC,OAEErhE,EAAO,GACE,KAATA,GACCA,EAAO,IAAMA,EAAO,IAEpBA,EAAO,KAAOA,EAAO,KAErBA,EAAO,OAASA,EAAO,OAEvBA,EAAO,OAASA,EAAO,OACL,SAAX,MAAPA,IACkB,SAAX,MAAPA,IAEDA,EAAO,QAEA,IAEFsX,OAAO8pC,aAAaphD,GChC7B,MAAMu4N,GACJ,oEAcK,SAASC,GAAalmO,GAC3B,OAAOA,EAAM4b,QAAQqqN,GAA4BE,IASnD,SAASA,GAAO5wF,EAAIkH,EAAI2pF,GACtB,GAAI3pF,EAEF,OAAOA,EAIT,MAAM72G,EAAOwgM,EAAGttN,WAAW,GAC3B,GAAa,KAAT8sB,EAAa,CACf,MAAMA,EAAOwgM,EAAGttN,WAAW,GACrBwtN,EAAe,MAAT1gM,GAAyB,KAATA,EAC5B,OAAOogM,GAAgCI,EAAG7gO,MAAM+gO,EAAM,EAAI,GAAIA,EAAM,GAAK,IAE3E,OAAO/Q,GAA8B6Q,IAAO7wF,ECdvC,SAAS+kI,GAAY/4Q,GAC1B,OAAIA,EAAKimE,QAAUjmE,EAAKk5N,WACfl5N,EAAKimE,OAAS,GAGhB0+J,GAAa3kO,EAAKk5N,YCbpB,SAAS8/C,GAAcjoQ,EAAQuQ,EAAOI,GAC3C,MAAMu3P,EAAa33P,EAAM23P,WACnBn3Q,EAAWiP,EAAOjP,UAAY,GAC9Bo3Q,EAAU53P,EAAM63P,cAAcz3P,GAE9B6oE,EAAU,GAChB,IAAI75E,GAAS,EAEbuoQ,EAAWx1Q,MAAM,GAEjB,QAASiN,EAAQ5O,EAASjC,OAAQ,CAChC,MAAM4R,EAAQ3P,EAAS4O,GAEvBuoQ,EAAWA,EAAWp5Q,OAAS,GAAK6Q,EAEpC65E,EAAQ9mF,KACNy1Q,EAAQrgN,KACNv3C,EAAM++B,OAAO5uC,EAAOV,EAAQuQ,EAAO,CACjC1G,OAAQ,KACRnK,MAAO,QACJyoQ,EAAQ3oQ,cAKE,SAAfkB,EAAMhU,OACR6jB,EAAM83P,oBAAiBtuB,GAGrBp6O,EAAQ5O,EAASjC,OAAS,GAC5B0qF,EAAQ9mF,KACNy1Q,EAAQrgN,KAAK,GAAQpnD,EAAO3P,EAAS4O,EAAQ,GAAIK,EAAQuQ,KAO/D,OAFA23P,EAAW/zQ,MAEJqlF,EAAQ7mC,KAAK,IAUtB,SAAS,GAAQ9kC,EAAMC,EAAO9N,EAAQuQ,GACpC,IAAI5Q,EAAQ4Q,EAAMoiC,KAAK7jD,OAEvB,MAAO6Q,IAAS,CACd,MAAMqO,EAASuC,EAAMoiC,KAAKhzC,GAAOkO,EAAMC,EAAO9N,EAAQuQ,GAEtD,IAAe,IAAXvC,GAA8B,IAAXA,EACrB,MAGF,GAAsB,kBAAXA,EACT,MAAO,KAAKw3C,OAAO,EAAIx3C,GAGzB,IAAe,IAAXA,EACF,MAAO,wBAIX,MAAO,OCjFT,MAAM0F,GAAM,YAKL,SAAS40P,GAAY56Q,EAAO2I,GAEjC,MAAM2X,EAAS,GACf,IAGIjP,EAHAuC,EAAQ,EACRkJ,EAAO,EAIX,MAAQzL,EAAQ2U,GAAIhW,KAAKhQ,GACvBwtO,EAAIxtO,EAAMuF,MAAMqO,EAAOvC,EAAMY,QAC7BqO,EAAOtb,KAAKqM,EAAM,IAClBuC,EAAQvC,EAAMY,MAAQZ,EAAM,GAAGjQ,OAC/B0b,IAKF,OAFA0wN,EAAIxtO,EAAMuF,MAAMqO,IAET0M,EAAO2kC,KAAK,IAKnB,SAASuoL,EAAIxtO,GACXsgB,EAAOtb,KAAK2D,EAAI3I,EAAO8c,GAAO9c,KCxB3B,SAAS66Q,GAAeh0P,GAC7B,IAAKA,EAAQi0P,UAAW,CACtB,MAAM3+P,GACH0K,EAAQgzM,QAAU,kBAAoB,KACtChzM,EAAQ1K,OAAS,MAAQ0K,EAAQ1K,OAAS,IAAM,IAEnD0K,EAAQi0P,UAAY,IAAInpQ,QACrBwK,EAAS,IAAMA,EAAS,IAAM,KAC5B,sBAAsBtM,KAAKgX,EAAQy7H,WAAa,KAAO,IACxDz7H,EAAQy7H,WACPz7H,EAAQ7U,MAAQ,MAAQ6U,EAAQ7U,MAAQ,IAAM,IACjD,KAIJ,OAAO6U,EAAQi0P,UCbV,SAASC,GAAervL,EAAO7kE,GACpC,OACEm0P,GAAYtvL,EAAO7kE,EAAQgyP,aAAa,KACvCmC,GAAYtvL,EAAO7kE,EAAQiyP,gBAAgB,GAUhD,SAASkC,GAAYtvL,EAAOrd,EAAM4sM,GAKhC,GAJoB,kBAAT5sM,IACTA,EAAO,CAACA,KAGLA,GAAwB,IAAhBA,EAAKjtE,OAChB,OAAO65Q,EAGT,IAAIhpQ,GAAS,EAEb,QAASA,EAAQo8D,EAAKjtE,OACpB,GAAIsqF,EAAMtJ,SAAS/T,EAAKp8D,IACtB,OAAO,EAIX,OAAO,ECPF,SAAS+hJ,GAAKnxI,EAAOhkB,EAAO6wE,GACjC,MAAM1vE,GAAS0vE,EAAOvzD,QAAU,KAAOtd,GAAS,KAAO6wE,EAAO19D,OAAS,IAEjEkpQ,EAAY,GAEZ56P,EAAS,GAET66P,EAAQ,GACd,IAAIlpQ,GAAS,EAEb,QAASA,EAAQ4Q,EAAM+2P,OAAOx4Q,OAAQ,CACpC,MAAMylB,EAAUhE,EAAM+2P,OAAO3nQ,GAE7B,IAAK8oQ,GAAel4P,EAAM6oE,MAAO7kE,GAC/B,SAGF,MAAM89N,EAAak2B,GAAeh0P,GAElC,IAAIxV,EAEJ,MAAQA,EAAQszO,EAAW30O,KAAKhQ,GAAS,CACvC,MAAMmc,EAAS,WAAY0K,GAAWu8D,QAAQv8D,EAAQgzM,SAChD7nN,EAAQ,UAAW6U,EACnB6S,EAAWroB,EAAMY,OAASkK,EAAS9K,EAAM,GAAGjQ,OAAS,GAEvD85Q,EAAU94L,SAAS1oD,IACjByhP,EAAMzhP,GAAUvd,SAAWA,IAC7Bg/P,EAAMzhP,GAAUvd,QAAS,GAGvBg/P,EAAMzhP,GAAU1nB,QAAUA,IAC5BmpQ,EAAMzhP,GAAU1nB,OAAQ,KAG1BkpQ,EAAUl2Q,KAAK00B,GACfyhP,EAAMzhP,GAAY,CAACvd,SAAQnK,WAKjCkpQ,EAAUxiO,KAAK0iO,IAEf,IAAIxnQ,EAAQ87D,EAAOvzD,OAASuzD,EAAOvzD,OAAO/a,OAAS,EACnD,MAAMyS,EAAM7T,EAAMoB,QAAUsuE,EAAO19D,MAAQ09D,EAAO19D,MAAM5Q,OAAS,GACjE6Q,GAAS,EAET,QAASA,EAAQipQ,EAAU95Q,OAAQ,CACjC,MAAMs4B,EAAWwhP,EAAUjpQ,GAGvBynB,EAAW9lB,GAAS8lB,GAAY7lB,IAQjC6lB,EAAW,EAAI7lB,GACdqnQ,EAAUjpQ,EAAQ,KAAOynB,EAAW,GACpCyhP,EAAMzhP,GAAU1nB,QACfmpQ,EAAMzhP,EAAW,GAAGvd,SACpBg/P,EAAMzhP,EAAW,GAAG1nB,OACtBkpQ,EAAUjpQ,EAAQ,KAAOynB,EAAW,GACnCyhP,EAAMzhP,GAAUvd,SACfg/P,EAAMzhP,EAAW,GAAGvd,SACpBg/P,EAAMzhP,EAAW,GAAG1nB,QAKrB4B,IAAU8lB,GAIZpZ,EAAOtb,KAAKq2Q,GAAkBr7Q,EAAMuF,MAAMqO,EAAO8lB,GAAW,OAG9D9lB,EAAQ8lB,GAGN,iBAAiB7pB,KAAK7P,EAAMkZ,OAAOwgB,KACjCg2C,EAAO4gK,QAAW5gK,EAAO4gK,OAAOluJ,SAASpiF,EAAMkZ,OAAOwgB,KAMxDpZ,EAAOtb,KACL,MAAQhF,EAAM8Y,WAAW4gB,GAAUhjB,SAAS,IAAI6B,cAAgB,KAElE3E,KANA0M,EAAOtb,KAAK,QAYhB,OAFAsb,EAAOtb,KAAKq2Q,GAAkBr7Q,EAAMuF,MAAMqO,EAAOC,GAAM67D,EAAO19D,QAEvDsO,EAAO2kC,KAAK,IAQrB,SAASm2N,GAAUt6Q,EAAGC,GACpB,OAAOD,EAAIC,EAQb,SAASs6Q,GAAkBr7Q,EAAOgS,GAChC,MAAM2yO,EAAa,wBAEbu2B,EAAY,GAEZpvL,EAAU,GACVwvL,EAAQt7Q,EAAQgS,EACtB,IAGIX,EAHAY,GAAS,EACT2B,EAAQ,EAIZ,MAAQvC,EAAQszO,EAAW30O,KAAKsrQ,GAC9BJ,EAAUl2Q,KAAKqM,EAAMY,OAGvB,QAASA,EAAQipQ,EAAU95Q,OACrBwS,IAAUsnQ,EAAUjpQ,IACtB65E,EAAQ9mF,KAAKhF,EAAMuF,MAAMqO,EAAOsnQ,EAAUjpQ,KAG5C65E,EAAQ9mF,KAAK,MACb4O,EAAQsnQ,EAAUjpQ,GAKpB,OAFA65E,EAAQ9mF,KAAKhF,EAAMuF,MAAMqO,IAElBk4E,EAAQ7mC,KAAK,ICnKf,SAASs2N,GAAM7rM,GAIpB,MAAMxwE,EAAUwwE,GAAU,GACpB4pF,EAAMp6J,EAAQo6J,KAAO,GAC3B,IAAIkiH,EAAYt8Q,EAAQs8Q,WAAa,EACjC1+P,EAAOw8I,EAAIx8I,MAAQ,EACnB6J,EAAS2yI,EAAI3yI,QAAU,EAE3B,MAAO,CAACyzC,OAAMtoD,UAASw3B,SAOvB,SAASx3B,IACP,MAAO,CAACwnJ,IAAK,CAACx8I,OAAM6J,UAAS60P,aAQ/B,SAASlyO,EAAMtpC,GACbw7Q,GAAax7Q,EAQf,SAASo6D,EAAKv7D,GAEZ,MAAMmB,EAAQnB,GAAS,GACjB8jO,EAAS3iO,EAAM0T,MAAM,aACrBklI,EAAO+pF,EAAOA,EAAOvhO,OAAS,GAIpC,OAHA0b,GAAQ6lN,EAAOvhO,OAAS,EACxBulB,EACoB,IAAlBg8M,EAAOvhO,OAAeulB,EAASiyH,EAAKx3I,OAAS,EAAIw3I,EAAKx3I,OAASo6Q,EAC1Dx7Q,GCzBJ,SAASy7Q,KACd,MAAO,CACL3+M,MAAO,CACL4+M,sBAAuBC,GACvBC,iCAAkCC,GAClCC,gBAAiBC,GACjBC,sBAAuBC,IAEzB/kH,KAAM,CACJwkH,sBAAuBQ,GACvBN,iCAAkCO,GAClCL,gBAAiBM,GACjBJ,sBAAuBK,KAYtB,SAASC,KACd,MAAO,CAEL1C,OAAQ,CAAC,CAACt3H,UAAW,IAAKu2H,YAAa,CAAC,WAAY,QAAS,eAC7D97H,SAAU,CAAC+0F,sBAAoBhC,uBAQnC,SAAS6rC,GAAwBvxP,GAC/BtnB,KAAKg6D,MACH,CAAC99D,KAAM,qBAAsBy7N,WAAY,GAAIjzJ,MAAO,GAAInkE,SAAU,IAClE+mB,GAQJ,SAASyxP,KACP/4Q,KAAKkpO,SAOP,SAASmwC,GAAkC/xP,GACzC,MAAMo9C,EAAQ1kE,KAAKmpO,SACb1qO,EACJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKimE,MAAQA,EACbjmE,EAAKk5N,WAAaL,EAChBt3N,KAAKi4J,eAAe3wI,IACpB5R,cAOJ,SAAS0jQ,GAAuB9xP,GAC9BtnB,KAAKo0J,KAAK9sI,GAOZ,SAAS2xP,GAAkB3xP,GACzBtnB,KAAKg6D,MAAM,CAAC99D,KAAM,oBAAqBy7N,WAAY,GAAIjzJ,MAAO,IAAKp9C,GAOrE,SAAS6xP,KACPn5Q,KAAKkpO,SAOP,SAASqwC,GAAuBjyP,GAC9B,MAAMo9C,EAAQ1kE,KAAKmpO,SACb1qO,EACJuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEjCG,EAAKimE,MAAQA,EACbjmE,EAAKk5N,WAAaL,EAChBt3N,KAAKi4J,eAAe3wI,IACpB5R,cAOJ,SAAS4jQ,GAAiBhyP,GACxBtnB,KAAKo0J,KAAK9sI,GAOZ,SAAS0lN,GAAkBvuO,EAAMirF,EAAG/iF,EAAS8yQ,GAC3C,MAAM9B,EAAUc,GAAMgB,GACtB,IAAIv8Q,EAAQy6Q,EAAQrgN,KAAK,MACzB,MAAM88F,EAAOztJ,EAAQqzD,MAAM,qBACrB0/M,EAAU/yQ,EAAQqzD,MAAM,aAW9B,OAVA98D,GAASy6Q,EAAQrgN,KACf45F,GAAKvqJ,EAAS6wQ,GAAY/4Q,GAAO,IAC5Bk5Q,EAAQ3oQ,UACXqK,OAAQnc,EACRgS,MAAO,OAGXwqQ,IACAtlH,IACAl3J,GAASy6Q,EAAQrgN,KAAK,KACfp6D,EAIT,SAASy8Q,KACP,MAAO,IAOT,SAAS3qC,GAAmBvwO,EAAMirF,EAAG/iF,EAAS8yQ,GAC5C,MAAM9B,EAAUc,GAAMgB,GACtB,IAAIv8Q,EAAQy6Q,EAAQrgN,KAAK,MACzB,MAAM88F,EAAOztJ,EAAQqzD,MAAM,sBACrB0/M,EAAU/yQ,EAAQqzD,MAAM,SAkB9B,OAjBA98D,GAASy6Q,EAAQrgN,KACf45F,GAAKvqJ,EAAS6wQ,GAAY/4Q,GAAO,IAC5Bk5Q,EAAQ3oQ,UACXqK,OAAQnc,EACRgS,MAAO,OAGXwqQ,IACAx8Q,GAASy6Q,EAAQrgN,KACf,MAAQ74D,EAAK8B,UAAY9B,EAAK8B,SAASjC,OAAS,EAAI,IAAM,KAE5Dq5Q,EAAQnxO,MAAM,GACdtpC,GAASy6Q,EAAQrgN,KACfwgN,GAAYL,GAAch5Q,EAAMkI,EAASgxQ,EAAQ3oQ,WAAY,KAE/DolJ,IAEOl3J,EAIT,SAAS,GAAI8c,EAAM7K,EAAOo0K,GACxB,OAAc,IAAVp0K,EACK6K,GAGDupK,EAAQ,GAAK,QAAUvpK,ECvL1B,SAAS4/P,GAAkBpqQ,EAAQuQ,EAAOI,GAC/C,MAAMu3P,EAAa33P,EAAM23P,WACnBn3Q,EAAWiP,EAAOjP,UAAY,GAE9ByoF,EAAU,GAChB,IAAI75E,GAAS,EACTkK,EAAS8G,EAAK9G,OAElBq+P,EAAWx1Q,MAAM,GACjB,IAAIy1Q,EAAU53P,EAAM63P,cAAcz3P,GAElC,QAAShR,EAAQ5O,EAASjC,OAAQ,CAChC,MAAM4R,EAAQ3P,EAAS4O,GAEvB,IAAID,EAIJ,GAFAwoQ,EAAWA,EAAWp5Q,OAAS,GAAK6Q,EAEhCA,EAAQ,EAAI5O,EAASjC,OAAQ,CAG/B,IAAIwgD,EAAS/+B,EAAM++B,OAAOm7F,SAAS15I,EAAS4O,EAAQ,GAAGjT,MAGnD4iD,GAAUA,EAAO17B,OAAM07B,EAASA,EAAO17B,MAC3ClU,EAAQ4vC,EACJA,EAAOv+C,EAAS4O,EAAQ,GAAIK,EAAQuQ,EAAO,CACzC1G,OAAQ,GACRnK,MAAO,MACJyoQ,EAAQ3oQ,YACVoH,OAAO,GACV,QAEJlH,EAAQiR,EAAKjR,MAUb85E,EAAQ1qF,OAAS,IACL,OAAX+a,GAA8B,OAAXA,IACL,SAAfnJ,EAAMhU,OAEN8sF,EAAQA,EAAQ1qF,OAAS,GAAK0qF,EAAQA,EAAQ1qF,OAAS,GAAGwa,QACxD,cACA,KAEFO,EAAS,IAGTs+P,EAAU53P,EAAM63P,cAAcz3P,GAC9Bw3P,EAAQrgN,KAAK0xB,EAAQ7mC,KAAK,MAG5B6mC,EAAQ9mF,KACNy1Q,EAAQrgN,KACNv3C,EAAM++B,OAAO5uC,EAAOV,EAAQuQ,EAAO,IAC9B43P,EAAQ3oQ,UACXqK,SACAnK,YAKNmK,EAAS2vE,EAAQA,EAAQ1qF,OAAS,GAAGmE,OAAO,GAK9C,OAFAi1Q,EAAW/zQ,MAEJqlF,EAAQ7mC,KAAK,ID7EtB6qL,GAAkB5pN,KAAOu2P,GEUzB,MAAME,GAAiC,CACrC,WACA,qBACA,iBACA,YACA,aACA,mBAGFC,GAAa12P,KAAO22P,GAOb,MAAMC,GAA+B,CAC1Ch2C,eAAgB,CAAC,UACjBhqK,MAAO,CAACuT,cAAe0sM,IACvB7lH,KAAM,CAAC7mF,cAAe2sM,KAQXC,GAA6B,CACxCrD,OAAQ,CACN,CACEt3H,UAAW,IACXu2H,YAAa,WACbC,eAAgB6D,KAGpB5/H,SAAU,CAAC90I,OAAQ20Q,KAOrB,SAASG,GAAmB3yP,GAC1BtnB,KAAKg6D,MAAM,CAAC99D,KAAM,SAAUqE,SAAU,IAAK+mB,GAO7C,SAAS4yP,GAAkB5yP,GACzBtnB,KAAKo0J,KAAK9sI,GAOZ,SAASwyP,GAAar7Q,EAAMirF,EAAG/iF,EAAS8yQ,GACtC,MAAM9B,EAAUc,GAAMgB,GAChBrlH,EAAOztJ,EAAQqzD,MAAM,iBAC3B,IAAI98D,EAAQy6Q,EAAQrgN,KAAK,MAQzB,OAPAp6D,GAAS08Q,GAAkBn7Q,EAAMkI,EAAS,IACrCgxQ,EAAQ3oQ,UACXqK,OAAQnc,EACRgS,MAAO,MAEThS,GAASy6Q,EAAQrgN,KAAK,MACtB88F,IACOl3J,EAIT,SAAS68Q,KACP,MAAO,ICtFF,SAAS5rC,GAAW1vO,EAAMirF,EAAG3pE,GAClC,IAAI7iB,EAAQuB,EAAKvB,OAAS,GACtBo7J,EAAW,IACXnpJ,GAAS,EAKb,MAAO,IAAIN,OAAO,WAAaypJ,EAAW,YAAYvrJ,KAAK7P,GACzDo7J,GAAY,IAMZ,WAAWvrJ,KAAK7P,KACd,WAAW6P,KAAK7P,IAAU,WAAW6P,KAAK7P,IAAW,QAAQ6P,KAAK7P,MAEpEA,EAAQ,IAAMA,EAAQ,KAUxB,QAASiS,EAAQ4Q,EAAM+2P,OAAOx4Q,OAAQ,CACpC,MAAMylB,EAAUhE,EAAM+2P,OAAO3nQ,GACvB0yO,EAAak2B,GAAeh0P,GAElC,IAAIxV,EAKJ,GAAKwV,EAAQgzM,QAEb,MAAQxoN,EAAQszO,EAAW30O,KAAKhQ,GAAS,CACvC,IAAI05B,EAAWroB,EAAMY,MAIY,KAA/BjS,EAAM8Y,WAAW4gB,IACkB,KAAnC15B,EAAM8Y,WAAW4gB,EAAW,IAE5BA,IAGF15B,EAAQA,EAAMuF,MAAM,EAAGm0B,GAAY,IAAM15B,EAAMuF,MAAM8L,EAAMY,MAAQ,IAIvE,OAAOmpJ,EAAWp7J,EAAQo7J,EAM5B,SAAS8hH,KACP,MAAO,IC6EF,SAASC,GAAc5rC,EAAOryO,EAAU,IAC7C,MAAMu2C,GAASv2C,EAAQu2C,OAAS,IAAIl4B,SAC9B6/P,EAAel+Q,EAAQk+Q,cAAgBC,GAEvCC,EAAa,GAEbC,EAAa,GAEbC,EAAa,GAEbC,EAAsB,GAC5B,IAAIC,EAAkB,EAClBC,GAAY,EAIhB,QAASA,EAAWpsC,EAAMnwO,OAAQ,CAEhC,MAAMowO,EAAM,GAENpiM,EAAQ,GACd,IAAIwuO,GAAe,EAEfrsC,EAAMosC,GAAUv8Q,OAASs8Q,IAC3BA,EAAkBnsC,EAAMosC,GAAUv8Q,QAGpC,QAASw8Q,EAAcrsC,EAAMosC,GAAUv8Q,OAAQ,CAC7C,MAAMswO,EAAOmsC,GAAUtsC,EAAMosC,GAAUC,IAEvC,IAAgC,IAA5B1+Q,EAAQ4+Q,gBAA2B,CACrC,MAAMh6P,EAAOs5P,EAAa1rC,GAC1BtiM,EAAMwuO,GAAe95P,QAGkBuoO,IAArCoxB,EAAoBG,IACpB95P,EAAO25P,EAAoBG,MAE3BH,EAAoBG,GAAe95P,GAIvC0tN,EAAIxsO,KAAK0sO,GAGX6rC,EAAWI,GAAYnsC,EACvBgsC,EAAWG,GAAYvuO,EAIzB,IAAIwuO,GAAe,EAEnB,GAAqB,kBAAVnoO,GAAsB,WAAYA,EAC3C,QAASmoO,EAAcF,EACrBJ,EAAWM,GAAeG,GAAYtoO,EAAMmoO,QAEzC,CACL,MAAMlwQ,EAAOqwQ,GAAYtoO,GAEzB,QAASmoO,EAAcF,EACrBJ,EAAWM,GAAelwQ,EAK9BkwQ,GAAe,EAEf,MAAMpsC,EAAM,GAENpiM,EAAQ,GAEd,QAASwuO,EAAcF,EAAiB,CACtC,MAAMhwQ,EAAO4vQ,EAAWM,GACxB,IAAIzhQ,EAAS,GACTnK,EAAQ,GAEC,KAATtE,GACFyO,EAAS,IACTnK,EAAQ,KACU,MAATtE,EACTyO,EAAS,IACS,MAATzO,IACTsE,EAAQ,KAIV,IAAI8R,GAC0B,IAA5B5kB,EAAQ4+Q,gBACJ,EACAzmQ,KAAKyC,IACH,EACA2jQ,EAAoBG,GAAezhQ,EAAO/a,OAAS4Q,EAAM5Q,QAGjE,MAAMswO,EAAOv1N,EAAS,IAAI27C,OAAOh0C,GAAQ9R,GAET,IAA5B9S,EAAQ4+Q,kBACVh6P,EAAO3H,EAAO/a,OAAS0iB,EAAO9R,EAAM5Q,OAEhC0iB,EAAO25P,EAAoBG,KAC7BH,EAAoBG,GAAe95P,GAGrCsrB,EAAMwuO,GAAe95P,GAGvB0tN,EAAIosC,GAAelsC,EAIrB6rC,EAAWhzQ,OAAO,EAAG,EAAGinO,GACxBgsC,EAAWjzQ,OAAO,EAAG,EAAG6kC,GAExBuuO,GAAY,EAEZ,MAAMrxQ,EAAQ,GAEd,QAASqxQ,EAAWJ,EAAWn8Q,OAAQ,CACrC,MAAMowO,EAAM+rC,EAAWI,GACjBvuO,EAAQouO,EAAWG,GACzBC,GAAe,EAEf,MAAM9gQ,EAAO,GAEb,QAAS8gQ,EAAcF,EAAiB,CACtC,MAAMhsC,EAAOF,EAAIosC,IAAgB,GACjC,IAAIzhQ,EAAS,GACTnK,EAAQ,GAEZ,IAAgC,IAA5B9S,EAAQ4+Q,gBAA2B,CACrC,MAAMh6P,EACJ25P,EAAoBG,IAAgBxuO,EAAMwuO,IAAgB,GACtDlwQ,EAAO4vQ,EAAWM,GAEX,MAATlwQ,EACFyO,EAAS,IAAI27C,OAAOh0C,GACF,KAATpW,EACLoW,EAAO,GACT3H,EAAS,IAAI27C,OAAOh0C,EAAO,EAAI,IAC/B9R,EAAQ,IAAI8lD,OAAOh0C,EAAO,EAAI,MAE9B3H,EAAS,IAAI27C,OAAOh0C,EAAO,GAC3B9R,EAAQmK,GAGVnK,EAAQ,IAAI8lD,OAAOh0C,IAIQ,IAA3B5kB,EAAQ8+Q,gBAA6BJ,GACvC9gQ,EAAK9X,KAAK,MAIU,IAApB9F,EAAQmnC,UAGsB,IAA5BnnC,EAAQ4+Q,iBAAsC,KAATpsC,IACX,IAA3BxyO,EAAQ8+Q,iBAA4BJ,GAErC9gQ,EAAK9X,KAAK,MAGoB,IAA5B9F,EAAQ4+Q,iBACVhhQ,EAAK9X,KAAKmX,GAGZW,EAAK9X,KAAK0sO,IAEsB,IAA5BxyO,EAAQ4+Q,iBACVhhQ,EAAK9X,KAAKgN,IAGY,IAApB9S,EAAQmnC,SACVvpB,EAAK9X,KAAK,MAIe,IAAzB9F,EAAQ++Q,cACRL,IAAgBF,EAAkB,GAElC5gQ,EAAK9X,KAAK,KAIdsH,EAAMtH,MACqB,IAAzB9F,EAAQ++Q,aACJnhQ,EAAKmoC,KAAK,IAAIrpC,QAAQ,MAAO,IAC7BkB,EAAKmoC,KAAK,KAIlB,OAAO34C,EAAM24C,KAAK,MAOpB,SAAS44N,GAAU79Q,GACjB,OAAiB,OAAVA,QAA4BqsP,IAAVrsP,EAAsB,GAAKglB,OAAOhlB,GAO7D,SAASq9Q,GAAoBr9Q,GAC3B,OAAOA,EAAMoB,OAOf,SAAS28Q,GAAY/9Q,GACnB,MAAM0N,EAAwB,kBAAV1N,EAAqBA,EAAM8zQ,YAAY,GAAK,EAEhE,OAAgB,KAATpmQ,GAAkC,KAATA,EAC5B,GACS,KAATA,GAAkC,MAATA,EACzB,IACS,KAATA,GAAkC,MAATA,EACzB,IACA,EDlXNujO,GAAW/qN,KAAOg3P,GEmCX,MAAMgB,GAAuB,CAClCphN,MAAO,CACLy0K,MAAO4sC,GACPC,UAAWC,GACXC,YAAaD,GACbE,SAAUC,IAEZtnH,KAAM,CACJvpJ,SAAU8wQ,GACVltC,MAAOmtC,GACPN,UAAW,GACXE,YAAa,GACbC,SAAU,KAQd,SAASJ,GAAW/zP,GAGlB,MAAMqrB,EAAQrrB,EAAM6sP,OACpBn0Q,KAAKg6D,MACH,CACE99D,KAAM,QACNy2C,MAAOA,EAAM9sC,IAAKxG,GAAa,SAANA,EAAe,KAAOA,GAC/CkB,SAAU,IAEZ+mB,GAEFtnB,KAAKmnD,QAAQ,WAAW,GAO1B,SAASy0N,GAAUt0P,GACjBtnB,KAAKo0J,KAAK9sI,GACVtnB,KAAKmnD,QAAQ,WAOf,SAASu0N,GAASp0P,GAChBtnB,KAAKg6D,MAAM,CAAC99D,KAAM,WAAYqE,SAAU,IAAK+mB,GAO/C,SAAS,GAAKA,GACZtnB,KAAKo0J,KAAK9sI,GAOZ,SAASi0P,GAAUj0P,GACjBtnB,KAAKg6D,MAAM,CAAC99D,KAAM,YAAaqE,SAAU,IAAK+mB,GAShD,SAASq0P,GAAar0P,GACpB,IAAIpqB,EAAQ8C,KAAKmpO,SAEbnpO,KAAKgnD,QAAQ,aACf9pD,EAAQA,EAAM4b,QAAQ,aAAc,KAGtC,MAAMra,EAAkCuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GACvEG,EAAKvB,MAAQA,EACb8C,KAAKo0J,KAAK9sI,GAQZ,SAAS,GAAQmrH,EAAIkH,GAEnB,MAAc,MAAPA,EAAaA,EAAKlH,EAYpB,SAASopI,GAAmBz/Q,GACjC,MAAMm3I,EAAWn3I,GAAW,GACtBmnC,EAAUgwG,EAASuoI,iBACnBd,EAAkBznI,EAASwoI,eAC3BzB,EAAe/mI,EAAS+mI,aACxB0B,EAASz4O,EAAU,IAAM,IAE/B,MAAO,CACLuzO,OAAQ,CACN,CAACt3H,UAAW,KAAMu2H,YAAa,aAC/B,CAACv2H,UAAW,KAAMu2H,YAAa,aAG/B,CAACh/C,SAAS,EAAMv3E,UAAW,IAAKtwI,MAAO,WAEvC,CAACswI,UAAW,IAAKu2H,YAAa,aAG9B,CAACh/C,SAAS,EAAMv3E,UAAW,IAAKtwI,MAAO,KAMvC,CAAC6nN,SAAS,EAAMv3E,UAAW,IAAKtwI,MAAO,UAEzC+qI,SAAU,CACRw0F,MAAOwtC,EACPR,SAAUS,EACVC,UAAWC,EACXjuC,WAAYkuC,IAQhB,SAASJ,EAAYx9Q,EAAMirF,EAAG/iF,EAAS8yQ,GACrC,OAAO6C,EACLC,EAAkB99Q,EAAMkI,EAAS8yQ,GACjCh7Q,EAAKk0C,OAYT,SAASupO,EAAez9Q,EAAMirF,EAAG/iF,EAAS8yQ,GACxC,MAAM/qC,EAAM8tC,EAAqB/9Q,EAAMkI,EAAS8yQ,GAC1Cv8Q,EAAQo/Q,EAAc,CAAC5tC,IAE7B,OAAOxxO,EAAMuF,MAAM,EAAGvF,EAAMwH,QAAQ,OAOtC,SAAS03Q,EAAgB39Q,EAAMirF,EAAG/iF,EAAS8yQ,GACzC,MAAMrlH,EAAOztJ,EAAQqzD,MAAM,aACrB0/M,EAAU/yQ,EAAQqzD,MAAM,YACxB98D,EAAQ08Q,GAAkBn7Q,EAAMkI,EAAS,IAC1C8yQ,EACHpgQ,OAAQ2iQ,EACR9sQ,MAAO8sQ,IAIT,OAFAtC,IACAtlH,IACOl3J,EAOT,SAASo/Q,EAAcG,EAAQ9pO,GAC7B,OAAO0nO,GAAcoC,EAAQ,CAC3B9pO,QAEAqoO,kBAEAz3O,UAEA+2O,iBASJ,SAASiC,EAAkB99Q,EAAMkI,EAAS8yQ,GACxC,MAAMl5Q,EAAW9B,EAAK8B,SACtB,IAAI4O,GAAS,EAEb,MAAMqO,EAAS,GACTk8P,EAAU/yQ,EAAQqzD,MAAM,SAE9B,QAAS7qD,EAAQ5O,EAASjC,OACxBkf,EAAOrO,GAASqtQ,EACdj8Q,EAAS4O,GACTxI,EACA8yQ,GAMJ,OAFAC,IAEOl8P,EAQT,SAASg/P,EAAqB/9Q,EAAMkI,EAAS8yQ,GAC3C,MAAMl5Q,EAAW9B,EAAK8B,SACtB,IAAI4O,GAAS,EAEb,MAAMqO,EAAS,GACTk8P,EAAU/yQ,EAAQqzD,MAAM,YAE9B,QAAS7qD,EAAQ5O,EAASjC,OAIxBkf,EAAOrO,GAASitQ,EACd77Q,EAAS4O,GACT1Q,EACAkI,EACA8yQ,GAMJ,OAFAC,IAEOl8P,EAOT,SAAS6+P,EAAoB59Q,EAAM+Q,EAAQ7I,GACzC,IAAIzJ,EAAQixO,GAAW1vO,EAAM+Q,EAAQ7I,GAMrC,OAJIA,EAAQiiF,MAAMtJ,SAAS,eACzBpiF,EAAQA,EAAM4b,QAAQ,MAAO,SAGxB5b,GCzSJ,SAASw/Q,GAAY38P,GAC1B,MAAMgJ,EAAShJ,EAAM3jB,QAAQyvE,QAAU,IAEvC,GAAe,MAAX9iD,GAA6B,MAAXA,GAA6B,MAAXA,EACtC,MAAM,IAAIjnB,MACR,gCACEinB,EACA,qDAIN,OAAOA,ECXF,SAAS4zP,GAAoB58P,GAClC,MAAMlQ,EAAQkQ,EAAM3jB,QAAQwgR,gBAAkB,MAI9C,GAAc,IAAV/sQ,GAAyB,MAAVA,EACjB,MAAO,MAGT,GAAc,QAAVA,GAA6B,QAAVA,GAA6B,UAAVA,EACxC,MAAM,IAAI/N,MACR,gCACE+N,EACA,qEAIN,OAAOA,ECRF,SAAS01N,GAAS9mO,EAAM+Q,EAAQuQ,EAAOI,GAC5C,MAAMy8P,EAAiBD,GAAoB58P,GAC3C,IAAI8rD,EAAS9rD,EAAM88P,eAAiBH,GAAY38P,GAG5CvQ,GAA0B,SAAhBA,EAAOtT,MAAmBsT,EAAOy6N,UAC7Cp+J,GAC2B,kBAAjBr8D,EAAOsB,OAAsBtB,EAAOsB,OAAS,EACjDtB,EAAOsB,MACP,KACmC,IAAtCiP,EAAM3jB,QAAQ0gR,oBACX,EACAttQ,EAAOjP,SAASmE,QAAQjG,IAC5BotE,GAGJ,IAAI7qD,EAAO6qD,EAAOvtE,OAAS,GAGN,QAAnBs+Q,GACoB,UAAnBA,IACGptQ,GAA0B,SAAhBA,EAAOtT,MAAmBsT,EAAO06N,QAAWzrO,EAAKyrO,WAE/DlpN,EAA6B,EAAtBzM,KAAKmC,KAAKsK,EAAO,IAG1B,MAAM22P,EAAU53P,EAAM63P,cAAcz3P,GACpCw3P,EAAQrgN,KAAKuU,EAAS,IAAI7W,OAAOh0C,EAAO6qD,EAAOvtE,SAC/Cq5Q,EAAQnxO,MAAMxlB,GACd,MAAMozI,EAAOr0I,EAAMi6C,MAAM,YACnB98D,EAAQ6iB,EAAM+3P,YAClB/3P,EAAM03P,cAAch5Q,EAAMk5Q,EAAQ3oQ,WAClCnJ,GAIF,OAFAuuJ,IAEOl3J,EAGP,SAAS2I,EAAImU,EAAM7K,EAAOo0K,GACxB,OAAIp0K,GACMo0K,EAAQ,GAAK,IAAIvuH,OAAOh0C,IAAShH,GAGnCupK,EAAQ13G,EAASA,EAAS,IAAI7W,OAAOh0C,EAAO6qD,EAAOvtE,SAAW0b,GChCnE,MAAM+iQ,GAA8B,CACzC3oH,KAAM,CACJ4oH,0BAA2BC,GAC3BC,4BAA6BD,GAC7Bn3C,UAAWq3C,KASFC,GAA4B,CACvCtG,OAAQ,CAAC,CAAC//C,SAAS,EAAMv3E,UAAW,IAAKtwI,MAAO,UAChD+qI,SAAU,CAACsrF,SAAU83C,KAOvB,SAASJ,GAAU31P,GACjB,MAAM7oB,EAAgCuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAErEG,EAAKo/E,QAAyB,8BAAfv2D,EAAMprB,KAOvB,SAASihR,GAA8B71P,GACrC,MAAM9X,EAAiCxP,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAEtE,GACEkR,GACgB,aAAhBA,EAAOtT,MACmB,mBAAnBsT,EAAOquE,QACd,CACA,MAAMp/E,EAAiCuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GAChEwkC,EAAOrkC,EAAK8B,SAAS,GAE3B,GAAIuiC,GAAsB,SAAdA,EAAK5mC,KAAiB,CAChC,MAAMuhJ,EAAWjuI,EAAOjP,SACxB,IAEI+8Q,EAFAnuQ,GAAS,EAIb,QAASA,EAAQsuI,EAASn/I,OAAQ,CAChC,MAAMqhD,EAAU89F,EAAStuI,GACzB,GAAqB,cAAjBwwC,EAAQzjD,KAAsB,CAChCohR,EAAkB39N,EAClB,OAIA29N,IAAoB7+Q,IAEtBqkC,EAAK5lC,MAAQ4lC,EAAK5lC,MAAMuF,MAAM,GAEJ,IAAtBqgC,EAAK5lC,MAAMoB,OACbG,EAAK8B,SAASimC,QAEd/nC,EAAKm4B,UACLkM,EAAKlM,UACiC,kBAA/BkM,EAAKlM,SAAS9lB,MAAM8Z,SAE3BkY,EAAKlM,SAAS9lB,MAAM+S,SACpBif,EAAKlM,SAAS9lB,MAAM8Z,SACpBnsB,EAAKm4B,SAAS9lB,MAAQjU,OAAO0hD,OAAO,GAAIzb,EAAKlM,SAAS9lB,UAM9D9Q,KAAKo0J,KAAK9sI,GAOZ,SAAS+1P,GAAyB5+Q,EAAM+Q,EAAQ7I,EAAS8yQ,GACvD,MAAM32O,EAAOrkC,EAAK8B,SAAS,GACrBg9Q,EACoB,mBAAjB9+Q,EAAKo/E,SAAyB/6C,GAAsB,cAAdA,EAAK5mC,KAC9CshR,EAAW,KAAO/+Q,EAAKo/E,QAAU,IAAM,KAAO,KAC9C85L,EAAUc,GAAMgB,GAElB8D,GACF5F,EAAQrgN,KAAKkmN,GAGf,IAAItgR,EAAQqoO,GAAS9mO,EAAM+Q,EAAQ7I,EAAS,IACvC8yQ,KACA9B,EAAQ3oQ,YAOb,OAJIuuQ,IACFrgR,EAAQA,EAAM4b,QAAQ,kCAAmCqnD,IAGpDjjE,EAMP,SAASijE,EAAMsyE,GACb,OAAOA,EAAK+qI,GCxGT,SAASC,KACd,MAAO,CACLxH,GACA0C,KACAqB,GACAoB,GACA2B,IAcG,SAASW,GAActhR,GAC5B,MAAO,CACL02J,WAAY,CACV+jH,GACA2C,KACAW,GACA0B,GAAmBz/Q,GACnBghR,KClDS,SAASO,GAAUvhR,EAAU,IAC1C,MAAM2E,EAAOf,KAAKe,OAUlB,SAAS+C,EAAI85D,EAAO1gE,GAClB,MAAMquE,EAGJxqE,EAAK68D,GAAS78D,EAAK68D,GAAU78D,EAAK68D,GAAS,GAG7C2N,EAAKrpE,KAAKhF,GAfZ4G,EAAI,sBAAuBsxQ,GAAIh5Q,IAC/B0H,EAAI,yBAA0B25Q,MAC9B35Q,EAAI,uBAAwB45Q,GAActhR,ICjB5C,MAAM4O,GAAQ,CACZ4yQ,cAAe,4ZACfC,aAAc,mZACdC,YAAa,sXAETC,GAAS,gBACTC,GAAa,OACbvvC,GAAQ,QACRwvC,GAAe,UACfC,GAAO,YACPC,GAAW,OACXxzQ,GAAK,CACTozQ,UACAC,cACAvvC,SACAwvC,gBACAC,QACAC,aAEF,SAAS,IACP/jM,OAAQgkM,KACLC,GACD,IACF,MAAMjkM,EAAS,IAAKzvE,MAAOyzQ,GAC3B,MAAO,CACLjnC,OAAShC,GAAcA,EAAUt9E,IAAI8lH,GAAWU,GAChD7jM,QAAS,CACP,CACEpqD,MAAOgqD,EAAO2jM,OACdxjM,KAAMvvE,GAAM4yQ,cACZ91Q,WAAY,KAAKsyE,EAAO4jM,eACxBn+Q,QAAS,CACP3D,KAAM,SACN,OAAM,SAAEy+E,EAAQ,OAAEzB,IAChByB,EAAS,MACTzB,EAAOlzC,WAIb,CACE5V,MAAOgqD,EAAO8jM,KACd3jM,KAAMvvE,GAAM6yQ,aACZ/1Q,WAAY,SAASsyE,EAAO+jM,SAC5Bt+Q,QAAS,CACP3D,KAAM,SACN,OAAM,aAAEu+E,EAAY,OAAEvB,IACpBuB,EAAczgE,GAAS,SAAWA,GAClCk/D,EAAOlzC,WAIb,CACE5V,MAAOgqD,EAAOq0J,MACdl0J,KAAMvvE,GAAM8yQ,YACZj+Q,QAAS,CACP3D,KAAM,SACN,OAAM,OAAEg9E,EAAM,YAAEa,EAAW,WAAEf,IAC3B,MAAM,KAAEh/D,GAAS+/D,EACf,KAAKK,EAAO6jM,+CAKd/kM,EAAOl+B,aACLg+B,EAAW32D,IAAIrI,EAAM,GACrBg/D,EAAW32D,IAAIrI,EAAM,EAAIogE,EAAO6jM,aAAa3/Q,SAE/C46E,EAAOlzC,aC1DZ,MAAMs4O,GAAW,CACtB9tM,SAAU+tM,GACVtoH,UAAU,GAINuoH,GAAsB,CAC1BhuM,SAAUiuM,GACVvlH,SAAS,GAOX,SAASqlH,GAAmBpqH,EAASlX,EAAIga,GACvC,MAAMohF,EAAOr4O,KACP81I,EAAOuiG,EAAKhoM,OAAOgoM,EAAKhoM,OAAO/xC,OAAS,GACxCw/N,EACJhoF,GAAyB,eAAjBA,EAAK,GAAG55I,KACZ45I,EAAK,GAAGmiB,eAAeniB,EAAK,IAAI,GAAMx3I,OACtC,EACN,IAAI60N,EAAW,EACf,OAAOriN,EAcP,SAASA,EAAMlG,GAIb,OAHAupJ,EAAQn6F,MAAM,YACdm6F,EAAQn6F,MAAM,iBACdm6F,EAAQn6F,MAAM,yBACPo5J,EAAaxoN,GAetB,SAASwoN,EAAaxoN,GACpB,OAAa,KAATA,GACFupJ,EAAQnwI,QAAQpZ,GAChBuoN,IACOC,GAELD,EAAW,EACNl8D,EAAIrsJ,IAEbupJ,EAAQC,KAAK,yBACNF,EAAaC,EAASuqH,EAAY,aAAlCxqH,CAAgDtpJ,IAgBzD,SAAS8zQ,EAAW9zQ,GAClB,OAAa,OAATA,GAAiBkpJ,EAAmBlpJ,GAC/B+zQ,EAAU/zQ,IAEnBupJ,EAAQn6F,MAAM,qBACdm6F,EAAQn6F,MAAM,cAAe,CAC3B46F,YAAa,WAER4+D,EAAK5oN,IAed,SAAS4oN,EAAK5oN,GACZ,OAAa,OAATA,GAAiBkpJ,EAAmBlpJ,IACtCupJ,EAAQC,KAAK,eACbD,EAAQC,KAAK,qBACNuqH,EAAU/zQ,IAEN,KAATA,EACKqsJ,EAAIrsJ,IAEbupJ,EAAQnwI,QAAQpZ,GACT4oN,GAeT,SAASmrD,EAAU/zQ,GAGjB,OADAupJ,EAAQC,KAAK,iBACTikF,EAAKliF,UACAlZ,EAAGryI,GAELupJ,EAAQK,QACbgqH,GACAI,EACA1vQ,EAHKilJ,CAILvpJ,GAgBJ,SAASg0Q,EAA0Bh0Q,GACjC,OAAOupJ,EAAQK,QACb,CACEhkF,SAAUuiJ,EACV75D,SAAS,GAEXhqJ,EACAqlJ,EANKJ,CAOLvpJ,GAeJ,SAAS2pJ,EAAa3pJ,GACpB,OACEkzN,EACI5pE,EACEC,EACA0qH,EACA,aACA/gD,EAAc,GAEhB+gD,GACJj0Q,GAeJ,SAASi0Q,EAAmBj0Q,GAC1B,OAAa,OAATA,EACKsE,EAAMtE,GAEXkpJ,EAAmBlpJ,GACdupJ,EAAQK,QACbgqH,GACAI,EACA1vQ,EAHKilJ,CAILvpJ,IAEJupJ,EAAQn6F,MAAM,iBACP8kN,EAAal0Q,IAetB,SAASk0Q,EAAal0Q,GACpB,OAAa,OAATA,GAAiBkpJ,EAAmBlpJ,IACtCupJ,EAAQC,KAAK,iBACNyqH,EAAmBj0Q,KAE5BupJ,EAAQnwI,QAAQpZ,GACTk0Q,GAeT,SAAS5vQ,EAAMtE,GAEb,OADAupJ,EAAQC,KAAK,YACNnX,EAAGryI,GAIZ,SAASmoN,EAAqB5+D,EAASlX,EAAIga,GACzC,IAAIj2I,EAAO,EAWX,OAAOkzI,EACLC,EACA4qH,EACA,aACA1mC,EAAK9oI,OAAO4jD,WAAW+D,QAAQC,KAAK73E,SAAS,qBACzCiqK,EACA,GAeN,SAASw1B,EAAoBn0Q,GAG3B,OAFAupJ,EAAQn6F,MAAM,iBACdm6F,EAAQn6F,MAAM,yBACPglN,EAAcp0Q,GAevB,SAASo0Q,EAAcp0Q,GACrB,OAAa,KAATA,GACFoW,IACAmzI,EAAQnwI,QAAQpZ,GACTo0Q,GAELh+P,EAAOmyM,EACFl8D,EAAIrsJ,IAEbupJ,EAAQC,KAAK,yBACNF,EAAaC,EAAS8qH,EAAoB,aAA1C/qH,CAAwDtpJ,IAejE,SAASq0Q,EAAmBr0Q,GAC1B,OAAa,OAATA,GAAiBkpJ,EAAmBlpJ,IACtCupJ,EAAQC,KAAK,iBACNnX,EAAGryI,IAELqsJ,EAAIrsJ,KASjB,SAAS6zQ,GAA4BtqH,EAASlX,EAAIga,GAChD,MAAMohF,EAAOr4O,KACb,OAAO8Q,EAGP,SAASA,EAAMlG,GACb,OAAa,OAATA,EACKqyI,EAAGryI,IAEZupJ,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,cACNxzI,GAIT,SAASA,EAAUhW,GACjB,OAAOytO,EAAK9oI,OAAOgnD,KAAK8hF,EAAK7hF,MAAMx8I,MAAQi9I,EAAIrsJ,GAAQqyI,EAAGryI,IC5VvD,SAASs0Q,GAAS9iR,GACvB,MAAMo1Q,EAAWp1Q,GAAW,GAC5B,IAAI4zJ,EAASwhH,EAAS2N,qBAItB,OAHe,OAAXnvH,QAA8Bu5F,IAAXv5F,IACrBA,GAAS,GAEJ,CACLx/E,SAAU4uM,EACV9iR,QAAS+iR,GACTxqH,SAAQ,IAOV,SAASuqH,EAAiBjrH,EAASlX,EAAIga,GAErC,IAEIj2I,EAEAsG,EAJA6rM,EAAW,EAKf,OAAOriN,EAcP,SAASA,EAAMlG,GAGb,OAFAupJ,EAAQn6F,MAAM,YACdm6F,EAAQn6F,MAAM,oBACPo5J,EAAaxoN,GActB,SAASwoN,EAAaxoN,GACpB,OAAa,KAATA,GACFupJ,EAAQnwI,QAAQpZ,GAChBuoN,IACOC,GAILD,EAAW,IAAMnjE,EACZiH,EAAIrsJ,IAEbupJ,EAAQC,KAAK,oBACN6tB,EAAQr3K,IAajB,SAASq3K,EAAQr3K,GACf,OAAa,OAATA,EACKqsJ,EAAIrsJ,GAEA,KAATA,GACF0c,EAAQ6sI,EAAQn6F,MAAM,oBACtBh5C,EAAO,EACAg+P,EAAcp0Q,IAIV,KAATA,GACFupJ,EAAQn6F,MAAM,SACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,SACN6tB,GAELnuB,EAAmBlpJ,IACrBupJ,EAAQn6F,MAAM,cACdm6F,EAAQnwI,QAAQpZ,GAChBupJ,EAAQC,KAAK,cACN6tB,IAIT9tB,EAAQn6F,MAAM,gBACPj5D,EAAK6J,IAad,SAAS7J,EAAK6J,GACZ,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACAkpJ,EAAmBlpJ,IAEnBupJ,EAAQC,KAAK,gBACN6tB,EAAQr3K,KAEjBupJ,EAAQnwI,QAAQpZ,GACT7J,GAcT,SAASi+Q,EAAcp0Q,GAErB,OAAa,KAATA,GACFupJ,EAAQnwI,QAAQpZ,GAChBoW,IACOg+P,GAILh+P,IAASmyM,GACXh/D,EAAQC,KAAK,oBACbD,EAAQC,KAAK,YACNnX,EAAGryI,KAIZ0c,EAAMprB,KAAO,eACN6E,EAAK6J,MAMlB,SAASy0Q,GAAgBhvO,GACvB,IAGIlhC,EAEA6qD,EALAy6J,EAAgBpkL,EAAO/xC,OAAS,EAChCo2N,EAAiB,EAOrB,IACsC,eAAnCrkL,EAAOqkL,GAAgB,GAAGx4N,MACU,UAAnCm0C,EAAOqkL,GAAgB,GAAGx4N,QACO,eAAlCm0C,EAAOokL,GAAe,GAAGv4N,MACU,UAAlCm0C,EAAOokL,GAAe,GAAGv4N,MAC3B,CACAiT,EAAQulN,EAGR,QAASvlN,EAAQslN,EACf,GAA8B,iBAA1BpkL,EAAOlhC,GAAO,GAAGjT,KAAyB,CAE5Cm0C,EAAOokL,GAAe,GAAGv4N,KAAO,kBAChCm0C,EAAOqkL,GAAgB,GAAGx4N,KAAO,kBACjCw4N,GAAkB,EAClBD,GAAiB,EACjB,OAMNtlN,EAAQulN,EAAiB,EACzBD,IACA,QAAStlN,GAASslN,OACF80B,IAAVvvL,EACE7qD,IAAUslN,GAA2C,eAA1BpkL,EAAOlhC,GAAO,GAAGjT,OAC9C89D,EAAQ7qD,GAGVA,IAAUslN,GACgB,eAA1BpkL,EAAOlhC,GAAO,GAAGjT,OAEjBm0C,EAAO2pB,GAAO,GAAG99D,KAAO,eACpBiT,IAAU6qD,EAAQ,IACpB3pB,EAAO2pB,GAAO,GAAGjpD,IAAMs/B,EAAOlhC,EAAQ,GAAG,GAAG4B,IAC5Cs/B,EAAO5oC,OAAOuyD,EAAQ,EAAG7qD,EAAQ6qD,EAAQ,GACzCy6J,GAAiBtlN,EAAQ6qD,EAAQ,EACjC7qD,EAAQ6qD,EAAQ,GAElBA,OAAQuvL,GAGZ,OAAOl5M,EAOT,SAAS,GAASzlC,GAEhB,OACW,KAATA,GACgD,oBAAhD5K,KAAKqwC,OAAOrwC,KAAKqwC,OAAO/xC,OAAS,GAAG,GAAGpC,KC/OpC,SAAS,GAAKE,GACnB,MAAO,CACLs6J,KAAM,CACJ,CAAC,IAAK4nH,IAERpkQ,KAAM,CACJ,CAAC,IAAKglQ,GAAS9iR,KCbd,SAASkjR,GAAcpiR,EAAO+1E,GACnC,MAAM/oE,EAASgY,OAAOhlB,GACtB,IAAIiS,EAAQjF,EAAOxF,QAAQuuE,GACvB6+J,EAAW3iO,EACXE,EAAQ,EACR2H,EAAM,EAEV,GAAyB,kBAAdi8D,EACT,MAAM,IAAIgkE,UAAU,sBAGtB,OAAkB,IAAX9nI,EACDA,IAAU2iO,IACNziO,EAAQ2H,IACZA,EAAM3H,GAGRA,EAAQ,EAGVyiO,EAAW3iO,EAAQ8jE,EAAU30E,OAC7B6Q,EAAQjF,EAAOxF,QAAQuuE,EAAW6+J,GAGpC,OAAO96N,ECJF,SAASuoQ,KACd,MAAO,CACLvlN,MAAO,CACLskN,SAAUkB,EACVC,kBAAmBC,EACnBR,SAAUS,GAEZvrH,KAAM,CACJkqH,SAAUsB,EACVC,cAAeC,EACfL,kBAAmBM,EACnBC,cAAeC,EACff,SAAUgB,EACVC,aAAcF,IAQlB,SAAST,EAAcl4P,GACrBtnB,KAAKg6D,MACH,CACE99D,KAAM,OACNs3N,KAAM,KACNt2N,MAAO,GACP6D,KAAM,CACJquO,MAAO,MACPC,YAAa,CAACpgO,UAAW,CAAC,OAAQ,iBAClCqgO,UAAW,CAAC,CAACpzO,KAAM,OAAQgB,MAAO,OAGtCoqB,GAQJ,SAASo4P,IACP1/Q,KAAKkpO,SAOP,SAAS62C,IACP,MAAMh/Q,EAAOf,KAAKmpO,SACZ1qO,EAA4BuB,KAAK4oF,MAAM5oF,KAAK4oF,MAAMtqF,OAAS,GACjEG,EAAK+0N,KAAOzyN,EAOd,SAAS++Q,IAEH9/Q,KAAKgnD,QAAQ,oBACjBhnD,KAAKkpO,SACLlpO,KAAKmnD,QAAQ,kBAAkB,IAOjC,SAASy4N,EAAat4P,GACpB,MAAMvmB,EAAOf,KAAKmpO,SAASrwN,QAAQ,2BAA4B,IACzDra,EAA4BuB,KAAKo0J,KAAK9sI,GAC5C7oB,EAAKvB,MAAQ6D,EAEbtC,EAAKsC,KAAKuuO,UAAU,GAAGpyO,MAAQ6D,EAC/Bf,KAAKmnD,QAAQ,kBAOf,SAASw4N,EAAcr4P,GACrBtnB,KAAKg6D,MACH,CACE99D,KAAM,aACNgB,MAAO,GACP6D,KAAM,CACJquO,MAAO,OACPC,YAAa,CAACpgO,UAAW,CAAC,OAAQ,gBAClCqgO,UAAW,CAAC,CAACpzO,KAAM,OAAQgB,MAAO,OAGtCoqB,GAEFtnB,KAAKkpO,SAOP,SAASg3C,EAAa54P,GACpB,MAAMvmB,EAAOf,KAAKmpO,SACZ1qO,EAA4BuB,KAAKo0J,KAAK9sI,GAC5C7oB,EAAKvB,MAAQ6D,EAEbtC,EAAKsC,KAAKuuO,UAAU,GAAGpyO,MAAQ6D,EAOjC,SAASk/Q,EAAa34P,GACpBtnB,KAAK4sE,OAAO5S,MAAMj5D,KAAKd,KAAKD,KAAMsnB,GAClCtnB,KAAK4sE,OAAOwnF,KAAKrzJ,KAAKd,KAAKD,KAAMsnB,IAY9B,SAAS84P,GAAehkR,GAC7B,IAAI4zJ,GAAU5zJ,GAAW,IAAI+iR,qBAQ7B,OANe,OAAXnvH,QAA8Bu5F,IAAXv5F,IACrBA,GAAS,GAGXqwH,EAAWj9P,KAAOk9P,EAEX,CACLxJ,OAAQ,CACN,CAACt3H,UAAW,KAAMu2H,YAAa,gBAC/B,CAACv2H,UAAW,KAAMu2H,YAAa,gBAC/B,CACEv2H,UAAW,IACXtwI,MAAO8gJ,OAASu5F,EAAY,MAC5BwsB,YAAa,YAEf,CAACv2H,UAAW,IAAKu2H,YAAa,gBAC9B,CAACh/C,SAAS,EAAMv3E,UAAW,IAAKtwI,MAAO,QAEzC+qI,SAAU,CAACsmI,OAAMF,eAUnB,SAASE,EAAK9hR,EAAMirF,EAAG/iF,EAAS8yQ,GAC9B,MAAM/9H,EAAMj9I,EAAKvB,OAAS,GACpBy6Q,EAAUc,GAAMgB,GAChBnhH,EAAW,IAAItjG,OAAOzgD,KAAKyC,IAAIsoQ,GAAc5jI,EAAK,KAAO,EAAG,IAC5D0Y,EAAOztJ,EAAQqzD,MAAM,YAC3B,IAAI98D,EAAQy6Q,EAAQrgN,KAAKghG,GAEzB,GAAI75J,EAAK+0N,KAAM,CACb,MAAMkmD,EAAU/yQ,EAAQqzD,MAAM,gBAC9B98D,GAASy6Q,EAAQrgN,KACf45F,GAAKvqJ,EAASlI,EAAK+0N,KAAM,CACvBn6M,OAAQnc,EACRgS,MAAO,KACPs+N,OAAQ,CAAC,QACNmqC,EAAQ3oQ,aAGf0qQ,IAWF,OARAx8Q,GAASy6Q,EAAQrgN,KAAK,MAElBokF,IACFx+I,GAASy6Q,EAAQrgN,KAAKokF,EAAM,OAG9Bx+I,GAASy6Q,EAAQrgN,KAAKghG,GACtBlE,IACOl3J,EAYT,SAASmjR,EAAW5hR,EAAMirF,EAAG/iF,GAC3B,IAAIzJ,EAAQuB,EAAKvB,OAAS,GACtB8jB,EAAO,EAENgvI,GAAQhvI,IAKb,MACE,IAAInS,OAAO,WAAa,MAAMmmD,OAAOh0C,GAAQ,YAAYjU,KAAK7P,GAE9D8jB,IAGF,MAAMs3I,EAAW,IAAItjG,OAAOh0C,GAO1B,WAAWjU,KAAK7P,KAEd,WAAW6P,KAAK7P,IAAU,WAAW6P,KAAK7P,IAE1C,UAAU6P,KAAK7P,MAEjBA,EAAQ,IAAMA,EAAQ,KAGxB,IAAIiS,GAAS,EASb,QAASA,EAAQxI,EAAQmwQ,OAAOx4Q,OAAQ,CACtC,MAAMylB,EAAUpd,EAAQmwQ,OAAO3nQ,GACzB0yO,EAAak2B,GAAeh0P,GAElC,IAAIxV,EAKJ,GAAKwV,EAAQgzM,QAEb,MAAQxoN,EAAQszO,EAAW30O,KAAKhQ,GAAS,CACvC,IAAI05B,EAAWroB,EAAMY,MAIa,KAAhCjS,EAAM8zQ,YAAYp6O,IACkB,KAApC15B,EAAM8zQ,YAAYp6O,EAAW,IAE7BA,IAGF15B,EAAQA,EAAMuF,MAAM,EAAGm0B,GAAY,IAAM15B,EAAMuF,MAAM8L,EAAMY,MAAQ,IAIvE,OAAOmpJ,EAAWp7J,EAAQo7J,EAM5B,SAASgoH,IACP,MAAO,KChSI,SAASE,GAAWpkR,EAAU,IAC3C,MAAM2E,EAAOf,KAAKe,OAUlB,SAAS+C,EAAI85D,EAAO1gE,GAClB,MAAMquE,EAGJxqE,EAAK68D,GAAS78D,EAAK68D,GAAU78D,EAAK68D,GAAS,GAG7C2N,EAAKrpE,KAAKhF,GAfZ4G,EAAI,sBAAuB,GAAK1H,IAChC0H,EAAI,yBAA0By7Q,MAC9Bz7Q,EAAI,uBAAwBs8Q,GAAehkR,ICnB7C,MAAM6I,GAAQ,gBACRw7Q,GAAY,UACZ1wM,GAAS,iBACT2wM,GAAa,UACb,GAAK,CACTz7Q,SACAw7Q,aACA1wM,UACA2wM,eAEI,GAAQ,CACZC,QAAS,yOACTC,OAAQ,0PACRC,MAAO,4PAET,SAASC,GAAe1mM,GACtB,MAAO,CACL,CACEG,KAAM,GAAMomM,QACZ9gR,QAAS,CACP3D,KAAM,WACNs+E,QAAS,CACP,CACEpqD,MAAOgqD,EAAOrK,OACdwK,KAAM,GAAMqmM,OACZ94Q,WAAY,IAAIsyE,EAAOsmM,cACvB7gR,QAAS,CACP3D,KAAM,SACN,OAAM,SAAEy+E,EAAQ,OAAEzB,IAChByB,EAAS,KACTzB,EAAOlzC,WAIb,CACE5V,MAAOgqD,EAAOn1E,MACds1E,KAAM,GAAMsmM,MACZ/4Q,WAAY,MAAMsyE,EAAOqmM,eACzB5gR,QAAS,CACP3D,KAAM,SACN,OAAM,YAAE69E,EAAW,OAAEb,EAAM,WAAEF,IAC3B,MAAM,KAAEh/D,GAAS+/D,EAAY,iBAC7Bb,EAAOl+B,aACLg+B,EAAW32D,IAAIrI,EAAO,EAAG,GACzBg/D,EAAW32D,IAAIrI,EAAO,EAAG,IAE3Bk/D,EAAOlzC,eASvB,SAAS,IACPo0C,OAAQgkM,EAAO,aACf2C,GACE,IACF,MAAM3mM,EAAS,IAAK,MAAOgkM,GAC3B,IAAI4C,EACJ,MAAO,CACL7pC,OAAShC,GAAcA,EAAUt9E,IAAI2oH,IACrC,cAAa,aAAEjpC,IACb,MAAM0pC,EAAapnM,MAAOk5D,EAAUmuI,KAClC,MAAM1vF,EAAM+lD,EAAa7xJ,iBAAiBqtD,GACvB,IAAfy+C,EAAIlzL,SAEH0iR,IACHA,QAAc,oDAAgB99Q,KAAMyC,GAAMA,EAAE8xH,UAE9C+5D,EAAI5zL,QAAS+nF,IACXq7L,EAAMxgC,OAAO76J,EAAGw7L,UAAWx7L,EAAI,IAC1Bo7L,EACHK,cAAc,EACdF,oBAIND,EAAW,qBAAqB,GAChCA,EAAW,sBAAsB,IAEnCzmM,QAASsmM,GAAe1mM,IChErB,MAo5YMinM,GAAc,CACzBC,IAAK,KACLC,KAAM,KACNC,SAAU,KACVC,OAAQ,KACR9/D,MAAO,KACP+/D,KAAM,KACNC,SAAU,KACVC,UAAW,KACXC,YAAa,KACbC,KAAM,KACNC,IAAK,KACLC,sBAAuB,KACvBC,iBAAkB,KAClBC,KAAM,KACNC,MAAO,KACPC,SAAU,KACVC,+BAAgC,KAChCC,WAAY,KACZC,YAAa,KACbC,cAAe,KACfC,QAAS,KACTC,QAAS,KACTC,oBAAqB,KACrBC,qBAAsB,KACtBC,uBAAwB,KACxBhxD,IAAK,KACLixD,iBAAkB,KAClBC,6BAA8B,KAC9BC,UAAW,KACXC,6BAA8B,KAC9BC,iBAAkB,KAClBC,KAAM,KACNC,gBAAiB,KACjBC,cAAe,KACfC,SAAU,KACVC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,eAAgB,KAChBC,SAAU,KACVC,eAAgB,SAChBC,MAAO,KACPC,SAAU,KACVC,UAAW,KACXC,UAAW,KACXC,cAAe,QACfC,WAAY,KACZC,SAAU,KACVC,QAAS,KACTC,OAAQ,KACRC,cAAe,KACfC,SAAU,KACV1yJ,KAAM,KACN2yJ,sBAAuB,KACvBC,uBAAwB,KACxBC,eAAgB,KAChBC,cAAe,KACfC,cAAe,KACfC,SAAU,KACVC,UAAW,KACXC,WAAY,KACZC,WAAY,KACZC,sBAAuB,QACvBC,eAAgB,KAChBC,gBAAiB,KACjBC,cAAe,KACfC,eAAgB,KAChBC,WAAY,KACZC,UAAW,KACXC,aAAc,KACdC,SAAU,KACVC,QAAS,KACTC,uBAAwB,KACxBC,cAAe,KACfC,WAAY,KACZC,OAAQ,KACRC,WAAY,KACZC,QAAS,KACTC,cAAe,KACfC,SAAU,KACVC,UAAW,KACXC,QAAS,KACTC,WAAY,KACZC,sBAAuB,KACvBC,IAAK,KACLC,IAAK,KACLC,OAAQ,KACRC,WAAY,KACZC,UAAW,KACXC,aAAc,KACdC,MAAO,KACPC,MAAO,KACPC,WAAY,KACZC,aAAc,KACdC,QAAS,KACTC,KAAM,KACNC,KAAM,KACNC,MAAO,KACPC,aAAc,KACdC,YAAa,KACbC,IAAK,KACLC,MAAO,KACPC,qBAAsB,KACtBC,OAAQ,KACRC,KAAM,KACNC,KAAM,KACNC,WAAY,KACZC,cAAe,KACfC,gBAAiB,KACjBC,MAAO,KACPC,MAAO,KACPC,cAAe,KACfC,MAAO,KACPC,WAAY,KACZC,UAAW,KACXC,QAAS,KACTC,eAAgB,KAChBC,UAAW,KACXC,YAAa,KACbC,WAAY,KACZC,gBAAiB,KACjBC,YAAa,KACbC,YAAa,KACbC,aAAc,KACdC,cAAe,KACfC,KAAM,KACNC,YAAa,KACbC,MAAO,KACPC,WAAY,KACZC,gBAAiB,KACjBC,WAAY,KACZC,UAAW,KACXC,iBAAkB,KAClBC,WAAY,KACZC,iBAAkB,KAClBC,wBAAyB,KACzBC,aAAc,KACdC,cAAe,QACfC,cAAe,QACfC,MAAO,KACPC,aAAc,KACdC,aAAc,KACdC,YAAa,KACbC,WAAY,KACZC,aAAc,KACdC,YAAa,KACbC,YAAa,KACbC,YAAa,KACbC,MAAO,KACPC,KAAM,KACNC,UAAW,KACXC,MAAO,KACPC,YAAa,KACbx4I,KAAM,KACNy4I,KAAM,MACNC,KAAM,KACNC,eAAgB,KAChBC,kBAAmB,UACnBC,mBAAoB,MACpBC,mBAAoB,MACpBC,gBAAiB,KACjBC,IAAK,KACLC,KAAM,KACNC,oBAAqB,KACrBC,iCAAkC,MAClCC,KAAM,IACNC,YAAa,IACbC,cAAe,KACfC,QAAS,KACTC,gBAAiB,KACjBC,cAAe,KACf/tO,EAAG,KACHguO,gBAAiB,KACjBC,iBAAkB,KAClBC,MAAO,KACPC,aAAc,KACdC,WAAY,KACZC,YAAa,KACbC,WAAY,KACZC,cAAe,KACfC,GAAI,KACJC,WAAY,KACZC,SAAU,KACV,KAAM,KACNC,SAAU,KACV,KAAM,KACNC,WAAY,KACZC,YAAa,IACbC,KAAM,IACNC,cAAe,KACfC,UAAW,KACXC,MAAO,KACPC,UAAW,KACXC,WAAY,KACZC,KAAM,KACNC,aAAc,KACdC,WAAY,KACZC,kBAAmB,KACnBC,UAAW,KACXC,KAAM,KACNC,aAAc,KACdC,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,eAAgB,KAChBC,eAAgB,KAChBpsF,IAAK,KACLguC,KAAM,KACNq+C,IAAK,KACLC,qBAAsB,KACtBC,KAAM,KACNC,MAAO,KACPC,iBAAkB,KAClBC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,KAAM,KACNC,IAAK,MACLC,OAAQ,KACRC,KAAM,KACNC,KAAM,KACNv+Q,MAAO,KACPw+Q,IAAK,KACLC,KAAM,KACNC,MAAO,KACPC,oBAAqB,KACrBC,IAAK,KACLC,eAAgB,KAChBC,UAAW,QACXC,YAAa,QACbC,eAAgB,QAChBC,iBAAkB,QAClBC,iBAAkB,QAClBC,SAAU,QACVC,MAAO,KACPC,iBAAkB,QAClBC,gBAAiB,QACjBC,mBAAoB,QACpBC,kBAAmB,QACnBC,mBAAoB,QACpBC,kBAAmB,QACnBC,WAAY,QACZC,YAAa,QACbC,mBAAoB,QACpBC,aAAc,QACdC,iBAAkB,QAClBC,YAAa,KACbC,UAAW,KACXC,YAAa,KACbC,gBAAiB,KACjBC,aAAc,QACdC,eAAgB,QAChBC,aAAc,KACdC,YAAa,QACbC,cAAe,QACfC,QAAS,KACTC,YAAa,QACbC,OAAQ,QACRC,cAAe,QACfC,SAAU,QACVC,UAAW,KACXC,OAAQ,QACRC,SAAU,QACVC,oBAAqB,KACrBC,wBAAyB,KACzBC,iBAAkB,QAClBC,UAAW,QACXC,mBAAoB,QACpBC,YAAa,QACbC,aAAc,KACdC,iBAAkB,QAClBC,mBAAoB,QACpBC,YAAa,KACbC,SAAU,QACVC,WAAY,QACZC,IAAK,KACLC,WAAY,QACZC,aAAc,QACdC,SAAU,KACVC,gBAAiB,QACjBC,kBAAmB,QACnBC,MAAO,KACPC,cAAe,QACfC,gBAAiB,QACjBC,cAAe,QACfC,kBAAmB,QACnBC,oBAAqB,QACrBC,QAAS,QACTC,YAAa,QACbC,cAAe,QACfC,QAAS,QACTC,YAAa,QACbC,cAAe,QACfC,MAAO,QACPC,UAAW,QACXC,YAAa,QACbC,OAAQ,QACRC,WAAY,QACZC,aAAc,QACdC,KAAM,QACNC,SAAU,QACVC,WAAY,QACZC,SAAU,QACVC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,mBAAoB,QACpBC,qBAAsB,QACtBC,cAAe,QACfC,kBAAmB,QACnBC,oBAAqB,QACrBC,UAAW,QACXC,cAAe,QACfC,gBAAiB,QACjBC,aAAc,QACdC,iBAAkB,QAClBC,mBAAoB,QACpBC,OAAQ,QACRC,WAAY,QACZC,aAAc,QACdC,OAAQ,QACRC,WAAY,QACZC,aAAc,QACdC,MAAO,QACPC,UAAW,QACXC,YAAa,QACbC,UAAW,QACXC,cAAe,QACfC,gBAAiB,QACjBC,YAAa,QACbC,gBAAiB,QACjBC,kBAAmB,QACnBC,eAAgB,KAChB7qG,IAAK,KACL8qG,UAAW,QACXC,YAAa,QACbC,UAAW,MACXC,eAAgB,SAChBC,iBAAkB,SAClBC,MAAO,KACPC,UAAW,QACXC,YAAa,QACbC,MAAO,KACPC,oBAAqB,KACrBC,wBAAyB,QACzBC,0BAA2B,QAC3BC,OAAQ,KACRC,SAAU,KACVC,mBAAoB,KACpBC,gBAAiB,QACjBC,kBAAmB,QACnBC,oBAAqB,KACrBC,qBAAsB,KACtBC,iBAAkB,KAClBC,cAAe,QACfC,gBAAiB,QACjBC,iBAAkB,KAClBC,cAAe,QACfC,gBAAiB,QACjBC,gBAAiB,QACjBC,eAAgB,KAChBC,eAAgB,KAChBC,mBAAoB,QACpBC,iBAAkB,QAClBC,oBAAqB,QACrBC,MAAO,KACPC,MAAO,KACPC,UAAW,KACXC,SAAU,QACVC,UAAW,KACXC,cAAe,QACfC,gBAAiB,QACjBC,aAAc,KACdC,iBAAkB,QAClBC,mBAAoB,QACpBC,KAAM,KACNC,SAAU,QACVC,WAAY,QACZC,MAAO,KACPC,UAAW,QACXC,YAAa,QACbC,QAAS,KACTC,YAAa,QACbC,cAAe,QACfC,UAAW,KACXC,OAAQ,QACRC,QAAS,QACTC,IAAK,KACLC,QAAS,QACTC,UAAW,QACXC,MAAO,KACPC,UAAW,QACXC,YAAa,QACbC,OAAQ,KACRC,WAAY,QACZC,aAAc,QACdC,QAAS,KACTC,YAAa,QACbC,cAAe,QACfC,QAAS,KACTC,YAAa,QACbC,cAAe,QACfC,QAAS,KACTC,YAAa,QACbC,cAAe,QACfC,gBAAiB,KACjBC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,KACjBC,aAAc,QACdC,eAAgB,QAChBC,yBAA0B,QAC1BC,sBAAuB,QACvBC,wBAAyB,QACzBC,+BAAgC,QAChCC,4BAA6B,QAC7BC,8BAA+B,QAC/BC,4BAA6B,QAC7BC,yBAA0B,QAC1BC,2BAA4B,QAC5BC,OAAQ,KACRC,QAAS,KACTC,YAAa,QACbC,cAAe,QACfC,cAAe,KACfC,OAAQ,KACRC,YAAa,KACbC,yBAA0B,MAC1BC,QAAS,KACTC,YAAa,QACbC,cAAe,QACfC,aAAc,KACdC,UAAW,QACXC,YAAa,QACbC,SAAU,KACVC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,KAChBC,aAAc,KACdC,MAAO,KACPC,YAAa,KACbC,QAAS,MACTC,YAAa,SACbC,cAAe,SACfC,OAAQ,KACRC,YAAa,QACbC,cAAe,QACfC,QAAS,KACTC,WAAY,QACZC,aAAc,QACdC,QAAS,KACTC,aAAc,QACdC,eAAgB,QAChBC,qBAAsB,KACtBC,kBAAmB,QACnBC,eAAgB,QAChBC,oBAAqB,QACrBC,iBAAkB,QAClBC,eAAgB,MAChBC,mBAAoB,SACpBC,qBAAsB,SACtBC,UAAW,KACXC,WAAY,QACZC,aAAc,QACdC,mBAAoB,KACpBC,oBAAqB,QACrBC,sBAAuB,QACvBC,aAAc,KACdC,iBAAkB,QAClBC,mBAAoB,QACpBC,UAAW,KACXC,cAAe,QACfC,gBAAiB,QACjBC,WAAY,KACZC,uBAAwB,QACxBC,yBAA0B,QAC1BC,gBAAiB,KACjBC,qBAAsB,QACtBC,uBAAwB,QACxBC,gBAAiB,KACjBC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,KAChBC,mBAAoB,QACpBC,qBAAsB,QACtBC,KAAM,KACNC,aAAc,KACdC,qBAAsB,WACtBC,wBAAyB,KACzBC,OAAQ,KACRC,sBAAuB,KACvBC,WAAY,KACZC,qBAAsB,cACtBC,mBAAoB,cACpBC,uBAAwB,cACxBC,kBAAmB,KACnBC,4BAA6B,WAC7BC,0BAA2B,WAC3BC,8BAA+B,WAC/BC,OAAQ,KACRC,qBAAsB,WACtBC,sBAAuB,WACvBC,0BAA2B,cAC3BC,yBAA0B,cAC1BC,2BAA4B,cAC5BC,mBAAoB,WACpBC,oBAAqB,WACrBC,wBAAyB,cACzBC,uBAAwB,cACxBC,yBAA0B,cAC1BC,uBAAwB,WACxBC,wBAAyB,WACzBC,4BAA6B,cAC7BC,2BAA4B,cAC5BC,6BAA8B,cAC9BC,eAAgB,QAChBC,mBAAoB,WACpBC,gBAAiB,QACjBC,oBAAqB,WACrBC,qBAAsB,WACtBC,iBAAkB,QAClBC,qBAAsB,WACtBC,kBAAmB,QACnBC,sBAAuB,WACvBC,uBAAwB,WACxBC,cAAe,MACfC,mBAAoB,KACpBC,oBAAqB,KACrBC,eAAgB,KAChBC,WAAY,KACZC,YAAa,KACbC,OAAQ,KACRC,QAAS,KACTC,UAAW,KACXC,IAAK,KACLC,KAAM,KACNC,UAAW,KACXC,YAAa,QACbC,OAAQ,KACRC,KAAM,KACNC,SAAU,KACVC,QAAS,KACTC,IAAK,KACLC,KAAM,KACNC,UAAW,OACXC,KAAM,KACNC,MAAO,KACPC,OAAQ,KACRC,QAAS,KACTC,MAAO,KACPC,UAAW,KACXC,QAAS,KACTC,MAAO,KACPC,KAAM,KACNC,MAAO,KACPC,IAAK,KACLC,GAAI,KACJC,cAAe,KACfC,KAAM,KACNC,IAAK,KACLC,KAAM,KACNC,KAAM,KACNC,SAAU,KACVC,IAAK,KACLC,MAAO,KACPC,KAAM,KACNC,gBAAiB,KACjBC,MAAO,KACPC,MAAO,KACPC,QAAS,KACTC,SAAU,KACVC,QAAS,KACTC,WAAY,KACZC,aAAc,KACdC,MAAO,KACPC,OAAQ,KACRC,IAAK,KACLC,QAAS,KACTC,OAAQ,KACRC,QAAS,KACTC,SAAU,MACVC,OAAQ,KACRC,SAAU,KACVC,IAAK,KACLC,KAAM,KACNC,WAAY,QACZC,MAAO,KACPC,WAAY,KACZC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,SAAU,KACVC,OAAQ,KACRC,KAAM,KACNC,WAAY,KACZC,OAAQ,KACRC,QAAS,KACTC,QAAS,KACTC,eAAgB,KAChBC,WAAY,KACZC,cAAe,KACfC,KAAM,KACNC,QAAS,KACTC,KAAM,MACNC,MAAO,KACPC,KAAM,KACNC,KAAM,KACNC,IAAK,KACLC,KAAM,KACNC,QAAS,KACTC,SAAU,KACVC,QAAS,KACTC,OAAQ,KACRC,KAAM,KACNC,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,MAAO,KACPC,YAAa,KACbC,OAAQ,KACRC,SAAU,KACV,QAAS,KACTC,MAAO,KACPC,OAAQ,KACRC,QAAS,KACTC,QAAS,KACTC,KAAM,KACNC,KAAM,KACNC,cAAe,KACfC,SAAU,KACVC,MAAO,KACPC,QAAS,KACTC,MAAO,KACPC,MAAO,KACPC,UAAW,KACXC,IAAK,KACLC,IAAK,KACLC,IAAK,KACLC,SAAU,KACVC,OAAQ,KACRC,YAAa,KACbC,QAAS,KACTC,UAAW,KACXC,OAAQ,MACRC,WAAY,MACZC,SAAU,KACVC,SAAU,KACVC,IAAK,KACLC,KAAM,KACNC,QAAS,KACTC,QAAS,KACTC,eAAgB,KAChBC,aAAc,KACdC,QAAS,MACTC,KAAM,KACNC,cAAe,KACfC,SAAU,KACVC,UAAW,KACXC,QAAS,KACTC,MAAO,KACPC,SAAU,KACVC,aAAc,KACdC,eAAgB,KAChBC,eAAgB,KAChBC,UAAW,KACXC,OAAQ,KACRC,YAAa,KACbC,KAAM,KACNC,SAAU,KACVC,iBAAkB,KAClBC,WAAY,KACZC,YAAa,KACbC,OAAQ,KACRC,OAAQ,KACRC,MAAO,KACPC,WAAY,KACZC,UAAW,KACXC,OAAQ,KACRC,SAAU,KACVC,MAAO,KACPC,OAAQ,KACRC,UAAW,KACXC,MAAO,KACPC,MAAO,KACPC,YAAa,KACbC,KAAM,KACNC,MAAO,KACPC,SAAU,KACVC,WAAY,KACZC,YAAa,KACbC,WAAY,KACZC,OAAQ,KACRC,MAAO,KACPC,QAAS,KACTC,QAAS,KACTC,SAAU,KACVC,OAAQ,KACRC,OAAQ,KACRC,KAAM,KACNC,WAAY,MACZC,YAAa,KACbC,SAAU,KACVC,YAAa,KACbC,SAAU,KACVC,OAAQ,KACRC,MAAO,KACPC,SAAU,KACVC,QAAS,KACTC,SAAU,KACVC,MAAO,KACPC,UAAW,KACXC,eAAgB,KAChBC,UAAW,KACXC,QAAS,KACTC,MAAO,KACPC,SAAU,KACVC,OAAQ,KACRC,OAAQ,KACRC,aAAc,KACdC,YAAa,KACbC,YAAa,KACbC,MAAO,KACPC,UAAW,KACXC,MAAO,KACPC,MAAO,KACPC,OAAQ,KACRC,SAAU,KACVC,KAAM,KACNC,QAAS,KACTC,OAAQ,KACRC,kBAAmB,KACnBC,QAAS,KACTC,IAAK,KACLC,UAAW,KACXC,oBAAqB,KACrBC,KAAM,KACNC,OAAQ,KACRC,gBAAiB,KACjBC,YAAa,KACbC,QAAS,KACTC,OAAQ,KACRC,KAAM,KACNC,YAAa,KACbC,MAAO,KACPC,aAAc,KACdC,UAAW,KACXC,KAAM,KACNC,MAAO,KACPC,MAAO,KACPC,UAAW,KACXC,aAAc,KACdC,KAAM,KACNC,MAAO,KACPC,aAAc,KACdC,UAAW,KACXC,UAAW,KACXC,MAAO,KACPC,SAAU,KACVC,eAAgB,KAChBC,YAAa,KACbC,KAAM,KACNC,QAAS,KACTC,OAAQ,KACRC,MAAO,KACPC,OAAQ,KACRC,SAAU,KACVC,WAAY,KACZC,UAAW,KACXC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,KAAM,KACNC,QAAS,KACTC,IAAK,KACLC,cAAe,KACfC,MAAO,KACPC,SAAU,KACVC,QAAS,KACTC,UAAW,KACXC,YAAa,KACbC,WAAY,KACZC,OAAQ,IACRC,OAAQ,KACRC,IAAK,KACLC,KAAM,KACNC,UAAW,KACXC,WAAY,KACZC,SAAU,KACVC,eAAgB,KAChBC,KAAM,KACNC,MAAO,KACPC,iBAAkB,KAClBC,cAAe,KACfC,eAAgB,KAChBC,WAAY,KACZC,aAAc,KACdC,KAAM,KACNC,SAAU,KACVC,WAAY,KACZC,mBAAoB,MACpBC,eAAgB,KAChBC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,QAAS,KACTC,aAAc,KACdC,eAAgB,KAChBC,WAAY,KACZC,qBAAsB,KACtBC,UAAW,MACXC,MAAO,KACPC,QAAS,KACTC,cAAe,MACfC,SAAU,KACVC,QAAS,KACTC,WAAY,KACZC,QAAS,MACTC,eAAgB,MAChBC,OAAQ,MACRC,cAAe,MACfC,cAAe,MACfC,QAAS,MACTC,mBAAoB,MACpBC,sBAAuB,MACvBC,OAAQ,KACRC,KAAM,KACNC,KAAM,KACNC,IAAK,KACLC,OAAQ,MACRC,eAAgB,MAChBC,MAAO,KACPC,kBAAmB,KACnBC,OAAQ,KACRC,YAAa,KACbC,qBAAsB,KACtBC,SAAU,KACVC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZC,kBAAmB,KACnBC,OAAQ,KACRC,iBAAkB,KAClBjmE,QAAS,KACTkmE,gBAAiB,KACjBC,gBAAiB,KACjBC,QAAS,KACTC,YAAa,KACbC,kBAAmB,KACnBC,OAAQ,IACRC,OAAQ,KACRC,aAAc,KACdC,UAAW,KACXC,cAAe,KACfC,MAAO,KACPC,SAAU,IACVC,KAAM,IACNC,MAAO,KACPC,iBAAkB,KAClBC,UAAW,MACXC,uBAAwB,KACxBC,QAAS,KACTC,YAAa,KACbC,aAAc,KACdC,gBAAiB,KACjBC,WAAY,KACZC,eAAgB,KAChBC,aAAc,KACdC,eAAgB,KAChBC,OAAQ,KACRC,YAAa,KACbC,iBAAkB,KAClBC,YAAa,KACbC,iBAAkB,KAClBC,kBAAmB,KACnBC,OAAQ,KACRC,MAAO,KACPC,WAAY,KACZC,QAAS,KACTC,KAAM,KACNC,SAAU,KACVC,iBAAkB,KAClBC,MAAO,KACPC,IAAK,KACLC,aAAc,KACdC,WAAY,KACZC,QAAS,KACTC,UAAW,KACXC,YAAa,KACbC,WAAY,KACZC,oBAAqB,KACrBC,KAAM,KACNC,cAAe,KACfC,IAAK,KACLC,QAAS,KACTC,oBAAqB,KACrBC,SAAU,KACVC,aAAc,KACdC,MAAO,KACPC,kBAAmB,KACnBC,QAAS,KACTC,WAAY,MACZC,WAAY,MACZC,cAAe,KACfC,kBAAmB,KACnBC,qBAAsB,KACtBC,cAAe,KACfC,KAAM,KACNC,aAAc,KACdC,WAAY,KACZC,aAAc,KACdC,QAAS,KACTC,SAAU,MACVC,cAAe,MACfC,SAAU,MACVC,SAAU,IACVC,eAAgB,KAChBC,cAAe,KACfC,uBAAwB,KACxBC,UAAW,KACXC,aAAc,KACdp7S,OAAQ,IACRq7S,KAAM,IACNC,SAAU,IACVC,MAAO,KACPC,UAAW,KACXC,eAAgB,MAChBC,MAAO,KACPC,WAAY,MACZC,KAAM,KACNC,SAAU,KACVC,eAAgB,MAChBC,iBAAkB,KAClBC,eAAgB,KAChBC,UAAW,KACXC,KAAM,KACNC,WAAY,KACZC,mBAAoB,KACpBC,kBAAmB,KACnBC,eAAgB,KAChBC,qBAAsB,MACtBC,OAAQ,KACRC,cAAe,KACfC,aAAc,MACdC,QAAS,KACTC,UAAW,IACXC,uBAAwB,IACxB54D,MAAO,IACP64D,YAAa,IACbC,UAAW,KACXC,YAAa,KACbC,kBAAmB,MACnBC,QAAS,KACTC,UAAW,KACXC,OAAQ,KACRC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,OAAQ,KACRC,SAAU,KACVC,QAAS,KACTC,UAAW,KACXC,QAAS,KACTC,UAAW,KACXC,SAAU,KACVC,qBAAsB,KACtBC,mBAAoB,KACpBC,KAAM,KACNC,oBAAqB,KACrBC,UAAW,KACXC,oBAAqB,KACrBC,kBAAmB,KACnBC,qBAAsB,KACtBC,cAAe,KACfC,mBAAoB,KACpBC,6BAA8B,KAC9BC,4BAA6B,KAC7BC,YAAa,MACbC,MAAO,KACPC,oBAAqB,KACrBC,cAAe,KACfC,cAAe,KACf76F,KAAM,IACN86F,MAAO,KACPC,MAAO,KACPC,UAAW,KACXC,MAAO,KACPC,aAAc,IACdC,8BAA+B,KAC/BC,uBAAwB,MACxBC,uBAAwB,MACxBC,sBAAuB,MACvBC,gBAAiB,MACjBC,gBAAiB,MACjBC,qBAAsB,MACtBC,QAAS,MACTC,IAAK,MACLC,UAAW,MACXC,QAAS,KACTC,QAAS,KACTC,gBAAiB,KACjBC,cAAe,KACfC,SAAU,IACVC,kBAAmB,KACnBC,IAAK,IACLC,UAAW,KACXC,kBAAmB,KACnBC,QAAS,IACTC,MAAO,KACPC,KAAM,KACNC,QAAS,KACTC,MAAO,KACPC,eAAgB,KAChBC,eAAgB,KAChBC,UAAW,KACXC,SAAU,KACVC,YAAa,KACbC,SAAU,IACVC,QAAS,KACTC,KAAM,KACNC,cAAe,KACfC,cAAe,KACfC,OAAQ,KACRC,MAAO,KACPC,MAAO,KACPC,WAAY,KACZC,WAAY,KACZC,aAAc,KACdC,OAAQ,KACRC,KAAM,KACNC,gBAAiB,MACjBC,QAAS,MACTC,OAAQ,KACRC,eAAgB,MAChBC,OAAQ,KACRC,aAAc,KACd,kBAAmB,KACnB,kBAAmB,KACnB,kBAAmB,KACnBC,OAAQ,IACRC,SAAU,IACVC,SAAU,KACVC,WAAY,KACZC,WAAY,KACZC,SAAU,KACVC,eAAgB,KAChBC,OAAQ,KACRC,YAAa,KACbC,QAAS,KACTC,aAAc,KACdC,aAAc,KACdC,WAAY,KACZC,SAAU,KACVC,UAAW,KACXC,UAAW,KACXC,aAAc,KACdC,qBAAsB,KACtBC,SAAU,KACVC,KAAM,IACNC,UAAW,KACXC,sBAAuB,KACvBC,YAAa,KACbC,wBAAyB,KACzBC,IAAK,KACLC,KAAM,KACNC,cAAe,KACfC,KAAM,KACNC,MAAO,KACPC,KAAM,KACN,QAAS,KACTC,aAAc,KACdC,WAAY,KACZC,aAAc,KACdC,WAAY,KACZC,SAAU,MACVC,aAAc,KACdC,SAAU,KACVC,OAAQ,KACRC,WAAY,KACZC,OAAQ,KACRC,cAAe,KACfx3J,OAAQ,KACRE,OAAQ,KACRu3J,SAAU,KACVx3J,MAAO,KACPy3J,WAAY,KACZC,YAAa,KACbC,QAAS,KACTC,qBAAsB,KACtBC,gBAAiB,KACjBC,eAAgB,MAChBC,IAAK,KACLC,OAAQ,KACRC,cAAe,KACfC,KAAM,KACNC,KAAM,KACNC,WAAY,KACZC,gBAAiB,MACjBC,QAAS,KACTC,SAAU,KACVC,YAAa,KACbC,QAAS,KACTC,MAAO,KACPC,OAAQ,KACRC,MAAO,KACPC,MAAO,KACPC,OAAQ,KACRC,KAAM,KACNC,MAAO,KACPC,MAAO,KACPC,OAAQ,KACRC,KAAM,KACNC,mBAAoB,KACpBC,WAAY,KACZC,OAAQ,KACRC,OAAQ,KACRC,eAAgB,KAChBC,MAAO,KACPC,QAAS,KACTC,MAAO,KACPC,SAAU,MACVC,eAAgB,KAChBC,aAAc,KACdC,UAAW,KACXC,KAAM,KACNC,cAAe,KACfC,YAAa,KACbC,UAAW,KACXC,UAAW,KACXC,OAAQ,KACRC,aAAc,KACdC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZC,OAAQ,KACRC,aAAc,KACdC,WAAY,KACZC,gBAAiB,KACjBC,qBAAsB,KACtBC,aAAc,KACdC,SAAU,KACVlrG,KAAM,KACNmrG,IAAK,KACLC,KAAM,KACNC,QAAS,KACTC,MAAO,KACPC,WAAY,KACZC,YAAa,KACbC,KAAM,KACNC,YAAa,KACbC,KAAM,KACNC,QAAS,KACTC,cAAe,KACfC,aAAc,KACdC,MAAO,KACPC,kBAAmB,MACnBC,aAAc,MACdC,cAAe,MACfC,WAAY,KACZC,WAAY,KACZC,MAAO,KACPC,UAAW,KACXC,UAAW,KACXC,OAAQ,KACRC,iBAAkB,KAClBC,QAAS,KACTC,OAAQ,KACRC,MAAO,KACPC,KAAM,KACNC,UAAW,KACXC,OAAQ,KACRC,QAAS,KACT9zG,MAAO,KACP+zG,UAAW,KACXC,mBAAoB,KACpBC,MAAO,KACPC,IAAK,KACLC,QAAS,KACTC,cAAe,KACfC,SAAU,KACVC,iBAAkB,MAClBC,QAAS,MACTC,SAAU,KACVC,eAAgB,MAChBC,UAAW,MACXC,SAAU,KACVC,YAAa,KACbC,GAAI,KACJC,IAAK,KACLC,OAAQ,KACRC,aAAc,KACdC,WAAY,MACZC,eAAgB,MAChBC,QAAS,KACTC,GAAI,KACJC,OAAQ,KACRC,aAAc,KACdC,aAAc,KACdC,IAAK,KACLC,IAAK,KACLC,UAAW,KACXC,OAAQ,MACRC,KAAM,KACNC,WAAY,KACZC,gBAAiB,KACjBC,QAAS,KACTC,UAAW,KACXC,+BAAgC,KAChCC,YAAa,KACbC,KAAM,KACNC,UAAW,KACXC,WAAY,KACZC,UAAW,KACXC,YAAa,KACbC,MAAO,KACPC,SAAU,KACVC,OAAQ,KACRC,eAAgB,KAChB34S,OAAQ,KACR44S,eAAgB,KAChBC,UAAW,KACXC,eAAgB,MAChBC,cAAe,KACf7hN,SAAU,KACVtmC,MAAO,MACPooP,SAAU,KACVC,KAAM,KACN5sK,IAAK,KACLuuC,OAAQ,KACR1/B,KAAM,KACN/O,MAAO,KACP+sK,iBAAkB,KAClBC,YAAa,KACbC,QAAS,KACTC,MAAO,KACPC,SAAU,KACV71C,MAAO,KACP,SAAU,KACV81C,kBAAmB,KACnBC,oBAAqB,KACrBC,YAAa,KACbC,WAAY,KACZC,QAAS,KACTC,QAAS,KACTC,eAAgB,KAChBC,kBAAmB,KACnBC,qBAAsB,KACtBC,QAAS,KACTC,WAAY,MACZC,QAAS,KACTC,UAAW,KACXC,aAAc,MACdC,IAAK,MACLC,WAAY,MACZC,OAAQ,MACRC,KAAM,KACNC,OAAQ,KACRC,UAAW,KACXC,YAAa,KACbC,iBAAkB,KAClBC,oBAAqB,MACrBC,KAAM,KACNC,SAAU,KACVC,eAAgB,MAChBC,gBAAiB,MACjBC,WAAY,KACZC,yBAA0B,KAC1BC,2BAA4B,KAC5BC,UAAW,KACXC,UAAW,KACXC,QAAS,KACTC,cAAe,KACfC,UAAW,KACXC,WAAY,MACZC,eAAgB,KAChBC,iBAAkB,KAClBC,SAAU,KACVC,cAAe,MACfC,aAAc,MACdC,YAAa,MACbC,KAAM,KACNC,OAAQ,KACRC,kBAAmB,KACnBC,qBAAsB,KACtB/2K,IAAK,KACLg3K,QAAS,MACTC,OAAQ,KACRC,IAAK,KACLC,KAAM,KACNC,gBAAiB,KACjBC,kBAAmB,MACnB7hK,OAAQ,MACR8hK,eAAgB,KAChBC,IAAK,KACLC,UAAW,KACXC,cAAe,KACfC,OAAQ,MACRC,cAAe,KACfC,OAAQ,KACRC,YAAa,KACbC,aAAc,KACdC,KAAM,KACNC,MAAO,MACPC,cAAe,KACfC,aAAc,KACdtmT,KAAM,KACNumT,OAAQ,KACRr+J,KAAM,KACNs+J,QAAS,KACTC,OAAQ,KACRC,OAAQ,KACRC,QAAS,KACTC,UAAW,KACXC,WAAY,KACZC,IAAK,KACLC,WAAY,KACZC,UAAW,KACXC,UAAW,KACXC,QAAS,KACTC,cAAe,KACfC,KAAM,KACNC,iBAAkB,KAClBC,YAAa,KACbC,KAAM,KACNC,SAAU,KACVC,OAAQ,KACR50S,OAAQ,KACR60S,IAAK,MACLC,eAAgB,MAChBC,MAAO,KACPC,OAAQ,KACRC,QAAS,KACTC,OAAQ,KACRC,QAAS,KACTC,WAAY,KACZC,MAAO,KACPC,cAAe,KACfC,WAAY,KACZC,MAAO,KACPC,OAAQ,KACRC,cAAe,KACfC,OAAQ,KACRC,KAAM,KACNC,WAAY,KACZC,OAAQ,KACRC,kBAAmB,KACnBC,cAAe,KACfC,QAAS,KACTC,OAAQ,KACRC,UAAW,KACXC,YAAa,KACbC,MAAO,KACPC,QAAS,KACTC,IAAK,KACLC,wBAAyB,KACzBC,cAAe,KACfC,WAAY,IACZC,KAAM,KACNC,OAAQ,KACRC,SAAU,KACVC,YAAa,KACbC,GAAI,KACJC,iBAAkB,KAClBC,QAAS,KACTC,cAAe,KACfC,aAAc,KACdC,QAAS,KACTC,kBAAmB,KACnBC,SAAU,IACVC,cAAe,KACfC,YAAa,KACbC,WAAY,KACZC,cAAe,KACf,oBAAqB,KACrBC,eAAgB,KAChBC,iBAAkB,KAClBC,SAAU,KACVC,YAAa,KACbC,UAAW,KACXC,SAAU,KACVC,kBAAmB,KACnBC,YAAa,KACbC,kBAAmB,KACnBC,WAAY,KACZC,iBAAkB,KAClBC,WAAY,KACZC,iBAAkB,KAClBC,cAAe,KACfC,iBAAkB,KAClBC,0BAA2B,KAC3BC,iBAAkB,KAClBC,iBAAkB,KAClBC,mBAAoB,KACpBC,iBAAkB,KAClBC,wBAAyB,KACzBC,KAAM,KACN7lT,IAAK,KACLqJ,GAAI,KACJy8S,KAAM,KACNxsT,IAAK,KACLysT,iBAAkB,KAClBC,YAAa,KACbC,GAAI,MACJC,cAAe,KACfC,gBAAiB,KACjBC,SAAU,KACVC,YAAa,KACbC,eAAgB,KAChBC,kBAAmB,KACnBC,aAAc,KACdC,QAAS,KACTC,iBAAkB,KAClBC,MAAO,IACPC,OAAQ,IACRC,OAAQ,IACRC,OAAQ,IACRC,IAAK,IACLC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,UAAW,IACXC,SAAU,IACVC,OAAQ,IACRC,UAAW,IACXC,0BAA2B,KAC3BvjQ,OAAQ,KACRwjQ,WAAY,KACZC,cAAe,KACfC,aAAc,IACdC,kBAAmB,KACnBC,qBAAsB,KACtBC,eAAgB,KAChBC,OAAQ,IACRC,sBAAuB,KACvBC,eAAgB,KAChBC,gBAAiB,IACjBC,iBAAkB,KAClBC,kBAAmB,IACnBC,aAAc,KACdC,YAAa,KACbC,cAAe,KACfC,aAAc,KACdC,OAAQ,KACRC,eAAgB,KAChBC,gBAAiB,KACjBC,gBAAiB,KACjBC,eAAgB,KAChBC,iBAAkB,KAClBC,YAAa,KACbC,UAAW,KACXC,mBAAoB,KACpBC,uBAAwB,KACxBC,gBAAiB,IACjBC,iBAAkB,IAClBC,oBAAqB,IACrBC,SAAU,KACVC,SAAU,KACVC,YAAa,KACbC,SAAU,IACVC,cAAe,IACfC,iBAAkB,IAClBC,YAAa,IACbC,uBAAwB,IACxBC,UAAW,KACXC,kBAAmB,KACnBC,kBAAmB,KACnBC,eAAgB,KAChBC,QAAS,KACTC,aAAc,KACdC,QAAS,KACTC,WAAY,KACZC,SAAU,KACV/1T,EAAG,IACHg2T,iBAAkB,IAClBC,sBAAuB,KACvBC,iBAAkB,KAClB/4S,EAAG,IACHg5S,4BAA6B,IAC7BC,WAAY,IACZt2S,KAAM,IACNu2S,sBAAuB,KACvBC,sBAAuB,KACvBC,yBAA0B,KAC1BC,QAAS,KACTC,UAAW,KACXC,WAAY,KACZC,GAAI,KACJttE,KAAM,MACNutE,SAAU,MACVC,KAAM,MACNzxF,IAAK,MACL0xF,IAAK,MACLC,MAAO,MACPC,KAAM,MACNC,KAAM,MACNC,IAAK,MACLC,MAAO,MACPC,MAAO,MACPC,KAAM,MACNC,WAAY,KACZC,aAAc,KACdC,KAAM,KACNC,QAAS,KACTC,IAAK,KACLh/T,EAAG,MACHi/T,GAAI,KACJh/T,EAAG,MACHi/T,GAAI,KACJC,KAAM,KACNC,KAAM,KACNC,mBAAoB,KACpBrqT,GAAI,KACJrN,EAAG,KACH23T,IAAK,KACLC,GAAI,KACJl4S,GAAI,MACJ43H,GAAI,KACJugL,QAAS,MACTC,IAAK,KACLvpQ,GAAI,KACJwpQ,GAAI,KACJC,KAAM,KACNC,GAAI,MACJC,MAAO,MACPC,MAAO,KACPC,MAAO,KACPC,oBAAqB,KACrBC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPviU,OAAQ,KACRwiU,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,gBAAiB,KACjBC,OAAQ,KACRC,MAAO,KACPC,MAAO,KACPC,WAAY,KACZC,cAAe,KACfC,cAAe,KACfC,aAAc,KACdC,kBAAmB,KACnBC,cAAe,KACfC,aAAc,KACdC,aAAc,IACdC,aAAc,IACdC,WAAY,KACZC,cAAe,KACfC,cAAe,KACfC,aAAc,KACdC,YAAa,KACbC,cAAe,KACfC,aAAc,KACdC,mBAAoB,IACpBC,mBAAoB,IACpBC,oBAAqB,KACrBC,oBAAqB,KACrBC,0BAA2B,IAC3BC,0BAA2B,IAC3BC,mBAAoB,KACpBC,mBAAoB,KACpBC,qBAAsB,KACtBC,mBAAoB,KACpBC,qBAAsB,KACtBC,mBAAoB,KACpBC,mBAAoB,KACpBC,wBAAyB,KACzBC,gCAAiC,KACjCC,aAAc,KACdC,oBAAqB,KACrBC,oBAAqB,KACrBC,eAAgB,KAChBC,wBAAyB,KACzBC,cAAe,KACfC,WAAY,KACZC,WAAY,MACZC,aAAc,SACdC,iBAAkB,SAClBC,YAAa,QACbC,iBAAkB,OAClBC,QAAS,OACTC,qBAAsB,OACtBC,YAAa,OACbC,gBAAiB,OACjBC,SAAU,OACVC,QAAS,OACTC,QAAS,OACTC,OAAQ,OACRC,WAAY,OACZC,UAAW,OACXC,eAAgB,OAChBC,QAAS,OACTC,UAAW,OACXC,MAAO,OACPC,cAAe,OACfC,WAAY,OACZC,mBAAoB,OACpBC,SAAU,OACVC,WAAY,OACZC,QAAS,OACTC,aAAc,OACdC,SAAU,OACVC,QAAS,OACTC,QAAS,OACTC,MAAO,OACPC,cAAe,OACfC,QAAS,OACTC,OAAQ,OACRC,QAAS,OACTC,sBAAuB,OACvBC,OAAQ,OACRC,QAAS,OACTC,OAAQ,OACRC,cAAe,OACfC,SAAU,OACVC,QAAS,OACTC,OAAQ,OACRC,OAAQ,OACRC,cAAe,OACfC,eAAgB,OAChBC,yBAA0B,OAC1BC,kBAAmB,OACnBC,YAAa,OACbC,aAAc,OACdC,aAAc,OACdC,MAAO,OACPC,SAAU,OACVC,GAAI,OACJC,SAAU,OACVC,kBAAmB,OACnBC,WAAY,OACZC,KAAM,OACNC,WAAY,OACZC,QAAS,OACTC,iBAAkB,OAClBC,OAAQ,OACRC,eAAgB,OAChBt3I,GAAI,OACJu3I,aAAc,OACdC,SAAU,OACVC,QAAS,OACTC,SAAU,OACVC,mBAAoB,OACpBC,QAAS,OACTC,cAAe,OACfC,QAAS,OACTC,QAAS,OACTC,MAAO,OACPC,eAAgB,OAChBC,QAAS,OACTC,GAAI,OACJC,SAAU,OACVC,GAAI,OACJC,eAAgB,OAChBC,QAAS,OACTC,KAAM,OACNC,iBAAkB,OAClBC,WAAY,OACZC,cAAe,OACfh7L,GAAI,OACJi7L,MAAO,OACPC,GAAI,OACJC,GAAI,OACJC,QAAS,OACTC,QAAS,OACTC,cAAe,OACfC,SAAU,OACVC,MAAO,OACPC,UAAW,OACXC,UAAW,OACXC,OAAQ,OACRC,OAAQ,OACRC,WAAY,OACZC,kBAAmB,OACnBC,OAAQ,OACRC,qCAAsC,OACtCC,UAAW,OACXC,KAAM,OACNC,cAAe,OACfC,OAAQ,OACRC,UAAW,OACXC,uBAAwB,OACxBC,SAAU,OACVC,QAAS,OACTC,MAAO,OACPC,QAAS,OACTC,eAAgB,OAChBC,UAAW,OACXC,QAAS,OACTC,OAAQ,OACRC,YAAa,OACbC,MAAO,OACPC,+BAAgC,OAChCC,KAAM,OACNC,KAAM,OACNC,QAAS,OACTvrI,GAAI,OACJwrI,OAAQ,OACRC,QAAS,OACTC,OAAQ,OACRC,GAAI,OACJC,MAAO,OACPC,WAAY,OACZC,SAAU,OACVC,SAAU,OACVC,QAAS,OACTC,eAAgB,OAChBC,YAAa,OACbC,GAAI,OACJC,OAAQ,OACRC,eAAgB,OAChBC,WAAY,OACZC,KAAM,OACNC,QAAS,OACTC,SAAU,OACVC,cAAe,OACfC,UAAW,OACXC,QAAS,OACTC,QAAS,OACTC,UAAW,OACXC,WAAY,OACZC,OAAQ,OACRC,MAAO,OACPC,QAAS,OACTC,OAAQ,OACRC,QAAS,OACTC,WAAY,OACZC,UAAW,OACXC,WAAY,OACZC,iBAAkB,OAClBC,UAAW,OACXC,KAAM,OACNC,QAAS,OACTC,SAAU,OACVC,MAAO,OACPC,yBAA0B,OAC1BC,WAAY,OACZC,WAAY,OACZC,WAAY,OACZC,MAAO,OACPC,UAAW,OACXC,SAAU,OACVC,OAAQ,OACRC,OAAQ,OACRC,SAAU,OACVC,WAAY,OACZC,QAAS,OACTC,cAAe,OACfC,MAAO,OACPC,eAAgB,OAChBC,QAAS,OACTC,UAAW,OACXC,YAAa,OACbC,OAAQ,OACRC,MAAO,OACPC,MAAO,OACPC,KAAM,OACNC,YAAa,OACbC,KAAM,OACNC,OAAQ,OACRC,KAAM,OACNC,iBAAkB,OAClBC,iBAAkB,OAClBC,YAAa,OACbC,SAAU,OACVC,OAAQ,OACRC,mBAAoB,OACpBC,iBAAkB,OAClBC,YAAa,OACbC,wBAAyB,OACzBC,SAAU,OACVC,MAAO,OACPC,SAAU,OACVC,MAAO,OACPC,QAAS,OACTC,QAAS,OACTC,OAAQ,OACRC,GAAI,OACJC,OAAQ,OACRC,aAAc,OACdC,gBAAiB,OACjBC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,UAAW,OACXC,UAAW,OACXC,SAAU,OACVC,mBAAoB,OACpBC,SAAU,OACVC,aAAc,OACdC,WAAY,OACZC,QAAS,OACTC,QAAS,OACTC,SAAU,OACVC,YAAa,OACbC,kBAAmB,OACnBC,YAAa,OACbC,aAAc,OACdC,MAAO,OACPC,UAAW,OACXC,iBAAkB,OAClBC,qBAAsB,OACtBC,KAAM,OACNC,4BAA6B,OAC7BC,KAAM,OACNC,SAAU,OACVC,WAAY,OACZC,QAAS,OACTC,YAAa,OACbC,aAAc,OACdC,QAAS,OACTC,MAAO,OACPxoP,GAAI,OACJyoP,gBAAiB,OACjBC,OAAQ,OACRC,OAAQ,OACRC,SAAU,OACVC,QAAS,OACTC,OAAQ,OACRC,oBAAqB,OACrBC,eAAgB,OAChBC,GAAI,OACJC,QAAS,OACTC,WAAY,OACZC,aAAc,OACdC,sBAAuB,OACvBC,UAAW,OACXC,uBAAwB,OACxBC,kBAAmB,OACnBC,QAAS,OACTC,QAAS,OACTC,cAAe,OACfC,MAAO,OACPC,OAAQ,OACRC,MAAO,OACPC,QAAS,OACTC,aAAc,OACdC,OAAQ,OACRC,SAAU,OACVC,QAAS,iBACTC,SAAU,iBACVC,MAAO,kBCxlcI,GAOX,SAQY3wP,EAAM7zE,EAAM8zE,EAAS/mE,GAa7B,SAASynE,EAAS9iF,EAAMwiF,GACtB,MAAMzxE,EAASyxE,EAAQA,EAAQ3iF,OAAS,GACxC,OAAOuiF,EACLpiF,EACA+Q,EAASA,EAAOjP,SAASmE,QAAQjG,GAAQ,KACzC+Q,GAjBgB,oBAATzC,GAA0C,oBAAZ8zE,IACvC/mE,EAAU+mE,EACVA,EAAU9zE,EACVA,EAAO,MAGTk+N,GAAarqJ,EAAM7zE,EAAMw0E,EAAUznE,IC7JnC,GAAO,kBAEP,GAAM,GAAG3H,eAOA,SAASq/T,KACtB,OAAQ5wP,IACN,GAAMA,EAAM,OAASniF,IACnB,MAAMvB,EAAQuB,EAAKvB,MAEbu0U,EAAS,GACf,GAAK3gT,UAAY,EACjB,IAAIviB,EAAQ,GAAKrB,KAAKhQ,GAClB4T,EAAQ,EAEZ,MAAOvC,EAAO,CACZ,MAAMi/D,EAA0Cj/D,EAAM,GAChDqoB,EAAWroB,EAAMY,MAEnB,GAAIlP,KAAKohR,GAAa7zM,IACpB18D,IAAU8lB,GACZ66S,EAAOvvU,KAAKhF,EAAMuF,MAAMqO,EAAO8lB,IAGjC66S,EAAOvvU,KAAKm/Q,GAAY7zM,IACxB18D,EAAQ8lB,EAAWroB,EAAM,GAAGjQ,QAE5B,GAAKwyB,UAAY8F,EAAW,EAG9BroB,EAAQ,GAAKrB,KAAKhQ,GAGhBu0U,EAAOnzU,OAAS,IAClBmzU,EAAOvvU,KAAKhF,EAAMuF,MAAMqO,IACxBrS,EAAKvB,MAAQu0U,EAAOtvR,KAAK,QC7CjC,SAAS,KACP,MAAO,CACLg1L,OAAShC,GAAcA,EAAUt9E,IAAI25K,K,iBCDrCE,GAAW,WACb,IAAIjxF,EAAMzgP,KACN2xU,EAAKlxF,EAAImxF,eACTlxF,EAAKD,EAAIE,MAAMD,IAAMixF,EACzB,OAAOjxF,EAAG,QAERmxF,GAAoB,GACxB,SAASC,GAAmBC,EAAeC,EAASC,EAAkBC,EAAoBC,EAAcC,EAASC,EAAkBC,GACjI,IAYIr/K,EAZA72J,EAAmC,oBAAlB21U,EAA+BA,EAAc31U,QAAU21U,EAqC5E,GApCIC,IACF51U,EAAQokP,OAASwxF,EACjB51U,EAAQ6lP,gBAAkBgwF,EAC1B71U,EAAQ47Q,WAAY,GAElBk6D,IACF91U,EAAQm2U,YAAa,GAEnBH,IACFh2U,EAAQo2U,SAAW,UAAYJ,GAG7BC,GACFp/K,EAAO,SAAStsJ,GACdA,EAAUA,GACV3G,KAAKyyU,QAAUzyU,KAAKyyU,OAAOC,YAC3B1yU,KAAKwP,QAAUxP,KAAKwP,OAAOijU,QAAUzyU,KAAKwP,OAAOijU,OAAOC,WACnD/rU,GAA0C,qBAAxBgsU,sBACrBhsU,EAAUgsU,qBAERR,GACFA,EAAalyU,KAAKD,KAAM2G,GAEtBA,GAAWA,EAAQisU,uBACrBjsU,EAAQisU,sBAAsB9uU,IAAIuuU,IAGtCj2U,EAAQy2U,aAAe5/K,GACdk/K,IACTl/K,EAAOq/K,EAAa,WAClBH,EAAalyU,KACXD,MACC5D,EAAQm2U,WAAavyU,KAAKwP,OAASxP,MAAM8yU,MAAMC,SAASviU,aAEzD2hU,GAEFl/K,EACF,GAAI72J,EAAQm2U,WAAY,CACtBn2U,EAAQ42U,cAAgB//K,EACxB,IAAIggL,EAAiB72U,EAAQokP,OAC7BpkP,EAAQokP,OAAS,SAAkCpsG,EAAGztI,GAEpD,OADAssJ,EAAKhzJ,KAAK0G,GACHssU,EAAe7+L,EAAGztI,QAEtB,CACL,IAAIqzC,EAAW59C,EAAQ82U,aACvB92U,EAAQ82U,aAAel5R,EAAW,GAAGv/B,OAAOu/B,EAAUi5G,GAAQ,CAACA,GAGnE,MAAO,CACLl2J,QAASg1U,EACT31U,WAGJ,MAAM+2U,GAAkB,CACtB7sU,MAAO,CACLpJ,MAAOglB,OACPm4D,QAAS55E,MACTgoF,SAAU6vJ,SACV7I,aAAc5yO,OACdiiB,KAAMoD,OACNu7N,gBAAiBjvO,OACjBs4D,YAAa5kD,OACbw7N,aAAc7gP,OACdu9E,OAAQv9E,OACRm9E,aAAcs+J,SACd7+G,UAAWjrH,QAEb,UACE,MAAM4kU,EAAU,IAAI,aAAc,CAChC50U,OAAQwB,KAAKqzU,IACb/sU,MAAOtG,KAAKszU,SAEdF,EAAQ72F,IAAI,SAAWh7O,IACrBvB,KAAKyjP,MAAM,SAAUliP,EAAEH,OAAOlE,SAEhC8C,KAAKk5E,OAASk6P,GAEhBvwF,MAAO,CACLywF,OAAQ,CACN,QAAQ5iG,EAAU6iG,GAChB,MAAMhsT,EAAO,IAAKmpN,GAClB,IAAK,IAAIl7M,KAAKjO,OACI,IAAZA,EAAKiO,WACAjO,EAAKiO,GAGhBx1B,KAAKk5E,OAAOujK,KAAKl1N,IAEnBwpN,MAAM,KAINyiG,GAAiB,GACvB,IAAIC,GAAkC3B,GACpCqB,GACAzB,GACAG,IACA,EACA6B,GACA,KACA,KACA,MAEF,SAASA,GAAsB/sU,GAC7B,IAAK,IAAIrB,KAAKkuU,GACZxzU,KAAKsF,GAAKkuU,GAAeluU,GAG7B,MAAM4zE,GAAyB,WAC7B,OAAOu6P,GAAgB12U,QADM,GAG/B,IAAI,GAAS,WACX,IAAI0jP,EAAMzgP,KACN2xU,EAAKlxF,EAAImxF,eACTlxF,EAAKD,EAAIE,MAAMD,IAAMixF,EACzB,OAAOjxF,EAAG,MAAO,CACfE,YAAa,gBACb+yF,SAAU,CACR,UAAalzF,EAAIQ,GAAGR,EAAIh6L,OAE1BrsC,GAAI,CACF,MAAS,SAASgoO,GAChB,OAAO3B,EAAI16J,YAAYq8J,QAK3B,GAAkB,GACtB,MAAMwxF,GAAgB,CACpBttU,MAAO,CAAC,QAAS,UAAW,WAAY,gBACxCutU,SAAU,CACR,OACE,IACE,OAAO,2BAAa7zU,KAAKszU,QAAQ99F,YAAYx1O,KAAK9C,OAClD,MAAOw+F,GACPq8I,QAAQxgG,MAAM77C,KAGlB,aACE,MAAO,CAAC17F,KAAKymD,KAAMzmD,KAAKq6E,QAASr6E,KAAKyoF,SAAUzoF,KAAKyvO,gBAGzDoT,MAAO,CACLixF,WAAY,CACV,QAAQ7zT,GACNjgB,KAAK2a,MACL3a,KAAK+zU,UAAU,KACb/zU,KAAKoa,QAGT22N,MAAM,IAGV,UACE/wO,KAAKoa,MAEP,gBACEpa,KAAK2a,OAEP2zF,QAAS,CACP,KACMtuG,KAAKq6E,SAAWr6E,KAAKymD,OACvBzmD,KAAKy3O,IAAMz3O,KAAKq6E,QAAQx0E,IACtB,EAAG6xO,kBAAmBA,GAAgBA,EAAa,CAAEH,aAAcv3O,KAAKqzU,IAAK5sR,KAAMzmD,KAAKymD,UAI9F,MACMzmD,KAAKy3O,KACPz3O,KAAKy3O,IAAI75O,QAAS+5O,GAAOA,GAAMA,MAGnC,YAAYp2O,GACV,MAAMq+G,EAAIr+G,EAAE/C,OACZ,GAAkB,MAAdohH,EAAEtqC,QACJ,OACF,MAAM8R,EAAOw4B,EAAEv/G,aAAa,QAC5B,IAAK+mF,IAASA,EAAKwwJ,WAAW,KAC5B,OACF,MAAM79L,EAAO/5C,KAAKqzU,IAAInjT,cAAc,iBAAmBk3D,EAAK3kF,MAAM,IAC9Ds3C,GACFA,EAAKpS,oBAIPqsS,GAAe,GACrB,IAAIC,GAAgCnC,GAClC8B,GACA,GACA,IACA,EACAM,GACA,KACA,KACA,MAEF,SAASA,GAAoBvtU,GAC3B,IAAK,IAAIrB,KAAK0uU,GACZh0U,KAAKsF,GAAK0uU,GAAa1uU,GAG3B,MAAMg3O,GAAyB,WAC7B,OAAO23F,GAAcl3U,QADQ,G,sCC2V/B,MAAAs9E,GAAA,CACA+6L,KACAmL,KAGA4zD,MAQe,QACfpzU,OACA,OACAuF,MAAA,CACAo+D,MAAA,QACAnkE,SAAA,WACA6zU,OAAA,QAGAC,MAAAz2T,OAAAywF,SAAAjnB,KACAn0E,KAAA,EACAqhU,MAAA,GACAvjU,IAAA,GACA8sC,GAAA,EACA+oB,SAAA,GACA7lE,KAAA,GACAiS,GAAA,GACAzT,KAAA,GACA08P,aAAA,CACA17P,SAAA,WACAmkE,MAAA,SAEA6vQ,SAAA,EACAhnE,MAAA,GAKAF,UAAA,GAEAnwQ,MACA,m2BACAm9E,WACAm6P,SACA,m2BACApnE,WAAA,EACAN,SAAA,GACAC,SAAA,GACA0nE,aAAA,GACA7nE,QAAA,GACAI,WAAA,GACAC,YAAA,GACAE,WAAA,GACAunE,KAAA,GACAx4U,KAAA,YACAy4U,MAAA,KACAhoE,MAAA,GACAioE,OAAA,EACA5gQ,MAAA,EACAg4L,OAAA,EACA6oE,MAAA,GACApoE,UAAA,GACAX,SAAA,EACAS,WAAA,OACAuoE,YAAA,GACAC,SAAA,KAGArxF,WAAA,CAAAnD,UAAAvI,WACAr6J,UASA,KAAA3qE,GAAA,KAAAgxO,OAAAC,MAAAjxO,GACA+kO,QAAA+K,IAAA,KAAA9vO,IACA,KAAA+hU,SAAA,KAAA/wF,OAAAC,MAAAjxO,GAEA,KAAAzT,KAAA,KAAAykP,OAAAC,MAAA1kP,KACA,KAAArD,KAAA,KAAA8nP,OAAAC,MAAA/nP,KACA,KAAAuiC,MAAA,KAAAu2S,cAIA,KAAAC,aAGA,KAAAC,eAGAC,gBACAp9F,QAAA+K,IAAA,SACA,KAAA6xF,OAEArvS,cAAA,KAAAqvS,QAKAS,iBAAA,SAAA7+T,EAAA7V,EAAA2iB,GACAiiB,cAAA,KAAAqvS,OACAtxT,KAEAirF,QAAA,CACA+mO,aAAAx3R,GACA,KAAA3gD,MAAA2gD,GAEAqvN,cAAAooE,GAEA13T,OAAAmlO,aAAAuoB,QAAA,sBACA,IAAA1tP,OAAAmlO,aAAAuoB,QAAA,uBACA,KAAAipE,QAEA32T,OAAA2oE,KAAA+uP,GAEA,KAAAC,SAAA,0BACAC,kBAAA,KACAC,iBAAA,KACAv5U,KAAA,YAEAgH,KAAA,KACA,KAAAggP,aAEAM,MAAA,SAIAkyF,WACA,IAAA30U,EAAA,CACAsoB,GAAA,cACA/B,MAAA1J,OAAAmlO,aAAAuoB,QAAA,sBAEAnoB,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,OAOA0gB,OAAAmlO,aAAAC,QACA,oBACAO,EAAAxiP,UAAAxB,MAKAqe,OAAAmlO,aAAAC,QACA,uBACAO,EAAAxiP,UAAA40U,WAKA,MAAApyF,EAAAxiP,KAAA7D,OACAimP,EAAAyyF,SAAAz1T,KAAA,gBAEAvC,OAAAmlO,aAAAC,QAAA,wBACAplO,OAAAmlO,aAAAC,QAAA,wBACAplO,OAAAmlO,aAAAC,QAAA,sBACAplO,OAAAmlO,aAAAC,QAAA,uBACAplO,OAAAmlO,aAAAC,QAAA,6BAEAplO,OAAAmlO,aAAAC,QAAA,wBACAplO,OAAAmlO,aAAAC,QAAA,wBACAplO,OAAAmlO,aAAAC,QAAA,sBACAplO,OAAAmlO,aAAAC,QAAA,uBACAplO,OAAAmlO,aAAAC,QAAA,+BAGAQ,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGA,eAAA94I,EAAAnC,GA2CA,OAzCA,GAAAshB,OAAAywF,SAAAjnB,KAAA1iF,QAAA,YACAkZ,OAAAmlO,aAAAC,QACA,oBAEA,KAAAgB,OAAAC,MAAA38N,OAEA,KAAAouT,YAGA39F,QAAA+K,IAAA,aACA/K,QAAA+K,IAAArkP,GACA,IAAAA,EAAAwY,QAEA8gO,QAAA+K,IAAA,SACA/K,QAAA+K,IAAA,KAAA/hP,MACAtE,WAAA,KACA,KAAAo5U,SAAAv5U,EAAAmC,IACA,MAEAA,EAAAwY,MAAA,IAGA8gO,QAAA+K,IAAA,mBAGAllO,OAAAmlO,aAAAuoB,QAAA,sBACA,IAAA1tP,OAAAmlO,aAAAuoB,QAAA,qBAEA,KAAAwqE,MAAAx5U,EAAAmC,EAAAsC,KAAAwjP,KAEA,KAAAgxF,SAAA,0BACAC,kBAAA,KACAC,iBAAA,KACAv5U,KAAA,YAEAgH,KAAA,KACA,KAAAggP,aAEAM,MAAA,SAGAlnP,EAAA,KAEAy5U,eAAAx2U,GAEA,IAAAohJ,EAAA,IAAA9xI,OAAA,QAAAtP,EAAA,qBACAuF,EAAA8Y,OAAAywF,SAAA57F,OAAA0R,OAAA,GAAA5V,MAAAoyI,GACA,aAAA77I,EACAkxU,SAAAlxU,EAAA,IAEA,MAGAowU,cACA,IAAArhG,EAAAj2N,OAAAywF,SAAAjnB,MACA,GAAAysJ,EAAAnvO,QAAA,YAEAmvO,IAAAjjO,MAAA,eAEA,IAAAqlU,KAAA,KAAAC,MAAAC,UAAA,CACAj8T,KAAA25N,EACAr9M,MAAA,IACAhV,OAAA,IACA40T,UAAA,OACAC,WAAA,OACAC,aAAAL,KAAAM,aAAArrU,KAGA2qU,SAAAv5U,GACA,IAAAyE,EAAA,CACAsoB,GAAA,cACA45N,MAAA,KAAAjwO,IAEAmwO,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACAimP,EAAAnwO,GAAAuwO,EAAAxiP,UAAAiS,GACAmwO,EAAAjnP,KAAAqnP,EAAAxiP,UAAA7E,KACAinP,EAAA5jP,KAAAgkP,EAAAxiP,UAAAxB,KACA4jP,EAAAopB,WAAAhpB,EAAAxiP,UAAAwrQ,WAEA,MAAAppB,EAAAjnP,KACAinP,EAAAj9O,KAAA,cAAA5J,GAEA6mP,EAAAj9O,KAAA,YAAA5J,OAIAknP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGAy9L,cACA,IAAApmB,EAAA,IAAAt7S,KACAkjU,EAAA5nB,EAAA6nB,cACA,IAAAC,EAAA9nB,EAAA+nB,WACA5+F,QAAA+K,IAAA,QAAA4zF,GASA,IARA,IAAAE,EAAA,CACAhoB,EAAA+nB,WAAA,EACA/nB,EAAAioB,UACAjoB,EAAAkoB,WACAloB,EAAAmoB,aACAnoB,EAAAooB,cAGA53U,EAAA,EAAAA,EAAAw3U,EAAAt4U,OAAAc,IACAw3U,EAAAx3U,IAAA,GAAAw3U,EAAAx3U,IAAA,IACAw3U,EAAAx3U,GAAA,IAAAw3U,EAAAx3U,IAGA,IAAA63U,EACAT,EACA,IACAI,EAAA,GACA,IACAA,EAAA,GACA,IACAA,EAAA,GACA,IACAA,EAAA,GACA,IACAA,EAAA,GAIA,OADA7+F,QAAA+K,IAAA,UAAAm0F,GACAA,GAEA1vT,OACA,IAAAssN,EAAAj2N,OAAAywF,SAAAjnB,MACA,GAAAysJ,EAAAnvO,QAAA,YAEAmvO,IAAAjjO,MAAA,eAEAhE,UAAAwiT,UAAA8nB,UAAArjG,GAEAkE,QAAA+K,IAAA,WAAAjP,GACA,KAAA+hG,SAAAuB,QAAA,eAGA/1F,YACA,KAAAkD,QAAApiP,KAAA,CAAA8rI,KAAA,QAEAi+H,UACA,KAAAD,OAAA,KAAAA,MAEA,KAAAA,OACA,KAAAS,UAAA,GACA,KAAAX,SAAA,KAEA,KAAAW,UAAA,GACA,KAAAX,SAAA,IAIAY,UACA,KAAA14L,MAAA,KAAAA,KAEA,KAAAA,MACA,KAAAy4L,UAAA,GACA,KAAAX,SAAA,EACA,KAAAE,OAAA,IAEA,KAAAS,UAAA,GACA,KAAAX,SAAA,EACA,KAAAE,OAAA,IAGAa,MAAA3yL,GAEA,GADA69J,QAAA+K,IAAA5oK,GAEAt8D,OAAAmlO,aAAAuoB,QAAA,sBACA,IAAA1tP,OAAAmlO,aAAAuoB,QAAA,uBACA,KAAAipE,QACA,CAEA,OAAAr6P,EAEA,YADA,KAAA07P,SAAAz1T,KAAA,QAIAvC,OAAA2oE,KAAArM,QAEA,KAAAq7P,SAAA,0BACAC,kBAAA,KACAC,iBAAA,KACAv5U,KAAA,YAEAgH,KAAA,KACA,KAAAggP,aAEAM,MAAA,SAGAN,WAEA,IAAAniP,EAAA,CACAsoB,GAAA,QACAntB,KAAA,SACAi9I,IAAA,KACAj8I,MAAA,KAAA63U,UAGA5xF,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACA0gB,OAAAywF,SAAAjnB,KAAAm8J,EAAAxiP,cAGAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGArxI,KAAAhK,EAAAI,GACAy7O,QAAA+K,IAAA,KAEA/K,QAAA+K,IAAA,GACA,IAAA/hP,EAAA,CACAsoB,GAAA,UACAk7N,IAAA,KAAAvxO,GACAsU,MAAA1J,OAAAmlO,aAAAuoB,QAAA,sBAEAnoB,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAAh+E,EAAAinP,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GAEA,GADAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,MA8CA,OA3CAimP,EAAApiP,KAAAwiP,EAAAxiP,UACAoiP,EAAA2pB,SAAAvpB,EAAAxiP,UAAA,GAAA+rQ,SACA3pB,EAAA4pB,SAAAxpB,EAAAxiP,UAAA,GAAAgsQ,SACA5pB,EAAAsxF,aAAAlxF,EAAAxiP,UAAA,GAAA0zU,aACAtxF,EAAAypB,QAAArpB,EAAAxiP,UAAA,GAAA6rQ,QACAzpB,EAAA6pB,WAAAzpB,EAAAxiP,UAAA,GAAAisQ,WACA7pB,EAAA8pB,YAAA1pB,EAAAxiP,UAAA,GAAAksQ,YAEA9pB,EAAAgqB,WAAA5pB,EAAAxiP,UAAA,GAAAosQ,WACAhqB,EAAAuxF,KAAAnxF,EAAAxiP,UAAA,GAAAwjP,IAEApB,EAAAi0F,SACAj0F,EAAA1kN,MAAA0kN,EAAA6xF,cACA7xF,EAAApiP,KAAAzC,OAAA,IACA6kP,EAAAwxF,MAAA/uS,YAAA,KACAu9M,EAAApyO,IAAAoyO,EAAA6xF,cACA7xF,EAAAk0F,cACA,MAGAt/F,QAAA+K,IAAAS,EAAAxiP,UAAA,IACA,QAAAwiP,EAAAxiP,UAAA,GAAA7E,MACAinP,EAAAkqB,UAAA9pB,EAAAxiP,UAAA,GAAAu2U,SACAn0F,EAAAiqB,WAAA,GACA,YAAA7pB,EAAAxiP,UAAA,GAAA7E,MACA67O,QAAA+K,IAAAS,EAAAxiP,UAAA,GAAAw2U,QACAp0F,EAAAkqB,UACA,0GACAt1B,QAAA+K,IAAA,IACAK,EAAAiqB,WAAA,GACA,OAAA7pB,EAAAxiP,UAAA,GAAA7E,MACAinP,EAAAkqB,UACA,8BAAA9pB,EAAAxiP,UAAA,GAAAy2U,QACAr0F,EAAAiqB,WAAA,IAEAjqB,EAAAkqB,UAAA9pB,EAAAxiP,UAAA,GAAAwP,KACA4yO,EAAAiqB,WAAA,GAEA7pB,EAAAxiP,KAAA02U,SACAt0F,EAAAoxF,SAAA,GAEAx8F,QAAA+K,IAAA,iBACA/K,QAAA+K,IAAAS,EAAAxiP,WACAzE,EAAAinP,EAAAxiP,cAYAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGAu+L,MAAAx5U,EAAAo7U,GACA3/F,QAAA+K,IAAA40F,GACA,IAAAC,EAAA,GAEAA,EADA,WAAAz7U,KACA,cAEA,YAGA67O,QAAA+K,IAAA,GACA,IAAA/hP,EAAA,CACAsoB,GAAA,UACAk7N,IAAA,KAAAvxO,GACA0kU,MACApwT,MAAA1J,OAAAmlO,aAAAuoB,QAAA,sBAEAnoB,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAAy9P,EAAAx0F,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GAEA,GADAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,MA2CA,OAAAZ,EAAAinP,EAAAxiP,cAYAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAIAqgM,iBAEA,IAAA72U,EAAA,CACAsoB,GAAA,cACAwuT,IAAA,KAAAnD,KACAoD,IAAAl6T,OAAAmlO,aAAAuoB,QAAA,oBAEAnoB,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACAimP,EAAAwpB,MAAAppB,EAAAxiP,cAGAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGA6/L,SACA,IAAAr2U,EAAA,CACAsoB,GAAA,YACAk7N,IAAA,KAAAmwF,MAEAvxF,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACAimP,EAAAoqB,MAAAhqB,EAAAxiP,cAGAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGA+1H,YACA,GACA1vP,OAAAmlO,aAAAuoB,QAAA,sBACA,IAAA1tP,OAAAmlO,aAAAuoB,QAAA,qBACA,CACA,IAAAvqQ,EAAA,CACAsoB,GAAA,UACAk7N,IAAA,KAAAmwF,KACAoD,IAAAl6T,OAAAmlO,aAAAuoB,QAAA,mBACAqqE,SAAA/3T,OAAAmlO,aAAAuoB,QAAA,wBACApjL,QAAA,KAAAthB,UAEAu8K,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GACAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,QACAimP,EAAAi0F,SACAj0F,EAAAv8K,SAAA,OAGA48K,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,WAGA,KAAAg+L,SAAA,0BACAC,kBAAA,KACAC,iBAAA,KACAv5U,KAAA,YAEAgH,KAAA,KACA,KAAAggP,aAEAM,MAAA,SAIA6zF,aACA,IAAAU,EAAA,EAEAn6T,OAAAmlO,aAAAuoB,QAAA,oBACA1tP,OAAAmlO,aAAAuoB,QAAA,oBAEAysE,EACAn6T,OAAAmlO,aAAAuoB,QAAA,mBACA1tP,OAAAmlO,aAAAuoB,QAAA,mBAEA,KAAAr4P,MACA,IAAAK,KAAA,KAAAvC,KAAAinU,UAAA,IAAA1kU,KAAA,KAAAmrB,OAAAu5S,WAAA,IACA,IAAAj3U,EAAA,CACAsoB,GAAA,UACAk7N,IAAA,KAAAmwF,KACAj2S,MAAA,KAAAA,MACA1tB,IAAA,KAAAA,IACAkC,KAAA,KAAAA,KACA8kU,UACAD,IAAAl6T,OAAAmlO,aAAAuoB,QAAA,oBAEAnoB,EAAA,KACA,KAAAC,MACAC,KAAA,KAAAnpK,IAAA,YAAAipK,EAAAG,GAAAhwG,UAAAvyI,IACAmC,MAAA,SAAAqgP,GAEA,GADAxL,QAAA+K,IAAAS,GACA,MAAAA,EAAAxiP,KAAA7D,MAAA,CAEAimP,EAAAy0F,iBAEA,QAAAx4U,EAAA,EAAAA,EAAA+jP,EAAApiP,KAAAzC,OAAAc,IACA+jP,EAAApiP,KAAA3B,GAAAmlP,KAAApB,EAAAuxF,OAGAvxF,EAAApiP,KAAA3B,GAAAinD,MAAA,EACA88L,EAAApiP,KAAA3B,GAAAm7E,KAAA,iBAGA,QAAAn7E,EAAA,EAAAA,EAAA+jP,EAAApiP,KAAAzC,OAAAc,IACA,QAAAi/B,EAAA,EAAAA,EAAA8kN,EAAApiP,KAAA3B,GAAAmB,SAAAjC,OAAA+/B,IACA8kN,EAAApiP,KAAA3B,GAAAmB,SAAA89B,GAAAkmN,KAAApB,EAAAuxF,OAGAvxF,EAAApiP,KAAA3B,GAAAmB,SAAA89B,GAAAgoB,MAAA,EACA88L,EAAApiP,KAAA3B,GAAAmB,SAAA89B,GAAAk8C,KAAA,iBAIAw9J,QAAA+K,IAAAK,EAAApiP,UAKAyiP,OAAA,SAAAjsG,GACAwgG,QAAA+K,IAAAvrG,OAGAi1H,MAAA3uN,GACA,QAAAA,EAAA,CACA,IAAAu2F,EAAAp4I,SAAAi8U,eAAA,UAAAn7T,aACA9gB,SAAAqgC,gBAAAK,UAAA03G,EAAA,IACA,KAAAv2F,GAAA,EACA,KAAAu5R,cAEAp7U,SAAAqgC,gBAAAK,UAAA,EAGA,KAAAmhB,GAAA,GAGAuuN,gBAAArrQ,EAAAtC,GAGAmf,OAAAmlO,aAAAuoB,QAAA,sBACA,IAAA1tP,OAAAmlO,aAAAuoB,QAAA,sBAIAtvQ,SAAAqgC,gBAAAK,UAAA,EAEA,KAAAmhB,GAAA,EACA,KAAApf,MAAA,KAAAu2S,cACA,KAAAloE,SAAA/rQ,EAAA+rQ,SACA,KAAAC,SAAAhsQ,EAAAgsQ,SACA,KAAA0nE,aAAA1zU,EAAA0zU,aACA,KAAA7nE,QAAA7rQ,EAAA6rQ,QACA,KAAAI,WAAAjsQ,EAAAisQ,WACA,KAAAC,YAAAlsQ,EAAAksQ,YACA,KAAAE,WAAApsQ,EAAAosQ,WACA,KAAAunE,KAAA3zU,EAAAwjP,IACAxM,QAAA+K,IAAA,KAAAqqB,YACA,QAAApsQ,EAAA7E,MACA,KAAAmxQ,UAAAtsQ,EAAAu2U,SACA,KAAAlqE,WAAA,GACA,YAAArsQ,EAAA7E,MACA,KAAAmxQ,UAAAtsQ,EAAAw2U,OACAx/F,QAAA+K,IAAA,GACA,KAAAsqB,WAAA,GACA,OAAArsQ,EAAA7E,MACA,KAAAmxQ,UAAA,8BAAAtsQ,EAAAy2U,QACA,KAAApqE,WAAA,EAGA,KAAAiqE,aAEA,KAAApC,eAEA,KAAA7nE,WAAA,EACA,KAAAC,UAAAtsQ,EAAAwP,OAGA,KAAAglU,SAAA,0BACAC,kBAAA,KACAC,iBAAA,KACAv5U,KAAA,YAEAgH,KAAA,KACA,KAAAggP,aAEAM,MAAA,SAqBAyxF,aACAx4U,WAAA,KAIA,IAFAT,SACAi8U,eAAA,KACAC,cAAAl8U,SAAAi8U,eAAA,UAAAh1Q,YAEAjnE,SACAi8U,eAAA,KACAC,cAAAl8U,SAAAi8U,eACA,mBACAv7S,UAAA,EAEA,KAAAu4S,aAEAl9F,QAAA+K,IAAA,IACA,QC10CiX,M,mCCS7WlhP,GAAY,gBACd,GACA4+O,EACAyB,GACA,EACA,KACA,WACA,MAIa,aAAArgP,G,2CCpBf,W,mBCQA,IAAImiB,EAAU,6HAEdo0T,EAAOp7U,QAAU,SAAUgE,GACzB,IAAI4E,EAAI5E,EAAKwN,MAAMwV,GACf1U,EAAQ,EACZ,IAAK1J,EACH,OAAO,EAET,IAAK,IAAIvG,EAAI,EAAGA,EAAIuG,EAAErH,OAAQc,IACxBuG,EAAEvG,GAAG4W,WAAW,IAAM,MACxB3G,GAAS1J,EAAEvG,GAAGd,OAEd+Q,GAAS,EAGb,OAAOA,I,yDCvBT,W,yDCAA,W,gECAA,IAAImxO,EAAS,WAAkB,IAAIC,EAAIzgP,KAAQygP,EAAIE,MAAMD,GAAG,OAAOD,EAAI23F,GAAG,IAEtEn2F,EAAkB,CAAC,WAAY,IAAIxB,EAAIzgP,KAAK0gP,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAO,CAACr3J,MAAM,CAAC,SAAW,MAAM,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,mBAAmB,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,qBAAqB,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,mBAAmB,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,uBAAuB,CAACq3J,EAAG,MAAM,CAACE,YAAY,6BAA6Bv3J,MAAM,CAAC,GAAK,qBAAqB,KAAO,eAAe,CAACq3J,EAAG,SAAS,CAACE,YAAY,wBAAwBE,YAAY,CAAC,QAAU,KAAKz3J,MAAM,CAAC,GAAK,gBAAgB,MAAQ,kBAAkB,SAAW,IAAI,eAAe,SAAS,KAAO,QAAQ,eAAe,OAAO,gBAAgB,kBAAkB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,iBAAiB,CAACo3J,EAAIO,GAAG,kBAAkBN,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,cAAc,MAAQ,oEAAoE,SAAW,IAAI,eAAe,mBAAmB,KAAO,QAAQ,eAAe,QAAQ,gBAAgB,gBAAgB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,2BAA2B,CAACo3J,EAAIO,GAAG,wBAAwBN,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,kBAAkB,MAAQ,mBAAmB,SAAW,IAAI,eAAe,cAAc,KAAO,QAAQ,eAAe,QAAQ,gBAAgB,oBAAoB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,sBAAsB,CAACo3J,EAAIO,GAAG,mBAAmBN,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,aAAa,MAAQ,sEAAsE,SAAW,IAAI,eAAe,SAAS,KAAO,QAAQ,eAAe,QAAQ,gBAAgB,eAAe,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,iBAAiB,CAACo3J,EAAIO,GAAG,kBAAkBN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,wBAAwB,CAACq3J,EAAG,MAAM,CAACE,YAAY,SAASv3J,MAAM,CAAC,GAAK,4BAA4B,CAACq3J,EAAG,MAAM,CAACE,YAAY,6BAA6BF,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,qBAAqB,SAAW,WAAW,MAAQ,4BAA4B,SAAW,IAAI,eAAe,yBAAyB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,+BAA+B,CAACo3J,EAAIO,GAAG,kCAAkCN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,mBAAmB,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,mBAAmBq3J,EAAG,MAAM,CAACE,YAAY,SAASv3J,MAAM,CAAC,GAAK,iBAAiBq3J,EAAG,MAAM,CAACE,YAAY,SAASv3J,MAAM,CAAC,GAAK,qBAAqBq3J,EAAG,MAAM,CAACE,YAAY,SAASv3J,MAAM,CAAC,GAAK,kBAAkBq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,sBAAsBo3J,EAAIO,GAAG,KAAKN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,kBAAkB,CAACq3J,EAAG,MAAM,CAACE,YAAY,4BAA4Bv3J,MAAM,CAAC,GAAK,YAAY,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,0BAA0B,CAACq3J,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,GAAK,YAAY,MAAQ,OAAO,YAAc,oBAAoB,SAAW,KAAK,eAAe,aAAa,eAAe,WAAWq3J,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,eAAe,MAAQ,6CAA6C,SAAW,KAAK,eAAe,kBAAkB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,wBAAwB,CAACo3J,EAAIO,GAAG,gBAAgBN,EAAG,MAAM,CAACE,YAAY,gCAAgCF,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,WAAW,MAAQ,yCAAyC,SAAW,KAAK,eAAe,cAAc,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,oBAAoB,CAACo3J,EAAIO,GAAG,gBAAgBN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,+BAA+B,CAACq3J,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,KAAO,WAAW,GAAK,mBAAmB,SAAW,QAAQq3J,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,IAAM,mBAAmB,eAAe,mBAAmB,CAACo3J,EAAIO,GAAG,mBAAmBN,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,KAAO,WAAW,GAAK,gBAAgB,SAAW,QAAQq3J,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,IAAM,gBAAgB,eAAe,0BAA0B,CAACo3J,EAAIO,GAAG,kBAAkBN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,+BAA+B,CAACq3J,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,KAAO,WAAW,GAAK,sBAAsB,SAAW,QAAQq3J,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,IAAM,sBAAsB,eAAe,gCAAgC,CAACo3J,EAAIO,GAAG,sBAAsBN,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,KAAO,WAAW,GAAK,iBAAiB,SAAW,QAAQq3J,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,IAAM,iBAAiB,eAAe,2BAA2B,CAACo3J,EAAIO,GAAG,mBAAmBN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,0BAA0B,YAAY,WAAW,CAACq3J,EAAG,OAAO,CAACE,YAAY,eAAev3J,MAAM,CAAC,GAAK,sBAAsBq3J,EAAG,OAAO,CAACE,YAAY,eAAev3J,MAAM,CAAC,GAAK,iBAAiBo3J,EAAIO,GAAG,KAAKN,EAAG,MAAM,CAACE,YAAY,6CAA6Cv3J,MAAM,CAAC,GAAK,gCAAgC,CAACq3J,EAAG,MAAM,CAACE,YAAY,gCAAgC,CAACF,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,QAAQ,CAACE,YAAY,oBAAoBv3J,MAAM,CAAC,IAAM,sBAAsB,eAAe,2BAA2B,CAACo3J,EAAIO,GAAG,WAAWN,EAAG,QAAQ,CAACE,YAAY,oBAAoBv3J,MAAM,CAAC,KAAO,QAAQ,GAAK,sBAAsB,SAAW,WAAWq3J,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,QAAQ,CAACE,YAAY,oBAAoBv3J,MAAM,CAAC,IAAM,yBAAyB,eAAe,0BAA0B,CAACo3J,EAAIO,GAAG,UAAUN,EAAG,QAAQ,CAACE,YAAY,qBAAqBv3J,MAAM,CAAC,KAAO,QAAQ,GAAK,yBAAyB,MAAQ,KAAK,IAAM,IAAI,IAAM,MAAM,KAAO,IAAI,SAAW,eAAeq3J,EAAG,MAAM,CAACE,YAAY,6CAA6Cv3J,MAAM,CAAC,GAAK,2BAA2B,CAACq3J,EAAG,MAAM,CAACE,YAAY,gCAAgC,CAACF,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,QAAQ,CAACE,YAAY,oBAAoBv3J,MAAM,CAAC,IAAM,iBAAiB,eAAe,qBAAqB,CAACo3J,EAAIO,GAAG,WAAWN,EAAG,QAAQ,CAACE,YAAY,oBAAoBv3J,MAAM,CAAC,KAAO,QAAQ,GAAK,iBAAiB,SAAW,WAAWq3J,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,QAAQ,CAACE,YAAY,oBAAoBv3J,MAAM,CAAC,IAAM,qBAAqB,eAAe,yBAAyB,CAACo3J,EAAIO,GAAG,eAAeN,EAAG,QAAQ,CAACE,YAAY,qBAAqBv3J,MAAM,CAAC,KAAO,QAAQ,GAAK,qBAAqB,MAAQ,IAAI,IAAM,IAAI,IAAM,KAAK,KAAO,IAAI,SAAW,WAAWq3J,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,QAAQ,CAACE,YAAY,oBAAoBv3J,MAAM,CAAC,IAAM,mBAAmB,eAAe,uBAAuB,CAACo3J,EAAIO,GAAG,aAAaN,EAAG,QAAQ,CAACE,YAAY,qBAAqBv3J,MAAM,CAAC,KAAO,QAAQ,GAAK,mBAAmB,MAAQ,MAAM,IAAM,IAAI,IAAM,MAAM,KAAO,IAAI,SAAW,eAAeq3J,EAAG,MAAM,CAACE,YAAY,0CAA0Cv3J,MAAM,CAAC,GAAK,qBAAqB,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,oCAAoC,CAACq3J,EAAG,SAAS,CAACE,YAAY,0CAA0Cv3J,MAAM,CAAC,GAAK,oBAAoB,MAAQ,YAAY,SAAW,KAAK,eAAe,cAAc,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,oBAAoB,CAACo3J,EAAIO,GAAG,YAAYN,EAAG,SAAS,CAACE,YAAY,2CAA2Cv3J,MAAM,CAAC,GAAK,iBAAiB,MAAQ,QAAQ,SAAW,KAAK,eAAe,UAAU,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,gBAAgB,CAACo3J,EAAIO,GAAG,aAAaN,EAAG,SAAS,CAACE,YAAY,2CAA2Cv3J,MAAM,CAAC,GAAK,oBAAoB,MAAQ,OAAO,SAAW,KAAK,eAAe,SAAS,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,eAAe,CAACo3J,EAAIO,GAAG,YAAYN,EAAG,MAAM,CAACE,YAAY,gDAAgDF,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,mBAAmB,MAAQ,8BAA8B,SAAW,KAAK,eAAe,sBAAsB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,4BAA4B,CAACo3J,EAAIO,GAAG,yBAAyBN,EAAG,IAAI,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,KAAO,IAAI,GAAK,eAAe,MAAQ,4CAA4C,SAAW,KAAK,eAAe,cAAc,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,oBAAoB,CAACo3J,EAAIO,GAAG,oBAAoBN,EAAG,MAAM,CAACE,YAAY,6BAA6Bv3J,MAAM,CAAC,GAAK,2BAA2Bq3J,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,YAAY,MAAQ,mBAAmB,SAAW,KAAK,eAAe,eAAe,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,qBAAqB,CAACo3J,EAAIO,GAAG,wBAAwBN,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,WAAW,MAAQ,kBAAkB,SAAW,KAAK,eAAe,cAAc,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,oBAAoB,CAACo3J,EAAIO,GAAG,uBAAuBN,EAAG,MAAM,CAACE,YAAY,+BAA+BF,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,eAAe,MAAQ,mBAAmB,SAAW,KAAK,eAAe,mBAAmB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,yBAAyB,CAACo3J,EAAIO,GAAG,wBAAwBN,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,gBAAgB,MAAQ,0BAA0B,SAAW,KAAK,eAAe,oBAAoB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,0BAA0B,CAACo3J,EAAIO,GAAG,+BAA+BN,EAAG,MAAM,CAACE,YAAY,+BAA+BF,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,oBAAoB,KAAO,eAAe,CAACq3J,EAAG,SAAS,CAACE,YAAY,iCAAiCv3J,MAAM,CAAC,GAAK,mBAAmB,MAAQ,6BAA6B,SAAW,KAAK,eAAe,0BAA0B,KAAO,QAAQ,eAAe,SAAS,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,kCAAkC,CAACo3J,EAAIO,GAAG,2BAA2BN,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,iBAAiB,MAAQ,mBAAmB,SAAW,KAAK,eAAe,mBAAmB,KAAO,QAAQ,eAAe,UAAU,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,2BAA2B,CAACo3J,EAAIO,GAAG,mBAAmBN,EAAG,MAAM,CAACE,YAAY,+BAA+BF,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,oBAAoB,KAAO,eAAe,CAACq3J,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,aAAa,MAAQ,qBAAqB,SAAW,KAAK,eAAe,cAAc,KAAO,QAAQ,eAAe,UAAU,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,sBAAsB,CAACo3J,EAAIO,GAAG,sBAAsBN,EAAG,SAAS,CAACE,YAAY,iCAAiCv3J,MAAM,CAAC,GAAK,iBAAiB,MAAQ,yBAAyB,SAAW,KAAK,eAAe,kBAAkB,KAAO,QAAQ,eAAe,SAAS,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,0BAA0B,CAACo3J,EAAIO,GAAG,0BAA0BN,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,mBAAmB,MAAQ,2BAA2B,SAAW,KAAK,eAAe,oBAAoB,KAAO,QAAQ,eAAe,UAAU,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,4BAA4B,CAACo3J,EAAIO,GAAG,4BAA4BN,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,gBAAgB,MAAQ,wBAAwB,SAAW,KAAK,eAAe,iBAAiB,KAAO,QAAQ,eAAe,UAAU,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,yBAAyB,CAACo3J,EAAIO,GAAG,2BAA2BN,EAAG,MAAM,CAACE,YAAY,+BAA+BF,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,oBAAoB,KAAO,eAAe,CAACq3J,EAAG,SAAS,CAACE,YAAY,iCAAiCv3J,MAAM,CAAC,GAAK,aAAa,MAAQ,2BAA2B,SAAW,KAAK,eAAe,cAAc,KAAO,QAAQ,eAAe,SAAS,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,sBAAsB,CAACo3J,EAAIO,GAAG,kBAAkBN,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,YAAY,MAAQ,qDAAqD,SAAW,KAAK,eAAe,aAAa,KAAO,QAAQ,eAAe,UAAU,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,qBAAqB,CAACo3J,EAAIO,GAAG,mBAAmBN,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,aAAa,MAAQ,sDAAsD,SAAW,KAAK,eAAe,cAAc,KAAO,QAAQ,eAAe,UAAU,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,sBAAsB,CAACo3J,EAAIO,GAAG,sBAAsBN,EAAG,MAAM,CAACE,YAAY,+BAA+BF,EAAG,SAAS,CAACE,YAAY,yBAAyBv3J,MAAM,CAAC,GAAK,qBAAqB,MAAQ,uBAAuB,SAAW,KAAK,eAAe,sBAAsB,gBAAgB,6BAA6B,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,8BAA8B,CAACo3J,EAAIO,GAAG,gCAAgCP,EAAIO,GAAG,KAAKN,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,qBAAqB,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,kBAAkB,CAACq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,sBAAsB,CAACq3J,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,gBAAgB,MAAQ,iBAAiB,SAAW,KAAK,eAAe,iBAAiB,gBAAgB,QAAQ,gBAAgB,qBAAqB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,yBAAyB,CAACo3J,EAAIO,GAAG,sBAAsBN,EAAG,MAAM,CAACE,YAAY,wBAAwBF,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,WAAW,MAAQ,mBAAmB,SAAW,KAAK,eAAe,UAAU,gBAAgB,QAAQ,gBAAgB,YAAY,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,kBAAkB,CAACo3J,EAAIO,GAAG,YAAYN,EAAG,MAAM,CAACE,YAAY,sCAAsC,CAACF,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,MAAQ,gBAAgB,GAAK,WAAW,SAAW,KAAK,eAAe,aAAa,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,mBAAmB,CAACo3J,EAAIO,GAAG,gBAAgBN,EAAG,MAAM,CAACE,YAAY,gCAAgCF,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,MAAQ,YAAY,GAAK,OAAO,SAAW,KAAK,eAAe,SAAS,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,eAAe,CAACo3J,EAAIO,GAAG,cAAcN,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,KAAO,SAAS,GAAK,aAAa,MAAQ,OAAO,MAAQ,IAAI,IAAM,IAAI,SAAW,KAAK,eAAe,OAAO,aAAe,SAASq3J,EAAG,OAAO,CAACE,YAAY,eAAev3J,MAAM,CAAC,GAAK,gBAAgBq3J,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,uBAAuB,CAACq3J,EAAG,SAAS,CAACE,YAAY,gCAAgCv3J,MAAM,CAAC,GAAK,WAAW,MAAQ,YAAY,SAAW,KAAK,eAAe,cAAc,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,oBAAoB,CAACo3J,EAAIO,GAAG,YAAYN,EAAG,SAAS,CAACE,YAAY,iCAAiCv3J,MAAM,CAAC,GAAK,QAAQ,MAAQ,QAAQ,SAAW,KAAK,eAAe,UAAU,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,gBAAgB,CAACo3J,EAAIO,GAAG,aAAaN,EAAG,SAAS,CAACE,YAAY,iCAAiCv3J,MAAM,CAAC,GAAK,WAAW,MAAQ,OAAO,SAAW,KAAK,eAAe,SAAS,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,eAAe,CAACo3J,EAAIO,GAAG,YAAYN,EAAG,MAAM,CAACE,YAAY,8CAA8CF,EAAG,MAAM,CAACE,YAAY,6BAA6Bv3J,MAAM,CAAC,GAAK,oBAAoB,KAAO,eAAe,CAACq3J,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,iBAAiB,SAAW,WAAW,MAAQ,OAAO,KAAO,QAAQ,eAAe,QAAQ,gBAAgB,8BAA8B,SAAW,KAAK,eAAe,sBAAsB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,4BAA4B,CAACo3J,EAAIO,GAAG,YAAYN,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,YAAY,SAAW,WAAW,MAAQ,OAAO,KAAO,QAAQ,eAAe,QAAQ,gBAAgB,yBAAyB,SAAW,KAAK,eAAe,gBAAgB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,sBAAsB,CAACo3J,EAAIO,GAAG,cAAcN,EAAG,MAAM,CAACE,YAAY,2BAA2Bv3J,MAAM,CAAC,GAAK,yBAAyBq3J,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,yBAAyB,MAAQ,QAAQ,SAAW,KAAK,eAAe,QAAQ,gBAAgB,QAAQ,gBAAgB,qBAAqB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,gBAAgB,CAACo3J,EAAIO,GAAG,eAAeN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,wBAAwB,CAACq3J,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,UAAU,MAAQ,WAAW,SAAW,KAAK,eAAe,aAAa,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,mBAAmB,CAACo3J,EAAIO,GAAG,gBAAgBN,EAAG,MAAM,CAACE,YAAY,gCAAgCF,EAAG,SAAS,CAACE,YAAY,gBAAgBv3J,MAAM,CAAC,GAAK,SAAS,MAAQ,UAAU,SAAW,KAAK,eAAe,YAAY,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,kBAAkB,CAACo3J,EAAIO,GAAG,iBAAiBN,EAAG,OAAO,CAACE,YAAY,wBAAwBv3J,MAAM,CAAC,GAAK,yBAAyB,CAACq3J,EAAG,SAAS,CAACr3J,MAAM,CAAC,GAAK,cAAc,MAAQ,OAAO,SAAW,KAAK,eAAe,SAAS,CAACq3J,EAAG,SAAS,CAACr3J,MAAM,CAAC,GAAK,iBAAiB,MAAQ,GAAG,MAAQ,OAAO,SAAW,WAAW,eAAe,oBAAoB,CAACo3J,EAAIO,GAAG,oBAAoBN,EAAG,SAAS,CAACr3J,MAAM,CAAC,GAAK,mBAAmB,MAAQ,GAAG,MAAQ,cAAc,eAAe,sBAAsB,CAACo3J,EAAIO,GAAG,iBAAiBN,EAAG,SAAS,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,MAAQ,GAAG,MAAQ,WAAW,eAAe,mBAAmB,CAACo3J,EAAIO,GAAG,cAAcN,EAAG,SAAS,CAACr3J,MAAM,CAAC,GAAK,kBAAkB,MAAQ,GAAG,MAAQ,aAAa,eAAe,qBAAqB,CAACo3J,EAAIO,GAAG,gBAAgBN,EAAG,SAAS,CAACr3J,MAAM,CAAC,GAAK,oBAAoB,MAAQ,GAAG,MAAQ,SAAS,SAAW,WAAW,OAAS,UAAUq3J,EAAG,SAAS,CAACr3J,MAAM,CAAC,MAAQ,GAAG,MAAQ,MAAM,eAAe,qBAAqB,iBAAiB,oBAAsB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,SAAS,CAACr3J,MAAM,CAAC,MAAQ,GAAG,MAAQ,OAAO,eAAe,qBAAqB,iBAAiB,oBAAsB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,SAAS,CAACr3J,MAAM,CAAC,MAAQ,GAAG,MAAQ,IAAI,eAAe,qBAAqB,iBAAiB,qBAAuB,CAACo3J,EAAIO,GAAG,UAAUN,EAAG,SAAS,CAACr3J,MAAM,CAAC,MAAQ,GAAG,MAAQ,OAAO,eAAe,qBAAqB,iBAAiB,qBAAuB,CAACo3J,EAAIO,GAAG,UAAUN,EAAG,SAAS,CAACr3J,MAAM,CAAC,MAAQ,GAAG,MAAQ,MAAM,eAAe,qBAAqB,iBAAiB,qBAAuB,CAACo3J,EAAIO,GAAG,UAAUN,EAAG,SAAS,CAACr3J,MAAM,CAAC,MAAQ,GAAG,MAAQ,IAAI,eAAe,qBAAqB,iBAAiB,qBAAuB,CAACo3J,EAAIO,GAAG,UAAUN,EAAG,SAAS,CAACr3J,MAAM,CAAC,MAAQ,GAAG,MAAQ,IAAI,eAAe,qBAAqB,iBAAiB,qBAAuB,CAACo3J,EAAIO,GAAG,UAAUN,EAAG,SAAS,CAACr3J,MAAM,CAAC,MAAQ,GAAG,MAAQ,IAAI,eAAe,qBAAqB,iBAAiB,qBAAuB,CAACo3J,EAAIO,GAAG,kBAAkBN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,eAAe,CAACq3J,EAAG,MAAM,CAACE,YAAY,YAAY,CAACF,EAAG,MAAM,CAACE,YAAY,oBAAoBF,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,kBAAkB,SAAW,MAAM,CAACq3J,EAAG,MAAM,CAACE,YAAY,YAAYv3J,MAAM,CAAC,GAAK,gBAAgBo3J,EAAIO,GAAG,KAAKN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,oBAAoB,CAACq3J,EAAG,SAAS,CAACr3J,MAAM,CAAC,GAAK,mBAAmB,CAACq3J,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,QAAQ,CAACr3J,MAAM,CAAC,IAAM,WAAW,GAAK,eAAe,eAAe,mBAAmB,CAACo3J,EAAIO,GAAG,iDAAiDN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,QAAQ,CAACE,YAAY,eAAev3J,MAAM,CAAC,KAAO,WAAW,GAAK,gBAAgBq3J,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,SAAS,CAACE,YAAY,eAAev3J,MAAM,CAAC,GAAK,mBAAmB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,oBAAoB,CAACo3J,EAAIO,GAAG,cAAcN,EAAG,SAAS,CAACE,YAAY,eAAev3J,MAAM,CAAC,GAAK,mBAAmB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,gBAAgB,CAACo3J,EAAIO,GAAG,cAAcN,EAAG,SAAS,CAACr3J,MAAM,CAAC,GAAK,6BAA6B,CAACq3J,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,eAAe,kCAAkC,CAACo3J,EAAIO,GAAG,gBAAgBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,kBAAkB,kBAAkB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,eAAe,kCAAkC,CAACo3J,EAAIO,GAAG,gBAAgBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,kBAAkB,kBAAkB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,cAAcF,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,aAAa,eAAe,8BAA8B,CAACo3J,EAAIO,GAAG,YAAYN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,aAAa,kBAAkB,eAAe,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,cAAc,eAAe,+BAA+B,CAACo3J,EAAIO,GAAG,aAAaN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,cAAc,kBAAkB,gBAAgB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,eAAe,eAAe,gCAAgC,CAACo3J,EAAIO,GAAG,cAAcN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,eAAe,kBAAkB,iBAAiB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,eAAe,iCAAiC,CAACo3J,EAAIO,GAAG,eAAeN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,kBAAkB,kBAAkB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,oBAAoB,eAAe,sCAAsC,CAACo3J,EAAIO,GAAG,oBAAoBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,oBAAoB,kBAAkB,sBAAsB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,wBAAwB,eAAe,0CAA0C,CAACo3J,EAAIO,GAAG,wBAAwBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,wBAAwB,kBAAkB,0BAA0B,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,eAAe,eAAe,gCAAgC,CAACo3J,EAAIO,GAAG,cAAcN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,eAAe,kBAAkB,iBAAiB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,cAAcF,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,eAAe,iCAAiC,CAACo3J,EAAIO,GAAG,mBAAmBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,kBAAkB,kBAAkB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,eAAe,eAAe,gCAAgC,CAACo3J,EAAIO,GAAG,kBAAkBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,eAAe,kBAAkB,iBAAiB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,iBAAiB,eAAe,mCAAmC,CAACo3J,EAAIO,GAAG,iBAAiBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,iBAAiB,kBAAkB,mBAAmB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,eAAe,kCAAkC,CAACo3J,EAAIO,GAAG,gBAAgBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,gBAAgB,kBAAkB,kBAAkB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,cAAcF,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,GAAK,kBAAkB,eAAe,mCAAmC,CAACo3J,EAAIO,GAAG,oBAAoBN,EAAG,IAAI,CAACr3J,MAAM,CAAC,GAAK,kBAAkB,kBAAkB,oBAAoB,CAACo3J,EAAIO,GAAG,SAASN,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,SAAS,CAACE,YAAY,eAAev3J,MAAM,CAAC,GAAK,4BAA4B,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,8BAA8B,CAACo3J,EAAIO,GAAG,iBAAiBN,EAAG,SAAS,CAACI,YAAY,CAAC,YAAY,SAASz3J,MAAM,CAAC,GAAK,uBAAuB,CAACq3J,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,2BAA2B,CAACo3J,EAAIO,GAAG,wCAAwCN,EAAG,MAAM,CAACE,YAAY,OAAO,CAACF,EAAG,WAAW,CAACr3J,MAAM,CAAC,MAAQ,IAAI,IAAM,SAASq3J,EAAG,OAAO,CAACE,YAAY,oBAAoBv3J,MAAM,CAAC,eAAe,yBAAyB,iBAAiB,sBAAwB,CAACo3J,EAAIO,GAAG,UAAUN,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,SAAS,CAACE,YAAY,eAAev3J,MAAM,CAAC,GAAK,gBAAgB,CAACq3J,EAAG,OAAO,CAACr3J,MAAM,CAAC,eAAe,yBAAyB,CAACo3J,EAAIO,GAAG,sBAAsBP,EAAIO,GAAG,KAAKN,EAAG,MAAM,CAACr3J,MAAM,CAAC,GAAK,oBAAoBq3J,EAAG,QAAQ,CAACE,YAAY,SAASv3J,MAAM,CAAC,KAAO,OAAO,GAAK,mB,YCDpyuBm+B,EAAS,GAKT5lH,EAAY,eACd4lH,EACAg5H,EACAyB,GACA,EACA,KACA,KACA,MAIa,aAAArgP,E,8BCPf,IAAIq0U,GAEH,SAAUnvU,EAAMooO,GAGiBipG,EAAOp7U,QAAUmyO,KAHnD,CAWElvO,GAAM,WAeP,SAASq4U,EAAWt3U,GACnBf,KAAK8e,KAAOw5T,EAAOC,eACnBv4U,KAAKe,KAAOA,EACZf,KAAKw4U,WAAa,GAGlB,IAAK,IAAIp5U,EAAI,EAAGgI,EAAIpH,KAAKe,KAAKzC,OAAQc,EAAIgI,EAAGhI,IAAK,CACjD,IAAIq5U,EAAY,GACZ7tU,EAAO5K,KAAKe,KAAKiV,WAAW5W,GAE5BwL,EAAO,OACV6tU,EAAU,GAAK,KAAgB,QAAP7tU,KAAqB,GAC7C6tU,EAAU,GAAK,KAAgB,OAAP7tU,KAAoB,GAC5C6tU,EAAU,GAAK,KAAgB,KAAP7tU,KAAkB,EAC1C6tU,EAAU,GAAK,IAAe,GAAP7tU,GACbA,EAAO,MACjB6tU,EAAU,GAAK,KAAgB,MAAP7tU,KAAmB,GAC3C6tU,EAAU,GAAK,KAAgB,KAAP7tU,KAAkB,EAC1C6tU,EAAU,GAAK,IAAe,GAAP7tU,GACbA,EAAO,KACjB6tU,EAAU,GAAK,KAAgB,KAAP7tU,KAAkB,EAC1C6tU,EAAU,GAAK,IAAe,GAAP7tU,GAEvB6tU,EAAU,GAAK7tU,EAGhB5K,KAAKw4U,WAAWt2U,KAAKu2U,GAGtBz4U,KAAKw4U,WAAa/3U,MAAMoR,UAAU4I,OAAO1I,MAAM,GAAI/R,KAAKw4U,YAEpDx4U,KAAKw4U,WAAWl6U,QAAU0B,KAAKe,KAAKzC,SACvC0B,KAAKw4U,WAAW3+T,QAAQ,KACxB7Z,KAAKw4U,WAAW3+T,QAAQ,KACxB7Z,KAAKw4U,WAAW3+T,QAAQ,MAe1B,SAAS6+T,EAAYC,EAAYC,GAChC54U,KAAK24U,WAAaA,EAClB34U,KAAK44U,kBAAoBA,EACzB54U,KAAK64U,QAAU,KACf74U,KAAK84U,YAAc,EACnB94U,KAAK+4U,UAAY,KACjB/4U,KAAKg5U,SAAW,GAjBjBX,EAAWxmU,UAAY,CACtBonU,UAAW,SAAU/vG,GACpB,OAAOlpO,KAAKw4U,WAAWl6U,QAExBmM,MAAO,SAAUy+N,GAChB,IAAK,IAAI9pO,EAAI,EAAGgI,EAAIpH,KAAKw4U,WAAWl6U,OAAQc,EAAIgI,EAAGhI,IAClD8pO,EAAOgwG,IAAIl5U,KAAKw4U,WAAWp5U,GAAI,KAclCs5U,EAAY7mU,UAAU,CAACsnU,QAAQ,SAASp4U,GAAM,IAAIq4U,EAAQ,IAAIf,EAAWt3U,GAAMf,KAAKg5U,SAAS92U,KAAKk3U,GAASp5U,KAAK+4U,UAAU,MAAOM,OAAO,SAAS3qG,EAAIr6N,GAAK,GAAGq6N,EAAI,GAAG1uO,KAAK84U,aAAapqG,GAAKr6N,EAAI,GAAGrU,KAAK84U,aAAazkU,EAAK,MAAM,IAAIvS,MAAM4sO,EAAI,IAAIr6N,GACjP,OAAOrU,KAAK64U,QAAQnqG,GAAKr6N,IAAOilU,eAAe,WAAW,OAAOt5U,KAAK84U,aAAcS,KAAK,WAAWv5U,KAAKw5U,UAAS,EAAMx5U,KAAKy5U,uBAAwBD,SAAS,SAASzsU,EAAK2sU,GAAa15U,KAAK84U,YAA4B,EAAhB94U,KAAK24U,WAAa,GAAG34U,KAAK64U,QAAQ,IAAIp4U,MAAMT,KAAK84U,aAAa,IAAI,IAAIpqG,EAAI,EAAEA,EAAI1uO,KAAK84U,YAAYpqG,IAAM,CAAC1uO,KAAK64U,QAAQnqG,GAAK,IAAIjuO,MAAMT,KAAK84U,aAAa,IAAI,IAAIzkU,EAAI,EAAEA,EAAIrU,KAAK84U,YAAYzkU,IAAOrU,KAAK64U,QAAQnqG,GAAKr6N,GAAK,KACjarU,KAAK25U,0BAA0B,EAAE,GAAG35U,KAAK25U,0BAA0B35U,KAAK84U,YAAY,EAAE,GAAG94U,KAAK25U,0BAA0B,EAAE35U,KAAK84U,YAAY,GAAG94U,KAAK45U,6BAA6B55U,KAAK65U,qBAAqB75U,KAAK85U,cAAc/sU,EAAK2sU,GAAgB15U,KAAK24U,YAAY,GAAG34U,KAAK+5U,gBAAgBhtU,GACxQ,MAAhB/M,KAAK+4U,YAAiB/4U,KAAK+4U,UAAUL,EAAYsB,WAAWh6U,KAAK24U,WAAW34U,KAAK44U,kBAAkB54U,KAAKg5U,WAC3Gh5U,KAAKi6U,QAAQj6U,KAAK+4U,UAAUW,IAAeC,0BAA0B,SAASjrG,EAAIr6N,GAAK,IAAI,IAAIvP,GAAG,EAAEA,GAAG,EAAEA,IAAK,KAAG4pO,EAAI5pO,IAAI,GAAG9E,KAAK84U,aAAapqG,EAAI5pO,GAAW,IAAI,IAAIL,GAAG,EAAEA,GAAG,EAAEA,IAAQ4P,EAAI5P,IAAI,GAAGzE,KAAK84U,aAAazkU,EAAI5P,IAAgGzE,KAAK64U,QAAQnqG,EAAI5pO,GAAGuP,EAAI5P,GAAzG,GAAGK,GAAGA,GAAG,IAAO,GAAHL,GAAS,GAAHA,IAAS,GAAGA,GAAGA,GAAG,IAAO,GAAHK,GAAS,GAAHA,IAAS,GAAGA,GAAGA,GAAG,GAAG,GAAGL,GAAGA,GAAG,IAAgFg1U,mBAAmB,WAA4C,IAAjC,IAAIS,EAAa,EAAMn2T,EAAQ,EAAU3kB,EAAE,EAAEA,EAAE,EAAEA,IAAI,CAACY,KAAKw5U,UAAS,EAAKp6U,GAAG,IAAI+6U,EAAUC,EAAOC,aAAar6U,OAAY,GAAHZ,GAAM86U,EAAaC,KAAWD,EAAaC,EAAUp2T,EAAQ3kB,GACtlB,OAAO2kB,GAAUu2T,gBAAgB,SAASC,EAAUC,EAAc3kQ,GAAO,IAAI4kQ,EAAMF,EAAUG,qBAAqBF,EAAc3kQ,GAAW8kQ,EAAG,EAAE36U,KAAKu5U,OAAO,IAAI,IAAI7qG,EAAI,EAAEA,EAAI1uO,KAAK64U,QAAQv6U,OAAOowO,IAAoB,IAAb,IAAIrwM,EAAEqwM,EAAIisG,EAAWtmU,EAAI,EAAEA,EAAIrU,KAAK64U,QAAQnqG,GAAKpwO,OAAO+V,IAAM,CAAC,IAAIoO,EAAEpO,EAAIsmU,EAAOC,EAAK56U,KAAK64U,QAAQnqG,GAAKr6N,GAAQumU,IAAMH,EAAMI,UAAU,EAAE,KAAKJ,EAAMK,OAAOr4T,EAAE4b,GAAGo8S,EAAMM,OAAOt4T,EAAEk4T,EAAGt8S,GAAGo8S,EAAMM,OAAOt4T,EAAEk4T,EAAGt8S,EAAEs8S,GAAIF,EAAMM,OAAOt4T,EAAE4b,EAAEs8S,GAAIF,EAAMO,WAC/a,OAAOP,GAAQZ,mBAAmB,WAAW,IAAI,IAAI/0U,EAAE,EAAEA,EAAE9E,KAAK84U,YAAY,EAAEh0U,IAA4B,MAApB9E,KAAK64U,QAAQ/zU,GAAG,KACtG9E,KAAK64U,QAAQ/zU,GAAG,GAAIA,EAAE,GAAG,GACzB,IAAI,IAAIL,EAAE,EAAEA,EAAEzE,KAAK84U,YAAY,EAAEr0U,IAA4B,MAApBzE,KAAK64U,QAAQ,GAAGp0U,KACzDzE,KAAK64U,QAAQ,GAAGp0U,GAAIA,EAAE,GAAG,IAAMm1U,2BAA2B,WAA8D,IAAnD,IAAIxlU,EAAIgmU,EAAOa,mBAAmBj7U,KAAK24U,YAAoBv5U,EAAE,EAAEA,EAAEgV,EAAI9V,OAAOc,IAAK,IAAI,IAAI2Z,EAAE,EAAEA,EAAE3E,EAAI9V,OAAOya,IAAI,CAAC,IAAI21N,EAAIt6N,EAAIhV,GAAOiV,EAAID,EAAI2E,GAAG,GAA2B,MAAxB/Y,KAAK64U,QAAQnqG,GAAKr6N,GACvO,IAAI,IAAIvP,GAAG,EAAEA,GAAG,EAAEA,IAAK,IAAI,IAAIL,GAAG,EAAEA,GAAG,EAAEA,IAAgDzE,KAAK64U,QAAQnqG,EAAI5pO,GAAGuP,EAAI5P,IAA5D,GAAJK,GAAU,GAAHA,IAAU,GAAJL,GAAU,GAAHA,GAAU,GAAHK,GAAS,GAAHL,IAAqFs1U,gBAAgB,SAAShtU,GAAwD,IAAlD,IAAImuU,EAAKd,EAAOe,iBAAiBn7U,KAAK24U,YAAoBv5U,EAAE,EAAEA,EAAE,GAAGA,IAAI,CAAC,IAAImtD,GAAMx/C,GAAqB,IAAbmuU,GAAM97U,EAAG,GAAOY,KAAK64U,QAAQtkU,KAAKoC,MAAMvX,EAAE,IAAIA,EAAE,EAAEY,KAAK84U,YAAY,EAAE,GAAGvsR,EACxW,IAAQntD,EAAE,EAAEA,EAAE,GAAGA,IAAI,CAAKmtD,GAAMx/C,GAAqB,IAAbmuU,GAAM97U,EAAG,GAAOY,KAAK64U,QAAQz5U,EAAE,EAAEY,KAAK84U,YAAY,EAAE,GAAGvkU,KAAKoC,MAAMvX,EAAE,IAAImtD,IAAOutR,cAAc,SAAS/sU,EAAK2sU,GAAmG,IAAtF,IAAI34U,EAAMf,KAAK44U,mBAAmB,EAAGc,EAAgBwB,EAAKd,EAAOgB,eAAer6U,GAAc3B,EAAE,EAAEA,EAAE,GAAGA,IAAI,CAAC,IAAImtD,GAAMx/C,GAAqB,IAAbmuU,GAAM97U,EAAG,GAAUA,EAAE,EAAGY,KAAK64U,QAAQz5U,GAAG,GAAGmtD,EAAantD,EAAE,EAAGY,KAAK64U,QAAQz5U,EAAE,GAAG,GAAGmtD,EAAUvsD,KAAK64U,QAAQ74U,KAAK84U,YAAY,GAAG15U,GAAG,GAAGmtD,EACja,IAAQntD,EAAE,EAAEA,EAAE,GAAGA,IAAI,CAAKmtD,GAAMx/C,GAAqB,IAAbmuU,GAAM97U,EAAG,GAAUA,EAAE,EAAGY,KAAK64U,QAAQ,GAAG74U,KAAK84U,YAAY15U,EAAE,GAAGmtD,EAAantD,EAAE,EAAGY,KAAK64U,QAAQ,GAAG,GAAGz5U,EAAE,EAAE,GAAGmtD,EAAUvsD,KAAK64U,QAAQ,GAAG,GAAGz5U,EAAE,GAAGmtD,EACpLvsD,KAAK64U,QAAQ74U,KAAK84U,YAAY,GAAG,IAAK/rU,GAAQktU,QAAQ,SAASl5U,EAAK24U,GAAkF,IAArE,IAAI2B,GAAK,EAAM3sG,EAAI1uO,KAAK84U,YAAY,EAAMwC,EAAS,EAAMC,EAAU,EAAUlnU,EAAIrU,KAAK84U,YAAY,EAAEzkU,EAAI,EAAEA,GAAK,EAAE,CAAS,GAALA,GAAOA,IAAM,MAAM,EAAK,CAAC,IAAI,IAAI5P,EAAE,EAAEA,EAAE,EAAEA,IAAK,GAA6B,MAA1BzE,KAAK64U,QAAQnqG,GAAKr6N,EAAI5P,GAAS,CAAC,IAAIm2U,GAAK,EAASW,EAAUx6U,EAAKzC,SAAQs8U,EAAwC,IAAhC75U,EAAKw6U,KAAaD,EAAU,IACpW,IAAIzpN,EAAKuoN,EAAOoB,QAAQ9B,EAAYhrG,EAAIr6N,EAAI5P,GAAMotH,IAAM+oN,GAAMA,GAC9D56U,KAAK64U,QAAQnqG,GAAKr6N,EAAI5P,GAAGm2U,EAAKU,KAAyB,GAAXA,IAAcC,IAAYD,EAAS,GACtE,GAAT5sG,GAAK2sG,EAAO3sG,EAAI,GAAG1uO,KAAK84U,aAAapqG,EAAI,CAACA,GAAK2sG,EAAIA,GAAKA,EAAI,WAAY3C,EAAY+C,KAAK,IAAK/C,EAAYgD,KAAK,GAAKhD,EAAYsB,WAAW,SAASrB,EAAWC,EAAkBI,GAAwG,IAA9F,IAAI2C,EAASC,EAAUC,YAAYlD,EAAWC,GAAuB1vG,EAAO,IAAI4yG,EAAsB18U,EAAE,EAAEA,EAAE45U,EAAS16U,OAAOc,IAAI,CAAC,IAAI2B,EAAKi4U,EAAS55U,GAAG8pO,EAAOgwG,IAAIn4U,EAAK+d,KAAK,GAAGoqN,EAAOgwG,IAAIn4U,EAAKk4U,YAAYmB,EAAO2B,gBAAgBh7U,EAAK+d,KAAK65T,IAAa53U,EAAK0J,MAAMy+N,GAC9b,IAAI8yG,EAAe,EAAE,IAAQ58U,EAAE,EAAEA,EAAEu8U,EAASr9U,OAAOc,IAAK48U,GAAgBL,EAASv8U,GAAG68U,UACpF,GAAG/yG,EAAO6yG,kBAAiC,EAAfC,EAAkB,MAAM,IAAIl6U,MAAM,0BAC7DonO,EAAO6yG,kBACP,IACe,EAAfC,EACA,KACE9yG,EAAO6yG,kBAAkB,GAAkB,EAAfC,GAAkB9yG,EAAOgwG,IAAI,EAAE,GAC9D,MAAMhwG,EAAO6yG,kBAAkB,GAAG,EAAG7yG,EAAOgzG,QAAO,GACnD,MAAM,EAAK,CAAC,GAAGhzG,EAAO6yG,mBAAkC,EAAfC,EAAkB,MAC5B,GAA/B9yG,EAAOgwG,IAAIR,EAAY+C,KAAK,GAAMvyG,EAAO6yG,mBAAkC,EAAfC,EAAkB,MAC9E9yG,EAAOgwG,IAAIR,EAAYgD,KAAK,GAC5B,OAAOhD,EAAYyD,YAAYjzG,EAAOyyG,IAAYjD,EAAYyD,YAAY,SAASjzG,EAAOyyG,GAAqI,IAA3H,IAAI/wT,EAAO,EAAMwxT,EAAW,EAAMC,EAAW,EAAMC,EAAO,IAAI77U,MAAMk7U,EAASr9U,QAAYi+U,EAAO,IAAI97U,MAAMk7U,EAASr9U,QAAgBwG,EAAE,EAAEA,EAAE62U,EAASr9U,OAAOwG,IAAI,CAAC,IAAI03U,EAAQb,EAAS72U,GAAGm3U,UAAcQ,EAAQd,EAAS72U,GAAG43U,WAAWF,EAAQJ,EAAW7nU,KAAKyC,IAAIolU,EAAWI,GAASH,EAAW9nU,KAAKyC,IAAIqlU,EAAWI,GAASH,EAAOx3U,GAAG,IAAIrE,MAAM+7U,GAAS,IAAI,IAAIp9U,EAAE,EAAEA,EAAEk9U,EAAOx3U,GAAGxG,OAAOc,IAAKk9U,EAAOx3U,GAAG1F,GAAG,IAAK8pO,EAAOA,OAAO9pO,EAAEwrB,GAClgBA,GAAQ4xT,EAAQ,IAAIG,EAAOvC,EAAOwC,0BAA0BH,GAAaI,EAAQ,IAAIC,EAAaR,EAAOx3U,GAAG63U,EAAO1D,YAAY,GAAO8D,EAAQF,EAAQtwR,IAAIowR,GAAQJ,EAAOz3U,GAAG,IAAIrE,MAAMk8U,EAAO1D,YAAY,GAAG,IAAQ75U,EAAE,EAAEA,EAAEm9U,EAAOz3U,GAAGxG,OAAOc,IAAI,CAAC,IAAI49U,EAAS59U,EAAE29U,EAAQ9D,YAAYsD,EAAOz3U,GAAGxG,OAAOi+U,EAAOz3U,GAAG1F,GAAI49U,GAAU,EAAGD,EAAQt/S,IAAIu/S,GAAU,GACrV,IAAIC,EAAe,EAAE,IAAQ79U,EAAE,EAAEA,EAAEu8U,EAASr9U,OAAOc,IAAK69U,GAAgBtB,EAASv8U,GAAGs9U,WACpF,IAAI37U,EAAK,IAAIN,MAAMw8U,GAAoB9tU,EAAM,EAAE,IAAQ/P,EAAE,EAAEA,EAAEg9U,EAAWh9U,IAAK,IAAQ0F,EAAE,EAAEA,EAAE62U,EAASr9U,OAAOwG,IAAQ1F,EAAEk9U,EAAOx3U,GAAGxG,SAAQyC,EAAKoO,KAASmtU,EAAOx3U,GAAG1F,IAC/J,IAAQA,EAAE,EAAEA,EAAEi9U,EAAWj9U,IAAK,IAAQ0F,EAAE,EAAEA,EAAE62U,EAASr9U,OAAOwG,IAAQ1F,EAAEm9U,EAAOz3U,GAAGxG,SAAQyC,EAAKoO,KAASotU,EAAOz3U,GAAG1F,IAChH,OAAO2B,GAgByE,IAhBlE,IAAIu3U,EAAO,CAAC4E,YAAY,EAAKC,eAAe,EAAK5E,eAAe,EAAK6E,WAAW,GAAUC,EAAoB,CAACh2K,EAAE,EAAEi2K,EAAE,EAAEC,EAAE,EAAEryU,EAAE,GAAOsyU,EAAc,CAACC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,EAAEC,WAAW,GAAO5D,EAAO,CAAC6D,uBAAuB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,MAAMC,IAAI,KAAkDC,IAAI,KAA2DC,SAAS,MAAsChD,eAAe,SAASr6U,GAAM,IAAI1B,EAAE0B,GAAM,GAAG,MAAMq5U,EAAOiE,YAAYh/U,GAAG+6U,EAAOiE,YAAYjE,EAAO8D,MAAM,EAAG7+U,GAAI+6U,EAAO8D,KAAM9D,EAAOiE,YAAYh/U,GAAG+6U,EAAOiE,YAAYjE,EAAO8D,KACpuC,OAAQn9U,GAAM,GAAI1B,GAAG+6U,EAAOgE,UAAWjD,iBAAiB,SAASp6U,GAAM,IAAI1B,EAAE0B,GAAM,GAAG,MAAMq5U,EAAOiE,YAAYh/U,GAAG+6U,EAAOiE,YAAYjE,EAAO+D,MAAM,EAAG9+U,GAAI+6U,EAAO+D,KAAM/D,EAAOiE,YAAYh/U,GAAG+6U,EAAOiE,YAAYjE,EAAO+D,KACtN,OAAOp9U,GAAM,GAAI1B,GAAIg/U,YAAY,SAASt9U,GAAM,IAAIu9U,EAAM,EAAE,MAAY,GAANv9U,EAASu9U,IAAQv9U,KAAQ,EAC3F,OAAOu9U,GAAQrD,mBAAmB,SAAStC,GAAY,OAAOyB,EAAO6D,uBAAuBtF,EAAW,IAAK6C,QAAQ,SAAS9B,EAAYt6U,EAAE2Z,GAAG,OAAO2gU,GAAa,KAAK8D,EAAcC,WAAW,OAAOr+U,EAAE2Z,GAAG,GAAG,EAAE,KAAKykU,EAAcE,WAAW,OAAOt+U,EAAE,GAAG,EAAE,KAAKo+U,EAAcG,WAAW,OAAO5kU,EAAE,GAAG,EAAE,KAAKykU,EAAcI,WAAW,OAAOx+U,EAAE2Z,GAAG,GAAG,EAAE,KAAKykU,EAAcK,WAAW,OAAOtpU,KAAKoC,MAAMvX,EAAE,GAAGmV,KAAKoC,MAAMoC,EAAE,IAAI,GAAG,EAAE,KAAKykU,EAAcM,WAAW,OAAO1+U,EAAE2Z,EAAG,EAAG3Z,EAAE2Z,EAAG,GAAG,EAAE,KAAKykU,EAAcO,WAAW,OAAQ3+U,EAAE2Z,EAAG,EAAG3Z,EAAE2Z,EAAG,GAAG,GAAG,EAAE,KAAKykU,EAAcQ,WAAW,OAAQ5+U,EAAE2Z,EAAG,GAAG3Z,EAAE2Z,GAAG,GAAG,GAAG,EAAE,QAAQ,MAAM,IAAIjX,MAAM,mBAAmB43U,KAAgBkD,0BAA0B,SAAS2B,GAAkD,IAA9B,IAAIvgV,EAAE,IAAI8+U,EAAa,CAAC,GAAG,GAAW19U,EAAE,EAAEA,EAAEm/U,EAAmBn/U,IAAKpB,EAAEA,EAAE0zP,SAAS,IAAIorF,EAAa,CAAC,EAAE0B,EAAOC,KAAKr/U,IAAI,IACvzB,OAAOpB,GAAI+9U,gBAAgB,SAASj9T,EAAK5iB,GAAM,GAAG,GAAGA,GAAMA,EAAK,GAAI,OAAO4iB,GAAM,KAAKw5T,EAAO4E,YAAY,OAAO,GAAG,KAAK5E,EAAO6E,eAAe,OAAO,EAAE,KAAK7E,EAAOC,eAAe,OAAO,EAAE,KAAKD,EAAO8E,WAAW,OAAO,EAAE,QAAQ,MAAM,IAAIt7U,MAAM,QAAQgd,QAAa,GAAG5iB,EAAK,GAAI,OAAO4iB,GAAM,KAAKw5T,EAAO4E,YAAY,OAAO,GAAG,KAAK5E,EAAO6E,eAAe,OAAO,GAAG,KAAK7E,EAAOC,eAAe,OAAO,GAAG,KAAKD,EAAO8E,WAAW,OAAO,GAAG,QAAQ,MAAM,IAAIt7U,MAAM,QAAQgd,OAAa,MAAG5iB,EAAK,IAA2M,MAAM,IAAI4F,MAAM,QAAQ5F,GAA/N,OAAO4iB,GAAM,KAAKw5T,EAAO4E,YAAY,OAAO,GAAG,KAAK5E,EAAO6E,eAAe,OAAO,GAAG,KAAK7E,EAAOC,eAAe,OAAO,GAAG,KAAKD,EAAO8E,WAAW,OAAO,GAAG,QAAQ,MAAM,IAAIt7U,MAAM,QAAQgd,MAA8Cu7T,aAAa,SAASqE,GAAgE,IAAxD,IAAI5F,EAAY4F,EAAOpF,iBAAqBa,EAAU,EAAUzrG,EAAI,EAAEA,EAAIoqG,EAAYpqG,IAAO,IAAI,IAAIr6N,EAAI,EAAEA,EAAIykU,EAAYzkU,IAAM,CAAiD,IAAhD,IAAIsqU,EAAU,EAAM/D,EAAK8D,EAAOrF,OAAO3qG,EAAIr6N,GAAavP,GAAG,EAAEA,GAAG,EAAEA,IAAK,KAAG4pO,EAAI5pO,EAAE,GAAGg0U,GAAapqG,EAAI5pO,GACn9B,IAAI,IAAIL,GAAG,EAAEA,GAAG,EAAEA,IAAQ4P,EAAI5P,EAAE,GAAGq0U,GAAazkU,EAAI5P,GAC9C,GAAHK,GAAS,GAAHL,GACNm2U,GAAM8D,EAAOrF,OAAO3qG,EAAI5pO,EAAEuP,EAAI5P,IAAIk6U,IAClCA,EAAU,IAAGxE,GAAY,EAAEwE,EAAU,GACxC,IAAQjwG,EAAI,EAAEA,EAAIoqG,EAAY,EAAEpqG,IAAO,IAAQr6N,EAAI,EAAEA,EAAIykU,EAAY,EAAEzkU,IAAM,CAAC,IAAIhF,EAAM,EAAKqvU,EAAOrF,OAAO3qG,EAAIr6N,IAAKhF,IAAWqvU,EAAOrF,OAAO3qG,EAAI,EAAEr6N,IAAKhF,IAAWqvU,EAAOrF,OAAO3qG,EAAIr6N,EAAI,IAAGhF,IAAWqvU,EAAOrF,OAAO3qG,EAAI,EAAEr6N,EAAI,IAAGhF,IAAkB,GAAPA,GAAiB,GAAPA,IAAU8qU,GAAW,GAC5Q,IAAQzrG,EAAI,EAAEA,EAAIoqG,EAAYpqG,IAAO,IAAQr6N,EAAI,EAAEA,EAAIykU,EAAY,EAAEzkU,IAAUqqU,EAAOrF,OAAO3qG,EAAIr6N,KAAOqqU,EAAOrF,OAAO3qG,EAAIr6N,EAAI,IAAIqqU,EAAOrF,OAAO3qG,EAAIr6N,EAAI,IAAIqqU,EAAOrF,OAAO3qG,EAAIr6N,EAAI,IAAIqqU,EAAOrF,OAAO3qG,EAAIr6N,EAAI,KAAKqqU,EAAOrF,OAAO3qG,EAAIr6N,EAAI,IAAIqqU,EAAOrF,OAAO3qG,EAAIr6N,EAAI,KAAI8lU,GAAW,IAChR,IAAQ9lU,EAAI,EAAEA,EAAIykU,EAAYzkU,IAAO,IAAQq6N,EAAI,EAAEA,EAAIoqG,EAAY,EAAEpqG,IAAUgwG,EAAOrF,OAAO3qG,EAAIr6N,KAAOqqU,EAAOrF,OAAO3qG,EAAI,EAAEr6N,IAAMqqU,EAAOrF,OAAO3qG,EAAI,EAAEr6N,IAAMqqU,EAAOrF,OAAO3qG,EAAI,EAAEr6N,IAAMqqU,EAAOrF,OAAO3qG,EAAI,EAAEr6N,KAAOqqU,EAAOrF,OAAO3qG,EAAI,EAAEr6N,IAAMqqU,EAAOrF,OAAO3qG,EAAI,EAAEr6N,KAAM8lU,GAAW,IAChR,IAAIyE,EAAU,EAAE,IAAQvqU,EAAI,EAAEA,EAAIykU,EAAYzkU,IAAO,IAAQq6N,EAAI,EAAEA,EAAIoqG,EAAYpqG,IAAUgwG,EAAOrF,OAAO3qG,EAAIr6N,IAAMuqU,IACrH,IAAInkI,EAAMlmM,KAAKmK,IAAI,IAAIkgU,EAAU9F,EAAYA,EAAY,IAAI,EAAsB,OAApBqB,GAAiB,GAAN1/H,EAAgB0/H,IAAiBqE,EAAO,CAACK,KAAK,SAASnsU,GAAG,GAAGA,EAAE,EAAG,MAAM,IAAI5Q,MAAM,QAAQ4Q,EAAE,KACtK,OAAO8rU,EAAOM,UAAUpsU,IAAK+rU,KAAK,SAAS/rU,GAAG,MAAMA,EAAE,EAAGA,GAAG,IAC5D,MAAMA,GAAG,IAAKA,GAAG,IACjB,OAAO8rU,EAAOO,UAAUrsU,IAAKqsU,UAAU,IAAIt+U,MAAM,KAAKq+U,UAAU,IAAIr+U,MAAM,MAAcrB,EAAE,EAAEA,EAAE,EAAEA,IAAKo/U,EAAOO,UAAU3/U,GAAG,GAAGA,EAC5H,IAAQA,EAAE,EAAEA,EAAE,IAAIA,IAAKo/U,EAAOO,UAAU3/U,GAAGo/U,EAAOO,UAAU3/U,EAAE,GAAGo/U,EAAOO,UAAU3/U,EAAE,GAAGo/U,EAAOO,UAAU3/U,EAAE,GAAGo/U,EAAOO,UAAU3/U,EAAE,GAChI,IAAQA,EAAE,EAAEA,EAAE,IAAIA,IAAKo/U,EAAOM,UAAUN,EAAOO,UAAU3/U,IAAIA,EAC7D,SAAS09U,EAAatjQ,EAAIhzC,GAAO,QAAe+iN,GAAZ/vK,EAAIl7E,OAAmB,MAAM,IAAIwD,MAAM03E,EAAIl7E,OAAO,IAAIkoC,GAC1F,IAAI5b,EAAO,EAAE,MAAMA,EAAO4uD,EAAIl7E,QAAqB,GAAbk7E,EAAI5uD,GAAYA,IACtD5qB,KAAKw5E,IAAI,IAAI/4E,MAAM+4E,EAAIl7E,OAAOssB,EAAO4b,GAAO,IAAI,IAAIpnC,EAAE,EAAEA,EAAEo6E,EAAIl7E,OAAOssB,EAAOxrB,IAAKY,KAAKw5E,IAAIp6E,GAAGo6E,EAAIp6E,EAAEwrB,GAK1D,SAASgxT,EAAUc,EAAWT,GAAWj8U,KAAK08U,WAAWA,EAAW18U,KAAKi8U,UAAUA,EAGqU,SAASH,IAAc97U,KAAKkpO,OAAO,GAAGlpO,KAAK1B,OAAO,EAPnfw+U,EAAajrU,UAAU,CAAC4rB,IAAI,SAAStuB,GAAO,OAAOnP,KAAKw5E,IAAIrqE,IAAS8pU,UAAU,WAAW,OAAOj5U,KAAKw5E,IAAIl7E,QAASozP,SAAS,SAASnwP,GAAuD,IAApD,IAAIi4E,EAAI,IAAI/4E,MAAMT,KAAKi5U,YAAY13U,EAAE03U,YAAY,GAAW75U,EAAE,EAAEA,EAAEY,KAAKi5U,YAAY75U,IAAK,IAAI,IAAI2Z,EAAE,EAAEA,EAAExX,EAAE03U,YAAYlgU,IAAKygE,EAAIp6E,EAAE2Z,IAAIylU,EAAOC,KAAKD,EAAOK,KAAK7+U,KAAKy9B,IAAIr+B,IAAIo/U,EAAOK,KAAKt9U,EAAEk8B,IAAI1kB,KAClU,OAAO,IAAI+jU,EAAatjQ,EAAI,IAAKjtB,IAAI,SAAShrD,GAAG,GAAGvB,KAAKi5U,YAAY13U,EAAE03U,YAAY,EAAG,OAAOj5U,KACA,IAA7F,IAAIy6M,EAAM+jI,EAAOK,KAAK7+U,KAAKy9B,IAAI,IAAI+gT,EAAOK,KAAKt9U,EAAEk8B,IAAI,IAAQ+7C,EAAI,IAAI/4E,MAAMT,KAAKi5U,aAAqB75U,EAAE,EAAEA,EAAEY,KAAKi5U,YAAY75U,IAAKo6E,EAAIp6E,GAAGY,KAAKy9B,IAAIr+B,GACjJ,IAAQA,EAAE,EAAEA,EAAEmC,EAAE03U,YAAY75U,IAAKo6E,EAAIp6E,IAAIo/U,EAAOC,KAAKD,EAAOK,KAAKt9U,EAAEk8B,IAAIr+B,IAAIq7M,GAC3E,OAAO,IAAIqiI,EAAatjQ,EAAI,GAAGjtB,IAAIhrD,KACnCq6U,EAAUoD,eAAe,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,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","file":"js/about.811189dd.js","sourcesContent":["/**\n * Creates a virtual file input element (``) with options.\n * @param options\n */\nvar createInputFile = function (ref) {\n if ( ref === void 0 ) ref = {};\n var accept = ref.accept; if ( accept === void 0 ) accept = '';\n var capture = ref.capture; if ( capture === void 0 ) capture = false;\n var multiple = ref.multiple; if ( multiple === void 0 ) multiple = false;\n\n var input = document.createElement('input');\n input.type = 'file';\n input.accept = accept;\n input.capture = capture;\n input.multiple = multiple;\n return input;\n};\n/**\n * Virtually creates a file input element (``), triggers it\n * and returns selected files.\n *\n * @example\n * selectFiles({ accept: 'image/*', multiple: true }).then(files => {\n * // ...\n * });\n *\n * @param options\n */\n\n\nvar selectFiles = function (options) { return new Promise(function (resolve) {\n var input = createInputFile(options);\n input.addEventListener('change', function () { return resolve(input.files || null); });\n setTimeout(function () {\n var event = new MouseEvent('click');\n input.dispatchEvent(event);\n }, 0);\n}); };\n\nexport default selectFiles;\n//# sourceMappingURL=index.esm.js.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst selectFiles = require(\"select-files\");\nconst wordCount = require(\"word-count\");\nconst tippy_js = require(\"tippy.js\");\nconst index$1 = \"\";\nfunction noop() {\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return /* @__PURE__ */ Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === \"function\";\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || (a && typeof a === \"object\" || typeof a === \"function\");\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element$5(name) {\n return document.createElement(name);\n}\nfunction text$7(data2) {\n return document.createTextNode(data2);\n}\nfunction empty() {\n return text$7(\"\");\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction self$1(fn) {\n return function(event) {\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction children(element2) {\n return Array.from(element2.childNodes);\n}\nfunction set_data(text2, data2) {\n data2 = \"\" + data2;\n if (text2.wholeText !== data2)\n text2.data = data2;\n}\nfunction toggle_class(element2, name, toggle) {\n element2.classList[toggle ? \"add\" : \"remove\"](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(\"Function called outside component initialization\");\n return current_component;\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail, { cancelable = false } = {}) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n const event = custom_event(type, detail, { cancelable });\n callbacks.slice().forEach((fn) => {\n fn.call(component, event);\n });\n return !event.defaultPrevented;\n }\n return true;\n };\n}\nconst dirty_components = [];\nconst binding_callbacks = [];\nlet render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nconst seen_callbacks = /* @__PURE__ */ new Set();\nlet flushidx = 0;\nfunction flush() {\n if (flushidx !== 0) {\n return;\n }\n const saved_component = current_component;\n do {\n try {\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n } catch (e) {\n dirty_components.length = 0;\n flushidx = 0;\n throw e;\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$7) {\n if ($$7.fragment !== null) {\n $$7.update();\n run_all($$7.before_update);\n const dirty = $$7.dirty;\n $$7.dirty = [-1];\n $$7.fragment && $$7.fragment.p($$7.ctx, dirty);\n $$7.after_update.forEach(add_render_callback);\n }\n}\nfunction flush_render_callbacks(fns) {\n const filtered = [];\n const targets = [];\n render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));\n targets.forEach((c) => c());\n render_callbacks = filtered;\n}\nconst outroing = /* @__PURE__ */ new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros\n // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach2, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach2)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n } else if (callback) {\n callback();\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment: fragment2, after_update } = component.$$;\n fragment2 && fragment2.m(target, anchor);\n if (!customElement) {\n add_render_callback(() => {\n const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n if (component.$$.on_destroy) {\n component.$$.on_destroy.push(...new_on_destroy);\n } else {\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$7 = component.$$;\n if ($$7.fragment !== null) {\n flush_render_callbacks($$7.after_update);\n run_all($$7.on_destroy);\n $$7.fragment && $$7.fragment.d(detaching);\n $$7.on_destroy = $$7.fragment = null;\n $$7.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[i / 31 | 0] |= 1 << i % 31;\n}\nfunction init(component, options, instance2, create_fragment2, not_equal2, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$7 = component.$$ = {\n fragment: null,\n ctx: [],\n // state\n props,\n update: noop,\n not_equal: not_equal2,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$7.root);\n let ready = false;\n $$7.ctx = instance2 ? instance2(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$7.ctx && not_equal2($$7.ctx[i], $$7.ctx[i] = value)) {\n if (!$$7.skip_bound && $$7.bound[i])\n $$7.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n }) : [];\n $$7.update();\n ready = true;\n run_all($$7.before_update);\n $$7.fragment = create_fragment2 ? create_fragment2($$7.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n const nodes2 = children(options.target);\n $$7.fragment && $$7.fragment.l(nodes2);\n nodes2.forEach(detach);\n } else {\n $$7.fragment && $$7.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n flush();\n }\n set_current_component(parent_component);\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n if (!is_function(callback)) {\n return noop;\n }\n const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n callbacks.push(callback);\n return () => {\n const index2 = callbacks.indexOf(callback);\n if (index2 !== -1)\n callbacks.splice(index2, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\nconst bold = \"Bold\";\nconst boldText = \"bold text\";\nconst cheatsheet = \"Markdown Cheatsheet\";\nconst closeHelp = \"Close help\";\nconst closeToc = \"Close table of contents\";\nconst code$1 = \"Code\";\nconst codeBlock = \"Code block\";\nconst codeLang = \"lang\";\nconst codeText$1 = \"code\";\nconst exitFullscreen = \"Exit fullscreen\";\nconst exitPreviewOnly = \"Exit preview only\";\nconst exitWriteOnly = \"Exit write only\";\nconst fullscreen = \"Fullscreen\";\nconst h1 = \"Heading 1\";\nconst h2 = \"Heading 2\";\nconst h3 = \"Heading 3\";\nconst h4 = \"Heading 4\";\nconst h5 = \"Heading 5\";\nconst h6 = \"Heading 6\";\nconst headingText = \"heading\";\nconst help = \"Help\";\nconst hr = \"Horizontal rule\";\nconst image$1 = \"Image\";\nconst imageAlt = \"alt\";\nconst imageTitle = \"title\";\nconst italic = \"Italic\";\nconst italicText = \"italic text\";\nconst limited = \"The maximum character limit has been reached\";\nconst lines = \"Lines\";\nconst link$1 = \"Link\";\nconst linkText = \"link text\";\nconst ol = \"Ordered list\";\nconst olItem = \"item\";\nconst preview = \"Preview\";\nconst previewOnly = \"Preview only\";\nconst quote = \"Quote\";\nconst quotedText = \"quoted text\";\nconst shortcuts = \"Shortcuts\";\nconst source = \"Source code\";\nconst sync = \"Scroll sync\";\nconst toc = \"Table of contents\";\nconst top = \"Scroll to top\";\nconst ul = \"Unordered list\";\nconst ulItem = \"item\";\nconst words = \"Words\";\nconst write = \"Write\";\nconst writeOnly = \"Write only\";\nconst en = {\n bold,\n boldText,\n cheatsheet,\n closeHelp,\n closeToc,\n code: code$1,\n codeBlock,\n codeLang,\n codeText: codeText$1,\n exitFullscreen,\n exitPreviewOnly,\n exitWriteOnly,\n fullscreen,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n headingText,\n help,\n hr,\n image: image$1,\n imageAlt,\n imageTitle,\n italic,\n italicText,\n limited,\n lines,\n link: link$1,\n linkText,\n ol,\n olItem,\n preview,\n previewOnly,\n quote,\n quotedText,\n shortcuts,\n source,\n sync,\n toc,\n top,\n ul,\n ulItem,\n words,\n write,\n writeOnly\n};\nconst icons = {\n Close: '',\n H: '',\n H1: '',\n H2: '',\n H3: '',\n LevelFourTitle: '',\n LevelFiveTitle: '',\n LevelSixTitle: '',\n TextBold: '',\n TextItalic: '',\n Quote: '',\n LinkOne: '',\n Pic: '',\n Code: '',\n CodeBrackets: '',\n ListTwo: '',\n OrderedList: '',\n DividingLine: '',\n AlignTextLeftOne: '',\n Helpcenter: '',\n LeftExpand: '',\n RightExpand: '',\n OffScreen: '',\n FullScreen: '',\n GithubOne: ''\n};\nconst factory$1 = function() {\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) {\n presto_version = Number(presto_version[1]);\n }\n if (presto_version && presto_version >= 15) {\n presto = false;\n webkit = true;\n }\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || ie && ie_version >= 9;\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count) {\n e.removeChild(e.firstChild);\n }\n return e;\n }\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e);\n }\n function elt(tag, content2, className, style2) {\n var e = document.createElement(tag);\n if (className) {\n e.className = className;\n }\n if (style2) {\n e.style.cssText = style2;\n }\n if (typeof content2 == \"string\") {\n e.appendChild(document.createTextNode(content2));\n } else if (content2) {\n for (var i2 = 0; i2 < content2.length; ++i2) {\n e.appendChild(content2[i2]);\n }\n }\n return e;\n }\n function eltP(tag, content2, className, style2) {\n var e = elt(tag, content2, className, style2);\n e.setAttribute(\"role\", \"presentation\");\n return e;\n }\n var range;\n if (document.createRange) {\n range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r;\n };\n } else {\n range = function(node, start, end) {\n var r = document.body.createTextRange();\n try {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n };\n }\n function contains(parent, child) {\n if (child.nodeType == 3) {\n child = child.parentNode;\n }\n if (parent.contains) {\n return parent.contains(child);\n }\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n function activeElt() {\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n }\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i2 = 0; i2 < as.length; i2++) {\n if (as[i2] && !classTest(as[i2]).test(b)) {\n b += \" \" + as[i2];\n }\n }\n return b;\n }\n var selectInput = function(node) {\n node.select();\n };\n if (ios) {\n selectInput = function(node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n } else if (ie) {\n selectInput = function(node) {\n try {\n node.select();\n } catch (_e) {\n }\n };\n }\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function() {\n return f.apply(null, args);\n };\n }\n function copyObj(obj, target, overwrite) {\n if (!target) {\n target = {};\n }\n for (var prop2 in obj) {\n if (obj.hasOwnProperty(prop2) && (overwrite !== false || !target.hasOwnProperty(prop2))) {\n target[prop2] = obj[prop2];\n }\n }\n return target;\n }\n function countColumn(string2, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string2.search(/[^\\s\\u00a0]/);\n if (end == -1) {\n end = string2.length;\n }\n }\n for (var i2 = startIndex || 0, n = startValue || 0; ; ) {\n var nextTab = string2.indexOf(\"\t\", i2);\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i2);\n }\n n += nextTab - i2;\n n += tabSize - n % tabSize;\n i2 = nextTab + 1;\n }\n }\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function(self2) {\n self2.id = 0;\n if (self2.time <= +/* @__PURE__ */ new Date()) {\n self2.f();\n } else {\n setTimeout(self2.handler, self2.time - +/* @__PURE__ */ new Date());\n }\n };\n Delayed.prototype.set = function(ms, f) {\n this.f = f;\n var time = +/* @__PURE__ */ new Date() + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n function indexOf(array, elt2) {\n for (var i2 = 0; i2 < array.length; ++i2) {\n if (array[i2] == elt2) {\n return i2;\n }\n }\n return -1;\n }\n var scrollerGap = 50;\n var Pass = { toString: function() {\n return \"CodeMirror.Pass\";\n } };\n var sel_dontScroll = { scroll: false }, sel_mouse = { origin: \"*mouse\" }, sel_move = { origin: \"+move\" };\n function findColumn(string2, goal, tabSize) {\n for (var pos = 0, col = 0; ; ) {\n var nextTab = string2.indexOf(\"\t\", pos);\n if (nextTab == -1) {\n nextTab = string2.length;\n }\n var skipped = nextTab - pos;\n if (nextTab == string2.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n if (col >= goal) {\n return pos;\n }\n }\n }\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\n return spaceStrs[n];\n }\n function lst(arr) {\n return arr[arr.length - 1];\n }\n function map2(array, f) {\n var out = [];\n for (var i2 = 0; i2 < array.length; i2++) {\n out[i2] = f(array[i2], i2);\n }\n return out;\n }\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n array.splice(pos, 0, value);\n }\n function nothing() {\n }\n function createObj(base2, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base2);\n } else {\n nothing.prototype = base2;\n inst = new nothing();\n }\n if (props) {\n copyObj(props, inst);\n }\n return inst;\n }\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n }\n function isWordChar(ch, helper) {\n if (!helper) {\n return isWordCharBasic(ch);\n }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n return helper.test(ch);\n }\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n return true;\n }\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n }\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n pos += dir;\n }\n return pos;\n }\n function findFirst(pred, from, to) {\n var dir = from > to ? -1 : 1;\n for (; ; ) {\n if (from == to) {\n return from;\n }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n }\n function iterateBidiSections(order2, from, to, f) {\n if (!order2) {\n return f(from, to, \"ltr\", 0);\n }\n var found = false;\n for (var i2 = 0; i2 < order2.length; ++i2) {\n var part = order2[i2];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i2);\n found = true;\n }\n }\n if (!found) {\n f(from, to, \"ltr\");\n }\n }\n var bidiOther = null;\n function getBidiPartAt(order2, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i2 = 0; i2 < order2.length; ++i2) {\n var cur = order2[i2];\n if (cur.from < ch && cur.to > ch) {\n return i2;\n }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i2;\n } else {\n bidiOther = i2;\n }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i2;\n } else {\n bidiOther = i2;\n }\n }\n }\n return found != null ? found : bidiOther;\n }\n var bidiOrdering = function() {\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code2) {\n if (code2 <= 247) {\n return lowTypes.charAt(code2);\n } else if (1424 <= code2 && code2 <= 1524) {\n return \"R\";\n } else if (1536 <= code2 && code2 <= 1785) {\n return arabicTypes.charAt(code2 - 1536);\n } else if (1774 <= code2 && code2 <= 2220) {\n return \"r\";\n } else if (8192 <= code2 && code2 <= 8203) {\n return \"w\";\n } else if (code2 == 8204) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n this.to = to;\n }\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n return false;\n }\n var len = str.length, types2 = [];\n for (var i2 = 0; i2 < len; ++i2) {\n types2.push(charType(str.charCodeAt(i2)));\n }\n for (var i$12 = 0, prev = outerType; i$12 < len; ++i$12) {\n var type = types2[i$12];\n if (type == \"m\") {\n types2[i$12] = prev;\n } else {\n prev = type;\n }\n }\n for (var i$22 = 0, cur = outerType; i$22 < len; ++i$22) {\n var type$1 = types2[i$22];\n if (type$1 == \"1\" && cur == \"r\") {\n types2[i$22] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n if (type$1 == \"r\") {\n types2[i$22] = \"R\";\n }\n }\n }\n for (var i$3 = 1, prev$1 = types2[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types2[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types2[i$3 + 1] == \"1\") {\n types2[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types2[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types2[i$3] = prev$1;\n }\n prev$1 = type$2;\n }\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types2[i$4];\n if (type$3 == \",\") {\n types2[i$4] = \"N\";\n } else if (type$3 == \"%\") {\n var end = void 0;\n for (end = i$4 + 1; end < len && types2[end] == \"%\"; ++end) {\n }\n var replace = i$4 && types2[i$4 - 1] == \"!\" || end < len && types2[end] == \"1\" ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) {\n types2[j] = replace;\n }\n i$4 = end - 1;\n }\n }\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types2[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types2[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\n }\n }\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types2[i$6])) {\n var end$1 = void 0;\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types2[end$1]); ++end$1) {\n }\n var before = (i$6 ? types2[i$6 - 1] : outerType) == \"L\";\n var after = (end$1 < len ? types2[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types2[j$1] = replace$1;\n }\n i$6 = end$1 - 1;\n }\n }\n var order2 = [], m;\n for (var i$7 = 0; i$7 < len; ) {\n if (countsAsLeft.test(types2[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types2[i$7]); ++i$7) {\n }\n order2.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order2.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types2[i$7] != \"L\"; ++i$7) {\n }\n for (var j$2 = pos; j$2 < i$7; ) {\n if (countsAsNum.test(types2[j$2])) {\n if (pos < j$2) {\n order2.splice(at, 0, new BidiSpan(1, pos, j$2));\n at += isRTL;\n }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types2[j$2]); ++j$2) {\n }\n order2.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else {\n ++j$2;\n }\n }\n if (pos < i$7) {\n order2.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\n }\n if (direction == \"ltr\") {\n if (order2[0].level == 1 && (m = str.match(/^\\s+/))) {\n order2[0].from = m[0].length;\n order2.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order2).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order2).to -= m[0].length;\n order2.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n return direction == \"rtl\" ? order2.reverse() : order2;\n };\n }();\n function getOrder(line, direction) {\n var order2 = line.order;\n if (order2 == null) {\n order2 = line.order = bidiOrdering(line.text, direction);\n }\n return order2;\n }\n var noHandlers = [];\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map3 = emitter._handlers || (emitter._handlers = {});\n map3[type] = (map3[type] || noHandlers).concat(f);\n }\n };\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map3 = emitter._handlers, arr = map3 && map3[type];\n if (arr) {\n var index2 = indexOf(arr, f);\n if (index2 > -1) {\n map3[type] = arr.slice(0, index2).concat(arr.slice(index2 + 1));\n }\n }\n }\n }\n function signal(emitter, type) {\n var handlers2 = getHandlers(emitter, type);\n if (!handlers2.length) {\n return;\n }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i2 = 0; i2 < handlers2.length; ++i2) {\n handlers2[i2].apply(null, args);\n }\n }\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = { type: e, preventDefault: function() {\n this.defaultPrevented = true;\n } };\n }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore;\n }\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) {\n return;\n }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i2 = 0; i2 < arr.length; ++i2) {\n if (indexOf(set, arr[i2]) == -1) {\n set.push(arr[i2]);\n }\n }\n }\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n }\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {\n on(this, type, f);\n };\n ctor.prototype.off = function(type, f) {\n off(this, type, f);\n };\n }\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n }\n function e_stop(e) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n function e_target(e) {\n return e.target || e.srcElement;\n }\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n return b;\n }\n var dragAndDrop = function() {\n if (ie && ie_version < 9) {\n return false;\n }\n var div = elt(\"div\");\n return \"draggable\" in div || \"dragDrop\" in div;\n }();\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n var node = zwspSupported ? elt(\"span\", \"\") : elt(\"span\", \" \", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n }\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"AخA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) {\n return false;\n }\n return badBidiRects = r1.right - r0.right < 3;\n }\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function(string2) {\n var pos = 0, result = [], l = string2.length;\n while (pos <= l) {\n var nl = string2.indexOf(\"\\n\", pos);\n if (nl == -1) {\n nl = string2.length;\n }\n var line = string2.slice(pos, string2.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result;\n } : function(string2) {\n return string2.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function(te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function(te) {\n var range2;\n try {\n range2 = te.ownerDocument.selection.createRange();\n } catch (e) {\n }\n if (!range2 || range2.parentElement() != te) {\n return false;\n }\n return range2.compareEndPoints(\"StartToEnd\", range2) != 0;\n };\n var hasCopyEvent = function() {\n var e = elt(\"div\");\n if (\"oncopy\" in e) {\n return true;\n }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n }\n var modes = {}, mimeModes = {};\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n modes[name] = mode;\n }\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") {\n found = { name: found };\n }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\");\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\");\n }\n if (typeof spec == \"string\") {\n return { name: spec };\n } else {\n return spec || { name: \"null\" };\n }\n }\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) {\n return getMode(options, \"text/plain\");\n }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop2 in exts) {\n if (!exts.hasOwnProperty(prop2)) {\n continue;\n }\n if (modeObj.hasOwnProperty(prop2)) {\n modeObj[\"_\" + prop2] = modeObj[prop2];\n }\n modeObj[prop2] = exts[prop2];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n return modeObj;\n }\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n copyObj(properties, exts);\n }\n function copyState(mode, state) {\n if (state === true) {\n return state;\n }\n if (mode.copyState) {\n return mode.copyState(state);\n }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) {\n val = val.concat([]);\n }\n nstate[n] = val;\n }\n return nstate;\n }\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) {\n break;\n }\n state = info.state;\n mode = info.mode;\n }\n return info || { mode, state };\n }\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n }\n var StringStream = function(string2, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string2;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n StringStream.prototype.eol = function() {\n return this.pos >= this.string.length;\n };\n StringStream.prototype.sol = function() {\n return this.pos == this.lineStart;\n };\n StringStream.prototype.peek = function() {\n return this.string.charAt(this.pos) || void 0;\n };\n StringStream.prototype.next = function() {\n if (this.pos < this.string.length) {\n return this.string.charAt(this.pos++);\n }\n };\n StringStream.prototype.eat = function(match) {\n var ch = this.string.charAt(this.pos);\n var ok2;\n if (typeof match == \"string\") {\n ok2 = ch == match;\n } else {\n ok2 = ch && (match.test ? match.test(ch) : match(ch));\n }\n if (ok2) {\n ++this.pos;\n return ch;\n }\n };\n StringStream.prototype.eatWhile = function(match) {\n var start = this.pos;\n while (this.eat(match)) {\n }\n return this.pos > start;\n };\n StringStream.prototype.eatSpace = function() {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n ++this.pos;\n }\n return this.pos > start;\n };\n StringStream.prototype.skipToEnd = function() {\n this.pos = this.string.length;\n };\n StringStream.prototype.skipTo = function(ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n StringStream.prototype.backUp = function(n) {\n this.pos -= n;\n };\n StringStream.prototype.column = function() {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n StringStream.prototype.indentation = function() {\n return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n StringStream.prototype.match = function(pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function(str) {\n return caseInsensitive ? str.toLowerCase() : str;\n };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) {\n this.pos += pattern.length;\n }\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) {\n return null;\n }\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\n return match;\n }\n };\n StringStream.prototype.current = function() {\n return this.string.slice(this.start, this.pos);\n };\n StringStream.prototype.hideFirstChars = function(n, inner) {\n this.lineStart += n;\n try {\n return inner();\n } finally {\n this.lineStart -= n;\n }\n };\n StringStream.prototype.lookAhead = function(n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n);\n };\n StringStream.prototype.baseToken = function() {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos);\n };\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i2 = 0; ; ++i2) {\n var child = chunk.children[i2], sz = child.chunkSize();\n if (n < sz) {\n chunk = child;\n break;\n }\n n -= sz;\n }\n }\n return chunk.lines[n];\n }\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function(line) {\n var text2 = line.text;\n if (n == end.line) {\n text2 = text2.slice(0, end.ch);\n }\n if (n == start.line) {\n text2 = text2.slice(start.ch);\n }\n out.push(text2);\n ++n;\n });\n return out;\n }\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function(line) {\n out.push(line.text);\n });\n return out;\n }\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n }\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i2 = 0; ; ++i2) {\n if (chunk.children[i2] == cur) {\n break;\n }\n no += chunk.children[i2].chunkSize();\n }\n }\n return no + cur.first;\n }\n function lineAtHeight(chunk, h7) {\n var n = chunk.first;\n outer:\n do {\n for (var i$12 = 0; i$12 < chunk.children.length; ++i$12) {\n var child = chunk.children[i$12], ch = child.height;\n if (h7 < ch) {\n chunk = child;\n continue outer;\n }\n h7 -= ch;\n n += child.chunkSize();\n }\n return n;\n } while (!chunk.lines);\n var i2 = 0;\n for (; i2 < chunk.lines.length; ++i2) {\n var line = chunk.lines[i2], lh = line.height;\n if (h7 < lh) {\n break;\n }\n h7 -= lh;\n }\n return n + i2;\n }\n function isLine(doc, l) {\n return l >= doc.first && l < doc.first + doc.size;\n }\n function lineNumberFor(options, i2) {\n return String(options.lineNumberFormatter(i2 + options.firstLineNumber));\n }\n function Pos(line, ch, sticky) {\n if (sticky === void 0)\n sticky = null;\n if (!(this instanceof Pos)) {\n return new Pos(line, ch, sticky);\n }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n function cmp(a, b) {\n return a.line - b.line || a.ch - b.ch;\n }\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n function minPos(a, b) {\n return cmp(a, b) < 0 ? a : b;\n }\n function clipLine(doc, n) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\n function clipPos(doc, pos) {\n if (pos.line < doc.first) {\n return Pos(doc.first, 0);\n }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\n return clipToLen(pos, getLine(doc, pos.line).text.length);\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i2 = 0; i2 < array.length; i2++) {\n out[i2] = clipPos(doc, array[i2]);\n }\n return out;\n }\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n Context.prototype.lookAhead = function(n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) {\n this.maxLookAhead = n;\n }\n return line;\n };\n Context.prototype.baseToken = function(n) {\n if (!this.baseTokens) {\n return null;\n }\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this.baseTokenPos += 2;\n }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n\n };\n };\n Context.prototype.nextLine = function() {\n this.line++;\n if (this.maxLookAhead > 0) {\n this.maxLookAhead--;\n }\n };\n Context.fromSaved = function(doc, saved, line) {\n if (saved instanceof SavedContext) {\n return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n } else {\n return new Context(doc, copyState(doc.mode, saved), line);\n }\n };\n Context.prototype.save = function(copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n };\n function highlightLine(cm, line, context, forceToEnd) {\n var st = [cm.state.modeGen], lineClasses = {};\n runMode(\n cm,\n line.text,\n cm.doc.mode,\n context,\n function(end, style2) {\n return st.push(end, style2);\n },\n lineClasses,\n forceToEnd\n );\n var state = context.state;\n var loop = function(o2) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o2], i2 = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function(end, style2) {\n var start = i2;\n while (at < end) {\n var i_end = st[i2];\n if (i_end > end) {\n st.splice(i2, 1, end, st[i2 + 1], i_end);\n }\n i2 += 2;\n at = Math.min(end, i_end);\n }\n if (!style2) {\n return;\n }\n if (overlay.opaque) {\n st.splice(start, i2 - start, end, \"overlay \" + style2);\n i2 = start + 2;\n } else {\n for (; start < i2; start += 2) {\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style2;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n for (var o = 0; o < cm.state.overlays.length; ++o)\n loop(o);\n return { styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null };\n }\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) {\n context.state = resetState;\n }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n return line.styles;\n }\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\n }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n doc.iter(start, n, function(line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) {\n doc.modeFrontier = context.line;\n }\n return context;\n }\n function processLine(cm, text2, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text2, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text2 == \"\") {\n callBlankLine(mode, context.state);\n }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n function callBlankLine(mode, state) {\n if (mode.blankLine) {\n return mode.blankLine(state);\n }\n if (!mode.innerMode) {\n return;\n }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n function readToken(mode, stream, state, inner) {\n for (var i2 = 0; i2 < 10; i2++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n var style2 = mode.token(stream, state);\n if (stream.pos > stream.start) {\n return style2;\n }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n }\n var Token = function(stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style2;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) {\n tokens = [];\n }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style2 = readToken(mode, stream, context.state);\n if (asArray) {\n tokens.push(new Token(stream, style2, copyState(doc.mode, context.state)));\n }\n }\n return asArray ? tokens : new Token(stream, style2, context.state);\n }\n function extractLineClasses(type, output) {\n if (type) {\n for (; ; ) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) {\n break;\n }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop2 = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop2] == null) {\n output[prop2] = lineClass[2];\n } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop2])) {\n output[prop2] += \" \" + lineClass[2];\n }\n }\n }\n return type;\n }\n function runMode(cm, text2, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text2, cm.options.tabSize, context), style2;\n var inner = cm.options.addModeClass && [null];\n if (text2 == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) {\n processLine(cm, text2, context, stream.pos);\n }\n stream.pos = text2.length;\n style2 = null;\n } else {\n style2 = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) {\n style2 = \"m-\" + (style2 ? mName + \" \" + style2 : mName);\n }\n }\n if (!flattenSpans || curStyle != style2) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5e3);\n f(curStart, curStyle);\n }\n curStyle = style2;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n var pos = Math.min(stream.pos, curStart + 5e3);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1e3 : 100);\n for (var search2 = n; search2 > lim; --search2) {\n if (search2 <= doc.first) {\n return doc.first;\n }\n var line = getLine(doc, search2 - 1), after = line.stateAfter;\n if (after && (!precise || search2 + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search2;\n }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search2 - 1;\n minindent = indented;\n }\n }\n return minline;\n }\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) {\n return;\n }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n }\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i2 = 0; i2 < spans.length; ++i2) {\n var span = spans[i2];\n if (span.marker == marker) {\n return span;\n }\n }\n }\n }\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i2 = 0; i2 < spans.length; ++i2) {\n if (spans[i2] != span) {\n (r || (r = [])).push(spans[i2]);\n }\n }\n return r;\n }\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = /* @__PURE__ */ new WeakSet()));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) {\n inThisOp.add(line.markedSpans);\n }\n }\n span.marker.attachLine(line);\n }\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) {\n for (var i2 = 0; i2 < old.length; ++i2) {\n var span = old[i2], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n }\n }\n return nw;\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) {\n for (var i2 = 0; i2 < old.length; ++i2) {\n var span = old[i2], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n (nw || (nw = [])).push(new MarkedSpan(\n marker,\n startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh\n ));\n }\n }\n }\n return nw;\n }\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) {\n return null;\n }\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n for (var i2 = 0; i2 < first.length; ++i2) {\n var span = first[i2];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\n }\n }\n if (last) {\n for (var i$12 = 0; i$12 < last.length; ++i$12) {\n var span$1 = last[i$12];\n if (span$1.to != null) {\n span$1.to += offset;\n }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n }\n if (first) {\n first = clearEmptySpans(first);\n }\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n var newMarkers = [first];\n if (!sameLine) {\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first) {\n for (var i$22 = 0; i$22 < first.length; ++i$22) {\n if (first[i$22].to == null) {\n (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$22].marker, null, null));\n }\n }\n }\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n newMarkers.push(last);\n }\n return newMarkers;\n }\n function clearEmptySpans(spans) {\n for (var i2 = 0; i2 < spans.length; ++i2) {\n var span = spans[i2];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i2--, 1);\n }\n }\n if (!spans.length) {\n return null;\n }\n return spans;\n }\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function(line) {\n if (line.markedSpans) {\n for (var i3 = 0; i3 < line.markedSpans.length; ++i3) {\n var mark2 = line.markedSpans[i3].marker;\n if (mark2.readOnly && (!markers || indexOf(markers, mark2) == -1)) {\n (markers || (markers = [])).push(mark2);\n }\n }\n }\n });\n if (!markers) {\n return null;\n }\n var parts = [{ from, to }];\n for (var i2 = 0; i2 < markers.length; ++i2) {\n var mk = markers[i2], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p2 = parts[j];\n if (cmp(p2.to, m.from) < 0 || cmp(p2.from, m.to) > 0) {\n continue;\n }\n var newParts = [j, 1], dfrom = cmp(p2.from, m.from), dto = cmp(p2.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({ from: p2.from, to: m.from });\n }\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({ from: m.to, to: p2.to });\n }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts;\n }\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) {\n return;\n }\n for (var i2 = 0; i2 < spans.length; ++i2) {\n spans[i2].marker.detachLine(line);\n }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n for (var i2 = 0; i2 < spans.length; ++i2) {\n spans[i2].marker.attachLine(line);\n }\n line.markedSpans = spans;\n }\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\n }\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) {\n return lenDiff;\n }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) {\n return -fromCmp;\n }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) {\n return toCmp;\n }\n return b.id - a.id;\n }\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) {\n for (var sp = void 0, i2 = 0; i2 < sps.length; ++i2) {\n sp = sps[i2];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n return found;\n }\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n function collapsedSpanAtEnd(line) {\n return collapsedSpanAtSide(line, false);\n }\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) {\n for (var i2 = 0; i2 < sps.length; ++i2) {\n var sp = sps[i2];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n return found;\n }\n function conflictingCollapsedRange(doc, lineNo2, from, to, marker) {\n var line = getLine(doc, lineNo2);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) {\n for (var i2 = 0; i2 < sps.length; ++i2) {\n var sp = sps[i2];\n if (!sp.marker.collapsed) {\n continue;\n }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n continue;\n }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n return true;\n }\n }\n }\n }\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n return line;\n }\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n return line;\n }\n function visualLineContinued(line) {\n var merged, lines2;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines2 || (lines2 = [])).push(line);\n }\n return lines2;\n }\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) {\n return lineN;\n }\n return lineNo(vis);\n }\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n return lineNo(line) + 1;\n }\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) {\n for (var sp = void 0, i2 = 0; i2 < sps.length; ++i2) {\n sp = sps[i2];\n if (!sp.marker.collapsed) {\n continue;\n }\n if (sp.from == null) {\n return true;\n }\n if (sp.marker.widgetNode) {\n continue;\n }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n }\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\n for (var sp = void 0, i2 = 0; i2 < line.markedSpans.length; ++i2) {\n sp = line.markedSpans[i2];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h7 = 0, chunk = lineObj.parent;\n for (var i2 = 0; i2 < chunk.lines.length; ++i2) {\n var line = chunk.lines[i2];\n if (line == lineObj) {\n break;\n } else {\n h7 += line.height;\n }\n }\n for (var p2 = chunk.parent; p2; chunk = p2, p2 = chunk.parent) {\n for (var i$12 = 0; i$12 < p2.children.length; ++i$12) {\n var cur = p2.children[i$12];\n if (cur == chunk) {\n break;\n } else {\n h7 += cur.height;\n }\n }\n }\n return h7;\n }\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len;\n }\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function(line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n var Line = function(text2, markedSpans, estimateHeight2) {\n this.text = text2;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight2 ? estimateHeight2(this) : 1;\n };\n Line.prototype.lineNo = function() {\n return lineNo(this);\n };\n eventMixin(Line);\n function updateLine(line, text2, markedSpans, estimateHeight2) {\n line.text = text2;\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n if (line.styles) {\n line.styles = null;\n }\n if (line.order != null) {\n line.order = null;\n }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight2 ? estimateHeight2(line) : 1;\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n }\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style2, options) {\n if (!style2 || /^\\s*$/.test(style2)) {\n return null;\n }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style2] || (cache[style2] = style2.replace(/\\S+/g, \"cm-$&\"));\n }\n function buildLineContent(cm, lineView) {\n var content2 = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {\n pre: eltP(\"pre\", [content2], \"CodeMirror-line\"),\n content: content2,\n col: 0,\n pos: 0,\n cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {};\n for (var i2 = 0; i2 <= (lineView.rest ? lineView.rest.length : 0); i2++) {\n var line = i2 ? lineView.rest[i2 - 1] : lineView.line, order2 = void 0;\n builder.pos = 0;\n builder.addToken = buildToken;\n if (hasBadBidiRects(cm.display.measure) && (order2 = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order2);\n }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n }\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n }\n if (i2 == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n builder.content.className = \"cm-tab-wrap-hack\";\n }\n }\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\n return builder;\n }\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"•\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\n }\n function buildToken(builder, text2, style2, startStyle, endStyle, css, attributes2) {\n if (!text2) {\n return;\n }\n var displayText = builder.splitSpaces ? splitSpaces(text2, builder.trailingSpace) : text2;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content2;\n if (!special.test(text2)) {\n builder.col += text2.length;\n content2 = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text2.length, content2);\n if (ie && ie_version < 9) {\n mustWrap = true;\n }\n builder.pos += text2.length;\n } else {\n content2 = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text2);\n var skipped = m ? m.index - pos : text2.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) {\n content2.appendChild(elt(\"span\", [txt]));\n } else {\n content2.appendChild(txt);\n }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) {\n break;\n }\n pos += skipped + 1;\n var txt$1 = void 0;\n if (m[0] == \"\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content2.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content2.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"␍\" : \"\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) {\n content2.appendChild(elt(\"span\", [txt$1]));\n } else {\n content2.appendChild(txt$1);\n }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text2.length - 1) == 32;\n if (style2 || startStyle || endStyle || mustWrap || css || attributes2) {\n var fullStyle = style2 || \"\";\n if (startStyle) {\n fullStyle += startStyle;\n }\n if (endStyle) {\n fullStyle += endStyle;\n }\n var token = elt(\"span\", [content2], fullStyle, css);\n if (attributes2) {\n for (var attr2 in attributes2) {\n if (attributes2.hasOwnProperty(attr2) && attr2 != \"style\" && attr2 != \"class\") {\n token.setAttribute(attr2, attributes2[attr2]);\n }\n }\n }\n return builder.content.appendChild(token);\n }\n builder.content.appendChild(content2);\n }\n function splitSpaces(text2, trailingBefore) {\n if (text2.length > 1 && !/ /.test(text2)) {\n return text2;\n }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i2 = 0; i2 < text2.length; i2++) {\n var ch = text2.charAt(i2);\n if (ch == \" \" && spaceBefore && (i2 == text2.length - 1 || text2.charCodeAt(i2 + 1) == 32)) {\n ch = \" \";\n }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result;\n }\n function buildTokenBadBidi(inner, order2) {\n return function(builder, text2, style2, startStyle, endStyle, css, attributes2) {\n style2 = style2 ? style2 + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text2.length;\n for (; ; ) {\n var part = void 0;\n for (var i2 = 0; i2 < order2.length; i2++) {\n part = order2[i2];\n if (part.to > start && part.from <= start) {\n break;\n }\n }\n if (part.to >= end) {\n return inner(builder, text2, style2, startStyle, endStyle, css, attributes2);\n }\n inner(builder, text2.slice(0, part.to - start), style2, startStyle, null, css, attributes2);\n startStyle = null;\n text2 = text2.slice(part.to - start);\n start = part.to;\n }\n };\n }\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$12 = 1; i$12 < styles.length; i$12 += 2) {\n builder.addToken(builder, allText.slice(at, at = styles[i$12]), interpretTokenStyle(styles[i$12 + 1], builder.cm.options));\n }\n return;\n }\n var len = allText.length, pos = 0, i2 = 1, text2 = \"\", style2, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes2;\n for (; ; ) {\n if (nextChange == pos) {\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes2 = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [], endStyles = void 0;\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n }\n if (m.title) {\n (attributes2 || (attributes2 = {})).title = m.title;\n }\n if (m.attributes) {\n for (var attr2 in m.attributes) {\n (attributes2 || (attributes2 = {}))[attr2] = m.attributes[attr2];\n }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(\n builder,\n (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker,\n collapsed.from == null\n );\n if (collapsed.to == null) {\n return;\n }\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n if (pos >= len) {\n break;\n }\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text2) {\n var end = pos + text2.length;\n if (!collapsed) {\n var tokenText = end > upto ? text2.slice(0, upto - pos) : text2;\n builder.addToken(\n builder,\n tokenText,\n style2 ? style2 + spanStyle : spanStyle,\n spanStartStyle,\n pos + tokenText.length == nextChange ? spanEndStyle : \"\",\n css,\n attributes2\n );\n }\n if (end >= upto) {\n text2 = text2.slice(upto - pos);\n pos = upto;\n break;\n }\n pos = end;\n spanStartStyle = \"\";\n }\n text2 = allText.slice(at, at = styles[i2++]);\n style2 = interpretTokenStyle(styles[i2++], builder.cm.options);\n }\n }\n }\n function LineView(doc, line, lineN) {\n this.line = line;\n this.rest = visualLineContinued(line);\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array;\n }\n var operationGroup = null;\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n function fireCallbacksForOps(group) {\n var callbacks = group.delayedCallbacks, i2 = 0;\n do {\n for (; i2 < callbacks.length; i2++) {\n callbacks[i2].call(null);\n }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i2 < callbacks.length);\n }\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) {\n return;\n }\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n var orphanDelayedCallbacks = null;\n function signalLater(emitter, type) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) {\n return;\n }\n var args = Array.prototype.slice.call(arguments, 2), list2;\n if (operationGroup) {\n list2 = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list2 = orphanDelayedCallbacks;\n } else {\n list2 = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function(i3) {\n list2.push(function() {\n return arr[i3].apply(null, args);\n });\n };\n for (var i2 = 0; i2 < arr.length; ++i2)\n loop(i2);\n }\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i2 = 0; i2 < delayed.length; ++i2) {\n delayed[i2]();\n }\n }\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n lineView.changes = null;\n }\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\n }\n return lineView.node;\n }\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) {\n cls += \" CodeMirror-linebackground\";\n }\n if (lineView.background) {\n if (cls) {\n lineView.background.className = cls;\n } else {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\n } else if (cls) {\n var wrap2 = ensureLineWrapped(lineView);\n lineView.background = wrap2.insertBefore(elt(\"div\", null, cls), wrap2.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n return buildLineContent(cm, lineView);\n }\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap2 = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\n \"div\",\n null,\n \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\"\n );\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap2.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$12 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$12.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n lineView.lineNumber = gutterWrap.appendChild(\n elt(\n \"div\",\n lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"\n )\n );\n }\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found) {\n gutterWrap.appendChild(elt(\n \"div\",\n [found],\n \"CodeMirror-gutter-elt\",\n \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"\n ));\n }\n }\n }\n }\n }\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) {\n lineView.node.removeChild(node);\n }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\n }\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) {\n for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n insertLineWidgetsFor(cm, lineView.rest[i2], lineView, dims, false);\n }\n }\n }\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n var wrap2 = ensureLineWrapped(lineView);\n for (var i2 = 0, ws = line.widgets; i2 < ws.length; ++i2) {\n var widget = ws[i2], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above) {\n wrap2.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap2.appendChild(node);\n }\n signalLater(widget, \"redraw\");\n }\n }\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n var cm = widget.doc.cm;\n if (!cm) {\n return 0;\n }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight;\n }\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n }\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\n function paddingH(display) {\n if (display.cachedPaddingH) {\n return display.cachedPaddingH;\n }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style2 = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data2 = { left: parseInt(style2.paddingLeft), right: parseInt(style2.paddingRight) };\n if (!isNaN(data2.left) && !isNaN(data2.right)) {\n display.cachedPaddingH = data2;\n }\n return data2;\n }\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n }\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i2 = 0; i2 < rects.length - 1; i2++) {\n var cur = rects[i2], next = rects[i2 + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return { map: lineView.measure.map, cache: lineView.measure.cache };\n }\n if (lineView.rest) {\n for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n if (lineView.rest[i2] == line) {\n return { map: lineView.measure.maps[i2], cache: lineView.measure.caches[i2] };\n }\n }\n for (var i$12 = 0; i$12 < lineView.rest.length; i$12++) {\n if (lineNo(lineView.rest[i$12]) > lineN) {\n return { map: lineView.measure.maps[i$12], cache: lineView.measure.caches[i$12], before: true };\n }\n }\n }\n }\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view;\n }\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n }\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\n }\n }\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n var info = mapFromLineView(view, line, lineN);\n return {\n line,\n view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n }\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n var key2 = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key2)) {\n found = prepared.cache[key2];\n } else {\n if (!prepared.rect) {\n prepared.rect = prepared.view.text.getBoundingClientRect();\n }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) {\n prepared.cache[key2] = found;\n }\n }\n return {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n var nullRect = { left: 0, right: 0, top: 0, bottom: 0 };\n function nodeAndOffsetInLineMap(map3, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n for (var i2 = 0; i2 < map3.length; i2 += 3) {\n mStart = map3[i2];\n mEnd = map3[i2 + 1];\n if (ch < mStart) {\n start = 0;\n end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i2 == map3.length - 3 || ch == mEnd && map3[i2 + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) {\n collapse = \"right\";\n }\n }\n if (start != null) {\n node = map3[i2 + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n if (bias == \"left\" && start == 0) {\n while (i2 && map3[i2 - 2] == map3[i2 - 3] && map3[i2 - 1].insertLeft) {\n node = map3[(i2 -= 3) + 2];\n collapse = \"left\";\n }\n }\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i2 < map3.length - 3 && map3[i2 + 3] == map3[i2 + 4] && !map3[i2 + 5].insertLeft) {\n node = map3[(i2 += 3) + 2];\n collapse = \"right\";\n }\n }\n break;\n }\n }\n return { node, start, end, collapse, coverStart: mStart, coverEnd: mEnd };\n }\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") {\n for (var i2 = 0; i2 < rects.length; i2++) {\n if ((rect = rects[i2]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$12 = rects.length - 1; i$12 >= 0; i$12--) {\n if ((rect = rects[i$12]).left != rect.right) {\n break;\n }\n }\n }\n return rect;\n }\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n var rect;\n if (node.nodeType == 3) {\n for (var i$12 = 0; i$12 < 4; i$12++) {\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n rect = node.parentNode.getBoundingClientRect();\n } else {\n rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n }\n if (rect.left || rect.right || start == 0) {\n break;\n }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n if (start > 0) {\n collapse = bias = \"right\";\n }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n } else {\n rect = node.getBoundingClientRect();\n }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan) {\n rect = { left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom };\n } else {\n rect = nullRect;\n }\n }\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i2 = 0;\n for (; i2 < heights.length - 1; i2++) {\n if (mid < heights[i2]) {\n break;\n }\n }\n var top2 = i2 ? heights[i2 - 1] : 0, bot = heights[i2];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top2,\n bottom: bot\n };\n if (!rect.left && !rect.right) {\n result.bogus = true;\n }\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n return result;\n }\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n bottom: rect.bottom * scaleY\n };\n }\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) {\n for (var i2 = 0; i2 < lineView.rest.length; i2++) {\n lineView.measure.caches[i2] = {};\n }\n }\n }\n }\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i2 = 0; i2 < cm.display.view.length; i2++) {\n clearLineMeasurementCacheFor(cm.display.view[i2]);\n }\n }\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n cm.display.lineNumChars = null;\n }\n function pageScrollX() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n }\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) {\n for (var i2 = 0; i2 < widgets.length; ++i2) {\n if (widgets[i2].above) {\n height += widgetHeight(widgets[i2]);\n }\n }\n }\n return height;\n }\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n if (context == \"line\") {\n return rect;\n }\n if (!context) {\n context = \"local\";\n }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n }\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n var left = coords.left, top2 = coords.top;\n if (context == \"page\") {\n left -= pageScrollX();\n top2 -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top2 += localBox.top;\n }\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return { left: left - lineSpaceBox.left, top: top2 - lineSpaceBox.top };\n }\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) {\n lineObj = getLine(cm.doc, pos.line);\n }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n }\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n function get(ch2, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch2, right ? \"right\" : \"left\", varHeight);\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n return intoCoordSystem(cm, lineObj, m, context);\n }\n var order2 = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order2) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n function getBidi(ch2, partPos2, invert) {\n var part = order2[partPos2], right = part.level == 1;\n return get(invert ? ch2 - 1 : ch2, right != invert);\n }\n var partPos = getBidiPartAt(order2, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n return val;\n }\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\n var lineObj = getLine(cm.doc, pos.line);\n var top2 = heightAtLine(lineObj) + paddingTop(cm.display);\n return { left, right: left, top: top2, bottom: top2 + lineObj.height };\n }\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) {\n pos.outside = outside;\n }\n return pos;\n }\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n if (x < 0) {\n x = 0;\n }\n var lineObj = getLine(doc, lineN);\n for (; ; ) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) {\n return found;\n }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function(ch) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function(ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return { begin, end };\n }\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n }\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n }\n function coordsCharInner(cm, lineObj, lineNo2, x, y) {\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n var widgetHeight2 = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n var order2 = getOrder(lineObj, cm.doc.direction);\n if (order2) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo2, preparedMeasure, order2, x, y);\n ltr = part.level != 1;\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n var chAround = null, boxAround = null;\n var ch = findFirst(function(ch2) {\n var box = measureCharPrepared(cm, preparedMeasure, ch2);\n box.top += widgetHeight2;\n box.bottom += widgetHeight2;\n if (!boxIsAfter(box, x, y, false)) {\n return false;\n }\n if (box.top <= y && box.left <= x) {\n chAround = ch2;\n boxAround = box;\n }\n return true;\n }, begin, end);\n var baseX, sticky, outside = false;\n if (boxAround) {\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n if (!ltr && (ch == end || ch == begin)) {\n ch++;\n }\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight2 <= y == ltr ? \"after\" : \"before\";\n var coords = cursorCoords(cm, Pos(lineNo2, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo2, ch, sticky, outside, x - baseX);\n }\n function coordsBidiPart(cm, lineObj, lineNo2, preparedMeasure, order2, x, y) {\n var index2 = findFirst(function(i2) {\n var part2 = order2[i2], ltr2 = part2.level != 1;\n return boxIsAfter(cursorCoords(\n cm,\n Pos(lineNo2, ltr2 ? part2.to : part2.from, ltr2 ? \"before\" : \"after\"),\n \"line\",\n lineObj,\n preparedMeasure\n ), x, y, true);\n }, 0, order2.length - 1);\n var part = order2[index2];\n if (index2 > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(\n cm,\n Pos(lineNo2, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\",\n lineObj,\n preparedMeasure\n );\n if (boxIsAfter(start, x, y, true) && start.top > y) {\n part = order2[index2 - 1];\n }\n }\n return part;\n }\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order2, x, y) {\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n end--;\n }\n var part = null, closestDist = null;\n for (var i2 = 0; i2 < order2.length; i2++) {\n var p2 = order2[i2];\n if (p2.from >= end || p2.to <= begin) {\n continue;\n }\n var ltr = p2.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p2.to) - 1 : Math.max(begin, p2.from)).right;\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p2;\n closestDist = dist;\n }\n }\n if (!part) {\n part = order2[order2.length - 1];\n }\n if (part.from < begin) {\n part = { from: begin, to: part.to, level: part.level };\n }\n if (part.to > end) {\n part = { from: part.from, to: end, level: part.level };\n }\n return part;\n }\n var measureText;\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n for (var i2 = 0; i2 < 49; ++i2) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) {\n display.cachedTextHeight = height;\n }\n removeChildren(display.measure);\n return height || 1;\n }\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n return width || 10;\n }\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i2 = 0; n; n = n.nextSibling, ++i2) {\n var id = cm.display.gutterSpecs[i2].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {\n fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth\n };\n }\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n }\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function(line) {\n if (lineIsHidden(cm.doc, line)) {\n return 0;\n }\n var widgetsHeight = 0;\n if (line.widgets) {\n for (var i2 = 0; i2 < line.widgets.length; i2++) {\n if (line.widgets[i2].height) {\n widgetsHeight += line.widgets[i2].height;\n }\n }\n }\n if (wrapping) {\n return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n } else {\n return widgetsHeight + th;\n }\n };\n }\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function(line) {\n var estHeight = est(line);\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n });\n }\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n var x, y, space = display.lineSpace.getBoundingClientRect();\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e$1) {\n return null;\n }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords;\n }\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n n -= cm.display.viewFrom;\n if (n < 0) {\n return null;\n }\n var view = cm.display.view;\n for (var i2 = 0; i2 < view.length; i2++) {\n n -= view[i2].size;\n if (n < 0) {\n return i2;\n }\n }\n }\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n if (!lendiff) {\n lendiff = 0;\n }\n var display = cm.display;\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n cm.curOp.viewChanged = true;\n if (from >= display.viewTo) {\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) {\n resetView(cm);\n } else if (from <= display.viewFrom) {\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) {\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else {\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN) {\n ext.lineN += lendiff;\n } else if (from < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n }\n }\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) {\n return;\n }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n }\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index2 = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return { index: index2, lineN: newN };\n }\n var n = cm.display.viewFrom;\n for (var i2 = 0; i2 < index2; i2++) {\n n += view[i2].size;\n }\n if (n != oldN) {\n if (dir > 0) {\n if (index2 == view.length - 1) {\n return null;\n }\n diff = n + view[index2].size - oldN;\n index2++;\n } else {\n diff = n - oldN;\n }\n oldN += diff;\n newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index2 == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\n newN += dir * view[index2 - (dir < 0 ? 1 : 0)].size;\n index2 += dir;\n }\n return { index: index2, lineN: newN };\n }\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from) {\n display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n } else if (display.viewFrom < from) {\n display.view = display.view.slice(findViewIndex(cm, from));\n }\n display.viewFrom = from;\n if (display.viewTo < to) {\n display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n } else if (display.viewTo > to) {\n display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n }\n display.viewTo = to;\n }\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i2 = 0; i2 < view.length; i2++) {\n var lineView = view[i2];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\n }\n return dirty;\n }\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n function prepareSelection(cm, primary) {\n if (primary === void 0)\n primary = true;\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n var customCursor = cm.options.$customCursor;\n if (customCursor) {\n primary = true;\n }\n for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n if (!primary && i2 == doc.sel.primIndex) {\n continue;\n }\n var range2 = doc.sel.ranges[i2];\n if (range2.from().line >= cm.display.viewTo || range2.to().line < cm.display.viewFrom) {\n continue;\n }\n var collapsed = range2.empty();\n if (customCursor) {\n var head2 = customCursor(cm, range2);\n if (head2) {\n drawSelectionCursor(cm, head2, curFragment);\n }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range2.head, curFragment);\n }\n if (!collapsed) {\n drawSelectionRange(cm, range2, selFragment);\n }\n }\n return result;\n }\n function drawSelectionCursor(cm, head2, output) {\n var pos = cursorCoords(cm, head2, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n var cursor = output.appendChild(elt(\"div\", \" \", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head2, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n if (pos.other) {\n var otherCursor = output.appendChild(elt(\"div\", \" \", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * 0.85 + \"px\";\n }\n }\n function cmpCoords(a, b) {\n return a.top - b.top || a.left - b.left;\n }\n function drawSelectionRange(cm, range2, output) {\n var display = cm.display, doc = cm.doc;\n var fragment2 = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n function add(left, top2, width, bottom) {\n if (top2 < 0) {\n top2 = 0;\n }\n top2 = Math.round(top2);\n bottom = Math.round(bottom);\n fragment2.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n top: \" + top2 + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top2) + \"px\"));\n }\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n }\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop2 = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop2)[prop2];\n }\n var order2 = getOrder(lineObj, doc.direction);\n iterateBidiSections(order2, fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir, i2) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i2 == 0, last = !order2 || i2 == order2.length - 1;\n if (toPos.top - fromPos.top <= 3) {\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else {\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return { start, end };\n }\n var sFrom = range2.from(), sTo = range2.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n output.appendChild(fragment2);\n }\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n var display = cm.display;\n clearInterval(display.blinker);\n var on2 = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function() {\n if (!cm.hasFocus()) {\n onBlur(cm);\n }\n display.cursorDiv.style.visibility = (on2 = !on2) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate);\n } else if (cm.options.cursorBlinkRate < 0) {\n display.cursorDiv.style.visibility = \"hidden\";\n }\n }\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) {\n onFocus(cm);\n }\n }\n }\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function() {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) {\n onBlur(cm);\n }\n }\n }, 100);\n }\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) {\n cm.state.delayingBlurEvent = false;\n }\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) {\n setTimeout(function() {\n return cm.display.input.reset(true);\n }, 20);\n }\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) {\n return;\n }\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function() {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n }\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i2 = 0; i2 < display.view.length; i2++) {\n var cur = display.view[i2], wrapping = cm.options.lineWrapping;\n var height = void 0, width = 0;\n if (cur.hidden) {\n continue;\n }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n var diff = cur.line.height - height;\n if (diff > 5e-3 || diff < -5e-3) {\n if (oldHeight < viewTop) {\n mustScroll -= diff;\n }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) {\n display.scroller.scrollTop += mustScroll;\n }\n }\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i2 = 0; i2 < line.widgets.length; ++i2) {\n var w = line.widgets[i2], parent = w.node.parentNode;\n if (parent) {\n w.height = parent.offsetHeight;\n }\n }\n }\n }\n function visibleLines(display, doc, viewport) {\n var top2 = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top2 = Math.floor(top2 - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top2 + display.wrapper.clientHeight;\n var from = lineAtHeight(doc, top2), to = lineAtHeight(doc, bottom);\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return { from, to: Math.max(to, from + 1) };\n }\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\", null, \"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {\n left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n };\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n if (!changed) {\n break;\n }\n }\n return rect;\n }\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n }\n }\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) {\n rect.top = 0;\n }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen2 = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen2) {\n rect.bottom = rect.top + screen2;\n }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen2) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen2);\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n return result;\n }\n function addToScrollTop(cm, top2) {\n if (top2 == null) {\n return;\n }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top2;\n }\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = { from: cur, to: cur, margin: cm.options.cursorScrollMargin };\n }\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) {\n resolveScrollToPos(cm);\n }\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n function scrollToRange(cm, range2) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range2;\n }\n function resolveScrollToPos(cm) {\n var range2 = cm.curOp.scrollToPos;\n if (range2) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range2.from), to = estimateCoords(cm, range2.to);\n scrollToCoordsRange(cm, from, to, range2.margin);\n }\n }\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) {\n return;\n }\n if (!gecko) {\n updateDisplaySimple(cm, { top: val });\n }\n setScrollTop(cm, val, true);\n if (gecko) {\n updateDisplaySimple(cm);\n }\n startWorker(cm, 100);\n }\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) {\n return;\n }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n }\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n cm.display.scrollbars.setScrollLeft(val);\n }\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth,\n clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n };\n }\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\n on(vert, \"scroll\", function() {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function() {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false;\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\n };\n NativeScrollbars.prototype.update = function(measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) {\n this.zeroWidthHack();\n }\n this.checkedZeroWidth = true;\n }\n return { right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0 };\n };\n NativeScrollbars.prototype.setScrollLeft = function(pos) {\n if (this.horiz.scrollLeft != pos) {\n this.horiz.scrollLeft = pos;\n }\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n NativeScrollbars.prototype.setScrollTop = function(pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\n };\n NativeScrollbars.prototype.zeroWidthHack = function() {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n NativeScrollbars.prototype.enableZeroWidthBar = function(bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n var box = bar.getBoundingClientRect();\n var elt2 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt2 != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1e3, maybeDisable);\n }\n }\n delay.set(1e3, maybeDisable);\n };\n NativeScrollbars.prototype.clear = function() {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n var NullScrollbars = function() {\n };\n NullScrollbars.prototype.update = function() {\n return { bottom: 0, right: 0 };\n };\n NullScrollbars.prototype.setScrollLeft = function() {\n };\n NullScrollbars.prototype.setScrollTop = function() {\n };\n NullScrollbars.prototype.clear = function() {\n };\n function updateScrollbars(cm, measure) {\n if (!measure) {\n measure = measureForScrollbars(cm);\n }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i2 = 0; i2 < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i2++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n updateHeightsInViewport(cm);\n }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n }\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else {\n d.scrollbarFiller.style.display = \"\";\n }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else {\n d.gutterFiller.style.display = \"\";\n }\n }\n var scrollbarModel = { \"native\": NativeScrollbars, \"null\": NullScrollbars };\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function(node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n on(node, \"mousedown\", function() {\n if (cm.state.focused) {\n setTimeout(function() {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function(pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n var nextOpId = 0;\n function startOperation(cm) {\n cm.curOp = {\n cm,\n viewChanged: false,\n // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height,\n // Used to detect need to update scrollbar\n forceUpdate: false,\n // Used to force a redraw\n updateInput: 0,\n // Whether to reset the input textarea\n typing: false,\n // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null,\n // Accumulated changes, for firing change events\n cursorActivityHandlers: null,\n // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0,\n // Tracks which cursorActivity handlers have been called already\n selectionChanged: false,\n // Whether the selection needs to be redrawn\n updateMaxLine: false,\n // Set when the widest line needs to be determined anew\n scrollLeft: null,\n scrollTop: null,\n // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null,\n // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId,\n // Unique ID\n markArrays: null\n // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) {\n finishOperation(op, function(group) {\n for (var i2 = 0; i2 < group.ops.length; i2++) {\n group.ops[i2].cm.curOp = null;\n }\n endOperations(group);\n });\n }\n }\n function endOperations(group) {\n var ops = group.ops;\n for (var i2 = 0; i2 < ops.length; i2++) {\n endOperation_R1(ops[i2]);\n }\n for (var i$12 = 0; i$12 < ops.length; i$12++) {\n endOperation_W1(ops[i$12]);\n }\n for (var i$22 = 0; i$22 < ops.length; i$22++) {\n endOperation_R2(ops[i$22]);\n }\n for (var i$3 = 0; i$3 < ops.length; i$3++) {\n endOperation_W2(ops[i$3]);\n }\n for (var i$4 = 0; i$4 < ops.length; i$4++) {\n endOperation_finish(ops[i$4]);\n }\n }\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && { top: op.scrollTop, ensure: op.scrollToPos }, op.forceUpdate);\n }\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n op.barMeasure = measureForScrollbars(cm);\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n if (op.updatedDisplay || op.selectionChanged) {\n op.preparedSelection = display.input.prepareSelection();\n }\n }\n function endOperation_W2(op) {\n var cm = op.cm;\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n cm.display.maxLineChanged = false;\n }\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n }\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n }\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n }\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(\n cm,\n clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to),\n op.scrollToPos.margin\n );\n maybeScrollWindow(cm, rect);\n }\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) {\n for (var i2 = 0; i2 < hidden.length; ++i2) {\n if (!hidden[i2].lines.length) {\n signal(hidden[i2], \"hide\");\n }\n }\n }\n if (unhidden) {\n for (var i$12 = 0; i$12 < unhidden.length; ++i$12) {\n if (unhidden[i$12].lines.length) {\n signal(unhidden[i$12], \"unhide\");\n }\n }\n }\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n }\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n if (op.update) {\n op.update.finish();\n }\n }\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\n startOperation(cm);\n try {\n return f();\n } finally {\n endOperation(cm);\n }\n }\n function operation(cm, f) {\n return function() {\n if (cm.curOp) {\n return f.apply(cm, arguments);\n }\n startOperation(cm);\n try {\n return f.apply(cm, arguments);\n } finally {\n endOperation(cm);\n }\n };\n }\n function methodOp(f) {\n return function() {\n if (this.curOp) {\n return f.apply(this, arguments);\n }\n startOperation(this);\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(this);\n }\n };\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) {\n return f.apply(this, arguments);\n }\n startOperation(cm);\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(cm);\n }\n };\n }\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) {\n cm.state.highlight.set(time, bind(highlightWorker, cm));\n }\n }\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\n var end = +/* @__PURE__ */ new Date() + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) {\n if (context.line >= cm.display.viewFrom) {\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) {\n context.state = resetState;\n }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\n var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i2 = 0; !ischange && i2 < oldStyles.length; ++i2) {\n ischange = oldStyles[i2] != line.styles[i2];\n }\n if (ischange) {\n changedLines.push(context.line);\n }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength) {\n processLine(cm, line.text, context);\n }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+/* @__PURE__ */ new Date() > end) {\n startWorker(cm, cm.options.workDelay);\n return true;\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) {\n runInOp(cm, function() {\n for (var i2 = 0; i2 < changedLines.length; i2++) {\n regLineChange(cm, changedLines[i2], \"text\");\n }\n });\n }\n }\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n this.viewport = viewport;\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n DisplayUpdate.prototype.signal = function(emitter, type) {\n if (hasHandler(emitter, type)) {\n this.events.push(arguments);\n }\n };\n DisplayUpdate.prototype.finish = function() {\n for (var i2 = 0; i2 < this.events.length; i2++) {\n signal.apply(null, this.events[i2]);\n }\n };\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) {\n return null;\n }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n var result = { activeElt: active };\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result;\n }\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range2 = document.createRange();\n range2.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range2.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range2);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n function updateDisplayIfNeeded(cm, update2) {\n var display = cm.display, doc = cm.doc;\n if (update2.editorIsHidden) {\n resetView(cm);\n return false;\n }\n if (!update2.force && update2.visible.from >= display.viewFrom && update2.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update2.dims = getDimensions(cm);\n }\n var end = doc.first + doc.size;\n var from = Math.max(update2.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update2.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update2.wrapperHeight || display.lastWrapWidth != update2.wrapperWidth;\n adjustView(cm, from, to);\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n cm.display.mover.style.top = display.viewOffset + \"px\";\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update2.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n return false;\n }\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n patchDisplay(cm, display.updateLineNumbers, update2.dims);\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n display.renderedView = display.view;\n restoreSelection(selSnapshot);\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n if (different) {\n display.lastWrapHeight = update2.wrapperHeight;\n display.lastWrapWidth = update2.wrapperWidth;\n startWorker(cm, 400);\n }\n display.updateLineNumbers = null;\n return true;\n }\n function postUpdateDisplay(cm, update2) {\n var viewport = update2.viewport;\n for (var first = true; ; first = false) {\n if (!first || !cm.options.lineWrapping || update2.oldDisplayWidth == displayWidth(cm)) {\n if (viewport && viewport.top != null) {\n viewport = { top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top) };\n }\n update2.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update2.visible.from >= cm.display.viewFrom && update2.visible.to <= cm.display.viewTo) {\n break;\n }\n } else if (first) {\n update2.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update2)) {\n break;\n }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update2.force = false;\n }\n update2.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update2.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom;\n cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n function updateDisplaySimple(cm, viewport) {\n var update2 = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update2)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update2);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update2.finish();\n }\n }\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n function rm(node2) {\n var next = node2.nextSibling;\n if (webkit && mac && cm.display.currentWheelTarget == node2) {\n node2.style.display = \"none\";\n } else {\n node2.parentNode.removeChild(node2);\n }\n return next;\n }\n var view = display.view, lineN = display.viewFrom;\n for (var i2 = 0; i2 < view.length; i2++) {\n var lineView = view[i2];\n if (lineView.hidden)\n ;\n else if (!lineView.node || lineView.node.parentNode != container) {\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) {\n cur = rm(cur);\n }\n }\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n signalLater(display, \"gutterChanged\", display);\n }\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n }\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i2 = 0; i2 < view.length; i2++) {\n if (!view[i2].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i2].gutter) {\n view[i2].gutter.style.left = left;\n }\n if (view[i2].gutterBackground) {\n view[i2].gutterBackground.style.left = left;\n }\n }\n var align = view[i2].alignable;\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\n }\n }\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\n \"div\",\n [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"\n ));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true;\n }\n return false;\n }\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i2 = 0; i2 < gutters.length; i2++) {\n var name = gutters[i2], style2 = null;\n if (typeof name != \"string\") {\n style2 = name.style;\n name = name.className;\n }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n result.push({ className: name, style: style2 });\n }\n if (lineNumbers && !sawLineNumbers) {\n result.push({ className: \"CodeMirror-linenumbers\", style: null });\n }\n return result;\n }\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i2 = 0; i2 < specs.length; ++i2) {\n var ref = specs[i2];\n var className = ref.className;\n var style2 = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style2) {\n gElt.style.cssText = style2;\n }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n d.lineSpace = eltP(\n \"div\",\n [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null,\n \"position: relative; outline: none\"\n );\n var lines2 = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n d.mover = elt(\"div\", [lines2], null, \"position: relative\");\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n d.wrapper.setAttribute(\"translate\", \"no\");\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n }\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n d.view = [];\n d.renderedView = null;\n d.externalMeasured = null;\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n d.shift = false;\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\n }\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n if (ie) {\n wheelPixelsPerUnit = -0.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -0.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\n return { x: dx, y: dy };\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta;\n }\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n var display = cm.display, scroll = display.scroller;\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) {\n return;\n }\n if (dy && mac && webkit) {\n outer:\n for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i2 = 0; i2 < view.length; i2++) {\n if (view[i2].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\n }\n }\n }\n }\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit));\n }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n if (!dy || dy && canScrollY) {\n e_preventDefault(e);\n }\n display.wheelStartX = null;\n return;\n }\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top2 = cm.doc.scrollTop, bot = top2 + display.wrapper.clientHeight;\n if (pixels < 0) {\n top2 = Math.max(0, top2 + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\n updateDisplaySimple(cm, { top: top2, bottom: bot });\n }\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n display.wheelDY = dy;\n setTimeout(function() {\n if (display.wheelStartX == null) {\n return;\n }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) {\n return;\n }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx;\n display.wheelDY += dy;\n }\n }\n }\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n Selection.prototype.primary = function() {\n return this.ranges[this.primIndex];\n };\n Selection.prototype.equals = function(other) {\n if (other == this) {\n return true;\n }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n for (var i2 = 0; i2 < this.ranges.length; i2++) {\n var here = this.ranges[i2], there = other.ranges[i2];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.deepCopy = function() {\n var out = [];\n for (var i2 = 0; i2 < this.ranges.length; i2++) {\n out[i2] = new Range(copyPos(this.ranges[i2].anchor), copyPos(this.ranges[i2].head));\n }\n return new Selection(out, this.primIndex);\n };\n Selection.prototype.somethingSelected = function() {\n for (var i2 = 0; i2 < this.ranges.length; i2++) {\n if (!this.ranges[i2].empty()) {\n return true;\n }\n }\n return false;\n };\n Selection.prototype.contains = function(pos, end) {\n if (!end) {\n end = pos;\n }\n for (var i2 = 0; i2 < this.ranges.length; i2++) {\n var range2 = this.ranges[i2];\n if (cmp(end, range2.from()) >= 0 && cmp(pos, range2.to()) <= 0) {\n return i2;\n }\n }\n return -1;\n };\n var Range = function(anchor, head2) {\n this.anchor = anchor;\n this.head = head2;\n };\n Range.prototype.from = function() {\n return minPos(this.anchor, this.head);\n };\n Range.prototype.to = function() {\n return maxPos(this.anchor, this.head);\n };\n Range.prototype.empty = function() {\n return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n };\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function(a, b) {\n return cmp(a.from(), b.from());\n });\n primIndex = indexOf(ranges, prim);\n for (var i2 = 1; i2 < ranges.length; i2++) {\n var cur = ranges[i2], prev = ranges[i2 - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i2 <= primIndex) {\n --primIndex;\n }\n ranges.splice(--i2, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex);\n }\n function simpleSelection(anchor, head2) {\n return new Selection([new Range(anchor, head2 || anchor)], 0);\n }\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n return Pos(\n change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)\n );\n }\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\n return Pos(line, ch);\n }\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n var range2 = doc.sel.ranges[i2];\n out.push(new Range(\n adjustForChange(range2.anchor, change),\n adjustForChange(range2.head, change)\n ));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n }\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line) {\n return Pos(nw.line, pos.ch - old.ch + nw.ch);\n } else {\n return Pos(nw.line + (pos.line - old.line), pos.ch);\n }\n }\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i2 = 0; i2 < changes.length; i2++) {\n var change = changes[i2];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range2 = doc.sel.ranges[i2], inv = cmp(range2.head, range2.anchor) < 0;\n out[i2] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i2] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex);\n }\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n function resetModeState(cm) {\n cm.doc.iter(function(line) {\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) {\n regChange(cm);\n }\n }\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n }\n function updateDoc(doc, change, markedSpans, estimateHeight2) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\n function update2(line, text3, spans) {\n updateLine(line, text3, spans, estimateHeight2);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i2 = start; i2 < end; ++i2) {\n result.push(new Line(text2[i2], spansFor(i2), estimateHeight2));\n }\n return result;\n }\n var from = change.from, to = change.to, text2 = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text2), lastSpans = spansFor(text2.length - 1), nlines = to.line - from.line;\n if (change.full) {\n doc.insert(0, linesFor(0, text2.length));\n doc.remove(text2.length, doc.size - text2.length);\n } else if (isWholeLineUpdate(doc, change)) {\n var added = linesFor(0, text2.length - 1);\n update2(lastLine, lastLine.text, lastSpans);\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n if (added.length) {\n doc.insert(from.line, added);\n }\n } else if (firstLine == lastLine) {\n if (text2.length == 1) {\n update2(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text2.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight2));\n update2(firstLine, firstLine.text.slice(0, from.ch) + text2[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text2.length == 1) {\n update2(firstLine, firstLine.text.slice(0, from.ch) + text2[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update2(firstLine, firstLine.text.slice(0, from.ch) + text2[0], spansFor(0));\n update2(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text2.length - 1);\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n doc.insert(from.line + 1, added$2);\n }\n signalLater(doc, \"change\", doc, change);\n }\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc2, skip, sharedHist) {\n if (doc2.linked) {\n for (var i2 = 0; i2 < doc2.linked.length; ++i2) {\n var rel = doc2.linked[i2];\n if (rel.doc == skip) {\n continue;\n }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) {\n continue;\n }\n f(rel.doc, shared);\n propagate(rel.doc, doc2, shared);\n }\n }\n }\n propagate(doc, null, true);\n }\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) {\n findMaxLine(cm);\n }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n function directionChanged(cm) {\n runInOp(cm, function() {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n function History(prev) {\n this.done = [];\n this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n function historyChangeFromChange(doc, change) {\n var histChange = { from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to) };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function(doc2) {\n return attachLocalSpans(doc2, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\n }\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) {\n array.pop();\n } else {\n break;\n }\n }\n }\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done);\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done);\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done);\n }\n }\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +/* @__PURE__ */ new Date(), cur;\n var last;\n if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n last.to = changeEnd(change);\n } else {\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n var before = lst(hist.done);\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n cur = {\n changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation\n };\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) {\n hist.done.shift();\n }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n if (!last) {\n signal(doc, \"historyAdded\");\n }\n }\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && /* @__PURE__ */ new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n }\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n hist.lastSelTime = +/* @__PURE__ */ new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n function pushSelectionToHistory(sel, dest) {\n var top2 = lst(dest);\n if (!(top2 && top2.ranges && top2.equals(sel))) {\n dest.push(sel);\n }\n }\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) {\n if (line.markedSpans) {\n (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n }\n ++n;\n });\n }\n function removeClearedSpans(spans) {\n if (!spans) {\n return null;\n }\n var out;\n for (var i2 = 0; i2 < spans.length; ++i2) {\n if (spans[i2].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i2);\n }\n } else if (out) {\n out.push(spans[i2]);\n }\n }\n return !out ? spans : out.length ? out : null;\n }\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) {\n return null;\n }\n var nw = [];\n for (var i2 = 0; i2 < change.text.length; ++i2) {\n nw.push(removeClearedSpans(found[i2]));\n }\n return nw;\n }\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) {\n return stretched;\n }\n if (!stretched) {\n return old;\n }\n for (var i2 = 0; i2 < old.length; ++i2) {\n var oldCur = old[i2], stretchCur = stretched[i2];\n if (oldCur && stretchCur) {\n spans:\n for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i2] = stretchCur;\n }\n }\n return old;\n }\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i2 = 0; i2 < events.length; ++i2) {\n var event = events[i2];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n var changes = event.changes, newChanges = [];\n copy.push({ changes: newChanges });\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = void 0;\n newChanges.push({ from: change.from, to: change.to, text: change.text });\n if (newGroup) {\n for (var prop2 in change) {\n if (m = prop2.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop2] = change[prop2];\n delete change[prop2];\n }\n }\n }\n }\n }\n }\n return copy;\n }\n function extendRange(range2, head2, other, extend3) {\n if (extend3) {\n var anchor = range2.anchor;\n if (other) {\n var posBefore = cmp(head2, anchor) < 0;\n if (posBefore != cmp(other, anchor) < 0) {\n anchor = head2;\n head2 = other;\n } else if (posBefore != cmp(head2, other) < 0) {\n head2 = other;\n }\n }\n return new Range(anchor, head2);\n } else {\n return new Range(other || head2, head2);\n }\n }\n function extendSelection(doc, head2, other, options, extend3) {\n if (extend3 == null) {\n extend3 = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head2, other, extend3)], 0), options);\n }\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend3 = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n out[i2] = extendRange(doc.sel.ranges[i2], heads[i2], null, extend3);\n }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n function replaceOneSelection(doc, i2, range2, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i2] = range2;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n function setSimpleSelection(doc, anchor, head2, options) {\n setSelection(doc, simpleSelection(anchor, head2), options);\n }\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i2 = 0; i2 < ranges.length; i2++) {\n this.ranges[i2] = new Range(\n clipPos(doc, ranges[i2].anchor),\n clipPos(doc, ranges[i2].head)\n );\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n sel = filterSelectionChange(doc, sel, options);\n }\n var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\") {\n ensureCursorVisible(doc.cm);\n }\n }\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\n doc.sel = sel;\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i2 = 0; i2 < sel.ranges.length; i2++) {\n var range2 = sel.ranges[i2];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i2];\n var newAnchor = skipAtomic(doc, range2.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range2.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range2.anchor || newHead != range2.head) {\n if (!out) {\n out = sel.ranges.slice(0, i2);\n }\n out[i2] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n }\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) {\n for (var i2 = 0; i2 < line.markedSpans.length; ++i2) {\n var sp = line.markedSpans[i2], m = sp.marker;\n var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) {\n break;\n } else {\n --i2;\n continue;\n }\n }\n }\n if (!m.atomic) {\n continue;\n }\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = void 0;\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n }\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n return pos;\n }\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0);\n }\n return found;\n }\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) {\n return clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\n } else {\n return new Pos(pos.line, pos.ch + dir);\n }\n }\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n function filterChange(doc, change, update2) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function() {\n return obj.canceled = true;\n }\n };\n if (update2) {\n obj.update = function(from, to, text2, origin) {\n if (from) {\n obj.from = clipPos(doc, from);\n }\n if (to) {\n obj.to = clipPos(doc, to);\n }\n if (text2) {\n obj.text = text2;\n }\n if (origin !== void 0) {\n obj.origin = origin;\n }\n };\n }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\n return null;\n }\n return { from: obj.from, to: obj.to, text: obj.text, origin: obj.origin };\n }\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) {\n return;\n }\n }\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i2 = split.length - 1; i2 >= 0; --i2) {\n makeChangeInner(doc, { from: split[i2].from, to: split[i2].to, text: i2 ? [\"\"] : change.text, origin: change.origin });\n }\n } else {\n makeChangeInner(doc, change);\n }\n }\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n return;\n }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n linkedDocs(doc, function(doc2, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc2.history) == -1) {\n rebaseHist(doc2.history, change);\n rebased.push(doc2.history);\n }\n makeChangeSingleDoc(doc2, change, null, stretchSpansOverChange(doc2, change));\n });\n }\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) {\n return;\n }\n var hist = doc.history, event, selAfter = doc.sel;\n var source2 = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n var i2 = 0;\n for (; i2 < source2.length; i2++) {\n event = source2[i2];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n if (i2 == source2.length) {\n return;\n }\n hist.lastOrigin = hist.lastSelOrigin = null;\n for (; ; ) {\n event = source2.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, { clearRedo: false });\n return;\n }\n selAfter = event;\n } else if (suppress) {\n source2.push(event);\n return;\n } else {\n break;\n }\n }\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({ changes: antiChanges, generation: hist.generation });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n var loop = function(i3) {\n var change = event.changes[i3];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source2.length = 0;\n return {};\n }\n antiChanges.push(historyChangeFromChange(doc, change));\n var after = i3 ? computeSelAfterChange(doc, change) : lst(source2);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i3 && doc.cm) {\n doc.cm.scrollIntoView({ from: change.from, to: changeEnd(change) });\n }\n var rebased = [];\n linkedDocs(doc, function(doc2, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc2.history) == -1) {\n rebaseHist(doc2.history, change);\n rebased.push(doc2.history);\n }\n makeChangeSingleDoc(doc2, change, null, mergeOldSpans(doc2, change));\n });\n };\n for (var i$12 = event.changes.length - 1; i$12 >= 0; --i$12) {\n var returned = loop(i$12);\n if (returned)\n return returned.v;\n }\n }\n function shiftDoc(doc, distance) {\n if (distance == 0) {\n return;\n }\n doc.first += distance;\n doc.sel = new Selection(map2(doc.sel.ranges, function(range2) {\n return new Range(\n Pos(range2.anchor.line + distance, range2.anchor.ch),\n Pos(range2.head.line + distance, range2.head.ch)\n );\n }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n }\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n }\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n if (change.from.line > doc.lastLine()) {\n return;\n }\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n change.removed = getBetween(doc, change.from, change.to);\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n }\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function(line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true;\n }\n });\n }\n if (doc.sel.contains(change.from, change.to) > -1) {\n signalCursorActivity(cm);\n }\n updateDoc(doc, change, spans, estimateHeight(cm));\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function(line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) {\n cm.curOp.updateMaxLine = true;\n }\n }\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n var lendiff = change.text.length - (to.line - from.line) - 1;\n if (change.full) {\n regChange(cm);\n } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n regLineChange(cm, from.line, \"text\");\n } else {\n regChange(cm, from.line, to.line + 1, lendiff);\n }\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from,\n to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) {\n signalLater(cm, \"change\", cm, obj);\n }\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n cm.display.selForContextMenu = null;\n }\n function replaceRange(doc, code2, from, to, origin) {\n var assign;\n if (!to) {\n to = from;\n }\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n if (typeof code2 == \"string\") {\n code2 = doc.splitLines(code2);\n }\n makeChange(doc, { from, to, text: code2, origin });\n }\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n function rebaseHistArray(array, from, to, diff) {\n for (var i2 = 0; i2 < array.length; ++i2) {\n var sub = array[i2], ok2 = true;\n if (sub.ranges) {\n if (!sub.copied) {\n sub = array[i2] = sub.deepCopy();\n sub.copied = true;\n }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue;\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok2 = false;\n break;\n }\n }\n if (!ok2) {\n array.splice(0, i2 + 1);\n i2 = 0;\n }\n }\n }\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n if (no == null) {\n return null;\n }\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n return line;\n }\n function LeafChunk(lines2) {\n this.lines = lines2;\n this.parent = null;\n var height = 0;\n for (var i2 = 0; i2 < lines2.length; ++i2) {\n lines2[i2].parent = this;\n height += lines2[i2].height;\n }\n this.height = height;\n }\n LeafChunk.prototype = {\n chunkSize: function() {\n return this.lines.length;\n },\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i2 = at, e = at + n; i2 < e; ++i2) {\n var line = this.lines[i2];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines2) {\n lines2.push.apply(lines2, this.lines);\n },\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines2, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines2).concat(this.lines.slice(at));\n for (var i2 = 0; i2 < lines2.length; ++i2) {\n lines2[i2].parent = this;\n }\n },\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at) {\n if (op(this.lines[at])) {\n return true;\n }\n }\n }\n };\n function BranchChunk(children2) {\n this.children = children2;\n var size = 0, height = 0;\n for (var i2 = 0; i2 < children2.length; ++i2) {\n var ch = children2[i2];\n size += ch.chunkSize();\n height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n BranchChunk.prototype = {\n chunkSize: function() {\n return this.size;\n },\n removeInner: function(at, n) {\n this.size -= n;\n for (var i2 = 0; i2 < this.children.length; ++i2) {\n var child = this.children[i2], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) {\n this.children.splice(i2--, 1);\n child.parent = null;\n }\n if ((n -= rm) == 0) {\n break;\n }\n at = 0;\n } else {\n at -= sz;\n }\n }\n if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines2 = [];\n this.collapse(lines2);\n this.children = [new LeafChunk(lines2)];\n this.children[0].parent = this;\n }\n },\n collapse: function(lines2) {\n for (var i2 = 0; i2 < this.children.length; ++i2) {\n this.children[i2].collapse(lines2);\n }\n },\n insertInner: function(at, lines2, height) {\n this.size += lines2.length;\n this.height += height;\n for (var i2 = 0; i2 < this.children.length; ++i2) {\n var child = this.children[i2], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines2, height);\n if (child.lines && child.lines.length > 50) {\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length; ) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i2, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break;\n }\n at -= sz;\n }\n },\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) {\n return;\n }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) {\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n me.parent.maybeSpill();\n },\n iterN: function(at, n, op) {\n for (var i2 = 0; i2 < this.children.length; ++i2) {\n var child = this.children[i2], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) {\n return true;\n }\n if ((n -= used) == 0) {\n break;\n }\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n };\n var LineWidget = function(doc, node, options) {\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this[opt] = options[opt];\n }\n }\n }\n this.doc = doc;\n this.node = node;\n };\n LineWidget.prototype.clear = function() {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) {\n return;\n }\n for (var i2 = 0; i2 < ws.length; ++i2) {\n if (ws[i2] == this) {\n ws.splice(i2--, 1);\n }\n }\n if (!ws.length) {\n line.widgets = null;\n }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function() {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n LineWidget.prototype.changed = function() {\n var this$1$1 = this;\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) {\n return;\n }\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n if (cm) {\n runInOp(cm, function() {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n addToScrollTop(cm, diff);\n }\n }\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n changeLine(doc, handle, \"widget\", function(line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget);\n }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) {\n addToScrollTop(cm, widget.height);\n }\n cm.curOp.forceUpdate = true;\n }\n return true;\n });\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n return widget;\n }\n var nextMarkerId = 0;\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n TextMarker.prototype.clear = function() {\n if (this.explicitlyCleared) {\n return;\n }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) {\n startOperation(cm);\n }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n var min = null, max = null;\n for (var i2 = 0; i2 < this.lines.length; ++i2) {\n var line = this.lines[i2];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$12 = 0; i$12 < this.lines.length; ++i$12) {\n var visual = visualLine(this.lines[i$12]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n if (withOp) {\n endOperation(cm);\n }\n if (this.parent) {\n this.parent.clear();\n }\n };\n TextMarker.prototype.find = function(side, lineObj) {\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\n var from, to;\n for (var i2 = 0; i2 < this.lines.length; ++i2) {\n var line = this.lines[i2];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) {\n return from;\n }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) {\n return to;\n }\n }\n }\n return from && { from, to };\n };\n TextMarker.prototype.changed = function() {\n var this$1$1 = this;\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) {\n return;\n }\n runInOp(cm, function() {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\n signalLater(cm, \"markerChanged\", cm, this$1$1);\n });\n };\n TextMarker.prototype.attachLine = function(line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n }\n this.lines.push(line);\n };\n TextMarker.prototype.detachLine = function(line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n function markText(doc, from, to, options, type) {\n if (options && options.shared) {\n return markTextShared(doc, from, to, options, type);\n }\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, markText)(doc, from, to, options, type);\n }\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) {\n copyObj(options, marker, false);\n }\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n if (marker.replacedWith) {\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n seeCollapsedSpans();\n }\n if (marker.addToHistory) {\n addChangeToHistory(doc, { from, to, origin: \"markText\" }, doc.sel, NaN);\n }\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function(line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n updateMaxLine = true;\n }\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\n addMarkedSpan(line, new MarkedSpan(\n marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null\n ), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n if (marker.collapsed) {\n doc.iter(from.line, to.line + 1, function(line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function() {\n return marker.clear();\n });\n }\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i2 = from.line; i2 <= to.line; i2++) {\n regLineChange(cm, i2, \"text\");\n }\n }\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker;\n }\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i2 = 0; i2 < markers.length; ++i2) {\n markers[i2].parent = this;\n }\n };\n SharedTextMarker.prototype.clear = function() {\n if (this.explicitlyCleared) {\n return;\n }\n this.explicitlyCleared = true;\n for (var i2 = 0; i2 < this.markers.length; ++i2) {\n this.markers[i2].clear();\n }\n signalLater(this, \"clear\");\n };\n SharedTextMarker.prototype.find = function(side, lineObj) {\n return this.primary.find(side, lineObj);\n };\n eventMixin(SharedTextMarker);\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function(doc2) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\n markers.push(markText(doc2, clipPos(doc2, from), clipPos(doc2, to), options, type));\n for (var i2 = 0; i2 < doc2.linked.length; ++i2) {\n if (doc2.linked[i2].isParent) {\n return;\n }\n }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary);\n }\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function(m) {\n return m.parent;\n });\n }\n function copySharedMarkers(doc, markers) {\n for (var i2 = 0; i2 < markers.length; i2++) {\n var marker = markers[i2], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n function detachSharedMarkers(markers) {\n var loop = function(i3) {\n var marker = markers[i3], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function(d) {\n return linked.push(d);\n });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n for (var i2 = 0; i2 < markers.length; i2++)\n loop(i2);\n }\n var nextDocId = 0;\n var Doc = function(text2, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) {\n return new Doc(text2, mode, firstLine, lineSep, direction);\n }\n if (firstLine == null) {\n firstLine = 0;\n }\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n this.extend = false;\n if (typeof text2 == \"string\") {\n text2 = this.splitLines(text2);\n }\n updateDoc(this, { from: start, to: start, text: text2 });\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n // Non-public interface for adding and removing lines.\n insert: function(at, lines2) {\n var height = 0;\n for (var i2 = 0; i2 < lines2.length; ++i2) {\n height += lines2[i2].height;\n }\n this.insertInner(at - this.first, lines2, height);\n },\n remove: function(at, n) {\n this.removeInner(at - this.first, n);\n },\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n getValue: function(lineSep) {\n var lines2 = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) {\n return lines2;\n }\n return lines2.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function(code2) {\n var top2 = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {\n from: top2,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code2),\n origin: \"setValue\",\n full: true\n }, true);\n if (this.cm) {\n scrollToCoords(this.cm, 0, 0);\n }\n setSelection(this, simpleSelection(top2), sel_dontScroll);\n }),\n replaceRange: function(code2, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code2, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines2 = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) {\n return lines2;\n }\n if (lineSep === \"\") {\n return lines2.join(\"\");\n }\n return lines2.join(lineSep || this.lineSeparator());\n },\n getLine: function(line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function(line) {\n if (isLine(this, line)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function(line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\n return visualLine(line);\n },\n lineCount: function() {\n return this.size;\n },\n firstLine: function() {\n return this.first;\n },\n lastLine: function() {\n return this.first + this.size - 1;\n },\n clipPos: function(pos) {\n return clipPos(this, pos);\n },\n getCursor: function(start) {\n var range2 = this.sel.primary(), pos;\n if (start == null || start == \"head\") {\n pos = range2.head;\n } else if (start == \"anchor\") {\n pos = range2.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range2.to();\n } else {\n pos = range2.from();\n }\n return pos;\n },\n listSelections: function() {\n return this.sel.ranges;\n },\n somethingSelected: function() {\n return this.sel.somethingSelected();\n },\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head2, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head2 || anchor), options);\n }),\n extendSelection: docMethodOp(function(head2, other, options) {\n extendSelection(this, clipPos(this, head2), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map2(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) {\n return;\n }\n var out = [];\n for (var i2 = 0; i2 < ranges.length; i2++) {\n out[i2] = new Range(\n clipPos(this, ranges[i2].anchor),\n clipPos(this, ranges[i2].head || ranges[i2].anchor)\n );\n }\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head2, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head2 || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines2;\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var sel = getBetween(this, ranges[i2].from(), ranges[i2].to());\n lines2 = lines2 ? lines2.concat(sel) : sel;\n }\n if (lineSep === false) {\n return lines2;\n } else {\n return lines2.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var sel = getBetween(this, ranges[i2].from(), ranges[i2].to());\n if (lineSep !== false) {\n sel = sel.join(lineSep || this.lineSeparator());\n }\n parts[i2] = sel;\n }\n return parts;\n },\n replaceSelection: function(code2, collapse, origin) {\n var dup = [];\n for (var i2 = 0; i2 < this.sel.ranges.length; i2++) {\n dup[i2] = code2;\n }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code2, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i2 = 0; i2 < sel.ranges.length; i2++) {\n var range2 = sel.ranges[i2];\n changes[i2] = { from: range2.from(), to: range2.to(), text: this.splitLines(code2[i2]), origin };\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$12 = changes.length - 1; i$12 >= 0; i$12--) {\n makeChange(this, changes[i$12]);\n }\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\n }),\n undo: docMethodOp(function() {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function() {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function() {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function() {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function(val) {\n this.extend = val;\n },\n getExtending: function() {\n return this.extend;\n },\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i2 = 0; i2 < hist.done.length; i2++) {\n if (!hist.done[i2].ranges) {\n ++done;\n }\n }\n for (var i$12 = 0; i$12 < hist.undone.length; i$12++) {\n if (!hist.undone[i$12].ranges) {\n ++undone;\n }\n }\n return { undo: done, redo: undone };\n },\n clearHistory: function() {\n var this$1$1 = this;\n this.history = new History(this.history);\n linkedDocs(this, function(doc) {\n return doc.history = this$1$1.history;\n }, true);\n },\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\n return this.history.generation;\n },\n isClean: function(gen) {\n return this.history.generation == (gen || this.cleanGeneration);\n },\n getHistory: function() {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function(line2) {\n var markers = line2.gutterMarkers || (line2.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) {\n line2.gutterMarkers = null;\n }\n return true;\n });\n }),\n clearGutter: docMethodOp(function(gutterID) {\n var this$1$1 = this;\n this.iter(function(line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1$1, line, \"gutter\", function() {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n return true;\n });\n }\n });\n }),\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n n = line;\n line = getLine(this, line);\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n if (n == null) {\n return null;\n }\n }\n return {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n wrapClass: line.wrapClass,\n widgets: line.widgets\n };\n },\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function(line) {\n var prop2 = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop2]) {\n line[prop2] = cls;\n } else if (classTest(cls).test(line[prop2])) {\n return false;\n } else {\n line[prop2] += \" \" + cls;\n }\n return true;\n });\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function(line) {\n var prop2 = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop2];\n if (!cur) {\n return false;\n } else if (cls == null) {\n line[prop2] = null;\n } else {\n var found = cur.match(classTest(cls));\n if (!found) {\n return false;\n }\n var end = found.index + found[0].length;\n line[prop2] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true;\n });\n }),\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function(widget) {\n widget.clear();\n },\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\");\n },\n setBookmark: function(pos, options) {\n var realOpts = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\");\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) {\n for (var i2 = 0; i2 < spans.length; ++i2) {\n var span = spans[i2];\n if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n return markers;\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from);\n to = clipPos(this, to);\n var found = [], lineNo2 = from.line;\n this.iter(from.line, to.line + 1, function(line) {\n var spans = line.markedSpans;\n if (spans) {\n for (var i2 = 0; i2 < spans.length; i2++) {\n var span = spans[i2];\n if (!(span.to != null && lineNo2 == from.line && from.ch >= span.to || span.from == null && lineNo2 != from.line || span.from != null && lineNo2 == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n found.push(span.marker.parent || span.marker);\n }\n }\n }\n ++lineNo2;\n });\n return found;\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function(line) {\n var sps = line.markedSpans;\n if (sps) {\n for (var i2 = 0; i2 < sps.length; ++i2) {\n if (sps[i2].from != null) {\n markers.push(sps[i2].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function(off2) {\n var ch, lineNo2 = this.first, sepSize = this.lineSeparator().length;\n this.iter(function(line) {\n var sz = line.text.length + sepSize;\n if (sz > off2) {\n ch = off2;\n return true;\n }\n off2 -= sz;\n ++lineNo2;\n });\n return clipPos(this, Pos(lineNo2, ch));\n },\n indexFromPos: function(coords) {\n coords = clipPos(this, coords);\n var index2 = coords.ch;\n if (coords.line < this.first || coords.ch < 0) {\n return 0;\n }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function(line) {\n index2 += line.text.length + sepSize;\n });\n return index2;\n },\n copy: function(copyHistory) {\n var doc = new Doc(\n getLines(this, this.first, this.first + this.size),\n this.modeOption,\n this.first,\n this.lineSep,\n this.direction\n );\n doc.scrollTop = this.scrollTop;\n doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc;\n },\n linkedDoc: function(options) {\n if (!options) {\n options = {};\n }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) {\n copy.history = this.history;\n }\n (this.linked || (this.linked = [])).push({ doc: copy, sharedHist: options.sharedHist });\n copy.linked = [{ doc: this, isParent: true, sharedHist: options.sharedHist }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) {\n other = other.doc;\n }\n if (this.linked) {\n for (var i2 = 0; i2 < this.linked.length; ++i2) {\n var link2 = this.linked[i2];\n if (link2.doc != other) {\n continue;\n }\n this.linked.splice(i2, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break;\n }\n }\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function(doc) {\n return splitIds.push(doc.id);\n }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {\n linkedDocs(this, f);\n },\n getMode: function() {\n return this.mode;\n },\n getEditor: function() {\n return this.cm;\n },\n splitLines: function(str) {\n if (this.lineSep) {\n return str.split(this.lineSep);\n }\n return splitLinesAuto(str);\n },\n lineSeparator: function() {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function(dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n if (dir == this.direction) {\n return;\n }\n this.direction = dir;\n this.iter(function(line) {\n return line.order = null;\n });\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n });\n Doc.prototype.eachLine = Doc.prototype.iter;\n var lastDrop = 0;\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n e_preventDefault(e);\n if (ie) {\n lastDrop = +/* @__PURE__ */ new Date();\n }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) {\n return;\n }\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text2 = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function() {\n if (++read == n) {\n operation(cm, function() {\n pos = clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(\n text2.filter(function(t) {\n return t != null;\n }).join(cm.doc.lineSeparator())\n ),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function(file, i3) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n var reader = new FileReader();\n reader.onerror = function() {\n return markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.onload = function() {\n var content2 = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content2)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n text2[i3] = content2;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i2 = 0; i2 < files.length; i2++) {\n readTextFromFile(files[i2], i2);\n }\n } else {\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n setTimeout(function() {\n return cm.display.input.focus();\n }, 20);\n return;\n }\n try {\n var text$12 = e.dataTransfer.getData(\"Text\");\n if (text$12) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy) {\n selected = cm.listSelections();\n }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) {\n for (var i$12 = 0; i$12 < selected.length; ++i$12) {\n replaceRange(cm.doc, \"\", selected[i$12].anchor, selected[i$12].head, \"drag\");\n }\n }\n cm.replaceSelection(text$12, \"around\", \"paste\");\n cm.display.input.focus();\n }\n } catch (e$1) {\n }\n }\n }\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +/* @__PURE__ */ new Date() - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) {\n return;\n }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i2 = 0; i2 < byClass.length; i2++) {\n var cm = byClass[i2].CodeMirror;\n if (cm) {\n editors.push(cm);\n }\n }\n if (editors.length) {\n editors[0].operation(function() {\n for (var i3 = 0; i3 < editors.length; i3++) {\n f(editors[i3]);\n }\n });\n }\n }\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n var resizeTimer;\n on(window, \"resize\", function() {\n if (resizeTimer == null) {\n resizeTimer = setTimeout(function() {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100);\n }\n });\n on(window, \"blur\", function() {\n return forEachCodeMirror(onBlur);\n });\n }\n function onResize(cm) {\n var d = cm.display;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 224: \"Mod\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\n };\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n }\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n }\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\n var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i2 = 0; i2 < parts.length - 1; i2++) {\n var mod = parts[i2];\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n if (alt) {\n name = \"Alt-\" + name;\n }\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n if (shift) {\n name = \"Shift-\" + name;\n }\n return name;\n }\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\n if (value == \"...\") {\n delete keymap[keyname];\n continue;\n }\n var keys2 = map2(keyname.split(\" \"), normalizeKeyName);\n for (var i2 = 0; i2 < keys2.length; i2++) {\n var val = void 0, name = void 0;\n if (i2 == keys2.length - 1) {\n name = keys2.join(\" \");\n val = value;\n } else {\n name = keys2.slice(0, i2 + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n delete keymap[keyname];\n }\n }\n for (var prop2 in copy) {\n keymap[prop2] = copy[prop2];\n }\n return keymap;\n }\n function lookupKey(key2, map3, handle, context) {\n map3 = getKeyMap(map3);\n var found = map3.call ? map3.call(key2, context) : map3[key2];\n if (found === false) {\n return \"nothing\";\n }\n if (found === \"...\") {\n return \"multi\";\n }\n if (found != null && handle(found)) {\n return \"handled\";\n }\n if (map3.fallthrough) {\n if (Object.prototype.toString.call(map3.fallthrough) != \"[object Array]\") {\n return lookupKey(key2, map3.fallthrough, handle, context);\n }\n for (var i2 = 0; i2 < map3.fallthrough.length; i2++) {\n var result = lookupKey(key2, map3.fallthrough[i2], handle, context);\n if (result) {\n return result;\n }\n }\n }\n }\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n }\n function addModifierNames(name, event, noShift) {\n var base2 = name;\n if (event.altKey && base2 != \"Alt\") {\n name = \"Alt-\" + name;\n }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base2 != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base2 != \"Mod\") {\n name = \"Cmd-\" + name;\n }\n if (!noShift && event.shiftKey && base2 != \"Shift\") {\n name = \"Shift-\" + name;\n }\n return name;\n }\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) {\n return false;\n }\n if (event.keyCode == 3 && event.code) {\n name = event.code;\n }\n return addModifierNames(name, event, noShift);\n }\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n }\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var toKill = compute(ranges[i2]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n kill.push(toKill);\n }\n runInOp(cm, function() {\n for (var i3 = kill.length - 1; i3 >= 0; i3--) {\n replaceRange(cm.doc, \"\", kill[i3].from, kill[i3].to, \"+delete\");\n }\n ensureCursorVisible(cm);\n });\n }\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target;\n }\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n }\n function endOfLine(visually, cm, lineObj, lineNo2, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") {\n dir = -dir;\n }\n var order2 = getOrder(lineObj, cm.doc.direction);\n if (order2) {\n var part = dir < 0 ? lst(order2) : order2[0];\n var moveInStorageOrder = dir < 0 == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function(ch2) {\n return measureCharPrepared(cm, prep, ch2).top == targetTop;\n }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\n return new Pos(lineNo2, ch, sticky);\n }\n }\n return new Pos(lineNo2, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n }\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) {\n return moveLogically(line, start, dir);\n }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n return moveLogically(line, start, dir);\n }\n var mv = function(pos, dir2) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir2);\n };\n var prep;\n var getWrappedLineExtent = function(ch2) {\n if (!cm.options.lineWrapping) {\n return { begin: 0, end: line.text.length };\n }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch2);\n };\n var wrappedLineExtent2 = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = part.level == 1 == dir < 0;\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent2.begin : ch <= part.to && ch <= wrappedLineExtent2.end)) {\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky);\n }\n }\n var searchInVisualLine = function(partPos2, dir2, wrappedLineExtent3) {\n var getRes = function(ch3, moveInStorageOrder3) {\n return moveInStorageOrder3 ? new Pos(start.line, mv(ch3, 1), \"before\") : new Pos(start.line, ch3, \"after\");\n };\n for (; partPos2 >= 0 && partPos2 < bidi.length; partPos2 += dir2) {\n var part2 = bidi[partPos2];\n var moveInStorageOrder2 = dir2 > 0 == (part2.level != 1);\n var ch2 = moveInStorageOrder2 ? wrappedLineExtent3.begin : mv(wrappedLineExtent3.end, -1);\n if (part2.from <= ch2 && ch2 < part2.to) {\n return getRes(ch2, moveInStorageOrder2);\n }\n ch2 = moveInStorageOrder2 ? part2.from : mv(part2.to, -1);\n if (wrappedLineExtent3.begin <= ch2 && ch2 < wrappedLineExtent3.end) {\n return getRes(ch2, moveInStorageOrder2);\n }\n }\n };\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent2);\n if (res) {\n return res;\n }\n var nextCh = dir > 0 ? wrappedLineExtent2.end : mv(wrappedLineExtent2.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) {\n return res;\n }\n }\n return null;\n }\n var commands = {\n selectAll,\n singleSelection: function(cm) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function(cm) {\n return deleteNearSelection(cm, function(range2) {\n if (range2.empty()) {\n var len = getLine(cm.doc, range2.head.line).text.length;\n if (range2.head.ch == len && range2.head.line < cm.lastLine()) {\n return { from: range2.head, to: Pos(range2.head.line + 1, 0) };\n } else {\n return { from: range2.head, to: Pos(range2.head.line, len) };\n }\n } else {\n return { from: range2.from(), to: range2.to() };\n }\n });\n },\n deleteLine: function(cm) {\n return deleteNearSelection(cm, function(range2) {\n return {\n from: Pos(range2.from().line, 0),\n to: clipPos(cm.doc, Pos(range2.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function(cm) {\n return deleteNearSelection(cm, function(range2) {\n return {\n from: Pos(range2.from().line, 0),\n to: range2.from()\n };\n });\n },\n delWrappedLineLeft: function(cm) {\n return deleteNearSelection(cm, function(range2) {\n var top2 = cm.charCoords(range2.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({ left: 0, top: top2 }, \"div\");\n return { from: leftPos, to: range2.from() };\n });\n },\n delWrappedLineRight: function(cm) {\n return deleteNearSelection(cm, function(range2) {\n var top2 = cm.charCoords(range2.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({ left: cm.display.lineDiv.offsetWidth + 100, top: top2 }, \"div\");\n return { from: range2.from(), to: rightPos };\n });\n },\n undo: function(cm) {\n return cm.undo();\n },\n redo: function(cm) {\n return cm.redo();\n },\n undoSelection: function(cm) {\n return cm.undoSelection();\n },\n redoSelection: function(cm) {\n return cm.redoSelection();\n },\n goDocStart: function(cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function(cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function(cm) {\n return cm.extendSelectionsBy(\n function(range2) {\n return lineStart(cm, range2.head.line);\n },\n { origin: \"+move\", bias: 1 }\n );\n },\n goLineStartSmart: function(cm) {\n return cm.extendSelectionsBy(\n function(range2) {\n return lineStartSmart(cm, range2.head);\n },\n { origin: \"+move\", bias: 1 }\n );\n },\n goLineEnd: function(cm) {\n return cm.extendSelectionsBy(\n function(range2) {\n return lineEnd(cm, range2.head.line);\n },\n { origin: \"+move\", bias: -1 }\n );\n },\n goLineRight: function(cm) {\n return cm.extendSelectionsBy(function(range2) {\n var top2 = cm.cursorCoords(range2.head, \"div\").top + 5;\n return cm.coordsChar({ left: cm.display.lineDiv.offsetWidth + 100, top: top2 }, \"div\");\n }, sel_move);\n },\n goLineLeft: function(cm) {\n return cm.extendSelectionsBy(function(range2) {\n var top2 = cm.cursorCoords(range2.head, \"div\").top + 5;\n return cm.coordsChar({ left: 0, top: top2 }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function(cm) {\n return cm.extendSelectionsBy(function(range2) {\n var top2 = cm.cursorCoords(range2.head, \"div\").top + 5;\n var pos = cm.coordsChar({ left: 0, top: top2 }, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n return lineStartSmart(cm, range2.head);\n }\n return pos;\n }, sel_move);\n },\n goLineUp: function(cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function(cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function(cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function(cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function(cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function(cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function(cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function(cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function(cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function(cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function(cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function(cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function(cm) {\n return cm.deleteH(-1, \"codepoint\");\n },\n delCharAfter: function(cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function(cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function(cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function(cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function(cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function(cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function(cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function(cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function(cm) {\n return cm.replaceSelection(\"\t\");\n },\n insertSoftTab: function(cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var pos = ranges[i2].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function(cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function(cm) {\n return runInOp(cm, function() {\n var ranges = cm.listSelections(), newSel = [];\n for (var i2 = 0; i2 < ranges.length; i2++) {\n if (!ranges[i2].empty()) {\n continue;\n }\n var cur = ranges[i2].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(\n line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2),\n cur,\n \"+transpose\"\n );\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(\n line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1),\n cur,\n \"+transpose\"\n );\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n });\n },\n newlineAndIndent: function(cm) {\n return runInOp(cm, function() {\n var sels = cm.listSelections();\n for (var i2 = sels.length - 1; i2 >= 0; i2--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i2].anchor, sels[i2].head, \"+input\");\n }\n sels = cm.listSelections();\n for (var i$12 = 0; i$12 < sels.length; i$12++) {\n cm.indentLine(sels[i$12].from().line, null, true);\n }\n ensureCursorVisible(cm);\n });\n },\n openLine: function(cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function(cm) {\n return cm.toggleOverwrite();\n }\n };\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) {\n lineN = lineNo(visual);\n }\n return endOfLine(true, cm, visual, lineN, 1);\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) {\n lineN = lineNo(visual);\n }\n return endOfLine(true, cm, line, lineN, -1);\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order2 = getOrder(line, cm.doc.direction);\n if (!order2 || order2[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n }\n return start;\n }\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) {\n return false;\n }\n }\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n if (dropShift) {\n cm.display.shift = false;\n }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done;\n }\n function lookupKeyForEditor(cm, name, handle) {\n for (var i2 = 0; i2 < cm.state.keyMaps.length; i2++) {\n var result = lookupKey(name, cm.state.keyMaps[i2], handle, cm);\n if (result) {\n return result;\n }\n }\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n }\n var stopSeq = new Delayed();\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n if (/\\'$/.test(name)) {\n cm.state.keySeq = null;\n } else {\n stopSeq.set(50, function() {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n });\n }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\n }\n return dispatchKeyInner(cm, name, e, handle);\n }\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n if (result == \"multi\") {\n cm.state.keySeq = name;\n }\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n return !!result;\n }\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) {\n return false;\n }\n if (e.shiftKey && !cm.state.keySeq) {\n return dispatchKey(cm, \"Shift-\" + name, e, function(b) {\n return doHandleBinding(cm, b, true);\n }) || dispatchKey(cm, name, e, function(b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n return doHandleBinding(cm, b);\n }\n });\n } else {\n return dispatchKey(cm, name, e, function(b) {\n return doHandleBinding(cm, b);\n });\n }\n }\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function(b) {\n return doHandleBinding(cm, b, true);\n });\n }\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) {\n return;\n }\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n var code2 = e.keyCode;\n cm.display.shift = code2 == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code2 : null;\n if (!handled && code2 == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n }\n if (gecko && !mac && !handled && code2 == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n document.execCommand(\"cut\");\n }\n if (code2 == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\n }\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n function onKeyUp(e) {\n if (e.keyCode == 16) {\n this.doc.sel.shift = false;\n }\n signalDOMEvent(this, e);\n }\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\n if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n return;\n }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n if (ch == \"\\b\") {\n return;\n }\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\n cm.display.input.onKeyPress(e);\n }\n var DOUBLECLICK_DELAY = 400;\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n PastClick.prototype.compare = function(time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n };\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now2 = +/* @__PURE__ */ new Date();\n if (lastDoubleClick && lastDoubleClick.compare(now2, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\";\n } else if (lastClick && lastClick.compare(now2, pos, button)) {\n lastDoubleClick = new PastClick(now2, pos, button);\n lastClick = null;\n return \"double\";\n } else {\n lastClick = new PastClick(now2, pos, button);\n lastDoubleClick = null;\n return \"single\";\n }\n }\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n if (eventInWidget(display, e)) {\n if (!webkit) {\n display.scroller.draggable = false;\n setTimeout(function() {\n return display.scroller.draggable = true;\n }, 100);\n }\n return;\n }\n if (clickInGutter(cm, e)) {\n return;\n }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n setTimeout(function() {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n return dispatchKey(cm, addModifierNames(name, event), event, function(bound) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n }\n if (!bound) {\n return false;\n }\n var done = false;\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done;\n });\n }\n function configureMouse(cm, repeat, event) {\n var option2 = cm.getOption(\"configureMouse\");\n var value = option2 ? option2(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n return value;\n }\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\n }\n }\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function(e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) {\n cm.state.delayingBlurEvent = false;\n } else {\n delayBlurEvent(cm);\n }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew) {\n extendSelection(cm.doc, pos, null, null, behavior.extend);\n }\n if (webkit && !safari || ie && ie_version == 9) {\n setTimeout(function() {\n display.wrapper.ownerDocument.body.focus({ preventScroll: true });\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function() {\n return moved = true;\n };\n if (webkit) {\n display.scroller.draggable = true;\n }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n cm.state.delayingBlurEvent = true;\n setTimeout(function() {\n return display.input.focus();\n }, 20);\n if (display.scroller.dragDrop) {\n display.scroller.dragDrop();\n }\n }\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n }\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) {\n delayBlurEvent(cm);\n }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range2 = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range2.anchor, range2.head, behavior.extend);\n } else {\n ourRange = range2;\n }\n }\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(\n doc,\n normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n { scroll: false, origin: \"*mouse\" }\n );\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(\n doc,\n normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n { scroll: false, origin: \"*mouse\" }\n );\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n lastPos = pos;\n if (behavior.unit == \"rectangle\") {\n var ranges2 = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n var text2 = getLine(doc, line).text, leftPos = findColumn(text2, left, tabSize);\n if (left == right) {\n ranges2.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n } else if (text2.length > leftPos) {\n ranges2.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text2, right, tabSize))));\n }\n }\n if (!ranges2.length) {\n ranges2.push(new Range(start, start));\n }\n setSelection(\n doc,\n normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges2), ourIndex),\n { origin: \"*mouse\", scroll: false }\n );\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range3 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head2;\n if (cmp(range3.anchor, anchor) > 0) {\n head2 = range3.head;\n anchor = minPos(oldRange.from(), range3.anchor);\n } else {\n head2 = range3.anchor;\n anchor = maxPos(oldRange.to(), range3.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head2));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n var editorSize = display.wrapper.getBoundingClientRect();\n var counter = 0;\n function extend3(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) {\n return;\n }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function() {\n if (counter == curCount) {\n extend3(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) {\n setTimeout(operation(cm, function() {\n if (counter != curCount) {\n return;\n }\n display.scroller.scrollTop += outside;\n extend3(e);\n }), 50);\n }\n }\n }\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n var move = operation(cm, function(e) {\n if (e.buttons === 0 || !e_button(e)) {\n done(e);\n } else {\n extend3(e);\n }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n function bidiSimplify(cm, range2) {\n var anchor = range2.anchor;\n var head2 = range2.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head2) == 0 && anchor.sticky == head2.sticky) {\n return range2;\n }\n var order2 = getOrder(anchorLine);\n if (!order2) {\n return range2;\n }\n var index2 = getBidiPartAt(order2, anchor.ch, anchor.sticky), part = order2[index2];\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range2;\n }\n var boundary = index2 + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order2.length) {\n return range2;\n }\n var leftSide;\n if (head2.line != anchor.line) {\n leftSide = (head2.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order2, head2.ch, head2.sticky);\n var dir = headIndex - index2 || (head2.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\n }\n var usePart = order2[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range2 : new Range(new Pos(anchor.line, ch, sticky), head2);\n }\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e$1) {\n return false;\n }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n if (prevent) {\n e_preventDefault(e);\n }\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\n mY -= lineBox.top - display.viewOffset;\n for (var i2 = 0; i2 < cm.display.gutterSpecs.length; ++i2) {\n var g = display.gutters.childNodes[i2];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i2];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e);\n }\n }\n }\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true);\n }\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\n return gutterEvent(cm, e, \"gutterContextMenu\", false);\n }\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n var Init = { toString: function() {\n return \"CodeMirror.Init\";\n } };\n var defaults = {};\n var optionHandlers = {};\n function defineOptions(CodeMirror2) {\n var optionHandlers2 = CodeMirror2.optionHandlers;\n function option2(name, deflt, handle, notOnInit) {\n CodeMirror2.defaults[name] = deflt;\n if (handle) {\n optionHandlers2[name] = notOnInit ? function(cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n CodeMirror2.defineOption = option2;\n CodeMirror2.Init = Init;\n option2(\"value\", \"\", function(cm, val) {\n return cm.setValue(val);\n }, true);\n option2(\"mode\", null, function(cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n option2(\"indentUnit\", 2, loadMode, true);\n option2(\"indentWithTabs\", false);\n option2(\"smartIndent\", true);\n option2(\"tabSize\", 4, function(cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n option2(\"lineSeparator\", null, function(cm, val) {\n cm.doc.lineSep = val;\n if (!val) {\n return;\n }\n var newBreaks = [], lineNo2 = cm.doc.first;\n cm.doc.iter(function(line) {\n for (var pos = 0; ; ) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) {\n break;\n }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo2, found));\n }\n lineNo2++;\n });\n for (var i2 = newBreaks.length - 1; i2 >= 0; i2--) {\n replaceRange(cm.doc, val, newBreaks[i2], Pos(newBreaks[i2].line, newBreaks[i2].ch + val.length));\n }\n });\n option2(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function(cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\t\") ? \"\" : \"|\t\"), \"g\");\n if (old != Init) {\n cm.refresh();\n }\n });\n option2(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function(cm) {\n return cm.refresh();\n }, true);\n option2(\"electricChars\", true);\n option2(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function() {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\");\n }, true);\n option2(\"spellcheck\", false, function(cm, val) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option2(\"autocorrect\", false, function(cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option2(\"autocapitalize\", false, function(cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option2(\"rtlMoveVisually\", !windows);\n option2(\"wholeLineUpdateBefore\", true);\n option2(\"theme\", \"default\", function(cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option2(\"keyMap\", \"default\", function(cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) {\n prev.detach(cm, next);\n }\n if (next.attach) {\n next.attach(cm, prev || null);\n }\n });\n option2(\"extraKeys\", null);\n option2(\"configureMouse\", null);\n option2(\"lineWrapping\", false, wrappingChanged, true);\n option2(\"gutters\", [], function(cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option2(\"fixedGutter\", true, function(cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option2(\"coverGutterNextToScrollbar\", false, function(cm) {\n return updateScrollbars(cm);\n }, true);\n option2(\"scrollbarStyle\", \"native\", function(cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option2(\"lineNumbers\", false, function(cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option2(\"firstLineNumber\", 1, updateGutters, true);\n option2(\"lineNumberFormatter\", function(integer) {\n return integer;\n }, updateGutters, true);\n option2(\"showCursorWhenSelecting\", false, updateSelection, true);\n option2(\"resetSelectionOnContextMenu\", true);\n option2(\"lineWiseCopyCut\", true);\n option2(\"pasteLinesPerSelection\", true);\n option2(\"selectionsMayTouch\", false);\n option2(\"readOnly\", false, function(cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n option2(\"screenReaderLabel\", null, function(cm, val) {\n val = val === \"\" ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n option2(\"disableInput\", false, function(cm, val) {\n if (!val) {\n cm.display.input.reset();\n }\n }, true);\n option2(\"dragDrop\", true, dragDropChanged);\n option2(\"allowDropFileTypes\", null);\n option2(\"cursorBlinkRate\", 530);\n option2(\"cursorScrollMargin\", 0);\n option2(\"cursorHeight\", 1, updateSelection, true);\n option2(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option2(\"workTime\", 100);\n option2(\"workDelay\", 100);\n option2(\"flattenSpans\", true, resetModeState, true);\n option2(\"addModeClass\", false, resetModeState, true);\n option2(\"pollInterval\", 100);\n option2(\"undoDepth\", 200, function(cm, val) {\n return cm.doc.history.undoDepth = val;\n });\n option2(\"historyEventDelay\", 1250);\n option2(\"viewportMargin\", 10, function(cm) {\n return cm.refresh();\n }, true);\n option2(\"maxHighlightLength\", 1e4, resetModeState, true);\n option2(\"moveInputWithCursor\", true, function(cm, val) {\n if (!val) {\n cm.display.input.resetPosition();\n }\n });\n option2(\"tabindex\", null, function(cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option2(\"autofocus\", null);\n option2(\"direction\", \"ltr\", function(cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option2(\"phrases\", null);\n }\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function() {\n return updateScrollbars(cm);\n }, 100);\n }\n function CodeMirror(place, options) {\n var this$1$1 = this;\n if (!(this instanceof CodeMirror)) {\n return new CodeMirror(place, options);\n }\n this.options = options = options ? copyObj(options) : {};\n copyObj(defaults, options, false);\n var doc = options.value;\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\n this.doc = doc;\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n // stores maps added by addKeyMap\n overlays: [],\n // highlighting overlays, as added by addOverlay\n modeGen: 0,\n // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1,\n cutIncoming: -1,\n // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n // stores highlight worker timeout\n keySeq: null,\n // Unfinished key sequence\n specialChars: null\n };\n if (options.autofocus && !mobile) {\n display.input.focus();\n }\n if (ie && ie_version < 11) {\n setTimeout(function() {\n return this$1$1.display.input.reset(true);\n }, 20);\n }\n registerEventHandlers(this);\n ensureGlobalHandlers();\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(function() {\n if (this$1$1.hasFocus() && !this$1$1.state.focused) {\n onFocus(this$1$1);\n }\n }, 20);\n } else {\n onBlur(this);\n }\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this, options[opt], Init);\n }\n }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) {\n options.finishInit(this);\n }\n for (var i2 = 0; i2 < initHooks.length; ++i2) {\n initHooks[i2](this);\n }\n endOperation(this);\n if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n }\n CodeMirror.defaults = defaults;\n CodeMirror.optionHandlers = optionHandlers;\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n }));\n } else {\n on(d.scroller, \"dblclick\", function(e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\n }\n on(d.scroller, \"contextmenu\", function(e) {\n return onContextMenu(cm, e);\n });\n on(d.input.getField(), \"contextmenu\", function(e) {\n if (!d.scroller.contains(e.target)) {\n onContextMenu(cm, e);\n }\n });\n var touchFinished, prevTouch = { end: 0 };\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function() {\n return d.activeTouch = null;\n }, 1e3);\n prevTouch = d.activeTouch;\n prevTouch.end = +/* @__PURE__ */ new Date();\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) {\n return false;\n }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1;\n }\n function farAway(touch, other) {\n if (other.left == null) {\n return true;\n }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\n on(d.scroller, \"touchstart\", function(e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now2 = +/* @__PURE__ */ new Date();\n d.activeTouch = {\n start: now2,\n moved: false,\n prev: now2 - prevTouch.end <= 300 ? prevTouch : null\n };\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function() {\n if (d.activeTouch) {\n d.activeTouch.moved = true;\n }\n });\n on(d.scroller, \"touchend\", function(e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && /* @__PURE__ */ new Date() - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range2;\n if (!touch.prev || farAway(touch, touch.prev)) {\n range2 = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) {\n range2 = cm.findWordAt(pos);\n } else {\n range2 = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n cm.setSelection(range2.anchor, range2.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n on(d.scroller, \"scroll\", function() {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n on(d.scroller, \"mousewheel\", function(e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function(e) {\n return onScrollWheel(cm, e);\n });\n on(d.wrapper, \"scroll\", function() {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function(e) {\n if (!signalDOMEvent(cm, e)) {\n e_stop(e);\n }\n },\n over: function(e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function(e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function(e) {\n if (!signalDOMEvent(cm, e)) {\n clearDragCursor(cm);\n }\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function(e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function(e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function(e) {\n return onBlur(cm, e);\n });\n }\n var initHooks = [];\n CodeMirror.defineInitHook = function(f) {\n return initHooks.push(f);\n };\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) {\n how = \"add\";\n }\n if (how == \"smart\") {\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) {\n return;\n }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs) {\n for (var i2 = Math.floor(indentation / tabSize); i2; --i2) {\n pos += tabSize;\n indentString += \"\t\";\n }\n }\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true;\n } else {\n for (var i$12 = 0; i$12 < doc.sel.ranges.length; i$12++) {\n var range2 = doc.sel.ranges[i$12];\n if (range2.head.line == n && range2.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$12, new Range(pos$1, pos$1));\n break;\n }\n }\n }\n }\n var lastCopied = null;\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) {\n sel = doc.sel;\n }\n var recent = +/* @__PURE__ */ new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i2 = 0; i2 < lastCopied.text.length; i2++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i2]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map2(textLines, function(l) {\n return [l];\n });\n }\n }\n var updateInput = cm.curOp.updateInput;\n for (var i$12 = sel.ranges.length - 1; i$12 >= 0; i$12--) {\n var range2 = sel.ranges[i$12];\n var from = range2.from(), to = range2.to();\n if (range2.empty()) {\n if (deleted && deleted > 0) {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste) {\n to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n from = to = Pos(from.line, 0);\n }\n }\n var changeEvent = {\n from,\n to,\n text: multiPaste ? multiPaste[i$12 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste) {\n triggerElectric(cm, inserted);\n }\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput) {\n runInOp(cm, function() {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n }\n return true;\n }\n }\n function triggerElectric(cm, inserted) {\n if (!cm.options.electricChars || !cm.options.smartIndent) {\n return;\n }\n var sel = cm.doc.sel;\n for (var i2 = sel.ranges.length - 1; i2 >= 0; i2--) {\n var range2 = sel.ranges[i2];\n if (range2.head.ch > 100 || i2 && sel.ranges[i2 - 1].head.line == range2.head.line) {\n continue;\n }\n var mode = cm.getModeAt(range2.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++) {\n if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range2.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range2.head.line).text.slice(0, range2.head.ch))) {\n indented = indentLine(cm, range2.head.line, \"smart\");\n }\n }\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range2.head.line);\n }\n }\n }\n function copyableRanges(cm) {\n var text2 = [], ranges = [];\n for (var i2 = 0; i2 < cm.doc.sel.ranges.length; i2++) {\n var line = cm.doc.sel.ranges[i2].head.line;\n var lineRange = { anchor: Pos(line, 0), head: Pos(line + 1, 0) };\n ranges.push(lineRange);\n text2.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return { text: text2, ranges };\n }\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n }\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n disableBrowserMagic(te);\n return div;\n }\n function addEditorMethods(CodeMirror2) {\n var optionHandlers2 = CodeMirror2.optionHandlers;\n var helpers = CodeMirror2.helpers = {};\n CodeMirror2.prototype = {\n constructor: CodeMirror2,\n focus: function() {\n window.focus();\n this.display.input.focus();\n },\n setOption: function(option2, value) {\n var options = this.options, old = options[option2];\n if (options[option2] == value && option2 != \"mode\") {\n return;\n }\n options[option2] = value;\n if (optionHandlers2.hasOwnProperty(option2)) {\n operation(this, optionHandlers2[option2])(this, value, old);\n }\n signal(this, \"optionChange\", this, option2);\n },\n getOption: function(option2) {\n return this.options[option2];\n },\n getDoc: function() {\n return this.doc;\n },\n addKeyMap: function(map3, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map3));\n },\n removeKeyMap: function(map3) {\n var maps = this.state.keyMaps;\n for (var i2 = 0; i2 < maps.length; ++i2) {\n if (maps[i2] == map3 || maps[i2].name == map3) {\n maps.splice(i2, 1);\n return true;\n }\n }\n },\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror2.getMode(this.options, spec);\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\n insertSorted(\n this.state.overlays,\n {\n mode,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n },\n function(overlay) {\n return overlay.priority;\n }\n );\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i2 = 0; i2 < overlays.length; ++i2) {\n var cur = overlays[i2].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i2, 1);\n this.state.modeGen++;\n regChange(this);\n return;\n }\n }\n }),\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i2 = 0; i2 < ranges.length; i2++) {\n var range2 = ranges[i2];\n if (!range2.empty()) {\n var from = range2.from(), to = range2.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j) {\n indentLine(this, j, how);\n }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i2].from().ch > 0) {\n replaceOneSelection(this.doc, i2, new Range(from, newRanges[i2].to()), sel_dontScroll);\n }\n } else if (range2.head.line > end) {\n indentLine(this, range2.head.line, how, true);\n end = range2.head.line;\n if (i2 == this.doc.sel.primIndex) {\n ensureCursorVisible(this);\n }\n }\n }\n }),\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise);\n },\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true);\n },\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) {\n type = styles[2];\n } else {\n for (; ; ) {\n var mid = before + after >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n },\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) {\n return mode;\n }\n return CodeMirror2.innerMode(mode, this.getTokenAt(pos).state).mode;\n },\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0];\n },\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) {\n return found;\n }\n var help2 = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help2[mode[type]]) {\n found.push(help2[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i2 = 0; i2 < mode[type].length; i2++) {\n var val = help2[mode[type][i2]];\n if (val) {\n found.push(val);\n }\n }\n } else if (mode.helperType && help2[mode.helperType]) {\n found.push(help2[mode.helperType]);\n } else if (help2[mode.name]) {\n found.push(help2[mode.name]);\n }\n for (var i$12 = 0; i$12 < help2._global.length; i$12++) {\n var cur = help2._global[i$12];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\n return found;\n },\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n return getContextBefore(this, line + 1, precise).state;\n },\n cursorCoords: function(start, mode) {\n var pos, range2 = this.doc.sel.primary();\n if (start == null) {\n pos = range2.head;\n } else if (typeof start == \"object\") {\n pos = clipPos(this.doc, start);\n } else {\n pos = start ? range2.from() : range2.to();\n }\n return cursorCoords(this, pos, mode || \"page\");\n },\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, { top: height, left: 0 }, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset);\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, { top: 0, left: 0 }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function() {\n return textHeight(this.display);\n },\n defaultCharWidth: function() {\n return charWidth(this.display);\n },\n getViewport: function() {\n return { from: this.display.viewFrom, to: this.display.viewTo };\n },\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top2 = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top2 = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n if ((vert == \"above\" || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n top2 = pos.top - node.offsetHeight;\n } else if (pos.bottom + node.offsetHeight <= vspace) {\n top2 = pos.bottom;\n }\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\n }\n node.style.top = top2 + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n node.style.left = left + \"px\";\n }\n if (scroll) {\n scrollIntoView(this, { left, top: top2, right: left + node.offsetWidth, bottom: top2 + node.offsetHeight });\n }\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd)) {\n return commands[cmd].call(null, this);\n }\n },\n triggerElectric: methodOp(function(text2) {\n triggerElectric(this, text2);\n }),\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n var cur = clipPos(this.doc, from);\n for (var i2 = 0; i2 < amount; ++i2) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) {\n break;\n }\n }\n return cur;\n },\n moveH: methodOp(function(dir, unit) {\n var this$1$1 = this;\n this.extendSelectionsBy(function(range2) {\n if (this$1$1.display.shift || this$1$1.doc.extend || range2.empty()) {\n return findPosH(this$1$1.doc, range2.head, dir, unit, this$1$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range2.from() : range2.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function(range2) {\n var other = findPosH(doc, range2.head, dir, unit, false);\n return dir < 0 ? { from: other, to: range2.head } : { from: range2.head, to: other };\n });\n }\n }),\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n var cur = clipPos(this.doc, from);\n for (var i2 = 0; i2 < amount; ++i2) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) {\n break;\n }\n }\n return cur;\n },\n moveV: methodOp(function(dir, unit) {\n var this$1$1 = this;\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function(range2) {\n if (collapse) {\n return dir < 0 ? range2.from() : range2.to();\n }\n var headPos = cursorCoords(this$1$1, range2.head, \"div\");\n if (range2.goalColumn != null) {\n headPos.left = range2.goalColumn;\n }\n goals.push(headPos.left);\n var pos = findPosV(this$1$1, headPos, dir, unit);\n if (unit == \"page\" && range2 == doc.sel.primary()) {\n addToScrollTop(this$1$1, charCoords(this$1$1, pos, \"div\").top - headPos.top);\n }\n return pos;\n }, sel_move);\n if (goals.length) {\n for (var i2 = 0; i2 < doc.sel.ranges.length; i2++) {\n doc.sel.ranges[i2].goalColumn = goals[i2];\n }\n }\n }),\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function(ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function(ch) {\n return /\\s/.test(ch);\n } : function(ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\n while (start > 0 && check(line.charAt(start - 1))) {\n --start;\n }\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end));\n },\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) {\n return;\n }\n if (this.state.overwrite = !this.state.overwrite) {\n addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n } else {\n rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n }\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() {\n return this.display.input.getField() == activeElt();\n },\n isReadOnly: function() {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function(x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function(range2, margin) {\n if (range2 == null) {\n range2 = { from: this.doc.sel.primary().head, to: null };\n if (margin == null) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range2 == \"number\") {\n range2 = { from: Pos(range2, 0), to: null };\n } else if (range2.from == null) {\n range2 = { from: range2, to: null };\n }\n if (!range2.to) {\n range2.to = range2.from;\n }\n range2.margin = margin || 0;\n if (range2.from.line != null) {\n scrollToRange(this, range2);\n } else {\n scrollToCoordsRange(this, range2.from, range2.to, range2.margin);\n }\n }),\n setSize: methodOp(function(width, height) {\n var this$1$1 = this;\n var interpret = function(val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n };\n if (width != null) {\n this.display.wrapper.style.width = interpret(width);\n }\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\n var lineNo2 = this.display.viewFrom;\n this.doc.iter(lineNo2, this.display.viewTo, function(line) {\n if (line.widgets) {\n for (var i2 = 0; i2 < line.widgets.length; i2++) {\n if (line.widgets[i2].noHScroll) {\n regLineChange(this$1$1, lineNo2, \"widget\");\n break;\n }\n }\n }\n ++lineNo2;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function(f) {\n return runInOp(this, f);\n },\n startOperation: function() {\n return startOperation(this);\n },\n endOperation: function() {\n return endOperation(this);\n },\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > 0.5 || this.options.lineWrapping) {\n estimateLineHeights(this);\n }\n signal(this, \"refresh\", this);\n }),\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n if (this.state.selectingText) {\n this.state.selectingText();\n }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old;\n }),\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function() {\n return this.display.input.getField();\n },\n getWrapperElement: function() {\n return this.display.wrapper;\n },\n getScrollerElement: function() {\n return this.display.scroller;\n },\n getGutterElement: function() {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror2);\n CodeMirror2.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) {\n helpers[type] = CodeMirror2[type] = { _global: [] };\n }\n helpers[type][name] = value;\n };\n CodeMirror2.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror2.registerHelper(type, name, value);\n helpers[type]._global.push({ pred: predicate, val: value });\n };\n }\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) {\n return false;\n }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 55296 && ch < 56320 : ch >= 56320 && ch < 57343;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n return true;\n }\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true; ; first = false) {\n if (dir < 0 && !moveOnce(!first)) {\n break;\n }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n if (group && !first && !type) {\n type = \"s\";\n }\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n break;\n }\n if (type) {\n sawType = type;\n }\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n return result;\n }\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - 0.5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (; ; ) {\n target = coordsChar(cm, x, y);\n if (!target.outside) {\n break;\n }\n if (dir < 0 ? y <= 0 : y >= doc.height) {\n target.hitSide = true;\n break;\n }\n y += dir * 5;\n }\n return target;\n }\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n ContentEditableInput.prototype.init = function(display) {\n var this$1$1 = this;\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) {\n return true;\n }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n break;\n }\n }\n return false;\n }\n on(div, \"paste\", function(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n if (ie_version <= 11) {\n setTimeout(operation(cm, function() {\n return this$1$1.updateFromDOM();\n }), 20);\n }\n });\n on(div, \"compositionstart\", function(e) {\n this$1$1.composing = { data: e.data, done: false };\n });\n on(div, \"compositionupdate\", function(e) {\n if (!this$1$1.composing) {\n this$1$1.composing = { data: e.data, done: false };\n }\n });\n on(div, \"compositionend\", function(e) {\n if (this$1$1.composing) {\n if (e.data != this$1$1.composing.data) {\n this$1$1.readFromDOMSoon();\n }\n this$1$1.composing.done = true;\n }\n });\n on(div, \"touchstart\", function() {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function() {\n if (!this$1$1.composing) {\n this$1$1.readFromDOMSoon();\n }\n });\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n return;\n }\n if (cm.somethingSelected()) {\n setLastCopied({ lineWise: false, text: cm.getSelections() });\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({ lineWise: true, text: ranges.text });\n if (e.type == \"cut\") {\n cm.operation(function() {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content2 = lastCopied.text.join(\"\\n\");\n e.clipboardData.setData(\"Text\", content2);\n if (e.clipboardData.getData(\"Text\") == content2) {\n e.preventDefault();\n return;\n }\n }\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function() {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n ContentEditableInput.prototype.screenReaderLabelChanged = function(label) {\n if (label) {\n this.div.setAttribute(\"aria-label\", label);\n } else {\n this.div.removeAttribute(\"aria-label\");\n }\n };\n ContentEditableInput.prototype.prepareSelection = function() {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result;\n };\n ContentEditableInput.prototype.showSelection = function(info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\n this.showMultipleSelections(info);\n };\n ContentEditableInput.prototype.getSelection = function() {\n return this.cm.display.wrapper.ownerDocument.getSelection();\n };\n ContentEditableInput.prototype.showPrimarySelection = function() {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return;\n }\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n return;\n }\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || { node: view[0].measure.map[2], offset: 0 };\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map3 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = { node: map3[map3.length - 1], offset: map3[map3.length - 2] - map3[map3.length - 3] };\n }\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try {\n rng = range(start.node, start.offset, end.offset, end.node);\n } catch (e) {\n }\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\n }\n this.rememberSelection();\n };\n ContentEditableInput.prototype.startGracePeriod = function() {\n var this$1$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function() {\n this$1$1.gracePeriod = false;\n if (this$1$1.selectionChanged()) {\n this$1$1.cm.operation(function() {\n return this$1$1.cm.curOp.selectionChanged = true;\n });\n }\n }, 20);\n };\n ContentEditableInput.prototype.showMultipleSelections = function(info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n ContentEditableInput.prototype.rememberSelection = function() {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\n };\n ContentEditableInput.prototype.selectionInEditor = function() {\n var sel = this.getSelection();\n if (!sel.rangeCount) {\n return false;\n }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node);\n };\n ContentEditableInput.prototype.focus = function() {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div) {\n this.showSelection(this.prepareSelection(), true);\n }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function() {\n this.div.blur();\n };\n ContentEditableInput.prototype.getField = function() {\n return this.div;\n };\n ContentEditableInput.prototype.supportsTouch = function() {\n return true;\n };\n ContentEditableInput.prototype.receivedFocus = function() {\n var this$1$1 = this;\n var input = this;\n if (this.selectionInEditor()) {\n setTimeout(function() {\n return this$1$1.pollSelection();\n }, 20);\n } else {\n runInOp(this.cm, function() {\n return input.cm.curOp.selectionChanged = true;\n });\n }\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n ContentEditableInput.prototype.selectionChanged = function() {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n };\n ContentEditableInput.prototype.pollSelection = function() {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n return;\n }\n var sel = this.getSelection(), cm = this.cm;\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({ type: \"keydown\", keyCode: 8, preventDefault: Math.abs });\n this.blur();\n this.focus();\n return;\n }\n if (this.composing) {\n return;\n }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head2 = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head2) {\n runInOp(cm, function() {\n setSelection(cm.doc, simpleSelection(anchor, head2), sel_dontScroll);\n if (anchor.bad || head2.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\n }\n };\n ContentEditableInput.prototype.pollContent = function() {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n if (!fromNode) {\n return false;\n }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else {\n break;\n }\n }\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(\n newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0)\n );\n while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n ++cutEnd;\n }\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true;\n }\n };\n ContentEditableInput.prototype.ensurePolled = function() {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function() {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function() {\n if (!this.composing) {\n return;\n }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function() {\n var this$1$1 = this;\n if (this.readDOMTimeout != null) {\n return;\n }\n this.readDOMTimeout = setTimeout(function() {\n this$1$1.readDOMTimeout = null;\n if (this$1$1.composing) {\n if (this$1$1.composing.done) {\n this$1$1.composing = null;\n } else {\n return;\n }\n }\n this$1$1.updateFromDOM();\n }, 80);\n };\n ContentEditableInput.prototype.updateFromDOM = function() {\n var this$1$1 = this;\n if (this.cm.isReadOnly() || !this.pollContent()) {\n runInOp(this.cm, function() {\n return regChange(this$1$1.cm);\n });\n }\n };\n ContentEditableInput.prototype.setUneditable = function(node) {\n node.contentEditable = \"false\";\n };\n ContentEditableInput.prototype.onKeyPress = function(e) {\n if (e.charCode == 0 || this.composing) {\n return;\n }\n e.preventDefault();\n if (!this.cm.isReadOnly()) {\n operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n }\n };\n ContentEditableInput.prototype.readOnlyChanged = function(val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n ContentEditableInput.prototype.onContextMenu = function() {\n };\n ContentEditableInput.prototype.resetPosition = function() {\n };\n ContentEditableInput.prototype.needsContentAttribute = true;\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) {\n return null;\n }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order2 = getOrder(line, cm.doc.direction), side = \"left\";\n if (order2) {\n var partPos = getBidiPartAt(order2, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result;\n }\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode) {\n if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n return true;\n }\n }\n return false;\n }\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n return pos;\n }\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text2 = \"\", closing2 = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) {\n return function(marker) {\n return marker.id == id;\n };\n }\n function close() {\n if (closing2) {\n text2 += lineSep;\n if (extraLinebreak) {\n text2 += lineSep;\n }\n closing2 = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text2 += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return;\n }\n var markerID = node.getAttribute(\"cm-marker\"), range2;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range2 = found[0].find(0))) {\n addText(getBetween(cm.doc, range2.from, range2.to).join(lineSep));\n }\n return;\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n if (isBlock) {\n close();\n }\n for (var i2 = 0; i2 < node.childNodes.length; i2++) {\n walk(node.childNodes[i2]);\n }\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n if (isBlock) {\n closing2 = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (; ; ) {\n walk(from);\n if (from == to) {\n break;\n }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text2;\n }\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n node = null;\n offset = 0;\n } else {\n for (lineNode = node; ; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n for (var i2 = 0; i2 < cm.display.view.length; i2++) {\n var lineView = cm.display.view[i2];\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad);\n }\n }\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n var measure = lineView.measure, maps = measure.maps;\n function find2(textNode2, topNode2, offset2) {\n for (var i2 = -1; i2 < (maps ? maps.length : 0); i2++) {\n var map3 = i2 < 0 ? measure.map : maps[i2];\n for (var j = 0; j < map3.length; j += 3) {\n var curNode = map3[j + 2];\n if (curNode == textNode2 || curNode == topNode2) {\n var line2 = lineNo(i2 < 0 ? lineView.line : lineView.rest[i2]);\n var ch = map3[j] + offset2;\n if (offset2 < 0 || curNode != textNode2) {\n ch = map3[j + (offset2 ? 1 : 0)];\n }\n return Pos(line2, ch);\n }\n }\n }\n }\n var found = find2(textNode, topNode, offset);\n if (found) {\n return badPos(found, bad);\n }\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find2(after, after.firstChild, 0);\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find2(before, before.firstChild, -1);\n if (found) {\n return badPos(Pos(found.line, found.ch + dist$1), bad);\n } else {\n dist$1 += before.textContent.length;\n }\n }\n }\n var TextareaInput = function(cm) {\n this.cm = cm;\n this.prevInput = \"\";\n this.pollingFast = false;\n this.polling = new Delayed();\n this.hasSelection = false;\n this.composing = null;\n };\n TextareaInput.prototype.init = function(display) {\n var this$1$1 = this;\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n if (ios) {\n te.style.width = \"0px\";\n }\n on(te, \"input\", function() {\n if (ie && ie_version >= 9 && this$1$1.hasSelection) {\n this$1$1.hasSelection = null;\n }\n input.poll();\n });\n on(te, \"paste\", function(e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n cm.state.pasteIncoming = +/* @__PURE__ */ new Date();\n input.fastPoll();\n });\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n if (cm.somethingSelected()) {\n setLastCopied({ lineWise: false, text: cm.getSelections() });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({ lineWise: true, text: ranges.text });\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +/* @__PURE__ */ new Date();\n }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n on(display.scroller, \"paste\", function(e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n return;\n }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +/* @__PURE__ */ new Date();\n input.focus();\n return;\n }\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n on(display.lineSpace, \"selectstart\", function(e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function() {\n var start = cm.getCursor(\"from\");\n if (input.composing) {\n input.composing.range.clear();\n }\n input.composing = {\n start,\n range: cm.markText(start, cm.getCursor(\"to\"), { className: \"CodeMirror-composing\" })\n };\n });\n on(te, \"compositionend\", function() {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n TextareaInput.prototype.createField = function(_display) {\n this.wrapper = hiddenTextarea();\n this.textarea = this.wrapper.firstChild;\n };\n TextareaInput.prototype.screenReaderLabelChanged = function(label) {\n if (label) {\n this.textarea.setAttribute(\"aria-label\", label);\n } else {\n this.textarea.removeAttribute(\"aria-label\");\n }\n };\n TextareaInput.prototype.prepareSelection = function() {\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(\n display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top\n ));\n result.teLeft = Math.max(0, Math.min(\n display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left\n ));\n }\n return result;\n };\n TextareaInput.prototype.showSelection = function(drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n TextareaInput.prototype.reset = function(typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content2 = cm.getSelection();\n this.textarea.value = content2;\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n if (ie && ie_version >= 9) {\n this.hasSelection = content2;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\n };\n TextareaInput.prototype.getField = function() {\n return this.textarea;\n };\n TextareaInput.prototype.supportsTouch = function() {\n return false;\n };\n TextareaInput.prototype.focus = function() {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try {\n this.textarea.focus();\n } catch (e) {\n }\n }\n };\n TextareaInput.prototype.blur = function() {\n this.textarea.blur();\n };\n TextareaInput.prototype.resetPosition = function() {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n TextareaInput.prototype.receivedFocus = function() {\n this.slowPoll();\n };\n TextareaInput.prototype.slowPoll = function() {\n var this$1$1 = this;\n if (this.pollingFast) {\n return;\n }\n this.polling.set(this.cm.options.pollInterval, function() {\n this$1$1.poll();\n if (this$1$1.cm.state.focused) {\n this$1$1.slowPoll();\n }\n });\n };\n TextareaInput.prototype.fastPoll = function() {\n var missed = false, input = this;\n input.pollingFast = true;\n function p2() {\n var changed = input.poll();\n if (!changed && !missed) {\n missed = true;\n input.polling.set(60, p2);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n input.polling.set(20, p2);\n };\n TextareaInput.prototype.poll = function() {\n var this$1$1 = this;\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n var text2 = input.value;\n if (text2 == prevInput && !cm.somethingSelected()) {\n return false;\n }\n if (ie && ie_version >= 9 && this.hasSelection === text2 || mac && /[\\uf700-\\uf7ff]/.test(text2)) {\n cm.display.input.reset();\n return false;\n }\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text2.charCodeAt(0);\n if (first == 8203 && !prevInput) {\n prevInput = \"\";\n }\n if (first == 8666) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\n }\n var same = 0, l = Math.min(prevInput.length, text2.length);\n while (same < l && prevInput.charCodeAt(same) == text2.charCodeAt(same)) {\n ++same;\n }\n runInOp(cm, function() {\n applyTextInput(\n cm,\n text2.slice(same),\n prevInput.length - same,\n null,\n this$1$1.composing ? \"*compose\" : null\n );\n if (text2.length > 1e3 || text2.indexOf(\"\\n\") > -1) {\n input.value = this$1$1.prevInput = \"\";\n } else {\n this$1$1.prevInput = text2;\n }\n if (this$1$1.composing) {\n this$1$1.composing.range.clear();\n this$1$1.composing.range = cm.markText(\n this$1$1.composing.start,\n cm.getCursor(\"to\"),\n { className: \"CodeMirror-composing\" }\n );\n }\n });\n return true;\n };\n TextareaInput.prototype.ensurePolled = function() {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n TextareaInput.prototype.onKeyPress = function() {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n this.fastPoll();\n };\n TextareaInput.prototype.onContextMenu = function(e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) {\n return;\n }\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) {\n oldScrollY = window.scrollY;\n }\n display.input.focus();\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n display.input.reset();\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\" + (selected ? te.value : \"\");\n te.value = \"⇚\";\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\";\n te.selectionStart = 1;\n te.selectionEnd = extval.length;\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) {\n return;\n }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n }\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n var i2 = 0, poll = function() {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\") {\n operation(cm, selectAll)(cm);\n } else if (i2++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function() {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n TextareaInput.prototype.readOnlyChanged = function(val) {\n if (!val) {\n this.reset();\n }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n TextareaInput.prototype.setUneditable = function() {\n };\n TextareaInput.prototype.needsContentAttribute = false;\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex) {\n options.tabindex = textarea.tabIndex;\n }\n if (!options.placeholder && textarea.placeholder) {\n options.placeholder = textarea.placeholder;\n }\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n function save() {\n textarea.value = cm.getValue();\n }\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function() {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch (e) {\n }\n }\n }\n options.finishInit = function(cm2) {\n cm2.save = save;\n cm2.getTextArea = function() {\n return textarea;\n };\n cm2.toTextArea = function() {\n cm2.toTextArea = isNaN;\n save();\n textarea.parentNode.removeChild(cm2.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n textarea.form.submit = realSubmit;\n }\n }\n };\n };\n textarea.style.display = \"none\";\n var cm = CodeMirror(\n function(node) {\n return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n },\n options\n );\n return cm;\n }\n function addLegacyProps(CodeMirror2) {\n CodeMirror2.off = off;\n CodeMirror2.on = on;\n CodeMirror2.wheelEventPixels = wheelEventPixels;\n CodeMirror2.Doc = Doc;\n CodeMirror2.splitLines = splitLinesAuto;\n CodeMirror2.countColumn = countColumn;\n CodeMirror2.findColumn = findColumn;\n CodeMirror2.isWordChar = isWordCharBasic;\n CodeMirror2.Pass = Pass;\n CodeMirror2.signal = signal;\n CodeMirror2.Line = Line;\n CodeMirror2.changeEnd = changeEnd;\n CodeMirror2.scrollbarModel = scrollbarModel;\n CodeMirror2.Pos = Pos;\n CodeMirror2.cmpPos = cmp;\n CodeMirror2.modes = modes;\n CodeMirror2.mimeModes = mimeModes;\n CodeMirror2.resolveMode = resolveMode;\n CodeMirror2.getMode = getMode;\n CodeMirror2.modeExtensions = modeExtensions;\n CodeMirror2.extendMode = extendMode;\n CodeMirror2.copyState = copyState;\n CodeMirror2.startState = startState;\n CodeMirror2.innerMode = innerMode;\n CodeMirror2.commands = commands;\n CodeMirror2.keyMap = keyMap;\n CodeMirror2.keyName = keyName;\n CodeMirror2.isModifierKey = isModifierKey;\n CodeMirror2.lookupKey = lookupKey;\n CodeMirror2.normalizeKeyMap = normalizeKeyMap;\n CodeMirror2.StringStream = StringStream;\n CodeMirror2.SharedTextMarker = SharedTextMarker;\n CodeMirror2.TextMarker = TextMarker;\n CodeMirror2.LineWidget = LineWidget;\n CodeMirror2.e_preventDefault = e_preventDefault;\n CodeMirror2.e_stopPropagation = e_stopPropagation;\n CodeMirror2.e_stop = e_stop;\n CodeMirror2.addClass = addClass;\n CodeMirror2.contains = contains;\n CodeMirror2.rmClass = rmClass;\n CodeMirror2.keyNames = keyNames;\n }\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror);\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror.prototype[prop] = function(method) {\n return function() {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n eventMixin(Doc);\n CodeMirror.inputStyles = { \"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput };\n CodeMirror.defineMode = function(name) {\n if (!CodeMirror.defaults.mode && name != \"null\") {\n CodeMirror.defaults.mode = name;\n }\n defineMode.apply(this, arguments);\n };\n CodeMirror.defineMIME = defineMIME;\n CodeMirror.defineMode(\"null\", function() {\n return { token: function(stream) {\n return stream.skipToEnd();\n } };\n });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n CodeMirror.defineExtension = function(name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function(name, func) {\n Doc.prototype[name] = func;\n };\n CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.65.3\";\n return CodeMirror;\n};\nconst usePlaceholder = function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() {\n onComposition(cm);\n });\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose);\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n if (val && !cm.hasFocus())\n onBlur(cm);\n });\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\");\n if (typeof placeHolder == \"string\")\n placeHolder = document.createTextNode(placeHolder);\n elt.appendChild(placeHolder);\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n function onComposition(cm) {\n setTimeout(function() {\n var empty2 = false;\n if (cm.lineCount() == 1) {\n var input = cm.getInputField();\n empty2 = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent);\n }\n if (empty2)\n setPlaceholder(cm);\n else\n clearPlaceholder(cm);\n }, 20);\n }\n function onBlur(cm) {\n if (isEmpty(cm))\n setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty2 = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty2 ? \" CodeMirror-empty\" : \"\");\n if (empty2)\n setPlaceholder(cm);\n else\n clearPlaceholder(cm);\n }\n function isEmpty(cm) {\n return cm.lineCount() === 1 && cm.getLine(0) === \"\";\n }\n};\nconst useContinuelist = function(CodeMirror) {\n var listRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]\\s|[*+-]\\s|(\\d+)([.)]))(\\s*)/, emptyListRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]|[*+-]|(\\d+)[.)])(\\s*)$/, unorderedListRE = /[*+-]\\s/;\n CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {\n if (cm.getOption(\"disableInput\"))\n return CodeMirror.Pass;\n var ranges = cm.listSelections(), replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head;\n var eolState = cm.getStateAfter(pos.line);\n var inner = CodeMirror.innerMode(cm.getMode(), eolState);\n if (inner.mode.name !== \"markdown\" && inner.mode.helperType !== \"markdown\") {\n cm.execCommand(\"newlineAndIndent\");\n return;\n } else {\n eolState = inner.state;\n }\n var inList = eolState.list !== false;\n var inQuote = eolState.quote !== 0;\n var line = cm.getLine(pos.line), match = listRE.exec(line);\n var cursorBeforeBullet = /^\\s*$/.test(line.slice(0, pos.ch));\n if (!ranges[i].empty() || !inList && !inQuote || !match || cursorBeforeBullet) {\n cm.execCommand(\"newlineAndIndent\");\n return;\n }\n if (emptyListRE.test(line)) {\n var endOfQuote = inQuote && />\\s*$/.test(line);\n var endOfList = !/>\\s*$/.test(line);\n if (endOfQuote || endOfList)\n cm.replaceRange(\"\", {\n line: pos.line,\n ch: 0\n }, {\n line: pos.line,\n ch: pos.ch + 1\n });\n replacements[i] = \"\\n\";\n } else {\n var indent = match[1], after = match[5];\n var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf(\">\") >= 0);\n var bullet = numbered ? parseInt(match[3], 10) + 1 + match[4] : match[2].replace(\"x\", \" \");\n replacements[i] = \"\\n\" + indent + bullet + after;\n if (numbered)\n incrementRemainingMarkdownListNumbers(cm, pos);\n }\n }\n cm.replaceSelections(replacements);\n };\n function incrementRemainingMarkdownListNumbers(cm, pos) {\n var startLine = pos.line, lookAhead = 0, skipCount = 0;\n var startItem = listRE.exec(cm.getLine(startLine)), startIndent = startItem[1];\n do {\n lookAhead += 1;\n var nextLineNumber = startLine + lookAhead;\n var nextLine = cm.getLine(nextLineNumber), nextItem = listRE.exec(nextLine);\n if (nextItem) {\n var nextIndent = nextItem[1];\n var newNumber = parseInt(startItem[3], 10) + lookAhead - skipCount;\n var nextNumber = parseInt(nextItem[3], 10), itemNumber = nextNumber;\n if (startIndent === nextIndent && !isNaN(nextNumber)) {\n if (newNumber === nextNumber)\n itemNumber = nextNumber + 1;\n if (newNumber > nextNumber)\n itemNumber = newNumber + 1;\n cm.replaceRange(\n nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),\n {\n line: nextLineNumber,\n ch: 0\n },\n {\n line: nextLineNumber,\n ch: nextLine.length\n }\n );\n } else {\n if (startIndent.length > nextIndent.length)\n return;\n if (startIndent.length < nextIndent.length && lookAhead === 1)\n return;\n skipCount += 1;\n }\n }\n } while (nextItem);\n }\n};\nconst useOverlay = function(CodeMirror) {\n CodeMirror.overlayMode = function(base2, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base2),\n overlay: CodeMirror.startState(overlay),\n basePos: 0,\n baseCur: null,\n overlayPos: 0,\n overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base2, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos,\n baseCur: null,\n overlayPos: state.overlayPos,\n overlayCur: null\n };\n },\n token: function(stream, state) {\n if (stream != state.streamSeen || Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n if (stream.start == state.basePos) {\n state.baseCur = base2.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n if (state.overlayCur == null)\n return state.baseCur;\n else if (state.baseCur != null && state.overlay.combineTokens || combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else\n return state.overlayCur;\n },\n indent: base2.indent && function(state, textAfter, line) {\n return base2.indent(state.base, textAfter, line);\n },\n electricChars: base2.electricChars,\n innerMode: function(state) {\n return { state: state.base, mode: base2 };\n },\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base2.blankLine)\n baseToken = base2.blankLine(state.base);\n if (overlay.blankLine)\n overlayToken = overlay.blankLine(state.overlay);\n return overlayToken == null ? baseToken : combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken;\n }\n };\n };\n};\nconst useGfm = function(CodeMirror) {\n var urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\\.beep|\\.lwz|\\.xpc|\\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\\.beeps?|xmpp|xri|ymsgr|z39\\.50[rs]?):(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\([^\\s()<>]*\\))+(?:\\([^\\s()<>]*\\)|[^\\s`*!()\\[\\]{};:'\".,<>?«»“”‘’]))/i;\n CodeMirror.defineMode(\"gfm\", function(config, modeConfig) {\n var codeDepth = 0;\n function blankLine2(state) {\n state.code = false;\n return null;\n }\n var gfmOverlay = {\n startState: function() {\n return {\n code: false,\n codeBlock: false,\n ateSpace: false\n };\n },\n copyState: function(s2) {\n return {\n code: s2.code,\n codeBlock: s2.codeBlock,\n ateSpace: s2.ateSpace\n };\n },\n token: function(stream, state) {\n state.combineTokens = null;\n if (state.codeBlock) {\n if (stream.match(/^```+/)) {\n state.codeBlock = false;\n return null;\n }\n stream.skipToEnd();\n return null;\n }\n if (stream.sol()) {\n state.code = false;\n }\n if (stream.sol() && stream.match(/^```+/)) {\n stream.skipToEnd();\n state.codeBlock = true;\n return null;\n }\n if (stream.peek() === \"`\") {\n stream.next();\n var before = stream.pos;\n stream.eatWhile(\"`\");\n var difference = 1 + stream.pos - before;\n if (!state.code) {\n codeDepth = difference;\n state.code = true;\n } else {\n if (difference === codeDepth) {\n state.code = false;\n }\n }\n return null;\n } else if (state.code) {\n stream.next();\n return null;\n }\n if (stream.eatSpace()) {\n state.ateSpace = true;\n return null;\n }\n if (stream.sol() || state.ateSpace) {\n state.ateSpace = false;\n if (modeConfig.gitHubSpice !== false) {\n if (stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+@)?(?=.{0,6}\\d)(?:[a-f0-9]{7,40}\\b)/)) {\n state.combineTokens = true;\n return \"link\";\n } else if (stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+)?#[0-9]+\\b/)) {\n state.combineTokens = true;\n return \"link\";\n }\n }\n }\n if (stream.match(urlRE) && stream.string.slice(stream.start - 2, stream.start) != \"](\" && (stream.start == 0 || /\\W/.test(stream.string.charAt(stream.start - 1)))) {\n state.combineTokens = true;\n return \"link\";\n }\n stream.next();\n return null;\n },\n blankLine: blankLine2\n };\n var markdownConfig = {\n taskLists: true,\n strikethrough: true,\n emoji: true\n };\n for (var attr2 in modeConfig) {\n markdownConfig[attr2] = modeConfig[attr2];\n }\n markdownConfig.name = \"markdown\";\n return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay);\n }, \"markdown\");\n CodeMirror.defineMIME(\"text/x-gfm\", \"gfm\");\n};\nconst useMarkdown = function(CodeMirror) {\n CodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n var htmlModeMissing = htmlMode.name == \"null\";\n function getMode(name) {\n if (CodeMirror.findModeByName) {\n var found = CodeMirror.findModeByName(name);\n if (found)\n name = found.mime || found.mimes[0];\n }\n var mode2 = CodeMirror.getMode(cmCfg, name);\n return mode2.name == \"null\" ? null : mode2;\n }\n if (modeCfg.highlightFormatting === void 0)\n modeCfg.highlightFormatting = false;\n if (modeCfg.maxBlockquoteDepth === void 0)\n modeCfg.maxBlockquoteDepth = 0;\n if (modeCfg.taskLists === void 0)\n modeCfg.taskLists = false;\n if (modeCfg.strikethrough === void 0)\n modeCfg.strikethrough = false;\n if (modeCfg.emoji === void 0)\n modeCfg.emoji = false;\n if (modeCfg.fencedCodeBlockHighlighting === void 0)\n modeCfg.fencedCodeBlockHighlighting = true;\n if (modeCfg.fencedCodeBlockDefaultMode === void 0)\n modeCfg.fencedCodeBlockDefaultMode = \"text/plain\";\n if (modeCfg.xml === void 0)\n modeCfg.xml = true;\n if (modeCfg.tokenTypeOverrides === void 0)\n modeCfg.tokenTypeOverrides = {};\n var tokenTypes = {\n header: \"header\",\n code: \"comment\",\n quote: \"quote\",\n list1: \"variable-2\",\n list2: \"variable-3\",\n list3: \"keyword\",\n hr: \"hr\",\n image: \"image\",\n imageAltText: \"image-alt-text\",\n imageMarker: \"image-marker\",\n formatting: \"formatting\",\n linkInline: \"link\",\n linkEmail: \"link\",\n linkText: \"link\",\n linkHref: \"string\",\n em: \"em\",\n strong: \"strong\",\n strikethrough: \"strikethrough\",\n emoji: \"builtin\"\n };\n for (var tokenType in tokenTypes) {\n if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n }\n }\n var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/, listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/, taskListRE = /^\\[(x| )\\](?=\\s)/i, atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/, setextHeaderRE = /^ {0,3}(?:\\={1,}|-{2,})\\s*$/, textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~:]+/, fencedCodeRE = /^(~~~+|```+)[ \\t]*([\\w\\/+#-]*)[^\\n`]*$/, linkDefRE = /^\\s*\\[[^\\]]+?\\]:.*$/, punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/, expandedTab = \" \";\n function switchInline(stream, state, f) {\n state.f = state.inline = f;\n return f(stream, state);\n }\n function switchBlock(stream, state, f) {\n state.f = state.block = f;\n return f(stream, state);\n }\n function lineIsEmpty(line) {\n return !line || !/\\S/.test(line.string);\n }\n function blankLine2(state) {\n state.linkTitle = false;\n state.linkHref = false;\n state.linkText = false;\n state.em = false;\n state.strong = false;\n state.strikethrough = false;\n state.quote = 0;\n state.indentedCode = false;\n if (state.f == htmlBlock) {\n var exit2 = htmlModeMissing;\n if (!exit2) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState);\n exit2 = inner.mode.name == \"xml\" && inner.state.tagStart === null && (!inner.state.context && inner.state.tokenize.isInText);\n }\n if (exit2) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n state.prevLine = state.thisLine;\n state.thisLine = { stream: null };\n return null;\n }\n function blockNormal(stream, state) {\n var firstTokenOnLine = stream.column() === state.indentation;\n var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);\n var prevLineIsIndentedCode = state.indentedCode;\n var prevLineIsHr = state.prevLine.hr;\n var prevLineIsList = state.list !== false;\n var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3;\n state.indentedCode = false;\n var lineIndentation = state.indentation;\n if (state.indentationDiff === null) {\n state.indentationDiff = state.indentation;\n if (prevLineIsList) {\n state.list = null;\n while (lineIndentation < state.listStack[state.listStack.length - 1]) {\n state.listStack.pop();\n if (state.listStack.length) {\n state.indentation = state.listStack[state.listStack.length - 1];\n } else {\n state.list = false;\n }\n }\n if (state.list !== false) {\n state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1];\n }\n }\n }\n var allowsInlineContinuation = !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header && (!prevLineIsList || !prevLineIsIndentedCode) && !state.prevLine.fencedCodeEnd;\n var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) && state.indentation <= maxNonCodeIndentation && stream.match(hrRE);\n var match = null;\n if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd || state.prevLine.header || prevLineLineIsEmpty)) {\n stream.skipToEnd();\n state.indentedCode = true;\n return tokenTypes.code;\n } else if (stream.eatSpace()) {\n return null;\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n state.quote = 0;\n state.header = match[1].length;\n state.thisLine.header = true;\n if (modeCfg.highlightFormatting)\n state.formatting = \"header\";\n state.f = state.inline;\n return getType(state);\n } else if (state.indentation <= maxNonCodeIndentation && stream.eat(\">\")) {\n state.quote = firstTokenOnLine ? 1 : state.quote + 1;\n if (modeCfg.highlightFormatting)\n state.formatting = \"quote\";\n stream.eatSpace();\n return getType(state);\n } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) {\n var listType = match[1] ? \"ol\" : \"ul\";\n state.indentation = lineIndentation + stream.current().length;\n state.list = true;\n state.quote = 0;\n state.listStack.push(state.indentation);\n state.em = false;\n state.strong = false;\n state.code = false;\n state.strikethrough = false;\n if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n state.taskList = true;\n }\n state.f = state.inline;\n if (modeCfg.highlightFormatting)\n state.formatting = [\"list\", \"list-\" + listType];\n return getType(state);\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) {\n state.quote = 0;\n state.fencedEndRE = new RegExp(match[1] + \"+ *$\");\n state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode);\n if (state.localMode)\n state.localState = CodeMirror.startState(state.localMode);\n state.f = state.block = local;\n if (modeCfg.highlightFormatting)\n state.formatting = \"code-block\";\n state.code = -1;\n return getType(state);\n } else if (\n // if setext set, indicates line after ---/===\n state.setext || // line before ---/===\n (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false && !state.code && !isHr && !linkDefRE.test(stream.string) && (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE))\n ) {\n if (!state.setext) {\n state.header = match[0].charAt(0) == \"=\" ? 1 : 2;\n state.setext = state.header;\n } else {\n state.header = state.setext;\n state.setext = 0;\n stream.skipToEnd();\n if (modeCfg.highlightFormatting)\n state.formatting = \"header\";\n }\n state.thisLine.header = true;\n state.f = state.inline;\n return getType(state);\n } else if (isHr) {\n stream.skipToEnd();\n state.hr = true;\n state.thisLine.hr = true;\n return tokenTypes.hr;\n } else if (stream.peek() === \"[\") {\n return switchInline(stream, state, footnoteLink);\n }\n return switchInline(stream, state, state.inline);\n }\n function htmlBlock(stream, state) {\n var style2 = htmlMode.token(stream, state.htmlState);\n if (!htmlModeMissing) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState);\n if (inner.mode.name == \"xml\" && inner.state.tagStart === null && (!inner.state.context && inner.state.tokenize.isInText) || state.md_inside && stream.current().indexOf(\">\") > -1) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n return style2;\n }\n function local(stream, state) {\n var currListInd = state.listStack[state.listStack.length - 1] || 0;\n var hasExitedList = state.indentation < currListInd;\n var maxFencedEndInd = currListInd + 3;\n if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) {\n if (modeCfg.highlightFormatting)\n state.formatting = \"code-block\";\n var returnType;\n if (!hasExitedList)\n returnType = getType(state);\n state.localMode = state.localState = null;\n state.block = blockNormal;\n state.f = inlineNormal;\n state.fencedEndRE = null;\n state.code = 0;\n state.thisLine.fencedCodeEnd = true;\n if (hasExitedList)\n return switchBlock(stream, state, state.block);\n return returnType;\n } else if (state.localMode) {\n return state.localMode.token(stream, state.localState);\n } else {\n stream.skipToEnd();\n return tokenTypes.code;\n }\n }\n function getType(state) {\n var styles = [];\n if (state.formatting) {\n styles.push(tokenTypes.formatting);\n if (typeof state.formatting === \"string\")\n state.formatting = [state.formatting];\n for (var i = 0; i < state.formatting.length; i++) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n if (state.formatting[i] === \"header\") {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n }\n if (state.formatting[i] === \"quote\") {\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n } else {\n styles.push(\"error\");\n }\n }\n }\n }\n if (state.taskOpen) {\n styles.push(\"meta\");\n return styles.length ? styles.join(\" \") : null;\n }\n if (state.taskClosed) {\n styles.push(\"property\");\n return styles.length ? styles.join(\" \") : null;\n }\n if (state.linkHref) {\n styles.push(tokenTypes.linkHref, \"url\");\n } else {\n if (state.strong) {\n styles.push(tokenTypes.strong);\n }\n if (state.em) {\n styles.push(tokenTypes.em);\n }\n if (state.strikethrough) {\n styles.push(tokenTypes.strikethrough);\n }\n if (state.emoji) {\n styles.push(tokenTypes.emoji);\n }\n if (state.linkText) {\n styles.push(tokenTypes.linkText);\n }\n if (state.code) {\n styles.push(tokenTypes.code);\n }\n if (state.image) {\n styles.push(tokenTypes.image);\n }\n if (state.imageAltText) {\n styles.push(tokenTypes.imageAltText, \"link\");\n }\n if (state.imageMarker) {\n styles.push(tokenTypes.imageMarker);\n }\n }\n if (state.header) {\n styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header);\n }\n if (state.quote) {\n styles.push(tokenTypes.quote);\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.quote + \"-\" + state.quote);\n } else {\n styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n }\n }\n if (state.list !== false) {\n var listMod = (state.listStack.length - 1) % 3;\n if (!listMod) {\n styles.push(tokenTypes.list1);\n } else if (listMod === 1) {\n styles.push(tokenTypes.list2);\n } else {\n styles.push(tokenTypes.list3);\n }\n }\n if (state.trailingSpaceNewLine) {\n styles.push(\"trailing-space-new-line\");\n } else if (state.trailingSpace) {\n styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n }\n return styles.length ? styles.join(\" \") : null;\n }\n function handleText(stream, state) {\n if (stream.match(textRE, true)) {\n return getType(state);\n }\n return void 0;\n }\n function inlineNormal(stream, state) {\n var style2 = state.text(stream, state);\n if (typeof style2 !== \"undefined\")\n return style2;\n if (state.list) {\n state.list = null;\n return getType(state);\n }\n if (state.taskList) {\n var taskOpen = stream.match(taskListRE, true)[1] === \" \";\n if (taskOpen)\n state.taskOpen = true;\n else\n state.taskClosed = true;\n if (modeCfg.highlightFormatting)\n state.formatting = \"task\";\n state.taskList = false;\n return getType(state);\n }\n state.taskOpen = false;\n state.taskClosed = false;\n if (state.header && stream.match(/^#+$/, true)) {\n if (modeCfg.highlightFormatting)\n state.formatting = \"header\";\n return getType(state);\n }\n var ch = stream.next();\n if (state.linkTitle) {\n state.linkTitle = false;\n var matchCh = ch;\n if (ch === \"(\") {\n matchCh = \")\";\n }\n matchCh = (matchCh + \"\").replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n var regex = \"^\\\\s*(?:[^\" + matchCh + \"\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)\" + matchCh;\n if (stream.match(new RegExp(regex), true)) {\n return tokenTypes.linkHref;\n }\n }\n if (ch === \"`\") {\n var previousFormatting = state.formatting;\n if (modeCfg.highlightFormatting)\n state.formatting = \"code\";\n stream.eatWhile(\"`\");\n var count = stream.current().length;\n if (state.code == 0 && (!state.quote || count == 1)) {\n state.code = count;\n return getType(state);\n } else if (count == state.code) {\n var t = getType(state);\n state.code = 0;\n return t;\n } else {\n state.formatting = previousFormatting;\n return getType(state);\n }\n } else if (state.code) {\n return getType(state);\n }\n if (ch === \"\\\\\") {\n stream.next();\n if (modeCfg.highlightFormatting) {\n var type = getType(state);\n var formattingEscape = tokenTypes.formatting + \"-escape\";\n return type ? type + \" \" + formattingEscape : formattingEscape;\n }\n }\n if (ch === \"!\" && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n state.imageMarker = true;\n state.image = true;\n if (modeCfg.highlightFormatting)\n state.formatting = \"image\";\n return getType(state);\n }\n if (ch === \"[\" && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n state.imageMarker = false;\n state.imageAltText = true;\n if (modeCfg.highlightFormatting)\n state.formatting = \"image\";\n return getType(state);\n }\n if (ch === \"]\" && state.imageAltText) {\n if (modeCfg.highlightFormatting)\n state.formatting = \"image\";\n var type = getType(state);\n state.imageAltText = false;\n state.image = false;\n state.inline = state.f = linkHref;\n return type;\n }\n if (ch === \"[\" && !state.image) {\n if (state.linkText && stream.match(/^.*?\\]/))\n return getType(state);\n state.linkText = true;\n if (modeCfg.highlightFormatting)\n state.formatting = \"link\";\n return getType(state);\n }\n if (ch === \"]\" && state.linkText) {\n if (modeCfg.highlightFormatting)\n state.formatting = \"link\";\n var type = getType(state);\n state.linkText = false;\n state.inline = state.f = stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false) ? linkHref : inlineNormal;\n return type;\n }\n if (ch === \"<\" && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting)\n state.formatting = \"link\";\n var type = getType(state);\n if (type) {\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n if (ch === \"<\" && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting)\n state.formatting = \"link\";\n var type = getType(state);\n if (type) {\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkEmail;\n }\n if (modeCfg.xml && ch === \"<\" && stream.match(/^(!--|\\?|!\\[CDATA\\[|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*(?:>|$))/i, false)) {\n var end = stream.string.indexOf(\">\", stream.pos);\n if (end != -1) {\n var atts = stream.string.substring(stream.start, end);\n if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts))\n state.md_inside = true;\n }\n stream.backUp(1);\n state.htmlState = CodeMirror.startState(htmlMode);\n return switchBlock(stream, state, htmlBlock);\n }\n if (modeCfg.xml && ch === \"<\" && stream.match(/^\\/\\w*?>/)) {\n state.md_inside = false;\n return \"tag\";\n } else if (ch === \"*\" || ch === \"_\") {\n var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2);\n while (len < 3 && stream.eat(ch))\n len++;\n var after = stream.peek() || \" \";\n var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before));\n var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after));\n var setEm = null, setStrong = null;\n if (len % 2) {\n if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setEm = true;\n else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setEm = false;\n }\n if (len > 1) {\n if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setStrong = true;\n else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setStrong = false;\n }\n if (setStrong != null || setEm != null) {\n if (modeCfg.highlightFormatting)\n state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\";\n if (setEm === true)\n state.em = ch;\n if (setStrong === true)\n state.strong = ch;\n var t = getType(state);\n if (setEm === false)\n state.em = false;\n if (setStrong === false)\n state.strong = false;\n return t;\n }\n } else if (ch === \" \") {\n if (stream.eat(\"*\") || stream.eat(\"_\")) {\n if (stream.peek() === \" \") {\n return getType(state);\n } else {\n stream.backUp(1);\n }\n }\n }\n if (modeCfg.strikethrough) {\n if (ch === \"~\" && stream.eatWhile(ch)) {\n if (state.strikethrough) {\n if (modeCfg.highlightFormatting)\n state.formatting = \"strikethrough\";\n var t = getType(state);\n state.strikethrough = false;\n return t;\n } else if (stream.match(/^[^\\s]/, false)) {\n state.strikethrough = true;\n if (modeCfg.highlightFormatting)\n state.formatting = \"strikethrough\";\n return getType(state);\n }\n } else if (ch === \" \") {\n if (stream.match(\"~~\", true)) {\n if (stream.peek() === \" \") {\n return getType(state);\n } else {\n stream.backUp(2);\n }\n }\n }\n }\n if (modeCfg.emoji && ch === \":\" && stream.match(/^(?:[a-z_\\d+][a-z_\\d+-]*|\\-[a-z_\\d+][a-z_\\d+-]*):/)) {\n state.emoji = true;\n if (modeCfg.highlightFormatting)\n state.formatting = \"emoji\";\n var retType = getType(state);\n state.emoji = false;\n return retType;\n }\n if (ch === \" \") {\n if (stream.match(/^ +$/, false)) {\n state.trailingSpace++;\n } else if (state.trailingSpace) {\n state.trailingSpaceNewLine = true;\n }\n }\n return getType(state);\n }\n function linkInline(stream, state) {\n var ch = stream.next();\n if (ch === \">\") {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting)\n state.formatting = \"link\";\n var type = getType(state);\n if (type) {\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n stream.match(/^[^>]+/, true);\n return tokenTypes.linkInline;\n }\n function linkHref(stream, state) {\n if (stream.eatSpace()) {\n return null;\n }\n var ch = stream.next();\n if (ch === \"(\" || ch === \"[\") {\n state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n if (modeCfg.highlightFormatting)\n state.formatting = \"link-string\";\n state.linkHref = true;\n return getType(state);\n }\n return \"error\";\n }\n var linkRE = {\n \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/\n };\n function getLinkHrefInside(endChar) {\n return function(stream, state) {\n var ch = stream.next();\n if (ch === endChar) {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting)\n state.formatting = \"link-string\";\n var returnState = getType(state);\n state.linkHref = false;\n return returnState;\n }\n stream.match(linkRE[endChar]);\n state.linkHref = true;\n return getType(state);\n };\n }\n function footnoteLink(stream, state) {\n if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n state.f = footnoteLinkInside;\n stream.next();\n if (modeCfg.highlightFormatting)\n state.formatting = \"link\";\n state.linkText = true;\n return getType(state);\n }\n return switchInline(stream, state, inlineNormal);\n }\n function footnoteLinkInside(stream, state) {\n if (stream.match(\"]:\", true)) {\n state.f = state.inline = footnoteUrl;\n if (modeCfg.highlightFormatting)\n state.formatting = \"link\";\n var returnType = getType(state);\n state.linkText = false;\n return returnType;\n }\n stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n return tokenTypes.linkText;\n }\n function footnoteUrl(stream, state) {\n if (stream.eatSpace()) {\n return null;\n }\n stream.match(/^[^\\s]+/, true);\n if (stream.peek() === void 0) {\n state.linkTitle = true;\n } else {\n stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\.)+\"|'(?:[^'\\\\]|\\\\.)+'|\\((?:[^)\\\\]|\\\\.)+\\)))?/, true);\n }\n state.f = state.inline = inlineNormal;\n return tokenTypes.linkHref + \" url\";\n }\n var mode = {\n startState: function() {\n return {\n f: blockNormal,\n prevLine: { stream: null },\n thisLine: { stream: null },\n block: blockNormal,\n htmlState: null,\n indentation: 0,\n inline: inlineNormal,\n text: handleText,\n formatting: false,\n linkText: false,\n linkHref: false,\n linkTitle: false,\n code: 0,\n em: false,\n strong: false,\n header: 0,\n setext: 0,\n hr: false,\n taskList: false,\n list: false,\n listStack: [],\n quote: 0,\n trailingSpace: 0,\n trailingSpaceNewLine: false,\n strikethrough: false,\n emoji: false,\n fencedEndRE: null\n };\n },\n copyState: function(s2) {\n return {\n f: s2.f,\n prevLine: s2.prevLine,\n thisLine: s2.thisLine,\n block: s2.block,\n htmlState: s2.htmlState && CodeMirror.copyState(htmlMode, s2.htmlState),\n indentation: s2.indentation,\n localMode: s2.localMode,\n localState: s2.localMode ? CodeMirror.copyState(s2.localMode, s2.localState) : null,\n inline: s2.inline,\n text: s2.text,\n formatting: false,\n linkText: s2.linkText,\n linkTitle: s2.linkTitle,\n linkHref: s2.linkHref,\n code: s2.code,\n em: s2.em,\n strong: s2.strong,\n strikethrough: s2.strikethrough,\n emoji: s2.emoji,\n header: s2.header,\n setext: s2.setext,\n hr: s2.hr,\n taskList: s2.taskList,\n list: s2.list,\n listStack: s2.listStack.slice(0),\n quote: s2.quote,\n indentedCode: s2.indentedCode,\n trailingSpace: s2.trailingSpace,\n trailingSpaceNewLine: s2.trailingSpaceNewLine,\n md_inside: s2.md_inside,\n fencedEndRE: s2.fencedEndRE\n };\n },\n token: function(stream, state) {\n state.formatting = false;\n if (stream != state.thisLine.stream) {\n state.header = 0;\n state.hr = false;\n if (stream.match(/^\\s*$/, true)) {\n blankLine2(state);\n return null;\n }\n state.prevLine = state.thisLine;\n state.thisLine = { stream };\n state.taskList = false;\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n if (!state.localState) {\n state.f = state.block;\n if (state.f != htmlBlock) {\n var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, expandedTab).length;\n state.indentation = indentation;\n state.indentationDiff = null;\n if (indentation > 0)\n return null;\n }\n }\n }\n return state.f(stream, state);\n },\n innerMode: function(state) {\n if (state.block == htmlBlock)\n return { state: state.htmlState, mode: htmlMode };\n if (state.localState)\n return { state: state.localState, mode: state.localMode };\n return { state, mode };\n },\n indent: function(state, textAfter, line) {\n if (state.block == htmlBlock && htmlMode.indent)\n return htmlMode.indent(state.htmlState, textAfter, line);\n if (state.localState && state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n return CodeMirror.Pass;\n },\n blankLine: blankLine2,\n getType,\n blockCommentStart: \"\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n fold: \"markdown\"\n };\n return mode;\n }, \"xml\");\n CodeMirror.defineMIME(\"text/markdown\", \"markdown\");\n CodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n};\nconst useXml = function(CodeMirror) {\n var htmlConfig = {\n autoSelfClosers: {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"command\": true,\n \"embed\": true,\n \"frame\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"keygen\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true,\n \"menuitem\": true\n },\n implicitlyClosed: {\n \"dd\": true,\n \"li\": true,\n \"optgroup\": true,\n \"option\": true,\n \"p\": true,\n \"rp\": true,\n \"rt\": true,\n \"tbody\": true,\n \"td\": true,\n \"tfoot\": true,\n \"th\": true,\n \"tr\": true\n },\n contextGrabbers: {\n \"dd\": { \"dd\": true, \"dt\": true },\n \"dt\": { \"dd\": true, \"dt\": true },\n \"li\": { \"li\": true },\n \"option\": { \"option\": true, \"optgroup\": true },\n \"optgroup\": { \"optgroup\": true },\n \"p\": {\n \"address\": true,\n \"article\": true,\n \"aside\": true,\n \"blockquote\": true,\n \"dir\": true,\n \"div\": true,\n \"dl\": true,\n \"fieldset\": true,\n \"footer\": true,\n \"form\": true,\n \"h1\": true,\n \"h2\": true,\n \"h3\": true,\n \"h4\": true,\n \"h5\": true,\n \"h6\": true,\n \"header\": true,\n \"hgroup\": true,\n \"hr\": true,\n \"menu\": true,\n \"nav\": true,\n \"ol\": true,\n \"p\": true,\n \"pre\": true,\n \"section\": true,\n \"table\": true,\n \"ul\": true\n },\n \"rp\": { \"rp\": true, \"rt\": true },\n \"rt\": { \"rp\": true, \"rt\": true },\n \"tbody\": { \"tbody\": true, \"tfoot\": true },\n \"td\": { \"td\": true, \"th\": true },\n \"tfoot\": { \"tbody\": true },\n \"th\": { \"td\": true, \"th\": true },\n \"thead\": { \"tbody\": true, \"tfoot\": true },\n \"tr\": { \"tr\": true }\n },\n doNotIndent: { \"pre\": true },\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n };\n var xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n };\n CodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit;\n var config = {};\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig;\n for (var prop in defaults)\n config[prop] = defaults[prop];\n for (var prop in config_)\n config[prop] = config_[prop];\n var type, setStyle;\n function inText(stream, state) {\n function chain(parser2) {\n state.tokenize = parser2;\n return parser2(stream, state);\n }\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\"))\n return chain(inBlock(\"atom\", \"]]>\"));\n else\n return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype2(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok2;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok2 = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok2 = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok2 = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok2 ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || ch == \"/\" && stream.eat(\">\")) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n function inAttribute(quote2) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote2) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n function inBlock(style2, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style2;\n };\n }\n function doctype2(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype2(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype2(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || state.context && state.context.noIndent)\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context)\n state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) || !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n function baseState(type2, stream, state) {\n if (type2 == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type2 == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type2, stream, state) {\n if (type2 == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type2 == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type2, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type2, stream, state) {\n if (type2 == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName && config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if (state.context && state.context.tagName == tagName || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type2 == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type2, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n function closeState(type2, _stream, state) {\n if (type2 != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type2, stream, state) {\n setStyle = \"error\";\n return closeState(type2, stream, state);\n }\n function attrState(type2, _stream, state) {\n if (type2 == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type2 == \"endTag\" || type2 == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type2 == \"selfcloseTag\" || config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type2, stream, state) {\n if (type2 == \"equals\")\n return attrValueState;\n if (!config.allowMissing)\n setStyle = \"error\";\n return attrState(type2, stream, state);\n }\n function attrValueState(type2, stream, state) {\n if (type2 == \"string\")\n return attrContinuedState;\n if (type2 == \"word\" && config.allowUnquoted) {\n setStyle = \"string\";\n return attrState;\n }\n setStyle = \"error\";\n return attrState(type2, stream, state);\n }\n function attrContinuedState(type2, stream, state) {\n if (type2 == \"string\")\n return attrContinuedState;\n return attrState(type2, stream, state);\n }\n return {\n startState: function(baseIndent) {\n var state = {\n tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null,\n tagStart: null,\n context: null\n };\n if (baseIndent != null)\n state.baseIndent = baseIndent;\n return state;\n },\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n if (stream.eatSpace())\n return null;\n type = null;\n var style2 = state.tokenize(stream, state);\n if ((style2 || type) && style2 != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style2, stream, state);\n if (setStyle)\n style2 = setStyle == \"error\" ? style2 + \" error\" : setStyle;\n }\n return style2;\n },\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent)\n return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState;\n },\n xmlCurrentTag: function(state) {\n return state.tagName ? { name: state.tagName, close: state.type == \"closeTag\" } : null;\n },\n xmlCurrentContext: function(state) {\n var context = [];\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName);\n return context.reverse();\n }\n };\n });\n CodeMirror.defineMIME(\"text/xml\", \"xml\");\n CodeMirror.defineMIME(\"application/xml\", \"xml\");\n if (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", { name: \"xml\", htmlMode: true });\n};\nconst useYamlFrontmatter = function(CodeMirror) {\n var START = 0, FRONTMATTER = 1, BODY = 2;\n CodeMirror.defineMode(\"yaml-frontmatter\", function(config, parserConfig) {\n var yamlMode = CodeMirror.getMode(config, \"yaml\");\n var innerMode = CodeMirror.getMode(config, parserConfig && parserConfig.base || \"gfm\");\n function localMode(state) {\n return state.state == FRONTMATTER ? { mode: yamlMode, state: state.yaml } : { mode: innerMode, state: state.inner };\n }\n return {\n startState: function() {\n return {\n state: START,\n yaml: null,\n inner: CodeMirror.startState(innerMode)\n };\n },\n copyState: function(state) {\n return {\n state: state.state,\n yaml: state.yaml && CodeMirror.copyState(yamlMode, state.yaml),\n inner: CodeMirror.copyState(innerMode, state.inner)\n };\n },\n token: function(stream, state) {\n if (state.state == START) {\n if (stream.match(\"---\", false)) {\n state.state = FRONTMATTER;\n state.yaml = CodeMirror.startState(yamlMode);\n return yamlMode.token(stream, state.yaml);\n } else {\n state.state = BODY;\n return innerMode.token(stream, state.inner);\n }\n } else if (state.state == FRONTMATTER) {\n var end = stream.sol() && stream.match(/(---|\\.\\.\\.)/, false);\n var style2 = yamlMode.token(stream, state.yaml);\n if (end) {\n state.state = BODY;\n state.yaml = null;\n }\n return style2;\n } else {\n return innerMode.token(stream, state.inner);\n }\n },\n innerMode: localMode,\n indent: function(state, a, b) {\n var m = localMode(state);\n return m.mode.indent ? m.mode.indent(m.state, a, b) : CodeMirror.Pass;\n },\n blankLine: function(state) {\n var m = localMode(state);\n if (m.mode.blankLine)\n return m.mode.blankLine(m.state);\n }\n };\n });\n};\nconst useYaml = function(CodeMirror) {\n CodeMirror.defineMode(\"yaml\", function() {\n var cons = [\"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n var keywordRegex = new RegExp(\"\\\\b((\" + cons.join(\")|(\") + \"))$\", \"i\");\n return {\n token: function(stream, state) {\n var ch = stream.peek();\n var esc = state.escaped;\n state.escaped = false;\n if (ch == \"#\" && (stream.pos == 0 || /\\s/.test(stream.string.charAt(stream.pos - 1)))) {\n stream.skipToEnd();\n return \"comment\";\n }\n if (stream.match(/^('([^']|\\\\.)*'?|\"([^\"]|\\\\.)*\"?)/))\n return \"string\";\n if (state.literal && stream.indentation() > state.keyCol) {\n stream.skipToEnd();\n return \"string\";\n } else if (state.literal) {\n state.literal = false;\n }\n if (stream.sol()) {\n state.keyCol = 0;\n state.pair = false;\n state.pairStart = false;\n if (stream.match(\"---\")) {\n return \"def\";\n }\n if (stream.match(\"...\")) {\n return \"def\";\n }\n if (stream.match(/\\s*-\\s+/)) {\n return \"meta\";\n }\n }\n if (stream.match(/^(\\{|\\}|\\[|\\])/)) {\n if (ch == \"{\")\n state.inlinePairs++;\n else if (ch == \"}\")\n state.inlinePairs--;\n else if (ch == \"[\")\n state.inlineList++;\n else\n state.inlineList--;\n return \"meta\";\n }\n if (state.inlineList > 0 && !esc && ch == \",\") {\n stream.next();\n return \"meta\";\n }\n if (state.inlinePairs > 0 && !esc && ch == \",\") {\n state.keyCol = 0;\n state.pair = false;\n state.pairStart = false;\n stream.next();\n return \"meta\";\n }\n if (state.pairStart) {\n if (stream.match(/^\\s*(\\||\\>)\\s*/)) {\n state.literal = true;\n return \"meta\";\n }\n if (stream.match(/^\\s*(\\&|\\*)[a-z0-9\\._-]+\\b/i)) {\n return \"variable-2\";\n }\n if (state.inlinePairs == 0 && stream.match(/^\\s*-?[0-9\\.\\,]+\\s?$/)) {\n return \"number\";\n }\n if (state.inlinePairs > 0 && stream.match(/^\\s*-?[0-9\\.\\,]+\\s?(?=(,|}))/)) {\n return \"number\";\n }\n if (stream.match(keywordRegex)) {\n return \"keyword\";\n }\n }\n if (!state.pair && stream.match(/^\\s*(?:[,\\[\\]{}&*!|>'\"%@`][^\\s'\":]|[^,\\[\\]{}#&*!|>'\"%@`])[^#]*?(?=\\s*:($|\\s))/)) {\n state.pair = true;\n state.keyCol = stream.indentation();\n return \"atom\";\n }\n if (state.pair && stream.match(/^:\\s*/)) {\n state.pairStart = true;\n return \"meta\";\n }\n state.pairStart = false;\n state.escaped = ch == \"\\\\\";\n stream.next();\n return null;\n },\n startState: function() {\n return {\n pair: false,\n pairStart: false,\n keyCol: 0,\n inlinePairs: 0,\n inlineList: 0,\n literal: false,\n escaped: false\n };\n },\n lineComment: \"#\",\n fold: \"indent\"\n };\n });\n CodeMirror.defineMIME(\"text/x-yaml\", \"yaml\");\n CodeMirror.defineMIME(\"text/yaml\", \"yaml\");\n};\nfunction createCodeMirror() {\n const codemirror = factory$1();\n usePlaceholder(codemirror);\n useOverlay(codemirror);\n useXml(codemirror);\n useMarkdown(codemirror);\n useGfm(codemirror);\n useYaml(codemirror);\n useYamlFrontmatter(codemirror);\n useContinuelist(codemirror);\n return codemirror;\n}\nfunction createEditorUtils(codemirror, editor) {\n return {\n /**\n * Wrap text with decorators, for example:\n *\n * `text -> *text*`\n */\n wrapText(before, after = before) {\n const range = editor.somethingSelected() ? editor.listSelections()[0] : editor.findWordAt(editor.getCursor());\n const from = range.from();\n const to = range.to();\n const text2 = editor.getRange(from, to);\n const fromBefore = codemirror.Pos(from.line, from.ch - before.length);\n const toAfter = codemirror.Pos(to.line, to.ch + after.length);\n if (editor.getRange(fromBefore, from) === before && editor.getRange(to, toAfter) === after) {\n editor.replaceRange(text2, fromBefore, toAfter);\n editor.setSelection(\n fromBefore,\n codemirror.Pos(fromBefore.line, fromBefore.ch + text2.length)\n );\n } else {\n editor.replaceRange(before + text2 + after, from, to);\n const cursor = editor.getCursor();\n editor.setSelection(\n codemirror.Pos(cursor.line, cursor.ch - after.length - text2.length),\n codemirror.Pos(cursor.line, cursor.ch - after.length)\n );\n }\n },\n /**\n * replace multiple lines\n *\n * `line -> # line`\n */\n replaceLines(replace) {\n const [selection] = editor.listSelections();\n const range = [\n codemirror.Pos(selection.from().line, 0),\n codemirror.Pos(selection.to().line)\n ];\n const lines2 = editor.getRange(...range).split(\"\\n\");\n editor.replaceRange(lines2.map(replace).join(\"\\n\"), ...range);\n editor.setSelection(...range);\n },\n /**\n * Append a block based on the cursor position\n */\n appendBlock(content2) {\n const cursor = editor.getCursor();\n let emptyLine = -1;\n for (let i = cursor.line; i < editor.lineCount(); i++) {\n if (!editor.getLine(i).trim()) {\n emptyLine = i;\n break;\n }\n }\n if (emptyLine === -1) {\n editor.replaceRange(\"\\n\", codemirror.Pos(editor.lineCount()));\n emptyLine = editor.lineCount();\n }\n editor.replaceRange(\"\\n\" + content2, codemirror.Pos(emptyLine));\n return codemirror.Pos(emptyLine + 1, 0);\n },\n /**\n * Triggers a virtual file input and let user select files\n *\n * https://www.npmjs.com/package/select-files\n */\n selectFiles\n };\n}\nfunction findStartIndex(num, nums) {\n let startIndex = nums.length - 2;\n for (let i = 0; i < nums.length; i++) {\n if (num < nums[i]) {\n startIndex = i - 1;\n break;\n }\n }\n startIndex = Math.max(startIndex, 0);\n return startIndex;\n}\nconst getShortcutWithPrefix = (key2, shift = false) => {\n const shiftPrefix = shift ? \"Shift-\" : \"\";\n const CmdPrefix = typeof navigator !== \"undefined\" && /Mac/.test(navigator.platform) ? \"Cmd-\" : \"Ctrl-\";\n return shiftPrefix + CmdPrefix + key2;\n};\nasync function handleImageUpload({ editor, appendBlock, codemirror }, uploadImages, files) {\n const imgs = await uploadImages(files);\n const pos = appendBlock(\n imgs.map(({ url, alt, title }, i) => {\n alt = alt != null ? alt : files[i].name;\n return ``;\n }).join(\"\\n\\n\")\n );\n editor.setSelection(pos, codemirror.Pos(pos.line + imgs.length * 2 - 2));\n editor.focus();\n}\nfunction getBuiltinActions(locale, plugins, uploadImages) {\n const leftActions = [\n {\n icon: icons.H,\n handler: {\n type: \"dropdown\",\n actions: [1, 2, 3, 4, 5, 6].map((level) => ({\n title: locale[`h${level}`],\n icon: [\n icons.H1,\n icons.H2,\n icons.H3,\n icons.LevelFourTitle,\n icons.LevelFiveTitle,\n icons.LevelSixTitle\n ][level - 1],\n cheatsheet: level <= 3 ? `${\"#\".repeat(level)} ${locale.headingText}` : void 0,\n handler: {\n type: \"action\",\n click({ replaceLines, editor }) {\n replaceLines((line) => {\n line = line.trim().replace(/^#*/, \"\").trim();\n line = \"#\".repeat(level) + \" \" + line;\n return line;\n });\n editor.focus();\n }\n }\n }))\n }\n },\n {\n title: locale.bold,\n icon: icons.TextBold,\n cheatsheet: `**${locale.boldText}**`,\n handler: {\n type: \"action\",\n shortcut: getShortcutWithPrefix(\"B\"),\n click({ wrapText, editor }) {\n wrapText(\"**\");\n editor.focus();\n }\n }\n },\n {\n title: locale.italic,\n icon: icons.TextItalic,\n cheatsheet: `*${locale.italicText}*`,\n handler: {\n type: \"action\",\n shortcut: getShortcutWithPrefix(\"I\"),\n click({ wrapText, editor }) {\n wrapText(\"*\");\n editor.focus();\n }\n }\n },\n {\n title: locale.quote,\n icon: icons.Quote,\n cheatsheet: `> ${locale.quotedText}`,\n handler: {\n type: \"action\",\n click({ replaceLines, editor }) {\n replaceLines((line) => \"> \" + line);\n editor.focus();\n }\n }\n },\n {\n title: locale.link,\n icon: icons.LinkOne,\n cheatsheet: `[${locale.linkText}](url)`,\n handler: {\n type: \"action\",\n shortcut: getShortcutWithPrefix(\"K\"),\n click({ editor, wrapText, codemirror }) {\n wrapText(\"[\", \"](url)\");\n const cursor = editor.getCursor();\n editor.setSelection(\n codemirror.Pos(cursor.line, cursor.ch + 2),\n codemirror.Pos(cursor.line, cursor.ch + 5)\n );\n editor.focus();\n }\n }\n },\n {\n title: locale.image,\n icon: icons.Pic,\n cheatsheet: ``,\n handler: uploadImages ? {\n type: \"action\",\n shortcut: getShortcutWithPrefix(\"I\", true),\n async click(ctx) {\n const fileList = await selectFiles({\n accept: \"image/*\",\n multiple: true\n });\n if (fileList == null ? void 0 : fileList.length) {\n await handleImageUpload(ctx, uploadImages, Array.from(fileList));\n }\n }\n } : void 0\n },\n {\n title: locale.code,\n icon: icons.Code,\n cheatsheet: \"`\" + locale.codeText + \"`\",\n handler: {\n type: \"action\",\n shortcut: getShortcutWithPrefix(\"K\", true),\n click({ wrapText, editor }) {\n wrapText(\"`\");\n editor.focus();\n }\n }\n },\n {\n title: locale.codeBlock,\n icon: icons.CodeBrackets,\n cheatsheet: \"```\" + locale.codeLang + \"↵\",\n handler: {\n type: \"action\",\n shortcut: getShortcutWithPrefix(\"C\", true),\n click({ editor, appendBlock, codemirror }) {\n const pos = appendBlock(\"```js\\n```\");\n editor.setSelection(\n codemirror.Pos(pos.line, 3),\n codemirror.Pos(pos.line, 5)\n );\n editor.focus();\n }\n }\n },\n {\n title: locale.ul,\n icon: icons.ListTwo,\n cheatsheet: `- ${locale.ulItem}`,\n handler: {\n type: \"action\",\n shortcut: getShortcutWithPrefix(\"U\", true),\n click({ replaceLines, editor }) {\n replaceLines((line) => \"- \" + line);\n editor.focus();\n }\n }\n },\n {\n title: locale.ol,\n icon: icons.OrderedList,\n cheatsheet: `1. ${locale.olItem}`,\n handler: {\n type: \"action\",\n shortcut: getShortcutWithPrefix(\"O\", true),\n click({ replaceLines, editor }) {\n replaceLines((line, i) => `${i + 1}. ${line}`);\n editor.focus();\n }\n }\n },\n {\n title: locale.hr,\n icon: icons.DividingLine,\n cheatsheet: \"---\"\n }\n ];\n const rightActions = [];\n plugins.forEach(({ actions }) => {\n if (actions) {\n actions.forEach((action) => {\n if (!action.position || action.position !== \"right\")\n leftActions.push(action);\n else\n rightActions.unshift(action);\n });\n }\n });\n return {\n leftActions,\n rightActions\n };\n}\nfunction get_each_context$2(ctx, list2, i) {\n const child_ctx = ctx.slice();\n child_ctx[5] = list2[i];\n return child_ctx;\n}\nfunction get_each_context_1$1(ctx, list2, i) {\n const child_ctx = ctx.slice();\n child_ctx[5] = list2[i];\n return child_ctx;\n}\nfunction create_if_block_1$2(ctx) {\n let li2;\n let div0;\n let raw_value = (\n /*action*/\n ctx[5].icon + \"\"\n );\n let div1;\n let t0_value = (\n /*action*/\n ctx[5].title + \"\"\n );\n let t0;\n let div2;\n let code2;\n let t1_value = (\n /*action*/\n ctx[5].cheatsheet + \"\"\n );\n let t1;\n return {\n c() {\n li2 = element$5(\"li\");\n div0 = element$5(\"div\");\n div1 = element$5(\"div\");\n t0 = text$7(t0_value);\n div2 = element$5(\"div\");\n code2 = element$5(\"code\");\n t1 = text$7(t1_value);\n attr(div0, \"class\", \"bytemd-help-icon\");\n attr(div1, \"class\", \"bytemd-help-title\");\n attr(div2, \"class\", \"bytemd-help-content\");\n },\n m(target, anchor) {\n insert(target, li2, anchor);\n append(li2, div0);\n div0.innerHTML = raw_value;\n append(li2, div1);\n append(div1, t0);\n append(li2, div2);\n append(div2, code2);\n append(code2, t1);\n },\n p(ctx2, dirty) {\n if (dirty & /*items*/\n 4 && raw_value !== (raw_value = /*action*/\n ctx2[5].icon + \"\"))\n div0.innerHTML = raw_value;\n if (dirty & /*items*/\n 4 && t0_value !== (t0_value = /*action*/\n ctx2[5].title + \"\"))\n set_data(t0, t0_value);\n if (dirty & /*items*/\n 4 && t1_value !== (t1_value = /*action*/\n ctx2[5].cheatsheet + \"\"))\n set_data(t1, t1_value);\n },\n d(detaching) {\n if (detaching)\n detach(li2);\n }\n };\n}\nfunction create_each_block_1$1(ctx) {\n let if_block_anchor;\n let if_block = (\n /*action*/\n ctx[5].cheatsheet && create_if_block_1$2(ctx)\n );\n return {\n c() {\n if (if_block)\n if_block.c();\n if_block_anchor = empty();\n },\n m(target, anchor) {\n if (if_block)\n if_block.m(target, anchor);\n insert(target, if_block_anchor, anchor);\n },\n p(ctx2, dirty) {\n if (\n /*action*/\n ctx2[5].cheatsheet\n ) {\n if (if_block) {\n if_block.p(ctx2, dirty);\n } else {\n if_block = create_if_block_1$2(ctx2);\n if_block.c();\n if_block.m(if_block_anchor.parentNode, if_block_anchor);\n }\n } else if (if_block) {\n if_block.d(1);\n if_block = null;\n }\n },\n d(detaching) {\n if (if_block)\n if_block.d(detaching);\n if (detaching)\n detach(if_block_anchor);\n }\n };\n}\nfunction create_if_block$3(ctx) {\n let li2;\n let div0;\n let raw_value = (\n /*action*/\n ctx[5].icon + \"\"\n );\n let div1;\n let t0_value = (\n /*action*/\n ctx[5].title + \"\"\n );\n let t0;\n let div2;\n let kbd;\n let t1_value = (\n /*action*/\n ctx[5].handler.shortcut + \"\"\n );\n let t1;\n return {\n c() {\n li2 = element$5(\"li\");\n div0 = element$5(\"div\");\n div1 = element$5(\"div\");\n t0 = text$7(t0_value);\n div2 = element$5(\"div\");\n kbd = element$5(\"kbd\");\n t1 = text$7(t1_value);\n attr(div0, \"class\", \"bytemd-help-icon\");\n attr(div1, \"class\", \"bytemd-help-title\");\n attr(div2, \"class\", \"bytemd-help-content\");\n },\n m(target, anchor) {\n insert(target, li2, anchor);\n append(li2, div0);\n div0.innerHTML = raw_value;\n append(li2, div1);\n append(div1, t0);\n append(li2, div2);\n append(div2, kbd);\n append(kbd, t1);\n },\n p(ctx2, dirty) {\n if (dirty & /*items*/\n 4 && raw_value !== (raw_value = /*action*/\n ctx2[5].icon + \"\"))\n div0.innerHTML = raw_value;\n if (dirty & /*items*/\n 4 && t0_value !== (t0_value = /*action*/\n ctx2[5].title + \"\"))\n set_data(t0, t0_value);\n if (dirty & /*items*/\n 4 && t1_value !== (t1_value = /*action*/\n ctx2[5].handler.shortcut + \"\"))\n set_data(t1, t1_value);\n },\n d(detaching) {\n if (detaching)\n detach(li2);\n }\n };\n}\nfunction create_each_block$2(ctx) {\n let if_block_anchor;\n let if_block = (\n /*action*/\n ctx[5].handler && /*action*/\n ctx[5].handler.type === \"action\" && /*action*/\n ctx[5].handler.shortcut && create_if_block$3(ctx)\n );\n return {\n c() {\n if (if_block)\n if_block.c();\n if_block_anchor = empty();\n },\n m(target, anchor) {\n if (if_block)\n if_block.m(target, anchor);\n insert(target, if_block_anchor, anchor);\n },\n p(ctx2, dirty) {\n if (\n /*action*/\n ctx2[5].handler && /*action*/\n ctx2[5].handler.type === \"action\" && /*action*/\n ctx2[5].handler.shortcut\n ) {\n if (if_block) {\n if_block.p(ctx2, dirty);\n } else {\n if_block = create_if_block$3(ctx2);\n if_block.c();\n if_block.m(if_block_anchor.parentNode, if_block_anchor);\n }\n } else if (if_block) {\n if_block.d(1);\n if_block = null;\n }\n },\n d(detaching) {\n if (if_block)\n if_block.d(detaching);\n if (detaching)\n detach(if_block_anchor);\n }\n };\n}\nfunction create_fragment$5(ctx) {\n let div;\n let h20;\n let t0_value = (\n /*locale*/\n ctx[0].cheatsheet + \"\"\n );\n let t0;\n let ul0;\n let h21;\n let t1_value = (\n /*locale*/\n ctx[0].shortcuts + \"\"\n );\n let t1;\n let ul1;\n let each_value_1 = (\n /*items*/\n ctx[2]\n );\n let each_blocks_1 = [];\n for (let i = 0; i < each_value_1.length; i += 1) {\n each_blocks_1[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i));\n }\n let each_value = (\n /*items*/\n ctx[2]\n );\n let each_blocks = [];\n for (let i = 0; i < each_value.length; i += 1) {\n each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));\n }\n return {\n c() {\n div = element$5(\"div\");\n h20 = element$5(\"h2\");\n t0 = text$7(t0_value);\n ul0 = element$5(\"ul\");\n for (let i = 0; i < each_blocks_1.length; i += 1) {\n each_blocks_1[i].c();\n }\n h21 = element$5(\"h2\");\n t1 = text$7(t1_value);\n ul1 = element$5(\"ul\");\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].c();\n }\n attr(div, \"class\", \"bytemd-help\");\n toggle_class(div, \"bytemd-hidden\", !/*visible*/\n ctx[1]);\n },\n m(target, anchor) {\n insert(target, div, anchor);\n append(div, h20);\n append(h20, t0);\n append(div, ul0);\n for (let i = 0; i < each_blocks_1.length; i += 1) {\n if (each_blocks_1[i]) {\n each_blocks_1[i].m(ul0, null);\n }\n }\n append(div, h21);\n append(h21, t1);\n append(div, ul1);\n for (let i = 0; i < each_blocks.length; i += 1) {\n if (each_blocks[i]) {\n each_blocks[i].m(ul1, null);\n }\n }\n },\n p(ctx2, [dirty]) {\n if (dirty & /*locale*/\n 1 && t0_value !== (t0_value = /*locale*/\n ctx2[0].cheatsheet + \"\"))\n set_data(t0, t0_value);\n if (dirty & /*items*/\n 4) {\n each_value_1 = /*items*/\n ctx2[2];\n let i;\n for (i = 0; i < each_value_1.length; i += 1) {\n const child_ctx = get_each_context_1$1(ctx2, each_value_1, i);\n if (each_blocks_1[i]) {\n each_blocks_1[i].p(child_ctx, dirty);\n } else {\n each_blocks_1[i] = create_each_block_1$1(child_ctx);\n each_blocks_1[i].c();\n each_blocks_1[i].m(ul0, null);\n }\n }\n for (; i < each_blocks_1.length; i += 1) {\n each_blocks_1[i].d(1);\n }\n each_blocks_1.length = each_value_1.length;\n }\n if (dirty & /*locale*/\n 1 && t1_value !== (t1_value = /*locale*/\n ctx2[0].shortcuts + \"\"))\n set_data(t1, t1_value);\n if (dirty & /*items*/\n 4) {\n each_value = /*items*/\n ctx2[2];\n let i;\n for (i = 0; i < each_value.length; i += 1) {\n const child_ctx = get_each_context$2(ctx2, each_value, i);\n if (each_blocks[i]) {\n each_blocks[i].p(child_ctx, dirty);\n } else {\n each_blocks[i] = create_each_block$2(child_ctx);\n each_blocks[i].c();\n each_blocks[i].m(ul1, null);\n }\n }\n for (; i < each_blocks.length; i += 1) {\n each_blocks[i].d(1);\n }\n each_blocks.length = each_value.length;\n }\n if (dirty & /*visible*/\n 2) {\n toggle_class(div, \"bytemd-hidden\", !/*visible*/\n ctx2[1]);\n }\n },\n i: noop,\n o: noop,\n d(detaching) {\n if (detaching)\n detach(div);\n destroy_each(each_blocks_1, detaching);\n destroy_each(each_blocks, detaching);\n }\n };\n}\nfunction instance$5($$self, $$props, $$invalidate) {\n let items;\n let { actions } = $$props;\n let { locale } = $$props;\n let { visible } = $$props;\n function flatItems(actions2) {\n let items2 = [];\n actions2.forEach((action) => {\n const { handler, cheatsheet: cheatsheet2 } = action;\n if ((handler == null ? void 0 : handler.type) === \"dropdown\") {\n items2.push(...flatItems(handler.actions));\n }\n if (cheatsheet2) {\n items2.push(action);\n }\n });\n return items2;\n }\n $$self.$$set = ($$props2) => {\n if (\"actions\" in $$props2)\n $$invalidate(3, actions = $$props2.actions);\n if (\"locale\" in $$props2)\n $$invalidate(0, locale = $$props2.locale);\n if (\"visible\" in $$props2)\n $$invalidate(1, visible = $$props2.visible);\n };\n $$self.$$.update = () => {\n if ($$self.$$.dirty & /*actions*/\n 8) {\n $$invalidate(2, items = flatItems(actions));\n }\n };\n return [locale, visible, items, actions];\n}\nclass Help extends SvelteComponent {\n constructor(options) {\n super();\n init(this, options, instance$5, create_fragment$5, safe_not_equal, { actions: 3, locale: 0, visible: 1 });\n }\n}\nfunction create_if_block_1$1(ctx) {\n let span;\n let t_value = (\n /*locale*/\n ctx[2].limited + \"\"\n );\n let t;\n return {\n c() {\n span = element$5(\"span\");\n t = text$7(t_value);\n attr(span, \"class\", \"bytemd-status-error\");\n },\n m(target, anchor) {\n insert(target, span, anchor);\n append(span, t);\n },\n p(ctx2, dirty) {\n if (dirty & /*locale*/\n 4 && t_value !== (t_value = /*locale*/\n ctx2[2].limited + \"\"))\n set_data(t, t_value);\n },\n d(detaching) {\n if (detaching)\n detach(span);\n }\n };\n}\nfunction create_if_block$2(ctx) {\n let label;\n let input;\n let t_value = (\n /*locale*/\n ctx[2].sync + \"\"\n );\n let t;\n let mounted;\n let dispose;\n return {\n c() {\n label = element$5(\"label\");\n input = element$5(\"input\");\n t = text$7(t_value);\n attr(input, \"type\", \"checkbox\");\n input.checked = /*syncEnabled*/\n ctx[1];\n },\n m(target, anchor) {\n insert(target, label, anchor);\n append(label, input);\n append(label, t);\n if (!mounted) {\n dispose = listen(\n input,\n \"change\",\n /*change_handler*/\n ctx[8]\n );\n mounted = true;\n }\n },\n p(ctx2, dirty) {\n if (dirty & /*syncEnabled*/\n 2) {\n input.checked = /*syncEnabled*/\n ctx2[1];\n }\n if (dirty & /*locale*/\n 4 && t_value !== (t_value = /*locale*/\n ctx2[2].sync + \"\"))\n set_data(t, t_value);\n },\n d(detaching) {\n if (detaching)\n detach(label);\n mounted = false;\n dispose();\n }\n };\n}\nfunction create_fragment$4(ctx) {\n let div2;\n let div0;\n let span0;\n let t0_value = (\n /*locale*/\n ctx[2].words + \"\"\n );\n let t0;\n let t1;\n let strong0;\n let t2;\n let span1;\n let t3_value = (\n /*locale*/\n ctx[2].lines + \"\"\n );\n let t3;\n let t4;\n let strong1;\n let t5;\n let div1;\n let span2;\n let t6_value = (\n /*locale*/\n ctx[2].top + \"\"\n );\n let t6;\n let mounted;\n let dispose;\n let if_block0 = (\n /*islimited*/\n ctx[3] && create_if_block_1$1(ctx)\n );\n let if_block1 = (\n /*showSync*/\n ctx[0] && create_if_block$2(ctx)\n );\n return {\n c() {\n div2 = element$5(\"div\");\n div0 = element$5(\"div\");\n span0 = element$5(\"span\");\n t0 = text$7(t0_value);\n t1 = text$7(\": \");\n strong0 = element$5(\"strong\");\n t2 = text$7(\n /*words*/\n ctx[5]\n );\n span1 = element$5(\"span\");\n t3 = text$7(t3_value);\n t4 = text$7(\": \");\n strong1 = element$5(\"strong\");\n t5 = text$7(\n /*lines*/\n ctx[4]\n );\n if (if_block0)\n if_block0.c();\n div1 = element$5(\"div\");\n if (if_block1)\n if_block1.c();\n span2 = element$5(\"span\");\n t6 = text$7(t6_value);\n attr(div0, \"class\", \"bytemd-status-left\");\n attr(div1, \"class\", \"bytemd-status-right\");\n attr(div2, \"class\", \"bytemd-status\");\n },\n m(target, anchor) {\n insert(target, div2, anchor);\n append(div2, div0);\n append(div0, span0);\n append(span0, t0);\n append(span0, t1);\n append(span0, strong0);\n append(strong0, t2);\n append(div0, span1);\n append(span1, t3);\n append(span1, t4);\n append(span1, strong1);\n append(strong1, t5);\n if (if_block0)\n if_block0.m(div0, null);\n append(div2, div1);\n if (if_block1)\n if_block1.m(div1, null);\n append(div1, span2);\n append(span2, t6);\n if (!mounted) {\n dispose = [\n listen(\n span2,\n \"click\",\n /*click_handler*/\n ctx[9]\n ),\n listen(span2, \"keydown\", self$1(\n /*keydown_handler*/\n ctx[10]\n ))\n ];\n mounted = true;\n }\n },\n p(ctx2, [dirty]) {\n if (dirty & /*locale*/\n 4 && t0_value !== (t0_value = /*locale*/\n ctx2[2].words + \"\"))\n set_data(t0, t0_value);\n if (dirty & /*words*/\n 32)\n set_data(\n t2,\n /*words*/\n ctx2[5]\n );\n if (dirty & /*locale*/\n 4 && t3_value !== (t3_value = /*locale*/\n ctx2[2].lines + \"\"))\n set_data(t3, t3_value);\n if (dirty & /*lines*/\n 16)\n set_data(\n t5,\n /*lines*/\n ctx2[4]\n );\n if (\n /*islimited*/\n ctx2[3]\n ) {\n if (if_block0) {\n if_block0.p(ctx2, dirty);\n } else {\n if_block0 = create_if_block_1$1(ctx2);\n if_block0.c();\n if_block0.m(div0, null);\n }\n } else if (if_block0) {\n if_block0.d(1);\n if_block0 = null;\n }\n if (\n /*showSync*/\n ctx2[0]\n ) {\n if (if_block1) {\n if_block1.p(ctx2, dirty);\n } else {\n if_block1 = create_if_block$2(ctx2);\n if_block1.c();\n if_block1.m(div1, span2);\n }\n } else if (if_block1) {\n if_block1.d(1);\n if_block1 = null;\n }\n if (dirty & /*locale*/\n 4 && t6_value !== (t6_value = /*locale*/\n ctx2[2].top + \"\"))\n set_data(t6, t6_value);\n },\n i: noop,\n o: noop,\n d(detaching) {\n if (detaching)\n detach(div2);\n if (if_block0)\n if_block0.d();\n if (if_block1)\n if_block1.d();\n mounted = false;\n run_all(dispose);\n }\n };\n}\nfunction instance$4($$self, $$props, $$invalidate) {\n let words2;\n let lines2;\n let { showSync } = $$props;\n let { value } = $$props;\n let { syncEnabled } = $$props;\n let { locale } = $$props;\n let { islimited } = $$props;\n const dispatch = createEventDispatcher();\n const change_handler = () => dispatch(\"sync\", !syncEnabled);\n const click_handler = () => dispatch(\"top\");\n const keydown_handler = (e) => [\"Enter\", \"Space\"].includes(e.code) && dispatch(\"top\");\n $$self.$$set = ($$props2) => {\n if (\"showSync\" in $$props2)\n $$invalidate(0, showSync = $$props2.showSync);\n if (\"value\" in $$props2)\n $$invalidate(7, value = $$props2.value);\n if (\"syncEnabled\" in $$props2)\n $$invalidate(1, syncEnabled = $$props2.syncEnabled);\n if (\"locale\" in $$props2)\n $$invalidate(2, locale = $$props2.locale);\n if (\"islimited\" in $$props2)\n $$invalidate(3, islimited = $$props2.islimited);\n };\n $$self.$$.update = () => {\n if ($$self.$$.dirty & /*value*/\n 128) {\n $$invalidate(5, words2 = wordCount(value));\n }\n if ($$self.$$.dirty & /*value*/\n 128) {\n $$invalidate(4, lines2 = value.split(\"\\n\").length);\n }\n };\n return [\n showSync,\n syncEnabled,\n locale,\n islimited,\n lines2,\n words2,\n dispatch,\n value,\n change_handler,\n click_handler,\n keydown_handler\n ];\n}\nclass Status extends SvelteComponent {\n constructor(options) {\n super();\n init(this, options, instance$4, create_fragment$4, safe_not_equal, {\n showSync: 0,\n value: 7,\n syncEnabled: 1,\n locale: 2,\n islimited: 3\n });\n }\n}\nconst convert$1 = (\n /**\n * @type {(\n * ((test: PredicateTest) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n /**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\n function(test) {\n if (test === void 0 || test === null) {\n return ok$1;\n }\n if (typeof test === \"string\") {\n return typeFactory$1(test);\n }\n if (typeof test === \"object\") {\n return Array.isArray(test) ? anyFactory$2(test) : propsFactory$1(test);\n }\n if (typeof test === \"function\") {\n return castFactory$2(test);\n }\n throw new Error(\"Expected function, string, or object as test\");\n }\n);\nfunction anyFactory$2(tests) {\n const checks2 = [];\n let index2 = -1;\n while (++index2 < tests.length) {\n checks2[index2] = convert$1(tests[index2]);\n }\n return castFactory$2(any);\n function any(...parameters) {\n let index3 = -1;\n while (++index3 < checks2.length) {\n if (checks2[index3].call(this, ...parameters))\n return true;\n }\n return false;\n }\n}\nfunction propsFactory$1(check) {\n return castFactory$2(all2);\n function all2(node) {\n let key2;\n for (key2 in check) {\n if (node[key2] !== check[key2])\n return false;\n }\n return true;\n }\n}\nfunction typeFactory$1(check) {\n return castFactory$2(type);\n function type(node) {\n return node && node.type === check;\n }\n}\nfunction castFactory$2(check) {\n return assertion;\n function assertion(node, ...parameters) {\n return Boolean(\n node && typeof node === \"object\" && \"type\" in node && // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n );\n }\n}\nfunction ok$1() {\n return true;\n}\nfunction color$1(d) {\n return d;\n}\nconst CONTINUE$1 = true;\nconst EXIT$1 = false;\nconst SKIP$1 = \"skip\";\nconst visitParents$1 = (\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function(tree, test, visitor, reverse) {\n if (typeof test === \"function\" && typeof visitor !== \"function\") {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n const is = convert$1(test);\n const step = reverse ? -1 : 1;\n factory2(tree, void 0, [])();\n function factory2(node, index2, parents) {\n const value = node && typeof node === \"object\" ? node : {};\n if (typeof value.type === \"string\") {\n const name = (\n // `hast`\n typeof value.tagName === \"string\" ? value.tagName : (\n // `xast`\n typeof value.name === \"string\" ? value.name : void 0\n )\n );\n Object.defineProperty(visit2, \"name\", {\n value: \"node (\" + color$1(node.type + (name ? \"<\" + name + \">\" : \"\")) + \")\"\n });\n }\n return visit2;\n function visit2() {\n let result = [];\n let subresult;\n let offset;\n let grandparents;\n if (!test || is(node, index2, parents[parents.length - 1] || null)) {\n result = toResult$1(visitor(node, parents));\n if (result[0] === EXIT$1) {\n return result;\n }\n }\n if (node.children && result[0] !== SKIP$1) {\n offset = (reverse ? node.children.length : -1) + step;\n grandparents = parents.concat(node);\n while (offset > -1 && offset < node.children.length) {\n subresult = factory2(node.children[offset], offset, grandparents)();\n if (subresult[0] === EXIT$1) {\n return subresult;\n }\n offset = typeof subresult[1] === \"number\" ? subresult[1] : offset + step;\n }\n }\n return result;\n }\n }\n }\n);\nfunction toResult$1(value) {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"number\") {\n return [CONTINUE$1, value];\n }\n return [value];\n}\nconst visit$1 = (\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function(tree, test, visitor, reverse) {\n if (typeof test === \"function\" && typeof visitor !== \"function\") {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n visitParents$1(tree, test, overload, reverse);\n function overload(node, parents) {\n const parent = parents[parents.length - 1];\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n );\n }\n }\n);\nfunction get_each_context$1(ctx, list2, i) {\n const child_ctx = ctx.slice();\n child_ctx[11] = list2[i];\n child_ctx[13] = i;\n return child_ctx;\n}\nfunction create_each_block$1(ctx) {\n let li2;\n let t_value = (\n /*item*/\n ctx[11].text + \"\"\n );\n let t;\n let li_class_value;\n let li_style_value;\n let mounted;\n let dispose;\n function click_handler() {\n return (\n /*click_handler*/\n ctx[8](\n /*index*/\n ctx[13]\n )\n );\n }\n function keydown_handler(...args) {\n return (\n /*keydown_handler*/\n ctx[9](\n /*index*/\n ctx[13],\n ...args\n )\n );\n }\n return {\n c() {\n li2 = element$5(\"li\");\n t = text$7(t_value);\n attr(li2, \"class\", li_class_value = `bytemd-toc-${/*item*/\n ctx[11].level}`);\n attr(li2, \"style\", li_style_value = `padding-left:${/*item*/\n (ctx[11].level - /*minLevel*/\n ctx[3]) * 16 + 8}px`);\n toggle_class(\n li2,\n \"bytemd-toc-active\",\n /*currentHeadingIndex*/\n ctx[4] === /*index*/\n ctx[13]\n );\n toggle_class(\n li2,\n \"bytemd-toc-first\",\n /*item*/\n ctx[11].level === /*minLevel*/\n ctx[3]\n );\n },\n m(target, anchor) {\n insert(target, li2, anchor);\n append(li2, t);\n if (!mounted) {\n dispose = [\n listen(li2, \"click\", click_handler),\n listen(li2, \"keydown\", self$1(keydown_handler))\n ];\n mounted = true;\n }\n },\n p(new_ctx, dirty) {\n ctx = new_ctx;\n if (dirty & /*items*/\n 4 && t_value !== (t_value = /*item*/\n ctx[11].text + \"\"))\n set_data(t, t_value);\n if (dirty & /*items*/\n 4 && li_class_value !== (li_class_value = `bytemd-toc-${/*item*/\n ctx[11].level}`)) {\n attr(li2, \"class\", li_class_value);\n }\n if (dirty & /*items, minLevel*/\n 12 && li_style_value !== (li_style_value = `padding-left:${/*item*/\n (ctx[11].level - /*minLevel*/\n ctx[3]) * 16 + 8}px`)) {\n attr(li2, \"style\", li_style_value);\n }\n if (dirty & /*items, currentHeadingIndex*/\n 20) {\n toggle_class(\n li2,\n \"bytemd-toc-active\",\n /*currentHeadingIndex*/\n ctx[4] === /*index*/\n ctx[13]\n );\n }\n if (dirty & /*items, items, minLevel*/\n 12) {\n toggle_class(\n li2,\n \"bytemd-toc-first\",\n /*item*/\n ctx[11].level === /*minLevel*/\n ctx[3]\n );\n }\n },\n d(detaching) {\n if (detaching)\n detach(li2);\n mounted = false;\n run_all(dispose);\n }\n };\n}\nfunction create_fragment$3(ctx) {\n let div;\n let h22;\n let t_value = (\n /*locale*/\n ctx[0].toc + \"\"\n );\n let t;\n let ul2;\n let each_value = (\n /*items*/\n ctx[2]\n );\n let each_blocks = [];\n for (let i = 0; i < each_value.length; i += 1) {\n each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));\n }\n return {\n c() {\n div = element$5(\"div\");\n h22 = element$5(\"h2\");\n t = text$7(t_value);\n ul2 = element$5(\"ul\");\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].c();\n }\n attr(div, \"class\", \"bytemd-toc\");\n toggle_class(div, \"bytemd-hidden\", !/*visible*/\n ctx[1]);\n },\n m(target, anchor) {\n insert(target, div, anchor);\n append(div, h22);\n append(h22, t);\n append(div, ul2);\n for (let i = 0; i < each_blocks.length; i += 1) {\n if (each_blocks[i]) {\n each_blocks[i].m(ul2, null);\n }\n }\n },\n p(ctx2, [dirty]) {\n if (dirty & /*locale*/\n 1 && t_value !== (t_value = /*locale*/\n ctx2[0].toc + \"\"))\n set_data(t, t_value);\n if (dirty & /*items, minLevel, currentHeadingIndex, dispatch*/\n 60) {\n each_value = /*items*/\n ctx2[2];\n let i;\n for (i = 0; i < each_value.length; i += 1) {\n const child_ctx = get_each_context$1(ctx2, each_value, i);\n if (each_blocks[i]) {\n each_blocks[i].p(child_ctx, dirty);\n } else {\n each_blocks[i] = create_each_block$1(child_ctx);\n each_blocks[i].c();\n each_blocks[i].m(ul2, null);\n }\n }\n for (; i < each_blocks.length; i += 1) {\n each_blocks[i].d(1);\n }\n each_blocks.length = each_value.length;\n }\n if (dirty & /*visible*/\n 2) {\n toggle_class(div, \"bytemd-hidden\", !/*visible*/\n ctx2[1]);\n }\n },\n i: noop,\n o: noop,\n d(detaching) {\n if (detaching)\n detach(div);\n destroy_each(each_blocks, detaching);\n }\n };\n}\nfunction instance$3($$self, $$props, $$invalidate) {\n let { hast } = $$props;\n let { currentBlockIndex } = $$props;\n let { locale } = $$props;\n let { visible } = $$props;\n const dispatch = createEventDispatcher();\n let items;\n let minLevel = 6;\n let currentHeadingIndex = 0;\n function stringifyHeading(e) {\n let result = \"\";\n visit$1(e, (node) => {\n if (node.type === \"text\") {\n result += node.value;\n }\n });\n return result;\n }\n const click_handler = (index2) => {\n dispatch(\"click\", index2);\n };\n const keydown_handler = (index2, e) => {\n if ([\"Enter\", \"Space\"].includes(e.code)) {\n dispatch(\"click\", index2);\n }\n };\n $$self.$$set = ($$props2) => {\n if (\"hast\" in $$props2)\n $$invalidate(6, hast = $$props2.hast);\n if (\"currentBlockIndex\" in $$props2)\n $$invalidate(7, currentBlockIndex = $$props2.currentBlockIndex);\n if (\"locale\" in $$props2)\n $$invalidate(0, locale = $$props2.locale);\n if (\"visible\" in $$props2)\n $$invalidate(1, visible = $$props2.visible);\n };\n $$self.$$.update = () => {\n if ($$self.$$.dirty & /*hast, minLevel, items, currentBlockIndex*/\n 204) {\n (() => {\n $$invalidate(2, items = []);\n $$invalidate(4, currentHeadingIndex = 0);\n hast.children.filter((v) => v.type === \"element\").forEach((node, index2) => {\n if (node.tagName[0] === \"h\" && !!node.children.length) {\n const i = Number(node.tagName[1]);\n $$invalidate(3, minLevel = Math.min(minLevel, i));\n items.push({ level: i, text: stringifyHeading(node) });\n }\n if (currentBlockIndex >= index2) {\n $$invalidate(4, currentHeadingIndex = items.length - 1);\n }\n });\n })();\n }\n };\n return [\n locale,\n visible,\n items,\n minLevel,\n currentHeadingIndex,\n dispatch,\n hast,\n currentBlockIndex,\n click_handler,\n keydown_handler\n ];\n}\nclass Toc extends SvelteComponent {\n constructor(options) {\n super();\n init(this, options, instance$3, create_fragment$3, not_equal, {\n hast: 6,\n currentBlockIndex: 7,\n locale: 0,\n visible: 1\n });\n }\n}\nfunction get_each_context(ctx, list2, i) {\n const child_ctx = ctx.slice();\n child_ctx[25] = list2[i];\n child_ctx[27] = i;\n return child_ctx;\n}\nfunction get_each_context_1(ctx, list2, i) {\n const child_ctx = ctx.slice();\n child_ctx[25] = list2[i];\n child_ctx[27] = i;\n return child_ctx;\n}\nfunction create_else_block(ctx) {\n let div0;\n let t0_value = (\n /*locale*/\n ctx[2].write + \"\"\n );\n let t0;\n let div1;\n let t1_value = (\n /*locale*/\n ctx[2].preview + \"\"\n );\n let t1;\n let mounted;\n let dispose;\n return {\n c() {\n div0 = element$5(\"div\");\n t0 = text$7(t0_value);\n div1 = element$5(\"div\");\n t1 = text$7(t1_value);\n attr(div0, \"class\", \"bytemd-toolbar-tab\");\n toggle_class(\n div0,\n \"bytemd-toolbar-tab-active\",\n /*activeTab*/\n ctx[1] !== \"preview\"\n );\n attr(div1, \"class\", \"bytemd-toolbar-tab\");\n toggle_class(\n div1,\n \"bytemd-toolbar-tab-active\",\n /*activeTab*/\n ctx[1] === \"preview\"\n );\n },\n m(target, anchor) {\n insert(target, div0, anchor);\n append(div0, t0);\n insert(target, div1, anchor);\n append(div1, t1);\n if (!mounted) {\n dispose = [\n listen(\n div0,\n \"click\",\n /*click_handler*/\n ctx[16]\n ),\n listen(div0, \"keydown\", self$1(\n /*keydown_handler*/\n ctx[17]\n )),\n listen(\n div1,\n \"click\",\n /*click_handler_1*/\n ctx[18]\n ),\n listen(div1, \"keydown\", self$1(\n /*keydown_handler_1*/\n ctx[19]\n ))\n ];\n mounted = true;\n }\n },\n p(ctx2, dirty) {\n if (dirty & /*locale*/\n 4 && t0_value !== (t0_value = /*locale*/\n ctx2[2].write + \"\"))\n set_data(t0, t0_value);\n if (dirty & /*activeTab*/\n 2) {\n toggle_class(\n div0,\n \"bytemd-toolbar-tab-active\",\n /*activeTab*/\n ctx2[1] !== \"preview\"\n );\n }\n if (dirty & /*locale*/\n 4 && t1_value !== (t1_value = /*locale*/\n ctx2[2].preview + \"\"))\n set_data(t1, t1_value);\n if (dirty & /*activeTab*/\n 2) {\n toggle_class(\n div1,\n \"bytemd-toolbar-tab-active\",\n /*activeTab*/\n ctx2[1] === \"preview\"\n );\n }\n },\n d(detaching) {\n if (detaching)\n detach(div0);\n if (detaching)\n detach(div1);\n mounted = false;\n run_all(dispose);\n }\n };\n}\nfunction create_if_block_1(ctx) {\n let each_1_anchor;\n let each_value_1 = (\n /*actions*/\n ctx[3]\n );\n let each_blocks = [];\n for (let i = 0; i < each_value_1.length; i += 1) {\n each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));\n }\n return {\n c() {\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].c();\n }\n each_1_anchor = empty();\n },\n m(target, anchor) {\n for (let i = 0; i < each_blocks.length; i += 1) {\n if (each_blocks[i]) {\n each_blocks[i].m(target, anchor);\n }\n }\n insert(target, each_1_anchor, anchor);\n },\n p(ctx2, dirty) {\n if (dirty & /*tippyClass, actions*/\n 8) {\n each_value_1 = /*actions*/\n ctx2[3];\n let i;\n for (i = 0; i < each_value_1.length; i += 1) {\n const child_ctx = get_each_context_1(ctx2, each_value_1, i);\n if (each_blocks[i]) {\n each_blocks[i].p(child_ctx, dirty);\n } else {\n each_blocks[i] = create_each_block_1(child_ctx);\n each_blocks[i].c();\n each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);\n }\n }\n for (; i < each_blocks.length; i += 1) {\n each_blocks[i].d(1);\n }\n each_blocks.length = each_value_1.length;\n }\n },\n d(detaching) {\n destroy_each(each_blocks, detaching);\n if (detaching)\n detach(each_1_anchor);\n }\n };\n}\nfunction create_if_block_2(ctx) {\n let div;\n let raw_value = (\n /*item*/\n ctx[25].icon + \"\"\n );\n return {\n c() {\n div = element$5(\"div\");\n attr(div, \"class\", [\"bytemd-toolbar-icon\", tippyClass].join(\" \"));\n attr(\n div,\n \"bytemd-tippy-path\",\n /*index*/\n ctx[27]\n );\n },\n m(target, anchor) {\n insert(target, div, anchor);\n div.innerHTML = raw_value;\n },\n p(ctx2, dirty) {\n if (dirty & /*actions*/\n 8 && raw_value !== (raw_value = /*item*/\n ctx2[25].icon + \"\"))\n div.innerHTML = raw_value;\n },\n d(detaching) {\n if (detaching)\n detach(div);\n }\n };\n}\nfunction create_each_block_1(ctx) {\n let if_block_anchor;\n let if_block = (\n /*item*/\n ctx[25].handler && create_if_block_2(ctx)\n );\n return {\n c() {\n if (if_block)\n if_block.c();\n if_block_anchor = empty();\n },\n m(target, anchor) {\n if (if_block)\n if_block.m(target, anchor);\n insert(target, if_block_anchor, anchor);\n },\n p(ctx2, dirty) {\n if (\n /*item*/\n ctx2[25].handler\n ) {\n if (if_block) {\n if_block.p(ctx2, dirty);\n } else {\n if_block = create_if_block_2(ctx2);\n if_block.c();\n if_block.m(if_block_anchor.parentNode, if_block_anchor);\n }\n } else if (if_block) {\n if_block.d(1);\n if_block = null;\n }\n },\n d(detaching) {\n if (if_block)\n if_block.d(detaching);\n if (detaching)\n detach(if_block_anchor);\n }\n };\n}\nfunction create_if_block$1(ctx) {\n let div;\n let raw_value = (\n /*item*/\n ctx[25].icon + \"\"\n );\n return {\n c() {\n div = element$5(\"div\");\n attr(div, \"class\", [\"bytemd-toolbar-icon\", tippyClass, tippyClassRight].join(\" \"));\n attr(\n div,\n \"bytemd-tippy-path\",\n /*index*/\n ctx[27]\n );\n toggle_class(\n div,\n \"bytemd-toolbar-icon-active\",\n /*item*/\n ctx[25].active\n );\n },\n m(target, anchor) {\n insert(target, div, anchor);\n div.innerHTML = raw_value;\n },\n p(ctx2, dirty) {\n if (dirty & /*rightActions*/\n 32 && raw_value !== (raw_value = /*item*/\n ctx2[25].icon + \"\"))\n div.innerHTML = raw_value;\n if (dirty & /*rightActions*/\n 32) {\n toggle_class(\n div,\n \"bytemd-toolbar-icon-active\",\n /*item*/\n ctx2[25].active\n );\n }\n },\n d(detaching) {\n if (detaching)\n detach(div);\n }\n };\n}\nfunction create_each_block(ctx) {\n let if_block_anchor;\n let if_block = !/*item*/\n ctx[25].hidden && create_if_block$1(ctx);\n return {\n c() {\n if (if_block)\n if_block.c();\n if_block_anchor = empty();\n },\n m(target, anchor) {\n if (if_block)\n if_block.m(target, anchor);\n insert(target, if_block_anchor, anchor);\n },\n p(ctx2, dirty) {\n if (!/*item*/\n ctx2[25].hidden) {\n if (if_block) {\n if_block.p(ctx2, dirty);\n } else {\n if_block = create_if_block$1(ctx2);\n if_block.c();\n if_block.m(if_block_anchor.parentNode, if_block_anchor);\n }\n } else if (if_block) {\n if_block.d(1);\n if_block = null;\n }\n },\n d(detaching) {\n if (if_block)\n if_block.d(detaching);\n if (detaching)\n detach(if_block_anchor);\n }\n };\n}\nfunction create_fragment$2(ctx) {\n let div2;\n let div0;\n let div1;\n let mounted;\n let dispose;\n function select_block_type(ctx2, dirty) {\n if (\n /*split*/\n ctx2[0]\n )\n return create_if_block_1;\n return create_else_block;\n }\n let current_block_type = select_block_type(ctx);\n let if_block = current_block_type(ctx);\n let each_value = (\n /*rightActions*/\n ctx[5]\n );\n let each_blocks = [];\n for (let i = 0; i < each_value.length; i += 1) {\n each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));\n }\n return {\n c() {\n div2 = element$5(\"div\");\n div0 = element$5(\"div\");\n if_block.c();\n div1 = element$5(\"div\");\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].c();\n }\n attr(div0, \"class\", \"bytemd-toolbar-left\");\n attr(div1, \"class\", \"bytemd-toolbar-right\");\n attr(div2, \"class\", \"bytemd-toolbar\");\n },\n m(target, anchor) {\n insert(target, div2, anchor);\n append(div2, div0);\n if_block.m(div0, null);\n append(div2, div1);\n for (let i = 0; i < each_blocks.length; i += 1) {\n if (each_blocks[i]) {\n each_blocks[i].m(div1, null);\n }\n }\n ctx[20](div2);\n if (!mounted) {\n dispose = [\n listen(\n div2,\n \"click\",\n /*handleClick*/\n ctx[7]\n ),\n listen(div2, \"keydown\", self$1(\n /*keydown_handler_2*/\n ctx[21]\n ))\n ];\n mounted = true;\n }\n },\n p(ctx2, [dirty]) {\n if (current_block_type === (current_block_type = select_block_type(ctx2)) && if_block) {\n if_block.p(ctx2, dirty);\n } else {\n if_block.d(1);\n if_block = current_block_type(ctx2);\n if (if_block) {\n if_block.c();\n if_block.m(div0, null);\n }\n }\n if (dirty & /*tippyClass, tippyClassRight, rightActions*/\n 32) {\n each_value = /*rightActions*/\n ctx2[5];\n let i;\n for (i = 0; i < each_value.length; i += 1) {\n const child_ctx = get_each_context(ctx2, each_value, i);\n if (each_blocks[i]) {\n each_blocks[i].p(child_ctx, dirty);\n } else {\n each_blocks[i] = create_each_block(child_ctx);\n each_blocks[i].c();\n each_blocks[i].m(div1, null);\n }\n }\n for (; i < each_blocks.length; i += 1) {\n each_blocks[i].d(1);\n }\n each_blocks.length = each_value.length;\n }\n },\n i: noop,\n o: noop,\n d(detaching) {\n if (detaching)\n detach(div2);\n if_block.d();\n destroy_each(each_blocks, detaching);\n ctx[20](null);\n mounted = false;\n run_all(dispose);\n }\n };\n}\nconst tippyClass = \"bytemd-tippy\";\nconst tippyClassRight = \"bytemd-tippy-right\";\nconst tippyPathKey = \"bytemd-tippy-path\";\nfunction instance$2($$self, $$props, $$invalidate) {\n let tocActive;\n let helpActive;\n let writeActive;\n let previewActive;\n let rightActions;\n const dispatch = createEventDispatcher();\n let toolbar;\n let { context } = $$props;\n let { split } = $$props;\n let { activeTab } = $$props;\n let { fullscreen: fullscreen2 } = $$props;\n let { sidebar } = $$props;\n let { locale } = $$props;\n let { actions } = $$props;\n let { rightAfferentActions } = $$props;\n function getPayloadFromElement(e) {\n var _a, _b;\n const paths = (_b = (_a = e.getAttribute(tippyPathKey)) == null ? void 0 : _a.split(\"-\")) == null ? void 0 : _b.map((x) => parseInt(x, 10));\n if (!paths)\n return;\n let item = {\n title: \"\",\n handler: {\n type: \"dropdown\",\n actions: e.classList.contains(tippyClassRight) ? rightActions : actions\n }\n };\n paths == null ? void 0 : paths.forEach((index2) => {\n var _a2;\n if (((_a2 = item.handler) == null ? void 0 : _a2.type) === \"dropdown\") {\n item = item.handler.actions[index2];\n }\n });\n return { paths, item };\n }\n let delegateInstance;\n function init2() {\n delegateInstance = tippy_js.delegate(toolbar, {\n target: `.${tippyClass}`,\n onCreate({ setProps, reference }) {\n const payload = getPayloadFromElement(reference);\n if (!payload)\n return;\n const { item, paths } = payload;\n const { handler } = item;\n if (!handler)\n return;\n if (handler.type === \"action\") {\n setProps({\n content: item.title,\n onHidden(ins) {\n ins.destroy();\n }\n });\n } else if (handler.type === \"dropdown\") {\n const dropdown = document.createElement(\"div\");\n dropdown.classList.add(\"bytemd-dropdown\");\n if (item.title) {\n const dropdownTitle = document.createElement(\"div\");\n dropdownTitle.classList.add(\"bytemd-dropdown-title\");\n dropdownTitle.appendChild(document.createTextNode(item.title));\n dropdown.appendChild(dropdownTitle);\n }\n handler.actions.forEach((subAction, i) => {\n var _a;\n const dropdownItem = document.createElement(\"div\");\n dropdownItem.classList.add(\"bytemd-dropdown-item\");\n dropdownItem.setAttribute(tippyPathKey, [...paths, i].join(\"-\"));\n if (((_a = subAction.handler) == null ? void 0 : _a.type) === \"dropdown\") {\n dropdownItem.classList.add(tippyClass);\n }\n if (reference.classList.contains(tippyClassRight)) {\n dropdownItem.classList.add(tippyClassRight);\n }\n dropdownItem.innerHTML = `${subAction.icon ? `${subAction.icon}` : \"\"}${subAction.title}`;\n dropdown.appendChild(dropdownItem);\n });\n setProps({\n allowHTML: true,\n showOnCreate: true,\n theme: \"light-border\",\n placement: \"bottom-start\",\n interactive: true,\n interactiveDebounce: 50,\n arrow: false,\n offset: [0, 4],\n content: dropdown.outerHTML,\n onHidden(ins) {\n ins.destroy();\n },\n onCreate(ins) {\n [...ins.popper.querySelectorAll(\".bytemd-dropdown-item\")].forEach((el, i) => {\n var _a;\n const actionHandler = (_a = handler.actions[i]) == null ? void 0 : _a.handler;\n if ((actionHandler == null ? void 0 : actionHandler.type) === \"action\") {\n const { mouseenter, mouseleave } = actionHandler;\n if (mouseenter) {\n el.addEventListener(\"mouseenter\", () => {\n mouseenter(context);\n });\n }\n if (mouseleave) {\n el.addEventListener(\"mouseleave\", () => {\n mouseleave(context);\n });\n }\n }\n });\n }\n });\n }\n }\n });\n }\n onMount(() => {\n init2();\n });\n function handleClick(e) {\n var _a, _b;\n const target = e.target.closest(`[${tippyPathKey}]`);\n if (!target)\n return;\n const handler = (_b = (_a = getPayloadFromElement(target)) == null ? void 0 : _a.item) == null ? void 0 : _b.handler;\n if ((handler == null ? void 0 : handler.type) === \"action\") {\n handler.click(context);\n }\n delegateInstance == null ? void 0 : delegateInstance.destroy();\n init2();\n }\n const click_handler = () => dispatch(\"tab\", \"write\");\n const keydown_handler = (e) => [\"Enter\", \"Space\"].includes(e.code) && dispatch(\"tab\", \"write\");\n const click_handler_1 = () => dispatch(\"tab\", \"preview\");\n const keydown_handler_1 = (e) => [\"Enter\", \"Space\"].includes(e.code) && dispatch(\"tab\", \"preview\");\n function div2_binding($$value) {\n binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n toolbar = $$value;\n $$invalidate(4, toolbar);\n });\n }\n const keydown_handler_2 = (e) => [\"Enter\", \"Space\"].includes(e.code) && handleClick(e);\n $$self.$$set = ($$props2) => {\n if (\"context\" in $$props2)\n $$invalidate(8, context = $$props2.context);\n if (\"split\" in $$props2)\n $$invalidate(0, split = $$props2.split);\n if (\"activeTab\" in $$props2)\n $$invalidate(1, activeTab = $$props2.activeTab);\n if (\"fullscreen\" in $$props2)\n $$invalidate(9, fullscreen2 = $$props2.fullscreen);\n if (\"sidebar\" in $$props2)\n $$invalidate(10, sidebar = $$props2.sidebar);\n if (\"locale\" in $$props2)\n $$invalidate(2, locale = $$props2.locale);\n if (\"actions\" in $$props2)\n $$invalidate(3, actions = $$props2.actions);\n if (\"rightAfferentActions\" in $$props2)\n $$invalidate(11, rightAfferentActions = $$props2.rightAfferentActions);\n };\n $$self.$$.update = () => {\n if ($$self.$$.dirty & /*sidebar*/\n 1024) {\n $$invalidate(15, tocActive = sidebar === \"toc\");\n }\n if ($$self.$$.dirty & /*sidebar*/\n 1024) {\n $$invalidate(14, helpActive = sidebar === \"help\");\n }\n if ($$self.$$.dirty & /*activeTab*/\n 2) {\n $$invalidate(13, writeActive = activeTab === \"write\");\n }\n if ($$self.$$.dirty & /*activeTab*/\n 2) {\n $$invalidate(12, previewActive = activeTab === \"preview\");\n }\n if ($$self.$$.dirty & /*tocActive, locale, helpActive, writeActive, split, previewActive, fullscreen, rightAfferentActions*/\n 64005) {\n $$invalidate(5, rightActions = [\n {\n title: tocActive ? locale.closeToc : locale.toc,\n icon: icons.AlignTextLeftOne,\n handler: {\n type: \"action\",\n click() {\n dispatch(\"click\", \"toc\");\n }\n },\n active: tocActive\n },\n {\n title: helpActive ? locale.closeHelp : locale.help,\n icon: icons.Helpcenter,\n handler: {\n type: \"action\",\n click() {\n dispatch(\"click\", \"help\");\n }\n },\n active: helpActive\n },\n {\n title: writeActive ? locale.exitWriteOnly : locale.writeOnly,\n icon: icons.LeftExpand,\n handler: {\n type: \"action\",\n click() {\n dispatch(\"tab\", \"write\");\n }\n },\n active: writeActive,\n hidden: !split\n },\n {\n title: previewActive ? locale.exitPreviewOnly : locale.previewOnly,\n icon: icons.RightExpand,\n handler: {\n type: \"action\",\n click() {\n dispatch(\"tab\", \"preview\");\n }\n },\n active: previewActive,\n hidden: !split\n },\n {\n title: fullscreen2 ? locale.exitFullscreen : locale.fullscreen,\n icon: fullscreen2 ? icons.OffScreen : icons.FullScreen,\n handler: {\n type: \"action\",\n click() {\n dispatch(\"click\", \"fullscreen\");\n }\n }\n },\n {\n title: locale.source,\n icon: icons.GithubOne,\n handler: {\n type: \"action\",\n click() {\n window.open(\"https://github.com/bytedance/bytemd\");\n }\n }\n },\n ...rightAfferentActions\n ]);\n }\n };\n return [\n split,\n activeTab,\n locale,\n actions,\n toolbar,\n rightActions,\n dispatch,\n handleClick,\n context,\n fullscreen2,\n sidebar,\n rightAfferentActions,\n previewActive,\n writeActive,\n helpActive,\n tocActive,\n click_handler,\n keydown_handler,\n click_handler_1,\n keydown_handler_1,\n div2_binding,\n keydown_handler_2\n ];\n}\nclass Toolbar extends SvelteComponent {\n constructor(options) {\n super();\n init(this, options, instance$2, create_fragment$2, not_equal, {\n context: 8,\n split: 0,\n activeTab: 1,\n fullscreen: 9,\n sidebar: 10,\n locale: 2,\n actions: 3,\n rightAfferentActions: 11\n });\n }\n}\nconst defaultSchema = {\n strip: [\"script\"],\n clobberPrefix: \"user-content-\",\n clobber: [\"name\", \"id\"],\n ancestors: {\n tbody: [\"table\"],\n tfoot: [\"table\"],\n thead: [\"table\"],\n td: [\"table\"],\n th: [\"table\"],\n tr: [\"table\"]\n },\n protocols: {\n href: [\"http\", \"https\", \"mailto\", \"xmpp\", \"irc\", \"ircs\"],\n cite: [\"http\", \"https\"],\n src: [\"http\", \"https\"],\n longDesc: [\"http\", \"https\"]\n },\n tagNames: [\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"br\",\n \"b\",\n \"i\",\n \"strong\",\n \"em\",\n \"a\",\n \"pre\",\n \"code\",\n \"img\",\n \"tt\",\n \"div\",\n \"ins\",\n \"del\",\n \"sup\",\n \"sub\",\n \"p\",\n \"ol\",\n \"ul\",\n \"table\",\n \"thead\",\n \"tbody\",\n \"tfoot\",\n \"blockquote\",\n \"dl\",\n \"dt\",\n \"dd\",\n \"kbd\",\n \"q\",\n \"samp\",\n \"var\",\n \"hr\",\n \"ruby\",\n \"rt\",\n \"rp\",\n \"li\",\n \"tr\",\n \"td\",\n \"th\",\n \"s\",\n \"strike\",\n \"summary\",\n \"details\",\n \"caption\",\n \"figure\",\n \"figcaption\",\n \"abbr\",\n \"bdo\",\n \"cite\",\n \"dfn\",\n \"mark\",\n \"small\",\n \"span\",\n \"time\",\n \"wbr\",\n \"input\"\n ],\n attributes: {\n a: [\"href\"],\n img: [\"src\", \"longDesc\"],\n input: [\n [\"type\", \"checkbox\"],\n [\"disabled\", true]\n ],\n li: [[\"className\", \"task-list-item\"]],\n div: [\"itemScope\", \"itemType\"],\n blockquote: [\"cite\"],\n del: [\"cite\"],\n ins: [\"cite\"],\n q: [\"cite\"],\n \"*\": [\n \"abbr\",\n \"accept\",\n \"acceptCharset\",\n \"accessKey\",\n \"action\",\n \"align\",\n \"alt\",\n \"ariaDescribedBy\",\n \"ariaHidden\",\n \"ariaLabel\",\n \"ariaLabelledBy\",\n \"axis\",\n \"border\",\n \"cellPadding\",\n \"cellSpacing\",\n \"char\",\n \"charOff\",\n \"charSet\",\n \"checked\",\n \"clear\",\n \"cols\",\n \"colSpan\",\n \"color\",\n \"compact\",\n \"coords\",\n \"dateTime\",\n \"dir\",\n \"disabled\",\n \"encType\",\n \"htmlFor\",\n \"frame\",\n \"headers\",\n \"height\",\n \"hrefLang\",\n \"hSpace\",\n \"isMap\",\n \"id\",\n \"label\",\n \"lang\",\n \"maxLength\",\n \"media\",\n \"method\",\n \"multiple\",\n \"name\",\n \"noHref\",\n \"noShade\",\n \"noWrap\",\n \"open\",\n \"prompt\",\n \"readOnly\",\n \"rel\",\n \"rev\",\n \"rows\",\n \"rowSpan\",\n \"rules\",\n \"scope\",\n \"selected\",\n \"shape\",\n \"size\",\n \"span\",\n \"start\",\n \"summary\",\n \"tabIndex\",\n \"target\",\n \"title\",\n \"type\",\n \"useMap\",\n \"vAlign\",\n \"value\",\n \"vSpace\",\n \"width\",\n \"itemProp\"\n ]\n },\n required: {\n input: {\n type: \"checkbox\",\n disabled: true\n }\n }\n};\nconst own$f = {}.hasOwnProperty;\nconst nodeSchema = {\n root: { children: all$4 },\n doctype: handleDoctype,\n comment: handleComment,\n element: {\n tagName: handleTagName,\n properties: handleProperties,\n children: all$4\n },\n text: { value: handleValue },\n \"*\": { data: allow, position: allow }\n};\nfunction sanitize(node, schema) {\n let ctx = { type: \"root\", children: [] };\n if (node && typeof node === \"object\" && node.type) {\n const replace = one$4(\n Object.assign({}, defaultSchema, schema || {}),\n node,\n []\n );\n if (replace) {\n if (Array.isArray(replace)) {\n if (replace.length === 1) {\n ctx = replace[0];\n } else {\n ctx.children = replace;\n }\n } else {\n ctx = replace;\n }\n }\n }\n return ctx;\n}\nfunction one$4(schema, node, stack) {\n const type = node && node.type;\n const replacement = { type: node.type };\n let replace;\n if (own$f.call(nodeSchema, type)) {\n let definition2 = nodeSchema[type];\n if (typeof definition2 === \"function\") {\n definition2 = definition2(schema, node);\n }\n if (definition2) {\n const allowed = Object.assign({}, definition2, nodeSchema[\"*\"]);\n let key2;\n replace = true;\n for (key2 in allowed) {\n if (own$f.call(allowed, key2)) {\n const result = allowed[key2](schema, node[key2], node, stack);\n if (result === false) {\n replace = void 0;\n replacement[key2] = node[key2];\n } else if (result !== void 0 && result !== null) {\n replacement[key2] = result;\n }\n }\n }\n }\n }\n if (replace) {\n return replacement;\n }\n return replacement.type === \"element\" && schema.strip && !schema.strip.includes(replacement.tagName) ? replacement.children : void 0;\n}\nfunction all$4(schema, children2, node, stack) {\n const results = [];\n if (Array.isArray(children2)) {\n let index2 = -1;\n if (node.type === \"element\") {\n stack.push(node.tagName);\n }\n while (++index2 < children2.length) {\n const value = one$4(schema, children2[index2], stack);\n if (value) {\n if (Array.isArray(value)) {\n results.push(...value);\n } else {\n results.push(value);\n }\n }\n }\n if (node.type === \"element\") {\n stack.pop();\n }\n }\n return results;\n}\nfunction handleDoctype(schema) {\n return schema.allowDoctypes ? { name: handleDoctypeName } : void 0;\n}\nfunction handleComment(schema) {\n return schema.allowComments ? { value: handleCommentValue } : void 0;\n}\nfunction handleProperties(schema, properties, node, stack) {\n const name = handleTagName(schema, node.tagName, node, stack);\n const attrs = schema.attributes || {};\n const reqs = schema.required || {};\n const props = properties || {};\n const allowed = Object.assign(\n {},\n toPropertyValueMap(attrs[\"*\"]),\n toPropertyValueMap(name && own$f.call(attrs, name) ? attrs[name] : [])\n );\n const result = {};\n let key2;\n for (key2 in props) {\n if (own$f.call(props, key2)) {\n let value = props[key2];\n let definition2;\n if (own$f.call(allowed, key2)) {\n definition2 = allowed[key2];\n } else if (data(key2) && own$f.call(allowed, \"data*\")) {\n definition2 = allowed[\"data*\"];\n } else {\n continue;\n }\n value = Array.isArray(value) ? handlePropertyValues(schema, value, key2, definition2) : handlePropertyValue(schema, value, key2, definition2);\n if (value !== void 0 && value !== null) {\n result[key2] = value;\n }\n }\n }\n if (name && own$f.call(reqs, name)) {\n for (key2 in reqs[name]) {\n if (!own$f.call(result, key2)) {\n result[key2] = reqs[name][key2];\n }\n }\n }\n return result;\n}\nfunction handleDoctypeName() {\n return \"html\";\n}\nfunction handleTagName(schema, tagName, _, stack) {\n const name = typeof tagName === \"string\" ? tagName : \"\";\n let index2 = -1;\n if (!name || name === \"*\" || schema.tagNames && !schema.tagNames.includes(name)) {\n return false;\n }\n if (schema.ancestors && own$f.call(schema.ancestors, name)) {\n while (++index2 < schema.ancestors[name].length) {\n if (stack.includes(schema.ancestors[name][index2])) {\n return name;\n }\n }\n return false;\n }\n return name;\n}\nfunction handleCommentValue(_, value) {\n const result = typeof value === \"string\" ? value : \"\";\n const index2 = result.indexOf(\"-->\");\n return index2 < 0 ? result : result.slice(0, index2);\n}\nfunction handleValue(_, value) {\n return typeof value === \"string\" ? value : \"\";\n}\nfunction allow(_, value) {\n return value;\n}\nfunction handlePropertyValues(schema, values, prop, definition2) {\n let index2 = -1;\n const result = [];\n while (++index2 < values.length) {\n const value = handlePropertyValue(schema, values[index2], prop, definition2);\n if (value !== void 0 && value !== null) {\n result.push(value);\n }\n }\n return result;\n}\nfunction handlePropertyValue(schema, value, prop, definition2) {\n if ((typeof value === \"boolean\" || typeof value === \"number\" || typeof value === \"string\") && safeProtocol(schema, value, prop) && (definition2.length === 0 || definition2.some(\n (allowed) => allowed && typeof allowed === \"object\" && \"flags\" in allowed ? allowed.test(String(value)) : allowed === value\n ))) {\n return schema.clobberPrefix && schema.clobber && schema.clobber.includes(prop) ? schema.clobberPrefix + value : value;\n }\n}\nfunction safeProtocol(schema, value, prop) {\n const url = String(value);\n const colon = url.indexOf(\":\");\n const questionMark = url.indexOf(\"?\");\n const numberSign = url.indexOf(\"#\");\n const slash = url.indexOf(\"/\");\n const protocols = schema.protocols && own$f.call(schema.protocols, prop) ? schema.protocols[prop].concat() : [];\n let index2 = -1;\n if (protocols.length === 0 || colon < 0 || // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign) {\n return true;\n }\n while (++index2 < protocols.length) {\n if (colon === protocols[index2].length && url.slice(0, protocols[index2].length) === protocols[index2]) {\n return true;\n }\n }\n return false;\n}\nfunction toPropertyValueMap(values) {\n const result = {};\n let index2 = -1;\n while (++index2 < values.length) {\n const value = values[index2];\n if (Array.isArray(value)) {\n result[value[0]] = value.slice(1);\n } else {\n result[value] = [];\n }\n }\n return result;\n}\nfunction data(prop) {\n return prop.length > 4 && prop.slice(0, 4).toLowerCase() === \"data\";\n}\nvar unicode$3 = {};\nconst UNDEFINED_CODE_POINTS = [\n 65534,\n 65535,\n 131070,\n 131071,\n 196606,\n 196607,\n 262142,\n 262143,\n 327678,\n 327679,\n 393214,\n 393215,\n 458750,\n 458751,\n 524286,\n 524287,\n 589822,\n 589823,\n 655358,\n 655359,\n 720894,\n 720895,\n 786430,\n 786431,\n 851966,\n 851967,\n 917502,\n 917503,\n 983038,\n 983039,\n 1048574,\n 1048575,\n 1114110,\n 1114111\n];\nunicode$3.REPLACEMENT_CHARACTER = \"�\";\nunicode$3.CODE_POINTS = {\n EOF: -1,\n NULL: 0,\n TABULATION: 9,\n CARRIAGE_RETURN: 13,\n LINE_FEED: 10,\n FORM_FEED: 12,\n SPACE: 32,\n EXCLAMATION_MARK: 33,\n QUOTATION_MARK: 34,\n NUMBER_SIGN: 35,\n AMPERSAND: 38,\n APOSTROPHE: 39,\n HYPHEN_MINUS: 45,\n SOLIDUS: 47,\n DIGIT_0: 48,\n DIGIT_9: 57,\n SEMICOLON: 59,\n LESS_THAN_SIGN: 60,\n EQUALS_SIGN: 61,\n GREATER_THAN_SIGN: 62,\n QUESTION_MARK: 63,\n LATIN_CAPITAL_A: 65,\n LATIN_CAPITAL_F: 70,\n LATIN_CAPITAL_X: 88,\n LATIN_CAPITAL_Z: 90,\n RIGHT_SQUARE_BRACKET: 93,\n GRAVE_ACCENT: 96,\n LATIN_SMALL_A: 97,\n LATIN_SMALL_F: 102,\n LATIN_SMALL_X: 120,\n LATIN_SMALL_Z: 122,\n REPLACEMENT_CHARACTER: 65533\n};\nunicode$3.CODE_POINT_SEQUENCES = {\n DASH_DASH_STRING: [45, 45],\n //--\n DOCTYPE_STRING: [68, 79, 67, 84, 89, 80, 69],\n //DOCTYPE\n CDATA_START_STRING: [91, 67, 68, 65, 84, 65, 91],\n //[CDATA[\n SCRIPT_STRING: [115, 99, 114, 105, 112, 116],\n //script\n PUBLIC_STRING: [80, 85, 66, 76, 73, 67],\n //PUBLIC\n SYSTEM_STRING: [83, 89, 83, 84, 69, 77]\n //SYSTEM\n};\nunicode$3.isSurrogate = function(cp) {\n return cp >= 55296 && cp <= 57343;\n};\nunicode$3.isSurrogatePair = function(cp) {\n return cp >= 56320 && cp <= 57343;\n};\nunicode$3.getSurrogatePairCodePoint = function(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n};\nunicode$3.isControlCodePoint = function(cp) {\n return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159;\n};\nunicode$3.isUndefinedCodePoint = function(cp) {\n return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.indexOf(cp) > -1;\n};\nvar errorCodes = {\n controlCharacterInInputStream: \"control-character-in-input-stream\",\n noncharacterInInputStream: \"noncharacter-in-input-stream\",\n surrogateInInputStream: \"surrogate-in-input-stream\",\n nonVoidHtmlElementStartTagWithTrailingSolidus: \"non-void-html-element-start-tag-with-trailing-solidus\",\n endTagWithAttributes: \"end-tag-with-attributes\",\n endTagWithTrailingSolidus: \"end-tag-with-trailing-solidus\",\n unexpectedSolidusInTag: \"unexpected-solidus-in-tag\",\n unexpectedNullCharacter: \"unexpected-null-character\",\n unexpectedQuestionMarkInsteadOfTagName: \"unexpected-question-mark-instead-of-tag-name\",\n invalidFirstCharacterOfTagName: \"invalid-first-character-of-tag-name\",\n unexpectedEqualsSignBeforeAttributeName: \"unexpected-equals-sign-before-attribute-name\",\n missingEndTagName: \"missing-end-tag-name\",\n unexpectedCharacterInAttributeName: \"unexpected-character-in-attribute-name\",\n unknownNamedCharacterReference: \"unknown-named-character-reference\",\n missingSemicolonAfterCharacterReference: \"missing-semicolon-after-character-reference\",\n unexpectedCharacterAfterDoctypeSystemIdentifier: \"unexpected-character-after-doctype-system-identifier\",\n unexpectedCharacterInUnquotedAttributeValue: \"unexpected-character-in-unquoted-attribute-value\",\n eofBeforeTagName: \"eof-before-tag-name\",\n eofInTag: \"eof-in-tag\",\n missingAttributeValue: \"missing-attribute-value\",\n missingWhitespaceBetweenAttributes: \"missing-whitespace-between-attributes\",\n missingWhitespaceAfterDoctypePublicKeyword: \"missing-whitespace-after-doctype-public-keyword\",\n missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: \"missing-whitespace-between-doctype-public-and-system-identifiers\",\n missingWhitespaceAfterDoctypeSystemKeyword: \"missing-whitespace-after-doctype-system-keyword\",\n missingQuoteBeforeDoctypePublicIdentifier: \"missing-quote-before-doctype-public-identifier\",\n missingQuoteBeforeDoctypeSystemIdentifier: \"missing-quote-before-doctype-system-identifier\",\n missingDoctypePublicIdentifier: \"missing-doctype-public-identifier\",\n missingDoctypeSystemIdentifier: \"missing-doctype-system-identifier\",\n abruptDoctypePublicIdentifier: \"abrupt-doctype-public-identifier\",\n abruptDoctypeSystemIdentifier: \"abrupt-doctype-system-identifier\",\n cdataInHtmlContent: \"cdata-in-html-content\",\n incorrectlyOpenedComment: \"incorrectly-opened-comment\",\n eofInScriptHtmlCommentLikeText: \"eof-in-script-html-comment-like-text\",\n eofInDoctype: \"eof-in-doctype\",\n nestedComment: \"nested-comment\",\n abruptClosingOfEmptyComment: \"abrupt-closing-of-empty-comment\",\n eofInComment: \"eof-in-comment\",\n incorrectlyClosedComment: \"incorrectly-closed-comment\",\n eofInCdata: \"eof-in-cdata\",\n absenceOfDigitsInNumericCharacterReference: \"absence-of-digits-in-numeric-character-reference\",\n nullCharacterReference: \"null-character-reference\",\n surrogateCharacterReference: \"surrogate-character-reference\",\n characterReferenceOutsideUnicodeRange: \"character-reference-outside-unicode-range\",\n controlCharacterReference: \"control-character-reference\",\n noncharacterCharacterReference: \"noncharacter-character-reference\",\n missingWhitespaceBeforeDoctypeName: \"missing-whitespace-before-doctype-name\",\n missingDoctypeName: \"missing-doctype-name\",\n invalidCharacterSequenceAfterDoctypeName: \"invalid-character-sequence-after-doctype-name\",\n duplicateAttribute: \"duplicate-attribute\",\n nonConformingDoctype: \"non-conforming-doctype\",\n missingDoctype: \"missing-doctype\",\n misplacedDoctype: \"misplaced-doctype\",\n endTagWithoutMatchingOpenElement: \"end-tag-without-matching-open-element\",\n closingOfElementWithOpenChildElements: \"closing-of-element-with-open-child-elements\",\n disallowedContentInNoscriptInHead: \"disallowed-content-in-noscript-in-head\",\n openElementsLeftAfterEof: \"open-elements-left-after-eof\",\n abandonedHeadElementChild: \"abandoned-head-element-child\",\n misplacedStartTagForHeadElement: \"misplaced-start-tag-for-head-element\",\n nestedNoscriptInHead: \"nested-noscript-in-head\",\n eofInElementThatCanContainOnlyText: \"eof-in-element-that-can-contain-only-text\"\n};\nconst unicode$2 = unicode$3;\nconst ERR$2 = errorCodes;\nconst $$6 = unicode$2.CODE_POINTS;\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\nlet Preprocessor$1 = class Preprocessor {\n constructor() {\n this.html = null;\n this.pos = -1;\n this.lastGapPos = -1;\n this.lastCharPos = -1;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n }\n _err() {\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n if (this.pos !== this.lastCharPos) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (unicode$2.isSurrogatePair(nextCp)) {\n this.pos++;\n this._addGap();\n return unicode$2.getSurrogatePairCodePoint(cp, nextCp);\n }\n } else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $$6.EOF;\n }\n this._err(ERR$2.surrogateInInputStream);\n return cp;\n }\n dropParsedChunk() {\n if (this.pos > this.bufferWaterline) {\n this.lastCharPos -= this.pos;\n this.html = this.html.substring(this.pos);\n this.pos = 0;\n this.lastGapPos = -1;\n this.gapStack = [];\n }\n }\n write(chunk, isLastChunk) {\n if (this.html) {\n this.html += chunk;\n } else {\n this.html = chunk;\n }\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1, this.html.length);\n this.lastCharPos = this.html.length - 1;\n this.endOfChunkHit = false;\n }\n advance() {\n this.pos++;\n if (this.pos > this.lastCharPos) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $$6.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n if (this.skipNextNewLine && cp === $$6.LINE_FEED) {\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n if (cp === $$6.CARRIAGE_RETURN) {\n this.skipNextNewLine = true;\n return $$6.LINE_FEED;\n }\n this.skipNextNewLine = false;\n if (unicode$2.isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n const isCommonValidRange = cp > 31 && cp < 127 || cp === $$6.LINE_FEED || cp === $$6.CARRIAGE_RETURN || cp > 159 && cp < 64976;\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (unicode$2.isControlCodePoint(cp)) {\n this._err(ERR$2.controlCharacterInInputStream);\n } else if (unicode$2.isUndefinedCodePoint(cp)) {\n this._err(ERR$2.noncharacterInInputStream);\n }\n }\n retreat() {\n if (this.pos === this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.pos--;\n }\n};\nvar preprocessor = Preprocessor$1;\nvar namedEntityData = new Uint16Array([4, 52, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 106, 303, 412, 810, 1432, 1701, 1796, 1987, 2114, 2360, 2420, 2484, 3170, 3251, 4140, 4393, 4575, 4610, 5106, 5512, 5728, 6117, 6274, 6315, 6345, 6427, 6516, 7002, 7910, 8733, 9323, 9870, 10170, 10631, 10893, 11318, 11386, 11467, 12773, 13092, 14474, 14922, 15448, 15542, 16419, 17666, 18166, 18611, 19004, 19095, 19298, 19397, 4, 16, 69, 77, 97, 98, 99, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 140, 150, 158, 169, 176, 194, 199, 210, 216, 222, 226, 242, 256, 266, 283, 294, 108, 105, 103, 5, 198, 1, 59, 148, 1, 198, 80, 5, 38, 1, 59, 156, 1, 38, 99, 117, 116, 101, 5, 193, 1, 59, 167, 1, 193, 114, 101, 118, 101, 59, 1, 258, 4, 2, 105, 121, 182, 191, 114, 99, 5, 194, 1, 59, 189, 1, 194, 59, 1, 1040, 114, 59, 3, 55349, 56580, 114, 97, 118, 101, 5, 192, 1, 59, 208, 1, 192, 112, 104, 97, 59, 1, 913, 97, 99, 114, 59, 1, 256, 100, 59, 1, 10835, 4, 2, 103, 112, 232, 237, 111, 110, 59, 1, 260, 102, 59, 3, 55349, 56632, 112, 108, 121, 70, 117, 110, 99, 116, 105, 111, 110, 59, 1, 8289, 105, 110, 103, 5, 197, 1, 59, 264, 1, 197, 4, 2, 99, 115, 272, 277, 114, 59, 3, 55349, 56476, 105, 103, 110, 59, 1, 8788, 105, 108, 100, 101, 5, 195, 1, 59, 292, 1, 195, 109, 108, 5, 196, 1, 59, 301, 1, 196, 4, 8, 97, 99, 101, 102, 111, 114, 115, 117, 321, 350, 354, 383, 388, 394, 400, 405, 4, 2, 99, 114, 327, 336, 107, 115, 108, 97, 115, 104, 59, 1, 8726, 4, 2, 118, 119, 342, 345, 59, 1, 10983, 101, 100, 59, 1, 8966, 121, 59, 1, 1041, 4, 3, 99, 114, 116, 362, 369, 379, 97, 117, 115, 101, 59, 1, 8757, 110, 111, 117, 108, 108, 105, 115, 59, 1, 8492, 97, 59, 1, 914, 114, 59, 3, 55349, 56581, 112, 102, 59, 3, 55349, 56633, 101, 118, 101, 59, 1, 728, 99, 114, 59, 1, 8492, 109, 112, 101, 113, 59, 1, 8782, 4, 14, 72, 79, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 117, 442, 447, 456, 504, 542, 547, 569, 573, 577, 616, 678, 784, 790, 796, 99, 121, 59, 1, 1063, 80, 89, 5, 169, 1, 59, 454, 1, 169, 4, 3, 99, 112, 121, 464, 470, 497, 117, 116, 101, 59, 1, 262, 4, 2, 59, 105, 476, 478, 1, 8914, 116, 97, 108, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 1, 8517, 108, 101, 121, 115, 59, 1, 8493, 4, 4, 97, 101, 105, 111, 514, 520, 530, 535, 114, 111, 110, 59, 1, 268, 100, 105, 108, 5, 199, 1, 59, 528, 1, 199, 114, 99, 59, 1, 264, 110, 105, 110, 116, 59, 1, 8752, 111, 116, 59, 1, 266, 4, 2, 100, 110, 553, 560, 105, 108, 108, 97, 59, 1, 184, 116, 101, 114, 68, 111, 116, 59, 1, 183, 114, 59, 1, 8493, 105, 59, 1, 935, 114, 99, 108, 101, 4, 4, 68, 77, 80, 84, 591, 596, 603, 609, 111, 116, 59, 1, 8857, 105, 110, 117, 115, 59, 1, 8854, 108, 117, 115, 59, 1, 8853, 105, 109, 101, 115, 59, 1, 8855, 111, 4, 2, 99, 115, 623, 646, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8754, 101, 67, 117, 114, 108, 121, 4, 2, 68, 81, 658, 671, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 1, 8221, 117, 111, 116, 101, 59, 1, 8217, 4, 4, 108, 110, 112, 117, 688, 701, 736, 753, 111, 110, 4, 2, 59, 101, 696, 698, 1, 8759, 59, 1, 10868, 4, 3, 103, 105, 116, 709, 717, 722, 114, 117, 101, 110, 116, 59, 1, 8801, 110, 116, 59, 1, 8751, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8750, 4, 2, 102, 114, 742, 745, 59, 1, 8450, 111, 100, 117, 99, 116, 59, 1, 8720, 110, 116, 101, 114, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8755, 111, 115, 115, 59, 1, 10799, 99, 114, 59, 3, 55349, 56478, 112, 4, 2, 59, 67, 803, 805, 1, 8915, 97, 112, 59, 1, 8781, 4, 11, 68, 74, 83, 90, 97, 99, 101, 102, 105, 111, 115, 834, 850, 855, 860, 865, 888, 903, 916, 921, 1011, 1415, 4, 2, 59, 111, 840, 842, 1, 8517, 116, 114, 97, 104, 100, 59, 1, 10513, 99, 121, 59, 1, 1026, 99, 121, 59, 1, 1029, 99, 121, 59, 1, 1039, 4, 3, 103, 114, 115, 873, 879, 883, 103, 101, 114, 59, 1, 8225, 114, 59, 1, 8609, 104, 118, 59, 1, 10980, 4, 2, 97, 121, 894, 900, 114, 111, 110, 59, 1, 270, 59, 1, 1044, 108, 4, 2, 59, 116, 910, 912, 1, 8711, 97, 59, 1, 916, 114, 59, 3, 55349, 56583, 4, 2, 97, 102, 927, 998, 4, 2, 99, 109, 933, 992, 114, 105, 116, 105, 99, 97, 108, 4, 4, 65, 68, 71, 84, 950, 957, 978, 985, 99, 117, 116, 101, 59, 1, 180, 111, 4, 2, 116, 117, 964, 967, 59, 1, 729, 98, 108, 101, 65, 99, 117, 116, 101, 59, 1, 733, 114, 97, 118, 101, 59, 1, 96, 105, 108, 100, 101, 59, 1, 732, 111, 110, 100, 59, 1, 8900, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 1, 8518, 4, 4, 112, 116, 117, 119, 1021, 1026, 1048, 1249, 102, 59, 3, 55349, 56635, 4, 3, 59, 68, 69, 1034, 1036, 1041, 1, 168, 111, 116, 59, 1, 8412, 113, 117, 97, 108, 59, 1, 8784, 98, 108, 101, 4, 6, 67, 68, 76, 82, 85, 86, 1065, 1082, 1101, 1189, 1211, 1236, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 1, 8751, 111, 4, 2, 116, 119, 1089, 1092, 59, 1, 168, 110, 65, 114, 114, 111, 119, 59, 1, 8659, 4, 2, 101, 111, 1107, 1141, 102, 116, 4, 3, 65, 82, 84, 1117, 1124, 1136, 114, 114, 111, 119, 59, 1, 8656, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8660, 101, 101, 59, 1, 10980, 110, 103, 4, 2, 76, 82, 1149, 1177, 101, 102, 116, 4, 2, 65, 82, 1158, 1165, 114, 114, 111, 119, 59, 1, 10232, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10234, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10233, 105, 103, 104, 116, 4, 2, 65, 84, 1199, 1206, 114, 114, 111, 119, 59, 1, 8658, 101, 101, 59, 1, 8872, 112, 4, 2, 65, 68, 1218, 1225, 114, 114, 111, 119, 59, 1, 8657, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8661, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8741, 110, 4, 6, 65, 66, 76, 82, 84, 97, 1264, 1292, 1299, 1352, 1391, 1408, 114, 114, 111, 119, 4, 3, 59, 66, 85, 1276, 1278, 1283, 1, 8595, 97, 114, 59, 1, 10515, 112, 65, 114, 114, 111, 119, 59, 1, 8693, 114, 101, 118, 101, 59, 1, 785, 101, 102, 116, 4, 3, 82, 84, 86, 1310, 1323, 1334, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 1, 10576, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10590, 101, 99, 116, 111, 114, 4, 2, 59, 66, 1345, 1347, 1, 8637, 97, 114, 59, 1, 10582, 105, 103, 104, 116, 4, 2, 84, 86, 1362, 1373, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10591, 101, 99, 116, 111, 114, 4, 2, 59, 66, 1384, 1386, 1, 8641, 97, 114, 59, 1, 10583, 101, 101, 4, 2, 59, 65, 1399, 1401, 1, 8868, 114, 114, 111, 119, 59, 1, 8615, 114, 114, 111, 119, 59, 1, 8659, 4, 2, 99, 116, 1421, 1426, 114, 59, 3, 55349, 56479, 114, 111, 107, 59, 1, 272, 4, 16, 78, 84, 97, 99, 100, 102, 103, 108, 109, 111, 112, 113, 115, 116, 117, 120, 1466, 1470, 1478, 1489, 1515, 1520, 1525, 1536, 1544, 1593, 1609, 1617, 1650, 1664, 1668, 1677, 71, 59, 1, 330, 72, 5, 208, 1, 59, 1476, 1, 208, 99, 117, 116, 101, 5, 201, 1, 59, 1487, 1, 201, 4, 3, 97, 105, 121, 1497, 1503, 1512, 114, 111, 110, 59, 1, 282, 114, 99, 5, 202, 1, 59, 1510, 1, 202, 59, 1, 1069, 111, 116, 59, 1, 278, 114, 59, 3, 55349, 56584, 114, 97, 118, 101, 5, 200, 1, 59, 1534, 1, 200, 101, 109, 101, 110, 116, 59, 1, 8712, 4, 2, 97, 112, 1550, 1555, 99, 114, 59, 1, 274, 116, 121, 4, 2, 83, 86, 1563, 1576, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9723, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9643, 4, 2, 103, 112, 1599, 1604, 111, 110, 59, 1, 280, 102, 59, 3, 55349, 56636, 115, 105, 108, 111, 110, 59, 1, 917, 117, 4, 2, 97, 105, 1624, 1640, 108, 4, 2, 59, 84, 1631, 1633, 1, 10869, 105, 108, 100, 101, 59, 1, 8770, 108, 105, 98, 114, 105, 117, 109, 59, 1, 8652, 4, 2, 99, 105, 1656, 1660, 114, 59, 1, 8496, 109, 59, 1, 10867, 97, 59, 1, 919, 109, 108, 5, 203, 1, 59, 1675, 1, 203, 4, 2, 105, 112, 1683, 1689, 115, 116, 115, 59, 1, 8707, 111, 110, 101, 110, 116, 105, 97, 108, 69, 59, 1, 8519, 4, 5, 99, 102, 105, 111, 115, 1713, 1717, 1722, 1762, 1791, 121, 59, 1, 1060, 114, 59, 3, 55349, 56585, 108, 108, 101, 100, 4, 2, 83, 86, 1732, 1745, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9724, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 1, 9642, 4, 3, 112, 114, 117, 1770, 1775, 1781, 102, 59, 3, 55349, 56637, 65, 108, 108, 59, 1, 8704, 114, 105, 101, 114, 116, 114, 102, 59, 1, 8497, 99, 114, 59, 1, 8497, 4, 12, 74, 84, 97, 98, 99, 100, 102, 103, 111, 114, 115, 116, 1822, 1827, 1834, 1848, 1855, 1877, 1882, 1887, 1890, 1896, 1978, 1984, 99, 121, 59, 1, 1027, 5, 62, 1, 59, 1832, 1, 62, 109, 109, 97, 4, 2, 59, 100, 1843, 1845, 1, 915, 59, 1, 988, 114, 101, 118, 101, 59, 1, 286, 4, 3, 101, 105, 121, 1863, 1869, 1874, 100, 105, 108, 59, 1, 290, 114, 99, 59, 1, 284, 59, 1, 1043, 111, 116, 59, 1, 288, 114, 59, 3, 55349, 56586, 59, 1, 8921, 112, 102, 59, 3, 55349, 56638, 101, 97, 116, 101, 114, 4, 6, 69, 70, 71, 76, 83, 84, 1915, 1933, 1944, 1953, 1959, 1971, 113, 117, 97, 108, 4, 2, 59, 76, 1925, 1927, 1, 8805, 101, 115, 115, 59, 1, 8923, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8807, 114, 101, 97, 116, 101, 114, 59, 1, 10914, 101, 115, 115, 59, 1, 8823, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 10878, 105, 108, 100, 101, 59, 1, 8819, 99, 114, 59, 3, 55349, 56482, 59, 1, 8811, 4, 8, 65, 97, 99, 102, 105, 111, 115, 117, 2005, 2012, 2026, 2032, 2036, 2049, 2073, 2089, 82, 68, 99, 121, 59, 1, 1066, 4, 2, 99, 116, 2018, 2023, 101, 107, 59, 1, 711, 59, 1, 94, 105, 114, 99, 59, 1, 292, 114, 59, 1, 8460, 108, 98, 101, 114, 116, 83, 112, 97, 99, 101, 59, 1, 8459, 4, 2, 112, 114, 2055, 2059, 102, 59, 1, 8461, 105, 122, 111, 110, 116, 97, 108, 76, 105, 110, 101, 59, 1, 9472, 4, 2, 99, 116, 2079, 2083, 114, 59, 1, 8459, 114, 111, 107, 59, 1, 294, 109, 112, 4, 2, 68, 69, 2097, 2107, 111, 119, 110, 72, 117, 109, 112, 59, 1, 8782, 113, 117, 97, 108, 59, 1, 8783, 4, 14, 69, 74, 79, 97, 99, 100, 102, 103, 109, 110, 111, 115, 116, 117, 2144, 2149, 2155, 2160, 2171, 2189, 2194, 2198, 2209, 2245, 2307, 2329, 2334, 2341, 99, 121, 59, 1, 1045, 108, 105, 103, 59, 1, 306, 99, 121, 59, 1, 1025, 99, 117, 116, 101, 5, 205, 1, 59, 2169, 1, 205, 4, 2, 105, 121, 2177, 2186, 114, 99, 5, 206, 1, 59, 2184, 1, 206, 59, 1, 1048, 111, 116, 59, 1, 304, 114, 59, 1, 8465, 114, 97, 118, 101, 5, 204, 1, 59, 2207, 1, 204, 4, 3, 59, 97, 112, 2217, 2219, 2238, 1, 8465, 4, 2, 99, 103, 2225, 2229, 114, 59, 1, 298, 105, 110, 97, 114, 121, 73, 59, 1, 8520, 108, 105, 101, 115, 59, 1, 8658, 4, 2, 116, 118, 2251, 2281, 4, 2, 59, 101, 2257, 2259, 1, 8748, 4, 2, 103, 114, 2265, 2271, 114, 97, 108, 59, 1, 8747, 115, 101, 99, 116, 105, 111, 110, 59, 1, 8898, 105, 115, 105, 98, 108, 101, 4, 2, 67, 84, 2293, 2300, 111, 109, 109, 97, 59, 1, 8291, 105, 109, 101, 115, 59, 1, 8290, 4, 3, 103, 112, 116, 2315, 2320, 2325, 111, 110, 59, 1, 302, 102, 59, 3, 55349, 56640, 97, 59, 1, 921, 99, 114, 59, 1, 8464, 105, 108, 100, 101, 59, 1, 296, 4, 2, 107, 109, 2347, 2352, 99, 121, 59, 1, 1030, 108, 5, 207, 1, 59, 2358, 1, 207, 4, 5, 99, 102, 111, 115, 117, 2372, 2386, 2391, 2397, 2414, 4, 2, 105, 121, 2378, 2383, 114, 99, 59, 1, 308, 59, 1, 1049, 114, 59, 3, 55349, 56589, 112, 102, 59, 3, 55349, 56641, 4, 2, 99, 101, 2403, 2408, 114, 59, 3, 55349, 56485, 114, 99, 121, 59, 1, 1032, 107, 99, 121, 59, 1, 1028, 4, 7, 72, 74, 97, 99, 102, 111, 115, 2436, 2441, 2446, 2452, 2467, 2472, 2478, 99, 121, 59, 1, 1061, 99, 121, 59, 1, 1036, 112, 112, 97, 59, 1, 922, 4, 2, 101, 121, 2458, 2464, 100, 105, 108, 59, 1, 310, 59, 1, 1050, 114, 59, 3, 55349, 56590, 112, 102, 59, 3, 55349, 56642, 99, 114, 59, 3, 55349, 56486, 4, 11, 74, 84, 97, 99, 101, 102, 108, 109, 111, 115, 116, 2508, 2513, 2520, 2562, 2585, 2981, 2986, 3004, 3011, 3146, 3167, 99, 121, 59, 1, 1033, 5, 60, 1, 59, 2518, 1, 60, 4, 5, 99, 109, 110, 112, 114, 2532, 2538, 2544, 2548, 2558, 117, 116, 101, 59, 1, 313, 98, 100, 97, 59, 1, 923, 103, 59, 1, 10218, 108, 97, 99, 101, 116, 114, 102, 59, 1, 8466, 114, 59, 1, 8606, 4, 3, 97, 101, 121, 2570, 2576, 2582, 114, 111, 110, 59, 1, 317, 100, 105, 108, 59, 1, 315, 59, 1, 1051, 4, 2, 102, 115, 2591, 2907, 116, 4, 10, 65, 67, 68, 70, 82, 84, 85, 86, 97, 114, 2614, 2663, 2672, 2728, 2735, 2760, 2820, 2870, 2888, 2895, 4, 2, 110, 114, 2620, 2633, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10216, 114, 111, 119, 4, 3, 59, 66, 82, 2644, 2646, 2651, 1, 8592, 97, 114, 59, 1, 8676, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8646, 101, 105, 108, 105, 110, 103, 59, 1, 8968, 111, 4, 2, 117, 119, 2679, 2692, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10214, 110, 4, 2, 84, 86, 2699, 2710, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10593, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2721, 2723, 1, 8643, 97, 114, 59, 1, 10585, 108, 111, 111, 114, 59, 1, 8970, 105, 103, 104, 116, 4, 2, 65, 86, 2745, 2752, 114, 114, 111, 119, 59, 1, 8596, 101, 99, 116, 111, 114, 59, 1, 10574, 4, 2, 101, 114, 2766, 2792, 101, 4, 3, 59, 65, 86, 2775, 2777, 2784, 1, 8867, 114, 114, 111, 119, 59, 1, 8612, 101, 99, 116, 111, 114, 59, 1, 10586, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 2806, 2808, 2813, 1, 8882, 97, 114, 59, 1, 10703, 113, 117, 97, 108, 59, 1, 8884, 112, 4, 3, 68, 84, 86, 2829, 2841, 2852, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 1, 10577, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10592, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2863, 2865, 1, 8639, 97, 114, 59, 1, 10584, 101, 99, 116, 111, 114, 4, 2, 59, 66, 2881, 2883, 1, 8636, 97, 114, 59, 1, 10578, 114, 114, 111, 119, 59, 1, 8656, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8660, 115, 4, 6, 69, 70, 71, 76, 83, 84, 2922, 2936, 2947, 2956, 2962, 2974, 113, 117, 97, 108, 71, 114, 101, 97, 116, 101, 114, 59, 1, 8922, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8806, 114, 101, 97, 116, 101, 114, 59, 1, 8822, 101, 115, 115, 59, 1, 10913, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 10877, 105, 108, 100, 101, 59, 1, 8818, 114, 59, 3, 55349, 56591, 4, 2, 59, 101, 2992, 2994, 1, 8920, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8666, 105, 100, 111, 116, 59, 1, 319, 4, 3, 110, 112, 119, 3019, 3110, 3115, 103, 4, 4, 76, 82, 108, 114, 3030, 3058, 3070, 3098, 101, 102, 116, 4, 2, 65, 82, 3039, 3046, 114, 114, 111, 119, 59, 1, 10229, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10231, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 10230, 101, 102, 116, 4, 2, 97, 114, 3079, 3086, 114, 114, 111, 119, 59, 1, 10232, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10234, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10233, 102, 59, 3, 55349, 56643, 101, 114, 4, 2, 76, 82, 3123, 3134, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8601, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8600, 4, 3, 99, 104, 116, 3154, 3158, 3161, 114, 59, 1, 8466, 59, 1, 8624, 114, 111, 107, 59, 1, 321, 59, 1, 8810, 4, 8, 97, 99, 101, 102, 105, 111, 115, 117, 3188, 3192, 3196, 3222, 3227, 3237, 3243, 3248, 112, 59, 1, 10501, 121, 59, 1, 1052, 4, 2, 100, 108, 3202, 3213, 105, 117, 109, 83, 112, 97, 99, 101, 59, 1, 8287, 108, 105, 110, 116, 114, 102, 59, 1, 8499, 114, 59, 3, 55349, 56592, 110, 117, 115, 80, 108, 117, 115, 59, 1, 8723, 112, 102, 59, 3, 55349, 56644, 99, 114, 59, 1, 8499, 59, 1, 924, 4, 9, 74, 97, 99, 101, 102, 111, 115, 116, 117, 3271, 3276, 3283, 3306, 3422, 3427, 4120, 4126, 4137, 99, 121, 59, 1, 1034, 99, 117, 116, 101, 59, 1, 323, 4, 3, 97, 101, 121, 3291, 3297, 3303, 114, 111, 110, 59, 1, 327, 100, 105, 108, 59, 1, 325, 59, 1, 1053, 4, 3, 103, 115, 119, 3314, 3380, 3415, 97, 116, 105, 118, 101, 4, 3, 77, 84, 86, 3327, 3340, 3365, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 1, 8203, 104, 105, 4, 2, 99, 110, 3348, 3357, 107, 83, 112, 97, 99, 101, 59, 1, 8203, 83, 112, 97, 99, 101, 59, 1, 8203, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 1, 8203, 116, 101, 100, 4, 2, 71, 76, 3389, 3405, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 1, 8811, 101, 115, 115, 76, 101, 115, 115, 59, 1, 8810, 76, 105, 110, 101, 59, 1, 10, 114, 59, 3, 55349, 56593, 4, 4, 66, 110, 112, 116, 3437, 3444, 3460, 3464, 114, 101, 97, 107, 59, 1, 8288, 66, 114, 101, 97, 107, 105, 110, 103, 83, 112, 97, 99, 101, 59, 1, 160, 102, 59, 1, 8469, 4, 13, 59, 67, 68, 69, 71, 72, 76, 78, 80, 82, 83, 84, 86, 3492, 3494, 3517, 3536, 3578, 3657, 3685, 3784, 3823, 3860, 3915, 4066, 4107, 1, 10988, 4, 2, 111, 117, 3500, 3510, 110, 103, 114, 117, 101, 110, 116, 59, 1, 8802, 112, 67, 97, 112, 59, 1, 8813, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8742, 4, 3, 108, 113, 120, 3544, 3552, 3571, 101, 109, 101, 110, 116, 59, 1, 8713, 117, 97, 108, 4, 2, 59, 84, 3561, 3563, 1, 8800, 105, 108, 100, 101, 59, 3, 8770, 824, 105, 115, 116, 115, 59, 1, 8708, 114, 101, 97, 116, 101, 114, 4, 7, 59, 69, 70, 71, 76, 83, 84, 3600, 3602, 3609, 3621, 3631, 3637, 3650, 1, 8815, 113, 117, 97, 108, 59, 1, 8817, 117, 108, 108, 69, 113, 117, 97, 108, 59, 3, 8807, 824, 114, 101, 97, 116, 101, 114, 59, 3, 8811, 824, 101, 115, 115, 59, 1, 8825, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 3, 10878, 824, 105, 108, 100, 101, 59, 1, 8821, 117, 109, 112, 4, 2, 68, 69, 3666, 3677, 111, 119, 110, 72, 117, 109, 112, 59, 3, 8782, 824, 113, 117, 97, 108, 59, 3, 8783, 824, 101, 4, 2, 102, 115, 3692, 3724, 116, 84, 114, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 3709, 3711, 3717, 1, 8938, 97, 114, 59, 3, 10703, 824, 113, 117, 97, 108, 59, 1, 8940, 115, 4, 6, 59, 69, 71, 76, 83, 84, 3739, 3741, 3748, 3757, 3764, 3777, 1, 8814, 113, 117, 97, 108, 59, 1, 8816, 114, 101, 97, 116, 101, 114, 59, 1, 8824, 101, 115, 115, 59, 3, 8810, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 3, 10877, 824, 105, 108, 100, 101, 59, 1, 8820, 101, 115, 116, 101, 100, 4, 2, 71, 76, 3795, 3812, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 3, 10914, 824, 101, 115, 115, 76, 101, 115, 115, 59, 3, 10913, 824, 114, 101, 99, 101, 100, 101, 115, 4, 3, 59, 69, 83, 3838, 3840, 3848, 1, 8832, 113, 117, 97, 108, 59, 3, 10927, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8928, 4, 2, 101, 105, 3866, 3881, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 1, 8716, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 3900, 3902, 3908, 1, 8939, 97, 114, 59, 3, 10704, 824, 113, 117, 97, 108, 59, 1, 8941, 4, 2, 113, 117, 3921, 3973, 117, 97, 114, 101, 83, 117, 4, 2, 98, 112, 3933, 3952, 115, 101, 116, 4, 2, 59, 69, 3942, 3945, 3, 8847, 824, 113, 117, 97, 108, 59, 1, 8930, 101, 114, 115, 101, 116, 4, 2, 59, 69, 3963, 3966, 3, 8848, 824, 113, 117, 97, 108, 59, 1, 8931, 4, 3, 98, 99, 112, 3981, 4e3, 4045, 115, 101, 116, 4, 2, 59, 69, 3990, 3993, 3, 8834, 8402, 113, 117, 97, 108, 59, 1, 8840, 99, 101, 101, 100, 115, 4, 4, 59, 69, 83, 84, 4015, 4017, 4025, 4037, 1, 8833, 113, 117, 97, 108, 59, 3, 10928, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8929, 105, 108, 100, 101, 59, 3, 8831, 824, 101, 114, 115, 101, 116, 4, 2, 59, 69, 4056, 4059, 3, 8835, 8402, 113, 117, 97, 108, 59, 1, 8841, 105, 108, 100, 101, 4, 4, 59, 69, 70, 84, 4080, 4082, 4089, 4100, 1, 8769, 113, 117, 97, 108, 59, 1, 8772, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8775, 105, 108, 100, 101, 59, 1, 8777, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 1, 8740, 99, 114, 59, 3, 55349, 56489, 105, 108, 100, 101, 5, 209, 1, 59, 4135, 1, 209, 59, 1, 925, 4, 14, 69, 97, 99, 100, 102, 103, 109, 111, 112, 114, 115, 116, 117, 118, 4170, 4176, 4187, 4205, 4212, 4217, 4228, 4253, 4259, 4292, 4295, 4316, 4337, 4346, 108, 105, 103, 59, 1, 338, 99, 117, 116, 101, 5, 211, 1, 59, 4185, 1, 211, 4, 2, 105, 121, 4193, 4202, 114, 99, 5, 212, 1, 59, 4200, 1, 212, 59, 1, 1054, 98, 108, 97, 99, 59, 1, 336, 114, 59, 3, 55349, 56594, 114, 97, 118, 101, 5, 210, 1, 59, 4226, 1, 210, 4, 3, 97, 101, 105, 4236, 4241, 4246, 99, 114, 59, 1, 332, 103, 97, 59, 1, 937, 99, 114, 111, 110, 59, 1, 927, 112, 102, 59, 3, 55349, 56646, 101, 110, 67, 117, 114, 108, 121, 4, 2, 68, 81, 4272, 4285, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 1, 8220, 117, 111, 116, 101, 59, 1, 8216, 59, 1, 10836, 4, 2, 99, 108, 4301, 4306, 114, 59, 3, 55349, 56490, 97, 115, 104, 5, 216, 1, 59, 4314, 1, 216, 105, 4, 2, 108, 109, 4323, 4332, 100, 101, 5, 213, 1, 59, 4330, 1, 213, 101, 115, 59, 1, 10807, 109, 108, 5, 214, 1, 59, 4344, 1, 214, 101, 114, 4, 2, 66, 80, 4354, 4380, 4, 2, 97, 114, 4360, 4364, 114, 59, 1, 8254, 97, 99, 4, 2, 101, 107, 4372, 4375, 59, 1, 9182, 101, 116, 59, 1, 9140, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 1, 9180, 4, 9, 97, 99, 102, 104, 105, 108, 111, 114, 115, 4413, 4422, 4426, 4431, 4435, 4438, 4448, 4471, 4561, 114, 116, 105, 97, 108, 68, 59, 1, 8706, 121, 59, 1, 1055, 114, 59, 3, 55349, 56595, 105, 59, 1, 934, 59, 1, 928, 117, 115, 77, 105, 110, 117, 115, 59, 1, 177, 4, 2, 105, 112, 4454, 4467, 110, 99, 97, 114, 101, 112, 108, 97, 110, 101, 59, 1, 8460, 102, 59, 1, 8473, 4, 4, 59, 101, 105, 111, 4481, 4483, 4526, 4531, 1, 10939, 99, 101, 100, 101, 115, 4, 4, 59, 69, 83, 84, 4498, 4500, 4507, 4519, 1, 8826, 113, 117, 97, 108, 59, 1, 10927, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8828, 105, 108, 100, 101, 59, 1, 8830, 109, 101, 59, 1, 8243, 4, 2, 100, 112, 4537, 4543, 117, 99, 116, 59, 1, 8719, 111, 114, 116, 105, 111, 110, 4, 2, 59, 97, 4555, 4557, 1, 8759, 108, 59, 1, 8733, 4, 2, 99, 105, 4567, 4572, 114, 59, 3, 55349, 56491, 59, 1, 936, 4, 4, 85, 102, 111, 115, 4585, 4594, 4599, 4604, 79, 84, 5, 34, 1, 59, 4592, 1, 34, 114, 59, 3, 55349, 56596, 112, 102, 59, 1, 8474, 99, 114, 59, 3, 55349, 56492, 4, 12, 66, 69, 97, 99, 101, 102, 104, 105, 111, 114, 115, 117, 4636, 4642, 4650, 4681, 4704, 4763, 4767, 4771, 5047, 5069, 5081, 5094, 97, 114, 114, 59, 1, 10512, 71, 5, 174, 1, 59, 4648, 1, 174, 4, 3, 99, 110, 114, 4658, 4664, 4668, 117, 116, 101, 59, 1, 340, 103, 59, 1, 10219, 114, 4, 2, 59, 116, 4675, 4677, 1, 8608, 108, 59, 1, 10518, 4, 3, 97, 101, 121, 4689, 4695, 4701, 114, 111, 110, 59, 1, 344, 100, 105, 108, 59, 1, 342, 59, 1, 1056, 4, 2, 59, 118, 4710, 4712, 1, 8476, 101, 114, 115, 101, 4, 2, 69, 85, 4722, 4748, 4, 2, 108, 113, 4728, 4736, 101, 109, 101, 110, 116, 59, 1, 8715, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 8651, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 10607, 114, 59, 1, 8476, 111, 59, 1, 929, 103, 104, 116, 4, 8, 65, 67, 68, 70, 84, 85, 86, 97, 4792, 4840, 4849, 4905, 4912, 4972, 5022, 5040, 4, 2, 110, 114, 4798, 4811, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10217, 114, 111, 119, 4, 3, 59, 66, 76, 4822, 4824, 4829, 1, 8594, 97, 114, 59, 1, 8677, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8644, 101, 105, 108, 105, 110, 103, 59, 1, 8969, 111, 4, 2, 117, 119, 4856, 4869, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 1, 10215, 110, 4, 2, 84, 86, 4876, 4887, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10589, 101, 99, 116, 111, 114, 4, 2, 59, 66, 4898, 4900, 1, 8642, 97, 114, 59, 1, 10581, 108, 111, 111, 114, 59, 1, 8971, 4, 2, 101, 114, 4918, 4944, 101, 4, 3, 59, 65, 86, 4927, 4929, 4936, 1, 8866, 114, 114, 111, 119, 59, 1, 8614, 101, 99, 116, 111, 114, 59, 1, 10587, 105, 97, 110, 103, 108, 101, 4, 3, 59, 66, 69, 4958, 4960, 4965, 1, 8883, 97, 114, 59, 1, 10704, 113, 117, 97, 108, 59, 1, 8885, 112, 4, 3, 68, 84, 86, 4981, 4993, 5004, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 1, 10575, 101, 101, 86, 101, 99, 116, 111, 114, 59, 1, 10588, 101, 99, 116, 111, 114, 4, 2, 59, 66, 5015, 5017, 1, 8638, 97, 114, 59, 1, 10580, 101, 99, 116, 111, 114, 4, 2, 59, 66, 5033, 5035, 1, 8640, 97, 114, 59, 1, 10579, 114, 114, 111, 119, 59, 1, 8658, 4, 2, 112, 117, 5053, 5057, 102, 59, 1, 8477, 110, 100, 73, 109, 112, 108, 105, 101, 115, 59, 1, 10608, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8667, 4, 2, 99, 104, 5087, 5091, 114, 59, 1, 8475, 59, 1, 8625, 108, 101, 68, 101, 108, 97, 121, 101, 100, 59, 1, 10740, 4, 13, 72, 79, 97, 99, 102, 104, 105, 109, 111, 113, 115, 116, 117, 5134, 5150, 5157, 5164, 5198, 5203, 5259, 5265, 5277, 5283, 5374, 5380, 5385, 4, 2, 67, 99, 5140, 5146, 72, 99, 121, 59, 1, 1065, 121, 59, 1, 1064, 70, 84, 99, 121, 59, 1, 1068, 99, 117, 116, 101, 59, 1, 346, 4, 5, 59, 97, 101, 105, 121, 5176, 5178, 5184, 5190, 5195, 1, 10940, 114, 111, 110, 59, 1, 352, 100, 105, 108, 59, 1, 350, 114, 99, 59, 1, 348, 59, 1, 1057, 114, 59, 3, 55349, 56598, 111, 114, 116, 4, 4, 68, 76, 82, 85, 5216, 5227, 5238, 5250, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8595, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8592, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8594, 112, 65, 114, 114, 111, 119, 59, 1, 8593, 103, 109, 97, 59, 1, 931, 97, 108, 108, 67, 105, 114, 99, 108, 101, 59, 1, 8728, 112, 102, 59, 3, 55349, 56650, 4, 2, 114, 117, 5289, 5293, 116, 59, 1, 8730, 97, 114, 101, 4, 4, 59, 73, 83, 85, 5306, 5308, 5322, 5367, 1, 9633, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 1, 8851, 117, 4, 2, 98, 112, 5329, 5347, 115, 101, 116, 4, 2, 59, 69, 5338, 5340, 1, 8847, 113, 117, 97, 108, 59, 1, 8849, 101, 114, 115, 101, 116, 4, 2, 59, 69, 5358, 5360, 1, 8848, 113, 117, 97, 108, 59, 1, 8850, 110, 105, 111, 110, 59, 1, 8852, 99, 114, 59, 3, 55349, 56494, 97, 114, 59, 1, 8902, 4, 4, 98, 99, 109, 112, 5395, 5420, 5475, 5478, 4, 2, 59, 115, 5401, 5403, 1, 8912, 101, 116, 4, 2, 59, 69, 5411, 5413, 1, 8912, 113, 117, 97, 108, 59, 1, 8838, 4, 2, 99, 104, 5426, 5468, 101, 101, 100, 115, 4, 4, 59, 69, 83, 84, 5440, 5442, 5449, 5461, 1, 8827, 113, 117, 97, 108, 59, 1, 10928, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 1, 8829, 105, 108, 100, 101, 59, 1, 8831, 84, 104, 97, 116, 59, 1, 8715, 59, 1, 8721, 4, 3, 59, 101, 115, 5486, 5488, 5507, 1, 8913, 114, 115, 101, 116, 4, 2, 59, 69, 5498, 5500, 1, 8835, 113, 117, 97, 108, 59, 1, 8839, 101, 116, 59, 1, 8913, 4, 11, 72, 82, 83, 97, 99, 102, 104, 105, 111, 114, 115, 5536, 5546, 5552, 5567, 5579, 5602, 5607, 5655, 5695, 5701, 5711, 79, 82, 78, 5, 222, 1, 59, 5544, 1, 222, 65, 68, 69, 59, 1, 8482, 4, 2, 72, 99, 5558, 5563, 99, 121, 59, 1, 1035, 121, 59, 1, 1062, 4, 2, 98, 117, 5573, 5576, 59, 1, 9, 59, 1, 932, 4, 3, 97, 101, 121, 5587, 5593, 5599, 114, 111, 110, 59, 1, 356, 100, 105, 108, 59, 1, 354, 59, 1, 1058, 114, 59, 3, 55349, 56599, 4, 2, 101, 105, 5613, 5631, 4, 2, 114, 116, 5619, 5627, 101, 102, 111, 114, 101, 59, 1, 8756, 97, 59, 1, 920, 4, 2, 99, 110, 5637, 5647, 107, 83, 112, 97, 99, 101, 59, 3, 8287, 8202, 83, 112, 97, 99, 101, 59, 1, 8201, 108, 100, 101, 4, 4, 59, 69, 70, 84, 5668, 5670, 5677, 5688, 1, 8764, 113, 117, 97, 108, 59, 1, 8771, 117, 108, 108, 69, 113, 117, 97, 108, 59, 1, 8773, 105, 108, 100, 101, 59, 1, 8776, 112, 102, 59, 3, 55349, 56651, 105, 112, 108, 101, 68, 111, 116, 59, 1, 8411, 4, 2, 99, 116, 5717, 5722, 114, 59, 3, 55349, 56495, 114, 111, 107, 59, 1, 358, 4, 14, 97, 98, 99, 100, 102, 103, 109, 110, 111, 112, 114, 115, 116, 117, 5758, 5789, 5805, 5823, 5830, 5835, 5846, 5852, 5921, 5937, 6089, 6095, 6101, 6108, 4, 2, 99, 114, 5764, 5774, 117, 116, 101, 5, 218, 1, 59, 5772, 1, 218, 114, 4, 2, 59, 111, 5781, 5783, 1, 8607, 99, 105, 114, 59, 1, 10569, 114, 4, 2, 99, 101, 5796, 5800, 121, 59, 1, 1038, 118, 101, 59, 1, 364, 4, 2, 105, 121, 5811, 5820, 114, 99, 5, 219, 1, 59, 5818, 1, 219, 59, 1, 1059, 98, 108, 97, 99, 59, 1, 368, 114, 59, 3, 55349, 56600, 114, 97, 118, 101, 5, 217, 1, 59, 5844, 1, 217, 97, 99, 114, 59, 1, 362, 4, 2, 100, 105, 5858, 5905, 101, 114, 4, 2, 66, 80, 5866, 5892, 4, 2, 97, 114, 5872, 5876, 114, 59, 1, 95, 97, 99, 4, 2, 101, 107, 5884, 5887, 59, 1, 9183, 101, 116, 59, 1, 9141, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 1, 9181, 111, 110, 4, 2, 59, 80, 5913, 5915, 1, 8899, 108, 117, 115, 59, 1, 8846, 4, 2, 103, 112, 5927, 5932, 111, 110, 59, 1, 370, 102, 59, 3, 55349, 56652, 4, 8, 65, 68, 69, 84, 97, 100, 112, 115, 5955, 5985, 5996, 6009, 6026, 6033, 6044, 6075, 114, 114, 111, 119, 4, 3, 59, 66, 68, 5967, 5969, 5974, 1, 8593, 97, 114, 59, 1, 10514, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8645, 111, 119, 110, 65, 114, 114, 111, 119, 59, 1, 8597, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 1, 10606, 101, 101, 4, 2, 59, 65, 6017, 6019, 1, 8869, 114, 114, 111, 119, 59, 1, 8613, 114, 114, 111, 119, 59, 1, 8657, 111, 119, 110, 97, 114, 114, 111, 119, 59, 1, 8661, 101, 114, 4, 2, 76, 82, 6052, 6063, 101, 102, 116, 65, 114, 114, 111, 119, 59, 1, 8598, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 1, 8599, 105, 4, 2, 59, 108, 6082, 6084, 1, 978, 111, 110, 59, 1, 933, 105, 110, 103, 59, 1, 366, 99, 114, 59, 3, 55349, 56496, 105, 108, 100, 101, 59, 1, 360, 109, 108, 5, 220, 1, 59, 6115, 1, 220, 4, 9, 68, 98, 99, 100, 101, 102, 111, 115, 118, 6137, 6143, 6148, 6152, 6166, 6250, 6255, 6261, 6267, 97, 115, 104, 59, 1, 8875, 97, 114, 59, 1, 10987, 121, 59, 1, 1042, 97, 115, 104, 4, 2, 59, 108, 6161, 6163, 1, 8873, 59, 1, 10982, 4, 2, 101, 114, 6172, 6175, 59, 1, 8897, 4, 3, 98, 116, 121, 6183, 6188, 6238, 97, 114, 59, 1, 8214, 4, 2, 59, 105, 6194, 6196, 1, 8214, 99, 97, 108, 4, 4, 66, 76, 83, 84, 6209, 6214, 6220, 6231, 97, 114, 59, 1, 8739, 105, 110, 101, 59, 1, 124, 101, 112, 97, 114, 97, 116, 111, 114, 59, 1, 10072, 105, 108, 100, 101, 59, 1, 8768, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 1, 8202, 114, 59, 3, 55349, 56601, 112, 102, 59, 3, 55349, 56653, 99, 114, 59, 3, 55349, 56497, 100, 97, 115, 104, 59, 1, 8874, 4, 5, 99, 101, 102, 111, 115, 6286, 6292, 6298, 6303, 6309, 105, 114, 99, 59, 1, 372, 100, 103, 101, 59, 1, 8896, 114, 59, 3, 55349, 56602, 112, 102, 59, 3, 55349, 56654, 99, 114, 59, 3, 55349, 56498, 4, 4, 102, 105, 111, 115, 6325, 6330, 6333, 6339, 114, 59, 3, 55349, 56603, 59, 1, 926, 112, 102, 59, 3, 55349, 56655, 99, 114, 59, 3, 55349, 56499, 4, 9, 65, 73, 85, 97, 99, 102, 111, 115, 117, 6365, 6370, 6375, 6380, 6391, 6405, 6410, 6416, 6422, 99, 121, 59, 1, 1071, 99, 121, 59, 1, 1031, 99, 121, 59, 1, 1070, 99, 117, 116, 101, 5, 221, 1, 59, 6389, 1, 221, 4, 2, 105, 121, 6397, 6402, 114, 99, 59, 1, 374, 59, 1, 1067, 114, 59, 3, 55349, 56604, 112, 102, 59, 3, 55349, 56656, 99, 114, 59, 3, 55349, 56500, 109, 108, 59, 1, 376, 4, 8, 72, 97, 99, 100, 101, 102, 111, 115, 6445, 6450, 6457, 6472, 6477, 6501, 6505, 6510, 99, 121, 59, 1, 1046, 99, 117, 116, 101, 59, 1, 377, 4, 2, 97, 121, 6463, 6469, 114, 111, 110, 59, 1, 381, 59, 1, 1047, 111, 116, 59, 1, 379, 4, 2, 114, 116, 6483, 6497, 111, 87, 105, 100, 116, 104, 83, 112, 97, 99, 101, 59, 1, 8203, 97, 59, 1, 918, 114, 59, 1, 8488, 112, 102, 59, 1, 8484, 99, 114, 59, 3, 55349, 56501, 4, 16, 97, 98, 99, 101, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 119, 6550, 6561, 6568, 6612, 6622, 6634, 6645, 6672, 6699, 6854, 6870, 6923, 6933, 6963, 6974, 6983, 99, 117, 116, 101, 5, 225, 1, 59, 6559, 1, 225, 114, 101, 118, 101, 59, 1, 259, 4, 6, 59, 69, 100, 105, 117, 121, 6582, 6584, 6588, 6591, 6600, 6609, 1, 8766, 59, 3, 8766, 819, 59, 1, 8767, 114, 99, 5, 226, 1, 59, 6598, 1, 226, 116, 101, 5, 180, 1, 59, 6607, 1, 180, 59, 1, 1072, 108, 105, 103, 5, 230, 1, 59, 6620, 1, 230, 4, 2, 59, 114, 6628, 6630, 1, 8289, 59, 3, 55349, 56606, 114, 97, 118, 101, 5, 224, 1, 59, 6643, 1, 224, 4, 2, 101, 112, 6651, 6667, 4, 2, 102, 112, 6657, 6663, 115, 121, 109, 59, 1, 8501, 104, 59, 1, 8501, 104, 97, 59, 1, 945, 4, 2, 97, 112, 6678, 6692, 4, 2, 99, 108, 6684, 6688, 114, 59, 1, 257, 103, 59, 1, 10815, 5, 38, 1, 59, 6697, 1, 38, 4, 2, 100, 103, 6705, 6737, 4, 5, 59, 97, 100, 115, 118, 6717, 6719, 6724, 6727, 6734, 1, 8743, 110, 100, 59, 1, 10837, 59, 1, 10844, 108, 111, 112, 101, 59, 1, 10840, 59, 1, 10842, 4, 7, 59, 101, 108, 109, 114, 115, 122, 6753, 6755, 6758, 6762, 6814, 6835, 6848, 1, 8736, 59, 1, 10660, 101, 59, 1, 8736, 115, 100, 4, 2, 59, 97, 6770, 6772, 1, 8737, 4, 8, 97, 98, 99, 100, 101, 102, 103, 104, 6790, 6793, 6796, 6799, 6802, 6805, 6808, 6811, 59, 1, 10664, 59, 1, 10665, 59, 1, 10666, 59, 1, 10667, 59, 1, 10668, 59, 1, 10669, 59, 1, 10670, 59, 1, 10671, 116, 4, 2, 59, 118, 6821, 6823, 1, 8735, 98, 4, 2, 59, 100, 6830, 6832, 1, 8894, 59, 1, 10653, 4, 2, 112, 116, 6841, 6845, 104, 59, 1, 8738, 59, 1, 197, 97, 114, 114, 59, 1, 9084, 4, 2, 103, 112, 6860, 6865, 111, 110, 59, 1, 261, 102, 59, 3, 55349, 56658, 4, 7, 59, 69, 97, 101, 105, 111, 112, 6886, 6888, 6891, 6897, 6900, 6904, 6908, 1, 8776, 59, 1, 10864, 99, 105, 114, 59, 1, 10863, 59, 1, 8778, 100, 59, 1, 8779, 115, 59, 1, 39, 114, 111, 120, 4, 2, 59, 101, 6917, 6919, 1, 8776, 113, 59, 1, 8778, 105, 110, 103, 5, 229, 1, 59, 6931, 1, 229, 4, 3, 99, 116, 121, 6941, 6946, 6949, 114, 59, 3, 55349, 56502, 59, 1, 42, 109, 112, 4, 2, 59, 101, 6957, 6959, 1, 8776, 113, 59, 1, 8781, 105, 108, 100, 101, 5, 227, 1, 59, 6972, 1, 227, 109, 108, 5, 228, 1, 59, 6981, 1, 228, 4, 2, 99, 105, 6989, 6997, 111, 110, 105, 110, 116, 59, 1, 8755, 110, 116, 59, 1, 10769, 4, 16, 78, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 111, 112, 114, 115, 117, 7036, 7041, 7119, 7135, 7149, 7155, 7219, 7224, 7347, 7354, 7463, 7489, 7786, 7793, 7814, 7866, 111, 116, 59, 1, 10989, 4, 2, 99, 114, 7047, 7094, 107, 4, 4, 99, 101, 112, 115, 7058, 7064, 7073, 7080, 111, 110, 103, 59, 1, 8780, 112, 115, 105, 108, 111, 110, 59, 1, 1014, 114, 105, 109, 101, 59, 1, 8245, 105, 109, 4, 2, 59, 101, 7088, 7090, 1, 8765, 113, 59, 1, 8909, 4, 2, 118, 119, 7100, 7105, 101, 101, 59, 1, 8893, 101, 100, 4, 2, 59, 103, 7113, 7115, 1, 8965, 101, 59, 1, 8965, 114, 107, 4, 2, 59, 116, 7127, 7129, 1, 9141, 98, 114, 107, 59, 1, 9142, 4, 2, 111, 121, 7141, 7146, 110, 103, 59, 1, 8780, 59, 1, 1073, 113, 117, 111, 59, 1, 8222, 4, 5, 99, 109, 112, 114, 116, 7167, 7181, 7188, 7193, 7199, 97, 117, 115, 4, 2, 59, 101, 7176, 7178, 1, 8757, 59, 1, 8757, 112, 116, 121, 118, 59, 1, 10672, 115, 105, 59, 1, 1014, 110, 111, 117, 59, 1, 8492, 4, 3, 97, 104, 119, 7207, 7210, 7213, 59, 1, 946, 59, 1, 8502, 101, 101, 110, 59, 1, 8812, 114, 59, 3, 55349, 56607, 103, 4, 7, 99, 111, 115, 116, 117, 118, 119, 7241, 7262, 7288, 7305, 7328, 7335, 7340, 4, 3, 97, 105, 117, 7249, 7253, 7258, 112, 59, 1, 8898, 114, 99, 59, 1, 9711, 112, 59, 1, 8899, 4, 3, 100, 112, 116, 7270, 7275, 7281, 111, 116, 59, 1, 10752, 108, 117, 115, 59, 1, 10753, 105, 109, 101, 115, 59, 1, 10754, 4, 2, 113, 116, 7294, 7300, 99, 117, 112, 59, 1, 10758, 97, 114, 59, 1, 9733, 114, 105, 97, 110, 103, 108, 101, 4, 2, 100, 117, 7318, 7324, 111, 119, 110, 59, 1, 9661, 112, 59, 1, 9651, 112, 108, 117, 115, 59, 1, 10756, 101, 101, 59, 1, 8897, 101, 100, 103, 101, 59, 1, 8896, 97, 114, 111, 119, 59, 1, 10509, 4, 3, 97, 107, 111, 7362, 7436, 7458, 4, 2, 99, 110, 7368, 7432, 107, 4, 3, 108, 115, 116, 7377, 7386, 7394, 111, 122, 101, 110, 103, 101, 59, 1, 10731, 113, 117, 97, 114, 101, 59, 1, 9642, 114, 105, 97, 110, 103, 108, 101, 4, 4, 59, 100, 108, 114, 7411, 7413, 7419, 7425, 1, 9652, 111, 119, 110, 59, 1, 9662, 101, 102, 116, 59, 1, 9666, 105, 103, 104, 116, 59, 1, 9656, 107, 59, 1, 9251, 4, 2, 49, 51, 7442, 7454, 4, 2, 50, 52, 7448, 7451, 59, 1, 9618, 59, 1, 9617, 52, 59, 1, 9619, 99, 107, 59, 1, 9608, 4, 2, 101, 111, 7469, 7485, 4, 2, 59, 113, 7475, 7478, 3, 61, 8421, 117, 105, 118, 59, 3, 8801, 8421, 116, 59, 1, 8976, 4, 4, 112, 116, 119, 120, 7499, 7504, 7517, 7523, 102, 59, 3, 55349, 56659, 4, 2, 59, 116, 7510, 7512, 1, 8869, 111, 109, 59, 1, 8869, 116, 105, 101, 59, 1, 8904, 4, 12, 68, 72, 85, 86, 98, 100, 104, 109, 112, 116, 117, 118, 7549, 7571, 7597, 7619, 7655, 7660, 7682, 7708, 7715, 7721, 7728, 7750, 4, 4, 76, 82, 108, 114, 7559, 7562, 7565, 7568, 59, 1, 9559, 59, 1, 9556, 59, 1, 9558, 59, 1, 9555, 4, 5, 59, 68, 85, 100, 117, 7583, 7585, 7588, 7591, 7594, 1, 9552, 59, 1, 9574, 59, 1, 9577, 59, 1, 9572, 59, 1, 9575, 4, 4, 76, 82, 108, 114, 7607, 7610, 7613, 7616, 59, 1, 9565, 59, 1, 9562, 59, 1, 9564, 59, 1, 9561, 4, 7, 59, 72, 76, 82, 104, 108, 114, 7635, 7637, 7640, 7643, 7646, 7649, 7652, 1, 9553, 59, 1, 9580, 59, 1, 9571, 59, 1, 9568, 59, 1, 9579, 59, 1, 9570, 59, 1, 9567, 111, 120, 59, 1, 10697, 4, 4, 76, 82, 108, 114, 7670, 7673, 7676, 7679, 59, 1, 9557, 59, 1, 9554, 59, 1, 9488, 59, 1, 9484, 4, 5, 59, 68, 85, 100, 117, 7694, 7696, 7699, 7702, 7705, 1, 9472, 59, 1, 9573, 59, 1, 9576, 59, 1, 9516, 59, 1, 9524, 105, 110, 117, 115, 59, 1, 8863, 108, 117, 115, 59, 1, 8862, 105, 109, 101, 115, 59, 1, 8864, 4, 4, 76, 82, 108, 114, 7738, 7741, 7744, 7747, 59, 1, 9563, 59, 1, 9560, 59, 1, 9496, 59, 1, 9492, 4, 7, 59, 72, 76, 82, 104, 108, 114, 7766, 7768, 7771, 7774, 7777, 7780, 7783, 1, 9474, 59, 1, 9578, 59, 1, 9569, 59, 1, 9566, 59, 1, 9532, 59, 1, 9508, 59, 1, 9500, 114, 105, 109, 101, 59, 1, 8245, 4, 2, 101, 118, 7799, 7804, 118, 101, 59, 1, 728, 98, 97, 114, 5, 166, 1, 59, 7812, 1, 166, 4, 4, 99, 101, 105, 111, 7824, 7829, 7834, 7846, 114, 59, 3, 55349, 56503, 109, 105, 59, 1, 8271, 109, 4, 2, 59, 101, 7841, 7843, 1, 8765, 59, 1, 8909, 108, 4, 3, 59, 98, 104, 7855, 7857, 7860, 1, 92, 59, 1, 10693, 115, 117, 98, 59, 1, 10184, 4, 2, 108, 109, 7872, 7885, 108, 4, 2, 59, 101, 7879, 7881, 1, 8226, 116, 59, 1, 8226, 112, 4, 3, 59, 69, 101, 7894, 7896, 7899, 1, 8782, 59, 1, 10926, 4, 2, 59, 113, 7905, 7907, 1, 8783, 59, 1, 8783, 4, 15, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 116, 117, 119, 121, 7942, 8021, 8075, 8080, 8121, 8126, 8157, 8279, 8295, 8430, 8446, 8485, 8491, 8707, 8726, 4, 3, 99, 112, 114, 7950, 7956, 8007, 117, 116, 101, 59, 1, 263, 4, 6, 59, 97, 98, 99, 100, 115, 7970, 7972, 7977, 7984, 7998, 8003, 1, 8745, 110, 100, 59, 1, 10820, 114, 99, 117, 112, 59, 1, 10825, 4, 2, 97, 117, 7990, 7994, 112, 59, 1, 10827, 112, 59, 1, 10823, 111, 116, 59, 1, 10816, 59, 3, 8745, 65024, 4, 2, 101, 111, 8013, 8017, 116, 59, 1, 8257, 110, 59, 1, 711, 4, 4, 97, 101, 105, 117, 8031, 8046, 8056, 8061, 4, 2, 112, 114, 8037, 8041, 115, 59, 1, 10829, 111, 110, 59, 1, 269, 100, 105, 108, 5, 231, 1, 59, 8054, 1, 231, 114, 99, 59, 1, 265, 112, 115, 4, 2, 59, 115, 8069, 8071, 1, 10828, 109, 59, 1, 10832, 111, 116, 59, 1, 267, 4, 3, 100, 109, 110, 8088, 8097, 8104, 105, 108, 5, 184, 1, 59, 8095, 1, 184, 112, 116, 121, 118, 59, 1, 10674, 116, 5, 162, 2, 59, 101, 8112, 8114, 1, 162, 114, 100, 111, 116, 59, 1, 183, 114, 59, 3, 55349, 56608, 4, 3, 99, 101, 105, 8134, 8138, 8154, 121, 59, 1, 1095, 99, 107, 4, 2, 59, 109, 8146, 8148, 1, 10003, 97, 114, 107, 59, 1, 10003, 59, 1, 967, 114, 4, 7, 59, 69, 99, 101, 102, 109, 115, 8174, 8176, 8179, 8258, 8261, 8268, 8273, 1, 9675, 59, 1, 10691, 4, 3, 59, 101, 108, 8187, 8189, 8193, 1, 710, 113, 59, 1, 8791, 101, 4, 2, 97, 100, 8200, 8223, 114, 114, 111, 119, 4, 2, 108, 114, 8210, 8216, 101, 102, 116, 59, 1, 8634, 105, 103, 104, 116, 59, 1, 8635, 4, 5, 82, 83, 97, 99, 100, 8235, 8238, 8241, 8246, 8252, 59, 1, 174, 59, 1, 9416, 115, 116, 59, 1, 8859, 105, 114, 99, 59, 1, 8858, 97, 115, 104, 59, 1, 8861, 59, 1, 8791, 110, 105, 110, 116, 59, 1, 10768, 105, 100, 59, 1, 10991, 99, 105, 114, 59, 1, 10690, 117, 98, 115, 4, 2, 59, 117, 8288, 8290, 1, 9827, 105, 116, 59, 1, 9827, 4, 4, 108, 109, 110, 112, 8305, 8326, 8376, 8400, 111, 110, 4, 2, 59, 101, 8313, 8315, 1, 58, 4, 2, 59, 113, 8321, 8323, 1, 8788, 59, 1, 8788, 4, 2, 109, 112, 8332, 8344, 97, 4, 2, 59, 116, 8339, 8341, 1, 44, 59, 1, 64, 4, 3, 59, 102, 108, 8352, 8354, 8358, 1, 8705, 110, 59, 1, 8728, 101, 4, 2, 109, 120, 8365, 8371, 101, 110, 116, 59, 1, 8705, 101, 115, 59, 1, 8450, 4, 2, 103, 105, 8382, 8395, 4, 2, 59, 100, 8388, 8390, 1, 8773, 111, 116, 59, 1, 10861, 110, 116, 59, 1, 8750, 4, 3, 102, 114, 121, 8408, 8412, 8417, 59, 3, 55349, 56660, 111, 100, 59, 1, 8720, 5, 169, 2, 59, 115, 8424, 8426, 1, 169, 114, 59, 1, 8471, 4, 2, 97, 111, 8436, 8441, 114, 114, 59, 1, 8629, 115, 115, 59, 1, 10007, 4, 2, 99, 117, 8452, 8457, 114, 59, 3, 55349, 56504, 4, 2, 98, 112, 8463, 8474, 4, 2, 59, 101, 8469, 8471, 1, 10959, 59, 1, 10961, 4, 2, 59, 101, 8480, 8482, 1, 10960, 59, 1, 10962, 100, 111, 116, 59, 1, 8943, 4, 7, 100, 101, 108, 112, 114, 118, 119, 8507, 8522, 8536, 8550, 8600, 8697, 8702, 97, 114, 114, 4, 2, 108, 114, 8516, 8519, 59, 1, 10552, 59, 1, 10549, 4, 2, 112, 115, 8528, 8532, 114, 59, 1, 8926, 99, 59, 1, 8927, 97, 114, 114, 4, 2, 59, 112, 8545, 8547, 1, 8630, 59, 1, 10557, 4, 6, 59, 98, 99, 100, 111, 115, 8564, 8566, 8573, 8587, 8592, 8596, 1, 8746, 114, 99, 97, 112, 59, 1, 10824, 4, 2, 97, 117, 8579, 8583, 112, 59, 1, 10822, 112, 59, 1, 10826, 111, 116, 59, 1, 8845, 114, 59, 1, 10821, 59, 3, 8746, 65024, 4, 4, 97, 108, 114, 118, 8610, 8623, 8663, 8672, 114, 114, 4, 2, 59, 109, 8618, 8620, 1, 8631, 59, 1, 10556, 121, 4, 3, 101, 118, 119, 8632, 8651, 8656, 113, 4, 2, 112, 115, 8639, 8645, 114, 101, 99, 59, 1, 8926, 117, 99, 99, 59, 1, 8927, 101, 101, 59, 1, 8910, 101, 100, 103, 101, 59, 1, 8911, 101, 110, 5, 164, 1, 59, 8670, 1, 164, 101, 97, 114, 114, 111, 119, 4, 2, 108, 114, 8684, 8690, 101, 102, 116, 59, 1, 8630, 105, 103, 104, 116, 59, 1, 8631, 101, 101, 59, 1, 8910, 101, 100, 59, 1, 8911, 4, 2, 99, 105, 8713, 8721, 111, 110, 105, 110, 116, 59, 1, 8754, 110, 116, 59, 1, 8753, 108, 99, 116, 121, 59, 1, 9005, 4, 19, 65, 72, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 111, 114, 115, 116, 117, 119, 122, 8773, 8778, 8783, 8821, 8839, 8854, 8887, 8914, 8930, 8944, 9036, 9041, 9058, 9197, 9227, 9258, 9281, 9297, 9305, 114, 114, 59, 1, 8659, 97, 114, 59, 1, 10597, 4, 4, 103, 108, 114, 115, 8793, 8799, 8805, 8809, 103, 101, 114, 59, 1, 8224, 101, 116, 104, 59, 1, 8504, 114, 59, 1, 8595, 104, 4, 2, 59, 118, 8816, 8818, 1, 8208, 59, 1, 8867, 4, 2, 107, 108, 8827, 8834, 97, 114, 111, 119, 59, 1, 10511, 97, 99, 59, 1, 733, 4, 2, 97, 121, 8845, 8851, 114, 111, 110, 59, 1, 271, 59, 1, 1076, 4, 3, 59, 97, 111, 8862, 8864, 8880, 1, 8518, 4, 2, 103, 114, 8870, 8876, 103, 101, 114, 59, 1, 8225, 114, 59, 1, 8650, 116, 115, 101, 113, 59, 1, 10871, 4, 3, 103, 108, 109, 8895, 8902, 8907, 5, 176, 1, 59, 8900, 1, 176, 116, 97, 59, 1, 948, 112, 116, 121, 118, 59, 1, 10673, 4, 2, 105, 114, 8920, 8926, 115, 104, 116, 59, 1, 10623, 59, 3, 55349, 56609, 97, 114, 4, 2, 108, 114, 8938, 8941, 59, 1, 8643, 59, 1, 8642, 4, 5, 97, 101, 103, 115, 118, 8956, 8986, 8989, 8996, 9001, 109, 4, 3, 59, 111, 115, 8965, 8967, 8983, 1, 8900, 110, 100, 4, 2, 59, 115, 8975, 8977, 1, 8900, 117, 105, 116, 59, 1, 9830, 59, 1, 9830, 59, 1, 168, 97, 109, 109, 97, 59, 1, 989, 105, 110, 59, 1, 8946, 4, 3, 59, 105, 111, 9009, 9011, 9031, 1, 247, 100, 101, 5, 247, 2, 59, 111, 9020, 9022, 1, 247, 110, 116, 105, 109, 101, 115, 59, 1, 8903, 110, 120, 59, 1, 8903, 99, 121, 59, 1, 1106, 99, 4, 2, 111, 114, 9048, 9053, 114, 110, 59, 1, 8990, 111, 112, 59, 1, 8973, 4, 5, 108, 112, 116, 117, 119, 9070, 9076, 9081, 9130, 9144, 108, 97, 114, 59, 1, 36, 102, 59, 3, 55349, 56661, 4, 5, 59, 101, 109, 112, 115, 9093, 9095, 9109, 9116, 9122, 1, 729, 113, 4, 2, 59, 100, 9102, 9104, 1, 8784, 111, 116, 59, 1, 8785, 105, 110, 117, 115, 59, 1, 8760, 108, 117, 115, 59, 1, 8724, 113, 117, 97, 114, 101, 59, 1, 8865, 98, 108, 101, 98, 97, 114, 119, 101, 100, 103, 101, 59, 1, 8966, 110, 4, 3, 97, 100, 104, 9153, 9160, 9172, 114, 114, 111, 119, 59, 1, 8595, 111, 119, 110, 97, 114, 114, 111, 119, 115, 59, 1, 8650, 97, 114, 112, 111, 111, 110, 4, 2, 108, 114, 9184, 9190, 101, 102, 116, 59, 1, 8643, 105, 103, 104, 116, 59, 1, 8642, 4, 2, 98, 99, 9203, 9211, 107, 97, 114, 111, 119, 59, 1, 10512, 4, 2, 111, 114, 9217, 9222, 114, 110, 59, 1, 8991, 111, 112, 59, 1, 8972, 4, 3, 99, 111, 116, 9235, 9248, 9252, 4, 2, 114, 121, 9241, 9245, 59, 3, 55349, 56505, 59, 1, 1109, 108, 59, 1, 10742, 114, 111, 107, 59, 1, 273, 4, 2, 100, 114, 9264, 9269, 111, 116, 59, 1, 8945, 105, 4, 2, 59, 102, 9276, 9278, 1, 9663, 59, 1, 9662, 4, 2, 97, 104, 9287, 9292, 114, 114, 59, 1, 8693, 97, 114, 59, 1, 10607, 97, 110, 103, 108, 101, 59, 1, 10662, 4, 2, 99, 105, 9311, 9315, 121, 59, 1, 1119, 103, 114, 97, 114, 114, 59, 1, 10239, 4, 18, 68, 97, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 9361, 9376, 9398, 9439, 9444, 9447, 9462, 9495, 9531, 9585, 9598, 9614, 9659, 9755, 9771, 9792, 9808, 9826, 4, 2, 68, 111, 9367, 9372, 111, 116, 59, 1, 10871, 116, 59, 1, 8785, 4, 2, 99, 115, 9382, 9392, 117, 116, 101, 5, 233, 1, 59, 9390, 1, 233, 116, 101, 114, 59, 1, 10862, 4, 4, 97, 105, 111, 121, 9408, 9414, 9430, 9436, 114, 111, 110, 59, 1, 283, 114, 4, 2, 59, 99, 9421, 9423, 1, 8790, 5, 234, 1, 59, 9428, 1, 234, 108, 111, 110, 59, 1, 8789, 59, 1, 1101, 111, 116, 59, 1, 279, 59, 1, 8519, 4, 2, 68, 114, 9453, 9458, 111, 116, 59, 1, 8786, 59, 3, 55349, 56610, 4, 3, 59, 114, 115, 9470, 9472, 9482, 1, 10906, 97, 118, 101, 5, 232, 1, 59, 9480, 1, 232, 4, 2, 59, 100, 9488, 9490, 1, 10902, 111, 116, 59, 1, 10904, 4, 4, 59, 105, 108, 115, 9505, 9507, 9515, 9518, 1, 10905, 110, 116, 101, 114, 115, 59, 1, 9191, 59, 1, 8467, 4, 2, 59, 100, 9524, 9526, 1, 10901, 111, 116, 59, 1, 10903, 4, 3, 97, 112, 115, 9539, 9544, 9564, 99, 114, 59, 1, 275, 116, 121, 4, 3, 59, 115, 118, 9554, 9556, 9561, 1, 8709, 101, 116, 59, 1, 8709, 59, 1, 8709, 112, 4, 2, 49, 59, 9571, 9583, 4, 2, 51, 52, 9577, 9580, 59, 1, 8196, 59, 1, 8197, 1, 8195, 4, 2, 103, 115, 9591, 9594, 59, 1, 331, 112, 59, 1, 8194, 4, 2, 103, 112, 9604, 9609, 111, 110, 59, 1, 281, 102, 59, 3, 55349, 56662, 4, 3, 97, 108, 115, 9622, 9635, 9640, 114, 4, 2, 59, 115, 9629, 9631, 1, 8917, 108, 59, 1, 10723, 117, 115, 59, 1, 10865, 105, 4, 3, 59, 108, 118, 9649, 9651, 9656, 1, 949, 111, 110, 59, 1, 949, 59, 1, 1013, 4, 4, 99, 115, 117, 118, 9669, 9686, 9716, 9747, 4, 2, 105, 111, 9675, 9680, 114, 99, 59, 1, 8790, 108, 111, 110, 59, 1, 8789, 4, 2, 105, 108, 9692, 9696, 109, 59, 1, 8770, 97, 110, 116, 4, 2, 103, 108, 9705, 9710, 116, 114, 59, 1, 10902, 101, 115, 115, 59, 1, 10901, 4, 3, 97, 101, 105, 9724, 9729, 9734, 108, 115, 59, 1, 61, 115, 116, 59, 1, 8799, 118, 4, 2, 59, 68, 9741, 9743, 1, 8801, 68, 59, 1, 10872, 112, 97, 114, 115, 108, 59, 1, 10725, 4, 2, 68, 97, 9761, 9766, 111, 116, 59, 1, 8787, 114, 114, 59, 1, 10609, 4, 3, 99, 100, 105, 9779, 9783, 9788, 114, 59, 1, 8495, 111, 116, 59, 1, 8784, 109, 59, 1, 8770, 4, 2, 97, 104, 9798, 9801, 59, 1, 951, 5, 240, 1, 59, 9806, 1, 240, 4, 2, 109, 114, 9814, 9822, 108, 5, 235, 1, 59, 9820, 1, 235, 111, 59, 1, 8364, 4, 3, 99, 105, 112, 9834, 9838, 9843, 108, 59, 1, 33, 115, 116, 59, 1, 8707, 4, 2, 101, 111, 9849, 9859, 99, 116, 97, 116, 105, 111, 110, 59, 1, 8496, 110, 101, 110, 116, 105, 97, 108, 101, 59, 1, 8519, 4, 12, 97, 99, 101, 102, 105, 106, 108, 110, 111, 112, 114, 115, 9896, 9910, 9914, 9921, 9954, 9960, 9967, 9989, 9994, 10027, 10036, 10164, 108, 108, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 1, 8786, 121, 59, 1, 1092, 109, 97, 108, 101, 59, 1, 9792, 4, 3, 105, 108, 114, 9929, 9935, 9950, 108, 105, 103, 59, 1, 64259, 4, 2, 105, 108, 9941, 9945, 103, 59, 1, 64256, 105, 103, 59, 1, 64260, 59, 3, 55349, 56611, 108, 105, 103, 59, 1, 64257, 108, 105, 103, 59, 3, 102, 106, 4, 3, 97, 108, 116, 9975, 9979, 9984, 116, 59, 1, 9837, 105, 103, 59, 1, 64258, 110, 115, 59, 1, 9649, 111, 102, 59, 1, 402, 4, 2, 112, 114, 1e4, 10005, 102, 59, 3, 55349, 56663, 4, 2, 97, 107, 10011, 10016, 108, 108, 59, 1, 8704, 4, 2, 59, 118, 10022, 10024, 1, 8916, 59, 1, 10969, 97, 114, 116, 105, 110, 116, 59, 1, 10765, 4, 2, 97, 111, 10042, 10159, 4, 2, 99, 115, 10048, 10155, 4, 6, 49, 50, 51, 52, 53, 55, 10062, 10102, 10114, 10135, 10139, 10151, 4, 6, 50, 51, 52, 53, 54, 56, 10076, 10083, 10086, 10093, 10096, 10099, 5, 189, 1, 59, 10081, 1, 189, 59, 1, 8531, 5, 188, 1, 59, 10091, 1, 188, 59, 1, 8533, 59, 1, 8537, 59, 1, 8539, 4, 2, 51, 53, 10108, 10111, 59, 1, 8532, 59, 1, 8534, 4, 3, 52, 53, 56, 10122, 10129, 10132, 5, 190, 1, 59, 10127, 1, 190, 59, 1, 8535, 59, 1, 8540, 53, 59, 1, 8536, 4, 2, 54, 56, 10145, 10148, 59, 1, 8538, 59, 1, 8541, 56, 59, 1, 8542, 108, 59, 1, 8260, 119, 110, 59, 1, 8994, 99, 114, 59, 3, 55349, 56507, 4, 17, 69, 97, 98, 99, 100, 101, 102, 103, 105, 106, 108, 110, 111, 114, 115, 116, 118, 10206, 10217, 10247, 10254, 10268, 10273, 10358, 10363, 10374, 10380, 10385, 10406, 10458, 10464, 10470, 10497, 10610, 4, 2, 59, 108, 10212, 10214, 1, 8807, 59, 1, 10892, 4, 3, 99, 109, 112, 10225, 10231, 10244, 117, 116, 101, 59, 1, 501, 109, 97, 4, 2, 59, 100, 10239, 10241, 1, 947, 59, 1, 989, 59, 1, 10886, 114, 101, 118, 101, 59, 1, 287, 4, 2, 105, 121, 10260, 10265, 114, 99, 59, 1, 285, 59, 1, 1075, 111, 116, 59, 1, 289, 4, 4, 59, 108, 113, 115, 10283, 10285, 10288, 10308, 1, 8805, 59, 1, 8923, 4, 3, 59, 113, 115, 10296, 10298, 10301, 1, 8805, 59, 1, 8807, 108, 97, 110, 116, 59, 1, 10878, 4, 4, 59, 99, 100, 108, 10318, 10320, 10324, 10345, 1, 10878, 99, 59, 1, 10921, 111, 116, 4, 2, 59, 111, 10332, 10334, 1, 10880, 4, 2, 59, 108, 10340, 10342, 1, 10882, 59, 1, 10884, 4, 2, 59, 101, 10351, 10354, 3, 8923, 65024, 115, 59, 1, 10900, 114, 59, 3, 55349, 56612, 4, 2, 59, 103, 10369, 10371, 1, 8811, 59, 1, 8921, 109, 101, 108, 59, 1, 8503, 99, 121, 59, 1, 1107, 4, 4, 59, 69, 97, 106, 10395, 10397, 10400, 10403, 1, 8823, 59, 1, 10898, 59, 1, 10917, 59, 1, 10916, 4, 4, 69, 97, 101, 115, 10416, 10419, 10434, 10453, 59, 1, 8809, 112, 4, 2, 59, 112, 10426, 10428, 1, 10890, 114, 111, 120, 59, 1, 10890, 4, 2, 59, 113, 10440, 10442, 1, 10888, 4, 2, 59, 113, 10448, 10450, 1, 10888, 59, 1, 8809, 105, 109, 59, 1, 8935, 112, 102, 59, 3, 55349, 56664, 97, 118, 101, 59, 1, 96, 4, 2, 99, 105, 10476, 10480, 114, 59, 1, 8458, 109, 4, 3, 59, 101, 108, 10489, 10491, 10494, 1, 8819, 59, 1, 10894, 59, 1, 10896, 5, 62, 6, 59, 99, 100, 108, 113, 114, 10512, 10514, 10527, 10532, 10538, 10545, 1, 62, 4, 2, 99, 105, 10520, 10523, 59, 1, 10919, 114, 59, 1, 10874, 111, 116, 59, 1, 8919, 80, 97, 114, 59, 1, 10645, 117, 101, 115, 116, 59, 1, 10876, 4, 5, 97, 100, 101, 108, 115, 10557, 10574, 10579, 10599, 10605, 4, 2, 112, 114, 10563, 10570, 112, 114, 111, 120, 59, 1, 10886, 114, 59, 1, 10616, 111, 116, 59, 1, 8919, 113, 4, 2, 108, 113, 10586, 10592, 101, 115, 115, 59, 1, 8923, 108, 101, 115, 115, 59, 1, 10892, 101, 115, 115, 59, 1, 8823, 105, 109, 59, 1, 8819, 4, 2, 101, 110, 10616, 10626, 114, 116, 110, 101, 113, 113, 59, 3, 8809, 65024, 69, 59, 3, 8809, 65024, 4, 10, 65, 97, 98, 99, 101, 102, 107, 111, 115, 121, 10653, 10658, 10713, 10718, 10724, 10760, 10765, 10786, 10850, 10875, 114, 114, 59, 1, 8660, 4, 4, 105, 108, 109, 114, 10668, 10674, 10678, 10684, 114, 115, 112, 59, 1, 8202, 102, 59, 1, 189, 105, 108, 116, 59, 1, 8459, 4, 2, 100, 114, 10690, 10695, 99, 121, 59, 1, 1098, 4, 3, 59, 99, 119, 10703, 10705, 10710, 1, 8596, 105, 114, 59, 1, 10568, 59, 1, 8621, 97, 114, 59, 1, 8463, 105, 114, 99, 59, 1, 293, 4, 3, 97, 108, 114, 10732, 10748, 10754, 114, 116, 115, 4, 2, 59, 117, 10741, 10743, 1, 9829, 105, 116, 59, 1, 9829, 108, 105, 112, 59, 1, 8230, 99, 111, 110, 59, 1, 8889, 114, 59, 3, 55349, 56613, 115, 4, 2, 101, 119, 10772, 10779, 97, 114, 111, 119, 59, 1, 10533, 97, 114, 111, 119, 59, 1, 10534, 4, 5, 97, 109, 111, 112, 114, 10798, 10803, 10809, 10839, 10844, 114, 114, 59, 1, 8703, 116, 104, 116, 59, 1, 8763, 107, 4, 2, 108, 114, 10816, 10827, 101, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8617, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8618, 102, 59, 3, 55349, 56665, 98, 97, 114, 59, 1, 8213, 4, 3, 99, 108, 116, 10858, 10863, 10869, 114, 59, 3, 55349, 56509, 97, 115, 104, 59, 1, 8463, 114, 111, 107, 59, 1, 295, 4, 2, 98, 112, 10881, 10887, 117, 108, 108, 59, 1, 8259, 104, 101, 110, 59, 1, 8208, 4, 15, 97, 99, 101, 102, 103, 105, 106, 109, 110, 111, 112, 113, 115, 116, 117, 10925, 10936, 10958, 10977, 10990, 11001, 11039, 11045, 11101, 11192, 11220, 11226, 11237, 11285, 11299, 99, 117, 116, 101, 5, 237, 1, 59, 10934, 1, 237, 4, 3, 59, 105, 121, 10944, 10946, 10955, 1, 8291, 114, 99, 5, 238, 1, 59, 10953, 1, 238, 59, 1, 1080, 4, 2, 99, 120, 10964, 10968, 121, 59, 1, 1077, 99, 108, 5, 161, 1, 59, 10975, 1, 161, 4, 2, 102, 114, 10983, 10986, 59, 1, 8660, 59, 3, 55349, 56614, 114, 97, 118, 101, 5, 236, 1, 59, 10999, 1, 236, 4, 4, 59, 105, 110, 111, 11011, 11013, 11028, 11034, 1, 8520, 4, 2, 105, 110, 11019, 11024, 110, 116, 59, 1, 10764, 116, 59, 1, 8749, 102, 105, 110, 59, 1, 10716, 116, 97, 59, 1, 8489, 108, 105, 103, 59, 1, 307, 4, 3, 97, 111, 112, 11053, 11092, 11096, 4, 3, 99, 103, 116, 11061, 11065, 11088, 114, 59, 1, 299, 4, 3, 101, 108, 112, 11073, 11076, 11082, 59, 1, 8465, 105, 110, 101, 59, 1, 8464, 97, 114, 116, 59, 1, 8465, 104, 59, 1, 305, 102, 59, 1, 8887, 101, 100, 59, 1, 437, 4, 5, 59, 99, 102, 111, 116, 11113, 11115, 11121, 11136, 11142, 1, 8712, 97, 114, 101, 59, 1, 8453, 105, 110, 4, 2, 59, 116, 11129, 11131, 1, 8734, 105, 101, 59, 1, 10717, 100, 111, 116, 59, 1, 305, 4, 5, 59, 99, 101, 108, 112, 11154, 11156, 11161, 11179, 11186, 1, 8747, 97, 108, 59, 1, 8890, 4, 2, 103, 114, 11167, 11173, 101, 114, 115, 59, 1, 8484, 99, 97, 108, 59, 1, 8890, 97, 114, 104, 107, 59, 1, 10775, 114, 111, 100, 59, 1, 10812, 4, 4, 99, 103, 112, 116, 11202, 11206, 11211, 11216, 121, 59, 1, 1105, 111, 110, 59, 1, 303, 102, 59, 3, 55349, 56666, 97, 59, 1, 953, 114, 111, 100, 59, 1, 10812, 117, 101, 115, 116, 5, 191, 1, 59, 11235, 1, 191, 4, 2, 99, 105, 11243, 11248, 114, 59, 3, 55349, 56510, 110, 4, 5, 59, 69, 100, 115, 118, 11261, 11263, 11266, 11271, 11282, 1, 8712, 59, 1, 8953, 111, 116, 59, 1, 8949, 4, 2, 59, 118, 11277, 11279, 1, 8948, 59, 1, 8947, 59, 1, 8712, 4, 2, 59, 105, 11291, 11293, 1, 8290, 108, 100, 101, 59, 1, 297, 4, 2, 107, 109, 11305, 11310, 99, 121, 59, 1, 1110, 108, 5, 239, 1, 59, 11316, 1, 239, 4, 6, 99, 102, 109, 111, 115, 117, 11332, 11346, 11351, 11357, 11363, 11380, 4, 2, 105, 121, 11338, 11343, 114, 99, 59, 1, 309, 59, 1, 1081, 114, 59, 3, 55349, 56615, 97, 116, 104, 59, 1, 567, 112, 102, 59, 3, 55349, 56667, 4, 2, 99, 101, 11369, 11374, 114, 59, 3, 55349, 56511, 114, 99, 121, 59, 1, 1112, 107, 99, 121, 59, 1, 1108, 4, 8, 97, 99, 102, 103, 104, 106, 111, 115, 11404, 11418, 11433, 11438, 11445, 11450, 11455, 11461, 112, 112, 97, 4, 2, 59, 118, 11413, 11415, 1, 954, 59, 1, 1008, 4, 2, 101, 121, 11424, 11430, 100, 105, 108, 59, 1, 311, 59, 1, 1082, 114, 59, 3, 55349, 56616, 114, 101, 101, 110, 59, 1, 312, 99, 121, 59, 1, 1093, 99, 121, 59, 1, 1116, 112, 102, 59, 3, 55349, 56668, 99, 114, 59, 3, 55349, 56512, 4, 23, 65, 66, 69, 72, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 11515, 11538, 11544, 11555, 11560, 11721, 11780, 11818, 11868, 12136, 12160, 12171, 12203, 12208, 12246, 12275, 12327, 12509, 12523, 12569, 12641, 12732, 12752, 4, 3, 97, 114, 116, 11523, 11528, 11532, 114, 114, 59, 1, 8666, 114, 59, 1, 8656, 97, 105, 108, 59, 1, 10523, 97, 114, 114, 59, 1, 10510, 4, 2, 59, 103, 11550, 11552, 1, 8806, 59, 1, 10891, 97, 114, 59, 1, 10594, 4, 9, 99, 101, 103, 109, 110, 112, 113, 114, 116, 11580, 11586, 11594, 11600, 11606, 11624, 11627, 11636, 11694, 117, 116, 101, 59, 1, 314, 109, 112, 116, 121, 118, 59, 1, 10676, 114, 97, 110, 59, 1, 8466, 98, 100, 97, 59, 1, 955, 103, 4, 3, 59, 100, 108, 11615, 11617, 11620, 1, 10216, 59, 1, 10641, 101, 59, 1, 10216, 59, 1, 10885, 117, 111, 5, 171, 1, 59, 11634, 1, 171, 114, 4, 8, 59, 98, 102, 104, 108, 112, 115, 116, 11655, 11657, 11669, 11673, 11677, 11681, 11685, 11690, 1, 8592, 4, 2, 59, 102, 11663, 11665, 1, 8676, 115, 59, 1, 10527, 115, 59, 1, 10525, 107, 59, 1, 8617, 112, 59, 1, 8619, 108, 59, 1, 10553, 105, 109, 59, 1, 10611, 108, 59, 1, 8610, 4, 3, 59, 97, 101, 11702, 11704, 11709, 1, 10923, 105, 108, 59, 1, 10521, 4, 2, 59, 115, 11715, 11717, 1, 10925, 59, 3, 10925, 65024, 4, 3, 97, 98, 114, 11729, 11734, 11739, 114, 114, 59, 1, 10508, 114, 107, 59, 1, 10098, 4, 2, 97, 107, 11745, 11758, 99, 4, 2, 101, 107, 11752, 11755, 59, 1, 123, 59, 1, 91, 4, 2, 101, 115, 11764, 11767, 59, 1, 10635, 108, 4, 2, 100, 117, 11774, 11777, 59, 1, 10639, 59, 1, 10637, 4, 4, 97, 101, 117, 121, 11790, 11796, 11811, 11815, 114, 111, 110, 59, 1, 318, 4, 2, 100, 105, 11802, 11807, 105, 108, 59, 1, 316, 108, 59, 1, 8968, 98, 59, 1, 123, 59, 1, 1083, 4, 4, 99, 113, 114, 115, 11828, 11832, 11845, 11864, 97, 59, 1, 10550, 117, 111, 4, 2, 59, 114, 11840, 11842, 1, 8220, 59, 1, 8222, 4, 2, 100, 117, 11851, 11857, 104, 97, 114, 59, 1, 10599, 115, 104, 97, 114, 59, 1, 10571, 104, 59, 1, 8626, 4, 5, 59, 102, 103, 113, 115, 11880, 11882, 12008, 12011, 12031, 1, 8804, 116, 4, 5, 97, 104, 108, 114, 116, 11895, 11913, 11935, 11947, 11996, 114, 114, 111, 119, 4, 2, 59, 116, 11905, 11907, 1, 8592, 97, 105, 108, 59, 1, 8610, 97, 114, 112, 111, 111, 110, 4, 2, 100, 117, 11925, 11931, 111, 119, 110, 59, 1, 8637, 112, 59, 1, 8636, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 1, 8647, 105, 103, 104, 116, 4, 3, 97, 104, 115, 11959, 11974, 11984, 114, 114, 111, 119, 4, 2, 59, 115, 11969, 11971, 1, 8596, 59, 1, 8646, 97, 114, 112, 111, 111, 110, 115, 59, 1, 8651, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 1, 8621, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 1, 8907, 59, 1, 8922, 4, 3, 59, 113, 115, 12019, 12021, 12024, 1, 8804, 59, 1, 8806, 108, 97, 110, 116, 59, 1, 10877, 4, 5, 59, 99, 100, 103, 115, 12043, 12045, 12049, 12070, 12083, 1, 10877, 99, 59, 1, 10920, 111, 116, 4, 2, 59, 111, 12057, 12059, 1, 10879, 4, 2, 59, 114, 12065, 12067, 1, 10881, 59, 1, 10883, 4, 2, 59, 101, 12076, 12079, 3, 8922, 65024, 115, 59, 1, 10899, 4, 5, 97, 100, 101, 103, 115, 12095, 12103, 12108, 12126, 12131, 112, 112, 114, 111, 120, 59, 1, 10885, 111, 116, 59, 1, 8918, 113, 4, 2, 103, 113, 12115, 12120, 116, 114, 59, 1, 8922, 103, 116, 114, 59, 1, 10891, 116, 114, 59, 1, 8822, 105, 109, 59, 1, 8818, 4, 3, 105, 108, 114, 12144, 12150, 12156, 115, 104, 116, 59, 1, 10620, 111, 111, 114, 59, 1, 8970, 59, 3, 55349, 56617, 4, 2, 59, 69, 12166, 12168, 1, 8822, 59, 1, 10897, 4, 2, 97, 98, 12177, 12198, 114, 4, 2, 100, 117, 12184, 12187, 59, 1, 8637, 4, 2, 59, 108, 12193, 12195, 1, 8636, 59, 1, 10602, 108, 107, 59, 1, 9604, 99, 121, 59, 1, 1113, 4, 5, 59, 97, 99, 104, 116, 12220, 12222, 12227, 12235, 12241, 1, 8810, 114, 114, 59, 1, 8647, 111, 114, 110, 101, 114, 59, 1, 8990, 97, 114, 100, 59, 1, 10603, 114, 105, 59, 1, 9722, 4, 2, 105, 111, 12252, 12258, 100, 111, 116, 59, 1, 320, 117, 115, 116, 4, 2, 59, 97, 12267, 12269, 1, 9136, 99, 104, 101, 59, 1, 9136, 4, 4, 69, 97, 101, 115, 12285, 12288, 12303, 12322, 59, 1, 8808, 112, 4, 2, 59, 112, 12295, 12297, 1, 10889, 114, 111, 120, 59, 1, 10889, 4, 2, 59, 113, 12309, 12311, 1, 10887, 4, 2, 59, 113, 12317, 12319, 1, 10887, 59, 1, 8808, 105, 109, 59, 1, 8934, 4, 8, 97, 98, 110, 111, 112, 116, 119, 122, 12345, 12359, 12364, 12421, 12446, 12467, 12474, 12490, 4, 2, 110, 114, 12351, 12355, 103, 59, 1, 10220, 114, 59, 1, 8701, 114, 107, 59, 1, 10214, 103, 4, 3, 108, 109, 114, 12373, 12401, 12409, 101, 102, 116, 4, 2, 97, 114, 12382, 12389, 114, 114, 111, 119, 59, 1, 10229, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10231, 97, 112, 115, 116, 111, 59, 1, 10236, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 10230, 112, 97, 114, 114, 111, 119, 4, 2, 108, 114, 12433, 12439, 101, 102, 116, 59, 1, 8619, 105, 103, 104, 116, 59, 1, 8620, 4, 3, 97, 102, 108, 12454, 12458, 12462, 114, 59, 1, 10629, 59, 3, 55349, 56669, 117, 115, 59, 1, 10797, 105, 109, 101, 115, 59, 1, 10804, 4, 2, 97, 98, 12480, 12485, 115, 116, 59, 1, 8727, 97, 114, 59, 1, 95, 4, 3, 59, 101, 102, 12498, 12500, 12506, 1, 9674, 110, 103, 101, 59, 1, 9674, 59, 1, 10731, 97, 114, 4, 2, 59, 108, 12517, 12519, 1, 40, 116, 59, 1, 10643, 4, 5, 97, 99, 104, 109, 116, 12535, 12540, 12548, 12561, 12564, 114, 114, 59, 1, 8646, 111, 114, 110, 101, 114, 59, 1, 8991, 97, 114, 4, 2, 59, 100, 12556, 12558, 1, 8651, 59, 1, 10605, 59, 1, 8206, 114, 105, 59, 1, 8895, 4, 6, 97, 99, 104, 105, 113, 116, 12583, 12589, 12594, 12597, 12614, 12635, 113, 117, 111, 59, 1, 8249, 114, 59, 3, 55349, 56513, 59, 1, 8624, 109, 4, 3, 59, 101, 103, 12606, 12608, 12611, 1, 8818, 59, 1, 10893, 59, 1, 10895, 4, 2, 98, 117, 12620, 12623, 59, 1, 91, 111, 4, 2, 59, 114, 12630, 12632, 1, 8216, 59, 1, 8218, 114, 111, 107, 59, 1, 322, 5, 60, 8, 59, 99, 100, 104, 105, 108, 113, 114, 12660, 12662, 12675, 12680, 12686, 12692, 12698, 12705, 1, 60, 4, 2, 99, 105, 12668, 12671, 59, 1, 10918, 114, 59, 1, 10873, 111, 116, 59, 1, 8918, 114, 101, 101, 59, 1, 8907, 109, 101, 115, 59, 1, 8905, 97, 114, 114, 59, 1, 10614, 117, 101, 115, 116, 59, 1, 10875, 4, 2, 80, 105, 12711, 12716, 97, 114, 59, 1, 10646, 4, 3, 59, 101, 102, 12724, 12726, 12729, 1, 9667, 59, 1, 8884, 59, 1, 9666, 114, 4, 2, 100, 117, 12739, 12746, 115, 104, 97, 114, 59, 1, 10570, 104, 97, 114, 59, 1, 10598, 4, 2, 101, 110, 12758, 12768, 114, 116, 110, 101, 113, 113, 59, 3, 8808, 65024, 69, 59, 3, 8808, 65024, 4, 14, 68, 97, 99, 100, 101, 102, 104, 105, 108, 110, 111, 112, 115, 117, 12803, 12809, 12893, 12908, 12914, 12928, 12933, 12937, 13011, 13025, 13032, 13049, 13052, 13069, 68, 111, 116, 59, 1, 8762, 4, 4, 99, 108, 112, 114, 12819, 12827, 12849, 12887, 114, 5, 175, 1, 59, 12825, 1, 175, 4, 2, 101, 116, 12833, 12836, 59, 1, 9794, 4, 2, 59, 101, 12842, 12844, 1, 10016, 115, 101, 59, 1, 10016, 4, 2, 59, 115, 12855, 12857, 1, 8614, 116, 111, 4, 4, 59, 100, 108, 117, 12869, 12871, 12877, 12883, 1, 8614, 111, 119, 110, 59, 1, 8615, 101, 102, 116, 59, 1, 8612, 112, 59, 1, 8613, 107, 101, 114, 59, 1, 9646, 4, 2, 111, 121, 12899, 12905, 109, 109, 97, 59, 1, 10793, 59, 1, 1084, 97, 115, 104, 59, 1, 8212, 97, 115, 117, 114, 101, 100, 97, 110, 103, 108, 101, 59, 1, 8737, 114, 59, 3, 55349, 56618, 111, 59, 1, 8487, 4, 3, 99, 100, 110, 12945, 12954, 12985, 114, 111, 5, 181, 1, 59, 12952, 1, 181, 4, 4, 59, 97, 99, 100, 12964, 12966, 12971, 12976, 1, 8739, 115, 116, 59, 1, 42, 105, 114, 59, 1, 10992, 111, 116, 5, 183, 1, 59, 12983, 1, 183, 117, 115, 4, 3, 59, 98, 100, 12995, 12997, 13e3, 1, 8722, 59, 1, 8863, 4, 2, 59, 117, 13006, 13008, 1, 8760, 59, 1, 10794, 4, 2, 99, 100, 13017, 13021, 112, 59, 1, 10971, 114, 59, 1, 8230, 112, 108, 117, 115, 59, 1, 8723, 4, 2, 100, 112, 13038, 13044, 101, 108, 115, 59, 1, 8871, 102, 59, 3, 55349, 56670, 59, 1, 8723, 4, 2, 99, 116, 13058, 13063, 114, 59, 3, 55349, 56514, 112, 111, 115, 59, 1, 8766, 4, 3, 59, 108, 109, 13077, 13079, 13087, 1, 956, 116, 105, 109, 97, 112, 59, 1, 8888, 97, 112, 59, 1, 8888, 4, 24, 71, 76, 82, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 13142, 13165, 13217, 13229, 13247, 13330, 13359, 13414, 13420, 13508, 13513, 13579, 13602, 13626, 13631, 13762, 13767, 13855, 13936, 13995, 14214, 14285, 14312, 14432, 4, 2, 103, 116, 13148, 13152, 59, 3, 8921, 824, 4, 2, 59, 118, 13158, 13161, 3, 8811, 8402, 59, 3, 8811, 824, 4, 3, 101, 108, 116, 13173, 13200, 13204, 102, 116, 4, 2, 97, 114, 13181, 13188, 114, 114, 111, 119, 59, 1, 8653, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8654, 59, 3, 8920, 824, 4, 2, 59, 118, 13210, 13213, 3, 8810, 8402, 59, 3, 8810, 824, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8655, 4, 2, 68, 100, 13235, 13241, 97, 115, 104, 59, 1, 8879, 97, 115, 104, 59, 1, 8878, 4, 5, 98, 99, 110, 112, 116, 13259, 13264, 13270, 13275, 13308, 108, 97, 59, 1, 8711, 117, 116, 101, 59, 1, 324, 103, 59, 3, 8736, 8402, 4, 5, 59, 69, 105, 111, 112, 13287, 13289, 13293, 13298, 13302, 1, 8777, 59, 3, 10864, 824, 100, 59, 3, 8779, 824, 115, 59, 1, 329, 114, 111, 120, 59, 1, 8777, 117, 114, 4, 2, 59, 97, 13316, 13318, 1, 9838, 108, 4, 2, 59, 115, 13325, 13327, 1, 9838, 59, 1, 8469, 4, 2, 115, 117, 13336, 13344, 112, 5, 160, 1, 59, 13342, 1, 160, 109, 112, 4, 2, 59, 101, 13352, 13355, 3, 8782, 824, 59, 3, 8783, 824, 4, 5, 97, 101, 111, 117, 121, 13371, 13385, 13391, 13407, 13411, 4, 2, 112, 114, 13377, 13380, 59, 1, 10819, 111, 110, 59, 1, 328, 100, 105, 108, 59, 1, 326, 110, 103, 4, 2, 59, 100, 13399, 13401, 1, 8775, 111, 116, 59, 3, 10861, 824, 112, 59, 1, 10818, 59, 1, 1085, 97, 115, 104, 59, 1, 8211, 4, 7, 59, 65, 97, 100, 113, 115, 120, 13436, 13438, 13443, 13466, 13472, 13478, 13494, 1, 8800, 114, 114, 59, 1, 8663, 114, 4, 2, 104, 114, 13450, 13454, 107, 59, 1, 10532, 4, 2, 59, 111, 13460, 13462, 1, 8599, 119, 59, 1, 8599, 111, 116, 59, 3, 8784, 824, 117, 105, 118, 59, 1, 8802, 4, 2, 101, 105, 13484, 13489, 97, 114, 59, 1, 10536, 109, 59, 3, 8770, 824, 105, 115, 116, 4, 2, 59, 115, 13503, 13505, 1, 8708, 59, 1, 8708, 114, 59, 3, 55349, 56619, 4, 4, 69, 101, 115, 116, 13523, 13527, 13563, 13568, 59, 3, 8807, 824, 4, 3, 59, 113, 115, 13535, 13537, 13559, 1, 8817, 4, 3, 59, 113, 115, 13545, 13547, 13551, 1, 8817, 59, 3, 8807, 824, 108, 97, 110, 116, 59, 3, 10878, 824, 59, 3, 10878, 824, 105, 109, 59, 1, 8821, 4, 2, 59, 114, 13574, 13576, 1, 8815, 59, 1, 8815, 4, 3, 65, 97, 112, 13587, 13592, 13597, 114, 114, 59, 1, 8654, 114, 114, 59, 1, 8622, 97, 114, 59, 1, 10994, 4, 3, 59, 115, 118, 13610, 13612, 13623, 1, 8715, 4, 2, 59, 100, 13618, 13620, 1, 8956, 59, 1, 8954, 59, 1, 8715, 99, 121, 59, 1, 1114, 4, 7, 65, 69, 97, 100, 101, 115, 116, 13647, 13652, 13656, 13661, 13665, 13737, 13742, 114, 114, 59, 1, 8653, 59, 3, 8806, 824, 114, 114, 59, 1, 8602, 114, 59, 1, 8229, 4, 4, 59, 102, 113, 115, 13675, 13677, 13703, 13725, 1, 8816, 116, 4, 2, 97, 114, 13684, 13691, 114, 114, 111, 119, 59, 1, 8602, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8622, 4, 3, 59, 113, 115, 13711, 13713, 13717, 1, 8816, 59, 3, 8806, 824, 108, 97, 110, 116, 59, 3, 10877, 824, 4, 2, 59, 115, 13731, 13734, 3, 10877, 824, 59, 1, 8814, 105, 109, 59, 1, 8820, 4, 2, 59, 114, 13748, 13750, 1, 8814, 105, 4, 2, 59, 101, 13757, 13759, 1, 8938, 59, 1, 8940, 105, 100, 59, 1, 8740, 4, 2, 112, 116, 13773, 13778, 102, 59, 3, 55349, 56671, 5, 172, 3, 59, 105, 110, 13787, 13789, 13829, 1, 172, 110, 4, 4, 59, 69, 100, 118, 13800, 13802, 13806, 13812, 1, 8713, 59, 3, 8953, 824, 111, 116, 59, 3, 8949, 824, 4, 3, 97, 98, 99, 13820, 13823, 13826, 59, 1, 8713, 59, 1, 8951, 59, 1, 8950, 105, 4, 2, 59, 118, 13836, 13838, 1, 8716, 4, 3, 97, 98, 99, 13846, 13849, 13852, 59, 1, 8716, 59, 1, 8958, 59, 1, 8957, 4, 3, 97, 111, 114, 13863, 13892, 13899, 114, 4, 4, 59, 97, 115, 116, 13874, 13876, 13883, 13888, 1, 8742, 108, 108, 101, 108, 59, 1, 8742, 108, 59, 3, 11005, 8421, 59, 3, 8706, 824, 108, 105, 110, 116, 59, 1, 10772, 4, 3, 59, 99, 101, 13907, 13909, 13914, 1, 8832, 117, 101, 59, 1, 8928, 4, 2, 59, 99, 13920, 13923, 3, 10927, 824, 4, 2, 59, 101, 13929, 13931, 1, 8832, 113, 59, 3, 10927, 824, 4, 4, 65, 97, 105, 116, 13946, 13951, 13971, 13982, 114, 114, 59, 1, 8655, 114, 114, 4, 3, 59, 99, 119, 13961, 13963, 13967, 1, 8603, 59, 3, 10547, 824, 59, 3, 8605, 824, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8603, 114, 105, 4, 2, 59, 101, 13990, 13992, 1, 8939, 59, 1, 8941, 4, 7, 99, 104, 105, 109, 112, 113, 117, 14011, 14036, 14060, 14080, 14085, 14090, 14106, 4, 4, 59, 99, 101, 114, 14021, 14023, 14028, 14032, 1, 8833, 117, 101, 59, 1, 8929, 59, 3, 10928, 824, 59, 3, 55349, 56515, 111, 114, 116, 4, 2, 109, 112, 14045, 14050, 105, 100, 59, 1, 8740, 97, 114, 97, 108, 108, 101, 108, 59, 1, 8742, 109, 4, 2, 59, 101, 14067, 14069, 1, 8769, 4, 2, 59, 113, 14075, 14077, 1, 8772, 59, 1, 8772, 105, 100, 59, 1, 8740, 97, 114, 59, 1, 8742, 115, 117, 4, 2, 98, 112, 14098, 14102, 101, 59, 1, 8930, 101, 59, 1, 8931, 4, 3, 98, 99, 112, 14114, 14157, 14171, 4, 4, 59, 69, 101, 115, 14124, 14126, 14130, 14133, 1, 8836, 59, 3, 10949, 824, 59, 1, 8840, 101, 116, 4, 2, 59, 101, 14141, 14144, 3, 8834, 8402, 113, 4, 2, 59, 113, 14151, 14153, 1, 8840, 59, 3, 10949, 824, 99, 4, 2, 59, 101, 14164, 14166, 1, 8833, 113, 59, 3, 10928, 824, 4, 4, 59, 69, 101, 115, 14181, 14183, 14187, 14190, 1, 8837, 59, 3, 10950, 824, 59, 1, 8841, 101, 116, 4, 2, 59, 101, 14198, 14201, 3, 8835, 8402, 113, 4, 2, 59, 113, 14208, 14210, 1, 8841, 59, 3, 10950, 824, 4, 4, 103, 105, 108, 114, 14224, 14228, 14238, 14242, 108, 59, 1, 8825, 108, 100, 101, 5, 241, 1, 59, 14236, 1, 241, 103, 59, 1, 8824, 105, 97, 110, 103, 108, 101, 4, 2, 108, 114, 14254, 14269, 101, 102, 116, 4, 2, 59, 101, 14263, 14265, 1, 8938, 113, 59, 1, 8940, 105, 103, 104, 116, 4, 2, 59, 101, 14279, 14281, 1, 8939, 113, 59, 1, 8941, 4, 2, 59, 109, 14291, 14293, 1, 957, 4, 3, 59, 101, 115, 14301, 14303, 14308, 1, 35, 114, 111, 59, 1, 8470, 112, 59, 1, 8199, 4, 9, 68, 72, 97, 100, 103, 105, 108, 114, 115, 14332, 14338, 14344, 14349, 14355, 14369, 14376, 14408, 14426, 97, 115, 104, 59, 1, 8877, 97, 114, 114, 59, 1, 10500, 112, 59, 3, 8781, 8402, 97, 115, 104, 59, 1, 8876, 4, 2, 101, 116, 14361, 14365, 59, 3, 8805, 8402, 59, 3, 62, 8402, 110, 102, 105, 110, 59, 1, 10718, 4, 3, 65, 101, 116, 14384, 14389, 14393, 114, 114, 59, 1, 10498, 59, 3, 8804, 8402, 4, 2, 59, 114, 14399, 14402, 3, 60, 8402, 105, 101, 59, 3, 8884, 8402, 4, 2, 65, 116, 14414, 14419, 114, 114, 59, 1, 10499, 114, 105, 101, 59, 3, 8885, 8402, 105, 109, 59, 3, 8764, 8402, 4, 3, 65, 97, 110, 14440, 14445, 14468, 114, 114, 59, 1, 8662, 114, 4, 2, 104, 114, 14452, 14456, 107, 59, 1, 10531, 4, 2, 59, 111, 14462, 14464, 1, 8598, 119, 59, 1, 8598, 101, 97, 114, 59, 1, 10535, 4, 18, 83, 97, 99, 100, 101, 102, 103, 104, 105, 108, 109, 111, 112, 114, 115, 116, 117, 118, 14512, 14515, 14535, 14560, 14597, 14603, 14618, 14643, 14657, 14662, 14701, 14741, 14747, 14769, 14851, 14877, 14907, 14916, 59, 1, 9416, 4, 2, 99, 115, 14521, 14531, 117, 116, 101, 5, 243, 1, 59, 14529, 1, 243, 116, 59, 1, 8859, 4, 2, 105, 121, 14541, 14557, 114, 4, 2, 59, 99, 14548, 14550, 1, 8858, 5, 244, 1, 59, 14555, 1, 244, 59, 1, 1086, 4, 5, 97, 98, 105, 111, 115, 14572, 14577, 14583, 14587, 14591, 115, 104, 59, 1, 8861, 108, 97, 99, 59, 1, 337, 118, 59, 1, 10808, 116, 59, 1, 8857, 111, 108, 100, 59, 1, 10684, 108, 105, 103, 59, 1, 339, 4, 2, 99, 114, 14609, 14614, 105, 114, 59, 1, 10687, 59, 3, 55349, 56620, 4, 3, 111, 114, 116, 14626, 14630, 14640, 110, 59, 1, 731, 97, 118, 101, 5, 242, 1, 59, 14638, 1, 242, 59, 1, 10689, 4, 2, 98, 109, 14649, 14654, 97, 114, 59, 1, 10677, 59, 1, 937, 110, 116, 59, 1, 8750, 4, 4, 97, 99, 105, 116, 14672, 14677, 14693, 14698, 114, 114, 59, 1, 8634, 4, 2, 105, 114, 14683, 14687, 114, 59, 1, 10686, 111, 115, 115, 59, 1, 10683, 110, 101, 59, 1, 8254, 59, 1, 10688, 4, 3, 97, 101, 105, 14709, 14714, 14719, 99, 114, 59, 1, 333, 103, 97, 59, 1, 969, 4, 3, 99, 100, 110, 14727, 14733, 14736, 114, 111, 110, 59, 1, 959, 59, 1, 10678, 117, 115, 59, 1, 8854, 112, 102, 59, 3, 55349, 56672, 4, 3, 97, 101, 108, 14755, 14759, 14764, 114, 59, 1, 10679, 114, 112, 59, 1, 10681, 117, 115, 59, 1, 8853, 4, 7, 59, 97, 100, 105, 111, 115, 118, 14785, 14787, 14792, 14831, 14837, 14841, 14848, 1, 8744, 114, 114, 59, 1, 8635, 4, 4, 59, 101, 102, 109, 14802, 14804, 14817, 14824, 1, 10845, 114, 4, 2, 59, 111, 14811, 14813, 1, 8500, 102, 59, 1, 8500, 5, 170, 1, 59, 14822, 1, 170, 5, 186, 1, 59, 14829, 1, 186, 103, 111, 102, 59, 1, 8886, 114, 59, 1, 10838, 108, 111, 112, 101, 59, 1, 10839, 59, 1, 10843, 4, 3, 99, 108, 111, 14859, 14863, 14873, 114, 59, 1, 8500, 97, 115, 104, 5, 248, 1, 59, 14871, 1, 248, 108, 59, 1, 8856, 105, 4, 2, 108, 109, 14884, 14893, 100, 101, 5, 245, 1, 59, 14891, 1, 245, 101, 115, 4, 2, 59, 97, 14901, 14903, 1, 8855, 115, 59, 1, 10806, 109, 108, 5, 246, 1, 59, 14914, 1, 246, 98, 97, 114, 59, 1, 9021, 4, 12, 97, 99, 101, 102, 104, 105, 108, 109, 111, 114, 115, 117, 14948, 14992, 14996, 15033, 15038, 15068, 15090, 15189, 15192, 15222, 15427, 15441, 114, 4, 4, 59, 97, 115, 116, 14959, 14961, 14976, 14989, 1, 8741, 5, 182, 2, 59, 108, 14968, 14970, 1, 182, 108, 101, 108, 59, 1, 8741, 4, 2, 105, 108, 14982, 14986, 109, 59, 1, 10995, 59, 1, 11005, 59, 1, 8706, 121, 59, 1, 1087, 114, 4, 5, 99, 105, 109, 112, 116, 15009, 15014, 15019, 15024, 15027, 110, 116, 59, 1, 37, 111, 100, 59, 1, 46, 105, 108, 59, 1, 8240, 59, 1, 8869, 101, 110, 107, 59, 1, 8241, 114, 59, 3, 55349, 56621, 4, 3, 105, 109, 111, 15046, 15057, 15063, 4, 2, 59, 118, 15052, 15054, 1, 966, 59, 1, 981, 109, 97, 116, 59, 1, 8499, 110, 101, 59, 1, 9742, 4, 3, 59, 116, 118, 15076, 15078, 15087, 1, 960, 99, 104, 102, 111, 114, 107, 59, 1, 8916, 59, 1, 982, 4, 2, 97, 117, 15096, 15119, 110, 4, 2, 99, 107, 15103, 15115, 107, 4, 2, 59, 104, 15110, 15112, 1, 8463, 59, 1, 8462, 118, 59, 1, 8463, 115, 4, 9, 59, 97, 98, 99, 100, 101, 109, 115, 116, 15140, 15142, 15148, 15151, 15156, 15168, 15171, 15179, 15184, 1, 43, 99, 105, 114, 59, 1, 10787, 59, 1, 8862, 105, 114, 59, 1, 10786, 4, 2, 111, 117, 15162, 15165, 59, 1, 8724, 59, 1, 10789, 59, 1, 10866, 110, 5, 177, 1, 59, 15177, 1, 177, 105, 109, 59, 1, 10790, 119, 111, 59, 1, 10791, 59, 1, 177, 4, 3, 105, 112, 117, 15200, 15208, 15213, 110, 116, 105, 110, 116, 59, 1, 10773, 102, 59, 3, 55349, 56673, 110, 100, 5, 163, 1, 59, 15220, 1, 163, 4, 10, 59, 69, 97, 99, 101, 105, 110, 111, 115, 117, 15244, 15246, 15249, 15253, 15258, 15334, 15347, 15367, 15416, 15421, 1, 8826, 59, 1, 10931, 112, 59, 1, 10935, 117, 101, 59, 1, 8828, 4, 2, 59, 99, 15264, 15266, 1, 10927, 4, 6, 59, 97, 99, 101, 110, 115, 15280, 15282, 15290, 15299, 15303, 15329, 1, 8826, 112, 112, 114, 111, 120, 59, 1, 10935, 117, 114, 108, 121, 101, 113, 59, 1, 8828, 113, 59, 1, 10927, 4, 3, 97, 101, 115, 15311, 15319, 15324, 112, 112, 114, 111, 120, 59, 1, 10937, 113, 113, 59, 1, 10933, 105, 109, 59, 1, 8936, 105, 109, 59, 1, 8830, 109, 101, 4, 2, 59, 115, 15342, 15344, 1, 8242, 59, 1, 8473, 4, 3, 69, 97, 115, 15355, 15358, 15362, 59, 1, 10933, 112, 59, 1, 10937, 105, 109, 59, 1, 8936, 4, 3, 100, 102, 112, 15375, 15378, 15404, 59, 1, 8719, 4, 3, 97, 108, 115, 15386, 15392, 15398, 108, 97, 114, 59, 1, 9006, 105, 110, 101, 59, 1, 8978, 117, 114, 102, 59, 1, 8979, 4, 2, 59, 116, 15410, 15412, 1, 8733, 111, 59, 1, 8733, 105, 109, 59, 1, 8830, 114, 101, 108, 59, 1, 8880, 4, 2, 99, 105, 15433, 15438, 114, 59, 3, 55349, 56517, 59, 1, 968, 110, 99, 115, 112, 59, 1, 8200, 4, 6, 102, 105, 111, 112, 115, 117, 15462, 15467, 15472, 15478, 15485, 15491, 114, 59, 3, 55349, 56622, 110, 116, 59, 1, 10764, 112, 102, 59, 3, 55349, 56674, 114, 105, 109, 101, 59, 1, 8279, 99, 114, 59, 3, 55349, 56518, 4, 3, 97, 101, 111, 15499, 15520, 15534, 116, 4, 2, 101, 105, 15506, 15515, 114, 110, 105, 111, 110, 115, 59, 1, 8461, 110, 116, 59, 1, 10774, 115, 116, 4, 2, 59, 101, 15528, 15530, 1, 63, 113, 59, 1, 8799, 116, 5, 34, 1, 59, 15540, 1, 34, 4, 21, 65, 66, 72, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 110, 111, 112, 114, 115, 116, 117, 120, 15586, 15609, 15615, 15620, 15796, 15855, 15893, 15931, 15977, 16001, 16039, 16183, 16204, 16222, 16228, 16285, 16312, 16318, 16363, 16408, 16416, 4, 3, 97, 114, 116, 15594, 15599, 15603, 114, 114, 59, 1, 8667, 114, 59, 1, 8658, 97, 105, 108, 59, 1, 10524, 97, 114, 114, 59, 1, 10511, 97, 114, 59, 1, 10596, 4, 7, 99, 100, 101, 110, 113, 114, 116, 15636, 15651, 15656, 15664, 15687, 15696, 15770, 4, 2, 101, 117, 15642, 15646, 59, 3, 8765, 817, 116, 101, 59, 1, 341, 105, 99, 59, 1, 8730, 109, 112, 116, 121, 118, 59, 1, 10675, 103, 4, 4, 59, 100, 101, 108, 15675, 15677, 15680, 15683, 1, 10217, 59, 1, 10642, 59, 1, 10661, 101, 59, 1, 10217, 117, 111, 5, 187, 1, 59, 15694, 1, 187, 114, 4, 11, 59, 97, 98, 99, 102, 104, 108, 112, 115, 116, 119, 15721, 15723, 15727, 15739, 15742, 15746, 15750, 15754, 15758, 15763, 15767, 1, 8594, 112, 59, 1, 10613, 4, 2, 59, 102, 15733, 15735, 1, 8677, 115, 59, 1, 10528, 59, 1, 10547, 115, 59, 1, 10526, 107, 59, 1, 8618, 112, 59, 1, 8620, 108, 59, 1, 10565, 105, 109, 59, 1, 10612, 108, 59, 1, 8611, 59, 1, 8605, 4, 2, 97, 105, 15776, 15781, 105, 108, 59, 1, 10522, 111, 4, 2, 59, 110, 15788, 15790, 1, 8758, 97, 108, 115, 59, 1, 8474, 4, 3, 97, 98, 114, 15804, 15809, 15814, 114, 114, 59, 1, 10509, 114, 107, 59, 1, 10099, 4, 2, 97, 107, 15820, 15833, 99, 4, 2, 101, 107, 15827, 15830, 59, 1, 125, 59, 1, 93, 4, 2, 101, 115, 15839, 15842, 59, 1, 10636, 108, 4, 2, 100, 117, 15849, 15852, 59, 1, 10638, 59, 1, 10640, 4, 4, 97, 101, 117, 121, 15865, 15871, 15886, 15890, 114, 111, 110, 59, 1, 345, 4, 2, 100, 105, 15877, 15882, 105, 108, 59, 1, 343, 108, 59, 1, 8969, 98, 59, 1, 125, 59, 1, 1088, 4, 4, 99, 108, 113, 115, 15903, 15907, 15914, 15927, 97, 59, 1, 10551, 100, 104, 97, 114, 59, 1, 10601, 117, 111, 4, 2, 59, 114, 15922, 15924, 1, 8221, 59, 1, 8221, 104, 59, 1, 8627, 4, 3, 97, 99, 103, 15939, 15966, 15970, 108, 4, 4, 59, 105, 112, 115, 15950, 15952, 15957, 15963, 1, 8476, 110, 101, 59, 1, 8475, 97, 114, 116, 59, 1, 8476, 59, 1, 8477, 116, 59, 1, 9645, 5, 174, 1, 59, 15975, 1, 174, 4, 3, 105, 108, 114, 15985, 15991, 15997, 115, 104, 116, 59, 1, 10621, 111, 111, 114, 59, 1, 8971, 59, 3, 55349, 56623, 4, 2, 97, 111, 16007, 16028, 114, 4, 2, 100, 117, 16014, 16017, 59, 1, 8641, 4, 2, 59, 108, 16023, 16025, 1, 8640, 59, 1, 10604, 4, 2, 59, 118, 16034, 16036, 1, 961, 59, 1, 1009, 4, 3, 103, 110, 115, 16047, 16167, 16171, 104, 116, 4, 6, 97, 104, 108, 114, 115, 116, 16063, 16081, 16103, 16130, 16143, 16155, 114, 114, 111, 119, 4, 2, 59, 116, 16073, 16075, 1, 8594, 97, 105, 108, 59, 1, 8611, 97, 114, 112, 111, 111, 110, 4, 2, 100, 117, 16093, 16099, 111, 119, 110, 59, 1, 8641, 112, 59, 1, 8640, 101, 102, 116, 4, 2, 97, 104, 16112, 16120, 114, 114, 111, 119, 115, 59, 1, 8644, 97, 114, 112, 111, 111, 110, 115, 59, 1, 8652, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 1, 8649, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 1, 8605, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 1, 8908, 103, 59, 1, 730, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 1, 8787, 4, 3, 97, 104, 109, 16191, 16196, 16201, 114, 114, 59, 1, 8644, 97, 114, 59, 1, 8652, 59, 1, 8207, 111, 117, 115, 116, 4, 2, 59, 97, 16214, 16216, 1, 9137, 99, 104, 101, 59, 1, 9137, 109, 105, 100, 59, 1, 10990, 4, 4, 97, 98, 112, 116, 16238, 16252, 16257, 16278, 4, 2, 110, 114, 16244, 16248, 103, 59, 1, 10221, 114, 59, 1, 8702, 114, 107, 59, 1, 10215, 4, 3, 97, 102, 108, 16265, 16269, 16273, 114, 59, 1, 10630, 59, 3, 55349, 56675, 117, 115, 59, 1, 10798, 105, 109, 101, 115, 59, 1, 10805, 4, 2, 97, 112, 16291, 16304, 114, 4, 2, 59, 103, 16298, 16300, 1, 41, 116, 59, 1, 10644, 111, 108, 105, 110, 116, 59, 1, 10770, 97, 114, 114, 59, 1, 8649, 4, 4, 97, 99, 104, 113, 16328, 16334, 16339, 16342, 113, 117, 111, 59, 1, 8250, 114, 59, 3, 55349, 56519, 59, 1, 8625, 4, 2, 98, 117, 16348, 16351, 59, 1, 93, 111, 4, 2, 59, 114, 16358, 16360, 1, 8217, 59, 1, 8217, 4, 3, 104, 105, 114, 16371, 16377, 16383, 114, 101, 101, 59, 1, 8908, 109, 101, 115, 59, 1, 8906, 105, 4, 4, 59, 101, 102, 108, 16394, 16396, 16399, 16402, 1, 9657, 59, 1, 8885, 59, 1, 9656, 116, 114, 105, 59, 1, 10702, 108, 117, 104, 97, 114, 59, 1, 10600, 59, 1, 8478, 4, 19, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 111, 112, 113, 114, 115, 116, 117, 119, 122, 16459, 16466, 16472, 16572, 16590, 16672, 16687, 16746, 16844, 16850, 16924, 16963, 16988, 17115, 17121, 17154, 17206, 17614, 17656, 99, 117, 116, 101, 59, 1, 347, 113, 117, 111, 59, 1, 8218, 4, 10, 59, 69, 97, 99, 101, 105, 110, 112, 115, 121, 16494, 16496, 16499, 16513, 16518, 16531, 16536, 16556, 16564, 16569, 1, 8827, 59, 1, 10932, 4, 2, 112, 114, 16505, 16508, 59, 1, 10936, 111, 110, 59, 1, 353, 117, 101, 59, 1, 8829, 4, 2, 59, 100, 16524, 16526, 1, 10928, 105, 108, 59, 1, 351, 114, 99, 59, 1, 349, 4, 3, 69, 97, 115, 16544, 16547, 16551, 59, 1, 10934, 112, 59, 1, 10938, 105, 109, 59, 1, 8937, 111, 108, 105, 110, 116, 59, 1, 10771, 105, 109, 59, 1, 8831, 59, 1, 1089, 111, 116, 4, 3, 59, 98, 101, 16582, 16584, 16587, 1, 8901, 59, 1, 8865, 59, 1, 10854, 4, 7, 65, 97, 99, 109, 115, 116, 120, 16606, 16611, 16634, 16642, 16646, 16652, 16668, 114, 114, 59, 1, 8664, 114, 4, 2, 104, 114, 16618, 16622, 107, 59, 1, 10533, 4, 2, 59, 111, 16628, 16630, 1, 8600, 119, 59, 1, 8600, 116, 5, 167, 1, 59, 16640, 1, 167, 105, 59, 1, 59, 119, 97, 114, 59, 1, 10537, 109, 4, 2, 105, 110, 16659, 16665, 110, 117, 115, 59, 1, 8726, 59, 1, 8726, 116, 59, 1, 10038, 114, 4, 2, 59, 111, 16679, 16682, 3, 55349, 56624, 119, 110, 59, 1, 8994, 4, 4, 97, 99, 111, 121, 16697, 16702, 16716, 16739, 114, 112, 59, 1, 9839, 4, 2, 104, 121, 16708, 16713, 99, 121, 59, 1, 1097, 59, 1, 1096, 114, 116, 4, 2, 109, 112, 16724, 16729, 105, 100, 59, 1, 8739, 97, 114, 97, 108, 108, 101, 108, 59, 1, 8741, 5, 173, 1, 59, 16744, 1, 173, 4, 2, 103, 109, 16752, 16770, 109, 97, 4, 3, 59, 102, 118, 16762, 16764, 16767, 1, 963, 59, 1, 962, 59, 1, 962, 4, 8, 59, 100, 101, 103, 108, 110, 112, 114, 16788, 16790, 16795, 16806, 16817, 16828, 16832, 16838, 1, 8764, 111, 116, 59, 1, 10858, 4, 2, 59, 113, 16801, 16803, 1, 8771, 59, 1, 8771, 4, 2, 59, 69, 16812, 16814, 1, 10910, 59, 1, 10912, 4, 2, 59, 69, 16823, 16825, 1, 10909, 59, 1, 10911, 101, 59, 1, 8774, 108, 117, 115, 59, 1, 10788, 97, 114, 114, 59, 1, 10610, 97, 114, 114, 59, 1, 8592, 4, 4, 97, 101, 105, 116, 16860, 16883, 16891, 16904, 4, 2, 108, 115, 16866, 16878, 108, 115, 101, 116, 109, 105, 110, 117, 115, 59, 1, 8726, 104, 112, 59, 1, 10803, 112, 97, 114, 115, 108, 59, 1, 10724, 4, 2, 100, 108, 16897, 16900, 59, 1, 8739, 101, 59, 1, 8995, 4, 2, 59, 101, 16910, 16912, 1, 10922, 4, 2, 59, 115, 16918, 16920, 1, 10924, 59, 3, 10924, 65024, 4, 3, 102, 108, 112, 16932, 16938, 16958, 116, 99, 121, 59, 1, 1100, 4, 2, 59, 98, 16944, 16946, 1, 47, 4, 2, 59, 97, 16952, 16954, 1, 10692, 114, 59, 1, 9023, 102, 59, 3, 55349, 56676, 97, 4, 2, 100, 114, 16970, 16985, 101, 115, 4, 2, 59, 117, 16978, 16980, 1, 9824, 105, 116, 59, 1, 9824, 59, 1, 8741, 4, 3, 99, 115, 117, 16996, 17028, 17089, 4, 2, 97, 117, 17002, 17015, 112, 4, 2, 59, 115, 17009, 17011, 1, 8851, 59, 3, 8851, 65024, 112, 4, 2, 59, 115, 17022, 17024, 1, 8852, 59, 3, 8852, 65024, 117, 4, 2, 98, 112, 17035, 17062, 4, 3, 59, 101, 115, 17043, 17045, 17048, 1, 8847, 59, 1, 8849, 101, 116, 4, 2, 59, 101, 17056, 17058, 1, 8847, 113, 59, 1, 8849, 4, 3, 59, 101, 115, 17070, 17072, 17075, 1, 8848, 59, 1, 8850, 101, 116, 4, 2, 59, 101, 17083, 17085, 1, 8848, 113, 59, 1, 8850, 4, 3, 59, 97, 102, 17097, 17099, 17112, 1, 9633, 114, 4, 2, 101, 102, 17106, 17109, 59, 1, 9633, 59, 1, 9642, 59, 1, 9642, 97, 114, 114, 59, 1, 8594, 4, 4, 99, 101, 109, 116, 17131, 17136, 17142, 17148, 114, 59, 3, 55349, 56520, 116, 109, 110, 59, 1, 8726, 105, 108, 101, 59, 1, 8995, 97, 114, 102, 59, 1, 8902, 4, 2, 97, 114, 17160, 17172, 114, 4, 2, 59, 102, 17167, 17169, 1, 9734, 59, 1, 9733, 4, 2, 97, 110, 17178, 17202, 105, 103, 104, 116, 4, 2, 101, 112, 17188, 17197, 112, 115, 105, 108, 111, 110, 59, 1, 1013, 104, 105, 59, 1, 981, 115, 59, 1, 175, 4, 5, 98, 99, 109, 110, 112, 17218, 17351, 17420, 17423, 17427, 4, 9, 59, 69, 100, 101, 109, 110, 112, 114, 115, 17238, 17240, 17243, 17248, 17261, 17267, 17279, 17285, 17291, 1, 8834, 59, 1, 10949, 111, 116, 59, 1, 10941, 4, 2, 59, 100, 17254, 17256, 1, 8838, 111, 116, 59, 1, 10947, 117, 108, 116, 59, 1, 10945, 4, 2, 69, 101, 17273, 17276, 59, 1, 10955, 59, 1, 8842, 108, 117, 115, 59, 1, 10943, 97, 114, 114, 59, 1, 10617, 4, 3, 101, 105, 117, 17299, 17335, 17339, 116, 4, 3, 59, 101, 110, 17308, 17310, 17322, 1, 8834, 113, 4, 2, 59, 113, 17317, 17319, 1, 8838, 59, 1, 10949, 101, 113, 4, 2, 59, 113, 17330, 17332, 1, 8842, 59, 1, 10955, 109, 59, 1, 10951, 4, 2, 98, 112, 17345, 17348, 59, 1, 10965, 59, 1, 10963, 99, 4, 6, 59, 97, 99, 101, 110, 115, 17366, 17368, 17376, 17385, 17389, 17415, 1, 8827, 112, 112, 114, 111, 120, 59, 1, 10936, 117, 114, 108, 121, 101, 113, 59, 1, 8829, 113, 59, 1, 10928, 4, 3, 97, 101, 115, 17397, 17405, 17410, 112, 112, 114, 111, 120, 59, 1, 10938, 113, 113, 59, 1, 10934, 105, 109, 59, 1, 8937, 105, 109, 59, 1, 8831, 59, 1, 8721, 103, 59, 1, 9834, 4, 13, 49, 50, 51, 59, 69, 100, 101, 104, 108, 109, 110, 112, 115, 17455, 17462, 17469, 17476, 17478, 17481, 17496, 17509, 17524, 17530, 17536, 17548, 17554, 5, 185, 1, 59, 17460, 1, 185, 5, 178, 1, 59, 17467, 1, 178, 5, 179, 1, 59, 17474, 1, 179, 1, 8835, 59, 1, 10950, 4, 2, 111, 115, 17487, 17491, 116, 59, 1, 10942, 117, 98, 59, 1, 10968, 4, 2, 59, 100, 17502, 17504, 1, 8839, 111, 116, 59, 1, 10948, 115, 4, 2, 111, 117, 17516, 17520, 108, 59, 1, 10185, 98, 59, 1, 10967, 97, 114, 114, 59, 1, 10619, 117, 108, 116, 59, 1, 10946, 4, 2, 69, 101, 17542, 17545, 59, 1, 10956, 59, 1, 8843, 108, 117, 115, 59, 1, 10944, 4, 3, 101, 105, 117, 17562, 17598, 17602, 116, 4, 3, 59, 101, 110, 17571, 17573, 17585, 1, 8835, 113, 4, 2, 59, 113, 17580, 17582, 1, 8839, 59, 1, 10950, 101, 113, 4, 2, 59, 113, 17593, 17595, 1, 8843, 59, 1, 10956, 109, 59, 1, 10952, 4, 2, 98, 112, 17608, 17611, 59, 1, 10964, 59, 1, 10966, 4, 3, 65, 97, 110, 17622, 17627, 17650, 114, 114, 59, 1, 8665, 114, 4, 2, 104, 114, 17634, 17638, 107, 59, 1, 10534, 4, 2, 59, 111, 17644, 17646, 1, 8601, 119, 59, 1, 8601, 119, 97, 114, 59, 1, 10538, 108, 105, 103, 5, 223, 1, 59, 17664, 1, 223, 4, 13, 97, 98, 99, 100, 101, 102, 104, 105, 111, 112, 114, 115, 119, 17694, 17709, 17714, 17737, 17742, 17749, 17754, 17860, 17905, 17957, 17964, 18090, 18122, 4, 2, 114, 117, 17700, 17706, 103, 101, 116, 59, 1, 8982, 59, 1, 964, 114, 107, 59, 1, 9140, 4, 3, 97, 101, 121, 17722, 17728, 17734, 114, 111, 110, 59, 1, 357, 100, 105, 108, 59, 1, 355, 59, 1, 1090, 111, 116, 59, 1, 8411, 108, 114, 101, 99, 59, 1, 8981, 114, 59, 3, 55349, 56625, 4, 4, 101, 105, 107, 111, 17764, 17805, 17836, 17851, 4, 2, 114, 116, 17770, 17786, 101, 4, 2, 52, 102, 17777, 17780, 59, 1, 8756, 111, 114, 101, 59, 1, 8756, 97, 4, 3, 59, 115, 118, 17795, 17797, 17802, 1, 952, 121, 109, 59, 1, 977, 59, 1, 977, 4, 2, 99, 110, 17811, 17831, 107, 4, 2, 97, 115, 17818, 17826, 112, 112, 114, 111, 120, 59, 1, 8776, 105, 109, 59, 1, 8764, 115, 112, 59, 1, 8201, 4, 2, 97, 115, 17842, 17846, 112, 59, 1, 8776, 105, 109, 59, 1, 8764, 114, 110, 5, 254, 1, 59, 17858, 1, 254, 4, 3, 108, 109, 110, 17868, 17873, 17901, 100, 101, 59, 1, 732, 101, 115, 5, 215, 3, 59, 98, 100, 17884, 17886, 17898, 1, 215, 4, 2, 59, 97, 17892, 17894, 1, 8864, 114, 59, 1, 10801, 59, 1, 10800, 116, 59, 1, 8749, 4, 3, 101, 112, 115, 17913, 17917, 17953, 97, 59, 1, 10536, 4, 4, 59, 98, 99, 102, 17927, 17929, 17934, 17939, 1, 8868, 111, 116, 59, 1, 9014, 105, 114, 59, 1, 10993, 4, 2, 59, 111, 17945, 17948, 3, 55349, 56677, 114, 107, 59, 1, 10970, 97, 59, 1, 10537, 114, 105, 109, 101, 59, 1, 8244, 4, 3, 97, 105, 112, 17972, 17977, 18082, 100, 101, 59, 1, 8482, 4, 7, 97, 100, 101, 109, 112, 115, 116, 17993, 18051, 18056, 18059, 18066, 18072, 18076, 110, 103, 108, 101, 4, 5, 59, 100, 108, 113, 114, 18009, 18011, 18017, 18032, 18035, 1, 9653, 111, 119, 110, 59, 1, 9663, 101, 102, 116, 4, 2, 59, 101, 18026, 18028, 1, 9667, 113, 59, 1, 8884, 59, 1, 8796, 105, 103, 104, 116, 4, 2, 59, 101, 18045, 18047, 1, 9657, 113, 59, 1, 8885, 111, 116, 59, 1, 9708, 59, 1, 8796, 105, 110, 117, 115, 59, 1, 10810, 108, 117, 115, 59, 1, 10809, 98, 59, 1, 10701, 105, 109, 101, 59, 1, 10811, 101, 122, 105, 117, 109, 59, 1, 9186, 4, 3, 99, 104, 116, 18098, 18111, 18116, 4, 2, 114, 121, 18104, 18108, 59, 3, 55349, 56521, 59, 1, 1094, 99, 121, 59, 1, 1115, 114, 111, 107, 59, 1, 359, 4, 2, 105, 111, 18128, 18133, 120, 116, 59, 1, 8812, 104, 101, 97, 100, 4, 2, 108, 114, 18143, 18154, 101, 102, 116, 97, 114, 114, 111, 119, 59, 1, 8606, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 1, 8608, 4, 18, 65, 72, 97, 98, 99, 100, 102, 103, 104, 108, 109, 111, 112, 114, 115, 116, 117, 119, 18204, 18209, 18214, 18234, 18250, 18268, 18292, 18308, 18319, 18343, 18379, 18397, 18413, 18504, 18547, 18553, 18584, 18603, 114, 114, 59, 1, 8657, 97, 114, 59, 1, 10595, 4, 2, 99, 114, 18220, 18230, 117, 116, 101, 5, 250, 1, 59, 18228, 1, 250, 114, 59, 1, 8593, 114, 4, 2, 99, 101, 18241, 18245, 121, 59, 1, 1118, 118, 101, 59, 1, 365, 4, 2, 105, 121, 18256, 18265, 114, 99, 5, 251, 1, 59, 18263, 1, 251, 59, 1, 1091, 4, 3, 97, 98, 104, 18276, 18281, 18287, 114, 114, 59, 1, 8645, 108, 97, 99, 59, 1, 369, 97, 114, 59, 1, 10606, 4, 2, 105, 114, 18298, 18304, 115, 104, 116, 59, 1, 10622, 59, 3, 55349, 56626, 114, 97, 118, 101, 5, 249, 1, 59, 18317, 1, 249, 4, 2, 97, 98, 18325, 18338, 114, 4, 2, 108, 114, 18332, 18335, 59, 1, 8639, 59, 1, 8638, 108, 107, 59, 1, 9600, 4, 2, 99, 116, 18349, 18374, 4, 2, 111, 114, 18355, 18369, 114, 110, 4, 2, 59, 101, 18363, 18365, 1, 8988, 114, 59, 1, 8988, 111, 112, 59, 1, 8975, 114, 105, 59, 1, 9720, 4, 2, 97, 108, 18385, 18390, 99, 114, 59, 1, 363, 5, 168, 1, 59, 18395, 1, 168, 4, 2, 103, 112, 18403, 18408, 111, 110, 59, 1, 371, 102, 59, 3, 55349, 56678, 4, 6, 97, 100, 104, 108, 115, 117, 18427, 18434, 18445, 18470, 18475, 18494, 114, 114, 111, 119, 59, 1, 8593, 111, 119, 110, 97, 114, 114, 111, 119, 59, 1, 8597, 97, 114, 112, 111, 111, 110, 4, 2, 108, 114, 18457, 18463, 101, 102, 116, 59, 1, 8639, 105, 103, 104, 116, 59, 1, 8638, 117, 115, 59, 1, 8846, 105, 4, 3, 59, 104, 108, 18484, 18486, 18489, 1, 965, 59, 1, 978, 111, 110, 59, 1, 965, 112, 97, 114, 114, 111, 119, 115, 59, 1, 8648, 4, 3, 99, 105, 116, 18512, 18537, 18542, 4, 2, 111, 114, 18518, 18532, 114, 110, 4, 2, 59, 101, 18526, 18528, 1, 8989, 114, 59, 1, 8989, 111, 112, 59, 1, 8974, 110, 103, 59, 1, 367, 114, 105, 59, 1, 9721, 99, 114, 59, 3, 55349, 56522, 4, 3, 100, 105, 114, 18561, 18566, 18572, 111, 116, 59, 1, 8944, 108, 100, 101, 59, 1, 361, 105, 4, 2, 59, 102, 18579, 18581, 1, 9653, 59, 1, 9652, 4, 2, 97, 109, 18590, 18595, 114, 114, 59, 1, 8648, 108, 5, 252, 1, 59, 18601, 1, 252, 97, 110, 103, 108, 101, 59, 1, 10663, 4, 15, 65, 66, 68, 97, 99, 100, 101, 102, 108, 110, 111, 112, 114, 115, 122, 18643, 18648, 18661, 18667, 18847, 18851, 18857, 18904, 18909, 18915, 18931, 18937, 18943, 18949, 18996, 114, 114, 59, 1, 8661, 97, 114, 4, 2, 59, 118, 18656, 18658, 1, 10984, 59, 1, 10985, 97, 115, 104, 59, 1, 8872, 4, 2, 110, 114, 18673, 18679, 103, 114, 116, 59, 1, 10652, 4, 7, 101, 107, 110, 112, 114, 115, 116, 18695, 18704, 18711, 18720, 18742, 18754, 18810, 112, 115, 105, 108, 111, 110, 59, 1, 1013, 97, 112, 112, 97, 59, 1, 1008, 111, 116, 104, 105, 110, 103, 59, 1, 8709, 4, 3, 104, 105, 114, 18728, 18732, 18735, 105, 59, 1, 981, 59, 1, 982, 111, 112, 116, 111, 59, 1, 8733, 4, 2, 59, 104, 18748, 18750, 1, 8597, 111, 59, 1, 1009, 4, 2, 105, 117, 18760, 18766, 103, 109, 97, 59, 1, 962, 4, 2, 98, 112, 18772, 18791, 115, 101, 116, 110, 101, 113, 4, 2, 59, 113, 18784, 18787, 3, 8842, 65024, 59, 3, 10955, 65024, 115, 101, 116, 110, 101, 113, 4, 2, 59, 113, 18803, 18806, 3, 8843, 65024, 59, 3, 10956, 65024, 4, 2, 104, 114, 18816, 18822, 101, 116, 97, 59, 1, 977, 105, 97, 110, 103, 108, 101, 4, 2, 108, 114, 18834, 18840, 101, 102, 116, 59, 1, 8882, 105, 103, 104, 116, 59, 1, 8883, 121, 59, 1, 1074, 97, 115, 104, 59, 1, 8866, 4, 3, 101, 108, 114, 18865, 18884, 18890, 4, 3, 59, 98, 101, 18873, 18875, 18880, 1, 8744, 97, 114, 59, 1, 8891, 113, 59, 1, 8794, 108, 105, 112, 59, 1, 8942, 4, 2, 98, 116, 18896, 18901, 97, 114, 59, 1, 124, 59, 1, 124, 114, 59, 3, 55349, 56627, 116, 114, 105, 59, 1, 8882, 115, 117, 4, 2, 98, 112, 18923, 18927, 59, 3, 8834, 8402, 59, 3, 8835, 8402, 112, 102, 59, 3, 55349, 56679, 114, 111, 112, 59, 1, 8733, 116, 114, 105, 59, 1, 8883, 4, 2, 99, 117, 18955, 18960, 114, 59, 3, 55349, 56523, 4, 2, 98, 112, 18966, 18981, 110, 4, 2, 69, 101, 18973, 18977, 59, 3, 10955, 65024, 59, 3, 8842, 65024, 110, 4, 2, 69, 101, 18988, 18992, 59, 3, 10956, 65024, 59, 3, 8843, 65024, 105, 103, 122, 97, 103, 59, 1, 10650, 4, 7, 99, 101, 102, 111, 112, 114, 115, 19020, 19026, 19061, 19066, 19072, 19075, 19089, 105, 114, 99, 59, 1, 373, 4, 2, 100, 105, 19032, 19055, 4, 2, 98, 103, 19038, 19043, 97, 114, 59, 1, 10847, 101, 4, 2, 59, 113, 19050, 19052, 1, 8743, 59, 1, 8793, 101, 114, 112, 59, 1, 8472, 114, 59, 3, 55349, 56628, 112, 102, 59, 3, 55349, 56680, 59, 1, 8472, 4, 2, 59, 101, 19081, 19083, 1, 8768, 97, 116, 104, 59, 1, 8768, 99, 114, 59, 3, 55349, 56524, 4, 14, 99, 100, 102, 104, 105, 108, 109, 110, 111, 114, 115, 117, 118, 119, 19125, 19146, 19152, 19157, 19173, 19176, 19192, 19197, 19202, 19236, 19252, 19269, 19286, 19291, 4, 3, 97, 105, 117, 19133, 19137, 19142, 112, 59, 1, 8898, 114, 99, 59, 1, 9711, 112, 59, 1, 8899, 116, 114, 105, 59, 1, 9661, 114, 59, 3, 55349, 56629, 4, 2, 65, 97, 19163, 19168, 114, 114, 59, 1, 10234, 114, 114, 59, 1, 10231, 59, 1, 958, 4, 2, 65, 97, 19182, 19187, 114, 114, 59, 1, 10232, 114, 114, 59, 1, 10229, 97, 112, 59, 1, 10236, 105, 115, 59, 1, 8955, 4, 3, 100, 112, 116, 19210, 19215, 19230, 111, 116, 59, 1, 10752, 4, 2, 102, 108, 19221, 19225, 59, 3, 55349, 56681, 117, 115, 59, 1, 10753, 105, 109, 101, 59, 1, 10754, 4, 2, 65, 97, 19242, 19247, 114, 114, 59, 1, 10233, 114, 114, 59, 1, 10230, 4, 2, 99, 113, 19258, 19263, 114, 59, 3, 55349, 56525, 99, 117, 112, 59, 1, 10758, 4, 2, 112, 116, 19275, 19281, 108, 117, 115, 59, 1, 10756, 114, 105, 59, 1, 9651, 101, 101, 59, 1, 8897, 101, 100, 103, 101, 59, 1, 8896, 4, 8, 97, 99, 101, 102, 105, 111, 115, 117, 19316, 19335, 19349, 19357, 19362, 19367, 19373, 19379, 99, 4, 2, 117, 121, 19323, 19332, 116, 101, 5, 253, 1, 59, 19330, 1, 253, 59, 1, 1103, 4, 2, 105, 121, 19341, 19346, 114, 99, 59, 1, 375, 59, 1, 1099, 110, 5, 165, 1, 59, 19355, 1, 165, 114, 59, 3, 55349, 56630, 99, 121, 59, 1, 1111, 112, 102, 59, 3, 55349, 56682, 99, 114, 59, 3, 55349, 56526, 4, 2, 99, 109, 19385, 19389, 121, 59, 1, 1102, 108, 5, 255, 1, 59, 19395, 1, 255, 4, 10, 97, 99, 100, 101, 102, 104, 105, 111, 115, 119, 19419, 19426, 19441, 19446, 19462, 19467, 19472, 19480, 19486, 19492, 99, 117, 116, 101, 59, 1, 378, 4, 2, 97, 121, 19432, 19438, 114, 111, 110, 59, 1, 382, 59, 1, 1079, 111, 116, 59, 1, 380, 4, 2, 101, 116, 19452, 19458, 116, 114, 102, 59, 1, 8488, 97, 59, 1, 950, 114, 59, 3, 55349, 56631, 99, 121, 59, 1, 1078, 103, 114, 97, 114, 114, 59, 1, 8669, 112, 102, 59, 3, 55349, 56683, 99, 114, 59, 3, 55349, 56527, 4, 2, 106, 110, 19498, 19501, 59, 1, 8205, 106, 59, 1, 8204]);\nconst Preprocessor2 = preprocessor;\nconst unicode$1 = unicode$3;\nconst neTree = namedEntityData;\nconst ERR$1 = errorCodes;\nconst $$5 = unicode$1.CODE_POINTS;\nconst $$ = unicode$1.CODE_POINT_SEQUENCES;\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = {\n 128: 8364,\n 130: 8218,\n 131: 402,\n 132: 8222,\n 133: 8230,\n 134: 8224,\n 135: 8225,\n 136: 710,\n 137: 8240,\n 138: 352,\n 139: 8249,\n 140: 338,\n 142: 381,\n 145: 8216,\n 146: 8217,\n 147: 8220,\n 148: 8221,\n 149: 8226,\n 150: 8211,\n 151: 8212,\n 152: 732,\n 153: 8482,\n 154: 353,\n 155: 8250,\n 156: 339,\n 158: 382,\n 159: 376\n};\nconst HAS_DATA_FLAG = 1 << 0;\nconst DATA_DUPLET_FLAG = 1 << 1;\nconst HAS_BRANCHES_FLAG = 1 << 2;\nconst MAX_BRANCH_MARKER_VALUE = HAS_DATA_FLAG | DATA_DUPLET_FLAG | HAS_BRANCHES_FLAG;\nconst DATA_STATE = \"DATA_STATE\";\nconst RCDATA_STATE = \"RCDATA_STATE\";\nconst RAWTEXT_STATE = \"RAWTEXT_STATE\";\nconst SCRIPT_DATA_STATE = \"SCRIPT_DATA_STATE\";\nconst PLAINTEXT_STATE = \"PLAINTEXT_STATE\";\nconst TAG_OPEN_STATE = \"TAG_OPEN_STATE\";\nconst END_TAG_OPEN_STATE = \"END_TAG_OPEN_STATE\";\nconst TAG_NAME_STATE = \"TAG_NAME_STATE\";\nconst RCDATA_LESS_THAN_SIGN_STATE = \"RCDATA_LESS_THAN_SIGN_STATE\";\nconst RCDATA_END_TAG_OPEN_STATE = \"RCDATA_END_TAG_OPEN_STATE\";\nconst RCDATA_END_TAG_NAME_STATE = \"RCDATA_END_TAG_NAME_STATE\";\nconst RAWTEXT_LESS_THAN_SIGN_STATE = \"RAWTEXT_LESS_THAN_SIGN_STATE\";\nconst RAWTEXT_END_TAG_OPEN_STATE = \"RAWTEXT_END_TAG_OPEN_STATE\";\nconst RAWTEXT_END_TAG_NAME_STATE = \"RAWTEXT_END_TAG_NAME_STATE\";\nconst SCRIPT_DATA_LESS_THAN_SIGN_STATE = \"SCRIPT_DATA_LESS_THAN_SIGN_STATE\";\nconst SCRIPT_DATA_END_TAG_OPEN_STATE = \"SCRIPT_DATA_END_TAG_OPEN_STATE\";\nconst SCRIPT_DATA_END_TAG_NAME_STATE = \"SCRIPT_DATA_END_TAG_NAME_STATE\";\nconst SCRIPT_DATA_ESCAPE_START_STATE = \"SCRIPT_DATA_ESCAPE_START_STATE\";\nconst SCRIPT_DATA_ESCAPE_START_DASH_STATE = \"SCRIPT_DATA_ESCAPE_START_DASH_STATE\";\nconst SCRIPT_DATA_ESCAPED_STATE = \"SCRIPT_DATA_ESCAPED_STATE\";\nconst SCRIPT_DATA_ESCAPED_DASH_STATE = \"SCRIPT_DATA_ESCAPED_DASH_STATE\";\nconst SCRIPT_DATA_ESCAPED_DASH_DASH_STATE = \"SCRIPT_DATA_ESCAPED_DASH_DASH_STATE\";\nconst SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE\";\nconst SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE\";\nconst SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE\";\nconst SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE\";\nconst SCRIPT_DATA_DOUBLE_ESCAPED_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPED_STATE\";\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE\";\nconst SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE\";\nconst SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE\";\nconst SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE = \"SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE\";\nconst BEFORE_ATTRIBUTE_NAME_STATE = \"BEFORE_ATTRIBUTE_NAME_STATE\";\nconst ATTRIBUTE_NAME_STATE = \"ATTRIBUTE_NAME_STATE\";\nconst AFTER_ATTRIBUTE_NAME_STATE = \"AFTER_ATTRIBUTE_NAME_STATE\";\nconst BEFORE_ATTRIBUTE_VALUE_STATE = \"BEFORE_ATTRIBUTE_VALUE_STATE\";\nconst ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE\";\nconst ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE = \"ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE\";\nconst ATTRIBUTE_VALUE_UNQUOTED_STATE = \"ATTRIBUTE_VALUE_UNQUOTED_STATE\";\nconst AFTER_ATTRIBUTE_VALUE_QUOTED_STATE = \"AFTER_ATTRIBUTE_VALUE_QUOTED_STATE\";\nconst SELF_CLOSING_START_TAG_STATE = \"SELF_CLOSING_START_TAG_STATE\";\nconst BOGUS_COMMENT_STATE = \"BOGUS_COMMENT_STATE\";\nconst MARKUP_DECLARATION_OPEN_STATE = \"MARKUP_DECLARATION_OPEN_STATE\";\nconst COMMENT_START_STATE = \"COMMENT_START_STATE\";\nconst COMMENT_START_DASH_STATE = \"COMMENT_START_DASH_STATE\";\nconst COMMENT_STATE = \"COMMENT_STATE\";\nconst COMMENT_LESS_THAN_SIGN_STATE = \"COMMENT_LESS_THAN_SIGN_STATE\";\nconst COMMENT_LESS_THAN_SIGN_BANG_STATE = \"COMMENT_LESS_THAN_SIGN_BANG_STATE\";\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE\";\nconst COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE\";\nconst COMMENT_END_DASH_STATE = \"COMMENT_END_DASH_STATE\";\nconst COMMENT_END_STATE = \"COMMENT_END_STATE\";\nconst COMMENT_END_BANG_STATE = \"COMMENT_END_BANG_STATE\";\nconst DOCTYPE_STATE = \"DOCTYPE_STATE\";\nconst BEFORE_DOCTYPE_NAME_STATE = \"BEFORE_DOCTYPE_NAME_STATE\";\nconst DOCTYPE_NAME_STATE = \"DOCTYPE_NAME_STATE\";\nconst AFTER_DOCTYPE_NAME_STATE = \"AFTER_DOCTYPE_NAME_STATE\";\nconst AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE = \"AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE\";\nconst BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE\";\nconst DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE\";\nconst DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE\";\nconst AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE\";\nconst BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE\";\nconst AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE = \"AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE\";\nconst BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE\";\nconst DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE\";\nconst DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE\";\nconst AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE\";\nconst BOGUS_DOCTYPE_STATE = \"BOGUS_DOCTYPE_STATE\";\nconst CDATA_SECTION_STATE = \"CDATA_SECTION_STATE\";\nconst CDATA_SECTION_BRACKET_STATE = \"CDATA_SECTION_BRACKET_STATE\";\nconst CDATA_SECTION_END_STATE = \"CDATA_SECTION_END_STATE\";\nconst CHARACTER_REFERENCE_STATE = \"CHARACTER_REFERENCE_STATE\";\nconst NAMED_CHARACTER_REFERENCE_STATE = \"NAMED_CHARACTER_REFERENCE_STATE\";\nconst AMBIGUOUS_AMPERSAND_STATE = \"AMBIGUOS_AMPERSAND_STATE\";\nconst NUMERIC_CHARACTER_REFERENCE_STATE = \"NUMERIC_CHARACTER_REFERENCE_STATE\";\nconst HEXADEMICAL_CHARACTER_REFERENCE_START_STATE = \"HEXADEMICAL_CHARACTER_REFERENCE_START_STATE\";\nconst DECIMAL_CHARACTER_REFERENCE_START_STATE = \"DECIMAL_CHARACTER_REFERENCE_START_STATE\";\nconst HEXADEMICAL_CHARACTER_REFERENCE_STATE = \"HEXADEMICAL_CHARACTER_REFERENCE_STATE\";\nconst DECIMAL_CHARACTER_REFERENCE_STATE = \"DECIMAL_CHARACTER_REFERENCE_STATE\";\nconst NUMERIC_CHARACTER_REFERENCE_END_STATE = \"NUMERIC_CHARACTER_REFERENCE_END_STATE\";\nfunction isWhitespace(cp) {\n return cp === $$5.SPACE || cp === $$5.LINE_FEED || cp === $$5.TABULATION || cp === $$5.FORM_FEED;\n}\nfunction isAsciiDigit(cp) {\n return cp >= $$5.DIGIT_0 && cp <= $$5.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $$5.LATIN_CAPITAL_A && cp <= $$5.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $$5.LATIN_SMALL_A && cp <= $$5.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $$5.LATIN_CAPITAL_A && cp <= $$5.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $$5.LATIN_SMALL_A && cp <= $$5.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLowerCodePoint(cp) {\n return cp + 32;\n}\nfunction toChar(cp) {\n if (cp <= 65535) {\n return String.fromCharCode(cp);\n }\n cp -= 65536;\n return String.fromCharCode(cp >>> 10 & 1023 | 55296) + String.fromCharCode(56320 | cp & 1023);\n}\nfunction toAsciiLowerChar(cp) {\n return String.fromCharCode(toAsciiLowerCodePoint(cp));\n}\nfunction findNamedEntityTreeBranch(nodeIx, cp) {\n const branchCount = neTree[++nodeIx];\n let lo = ++nodeIx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = lo + hi >>> 1;\n const midCp = neTree[mid];\n if (midCp < cp) {\n lo = mid + 1;\n } else if (midCp > cp) {\n hi = mid - 1;\n } else {\n return neTree[mid + branchCount];\n }\n }\n return -1;\n}\nlet Tokenizer$4 = class Tokenizer {\n constructor() {\n this.preprocessor = new Preprocessor2();\n this.tokenQueue = [];\n this.allowCDATA = false;\n this.state = DATA_STATE;\n this.returnState = \"\";\n this.charRefCode = -1;\n this.tempBuff = [];\n this.lastStartTagName = \"\";\n this.consumedAfterSnapshot = -1;\n this.active = false;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = null;\n }\n //Errors\n _err() {\n }\n _errOnNextCodePoint(err) {\n this._consume();\n this._err(err);\n this._unconsume();\n }\n //API\n getNextToken() {\n while (!this.tokenQueue.length && this.active) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this[this.state](cp);\n }\n }\n return this.tokenQueue.shift();\n }\n write(chunk, isLastChunk) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n for (; this.consumedAfterSnapshot > 0; this.consumedAfterSnapshot--) {\n this.preprocessor.retreat();\n }\n this.active = false;\n this.tokenQueue.push({ type: Tokenizer.HIBERNATION_TOKEN });\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _unconsume() {\n this.consumedAfterSnapshot--;\n this.preprocessor.retreat();\n }\n _reconsumeInState(state) {\n this.state = state;\n this._unconsume();\n }\n _consumeSequenceIfMatch(pattern, startCp, caseSensitive) {\n let consumedCount = 0;\n let isMatch = true;\n const patternLength = pattern.length;\n let patternPos = 0;\n let cp = startCp;\n let patternCp = void 0;\n for (; patternPos < patternLength; patternPos++) {\n if (patternPos > 0) {\n cp = this._consume();\n consumedCount++;\n }\n if (cp === $$5.EOF) {\n isMatch = false;\n break;\n }\n patternCp = pattern[patternPos];\n if (cp !== patternCp && (caseSensitive || cp !== toAsciiLowerCodePoint(patternCp))) {\n isMatch = false;\n break;\n }\n }\n if (!isMatch) {\n while (consumedCount--) {\n this._unconsume();\n }\n }\n return isMatch;\n }\n //Temp buffer\n _isTempBufferEqualToScriptString() {\n if (this.tempBuff.length !== $$.SCRIPT_STRING.length) {\n return false;\n }\n for (let i = 0; i < this.tempBuff.length; i++) {\n if (this.tempBuff[i] !== $$.SCRIPT_STRING[i]) {\n return false;\n }\n }\n return true;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: Tokenizer.START_TAG_TOKEN,\n tagName: \"\",\n selfClosing: false,\n ackSelfClosing: false,\n attrs: []\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: Tokenizer.END_TAG_TOKEN,\n tagName: \"\",\n selfClosing: false,\n attrs: []\n };\n }\n _createCommentToken() {\n this.currentToken = {\n type: Tokenizer.COMMENT_TOKEN,\n data: \"\"\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: Tokenizer.DOCTYPE_TOKEN,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null\n };\n }\n _createCharacterToken(type, ch) {\n this.currentCharacterToken = {\n type,\n chars: ch\n };\n }\n _createEOFToken() {\n this.currentToken = { type: Tokenizer.EOF_TOKEN };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: \"\"\n };\n }\n _leaveAttrName(toState) {\n if (Tokenizer.getTokenAttr(this.currentToken, this.currentAttr.name) === null) {\n this.currentToken.attrs.push(this.currentAttr);\n } else {\n this._err(ERR$1.duplicateAttribute);\n }\n this.state = toState;\n }\n _leaveAttrValue(toState) {\n this.state = toState;\n }\n //Token emission\n _emitCurrentToken() {\n this._emitCurrentCharacterToken();\n const ct = this.currentToken;\n this.currentToken = null;\n if (ct.type === Tokenizer.START_TAG_TOKEN) {\n this.lastStartTagName = ct.tagName;\n } else if (ct.type === Tokenizer.END_TAG_TOKEN) {\n if (ct.attrs.length > 0) {\n this._err(ERR$1.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR$1.endTagWithTrailingSolidus);\n }\n }\n this.tokenQueue.push(ct);\n }\n _emitCurrentCharacterToken() {\n if (this.currentCharacterToken) {\n this.tokenQueue.push(this.currentCharacterToken);\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n this._createEOFToken();\n this._emitCurrentToken();\n }\n //Characters emission\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)NULL_CHARACTER_TOKEN - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)WHITESPACE_CHARACTER_TOKEN - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)CHARACTER_TOKEN - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken && this.currentCharacterToken.type !== type) {\n this._emitCurrentCharacterToken();\n }\n if (this.currentCharacterToken) {\n this.currentCharacterToken.chars += ch;\n } else {\n this._createCharacterToken(type, ch);\n }\n }\n _emitCodePoint(cp) {\n let type = Tokenizer.CHARACTER_TOKEN;\n if (isWhitespace(cp)) {\n type = Tokenizer.WHITESPACE_CHARACTER_TOKEN;\n } else if (cp === $$5.NULL) {\n type = Tokenizer.NULL_CHARACTER_TOKEN;\n }\n this._appendCharToCurrentCharacterToken(type, toChar(cp));\n }\n _emitSeveralCodePoints(codePoints) {\n for (let i = 0; i < codePoints.length; i++) {\n this._emitCodePoint(codePoints[i]);\n }\n }\n //NOTE: used then we emit character explicitly. This is always a non-whitespace and a non-null character.\n //So we can avoid additional checks here.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(Tokenizer.CHARACTER_TOKEN, ch);\n }\n // Character reference helpers\n _matchNamedCharacterReference(startCp) {\n let result = null;\n let excess = 1;\n let i = findNamedEntityTreeBranch(0, startCp);\n this.tempBuff.push(startCp);\n while (i > -1) {\n const current = neTree[i];\n const inNode = current < MAX_BRANCH_MARKER_VALUE;\n const nodeWithData = inNode && current & HAS_DATA_FLAG;\n if (nodeWithData) {\n result = current & DATA_DUPLET_FLAG ? [neTree[++i], neTree[++i]] : [neTree[++i]];\n excess = 0;\n }\n const cp = this._consume();\n this.tempBuff.push(cp);\n excess++;\n if (cp === $$5.EOF) {\n break;\n }\n if (inNode) {\n i = current & HAS_BRANCHES_FLAG ? findNamedEntityTreeBranch(i, cp) : -1;\n } else {\n i = cp === current ? ++i : -1;\n }\n }\n while (excess--) {\n this.tempBuff.pop();\n this._unconsume();\n }\n return result;\n }\n _isCharacterReferenceInAttribute() {\n return this.returnState === ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE || this.returnState === ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE || this.returnState === ATTRIBUTE_VALUE_UNQUOTED_STATE;\n }\n _isCharacterReferenceAttributeQuirk(withSemicolon) {\n if (!withSemicolon && this._isCharacterReferenceInAttribute()) {\n const nextCp = this._consume();\n this._unconsume();\n return nextCp === $$5.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n }\n return false;\n }\n _flushCodePointsConsumedAsCharacterReference() {\n if (this._isCharacterReferenceInAttribute()) {\n for (let i = 0; i < this.tempBuff.length; i++) {\n this.currentAttr.value += toChar(this.tempBuff[i]);\n }\n } else {\n this._emitSeveralCodePoints(this.tempBuff);\n }\n this.tempBuff = [];\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n [DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $$5.LESS_THAN_SIGN) {\n this.state = TAG_OPEN_STATE;\n } else if (cp === $$5.AMPERSAND) {\n this.returnState = DATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n } else if (cp === $$5.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n [RCDATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $$5.AMPERSAND) {\n this.returnState = RCDATA_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $$5.LESS_THAN_SIGN) {\n this.state = RCDATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this._emitChars(unicode$1.REPLACEMENT_CHARACTER);\n } else if (cp === $$5.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n [RAWTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $$5.LESS_THAN_SIGN) {\n this.state = RAWTEXT_LESS_THAN_SIGN_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this._emitChars(unicode$1.REPLACEMENT_CHARACTER);\n } else if (cp === $$5.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n // Script data state\n //------------------------------------------------------------------\n [SCRIPT_DATA_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $$5.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_LESS_THAN_SIGN_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this._emitChars(unicode$1.REPLACEMENT_CHARACTER);\n } else if (cp === $$5.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n [PLAINTEXT_STATE](cp) {\n this.preprocessor.dropParsedChunk();\n if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this._emitChars(unicode$1.REPLACEMENT_CHARACTER);\n } else if (cp === $$5.EOF) {\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n [TAG_OPEN_STATE](cp) {\n if (cp === $$5.EXCLAMATION_MARK) {\n this.state = MARKUP_DECLARATION_OPEN_STATE;\n } else if (cp === $$5.SOLIDUS) {\n this.state = END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $$5.QUESTION_MARK) {\n this._err(ERR$1.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofBeforeTagName);\n this._emitChars(\"<\");\n this._emitEOFToken();\n } else {\n this._err(ERR$1.invalidFirstCharacterOfTagName);\n this._emitChars(\"<\");\n this._reconsumeInState(DATA_STATE);\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n [END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(TAG_NAME_STATE);\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.missingEndTagName);\n this.state = DATA_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofBeforeTagName);\n this._emitChars(\"\");\n this._emitEOFToken();\n } else {\n this._err(ERR$1.invalidFirstCharacterOfTagName);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n [TAG_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n } else if (cp === $$5.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentToken.tagName += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentToken.tagName += toChar(cp);\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n [RCDATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $$5.SOLIDUS) {\n this.tempBuff = [];\n this.state = RCDATA_END_TAG_OPEN_STATE;\n } else {\n this._emitChars(\"<\");\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RCDATA_END_TAG_NAME_STATE);\n } else {\n this._emitChars(\"\");\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n [RCDATA_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n if (cp === $$5.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n return;\n }\n }\n this._emitChars(\"\");\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RCDATA_STATE);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n [RAWTEXT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $$5.SOLIDUS) {\n this.tempBuff = [];\n this.state = RAWTEXT_END_TAG_OPEN_STATE;\n } else {\n this._emitChars(\"<\");\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(RAWTEXT_END_TAG_NAME_STATE);\n } else {\n this._emitChars(\"\");\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n [RAWTEXT_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n if (cp === $$5.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n if (cp === $$5.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n this._emitChars(\"\");\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(RAWTEXT_STATE);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $$5.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_END_TAG_OPEN_STATE;\n } else if (cp === $$5.EXCLAMATION_MARK) {\n this.state = SCRIPT_DATA_ESCAPE_START_STATE;\n this._emitChars(\"\");\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitChars(unicode$1.REPLACEMENT_CHARACTER);\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $$5.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE;\n } else if (isAsciiLetter(cp)) {\n this.tempBuff = [];\n this._emitChars(\"<\");\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE);\n } else {\n this._emitChars(\"<\");\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_OPEN_STATE](cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE);\n } else {\n this._emitChars(\"\");\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n [SCRIPT_DATA_ESCAPED_END_TAG_NAME_STATE](cp) {\n if (isAsciiUpper(cp)) {\n this.currentToken.tagName += toAsciiLowerChar(cp);\n this.tempBuff.push(cp);\n } else if (isAsciiLower(cp)) {\n this.currentToken.tagName += toChar(cp);\n this.tempBuff.push(cp);\n } else {\n if (this.lastStartTagName === this.currentToken.tagName) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_ATTRIBUTE_NAME_STATE;\n return;\n }\n if (cp === $$5.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n return;\n }\n if (cp === $$5.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n return;\n }\n }\n this._emitChars(\"\");\n this._emitSeveralCodePoints(this.tempBuff);\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_START_STATE](cp) {\n if (isWhitespace(cp) || cp === $$5.SOLIDUS || cp === $$5.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString() ? SCRIPT_DATA_DOUBLE_ESCAPED_STATE : SCRIPT_DATA_ESCAPED_STATE;\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_ESCAPED_STATE);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE;\n this._emitChars(\"-\");\n } else if (cp === $$5.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars(\"<\");\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this._emitChars(unicode$1.REPLACEMENT_CHARACTER);\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE;\n this._emitChars(\"-\");\n } else if (cp === $$5.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars(\"<\");\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode$1.REPLACEMENT_CHARACTER);\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this._emitChars(\"-\");\n } else if (cp === $$5.LESS_THAN_SIGN) {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE;\n this._emitChars(\"<\");\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = SCRIPT_DATA_STATE;\n this._emitChars(\">\");\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitChars(unicode$1.REPLACEMENT_CHARACTER);\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n } else {\n this.state = SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $$5.SOLIDUS) {\n this.tempBuff = [];\n this.state = SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE;\n this._emitChars(\"/\");\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n [SCRIPT_DATA_DOUBLE_ESCAPE_END_STATE](cp) {\n if (isWhitespace(cp) || cp === $$5.SOLIDUS || cp === $$5.GREATER_THAN_SIGN) {\n this.state = this._isTempBufferEqualToScriptString() ? SCRIPT_DATA_ESCAPED_STATE : SCRIPT_DATA_DOUBLE_ESCAPED_STATE;\n this._emitCodePoint(cp);\n } else if (isAsciiUpper(cp)) {\n this.tempBuff.push(toAsciiLowerCodePoint(cp));\n this._emitCodePoint(cp);\n } else if (isAsciiLower(cp)) {\n this.tempBuff.push(cp);\n this._emitCodePoint(cp);\n } else {\n this._reconsumeInState(SCRIPT_DATA_DOUBLE_ESCAPED_STATE);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $$5.SOLIDUS || cp === $$5.GREATER_THAN_SIGN || cp === $$5.EOF) {\n this._reconsumeInState(AFTER_ATTRIBUTE_NAME_STATE);\n } else if (cp === $$5.EQUALS_SIGN) {\n this._err(ERR$1.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr(\"=\");\n this.state = ATTRIBUTE_NAME_STATE;\n } else {\n this._createAttr(\"\");\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n [ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp) || cp === $$5.SOLIDUS || cp === $$5.GREATER_THAN_SIGN || cp === $$5.EOF) {\n this._leaveAttrName(AFTER_ATTRIBUTE_NAME_STATE);\n this._unconsume();\n } else if (cp === $$5.EQUALS_SIGN) {\n this._leaveAttrName(BEFORE_ATTRIBUTE_VALUE_STATE);\n } else if (isAsciiUpper(cp)) {\n this.currentAttr.name += toAsciiLowerChar(cp);\n } else if (cp === $$5.QUOTATION_MARK || cp === $$5.APOSTROPHE || cp === $$5.LESS_THAN_SIGN) {\n this._err(ERR$1.unexpectedCharacterInAttributeName);\n this.currentAttr.name += toChar(cp);\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentAttr.name += unicode$1.REPLACEMENT_CHARACTER;\n } else {\n this.currentAttr.name += toChar(cp);\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $$5.SOLIDUS) {\n this.state = SELF_CLOSING_START_TAG_STATE;\n } else if (cp === $$5.EQUALS_SIGN) {\n this.state = BEFORE_ATTRIBUTE_VALUE_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInTag);\n this._emitEOFToken();\n } else {\n this._createAttr(\"\");\n this._reconsumeInState(ATTRIBUTE_NAME_STATE);\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n [BEFORE_ATTRIBUTE_VALUE_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $$5.QUOTATION_MARK) {\n this.state = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n } else if (cp === $$5.APOSTROPHE) {\n this.state = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.missingAttributeValue);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(ATTRIBUTE_VALUE_UNQUOTED_STATE);\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $$5.QUOTATION_MARK) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $$5.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_DOUBLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentAttr.value += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE](cp) {\n if (cp === $$5.APOSTROPHE) {\n this.state = AFTER_ATTRIBUTE_VALUE_QUOTED_STATE;\n } else if (cp === $$5.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_SINGLE_QUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentAttr.value += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n [ATTRIBUTE_VALUE_UNQUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $$5.AMPERSAND) {\n this.returnState = ATTRIBUTE_VALUE_UNQUOTED_STATE;\n this.state = CHARACTER_REFERENCE_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentAttr.value += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.QUOTATION_MARK || cp === $$5.APOSTROPHE || cp === $$5.LESS_THAN_SIGN || cp === $$5.EQUALS_SIGN || cp === $$5.GRAVE_ACCENT) {\n this._err(ERR$1.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += toChar(cp);\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInTag);\n this._emitEOFToken();\n } else {\n this.currentAttr.value += toChar(cp);\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n [AFTER_ATTRIBUTE_VALUE_QUOTED_STATE](cp) {\n if (isWhitespace(cp)) {\n this._leaveAttrValue(BEFORE_ATTRIBUTE_NAME_STATE);\n } else if (cp === $$5.SOLIDUS) {\n this._leaveAttrValue(SELF_CLOSING_START_TAG_STATE);\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._leaveAttrValue(DATA_STATE);\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR$1.missingWhitespaceBetweenAttributes);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n [SELF_CLOSING_START_TAG_STATE](cp) {\n if (cp === $$5.GREATER_THAN_SIGN) {\n this.currentToken.selfClosing = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInTag);\n this._emitEOFToken();\n } else {\n this._err(ERR$1.unexpectedSolidusInTag);\n this._reconsumeInState(BEFORE_ATTRIBUTE_NAME_STATE);\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n [BOGUS_COMMENT_STATE](cp) {\n if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentToken.data += unicode$1.REPLACEMENT_CHARACTER;\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n [MARKUP_DECLARATION_OPEN_STATE](cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH_STRING, cp, true)) {\n this._createCommentToken();\n this.state = COMMENT_START_STATE;\n } else if (this._consumeSequenceIfMatch($$.DOCTYPE_STRING, cp, false)) {\n this.state = DOCTYPE_STATE;\n } else if (this._consumeSequenceIfMatch($$.CDATA_START_STRING, cp, true)) {\n if (this.allowCDATA) {\n this.state = CDATA_SECTION_STATE;\n } else {\n this._err(ERR$1.cdataInHtmlContent);\n this._createCommentToken();\n this.currentToken.data = \"[CDATA[\";\n this.state = BOGUS_COMMENT_STATE;\n }\n } else if (!this._ensureHibernation()) {\n this._err(ERR$1.incorrectlyOpenedComment);\n this._createCommentToken();\n this._reconsumeInState(BOGUS_COMMENT_STATE);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n [COMMENT_START_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.state = COMMENT_START_DASH_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n [COMMENT_START_DASH_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.abruptClosingOfEmptyComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += \"-\";\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n // Comment state\n //------------------------------------------------------------------\n [COMMENT_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $$5.LESS_THAN_SIGN) {\n this.currentToken.data += \"<\";\n this.state = COMMENT_LESS_THAN_SIGN_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentToken.data += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += toChar(cp);\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_STATE](cp) {\n if (cp === $$5.EXCLAMATION_MARK) {\n this.currentToken.data += \"!\";\n this.state = COMMENT_LESS_THAN_SIGN_BANG_STATE;\n } else if (cp === $$5.LESS_THAN_SIGN) {\n this.currentToken.data += \"!\";\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.state = COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE;\n } else {\n this._reconsumeInState(COMMENT_END_DASH_STATE);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n [COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH_STATE](cp) {\n if (cp !== $$5.GREATER_THAN_SIGN && cp !== $$5.EOF) {\n this._err(ERR$1.nestedComment);\n }\n this._reconsumeInState(COMMENT_END_STATE);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n [COMMENT_END_DASH_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.state = COMMENT_END_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += \"-\";\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n [COMMENT_END_STATE](cp) {\n if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EXCLAMATION_MARK) {\n this.state = COMMENT_END_BANG_STATE;\n } else if (cp === $$5.HYPHEN_MINUS) {\n this.currentToken.data += \"-\";\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += \"--\";\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n [COMMENT_END_BANG_STATE](cp) {\n if (cp === $$5.HYPHEN_MINUS) {\n this.currentToken.data += \"--!\";\n this.state = COMMENT_END_DASH_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.incorrectlyClosedComment);\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInComment);\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.data += \"--!\";\n this._reconsumeInState(COMMENT_STATE);\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n [DOCTYPE_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_NAME_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR$1.missingWhitespaceBeforeDoctypeName);\n this._reconsumeInState(BEFORE_DOCTYPE_NAME_STATE);\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(toAsciiLowerChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this._createDoctypeToken(unicode$1.REPLACEMENT_CHARACTER);\n this.state = DOCTYPE_NAME_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.missingDoctypeName);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this._createDoctypeToken(null);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._createDoctypeToken(toChar(cp));\n this.state = DOCTYPE_NAME_STATE;\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n [DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = AFTER_DOCTYPE_NAME_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (isAsciiUpper(cp)) {\n this.currentToken.name += toAsciiLowerChar(cp);\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentToken.name += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.name += toChar(cp);\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_NAME_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else if (this._consumeSequenceIfMatch($$.PUBLIC_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE;\n } else if (this._consumeSequenceIfMatch($$.SYSTEM_STRING, cp, false)) {\n this.state = AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE;\n } else if (!this._ensureHibernation()) {\n this._err(ERR$1.invalidCharacterSequenceAfterDoctypeName);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $$5.QUOTATION_MARK) {\n this._err(ERR$1.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = \"\";\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $$5.APOSTROPHE) {\n this._err(ERR$1.missingWhitespaceAfterDoctypePublicKeyword);\n this.currentToken.publicId = \"\";\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR$1.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $$5.QUOTATION_MARK) {\n this.currentToken.publicId = \"\";\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $$5.APOSTROPHE) {\n this.currentToken.publicId = \"\";\n this.state = DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.missingDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR$1.missingQuoteBeforeDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $$5.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentToken.publicId += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $$5.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentToken.publicId += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.abruptDoctypePublicIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.publicId += toChar(cp);\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_PUBLIC_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.QUOTATION_MARK) {\n this._err(ERR$1.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $$5.APOSTROPHE) {\n this._err(ERR$1.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR$1.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n [BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $$5.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $$5.QUOTATION_MARK) {\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $$5.APOSTROPHE) {\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR$1.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_KEYWORD_STATE](cp) {\n if (isWhitespace(cp)) {\n this.state = BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $$5.QUOTATION_MARK) {\n this._err(ERR$1.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $$5.APOSTROPHE) {\n this._err(ERR$1.missingWhitespaceAfterDoctypeSystemKeyword);\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR$1.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n [BEFORE_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $$5.QUOTATION_MARK) {\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE;\n } else if (cp === $$5.APOSTROPHE) {\n this.currentToken.systemId = \"\";\n this.state = DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.missingDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this.state = DATA_STATE;\n this._emitCurrentToken();\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR$1.missingQuoteBeforeDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED_STATE](cp) {\n if (cp === $$5.QUOTATION_MARK) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentToken.systemId += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n [DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED_STATE](cp) {\n if (cp === $$5.APOSTROPHE) {\n this.state = AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n this.currentToken.systemId += unicode$1.REPLACEMENT_CHARACTER;\n } else if (cp === $$5.GREATER_THAN_SIGN) {\n this._err(ERR$1.abruptDoctypeSystemIdentifier);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this.currentToken.systemId += toChar(cp);\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n [AFTER_DOCTYPE_SYSTEM_IDENTIFIER_STATE](cp) {\n if (isWhitespace(cp)) {\n return;\n }\n if (cp === $$5.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInDoctype);\n this.currentToken.forceQuirks = true;\n this._emitCurrentToken();\n this._emitEOFToken();\n } else {\n this._err(ERR$1.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this._reconsumeInState(BOGUS_DOCTYPE_STATE);\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n [BOGUS_DOCTYPE_STATE](cp) {\n if (cp === $$5.GREATER_THAN_SIGN) {\n this._emitCurrentToken();\n this.state = DATA_STATE;\n } else if (cp === $$5.NULL) {\n this._err(ERR$1.unexpectedNullCharacter);\n } else if (cp === $$5.EOF) {\n this._emitCurrentToken();\n this._emitEOFToken();\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n [CDATA_SECTION_STATE](cp) {\n if (cp === $$5.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_BRACKET_STATE;\n } else if (cp === $$5.EOF) {\n this._err(ERR$1.eofInCdata);\n this._emitEOFToken();\n } else {\n this._emitCodePoint(cp);\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n [CDATA_SECTION_BRACKET_STATE](cp) {\n if (cp === $$5.RIGHT_SQUARE_BRACKET) {\n this.state = CDATA_SECTION_END_STATE;\n } else {\n this._emitChars(\"]\");\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n [CDATA_SECTION_END_STATE](cp) {\n if (cp === $$5.GREATER_THAN_SIGN) {\n this.state = DATA_STATE;\n } else if (cp === $$5.RIGHT_SQUARE_BRACKET) {\n this._emitChars(\"]\");\n } else {\n this._emitChars(\"]]\");\n this._reconsumeInState(CDATA_SECTION_STATE);\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n [CHARACTER_REFERENCE_STATE](cp) {\n this.tempBuff = [$$5.AMPERSAND];\n if (cp === $$5.NUMBER_SIGN) {\n this.tempBuff.push(cp);\n this.state = NUMERIC_CHARACTER_REFERENCE_STATE;\n } else if (isAsciiAlphaNumeric(cp)) {\n this._reconsumeInState(NAMED_CHARACTER_REFERENCE_STATE);\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n // Named character reference state\n //------------------------------------------------------------------\n [NAMED_CHARACTER_REFERENCE_STATE](cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n if (this._ensureHibernation()) {\n this.tempBuff = [$$5.AMPERSAND];\n } else if (matchResult) {\n const withSemicolon = this.tempBuff[this.tempBuff.length - 1] === $$5.SEMICOLON;\n if (!this._isCharacterReferenceAttributeQuirk(withSemicolon)) {\n if (!withSemicolon) {\n this._errOnNextCodePoint(ERR$1.missingSemicolonAfterCharacterReference);\n }\n this.tempBuff = matchResult;\n }\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = this.returnState;\n } else {\n this._flushCodePointsConsumedAsCharacterReference();\n this.state = AMBIGUOUS_AMPERSAND_STATE;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n [AMBIGUOUS_AMPERSAND_STATE](cp) {\n if (isAsciiAlphaNumeric(cp)) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += toChar(cp);\n } else {\n this._emitCodePoint(cp);\n }\n } else {\n if (cp === $$5.SEMICOLON) {\n this._err(ERR$1.unknownNamedCharacterReference);\n }\n this._reconsumeInState(this.returnState);\n }\n }\n // Numeric character reference state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_STATE](cp) {\n this.charRefCode = 0;\n if (cp === $$5.LATIN_SMALL_X || cp === $$5.LATIN_CAPITAL_X) {\n this.tempBuff.push(cp);\n this.state = HEXADEMICAL_CHARACTER_REFERENCE_START_STATE;\n } else {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_START_STATE);\n }\n }\n // Hexademical character reference start state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiHexDigit(cp)) {\n this._reconsumeInState(HEXADEMICAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR$1.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n // Decimal character reference start state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_START_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this._reconsumeInState(DECIMAL_CHARACTER_REFERENCE_STATE);\n } else {\n this._err(ERR$1.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n }\n // Hexademical character reference state\n //------------------------------------------------------------------\n [HEXADEMICAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 55;\n } else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 87;\n } else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 48;\n } else if (cp === $$5.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR$1.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n // Decimal character reference state\n //------------------------------------------------------------------\n [DECIMAL_CHARACTER_REFERENCE_STATE](cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 48;\n } else if (cp === $$5.SEMICOLON) {\n this.state = NUMERIC_CHARACTER_REFERENCE_END_STATE;\n } else {\n this._err(ERR$1.missingSemicolonAfterCharacterReference);\n this._reconsumeInState(NUMERIC_CHARACTER_REFERENCE_END_STATE);\n }\n }\n // Numeric character reference end state\n //------------------------------------------------------------------\n [NUMERIC_CHARACTER_REFERENCE_END_STATE]() {\n if (this.charRefCode === $$5.NULL) {\n this._err(ERR$1.nullCharacterReference);\n this.charRefCode = $$5.REPLACEMENT_CHARACTER;\n } else if (this.charRefCode > 1114111) {\n this._err(ERR$1.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $$5.REPLACEMENT_CHARACTER;\n } else if (unicode$1.isSurrogate(this.charRefCode)) {\n this._err(ERR$1.surrogateCharacterReference);\n this.charRefCode = $$5.REPLACEMENT_CHARACTER;\n } else if (unicode$1.isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR$1.noncharacterCharacterReference);\n } else if (unicode$1.isControlCodePoint(this.charRefCode) || this.charRefCode === $$5.CARRIAGE_RETURN) {\n this._err(ERR$1.controlCharacterReference);\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS[this.charRefCode];\n if (replacement) {\n this.charRefCode = replacement;\n }\n }\n this.tempBuff = [this.charRefCode];\n this._flushCodePointsConsumedAsCharacterReference();\n this._reconsumeInState(this.returnState);\n }\n};\nTokenizer$4.CHARACTER_TOKEN = \"CHARACTER_TOKEN\";\nTokenizer$4.NULL_CHARACTER_TOKEN = \"NULL_CHARACTER_TOKEN\";\nTokenizer$4.WHITESPACE_CHARACTER_TOKEN = \"WHITESPACE_CHARACTER_TOKEN\";\nTokenizer$4.START_TAG_TOKEN = \"START_TAG_TOKEN\";\nTokenizer$4.END_TAG_TOKEN = \"END_TAG_TOKEN\";\nTokenizer$4.COMMENT_TOKEN = \"COMMENT_TOKEN\";\nTokenizer$4.DOCTYPE_TOKEN = \"DOCTYPE_TOKEN\";\nTokenizer$4.EOF_TOKEN = \"EOF_TOKEN\";\nTokenizer$4.HIBERNATION_TOKEN = \"HIBERNATION_TOKEN\";\nTokenizer$4.MODE = {\n DATA: DATA_STATE,\n RCDATA: RCDATA_STATE,\n RAWTEXT: RAWTEXT_STATE,\n SCRIPT_DATA: SCRIPT_DATA_STATE,\n PLAINTEXT: PLAINTEXT_STATE\n};\nTokenizer$4.getTokenAttr = function(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n};\nvar tokenizer = Tokenizer$4;\nvar html$5 = {};\nconst NS$3 = html$5.NAMESPACES = {\n HTML: \"http://www.w3.org/1999/xhtml\",\n MATHML: \"http://www.w3.org/1998/Math/MathML\",\n SVG: \"http://www.w3.org/2000/svg\",\n XLINK: \"http://www.w3.org/1999/xlink\",\n XML: \"http://www.w3.org/XML/1998/namespace\",\n XMLNS: \"http://www.w3.org/2000/xmlns/\"\n};\nhtml$5.ATTRS = {\n TYPE: \"type\",\n ACTION: \"action\",\n ENCODING: \"encoding\",\n PROMPT: \"prompt\",\n NAME: \"name\",\n COLOR: \"color\",\n FACE: \"face\",\n SIZE: \"size\"\n};\nhtml$5.DOCUMENT_MODE = {\n NO_QUIRKS: \"no-quirks\",\n QUIRKS: \"quirks\",\n LIMITED_QUIRKS: \"limited-quirks\"\n};\nconst $$4 = html$5.TAG_NAMES = {\n A: \"a\",\n ADDRESS: \"address\",\n ANNOTATION_XML: \"annotation-xml\",\n APPLET: \"applet\",\n AREA: \"area\",\n ARTICLE: \"article\",\n ASIDE: \"aside\",\n B: \"b\",\n BASE: \"base\",\n BASEFONT: \"basefont\",\n BGSOUND: \"bgsound\",\n BIG: \"big\",\n BLOCKQUOTE: \"blockquote\",\n BODY: \"body\",\n BR: \"br\",\n BUTTON: \"button\",\n CAPTION: \"caption\",\n CENTER: \"center\",\n CODE: \"code\",\n COL: \"col\",\n COLGROUP: \"colgroup\",\n DD: \"dd\",\n DESC: \"desc\",\n DETAILS: \"details\",\n DIALOG: \"dialog\",\n DIR: \"dir\",\n DIV: \"div\",\n DL: \"dl\",\n DT: \"dt\",\n EM: \"em\",\n EMBED: \"embed\",\n FIELDSET: \"fieldset\",\n FIGCAPTION: \"figcaption\",\n FIGURE: \"figure\",\n FONT: \"font\",\n FOOTER: \"footer\",\n FOREIGN_OBJECT: \"foreignObject\",\n FORM: \"form\",\n FRAME: \"frame\",\n FRAMESET: \"frameset\",\n H1: \"h1\",\n H2: \"h2\",\n H3: \"h3\",\n H4: \"h4\",\n H5: \"h5\",\n H6: \"h6\",\n HEAD: \"head\",\n HEADER: \"header\",\n HGROUP: \"hgroup\",\n HR: \"hr\",\n HTML: \"html\",\n I: \"i\",\n IMG: \"img\",\n IMAGE: \"image\",\n INPUT: \"input\",\n IFRAME: \"iframe\",\n KEYGEN: \"keygen\",\n LABEL: \"label\",\n LI: \"li\",\n LINK: \"link\",\n LISTING: \"listing\",\n MAIN: \"main\",\n MALIGNMARK: \"malignmark\",\n MARQUEE: \"marquee\",\n MATH: \"math\",\n MENU: \"menu\",\n META: \"meta\",\n MGLYPH: \"mglyph\",\n MI: \"mi\",\n MO: \"mo\",\n MN: \"mn\",\n MS: \"ms\",\n MTEXT: \"mtext\",\n NAV: \"nav\",\n NOBR: \"nobr\",\n NOFRAMES: \"noframes\",\n NOEMBED: \"noembed\",\n NOSCRIPT: \"noscript\",\n OBJECT: \"object\",\n OL: \"ol\",\n OPTGROUP: \"optgroup\",\n OPTION: \"option\",\n P: \"p\",\n PARAM: \"param\",\n PLAINTEXT: \"plaintext\",\n PRE: \"pre\",\n RB: \"rb\",\n RP: \"rp\",\n RT: \"rt\",\n RTC: \"rtc\",\n RUBY: \"ruby\",\n S: \"s\",\n SCRIPT: \"script\",\n SECTION: \"section\",\n SELECT: \"select\",\n SOURCE: \"source\",\n SMALL: \"small\",\n SPAN: \"span\",\n STRIKE: \"strike\",\n STRONG: \"strong\",\n STYLE: \"style\",\n SUB: \"sub\",\n SUMMARY: \"summary\",\n SUP: \"sup\",\n TABLE: \"table\",\n TBODY: \"tbody\",\n TEMPLATE: \"template\",\n TEXTAREA: \"textarea\",\n TFOOT: \"tfoot\",\n TD: \"td\",\n TH: \"th\",\n THEAD: \"thead\",\n TITLE: \"title\",\n TR: \"tr\",\n TRACK: \"track\",\n TT: \"tt\",\n U: \"u\",\n UL: \"ul\",\n SVG: \"svg\",\n VAR: \"var\",\n WBR: \"wbr\",\n XMP: \"xmp\"\n};\nhtml$5.SPECIAL_ELEMENTS = {\n [NS$3.HTML]: {\n [$$4.ADDRESS]: true,\n [$$4.APPLET]: true,\n [$$4.AREA]: true,\n [$$4.ARTICLE]: true,\n [$$4.ASIDE]: true,\n [$$4.BASE]: true,\n [$$4.BASEFONT]: true,\n [$$4.BGSOUND]: true,\n [$$4.BLOCKQUOTE]: true,\n [$$4.BODY]: true,\n [$$4.BR]: true,\n [$$4.BUTTON]: true,\n [$$4.CAPTION]: true,\n [$$4.CENTER]: true,\n [$$4.COL]: true,\n [$$4.COLGROUP]: true,\n [$$4.DD]: true,\n [$$4.DETAILS]: true,\n [$$4.DIR]: true,\n [$$4.DIV]: true,\n [$$4.DL]: true,\n [$$4.DT]: true,\n [$$4.EMBED]: true,\n [$$4.FIELDSET]: true,\n [$$4.FIGCAPTION]: true,\n [$$4.FIGURE]: true,\n [$$4.FOOTER]: true,\n [$$4.FORM]: true,\n [$$4.FRAME]: true,\n [$$4.FRAMESET]: true,\n [$$4.H1]: true,\n [$$4.H2]: true,\n [$$4.H3]: true,\n [$$4.H4]: true,\n [$$4.H5]: true,\n [$$4.H6]: true,\n [$$4.HEAD]: true,\n [$$4.HEADER]: true,\n [$$4.HGROUP]: true,\n [$$4.HR]: true,\n [$$4.HTML]: true,\n [$$4.IFRAME]: true,\n [$$4.IMG]: true,\n [$$4.INPUT]: true,\n [$$4.LI]: true,\n [$$4.LINK]: true,\n [$$4.LISTING]: true,\n [$$4.MAIN]: true,\n [$$4.MARQUEE]: true,\n [$$4.MENU]: true,\n [$$4.META]: true,\n [$$4.NAV]: true,\n [$$4.NOEMBED]: true,\n [$$4.NOFRAMES]: true,\n [$$4.NOSCRIPT]: true,\n [$$4.OBJECT]: true,\n [$$4.OL]: true,\n [$$4.P]: true,\n [$$4.PARAM]: true,\n [$$4.PLAINTEXT]: true,\n [$$4.PRE]: true,\n [$$4.SCRIPT]: true,\n [$$4.SECTION]: true,\n [$$4.SELECT]: true,\n [$$4.SOURCE]: true,\n [$$4.STYLE]: true,\n [$$4.SUMMARY]: true,\n [$$4.TABLE]: true,\n [$$4.TBODY]: true,\n [$$4.TD]: true,\n [$$4.TEMPLATE]: true,\n [$$4.TEXTAREA]: true,\n [$$4.TFOOT]: true,\n [$$4.TH]: true,\n [$$4.THEAD]: true,\n [$$4.TITLE]: true,\n [$$4.TR]: true,\n [$$4.TRACK]: true,\n [$$4.UL]: true,\n [$$4.WBR]: true,\n [$$4.XMP]: true\n },\n [NS$3.MATHML]: {\n [$$4.MI]: true,\n [$$4.MO]: true,\n [$$4.MN]: true,\n [$$4.MS]: true,\n [$$4.MTEXT]: true,\n [$$4.ANNOTATION_XML]: true\n },\n [NS$3.SVG]: {\n [$$4.TITLE]: true,\n [$$4.FOREIGN_OBJECT]: true,\n [$$4.DESC]: true\n }\n};\nconst HTML$3 = html$5;\nconst $$3 = HTML$3.TAG_NAMES;\nconst NS$2 = HTML$3.NAMESPACES;\nfunction isImpliedEndTagRequired(tn) {\n switch (tn.length) {\n case 1:\n return tn === $$3.P;\n case 2:\n return tn === $$3.RB || tn === $$3.RP || tn === $$3.RT || tn === $$3.DD || tn === $$3.DT || tn === $$3.LI;\n case 3:\n return tn === $$3.RTC;\n case 6:\n return tn === $$3.OPTION;\n case 8:\n return tn === $$3.OPTGROUP;\n }\n return false;\n}\nfunction isImpliedEndTagRequiredThoroughly(tn) {\n switch (tn.length) {\n case 1:\n return tn === $$3.P;\n case 2:\n return tn === $$3.RB || tn === $$3.RP || tn === $$3.RT || tn === $$3.DD || tn === $$3.DT || tn === $$3.LI || tn === $$3.TD || tn === $$3.TH || tn === $$3.TR;\n case 3:\n return tn === $$3.RTC;\n case 5:\n return tn === $$3.TBODY || tn === $$3.TFOOT || tn === $$3.THEAD;\n case 6:\n return tn === $$3.OPTION;\n case 7:\n return tn === $$3.CAPTION;\n case 8:\n return tn === $$3.OPTGROUP || tn === $$3.COLGROUP;\n }\n return false;\n}\nfunction isScopingElement(tn, ns2) {\n switch (tn.length) {\n case 2:\n if (tn === $$3.TD || tn === $$3.TH) {\n return ns2 === NS$2.HTML;\n } else if (tn === $$3.MI || tn === $$3.MO || tn === $$3.MN || tn === $$3.MS) {\n return ns2 === NS$2.MATHML;\n }\n break;\n case 4:\n if (tn === $$3.HTML) {\n return ns2 === NS$2.HTML;\n } else if (tn === $$3.DESC) {\n return ns2 === NS$2.SVG;\n }\n break;\n case 5:\n if (tn === $$3.TABLE) {\n return ns2 === NS$2.HTML;\n } else if (tn === $$3.MTEXT) {\n return ns2 === NS$2.MATHML;\n } else if (tn === $$3.TITLE) {\n return ns2 === NS$2.SVG;\n }\n break;\n case 6:\n return (tn === $$3.APPLET || tn === $$3.OBJECT) && ns2 === NS$2.HTML;\n case 7:\n return (tn === $$3.CAPTION || tn === $$3.MARQUEE) && ns2 === NS$2.HTML;\n case 8:\n return tn === $$3.TEMPLATE && ns2 === NS$2.HTML;\n case 13:\n return tn === $$3.FOREIGN_OBJECT && ns2 === NS$2.SVG;\n case 14:\n return tn === $$3.ANNOTATION_XML && ns2 === NS$2.MATHML;\n }\n return false;\n}\nlet OpenElementStack$1 = class OpenElementStack {\n constructor(document2, treeAdapter) {\n this.stackTop = -1;\n this.items = [];\n this.current = document2;\n this.currentTagName = null;\n this.currentTmplContent = null;\n this.tmplCount = 0;\n this.treeAdapter = treeAdapter;\n }\n //Index of element\n _indexOf(element2) {\n let idx = -1;\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element2) {\n idx = i;\n break;\n }\n }\n return idx;\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagName === $$3.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS$2.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagName = this.current && this.treeAdapter.getTagName(this.current);\n this.currentTmplContent = this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : null;\n }\n //Mutations\n push(element2) {\n this.items[++this.stackTop] = element2;\n this._updateCurrentElement();\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n }\n pop() {\n this.stackTop--;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this._updateCurrentElement();\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this._updateCurrentElement();\n }\n }\n insertAfter(referenceElement, newElement) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n if (insertionIdx === ++this.stackTop) {\n this._updateCurrentElement();\n }\n }\n popUntilTagNamePopped(tagName) {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns2 = this.treeAdapter.getNamespaceURI(this.current);\n this.pop();\n if (tn === tagName && ns2 === NS$2.HTML) {\n break;\n }\n }\n }\n popUntilElementPopped(element2) {\n while (this.stackTop > -1) {\n const poppedElement = this.current;\n this.pop();\n if (poppedElement === element2) {\n break;\n }\n }\n }\n popUntilNumberedHeaderPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns2 = this.treeAdapter.getNamespaceURI(this.current);\n this.pop();\n if (tn === $$3.H1 || tn === $$3.H2 || tn === $$3.H3 || tn === $$3.H4 || tn === $$3.H5 || tn === $$3.H6 && ns2 === NS$2.HTML) {\n break;\n }\n }\n }\n popUntilTableCellPopped() {\n while (this.stackTop > -1) {\n const tn = this.currentTagName;\n const ns2 = this.treeAdapter.getNamespaceURI(this.current);\n this.pop();\n if (tn === $$3.TD || tn === $$3.TH && ns2 === NS$2.HTML) {\n break;\n }\n }\n }\n popAllUpToHtmlElement() {\n this.stackTop = 0;\n this._updateCurrentElement();\n }\n clearBackToTableContext() {\n while (this.currentTagName !== $$3.TABLE && this.currentTagName !== $$3.TEMPLATE && this.currentTagName !== $$3.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS$2.HTML) {\n this.pop();\n }\n }\n clearBackToTableBodyContext() {\n while (this.currentTagName !== $$3.TBODY && this.currentTagName !== $$3.TFOOT && this.currentTagName !== $$3.THEAD && this.currentTagName !== $$3.TEMPLATE && this.currentTagName !== $$3.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS$2.HTML) {\n this.pop();\n }\n }\n clearBackToTableRowContext() {\n while (this.currentTagName !== $$3.TR && this.currentTagName !== $$3.TEMPLATE && this.currentTagName !== $$3.HTML || this.treeAdapter.getNamespaceURI(this.current) !== NS$2.HTML) {\n this.pop();\n }\n }\n remove(element2) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.items[i] === element2) {\n this.items.splice(i, 1);\n this.stackTop--;\n this._updateCurrentElement();\n break;\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n const element2 = this.items[1];\n return element2 && this.treeAdapter.getTagName(element2) === $$3.BODY ? element2 : null;\n }\n contains(element2) {\n return this._indexOf(element2) > -1;\n }\n getCommonAncestor(element2) {\n let elementIdx = this._indexOf(element2);\n return --elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.currentTagName === $$3.HTML;\n }\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns2 = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns2 === NS$2.HTML) {\n return true;\n }\n if (isScopingElement(tn, ns2)) {\n return false;\n }\n }\n return true;\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns2 = this.treeAdapter.getNamespaceURI(this.items[i]);\n if ((tn === $$3.H1 || tn === $$3.H2 || tn === $$3.H3 || tn === $$3.H4 || tn === $$3.H5 || tn === $$3.H6) && ns2 === NS$2.HTML) {\n return true;\n }\n if (isScopingElement(tn, ns2)) {\n return false;\n }\n }\n return true;\n }\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns2 = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns2 === NS$2.HTML) {\n return true;\n }\n if ((tn === $$3.UL || tn === $$3.OL) && ns2 === NS$2.HTML || isScopingElement(tn, ns2)) {\n return false;\n }\n }\n return true;\n }\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns2 = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns2 === NS$2.HTML) {\n return true;\n }\n if (tn === $$3.BUTTON && ns2 === NS$2.HTML || isScopingElement(tn, ns2)) {\n return false;\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns2 = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns2 !== NS$2.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn === $$3.TABLE || tn === $$3.TEMPLATE || tn === $$3.HTML) {\n return false;\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns2 = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns2 !== NS$2.HTML) {\n continue;\n }\n if (tn === $$3.TBODY || tn === $$3.THEAD || tn === $$3.TFOOT) {\n return true;\n }\n if (tn === $$3.TABLE || tn === $$3.HTML) {\n return false;\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.treeAdapter.getTagName(this.items[i]);\n const ns2 = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns2 !== NS$2.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn !== $$3.OPTION && tn !== $$3.OPTGROUP) {\n return false;\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (isImpliedEndTagRequired(this.currentTagName)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (isImpliedEndTagRequiredThoroughly(this.currentTagName)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionTagName) {\n while (isImpliedEndTagRequired(this.currentTagName) && this.currentTagName !== exclusionTagName) {\n this.pop();\n }\n }\n};\nvar openElementStack = OpenElementStack$1;\nconst NOAH_ARK_CAPACITY = 3;\nlet FormattingElementList$1 = class FormattingElementList {\n constructor(treeAdapter) {\n this.length = 0;\n this.entries = [];\n this.treeAdapter = treeAdapter;\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement) {\n const candidates = [];\n if (this.length >= NOAH_ARK_CAPACITY) {\n const neAttrsLength = this.treeAdapter.getAttrList(newElement).length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n const element2 = entry.element;\n const elementAttrs = this.treeAdapter.getAttrList(element2);\n const isCandidate = this.treeAdapter.getTagName(element2) === neTagName && this.treeAdapter.getNamespaceURI(element2) === neNamespaceURI && elementAttrs.length === neAttrsLength;\n if (isCandidate) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates.length < NOAH_ARK_CAPACITY ? [] : candidates;\n }\n _ensureNoahArkCondition(newElement) {\n const candidates = this._getNoahArkConditionCandidates(newElement);\n let cLength = candidates.length;\n if (cLength) {\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const neAttrsLength = neAttrs.length;\n const neAttrsMap = /* @__PURE__ */ Object.create(null);\n for (let i = 0; i < neAttrsLength; i++) {\n const neAttr = neAttrs[i];\n neAttrsMap[neAttr.name] = neAttr.value;\n }\n for (let i = 0; i < neAttrsLength; i++) {\n for (let j = 0; j < cLength; j++) {\n const cAttr = candidates[j].attrs[i];\n if (neAttrsMap[cAttr.name] !== cAttr.value) {\n candidates.splice(j, 1);\n cLength--;\n }\n if (candidates.length < NOAH_ARK_CAPACITY) {\n return;\n }\n }\n }\n for (let i = cLength - 1; i >= NOAH_ARK_CAPACITY - 1; i--) {\n this.entries.splice(candidates[i].idx, 1);\n this.length--;\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.push({ type: FormattingElementList.MARKER_ENTRY });\n this.length++;\n }\n pushElement(element2, token) {\n this._ensureNoahArkCondition(element2);\n this.entries.push({\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element2,\n token\n });\n this.length++;\n }\n insertElementAfterBookmark(element2, token) {\n let bookmarkIdx = this.length - 1;\n for (; bookmarkIdx >= 0; bookmarkIdx--) {\n if (this.entries[bookmarkIdx] === this.bookmark) {\n break;\n }\n }\n this.entries.splice(bookmarkIdx + 1, 0, {\n type: FormattingElementList.ELEMENT_ENTRY,\n element: element2,\n token\n });\n this.length++;\n }\n removeEntry(entry) {\n for (let i = this.length - 1; i >= 0; i--) {\n if (this.entries[i] === entry) {\n this.entries.splice(i, 1);\n this.length--;\n break;\n }\n }\n }\n clearToLastMarker() {\n while (this.length) {\n const entry = this.entries.pop();\n this.length--;\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n break;\n }\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n if (entry.type === FormattingElementList.MARKER_ENTRY) {\n return null;\n }\n if (this.treeAdapter.getTagName(entry.element) === tagName) {\n return entry;\n }\n }\n return null;\n }\n getElementEntry(element2) {\n for (let i = this.length - 1; i >= 0; i--) {\n const entry = this.entries[i];\n if (entry.type === FormattingElementList.ELEMENT_ENTRY && entry.element === element2) {\n return entry;\n }\n }\n return null;\n }\n};\nFormattingElementList$1.MARKER_ENTRY = \"MARKER_ENTRY\";\nFormattingElementList$1.ELEMENT_ENTRY = \"ELEMENT_ENTRY\";\nvar formattingElementList = FormattingElementList$1;\nlet Mixin$9 = class Mixin {\n constructor(host) {\n const originalMethods = {};\n const overriddenMethods = this._getOverriddenMethods(this, originalMethods);\n for (const key2 of Object.keys(overriddenMethods)) {\n if (typeof overriddenMethods[key2] === \"function\") {\n originalMethods[key2] = host[key2];\n host[key2] = overriddenMethods[key2];\n }\n }\n }\n _getOverriddenMethods() {\n throw new Error(\"Not implemented\");\n }\n};\nMixin$9.install = function(host, Ctor, opts) {\n if (!host.__mixins) {\n host.__mixins = [];\n }\n for (let i = 0; i < host.__mixins.length; i++) {\n if (host.__mixins[i].constructor === Ctor) {\n return host.__mixins[i];\n }\n }\n const mixin2 = new Ctor(host, opts);\n host.__mixins.push(mixin2);\n return mixin2;\n};\nvar mixin = Mixin$9;\nconst Mixin$8 = mixin;\nlet PositionTrackingPreprocessorMixin$2 = class PositionTrackingPreprocessorMixin extends Mixin$8 {\n constructor(preprocessor2) {\n super(preprocessor2);\n this.preprocessor = preprocessor2;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.offset = 0;\n this.col = 0;\n this.line = 1;\n }\n _getOverriddenMethods(mxn, orig) {\n return {\n advance() {\n const pos = this.pos + 1;\n const ch = this.html[pos];\n if (mxn.isEol) {\n mxn.isEol = false;\n mxn.line++;\n mxn.lineStartPos = pos;\n }\n if (ch === \"\\n\" || ch === \"\\r\" && this.html[pos + 1] !== \"\\n\") {\n mxn.isEol = true;\n }\n mxn.col = pos - mxn.lineStartPos + 1;\n mxn.offset = mxn.droppedBufferSize + pos;\n return orig.advance.call(this);\n },\n retreat() {\n orig.retreat.call(this);\n mxn.isEol = false;\n mxn.col = this.pos - mxn.lineStartPos + 1;\n },\n dropParsedChunk() {\n const prevPos = this.pos;\n orig.dropParsedChunk.call(this);\n const reduction = prevPos - this.pos;\n mxn.lineStartPos -= reduction;\n mxn.droppedBufferSize += reduction;\n mxn.offset = mxn.droppedBufferSize + this.pos;\n }\n };\n }\n};\nvar preprocessorMixin$1 = PositionTrackingPreprocessorMixin$2;\nconst Mixin$7 = mixin;\nconst Tokenizer$3 = tokenizer;\nconst PositionTrackingPreprocessorMixin$1 = preprocessorMixin$1;\nlet LocationInfoTokenizerMixin$2 = class LocationInfoTokenizerMixin extends Mixin$7 {\n constructor(tokenizer2) {\n super(tokenizer2);\n this.tokenizer = tokenizer2;\n this.posTracker = Mixin$7.install(tokenizer2.preprocessor, PositionTrackingPreprocessorMixin$1);\n this.currentAttrLocation = null;\n this.ctLoc = null;\n }\n _getCurrentLocation() {\n return {\n startLine: this.posTracker.line,\n startCol: this.posTracker.col,\n startOffset: this.posTracker.offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n }\n _attachCurrentAttrLocationInfo() {\n this.currentAttrLocation.endLine = this.posTracker.line;\n this.currentAttrLocation.endCol = this.posTracker.col;\n this.currentAttrLocation.endOffset = this.posTracker.offset;\n const currentToken = this.tokenizer.currentToken;\n const currentAttr = this.tokenizer.currentAttr;\n if (!currentToken.location.attrs) {\n currentToken.location.attrs = /* @__PURE__ */ Object.create(null);\n }\n currentToken.location.attrs[currentAttr.name] = this.currentAttrLocation;\n }\n _getOverriddenMethods(mxn, orig) {\n const methods = {\n _createStartTagToken() {\n orig._createStartTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n _createEndTagToken() {\n orig._createEndTagToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n _createCommentToken() {\n orig._createCommentToken.call(this);\n this.currentToken.location = mxn.ctLoc;\n },\n _createDoctypeToken(initialName) {\n orig._createDoctypeToken.call(this, initialName);\n this.currentToken.location = mxn.ctLoc;\n },\n _createCharacterToken(type, ch) {\n orig._createCharacterToken.call(this, type, ch);\n this.currentCharacterToken.location = mxn.ctLoc;\n },\n _createEOFToken() {\n orig._createEOFToken.call(this);\n this.currentToken.location = mxn._getCurrentLocation();\n },\n _createAttr(attrNameFirstCh) {\n orig._createAttr.call(this, attrNameFirstCh);\n mxn.currentAttrLocation = mxn._getCurrentLocation();\n },\n _leaveAttrName(toState) {\n orig._leaveAttrName.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n _leaveAttrValue(toState) {\n orig._leaveAttrValue.call(this, toState);\n mxn._attachCurrentAttrLocationInfo();\n },\n _emitCurrentToken() {\n const ctLoc = this.currentToken.location;\n if (this.currentCharacterToken) {\n this.currentCharacterToken.location.endLine = ctLoc.startLine;\n this.currentCharacterToken.location.endCol = ctLoc.startCol;\n this.currentCharacterToken.location.endOffset = ctLoc.startOffset;\n }\n if (this.currentToken.type === Tokenizer$3.EOF_TOKEN) {\n ctLoc.endLine = ctLoc.startLine;\n ctLoc.endCol = ctLoc.startCol;\n ctLoc.endOffset = ctLoc.startOffset;\n } else {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col + 1;\n ctLoc.endOffset = mxn.posTracker.offset + 1;\n }\n orig._emitCurrentToken.call(this);\n },\n _emitCurrentCharacterToken() {\n const ctLoc = this.currentCharacterToken && this.currentCharacterToken.location;\n if (ctLoc && ctLoc.endOffset === -1) {\n ctLoc.endLine = mxn.posTracker.line;\n ctLoc.endCol = mxn.posTracker.col;\n ctLoc.endOffset = mxn.posTracker.offset;\n }\n orig._emitCurrentCharacterToken.call(this);\n }\n };\n Object.keys(Tokenizer$3.MODE).forEach((modeName) => {\n const state = Tokenizer$3.MODE[modeName];\n methods[state] = function(cp) {\n mxn.ctLoc = mxn._getCurrentLocation();\n orig[state].call(this, cp);\n };\n });\n return methods;\n }\n};\nvar tokenizerMixin$1 = LocationInfoTokenizerMixin$2;\nconst Mixin$6 = mixin;\nlet LocationInfoOpenElementStackMixin$1 = class LocationInfoOpenElementStackMixin extends Mixin$6 {\n constructor(stack, opts) {\n super(stack);\n this.onItemPop = opts.onItemPop;\n }\n _getOverriddenMethods(mxn, orig) {\n return {\n pop() {\n mxn.onItemPop(this.current);\n orig.pop.call(this);\n },\n popAllUpToHtmlElement() {\n for (let i = this.stackTop; i > 0; i--) {\n mxn.onItemPop(this.items[i]);\n }\n orig.popAllUpToHtmlElement.call(this);\n },\n remove(element2) {\n mxn.onItemPop(this.current);\n orig.remove.call(this, element2);\n }\n };\n }\n};\nvar openElementStackMixin = LocationInfoOpenElementStackMixin$1;\nconst Mixin$5 = mixin;\nconst Tokenizer$2 = tokenizer;\nconst LocationInfoTokenizerMixin$1 = tokenizerMixin$1;\nconst LocationInfoOpenElementStackMixin2 = openElementStackMixin;\nconst HTML$2 = html$5;\nconst $$2 = HTML$2.TAG_NAMES;\nlet LocationInfoParserMixin$1 = class LocationInfoParserMixin extends Mixin$5 {\n constructor(parser2) {\n super(parser2);\n this.parser = parser2;\n this.treeAdapter = this.parser.treeAdapter;\n this.posTracker = null;\n this.lastStartTagToken = null;\n this.lastFosterParentingLocation = null;\n this.currentToken = null;\n }\n _setStartLocation(element2) {\n let loc = null;\n if (this.lastStartTagToken) {\n loc = Object.assign({}, this.lastStartTagToken.location);\n loc.startTag = this.lastStartTagToken.location;\n }\n this.treeAdapter.setNodeSourceCodeLocation(element2, loc);\n }\n _setEndLocation(element2, closingToken) {\n const loc = this.treeAdapter.getNodeSourceCodeLocation(element2);\n if (loc) {\n if (closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element2);\n const isClosingEndTag = closingToken.type === Tokenizer$2.END_TAG_TOKEN && tn === closingToken.tagName;\n const endLoc = {};\n if (isClosingEndTag) {\n endLoc.endTag = Object.assign({}, ctLoc);\n endLoc.endLine = ctLoc.endLine;\n endLoc.endCol = ctLoc.endCol;\n endLoc.endOffset = ctLoc.endOffset;\n } else {\n endLoc.endLine = ctLoc.startLine;\n endLoc.endCol = ctLoc.startCol;\n endLoc.endOffset = ctLoc.startOffset;\n }\n this.treeAdapter.updateNodeSourceCodeLocation(element2, endLoc);\n }\n }\n }\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document2, fragmentContext) {\n orig._bootstrap.call(this, document2, fragmentContext);\n mxn.lastStartTagToken = null;\n mxn.lastFosterParentingLocation = null;\n mxn.currentToken = null;\n const tokenizerMixin2 = Mixin$5.install(this.tokenizer, LocationInfoTokenizerMixin$1);\n mxn.posTracker = tokenizerMixin2.posTracker;\n Mixin$5.install(this.openElements, LocationInfoOpenElementStackMixin2, {\n onItemPop: function(element2) {\n mxn._setEndLocation(element2, mxn.currentToken);\n }\n });\n },\n _runParsingLoop(scriptHandler) {\n orig._runParsingLoop.call(this, scriptHandler);\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n mxn._setEndLocation(this.openElements.items[i], mxn.currentToken);\n }\n },\n //Token processing\n _processTokenInForeignContent(token) {\n mxn.currentToken = token;\n orig._processTokenInForeignContent.call(this, token);\n },\n _processToken(token) {\n mxn.currentToken = token;\n orig._processToken.call(this, token);\n const requireExplicitUpdate = token.type === Tokenizer$2.END_TAG_TOKEN && (token.tagName === $$2.HTML || token.tagName === $$2.BODY && this.openElements.hasInScope($$2.BODY));\n if (requireExplicitUpdate) {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const element2 = this.openElements.items[i];\n if (this.treeAdapter.getTagName(element2) === token.tagName) {\n mxn._setEndLocation(element2, token);\n break;\n }\n }\n }\n },\n //Doctype\n _setDocumentType(token) {\n orig._setDocumentType.call(this, token);\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const cnLength = documentChildren.length;\n for (let i = 0; i < cnLength; i++) {\n const node = documentChildren[i];\n if (this.treeAdapter.isDocumentTypeNode(node)) {\n this.treeAdapter.setNodeSourceCodeLocation(node, token.location);\n break;\n }\n }\n },\n //Elements\n _attachElementToTree(element2) {\n mxn._setStartLocation(element2);\n mxn.lastStartTagToken = null;\n orig._attachElementToTree.call(this, element2);\n },\n _appendElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._appendElement.call(this, token, namespaceURI);\n },\n _insertElement(token, namespaceURI) {\n mxn.lastStartTagToken = token;\n orig._insertElement.call(this, token, namespaceURI);\n },\n _insertTemplate(token) {\n mxn.lastStartTagToken = token;\n orig._insertTemplate.call(this, token);\n const tmplContent = this.treeAdapter.getTemplateContent(this.openElements.current);\n this.treeAdapter.setNodeSourceCodeLocation(tmplContent, null);\n },\n _insertFakeRootElement() {\n orig._insertFakeRootElement.call(this);\n this.treeAdapter.setNodeSourceCodeLocation(this.openElements.current, null);\n },\n //Comments\n _appendCommentNode(token, parent) {\n orig._appendCommentNode.call(this, token, parent);\n const children2 = this.treeAdapter.getChildNodes(parent);\n const commentNode = children2[children2.length - 1];\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n },\n //Text\n _findFosterParentingLocation() {\n mxn.lastFosterParentingLocation = orig._findFosterParentingLocation.call(this);\n return mxn.lastFosterParentingLocation;\n },\n _insertCharacters(token) {\n orig._insertCharacters.call(this, token);\n const hasFosterParent = this._shouldFosterParentOnInsertion();\n const parent = hasFosterParent && mxn.lastFosterParentingLocation.parent || this.openElements.currentTmplContent || this.openElements.current;\n const siblings2 = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = hasFosterParent && mxn.lastFosterParentingLocation.beforeElement ? siblings2.indexOf(mxn.lastFosterParentingLocation.beforeElement) - 1 : siblings2.length - 1;\n const textNode = siblings2[textNodeIdx];\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n } else {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n };\n }\n};\nvar parserMixin$1 = LocationInfoParserMixin$1;\nconst Mixin$4 = mixin;\nlet ErrorReportingMixinBase$3 = class ErrorReportingMixinBase extends Mixin$4 {\n constructor(host, opts) {\n super(host);\n this.posTracker = null;\n this.onParseError = opts.onParseError;\n }\n _setErrorLocation(err) {\n err.startLine = err.endLine = this.posTracker.line;\n err.startCol = err.endCol = this.posTracker.col;\n err.startOffset = err.endOffset = this.posTracker.offset;\n }\n _reportError(code2) {\n const err = {\n code: code2,\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1\n };\n this._setErrorLocation(err);\n this.onParseError(err);\n }\n _getOverriddenMethods(mxn) {\n return {\n _err(code2) {\n mxn._reportError(code2);\n }\n };\n }\n};\nvar mixinBase = ErrorReportingMixinBase$3;\nconst ErrorReportingMixinBase$2 = mixinBase;\nconst PositionTrackingPreprocessorMixin2 = preprocessorMixin$1;\nconst Mixin$3 = mixin;\nlet ErrorReportingPreprocessorMixin$1 = class ErrorReportingPreprocessorMixin extends ErrorReportingMixinBase$2 {\n constructor(preprocessor2, opts) {\n super(preprocessor2, opts);\n this.posTracker = Mixin$3.install(preprocessor2, PositionTrackingPreprocessorMixin2);\n this.lastErrOffset = -1;\n }\n _reportError(code2) {\n if (this.lastErrOffset !== this.posTracker.offset) {\n this.lastErrOffset = this.posTracker.offset;\n super._reportError(code2);\n }\n }\n};\nvar preprocessorMixin = ErrorReportingPreprocessorMixin$1;\nconst ErrorReportingMixinBase$1 = mixinBase;\nconst ErrorReportingPreprocessorMixin2 = preprocessorMixin;\nconst Mixin$2 = mixin;\nlet ErrorReportingTokenizerMixin$1 = class ErrorReportingTokenizerMixin extends ErrorReportingMixinBase$1 {\n constructor(tokenizer2, opts) {\n super(tokenizer2, opts);\n const preprocessorMixin2 = Mixin$2.install(tokenizer2.preprocessor, ErrorReportingPreprocessorMixin2, opts);\n this.posTracker = preprocessorMixin2.posTracker;\n }\n};\nvar tokenizerMixin = ErrorReportingTokenizerMixin$1;\nconst ErrorReportingMixinBase2 = mixinBase;\nconst ErrorReportingTokenizerMixin2 = tokenizerMixin;\nconst LocationInfoTokenizerMixin2 = tokenizerMixin$1;\nconst Mixin$1 = mixin;\nlet ErrorReportingParserMixin$1 = class ErrorReportingParserMixin extends ErrorReportingMixinBase2 {\n constructor(parser2, opts) {\n super(parser2, opts);\n this.opts = opts;\n this.ctLoc = null;\n this.locBeforeToken = false;\n }\n _setErrorLocation(err) {\n if (this.ctLoc) {\n err.startLine = this.ctLoc.startLine;\n err.startCol = this.ctLoc.startCol;\n err.startOffset = this.ctLoc.startOffset;\n err.endLine = this.locBeforeToken ? this.ctLoc.startLine : this.ctLoc.endLine;\n err.endCol = this.locBeforeToken ? this.ctLoc.startCol : this.ctLoc.endCol;\n err.endOffset = this.locBeforeToken ? this.ctLoc.startOffset : this.ctLoc.endOffset;\n }\n }\n _getOverriddenMethods(mxn, orig) {\n return {\n _bootstrap(document2, fragmentContext) {\n orig._bootstrap.call(this, document2, fragmentContext);\n Mixin$1.install(this.tokenizer, ErrorReportingTokenizerMixin2, mxn.opts);\n Mixin$1.install(this.tokenizer, LocationInfoTokenizerMixin2);\n },\n _processInputToken(token) {\n mxn.ctLoc = token.location;\n orig._processInputToken.call(this, token);\n },\n _err(code2, options) {\n mxn.locBeforeToken = options && options.beforeToken;\n mxn._reportError(code2);\n }\n };\n }\n};\nvar parserMixin = ErrorReportingParserMixin$1;\nvar _default = {};\nconst { DOCUMENT_MODE: DOCUMENT_MODE$1 } = html$5;\n_default.createDocument = function() {\n return {\n nodeName: \"#document\",\n mode: DOCUMENT_MODE$1.NO_QUIRKS,\n childNodes: []\n };\n};\n_default.createDocumentFragment = function() {\n return {\n nodeName: \"#document-fragment\",\n childNodes: []\n };\n};\n_default.createElement = function(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null\n };\n};\n_default.createCommentNode = function(data2) {\n return {\n nodeName: \"#comment\",\n data: data2,\n parentNode: null\n };\n};\nconst createTextNode = function(value) {\n return {\n nodeName: \"#text\",\n value,\n parentNode: null\n };\n};\nconst appendChild = _default.appendChild = function(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n};\nconst insertBefore = _default.insertBefore = function(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n};\n_default.setTemplateContent = function(templateElement, contentElement) {\n templateElement.content = contentElement;\n};\n_default.getTemplateContent = function(templateElement) {\n return templateElement.content;\n};\n_default.setDocumentType = function(document2, name, publicId, systemId) {\n let doctypeNode = null;\n for (let i = 0; i < document2.childNodes.length; i++) {\n if (document2.childNodes[i].nodeName === \"#documentType\") {\n doctypeNode = document2.childNodes[i];\n break;\n }\n }\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n } else {\n appendChild(document2, {\n nodeName: \"#documentType\",\n name,\n publicId,\n systemId\n });\n }\n};\n_default.setDocumentMode = function(document2, mode) {\n document2.mode = mode;\n};\n_default.getDocumentMode = function(document2) {\n return document2.mode;\n};\n_default.detachNode = function(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n};\n_default.insertText = function(parentNode, text2) {\n if (parentNode.childNodes.length) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (prevNode.nodeName === \"#text\") {\n prevNode.value += text2;\n return;\n }\n }\n appendChild(parentNode, createTextNode(text2));\n};\n_default.insertTextBefore = function(parentNode, text2, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && prevNode.nodeName === \"#text\") {\n prevNode.value += text2;\n } else {\n insertBefore(parentNode, createTextNode(text2), referenceNode);\n }\n};\n_default.adoptAttributes = function(recipient, attrs) {\n const recipientAttrsMap = [];\n for (let i = 0; i < recipient.attrs.length; i++) {\n recipientAttrsMap.push(recipient.attrs[i].name);\n }\n for (let j = 0; j < attrs.length; j++) {\n if (recipientAttrsMap.indexOf(attrs[j].name) === -1) {\n recipient.attrs.push(attrs[j]);\n }\n }\n};\n_default.getFirstChild = function(node) {\n return node.childNodes[0];\n};\n_default.getChildNodes = function(node) {\n return node.childNodes;\n};\n_default.getParentNode = function(node) {\n return node.parentNode;\n};\n_default.getAttrList = function(element2) {\n return element2.attrs;\n};\n_default.getTagName = function(element2) {\n return element2.tagName;\n};\n_default.getNamespaceURI = function(element2) {\n return element2.namespaceURI;\n};\n_default.getTextNodeContent = function(textNode) {\n return textNode.value;\n};\n_default.getCommentNodeContent = function(commentNode) {\n return commentNode.data;\n};\n_default.getDocumentTypeNodeName = function(doctypeNode) {\n return doctypeNode.name;\n};\n_default.getDocumentTypeNodePublicId = function(doctypeNode) {\n return doctypeNode.publicId;\n};\n_default.getDocumentTypeNodeSystemId = function(doctypeNode) {\n return doctypeNode.systemId;\n};\n_default.isTextNode = function(node) {\n return node.nodeName === \"#text\";\n};\n_default.isCommentNode = function(node) {\n return node.nodeName === \"#comment\";\n};\n_default.isDocumentTypeNode = function(node) {\n return node.nodeName === \"#documentType\";\n};\n_default.isElementNode = function(node) {\n return !!node.tagName;\n};\n_default.setNodeSourceCodeLocation = function(node, location2) {\n node.sourceCodeLocation = location2;\n};\n_default.getNodeSourceCodeLocation = function(node) {\n return node.sourceCodeLocation;\n};\n_default.updateNodeSourceCodeLocation = function(node, endLocation) {\n node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation);\n};\nvar mergeOptions$1 = function mergeOptions(defaults, options) {\n options = options || /* @__PURE__ */ Object.create(null);\n return [defaults, options].reduce((merged, optObj) => {\n Object.keys(optObj).forEach((key2) => {\n merged[key2] = optObj[key2];\n });\n return merged;\n }, /* @__PURE__ */ Object.create(null));\n};\nvar doctype$4 = {};\nconst { DOCUMENT_MODE } = html$5;\nconst VALID_DOCTYPE_NAME = \"html\";\nconst VALID_SYSTEM_ID = \"about:legacy-compat\";\nconst QUIRKS_MODE_SYSTEM_ID = \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\";\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n \"+//silmaril//dtd html pro v0r11 19970101//\",\n \"-//as//dtd html 3.0 aswedit + extensions//\",\n \"-//advasoft ltd//dtd html 3.0 aswedit + extensions//\",\n \"-//ietf//dtd html 2.0 level 1//\",\n \"-//ietf//dtd html 2.0 level 2//\",\n \"-//ietf//dtd html 2.0 strict level 1//\",\n \"-//ietf//dtd html 2.0 strict level 2//\",\n \"-//ietf//dtd html 2.0 strict//\",\n \"-//ietf//dtd html 2.0//\",\n \"-//ietf//dtd html 2.1e//\",\n \"-//ietf//dtd html 3.0//\",\n \"-//ietf//dtd html 3.2 final//\",\n \"-//ietf//dtd html 3.2//\",\n \"-//ietf//dtd html 3//\",\n \"-//ietf//dtd html level 0//\",\n \"-//ietf//dtd html level 1//\",\n \"-//ietf//dtd html level 2//\",\n \"-//ietf//dtd html level 3//\",\n \"-//ietf//dtd html strict level 0//\",\n \"-//ietf//dtd html strict level 1//\",\n \"-//ietf//dtd html strict level 2//\",\n \"-//ietf//dtd html strict level 3//\",\n \"-//ietf//dtd html strict//\",\n \"-//ietf//dtd html//\",\n \"-//metrius//dtd metrius presentational//\",\n \"-//microsoft//dtd internet explorer 2.0 html strict//\",\n \"-//microsoft//dtd internet explorer 2.0 html//\",\n \"-//microsoft//dtd internet explorer 2.0 tables//\",\n \"-//microsoft//dtd internet explorer 3.0 html strict//\",\n \"-//microsoft//dtd internet explorer 3.0 html//\",\n \"-//microsoft//dtd internet explorer 3.0 tables//\",\n \"-//netscape comm. corp.//dtd html//\",\n \"-//netscape comm. corp.//dtd strict html//\",\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n \"-//sq//dtd html 2.0 hotmetal + extensions//\",\n \"-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//\",\n \"-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//\",\n \"-//spyglass//dtd html 2.0 extended//\",\n \"-//sun microsystems corp.//dtd hotjava html//\",\n \"-//sun microsystems corp.//dtd hotjava strict html//\",\n \"-//w3c//dtd html 3 1995-03-24//\",\n \"-//w3c//dtd html 3.2 draft//\",\n \"-//w3c//dtd html 3.2 final//\",\n \"-//w3c//dtd html 3.2//\",\n \"-//w3c//dtd html 3.2s draft//\",\n \"-//w3c//dtd html 4.0 frameset//\",\n \"-//w3c//dtd html 4.0 transitional//\",\n \"-//w3c//dtd html experimental 19960712//\",\n \"-//w3c//dtd html experimental 970421//\",\n \"-//w3c//dtd w3 html//\",\n \"-//w3o//dtd w3 html 3.0//\",\n \"-//webtechs//dtd mozilla html 2.0//\",\n \"-//webtechs//dtd mozilla html//\"\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = QUIRKS_MODE_PUBLIC_ID_PREFIXES.concat([\n \"-//w3c//dtd html 4.01 frameset//\",\n \"-//w3c//dtd html 4.01 transitional//\"\n]);\nconst QUIRKS_MODE_PUBLIC_IDS = [\"-//w3o//dtd w3 html strict 3.0//en//\", \"-/w3c/dtd html 4.0 transitional/en\", \"html\"];\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = [\"-//w3c//dtd xhtml 1.0 frameset//\", \"-//w3c//dtd xhtml 1.0 transitional//\"];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = LIMITED_QUIRKS_PUBLIC_ID_PREFIXES.concat([\n \"-//w3c//dtd html 4.01 frameset//\",\n \"-//w3c//dtd html 4.01 transitional//\"\n]);\nfunction enquoteDoctypeId(id) {\n const quote2 = id.indexOf('\"') !== -1 ? \"'\" : '\"';\n return quote2 + id + quote2;\n}\nfunction hasPrefix(publicId, prefixes) {\n for (let i = 0; i < prefixes.length; i++) {\n if (publicId.indexOf(prefixes[i]) === 0) {\n return true;\n }\n }\n return false;\n}\ndoctype$4.isConforming = function(token) {\n return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID);\n};\ndoctype$4.getDocumentMode = function(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const systemId = token.systemId;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let publicId = token.publicId;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.indexOf(publicId) > -1) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n};\ndoctype$4.serializeContent = function(name, publicId, systemId) {\n let str = \"!DOCTYPE \";\n if (name) {\n str += name;\n }\n if (publicId) {\n str += \" PUBLIC \" + enquoteDoctypeId(publicId);\n } else if (systemId) {\n str += \" SYSTEM\";\n }\n if (systemId !== null) {\n str += \" \" + enquoteDoctypeId(systemId);\n }\n return str;\n};\nvar foreignContent$1 = {};\nconst Tokenizer$1 = tokenizer;\nconst HTML$1 = html$5;\nconst $$1 = HTML$1.TAG_NAMES;\nconst NS$1 = HTML$1.NAMESPACES;\nconst ATTRS$1 = HTML$1.ATTRS;\nconst MIME_TYPES = {\n TEXT_HTML: \"text/html\",\n APPLICATION_XML: \"application/xhtml+xml\"\n};\nconst DEFINITION_URL_ATTR = \"definitionurl\";\nconst ADJUSTED_DEFINITION_URL_ATTR = \"definitionURL\";\nconst SVG_ATTRS_ADJUSTMENT_MAP = {\n attributename: \"attributeName\",\n attributetype: \"attributeType\",\n basefrequency: \"baseFrequency\",\n baseprofile: \"baseProfile\",\n calcmode: \"calcMode\",\n clippathunits: \"clipPathUnits\",\n diffuseconstant: \"diffuseConstant\",\n edgemode: \"edgeMode\",\n filterunits: \"filterUnits\",\n glyphref: \"glyphRef\",\n gradienttransform: \"gradientTransform\",\n gradientunits: \"gradientUnits\",\n kernelmatrix: \"kernelMatrix\",\n kernelunitlength: \"kernelUnitLength\",\n keypoints: \"keyPoints\",\n keysplines: \"keySplines\",\n keytimes: \"keyTimes\",\n lengthadjust: \"lengthAdjust\",\n limitingconeangle: \"limitingConeAngle\",\n markerheight: \"markerHeight\",\n markerunits: \"markerUnits\",\n markerwidth: \"markerWidth\",\n maskcontentunits: \"maskContentUnits\",\n maskunits: \"maskUnits\",\n numoctaves: \"numOctaves\",\n pathlength: \"pathLength\",\n patterncontentunits: \"patternContentUnits\",\n patterntransform: \"patternTransform\",\n patternunits: \"patternUnits\",\n pointsatx: \"pointsAtX\",\n pointsaty: \"pointsAtY\",\n pointsatz: \"pointsAtZ\",\n preservealpha: \"preserveAlpha\",\n preserveaspectratio: \"preserveAspectRatio\",\n primitiveunits: \"primitiveUnits\",\n refx: \"refX\",\n refy: \"refY\",\n repeatcount: \"repeatCount\",\n repeatdur: \"repeatDur\",\n requiredextensions: \"requiredExtensions\",\n requiredfeatures: \"requiredFeatures\",\n specularconstant: \"specularConstant\",\n specularexponent: \"specularExponent\",\n spreadmethod: \"spreadMethod\",\n startoffset: \"startOffset\",\n stddeviation: \"stdDeviation\",\n stitchtiles: \"stitchTiles\",\n surfacescale: \"surfaceScale\",\n systemlanguage: \"systemLanguage\",\n tablevalues: \"tableValues\",\n targetx: \"targetX\",\n targety: \"targetY\",\n textlength: \"textLength\",\n viewbox: \"viewBox\",\n viewtarget: \"viewTarget\",\n xchannelselector: \"xChannelSelector\",\n ychannelselector: \"yChannelSelector\",\n zoomandpan: \"zoomAndPan\"\n};\nconst XML_ATTRS_ADJUSTMENT_MAP = {\n \"xlink:actuate\": { prefix: \"xlink\", name: \"actuate\", namespace: NS$1.XLINK },\n \"xlink:arcrole\": { prefix: \"xlink\", name: \"arcrole\", namespace: NS$1.XLINK },\n \"xlink:href\": { prefix: \"xlink\", name: \"href\", namespace: NS$1.XLINK },\n \"xlink:role\": { prefix: \"xlink\", name: \"role\", namespace: NS$1.XLINK },\n \"xlink:show\": { prefix: \"xlink\", name: \"show\", namespace: NS$1.XLINK },\n \"xlink:title\": { prefix: \"xlink\", name: \"title\", namespace: NS$1.XLINK },\n \"xlink:type\": { prefix: \"xlink\", name: \"type\", namespace: NS$1.XLINK },\n \"xml:base\": { prefix: \"xml\", name: \"base\", namespace: NS$1.XML },\n \"xml:lang\": { prefix: \"xml\", name: \"lang\", namespace: NS$1.XML },\n \"xml:space\": { prefix: \"xml\", name: \"space\", namespace: NS$1.XML },\n xmlns: { prefix: \"\", name: \"xmlns\", namespace: NS$1.XMLNS },\n \"xmlns:xlink\": { prefix: \"xmlns\", name: \"xlink\", namespace: NS$1.XMLNS }\n};\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = foreignContent$1.SVG_TAG_NAMES_ADJUSTMENT_MAP = {\n altglyph: \"altGlyph\",\n altglyphdef: \"altGlyphDef\",\n altglyphitem: \"altGlyphItem\",\n animatecolor: \"animateColor\",\n animatemotion: \"animateMotion\",\n animatetransform: \"animateTransform\",\n clippath: \"clipPath\",\n feblend: \"feBlend\",\n fecolormatrix: \"feColorMatrix\",\n fecomponenttransfer: \"feComponentTransfer\",\n fecomposite: \"feComposite\",\n feconvolvematrix: \"feConvolveMatrix\",\n fediffuselighting: \"feDiffuseLighting\",\n fedisplacementmap: \"feDisplacementMap\",\n fedistantlight: \"feDistantLight\",\n feflood: \"feFlood\",\n fefunca: \"feFuncA\",\n fefuncb: \"feFuncB\",\n fefuncg: \"feFuncG\",\n fefuncr: \"feFuncR\",\n fegaussianblur: \"feGaussianBlur\",\n feimage: \"feImage\",\n femerge: \"feMerge\",\n femergenode: \"feMergeNode\",\n femorphology: \"feMorphology\",\n feoffset: \"feOffset\",\n fepointlight: \"fePointLight\",\n fespecularlighting: \"feSpecularLighting\",\n fespotlight: \"feSpotLight\",\n fetile: \"feTile\",\n feturbulence: \"feTurbulence\",\n foreignobject: \"foreignObject\",\n glyphref: \"glyphRef\",\n lineargradient: \"linearGradient\",\n radialgradient: \"radialGradient\",\n textpath: \"textPath\"\n};\nconst EXITS_FOREIGN_CONTENT = {\n [$$1.B]: true,\n [$$1.BIG]: true,\n [$$1.BLOCKQUOTE]: true,\n [$$1.BODY]: true,\n [$$1.BR]: true,\n [$$1.CENTER]: true,\n [$$1.CODE]: true,\n [$$1.DD]: true,\n [$$1.DIV]: true,\n [$$1.DL]: true,\n [$$1.DT]: true,\n [$$1.EM]: true,\n [$$1.EMBED]: true,\n [$$1.H1]: true,\n [$$1.H2]: true,\n [$$1.H3]: true,\n [$$1.H4]: true,\n [$$1.H5]: true,\n [$$1.H6]: true,\n [$$1.HEAD]: true,\n [$$1.HR]: true,\n [$$1.I]: true,\n [$$1.IMG]: true,\n [$$1.LI]: true,\n [$$1.LISTING]: true,\n [$$1.MENU]: true,\n [$$1.META]: true,\n [$$1.NOBR]: true,\n [$$1.OL]: true,\n [$$1.P]: true,\n [$$1.PRE]: true,\n [$$1.RUBY]: true,\n [$$1.S]: true,\n [$$1.SMALL]: true,\n [$$1.SPAN]: true,\n [$$1.STRONG]: true,\n [$$1.STRIKE]: true,\n [$$1.SUB]: true,\n [$$1.SUP]: true,\n [$$1.TABLE]: true,\n [$$1.TT]: true,\n [$$1.U]: true,\n [$$1.UL]: true,\n [$$1.VAR]: true\n};\nforeignContent$1.causesExit = function(startTagToken2) {\n const tn = startTagToken2.tagName;\n const isFontWithAttrs = tn === $$1.FONT && (Tokenizer$1.getTokenAttr(startTagToken2, ATTRS$1.COLOR) !== null || Tokenizer$1.getTokenAttr(startTagToken2, ATTRS$1.SIZE) !== null || Tokenizer$1.getTokenAttr(startTagToken2, ATTRS$1.FACE) !== null);\n return isFontWithAttrs ? true : EXITS_FOREIGN_CONTENT[tn];\n};\nforeignContent$1.adjustTokenMathMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n};\nforeignContent$1.adjustTokenSVGAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n if (adjustedAttrName) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n};\nforeignContent$1.adjustTokenXMLAttrs = function(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP[token.attrs[i].name];\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n};\nforeignContent$1.adjustTokenSVGTagName = function(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP[token.tagName];\n if (adjustedTagName) {\n token.tagName = adjustedTagName;\n }\n};\nfunction isMathMLTextIntegrationPoint(tn, ns2) {\n return ns2 === NS$1.MATHML && (tn === $$1.MI || tn === $$1.MO || tn === $$1.MN || tn === $$1.MS || tn === $$1.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns2, attrs) {\n if (ns2 === NS$1.MATHML && tn === $$1.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS$1.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns2 === NS$1.SVG && (tn === $$1.FOREIGN_OBJECT || tn === $$1.DESC || tn === $$1.TITLE);\n}\nforeignContent$1.isIntegrationPoint = function(tn, ns2, attrs, foreignNS) {\n if ((!foreignNS || foreignNS === NS$1.HTML) && isHtmlIntegrationPoint(tn, ns2, attrs)) {\n return true;\n }\n if ((!foreignNS || foreignNS === NS$1.MATHML) && isMathMLTextIntegrationPoint(tn, ns2)) {\n return true;\n }\n return false;\n};\nconst Tokenizer2 = tokenizer;\nconst OpenElementStack2 = openElementStack;\nconst FormattingElementList2 = formattingElementList;\nconst LocationInfoParserMixin2 = parserMixin$1;\nconst ErrorReportingParserMixin2 = parserMixin;\nconst Mixin2 = mixin;\nconst defaultTreeAdapter = _default;\nconst mergeOptions2 = mergeOptions$1;\nconst doctype$3 = doctype$4;\nconst foreignContent = foreignContent$1;\nconst ERR = errorCodes;\nconst unicode = unicode$3;\nconst HTML = html$5;\nconst $ = HTML.TAG_NAMES;\nconst NS = HTML.NAMESPACES;\nconst ATTRS = HTML.ATTRS;\nconst DEFAULT_OPTIONS = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n onParseError: null,\n treeAdapter: defaultTreeAdapter\n};\nconst HIDDEN_INPUT_TYPE = \"hidden\";\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\nconst INITIAL_MODE = \"INITIAL_MODE\";\nconst BEFORE_HTML_MODE = \"BEFORE_HTML_MODE\";\nconst BEFORE_HEAD_MODE = \"BEFORE_HEAD_MODE\";\nconst IN_HEAD_MODE = \"IN_HEAD_MODE\";\nconst IN_HEAD_NO_SCRIPT_MODE = \"IN_HEAD_NO_SCRIPT_MODE\";\nconst AFTER_HEAD_MODE = \"AFTER_HEAD_MODE\";\nconst IN_BODY_MODE = \"IN_BODY_MODE\";\nconst TEXT_MODE = \"TEXT_MODE\";\nconst IN_TABLE_MODE = \"IN_TABLE_MODE\";\nconst IN_TABLE_TEXT_MODE = \"IN_TABLE_TEXT_MODE\";\nconst IN_CAPTION_MODE = \"IN_CAPTION_MODE\";\nconst IN_COLUMN_GROUP_MODE = \"IN_COLUMN_GROUP_MODE\";\nconst IN_TABLE_BODY_MODE = \"IN_TABLE_BODY_MODE\";\nconst IN_ROW_MODE = \"IN_ROW_MODE\";\nconst IN_CELL_MODE = \"IN_CELL_MODE\";\nconst IN_SELECT_MODE = \"IN_SELECT_MODE\";\nconst IN_SELECT_IN_TABLE_MODE = \"IN_SELECT_IN_TABLE_MODE\";\nconst IN_TEMPLATE_MODE = \"IN_TEMPLATE_MODE\";\nconst AFTER_BODY_MODE = \"AFTER_BODY_MODE\";\nconst IN_FRAMESET_MODE = \"IN_FRAMESET_MODE\";\nconst AFTER_FRAMESET_MODE = \"AFTER_FRAMESET_MODE\";\nconst AFTER_AFTER_BODY_MODE = \"AFTER_AFTER_BODY_MODE\";\nconst AFTER_AFTER_FRAMESET_MODE = \"AFTER_AFTER_FRAMESET_MODE\";\nconst INSERTION_MODE_RESET_MAP = {\n [$.TR]: IN_ROW_MODE,\n [$.TBODY]: IN_TABLE_BODY_MODE,\n [$.THEAD]: IN_TABLE_BODY_MODE,\n [$.TFOOT]: IN_TABLE_BODY_MODE,\n [$.CAPTION]: IN_CAPTION_MODE,\n [$.COLGROUP]: IN_COLUMN_GROUP_MODE,\n [$.TABLE]: IN_TABLE_MODE,\n [$.BODY]: IN_BODY_MODE,\n [$.FRAMESET]: IN_FRAMESET_MODE\n};\nconst TEMPLATE_INSERTION_MODE_SWITCH_MAP = {\n [$.CAPTION]: IN_TABLE_MODE,\n [$.COLGROUP]: IN_TABLE_MODE,\n [$.TBODY]: IN_TABLE_MODE,\n [$.TFOOT]: IN_TABLE_MODE,\n [$.THEAD]: IN_TABLE_MODE,\n [$.COL]: IN_COLUMN_GROUP_MODE,\n [$.TR]: IN_TABLE_BODY_MODE,\n [$.TD]: IN_ROW_MODE,\n [$.TH]: IN_ROW_MODE\n};\nconst TOKEN_HANDLERS = {\n [INITIAL_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenInInitialMode,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: doctypeInInitialMode,\n [Tokenizer2.START_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer2.END_TAG_TOKEN]: tokenInInitialMode,\n [Tokenizer2.EOF_TOKEN]: tokenInInitialMode\n },\n [BEFORE_HTML_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenBeforeHtml,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagBeforeHtml,\n [Tokenizer2.END_TAG_TOKEN]: endTagBeforeHtml,\n [Tokenizer2.EOF_TOKEN]: tokenBeforeHtml\n },\n [BEFORE_HEAD_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenBeforeHead,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer2.START_TAG_TOKEN]: startTagBeforeHead,\n [Tokenizer2.END_TAG_TOKEN]: endTagBeforeHead,\n [Tokenizer2.EOF_TOKEN]: tokenBeforeHead\n },\n [IN_HEAD_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenInHead,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer2.START_TAG_TOKEN]: startTagInHead,\n [Tokenizer2.END_TAG_TOKEN]: endTagInHead,\n [Tokenizer2.EOF_TOKEN]: tokenInHead\n },\n [IN_HEAD_NO_SCRIPT_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenInHeadNoScript,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer2.START_TAG_TOKEN]: startTagInHeadNoScript,\n [Tokenizer2.END_TAG_TOKEN]: endTagInHeadNoScript,\n [Tokenizer2.EOF_TOKEN]: tokenInHeadNoScript\n },\n [AFTER_HEAD_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenAfterHead,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: misplacedDoctype,\n [Tokenizer2.START_TAG_TOKEN]: startTagAfterHead,\n [Tokenizer2.END_TAG_TOKEN]: endTagAfterHead,\n [Tokenizer2.EOF_TOKEN]: tokenAfterHead\n },\n [IN_BODY_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInBody,\n [Tokenizer2.END_TAG_TOKEN]: endTagInBody,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [TEXT_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: ignoreToken,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: ignoreToken,\n [Tokenizer2.END_TAG_TOKEN]: endTagInText,\n [Tokenizer2.EOF_TOKEN]: eofInText\n },\n [IN_TABLE_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInTable,\n [Tokenizer2.END_TAG_TOKEN]: endTagInTable,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_TEXT_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: characterInTableText,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInTableText,\n [Tokenizer2.COMMENT_TOKEN]: tokenInTableText,\n [Tokenizer2.DOCTYPE_TOKEN]: tokenInTableText,\n [Tokenizer2.START_TAG_TOKEN]: tokenInTableText,\n [Tokenizer2.END_TAG_TOKEN]: tokenInTableText,\n [Tokenizer2.EOF_TOKEN]: tokenInTableText\n },\n [IN_CAPTION_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInCaption,\n [Tokenizer2.END_TAG_TOKEN]: endTagInCaption,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [IN_COLUMN_GROUP_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenInColumnGroup,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInColumnGroup,\n [Tokenizer2.END_TAG_TOKEN]: endTagInColumnGroup,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [IN_TABLE_BODY_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInTableBody,\n [Tokenizer2.END_TAG_TOKEN]: endTagInTableBody,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [IN_ROW_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: characterInTable,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInRow,\n [Tokenizer2.END_TAG_TOKEN]: endTagInRow,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [IN_CELL_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInCell,\n [Tokenizer2.END_TAG_TOKEN]: endTagInCell,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInSelect,\n [Tokenizer2.END_TAG_TOKEN]: endTagInSelect,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [IN_SELECT_IN_TABLE_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInSelectInTable,\n [Tokenizer2.END_TAG_TOKEN]: endTagInSelectInTable,\n [Tokenizer2.EOF_TOKEN]: eofInBody\n },\n [IN_TEMPLATE_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: characterInBody,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInTemplate,\n [Tokenizer2.END_TAG_TOKEN]: endTagInTemplate,\n [Tokenizer2.EOF_TOKEN]: eofInTemplate\n },\n [AFTER_BODY_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenAfterBody,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer2.COMMENT_TOKEN]: appendCommentToRootHtmlElement,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagAfterBody,\n [Tokenizer2.END_TAG_TOKEN]: endTagAfterBody,\n [Tokenizer2.EOF_TOKEN]: stopParsing\n },\n [IN_FRAMESET_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagInFrameset,\n [Tokenizer2.END_TAG_TOKEN]: endTagInFrameset,\n [Tokenizer2.EOF_TOKEN]: stopParsing\n },\n [AFTER_FRAMESET_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: insertCharacters,\n [Tokenizer2.COMMENT_TOKEN]: appendComment,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagAfterFrameset,\n [Tokenizer2.END_TAG_TOKEN]: endTagAfterFrameset,\n [Tokenizer2.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_BODY_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: tokenAfterAfterBody,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer2.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagAfterAfterBody,\n [Tokenizer2.END_TAG_TOKEN]: tokenAfterAfterBody,\n [Tokenizer2.EOF_TOKEN]: stopParsing\n },\n [AFTER_AFTER_FRAMESET_MODE]: {\n [Tokenizer2.CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.NULL_CHARACTER_TOKEN]: ignoreToken,\n [Tokenizer2.WHITESPACE_CHARACTER_TOKEN]: whitespaceCharacterInBody,\n [Tokenizer2.COMMENT_TOKEN]: appendCommentToDocument,\n [Tokenizer2.DOCTYPE_TOKEN]: ignoreToken,\n [Tokenizer2.START_TAG_TOKEN]: startTagAfterAfterFrameset,\n [Tokenizer2.END_TAG_TOKEN]: ignoreToken,\n [Tokenizer2.EOF_TOKEN]: stopParsing\n }\n};\nclass Parser {\n constructor(options) {\n this.options = mergeOptions2(DEFAULT_OPTIONS, options);\n this.treeAdapter = this.options.treeAdapter;\n this.pendingScript = null;\n if (this.options.sourceCodeLocationInfo) {\n Mixin2.install(this, LocationInfoParserMixin2);\n }\n if (this.options.onParseError) {\n Mixin2.install(this, ErrorReportingParserMixin2, { onParseError: this.options.onParseError });\n }\n }\n // API\n parse(html2) {\n const document2 = this.treeAdapter.createDocument();\n this._bootstrap(document2, null);\n this.tokenizer.write(html2, true);\n this._runParsingLoop(null);\n return document2;\n }\n parseFragment(html2, fragmentContext) {\n if (!fragmentContext) {\n fragmentContext = this.treeAdapter.createElement($.TEMPLATE, NS.HTML, []);\n }\n const documentMock = this.treeAdapter.createElement(\"documentmock\", NS.HTML, []);\n this._bootstrap(documentMock, fragmentContext);\n if (this.treeAdapter.getTagName(fragmentContext) === $.TEMPLATE) {\n this._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n }\n this._initTokenizerForFragmentParsing();\n this._insertFakeRootElement();\n this._resetInsertionMode();\n this._findFormInFragmentContext();\n this.tokenizer.write(html2, true);\n this._runParsingLoop(null);\n const rootElement = this.treeAdapter.getFirstChild(documentMock);\n const fragment2 = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment2);\n return fragment2;\n }\n //Bootstrap parser\n _bootstrap(document2, fragmentContext) {\n this.tokenizer = new Tokenizer2(this.options);\n this.stopped = false;\n this.insertionMode = INITIAL_MODE;\n this.originalInsertionMode = \"\";\n this.document = document2;\n this.fragmentContext = fragmentContext;\n this.headElement = null;\n this.formElement = null;\n this.openElements = new OpenElementStack2(this.document, this.treeAdapter);\n this.activeFormattingElements = new FormattingElementList2(this.treeAdapter);\n this.tmplInsertionModeStack = [];\n this.tmplInsertionModeStackTop = -1;\n this.currentTmplInsertionMode = null;\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n }\n //Errors\n _err() {\n }\n //Parsing loop\n _runParsingLoop(scriptHandler) {\n while (!this.stopped) {\n this._setupTokenizerCDATAMode();\n const token = this.tokenizer.getNextToken();\n if (token.type === Tokenizer2.HIBERNATION_TOKEN) {\n break;\n }\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.type === Tokenizer2.WHITESPACE_CHARACTER_TOKEN && token.chars[0] === \"\\n\") {\n if (token.chars.length === 1) {\n continue;\n }\n token.chars = token.chars.substr(1);\n }\n }\n this._processInputToken(token);\n if (scriptHandler && this.pendingScript) {\n break;\n }\n }\n }\n runParsingLoopForCurrentChunk(writeCallback, scriptHandler) {\n this._runParsingLoop(scriptHandler);\n if (scriptHandler && this.pendingScript) {\n const script = this.pendingScript;\n this.pendingScript = null;\n scriptHandler(script);\n return;\n }\n if (writeCallback) {\n writeCallback();\n }\n }\n //Text parsing\n _setupTokenizerCDATAMode() {\n const current = this._getAdjustedCurrentElement();\n this.tokenizer.allowCDATA = current && current !== this.document && this.treeAdapter.getNamespaceURI(current) !== NS.HTML && !this._isIntegrationPoint(current);\n }\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = TEXT_MODE;\n }\n switchToPlaintextParsing() {\n this.insertionMode = TEXT_MODE;\n this.originalInsertionMode = IN_BODY_MODE;\n this.tokenizer.state = Tokenizer2.MODE.PLAINTEXT;\n }\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current;\n }\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n do {\n if (this.treeAdapter.getTagName(node) === $.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n } while (node);\n }\n _initTokenizerForFragmentParsing() {\n if (this.treeAdapter.getNamespaceURI(this.fragmentContext) === NS.HTML) {\n const tn = this.treeAdapter.getTagName(this.fragmentContext);\n if (tn === $.TITLE || tn === $.TEXTAREA) {\n this.tokenizer.state = Tokenizer2.MODE.RCDATA;\n } else if (tn === $.STYLE || tn === $.XMP || tn === $.IFRAME || tn === $.NOEMBED || tn === $.NOFRAMES || tn === $.NOSCRIPT) {\n this.tokenizer.state = Tokenizer2.MODE.RAWTEXT;\n } else if (tn === $.SCRIPT) {\n this.tokenizer.state = Tokenizer2.MODE.SCRIPT_DATA;\n } else if (tn === $.PLAINTEXT) {\n this.tokenizer.state = Tokenizer2.MODE.PLAINTEXT;\n }\n }\n }\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || \"\";\n const publicId = token.publicId || \"\";\n const systemId = token.systemId || \"\";\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n }\n _attachElementToTree(element2) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element2);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n this.treeAdapter.appendChild(parent, element2);\n }\n }\n _appendElement(token, namespaceURI) {\n const element2 = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element2);\n }\n _insertElement(token, namespaceURI) {\n const element2 = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element2);\n this.openElements.push(element2);\n }\n _insertFakeElement(tagName) {\n const element2 = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element2);\n this.openElements.push(element2);\n }\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content2 = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content2);\n this._attachElementToTree(tmpl);\n this.openElements.push(tmpl);\n }\n _insertFakeRootElement() {\n const element2 = this.treeAdapter.createElement($.HTML, NS.HTML, []);\n this.treeAdapter.appendChild(this.openElements.current, element2);\n this.openElements.push(element2);\n }\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n }\n _insertCharacters(token) {\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentText(token.chars);\n } else {\n const parent = this.openElements.currentTmplContent || this.openElements.current;\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n //Token processing\n _shouldProcessTokenInForeignContent(token) {\n const current = this._getAdjustedCurrentElement();\n if (!current || current === this.document) {\n return false;\n }\n const ns2 = this.treeAdapter.getNamespaceURI(current);\n if (ns2 === NS.HTML) {\n return false;\n }\n if (this.treeAdapter.getTagName(current) === $.ANNOTATION_XML && ns2 === NS.MATHML && token.type === Tokenizer2.START_TAG_TOKEN && token.tagName === $.SVG) {\n return false;\n }\n const isCharacterToken = token.type === Tokenizer2.CHARACTER_TOKEN || token.type === Tokenizer2.NULL_CHARACTER_TOKEN || token.type === Tokenizer2.WHITESPACE_CHARACTER_TOKEN;\n const isMathMLTextStartTag = token.type === Tokenizer2.START_TAG_TOKEN && token.tagName !== $.MGLYPH && token.tagName !== $.MALIGNMARK;\n if ((isMathMLTextStartTag || isCharacterToken) && this._isIntegrationPoint(current, NS.MATHML)) {\n return false;\n }\n if ((token.type === Tokenizer2.START_TAG_TOKEN || isCharacterToken) && this._isIntegrationPoint(current, NS.HTML)) {\n return false;\n }\n return token.type !== Tokenizer2.EOF_TOKEN;\n }\n _processToken(token) {\n TOKEN_HANDLERS[this.insertionMode][token.type](this, token);\n }\n _processTokenInBodyMode(token) {\n TOKEN_HANDLERS[IN_BODY_MODE][token.type](this, token);\n }\n _processTokenInForeignContent(token) {\n if (token.type === Tokenizer2.CHARACTER_TOKEN) {\n characterInForeignContent(this, token);\n } else if (token.type === Tokenizer2.NULL_CHARACTER_TOKEN) {\n nullCharacterInForeignContent(this, token);\n } else if (token.type === Tokenizer2.WHITESPACE_CHARACTER_TOKEN) {\n insertCharacters(this, token);\n } else if (token.type === Tokenizer2.COMMENT_TOKEN) {\n appendComment(this, token);\n } else if (token.type === Tokenizer2.START_TAG_TOKEN) {\n startTagInForeignContent(this, token);\n } else if (token.type === Tokenizer2.END_TAG_TOKEN) {\n endTagInForeignContent(this, token);\n }\n }\n _processInputToken(token) {\n if (this._shouldProcessTokenInForeignContent(token)) {\n this._processTokenInForeignContent(token);\n } else {\n this._processToken(token);\n }\n if (token.type === Tokenizer2.START_TAG_TOKEN && token.selfClosing && !token.ackSelfClosing) {\n this._err(ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n //Integration points\n _isIntegrationPoint(element2, foreignNS) {\n const tn = this.treeAdapter.getTagName(element2);\n const ns2 = this.treeAdapter.getNamespaceURI(element2);\n const attrs = this.treeAdapter.getAttrList(element2);\n return foreignContent.isIntegrationPoint(tn, ns2, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.length;\n if (listLength) {\n let unopenIdx = listLength;\n let entry = null;\n do {\n unopenIdx--;\n entry = this.activeFormattingElements.entries[unopenIdx];\n if (entry.type === FormattingElementList2.MARKER_ENTRY || this.openElements.contains(entry.element)) {\n unopenIdx++;\n break;\n }\n } while (unopenIdx > 0);\n for (let i = unopenIdx; i < listLength; i++) {\n entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = IN_ROW_MODE;\n }\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop, last = false; i >= 0; i--) {\n let element2 = this.openElements.items[i];\n if (i === 0) {\n last = true;\n if (this.fragmentContext) {\n element2 = this.fragmentContext;\n }\n }\n const tn = this.treeAdapter.getTagName(element2);\n const newInsertionMode = INSERTION_MODE_RESET_MAP[tn];\n if (newInsertionMode) {\n this.insertionMode = newInsertionMode;\n break;\n } else if (!last && (tn === $.TD || tn === $.TH)) {\n this.insertionMode = IN_CELL_MODE;\n break;\n } else if (!last && tn === $.HEAD) {\n this.insertionMode = IN_HEAD_MODE;\n break;\n } else if (tn === $.SELECT) {\n this._resetInsertionModeForSelect(i);\n break;\n } else if (tn === $.TEMPLATE) {\n this.insertionMode = this.currentTmplInsertionMode;\n break;\n } else if (tn === $.HTML) {\n this.insertionMode = this.headElement ? AFTER_HEAD_MODE : BEFORE_HEAD_MODE;\n break;\n } else if (last) {\n this.insertionMode = IN_BODY_MODE;\n break;\n }\n }\n }\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const ancestor = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(ancestor);\n if (tn === $.TEMPLATE) {\n break;\n } else if (tn === $.TABLE) {\n this.insertionMode = IN_SELECT_IN_TABLE_MODE;\n return;\n }\n }\n }\n this.insertionMode = IN_SELECT_MODE;\n }\n _pushTmplInsertionMode(mode) {\n this.tmplInsertionModeStack.push(mode);\n this.tmplInsertionModeStackTop++;\n this.currentTmplInsertionMode = mode;\n }\n _popTmplInsertionMode() {\n this.tmplInsertionModeStack.pop();\n this.tmplInsertionModeStackTop--;\n this.currentTmplInsertionMode = this.tmplInsertionModeStack[this.tmplInsertionModeStackTop];\n }\n //Foster parenting\n _isElementCausesFosterParenting(element2) {\n const tn = this.treeAdapter.getTagName(element2);\n return tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR;\n }\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.current);\n }\n _findFosterParentingLocation() {\n const location2 = {\n parent: null,\n beforeElement: null\n };\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n const tn = this.treeAdapter.getTagName(openElement);\n const ns2 = this.treeAdapter.getNamespaceURI(openElement);\n if (tn === $.TEMPLATE && ns2 === NS.HTML) {\n location2.parent = this.treeAdapter.getTemplateContent(openElement);\n break;\n } else if (tn === $.TABLE) {\n location2.parent = this.treeAdapter.getParentNode(openElement);\n if (location2.parent) {\n location2.beforeElement = openElement;\n } else {\n location2.parent = this.openElements.items[i - 1];\n }\n break;\n }\n }\n if (!location2.parent) {\n location2.parent = this.openElements.items[0];\n }\n return location2;\n }\n _fosterParentElement(element2) {\n const location2 = this._findFosterParentingLocation();\n if (location2.beforeElement) {\n this.treeAdapter.insertBefore(location2.parent, element2, location2.beforeElement);\n } else {\n this.treeAdapter.appendChild(location2.parent, element2);\n }\n }\n _fosterParentText(chars) {\n const location2 = this._findFosterParentingLocation();\n if (location2.beforeElement) {\n this.treeAdapter.insertTextBefore(location2.parent, chars, location2.beforeElement);\n } else {\n this.treeAdapter.insertText(location2.parent, chars);\n }\n }\n //Special elements\n _isSpecialElement(element2) {\n const tn = this.treeAdapter.getTagName(element2);\n const ns2 = this.treeAdapter.getNamespaceURI(element2);\n return HTML.SPECIAL_ELEMENTS[ns2][tn];\n }\n}\nvar parser = Parser;\nfunction aaObtainFormattingElementEntry(p2, token) {\n let formattingElementEntry = p2.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p2.openElements.contains(formattingElementEntry.element)) {\n p2.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n } else if (!p2.openElements.hasInScope(token.tagName)) {\n formattingElementEntry = null;\n }\n } else {\n genericEndTagInBody(p2, token);\n }\n return formattingElementEntry;\n}\nfunction aaObtainFurthestBlock(p2, formattingElementEntry) {\n let furthestBlock = null;\n for (let i = p2.openElements.stackTop; i >= 0; i--) {\n const element2 = p2.openElements.items[i];\n if (element2 === formattingElementEntry.element) {\n break;\n }\n if (p2._isSpecialElement(element2)) {\n furthestBlock = element2;\n }\n }\n if (!furthestBlock) {\n p2.openElements.popUntilElementPopped(formattingElementEntry.element);\n p2.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\nfunction aaInnerLoop(p2, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p2.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element2 = nextElement; element2 !== formattingElement; i++, element2 = nextElement) {\n nextElement = p2.openElements.getCommonAncestor(element2);\n const elementEntry = p2.activeFormattingElements.getElementEntry(element2);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p2.activeFormattingElements.removeEntry(elementEntry);\n }\n p2.openElements.remove(element2);\n } else {\n element2 = aaRecreateElementFromEntry(p2, elementEntry);\n if (lastElement === furthestBlock) {\n p2.activeFormattingElements.bookmark = elementEntry;\n }\n p2.treeAdapter.detachNode(lastElement);\n p2.treeAdapter.appendChild(element2, lastElement);\n lastElement = element2;\n }\n }\n return lastElement;\n}\nfunction aaRecreateElementFromEntry(p2, elementEntry) {\n const ns2 = p2.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p2.treeAdapter.createElement(elementEntry.token.tagName, ns2, elementEntry.token.attrs);\n p2.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\nfunction aaInsertLastNodeInCommonAncestor(p2, commonAncestor, lastElement) {\n if (p2._isElementCausesFosterParenting(commonAncestor)) {\n p2._fosterParentElement(lastElement);\n } else {\n const tn = p2.treeAdapter.getTagName(commonAncestor);\n const ns2 = p2.treeAdapter.getNamespaceURI(commonAncestor);\n if (tn === $.TEMPLATE && ns2 === NS.HTML) {\n commonAncestor = p2.treeAdapter.getTemplateContent(commonAncestor);\n }\n p2.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\nfunction aaReplaceFormattingElement(p2, furthestBlock, formattingElementEntry) {\n const ns2 = p2.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const token = formattingElementEntry.token;\n const newElement = p2.treeAdapter.createElement(token.tagName, ns2, token.attrs);\n p2._adoptNodes(furthestBlock, newElement);\n p2.treeAdapter.appendChild(furthestBlock, newElement);\n p2.activeFormattingElements.insertElementAfterBookmark(newElement, formattingElementEntry.token);\n p2.activeFormattingElements.removeEntry(formattingElementEntry);\n p2.openElements.remove(formattingElementEntry.element);\n p2.openElements.insertAfter(furthestBlock, newElement);\n}\nfunction callAdoptionAgency(p2, token) {\n let formattingElementEntry;\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n formattingElementEntry = aaObtainFormattingElementEntry(p2, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p2, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p2.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p2, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p2.openElements.getCommonAncestor(formattingElementEntry.element);\n p2.treeAdapter.detachNode(lastElement);\n aaInsertLastNodeInCommonAncestor(p2, commonAncestor, lastElement);\n aaReplaceFormattingElement(p2, furthestBlock, formattingElementEntry);\n }\n}\nfunction ignoreToken() {\n}\nfunction misplacedDoctype(p2) {\n p2._err(ERR.misplacedDoctype);\n}\nfunction appendComment(p2, token) {\n p2._appendCommentNode(token, p2.openElements.currentTmplContent || p2.openElements.current);\n}\nfunction appendCommentToRootHtmlElement(p2, token) {\n p2._appendCommentNode(token, p2.openElements.items[0]);\n}\nfunction appendCommentToDocument(p2, token) {\n p2._appendCommentNode(token, p2.document);\n}\nfunction insertCharacters(p2, token) {\n p2._insertCharacters(token);\n}\nfunction stopParsing(p2) {\n p2.stopped = true;\n}\nfunction doctypeInInitialMode(p2, token) {\n p2._setDocumentType(token);\n const mode = token.forceQuirks ? HTML.DOCUMENT_MODE.QUIRKS : doctype$3.getDocumentMode(token);\n if (!doctype$3.isConforming(token)) {\n p2._err(ERR.nonConformingDoctype);\n }\n p2.treeAdapter.setDocumentMode(p2.document, mode);\n p2.insertionMode = BEFORE_HTML_MODE;\n}\nfunction tokenInInitialMode(p2, token) {\n p2._err(ERR.missingDoctype, { beforeToken: true });\n p2.treeAdapter.setDocumentMode(p2.document, HTML.DOCUMENT_MODE.QUIRKS);\n p2.insertionMode = BEFORE_HTML_MODE;\n p2._processToken(token);\n}\nfunction startTagBeforeHtml(p2, token) {\n if (token.tagName === $.HTML) {\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = BEFORE_HEAD_MODE;\n } else {\n tokenBeforeHtml(p2, token);\n }\n}\nfunction endTagBeforeHtml(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p2, token);\n }\n}\nfunction tokenBeforeHtml(p2, token) {\n p2._insertFakeRootElement();\n p2.insertionMode = BEFORE_HEAD_MODE;\n p2._processToken(token);\n}\nfunction startTagBeforeHead(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.HEAD) {\n p2._insertElement(token, NS.HTML);\n p2.headElement = p2.openElements.current;\n p2.insertionMode = IN_HEAD_MODE;\n } else {\n tokenBeforeHead(p2, token);\n }\n}\nfunction endTagBeforeHead(p2, token) {\n const tn = token.tagName;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p2, token);\n } else {\n p2._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p2, token) {\n p2._insertFakeElement($.HEAD);\n p2.headElement = p2.openElements.current;\n p2.insertionMode = IN_HEAD_MODE;\n p2._processToken(token);\n}\nfunction startTagInHead(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META) {\n p2._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TITLE) {\n p2._switchToTextParsing(token, Tokenizer2.MODE.RCDATA);\n } else if (tn === $.NOSCRIPT) {\n if (p2.options.scriptingEnabled) {\n p2._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);\n } else {\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = IN_HEAD_NO_SCRIPT_MODE;\n }\n } else if (tn === $.NOFRAMES || tn === $.STYLE) {\n p2._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);\n } else if (tn === $.SCRIPT) {\n p2._switchToTextParsing(token, Tokenizer2.MODE.SCRIPT_DATA);\n } else if (tn === $.TEMPLATE) {\n p2._insertTemplate(token, NS.HTML);\n p2.activeFormattingElements.insertMarker();\n p2.framesetOk = false;\n p2.insertionMode = IN_TEMPLATE_MODE;\n p2._pushTmplInsertionMode(IN_TEMPLATE_MODE);\n } else if (tn === $.HEAD) {\n p2._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenInHead(p2, token);\n }\n}\nfunction endTagInHead(p2, token) {\n const tn = token.tagName;\n if (tn === $.HEAD) {\n p2.openElements.pop();\n p2.insertionMode = AFTER_HEAD_MODE;\n } else if (tn === $.BODY || tn === $.BR || tn === $.HTML) {\n tokenInHead(p2, token);\n } else if (tn === $.TEMPLATE) {\n if (p2.openElements.tmplCount > 0) {\n p2.openElements.generateImpliedEndTagsThoroughly();\n if (p2.openElements.currentTagName !== $.TEMPLATE) {\n p2._err(ERR.closingOfElementWithOpenChildElements);\n }\n p2.openElements.popUntilTagNamePopped($.TEMPLATE);\n p2.activeFormattingElements.clearToLastMarker();\n p2._popTmplInsertionMode();\n p2._resetInsertionMode();\n } else {\n p2._err(ERR.endTagWithoutMatchingOpenElement);\n }\n } else {\n p2._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p2, token) {\n p2.openElements.pop();\n p2.insertionMode = AFTER_HEAD_MODE;\n p2._processToken(token);\n}\nfunction startTagInHeadNoScript(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.BASEFONT || tn === $.BGSOUND || tn === $.HEAD || tn === $.LINK || tn === $.META || tn === $.NOFRAMES || tn === $.STYLE) {\n startTagInHead(p2, token);\n } else if (tn === $.NOSCRIPT) {\n p2._err(ERR.nestedNoscriptInHead);\n } else {\n tokenInHeadNoScript(p2, token);\n }\n}\nfunction endTagInHeadNoScript(p2, token) {\n const tn = token.tagName;\n if (tn === $.NOSCRIPT) {\n p2.openElements.pop();\n p2.insertionMode = IN_HEAD_MODE;\n } else if (tn === $.BR) {\n tokenInHeadNoScript(p2, token);\n } else {\n p2._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHeadNoScript(p2, token) {\n const errCode = token.type === Tokenizer2.EOF_TOKEN ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p2._err(errCode);\n p2.openElements.pop();\n p2.insertionMode = IN_HEAD_MODE;\n p2._processToken(token);\n}\nfunction startTagAfterHead(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.BODY) {\n p2._insertElement(token, NS.HTML);\n p2.framesetOk = false;\n p2.insertionMode = IN_BODY_MODE;\n } else if (tn === $.FRAMESET) {\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = IN_FRAMESET_MODE;\n } else if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META || tn === $.NOFRAMES || tn === $.SCRIPT || tn === $.STYLE || tn === $.TEMPLATE || tn === $.TITLE) {\n p2._err(ERR.abandonedHeadElementChild);\n p2.openElements.push(p2.headElement);\n startTagInHead(p2, token);\n p2.openElements.remove(p2.headElement);\n } else if (tn === $.HEAD) {\n p2._err(ERR.misplacedStartTagForHeadElement);\n } else {\n tokenAfterHead(p2, token);\n }\n}\nfunction endTagAfterHead(p2, token) {\n const tn = token.tagName;\n if (tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenAfterHead(p2, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p2, token);\n } else {\n p2._err(ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenAfterHead(p2, token) {\n p2._insertFakeElement($.BODY);\n p2.insertionMode = IN_BODY_MODE;\n p2._processToken(token);\n}\nfunction whitespaceCharacterInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n p2._insertCharacters(token);\n}\nfunction characterInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n p2._insertCharacters(token);\n p2.framesetOk = false;\n}\nfunction htmlStartTagInBody(p2, token) {\n if (p2.openElements.tmplCount === 0) {\n p2.treeAdapter.adoptAttributes(p2.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p2, token) {\n const bodyElement = p2.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p2.openElements.tmplCount === 0) {\n p2.framesetOk = false;\n p2.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p2, token) {\n const bodyElement = p2.openElements.tryPeekProperlyNestedBodyElement();\n if (p2.framesetOk && bodyElement) {\n p2.treeAdapter.detachNode(bodyElement);\n p2.openElements.popAllUpToHtmlElement();\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = IN_FRAMESET_MODE;\n }\n}\nfunction addressStartTagInBody(p2, token) {\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p2, token) {\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n const tn = p2.openElements.currentTagName;\n if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n p2.openElements.pop();\n }\n p2._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p2, token) {\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._insertElement(token, NS.HTML);\n p2.skipNextNewLine = true;\n p2.framesetOk = false;\n}\nfunction formStartTagInBody(p2, token) {\n const inTemplate = p2.openElements.tmplCount > 0;\n if (!p2.formElement || inTemplate) {\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p2.formElement = p2.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p2, token) {\n p2.framesetOk = false;\n const tn = token.tagName;\n for (let i = p2.openElements.stackTop; i >= 0; i--) {\n const element2 = p2.openElements.items[i];\n const elementTn = p2.treeAdapter.getTagName(element2);\n let closeTn = null;\n if (tn === $.LI && elementTn === $.LI) {\n closeTn = $.LI;\n } else if ((tn === $.DD || tn === $.DT) && (elementTn === $.DD || elementTn === $.DT)) {\n closeTn = elementTn;\n }\n if (closeTn) {\n p2.openElements.generateImpliedEndTagsWithExclusion(closeTn);\n p2.openElements.popUntilTagNamePopped(closeTn);\n break;\n }\n if (elementTn !== $.ADDRESS && elementTn !== $.DIV && elementTn !== $.P && p2._isSpecialElement(element2)) {\n break;\n }\n }\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p2, token) {\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._insertElement(token, NS.HTML);\n p2.tokenizer.state = Tokenizer2.MODE.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p2, token) {\n if (p2.openElements.hasInScope($.BUTTON)) {\n p2.openElements.generateImpliedEndTags();\n p2.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p2._reconstructActiveFormattingElements();\n p2._insertElement(token, NS.HTML);\n p2.framesetOk = false;\n}\nfunction aStartTagInBody(p2, token) {\n const activeElementEntry = p2.activeFormattingElements.getElementEntryInScopeWithTagName($.A);\n if (activeElementEntry) {\n callAdoptionAgency(p2, token);\n p2.openElements.remove(activeElementEntry.element);\n p2.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p2._reconstructActiveFormattingElements();\n p2._insertElement(token, NS.HTML);\n p2.activeFormattingElements.pushElement(p2.openElements.current, token);\n}\nfunction bStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n p2._insertElement(token, NS.HTML);\n p2.activeFormattingElements.pushElement(p2.openElements.current, token);\n}\nfunction nobrStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n if (p2.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p2, token);\n p2._reconstructActiveFormattingElements();\n }\n p2._insertElement(token, NS.HTML);\n p2.activeFormattingElements.pushElement(p2.openElements.current, token);\n}\nfunction appletStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n p2._insertElement(token, NS.HTML);\n p2.activeFormattingElements.insertMarker();\n p2.framesetOk = false;\n}\nfunction tableStartTagInBody(p2, token) {\n if (p2.treeAdapter.getDocumentMode(p2.document) !== HTML.DOCUMENT_MODE.QUIRKS && p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._insertElement(token, NS.HTML);\n p2.framesetOk = false;\n p2.insertionMode = IN_TABLE_MODE;\n}\nfunction areaStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n p2._appendElement(token, NS.HTML);\n p2.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction inputStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n p2._appendElement(token, NS.HTML);\n const inputType = Tokenizer2.getTokenAttr(token, ATTRS.TYPE);\n if (!inputType || inputType.toLowerCase() !== HIDDEN_INPUT_TYPE) {\n p2.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p2, token) {\n p2._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p2, token) {\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._appendElement(token, NS.HTML);\n p2.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p2, token) {\n token.tagName = $.IMG;\n areaStartTagInBody(p2, token);\n}\nfunction textareaStartTagInBody(p2, token) {\n p2._insertElement(token, NS.HTML);\n p2.skipNextNewLine = true;\n p2.tokenizer.state = Tokenizer2.MODE.RCDATA;\n p2.originalInsertionMode = p2.insertionMode;\n p2.framesetOk = false;\n p2.insertionMode = TEXT_MODE;\n}\nfunction xmpStartTagInBody(p2, token) {\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._reconstructActiveFormattingElements();\n p2.framesetOk = false;\n p2._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);\n}\nfunction iframeStartTagInBody(p2, token) {\n p2.framesetOk = false;\n p2._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);\n}\nfunction noembedStartTagInBody(p2, token) {\n p2._switchToTextParsing(token, Tokenizer2.MODE.RAWTEXT);\n}\nfunction selectStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n p2._insertElement(token, NS.HTML);\n p2.framesetOk = false;\n if (p2.insertionMode === IN_TABLE_MODE || p2.insertionMode === IN_CAPTION_MODE || p2.insertionMode === IN_TABLE_BODY_MODE || p2.insertionMode === IN_ROW_MODE || p2.insertionMode === IN_CELL_MODE) {\n p2.insertionMode = IN_SELECT_IN_TABLE_MODE;\n } else {\n p2.insertionMode = IN_SELECT_MODE;\n }\n}\nfunction optgroupStartTagInBody(p2, token) {\n if (p2.openElements.currentTagName === $.OPTION) {\n p2.openElements.pop();\n }\n p2._reconstructActiveFormattingElements();\n p2._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p2, token) {\n if (p2.openElements.hasInScope($.RUBY)) {\n p2.openElements.generateImpliedEndTags();\n }\n p2._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p2, token) {\n if (p2.openElements.hasInScope($.RUBY)) {\n p2.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p2._insertElement(token, NS.HTML);\n}\nfunction menuStartTagInBody(p2, token) {\n if (p2.openElements.hasInButtonScope($.P)) {\n p2._closePElement();\n }\n p2._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p2._appendElement(token, NS.MATHML);\n } else {\n p2._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p2._appendElement(token, NS.SVG);\n } else {\n p2._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p2, token) {\n p2._reconstructActiveFormattingElements();\n p2._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p2, token) {\n const tn = token.tagName;\n switch (tn.length) {\n case 1:\n if (tn === $.I || tn === $.S || tn === $.B || tn === $.U) {\n bStartTagInBody(p2, token);\n } else if (tn === $.P) {\n addressStartTagInBody(p2, token);\n } else if (tn === $.A) {\n aStartTagInBody(p2, token);\n } else {\n genericStartTagInBody(p2, token);\n }\n break;\n case 2:\n if (tn === $.DL || tn === $.OL || tn === $.UL) {\n addressStartTagInBody(p2, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderStartTagInBody(p2, token);\n } else if (tn === $.LI || tn === $.DD || tn === $.DT) {\n listItemStartTagInBody(p2, token);\n } else if (tn === $.EM || tn === $.TT) {\n bStartTagInBody(p2, token);\n } else if (tn === $.BR) {\n areaStartTagInBody(p2, token);\n } else if (tn === $.HR) {\n hrStartTagInBody(p2, token);\n } else if (tn === $.RB) {\n rbStartTagInBody(p2, token);\n } else if (tn === $.RT || tn === $.RP) {\n rtStartTagInBody(p2, token);\n } else if (tn !== $.TH && tn !== $.TD && tn !== $.TR) {\n genericStartTagInBody(p2, token);\n }\n break;\n case 3:\n if (tn === $.DIV || tn === $.DIR || tn === $.NAV) {\n addressStartTagInBody(p2, token);\n } else if (tn === $.PRE) {\n preStartTagInBody(p2, token);\n } else if (tn === $.BIG) {\n bStartTagInBody(p2, token);\n } else if (tn === $.IMG || tn === $.WBR) {\n areaStartTagInBody(p2, token);\n } else if (tn === $.XMP) {\n xmpStartTagInBody(p2, token);\n } else if (tn === $.SVG) {\n svgStartTagInBody(p2, token);\n } else if (tn === $.RTC) {\n rbStartTagInBody(p2, token);\n } else if (tn !== $.COL) {\n genericStartTagInBody(p2, token);\n }\n break;\n case 4:\n if (tn === $.HTML) {\n htmlStartTagInBody(p2, token);\n } else if (tn === $.BASE || tn === $.LINK || tn === $.META) {\n startTagInHead(p2, token);\n } else if (tn === $.BODY) {\n bodyStartTagInBody(p2, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressStartTagInBody(p2, token);\n } else if (tn === $.FORM) {\n formStartTagInBody(p2, token);\n } else if (tn === $.CODE || tn === $.FONT) {\n bStartTagInBody(p2, token);\n } else if (tn === $.NOBR) {\n nobrStartTagInBody(p2, token);\n } else if (tn === $.AREA) {\n areaStartTagInBody(p2, token);\n } else if (tn === $.MATH) {\n mathStartTagInBody(p2, token);\n } else if (tn === $.MENU) {\n menuStartTagInBody(p2, token);\n } else if (tn !== $.HEAD) {\n genericStartTagInBody(p2, token);\n }\n break;\n case 5:\n if (tn === $.STYLE || tn === $.TITLE) {\n startTagInHead(p2, token);\n } else if (tn === $.ASIDE) {\n addressStartTagInBody(p2, token);\n } else if (tn === $.SMALL) {\n bStartTagInBody(p2, token);\n } else if (tn === $.TABLE) {\n tableStartTagInBody(p2, token);\n } else if (tn === $.EMBED) {\n areaStartTagInBody(p2, token);\n } else if (tn === $.INPUT) {\n inputStartTagInBody(p2, token);\n } else if (tn === $.PARAM || tn === $.TRACK) {\n paramStartTagInBody(p2, token);\n } else if (tn === $.IMAGE) {\n imageStartTagInBody(p2, token);\n } else if (tn !== $.FRAME && tn !== $.TBODY && tn !== $.TFOOT && tn !== $.THEAD) {\n genericStartTagInBody(p2, token);\n }\n break;\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p2, token);\n } else if (tn === $.CENTER || tn === $.FIGURE || tn === $.FOOTER || tn === $.HEADER || tn === $.HGROUP || tn === $.DIALOG) {\n addressStartTagInBody(p2, token);\n } else if (tn === $.BUTTON) {\n buttonStartTagInBody(p2, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n bStartTagInBody(p2, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletStartTagInBody(p2, token);\n } else if (tn === $.KEYGEN) {\n areaStartTagInBody(p2, token);\n } else if (tn === $.SOURCE) {\n paramStartTagInBody(p2, token);\n } else if (tn === $.IFRAME) {\n iframeStartTagInBody(p2, token);\n } else if (tn === $.SELECT) {\n selectStartTagInBody(p2, token);\n } else if (tn === $.OPTION) {\n optgroupStartTagInBody(p2, token);\n } else {\n genericStartTagInBody(p2, token);\n }\n break;\n case 7:\n if (tn === $.BGSOUND) {\n startTagInHead(p2, token);\n } else if (tn === $.DETAILS || tn === $.ADDRESS || tn === $.ARTICLE || tn === $.SECTION || tn === $.SUMMARY) {\n addressStartTagInBody(p2, token);\n } else if (tn === $.LISTING) {\n preStartTagInBody(p2, token);\n } else if (tn === $.MARQUEE) {\n appletStartTagInBody(p2, token);\n } else if (tn === $.NOEMBED) {\n noembedStartTagInBody(p2, token);\n } else if (tn !== $.CAPTION) {\n genericStartTagInBody(p2, token);\n }\n break;\n case 8:\n if (tn === $.BASEFONT) {\n startTagInHead(p2, token);\n } else if (tn === $.FRAMESET) {\n framesetStartTagInBody(p2, token);\n } else if (tn === $.FIELDSET) {\n addressStartTagInBody(p2, token);\n } else if (tn === $.TEXTAREA) {\n textareaStartTagInBody(p2, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p2, token);\n } else if (tn === $.NOSCRIPT) {\n if (p2.options.scriptingEnabled) {\n noembedStartTagInBody(p2, token);\n } else {\n genericStartTagInBody(p2, token);\n }\n } else if (tn === $.OPTGROUP) {\n optgroupStartTagInBody(p2, token);\n } else if (tn !== $.COLGROUP) {\n genericStartTagInBody(p2, token);\n }\n break;\n case 9:\n if (tn === $.PLAINTEXT) {\n plaintextStartTagInBody(p2, token);\n } else {\n genericStartTagInBody(p2, token);\n }\n break;\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressStartTagInBody(p2, token);\n } else {\n genericStartTagInBody(p2, token);\n }\n break;\n default:\n genericStartTagInBody(p2, token);\n }\n}\nfunction bodyEndTagInBody(p2) {\n if (p2.openElements.hasInScope($.BODY)) {\n p2.insertionMode = AFTER_BODY_MODE;\n }\n}\nfunction htmlEndTagInBody(p2, token) {\n if (p2.openElements.hasInScope($.BODY)) {\n p2.insertionMode = AFTER_BODY_MODE;\n p2._processToken(token);\n }\n}\nfunction addressEndTagInBody(p2, token) {\n const tn = token.tagName;\n if (p2.openElements.hasInScope(tn)) {\n p2.openElements.generateImpliedEndTags();\n p2.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p2) {\n const inTemplate = p2.openElements.tmplCount > 0;\n const formElement = p2.formElement;\n if (!inTemplate) {\n p2.formElement = null;\n }\n if ((formElement || inTemplate) && p2.openElements.hasInScope($.FORM)) {\n p2.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p2.openElements.popUntilTagNamePopped($.FORM);\n } else {\n p2.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p2) {\n if (!p2.openElements.hasInButtonScope($.P)) {\n p2._insertFakeElement($.P);\n }\n p2._closePElement();\n}\nfunction liEndTagInBody(p2) {\n if (p2.openElements.hasInListItemScope($.LI)) {\n p2.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p2.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p2, token) {\n const tn = token.tagName;\n if (p2.openElements.hasInScope(tn)) {\n p2.openElements.generateImpliedEndTagsWithExclusion(tn);\n p2.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p2) {\n if (p2.openElements.hasNumberedHeaderInScope()) {\n p2.openElements.generateImpliedEndTags();\n p2.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p2, token) {\n const tn = token.tagName;\n if (p2.openElements.hasInScope(tn)) {\n p2.openElements.generateImpliedEndTags();\n p2.openElements.popUntilTagNamePopped(tn);\n p2.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p2) {\n p2._reconstructActiveFormattingElements();\n p2._insertFakeElement($.BR);\n p2.openElements.pop();\n p2.framesetOk = false;\n}\nfunction genericEndTagInBody(p2, token) {\n const tn = token.tagName;\n for (let i = p2.openElements.stackTop; i > 0; i--) {\n const element2 = p2.openElements.items[i];\n if (p2.treeAdapter.getTagName(element2) === tn) {\n p2.openElements.generateImpliedEndTagsWithExclusion(tn);\n p2.openElements.popUntilElementPopped(element2);\n break;\n }\n if (p2._isSpecialElement(element2)) {\n break;\n }\n }\n}\nfunction endTagInBody(p2, token) {\n const tn = token.tagName;\n switch (tn.length) {\n case 1:\n if (tn === $.A || tn === $.B || tn === $.I || tn === $.S || tn === $.U) {\n callAdoptionAgency(p2, token);\n } else if (tn === $.P) {\n pEndTagInBody(p2);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n case 2:\n if (tn === $.DL || tn === $.UL || tn === $.OL) {\n addressEndTagInBody(p2, token);\n } else if (tn === $.LI) {\n liEndTagInBody(p2);\n } else if (tn === $.DD || tn === $.DT) {\n ddEndTagInBody(p2, token);\n } else if (tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6) {\n numberedHeaderEndTagInBody(p2);\n } else if (tn === $.BR) {\n brEndTagInBody(p2);\n } else if (tn === $.EM || tn === $.TT) {\n callAdoptionAgency(p2, token);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n case 3:\n if (tn === $.BIG) {\n callAdoptionAgency(p2, token);\n } else if (tn === $.DIR || tn === $.DIV || tn === $.NAV || tn === $.PRE) {\n addressEndTagInBody(p2, token);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n case 4:\n if (tn === $.BODY) {\n bodyEndTagInBody(p2);\n } else if (tn === $.HTML) {\n htmlEndTagInBody(p2, token);\n } else if (tn === $.FORM) {\n formEndTagInBody(p2);\n } else if (tn === $.CODE || tn === $.FONT || tn === $.NOBR) {\n callAdoptionAgency(p2, token);\n } else if (tn === $.MAIN || tn === $.MENU) {\n addressEndTagInBody(p2, token);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n case 5:\n if (tn === $.ASIDE) {\n addressEndTagInBody(p2, token);\n } else if (tn === $.SMALL) {\n callAdoptionAgency(p2, token);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n case 6:\n if (tn === $.CENTER || tn === $.FIGURE || tn === $.FOOTER || tn === $.HEADER || tn === $.HGROUP || tn === $.DIALOG) {\n addressEndTagInBody(p2, token);\n } else if (tn === $.APPLET || tn === $.OBJECT) {\n appletEndTagInBody(p2, token);\n } else if (tn === $.STRIKE || tn === $.STRONG) {\n callAdoptionAgency(p2, token);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n case 7:\n if (tn === $.ADDRESS || tn === $.ARTICLE || tn === $.DETAILS || tn === $.SECTION || tn === $.SUMMARY || tn === $.LISTING) {\n addressEndTagInBody(p2, token);\n } else if (tn === $.MARQUEE) {\n appletEndTagInBody(p2, token);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n case 8:\n if (tn === $.FIELDSET) {\n addressEndTagInBody(p2, token);\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p2, token);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n case 10:\n if (tn === $.BLOCKQUOTE || tn === $.FIGCAPTION) {\n addressEndTagInBody(p2, token);\n } else {\n genericEndTagInBody(p2, token);\n }\n break;\n default:\n genericEndTagInBody(p2, token);\n }\n}\nfunction eofInBody(p2, token) {\n if (p2.tmplInsertionModeStackTop > -1) {\n eofInTemplate(p2, token);\n } else {\n p2.stopped = true;\n }\n}\nfunction endTagInText(p2, token) {\n if (token.tagName === $.SCRIPT) {\n p2.pendingScript = p2.openElements.current;\n }\n p2.openElements.pop();\n p2.insertionMode = p2.originalInsertionMode;\n}\nfunction eofInText(p2, token) {\n p2._err(ERR.eofInElementThatCanContainOnlyText);\n p2.openElements.pop();\n p2.insertionMode = p2.originalInsertionMode;\n p2._processToken(token);\n}\nfunction characterInTable(p2, token) {\n const curTn = p2.openElements.currentTagName;\n if (curTn === $.TABLE || curTn === $.TBODY || curTn === $.TFOOT || curTn === $.THEAD || curTn === $.TR) {\n p2.pendingCharacterTokens = [];\n p2.hasNonWhitespacePendingCharacterToken = false;\n p2.originalInsertionMode = p2.insertionMode;\n p2.insertionMode = IN_TABLE_TEXT_MODE;\n p2._processToken(token);\n } else {\n tokenInTable(p2, token);\n }\n}\nfunction captionStartTagInTable(p2, token) {\n p2.openElements.clearBackToTableContext();\n p2.activeFormattingElements.insertMarker();\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = IN_CAPTION_MODE;\n}\nfunction colgroupStartTagInTable(p2, token) {\n p2.openElements.clearBackToTableContext();\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = IN_COLUMN_GROUP_MODE;\n}\nfunction colStartTagInTable(p2, token) {\n p2.openElements.clearBackToTableContext();\n p2._insertFakeElement($.COLGROUP);\n p2.insertionMode = IN_COLUMN_GROUP_MODE;\n p2._processToken(token);\n}\nfunction tbodyStartTagInTable(p2, token) {\n p2.openElements.clearBackToTableContext();\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = IN_TABLE_BODY_MODE;\n}\nfunction tdStartTagInTable(p2, token) {\n p2.openElements.clearBackToTableContext();\n p2._insertFakeElement($.TBODY);\n p2.insertionMode = IN_TABLE_BODY_MODE;\n p2._processToken(token);\n}\nfunction tableStartTagInTable(p2, token) {\n if (p2.openElements.hasInTableScope($.TABLE)) {\n p2.openElements.popUntilTagNamePopped($.TABLE);\n p2._resetInsertionMode();\n p2._processToken(token);\n }\n}\nfunction inputStartTagInTable(p2, token) {\n const inputType = Tokenizer2.getTokenAttr(token, ATTRS.TYPE);\n if (inputType && inputType.toLowerCase() === HIDDEN_INPUT_TYPE) {\n p2._appendElement(token, NS.HTML);\n } else {\n tokenInTable(p2, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p2, token) {\n if (!p2.formElement && p2.openElements.tmplCount === 0) {\n p2._insertElement(token, NS.HTML);\n p2.formElement = p2.openElements.current;\n p2.openElements.pop();\n }\n}\nfunction startTagInTable(p2, token) {\n const tn = token.tagName;\n switch (tn.length) {\n case 2:\n if (tn === $.TD || tn === $.TH || tn === $.TR) {\n tdStartTagInTable(p2, token);\n } else {\n tokenInTable(p2, token);\n }\n break;\n case 3:\n if (tn === $.COL) {\n colStartTagInTable(p2, token);\n } else {\n tokenInTable(p2, token);\n }\n break;\n case 4:\n if (tn === $.FORM) {\n formStartTagInTable(p2, token);\n } else {\n tokenInTable(p2, token);\n }\n break;\n case 5:\n if (tn === $.TABLE) {\n tableStartTagInTable(p2, token);\n } else if (tn === $.STYLE) {\n startTagInHead(p2, token);\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n tbodyStartTagInTable(p2, token);\n } else if (tn === $.INPUT) {\n inputStartTagInTable(p2, token);\n } else {\n tokenInTable(p2, token);\n }\n break;\n case 6:\n if (tn === $.SCRIPT) {\n startTagInHead(p2, token);\n } else {\n tokenInTable(p2, token);\n }\n break;\n case 7:\n if (tn === $.CAPTION) {\n captionStartTagInTable(p2, token);\n } else {\n tokenInTable(p2, token);\n }\n break;\n case 8:\n if (tn === $.COLGROUP) {\n colgroupStartTagInTable(p2, token);\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p2, token);\n } else {\n tokenInTable(p2, token);\n }\n break;\n default:\n tokenInTable(p2, token);\n }\n}\nfunction endTagInTable(p2, token) {\n const tn = token.tagName;\n if (tn === $.TABLE) {\n if (p2.openElements.hasInTableScope($.TABLE)) {\n p2.openElements.popUntilTagNamePopped($.TABLE);\n p2._resetInsertionMode();\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p2, token);\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML && tn !== $.TBODY && tn !== $.TD && tn !== $.TFOOT && tn !== $.TH && tn !== $.THEAD && tn !== $.TR) {\n tokenInTable(p2, token);\n }\n}\nfunction tokenInTable(p2, token) {\n const savedFosterParentingState = p2.fosterParentingEnabled;\n p2.fosterParentingEnabled = true;\n p2._processTokenInBodyMode(token);\n p2.fosterParentingEnabled = savedFosterParentingState;\n}\nfunction whitespaceCharacterInTableText(p2, token) {\n p2.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p2, token) {\n p2.pendingCharacterTokens.push(token);\n p2.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p2, token) {\n let i = 0;\n if (p2.hasNonWhitespacePendingCharacterToken) {\n for (; i < p2.pendingCharacterTokens.length; i++) {\n tokenInTable(p2, p2.pendingCharacterTokens[i]);\n }\n } else {\n for (; i < p2.pendingCharacterTokens.length; i++) {\n p2._insertCharacters(p2.pendingCharacterTokens[i]);\n }\n }\n p2.insertionMode = p2.originalInsertionMode;\n p2._processToken(token);\n}\nfunction startTagInCaption(p2, token) {\n const tn = token.tagName;\n if (tn === $.CAPTION || tn === $.COL || tn === $.COLGROUP || tn === $.TBODY || tn === $.TD || tn === $.TFOOT || tn === $.TH || tn === $.THEAD || tn === $.TR) {\n if (p2.openElements.hasInTableScope($.CAPTION)) {\n p2.openElements.generateImpliedEndTags();\n p2.openElements.popUntilTagNamePopped($.CAPTION);\n p2.activeFormattingElements.clearToLastMarker();\n p2.insertionMode = IN_TABLE_MODE;\n p2._processToken(token);\n }\n } else {\n startTagInBody(p2, token);\n }\n}\nfunction endTagInCaption(p2, token) {\n const tn = token.tagName;\n if (tn === $.CAPTION || tn === $.TABLE) {\n if (p2.openElements.hasInTableScope($.CAPTION)) {\n p2.openElements.generateImpliedEndTags();\n p2.openElements.popUntilTagNamePopped($.CAPTION);\n p2.activeFormattingElements.clearToLastMarker();\n p2.insertionMode = IN_TABLE_MODE;\n if (tn === $.TABLE) {\n p2._processToken(token);\n }\n }\n } else if (tn !== $.BODY && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML && tn !== $.TBODY && tn !== $.TD && tn !== $.TFOOT && tn !== $.TH && tn !== $.THEAD && tn !== $.TR) {\n endTagInBody(p2, token);\n }\n}\nfunction startTagInColumnGroup(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.COL) {\n p2._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.TEMPLATE) {\n startTagInHead(p2, token);\n } else {\n tokenInColumnGroup(p2, token);\n }\n}\nfunction endTagInColumnGroup(p2, token) {\n const tn = token.tagName;\n if (tn === $.COLGROUP) {\n if (p2.openElements.currentTagName === $.COLGROUP) {\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p2, token);\n } else if (tn !== $.COL) {\n tokenInColumnGroup(p2, token);\n }\n}\nfunction tokenInColumnGroup(p2, token) {\n if (p2.openElements.currentTagName === $.COLGROUP) {\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_MODE;\n p2._processToken(token);\n }\n}\nfunction startTagInTableBody(p2, token) {\n const tn = token.tagName;\n if (tn === $.TR) {\n p2.openElements.clearBackToTableBodyContext();\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = IN_ROW_MODE;\n } else if (tn === $.TH || tn === $.TD) {\n p2.openElements.clearBackToTableBodyContext();\n p2._insertFakeElement($.TR);\n p2.insertionMode = IN_ROW_MODE;\n p2._processToken(token);\n } else if (tn === $.CAPTION || tn === $.COL || tn === $.COLGROUP || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p2.openElements.hasTableBodyContextInTableScope()) {\n p2.openElements.clearBackToTableBodyContext();\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_MODE;\n p2._processToken(token);\n }\n } else {\n startTagInTable(p2, token);\n }\n}\nfunction endTagInTableBody(p2, token) {\n const tn = token.tagName;\n if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p2.openElements.hasInTableScope(tn)) {\n p2.openElements.clearBackToTableBodyContext();\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p2.openElements.hasTableBodyContextInTableScope()) {\n p2.openElements.clearBackToTableBodyContext();\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_MODE;\n p2._processToken(token);\n }\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP || tn !== $.HTML && tn !== $.TD && tn !== $.TH && tn !== $.TR) {\n endTagInTable(p2, token);\n }\n}\nfunction startTagInRow(p2, token) {\n const tn = token.tagName;\n if (tn === $.TH || tn === $.TD) {\n p2.openElements.clearBackToTableRowContext();\n p2._insertElement(token, NS.HTML);\n p2.insertionMode = IN_CELL_MODE;\n p2.activeFormattingElements.insertMarker();\n } else if (tn === $.CAPTION || tn === $.COL || tn === $.COLGROUP || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n if (p2.openElements.hasInTableScope($.TR)) {\n p2.openElements.clearBackToTableRowContext();\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_BODY_MODE;\n p2._processToken(token);\n }\n } else {\n startTagInTable(p2, token);\n }\n}\nfunction endTagInRow(p2, token) {\n const tn = token.tagName;\n if (tn === $.TR) {\n if (p2.openElements.hasInTableScope($.TR)) {\n p2.openElements.clearBackToTableRowContext();\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_BODY_MODE;\n }\n } else if (tn === $.TABLE) {\n if (p2.openElements.hasInTableScope($.TR)) {\n p2.openElements.clearBackToTableRowContext();\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_BODY_MODE;\n p2._processToken(token);\n }\n } else if (tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD) {\n if (p2.openElements.hasInTableScope(tn) || p2.openElements.hasInTableScope($.TR)) {\n p2.openElements.clearBackToTableRowContext();\n p2.openElements.pop();\n p2.insertionMode = IN_TABLE_BODY_MODE;\n p2._processToken(token);\n }\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP || tn !== $.HTML && tn !== $.TD && tn !== $.TH) {\n endTagInTable(p2, token);\n }\n}\nfunction startTagInCell(p2, token) {\n const tn = token.tagName;\n if (tn === $.CAPTION || tn === $.COL || tn === $.COLGROUP || tn === $.TBODY || tn === $.TD || tn === $.TFOOT || tn === $.TH || tn === $.THEAD || tn === $.TR) {\n if (p2.openElements.hasInTableScope($.TD) || p2.openElements.hasInTableScope($.TH)) {\n p2._closeTableCell();\n p2._processToken(token);\n }\n } else {\n startTagInBody(p2, token);\n }\n}\nfunction endTagInCell(p2, token) {\n const tn = token.tagName;\n if (tn === $.TD || tn === $.TH) {\n if (p2.openElements.hasInTableScope(tn)) {\n p2.openElements.generateImpliedEndTags();\n p2.openElements.popUntilTagNamePopped(tn);\n p2.activeFormattingElements.clearToLastMarker();\n p2.insertionMode = IN_ROW_MODE;\n }\n } else if (tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR) {\n if (p2.openElements.hasInTableScope(tn)) {\n p2._closeTableCell();\n p2._processToken(token);\n }\n } else if (tn !== $.BODY && tn !== $.CAPTION && tn !== $.COL && tn !== $.COLGROUP && tn !== $.HTML) {\n endTagInBody(p2, token);\n }\n}\nfunction startTagInSelect(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.OPTION) {\n if (p2.openElements.currentTagName === $.OPTION) {\n p2.openElements.pop();\n }\n p2._insertElement(token, NS.HTML);\n } else if (tn === $.OPTGROUP) {\n if (p2.openElements.currentTagName === $.OPTION) {\n p2.openElements.pop();\n }\n if (p2.openElements.currentTagName === $.OPTGROUP) {\n p2.openElements.pop();\n }\n p2._insertElement(token, NS.HTML);\n } else if (tn === $.INPUT || tn === $.KEYGEN || tn === $.TEXTAREA || tn === $.SELECT) {\n if (p2.openElements.hasInSelectScope($.SELECT)) {\n p2.openElements.popUntilTagNamePopped($.SELECT);\n p2._resetInsertionMode();\n if (tn !== $.SELECT) {\n p2._processToken(token);\n }\n }\n } else if (tn === $.SCRIPT || tn === $.TEMPLATE) {\n startTagInHead(p2, token);\n }\n}\nfunction endTagInSelect(p2, token) {\n const tn = token.tagName;\n if (tn === $.OPTGROUP) {\n const prevOpenElement = p2.openElements.items[p2.openElements.stackTop - 1];\n const prevOpenElementTn = prevOpenElement && p2.treeAdapter.getTagName(prevOpenElement);\n if (p2.openElements.currentTagName === $.OPTION && prevOpenElementTn === $.OPTGROUP) {\n p2.openElements.pop();\n }\n if (p2.openElements.currentTagName === $.OPTGROUP) {\n p2.openElements.pop();\n }\n } else if (tn === $.OPTION) {\n if (p2.openElements.currentTagName === $.OPTION) {\n p2.openElements.pop();\n }\n } else if (tn === $.SELECT && p2.openElements.hasInSelectScope($.SELECT)) {\n p2.openElements.popUntilTagNamePopped($.SELECT);\n p2._resetInsertionMode();\n } else if (tn === $.TEMPLATE) {\n endTagInHead(p2, token);\n }\n}\nfunction startTagInSelectInTable(p2, token) {\n const tn = token.tagName;\n if (tn === $.CAPTION || tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR || tn === $.TD || tn === $.TH) {\n p2.openElements.popUntilTagNamePopped($.SELECT);\n p2._resetInsertionMode();\n p2._processToken(token);\n } else {\n startTagInSelect(p2, token);\n }\n}\nfunction endTagInSelectInTable(p2, token) {\n const tn = token.tagName;\n if (tn === $.CAPTION || tn === $.TABLE || tn === $.TBODY || tn === $.TFOOT || tn === $.THEAD || tn === $.TR || tn === $.TD || tn === $.TH) {\n if (p2.openElements.hasInTableScope(tn)) {\n p2.openElements.popUntilTagNamePopped($.SELECT);\n p2._resetInsertionMode();\n p2._processToken(token);\n }\n } else {\n endTagInSelect(p2, token);\n }\n}\nfunction startTagInTemplate(p2, token) {\n const tn = token.tagName;\n if (tn === $.BASE || tn === $.BASEFONT || tn === $.BGSOUND || tn === $.LINK || tn === $.META || tn === $.NOFRAMES || tn === $.SCRIPT || tn === $.STYLE || tn === $.TEMPLATE || tn === $.TITLE) {\n startTagInHead(p2, token);\n } else {\n const newInsertionMode = TEMPLATE_INSERTION_MODE_SWITCH_MAP[tn] || IN_BODY_MODE;\n p2._popTmplInsertionMode();\n p2._pushTmplInsertionMode(newInsertionMode);\n p2.insertionMode = newInsertionMode;\n p2._processToken(token);\n }\n}\nfunction endTagInTemplate(p2, token) {\n if (token.tagName === $.TEMPLATE) {\n endTagInHead(p2, token);\n }\n}\nfunction eofInTemplate(p2, token) {\n if (p2.openElements.tmplCount > 0) {\n p2.openElements.popUntilTagNamePopped($.TEMPLATE);\n p2.activeFormattingElements.clearToLastMarker();\n p2._popTmplInsertionMode();\n p2._resetInsertionMode();\n p2._processToken(token);\n } else {\n p2.stopped = true;\n }\n}\nfunction startTagAfterBody(p2, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p2, token);\n } else {\n tokenAfterBody(p2, token);\n }\n}\nfunction endTagAfterBody(p2, token) {\n if (token.tagName === $.HTML) {\n if (!p2.fragmentContext) {\n p2.insertionMode = AFTER_AFTER_BODY_MODE;\n }\n } else {\n tokenAfterBody(p2, token);\n }\n}\nfunction tokenAfterBody(p2, token) {\n p2.insertionMode = IN_BODY_MODE;\n p2._processToken(token);\n}\nfunction startTagInFrameset(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.FRAMESET) {\n p2._insertElement(token, NS.HTML);\n } else if (tn === $.FRAME) {\n p2._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p2, token);\n }\n}\nfunction endTagInFrameset(p2, token) {\n if (token.tagName === $.FRAMESET && !p2.openElements.isRootHtmlElementCurrent()) {\n p2.openElements.pop();\n if (!p2.fragmentContext && p2.openElements.currentTagName !== $.FRAMESET) {\n p2.insertionMode = AFTER_FRAMESET_MODE;\n }\n }\n}\nfunction startTagAfterFrameset(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p2, token);\n }\n}\nfunction endTagAfterFrameset(p2, token) {\n if (token.tagName === $.HTML) {\n p2.insertionMode = AFTER_AFTER_FRAMESET_MODE;\n }\n}\nfunction startTagAfterAfterBody(p2, token) {\n if (token.tagName === $.HTML) {\n startTagInBody(p2, token);\n } else {\n tokenAfterAfterBody(p2, token);\n }\n}\nfunction tokenAfterAfterBody(p2, token) {\n p2.insertionMode = IN_BODY_MODE;\n p2._processToken(token);\n}\nfunction startTagAfterAfterFrameset(p2, token) {\n const tn = token.tagName;\n if (tn === $.HTML) {\n startTagInBody(p2, token);\n } else if (tn === $.NOFRAMES) {\n startTagInHead(p2, token);\n }\n}\nfunction nullCharacterInForeignContent(p2, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p2._insertCharacters(token);\n}\nfunction characterInForeignContent(p2, token) {\n p2._insertCharacters(token);\n p2.framesetOk = false;\n}\nfunction startTagInForeignContent(p2, token) {\n if (foreignContent.causesExit(token) && !p2.fragmentContext) {\n while (p2.treeAdapter.getNamespaceURI(p2.openElements.current) !== NS.HTML && !p2._isIntegrationPoint(p2.openElements.current)) {\n p2.openElements.pop();\n }\n p2._processToken(token);\n } else {\n const current = p2._getAdjustedCurrentElement();\n const currentNs = p2.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n } else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p2._appendElement(token, currentNs);\n } else {\n p2._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p2, token) {\n for (let i = p2.openElements.stackTop; i > 0; i--) {\n const element2 = p2.openElements.items[i];\n if (p2.treeAdapter.getNamespaceURI(element2) === NS.HTML) {\n p2._processToken(token);\n break;\n }\n if (p2.treeAdapter.getTagName(element2).toLowerCase() === token.tagName) {\n p2.openElements.popUntilElementPopped(element2);\n break;\n }\n }\n}\nconst pointStart = point$2(\"start\");\nconst pointEnd = point$2(\"end\");\nfunction point$2(type) {\n return point2;\n function point2(node) {\n const point3 = node && node.position && node.position[type] || {};\n return {\n line: point3.line || null,\n column: point3.column || null,\n offset: point3.offset > -1 ? point3.offset : null\n };\n }\n}\nclass Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property;\n this.normal = normal;\n if (space) {\n this.space = space;\n }\n }\n}\nSchema.prototype.property = {};\nSchema.prototype.normal = {};\nSchema.prototype.space = null;\nfunction merge(definitions2, space) {\n const property = {};\n const normal = {};\n let index2 = -1;\n while (++index2 < definitions2.length) {\n Object.assign(property, definitions2[index2].property);\n Object.assign(normal, definitions2[index2].normal);\n }\n return new Schema(property, normal, space);\n}\nfunction normalize$1(value) {\n return value.toLowerCase();\n}\nclass Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n this.property = property;\n this.attribute = attribute;\n }\n}\nInfo.prototype.space = null;\nInfo.prototype.boolean = false;\nInfo.prototype.booleanish = false;\nInfo.prototype.overloadedBoolean = false;\nInfo.prototype.number = false;\nInfo.prototype.commaSeparated = false;\nInfo.prototype.spaceSeparated = false;\nInfo.prototype.commaOrSpaceSeparated = false;\nInfo.prototype.mustUseProperty = false;\nInfo.prototype.defined = false;\nlet powers = 0;\nconst boolean = increment();\nconst booleanish = increment();\nconst overloadedBoolean = increment();\nconst number = increment();\nconst spaceSeparated = increment();\nconst commaSeparated = increment();\nconst commaOrSpaceSeparated = increment();\nfunction increment() {\n return 2 ** ++powers;\n}\nconst types = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n boolean,\n booleanish,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst checks = Object.keys(types);\nclass DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index2 = -1;\n super(property, attribute);\n mark(this, \"space\", space);\n if (typeof mask === \"number\") {\n while (++index2 < checks.length) {\n const check = checks[index2];\n mark(this, checks[index2], (mask & types[check]) === types[check]);\n }\n }\n }\n}\nDefinedInfo.prototype.defined = true;\nfunction mark(values, key2, value) {\n if (value) {\n values[key2] = value;\n }\n}\nconst own$e = {}.hasOwnProperty;\nfunction create(definition2) {\n const property = {};\n const normal = {};\n let prop;\n for (prop in definition2.properties) {\n if (own$e.call(definition2.properties, prop)) {\n const value = definition2.properties[prop];\n const info = new DefinedInfo(\n prop,\n definition2.transform(definition2.attributes || {}, prop),\n value,\n definition2.space\n );\n if (definition2.mustUseProperty && definition2.mustUseProperty.includes(prop)) {\n info.mustUseProperty = true;\n }\n property[prop] = info;\n normal[normalize$1(prop)] = prop;\n normal[normalize$1(info.attribute)] = prop;\n }\n }\n return new Schema(property, normal, definition2.space);\n}\nconst xlink = create({\n space: \"xlink\",\n transform(_, prop) {\n return \"xlink:\" + prop.slice(5).toLowerCase();\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n});\nconst xml = create({\n space: \"xml\",\n transform(_, prop) {\n return \"xml:\" + prop.slice(3).toLowerCase();\n },\n properties: { xmlLang: null, xmlBase: null, xmlSpace: null }\n});\nfunction caseSensitiveTransform(attributes2, attribute) {\n return attribute in attributes2 ? attributes2[attribute] : attribute;\n}\nfunction caseInsensitiveTransform(attributes2, property) {\n return caseSensitiveTransform(attributes2, property.toLowerCase());\n}\nconst xmlns = create({\n space: \"xmlns\",\n attributes: { xmlnsxlink: \"xmlns:xlink\" },\n transform: caseInsensitiveTransform,\n properties: { xmlns: null, xmlnsXLink: null }\n});\nconst aria = create({\n transform(_, prop) {\n return prop === \"role\" ? prop : \"aria-\" + prop.slice(4).toLowerCase();\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n});\nconst html$4 = create({\n space: \"html\",\n attributes: {\n acceptcharset: \"accept-charset\",\n classname: \"class\",\n htmlfor: \"for\",\n httpequiv: \"http-equiv\"\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: [\"checked\", \"multiple\", \"muted\", \"selected\"],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null,\n // Several. Use CSS `text-align` instead,\n aLink: null,\n // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated,\n // ``. List of URIs to archives\n axis: null,\n // `` and ``. Use `scope` on ``\n background: null,\n // ``. Use CSS `background-image` instead\n bgColor: null,\n // `` and table elements. Use CSS `background-color` instead\n border: number,\n // ``. Use CSS `border-width` instead,\n borderColor: null,\n // ``. Use CSS `border-color` instead,\n bottomMargin: number,\n // ``\n cellPadding: null,\n // ``\n cellSpacing: null,\n // ``\n char: null,\n // Several table elements. When `align=char`, sets the character to align on\n charOff: null,\n // Several table elements. When `char`, offsets the alignment\n classId: null,\n // ``\n clear: null,\n // ``. Use CSS `clear` instead\n code: null,\n // ``\n codeBase: null,\n // ``\n codeType: null,\n // ``\n color: null,\n // `` and ``. Use CSS instead\n compact: boolean,\n // Lists. Use CSS to reduce space between items instead\n declare: boolean,\n // ``\n event: null,\n // `","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./cardList_temp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./cardList_temp.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cardList_temp.vue?vue&type=template&id=60d0f34c&scoped=true&\"\nimport script from \"./cardList_temp.vue?vue&type=script&lang=js&\"\nexport * from \"./cardList_temp.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cardList_temp.vue?vue&type=style&index=0&id=60d0f34c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"60d0f34c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"box\"},_vm._l((_vm.moreAryCur),function(o,index){return _c('el-card',{key:index,staticClass:\"card\",attrs:{\"body-style\":{\n padding: '0px',\n display: 'flex',\n \n \n },\"shadow\":\"hover\"}},[_c('img',{staticClass:\"image\",attrs:{\"src\":o.imgpath},on:{\"click\":function($event){return _vm.goTo(o)}}}),_c('div',{staticStyle:{\"width\":\"60%\",\"display\":\"block\"},on:{\"click\":function($event){return _vm.goTo(o)}}},[_c('span',{staticStyle:{\"font-size\":\"14px\",\"height\":\"40px\",\"width\":\"100%\",\"display\":\"block\",\"text-overflow\":\"ellipsis\",\"-webkit-box-orient\":\"vertical\",\"-webkit-line-clamp\":\"2\",\"overflow\":\"hidden\"}},[_vm._v(_vm._s(o.title))]),_c('div',{staticClass:\"bottom clearfix\"},[_c('time',{staticClass:\"time\"},[_vm._v(\" 作者:\"+_vm._s(o.author ? o.author : \"暂无\"))])])])])}),1),_c('div',{staticStyle:{\"width\":\"100%\",\"text-align\":\"center\",\"margin-top\":\"20px\"}},[(_vm.moreAryCur.length != 0)?_c('el-pagination',{attrs:{\"small\":\"\",\"layout\":\"prev, pager, next\",\"total\":_vm.moreCountCur,\"current-page\":_vm.currentPage3,\"page-size\":10},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange,\"update:currentPage\":function($event){_vm.currentPage3=$event},\"update:current-page\":function($event){_vm.currentPage3=$event}}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n {{ o.title }}\n \n 作者:{{ o.author ? o.author : \"暂无\" }}\n \n \n\n \n \n \n \n \n \n \n \n \n \n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./cardList_temp_phone.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./cardList_temp_phone.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./cardList_temp_phone.vue?vue&type=template&id=7e25af6a&scoped=true&\"\nimport script from \"./cardList_temp_phone.vue?vue&type=script&lang=js&\"\nexport * from \"./cardList_temp_phone.vue?vue&type=script&lang=js&\"\nimport style0 from \"./cardList_temp_phone.vue?vue&type=style&index=0&id=7e25af6a&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e25af6a\",\n null\n \n)\n\nexport default component.exports","\n \n \n \n \n \n \n {{ name }} -- {{ bigTitle }}\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ name }} -- {{ bigTitle }}\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n ","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./temp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./temp.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./temp.vue?vue&type=template&id=1203e2c0&scoped=true&\"\nimport script from \"./temp.vue?vue&type=script&lang=js&\"\nexport * from \"./temp.vue?vue&type=script&lang=js&\"\nimport style0 from \"./temp.vue?vue&type=style&index=0&id=1203e2c0&prod&lang=css&\"\nimport style1 from \"./temp.vue?vue&type=style&index=1&id=1203e2c0&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1203e2c0\",\n null\n \n)\n\nexport default component.exports","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./cardList_temp_phone.vue?vue&type=style&index=0&id=7e25af6a&prod&scoped=true&lang=css&\"","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**!\n* tippy.js v6.3.7\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\n\nvar ROUND_ARROW = '';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {\n return document.body;\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a have an ownerDocument with no reference to the body\n\n\n return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\n\nfunction actualContains(parent, child) {\n var target = child;\n\n while (target) {\n var _target$getRootNode;\n\n if (parent.contains(target)) {\n return true;\n }\n\n target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;\n }\n\n return false;\n}\n\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar isIE11 = isBrowser ? // @ts-ignore\n!!window.msCrypto : false;\n\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\n\nfunction getFormattedMessage(message) {\n return [getDevMessage(message), // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n 'line-height: 1.5', // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n\n visitedMessages.add(message);\n\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n\n visitedMessages.add(message);\n\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: TIPPY_DEFAULT_APPEND_TO,\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n\n if (name) {\n var _name;\n\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;\n }\n\n return acc;\n }, {});\n return Object.assign({}, passedProps, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n\n if (plugins === void 0) {\n plugins = [];\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\n\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\n\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\n\nfunction createArrowElement(value) {\n var arrow = div();\n\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n\n return arrow;\n}\n\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\n\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function () {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);\n }\n\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n\n function handleStyles(fromHide) {\n if (fromHide === void 0) {\n fromHide = false;\n }\n\n popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(pluginHooks, args);\n }\n });\n\n if (shouldInvokePropsHook) {\n var _instance$props;\n\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n\n if (!aria.content) {\n return;\n }\n\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n }\n\n var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper\n\n if (instance.props.interactive && actualContains(popper, actualTarget)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {\n return actualContains(el, actualTarget);\n })) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove() {\n didTouchMove = true;\n }\n\n function onTouchStart() {\n didTouchMove = false;\n }\n\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event) {\n var _lastTriggerEvent;\n\n var shouldScheduleClickHide = false;\n\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n\n return null;\n }).filter(Boolean);\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n\n if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n instance.state.isMounted = true;\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper or tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n var delay = getDelay(true);\n\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n\n var delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. ) is recommended.\n\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = function onFirstUpdate() {\n var _instance$popperInsta2;\n\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the\n // popper has been positioned for the first time\n\n (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles(true);\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\n\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\n\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\n\nvar applyStylesModifier = Object.assign({}, applyStyles, {\n effect: function effect(_ref) {\n var state = _ref.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n } // intentionally return no cleanup function\n // return () => { ... }\n\n }\n});\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n var _optionalProps$popper;\n\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n\n var individualInstances = tippyInstances;\n var references = [];\n var triggerTargets = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n var shownOnCreate = false;\n\n function setTriggerTargets() {\n triggerTargets = individualInstances.map(function (instance) {\n return normalizeToArray(instance.props.triggerTarget || instance.reference);\n }).reduce(function (acc, item) {\n return acc.concat(item);\n }, []);\n }\n\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n\n instance.setProps = function (props) {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n } // have to pass singleton, as it maybe undefined on first call\n\n\n function prepareInstance(singleton, target) {\n var index = triggerTargets.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n singleton.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n var _references$index;\n\n return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();\n }\n }));\n }\n\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onHidden: function onHidden() {\n currentTarget = null;\n },\n onClickOutside: function onClickOutside(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n currentTarget = null;\n }\n },\n onShow: function onShow(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n prepareInstance(instance, references[0]);\n }\n },\n onTrigger: function onTrigger(instance, event) {\n prepareInstance(instance, event.currentTarget);\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: triggerTargets,\n popperOptions: Object.assign({}, optionalProps.popperOptions, {\n modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])\n })\n }));\n var originalShow = singleton.show;\n\n singleton.show = function (target) {\n originalShow(); // first time, showOnCreate or programmatic call with no params\n // default to showing first instance\n\n if (!currentTarget && target == null) {\n return prepareInstance(singleton, references[0]);\n } // triggered from event (do nothing as prepareInstance already called by onTrigger)\n // programmatic call with no params when already visible (do nothing again)\n\n\n if (currentTarget && target == null) {\n return;\n } // target is index of instance\n\n\n if (typeof target === 'number') {\n return references[target] && prepareInstance(singleton, references[target]);\n } // target is a child tippy instance\n\n\n if (individualInstances.indexOf(target) >= 0) {\n var ref = target.reference;\n return prepareInstance(singleton, ref);\n } // target is a ReferenceElement\n\n\n if (references.indexOf(target) >= 0) {\n return prepareInstance(singleton, target);\n }\n };\n\n singleton.showNext = function () {\n var first = references[0];\n\n if (!currentTarget) {\n return singleton.show(0);\n }\n\n var index = references.indexOf(currentTarget);\n singleton.show(references[index + 1] || first);\n };\n\n singleton.showPrevious = function () {\n var last = references[references.length - 1];\n\n if (!currentTarget) {\n return singleton.show(last);\n }\n\n var index = references.indexOf(currentTarget);\n var target = references[index - 1] || last;\n singleton.show(target);\n };\n\n var originalSetProps = singleton.setProps;\n\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n interceptSetPropsCleanups = interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: triggerTargets\n });\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({\n touch: defaultProps.touch\n }, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n\n var targetNode = event.target.closest(target);\n\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n\n var instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\n\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n\n // @ts-ignore\n if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n\n return {};\n }\n\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\n\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n\n if (isInternalUpdate) {\n return;\n }\n\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\n\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\n\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var triedPlacements = [];\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (isEnabled()) {\n if (triedPlacements.indexOf(state.placement) !== -1) {\n triedPlacements = [];\n }\n\n if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {\n triedPlacements.push(state.placement);\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n\n placement = state.placement;\n }\n }\n };\n\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n var index = rects.indexOf(cursorRect);\n cursorRectIndex = index > -1 ? index : cursorRectIndex;\n }\n },\n onHidden: function onHidden() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n\n var _width = _right - _left;\n\n var _height = _bottom - _top;\n\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n\n default:\n {\n return boundingRect;\n }\n }\n}\n\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n var prevRefRect = null;\n var prevPopRect = null;\n\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n\n return true;\n}\n\ntippy.setDefaultProps({\n render: render\n});\n\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy.esm.js.map\n","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./book_list.vue?vue&type=style&index=1&id=70da29de&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('heade'),_c('div',{staticClass:\"box-width more common-height\"},[_c('p',{staticStyle:{\"text-align\":\"left\",\"font-size\":\"20px\",\"font-weight\":\"bold\",\"margin-bottom\":\"20px\",\"overflow\":\"auto\",\"position\":\"sticky\",\"top\":\"84px\",\"background\":\"#fff\",\"padding-top\":\"10px\",\"z-index\":\"100\"}},[_c('el-breadcrumb',{staticStyle:{\"margin-bottom\":\"10px\"},attrs:{\"separator\":\"/\"}},[_c('el-breadcrumb-item',{attrs:{\"to\":{ path: '/' }}},[_vm._v(\"首页\")]),_c('el-breadcrumb-item',[_c('a',{attrs:{\"href\":\"JavaScript:;\"},on:{\"click\":_vm.goBack}},[_vm._v(\"上一页\")])])],1),_c('span',{staticStyle:{\"float\":\"left\",\"margin-right\":\"15px\"}},[_vm._v(\" \"+_vm._s(_vm.moreBook))])],1),_c('el-tabs',{attrs:{\"tab-position\":_vm.tabPosition},on:{\"tab-click\":_vm.handleClick},model:{value:(_vm.activeName),callback:function ($$v) {_vm.activeName=$$v},expression:\"activeName\"}},[_c('el-tab-pane',{attrs:{\"label\":\"全部\",\"name\":\"first\"}},[_c('h-card',{attrs:{\"moreAry\":_vm.moreAry,\"total\":_vm.moreCount},on:{\"changePage\":_vm.changePage}})],1),_vm._l((_vm.typeList),function(item,index){return _c('el-tab-pane',{key:index,attrs:{\"label\":item.title,\"name\":index + 1 + ''}},[_c('h-card',{attrs:{\"moreAry\":_vm.moreAry,\"total\":_vm.moreCount},on:{\"changePage\":_vm.changePage}})],1)})],2)],1),_c('footerC')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n\n \n \n \n \n 首页\n 上一页\n \n \n {{ moreBook }}\n \n\n \n \n \n \n \n \n \n \n \n \n \n\n \n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./more_list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./more_list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./more_list.vue?vue&type=template&id=74d754a1&scoped=true&\"\nimport script from \"./more_list.vue?vue&type=script&lang=js&\"\nexport * from \"./more_list.vue?vue&type=script&lang=js&\"\nimport style0 from \"./more_list.vue?vue&type=style&index=0&id=74d754a1&prod&scoped=true&lang=css&\"\nimport style1 from \"./more_list.vue?vue&type=style&index=1&id=74d754a1&prod&lang=css&\"\nimport style2 from \"./more_list.vue?vue&type=style&index=2&id=74d754a1&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74d754a1\",\n null\n \n)\n\nexport default component.exports","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./home_detail.vue?vue&type=style&index=0&id=7f89aad2&prod&scoped=true&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./more_list.vue?vue&type=style&index=0&id=74d754a1&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('heade',{attrs:{\"msg\":\"Welcome to Your Vue.js App\"}}),_c('div',{staticClass:\"common-height\"},[_c('div',{staticClass:\"box-width\"},[_c('el-breadcrumb',{staticStyle:{\"margin-bottom\":\"10px\"},attrs:{\"separator\":\"/\"}},[_c('el-breadcrumb-item',{attrs:{\"to\":{ path: '/' }}},[_vm._v(\"首页\")]),_c('el-breadcrumb-item',[_c('a',{attrs:{\"href\":\"JavaScript:;\"},on:{\"click\":_vm.goBack}},[_vm._v(\"上一页\")])])],1),_c('p',{staticStyle:{\"text-align\":\"left\",\"font-size\":\"20px\",\"font-weight\":\"bold\",\"margin-bottom\":\"20px\",\"width\":\"240px\"}},[_vm._v(\" \"+_vm._s(_vm.info.title)+\" \")]),_c('dl',{staticClass:\"dl\"},[_c('dd',[_c('img',{attrs:{\"src\":_vm.info.imgpath,\"width\":\"240px\"}})]),_c('dt',[_c('p',[_vm._v(\"作者:\"+_vm._s(_vm.info.author?_vm.info.author:'暂无'))]),_c('p',[_vm._v(\"出版社:\"+_vm._s(_vm.info.press))]),_c('p',[_vm._v(\"出品方:\"+_vm._s(_vm.info.producer))]),_c('p',[_vm._v(\"翻译: \"+_vm._s(_vm.info.translator))]),_c('p',[_vm._v(\"出版年: \"+_vm._s(_vm.info.time))]),_c('p',[_vm._v(\"页数: \"+_vm._s(_vm.info.pagecount))]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.redFun(_vm.info.seqid, _vm.info.title)}}},[_vm._v(\"去阅读\")])],1)])],1),_c('el-divider'),_c('div',{staticClass:\"box-width\"},[_c('p',{staticStyle:{\"text-align\":\"left\",\"font-size\":\"20px\",\"font-weight\":\"bold\",\"margin-bottom\":\"20px\"}},[_vm._v(\" 内容简介 \")]),_c('VueMarkdown',{staticClass:\"articalContent markdown-body\",attrs:{\"source\":_vm.info.content}})],1)],1),_c('footerC')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n 首页\n 上一页\n \n \n\n \n {{ info.title }}\n \n \n \n \n 作者:{{ info.author?info.author:'暂无' }}\n 出版社:{{ info.press }}\n 出品方:{{ info.producer }}\n \n 翻译: {{ info.translator }}\n \n 出版年: {{ info.time }}\n 页数: {{ info.pagecount }}\n 去阅读\n \n \n \n \n\n \n \n 内容简介\n \n \n \n \n \n \n \n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./home_detail.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./home_detail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./home_detail.vue?vue&type=template&id=7f89aad2&scoped=true&\"\nimport script from \"./home_detail.vue?vue&type=script&lang=js&\"\nexport * from \"./home_detail.vue?vue&type=script&lang=js&\"\nimport style0 from \"./home_detail.vue?vue&type=style&index=0&id=7f89aad2&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f89aad2\",\n null\n \n)\n\nexport default component.exports","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./temp.vue?vue&type=style&index=1&id=1203e2c0&prod&scoped=true&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./hCard.vue?vue&type=style&index=0&id=ceff81e8&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('el-row',{attrs:{\"gutter\":20}},[_c('el-col',{staticStyle:{\"box-shadow\":\"-2px -7px 7px 5px #ccc\",\"padding-right\":\"0px\",\"height\":\"100vh\",\"overflow\":\"auto\",\"position\":\"sticky\",\"top\":\"0\"},attrs:{\"span\":_vm.lefeSpan}},[_c('div',{staticClass:\"left\"},[_c('el-button',{staticStyle:{\"margin-right\":\"15px\",\"margin-top\":\"4px\",\"float\":\"left\"},attrs:{\"type\":\"success\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.backIndex}},[_c('i',{staticClass:\"el-icon-s-home\",staticStyle:{\"font-size\":\"16px\"}})]),_c('img',{staticClass:\"iphoneS\",staticStyle:{\"vertical-align\":\"middle\",\"margin-top\":\"9px\"},attrs:{\"src\":require(\"../images/logo (2).png\"),\"width\":\"80px\"}}),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":_vm.foldM ? '收缩目录' : '展开目录',\"placement\":\"top\"}},[_c('span',{staticStyle:{\"margin-right\":\"15px\",\"font-weight\":\"bold\",\"font-size\":\"23px\",\"float\":\"right\",\"margin-top\":\"5px\",\"color\":\"#002eb6\",\"cursor\":\"pointer\"},on:{\"click\":_vm.foldFuM}},[_c('i',{class:_vm.foldM ? 'el-icon-s-fold' : 'el-icon-s-unfold'})])])],1),_c('div',{staticStyle:{\"height\":\"90vh\",\"overflow\":\"auto\"}},[_c('el-tree',{attrs:{\"props\":_vm.props,\"load\":_vm.loadNode,\"lazy\":\"\",\"accordion\":\"\",\"icon\":\"el-icon-check\"},on:{\"node-click\":_vm.handleNodeClick},scopedSlots:_vm._u([{key:\"default\",fn:function({ node, data }){return _c('span',{staticClass:\"custom-tree-node\"},[_c('span',{staticStyle:{\"position\":\"relative\"}},[_c('i',{class:node.data.icon,staticStyle:{\"color\":\"#0bf96e\",\"position\":\"absolute\",\"left\":\"-27px\",\"top\":\"4px\"}}),_vm._v(_vm._s(node.label)+\" \")])])}}])})],1),_c('p',{staticStyle:{\"color\":\"#ccc\",\"height\":\"20px\",\"margin-bottom\":\"0\",\"position\":\"absolute\",\"bottom\":\"10px\",\"left\":\"10px\"}},[_vm._v(\" \"+_vm._s(_vm.joinnumber)+\" \")]),(_vm.data.length != 0 && _vm.v)?_c('el-button',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"10px\",\"right\":\"10px\"},attrs:{\"type\":\"primary\",\"plain\":\"\",\"icon\":\"el-icon-edit\",\"size\":\"mini\"},on:{\"click\":function($event){return _vm.bjFun('d')}}},[_vm._v(\"笔记\")]):_vm._e(),(_vm.data.length != 0 && !_vm.v)?_c('el-button',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"10px\",\"right\":\"10px\"},attrs:{\"type\":\"primary\",\"plain\":\"\",\"icon\":\"el-icon-close\"},on:{\"click\":function($event){return _vm.bjFun('g')}}},[_vm._v(\"笔记\")]):_vm._e()],1),_c('el-col',{staticStyle:{\"padding-left\":\"0\"},attrs:{\"span\":_vm.rightSpan}},[_c('div',{staticClass:\"right-top\"},[_c('span',[_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":\"dark\",\"content\":_vm.fold ? '展开电子书' : '收缩电子书',\"placement\":\"top\"}},[_c('span',{staticStyle:{\"margin-right\":\"15px\",\"font-weight\":\"bold\",\"font-size\":\"23px\",\"float\":\"left\",\"margin-top\":\"-3px\",\"color\":\"#fdffe5\",\"cursor\":\"pointer\"},on:{\"click\":_vm.foldFun}},[_c('i',{class:_vm.fold ? 'el-icon-s-fold' : 'el-icon-s-unfold'})])]),_c('span',{staticClass:\"iphoneS\"},[_vm._v(_vm._s(_vm.name))])],1),_c('span',[_vm._v(_vm._s(_vm.readB))]),_c('ul',{staticClass:\"box_ul\"},[_c('li',{style:(_vm.run_url == ''\n ? 'color:rgb(193 193 193) !important'\n : 'color:#fff'),on:{\"click\":function($event){return _vm.goFun(_vm.run_url)}}},[(_vm.run_url != '')?_c('svg',{staticClass:\"icon\",staticStyle:{\"margin-right\":\"5px\",\"margin-top\":\"4px\",\"float\":\"left\"},attrs:{\"t\":\"1688002916133\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"p-id\":\"1524\",\"width\":\"16\",\"height\":\"16\"}},[_c('path',{attrs:{\"d\":\"M64 128v768h896V128H64zM0 64h1024v896H0V64z\",\"fill\":\"#ffffff\",\"p-id\":\"1525\"}}),_c('path',{attrs:{\"d\":\"M64 256h896v64H64zM448 704H768V768H448zM290.2784 772.548267l162.269867-162.269867L290.2784 448l-45.2608 45.252267 117.0176 117.026133L245.0176 727.296z\",\"fill\":\"#ffffff\",\"p-id\":\"1526\"}})]):_c('svg',{staticClass:\"icon\",staticStyle:{\"margin-right\":\"5px\",\"margin-top\":\"4px\",\"float\":\"left\"},attrs:{\"t\":\"1699493253244\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"p-id\":\"4087\",\"width\":\"16\",\"height\":\"16\"}},[_c('path',{attrs:{\"d\":\"M917.333333 835.413333H106.666667V188.586667h810.666666zM186.666667 755.413333h650.666666V268.586667H186.666667z\",\"fill\":\"#bfbfbf\",\"p-id\":\"4088\"}}),_c('path',{attrs:{\"d\":\"M343.04 648.746667l-56.533333-56.533334 88.32-88.32-88.32-88.32 56.533333-56.746666 144.853333 145.066666-144.853333 144.853334zM507.093333 585.173333h230.4v80h-230.4z\",\"fill\":\"#bfbfbf\",\"p-id\":\"4089\"}})]),_vm._v(\" 云实验 \")]),_c('li',{style:(_vm.mooc_url == ''\n ? 'color:rgb(193 193 193) !important'\n : 'color:#fff'),on:{\"click\":function($event){return _vm.goFun(_vm.mooc_url)}}},[_c('i',{staticClass:\"el-icon-view ii\"}),_vm._v(\"视频 \")]),_c('li',{style:(_vm.read_url == ''\n ? 'color:rgb(193 193 193) !important'\n : 'color:#fff'),on:{\"click\":function($event){return _vm.goFun(_vm.read_url)}}},[_c('i',{staticClass:\"el-icon-monitor ii\"}),_vm._v(\"课件 \")]),(\n _vm.course_url != '' ||\n (_vm.course_url == '' && _vm.course_list.length == 0)\n )?_c('li',{style:(_vm.course_url == ''\n ? 'color:rgb(193 193 193) !important'\n : 'color:#fff'),on:{\"click\":function($event){return _vm.goFun(_vm.course_url)}}},[_c('i',{staticClass:\"el-icon-reading ii\"}),_c('span',{staticClass:\"el-dropdown-link\",style:(_vm.course_url == ''\n ? 'color:rgb(193 193 193) !important'\n : 'color:#fff')},[_vm._v(\" 作业 \")])]):_c('li',[_c('i',{staticClass:\"el-icon-reading ii\",staticStyle:{\"float\":\"left\",\"margin-top\":\"2px\"}}),_c('el-dropdown',{on:{\"command\":_vm.handleCommand}},[_c('span',{staticClass:\"el-dropdown-link\",style:(_vm.course_list.length == 0\n ? 'color:rgb(193 193 193) !important'\n : 'color:#fff')},[_vm._v(\" 作业\"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},_vm._l((_vm.course_list),function(item,index){return _c('el-dropdown-item',{key:index,attrs:{\"command\":item.value}},[_c('p',[_vm._v(_vm._s(item.title))])])}),1)],1)],1),_c('li',{style:(_vm.github_url == ''\n ? 'color:rgb(193 193 193) !important;line-height:24px;'\n : 'color:#fff;line-height:24px;'),on:{\"click\":function($event){return _vm.goFun(_vm.github_url)}}},[(_vm.github_url != '')?_c('svg',{staticClass:\"icon\",staticStyle:{\"margin-right\":\"5px\",\"margin-top\":\"4px\",\"float\":\"left\"},attrs:{\"t\":\"1690185771765\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"p-id\":\"2280\",\"width\":\"16\",\"height\":\"16\"}},[_c('path',{attrs:{\"d\":\"M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9 23.5 23.2 38.1 55.4 38.1 91v112.5c0.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z\",\"p-id\":\"2281\",\"fill\":\"#ffffff\"}})]):_c('svg',{staticClass:\"icon\",staticStyle:{\"margin-right\":\"5px\",\"margin-top\":\"4px\",\"float\":\"left\"},attrs:{\"t\":\"1699493383368\",\"viewBox\":\"0 0 1024 1024\",\"version\":\"1.1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"p-id\":\"5268\",\"width\":\"16\",\"height\":\"16\"}},[_c('path',{attrs:{\"d\":\"M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9 23.5 23.2 38.1 55.4 38.1 91v112.5c0.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z\",\"p-id\":\"5269\",\"fill\":\"#bfbfbf\"}})]),_vm._v(\" GitHub \")]),_c('li',[_c('el-popover',{attrs:{\"placement\":\"top-start\",\"title\":\"分享\",\"width\":\"350\",\"trigger\":\"hover\"}},[_c('div',[_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(\"【 方式一 】\")]),_c('el-button',{attrs:{\"type\":\"success\",\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.copy}},[_vm._v(\"复制链接\")])],1),_c('el-divider'),_c('div',{staticClass:\"flex-box\"},[_c('span',{staticStyle:{\"font-weight\":\"bold\",\"float\":\"left\"}},[_vm._v(\"【 方式二 】\")]),_c('div',{ref:\"qrCodeUrl\",staticClass:\"qr-code\",staticStyle:{\"display\":\"inline-block\"}})]),_c('el-button',{staticClass:\"el-icon-share ii\",attrs:{\"slot\":\"reference\",\"type\":\"primary\",\"plain\":\"\"},slot:\"reference\"},[_vm._v(\"分享\")])],1)],1)])]),_c('div',{attrs:{\"id\":\"iframe\"}},[(_vm.curiFrame)?_c('iframe',{staticStyle:{\"width\":\"100%\",\"overflow\":\"auto\",\"height\":\"calc(100vh - 58px)\",\"box-sizing\":\"border-box\"},attrs:{\"id\":\"p\",\"src\":_vm.iframeSrc}}):_c('Viewer',{staticStyle:{\"padding\":\"20px\",\"text-align\":\"left\"},attrs:{\"value\":_vm.iframeSrc,\"plugins\":_vm.plugins}})],1),(_vm.data.length != 0)?_c('div',{staticStyle:{\"margin-top\":\"30px\",\"text-align\":\"left\",\"padding\":\"10px\"}},[_c('el-divider',{attrs:{\"content-position\":\"left\"}},[_c('h2',{staticStyle:{\"color\":\"#0983b4\"}},[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"发表、查看笔记 \")])]),_c('div',{staticStyle:{\"padding\":\"10px\"}},[_c('el-input',{attrs:{\"type\":\"textarea\",\"placeholder\":\"请输入内容\",\"maxlength\":\"100\",\"show-word-limit\":\"\"},model:{value:(_vm.textarea),callback:function ($$v) {_vm.textarea=$$v},expression:\"textarea\"}}),_c('el-button',{staticStyle:{\"margin-top\":\"10px\"},attrs:{\"type\":\"success\",\"size\":\"mini\"},on:{\"click\":_vm.bjFunList}},[_vm._v(\"发表提交\")])],1),_c('ul',{staticClass:\"ul-box\"},_vm._l((_vm.bjAry),function(item,index){return _c('li',{key:index},[_c('h4',[_vm._v(\" 用户:\"+_vm._s(item.name)+\" \"),_c('time',{staticStyle:{\"color\":\"#ccc\",\"margin-left\":\"50px\"}},[_vm._v(_vm._s(item._sys_creattime)+\" \")])]),_c('p',{staticStyle:{\"color\":\"rgb(133 129 129)\",\"font-size\":\"14px\",\"margin-top\":\"9px\"}},[_vm._v(\" \"+_vm._s(item.comment)+\" \")]),_c('el-divider')],1)}),0)],1):_vm._e()])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {Array} */\n let parameters\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n remove = remove > 0 ? remove : 0\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove)\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {Array} items\n * Items to add to `list`.\n * @returns {Array}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record} */\n const left = maybe || (all[hook] = {})\n /** @type {Record | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array} existing\n * @param {Array} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nexport const unicodePunctuationRegex =\n /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/)\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiControl,\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n}\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n}\nconst path = {\n tokenize: tokenizePath,\n partial: true\n}\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n}\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n}\nconst wwwAutolink = {\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n}\nconst protocolAutolink = {\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n}\nconst emailAutolink = {\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n}\n\n/** @type {ConstructRecord} */\nconst text = {}\n\n// To do: next major: expose functions that yields extension.\n\n/**\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n *\n * @type {Extension}\n */\nexport const gfmAutolinkLiteral = {\n text\n}\n\n/** @type {Code} */\nlet code = 48\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink\n code++\n if (code === 58) code = 65\n else if (code === 91) code = 97\n}\ntext[43] = emailAutolink\ntext[45] = emailAutolink\ntext[46] = emailAutolink\ntext[95] = emailAutolink\ntext[72] = [emailAutolink, protocolAutolink]\ntext[104] = [emailAutolink, protocolAutolink]\ntext[87] = [emailAutolink, wwwAutolink]\ntext[119] = [emailAutolink, wwwAutolink]\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this\n /** @type {boolean | undefined} */\n let dot\n /** @type {boolean} */\n let data\n return start\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (\n !gfmAtext(code) ||\n !previousEmail.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkEmail')\n return atext(code)\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code)\n return atext\n }\n if (code === 64) {\n effects.consume(code)\n return emailDomain\n }\n return nok(code)\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: \n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(\n emailDomainDotTrail,\n emailDomainAfter,\n emailDomainDot\n )(code)\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true\n effects.consume(code)\n return emailDomain\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we’d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn’t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code)\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code)\n dot = true\n return emailDomain\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: .\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail')\n effects.exit('literalAutolink')\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this\n return wwwStart\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (\n (code !== 87 && code !== 119) ||\n !previousWww.call(self, self.previous) ||\n previousUnbalanced(self.events)\n ) {\n return nok(code)\n }\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkWww')\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(\n wwwPrefix,\n effects.attempt(domain, effects.attempt(path, wwwAfter), nok),\n nok\n )(code)\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this\n let buffer = ''\n let seen = false\n return protocolStart\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if (\n (code === 72 || code === 104) &&\n previousProtocol.call(self, self.previous) &&\n !previousUnbalanced(self.events)\n ) {\n effects.enter('literalAutolink')\n effects.enter('literalAutolinkHttp')\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n return nok(code)\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code)\n effects.consume(code)\n return protocolPrefixInside\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase()\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code)\n return protocolSlashesInside\n }\n }\n return nok(code)\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code)\n if (seen) {\n return afterProtocol\n }\n seen = true\n return protocolSlashesInside\n }\n return nok(code)\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null ||\n asciiControl(code) ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)\n ? nok(code)\n : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code)\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp')\n effects.exit('literalAutolink')\n return ok(code)\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0\n return wwwPrefixInside\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++\n effects.consume(code)\n return wwwPrefixInside\n }\n if (code === 46 && size === 3) {\n effects.consume(code)\n return wwwPrefixAfter\n }\n return nok(code)\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code)\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment\n /** @type {boolean | undefined} */\n let seen\n return domainInside\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code)\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n // so that’s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n // Source: .\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code) ||\n (code !== 45 && unicodePunctuation(code))\n ) {\n return domainAfter(code)\n }\n seen = true\n effects.consume(code)\n return domainInside\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true\n }\n // Otherwise, it’s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment\n underscoreInLastSegment = undefined\n }\n effects.consume(code)\n return domainInside\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that’s GH says a dot is needed, but it’s not true:\n // \n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code)\n }\n return ok(code)\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0\n let sizeClose = 0\n return pathInside\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++\n effects.consume(code)\n return pathInside\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don’t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code)\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (\n code === 33 ||\n code === 34 ||\n code === 38 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 60 ||\n code === 63 ||\n code === 93 ||\n code === 95 ||\n code === 126\n ) {\n return effects.check(trail, ok, pathAtPunctuation)(code)\n }\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n effects.consume(code)\n return pathInside\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++\n }\n effects.consume(code)\n return pathInside\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (\n code === 33 ||\n code === 34 ||\n code === 39 ||\n code === 41 ||\n code === 42 ||\n code === 44 ||\n code === 46 ||\n code === 58 ||\n code === 59 ||\n code === 63 ||\n code === 95 ||\n code === 126\n ) {\n effects.consume(code)\n return trail\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code)\n return trailCharRefStart\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // .\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code)\n return trailBracketAfter\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In trail, after `]`.\n *\n * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (\n code === null ||\n code === 40 ||\n code === 91 ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return ok(code)\n }\n return trail(code)\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefStart(code) {\n // When non-alpha, it’s not a trail.\n return asciiAlpha(code) ? trailCharRefInside(code) : nok(code)\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharRefInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code)\n return trail\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return trailCharRefInside\n }\n\n // It’s not a trail.\n return nok(code)\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code)\n return after\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code)\n }\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n return (\n code === null ||\n code === 40 ||\n code === 42 ||\n code === 95 ||\n code === 91 ||\n code === 93 ||\n code === 126 ||\n markdownLineEndingOrSpace(code)\n )\n}\n\n/**\n * See:\n * .\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code)\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash “inside” atext.\n // The reference code is a bit weird, but that’s what it results in.\n // Source: .\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code))\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return (\n code === 43 ||\n code === 45 ||\n code === 46 ||\n code === 95 ||\n asciiAlphanumeric(code)\n )\n}\n\n/**\n * @param {Array} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length\n let result = false\n while (index--) {\n const token = events[index][1]\n if (\n (token.type === 'labelLink' || token.type === 'labelImage') &&\n !token._balanced\n ) {\n result = true\n break\n }\n\n // If we’ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false\n break\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as “walked into” w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n }\n return result\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownSpace} from 'micromark-util-character'\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n return ok(code)\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n effects.exit(type)\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code)\n ? factorySpace(effects, after, 'linePrefix')(code)\n : after(code)\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return (\n value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ')\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {blankLine} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n }\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {Token} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1]\n if (token.type === 'labelImage') {\n labelStart = token\n break\n }\n\n // Exit if we’ve walked far enough.\n if (\n token.type === 'gfmFootnoteCall' ||\n token.type === 'labelLink' ||\n token.type === 'label' ||\n token.type === 'image' ||\n token.type === 'link'\n ) {\n break\n }\n }\n return start\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code)\n }\n const id = normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return ok(code)\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length\n /** @type {Token | undefined} */\n let labelStart\n\n // Find an opening.\n while (index--) {\n if (\n events[index][1].type === 'labelImage' &&\n events[index][0] === 'enter'\n ) {\n labelStart = events[index][1]\n break\n }\n }\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = 'data'\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n // The whole (without `!`):\n /** @type {Token} */\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n // The `^` marker\n /** @type {Token} */\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n }\n // Increment the end 1 character.\n marker.end.column++\n marker.end.offset++\n marker.end._bufferIndex++\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n }\n /** @type {Token} */\n const chunk = {\n type: 'chunkString',\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n }\n\n /** @type {Array} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1],\n events[index + 2],\n ['enter', call, context],\n // The `[`\n events[index + 3],\n events[index + 4],\n // The `^`.\n ['enter', marker, context],\n ['exit', marker, context],\n // Everything in between.\n ['enter', string, context],\n ['enter', chunk, context],\n ['exit', chunk, context],\n ['exit', string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2],\n events[events.length - 1],\n ['exit', call, context]\n ]\n events.splice(index, events.length - index + 1, ...replacement)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n let size = 0\n /** @type {boolean} */\n let data\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteCall')\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n return callStart\n }\n\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callStart(code) {\n if (code !== 94) return nok(code)\n effects.enter('gfmFootnoteCallMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallMarker')\n effects.enter('gfmFootnoteCallString')\n effects.enter('chunkString').contentType = 'string'\n return callData\n }\n\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteCallString')\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code)\n }\n effects.enter('gfmFootnoteCallLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteCallLabelMarker')\n effects.exit('gfmFootnoteCall')\n return ok\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? callEscape : callData\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\n *\n * @type {State}\n */\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return callData\n }\n return callData(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this\n /** @type {Array} */\n // @ts-expect-error It’s fine!\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n /** @type {string} */\n let identifier\n let size = 0\n /** @type {boolean | undefined} */\n let data\n return start\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true\n effects.enter('gfmFootnoteDefinitionLabel')\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n return labelAtMarker\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionMarker')\n effects.enter('gfmFootnoteDefinitionLabelString')\n effects.enter('chunkString').contentType = 'string'\n return labelInside\n }\n return nok(code)\n }\n\n /**\n * In label.\n *\n * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n (code === 93 && !data) ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null ||\n code === 91 ||\n markdownLineEndingOrSpace(code)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit('chunkString')\n const token = effects.exit('gfmFootnoteDefinitionLabelString')\n identifier = normalizeIdentifier(self.sliceSerialize(token))\n effects.enter('gfmFootnoteDefinitionLabelMarker')\n effects.consume(code)\n effects.exit('gfmFootnoteDefinitionLabelMarker')\n effects.exit('gfmFootnoteDefinitionLabel')\n return labelAfter\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true\n }\n size++\n effects.consume(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > \n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n if (!defined.includes(identifier)) {\n defined.push(identifier)\n }\n\n // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n return factorySpace(\n effects,\n whitespaceAfter,\n 'gfmFootnoteDefinitionWhitespace'\n )\n }\n return nok(code)\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition')\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'gfmFootnoteDefinitionIndent',\n 4 + 1\n )\n\n /**\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === 4\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean} [singleTilde=true]\n * Whether to support strikethrough with a single tilde.\n *\n * Single tildes work on github.com, but are technically prohibited by the\n * GFM spec.\n */\n\nimport {splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {}\n let single = options_.singleTilde\n const tokenizer = {\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n }\n if (single === null || single === undefined) {\n single = true\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n }\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'strikethroughSequenceTemporary' &&\n events[index][1]._close\n ) {\n let open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'strikethroughSequenceTemporary' &&\n events[open][1]._open &&\n // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset ===\n events[open][1].end.offset - events[open][1].start.offset\n ) {\n events[index][1].type = 'strikethroughSequence'\n events[open][1].type = 'strikethroughSequence'\n\n /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n }\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n\n // Opening.\n /** @type {Array} */\n const nextEvents = [\n ['enter', strikethrough, context],\n ['enter', events[open][1], context],\n ['exit', events[open][1], context],\n ['enter', text, context]\n ]\n const insideSpan = context.parser.constructs.insideSpan.null\n if (insideSpan) {\n // Between.\n splice(\n nextEvents,\n nextEvents.length,\n 0,\n resolveAll(insideSpan, events.slice(open + 1, index), context)\n )\n }\n\n // Closing.\n splice(nextEvents, nextEvents.length, 0, [\n ['exit', text, context],\n ['enter', events[index][1], context],\n ['exit', events[index][1], context],\n ['exit', strikethrough, context]\n ])\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - 2\n break\n }\n }\n }\n }\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = 'data'\n }\n }\n return events\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous\n const events = this.events\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (\n previous === 126 &&\n events[events.length - 1][1].type !== 'characterEscape'\n ) {\n return nok(code)\n }\n effects.enter('strikethroughSequenceTemporary')\n return more(code)\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous)\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code)\n effects.consume(code)\n size++\n return more\n }\n if (size < 2 && !single) return nok(code)\n const token = effects.exit('strikethroughSequenceTemporary')\n const after = classifyCharacter(code)\n token._open = !after || (after === 2 && Boolean(before))\n token._close = !before || (before === 2 && Boolean(after))\n return ok(code)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array}\n */\n this.map = []\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array} add\n * @returns {void}\n */\n add(index, remove, add) {\n addImpl(this, index, remove, add)\n }\n\n // To do: not used here.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array} add\n // * @returns {void}\n // */\n // addBefore(index, remove, add) {\n // addImpl(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array} events\n * @returns {void}\n */\n consume(events) {\n this.map.sort((a, b) => a[0] - b[0])\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length\n /** @type {Array>} */\n const vecs = []\n while (index > 0) {\n index -= 1\n vecs.push(events.slice(this.map[index][0] + this.map[index][1]))\n // eslint-disable-next-line unicorn/no-array-push-push\n vecs.push(this.map[index][2])\n\n // Truncate rest.\n events.length = this.map[index][0]\n }\n vecs.push([...events])\n events.length = 0\n let slice = vecs.pop()\n while (slice) {\n events.push(...slice)\n slice = vecs.pop()\n }\n\n // Truncate everything.\n this.map.length = 0\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array} add\n * @returns {void}\n */\nfunction addImpl(editMap, at, remove, add) {\n let index = 0\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove\n\n // To do: before not used.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add)\n // }\n\n return\n }\n index += 1\n }\n editMap.map.push([at, remove, add])\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array} events\n// * @param {Array} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// console.log('to do: links?', add, rmCurr)\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef {'left' | 'center' | 'right' | 'none'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Array} events\n * @param {number} index\n * @returns {Array}\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false\n /** @type {Array} */\n const align = []\n while (index < events.length) {\n const event = events[index]\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(\n events[index + 1][1].type === 'tableDelimiterMarker'\n ? 'left'\n : 'none'\n )\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right'\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true\n }\n index += 1\n }\n return align\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {EditMap} from './edit-map.js'\nimport {gfmTableAlign} from './infer.js'\n\n// To do: next major: expose functions.\n\n/**\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n *\n * @type {Extension}\n */\nexport const gfmTable = {\n flow: {\n null: {\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this\n let size = 0\n let sizeB = 0\n /** @type {boolean | undefined} */\n let seen\n return start\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1\n while (index > -1) {\n const type = self.events[index][1].type\n if (\n type === 'lineEnding' ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === 'linePrefix'\n )\n index--\n else break\n }\n const tail = index > -1 ? self.events[index][1].type : null\n const next =\n tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore\n\n // Don’t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n return next(code)\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead')\n effects.enter('tableRow')\n return headRowStart(code)\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code)\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true\n // Count the first character, that isn’t a pipe, double.\n sizeB += 1\n return headRowBreak(code)\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n if (sizeB > 1) {\n sizeB = 0\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true\n effects.exit('tableRow')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return headDelimiterStart\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, 'whitespace')(code)\n }\n sizeB += 1\n if (seen) {\n seen = false\n // Header cell count.\n size += 1\n }\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n // Whether a delimiter was seen.\n seen = true\n return headRowBreak\n }\n\n // Anything else is cell data.\n effects.enter('data')\n return headRowData(code)\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return headRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? headRowEscape : headRowData\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return headRowData\n }\n return headRowData(code)\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n effects.enter('tableDelimiterRow')\n // Track if we’ve seen a `:` or `|`.\n seen = false\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n headDelimiterBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return headDelimiterBefore(code)\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code)\n }\n if (code === 124) {\n seen = true\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return headDelimiterCellBefore\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code)\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, 'whitespace')(code)\n }\n return headDelimiterValueBefore(code)\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1\n seen = true\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterLeftAlignmentAfter\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1\n // To do: seems weird that this *isn’t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code)\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller')\n return headDelimiterFiller(code)\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code)\n return headDelimiterFiller\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true\n effects.exit('tableDelimiterFiller')\n effects.enter('tableDelimiterMarker')\n effects.consume(code)\n effects.exit('tableDelimiterMarker')\n return headDelimiterRightAlignmentAfter\n }\n effects.exit('tableDelimiterFiller')\n return headDelimiterRightAlignmentAfter(code)\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, 'whitespace')(code)\n }\n return headDelimiterCellAfter(code)\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code)\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it’s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code)\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow')\n effects.exit('tableHead')\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code)\n }\n return headDelimiterNok(code)\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n return nok(code)\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we’re here, we’re\n // never at whitespace.\n effects.enter('tableRow')\n return bodyRowBreak(code)\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider')\n effects.consume(code)\n effects.exit('tableCellDivider')\n return bodyRowBreak\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow')\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, 'whitespace')(code)\n }\n\n // Anything else is cell content.\n effects.enter('data')\n return bodyRowData(code)\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit('data')\n return bodyRowBreak(code)\n }\n effects.consume(code)\n return code === 92 ? bodyRowEscape : bodyRowData\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code)\n return bodyRowData\n }\n return bodyRowData(code)\n }\n}\n\n/** @type {Resolver} */\n// eslint-disable-next-line complexity\nfunction resolveTable(events, context) {\n let index = -1\n let inFirstCellAwaitingPipe = true\n /** @type {RowKind} */\n let rowKind = 0\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0]\n /** @type {Range} */\n let cell = [0, 0, 0, 0]\n let afterHeadAwaitingFirstBodyRow = false\n let lastTableEnd = 0\n /** @type {Token | undefined} */\n let currentTable\n /** @type {Token | undefined} */\n let currentBody\n /** @type {Token | undefined} */\n let currentCell\n const map = new EditMap()\n while (++index < events.length) {\n const event = events[index]\n const token = event[1]\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n currentBody = undefined\n lastTableEnd = 0\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentTable, context]])\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n inFirstCellAwaitingPipe = true\n currentCell = undefined\n lastCell = [0, 0, 0, 0]\n cell = [0, index + 1, 0, 0]\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n }\n map.add(index, 0, [['enter', currentBody, context]])\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1\n }\n // Cell data.\n else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n inFirstCellAwaitingPipe = false\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n lastCell = [0, 0, 0, 0]\n }\n cell[2] = index\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n undefined,\n currentCell\n )\n }\n lastCell = cell\n cell = [lastCell[1], index, 0, 0]\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true\n lastTableEnd = index\n } else if (\n token.type === 'tableRow' ||\n token.type === 'tableDelimiterRow'\n ) {\n lastTableEnd = index\n if (lastCell[1] !== 0) {\n cell[0] = cell[1]\n currentCell = flushCell(\n map,\n context,\n lastCell,\n rowKind,\n index,\n currentCell\n )\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell)\n }\n rowKind = 0\n } else if (\n rowKind &&\n (token.type === 'data' ||\n token.type === 'tableDelimiterMarker' ||\n token.type === 'tableDelimiterFiller')\n ) {\n cell[3] = index\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n }\n map.consume(context.events)\n\n // To do: move this into `html`, when events are exposed there.\n // That’s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1\n while (++index < context.events.length) {\n const event = context.events[index]\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index)\n }\n }\n return events\n}\n\n/// Generate a cell.\n/**\n *\n * @param {EditMap} map\n * @param {TokenizeContext} context\n * @param {Range} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName =\n rowKind === 1\n ? 'tableHeader'\n : rowKind === 2\n ? 'tableDelimiter'\n : 'tableData'\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent'\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]))\n map.add(range[0], 0, [['exit', previousCell, context]])\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1])\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n }\n map.add(range[1], 0, [['enter', previousCell, context]])\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2])\n const relatedEnd = getPoint(context.events, range[3])\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n }\n map.add(range[2], 0, [['enter', valueToken, context]])\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]]\n const end = context.events[range[3]]\n start[1].end = Object.assign({}, end[1].end)\n start[1].type = 'chunkText'\n start[1].contentType = 'text'\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1\n const b = range[3] - range[2] - 1\n map.add(a, b, [])\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]])\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two “between” parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd))\n map.add(rowEnd, 0, [['exit', previousCell, context]])\n previousCell = undefined\n }\n return previousCell\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {EditMap} map\n * @param {TokenizeContext} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array} */\n const exits = []\n const related = getPoint(context.events, index)\n if (tableBody) {\n tableBody.end = Object.assign({}, related)\n exits.push(['exit', tableBody, context])\n }\n table.end = Object.assign({}, related)\n exits.push(['exit', table, context])\n map.add(index + 1, 0, exits)\n}\n\n/**\n * @param {Array} events\n * @param {number} index\n * @returns {readonly Point}\n */\nfunction getPoint(events, index) {\n const event = events[index]\n const side = event[0] === 'enter' ? 'start' : 'end'\n return event[1][side]\n}\n","/**\n * @typedef {import('micromark-util-types').CompileContext} CompileContext\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n// An opening or closing tag start, followed by a case-insensitive specific tag name,\n// followed by HTML whitespace, a greater than, or a slash.\nconst reFlow =\n /<(\\/?)(iframe|noembed|noframes|plaintext|script|style|title|textarea|xmp)(?=[\\t\\n\\f\\r />])/gi\n\n// As HTML (text) parses tags separately (and very strictly), we don’t need to be\n// global.\nconst reText = new RegExp('^' + reFlow.source, 'i')\n\n/**\n * Extension for `micromark` that can be passed in `htmlExtensions`, to\n * support GitHub’s weird and useless tagfilter when serializing to HTML.\n *\n * @type {HtmlExtension}\n */\nexport const gfmTagfilterHtml = {\n exit: {\n htmlFlowData(token) {\n exitHtmlData.call(this, token, reFlow)\n },\n htmlTextData(token) {\n exitHtmlData.call(this, token, reText)\n }\n }\n}\n\n/**\n * @this {CompileContext}\n * @param {Token} token\n * @param {RegExp} filter\n */\nfunction exitHtmlData(token, filter) {\n let value = this.sliceSerialize(token)\n\n if (this.options.allowDangerousHtml) {\n value = value.replace(filter, '<$1$2')\n }\n\n this.raw(this.encode(value))\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEndingOrSpace,\n markdownLineEnding,\n markdownSpace\n} from 'micromark-util-character'\nconst tasklistCheck = {\n tokenize: tokenizeTasklistCheck\n}\n\n// To do: next major: expose function to make extension.\n\n/**\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM task list items syntax.\n *\n * @type {Extension}\n */\nexport const gfmTaskListItem = {\n text: {\n [91]: tasklistCheck\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this\n return open\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there’s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem\n ) {\n return nok(code)\n }\n effects.enter('taskListCheck')\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n return inside\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked')\n effects.consume(code)\n effects.exit('taskListCheckValueUnchecked')\n return close\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked')\n effects.consume(code)\n effects.exit('taskListCheckValueChecked')\n return close\n }\n return nok(code)\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker')\n effects.consume(code)\n effects.exit('taskListCheckMarker')\n effects.exit('taskListCheck')\n return after\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code)\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check(\n {\n tokenize: spaceThenNonSpace\n },\n ok,\n nok\n )(code)\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, 'whitespace')\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there’s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral,\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable,\n gfmTaskListItem\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration.\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml,\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml,\n gfmTableHtml,\n gfmTagfilterHtml,\n gfmTaskListItemHtml\n ])\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial | TestFunctionPredicate | Array | TestFunctionPredicate>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n /**\n * @type {(\n * (() => false) &\n * ((node: unknown, test: PredicateTest, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * ((node: unknown, test: PredicateTest, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n /**\n * @type {(\n * ((test: PredicateTest) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n )\n }\n}\n\nfunction ok() {\n return true\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n return d\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor, Check>, Extract, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n /** @type {Record} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {}\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Text} Text\n * @typedef {import('unist-util-visit-parents').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Content | Root} Node\n * @typedef {Extract} Parent\n * @typedef {Exclude} ContentParent\n *\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[Root, ...Array, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) — whole match\n * * `...capture` (`Array`) — matches from regex capture groups\n * * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array | PhrasingContent | string | false | undefined | null}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * …or when `false`, do not replace at all\n * * …or when `string`, replace with a text node of that value\n * * …or when `Node` or `Array`, replace with those nodes\n *\n * @typedef {string | RegExp} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array} FindAndReplaceList\n * Several find and replaces, in array form.\n * @typedef {Record} FindAndReplaceSchema\n * Several find and replaces, in object form.\n * @typedef {[Find, Replace]} FindAndReplaceTuple\n * Find and replace in tuple form.\n * @typedef {string | ReplaceFunction} Replace\n * Thing to replace with.\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n * @typedef {Array} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore.\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param tree\n * Tree to change.\n * @param find\n * Patterns to find.\n * @param replace\n * Things to replace with (when `find` is `Find`) or configuration.\n * @param options\n * Configuration (when `find` is not `Find`).\n * @returns\n * Given, modified, tree.\n */\n// To do: next major: remove `find` & `replace` combo, remove schema.\nexport const findAndReplace =\n /**\n * @type {(\n * ((tree: Tree, find: Find, replace?: Replace | null | undefined, options?: Options | null | undefined) => Tree) &\n * ((tree: Tree, schema: FindAndReplaceSchema | FindAndReplaceList, options?: Options | null | undefined) => Tree)\n * )}\n **/\n (\n /**\n * @template {Node} Tree\n * @param {Tree} tree\n * @param {Find | FindAndReplaceSchema | FindAndReplaceList} find\n * @param {Replace | Options | null | undefined} [replace]\n * @param {Options | null | undefined} [options]\n * @returns {Tree}\n */\n function (tree, find, replace, options) {\n /** @type {Options | null | undefined} */\n let settings\n /** @type {FindAndReplaceSchema|FindAndReplaceList} */\n let schema\n\n if (typeof find === 'string' || find instanceof RegExp) {\n // @ts-expect-error don’t expect options twice.\n schema = [[find, replace]]\n settings = options\n } else {\n schema = find\n // @ts-expect-error don’t expect replace twice.\n settings = replace\n }\n\n if (!settings) {\n settings = {}\n }\n\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(schema)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n // To do next major: don’t return the given tree.\n return tree\n\n /** @type {import('unist-util-visit-parents/complex-types.js').BuildVisitor} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parent | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n\n if (\n ignored(\n parent,\n // @ts-expect-error: TS doesn’t understand but it’s perfect.\n grandparent ? grandparent.children.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n // @ts-expect-error: TS is wrong, some of these children can be text.\n const index = parent.children.indexOf(node)\n let change = false\n /** @type {Array} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n // @ts-expect-error: stack is fine.\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn’t a match after all.\n if (value !== false) {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n }\n )\n\n/**\n * Turn a schema into pairs.\n *\n * @param {FindAndReplaceSchema | FindAndReplaceList} schema\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(schema) {\n /** @type {Pairs} */\n const result = []\n\n if (typeof schema !== 'object') {\n throw new TypeError('Expected array or object as schema')\n }\n\n if (Array.isArray(schema)) {\n let index = -1\n\n while (++index < schema.length) {\n result.push([\n toExpression(schema[index][0]),\n toFunction(schema[index][1])\n ])\n }\n } else {\n /** @type {string} */\n let key\n\n for (key in schema) {\n if (own.call(schema, key)) {\n result.push([toExpression(key), toFunction(schema[key])])\n }\n }\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function' ? replace : () => replace\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n */\n\nimport {ccount} from 'ccount'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n// To do: next major: expose functions instead of extensions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM autolink literals.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmAutolinkLiteralFromMarkdown = {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmAutolinkLiteralToMarkdown = {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {character: ':', before: '[ps]', after: '\\\\/', inConstruct, notInConstruct}\n ]\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = /** @type {Link} */ (this.stack[this.stack.length - 1])\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Link | Array | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {Link} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n (!email || code !== 47)\n )\n}\n","/**\n * Map of named character references.\n *\n * @type {Record}\n */\nexport const characterEntities = {\n AElig: 'Æ',\n AMP: '&',\n Aacute: 'Á',\n Abreve: 'Ă',\n Acirc: 'Â',\n Acy: 'А',\n Afr: '𝔄',\n Agrave: 'À',\n Alpha: 'Α',\n Amacr: 'Ā',\n And: '⩓',\n Aogon: 'Ą',\n Aopf: '𝔸',\n ApplyFunction: '',\n Aring: 'Å',\n Ascr: '𝒜',\n Assign: '≔',\n Atilde: 'Ã',\n Auml: 'Ä',\n Backslash: '∖',\n Barv: '⫧',\n Barwed: '⌆',\n Bcy: 'Б',\n Because: '∵',\n Bernoullis: 'ℬ',\n Beta: 'Β',\n Bfr: '𝔅',\n Bopf: '𝔹',\n Breve: '˘',\n Bscr: 'ℬ',\n Bumpeq: '≎',\n CHcy: 'Ч',\n COPY: '©',\n Cacute: 'Ć',\n Cap: '⋒',\n CapitalDifferentialD: 'ⅅ',\n Cayleys: 'ℭ',\n Ccaron: 'Č',\n Ccedil: 'Ç',\n Ccirc: 'Ĉ',\n Cconint: '∰',\n Cdot: 'Ċ',\n Cedilla: '¸',\n CenterDot: '·',\n Cfr: 'ℭ',\n Chi: 'Χ',\n CircleDot: '⊙',\n CircleMinus: '⊖',\n CirclePlus: '⊕',\n CircleTimes: '⊗',\n ClockwiseContourIntegral: '∲',\n CloseCurlyDoubleQuote: '”',\n CloseCurlyQuote: '’',\n Colon: '∷',\n Colone: '⩴',\n Congruent: '≡',\n Conint: '∯',\n ContourIntegral: '∮',\n Copf: 'ℂ',\n Coproduct: '∐',\n CounterClockwiseContourIntegral: '∳',\n Cross: '⨯',\n Cscr: '𝒞',\n Cup: '⋓',\n CupCap: '≍',\n DD: 'ⅅ',\n DDotrahd: '⤑',\n DJcy: 'Ђ',\n DScy: 'Ѕ',\n DZcy: 'Џ',\n Dagger: '‡',\n Darr: '↡',\n Dashv: '⫤',\n Dcaron: 'Ď',\n Dcy: 'Д',\n Del: '∇',\n Delta: 'Δ',\n Dfr: '𝔇',\n DiacriticalAcute: '´',\n DiacriticalDot: '˙',\n DiacriticalDoubleAcute: '˝',\n DiacriticalGrave: '`',\n DiacriticalTilde: '˜',\n Diamond: '⋄',\n DifferentialD: 'ⅆ',\n Dopf: '𝔻',\n Dot: '¨',\n DotDot: '⃜',\n DotEqual: '≐',\n DoubleContourIntegral: '∯',\n DoubleDot: '¨',\n DoubleDownArrow: '⇓',\n DoubleLeftArrow: '⇐',\n DoubleLeftRightArrow: '⇔',\n DoubleLeftTee: '⫤',\n DoubleLongLeftArrow: '⟸',\n DoubleLongLeftRightArrow: '⟺',\n DoubleLongRightArrow: '⟹',\n DoubleRightArrow: '⇒',\n DoubleRightTee: '⊨',\n DoubleUpArrow: '⇑',\n DoubleUpDownArrow: '⇕',\n DoubleVerticalBar: '∥',\n DownArrow: '↓',\n DownArrowBar: '⤓',\n DownArrowUpArrow: '⇵',\n DownBreve: '̑',\n DownLeftRightVector: '⥐',\n DownLeftTeeVector: '⥞',\n DownLeftVector: '↽',\n DownLeftVectorBar: '⥖',\n DownRightTeeVector: '⥟',\n DownRightVector: '⇁',\n DownRightVectorBar: '⥗',\n DownTee: '⊤',\n DownTeeArrow: '↧',\n Downarrow: '⇓',\n Dscr: '𝒟',\n Dstrok: 'Đ',\n ENG: 'Ŋ',\n ETH: 'Ð',\n Eacute: 'É',\n Ecaron: 'Ě',\n Ecirc: 'Ê',\n Ecy: 'Э',\n Edot: 'Ė',\n Efr: '𝔈',\n Egrave: 'È',\n Element: '∈',\n Emacr: 'Ē',\n EmptySmallSquare: '◻',\n EmptyVerySmallSquare: '▫',\n Eogon: 'Ę',\n Eopf: '𝔼',\n Epsilon: 'Ε',\n Equal: '⩵',\n EqualTilde: '≂',\n Equilibrium: '⇌',\n Escr: 'ℰ',\n Esim: '⩳',\n Eta: 'Η',\n Euml: 'Ë',\n Exists: '∃',\n ExponentialE: 'ⅇ',\n Fcy: 'Ф',\n Ffr: '𝔉',\n FilledSmallSquare: '◼',\n FilledVerySmallSquare: '▪',\n Fopf: '𝔽',\n ForAll: '∀',\n Fouriertrf: 'ℱ',\n Fscr: 'ℱ',\n GJcy: 'Ѓ',\n GT: '>',\n Gamma: 'Γ',\n Gammad: 'Ϝ',\n Gbreve: 'Ğ',\n Gcedil: 'Ģ',\n Gcirc: 'Ĝ',\n Gcy: 'Г',\n Gdot: 'Ġ',\n Gfr: '𝔊',\n Gg: '⋙',\n Gopf: '𝔾',\n GreaterEqual: '≥',\n GreaterEqualLess: '⋛',\n GreaterFullEqual: '≧',\n GreaterGreater: '⪢',\n GreaterLess: '≷',\n GreaterSlantEqual: '⩾',\n GreaterTilde: '≳',\n Gscr: '𝒢',\n Gt: '≫',\n HARDcy: 'Ъ',\n Hacek: 'ˇ',\n Hat: '^',\n Hcirc: 'Ĥ',\n Hfr: 'ℌ',\n HilbertSpace: 'ℋ',\n Hopf: 'ℍ',\n HorizontalLine: '─',\n Hscr: 'ℋ',\n Hstrok: 'Ħ',\n HumpDownHump: '≎',\n HumpEqual: '≏',\n IEcy: 'Е',\n IJlig: 'IJ',\n IOcy: 'Ё',\n Iacute: 'Í',\n Icirc: 'Î',\n Icy: 'И',\n Idot: 'İ',\n Ifr: 'ℑ',\n Igrave: 'Ì',\n Im: 'ℑ',\n Imacr: 'Ī',\n ImaginaryI: 'ⅈ',\n Implies: '⇒',\n Int: '∬',\n Integral: '∫',\n Intersection: '⋂',\n InvisibleComma: '',\n InvisibleTimes: '',\n Iogon: 'Į',\n Iopf: '𝕀',\n Iota: 'Ι',\n Iscr: 'ℐ',\n Itilde: 'Ĩ',\n Iukcy: 'І',\n Iuml: 'Ï',\n Jcirc: 'Ĵ',\n Jcy: 'Й',\n Jfr: '𝔍',\n Jopf: '𝕁',\n Jscr: '𝒥',\n Jsercy: 'Ј',\n Jukcy: 'Є',\n KHcy: 'Х',\n KJcy: 'Ќ',\n Kappa: 'Κ',\n Kcedil: 'Ķ',\n Kcy: 'К',\n Kfr: '𝔎',\n Kopf: '𝕂',\n Kscr: '𝒦',\n LJcy: 'Љ',\n LT: '<',\n Lacute: 'Ĺ',\n Lambda: 'Λ',\n Lang: '⟪',\n Laplacetrf: 'ℒ',\n Larr: '↞',\n Lcaron: 'Ľ',\n Lcedil: 'Ļ',\n Lcy: 'Л',\n LeftAngleBracket: '⟨',\n LeftArrow: '←',\n LeftArrowBar: '⇤',\n LeftArrowRightArrow: '⇆',\n LeftCeiling: '⌈',\n LeftDoubleBracket: '⟦',\n LeftDownTeeVector: '⥡',\n LeftDownVector: '⇃',\n LeftDownVectorBar: '⥙',\n LeftFloor: '⌊',\n LeftRightArrow: '↔',\n LeftRightVector: '⥎',\n LeftTee: '⊣',\n LeftTeeArrow: '↤',\n LeftTeeVector: '⥚',\n LeftTriangle: '⊲',\n LeftTriangleBar: '⧏',\n LeftTriangleEqual: '⊴',\n LeftUpDownVector: '⥑',\n LeftUpTeeVector: '⥠',\n LeftUpVector: '↿',\n LeftUpVectorBar: '⥘',\n LeftVector: '↼',\n LeftVectorBar: '⥒',\n Leftarrow: '⇐',\n Leftrightarrow: '⇔',\n LessEqualGreater: '⋚',\n LessFullEqual: '≦',\n LessGreater: '≶',\n LessLess: '⪡',\n LessSlantEqual: '⩽',\n LessTilde: '≲',\n Lfr: '𝔏',\n Ll: '⋘',\n Lleftarrow: '⇚',\n Lmidot: 'Ŀ',\n LongLeftArrow: '⟵',\n LongLeftRightArrow: '⟷',\n LongRightArrow: '⟶',\n Longleftarrow: '⟸',\n Longleftrightarrow: '⟺',\n Longrightarrow: '⟹',\n Lopf: '𝕃',\n LowerLeftArrow: '↙',\n LowerRightArrow: '↘',\n Lscr: 'ℒ',\n Lsh: '↰',\n Lstrok: 'Ł',\n Lt: '≪',\n Map: '⤅',\n Mcy: 'М',\n MediumSpace: ' ',\n Mellintrf: 'ℳ',\n Mfr: '𝔐',\n MinusPlus: '∓',\n Mopf: '𝕄',\n Mscr: 'ℳ',\n Mu: 'Μ',\n NJcy: 'Њ',\n Nacute: 'Ń',\n Ncaron: 'Ň',\n Ncedil: 'Ņ',\n Ncy: 'Н',\n NegativeMediumSpace: '',\n NegativeThickSpace: '',\n NegativeThinSpace: '',\n NegativeVeryThinSpace: '',\n NestedGreaterGreater: '≫',\n NestedLessLess: '≪',\n NewLine: '\\n',\n Nfr: '𝔑',\n NoBreak: '',\n NonBreakingSpace: ' ',\n Nopf: 'ℕ',\n Not: '⫬',\n NotCongruent: '≢',\n NotCupCap: '≭',\n NotDoubleVerticalBar: '∦',\n NotElement: '∉',\n NotEqual: '≠',\n NotEqualTilde: '≂̸',\n NotExists: '∄',\n NotGreater: '≯',\n NotGreaterEqual: '≱',\n NotGreaterFullEqual: '≧̸',\n NotGreaterGreater: '≫̸',\n NotGreaterLess: '≹',\n NotGreaterSlantEqual: '⩾̸',\n NotGreaterTilde: '≵',\n NotHumpDownHump: '≎̸',\n NotHumpEqual: '≏̸',\n NotLeftTriangle: '⋪',\n NotLeftTriangleBar: '⧏̸',\n NotLeftTriangleEqual: '⋬',\n NotLess: '≮',\n NotLessEqual: '≰',\n NotLessGreater: '≸',\n NotLessLess: '≪̸',\n NotLessSlantEqual: '⩽̸',\n NotLessTilde: '≴',\n NotNestedGreaterGreater: '⪢̸',\n NotNestedLessLess: '⪡̸',\n NotPrecedes: '⊀',\n NotPrecedesEqual: '⪯̸',\n NotPrecedesSlantEqual: '⋠',\n NotReverseElement: '∌',\n NotRightTriangle: '⋫',\n NotRightTriangleBar: '⧐̸',\n NotRightTriangleEqual: '⋭',\n NotSquareSubset: '⊏̸',\n NotSquareSubsetEqual: '⋢',\n NotSquareSuperset: '⊐̸',\n NotSquareSupersetEqual: '⋣',\n NotSubset: '⊂⃒',\n NotSubsetEqual: '⊈',\n NotSucceeds: '⊁',\n NotSucceedsEqual: '⪰̸',\n NotSucceedsSlantEqual: '⋡',\n NotSucceedsTilde: '≿̸',\n NotSuperset: '⊃⃒',\n NotSupersetEqual: '⊉',\n NotTilde: '≁',\n NotTildeEqual: '≄',\n NotTildeFullEqual: '≇',\n NotTildeTilde: '≉',\n NotVerticalBar: '∤',\n Nscr: '𝒩',\n Ntilde: 'Ñ',\n Nu: 'Ν',\n OElig: 'Œ',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Ocy: 'О',\n Odblac: 'Ő',\n Ofr: '𝔒',\n Ograve: 'Ò',\n Omacr: 'Ō',\n Omega: 'Ω',\n Omicron: 'Ο',\n Oopf: '𝕆',\n OpenCurlyDoubleQuote: '“',\n OpenCurlyQuote: '‘',\n Or: '⩔',\n Oscr: '𝒪',\n Oslash: 'Ø',\n Otilde: 'Õ',\n Otimes: '⨷',\n Ouml: 'Ö',\n OverBar: '‾',\n OverBrace: '⏞',\n OverBracket: '⎴',\n OverParenthesis: '⏜',\n PartialD: '∂',\n Pcy: 'П',\n Pfr: '𝔓',\n Phi: 'Φ',\n Pi: 'Π',\n PlusMinus: '±',\n Poincareplane: 'ℌ',\n Popf: 'ℙ',\n Pr: '⪻',\n Precedes: '≺',\n PrecedesEqual: '⪯',\n PrecedesSlantEqual: '≼',\n PrecedesTilde: '≾',\n Prime: '″',\n Product: '∏',\n Proportion: '∷',\n Proportional: '∝',\n Pscr: '𝒫',\n Psi: 'Ψ',\n QUOT: '\"',\n Qfr: '𝔔',\n Qopf: 'ℚ',\n Qscr: '𝒬',\n RBarr: '⤐',\n REG: '®',\n Racute: 'Ŕ',\n Rang: '⟫',\n Rarr: '↠',\n Rarrtl: '⤖',\n Rcaron: 'Ř',\n Rcedil: 'Ŗ',\n Rcy: 'Р',\n Re: 'ℜ',\n ReverseElement: '∋',\n ReverseEquilibrium: '⇋',\n ReverseUpEquilibrium: '⥯',\n Rfr: 'ℜ',\n Rho: 'Ρ',\n RightAngleBracket: '⟩',\n RightArrow: '→',\n RightArrowBar: '⇥',\n RightArrowLeftArrow: '⇄',\n RightCeiling: '⌉',\n RightDoubleBracket: '⟧',\n RightDownTeeVector: '⥝',\n RightDownVector: '⇂',\n RightDownVectorBar: '⥕',\n RightFloor: '⌋',\n RightTee: '⊢',\n RightTeeArrow: '↦',\n RightTeeVector: '⥛',\n RightTriangle: '⊳',\n RightTriangleBar: '⧐',\n RightTriangleEqual: '⊵',\n RightUpDownVector: '⥏',\n RightUpTeeVector: '⥜',\n RightUpVector: '↾',\n RightUpVectorBar: '⥔',\n RightVector: '⇀',\n RightVectorBar: '⥓',\n Rightarrow: '⇒',\n Ropf: 'ℝ',\n RoundImplies: '⥰',\n Rrightarrow: '⇛',\n Rscr: 'ℛ',\n Rsh: '↱',\n RuleDelayed: '⧴',\n SHCHcy: 'Щ',\n SHcy: 'Ш',\n SOFTcy: 'Ь',\n Sacute: 'Ś',\n Sc: '⪼',\n Scaron: 'Š',\n Scedil: 'Ş',\n Scirc: 'Ŝ',\n Scy: 'С',\n Sfr: '𝔖',\n ShortDownArrow: '↓',\n ShortLeftArrow: '←',\n ShortRightArrow: '→',\n ShortUpArrow: '↑',\n Sigma: 'Σ',\n SmallCircle: '∘',\n Sopf: '𝕊',\n Sqrt: '√',\n Square: '□',\n SquareIntersection: '⊓',\n SquareSubset: '⊏',\n SquareSubsetEqual: '⊑',\n SquareSuperset: '⊐',\n SquareSupersetEqual: '⊒',\n SquareUnion: '⊔',\n Sscr: '𝒮',\n Star: '⋆',\n Sub: '⋐',\n Subset: '⋐',\n SubsetEqual: '⊆',\n Succeeds: '≻',\n SucceedsEqual: '⪰',\n SucceedsSlantEqual: '≽',\n SucceedsTilde: '≿',\n SuchThat: '∋',\n Sum: '∑',\n Sup: '⋑',\n Superset: '⊃',\n SupersetEqual: '⊇',\n Supset: '⋑',\n THORN: 'Þ',\n TRADE: '™',\n TSHcy: 'Ћ',\n TScy: 'Ц',\n Tab: '\\t',\n Tau: 'Τ',\n Tcaron: 'Ť',\n Tcedil: 'Ţ',\n Tcy: 'Т',\n Tfr: '𝔗',\n Therefore: '∴',\n Theta: 'Θ',\n ThickSpace: ' ',\n ThinSpace: ' ',\n Tilde: '∼',\n TildeEqual: '≃',\n TildeFullEqual: '≅',\n TildeTilde: '≈',\n Topf: '𝕋',\n TripleDot: '⃛',\n Tscr: '𝒯',\n Tstrok: 'Ŧ',\n Uacute: 'Ú',\n Uarr: '↟',\n Uarrocir: '⥉',\n Ubrcy: 'Ў',\n Ubreve: 'Ŭ',\n Ucirc: 'Û',\n Ucy: 'У',\n Udblac: 'Ű',\n Ufr: '𝔘',\n Ugrave: 'Ù',\n Umacr: 'Ū',\n UnderBar: '_',\n UnderBrace: '⏟',\n UnderBracket: '⎵',\n UnderParenthesis: '⏝',\n Union: '⋃',\n UnionPlus: '⊎',\n Uogon: 'Ų',\n Uopf: '𝕌',\n UpArrow: '↑',\n UpArrowBar: '⤒',\n UpArrowDownArrow: '⇅',\n UpDownArrow: '↕',\n UpEquilibrium: '⥮',\n UpTee: '⊥',\n UpTeeArrow: '↥',\n Uparrow: '⇑',\n Updownarrow: '⇕',\n UpperLeftArrow: '↖',\n UpperRightArrow: '↗',\n Upsi: 'ϒ',\n Upsilon: 'Υ',\n Uring: 'Ů',\n Uscr: '𝒰',\n Utilde: 'Ũ',\n Uuml: 'Ü',\n VDash: '⊫',\n Vbar: '⫫',\n Vcy: 'В',\n Vdash: '⊩',\n Vdashl: '⫦',\n Vee: '⋁',\n Verbar: '‖',\n Vert: '‖',\n VerticalBar: '∣',\n VerticalLine: '|',\n VerticalSeparator: '❘',\n VerticalTilde: '≀',\n VeryThinSpace: ' ',\n Vfr: '𝔙',\n Vopf: '𝕍',\n Vscr: '𝒱',\n Vvdash: '⊪',\n Wcirc: 'Ŵ',\n Wedge: '⋀',\n Wfr: '𝔚',\n Wopf: '𝕎',\n Wscr: '𝒲',\n Xfr: '𝔛',\n Xi: 'Ξ',\n Xopf: '𝕏',\n Xscr: '𝒳',\n YAcy: 'Я',\n YIcy: 'Ї',\n YUcy: 'Ю',\n Yacute: 'Ý',\n Ycirc: 'Ŷ',\n Ycy: 'Ы',\n Yfr: '𝔜',\n Yopf: '𝕐',\n Yscr: '𝒴',\n Yuml: 'Ÿ',\n ZHcy: 'Ж',\n Zacute: 'Ź',\n Zcaron: 'Ž',\n Zcy: 'З',\n Zdot: 'Ż',\n ZeroWidthSpace: '',\n Zeta: 'Ζ',\n Zfr: 'ℨ',\n Zopf: 'ℤ',\n Zscr: '𝒵',\n aacute: 'á',\n abreve: 'ă',\n ac: '∾',\n acE: '∾̳',\n acd: '∿',\n acirc: 'â',\n acute: '´',\n acy: 'а',\n aelig: 'æ',\n af: '',\n afr: '𝔞',\n agrave: 'à',\n alefsym: 'ℵ',\n aleph: 'ℵ',\n alpha: 'α',\n amacr: 'ā',\n amalg: '⨿',\n amp: '&',\n and: '∧',\n andand: '⩕',\n andd: '⩜',\n andslope: '⩘',\n andv: '⩚',\n ang: '∠',\n ange: '⦤',\n angle: '∠',\n angmsd: '∡',\n angmsdaa: '⦨',\n angmsdab: '⦩',\n angmsdac: '⦪',\n angmsdad: '⦫',\n angmsdae: '⦬',\n angmsdaf: '⦭',\n angmsdag: '⦮',\n angmsdah: '⦯',\n angrt: '∟',\n angrtvb: '⊾',\n angrtvbd: '⦝',\n angsph: '∢',\n angst: 'Å',\n angzarr: '⍼',\n aogon: 'ą',\n aopf: '𝕒',\n ap: '≈',\n apE: '⩰',\n apacir: '⩯',\n ape: '≊',\n apid: '≋',\n apos: \"'\",\n approx: '≈',\n approxeq: '≊',\n aring: 'å',\n ascr: '𝒶',\n ast: '*',\n asymp: '≈',\n asympeq: '≍',\n atilde: 'ã',\n auml: 'ä',\n awconint: '∳',\n awint: '⨑',\n bNot: '⫭',\n backcong: '≌',\n backepsilon: '϶',\n backprime: '‵',\n backsim: '∽',\n backsimeq: '⋍',\n barvee: '⊽',\n barwed: '⌅',\n barwedge: '⌅',\n bbrk: '⎵',\n bbrktbrk: '⎶',\n bcong: '≌',\n bcy: 'б',\n bdquo: '„',\n becaus: '∵',\n because: '∵',\n bemptyv: '⦰',\n bepsi: '϶',\n bernou: 'ℬ',\n beta: 'β',\n beth: 'ℶ',\n between: '≬',\n bfr: '𝔟',\n bigcap: '⋂',\n bigcirc: '◯',\n bigcup: '⋃',\n bigodot: '⨀',\n bigoplus: '⨁',\n bigotimes: '⨂',\n bigsqcup: '⨆',\n bigstar: '★',\n bigtriangledown: '▽',\n bigtriangleup: '△',\n biguplus: '⨄',\n bigvee: '⋁',\n bigwedge: '⋀',\n bkarow: '⤍',\n blacklozenge: '⧫',\n blacksquare: '▪',\n blacktriangle: '▴',\n blacktriangledown: '▾',\n blacktriangleleft: '◂',\n blacktriangleright: '▸',\n blank: '␣',\n blk12: '▒',\n blk14: '░',\n blk34: '▓',\n block: '█',\n bne: '=⃥',\n bnequiv: '≡⃥',\n bnot: '⌐',\n bopf: '𝕓',\n bot: '⊥',\n bottom: '⊥',\n bowtie: '⋈',\n boxDL: '╗',\n boxDR: '╔',\n boxDl: '╖',\n boxDr: '╓',\n boxH: '═',\n boxHD: '╦',\n boxHU: '╩',\n boxHd: '╤',\n boxHu: '╧',\n boxUL: '╝',\n boxUR: '╚',\n boxUl: '╜',\n boxUr: '╙',\n boxV: '║',\n boxVH: '╬',\n boxVL: '╣',\n boxVR: '╠',\n boxVh: '╫',\n boxVl: '╢',\n boxVr: '╟',\n boxbox: '⧉',\n boxdL: '╕',\n boxdR: '╒',\n boxdl: '┐',\n boxdr: '┌',\n boxh: '─',\n boxhD: '╥',\n boxhU: '╨',\n boxhd: '┬',\n boxhu: '┴',\n boxminus: '⊟',\n boxplus: '⊞',\n boxtimes: '⊠',\n boxuL: '╛',\n boxuR: '╘',\n boxul: '┘',\n boxur: '└',\n boxv: '│',\n boxvH: '╪',\n boxvL: '╡',\n boxvR: '╞',\n boxvh: '┼',\n boxvl: '┤',\n boxvr: '├',\n bprime: '‵',\n breve: '˘',\n brvbar: '¦',\n bscr: '𝒷',\n bsemi: '⁏',\n bsim: '∽',\n bsime: '⋍',\n bsol: '\\\\',\n bsolb: '⧅',\n bsolhsub: '⟈',\n bull: '•',\n bullet: '•',\n bump: '≎',\n bumpE: '⪮',\n bumpe: '≏',\n bumpeq: '≏',\n cacute: 'ć',\n cap: '∩',\n capand: '⩄',\n capbrcup: '⩉',\n capcap: '⩋',\n capcup: '⩇',\n capdot: '⩀',\n caps: '∩︀',\n caret: '⁁',\n caron: 'ˇ',\n ccaps: '⩍',\n ccaron: 'č',\n ccedil: 'ç',\n ccirc: 'ĉ',\n ccups: '⩌',\n ccupssm: '⩐',\n cdot: 'ċ',\n cedil: '¸',\n cemptyv: '⦲',\n cent: '¢',\n centerdot: '·',\n cfr: '𝔠',\n chcy: 'ч',\n check: '✓',\n checkmark: '✓',\n chi: 'χ',\n cir: '○',\n cirE: '⧃',\n circ: 'ˆ',\n circeq: '≗',\n circlearrowleft: '↺',\n circlearrowright: '↻',\n circledR: '®',\n circledS: 'Ⓢ',\n circledast: '⊛',\n circledcirc: '⊚',\n circleddash: '⊝',\n cire: '≗',\n cirfnint: '⨐',\n cirmid: '⫯',\n cirscir: '⧂',\n clubs: '♣',\n clubsuit: '♣',\n colon: ':',\n colone: '≔',\n coloneq: '≔',\n comma: ',',\n commat: '@',\n comp: '∁',\n compfn: '∘',\n complement: '∁',\n complexes: 'ℂ',\n cong: '≅',\n congdot: '⩭',\n conint: '∮',\n copf: '𝕔',\n coprod: '∐',\n copy: '©',\n copysr: '℗',\n crarr: '↵',\n cross: '✗',\n cscr: '𝒸',\n csub: '⫏',\n csube: '⫑',\n csup: '⫐',\n csupe: '⫒',\n ctdot: '⋯',\n cudarrl: '⤸',\n cudarrr: '⤵',\n cuepr: '⋞',\n cuesc: '⋟',\n cularr: '↶',\n cularrp: '⤽',\n cup: '∪',\n cupbrcap: '⩈',\n cupcap: '⩆',\n cupcup: '⩊',\n cupdot: '⊍',\n cupor: '⩅',\n cups: '∪︀',\n curarr: '↷',\n curarrm: '⤼',\n curlyeqprec: '⋞',\n curlyeqsucc: '⋟',\n curlyvee: '⋎',\n curlywedge: '⋏',\n curren: '¤',\n curvearrowleft: '↶',\n curvearrowright: '↷',\n cuvee: '⋎',\n cuwed: '⋏',\n cwconint: '∲',\n cwint: '∱',\n cylcty: '⌭',\n dArr: '⇓',\n dHar: '⥥',\n dagger: '†',\n daleth: 'ℸ',\n darr: '↓',\n dash: '‐',\n dashv: '⊣',\n dbkarow: '⤏',\n dblac: '˝',\n dcaron: 'ď',\n dcy: 'д',\n dd: 'ⅆ',\n ddagger: '‡',\n ddarr: '⇊',\n ddotseq: '⩷',\n deg: '°',\n delta: 'δ',\n demptyv: '⦱',\n dfisht: '⥿',\n dfr: '𝔡',\n dharl: '⇃',\n dharr: '⇂',\n diam: '⋄',\n diamond: '⋄',\n diamondsuit: '♦',\n diams: '♦',\n die: '¨',\n digamma: 'ϝ',\n disin: '⋲',\n div: '÷',\n divide: '÷',\n divideontimes: '⋇',\n divonx: '⋇',\n djcy: 'ђ',\n dlcorn: '⌞',\n dlcrop: '⌍',\n dollar: '$',\n dopf: '𝕕',\n dot: '˙',\n doteq: '≐',\n doteqdot: '≑',\n dotminus: '∸',\n dotplus: '∔',\n dotsquare: '⊡',\n doublebarwedge: '⌆',\n downarrow: '↓',\n downdownarrows: '⇊',\n downharpoonleft: '⇃',\n downharpoonright: '⇂',\n drbkarow: '⤐',\n drcorn: '⌟',\n drcrop: '⌌',\n dscr: '𝒹',\n dscy: 'ѕ',\n dsol: '⧶',\n dstrok: 'đ',\n dtdot: '⋱',\n dtri: '▿',\n dtrif: '▾',\n duarr: '⇵',\n duhar: '⥯',\n dwangle: '⦦',\n dzcy: 'џ',\n dzigrarr: '⟿',\n eDDot: '⩷',\n eDot: '≑',\n eacute: 'é',\n easter: '⩮',\n ecaron: 'ě',\n ecir: '≖',\n ecirc: 'ê',\n ecolon: '≕',\n ecy: 'э',\n edot: 'ė',\n ee: 'ⅇ',\n efDot: '≒',\n efr: '𝔢',\n eg: '⪚',\n egrave: 'è',\n egs: '⪖',\n egsdot: '⪘',\n el: '⪙',\n elinters: '⏧',\n ell: 'ℓ',\n els: '⪕',\n elsdot: '⪗',\n emacr: 'ē',\n empty: '∅',\n emptyset: '∅',\n emptyv: '∅',\n emsp13: ' ',\n emsp14: ' ',\n emsp: ' ',\n eng: 'ŋ',\n ensp: ' ',\n eogon: 'ę',\n eopf: '𝕖',\n epar: '⋕',\n eparsl: '⧣',\n eplus: '⩱',\n epsi: 'ε',\n epsilon: 'ε',\n epsiv: 'ϵ',\n eqcirc: '≖',\n eqcolon: '≕',\n eqsim: '≂',\n eqslantgtr: '⪖',\n eqslantless: '⪕',\n equals: '=',\n equest: '≟',\n equiv: '≡',\n equivDD: '⩸',\n eqvparsl: '⧥',\n erDot: '≓',\n erarr: '⥱',\n escr: 'ℯ',\n esdot: '≐',\n esim: '≂',\n eta: 'η',\n eth: 'ð',\n euml: 'ë',\n euro: '€',\n excl: '!',\n exist: '∃',\n expectation: 'ℰ',\n exponentiale: 'ⅇ',\n fallingdotseq: '≒',\n fcy: 'ф',\n female: '♀',\n ffilig: 'ffi',\n fflig: 'ff',\n ffllig: 'ffl',\n ffr: '𝔣',\n filig: 'fi',\n fjlig: 'fj',\n flat: '♭',\n fllig: 'fl',\n fltns: '▱',\n fnof: 'ƒ',\n fopf: '𝕗',\n forall: '∀',\n fork: '⋔',\n forkv: '⫙',\n fpartint: '⨍',\n frac12: '½',\n frac13: '⅓',\n frac14: '¼',\n frac15: '⅕',\n frac16: '⅙',\n frac18: '⅛',\n frac23: '⅔',\n frac25: '⅖',\n frac34: '¾',\n frac35: '⅗',\n frac38: '⅜',\n frac45: '⅘',\n frac56: '⅚',\n frac58: '⅝',\n frac78: '⅞',\n frasl: '⁄',\n frown: '⌢',\n fscr: '𝒻',\n gE: '≧',\n gEl: '⪌',\n gacute: 'ǵ',\n gamma: 'γ',\n gammad: 'ϝ',\n gap: '⪆',\n gbreve: 'ğ',\n gcirc: 'ĝ',\n gcy: 'г',\n gdot: 'ġ',\n ge: '≥',\n gel: '⋛',\n geq: '≥',\n geqq: '≧',\n geqslant: '⩾',\n ges: '⩾',\n gescc: '⪩',\n gesdot: '⪀',\n gesdoto: '⪂',\n gesdotol: '⪄',\n gesl: '⋛︀',\n gesles: '⪔',\n gfr: '𝔤',\n gg: '≫',\n ggg: '⋙',\n gimel: 'ℷ',\n gjcy: 'ѓ',\n gl: '≷',\n glE: '⪒',\n gla: '⪥',\n glj: '⪤',\n gnE: '≩',\n gnap: '⪊',\n gnapprox: '⪊',\n gne: '⪈',\n gneq: '⪈',\n gneqq: '≩',\n gnsim: '⋧',\n gopf: '𝕘',\n grave: '`',\n gscr: 'ℊ',\n gsim: '≳',\n gsime: '⪎',\n gsiml: '⪐',\n gt: '>',\n gtcc: '⪧',\n gtcir: '⩺',\n gtdot: '⋗',\n gtlPar: '⦕',\n gtquest: '⩼',\n gtrapprox: '⪆',\n gtrarr: '⥸',\n gtrdot: '⋗',\n gtreqless: '⋛',\n gtreqqless: '⪌',\n gtrless: '≷',\n gtrsim: '≳',\n gvertneqq: '≩︀',\n gvnE: '≩︀',\n hArr: '⇔',\n hairsp: ' ',\n half: '½',\n hamilt: 'ℋ',\n hardcy: 'ъ',\n harr: '↔',\n harrcir: '⥈',\n harrw: '↭',\n hbar: 'ℏ',\n hcirc: 'ĥ',\n hearts: '♥',\n heartsuit: '♥',\n hellip: '…',\n hercon: '⊹',\n hfr: '𝔥',\n hksearow: '⤥',\n hkswarow: '⤦',\n hoarr: '⇿',\n homtht: '∻',\n hookleftarrow: '↩',\n hookrightarrow: '↪',\n hopf: '𝕙',\n horbar: '―',\n hscr: '𝒽',\n hslash: 'ℏ',\n hstrok: 'ħ',\n hybull: '⁃',\n hyphen: '‐',\n iacute: 'í',\n ic: '',\n icirc: 'î',\n icy: 'и',\n iecy: 'е',\n iexcl: '¡',\n iff: '⇔',\n ifr: '𝔦',\n igrave: 'ì',\n ii: 'ⅈ',\n iiiint: '⨌',\n iiint: '∭',\n iinfin: '⧜',\n iiota: '℩',\n ijlig: 'ij',\n imacr: 'ī',\n image: 'ℑ',\n imagline: 'ℐ',\n imagpart: 'ℑ',\n imath: 'ı',\n imof: '⊷',\n imped: 'Ƶ',\n in: '∈',\n incare: '℅',\n infin: '∞',\n infintie: '⧝',\n inodot: 'ı',\n int: '∫',\n intcal: '⊺',\n integers: 'ℤ',\n intercal: '⊺',\n intlarhk: '⨗',\n intprod: '⨼',\n iocy: 'ё',\n iogon: 'į',\n iopf: '𝕚',\n iota: 'ι',\n iprod: '⨼',\n iquest: '¿',\n iscr: '𝒾',\n isin: '∈',\n isinE: '⋹',\n isindot: '⋵',\n isins: '⋴',\n isinsv: '⋳',\n isinv: '∈',\n it: '',\n itilde: 'ĩ',\n iukcy: 'і',\n iuml: 'ï',\n jcirc: 'ĵ',\n jcy: 'й',\n jfr: '𝔧',\n jmath: 'ȷ',\n jopf: '𝕛',\n jscr: '𝒿',\n jsercy: 'ј',\n jukcy: 'є',\n kappa: 'κ',\n kappav: 'ϰ',\n kcedil: 'ķ',\n kcy: 'к',\n kfr: '𝔨',\n kgreen: 'ĸ',\n khcy: 'х',\n kjcy: 'ќ',\n kopf: '𝕜',\n kscr: '𝓀',\n lAarr: '⇚',\n lArr: '⇐',\n lAtail: '⤛',\n lBarr: '⤎',\n lE: '≦',\n lEg: '⪋',\n lHar: '⥢',\n lacute: 'ĺ',\n laemptyv: '⦴',\n lagran: 'ℒ',\n lambda: 'λ',\n lang: '⟨',\n langd: '⦑',\n langle: '⟨',\n lap: '⪅',\n laquo: '«',\n larr: '←',\n larrb: '⇤',\n larrbfs: '⤟',\n larrfs: '⤝',\n larrhk: '↩',\n larrlp: '↫',\n larrpl: '⤹',\n larrsim: '⥳',\n larrtl: '↢',\n lat: '⪫',\n latail: '⤙',\n late: '⪭',\n lates: '⪭︀',\n lbarr: '⤌',\n lbbrk: '❲',\n lbrace: '{',\n lbrack: '[',\n lbrke: '⦋',\n lbrksld: '⦏',\n lbrkslu: '⦍',\n lcaron: 'ľ',\n lcedil: 'ļ',\n lceil: '⌈',\n lcub: '{',\n lcy: 'л',\n ldca: '⤶',\n ldquo: '“',\n ldquor: '„',\n ldrdhar: '⥧',\n ldrushar: '⥋',\n ldsh: '↲',\n le: '≤',\n leftarrow: '←',\n leftarrowtail: '↢',\n leftharpoondown: '↽',\n leftharpoonup: '↼',\n leftleftarrows: '⇇',\n leftrightarrow: '↔',\n leftrightarrows: '⇆',\n leftrightharpoons: '⇋',\n leftrightsquigarrow: '↭',\n leftthreetimes: '⋋',\n leg: '⋚',\n leq: '≤',\n leqq: '≦',\n leqslant: '⩽',\n les: '⩽',\n lescc: '⪨',\n lesdot: '⩿',\n lesdoto: '⪁',\n lesdotor: '⪃',\n lesg: '⋚︀',\n lesges: '⪓',\n lessapprox: '⪅',\n lessdot: '⋖',\n lesseqgtr: '⋚',\n lesseqqgtr: '⪋',\n lessgtr: '≶',\n lesssim: '≲',\n lfisht: '⥼',\n lfloor: '⌊',\n lfr: '𝔩',\n lg: '≶',\n lgE: '⪑',\n lhard: '↽',\n lharu: '↼',\n lharul: '⥪',\n lhblk: '▄',\n ljcy: 'љ',\n ll: '≪',\n llarr: '⇇',\n llcorner: '⌞',\n llhard: '⥫',\n lltri: '◺',\n lmidot: 'ŀ',\n lmoust: '⎰',\n lmoustache: '⎰',\n lnE: '≨',\n lnap: '⪉',\n lnapprox: '⪉',\n lne: '⪇',\n lneq: '⪇',\n lneqq: '≨',\n lnsim: '⋦',\n loang: '⟬',\n loarr: '⇽',\n lobrk: '⟦',\n longleftarrow: '⟵',\n longleftrightarrow: '⟷',\n longmapsto: '⟼',\n longrightarrow: '⟶',\n looparrowleft: '↫',\n looparrowright: '↬',\n lopar: '⦅',\n lopf: '𝕝',\n loplus: '⨭',\n lotimes: '⨴',\n lowast: '∗',\n lowbar: '_',\n loz: '◊',\n lozenge: '◊',\n lozf: '⧫',\n lpar: '(',\n lparlt: '⦓',\n lrarr: '⇆',\n lrcorner: '⌟',\n lrhar: '⇋',\n lrhard: '⥭',\n lrm: '',\n lrtri: '⊿',\n lsaquo: '‹',\n lscr: '𝓁',\n lsh: '↰',\n lsim: '≲',\n lsime: '⪍',\n lsimg: '⪏',\n lsqb: '[',\n lsquo: '‘',\n lsquor: '‚',\n lstrok: 'ł',\n lt: '<',\n ltcc: '⪦',\n ltcir: '⩹',\n ltdot: '⋖',\n lthree: '⋋',\n ltimes: '⋉',\n ltlarr: '⥶',\n ltquest: '⩻',\n ltrPar: '⦖',\n ltri: '◃',\n ltrie: '⊴',\n ltrif: '◂',\n lurdshar: '⥊',\n luruhar: '⥦',\n lvertneqq: '≨︀',\n lvnE: '≨︀',\n mDDot: '∺',\n macr: '¯',\n male: '♂',\n malt: '✠',\n maltese: '✠',\n map: '↦',\n mapsto: '↦',\n mapstodown: '↧',\n mapstoleft: '↤',\n mapstoup: '↥',\n marker: '▮',\n mcomma: '⨩',\n mcy: 'м',\n mdash: '—',\n measuredangle: '∡',\n mfr: '𝔪',\n mho: '℧',\n micro: 'µ',\n mid: '∣',\n midast: '*',\n midcir: '⫰',\n middot: '·',\n minus: '−',\n minusb: '⊟',\n minusd: '∸',\n minusdu: '⨪',\n mlcp: '⫛',\n mldr: '…',\n mnplus: '∓',\n models: '⊧',\n mopf: '𝕞',\n mp: '∓',\n mscr: '𝓂',\n mstpos: '∾',\n mu: 'μ',\n multimap: '⊸',\n mumap: '⊸',\n nGg: '⋙̸',\n nGt: '≫⃒',\n nGtv: '≫̸',\n nLeftarrow: '⇍',\n nLeftrightarrow: '⇎',\n nLl: '⋘̸',\n nLt: '≪⃒',\n nLtv: '≪̸',\n nRightarrow: '⇏',\n nVDash: '⊯',\n nVdash: '⊮',\n nabla: '∇',\n nacute: 'ń',\n nang: '∠⃒',\n nap: '≉',\n napE: '⩰̸',\n napid: '≋̸',\n napos: 'ʼn',\n napprox: '≉',\n natur: '♮',\n natural: '♮',\n naturals: 'ℕ',\n nbsp: ' ',\n nbump: '≎̸',\n nbumpe: '≏̸',\n ncap: '⩃',\n ncaron: 'ň',\n ncedil: 'ņ',\n ncong: '≇',\n ncongdot: '⩭̸',\n ncup: '⩂',\n ncy: 'н',\n ndash: '–',\n ne: '≠',\n neArr: '⇗',\n nearhk: '⤤',\n nearr: '↗',\n nearrow: '↗',\n nedot: '≐̸',\n nequiv: '≢',\n nesear: '⤨',\n nesim: '≂̸',\n nexist: '∄',\n nexists: '∄',\n nfr: '𝔫',\n ngE: '≧̸',\n nge: '≱',\n ngeq: '≱',\n ngeqq: '≧̸',\n ngeqslant: '⩾̸',\n nges: '⩾̸',\n ngsim: '≵',\n ngt: '≯',\n ngtr: '≯',\n nhArr: '⇎',\n nharr: '↮',\n nhpar: '⫲',\n ni: '∋',\n nis: '⋼',\n nisd: '⋺',\n niv: '∋',\n njcy: 'њ',\n nlArr: '⇍',\n nlE: '≦̸',\n nlarr: '↚',\n nldr: '‥',\n nle: '≰',\n nleftarrow: '↚',\n nleftrightarrow: '↮',\n nleq: '≰',\n nleqq: '≦̸',\n nleqslant: '⩽̸',\n nles: '⩽̸',\n nless: '≮',\n nlsim: '≴',\n nlt: '≮',\n nltri: '⋪',\n nltrie: '⋬',\n nmid: '∤',\n nopf: '𝕟',\n not: '¬',\n notin: '∉',\n notinE: '⋹̸',\n notindot: '⋵̸',\n notinva: '∉',\n notinvb: '⋷',\n notinvc: '⋶',\n notni: '∌',\n notniva: '∌',\n notnivb: '⋾',\n notnivc: '⋽',\n npar: '∦',\n nparallel: '∦',\n nparsl: '⫽⃥',\n npart: '∂̸',\n npolint: '⨔',\n npr: '⊀',\n nprcue: '⋠',\n npre: '⪯̸',\n nprec: '⊀',\n npreceq: '⪯̸',\n nrArr: '⇏',\n nrarr: '↛',\n nrarrc: '⤳̸',\n nrarrw: '↝̸',\n nrightarrow: '↛',\n nrtri: '⋫',\n nrtrie: '⋭',\n nsc: '⊁',\n nsccue: '⋡',\n nsce: '⪰̸',\n nscr: '𝓃',\n nshortmid: '∤',\n nshortparallel: '∦',\n nsim: '≁',\n nsime: '≄',\n nsimeq: '≄',\n nsmid: '∤',\n nspar: '∦',\n nsqsube: '⋢',\n nsqsupe: '⋣',\n nsub: '⊄',\n nsubE: '⫅̸',\n nsube: '⊈',\n nsubset: '⊂⃒',\n nsubseteq: '⊈',\n nsubseteqq: '⫅̸',\n nsucc: '⊁',\n nsucceq: '⪰̸',\n nsup: '⊅',\n nsupE: '⫆̸',\n nsupe: '⊉',\n nsupset: '⊃⃒',\n nsupseteq: '⊉',\n nsupseteqq: '⫆̸',\n ntgl: '≹',\n ntilde: 'ñ',\n ntlg: '≸',\n ntriangleleft: '⋪',\n ntrianglelefteq: '⋬',\n ntriangleright: '⋫',\n ntrianglerighteq: '⋭',\n nu: 'ν',\n num: '#',\n numero: '№',\n numsp: ' ',\n nvDash: '⊭',\n nvHarr: '⤄',\n nvap: '≍⃒',\n nvdash: '⊬',\n nvge: '≥⃒',\n nvgt: '>⃒',\n nvinfin: '⧞',\n nvlArr: '⤂',\n nvle: '≤⃒',\n nvlt: '<⃒',\n nvltrie: '⊴⃒',\n nvrArr: '⤃',\n nvrtrie: '⊵⃒',\n nvsim: '∼⃒',\n nwArr: '⇖',\n nwarhk: '⤣',\n nwarr: '↖',\n nwarrow: '↖',\n nwnear: '⤧',\n oS: 'Ⓢ',\n oacute: 'ó',\n oast: '⊛',\n ocir: '⊚',\n ocirc: 'ô',\n ocy: 'о',\n odash: '⊝',\n odblac: 'ő',\n odiv: '⨸',\n odot: '⊙',\n odsold: '⦼',\n oelig: 'œ',\n ofcir: '⦿',\n ofr: '𝔬',\n ogon: '˛',\n ograve: 'ò',\n ogt: '⧁',\n ohbar: '⦵',\n ohm: 'Ω',\n oint: '∮',\n olarr: '↺',\n olcir: '⦾',\n olcross: '⦻',\n oline: '‾',\n olt: '⧀',\n omacr: 'ō',\n omega: 'ω',\n omicron: 'ο',\n omid: '⦶',\n ominus: '⊖',\n oopf: '𝕠',\n opar: '⦷',\n operp: '⦹',\n oplus: '⊕',\n or: '∨',\n orarr: '↻',\n ord: '⩝',\n order: 'ℴ',\n orderof: 'ℴ',\n ordf: 'ª',\n ordm: 'º',\n origof: '⊶',\n oror: '⩖',\n orslope: '⩗',\n orv: '⩛',\n oscr: 'ℴ',\n oslash: 'ø',\n osol: '⊘',\n otilde: 'õ',\n otimes: '⊗',\n otimesas: '⨶',\n ouml: 'ö',\n ovbar: '⌽',\n par: '∥',\n para: '¶',\n parallel: '∥',\n parsim: '⫳',\n parsl: '⫽',\n part: '∂',\n pcy: 'п',\n percnt: '%',\n period: '.',\n permil: '‰',\n perp: '⊥',\n pertenk: '‱',\n pfr: '𝔭',\n phi: 'φ',\n phiv: 'ϕ',\n phmmat: 'ℳ',\n phone: '☎',\n pi: 'π',\n pitchfork: '⋔',\n piv: 'ϖ',\n planck: 'ℏ',\n planckh: 'ℎ',\n plankv: 'ℏ',\n plus: '+',\n plusacir: '⨣',\n plusb: '⊞',\n pluscir: '⨢',\n plusdo: '∔',\n plusdu: '⨥',\n pluse: '⩲',\n plusmn: '±',\n plussim: '⨦',\n plustwo: '⨧',\n pm: '±',\n pointint: '⨕',\n popf: '𝕡',\n pound: '£',\n pr: '≺',\n prE: '⪳',\n prap: '⪷',\n prcue: '≼',\n pre: '⪯',\n prec: '≺',\n precapprox: '⪷',\n preccurlyeq: '≼',\n preceq: '⪯',\n precnapprox: '⪹',\n precneqq: '⪵',\n precnsim: '⋨',\n precsim: '≾',\n prime: '′',\n primes: 'ℙ',\n prnE: '⪵',\n prnap: '⪹',\n prnsim: '⋨',\n prod: '∏',\n profalar: '⌮',\n profline: '⌒',\n profsurf: '⌓',\n prop: '∝',\n propto: '∝',\n prsim: '≾',\n prurel: '⊰',\n pscr: '𝓅',\n psi: 'ψ',\n puncsp: ' ',\n qfr: '𝔮',\n qint: '⨌',\n qopf: '𝕢',\n qprime: '⁗',\n qscr: '𝓆',\n quaternions: 'ℍ',\n quatint: '⨖',\n quest: '?',\n questeq: '≟',\n quot: '\"',\n rAarr: '⇛',\n rArr: '⇒',\n rAtail: '⤜',\n rBarr: '⤏',\n rHar: '⥤',\n race: '∽̱',\n racute: 'ŕ',\n radic: '√',\n raemptyv: '⦳',\n rang: '⟩',\n rangd: '⦒',\n range: '⦥',\n rangle: '⟩',\n raquo: '»',\n rarr: '→',\n rarrap: '⥵',\n rarrb: '⇥',\n rarrbfs: '⤠',\n rarrc: '⤳',\n rarrfs: '⤞',\n rarrhk: '↪',\n rarrlp: '↬',\n rarrpl: '⥅',\n rarrsim: '⥴',\n rarrtl: '↣',\n rarrw: '↝',\n ratail: '⤚',\n ratio: '∶',\n rationals: 'ℚ',\n rbarr: '⤍',\n rbbrk: '❳',\n rbrace: '}',\n rbrack: ']',\n rbrke: '⦌',\n rbrksld: '⦎',\n rbrkslu: '⦐',\n rcaron: 'ř',\n rcedil: 'ŗ',\n rceil: '⌉',\n rcub: '}',\n rcy: 'р',\n rdca: '⤷',\n rdldhar: '⥩',\n rdquo: '”',\n rdquor: '”',\n rdsh: '↳',\n real: 'ℜ',\n realine: 'ℛ',\n realpart: 'ℜ',\n reals: 'ℝ',\n rect: '▭',\n reg: '®',\n rfisht: '⥽',\n rfloor: '⌋',\n rfr: '𝔯',\n rhard: '⇁',\n rharu: '⇀',\n rharul: '⥬',\n rho: 'ρ',\n rhov: 'ϱ',\n rightarrow: '→',\n rightarrowtail: '↣',\n rightharpoondown: '⇁',\n rightharpoonup: '⇀',\n rightleftarrows: '⇄',\n rightleftharpoons: '⇌',\n rightrightarrows: '⇉',\n rightsquigarrow: '↝',\n rightthreetimes: '⋌',\n ring: '˚',\n risingdotseq: '≓',\n rlarr: '⇄',\n rlhar: '⇌',\n rlm: '',\n rmoust: '⎱',\n rmoustache: '⎱',\n rnmid: '⫮',\n roang: '⟭',\n roarr: '⇾',\n robrk: '⟧',\n ropar: '⦆',\n ropf: '𝕣',\n roplus: '⨮',\n rotimes: '⨵',\n rpar: ')',\n rpargt: '⦔',\n rppolint: '⨒',\n rrarr: '⇉',\n rsaquo: '›',\n rscr: '𝓇',\n rsh: '↱',\n rsqb: ']',\n rsquo: '’',\n rsquor: '’',\n rthree: '⋌',\n rtimes: '⋊',\n rtri: '▹',\n rtrie: '⊵',\n rtrif: '▸',\n rtriltri: '⧎',\n ruluhar: '⥨',\n rx: '℞',\n sacute: 'ś',\n sbquo: '‚',\n sc: '≻',\n scE: '⪴',\n scap: '⪸',\n scaron: 'š',\n sccue: '≽',\n sce: '⪰',\n scedil: 'ş',\n scirc: 'ŝ',\n scnE: '⪶',\n scnap: '⪺',\n scnsim: '⋩',\n scpolint: '⨓',\n scsim: '≿',\n scy: 'с',\n sdot: '⋅',\n sdotb: '⊡',\n sdote: '⩦',\n seArr: '⇘',\n searhk: '⤥',\n searr: '↘',\n searrow: '↘',\n sect: '§',\n semi: ';',\n seswar: '⤩',\n setminus: '∖',\n setmn: '∖',\n sext: '✶',\n sfr: '𝔰',\n sfrown: '⌢',\n sharp: '♯',\n shchcy: 'щ',\n shcy: 'ш',\n shortmid: '∣',\n shortparallel: '∥',\n shy: '',\n sigma: 'σ',\n sigmaf: 'ς',\n sigmav: 'ς',\n sim: '∼',\n simdot: '⩪',\n sime: '≃',\n simeq: '≃',\n simg: '⪞',\n simgE: '⪠',\n siml: '⪝',\n simlE: '⪟',\n simne: '≆',\n simplus: '⨤',\n simrarr: '⥲',\n slarr: '←',\n smallsetminus: '∖',\n smashp: '⨳',\n smeparsl: '⧤',\n smid: '∣',\n smile: '⌣',\n smt: '⪪',\n smte: '⪬',\n smtes: '⪬︀',\n softcy: 'ь',\n sol: '/',\n solb: '⧄',\n solbar: '⌿',\n sopf: '𝕤',\n spades: '♠',\n spadesuit: '♠',\n spar: '∥',\n sqcap: '⊓',\n sqcaps: '⊓︀',\n sqcup: '⊔',\n sqcups: '⊔︀',\n sqsub: '⊏',\n sqsube: '⊑',\n sqsubset: '⊏',\n sqsubseteq: '⊑',\n sqsup: '⊐',\n sqsupe: '⊒',\n sqsupset: '⊐',\n sqsupseteq: '⊒',\n squ: '□',\n square: '□',\n squarf: '▪',\n squf: '▪',\n srarr: '→',\n sscr: '𝓈',\n ssetmn: '∖',\n ssmile: '⌣',\n sstarf: '⋆',\n star: '☆',\n starf: '★',\n straightepsilon: 'ϵ',\n straightphi: 'ϕ',\n strns: '¯',\n sub: '⊂',\n subE: '⫅',\n subdot: '⪽',\n sube: '⊆',\n subedot: '⫃',\n submult: '⫁',\n subnE: '⫋',\n subne: '⊊',\n subplus: '⪿',\n subrarr: '⥹',\n subset: '⊂',\n subseteq: '⊆',\n subseteqq: '⫅',\n subsetneq: '⊊',\n subsetneqq: '⫋',\n subsim: '⫇',\n subsub: '⫕',\n subsup: '⫓',\n succ: '≻',\n succapprox: '⪸',\n succcurlyeq: '≽',\n succeq: '⪰',\n succnapprox: '⪺',\n succneqq: '⪶',\n succnsim: '⋩',\n succsim: '≿',\n sum: '∑',\n sung: '♪',\n sup1: '¹',\n sup2: '²',\n sup3: '³',\n sup: '⊃',\n supE: '⫆',\n supdot: '⪾',\n supdsub: '⫘',\n supe: '⊇',\n supedot: '⫄',\n suphsol: '⟉',\n suphsub: '⫗',\n suplarr: '⥻',\n supmult: '⫂',\n supnE: '⫌',\n supne: '⊋',\n supplus: '⫀',\n supset: '⊃',\n supseteq: '⊇',\n supseteqq: '⫆',\n supsetneq: '⊋',\n supsetneqq: '⫌',\n supsim: '⫈',\n supsub: '⫔',\n supsup: '⫖',\n swArr: '⇙',\n swarhk: '⤦',\n swarr: '↙',\n swarrow: '↙',\n swnwar: '⤪',\n szlig: 'ß',\n target: '⌖',\n tau: 'τ',\n tbrk: '⎴',\n tcaron: 'ť',\n tcedil: 'ţ',\n tcy: 'т',\n tdot: '⃛',\n telrec: '⌕',\n tfr: '𝔱',\n there4: '∴',\n therefore: '∴',\n theta: 'θ',\n thetasym: 'ϑ',\n thetav: 'ϑ',\n thickapprox: '≈',\n thicksim: '∼',\n thinsp: ' ',\n thkap: '≈',\n thksim: '∼',\n thorn: 'þ',\n tilde: '˜',\n times: '×',\n timesb: '⊠',\n timesbar: '⨱',\n timesd: '⨰',\n tint: '∭',\n toea: '⤨',\n top: '⊤',\n topbot: '⌶',\n topcir: '⫱',\n topf: '𝕥',\n topfork: '⫚',\n tosa: '⤩',\n tprime: '‴',\n trade: '™',\n triangle: '▵',\n triangledown: '▿',\n triangleleft: '◃',\n trianglelefteq: '⊴',\n triangleq: '≜',\n triangleright: '▹',\n trianglerighteq: '⊵',\n tridot: '◬',\n trie: '≜',\n triminus: '⨺',\n triplus: '⨹',\n trisb: '⧍',\n tritime: '⨻',\n trpezium: '⏢',\n tscr: '𝓉',\n tscy: 'ц',\n tshcy: 'ћ',\n tstrok: 'ŧ',\n twixt: '≬',\n twoheadleftarrow: '↞',\n twoheadrightarrow: '↠',\n uArr: '⇑',\n uHar: '⥣',\n uacute: 'ú',\n uarr: '↑',\n ubrcy: 'ў',\n ubreve: 'ŭ',\n ucirc: 'û',\n ucy: 'у',\n udarr: '⇅',\n udblac: 'ű',\n udhar: '⥮',\n ufisht: '⥾',\n ufr: '𝔲',\n ugrave: 'ù',\n uharl: '↿',\n uharr: '↾',\n uhblk: '▀',\n ulcorn: '⌜',\n ulcorner: '⌜',\n ulcrop: '⌏',\n ultri: '◸',\n umacr: 'ū',\n uml: '¨',\n uogon: 'ų',\n uopf: '𝕦',\n uparrow: '↑',\n updownarrow: '↕',\n upharpoonleft: '↿',\n upharpoonright: '↾',\n uplus: '⊎',\n upsi: 'υ',\n upsih: 'ϒ',\n upsilon: 'υ',\n upuparrows: '⇈',\n urcorn: '⌝',\n urcorner: '⌝',\n urcrop: '⌎',\n uring: 'ů',\n urtri: '◹',\n uscr: '𝓊',\n utdot: '⋰',\n utilde: 'ũ',\n utri: '▵',\n utrif: '▴',\n uuarr: '⇈',\n uuml: 'ü',\n uwangle: '⦧',\n vArr: '⇕',\n vBar: '⫨',\n vBarv: '⫩',\n vDash: '⊨',\n vangrt: '⦜',\n varepsilon: 'ϵ',\n varkappa: 'ϰ',\n varnothing: '∅',\n varphi: 'ϕ',\n varpi: 'ϖ',\n varpropto: '∝',\n varr: '↕',\n varrho: 'ϱ',\n varsigma: 'ς',\n varsubsetneq: '⊊︀',\n varsubsetneqq: '⫋︀',\n varsupsetneq: '⊋︀',\n varsupsetneqq: '⫌︀',\n vartheta: 'ϑ',\n vartriangleleft: '⊲',\n vartriangleright: '⊳',\n vcy: 'в',\n vdash: '⊢',\n vee: '∨',\n veebar: '⊻',\n veeeq: '≚',\n vellip: '⋮',\n verbar: '|',\n vert: '|',\n vfr: '𝔳',\n vltri: '⊲',\n vnsub: '⊂⃒',\n vnsup: '⊃⃒',\n vopf: '𝕧',\n vprop: '∝',\n vrtri: '⊳',\n vscr: '𝓋',\n vsubnE: '⫋︀',\n vsubne: '⊊︀',\n vsupnE: '⫌︀',\n vsupne: '⊋︀',\n vzigzag: '⦚',\n wcirc: 'ŵ',\n wedbar: '⩟',\n wedge: '∧',\n wedgeq: '≙',\n weierp: '℘',\n wfr: '𝔴',\n wopf: '𝕨',\n wp: '℘',\n wr: '≀',\n wreath: '≀',\n wscr: '𝓌',\n xcap: '⋂',\n xcirc: '◯',\n xcup: '⋃',\n xdtri: '▽',\n xfr: '𝔵',\n xhArr: '⟺',\n xharr: '⟷',\n xi: 'ξ',\n xlArr: '⟸',\n xlarr: '⟵',\n xmap: '⟼',\n xnis: '⋻',\n xodot: '⨀',\n xopf: '𝕩',\n xoplus: '⨁',\n xotime: '⨂',\n xrArr: '⟹',\n xrarr: '⟶',\n xscr: '𝓍',\n xsqcup: '⨆',\n xuplus: '⨄',\n xutri: '△',\n xvee: '⋁',\n xwedge: '⋀',\n yacute: 'ý',\n yacy: 'я',\n ycirc: 'ŷ',\n ycy: 'ы',\n yen: '¥',\n yfr: '𝔶',\n yicy: 'ї',\n yopf: '𝕪',\n yscr: '𝓎',\n yucy: 'ю',\n yuml: 'ÿ',\n zacute: 'ź',\n zcaron: 'ž',\n zcy: 'з',\n zdot: 'ż',\n zeetrf: 'ℨ',\n zeta: 'ζ',\n zfr: '𝔷',\n zhcy: 'ж',\n zigrarr: '⇝',\n zopf: '𝕫',\n zscr: '𝓏',\n zwj: '',\n zwnj: ''\n}\n","import {characterEntities} from 'character-entities'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Decode a single character reference (without the `&` or `;`).\n * You probably only need this when you’re building parsers yourself that follow\n * different rules compared to HTML.\n * This is optimized to be tiny in browsers.\n *\n * @param {string} value\n * `notin` (named), `#123` (deci), `#x123` (hexa).\n * @returns {string|false}\n * Decoded reference.\n */\nexport function decodeNamedCharacterReference(value) {\n return own.call(characterEntities, value) ? characterEntities[value] : false\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('../types.js').AssociationId} AssociationId\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * Get an identifier from an association to match it to others.\n *\n * Associations are nodes that match to something else through an ID:\n * .\n *\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another:\n * controversially, character escapes and references don’t work in this\n * matching: `©` does not match `©`, and `\\+` does not match `+`.\n *\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we’re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character\n * escapes and all character references.\n *\n * @type {AssociationId}\n */\nexport function association(node) {\n if (node.label || !node.identifier) {\n return node.label || ''\n }\n\n return decodeString(node.identifier)\n}\n","/**\n * @typedef {import('../types.js').FlowContent} FlowContent\n * @typedef {import('../types.js').Node} Node\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').TrackFields} TrackFields\n */\n\n/**\n * @param {Parent & {children: Array}} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {TrackFields} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined by (blank) lines.\n */\nexport function containerFlow(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n const tracker = state.createTracker(info)\n /** @type {Array} */\n const results = []\n let index = -1\n\n indexStack.push(-1)\n\n while (++index < children.length) {\n const child = children[index]\n\n indexStack[indexStack.length - 1] = index\n\n results.push(\n tracker.move(\n state.handle(child, parent, state, {\n before: '\\n',\n after: '\\n',\n ...tracker.current()\n })\n )\n )\n\n if (child.type !== 'list') {\n state.bulletLastUsed = undefined\n }\n\n if (index < children.length - 1) {\n results.push(\n tracker.move(between(child, children[index + 1], parent, state))\n )\n }\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n\n/**\n * @param {Node} left\n * @param {Node} right\n * @param {Parent} parent\n * @param {State} state\n * @returns {string}\n */\nfunction between(left, right, parent, state) {\n let index = state.join.length\n\n while (index--) {\n const result = state.join[index](left, right, parent, state)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return '\\n'.repeat(1 + result)\n }\n\n if (result === false) {\n return '\\n\\n\\n\\n'\n }\n }\n\n return '\\n\\n'\n}\n","/**\n * @typedef {import('../types.js').IndentLines} IndentLines\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @type {IndentLines}\n */\nexport function indentLines(value, map) {\n /** @type {Array} */\n const result = []\n let start = 0\n let line = 0\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n /**\n * @param {string} value\n */\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n */\n\n/**\n * @param {Unsafe} pattern\n * @returns {RegExp}\n */\nexport function patternCompile(pattern) {\n if (!pattern._compiled) {\n const before =\n (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (pattern.after ? '(?:' + pattern.after + ')' : ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n","/**\n * @typedef {import('../types.js').Unsafe} Unsafe\n * @typedef {import('../types.js').ConstructName} ConstructName\n */\n\n/**\n * @param {Array} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').SafeConfig} SafeConfig\n */\n\nimport {patternCompile} from './pattern-compile.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What “constructs” we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {string | null | undefined} input\n * Raw value to make safe.\n * @param {SafeConfig} config\n * Configuration.\n * @returns {string}\n * Serialized markdown safe for embedding.\n */\nexport function safe(state, input, config) {\n const value = (config.before || '') + (input || '') + (config.after || '')\n /** @type {Array} */\n const positions = []\n /** @type {Array} */\n const result = []\n /** @type {Record} */\n const infos = {}\n let index = -1\n\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n\n if (!patternInScope(state.stack, pattern)) {\n continue\n }\n\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(value))) {\n const before = 'before' in pattern || Boolean(pattern.atBreak)\n const after = 'after' in pattern\n const position = match.index + (before ? match[1].length : 0)\n\n if (positions.includes(position)) {\n if (infos[position].before && !before) {\n infos[position].before = false\n }\n\n if (infos[position].after && !after) {\n infos[position].after = false\n }\n } else {\n positions.push(position)\n infos[position] = {before, after}\n }\n }\n }\n\n positions.sort(numerical)\n\n let start = config.before ? config.before.length : 0\n const end = value.length - (config.after ? config.after.length : 0)\n index = -1\n\n while (++index < positions.length) {\n const position = positions[index]\n\n // Character before or after matched:\n if (position < start || position >= end) {\n continue\n }\n\n // If this character is supposed to be escaped because it has a condition on\n // the next character, and the next character is definitly being escaped,\n // then skip this escape.\n if (\n (position + 1 < end &&\n positions[index + 1] === position + 1 &&\n infos[position].after &&\n !infos[position + 1].before &&\n !infos[position + 1].after) ||\n (positions[index - 1] === position - 1 &&\n infos[position].before &&\n !infos[position - 1].before &&\n !infos[position - 1].after)\n ) {\n continue\n }\n\n if (start !== position) {\n // If we have to use a character reference, an ampersand would be more\n // correct, but as backslashes only care about punctuation, either will\n // do the trick\n result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n }\n\n start = position\n\n if (\n /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n (!config.encode || !config.encode.includes(value.charAt(position)))\n ) {\n // Character escape.\n result.push('\\\\')\n } else {\n // Character reference.\n result.push(\n '' + value.charCodeAt(position).toString(16).toUpperCase() + ';'\n )\n start++\n }\n }\n\n result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n /** @type {Array} */\n const positions = []\n /** @type {Array} */\n const results = []\n const whole = value + after\n let index = -1\n let start = 0\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(whole))) {\n positions.push(match.index)\n }\n\n while (++index < positions.length) {\n if (start !== positions[index]) {\n results.push(value.slice(start, positions[index]))\n }\n\n results.push('\\\\')\n start = positions[index]\n }\n\n results.push(value.slice(start))\n\n return results.join('')\n}\n","/**\n * @typedef {import('../types.js').CreateTracker} CreateTracker\n * @typedef {import('../types.js').TrackCurrent} TrackCurrent\n * @typedef {import('../types.js').TrackMove} TrackMove\n * @typedef {import('../types.js').TrackShift} TrackShift\n */\n\n/**\n * Track positional info in the output.\n *\n * @type {CreateTracker}\n */\nexport function track(config) {\n // Defaults are used to prevent crashes when older utilities somehow activate\n // this code.\n /* c8 ignore next 5 */\n const options = config || {}\n const now = options.now || {}\n let lineShift = options.lineShift || 0\n let line = now.line || 1\n let column = now.column || 1\n\n return {move, current, shift}\n\n /**\n * Get the current tracked info.\n *\n * @type {TrackCurrent}\n */\n function current() {\n return {now: {line, column}, lineShift}\n }\n\n /**\n * Define an increased line shift (the typical indent for lines).\n *\n * @type {TrackShift}\n */\n function shift(value) {\n lineShift += value\n }\n\n /**\n * Move past some generated markdown.\n *\n * @type {TrackMove}\n */\n function move(input) {\n // eslint-disable-next-line unicorn/prefer-default-parameters\n const value = input || ''\n const chunks = value.split(/\\r?\\n|\\r/g)\n const tail = chunks[chunks.length - 1]\n line += chunks.length - 1\n column =\n chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n return value\n }\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n */\n\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {association} from 'mdast-util-to-markdown/lib/util/association.js'\nimport {containerFlow} from 'mdast-util-to-markdown/lib/util/container-flow.js'\nimport {indentLines} from 'mdast-util-to-markdown/lib/util/indent-lines.js'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n// To do: next major: rename `context` -> `state`, `safeOptions` to `info`, use\n// utilities on `state`.\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteDefinition: enterFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteCallString: enterFootnoteCallString\n },\n exit: {\n gfmFootnoteDefinition: exitFootnoteDefinition,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteCallString: exitFootnoteCallString\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown() {\n return {\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n handlers: {footnoteDefinition, footnoteReference}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n const label = this.resume()\n const node = /** @type {FootnoteDefinition} */ (\n this.stack[this.stack.length - 1]\n )\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteReference')\n const subexit = context.enter('reference')\n value += tracker.move(\n safe(context, association(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n let value = tracker.move('[^')\n const exit = context.enter('footnoteDefinition')\n const subexit = context.enter('label')\n value += tracker.move(\n safe(context, association(node), {\n ...tracker.current(),\n before: value,\n after: ']'\n })\n )\n subexit()\n value += tracker.move(\n ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n )\n tracker.shift(4)\n value += tracker.move(\n indentLines(containerFlow(node, context, tracker.current()), map)\n )\n exit()\n\n return value\n}\n\n/** @type {Map} */\nfunction map(line, index, blank) {\n if (index === 0) {\n return line\n }\n\n return (blank ? '' : ' ') + line\n}\n","/**\n * @typedef {import('../types.js').Handle} Handle\n * @typedef {import('../types.js').Info} Info\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').PhrasingContent} PhrasingContent\n * @typedef {import('../types.js').State} State\n */\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @param {Parent & {children: Array}} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {Info} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined together.\n */\nexport function containerPhrasing(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n /** @type {Array} */\n const results = []\n let index = -1\n let before = info.before\n\n indexStack.push(-1)\n let tracker = state.createTracker(info)\n\n while (++index < children.length) {\n const child = children[index]\n /** @type {string} */\n let after\n\n indexStack[indexStack.length - 1] = index\n\n if (index + 1 < children.length) {\n /** @type {Handle} */\n // @ts-expect-error: hush, it’s actually a `zwitch`.\n let handle = state.handle.handlers[children[index + 1].type]\n /** @type {Handle} */\n // @ts-expect-error: hush, it’s actually a `zwitch`.\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, state, {\n before: '',\n after: '',\n ...tracker.current()\n }).charAt(0)\n : ''\n } else {\n after = info.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we’d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can’t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: \n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n\n // To do: does this work to reset tracker?\n tracker = state.createTracker(info)\n tracker.move(results.join(''))\n }\n\n results.push(\n tracker.move(\n state.handle(child, parent, state, {\n ...tracker.current(),\n before,\n after\n })\n )\n )\n\n before = results[results.length - 1].slice(-1)\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n// To do: next major: expose functions.\n// To do: next major: use `state`, state utilities.\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: \n *\n * @type {Array}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmStrikethroughFromMarkdown = {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmStrikethroughToMarkdown = {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, context, safeOptions) {\n const tracker = track(safeOptions)\n const exit = context.enter('strikethrough')\n let value = tracker.move('~~')\n value += containerPhrasing(node, context, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n */\n\nimport {patternCompile} from '../util/pattern-compile.js'\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parent | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n","/**\n * @typedef Options\n * Configuration (optional).\n * @property {string|null|ReadonlyArray} [align]\n * One style for all columns, or styles for their respective columns.\n * Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n * Other values are treated as `''`, which doesn’t place the colon in the\n * alignment row but does align left.\n * *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n * Whether to add a space of padding between delimiters and cells.\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {boolean} [delimiterStart=true]\n * Whether to begin each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean} [delimiterEnd=true]\n * Whether to end each row with the delimiter.\n *\n * > 👉 **Note**: please don’t use this: it could create fragile structures\n * > that aren’t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean} [alignDelimiters=true]\n * Whether to align the delimiters.\n * By default, they are aligned:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {(value: string) => number} [stringLength]\n * Function to detect the length of table cell content.\n * This is used when aligning the delimiters (`|`) between table cells.\n * Full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source.\n * To fix this, you can pass this function, which receives the cell content\n * and returns its “visible” size.\n * Note that what is and isn’t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩❤️👩', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | 中文 | Charlie |\n * | 👩❤️👩 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['中文', 'Charlie'],\n * ['👩❤️👩', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | 中文 | Charlie |\n * | 👩❤️👩 | Delta |\n * ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n * Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {ReadonlyArray>} table\n * Table data (matrix of strings).\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {string}\n */\nexport function markdownTable(table, options = {}) {\n const align = (options.align || []).concat()\n const stringLength = options.stringLength || defaultStringLength\n /** @type {Array} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array>} Cells per row. */\n const cellMatrix = []\n /** @type {Array>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (options.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array} */\n const row = []\n /** @type {Array} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n options.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (options.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (options.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (options.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n options.padding !== false &&\n // Don’t add the opening space if we’re not aligning and the cell is\n // empty: there will be a closing space.\n !(options.alignDelimiters === false && cell === '') &&\n (options.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (options.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (options.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (options.padding !== false) {\n line.push(' ')\n }\n\n if (\n options.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n options.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n","/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').InlineCode} InlineCode\n *\n * @typedef {import('markdown-table').MarkdownTableOptions} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Context} ToMarkdownContext\n * @typedef {import('mdast-util-to-markdown').SafeOptions} SafeOptions\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells.\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters.\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells\n */\n\nimport {containerPhrasing} from 'mdast-util-to-markdown/lib/util/container-phrasing.js'\nimport {inlineCode} from 'mdast-util-to-markdown/lib/handle/inline-code.js'\nimport {markdownTable} from 'markdown-table'\n\n// To do: next major: use `state` and `state` utilities from `mdast-util-to-markdown`.\n// To do: next major: use `defaultHandlers.inlineCode`.\n// To do: next major: expose functions.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmTableFromMarkdown = {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n /** @type {Array<'left' | 'right' | 'center' | 'none'>} */\n // @ts-expect-error: `align` is custom.\n const align = token._align\n this.enter(\n {\n type: 'table',\n align: align.map((d) => (d === 'none' ? null : d)),\n children: []\n },\n token\n )\n this.setData('inTable', true)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.setData('inTable')\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.getData('inTable')) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = /** @type {InlineCode} */ (this.stack[this.stack.length - 1])\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don’t (but can’t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // \n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n table: handleTable,\n tableRow: handleTableRow,\n tableCell: handleTableCell,\n inlineCode: inlineCodeWithTable\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, context, safeOptions) {\n return serializeData(\n handleTableAsData(node, context, safeOptions),\n node.align\n )\n }\n\n /**\n * This function isn’t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, context, safeOptions) {\n const row = handleTableRowAsData(node, context, safeOptions)\n const value = serializeData([row])\n // `markdown-table` will always add an align row\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, context, safeOptions) {\n const exit = context.enter('tableCell')\n const subexit = context.enter('phrasing')\n const value = containerPhrasing(node, context, {\n ...safeOptions,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array>} matrix\n * @param {Array | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array>} */\n const result = []\n const subexit = context.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(\n children[index],\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {ToMarkdownContext} context\n * @param {SafeOptions} safeOptions\n */\n function handleTableRowAsData(node, context, safeOptions) {\n const children = node.children\n let index = -1\n /** @type {Array} */\n const result = []\n const subexit = context.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(\n children[index],\n node,\n context,\n safeOptions\n )\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, context) {\n let value = inlineCode(node, parent, context)\n\n if (context.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkBullet(state) {\n const marker = state.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n","/**\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Options} Options\n */\n\n/**\n * @param {State} state\n * @returns {Exclude}\n */\nexport function checkListItemIndent(state) {\n const style = state.options.listItemIndent || 'tab'\n\n // To do: remove in a major.\n // @ts-expect-error: deprecated.\n if (style === 1 || style === '1') {\n return 'one'\n }\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('../types.js').Map} Map\n * @typedef {import('../types.js').Parent} Parent\n * @typedef {import('../types.js').State} State\n * @typedef {import('../types.js').Info} Info\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parent | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (state.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n","/**\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\n/**\n * @typedef {Extract} Parents\n */\n\nimport {listItem} from 'mdast-util-to-markdown/lib/handle/list-item.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\n\n// To do: next major: rename `context` -> `state`, `safeOptions` -> `info`, use\n// `track` from `state`.\n// To do: next major: replace exports with functions.\n// To do: next major: use `defaulthandlers.listItem`.\n\n/**\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n *\n * @type {FromMarkdownExtension}\n */\nexport const gfmTaskListItemFromMarkdown = {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n}\n\n/**\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n *\n * @type {ToMarkdownExtension}\n */\nexport const gfmTaskListItemToMarkdown = {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n const node = /** @type {ListItem} */ (this.stack[this.stack.length - 2])\n // We’re always in a paragraph, in a list item.\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = /** @type {Parents} */ (this.stack[this.stack.length - 2])\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = /** @type {Paragraph} */ (this.stack[this.stack.length - 1])\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\n\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, context, safeOptions) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = track(safeOptions)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = listItem(node, parent, context, {\n ...safeOptions,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n * Configuration.\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown,\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown,\n gfmTableFromMarkdown,\n gfmTaskListItemFromMarkdown\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown,\n gfmFootnoteToMarkdown(),\n gfmStrikethroughToMarkdown,\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown\n ]\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-gfm').Options & import('mdast-util-gfm').Options} Options\n */\n\nimport {gfm} from 'micromark-extension-gfm'\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\n\n/**\n * Plugin to support GFM (autolink literals, footnotes, strikethrough, tables, tasklists).\n *\n * @type {import('unified').Plugin<[Options?]|void[], Root>}\n */\nexport default function remarkGfm(options = {}) {\n const data = this.data()\n\n add('micromarkExtensions', gfm(options))\n add('fromMarkdownExtensions', gfmFromMarkdown())\n add('toMarkdownExtensions', gfmToMarkdown(options))\n\n /**\n * @param {string} field\n * @param {unknown} value\n */\n function add(field, value) {\n const list = /** @type {unknown[]} */ (\n // Other extensions\n /* c8 ignore next 2 */\n data[field] ? data[field] : (data[field] = [])\n )\n\n list.push(value)\n }\n}\n","import remarkGfm from \"remark-gfm\";\nconst icons = {\n Strikethrough: '',\n CheckCorrect: '',\n InsertTable: ''\n};\nconst strike = \"Strikethrough\";\nconst strikeText = \"text\";\nconst table = \"Table\";\nconst tableHeading = \"Heading\";\nconst task = \"Task list\";\nconst taskText = \"todo\";\nconst en = {\n strike,\n strikeText,\n table,\n tableHeading,\n task,\n taskText\n};\nfunction gfm({\n locale: _locale,\n ...remarkGfmOptions\n} = {}) {\n const locale = { ...en, ..._locale };\n return {\n remark: (processor) => processor.use(remarkGfm, remarkGfmOptions),\n actions: [\n {\n title: locale.strike,\n icon: icons.Strikethrough,\n cheatsheet: `~~${locale.strikeText}~~`,\n handler: {\n type: \"action\",\n click({ wrapText, editor }) {\n wrapText(\"~~\");\n editor.focus();\n }\n }\n },\n {\n title: locale.task,\n icon: icons.CheckCorrect,\n cheatsheet: `- [ ] ${locale.taskText}`,\n handler: {\n type: \"action\",\n click({ replaceLines, editor }) {\n replaceLines((line) => \"- [ ] \" + line);\n editor.focus();\n }\n }\n },\n {\n title: locale.table,\n icon: icons.InsertTable,\n handler: {\n type: \"action\",\n click({ editor, appendBlock, codemirror }) {\n const { line } = appendBlock(\n `| ${locale.tableHeading} | |\n| --- | --- |\n| | |\n`\n );\n editor.setSelection(\n codemirror.Pos(line, 2),\n codemirror.Pos(line, 2 + locale.tableHeading.length)\n );\n editor.focus();\n }\n }\n }\n ]\n };\n}\nexport {\n gfm as default\n};\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const mathFlow = {\n tokenize: tokenizeMathFenced,\n concrete: true\n}\n\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeMathFenced(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n const initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n return start\n\n /**\n * Start of math.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('mathFlow')\n effects.enter('mathFlowFence')\n effects.enter('mathFlowFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 36) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n if (sizeOpen < 2) {\n return nok(code)\n }\n effects.exit('mathFlowFenceSequence')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n\n /**\n * In opening fence, before meta.\n *\n * ```markdown\n * > | $$asciimath\n * ^\n * | x < y\n * | $$\n * ```\n *\n * @type {State}\n */\n\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return metaAfter(code)\n }\n effects.enter('mathFlowFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | $$asciimath\n * ^\n * | x < y\n * | $$\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('mathFlowFenceMeta')\n return metaAfter(code)\n }\n if (code === 36) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * After meta.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function metaAfter(code) {\n // Guaranteed to be eol/eof.\n effects.exit('mathFlowFence')\n if (self.interrupt) {\n return ok(code)\n }\n return effects.attempt(\n nonLazyContinuation,\n beforeNonLazyContinuation,\n after\n )(code)\n }\n\n /**\n * After eol/eof in math, at a non-lazy closing fence or content.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeNonLazyContinuation(code) {\n return effects.attempt(\n {\n tokenize: tokenizeClosingFence,\n partial: true\n },\n after,\n contentStart\n )(code)\n }\n\n /**\n * Before math content, definitely not before a closing fence.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return (\n initialSize\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialSize + 1\n )\n : beforeContentChunk\n )(code)\n }\n\n /**\n * Before math content, after optional prefix.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null) {\n return after(code)\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyContinuation,\n beforeNonLazyContinuation,\n after\n )(code)\n }\n effects.enter('mathFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In math content.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('mathFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After math (ha!).\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('mathFlow')\n return ok(code)\n }\n\n /** @type {Tokenizer} */\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n */\n return factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n effects.enter('mathFlowFence')\n effects.enter('mathFlowFenceSequence')\n return sequenceClose(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === 36) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size < sizeOpen) {\n return nok(code)\n }\n effects.exit('mathFlowFenceSequence')\n return factorySpace(effects, afterSequenceClose, 'whitespace')(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function afterSequenceClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('mathFlowFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /** @type {State} */\n function start(code) {\n if (code === null) {\n return ok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /** @type {State} */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n *\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [singleDollarTextMath=true]\n * Whether to support math (text) with a single dollar.\n * Single dollars work in Pandoc and many other places, but often interfere\n * with “normal” dollars in text.\n * If you turn this off, you can use two or more dollars for text math.\n\n */\n\n// To do: next major: clean spaces in HTML compiler.\n// This has to be coordinated together with `mdast-util-math`.\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/**\n * @param {Options | null | undefined} [options]\n * @returns {Construct}\n */\nexport function mathText(options) {\n const options_ = options || {}\n let single = options_.singleDollarTextMath\n if (single === null || single === undefined) {\n single = true\n }\n return {\n tokenize: tokenizeMathText,\n resolve: resolveMathText,\n previous\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeMathText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of math (text).\n *\n * ```markdown\n * > | $a$\n * ^\n * > | \\$a$\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('mathText')\n effects.enter('mathTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | $a$\n * ^\n * ```\n *\n * @type {State}\n */\n\n function sequenceOpen(code) {\n if (code === 36) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n // Not enough markers in the sequence.\n if (sizeOpen < 2 && !single) {\n return nok(code)\n }\n effects.exit('mathTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | $a$\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 36) {\n token = effects.enter('mathTextSequence')\n size = 0\n return sequenceClose(code)\n }\n\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('mathTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | $a$\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 36 ||\n markdownLineEnding(code)\n ) {\n effects.exit('mathTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n\n function sequenceClose(code) {\n // More.\n if (code === 36) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('mathTextSequence')\n effects.exit('mathText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'mathTextData'\n return data(code)\n }\n }\n}\n\n/** @type {Resolver} */\nfunction resolveMathText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'mathTextData') {\n // Then we have padding.\n events[tailExitIndex][1].type = 'mathTextPadding'\n events[headEnterIndex][1].type = 'mathTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'mathTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 36 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('./math-text.js').Options} Options\n */\n\nimport {mathFlow} from './math-flow.js'\nimport {mathText} from './math-text.js'\n\n/**\n * Create an extension for `micromark` to enable math syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable math syntax.\n */\nexport function math(options) {\n return {\n flow: {\n [36]: mathFlow\n },\n text: {\n [36]: mathText(options)\n }\n }\n}\n","/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n * Content to search in.\n * @param {string} substring\n * Substring to look for, typically one character.\n * @returns {number}\n * Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n const source = String(value)\n let index = source.indexOf(substring)\n let expected = index\n let count = 0\n let max = 0\n\n if (typeof substring !== 'string') {\n throw new TypeError('Expected substring')\n }\n\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count\n }\n } else {\n count = 1\n }\n\n expected = index + substring.length\n index = source.indexOf(substring, expected)\n }\n\n return max\n}\n","/**\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('../index.js').Math} Math\n * @typedef {import('../index.js').InlineMath} InlineMath\n *\n * @typedef ToOptions\n * Configuration.\n * @property {boolean | null | undefined} [singleDollarTextMath=true]\n * Whether to support math (text) with a single dollar.\n *\n * Single dollars work in Pandoc and many other places, but often interfere\n * with “normal” dollars in text.\n * If you turn this off, you can still use two or more dollars for text math.\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {safe} from 'mdast-util-to-markdown/lib/util/safe.js'\nimport {track} from 'mdast-util-to-markdown/lib/util/track.js'\nimport {patternCompile} from 'mdast-util-to-markdown/lib/util/pattern-compile.js'\n\n/**\n * Create an extension for `mdast-util-from-markdown`.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function mathFromMarkdown() {\n return {\n enter: {\n mathFlow: enterMathFlow,\n mathFlowFenceMeta: enterMathFlowMeta,\n mathText: enterMathText\n },\n exit: {\n mathFlow: exitMathFlow,\n mathFlowFence: exitMathFlowFence,\n mathFlowFenceMeta: exitMathFlowMeta,\n mathFlowValue: exitMathData,\n mathText: exitMathText,\n mathTextData: exitMathData\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathFlow(token) {\n this.enter(\n {\n type: 'math',\n meta: null,\n value: '',\n data: {\n hName: 'div',\n hProperties: {className: ['math', 'math-display']},\n hChildren: [{type: 'text', value: ''}]\n }\n },\n token\n )\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathFlowMeta() {\n this.buffer()\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlowMeta() {\n const data = this.resume()\n const node = /** @type {Math} */ (this.stack[this.stack.length - 1])\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlowFence() {\n // Exit if this is the closing fence.\n if (this.getData('mathFlowInside')) return\n this.buffer()\n this.setData('mathFlowInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlow(token) {\n const data = this.resume().replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n const node = /** @type {Math} */ (this.exit(token))\n node.value = data\n // @ts-expect-error: we defined it.\n node.data.hChildren[0].value = data\n this.setData('mathFlowInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathText(token) {\n this.enter(\n {\n type: 'inlineMath',\n value: '',\n data: {\n hName: 'span',\n hProperties: {className: ['math', 'math-inline']},\n hChildren: [{type: 'text', value: ''}]\n }\n },\n token\n )\n this.buffer()\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathText(token) {\n const data = this.resume()\n const node = /** @type {Math} */ (this.exit(token))\n node.value = data\n // @ts-expect-error: we defined it.\n node.data.hChildren[0].value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathData(token) {\n this.config.enter.data.call(this, token)\n this.config.exit.data.call(this, token)\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown`.\n *\n * @param {ToOptions | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function mathToMarkdown(options) {\n let single = (options || {}).singleDollarTextMath\n\n if (single === null || single === undefined) {\n single = true\n }\n\n inlineMath.peek = inlineMathPeek\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'mathFlowMeta'},\n {character: '\\n', inConstruct: 'mathFlowMeta'},\n {\n character: '$',\n after: single ? undefined : '\\\\$',\n inConstruct: 'phrasing'\n },\n {character: '$', inConstruct: 'mathFlowMeta'},\n {atBreak: true, character: '$', after: '\\\\$'}\n ],\n handlers: {math, inlineMath}\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Math} node\n */\n // To do: next major: rename `context` to state, `safeOptions` to info.\n // Note: fixing this code? Please also fix the similar code for code:\n // \n function math(node, _, context, safeOptions) {\n const raw = node.value || ''\n const tracker = track(safeOptions)\n const sequence = '$'.repeat(Math.max(longestStreak(raw, '$') + 1, 2))\n const exit = context.enter('mathFlow')\n let value = tracker.move(sequence)\n\n if (node.meta) {\n const subexit = context.enter('mathFlowMeta')\n value += tracker.move(\n safe(context, node.meta, {\n before: value,\n after: '\\n',\n encode: ['$'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineMath} node\n */\n // Note: fixing this code? Please also fix the similar code for inline code:\n // \n //\n // To do: next major: rename `context` to state.\n // To do: next major: use `state` (`safe`, `track`, `patternCompile`).\n function inlineMath(node, _, context) {\n let value = node.value || ''\n let size = 1\n\n if (!single) size++\n\n // If there is a single dollar sign on its own in the math, use a fence of\n // two.\n // If there are two in a row, use one.\n while (\n new RegExp('(^|[^$])' + '\\\\$'.repeat(size) + '([^$]|$)').test(value)\n ) {\n size++\n }\n\n const sequence = '$'.repeat(size)\n\n // If this is not just spaces or eols (tabs don’t count), and either the\n // first and last character are a space or eol, or the first or last\n // character are dollar signs, then pad with spaces.\n if (\n // Contains non-space.\n /[^ \\r\\n]/.test(value) &&\n // Starts with space and ends with space.\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) ||\n // Starts or ends with dollar.\n /^\\$|\\$$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n let index = -1\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can’t escape characters in `inlineMath`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < context.unsafe.length) {\n const pattern = context.unsafe[index]\n const expression = patternCompile(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.codePointAt(position) === 10 /* `\\n` */ &&\n value.codePointAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n }\n\n /**\n * @returns {string}\n */\n function inlineMathPeek() {\n return '$'\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-math').ToOptions} Options\n *\n * @typedef {import('mdast-util-math')} DoNotTouchAsThisImportIncludesMathInTree\n */\n\nimport {math} from 'micromark-extension-math'\nimport {mathFromMarkdown, mathToMarkdown} from 'mdast-util-math'\n\n/**\n * Plugin to support math.\n *\n * @type {import('unified').Plugin<[Options?] | void[], Root, Root>}\n */\nexport default function remarkMath(options = {}) {\n const data = this.data()\n\n add('micromarkExtensions', math(options))\n add('fromMarkdownExtensions', mathFromMarkdown())\n add('toMarkdownExtensions', mathToMarkdown(options))\n\n /**\n * @param {string} field\n * @param {unknown} value\n */\n function add(field, value) {\n const list = /** @type {unknown[]} */ (\n // Other extensions\n /* c8 ignore next 2 */\n data[field] ? data[field] : (data[field] = [])\n )\n\n list.push(value)\n }\n}\n","import remarkMath from \"remark-math\";\nconst block = \"Block formula\";\nconst blockText = \"formula\";\nconst inline = \"Inline formula\";\nconst inlineText = \"formula\";\nconst en = {\n block,\n blockText,\n inline,\n inlineText\n};\nconst icons = {\n Formula: '',\n Inline: '',\n Block: ''\n};\nfunction getMathActions(locale) {\n return [\n {\n icon: icons.Formula,\n handler: {\n type: \"dropdown\",\n actions: [\n {\n title: locale.inline,\n icon: icons.Inline,\n cheatsheet: `$${locale.inlineText}$`,\n handler: {\n type: \"action\",\n click({ wrapText, editor }) {\n wrapText(\"$\");\n editor.focus();\n }\n }\n },\n {\n title: locale.block,\n icon: icons.Block,\n cheatsheet: `$$↵${locale.blockText}↵$$`,\n handler: {\n type: \"action\",\n click({ appendBlock, editor, codemirror }) {\n const { line } = appendBlock(\"$$\\n\\\\TeX\\n$$\");\n editor.setSelection(\n codemirror.Pos(line + 1, 0),\n codemirror.Pos(line + 1, 4)\n );\n editor.focus();\n }\n }\n }\n ]\n }\n }\n ];\n}\nfunction math({\n locale: _locale,\n katexOptions\n} = {}) {\n const locale = { ...en, ..._locale };\n let katex;\n return {\n remark: (processor) => processor.use(remarkMath),\n viewerEffect({ markdownBody }) {\n const renderMath = async (selector, displayMode) => {\n const els = markdownBody.querySelectorAll(selector);\n if (els.length === 0)\n return;\n if (!katex) {\n katex = await import(\"katex\").then((m) => m.default);\n }\n els.forEach((el) => {\n katex.render(el.innerText, el, {\n ...katexOptions,\n throwOnError: false,\n displayMode\n });\n });\n };\n renderMath(\".math.math-inline\", false);\n renderMath(\".math.math-display\", true);\n },\n actions: getMathActions(locale)\n };\n}\nexport {\n math as default\n};\n","/**\n * @typedef Gemoji\n * @property {string} emoji\n * Example: `'😀'`.\n * @property {Array} names\n * Example: `['grinning']`.\n * @property {Array} tags\n * Example: `['smile', 'happy']`.\n * @property {string} description\n * Example: `'grinning face'`.\n * @property {string} category\n * Example: `'Smileys & Emotion'`.\n */\n\n/**\n * List of gemoji.\n *\n * @type {Array}\n */\nexport const gemoji = [\n {\n emoji: '😀',\n names: ['grinning'],\n tags: ['smile', 'happy'],\n description: 'grinning face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😃',\n names: ['smiley'],\n tags: ['happy', 'joy', 'haha'],\n description: 'grinning face with big eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😄',\n names: ['smile'],\n tags: ['happy', 'joy', 'laugh', 'pleased'],\n description: 'grinning face with smiling eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😁',\n names: ['grin'],\n tags: [],\n description: 'beaming face with smiling eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😆',\n names: ['laughing', 'satisfied'],\n tags: ['happy', 'haha'],\n description: 'grinning squinting face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😅',\n names: ['sweat_smile'],\n tags: ['hot'],\n description: 'grinning face with sweat',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤣',\n names: ['rofl'],\n tags: ['lol', 'laughing'],\n description: 'rolling on the floor laughing',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😂',\n names: ['joy'],\n tags: ['tears'],\n description: 'face with tears of joy',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🙂',\n names: ['slightly_smiling_face'],\n tags: [],\n description: 'slightly smiling face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🙃',\n names: ['upside_down_face'],\n tags: [],\n description: 'upside-down face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😉',\n names: ['wink'],\n tags: ['flirt'],\n description: 'winking face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😊',\n names: ['blush'],\n tags: ['proud'],\n description: 'smiling face with smiling eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😇',\n names: ['innocent'],\n tags: ['angel'],\n description: 'smiling face with halo',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥰',\n names: ['smiling_face_with_three_hearts'],\n tags: ['love'],\n description: 'smiling face with hearts',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😍',\n names: ['heart_eyes'],\n tags: ['love', 'crush'],\n description: 'smiling face with heart-eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤩',\n names: ['star_struck'],\n tags: ['eyes'],\n description: 'star-struck',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😘',\n names: ['kissing_heart'],\n tags: ['flirt'],\n description: 'face blowing a kiss',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😗',\n names: ['kissing'],\n tags: [],\n description: 'kissing face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '☺️',\n names: ['relaxed'],\n tags: ['blush', 'pleased'],\n description: 'smiling face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😚',\n names: ['kissing_closed_eyes'],\n tags: [],\n description: 'kissing face with closed eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😙',\n names: ['kissing_smiling_eyes'],\n tags: [],\n description: 'kissing face with smiling eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥲',\n names: ['smiling_face_with_tear'],\n tags: [],\n description: 'smiling face with tear',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😋',\n names: ['yum'],\n tags: ['tongue', 'lick'],\n description: 'face savoring food',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😛',\n names: ['stuck_out_tongue'],\n tags: [],\n description: 'face with tongue',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😜',\n names: ['stuck_out_tongue_winking_eye'],\n tags: ['prank', 'silly'],\n description: 'winking face with tongue',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤪',\n names: ['zany_face'],\n tags: ['goofy', 'wacky'],\n description: 'zany face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😝',\n names: ['stuck_out_tongue_closed_eyes'],\n tags: ['prank'],\n description: 'squinting face with tongue',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤑',\n names: ['money_mouth_face'],\n tags: ['rich'],\n description: 'money-mouth face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤗',\n names: ['hugs'],\n tags: [],\n description: 'hugging face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤭',\n names: ['hand_over_mouth'],\n tags: ['quiet', 'whoops'],\n description: 'face with hand over mouth',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤫',\n names: ['shushing_face'],\n tags: ['silence', 'quiet'],\n description: 'shushing face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤔',\n names: ['thinking'],\n tags: [],\n description: 'thinking face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤐',\n names: ['zipper_mouth_face'],\n tags: ['silence', 'hush'],\n description: 'zipper-mouth face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤨',\n names: ['raised_eyebrow'],\n tags: ['suspicious'],\n description: 'face with raised eyebrow',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😐',\n names: ['neutral_face'],\n tags: ['meh'],\n description: 'neutral face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😑',\n names: ['expressionless'],\n tags: [],\n description: 'expressionless face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😶',\n names: ['no_mouth'],\n tags: ['mute', 'silence'],\n description: 'face without mouth',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😶🌫️',\n names: ['face_in_clouds'],\n tags: [],\n description: 'face in clouds',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😏',\n names: ['smirk'],\n tags: ['smug'],\n description: 'smirking face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😒',\n names: ['unamused'],\n tags: ['meh'],\n description: 'unamused face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🙄',\n names: ['roll_eyes'],\n tags: [],\n description: 'face with rolling eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😬',\n names: ['grimacing'],\n tags: [],\n description: 'grimacing face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😮💨',\n names: ['face_exhaling'],\n tags: [],\n description: 'face exhaling',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤥',\n names: ['lying_face'],\n tags: ['liar'],\n description: 'lying face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😌',\n names: ['relieved'],\n tags: ['whew'],\n description: 'relieved face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😔',\n names: ['pensive'],\n tags: [],\n description: 'pensive face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😪',\n names: ['sleepy'],\n tags: ['tired'],\n description: 'sleepy face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤤',\n names: ['drooling_face'],\n tags: [],\n description: 'drooling face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😴',\n names: ['sleeping'],\n tags: ['zzz'],\n description: 'sleeping face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😷',\n names: ['mask'],\n tags: ['sick', 'ill'],\n description: 'face with medical mask',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤒',\n names: ['face_with_thermometer'],\n tags: ['sick'],\n description: 'face with thermometer',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤕',\n names: ['face_with_head_bandage'],\n tags: ['hurt'],\n description: 'face with head-bandage',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤢',\n names: ['nauseated_face'],\n tags: ['sick', 'barf', 'disgusted'],\n description: 'nauseated face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤮',\n names: ['vomiting_face'],\n tags: ['barf', 'sick'],\n description: 'face vomiting',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤧',\n names: ['sneezing_face'],\n tags: ['achoo', 'sick'],\n description: 'sneezing face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥵',\n names: ['hot_face'],\n tags: ['heat', 'sweating'],\n description: 'hot face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥶',\n names: ['cold_face'],\n tags: ['freezing', 'ice'],\n description: 'cold face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥴',\n names: ['woozy_face'],\n tags: ['groggy'],\n description: 'woozy face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😵',\n names: ['dizzy_face'],\n tags: [],\n description: 'knocked-out face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😵💫',\n names: ['face_with_spiral_eyes'],\n tags: [],\n description: 'face with spiral eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤯',\n names: ['exploding_head'],\n tags: ['mind', 'blown'],\n description: 'exploding head',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤠',\n names: ['cowboy_hat_face'],\n tags: [],\n description: 'cowboy hat face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥳',\n names: ['partying_face'],\n tags: ['celebration', 'birthday'],\n description: 'partying face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥸',\n names: ['disguised_face'],\n tags: [],\n description: 'disguised face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😎',\n names: ['sunglasses'],\n tags: ['cool'],\n description: 'smiling face with sunglasses',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤓',\n names: ['nerd_face'],\n tags: ['geek', 'glasses'],\n description: 'nerd face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🧐',\n names: ['monocle_face'],\n tags: [],\n description: 'face with monocle',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😕',\n names: ['confused'],\n tags: [],\n description: 'confused face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😟',\n names: ['worried'],\n tags: ['nervous'],\n description: 'worried face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🙁',\n names: ['slightly_frowning_face'],\n tags: [],\n description: 'slightly frowning face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '☹️',\n names: ['frowning_face'],\n tags: [],\n description: 'frowning face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😮',\n names: ['open_mouth'],\n tags: ['surprise', 'impressed', 'wow'],\n description: 'face with open mouth',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😯',\n names: ['hushed'],\n tags: ['silence', 'speechless'],\n description: 'hushed face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😲',\n names: ['astonished'],\n tags: ['amazed', 'gasp'],\n description: 'astonished face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😳',\n names: ['flushed'],\n tags: [],\n description: 'flushed face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥺',\n names: ['pleading_face'],\n tags: ['puppy', 'eyes'],\n description: 'pleading face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😦',\n names: ['frowning'],\n tags: [],\n description: 'frowning face with open mouth',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😧',\n names: ['anguished'],\n tags: ['stunned'],\n description: 'anguished face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😨',\n names: ['fearful'],\n tags: ['scared', 'shocked', 'oops'],\n description: 'fearful face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😰',\n names: ['cold_sweat'],\n tags: ['nervous'],\n description: 'anxious face with sweat',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😥',\n names: ['disappointed_relieved'],\n tags: ['phew', 'sweat', 'nervous'],\n description: 'sad but relieved face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😢',\n names: ['cry'],\n tags: ['sad', 'tear'],\n description: 'crying face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😭',\n names: ['sob'],\n tags: ['sad', 'cry', 'bawling'],\n description: 'loudly crying face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😱',\n names: ['scream'],\n tags: ['horror', 'shocked'],\n description: 'face screaming in fear',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😖',\n names: ['confounded'],\n tags: [],\n description: 'confounded face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😣',\n names: ['persevere'],\n tags: ['struggling'],\n description: 'persevering face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😞',\n names: ['disappointed'],\n tags: ['sad'],\n description: 'disappointed face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😓',\n names: ['sweat'],\n tags: [],\n description: 'downcast face with sweat',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😩',\n names: ['weary'],\n tags: ['tired'],\n description: 'weary face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😫',\n names: ['tired_face'],\n tags: ['upset', 'whine'],\n description: 'tired face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🥱',\n names: ['yawning_face'],\n tags: [],\n description: 'yawning face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😤',\n names: ['triumph'],\n tags: ['smug'],\n description: 'face with steam from nose',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😡',\n names: ['rage', 'pout'],\n tags: ['angry'],\n description: 'pouting face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😠',\n names: ['angry'],\n tags: ['mad', 'annoyed'],\n description: 'angry face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤬',\n names: ['cursing_face'],\n tags: ['foul'],\n description: 'face with symbols on mouth',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😈',\n names: ['smiling_imp'],\n tags: ['devil', 'evil', 'horns'],\n description: 'smiling face with horns',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '👿',\n names: ['imp'],\n tags: ['angry', 'devil', 'evil', 'horns'],\n description: 'angry face with horns',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💀',\n names: ['skull'],\n tags: ['dead', 'danger', 'poison'],\n description: 'skull',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '☠️',\n names: ['skull_and_crossbones'],\n tags: ['danger', 'pirate'],\n description: 'skull and crossbones',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💩',\n names: ['hankey', 'poop', 'shit'],\n tags: ['crap'],\n description: 'pile of poo',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤡',\n names: ['clown_face'],\n tags: [],\n description: 'clown face',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '👹',\n names: ['japanese_ogre'],\n tags: ['monster'],\n description: 'ogre',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '👺',\n names: ['japanese_goblin'],\n tags: [],\n description: 'goblin',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '👻',\n names: ['ghost'],\n tags: ['halloween'],\n description: 'ghost',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '👽',\n names: ['alien'],\n tags: ['ufo'],\n description: 'alien',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '👾',\n names: ['space_invader'],\n tags: ['game', 'retro'],\n description: 'alien monster',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤖',\n names: ['robot'],\n tags: [],\n description: 'robot',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😺',\n names: ['smiley_cat'],\n tags: [],\n description: 'grinning cat',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😸',\n names: ['smile_cat'],\n tags: [],\n description: 'grinning cat with smiling eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😹',\n names: ['joy_cat'],\n tags: [],\n description: 'cat with tears of joy',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😻',\n names: ['heart_eyes_cat'],\n tags: [],\n description: 'smiling cat with heart-eyes',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😼',\n names: ['smirk_cat'],\n tags: [],\n description: 'cat with wry smile',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😽',\n names: ['kissing_cat'],\n tags: [],\n description: 'kissing cat',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🙀',\n names: ['scream_cat'],\n tags: ['horror'],\n description: 'weary cat',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😿',\n names: ['crying_cat_face'],\n tags: ['sad', 'tear'],\n description: 'crying cat',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '😾',\n names: ['pouting_cat'],\n tags: [],\n description: 'pouting cat',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🙈',\n names: ['see_no_evil'],\n tags: ['monkey', 'blind', 'ignore'],\n description: 'see-no-evil monkey',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🙉',\n names: ['hear_no_evil'],\n tags: ['monkey', 'deaf'],\n description: 'hear-no-evil monkey',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🙊',\n names: ['speak_no_evil'],\n tags: ['monkey', 'mute', 'hush'],\n description: 'speak-no-evil monkey',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💋',\n names: ['kiss'],\n tags: ['lipstick'],\n description: 'kiss mark',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💌',\n names: ['love_letter'],\n tags: ['email', 'envelope'],\n description: 'love letter',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💘',\n names: ['cupid'],\n tags: ['love', 'heart'],\n description: 'heart with arrow',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💝',\n names: ['gift_heart'],\n tags: ['chocolates'],\n description: 'heart with ribbon',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💖',\n names: ['sparkling_heart'],\n tags: [],\n description: 'sparkling heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💗',\n names: ['heartpulse'],\n tags: [],\n description: 'growing heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💓',\n names: ['heartbeat'],\n tags: [],\n description: 'beating heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💞',\n names: ['revolving_hearts'],\n tags: [],\n description: 'revolving hearts',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💕',\n names: ['two_hearts'],\n tags: [],\n description: 'two hearts',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💟',\n names: ['heart_decoration'],\n tags: [],\n description: 'heart decoration',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '❣️',\n names: ['heavy_heart_exclamation'],\n tags: [],\n description: 'heart exclamation',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💔',\n names: ['broken_heart'],\n tags: [],\n description: 'broken heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '❤️🔥',\n names: ['heart_on_fire'],\n tags: [],\n description: 'heart on fire',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '❤️🩹',\n names: ['mending_heart'],\n tags: [],\n description: 'mending heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '❤️',\n names: ['heart'],\n tags: ['love'],\n description: 'red heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🧡',\n names: ['orange_heart'],\n tags: [],\n description: 'orange heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💛',\n names: ['yellow_heart'],\n tags: [],\n description: 'yellow heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💚',\n names: ['green_heart'],\n tags: [],\n description: 'green heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💙',\n names: ['blue_heart'],\n tags: [],\n description: 'blue heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💜',\n names: ['purple_heart'],\n tags: [],\n description: 'purple heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤎',\n names: ['brown_heart'],\n tags: [],\n description: 'brown heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🖤',\n names: ['black_heart'],\n tags: [],\n description: 'black heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🤍',\n names: ['white_heart'],\n tags: [],\n description: 'white heart',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💯',\n names: ['100'],\n tags: ['score', 'perfect'],\n description: 'hundred points',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💢',\n names: ['anger'],\n tags: ['angry'],\n description: 'anger symbol',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💥',\n names: ['boom', 'collision'],\n tags: ['explode'],\n description: 'collision',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💫',\n names: ['dizzy'],\n tags: ['star'],\n description: 'dizzy',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💦',\n names: ['sweat_drops'],\n tags: ['water', 'workout'],\n description: 'sweat droplets',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💨',\n names: ['dash'],\n tags: ['wind', 'blow', 'fast'],\n description: 'dashing away',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🕳️',\n names: ['hole'],\n tags: [],\n description: 'hole',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💣',\n names: ['bomb'],\n tags: ['boom'],\n description: 'bomb',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💬',\n names: ['speech_balloon'],\n tags: ['comment'],\n description: 'speech balloon',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '👁️🗨️',\n names: ['eye_speech_bubble'],\n tags: [],\n description: 'eye in speech bubble',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🗨️',\n names: ['left_speech_bubble'],\n tags: [],\n description: 'left speech bubble',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '🗯️',\n names: ['right_anger_bubble'],\n tags: [],\n description: 'right anger bubble',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💭',\n names: ['thought_balloon'],\n tags: ['thinking'],\n description: 'thought balloon',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '💤',\n names: ['zzz'],\n tags: ['sleeping'],\n description: 'zzz',\n category: 'Smileys & Emotion'\n },\n {\n emoji: '👋',\n names: ['wave'],\n tags: ['goodbye'],\n description: 'waving hand',\n category: 'People & Body'\n },\n {\n emoji: '🤚',\n names: ['raised_back_of_hand'],\n tags: [],\n description: 'raised back of hand',\n category: 'People & Body'\n },\n {\n emoji: '🖐️',\n names: ['raised_hand_with_fingers_splayed'],\n tags: [],\n description: 'hand with fingers splayed',\n category: 'People & Body'\n },\n {\n emoji: '✋',\n names: ['hand', 'raised_hand'],\n tags: ['highfive', 'stop'],\n description: 'raised hand',\n category: 'People & Body'\n },\n {\n emoji: '🖖',\n names: ['vulcan_salute'],\n tags: ['prosper', 'spock'],\n description: 'vulcan salute',\n category: 'People & Body'\n },\n {\n emoji: '👌',\n names: ['ok_hand'],\n tags: [],\n description: 'OK hand',\n category: 'People & Body'\n },\n {\n emoji: '🤌',\n names: ['pinched_fingers'],\n tags: [],\n description: 'pinched fingers',\n category: 'People & Body'\n },\n {\n emoji: '🤏',\n names: ['pinching_hand'],\n tags: [],\n description: 'pinching hand',\n category: 'People & Body'\n },\n {\n emoji: '✌️',\n names: ['v'],\n tags: ['victory', 'peace'],\n description: 'victory hand',\n category: 'People & Body'\n },\n {\n emoji: '🤞',\n names: ['crossed_fingers'],\n tags: ['luck', 'hopeful'],\n description: 'crossed fingers',\n category: 'People & Body'\n },\n {\n emoji: '🤟',\n names: ['love_you_gesture'],\n tags: [],\n description: 'love-you gesture',\n category: 'People & Body'\n },\n {\n emoji: '🤘',\n names: ['metal'],\n tags: [],\n description: 'sign of the horns',\n category: 'People & Body'\n },\n {\n emoji: '🤙',\n names: ['call_me_hand'],\n tags: [],\n description: 'call me hand',\n category: 'People & Body'\n },\n {\n emoji: '👈',\n names: ['point_left'],\n tags: [],\n description: 'backhand index pointing left',\n category: 'People & Body'\n },\n {\n emoji: '👉',\n names: ['point_right'],\n tags: [],\n description: 'backhand index pointing right',\n category: 'People & Body'\n },\n {\n emoji: '👆',\n names: ['point_up_2'],\n tags: [],\n description: 'backhand index pointing up',\n category: 'People & Body'\n },\n {\n emoji: '🖕',\n names: ['middle_finger', 'fu'],\n tags: [],\n description: 'middle finger',\n category: 'People & Body'\n },\n {\n emoji: '👇',\n names: ['point_down'],\n tags: [],\n description: 'backhand index pointing down',\n category: 'People & Body'\n },\n {\n emoji: '☝️',\n names: ['point_up'],\n tags: [],\n description: 'index pointing up',\n category: 'People & Body'\n },\n {\n emoji: '👍',\n names: ['+1', 'thumbsup'],\n tags: ['approve', 'ok'],\n description: 'thumbs up',\n category: 'People & Body'\n },\n {\n emoji: '👎',\n names: ['-1', 'thumbsdown'],\n tags: ['disapprove', 'bury'],\n description: 'thumbs down',\n category: 'People & Body'\n },\n {\n emoji: '✊',\n names: ['fist_raised', 'fist'],\n tags: ['power'],\n description: 'raised fist',\n category: 'People & Body'\n },\n {\n emoji: '👊',\n names: ['fist_oncoming', 'facepunch', 'punch'],\n tags: ['attack'],\n description: 'oncoming fist',\n category: 'People & Body'\n },\n {\n emoji: '🤛',\n names: ['fist_left'],\n tags: [],\n description: 'left-facing fist',\n category: 'People & Body'\n },\n {\n emoji: '🤜',\n names: ['fist_right'],\n tags: [],\n description: 'right-facing fist',\n category: 'People & Body'\n },\n {\n emoji: '👏',\n names: ['clap'],\n tags: ['praise', 'applause'],\n description: 'clapping hands',\n category: 'People & Body'\n },\n {\n emoji: '🙌',\n names: ['raised_hands'],\n tags: ['hooray'],\n description: 'raising hands',\n category: 'People & Body'\n },\n {\n emoji: '👐',\n names: ['open_hands'],\n tags: [],\n description: 'open hands',\n category: 'People & Body'\n },\n {\n emoji: '🤲',\n names: ['palms_up_together'],\n tags: [],\n description: 'palms up together',\n category: 'People & Body'\n },\n {\n emoji: '🤝',\n names: ['handshake'],\n tags: ['deal'],\n description: 'handshake',\n category: 'People & Body'\n },\n {\n emoji: '🙏',\n names: ['pray'],\n tags: ['please', 'hope', 'wish'],\n description: 'folded hands',\n category: 'People & Body'\n },\n {\n emoji: '✍️',\n names: ['writing_hand'],\n tags: [],\n description: 'writing hand',\n category: 'People & Body'\n },\n {\n emoji: '💅',\n names: ['nail_care'],\n tags: ['beauty', 'manicure'],\n description: 'nail polish',\n category: 'People & Body'\n },\n {\n emoji: '🤳',\n names: ['selfie'],\n tags: [],\n description: 'selfie',\n category: 'People & Body'\n },\n {\n emoji: '💪',\n names: ['muscle'],\n tags: ['flex', 'bicep', 'strong', 'workout'],\n description: 'flexed biceps',\n category: 'People & Body'\n },\n {\n emoji: '🦾',\n names: ['mechanical_arm'],\n tags: [],\n description: 'mechanical arm',\n category: 'People & Body'\n },\n {\n emoji: '🦿',\n names: ['mechanical_leg'],\n tags: [],\n description: 'mechanical leg',\n category: 'People & Body'\n },\n {\n emoji: '🦵',\n names: ['leg'],\n tags: [],\n description: 'leg',\n category: 'People & Body'\n },\n {\n emoji: '🦶',\n names: ['foot'],\n tags: [],\n description: 'foot',\n category: 'People & Body'\n },\n {\n emoji: '👂',\n names: ['ear'],\n tags: ['hear', 'sound', 'listen'],\n description: 'ear',\n category: 'People & Body'\n },\n {\n emoji: '🦻',\n names: ['ear_with_hearing_aid'],\n tags: [],\n description: 'ear with hearing aid',\n category: 'People & Body'\n },\n {\n emoji: '👃',\n names: ['nose'],\n tags: ['smell'],\n description: 'nose',\n category: 'People & Body'\n },\n {\n emoji: '🧠',\n names: ['brain'],\n tags: [],\n description: 'brain',\n category: 'People & Body'\n },\n {\n emoji: '🫀',\n names: ['anatomical_heart'],\n tags: [],\n description: 'anatomical heart',\n category: 'People & Body'\n },\n {\n emoji: '🫁',\n names: ['lungs'],\n tags: [],\n description: 'lungs',\n category: 'People & Body'\n },\n {\n emoji: '🦷',\n names: ['tooth'],\n tags: [],\n description: 'tooth',\n category: 'People & Body'\n },\n {\n emoji: '🦴',\n names: ['bone'],\n tags: [],\n description: 'bone',\n category: 'People & Body'\n },\n {\n emoji: '👀',\n names: ['eyes'],\n tags: ['look', 'see', 'watch'],\n description: 'eyes',\n category: 'People & Body'\n },\n {\n emoji: '👁️',\n names: ['eye'],\n tags: [],\n description: 'eye',\n category: 'People & Body'\n },\n {\n emoji: '👅',\n names: ['tongue'],\n tags: ['taste'],\n description: 'tongue',\n category: 'People & Body'\n },\n {\n emoji: '👄',\n names: ['lips'],\n tags: ['kiss'],\n description: 'mouth',\n category: 'People & Body'\n },\n {\n emoji: '👶',\n names: ['baby'],\n tags: ['child', 'newborn'],\n description: 'baby',\n category: 'People & Body'\n },\n {\n emoji: '🧒',\n names: ['child'],\n tags: [],\n description: 'child',\n category: 'People & Body'\n },\n {\n emoji: '👦',\n names: ['boy'],\n tags: ['child'],\n description: 'boy',\n category: 'People & Body'\n },\n {\n emoji: '👧',\n names: ['girl'],\n tags: ['child'],\n description: 'girl',\n category: 'People & Body'\n },\n {\n emoji: '🧑',\n names: ['adult'],\n tags: [],\n description: 'person',\n category: 'People & Body'\n },\n {\n emoji: '👱',\n names: ['blond_haired_person'],\n tags: [],\n description: 'person: blond hair',\n category: 'People & Body'\n },\n {\n emoji: '👨',\n names: ['man'],\n tags: ['mustache', 'father', 'dad'],\n description: 'man',\n category: 'People & Body'\n },\n {\n emoji: '🧔',\n names: ['bearded_person'],\n tags: [],\n description: 'person: beard',\n category: 'People & Body'\n },\n {\n emoji: '🧔♂️',\n names: ['man_beard'],\n tags: [],\n description: 'man: beard',\n category: 'People & Body'\n },\n {\n emoji: '🧔♀️',\n names: ['woman_beard'],\n tags: [],\n description: 'woman: beard',\n category: 'People & Body'\n },\n {\n emoji: '👨🦰',\n names: ['red_haired_man'],\n tags: [],\n description: 'man: red hair',\n category: 'People & Body'\n },\n {\n emoji: '👨🦱',\n names: ['curly_haired_man'],\n tags: [],\n description: 'man: curly hair',\n category: 'People & Body'\n },\n {\n emoji: '👨🦳',\n names: ['white_haired_man'],\n tags: [],\n description: 'man: white hair',\n category: 'People & Body'\n },\n {\n emoji: '👨🦲',\n names: ['bald_man'],\n tags: [],\n description: 'man: bald',\n category: 'People & Body'\n },\n {\n emoji: '👩',\n names: ['woman'],\n tags: ['girls'],\n description: 'woman',\n category: 'People & Body'\n },\n {\n emoji: '👩🦰',\n names: ['red_haired_woman'],\n tags: [],\n description: 'woman: red hair',\n category: 'People & Body'\n },\n {\n emoji: '🧑🦰',\n names: ['person_red_hair'],\n tags: [],\n description: 'person: red hair',\n category: 'People & Body'\n },\n {\n emoji: '👩🦱',\n names: ['curly_haired_woman'],\n tags: [],\n description: 'woman: curly hair',\n category: 'People & Body'\n },\n {\n emoji: '🧑🦱',\n names: ['person_curly_hair'],\n tags: [],\n description: 'person: curly hair',\n category: 'People & Body'\n },\n {\n emoji: '👩🦳',\n names: ['white_haired_woman'],\n tags: [],\n description: 'woman: white hair',\n category: 'People & Body'\n },\n {\n emoji: '🧑🦳',\n names: ['person_white_hair'],\n tags: [],\n description: 'person: white hair',\n category: 'People & Body'\n },\n {\n emoji: '👩🦲',\n names: ['bald_woman'],\n tags: [],\n description: 'woman: bald',\n category: 'People & Body'\n },\n {\n emoji: '🧑🦲',\n names: ['person_bald'],\n tags: [],\n description: 'person: bald',\n category: 'People & Body'\n },\n {\n emoji: '👱♀️',\n names: ['blond_haired_woman', 'blonde_woman'],\n tags: [],\n description: 'woman: blond hair',\n category: 'People & Body'\n },\n {\n emoji: '👱♂️',\n names: ['blond_haired_man'],\n tags: [],\n description: 'man: blond hair',\n category: 'People & Body'\n },\n {\n emoji: '🧓',\n names: ['older_adult'],\n tags: [],\n description: 'older person',\n category: 'People & Body'\n },\n {\n emoji: '👴',\n names: ['older_man'],\n tags: [],\n description: 'old man',\n category: 'People & Body'\n },\n {\n emoji: '👵',\n names: ['older_woman'],\n tags: [],\n description: 'old woman',\n category: 'People & Body'\n },\n {\n emoji: '🙍',\n names: ['frowning_person'],\n tags: [],\n description: 'person frowning',\n category: 'People & Body'\n },\n {\n emoji: '🙍♂️',\n names: ['frowning_man'],\n tags: [],\n description: 'man frowning',\n category: 'People & Body'\n },\n {\n emoji: '🙍♀️',\n names: ['frowning_woman'],\n tags: [],\n description: 'woman frowning',\n category: 'People & Body'\n },\n {\n emoji: '🙎',\n names: ['pouting_face'],\n tags: [],\n description: 'person pouting',\n category: 'People & Body'\n },\n {\n emoji: '🙎♂️',\n names: ['pouting_man'],\n tags: [],\n description: 'man pouting',\n category: 'People & Body'\n },\n {\n emoji: '🙎♀️',\n names: ['pouting_woman'],\n tags: [],\n description: 'woman pouting',\n category: 'People & Body'\n },\n {\n emoji: '🙅',\n names: ['no_good'],\n tags: ['stop', 'halt', 'denied'],\n description: 'person gesturing NO',\n category: 'People & Body'\n },\n {\n emoji: '🙅♂️',\n names: ['no_good_man', 'ng_man'],\n tags: ['stop', 'halt', 'denied'],\n description: 'man gesturing NO',\n category: 'People & Body'\n },\n {\n emoji: '🙅♀️',\n names: ['no_good_woman', 'ng_woman'],\n tags: ['stop', 'halt', 'denied'],\n description: 'woman gesturing NO',\n category: 'People & Body'\n },\n {\n emoji: '🙆',\n names: ['ok_person'],\n tags: [],\n description: 'person gesturing OK',\n category: 'People & Body'\n },\n {\n emoji: '🙆♂️',\n names: ['ok_man'],\n tags: [],\n description: 'man gesturing OK',\n category: 'People & Body'\n },\n {\n emoji: '🙆♀️',\n names: ['ok_woman'],\n tags: [],\n description: 'woman gesturing OK',\n category: 'People & Body'\n },\n {\n emoji: '💁',\n names: ['tipping_hand_person', 'information_desk_person'],\n tags: [],\n description: 'person tipping hand',\n category: 'People & Body'\n },\n {\n emoji: '💁♂️',\n names: ['tipping_hand_man', 'sassy_man'],\n tags: ['information'],\n description: 'man tipping hand',\n category: 'People & Body'\n },\n {\n emoji: '💁♀️',\n names: ['tipping_hand_woman', 'sassy_woman'],\n tags: ['information'],\n description: 'woman tipping hand',\n category: 'People & Body'\n },\n {\n emoji: '🙋',\n names: ['raising_hand'],\n tags: [],\n description: 'person raising hand',\n category: 'People & Body'\n },\n {\n emoji: '🙋♂️',\n names: ['raising_hand_man'],\n tags: [],\n description: 'man raising hand',\n category: 'People & Body'\n },\n {\n emoji: '🙋♀️',\n names: ['raising_hand_woman'],\n tags: [],\n description: 'woman raising hand',\n category: 'People & Body'\n },\n {\n emoji: '🧏',\n names: ['deaf_person'],\n tags: [],\n description: 'deaf person',\n category: 'People & Body'\n },\n {\n emoji: '🧏♂️',\n names: ['deaf_man'],\n tags: [],\n description: 'deaf man',\n category: 'People & Body'\n },\n {\n emoji: '🧏♀️',\n names: ['deaf_woman'],\n tags: [],\n description: 'deaf woman',\n category: 'People & Body'\n },\n {\n emoji: '🙇',\n names: ['bow'],\n tags: ['respect', 'thanks'],\n description: 'person bowing',\n category: 'People & Body'\n },\n {\n emoji: '🙇♂️',\n names: ['bowing_man'],\n tags: ['respect', 'thanks'],\n description: 'man bowing',\n category: 'People & Body'\n },\n {\n emoji: '🙇♀️',\n names: ['bowing_woman'],\n tags: ['respect', 'thanks'],\n description: 'woman bowing',\n category: 'People & Body'\n },\n {\n emoji: '🤦',\n names: ['facepalm'],\n tags: [],\n description: 'person facepalming',\n category: 'People & Body'\n },\n {\n emoji: '🤦♂️',\n names: ['man_facepalming'],\n tags: [],\n description: 'man facepalming',\n category: 'People & Body'\n },\n {\n emoji: '🤦♀️',\n names: ['woman_facepalming'],\n tags: [],\n description: 'woman facepalming',\n category: 'People & Body'\n },\n {\n emoji: '🤷',\n names: ['shrug'],\n tags: [],\n description: 'person shrugging',\n category: 'People & Body'\n },\n {\n emoji: '🤷♂️',\n names: ['man_shrugging'],\n tags: [],\n description: 'man shrugging',\n category: 'People & Body'\n },\n {\n emoji: '🤷♀️',\n names: ['woman_shrugging'],\n tags: [],\n description: 'woman shrugging',\n category: 'People & Body'\n },\n {\n emoji: '🧑⚕️',\n names: ['health_worker'],\n tags: [],\n description: 'health worker',\n category: 'People & Body'\n },\n {\n emoji: '👨⚕️',\n names: ['man_health_worker'],\n tags: ['doctor', 'nurse'],\n description: 'man health worker',\n category: 'People & Body'\n },\n {\n emoji: '👩⚕️',\n names: ['woman_health_worker'],\n tags: ['doctor', 'nurse'],\n description: 'woman health worker',\n category: 'People & Body'\n },\n {\n emoji: '🧑🎓',\n names: ['student'],\n tags: [],\n description: 'student',\n category: 'People & Body'\n },\n {\n emoji: '👨🎓',\n names: ['man_student'],\n tags: ['graduation'],\n description: 'man student',\n category: 'People & Body'\n },\n {\n emoji: '👩🎓',\n names: ['woman_student'],\n tags: ['graduation'],\n description: 'woman student',\n category: 'People & Body'\n },\n {\n emoji: '🧑🏫',\n names: ['teacher'],\n tags: [],\n description: 'teacher',\n category: 'People & Body'\n },\n {\n emoji: '👨🏫',\n names: ['man_teacher'],\n tags: ['school', 'professor'],\n description: 'man teacher',\n category: 'People & Body'\n },\n {\n emoji: '👩🏫',\n names: ['woman_teacher'],\n tags: ['school', 'professor'],\n description: 'woman teacher',\n category: 'People & Body'\n },\n {\n emoji: '🧑⚖️',\n names: ['judge'],\n tags: [],\n description: 'judge',\n category: 'People & Body'\n },\n {\n emoji: '👨⚖️',\n names: ['man_judge'],\n tags: ['justice'],\n description: 'man judge',\n category: 'People & Body'\n },\n {\n emoji: '👩⚖️',\n names: ['woman_judge'],\n tags: ['justice'],\n description: 'woman judge',\n category: 'People & Body'\n },\n {\n emoji: '🧑🌾',\n names: ['farmer'],\n tags: [],\n description: 'farmer',\n category: 'People & Body'\n },\n {\n emoji: '👨🌾',\n names: ['man_farmer'],\n tags: [],\n description: 'man farmer',\n category: 'People & Body'\n },\n {\n emoji: '👩🌾',\n names: ['woman_farmer'],\n tags: [],\n description: 'woman farmer',\n category: 'People & Body'\n },\n {\n emoji: '🧑🍳',\n names: ['cook'],\n tags: [],\n description: 'cook',\n category: 'People & Body'\n },\n {\n emoji: '👨🍳',\n names: ['man_cook'],\n tags: ['chef'],\n description: 'man cook',\n category: 'People & Body'\n },\n {\n emoji: '👩🍳',\n names: ['woman_cook'],\n tags: ['chef'],\n description: 'woman cook',\n category: 'People & Body'\n },\n {\n emoji: '🧑🔧',\n names: ['mechanic'],\n tags: [],\n description: 'mechanic',\n category: 'People & Body'\n },\n {\n emoji: '👨🔧',\n names: ['man_mechanic'],\n tags: [],\n description: 'man mechanic',\n category: 'People & Body'\n },\n {\n emoji: '👩🔧',\n names: ['woman_mechanic'],\n tags: [],\n description: 'woman mechanic',\n category: 'People & Body'\n },\n {\n emoji: '🧑🏭',\n names: ['factory_worker'],\n tags: [],\n description: 'factory worker',\n category: 'People & Body'\n },\n {\n emoji: '👨🏭',\n names: ['man_factory_worker'],\n tags: [],\n description: 'man factory worker',\n category: 'People & Body'\n },\n {\n emoji: '👩🏭',\n names: ['woman_factory_worker'],\n tags: [],\n description: 'woman factory worker',\n category: 'People & Body'\n },\n {\n emoji: '🧑💼',\n names: ['office_worker'],\n tags: [],\n description: 'office worker',\n category: 'People & Body'\n },\n {\n emoji: '👨💼',\n names: ['man_office_worker'],\n tags: ['business'],\n description: 'man office worker',\n category: 'People & Body'\n },\n {\n emoji: '👩💼',\n names: ['woman_office_worker'],\n tags: ['business'],\n description: 'woman office worker',\n category: 'People & Body'\n },\n {\n emoji: '🧑🔬',\n names: ['scientist'],\n tags: [],\n description: 'scientist',\n category: 'People & Body'\n },\n {\n emoji: '👨🔬',\n names: ['man_scientist'],\n tags: ['research'],\n description: 'man scientist',\n category: 'People & Body'\n },\n {\n emoji: '👩🔬',\n names: ['woman_scientist'],\n tags: ['research'],\n description: 'woman scientist',\n category: 'People & Body'\n },\n {\n emoji: '🧑💻',\n names: ['technologist'],\n tags: [],\n description: 'technologist',\n category: 'People & Body'\n },\n {\n emoji: '👨💻',\n names: ['man_technologist'],\n tags: ['coder'],\n description: 'man technologist',\n category: 'People & Body'\n },\n {\n emoji: '👩💻',\n names: ['woman_technologist'],\n tags: ['coder'],\n description: 'woman technologist',\n category: 'People & Body'\n },\n {\n emoji: '🧑🎤',\n names: ['singer'],\n tags: [],\n description: 'singer',\n category: 'People & Body'\n },\n {\n emoji: '👨🎤',\n names: ['man_singer'],\n tags: ['rockstar'],\n description: 'man singer',\n category: 'People & Body'\n },\n {\n emoji: '👩🎤',\n names: ['woman_singer'],\n tags: ['rockstar'],\n description: 'woman singer',\n category: 'People & Body'\n },\n {\n emoji: '🧑🎨',\n names: ['artist'],\n tags: [],\n description: 'artist',\n category: 'People & Body'\n },\n {\n emoji: '👨🎨',\n names: ['man_artist'],\n tags: ['painter'],\n description: 'man artist',\n category: 'People & Body'\n },\n {\n emoji: '👩🎨',\n names: ['woman_artist'],\n tags: ['painter'],\n description: 'woman artist',\n category: 'People & Body'\n },\n {\n emoji: '🧑✈️',\n names: ['pilot'],\n tags: [],\n description: 'pilot',\n category: 'People & Body'\n },\n {\n emoji: '👨✈️',\n names: ['man_pilot'],\n tags: [],\n description: 'man pilot',\n category: 'People & Body'\n },\n {\n emoji: '👩✈️',\n names: ['woman_pilot'],\n tags: [],\n description: 'woman pilot',\n category: 'People & Body'\n },\n {\n emoji: '🧑🚀',\n names: ['astronaut'],\n tags: [],\n description: 'astronaut',\n category: 'People & Body'\n },\n {\n emoji: '👨🚀',\n names: ['man_astronaut'],\n tags: ['space'],\n description: 'man astronaut',\n category: 'People & Body'\n },\n {\n emoji: '👩🚀',\n names: ['woman_astronaut'],\n tags: ['space'],\n description: 'woman astronaut',\n category: 'People & Body'\n },\n {\n emoji: '🧑🚒',\n names: ['firefighter'],\n tags: [],\n description: 'firefighter',\n category: 'People & Body'\n },\n {\n emoji: '👨🚒',\n names: ['man_firefighter'],\n tags: [],\n description: 'man firefighter',\n category: 'People & Body'\n },\n {\n emoji: '👩🚒',\n names: ['woman_firefighter'],\n tags: [],\n description: 'woman firefighter',\n category: 'People & Body'\n },\n {\n emoji: '👮',\n names: ['police_officer', 'cop'],\n tags: ['law'],\n description: 'police officer',\n category: 'People & Body'\n },\n {\n emoji: '👮♂️',\n names: ['policeman'],\n tags: ['law', 'cop'],\n description: 'man police officer',\n category: 'People & Body'\n },\n {\n emoji: '👮♀️',\n names: ['policewoman'],\n tags: ['law', 'cop'],\n description: 'woman police officer',\n category: 'People & Body'\n },\n {\n emoji: '🕵️',\n names: ['detective'],\n tags: ['sleuth'],\n description: 'detective',\n category: 'People & Body'\n },\n {\n emoji: '🕵️♂️',\n names: ['male_detective'],\n tags: ['sleuth'],\n description: 'man detective',\n category: 'People & Body'\n },\n {\n emoji: '🕵️♀️',\n names: ['female_detective'],\n tags: ['sleuth'],\n description: 'woman detective',\n category: 'People & Body'\n },\n {\n emoji: '💂',\n names: ['guard'],\n tags: [],\n description: 'guard',\n category: 'People & Body'\n },\n {\n emoji: '💂♂️',\n names: ['guardsman'],\n tags: [],\n description: 'man guard',\n category: 'People & Body'\n },\n {\n emoji: '💂♀️',\n names: ['guardswoman'],\n tags: [],\n description: 'woman guard',\n category: 'People & Body'\n },\n {\n emoji: '🥷',\n names: ['ninja'],\n tags: [],\n description: 'ninja',\n category: 'People & Body'\n },\n {\n emoji: '👷',\n names: ['construction_worker'],\n tags: ['helmet'],\n description: 'construction worker',\n category: 'People & Body'\n },\n {\n emoji: '👷♂️',\n names: ['construction_worker_man'],\n tags: ['helmet'],\n description: 'man construction worker',\n category: 'People & Body'\n },\n {\n emoji: '👷♀️',\n names: ['construction_worker_woman'],\n tags: ['helmet'],\n description: 'woman construction worker',\n category: 'People & Body'\n },\n {\n emoji: '🤴',\n names: ['prince'],\n tags: ['crown', 'royal'],\n description: 'prince',\n category: 'People & Body'\n },\n {\n emoji: '👸',\n names: ['princess'],\n tags: ['crown', 'royal'],\n description: 'princess',\n category: 'People & Body'\n },\n {\n emoji: '👳',\n names: ['person_with_turban'],\n tags: [],\n description: 'person wearing turban',\n category: 'People & Body'\n },\n {\n emoji: '👳♂️',\n names: ['man_with_turban'],\n tags: [],\n description: 'man wearing turban',\n category: 'People & Body'\n },\n {\n emoji: '👳♀️',\n names: ['woman_with_turban'],\n tags: [],\n description: 'woman wearing turban',\n category: 'People & Body'\n },\n {\n emoji: '👲',\n names: ['man_with_gua_pi_mao'],\n tags: [],\n description: 'person with skullcap',\n category: 'People & Body'\n },\n {\n emoji: '🧕',\n names: ['woman_with_headscarf'],\n tags: ['hijab'],\n description: 'woman with headscarf',\n category: 'People & Body'\n },\n {\n emoji: '🤵',\n names: ['person_in_tuxedo'],\n tags: ['groom', 'marriage', 'wedding'],\n description: 'person in tuxedo',\n category: 'People & Body'\n },\n {\n emoji: '🤵♂️',\n names: ['man_in_tuxedo'],\n tags: [],\n description: 'man in tuxedo',\n category: 'People & Body'\n },\n {\n emoji: '🤵♀️',\n names: ['woman_in_tuxedo'],\n tags: [],\n description: 'woman in tuxedo',\n category: 'People & Body'\n },\n {\n emoji: '👰',\n names: ['person_with_veil'],\n tags: ['marriage', 'wedding'],\n description: 'person with veil',\n category: 'People & Body'\n },\n {\n emoji: '👰♂️',\n names: ['man_with_veil'],\n tags: [],\n description: 'man with veil',\n category: 'People & Body'\n },\n {\n emoji: '👰♀️',\n names: ['woman_with_veil', 'bride_with_veil'],\n tags: [],\n description: 'woman with veil',\n category: 'People & Body'\n },\n {\n emoji: '🤰',\n names: ['pregnant_woman'],\n tags: [],\n description: 'pregnant woman',\n category: 'People & Body'\n },\n {\n emoji: '🤱',\n names: ['breast_feeding'],\n tags: ['nursing'],\n description: 'breast-feeding',\n category: 'People & Body'\n },\n {\n emoji: '👩🍼',\n names: ['woman_feeding_baby'],\n tags: [],\n description: 'woman feeding baby',\n category: 'People & Body'\n },\n {\n emoji: '👨🍼',\n names: ['man_feeding_baby'],\n tags: [],\n description: 'man feeding baby',\n category: 'People & Body'\n },\n {\n emoji: '🧑🍼',\n names: ['person_feeding_baby'],\n tags: [],\n description: 'person feeding baby',\n category: 'People & Body'\n },\n {\n emoji: '👼',\n names: ['angel'],\n tags: [],\n description: 'baby angel',\n category: 'People & Body'\n },\n {\n emoji: '🎅',\n names: ['santa'],\n tags: ['christmas'],\n description: 'Santa Claus',\n category: 'People & Body'\n },\n {\n emoji: '🤶',\n names: ['mrs_claus'],\n tags: ['santa'],\n description: 'Mrs. Claus',\n category: 'People & Body'\n },\n {\n emoji: '🧑🎄',\n names: ['mx_claus'],\n tags: [],\n description: 'mx claus',\n category: 'People & Body'\n },\n {\n emoji: '🦸',\n names: ['superhero'],\n tags: [],\n description: 'superhero',\n category: 'People & Body'\n },\n {\n emoji: '🦸♂️',\n names: ['superhero_man'],\n tags: [],\n description: 'man superhero',\n category: 'People & Body'\n },\n {\n emoji: '🦸♀️',\n names: ['superhero_woman'],\n tags: [],\n description: 'woman superhero',\n category: 'People & Body'\n },\n {\n emoji: '🦹',\n names: ['supervillain'],\n tags: [],\n description: 'supervillain',\n category: 'People & Body'\n },\n {\n emoji: '🦹♂️',\n names: ['supervillain_man'],\n tags: [],\n description: 'man supervillain',\n category: 'People & Body'\n },\n {\n emoji: '🦹♀️',\n names: ['supervillain_woman'],\n tags: [],\n description: 'woman supervillain',\n category: 'People & Body'\n },\n {\n emoji: '🧙',\n names: ['mage'],\n tags: ['wizard'],\n description: 'mage',\n category: 'People & Body'\n },\n {\n emoji: '🧙♂️',\n names: ['mage_man'],\n tags: ['wizard'],\n description: 'man mage',\n category: 'People & Body'\n },\n {\n emoji: '🧙♀️',\n names: ['mage_woman'],\n tags: ['wizard'],\n description: 'woman mage',\n category: 'People & Body'\n },\n {\n emoji: '🧚',\n names: ['fairy'],\n tags: [],\n description: 'fairy',\n category: 'People & Body'\n },\n {\n emoji: '🧚♂️',\n names: ['fairy_man'],\n tags: [],\n description: 'man fairy',\n category: 'People & Body'\n },\n {\n emoji: '🧚♀️',\n names: ['fairy_woman'],\n tags: [],\n description: 'woman fairy',\n category: 'People & Body'\n },\n {\n emoji: '🧛',\n names: ['vampire'],\n tags: [],\n description: 'vampire',\n category: 'People & Body'\n },\n {\n emoji: '🧛♂️',\n names: ['vampire_man'],\n tags: [],\n description: 'man vampire',\n category: 'People & Body'\n },\n {\n emoji: '🧛♀️',\n names: ['vampire_woman'],\n tags: [],\n description: 'woman vampire',\n category: 'People & Body'\n },\n {\n emoji: '🧜',\n names: ['merperson'],\n tags: [],\n description: 'merperson',\n category: 'People & Body'\n },\n {\n emoji: '🧜♂️',\n names: ['merman'],\n tags: [],\n description: 'merman',\n category: 'People & Body'\n },\n {\n emoji: '🧜♀️',\n names: ['mermaid'],\n tags: [],\n description: 'mermaid',\n category: 'People & Body'\n },\n {\n emoji: '🧝',\n names: ['elf'],\n tags: [],\n description: 'elf',\n category: 'People & Body'\n },\n {\n emoji: '🧝♂️',\n names: ['elf_man'],\n tags: [],\n description: 'man elf',\n category: 'People & Body'\n },\n {\n emoji: '🧝♀️',\n names: ['elf_woman'],\n tags: [],\n description: 'woman elf',\n category: 'People & Body'\n },\n {\n emoji: '🧞',\n names: ['genie'],\n tags: [],\n description: 'genie',\n category: 'People & Body'\n },\n {\n emoji: '🧞♂️',\n names: ['genie_man'],\n tags: [],\n description: 'man genie',\n category: 'People & Body'\n },\n {\n emoji: '🧞♀️',\n names: ['genie_woman'],\n tags: [],\n description: 'woman genie',\n category: 'People & Body'\n },\n {\n emoji: '🧟',\n names: ['zombie'],\n tags: [],\n description: 'zombie',\n category: 'People & Body'\n },\n {\n emoji: '🧟♂️',\n names: ['zombie_man'],\n tags: [],\n description: 'man zombie',\n category: 'People & Body'\n },\n {\n emoji: '🧟♀️',\n names: ['zombie_woman'],\n tags: [],\n description: 'woman zombie',\n category: 'People & Body'\n },\n {\n emoji: '💆',\n names: ['massage'],\n tags: ['spa'],\n description: 'person getting massage',\n category: 'People & Body'\n },\n {\n emoji: '💆♂️',\n names: ['massage_man'],\n tags: ['spa'],\n description: 'man getting massage',\n category: 'People & Body'\n },\n {\n emoji: '💆♀️',\n names: ['massage_woman'],\n tags: ['spa'],\n description: 'woman getting massage',\n category: 'People & Body'\n },\n {\n emoji: '💇',\n names: ['haircut'],\n tags: ['beauty'],\n description: 'person getting haircut',\n category: 'People & Body'\n },\n {\n emoji: '💇♂️',\n names: ['haircut_man'],\n tags: [],\n description: 'man getting haircut',\n category: 'People & Body'\n },\n {\n emoji: '💇♀️',\n names: ['haircut_woman'],\n tags: [],\n description: 'woman getting haircut',\n category: 'People & Body'\n },\n {\n emoji: '🚶',\n names: ['walking'],\n tags: [],\n description: 'person walking',\n category: 'People & Body'\n },\n {\n emoji: '🚶♂️',\n names: ['walking_man'],\n tags: [],\n description: 'man walking',\n category: 'People & Body'\n },\n {\n emoji: '🚶♀️',\n names: ['walking_woman'],\n tags: [],\n description: 'woman walking',\n category: 'People & Body'\n },\n {\n emoji: '🧍',\n names: ['standing_person'],\n tags: [],\n description: 'person standing',\n category: 'People & Body'\n },\n {\n emoji: '🧍♂️',\n names: ['standing_man'],\n tags: [],\n description: 'man standing',\n category: 'People & Body'\n },\n {\n emoji: '🧍♀️',\n names: ['standing_woman'],\n tags: [],\n description: 'woman standing',\n category: 'People & Body'\n },\n {\n emoji: '🧎',\n names: ['kneeling_person'],\n tags: [],\n description: 'person kneeling',\n category: 'People & Body'\n },\n {\n emoji: '🧎♂️',\n names: ['kneeling_man'],\n tags: [],\n description: 'man kneeling',\n category: 'People & Body'\n },\n {\n emoji: '🧎♀️',\n names: ['kneeling_woman'],\n tags: [],\n description: 'woman kneeling',\n category: 'People & Body'\n },\n {\n emoji: '🧑🦯',\n names: ['person_with_probing_cane'],\n tags: [],\n description: 'person with white cane',\n category: 'People & Body'\n },\n {\n emoji: '👨🦯',\n names: ['man_with_probing_cane'],\n tags: [],\n description: 'man with white cane',\n category: 'People & Body'\n },\n {\n emoji: '👩🦯',\n names: ['woman_with_probing_cane'],\n tags: [],\n description: 'woman with white cane',\n category: 'People & Body'\n },\n {\n emoji: '🧑🦼',\n names: ['person_in_motorized_wheelchair'],\n tags: [],\n description: 'person in motorized wheelchair',\n category: 'People & Body'\n },\n {\n emoji: '👨🦼',\n names: ['man_in_motorized_wheelchair'],\n tags: [],\n description: 'man in motorized wheelchair',\n category: 'People & Body'\n },\n {\n emoji: '👩🦼',\n names: ['woman_in_motorized_wheelchair'],\n tags: [],\n description: 'woman in motorized wheelchair',\n category: 'People & Body'\n },\n {\n emoji: '🧑🦽',\n names: ['person_in_manual_wheelchair'],\n tags: [],\n description: 'person in manual wheelchair',\n category: 'People & Body'\n },\n {\n emoji: '👨🦽',\n names: ['man_in_manual_wheelchair'],\n tags: [],\n description: 'man in manual wheelchair',\n category: 'People & Body'\n },\n {\n emoji: '👩🦽',\n names: ['woman_in_manual_wheelchair'],\n tags: [],\n description: 'woman in manual wheelchair',\n category: 'People & Body'\n },\n {\n emoji: '🏃',\n names: ['runner', 'running'],\n tags: ['exercise', 'workout', 'marathon'],\n description: 'person running',\n category: 'People & Body'\n },\n {\n emoji: '🏃♂️',\n names: ['running_man'],\n tags: ['exercise', 'workout', 'marathon'],\n description: 'man running',\n category: 'People & Body'\n },\n {\n emoji: '🏃♀️',\n names: ['running_woman'],\n tags: ['exercise', 'workout', 'marathon'],\n description: 'woman running',\n category: 'People & Body'\n },\n {\n emoji: '💃',\n names: ['woman_dancing', 'dancer'],\n tags: ['dress'],\n description: 'woman dancing',\n category: 'People & Body'\n },\n {\n emoji: '🕺',\n names: ['man_dancing'],\n tags: ['dancer'],\n description: 'man dancing',\n category: 'People & Body'\n },\n {\n emoji: '🕴️',\n names: ['business_suit_levitating'],\n tags: [],\n description: 'person in suit levitating',\n category: 'People & Body'\n },\n {\n emoji: '👯',\n names: ['dancers'],\n tags: ['bunny'],\n description: 'people with bunny ears',\n category: 'People & Body'\n },\n {\n emoji: '👯♂️',\n names: ['dancing_men'],\n tags: ['bunny'],\n description: 'men with bunny ears',\n category: 'People & Body'\n },\n {\n emoji: '👯♀️',\n names: ['dancing_women'],\n tags: ['bunny'],\n description: 'women with bunny ears',\n category: 'People & Body'\n },\n {\n emoji: '🧖',\n names: ['sauna_person'],\n tags: ['steamy'],\n description: 'person in steamy room',\n category: 'People & Body'\n },\n {\n emoji: '🧖♂️',\n names: ['sauna_man'],\n tags: ['steamy'],\n description: 'man in steamy room',\n category: 'People & Body'\n },\n {\n emoji: '🧖♀️',\n names: ['sauna_woman'],\n tags: ['steamy'],\n description: 'woman in steamy room',\n category: 'People & Body'\n },\n {\n emoji: '🧗',\n names: ['climbing'],\n tags: ['bouldering'],\n description: 'person climbing',\n category: 'People & Body'\n },\n {\n emoji: '🧗♂️',\n names: ['climbing_man'],\n tags: ['bouldering'],\n description: 'man climbing',\n category: 'People & Body'\n },\n {\n emoji: '🧗♀️',\n names: ['climbing_woman'],\n tags: ['bouldering'],\n description: 'woman climbing',\n category: 'People & Body'\n },\n {\n emoji: '🤺',\n names: ['person_fencing'],\n tags: [],\n description: 'person fencing',\n category: 'People & Body'\n },\n {\n emoji: '🏇',\n names: ['horse_racing'],\n tags: [],\n description: 'horse racing',\n category: 'People & Body'\n },\n {\n emoji: '⛷️',\n names: ['skier'],\n tags: [],\n description: 'skier',\n category: 'People & Body'\n },\n {\n emoji: '🏂',\n names: ['snowboarder'],\n tags: [],\n description: 'snowboarder',\n category: 'People & Body'\n },\n {\n emoji: '🏌️',\n names: ['golfing'],\n tags: [],\n description: 'person golfing',\n category: 'People & Body'\n },\n {\n emoji: '🏌️♂️',\n names: ['golfing_man'],\n tags: [],\n description: 'man golfing',\n category: 'People & Body'\n },\n {\n emoji: '🏌️♀️',\n names: ['golfing_woman'],\n tags: [],\n description: 'woman golfing',\n category: 'People & Body'\n },\n {\n emoji: '🏄',\n names: ['surfer'],\n tags: [],\n description: 'person surfing',\n category: 'People & Body'\n },\n {\n emoji: '🏄♂️',\n names: ['surfing_man'],\n tags: [],\n description: 'man surfing',\n category: 'People & Body'\n },\n {\n emoji: '🏄♀️',\n names: ['surfing_woman'],\n tags: [],\n description: 'woman surfing',\n category: 'People & Body'\n },\n {\n emoji: '🚣',\n names: ['rowboat'],\n tags: [],\n description: 'person rowing boat',\n category: 'People & Body'\n },\n {\n emoji: '🚣♂️',\n names: ['rowing_man'],\n tags: [],\n description: 'man rowing boat',\n category: 'People & Body'\n },\n {\n emoji: '🚣♀️',\n names: ['rowing_woman'],\n tags: [],\n description: 'woman rowing boat',\n category: 'People & Body'\n },\n {\n emoji: '🏊',\n names: ['swimmer'],\n tags: [],\n description: 'person swimming',\n category: 'People & Body'\n },\n {\n emoji: '🏊♂️',\n names: ['swimming_man'],\n tags: [],\n description: 'man swimming',\n category: 'People & Body'\n },\n {\n emoji: '🏊♀️',\n names: ['swimming_woman'],\n tags: [],\n description: 'woman swimming',\n category: 'People & Body'\n },\n {\n emoji: '⛹️',\n names: ['bouncing_ball_person'],\n tags: ['basketball'],\n description: 'person bouncing ball',\n category: 'People & Body'\n },\n {\n emoji: '⛹️♂️',\n names: ['bouncing_ball_man', 'basketball_man'],\n tags: [],\n description: 'man bouncing ball',\n category: 'People & Body'\n },\n {\n emoji: '⛹️♀️',\n names: ['bouncing_ball_woman', 'basketball_woman'],\n tags: [],\n description: 'woman bouncing ball',\n category: 'People & Body'\n },\n {\n emoji: '🏋️',\n names: ['weight_lifting'],\n tags: ['gym', 'workout'],\n description: 'person lifting weights',\n category: 'People & Body'\n },\n {\n emoji: '🏋️♂️',\n names: ['weight_lifting_man'],\n tags: ['gym', 'workout'],\n description: 'man lifting weights',\n category: 'People & Body'\n },\n {\n emoji: '🏋️♀️',\n names: ['weight_lifting_woman'],\n tags: ['gym', 'workout'],\n description: 'woman lifting weights',\n category: 'People & Body'\n },\n {\n emoji: '🚴',\n names: ['bicyclist'],\n tags: [],\n description: 'person biking',\n category: 'People & Body'\n },\n {\n emoji: '🚴♂️',\n names: ['biking_man'],\n tags: [],\n description: 'man biking',\n category: 'People & Body'\n },\n {\n emoji: '🚴♀️',\n names: ['biking_woman'],\n tags: [],\n description: 'woman biking',\n category: 'People & Body'\n },\n {\n emoji: '🚵',\n names: ['mountain_bicyclist'],\n tags: [],\n description: 'person mountain biking',\n category: 'People & Body'\n },\n {\n emoji: '🚵♂️',\n names: ['mountain_biking_man'],\n tags: [],\n description: 'man mountain biking',\n category: 'People & Body'\n },\n {\n emoji: '🚵♀️',\n names: ['mountain_biking_woman'],\n tags: [],\n description: 'woman mountain biking',\n category: 'People & Body'\n },\n {\n emoji: '🤸',\n names: ['cartwheeling'],\n tags: [],\n description: 'person cartwheeling',\n category: 'People & Body'\n },\n {\n emoji: '🤸♂️',\n names: ['man_cartwheeling'],\n tags: [],\n description: 'man cartwheeling',\n category: 'People & Body'\n },\n {\n emoji: '🤸♀️',\n names: ['woman_cartwheeling'],\n tags: [],\n description: 'woman cartwheeling',\n category: 'People & Body'\n },\n {\n emoji: '🤼',\n names: ['wrestling'],\n tags: [],\n description: 'people wrestling',\n category: 'People & Body'\n },\n {\n emoji: '🤼♂️',\n names: ['men_wrestling'],\n tags: [],\n description: 'men wrestling',\n category: 'People & Body'\n },\n {\n emoji: '🤼♀️',\n names: ['women_wrestling'],\n tags: [],\n description: 'women wrestling',\n category: 'People & Body'\n },\n {\n emoji: '🤽',\n names: ['water_polo'],\n tags: [],\n description: 'person playing water polo',\n category: 'People & Body'\n },\n {\n emoji: '🤽♂️',\n names: ['man_playing_water_polo'],\n tags: [],\n description: 'man playing water polo',\n category: 'People & Body'\n },\n {\n emoji: '🤽♀️',\n names: ['woman_playing_water_polo'],\n tags: [],\n description: 'woman playing water polo',\n category: 'People & Body'\n },\n {\n emoji: '🤾',\n names: ['handball_person'],\n tags: [],\n description: 'person playing handball',\n category: 'People & Body'\n },\n {\n emoji: '🤾♂️',\n names: ['man_playing_handball'],\n tags: [],\n description: 'man playing handball',\n category: 'People & Body'\n },\n {\n emoji: '🤾♀️',\n names: ['woman_playing_handball'],\n tags: [],\n description: 'woman playing handball',\n category: 'People & Body'\n },\n {\n emoji: '🤹',\n names: ['juggling_person'],\n tags: [],\n description: 'person juggling',\n category: 'People & Body'\n },\n {\n emoji: '🤹♂️',\n names: ['man_juggling'],\n tags: [],\n description: 'man juggling',\n category: 'People & Body'\n },\n {\n emoji: '🤹♀️',\n names: ['woman_juggling'],\n tags: [],\n description: 'woman juggling',\n category: 'People & Body'\n },\n {\n emoji: '🧘',\n names: ['lotus_position'],\n tags: ['meditation'],\n description: 'person in lotus position',\n category: 'People & Body'\n },\n {\n emoji: '🧘♂️',\n names: ['lotus_position_man'],\n tags: ['meditation'],\n description: 'man in lotus position',\n category: 'People & Body'\n },\n {\n emoji: '🧘♀️',\n names: ['lotus_position_woman'],\n tags: ['meditation'],\n description: 'woman in lotus position',\n category: 'People & Body'\n },\n {\n emoji: '🛀',\n names: ['bath'],\n tags: ['shower'],\n description: 'person taking bath',\n category: 'People & Body'\n },\n {\n emoji: '🛌',\n names: ['sleeping_bed'],\n tags: [],\n description: 'person in bed',\n category: 'People & Body'\n },\n {\n emoji: '🧑🤝🧑',\n names: ['people_holding_hands'],\n tags: ['couple', 'date'],\n description: 'people holding hands',\n category: 'People & Body'\n },\n {\n emoji: '👭',\n names: ['two_women_holding_hands'],\n tags: ['couple', 'date'],\n description: 'women holding hands',\n category: 'People & Body'\n },\n {\n emoji: '👫',\n names: ['couple'],\n tags: ['date'],\n description: 'woman and man holding hands',\n category: 'People & Body'\n },\n {\n emoji: '👬',\n names: ['two_men_holding_hands'],\n tags: ['couple', 'date'],\n description: 'men holding hands',\n category: 'People & Body'\n },\n {\n emoji: '💏',\n names: ['couplekiss'],\n tags: [],\n description: 'kiss',\n category: 'People & Body'\n },\n {\n emoji: '👩❤️💋👨',\n names: ['couplekiss_man_woman'],\n tags: [],\n description: 'kiss: woman, man',\n category: 'People & Body'\n },\n {\n emoji: '👨❤️💋👨',\n names: ['couplekiss_man_man'],\n tags: [],\n description: 'kiss: man, man',\n category: 'People & Body'\n },\n {\n emoji: '👩❤️💋👩',\n names: ['couplekiss_woman_woman'],\n tags: [],\n description: 'kiss: woman, woman',\n category: 'People & Body'\n },\n {\n emoji: '💑',\n names: ['couple_with_heart'],\n tags: [],\n description: 'couple with heart',\n category: 'People & Body'\n },\n {\n emoji: '👩❤️👨',\n names: ['couple_with_heart_woman_man'],\n tags: [],\n description: 'couple with heart: woman, man',\n category: 'People & Body'\n },\n {\n emoji: '👨❤️👨',\n names: ['couple_with_heart_man_man'],\n tags: [],\n description: 'couple with heart: man, man',\n category: 'People & Body'\n },\n {\n emoji: '👩❤️👩',\n names: ['couple_with_heart_woman_woman'],\n tags: [],\n description: 'couple with heart: woman, woman',\n category: 'People & Body'\n },\n {\n emoji: '👪',\n names: ['family'],\n tags: ['home', 'parents', 'child'],\n description: 'family',\n category: 'People & Body'\n },\n {\n emoji: '👨👩👦',\n names: ['family_man_woman_boy'],\n tags: [],\n description: 'family: man, woman, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👩👧',\n names: ['family_man_woman_girl'],\n tags: [],\n description: 'family: man, woman, girl',\n category: 'People & Body'\n },\n {\n emoji: '👨👩👧👦',\n names: ['family_man_woman_girl_boy'],\n tags: [],\n description: 'family: man, woman, girl, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👩👦👦',\n names: ['family_man_woman_boy_boy'],\n tags: [],\n description: 'family: man, woman, boy, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👩👧👧',\n names: ['family_man_woman_girl_girl'],\n tags: [],\n description: 'family: man, woman, girl, girl',\n category: 'People & Body'\n },\n {\n emoji: '👨👨👦',\n names: ['family_man_man_boy'],\n tags: [],\n description: 'family: man, man, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👨👧',\n names: ['family_man_man_girl'],\n tags: [],\n description: 'family: man, man, girl',\n category: 'People & Body'\n },\n {\n emoji: '👨👨👧👦',\n names: ['family_man_man_girl_boy'],\n tags: [],\n description: 'family: man, man, girl, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👨👦👦',\n names: ['family_man_man_boy_boy'],\n tags: [],\n description: 'family: man, man, boy, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👨👧👧',\n names: ['family_man_man_girl_girl'],\n tags: [],\n description: 'family: man, man, girl, girl',\n category: 'People & Body'\n },\n {\n emoji: '👩👩👦',\n names: ['family_woman_woman_boy'],\n tags: [],\n description: 'family: woman, woman, boy',\n category: 'People & Body'\n },\n {\n emoji: '👩👩👧',\n names: ['family_woman_woman_girl'],\n tags: [],\n description: 'family: woman, woman, girl',\n category: 'People & Body'\n },\n {\n emoji: '👩👩👧👦',\n names: ['family_woman_woman_girl_boy'],\n tags: [],\n description: 'family: woman, woman, girl, boy',\n category: 'People & Body'\n },\n {\n emoji: '👩👩👦👦',\n names: ['family_woman_woman_boy_boy'],\n tags: [],\n description: 'family: woman, woman, boy, boy',\n category: 'People & Body'\n },\n {\n emoji: '👩👩👧👧',\n names: ['family_woman_woman_girl_girl'],\n tags: [],\n description: 'family: woman, woman, girl, girl',\n category: 'People & Body'\n },\n {\n emoji: '👨👦',\n names: ['family_man_boy'],\n tags: [],\n description: 'family: man, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👦👦',\n names: ['family_man_boy_boy'],\n tags: [],\n description: 'family: man, boy, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👧',\n names: ['family_man_girl'],\n tags: [],\n description: 'family: man, girl',\n category: 'People & Body'\n },\n {\n emoji: '👨👧👦',\n names: ['family_man_girl_boy'],\n tags: [],\n description: 'family: man, girl, boy',\n category: 'People & Body'\n },\n {\n emoji: '👨👧👧',\n names: ['family_man_girl_girl'],\n tags: [],\n description: 'family: man, girl, girl',\n category: 'People & Body'\n },\n {\n emoji: '👩👦',\n names: ['family_woman_boy'],\n tags: [],\n description: 'family: woman, boy',\n category: 'People & Body'\n },\n {\n emoji: '👩👦👦',\n names: ['family_woman_boy_boy'],\n tags: [],\n description: 'family: woman, boy, boy',\n category: 'People & Body'\n },\n {\n emoji: '👩👧',\n names: ['family_woman_girl'],\n tags: [],\n description: 'family: woman, girl',\n category: 'People & Body'\n },\n {\n emoji: '👩👧👦',\n names: ['family_woman_girl_boy'],\n tags: [],\n description: 'family: woman, girl, boy',\n category: 'People & Body'\n },\n {\n emoji: '👩👧👧',\n names: ['family_woman_girl_girl'],\n tags: [],\n description: 'family: woman, girl, girl',\n category: 'People & Body'\n },\n {\n emoji: '🗣️',\n names: ['speaking_head'],\n tags: [],\n description: 'speaking head',\n category: 'People & Body'\n },\n {\n emoji: '👤',\n names: ['bust_in_silhouette'],\n tags: ['user'],\n description: 'bust in silhouette',\n category: 'People & Body'\n },\n {\n emoji: '👥',\n names: ['busts_in_silhouette'],\n tags: ['users', 'group', 'team'],\n description: 'busts in silhouette',\n category: 'People & Body'\n },\n {\n emoji: '🫂',\n names: ['people_hugging'],\n tags: [],\n description: 'people hugging',\n category: 'People & Body'\n },\n {\n emoji: '👣',\n names: ['footprints'],\n tags: ['feet', 'tracks'],\n description: 'footprints',\n category: 'People & Body'\n },\n {\n emoji: '🐵',\n names: ['monkey_face'],\n tags: [],\n description: 'monkey face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐒',\n names: ['monkey'],\n tags: [],\n description: 'monkey',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦍',\n names: ['gorilla'],\n tags: [],\n description: 'gorilla',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦧',\n names: ['orangutan'],\n tags: [],\n description: 'orangutan',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐶',\n names: ['dog'],\n tags: ['pet'],\n description: 'dog face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐕',\n names: ['dog2'],\n tags: [],\n description: 'dog',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦮',\n names: ['guide_dog'],\n tags: [],\n description: 'guide dog',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐕🦺',\n names: ['service_dog'],\n tags: [],\n description: 'service dog',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐩',\n names: ['poodle'],\n tags: ['dog'],\n description: 'poodle',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐺',\n names: ['wolf'],\n tags: [],\n description: 'wolf',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦊',\n names: ['fox_face'],\n tags: [],\n description: 'fox',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦝',\n names: ['raccoon'],\n tags: [],\n description: 'raccoon',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐱',\n names: ['cat'],\n tags: ['pet'],\n description: 'cat face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐈',\n names: ['cat2'],\n tags: [],\n description: 'cat',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐈⬛',\n names: ['black_cat'],\n tags: [],\n description: 'black cat',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦁',\n names: ['lion'],\n tags: [],\n description: 'lion',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐯',\n names: ['tiger'],\n tags: [],\n description: 'tiger face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐅',\n names: ['tiger2'],\n tags: [],\n description: 'tiger',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐆',\n names: ['leopard'],\n tags: [],\n description: 'leopard',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐴',\n names: ['horse'],\n tags: [],\n description: 'horse face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐎',\n names: ['racehorse'],\n tags: ['speed'],\n description: 'horse',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦄',\n names: ['unicorn'],\n tags: [],\n description: 'unicorn',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦓',\n names: ['zebra'],\n tags: [],\n description: 'zebra',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦌',\n names: ['deer'],\n tags: [],\n description: 'deer',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦬',\n names: ['bison'],\n tags: [],\n description: 'bison',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐮',\n names: ['cow'],\n tags: [],\n description: 'cow face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐂',\n names: ['ox'],\n tags: [],\n description: 'ox',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐃',\n names: ['water_buffalo'],\n tags: [],\n description: 'water buffalo',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐄',\n names: ['cow2'],\n tags: [],\n description: 'cow',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐷',\n names: ['pig'],\n tags: [],\n description: 'pig face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐖',\n names: ['pig2'],\n tags: [],\n description: 'pig',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐗',\n names: ['boar'],\n tags: [],\n description: 'boar',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐽',\n names: ['pig_nose'],\n tags: [],\n description: 'pig nose',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐏',\n names: ['ram'],\n tags: [],\n description: 'ram',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐑',\n names: ['sheep'],\n tags: [],\n description: 'ewe',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐐',\n names: ['goat'],\n tags: [],\n description: 'goat',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐪',\n names: ['dromedary_camel'],\n tags: ['desert'],\n description: 'camel',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐫',\n names: ['camel'],\n tags: [],\n description: 'two-hump camel',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦙',\n names: ['llama'],\n tags: [],\n description: 'llama',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦒',\n names: ['giraffe'],\n tags: [],\n description: 'giraffe',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐘',\n names: ['elephant'],\n tags: [],\n description: 'elephant',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦣',\n names: ['mammoth'],\n tags: [],\n description: 'mammoth',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦏',\n names: ['rhinoceros'],\n tags: [],\n description: 'rhinoceros',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦛',\n names: ['hippopotamus'],\n tags: [],\n description: 'hippopotamus',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐭',\n names: ['mouse'],\n tags: [],\n description: 'mouse face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐁',\n names: ['mouse2'],\n tags: [],\n description: 'mouse',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐀',\n names: ['rat'],\n tags: [],\n description: 'rat',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐹',\n names: ['hamster'],\n tags: ['pet'],\n description: 'hamster',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐰',\n names: ['rabbit'],\n tags: ['bunny'],\n description: 'rabbit face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐇',\n names: ['rabbit2'],\n tags: [],\n description: 'rabbit',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐿️',\n names: ['chipmunk'],\n tags: [],\n description: 'chipmunk',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦫',\n names: ['beaver'],\n tags: [],\n description: 'beaver',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦔',\n names: ['hedgehog'],\n tags: [],\n description: 'hedgehog',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦇',\n names: ['bat'],\n tags: [],\n description: 'bat',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐻',\n names: ['bear'],\n tags: [],\n description: 'bear',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐻❄️',\n names: ['polar_bear'],\n tags: [],\n description: 'polar bear',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐨',\n names: ['koala'],\n tags: [],\n description: 'koala',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐼',\n names: ['panda_face'],\n tags: [],\n description: 'panda',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦥',\n names: ['sloth'],\n tags: [],\n description: 'sloth',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦦',\n names: ['otter'],\n tags: [],\n description: 'otter',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦨',\n names: ['skunk'],\n tags: [],\n description: 'skunk',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦘',\n names: ['kangaroo'],\n tags: [],\n description: 'kangaroo',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦡',\n names: ['badger'],\n tags: [],\n description: 'badger',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐾',\n names: ['feet', 'paw_prints'],\n tags: [],\n description: 'paw prints',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦃',\n names: ['turkey'],\n tags: ['thanksgiving'],\n description: 'turkey',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐔',\n names: ['chicken'],\n tags: [],\n description: 'chicken',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐓',\n names: ['rooster'],\n tags: [],\n description: 'rooster',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐣',\n names: ['hatching_chick'],\n tags: [],\n description: 'hatching chick',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐤',\n names: ['baby_chick'],\n tags: [],\n description: 'baby chick',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐥',\n names: ['hatched_chick'],\n tags: [],\n description: 'front-facing baby chick',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐦',\n names: ['bird'],\n tags: [],\n description: 'bird',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐧',\n names: ['penguin'],\n tags: [],\n description: 'penguin',\n category: 'Animals & Nature'\n },\n {\n emoji: '🕊️',\n names: ['dove'],\n tags: ['peace'],\n description: 'dove',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦅',\n names: ['eagle'],\n tags: [],\n description: 'eagle',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦆',\n names: ['duck'],\n tags: [],\n description: 'duck',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦢',\n names: ['swan'],\n tags: [],\n description: 'swan',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦉',\n names: ['owl'],\n tags: [],\n description: 'owl',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦤',\n names: ['dodo'],\n tags: [],\n description: 'dodo',\n category: 'Animals & Nature'\n },\n {\n emoji: '🪶',\n names: ['feather'],\n tags: [],\n description: 'feather',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦩',\n names: ['flamingo'],\n tags: [],\n description: 'flamingo',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦚',\n names: ['peacock'],\n tags: [],\n description: 'peacock',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦜',\n names: ['parrot'],\n tags: [],\n description: 'parrot',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐸',\n names: ['frog'],\n tags: [],\n description: 'frog',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐊',\n names: ['crocodile'],\n tags: [],\n description: 'crocodile',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐢',\n names: ['turtle'],\n tags: ['slow'],\n description: 'turtle',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦎',\n names: ['lizard'],\n tags: [],\n description: 'lizard',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐍',\n names: ['snake'],\n tags: [],\n description: 'snake',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐲',\n names: ['dragon_face'],\n tags: [],\n description: 'dragon face',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐉',\n names: ['dragon'],\n tags: [],\n description: 'dragon',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦕',\n names: ['sauropod'],\n tags: ['dinosaur'],\n description: 'sauropod',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦖',\n names: ['t-rex'],\n tags: ['dinosaur'],\n description: 'T-Rex',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐳',\n names: ['whale'],\n tags: ['sea'],\n description: 'spouting whale',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐋',\n names: ['whale2'],\n tags: [],\n description: 'whale',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐬',\n names: ['dolphin', 'flipper'],\n tags: [],\n description: 'dolphin',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦭',\n names: ['seal'],\n tags: [],\n description: 'seal',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐟',\n names: ['fish'],\n tags: [],\n description: 'fish',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐠',\n names: ['tropical_fish'],\n tags: [],\n description: 'tropical fish',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐡',\n names: ['blowfish'],\n tags: [],\n description: 'blowfish',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦈',\n names: ['shark'],\n tags: [],\n description: 'shark',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐙',\n names: ['octopus'],\n tags: [],\n description: 'octopus',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐚',\n names: ['shell'],\n tags: ['sea', 'beach'],\n description: 'spiral shell',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐌',\n names: ['snail'],\n tags: ['slow'],\n description: 'snail',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦋',\n names: ['butterfly'],\n tags: [],\n description: 'butterfly',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐛',\n names: ['bug'],\n tags: [],\n description: 'bug',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐜',\n names: ['ant'],\n tags: [],\n description: 'ant',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐝',\n names: ['bee', 'honeybee'],\n tags: [],\n description: 'honeybee',\n category: 'Animals & Nature'\n },\n {\n emoji: '🪲',\n names: ['beetle'],\n tags: [],\n description: 'beetle',\n category: 'Animals & Nature'\n },\n {\n emoji: '🐞',\n names: ['lady_beetle'],\n tags: ['bug'],\n description: 'lady beetle',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦗',\n names: ['cricket'],\n tags: [],\n description: 'cricket',\n category: 'Animals & Nature'\n },\n {\n emoji: '🪳',\n names: ['cockroach'],\n tags: [],\n description: 'cockroach',\n category: 'Animals & Nature'\n },\n {\n emoji: '🕷️',\n names: ['spider'],\n tags: [],\n description: 'spider',\n category: 'Animals & Nature'\n },\n {\n emoji: '🕸️',\n names: ['spider_web'],\n tags: [],\n description: 'spider web',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦂',\n names: ['scorpion'],\n tags: [],\n description: 'scorpion',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦟',\n names: ['mosquito'],\n tags: [],\n description: 'mosquito',\n category: 'Animals & Nature'\n },\n {\n emoji: '🪰',\n names: ['fly'],\n tags: [],\n description: 'fly',\n category: 'Animals & Nature'\n },\n {\n emoji: '🪱',\n names: ['worm'],\n tags: [],\n description: 'worm',\n category: 'Animals & Nature'\n },\n {\n emoji: '🦠',\n names: ['microbe'],\n tags: ['germ'],\n description: 'microbe',\n category: 'Animals & Nature'\n },\n {\n emoji: '💐',\n names: ['bouquet'],\n tags: ['flowers'],\n description: 'bouquet',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌸',\n names: ['cherry_blossom'],\n tags: ['flower', 'spring'],\n description: 'cherry blossom',\n category: 'Animals & Nature'\n },\n {\n emoji: '💮',\n names: ['white_flower'],\n tags: [],\n description: 'white flower',\n category: 'Animals & Nature'\n },\n {\n emoji: '🏵️',\n names: ['rosette'],\n tags: [],\n description: 'rosette',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌹',\n names: ['rose'],\n tags: ['flower'],\n description: 'rose',\n category: 'Animals & Nature'\n },\n {\n emoji: '🥀',\n names: ['wilted_flower'],\n tags: [],\n description: 'wilted flower',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌺',\n names: ['hibiscus'],\n tags: [],\n description: 'hibiscus',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌻',\n names: ['sunflower'],\n tags: [],\n description: 'sunflower',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌼',\n names: ['blossom'],\n tags: [],\n description: 'blossom',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌷',\n names: ['tulip'],\n tags: ['flower'],\n description: 'tulip',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌱',\n names: ['seedling'],\n tags: ['plant'],\n description: 'seedling',\n category: 'Animals & Nature'\n },\n {\n emoji: '🪴',\n names: ['potted_plant'],\n tags: [],\n description: 'potted plant',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌲',\n names: ['evergreen_tree'],\n tags: ['wood'],\n description: 'evergreen tree',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌳',\n names: ['deciduous_tree'],\n tags: ['wood'],\n description: 'deciduous tree',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌴',\n names: ['palm_tree'],\n tags: [],\n description: 'palm tree',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌵',\n names: ['cactus'],\n tags: [],\n description: 'cactus',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌾',\n names: ['ear_of_rice'],\n tags: [],\n description: 'sheaf of rice',\n category: 'Animals & Nature'\n },\n {\n emoji: '🌿',\n names: ['herb'],\n tags: [],\n description: 'herb',\n category: 'Animals & Nature'\n },\n {\n emoji: '☘️',\n names: ['shamrock'],\n tags: [],\n description: 'shamrock',\n category: 'Animals & Nature'\n },\n {\n emoji: '🍀',\n names: ['four_leaf_clover'],\n tags: ['luck'],\n description: 'four leaf clover',\n category: 'Animals & Nature'\n },\n {\n emoji: '🍁',\n names: ['maple_leaf'],\n tags: ['canada'],\n description: 'maple leaf',\n category: 'Animals & Nature'\n },\n {\n emoji: '🍂',\n names: ['fallen_leaf'],\n tags: ['autumn'],\n description: 'fallen leaf',\n category: 'Animals & Nature'\n },\n {\n emoji: '🍃',\n names: ['leaves'],\n tags: ['leaf'],\n description: 'leaf fluttering in wind',\n category: 'Animals & Nature'\n },\n {\n emoji: '🍇',\n names: ['grapes'],\n tags: [],\n description: 'grapes',\n category: 'Food & Drink'\n },\n {\n emoji: '🍈',\n names: ['melon'],\n tags: [],\n description: 'melon',\n category: 'Food & Drink'\n },\n {\n emoji: '🍉',\n names: ['watermelon'],\n tags: [],\n description: 'watermelon',\n category: 'Food & Drink'\n },\n {\n emoji: '🍊',\n names: ['tangerine', 'orange', 'mandarin'],\n tags: [],\n description: 'tangerine',\n category: 'Food & Drink'\n },\n {\n emoji: '🍋',\n names: ['lemon'],\n tags: [],\n description: 'lemon',\n category: 'Food & Drink'\n },\n {\n emoji: '🍌',\n names: ['banana'],\n tags: ['fruit'],\n description: 'banana',\n category: 'Food & Drink'\n },\n {\n emoji: '🍍',\n names: ['pineapple'],\n tags: [],\n description: 'pineapple',\n category: 'Food & Drink'\n },\n {\n emoji: '🥭',\n names: ['mango'],\n tags: [],\n description: 'mango',\n category: 'Food & Drink'\n },\n {\n emoji: '🍎',\n names: ['apple'],\n tags: [],\n description: 'red apple',\n category: 'Food & Drink'\n },\n {\n emoji: '🍏',\n names: ['green_apple'],\n tags: ['fruit'],\n description: 'green apple',\n category: 'Food & Drink'\n },\n {\n emoji: '🍐',\n names: ['pear'],\n tags: [],\n description: 'pear',\n category: 'Food & Drink'\n },\n {\n emoji: '🍑',\n names: ['peach'],\n tags: [],\n description: 'peach',\n category: 'Food & Drink'\n },\n {\n emoji: '🍒',\n names: ['cherries'],\n tags: ['fruit'],\n description: 'cherries',\n category: 'Food & Drink'\n },\n {\n emoji: '🍓',\n names: ['strawberry'],\n tags: ['fruit'],\n description: 'strawberry',\n category: 'Food & Drink'\n },\n {\n emoji: '🫐',\n names: ['blueberries'],\n tags: [],\n description: 'blueberries',\n category: 'Food & Drink'\n },\n {\n emoji: '🥝',\n names: ['kiwi_fruit'],\n tags: [],\n description: 'kiwi fruit',\n category: 'Food & Drink'\n },\n {\n emoji: '🍅',\n names: ['tomato'],\n tags: [],\n description: 'tomato',\n category: 'Food & Drink'\n },\n {\n emoji: '🫒',\n names: ['olive'],\n tags: [],\n description: 'olive',\n category: 'Food & Drink'\n },\n {\n emoji: '🥥',\n names: ['coconut'],\n tags: [],\n description: 'coconut',\n category: 'Food & Drink'\n },\n {\n emoji: '🥑',\n names: ['avocado'],\n tags: [],\n description: 'avocado',\n category: 'Food & Drink'\n },\n {\n emoji: '🍆',\n names: ['eggplant'],\n tags: ['aubergine'],\n description: 'eggplant',\n category: 'Food & Drink'\n },\n {\n emoji: '🥔',\n names: ['potato'],\n tags: [],\n description: 'potato',\n category: 'Food & Drink'\n },\n {\n emoji: '🥕',\n names: ['carrot'],\n tags: [],\n description: 'carrot',\n category: 'Food & Drink'\n },\n {\n emoji: '🌽',\n names: ['corn'],\n tags: [],\n description: 'ear of corn',\n category: 'Food & Drink'\n },\n {\n emoji: '🌶️',\n names: ['hot_pepper'],\n tags: ['spicy'],\n description: 'hot pepper',\n category: 'Food & Drink'\n },\n {\n emoji: '🫑',\n names: ['bell_pepper'],\n tags: [],\n description: 'bell pepper',\n category: 'Food & Drink'\n },\n {\n emoji: '🥒',\n names: ['cucumber'],\n tags: [],\n description: 'cucumber',\n category: 'Food & Drink'\n },\n {\n emoji: '🥬',\n names: ['leafy_green'],\n tags: [],\n description: 'leafy green',\n category: 'Food & Drink'\n },\n {\n emoji: '🥦',\n names: ['broccoli'],\n tags: [],\n description: 'broccoli',\n category: 'Food & Drink'\n },\n {\n emoji: '🧄',\n names: ['garlic'],\n tags: [],\n description: 'garlic',\n category: 'Food & Drink'\n },\n {\n emoji: '🧅',\n names: ['onion'],\n tags: [],\n description: 'onion',\n category: 'Food & Drink'\n },\n {\n emoji: '🍄',\n names: ['mushroom'],\n tags: [],\n description: 'mushroom',\n category: 'Food & Drink'\n },\n {\n emoji: '🥜',\n names: ['peanuts'],\n tags: [],\n description: 'peanuts',\n category: 'Food & Drink'\n },\n {\n emoji: '🌰',\n names: ['chestnut'],\n tags: [],\n description: 'chestnut',\n category: 'Food & Drink'\n },\n {\n emoji: '🍞',\n names: ['bread'],\n tags: ['toast'],\n description: 'bread',\n category: 'Food & Drink'\n },\n {\n emoji: '🥐',\n names: ['croissant'],\n tags: [],\n description: 'croissant',\n category: 'Food & Drink'\n },\n {\n emoji: '🥖',\n names: ['baguette_bread'],\n tags: [],\n description: 'baguette bread',\n category: 'Food & Drink'\n },\n {\n emoji: '🫓',\n names: ['flatbread'],\n tags: [],\n description: 'flatbread',\n category: 'Food & Drink'\n },\n {\n emoji: '🥨',\n names: ['pretzel'],\n tags: [],\n description: 'pretzel',\n category: 'Food & Drink'\n },\n {\n emoji: '🥯',\n names: ['bagel'],\n tags: [],\n description: 'bagel',\n category: 'Food & Drink'\n },\n {\n emoji: '🥞',\n names: ['pancakes'],\n tags: [],\n description: 'pancakes',\n category: 'Food & Drink'\n },\n {\n emoji: '🧇',\n names: ['waffle'],\n tags: [],\n description: 'waffle',\n category: 'Food & Drink'\n },\n {\n emoji: '🧀',\n names: ['cheese'],\n tags: [],\n description: 'cheese wedge',\n category: 'Food & Drink'\n },\n {\n emoji: '🍖',\n names: ['meat_on_bone'],\n tags: [],\n description: 'meat on bone',\n category: 'Food & Drink'\n },\n {\n emoji: '🍗',\n names: ['poultry_leg'],\n tags: ['meat', 'chicken'],\n description: 'poultry leg',\n category: 'Food & Drink'\n },\n {\n emoji: '🥩',\n names: ['cut_of_meat'],\n tags: [],\n description: 'cut of meat',\n category: 'Food & Drink'\n },\n {\n emoji: '🥓',\n names: ['bacon'],\n tags: [],\n description: 'bacon',\n category: 'Food & Drink'\n },\n {\n emoji: '🍔',\n names: ['hamburger'],\n tags: ['burger'],\n description: 'hamburger',\n category: 'Food & Drink'\n },\n {\n emoji: '🍟',\n names: ['fries'],\n tags: [],\n description: 'french fries',\n category: 'Food & Drink'\n },\n {\n emoji: '🍕',\n names: ['pizza'],\n tags: [],\n description: 'pizza',\n category: 'Food & Drink'\n },\n {\n emoji: '🌭',\n names: ['hotdog'],\n tags: [],\n description: 'hot dog',\n category: 'Food & Drink'\n },\n {\n emoji: '🥪',\n names: ['sandwich'],\n tags: [],\n description: 'sandwich',\n category: 'Food & Drink'\n },\n {\n emoji: '🌮',\n names: ['taco'],\n tags: [],\n description: 'taco',\n category: 'Food & Drink'\n },\n {\n emoji: '🌯',\n names: ['burrito'],\n tags: [],\n description: 'burrito',\n category: 'Food & Drink'\n },\n {\n emoji: '🫔',\n names: ['tamale'],\n tags: [],\n description: 'tamale',\n category: 'Food & Drink'\n },\n {\n emoji: '🥙',\n names: ['stuffed_flatbread'],\n tags: [],\n description: 'stuffed flatbread',\n category: 'Food & Drink'\n },\n {\n emoji: '🧆',\n names: ['falafel'],\n tags: [],\n description: 'falafel',\n category: 'Food & Drink'\n },\n {\n emoji: '🥚',\n names: ['egg'],\n tags: [],\n description: 'egg',\n category: 'Food & Drink'\n },\n {\n emoji: '🍳',\n names: ['fried_egg'],\n tags: ['breakfast'],\n description: 'cooking',\n category: 'Food & Drink'\n },\n {\n emoji: '🥘',\n names: ['shallow_pan_of_food'],\n tags: ['paella', 'curry'],\n description: 'shallow pan of food',\n category: 'Food & Drink'\n },\n {\n emoji: '🍲',\n names: ['stew'],\n tags: [],\n description: 'pot of food',\n category: 'Food & Drink'\n },\n {\n emoji: '🫕',\n names: ['fondue'],\n tags: [],\n description: 'fondue',\n category: 'Food & Drink'\n },\n {\n emoji: '🥣',\n names: ['bowl_with_spoon'],\n tags: [],\n description: 'bowl with spoon',\n category: 'Food & Drink'\n },\n {\n emoji: '🥗',\n names: ['green_salad'],\n tags: [],\n description: 'green salad',\n category: 'Food & Drink'\n },\n {\n emoji: '🍿',\n names: ['popcorn'],\n tags: [],\n description: 'popcorn',\n category: 'Food & Drink'\n },\n {\n emoji: '🧈',\n names: ['butter'],\n tags: [],\n description: 'butter',\n category: 'Food & Drink'\n },\n {\n emoji: '🧂',\n names: ['salt'],\n tags: [],\n description: 'salt',\n category: 'Food & Drink'\n },\n {\n emoji: '🥫',\n names: ['canned_food'],\n tags: [],\n description: 'canned food',\n category: 'Food & Drink'\n },\n {\n emoji: '🍱',\n names: ['bento'],\n tags: [],\n description: 'bento box',\n category: 'Food & Drink'\n },\n {\n emoji: '🍘',\n names: ['rice_cracker'],\n tags: [],\n description: 'rice cracker',\n category: 'Food & Drink'\n },\n {\n emoji: '🍙',\n names: ['rice_ball'],\n tags: [],\n description: 'rice ball',\n category: 'Food & Drink'\n },\n {\n emoji: '🍚',\n names: ['rice'],\n tags: [],\n description: 'cooked rice',\n category: 'Food & Drink'\n },\n {\n emoji: '🍛',\n names: ['curry'],\n tags: [],\n description: 'curry rice',\n category: 'Food & Drink'\n },\n {\n emoji: '🍜',\n names: ['ramen'],\n tags: ['noodle'],\n description: 'steaming bowl',\n category: 'Food & Drink'\n },\n {\n emoji: '🍝',\n names: ['spaghetti'],\n tags: ['pasta'],\n description: 'spaghetti',\n category: 'Food & Drink'\n },\n {\n emoji: '🍠',\n names: ['sweet_potato'],\n tags: [],\n description: 'roasted sweet potato',\n category: 'Food & Drink'\n },\n {\n emoji: '🍢',\n names: ['oden'],\n tags: [],\n description: 'oden',\n category: 'Food & Drink'\n },\n {\n emoji: '🍣',\n names: ['sushi'],\n tags: [],\n description: 'sushi',\n category: 'Food & Drink'\n },\n {\n emoji: '🍤',\n names: ['fried_shrimp'],\n tags: ['tempura'],\n description: 'fried shrimp',\n category: 'Food & Drink'\n },\n {\n emoji: '🍥',\n names: ['fish_cake'],\n tags: [],\n description: 'fish cake with swirl',\n category: 'Food & Drink'\n },\n {\n emoji: '🥮',\n names: ['moon_cake'],\n tags: [],\n description: 'moon cake',\n category: 'Food & Drink'\n },\n {\n emoji: '🍡',\n names: ['dango'],\n tags: [],\n description: 'dango',\n category: 'Food & Drink'\n },\n {\n emoji: '🥟',\n names: ['dumpling'],\n tags: [],\n description: 'dumpling',\n category: 'Food & Drink'\n },\n {\n emoji: '🥠',\n names: ['fortune_cookie'],\n tags: [],\n description: 'fortune cookie',\n category: 'Food & Drink'\n },\n {\n emoji: '🥡',\n names: ['takeout_box'],\n tags: [],\n description: 'takeout box',\n category: 'Food & Drink'\n },\n {\n emoji: '🦀',\n names: ['crab'],\n tags: [],\n description: 'crab',\n category: 'Food & Drink'\n },\n {\n emoji: '🦞',\n names: ['lobster'],\n tags: [],\n description: 'lobster',\n category: 'Food & Drink'\n },\n {\n emoji: '🦐',\n names: ['shrimp'],\n tags: [],\n description: 'shrimp',\n category: 'Food & Drink'\n },\n {\n emoji: '🦑',\n names: ['squid'],\n tags: [],\n description: 'squid',\n category: 'Food & Drink'\n },\n {\n emoji: '🦪',\n names: ['oyster'],\n tags: [],\n description: 'oyster',\n category: 'Food & Drink'\n },\n {\n emoji: '🍦',\n names: ['icecream'],\n tags: [],\n description: 'soft ice cream',\n category: 'Food & Drink'\n },\n {\n emoji: '🍧',\n names: ['shaved_ice'],\n tags: [],\n description: 'shaved ice',\n category: 'Food & Drink'\n },\n {\n emoji: '🍨',\n names: ['ice_cream'],\n tags: [],\n description: 'ice cream',\n category: 'Food & Drink'\n },\n {\n emoji: '🍩',\n names: ['doughnut'],\n tags: [],\n description: 'doughnut',\n category: 'Food & Drink'\n },\n {\n emoji: '🍪',\n names: ['cookie'],\n tags: [],\n description: 'cookie',\n category: 'Food & Drink'\n },\n {\n emoji: '🎂',\n names: ['birthday'],\n tags: ['party'],\n description: 'birthday cake',\n category: 'Food & Drink'\n },\n {\n emoji: '🍰',\n names: ['cake'],\n tags: ['dessert'],\n description: 'shortcake',\n category: 'Food & Drink'\n },\n {\n emoji: '🧁',\n names: ['cupcake'],\n tags: [],\n description: 'cupcake',\n category: 'Food & Drink'\n },\n {\n emoji: '🥧',\n names: ['pie'],\n tags: [],\n description: 'pie',\n category: 'Food & Drink'\n },\n {\n emoji: '🍫',\n names: ['chocolate_bar'],\n tags: [],\n description: 'chocolate bar',\n category: 'Food & Drink'\n },\n {\n emoji: '🍬',\n names: ['candy'],\n tags: ['sweet'],\n description: 'candy',\n category: 'Food & Drink'\n },\n {\n emoji: '🍭',\n names: ['lollipop'],\n tags: [],\n description: 'lollipop',\n category: 'Food & Drink'\n },\n {\n emoji: '🍮',\n names: ['custard'],\n tags: [],\n description: 'custard',\n category: 'Food & Drink'\n },\n {\n emoji: '🍯',\n names: ['honey_pot'],\n tags: [],\n description: 'honey pot',\n category: 'Food & Drink'\n },\n {\n emoji: '🍼',\n names: ['baby_bottle'],\n tags: ['milk'],\n description: 'baby bottle',\n category: 'Food & Drink'\n },\n {\n emoji: '🥛',\n names: ['milk_glass'],\n tags: [],\n description: 'glass of milk',\n category: 'Food & Drink'\n },\n {\n emoji: '☕',\n names: ['coffee'],\n tags: ['cafe', 'espresso'],\n description: 'hot beverage',\n category: 'Food & Drink'\n },\n {\n emoji: '🫖',\n names: ['teapot'],\n tags: [],\n description: 'teapot',\n category: 'Food & Drink'\n },\n {\n emoji: '🍵',\n names: ['tea'],\n tags: ['green', 'breakfast'],\n description: 'teacup without handle',\n category: 'Food & Drink'\n },\n {\n emoji: '🍶',\n names: ['sake'],\n tags: [],\n description: 'sake',\n category: 'Food & Drink'\n },\n {\n emoji: '🍾',\n names: ['champagne'],\n tags: ['bottle', 'bubbly', 'celebration'],\n description: 'bottle with popping cork',\n category: 'Food & Drink'\n },\n {\n emoji: '🍷',\n names: ['wine_glass'],\n tags: [],\n description: 'wine glass',\n category: 'Food & Drink'\n },\n {\n emoji: '🍸',\n names: ['cocktail'],\n tags: ['drink'],\n description: 'cocktail glass',\n category: 'Food & Drink'\n },\n {\n emoji: '🍹',\n names: ['tropical_drink'],\n tags: ['summer', 'vacation'],\n description: 'tropical drink',\n category: 'Food & Drink'\n },\n {\n emoji: '🍺',\n names: ['beer'],\n tags: ['drink'],\n description: 'beer mug',\n category: 'Food & Drink'\n },\n {\n emoji: '🍻',\n names: ['beers'],\n tags: ['drinks'],\n description: 'clinking beer mugs',\n category: 'Food & Drink'\n },\n {\n emoji: '🥂',\n names: ['clinking_glasses'],\n tags: ['cheers', 'toast'],\n description: 'clinking glasses',\n category: 'Food & Drink'\n },\n {\n emoji: '🥃',\n names: ['tumbler_glass'],\n tags: ['whisky'],\n description: 'tumbler glass',\n category: 'Food & Drink'\n },\n {\n emoji: '🥤',\n names: ['cup_with_straw'],\n tags: [],\n description: 'cup with straw',\n category: 'Food & Drink'\n },\n {\n emoji: '🧋',\n names: ['bubble_tea'],\n tags: [],\n description: 'bubble tea',\n category: 'Food & Drink'\n },\n {\n emoji: '🧃',\n names: ['beverage_box'],\n tags: [],\n description: 'beverage box',\n category: 'Food & Drink'\n },\n {\n emoji: '🧉',\n names: ['mate'],\n tags: [],\n description: 'mate',\n category: 'Food & Drink'\n },\n {\n emoji: '🧊',\n names: ['ice_cube'],\n tags: [],\n description: 'ice',\n category: 'Food & Drink'\n },\n {\n emoji: '🥢',\n names: ['chopsticks'],\n tags: [],\n description: 'chopsticks',\n category: 'Food & Drink'\n },\n {\n emoji: '🍽️',\n names: ['plate_with_cutlery'],\n tags: ['dining', 'dinner'],\n description: 'fork and knife with plate',\n category: 'Food & Drink'\n },\n {\n emoji: '🍴',\n names: ['fork_and_knife'],\n tags: ['cutlery'],\n description: 'fork and knife',\n category: 'Food & Drink'\n },\n {\n emoji: '🥄',\n names: ['spoon'],\n tags: [],\n description: 'spoon',\n category: 'Food & Drink'\n },\n {\n emoji: '🔪',\n names: ['hocho', 'knife'],\n tags: ['cut', 'chop'],\n description: 'kitchen knife',\n category: 'Food & Drink'\n },\n {\n emoji: '🏺',\n names: ['amphora'],\n tags: [],\n description: 'amphora',\n category: 'Food & Drink'\n },\n {\n emoji: '🌍',\n names: ['earth_africa'],\n tags: ['globe', 'world', 'international'],\n description: 'globe showing Europe-Africa',\n category: 'Travel & Places'\n },\n {\n emoji: '🌎',\n names: ['earth_americas'],\n tags: ['globe', 'world', 'international'],\n description: 'globe showing Americas',\n category: 'Travel & Places'\n },\n {\n emoji: '🌏',\n names: ['earth_asia'],\n tags: ['globe', 'world', 'international'],\n description: 'globe showing Asia-Australia',\n category: 'Travel & Places'\n },\n {\n emoji: '🌐',\n names: ['globe_with_meridians'],\n tags: ['world', 'global', 'international'],\n description: 'globe with meridians',\n category: 'Travel & Places'\n },\n {\n emoji: '🗺️',\n names: ['world_map'],\n tags: ['travel'],\n description: 'world map',\n category: 'Travel & Places'\n },\n {\n emoji: '🗾',\n names: ['japan'],\n tags: [],\n description: 'map of Japan',\n category: 'Travel & Places'\n },\n {\n emoji: '🧭',\n names: ['compass'],\n tags: [],\n description: 'compass',\n category: 'Travel & Places'\n },\n {\n emoji: '🏔️',\n names: ['mountain_snow'],\n tags: [],\n description: 'snow-capped mountain',\n category: 'Travel & Places'\n },\n {\n emoji: '⛰️',\n names: ['mountain'],\n tags: [],\n description: 'mountain',\n category: 'Travel & Places'\n },\n {\n emoji: '🌋',\n names: ['volcano'],\n tags: [],\n description: 'volcano',\n category: 'Travel & Places'\n },\n {\n emoji: '🗻',\n names: ['mount_fuji'],\n tags: [],\n description: 'mount fuji',\n category: 'Travel & Places'\n },\n {\n emoji: '🏕️',\n names: ['camping'],\n tags: [],\n description: 'camping',\n category: 'Travel & Places'\n },\n {\n emoji: '🏖️',\n names: ['beach_umbrella'],\n tags: [],\n description: 'beach with umbrella',\n category: 'Travel & Places'\n },\n {\n emoji: '🏜️',\n names: ['desert'],\n tags: [],\n description: 'desert',\n category: 'Travel & Places'\n },\n {\n emoji: '🏝️',\n names: ['desert_island'],\n tags: [],\n description: 'desert island',\n category: 'Travel & Places'\n },\n {\n emoji: '🏞️',\n names: ['national_park'],\n tags: [],\n description: 'national park',\n category: 'Travel & Places'\n },\n {\n emoji: '🏟️',\n names: ['stadium'],\n tags: [],\n description: 'stadium',\n category: 'Travel & Places'\n },\n {\n emoji: '🏛️',\n names: ['classical_building'],\n tags: [],\n description: 'classical building',\n category: 'Travel & Places'\n },\n {\n emoji: '🏗️',\n names: ['building_construction'],\n tags: [],\n description: 'building construction',\n category: 'Travel & Places'\n },\n {\n emoji: '🧱',\n names: ['bricks'],\n tags: [],\n description: 'brick',\n category: 'Travel & Places'\n },\n {\n emoji: '🪨',\n names: ['rock'],\n tags: [],\n description: 'rock',\n category: 'Travel & Places'\n },\n {\n emoji: '🪵',\n names: ['wood'],\n tags: [],\n description: 'wood',\n category: 'Travel & Places'\n },\n {\n emoji: '🛖',\n names: ['hut'],\n tags: [],\n description: 'hut',\n category: 'Travel & Places'\n },\n {\n emoji: '🏘️',\n names: ['houses'],\n tags: [],\n description: 'houses',\n category: 'Travel & Places'\n },\n {\n emoji: '🏚️',\n names: ['derelict_house'],\n tags: [],\n description: 'derelict house',\n category: 'Travel & Places'\n },\n {\n emoji: '🏠',\n names: ['house'],\n tags: [],\n description: 'house',\n category: 'Travel & Places'\n },\n {\n emoji: '🏡',\n names: ['house_with_garden'],\n tags: [],\n description: 'house with garden',\n category: 'Travel & Places'\n },\n {\n emoji: '🏢',\n names: ['office'],\n tags: [],\n description: 'office building',\n category: 'Travel & Places'\n },\n {\n emoji: '🏣',\n names: ['post_office'],\n tags: [],\n description: 'Japanese post office',\n category: 'Travel & Places'\n },\n {\n emoji: '🏤',\n names: ['european_post_office'],\n tags: [],\n description: 'post office',\n category: 'Travel & Places'\n },\n {\n emoji: '🏥',\n names: ['hospital'],\n tags: [],\n description: 'hospital',\n category: 'Travel & Places'\n },\n {\n emoji: '🏦',\n names: ['bank'],\n tags: [],\n description: 'bank',\n category: 'Travel & Places'\n },\n {\n emoji: '🏨',\n names: ['hotel'],\n tags: [],\n description: 'hotel',\n category: 'Travel & Places'\n },\n {\n emoji: '🏩',\n names: ['love_hotel'],\n tags: [],\n description: 'love hotel',\n category: 'Travel & Places'\n },\n {\n emoji: '🏪',\n names: ['convenience_store'],\n tags: [],\n description: 'convenience store',\n category: 'Travel & Places'\n },\n {\n emoji: '🏫',\n names: ['school'],\n tags: [],\n description: 'school',\n category: 'Travel & Places'\n },\n {\n emoji: '🏬',\n names: ['department_store'],\n tags: [],\n description: 'department store',\n category: 'Travel & Places'\n },\n {\n emoji: '🏭',\n names: ['factory'],\n tags: [],\n description: 'factory',\n category: 'Travel & Places'\n },\n {\n emoji: '🏯',\n names: ['japanese_castle'],\n tags: [],\n description: 'Japanese castle',\n category: 'Travel & Places'\n },\n {\n emoji: '🏰',\n names: ['european_castle'],\n tags: [],\n description: 'castle',\n category: 'Travel & Places'\n },\n {\n emoji: '💒',\n names: ['wedding'],\n tags: ['marriage'],\n description: 'wedding',\n category: 'Travel & Places'\n },\n {\n emoji: '🗼',\n names: ['tokyo_tower'],\n tags: [],\n description: 'Tokyo tower',\n category: 'Travel & Places'\n },\n {\n emoji: '🗽',\n names: ['statue_of_liberty'],\n tags: [],\n description: 'Statue of Liberty',\n category: 'Travel & Places'\n },\n {\n emoji: '⛪',\n names: ['church'],\n tags: [],\n description: 'church',\n category: 'Travel & Places'\n },\n {\n emoji: '🕌',\n names: ['mosque'],\n tags: [],\n description: 'mosque',\n category: 'Travel & Places'\n },\n {\n emoji: '🛕',\n names: ['hindu_temple'],\n tags: [],\n description: 'hindu temple',\n category: 'Travel & Places'\n },\n {\n emoji: '🕍',\n names: ['synagogue'],\n tags: [],\n description: 'synagogue',\n category: 'Travel & Places'\n },\n {\n emoji: '⛩️',\n names: ['shinto_shrine'],\n tags: [],\n description: 'shinto shrine',\n category: 'Travel & Places'\n },\n {\n emoji: '🕋',\n names: ['kaaba'],\n tags: [],\n description: 'kaaba',\n category: 'Travel & Places'\n },\n {\n emoji: '⛲',\n names: ['fountain'],\n tags: [],\n description: 'fountain',\n category: 'Travel & Places'\n },\n {\n emoji: '⛺',\n names: ['tent'],\n tags: ['camping'],\n description: 'tent',\n category: 'Travel & Places'\n },\n {\n emoji: '🌁',\n names: ['foggy'],\n tags: ['karl'],\n description: 'foggy',\n category: 'Travel & Places'\n },\n {\n emoji: '🌃',\n names: ['night_with_stars'],\n tags: [],\n description: 'night with stars',\n category: 'Travel & Places'\n },\n {\n emoji: '🏙️',\n names: ['cityscape'],\n tags: ['skyline'],\n description: 'cityscape',\n category: 'Travel & Places'\n },\n {\n emoji: '🌄',\n names: ['sunrise_over_mountains'],\n tags: [],\n description: 'sunrise over mountains',\n category: 'Travel & Places'\n },\n {\n emoji: '🌅',\n names: ['sunrise'],\n tags: [],\n description: 'sunrise',\n category: 'Travel & Places'\n },\n {\n emoji: '🌆',\n names: ['city_sunset'],\n tags: [],\n description: 'cityscape at dusk',\n category: 'Travel & Places'\n },\n {\n emoji: '🌇',\n names: ['city_sunrise'],\n tags: [],\n description: 'sunset',\n category: 'Travel & Places'\n },\n {\n emoji: '🌉',\n names: ['bridge_at_night'],\n tags: [],\n description: 'bridge at night',\n category: 'Travel & Places'\n },\n {\n emoji: '♨️',\n names: ['hotsprings'],\n tags: [],\n description: 'hot springs',\n category: 'Travel & Places'\n },\n {\n emoji: '🎠',\n names: ['carousel_horse'],\n tags: [],\n description: 'carousel horse',\n category: 'Travel & Places'\n },\n {\n emoji: '🎡',\n names: ['ferris_wheel'],\n tags: [],\n description: 'ferris wheel',\n category: 'Travel & Places'\n },\n {\n emoji: '🎢',\n names: ['roller_coaster'],\n tags: [],\n description: 'roller coaster',\n category: 'Travel & Places'\n },\n {\n emoji: '💈',\n names: ['barber'],\n tags: [],\n description: 'barber pole',\n category: 'Travel & Places'\n },\n {\n emoji: '🎪',\n names: ['circus_tent'],\n tags: [],\n description: 'circus tent',\n category: 'Travel & Places'\n },\n {\n emoji: '🚂',\n names: ['steam_locomotive'],\n tags: ['train'],\n description: 'locomotive',\n category: 'Travel & Places'\n },\n {\n emoji: '🚃',\n names: ['railway_car'],\n tags: [],\n description: 'railway car',\n category: 'Travel & Places'\n },\n {\n emoji: '🚄',\n names: ['bullettrain_side'],\n tags: ['train'],\n description: 'high-speed train',\n category: 'Travel & Places'\n },\n {\n emoji: '🚅',\n names: ['bullettrain_front'],\n tags: ['train'],\n description: 'bullet train',\n category: 'Travel & Places'\n },\n {\n emoji: '🚆',\n names: ['train2'],\n tags: [],\n description: 'train',\n category: 'Travel & Places'\n },\n {\n emoji: '🚇',\n names: ['metro'],\n tags: [],\n description: 'metro',\n category: 'Travel & Places'\n },\n {\n emoji: '🚈',\n names: ['light_rail'],\n tags: [],\n description: 'light rail',\n category: 'Travel & Places'\n },\n {\n emoji: '🚉',\n names: ['station'],\n tags: [],\n description: 'station',\n category: 'Travel & Places'\n },\n {\n emoji: '🚊',\n names: ['tram'],\n tags: [],\n description: 'tram',\n category: 'Travel & Places'\n },\n {\n emoji: '🚝',\n names: ['monorail'],\n tags: [],\n description: 'monorail',\n category: 'Travel & Places'\n },\n {\n emoji: '🚞',\n names: ['mountain_railway'],\n tags: [],\n description: 'mountain railway',\n category: 'Travel & Places'\n },\n {\n emoji: '🚋',\n names: ['train'],\n tags: [],\n description: 'tram car',\n category: 'Travel & Places'\n },\n {\n emoji: '🚌',\n names: ['bus'],\n tags: [],\n description: 'bus',\n category: 'Travel & Places'\n },\n {\n emoji: '🚍',\n names: ['oncoming_bus'],\n tags: [],\n description: 'oncoming bus',\n category: 'Travel & Places'\n },\n {\n emoji: '🚎',\n names: ['trolleybus'],\n tags: [],\n description: 'trolleybus',\n category: 'Travel & Places'\n },\n {\n emoji: '🚐',\n names: ['minibus'],\n tags: [],\n description: 'minibus',\n category: 'Travel & Places'\n },\n {\n emoji: '🚑',\n names: ['ambulance'],\n tags: [],\n description: 'ambulance',\n category: 'Travel & Places'\n },\n {\n emoji: '🚒',\n names: ['fire_engine'],\n tags: [],\n description: 'fire engine',\n category: 'Travel & Places'\n },\n {\n emoji: '🚓',\n names: ['police_car'],\n tags: [],\n description: 'police car',\n category: 'Travel & Places'\n },\n {\n emoji: '🚔',\n names: ['oncoming_police_car'],\n tags: [],\n description: 'oncoming police car',\n category: 'Travel & Places'\n },\n {\n emoji: '🚕',\n names: ['taxi'],\n tags: [],\n description: 'taxi',\n category: 'Travel & Places'\n },\n {\n emoji: '🚖',\n names: ['oncoming_taxi'],\n tags: [],\n description: 'oncoming taxi',\n category: 'Travel & Places'\n },\n {\n emoji: '🚗',\n names: ['car', 'red_car'],\n tags: [],\n description: 'automobile',\n category: 'Travel & Places'\n },\n {\n emoji: '🚘',\n names: ['oncoming_automobile'],\n tags: [],\n description: 'oncoming automobile',\n category: 'Travel & Places'\n },\n {\n emoji: '🚙',\n names: ['blue_car'],\n tags: [],\n description: 'sport utility vehicle',\n category: 'Travel & Places'\n },\n {\n emoji: '🛻',\n names: ['pickup_truck'],\n tags: [],\n description: 'pickup truck',\n category: 'Travel & Places'\n },\n {\n emoji: '🚚',\n names: ['truck'],\n tags: [],\n description: 'delivery truck',\n category: 'Travel & Places'\n },\n {\n emoji: '🚛',\n names: ['articulated_lorry'],\n tags: [],\n description: 'articulated lorry',\n category: 'Travel & Places'\n },\n {\n emoji: '🚜',\n names: ['tractor'],\n tags: [],\n description: 'tractor',\n category: 'Travel & Places'\n },\n {\n emoji: '🏎️',\n names: ['racing_car'],\n tags: [],\n description: 'racing car',\n category: 'Travel & Places'\n },\n {\n emoji: '🏍️',\n names: ['motorcycle'],\n tags: [],\n description: 'motorcycle',\n category: 'Travel & Places'\n },\n {\n emoji: '🛵',\n names: ['motor_scooter'],\n tags: [],\n description: 'motor scooter',\n category: 'Travel & Places'\n },\n {\n emoji: '🦽',\n names: ['manual_wheelchair'],\n tags: [],\n description: 'manual wheelchair',\n category: 'Travel & Places'\n },\n {\n emoji: '🦼',\n names: ['motorized_wheelchair'],\n tags: [],\n description: 'motorized wheelchair',\n category: 'Travel & Places'\n },\n {\n emoji: '🛺',\n names: ['auto_rickshaw'],\n tags: [],\n description: 'auto rickshaw',\n category: 'Travel & Places'\n },\n {\n emoji: '🚲',\n names: ['bike'],\n tags: ['bicycle'],\n description: 'bicycle',\n category: 'Travel & Places'\n },\n {\n emoji: '🛴',\n names: ['kick_scooter'],\n tags: [],\n description: 'kick scooter',\n category: 'Travel & Places'\n },\n {\n emoji: '🛹',\n names: ['skateboard'],\n tags: [],\n description: 'skateboard',\n category: 'Travel & Places'\n },\n {\n emoji: '🛼',\n names: ['roller_skate'],\n tags: [],\n description: 'roller skate',\n category: 'Travel & Places'\n },\n {\n emoji: '🚏',\n names: ['busstop'],\n tags: [],\n description: 'bus stop',\n category: 'Travel & Places'\n },\n {\n emoji: '🛣️',\n names: ['motorway'],\n tags: [],\n description: 'motorway',\n category: 'Travel & Places'\n },\n {\n emoji: '🛤️',\n names: ['railway_track'],\n tags: [],\n description: 'railway track',\n category: 'Travel & Places'\n },\n {\n emoji: '🛢️',\n names: ['oil_drum'],\n tags: [],\n description: 'oil drum',\n category: 'Travel & Places'\n },\n {\n emoji: '⛽',\n names: ['fuelpump'],\n tags: [],\n description: 'fuel pump',\n category: 'Travel & Places'\n },\n {\n emoji: '🚨',\n names: ['rotating_light'],\n tags: ['911', 'emergency'],\n description: 'police car light',\n category: 'Travel & Places'\n },\n {\n emoji: '🚥',\n names: ['traffic_light'],\n tags: [],\n description: 'horizontal traffic light',\n category: 'Travel & Places'\n },\n {\n emoji: '🚦',\n names: ['vertical_traffic_light'],\n tags: ['semaphore'],\n description: 'vertical traffic light',\n category: 'Travel & Places'\n },\n {\n emoji: '🛑',\n names: ['stop_sign'],\n tags: [],\n description: 'stop sign',\n category: 'Travel & Places'\n },\n {\n emoji: '🚧',\n names: ['construction'],\n tags: ['wip'],\n description: 'construction',\n category: 'Travel & Places'\n },\n {\n emoji: '⚓',\n names: ['anchor'],\n tags: ['ship'],\n description: 'anchor',\n category: 'Travel & Places'\n },\n {\n emoji: '⛵',\n names: ['boat', 'sailboat'],\n tags: [],\n description: 'sailboat',\n category: 'Travel & Places'\n },\n {\n emoji: '🛶',\n names: ['canoe'],\n tags: [],\n description: 'canoe',\n category: 'Travel & Places'\n },\n {\n emoji: '🚤',\n names: ['speedboat'],\n tags: ['ship'],\n description: 'speedboat',\n category: 'Travel & Places'\n },\n {\n emoji: '🛳️',\n names: ['passenger_ship'],\n tags: ['cruise'],\n description: 'passenger ship',\n category: 'Travel & Places'\n },\n {\n emoji: '⛴️',\n names: ['ferry'],\n tags: [],\n description: 'ferry',\n category: 'Travel & Places'\n },\n {\n emoji: '🛥️',\n names: ['motor_boat'],\n tags: [],\n description: 'motor boat',\n category: 'Travel & Places'\n },\n {\n emoji: '🚢',\n names: ['ship'],\n tags: [],\n description: 'ship',\n category: 'Travel & Places'\n },\n {\n emoji: '✈️',\n names: ['airplane'],\n tags: ['flight'],\n description: 'airplane',\n category: 'Travel & Places'\n },\n {\n emoji: '🛩️',\n names: ['small_airplane'],\n tags: ['flight'],\n description: 'small airplane',\n category: 'Travel & Places'\n },\n {\n emoji: '🛫',\n names: ['flight_departure'],\n tags: [],\n description: 'airplane departure',\n category: 'Travel & Places'\n },\n {\n emoji: '🛬',\n names: ['flight_arrival'],\n tags: [],\n description: 'airplane arrival',\n category: 'Travel & Places'\n },\n {\n emoji: '🪂',\n names: ['parachute'],\n tags: [],\n description: 'parachute',\n category: 'Travel & Places'\n },\n {\n emoji: '💺',\n names: ['seat'],\n tags: [],\n description: 'seat',\n category: 'Travel & Places'\n },\n {\n emoji: '🚁',\n names: ['helicopter'],\n tags: [],\n description: 'helicopter',\n category: 'Travel & Places'\n },\n {\n emoji: '🚟',\n names: ['suspension_railway'],\n tags: [],\n description: 'suspension railway',\n category: 'Travel & Places'\n },\n {\n emoji: '🚠',\n names: ['mountain_cableway'],\n tags: [],\n description: 'mountain cableway',\n category: 'Travel & Places'\n },\n {\n emoji: '🚡',\n names: ['aerial_tramway'],\n tags: [],\n description: 'aerial tramway',\n category: 'Travel & Places'\n },\n {\n emoji: '🛰️',\n names: ['artificial_satellite'],\n tags: ['orbit', 'space'],\n description: 'satellite',\n category: 'Travel & Places'\n },\n {\n emoji: '🚀',\n names: ['rocket'],\n tags: ['ship', 'launch'],\n description: 'rocket',\n category: 'Travel & Places'\n },\n {\n emoji: '🛸',\n names: ['flying_saucer'],\n tags: ['ufo'],\n description: 'flying saucer',\n category: 'Travel & Places'\n },\n {\n emoji: '🛎️',\n names: ['bellhop_bell'],\n tags: [],\n description: 'bellhop bell',\n category: 'Travel & Places'\n },\n {\n emoji: '🧳',\n names: ['luggage'],\n tags: [],\n description: 'luggage',\n category: 'Travel & Places'\n },\n {\n emoji: '⌛',\n names: ['hourglass'],\n tags: ['time'],\n description: 'hourglass done',\n category: 'Travel & Places'\n },\n {\n emoji: '⏳',\n names: ['hourglass_flowing_sand'],\n tags: ['time'],\n description: 'hourglass not done',\n category: 'Travel & Places'\n },\n {\n emoji: '⌚',\n names: ['watch'],\n tags: ['time'],\n description: 'watch',\n category: 'Travel & Places'\n },\n {\n emoji: '⏰',\n names: ['alarm_clock'],\n tags: ['morning'],\n description: 'alarm clock',\n category: 'Travel & Places'\n },\n {\n emoji: '⏱️',\n names: ['stopwatch'],\n tags: [],\n description: 'stopwatch',\n category: 'Travel & Places'\n },\n {\n emoji: '⏲️',\n names: ['timer_clock'],\n tags: [],\n description: 'timer clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕰️',\n names: ['mantelpiece_clock'],\n tags: [],\n description: 'mantelpiece clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕛',\n names: ['clock12'],\n tags: [],\n description: 'twelve o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕧',\n names: ['clock1230'],\n tags: [],\n description: 'twelve-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕐',\n names: ['clock1'],\n tags: [],\n description: 'one o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕜',\n names: ['clock130'],\n tags: [],\n description: 'one-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕑',\n names: ['clock2'],\n tags: [],\n description: 'two o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕝',\n names: ['clock230'],\n tags: [],\n description: 'two-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕒',\n names: ['clock3'],\n tags: [],\n description: 'three o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕞',\n names: ['clock330'],\n tags: [],\n description: 'three-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕓',\n names: ['clock4'],\n tags: [],\n description: 'four o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕟',\n names: ['clock430'],\n tags: [],\n description: 'four-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕔',\n names: ['clock5'],\n tags: [],\n description: 'five o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕠',\n names: ['clock530'],\n tags: [],\n description: 'five-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕕',\n names: ['clock6'],\n tags: [],\n description: 'six o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕡',\n names: ['clock630'],\n tags: [],\n description: 'six-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕖',\n names: ['clock7'],\n tags: [],\n description: 'seven o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕢',\n names: ['clock730'],\n tags: [],\n description: 'seven-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕗',\n names: ['clock8'],\n tags: [],\n description: 'eight o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕣',\n names: ['clock830'],\n tags: [],\n description: 'eight-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕘',\n names: ['clock9'],\n tags: [],\n description: 'nine o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕤',\n names: ['clock930'],\n tags: [],\n description: 'nine-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕙',\n names: ['clock10'],\n tags: [],\n description: 'ten o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕥',\n names: ['clock1030'],\n tags: [],\n description: 'ten-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🕚',\n names: ['clock11'],\n tags: [],\n description: 'eleven o’clock',\n category: 'Travel & Places'\n },\n {\n emoji: '🕦',\n names: ['clock1130'],\n tags: [],\n description: 'eleven-thirty',\n category: 'Travel & Places'\n },\n {\n emoji: '🌑',\n names: ['new_moon'],\n tags: [],\n description: 'new moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌒',\n names: ['waxing_crescent_moon'],\n tags: [],\n description: 'waxing crescent moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌓',\n names: ['first_quarter_moon'],\n tags: [],\n description: 'first quarter moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌔',\n names: ['moon', 'waxing_gibbous_moon'],\n tags: [],\n description: 'waxing gibbous moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌕',\n names: ['full_moon'],\n tags: [],\n description: 'full moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌖',\n names: ['waning_gibbous_moon'],\n tags: [],\n description: 'waning gibbous moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌗',\n names: ['last_quarter_moon'],\n tags: [],\n description: 'last quarter moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌘',\n names: ['waning_crescent_moon'],\n tags: [],\n description: 'waning crescent moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌙',\n names: ['crescent_moon'],\n tags: ['night'],\n description: 'crescent moon',\n category: 'Travel & Places'\n },\n {\n emoji: '🌚',\n names: ['new_moon_with_face'],\n tags: [],\n description: 'new moon face',\n category: 'Travel & Places'\n },\n {\n emoji: '🌛',\n names: ['first_quarter_moon_with_face'],\n tags: [],\n description: 'first quarter moon face',\n category: 'Travel & Places'\n },\n {\n emoji: '🌜',\n names: ['last_quarter_moon_with_face'],\n tags: [],\n description: 'last quarter moon face',\n category: 'Travel & Places'\n },\n {\n emoji: '🌡️',\n names: ['thermometer'],\n tags: [],\n description: 'thermometer',\n category: 'Travel & Places'\n },\n {\n emoji: '☀️',\n names: ['sunny'],\n tags: ['weather'],\n description: 'sun',\n category: 'Travel & Places'\n },\n {\n emoji: '🌝',\n names: ['full_moon_with_face'],\n tags: [],\n description: 'full moon face',\n category: 'Travel & Places'\n },\n {\n emoji: '🌞',\n names: ['sun_with_face'],\n tags: ['summer'],\n description: 'sun with face',\n category: 'Travel & Places'\n },\n {\n emoji: '🪐',\n names: ['ringed_planet'],\n tags: [],\n description: 'ringed planet',\n category: 'Travel & Places'\n },\n {\n emoji: '⭐',\n names: ['star'],\n tags: [],\n description: 'star',\n category: 'Travel & Places'\n },\n {\n emoji: '🌟',\n names: ['star2'],\n tags: [],\n description: 'glowing star',\n category: 'Travel & Places'\n },\n {\n emoji: '🌠',\n names: ['stars'],\n tags: [],\n description: 'shooting star',\n category: 'Travel & Places'\n },\n {\n emoji: '🌌',\n names: ['milky_way'],\n tags: [],\n description: 'milky way',\n category: 'Travel & Places'\n },\n {\n emoji: '☁️',\n names: ['cloud'],\n tags: [],\n description: 'cloud',\n category: 'Travel & Places'\n },\n {\n emoji: '⛅',\n names: ['partly_sunny'],\n tags: ['weather', 'cloud'],\n description: 'sun behind cloud',\n category: 'Travel & Places'\n },\n {\n emoji: '⛈️',\n names: ['cloud_with_lightning_and_rain'],\n tags: [],\n description: 'cloud with lightning and rain',\n category: 'Travel & Places'\n },\n {\n emoji: '🌤️',\n names: ['sun_behind_small_cloud'],\n tags: [],\n description: 'sun behind small cloud',\n category: 'Travel & Places'\n },\n {\n emoji: '🌥️',\n names: ['sun_behind_large_cloud'],\n tags: [],\n description: 'sun behind large cloud',\n category: 'Travel & Places'\n },\n {\n emoji: '🌦️',\n names: ['sun_behind_rain_cloud'],\n tags: [],\n description: 'sun behind rain cloud',\n category: 'Travel & Places'\n },\n {\n emoji: '🌧️',\n names: ['cloud_with_rain'],\n tags: [],\n description: 'cloud with rain',\n category: 'Travel & Places'\n },\n {\n emoji: '🌨️',\n names: ['cloud_with_snow'],\n tags: [],\n description: 'cloud with snow',\n category: 'Travel & Places'\n },\n {\n emoji: '🌩️',\n names: ['cloud_with_lightning'],\n tags: [],\n description: 'cloud with lightning',\n category: 'Travel & Places'\n },\n {\n emoji: '🌪️',\n names: ['tornado'],\n tags: [],\n description: 'tornado',\n category: 'Travel & Places'\n },\n {\n emoji: '🌫️',\n names: ['fog'],\n tags: [],\n description: 'fog',\n category: 'Travel & Places'\n },\n {\n emoji: '🌬️',\n names: ['wind_face'],\n tags: [],\n description: 'wind face',\n category: 'Travel & Places'\n },\n {\n emoji: '🌀',\n names: ['cyclone'],\n tags: ['swirl'],\n description: 'cyclone',\n category: 'Travel & Places'\n },\n {\n emoji: '🌈',\n names: ['rainbow'],\n tags: [],\n description: 'rainbow',\n category: 'Travel & Places'\n },\n {\n emoji: '🌂',\n names: ['closed_umbrella'],\n tags: ['weather', 'rain'],\n description: 'closed umbrella',\n category: 'Travel & Places'\n },\n {\n emoji: '☂️',\n names: ['open_umbrella'],\n tags: [],\n description: 'umbrella',\n category: 'Travel & Places'\n },\n {\n emoji: '☔',\n names: ['umbrella'],\n tags: ['rain', 'weather'],\n description: 'umbrella with rain drops',\n category: 'Travel & Places'\n },\n {\n emoji: '⛱️',\n names: ['parasol_on_ground'],\n tags: ['beach_umbrella'],\n description: 'umbrella on ground',\n category: 'Travel & Places'\n },\n {\n emoji: '⚡',\n names: ['zap'],\n tags: ['lightning', 'thunder'],\n description: 'high voltage',\n category: 'Travel & Places'\n },\n {\n emoji: '❄️',\n names: ['snowflake'],\n tags: ['winter', 'cold', 'weather'],\n description: 'snowflake',\n category: 'Travel & Places'\n },\n {\n emoji: '☃️',\n names: ['snowman_with_snow'],\n tags: ['winter', 'christmas'],\n description: 'snowman',\n category: 'Travel & Places'\n },\n {\n emoji: '⛄',\n names: ['snowman'],\n tags: ['winter'],\n description: 'snowman without snow',\n category: 'Travel & Places'\n },\n {\n emoji: '☄️',\n names: ['comet'],\n tags: [],\n description: 'comet',\n category: 'Travel & Places'\n },\n {\n emoji: '🔥',\n names: ['fire'],\n tags: ['burn'],\n description: 'fire',\n category: 'Travel & Places'\n },\n {\n emoji: '💧',\n names: ['droplet'],\n tags: ['water'],\n description: 'droplet',\n category: 'Travel & Places'\n },\n {\n emoji: '🌊',\n names: ['ocean'],\n tags: ['sea'],\n description: 'water wave',\n category: 'Travel & Places'\n },\n {\n emoji: '🎃',\n names: ['jack_o_lantern'],\n tags: ['halloween'],\n description: 'jack-o-lantern',\n category: 'Activities'\n },\n {\n emoji: '🎄',\n names: ['christmas_tree'],\n tags: [],\n description: 'Christmas tree',\n category: 'Activities'\n },\n {\n emoji: '🎆',\n names: ['fireworks'],\n tags: ['festival', 'celebration'],\n description: 'fireworks',\n category: 'Activities'\n },\n {\n emoji: '🎇',\n names: ['sparkler'],\n tags: [],\n description: 'sparkler',\n category: 'Activities'\n },\n {\n emoji: '🧨',\n names: ['firecracker'],\n tags: [],\n description: 'firecracker',\n category: 'Activities'\n },\n {\n emoji: '✨',\n names: ['sparkles'],\n tags: ['shiny'],\n description: 'sparkles',\n category: 'Activities'\n },\n {\n emoji: '🎈',\n names: ['balloon'],\n tags: ['party', 'birthday'],\n description: 'balloon',\n category: 'Activities'\n },\n {\n emoji: '🎉',\n names: ['tada'],\n tags: ['hooray', 'party'],\n description: 'party popper',\n category: 'Activities'\n },\n {\n emoji: '🎊',\n names: ['confetti_ball'],\n tags: [],\n description: 'confetti ball',\n category: 'Activities'\n },\n {\n emoji: '🎋',\n names: ['tanabata_tree'],\n tags: [],\n description: 'tanabata tree',\n category: 'Activities'\n },\n {\n emoji: '🎍',\n names: ['bamboo'],\n tags: [],\n description: 'pine decoration',\n category: 'Activities'\n },\n {\n emoji: '🎎',\n names: ['dolls'],\n tags: [],\n description: 'Japanese dolls',\n category: 'Activities'\n },\n {\n emoji: '🎏',\n names: ['flags'],\n tags: [],\n description: 'carp streamer',\n category: 'Activities'\n },\n {\n emoji: '🎐',\n names: ['wind_chime'],\n tags: [],\n description: 'wind chime',\n category: 'Activities'\n },\n {\n emoji: '🎑',\n names: ['rice_scene'],\n tags: [],\n description: 'moon viewing ceremony',\n category: 'Activities'\n },\n {\n emoji: '🧧',\n names: ['red_envelope'],\n tags: [],\n description: 'red envelope',\n category: 'Activities'\n },\n {\n emoji: '🎀',\n names: ['ribbon'],\n tags: [],\n description: 'ribbon',\n category: 'Activities'\n },\n {\n emoji: '🎁',\n names: ['gift'],\n tags: ['present', 'birthday', 'christmas'],\n description: 'wrapped gift',\n category: 'Activities'\n },\n {\n emoji: '🎗️',\n names: ['reminder_ribbon'],\n tags: [],\n description: 'reminder ribbon',\n category: 'Activities'\n },\n {\n emoji: '🎟️',\n names: ['tickets'],\n tags: [],\n description: 'admission tickets',\n category: 'Activities'\n },\n {\n emoji: '🎫',\n names: ['ticket'],\n tags: [],\n description: 'ticket',\n category: 'Activities'\n },\n {\n emoji: '🎖️',\n names: ['medal_military'],\n tags: [],\n description: 'military medal',\n category: 'Activities'\n },\n {\n emoji: '🏆',\n names: ['trophy'],\n tags: ['award', 'contest', 'winner'],\n description: 'trophy',\n category: 'Activities'\n },\n {\n emoji: '🏅',\n names: ['medal_sports'],\n tags: ['gold', 'winner'],\n description: 'sports medal',\n category: 'Activities'\n },\n {\n emoji: '🥇',\n names: ['1st_place_medal'],\n tags: ['gold'],\n description: '1st place medal',\n category: 'Activities'\n },\n {\n emoji: '🥈',\n names: ['2nd_place_medal'],\n tags: ['silver'],\n description: '2nd place medal',\n category: 'Activities'\n },\n {\n emoji: '🥉',\n names: ['3rd_place_medal'],\n tags: ['bronze'],\n description: '3rd place medal',\n category: 'Activities'\n },\n {\n emoji: '⚽',\n names: ['soccer'],\n tags: ['sports'],\n description: 'soccer ball',\n category: 'Activities'\n },\n {\n emoji: '⚾',\n names: ['baseball'],\n tags: ['sports'],\n description: 'baseball',\n category: 'Activities'\n },\n {\n emoji: '🥎',\n names: ['softball'],\n tags: [],\n description: 'softball',\n category: 'Activities'\n },\n {\n emoji: '🏀',\n names: ['basketball'],\n tags: ['sports'],\n description: 'basketball',\n category: 'Activities'\n },\n {\n emoji: '🏐',\n names: ['volleyball'],\n tags: [],\n description: 'volleyball',\n category: 'Activities'\n },\n {\n emoji: '🏈',\n names: ['football'],\n tags: ['sports'],\n description: 'american football',\n category: 'Activities'\n },\n {\n emoji: '🏉',\n names: ['rugby_football'],\n tags: [],\n description: 'rugby football',\n category: 'Activities'\n },\n {\n emoji: '🎾',\n names: ['tennis'],\n tags: ['sports'],\n description: 'tennis',\n category: 'Activities'\n },\n {\n emoji: '🥏',\n names: ['flying_disc'],\n tags: [],\n description: 'flying disc',\n category: 'Activities'\n },\n {\n emoji: '🎳',\n names: ['bowling'],\n tags: [],\n description: 'bowling',\n category: 'Activities'\n },\n {\n emoji: '🏏',\n names: ['cricket_game'],\n tags: [],\n description: 'cricket game',\n category: 'Activities'\n },\n {\n emoji: '🏑',\n names: ['field_hockey'],\n tags: [],\n description: 'field hockey',\n category: 'Activities'\n },\n {\n emoji: '🏒',\n names: ['ice_hockey'],\n tags: [],\n description: 'ice hockey',\n category: 'Activities'\n },\n {\n emoji: '🥍',\n names: ['lacrosse'],\n tags: [],\n description: 'lacrosse',\n category: 'Activities'\n },\n {\n emoji: '🏓',\n names: ['ping_pong'],\n tags: [],\n description: 'ping pong',\n category: 'Activities'\n },\n {\n emoji: '🏸',\n names: ['badminton'],\n tags: [],\n description: 'badminton',\n category: 'Activities'\n },\n {\n emoji: '🥊',\n names: ['boxing_glove'],\n tags: [],\n description: 'boxing glove',\n category: 'Activities'\n },\n {\n emoji: '🥋',\n names: ['martial_arts_uniform'],\n tags: [],\n description: 'martial arts uniform',\n category: 'Activities'\n },\n {\n emoji: '🥅',\n names: ['goal_net'],\n tags: [],\n description: 'goal net',\n category: 'Activities'\n },\n {\n emoji: '⛳',\n names: ['golf'],\n tags: [],\n description: 'flag in hole',\n category: 'Activities'\n },\n {\n emoji: '⛸️',\n names: ['ice_skate'],\n tags: ['skating'],\n description: 'ice skate',\n category: 'Activities'\n },\n {\n emoji: '🎣',\n names: ['fishing_pole_and_fish'],\n tags: [],\n description: 'fishing pole',\n category: 'Activities'\n },\n {\n emoji: '🤿',\n names: ['diving_mask'],\n tags: [],\n description: 'diving mask',\n category: 'Activities'\n },\n {\n emoji: '🎽',\n names: ['running_shirt_with_sash'],\n tags: ['marathon'],\n description: 'running shirt',\n category: 'Activities'\n },\n {\n emoji: '🎿',\n names: ['ski'],\n tags: [],\n description: 'skis',\n category: 'Activities'\n },\n {\n emoji: '🛷',\n names: ['sled'],\n tags: [],\n description: 'sled',\n category: 'Activities'\n },\n {\n emoji: '🥌',\n names: ['curling_stone'],\n tags: [],\n description: 'curling stone',\n category: 'Activities'\n },\n {\n emoji: '🎯',\n names: ['dart'],\n tags: ['target'],\n description: 'bullseye',\n category: 'Activities'\n },\n {\n emoji: '🪀',\n names: ['yo_yo'],\n tags: [],\n description: 'yo-yo',\n category: 'Activities'\n },\n {\n emoji: '🪁',\n names: ['kite'],\n tags: [],\n description: 'kite',\n category: 'Activities'\n },\n {\n emoji: '🎱',\n names: ['8ball'],\n tags: ['pool', 'billiards'],\n description: 'pool 8 ball',\n category: 'Activities'\n },\n {\n emoji: '🔮',\n names: ['crystal_ball'],\n tags: ['fortune'],\n description: 'crystal ball',\n category: 'Activities'\n },\n {\n emoji: '🪄',\n names: ['magic_wand'],\n tags: [],\n description: 'magic wand',\n category: 'Activities'\n },\n {\n emoji: '🧿',\n names: ['nazar_amulet'],\n tags: [],\n description: 'nazar amulet',\n category: 'Activities'\n },\n {\n emoji: '🎮',\n names: ['video_game'],\n tags: ['play', 'controller', 'console'],\n description: 'video game',\n category: 'Activities'\n },\n {\n emoji: '🕹️',\n names: ['joystick'],\n tags: [],\n description: 'joystick',\n category: 'Activities'\n },\n {\n emoji: '🎰',\n names: ['slot_machine'],\n tags: [],\n description: 'slot machine',\n category: 'Activities'\n },\n {\n emoji: '🎲',\n names: ['game_die'],\n tags: ['dice', 'gambling'],\n description: 'game die',\n category: 'Activities'\n },\n {\n emoji: '🧩',\n names: ['jigsaw'],\n tags: [],\n description: 'puzzle piece',\n category: 'Activities'\n },\n {\n emoji: '🧸',\n names: ['teddy_bear'],\n tags: [],\n description: 'teddy bear',\n category: 'Activities'\n },\n {\n emoji: '🪅',\n names: ['pinata'],\n tags: [],\n description: 'piñata',\n category: 'Activities'\n },\n {\n emoji: '🪆',\n names: ['nesting_dolls'],\n tags: [],\n description: 'nesting dolls',\n category: 'Activities'\n },\n {\n emoji: '♠️',\n names: ['spades'],\n tags: [],\n description: 'spade suit',\n category: 'Activities'\n },\n {\n emoji: '♥️',\n names: ['hearts'],\n tags: [],\n description: 'heart suit',\n category: 'Activities'\n },\n {\n emoji: '♦️',\n names: ['diamonds'],\n tags: [],\n description: 'diamond suit',\n category: 'Activities'\n },\n {\n emoji: '♣️',\n names: ['clubs'],\n tags: [],\n description: 'club suit',\n category: 'Activities'\n },\n {\n emoji: '♟️',\n names: ['chess_pawn'],\n tags: [],\n description: 'chess pawn',\n category: 'Activities'\n },\n {\n emoji: '🃏',\n names: ['black_joker'],\n tags: [],\n description: 'joker',\n category: 'Activities'\n },\n {\n emoji: '🀄',\n names: ['mahjong'],\n tags: [],\n description: 'mahjong red dragon',\n category: 'Activities'\n },\n {\n emoji: '🎴',\n names: ['flower_playing_cards'],\n tags: [],\n description: 'flower playing cards',\n category: 'Activities'\n },\n {\n emoji: '🎭',\n names: ['performing_arts'],\n tags: ['theater', 'drama'],\n description: 'performing arts',\n category: 'Activities'\n },\n {\n emoji: '🖼️',\n names: ['framed_picture'],\n tags: [],\n description: 'framed picture',\n category: 'Activities'\n },\n {\n emoji: '🎨',\n names: ['art'],\n tags: ['design', 'paint'],\n description: 'artist palette',\n category: 'Activities'\n },\n {\n emoji: '🧵',\n names: ['thread'],\n tags: [],\n description: 'thread',\n category: 'Activities'\n },\n {\n emoji: '🪡',\n names: ['sewing_needle'],\n tags: [],\n description: 'sewing needle',\n category: 'Activities'\n },\n {\n emoji: '🧶',\n names: ['yarn'],\n tags: [],\n description: 'yarn',\n category: 'Activities'\n },\n {\n emoji: '🪢',\n names: ['knot'],\n tags: [],\n description: 'knot',\n category: 'Activities'\n },\n {\n emoji: '👓',\n names: ['eyeglasses'],\n tags: ['glasses'],\n description: 'glasses',\n category: 'Objects'\n },\n {\n emoji: '🕶️',\n names: ['dark_sunglasses'],\n tags: [],\n description: 'sunglasses',\n category: 'Objects'\n },\n {\n emoji: '🥽',\n names: ['goggles'],\n tags: [],\n description: 'goggles',\n category: 'Objects'\n },\n {\n emoji: '🥼',\n names: ['lab_coat'],\n tags: [],\n description: 'lab coat',\n category: 'Objects'\n },\n {\n emoji: '🦺',\n names: ['safety_vest'],\n tags: [],\n description: 'safety vest',\n category: 'Objects'\n },\n {\n emoji: '👔',\n names: ['necktie'],\n tags: ['shirt', 'formal'],\n description: 'necktie',\n category: 'Objects'\n },\n {\n emoji: '👕',\n names: ['shirt', 'tshirt'],\n tags: [],\n description: 't-shirt',\n category: 'Objects'\n },\n {\n emoji: '👖',\n names: ['jeans'],\n tags: ['pants'],\n description: 'jeans',\n category: 'Objects'\n },\n {\n emoji: '🧣',\n names: ['scarf'],\n tags: [],\n description: 'scarf',\n category: 'Objects'\n },\n {\n emoji: '🧤',\n names: ['gloves'],\n tags: [],\n description: 'gloves',\n category: 'Objects'\n },\n {\n emoji: '🧥',\n names: ['coat'],\n tags: [],\n description: 'coat',\n category: 'Objects'\n },\n {\n emoji: '🧦',\n names: ['socks'],\n tags: [],\n description: 'socks',\n category: 'Objects'\n },\n {\n emoji: '👗',\n names: ['dress'],\n tags: [],\n description: 'dress',\n category: 'Objects'\n },\n {\n emoji: '👘',\n names: ['kimono'],\n tags: [],\n description: 'kimono',\n category: 'Objects'\n },\n {\n emoji: '🥻',\n names: ['sari'],\n tags: [],\n description: 'sari',\n category: 'Objects'\n },\n {\n emoji: '🩱',\n names: ['one_piece_swimsuit'],\n tags: [],\n description: 'one-piece swimsuit',\n category: 'Objects'\n },\n {\n emoji: '🩲',\n names: ['swim_brief'],\n tags: [],\n description: 'briefs',\n category: 'Objects'\n },\n {\n emoji: '🩳',\n names: ['shorts'],\n tags: [],\n description: 'shorts',\n category: 'Objects'\n },\n {\n emoji: '👙',\n names: ['bikini'],\n tags: ['beach'],\n description: 'bikini',\n category: 'Objects'\n },\n {\n emoji: '👚',\n names: ['womans_clothes'],\n tags: [],\n description: 'woman’s clothes',\n category: 'Objects'\n },\n {\n emoji: '👛',\n names: ['purse'],\n tags: [],\n description: 'purse',\n category: 'Objects'\n },\n {\n emoji: '👜',\n names: ['handbag'],\n tags: ['bag'],\n description: 'handbag',\n category: 'Objects'\n },\n {\n emoji: '👝',\n names: ['pouch'],\n tags: ['bag'],\n description: 'clutch bag',\n category: 'Objects'\n },\n {\n emoji: '🛍️',\n names: ['shopping'],\n tags: ['bags'],\n description: 'shopping bags',\n category: 'Objects'\n },\n {\n emoji: '🎒',\n names: ['school_satchel'],\n tags: [],\n description: 'backpack',\n category: 'Objects'\n },\n {\n emoji: '🩴',\n names: ['thong_sandal'],\n tags: [],\n description: 'thong sandal',\n category: 'Objects'\n },\n {\n emoji: '👞',\n names: ['mans_shoe', 'shoe'],\n tags: [],\n description: 'man’s shoe',\n category: 'Objects'\n },\n {\n emoji: '👟',\n names: ['athletic_shoe'],\n tags: ['sneaker', 'sport', 'running'],\n description: 'running shoe',\n category: 'Objects'\n },\n {\n emoji: '🥾',\n names: ['hiking_boot'],\n tags: [],\n description: 'hiking boot',\n category: 'Objects'\n },\n {\n emoji: '🥿',\n names: ['flat_shoe'],\n tags: [],\n description: 'flat shoe',\n category: 'Objects'\n },\n {\n emoji: '👠',\n names: ['high_heel'],\n tags: ['shoe'],\n description: 'high-heeled shoe',\n category: 'Objects'\n },\n {\n emoji: '👡',\n names: ['sandal'],\n tags: ['shoe'],\n description: 'woman’s sandal',\n category: 'Objects'\n },\n {\n emoji: '🩰',\n names: ['ballet_shoes'],\n tags: [],\n description: 'ballet shoes',\n category: 'Objects'\n },\n {\n emoji: '👢',\n names: ['boot'],\n tags: [],\n description: 'woman’s boot',\n category: 'Objects'\n },\n {\n emoji: '👑',\n names: ['crown'],\n tags: ['king', 'queen', 'royal'],\n description: 'crown',\n category: 'Objects'\n },\n {\n emoji: '👒',\n names: ['womans_hat'],\n tags: [],\n description: 'woman’s hat',\n category: 'Objects'\n },\n {\n emoji: '🎩',\n names: ['tophat'],\n tags: ['hat', 'classy'],\n description: 'top hat',\n category: 'Objects'\n },\n {\n emoji: '🎓',\n names: ['mortar_board'],\n tags: ['education', 'college', 'university', 'graduation'],\n description: 'graduation cap',\n category: 'Objects'\n },\n {\n emoji: '🧢',\n names: ['billed_cap'],\n tags: [],\n description: 'billed cap',\n category: 'Objects'\n },\n {\n emoji: '🪖',\n names: ['military_helmet'],\n tags: [],\n description: 'military helmet',\n category: 'Objects'\n },\n {\n emoji: '⛑️',\n names: ['rescue_worker_helmet'],\n tags: [],\n description: 'rescue worker’s helmet',\n category: 'Objects'\n },\n {\n emoji: '📿',\n names: ['prayer_beads'],\n tags: [],\n description: 'prayer beads',\n category: 'Objects'\n },\n {\n emoji: '💄',\n names: ['lipstick'],\n tags: ['makeup'],\n description: 'lipstick',\n category: 'Objects'\n },\n {\n emoji: '💍',\n names: ['ring'],\n tags: ['wedding', 'marriage', 'engaged'],\n description: 'ring',\n category: 'Objects'\n },\n {\n emoji: '💎',\n names: ['gem'],\n tags: ['diamond'],\n description: 'gem stone',\n category: 'Objects'\n },\n {\n emoji: '🔇',\n names: ['mute'],\n tags: ['sound', 'volume'],\n description: 'muted speaker',\n category: 'Objects'\n },\n {\n emoji: '🔈',\n names: ['speaker'],\n tags: [],\n description: 'speaker low volume',\n category: 'Objects'\n },\n {\n emoji: '🔉',\n names: ['sound'],\n tags: ['volume'],\n description: 'speaker medium volume',\n category: 'Objects'\n },\n {\n emoji: '🔊',\n names: ['loud_sound'],\n tags: ['volume'],\n description: 'speaker high volume',\n category: 'Objects'\n },\n {\n emoji: '📢',\n names: ['loudspeaker'],\n tags: ['announcement'],\n description: 'loudspeaker',\n category: 'Objects'\n },\n {\n emoji: '📣',\n names: ['mega'],\n tags: [],\n description: 'megaphone',\n category: 'Objects'\n },\n {\n emoji: '📯',\n names: ['postal_horn'],\n tags: [],\n description: 'postal horn',\n category: 'Objects'\n },\n {\n emoji: '🔔',\n names: ['bell'],\n tags: ['sound', 'notification'],\n description: 'bell',\n category: 'Objects'\n },\n {\n emoji: '🔕',\n names: ['no_bell'],\n tags: ['volume', 'off'],\n description: 'bell with slash',\n category: 'Objects'\n },\n {\n emoji: '🎼',\n names: ['musical_score'],\n tags: [],\n description: 'musical score',\n category: 'Objects'\n },\n {\n emoji: '🎵',\n names: ['musical_note'],\n tags: [],\n description: 'musical note',\n category: 'Objects'\n },\n {\n emoji: '🎶',\n names: ['notes'],\n tags: ['music'],\n description: 'musical notes',\n category: 'Objects'\n },\n {\n emoji: '🎙️',\n names: ['studio_microphone'],\n tags: ['podcast'],\n description: 'studio microphone',\n category: 'Objects'\n },\n {\n emoji: '🎚️',\n names: ['level_slider'],\n tags: [],\n description: 'level slider',\n category: 'Objects'\n },\n {\n emoji: '🎛️',\n names: ['control_knobs'],\n tags: [],\n description: 'control knobs',\n category: 'Objects'\n },\n {\n emoji: '🎤',\n names: ['microphone'],\n tags: ['sing'],\n description: 'microphone',\n category: 'Objects'\n },\n {\n emoji: '🎧',\n names: ['headphones'],\n tags: ['music', 'earphones'],\n description: 'headphone',\n category: 'Objects'\n },\n {\n emoji: '📻',\n names: ['radio'],\n tags: ['podcast'],\n description: 'radio',\n category: 'Objects'\n },\n {\n emoji: '🎷',\n names: ['saxophone'],\n tags: [],\n description: 'saxophone',\n category: 'Objects'\n },\n {\n emoji: '🪗',\n names: ['accordion'],\n tags: [],\n description: 'accordion',\n category: 'Objects'\n },\n {\n emoji: '🎸',\n names: ['guitar'],\n tags: ['rock'],\n description: 'guitar',\n category: 'Objects'\n },\n {\n emoji: '🎹',\n names: ['musical_keyboard'],\n tags: ['piano'],\n description: 'musical keyboard',\n category: 'Objects'\n },\n {\n emoji: '🎺',\n names: ['trumpet'],\n tags: [],\n description: 'trumpet',\n category: 'Objects'\n },\n {\n emoji: '🎻',\n names: ['violin'],\n tags: [],\n description: 'violin',\n category: 'Objects'\n },\n {\n emoji: '🪕',\n names: ['banjo'],\n tags: [],\n description: 'banjo',\n category: 'Objects'\n },\n {\n emoji: '🥁',\n names: ['drum'],\n tags: [],\n description: 'drum',\n category: 'Objects'\n },\n {\n emoji: '🪘',\n names: ['long_drum'],\n tags: [],\n description: 'long drum',\n category: 'Objects'\n },\n {\n emoji: '📱',\n names: ['iphone'],\n tags: ['smartphone', 'mobile'],\n description: 'mobile phone',\n category: 'Objects'\n },\n {\n emoji: '📲',\n names: ['calling'],\n tags: ['call', 'incoming'],\n description: 'mobile phone with arrow',\n category: 'Objects'\n },\n {\n emoji: '☎️',\n names: ['phone', 'telephone'],\n tags: [],\n description: 'telephone',\n category: 'Objects'\n },\n {\n emoji: '📞',\n names: ['telephone_receiver'],\n tags: ['phone', 'call'],\n description: 'telephone receiver',\n category: 'Objects'\n },\n {\n emoji: '📟',\n names: ['pager'],\n tags: [],\n description: 'pager',\n category: 'Objects'\n },\n {\n emoji: '📠',\n names: ['fax'],\n tags: [],\n description: 'fax machine',\n category: 'Objects'\n },\n {\n emoji: '🔋',\n names: ['battery'],\n tags: ['power'],\n description: 'battery',\n category: 'Objects'\n },\n {\n emoji: '🔌',\n names: ['electric_plug'],\n tags: [],\n description: 'electric plug',\n category: 'Objects'\n },\n {\n emoji: '💻',\n names: ['computer'],\n tags: ['desktop', 'screen'],\n description: 'laptop',\n category: 'Objects'\n },\n {\n emoji: '🖥️',\n names: ['desktop_computer'],\n tags: [],\n description: 'desktop computer',\n category: 'Objects'\n },\n {\n emoji: '🖨️',\n names: ['printer'],\n tags: [],\n description: 'printer',\n category: 'Objects'\n },\n {\n emoji: '⌨️',\n names: ['keyboard'],\n tags: [],\n description: 'keyboard',\n category: 'Objects'\n },\n {\n emoji: '🖱️',\n names: ['computer_mouse'],\n tags: [],\n description: 'computer mouse',\n category: 'Objects'\n },\n {\n emoji: '🖲️',\n names: ['trackball'],\n tags: [],\n description: 'trackball',\n category: 'Objects'\n },\n {\n emoji: '💽',\n names: ['minidisc'],\n tags: [],\n description: 'computer disk',\n category: 'Objects'\n },\n {\n emoji: '💾',\n names: ['floppy_disk'],\n tags: ['save'],\n description: 'floppy disk',\n category: 'Objects'\n },\n {\n emoji: '💿',\n names: ['cd'],\n tags: [],\n description: 'optical disk',\n category: 'Objects'\n },\n {\n emoji: '📀',\n names: ['dvd'],\n tags: [],\n description: 'dvd',\n category: 'Objects'\n },\n {\n emoji: '🧮',\n names: ['abacus'],\n tags: [],\n description: 'abacus',\n category: 'Objects'\n },\n {\n emoji: '🎥',\n names: ['movie_camera'],\n tags: ['film', 'video'],\n description: 'movie camera',\n category: 'Objects'\n },\n {\n emoji: '🎞️',\n names: ['film_strip'],\n tags: [],\n description: 'film frames',\n category: 'Objects'\n },\n {\n emoji: '📽️',\n names: ['film_projector'],\n tags: [],\n description: 'film projector',\n category: 'Objects'\n },\n {\n emoji: '🎬',\n names: ['clapper'],\n tags: ['film'],\n description: 'clapper board',\n category: 'Objects'\n },\n {\n emoji: '📺',\n names: ['tv'],\n tags: [],\n description: 'television',\n category: 'Objects'\n },\n {\n emoji: '📷',\n names: ['camera'],\n tags: ['photo'],\n description: 'camera',\n category: 'Objects'\n },\n {\n emoji: '📸',\n names: ['camera_flash'],\n tags: ['photo'],\n description: 'camera with flash',\n category: 'Objects'\n },\n {\n emoji: '📹',\n names: ['video_camera'],\n tags: [],\n description: 'video camera',\n category: 'Objects'\n },\n {\n emoji: '📼',\n names: ['vhs'],\n tags: [],\n description: 'videocassette',\n category: 'Objects'\n },\n {\n emoji: '🔍',\n names: ['mag'],\n tags: ['search', 'zoom'],\n description: 'magnifying glass tilted left',\n category: 'Objects'\n },\n {\n emoji: '🔎',\n names: ['mag_right'],\n tags: [],\n description: 'magnifying glass tilted right',\n category: 'Objects'\n },\n {\n emoji: '🕯️',\n names: ['candle'],\n tags: [],\n description: 'candle',\n category: 'Objects'\n },\n {\n emoji: '💡',\n names: ['bulb'],\n tags: ['idea', 'light'],\n description: 'light bulb',\n category: 'Objects'\n },\n {\n emoji: '🔦',\n names: ['flashlight'],\n tags: [],\n description: 'flashlight',\n category: 'Objects'\n },\n {\n emoji: '🏮',\n names: ['izakaya_lantern', 'lantern'],\n tags: [],\n description: 'red paper lantern',\n category: 'Objects'\n },\n {\n emoji: '🪔',\n names: ['diya_lamp'],\n tags: [],\n description: 'diya lamp',\n category: 'Objects'\n },\n {\n emoji: '📔',\n names: ['notebook_with_decorative_cover'],\n tags: [],\n description: 'notebook with decorative cover',\n category: 'Objects'\n },\n {\n emoji: '📕',\n names: ['closed_book'],\n tags: [],\n description: 'closed book',\n category: 'Objects'\n },\n {\n emoji: '📖',\n names: ['book', 'open_book'],\n tags: [],\n description: 'open book',\n category: 'Objects'\n },\n {\n emoji: '📗',\n names: ['green_book'],\n tags: [],\n description: 'green book',\n category: 'Objects'\n },\n {\n emoji: '📘',\n names: ['blue_book'],\n tags: [],\n description: 'blue book',\n category: 'Objects'\n },\n {\n emoji: '📙',\n names: ['orange_book'],\n tags: [],\n description: 'orange book',\n category: 'Objects'\n },\n {\n emoji: '📚',\n names: ['books'],\n tags: ['library'],\n description: 'books',\n category: 'Objects'\n },\n {\n emoji: '📓',\n names: ['notebook'],\n tags: [],\n description: 'notebook',\n category: 'Objects'\n },\n {\n emoji: '📒',\n names: ['ledger'],\n tags: [],\n description: 'ledger',\n category: 'Objects'\n },\n {\n emoji: '📃',\n names: ['page_with_curl'],\n tags: [],\n description: 'page with curl',\n category: 'Objects'\n },\n {\n emoji: '📜',\n names: ['scroll'],\n tags: ['document'],\n description: 'scroll',\n category: 'Objects'\n },\n {\n emoji: '📄',\n names: ['page_facing_up'],\n tags: ['document'],\n description: 'page facing up',\n category: 'Objects'\n },\n {\n emoji: '📰',\n names: ['newspaper'],\n tags: ['press'],\n description: 'newspaper',\n category: 'Objects'\n },\n {\n emoji: '🗞️',\n names: ['newspaper_roll'],\n tags: ['press'],\n description: 'rolled-up newspaper',\n category: 'Objects'\n },\n {\n emoji: '📑',\n names: ['bookmark_tabs'],\n tags: [],\n description: 'bookmark tabs',\n category: 'Objects'\n },\n {\n emoji: '🔖',\n names: ['bookmark'],\n tags: [],\n description: 'bookmark',\n category: 'Objects'\n },\n {\n emoji: '🏷️',\n names: ['label'],\n tags: ['tag'],\n description: 'label',\n category: 'Objects'\n },\n {\n emoji: '💰',\n names: ['moneybag'],\n tags: ['dollar', 'cream'],\n description: 'money bag',\n category: 'Objects'\n },\n {\n emoji: '🪙',\n names: ['coin'],\n tags: [],\n description: 'coin',\n category: 'Objects'\n },\n {\n emoji: '💴',\n names: ['yen'],\n tags: [],\n description: 'yen banknote',\n category: 'Objects'\n },\n {\n emoji: '💵',\n names: ['dollar'],\n tags: ['money'],\n description: 'dollar banknote',\n category: 'Objects'\n },\n {\n emoji: '💶',\n names: ['euro'],\n tags: [],\n description: 'euro banknote',\n category: 'Objects'\n },\n {\n emoji: '💷',\n names: ['pound'],\n tags: [],\n description: 'pound banknote',\n category: 'Objects'\n },\n {\n emoji: '💸',\n names: ['money_with_wings'],\n tags: ['dollar'],\n description: 'money with wings',\n category: 'Objects'\n },\n {\n emoji: '💳',\n names: ['credit_card'],\n tags: ['subscription'],\n description: 'credit card',\n category: 'Objects'\n },\n {\n emoji: '🧾',\n names: ['receipt'],\n tags: [],\n description: 'receipt',\n category: 'Objects'\n },\n {\n emoji: '💹',\n names: ['chart'],\n tags: [],\n description: 'chart increasing with yen',\n category: 'Objects'\n },\n {\n emoji: '✉️',\n names: ['envelope'],\n tags: ['letter', 'email'],\n description: 'envelope',\n category: 'Objects'\n },\n {\n emoji: '📧',\n names: ['email', 'e-mail'],\n tags: [],\n description: 'e-mail',\n category: 'Objects'\n },\n {\n emoji: '📨',\n names: ['incoming_envelope'],\n tags: [],\n description: 'incoming envelope',\n category: 'Objects'\n },\n {\n emoji: '📩',\n names: ['envelope_with_arrow'],\n tags: [],\n description: 'envelope with arrow',\n category: 'Objects'\n },\n {\n emoji: '📤',\n names: ['outbox_tray'],\n tags: [],\n description: 'outbox tray',\n category: 'Objects'\n },\n {\n emoji: '📥',\n names: ['inbox_tray'],\n tags: [],\n description: 'inbox tray',\n category: 'Objects'\n },\n {\n emoji: '📦',\n names: ['package'],\n tags: ['shipping'],\n description: 'package',\n category: 'Objects'\n },\n {\n emoji: '📫',\n names: ['mailbox'],\n tags: [],\n description: 'closed mailbox with raised flag',\n category: 'Objects'\n },\n {\n emoji: '📪',\n names: ['mailbox_closed'],\n tags: [],\n description: 'closed mailbox with lowered flag',\n category: 'Objects'\n },\n {\n emoji: '📬',\n names: ['mailbox_with_mail'],\n tags: [],\n description: 'open mailbox with raised flag',\n category: 'Objects'\n },\n {\n emoji: '📭',\n names: ['mailbox_with_no_mail'],\n tags: [],\n description: 'open mailbox with lowered flag',\n category: 'Objects'\n },\n {\n emoji: '📮',\n names: ['postbox'],\n tags: [],\n description: 'postbox',\n category: 'Objects'\n },\n {\n emoji: '🗳️',\n names: ['ballot_box'],\n tags: [],\n description: 'ballot box with ballot',\n category: 'Objects'\n },\n {\n emoji: '✏️',\n names: ['pencil2'],\n tags: [],\n description: 'pencil',\n category: 'Objects'\n },\n {\n emoji: '✒️',\n names: ['black_nib'],\n tags: [],\n description: 'black nib',\n category: 'Objects'\n },\n {\n emoji: '🖋️',\n names: ['fountain_pen'],\n tags: [],\n description: 'fountain pen',\n category: 'Objects'\n },\n {\n emoji: '🖊️',\n names: ['pen'],\n tags: [],\n description: 'pen',\n category: 'Objects'\n },\n {\n emoji: '🖌️',\n names: ['paintbrush'],\n tags: [],\n description: 'paintbrush',\n category: 'Objects'\n },\n {\n emoji: '🖍️',\n names: ['crayon'],\n tags: [],\n description: 'crayon',\n category: 'Objects'\n },\n {\n emoji: '📝',\n names: ['memo', 'pencil'],\n tags: ['document', 'note'],\n description: 'memo',\n category: 'Objects'\n },\n {\n emoji: '💼',\n names: ['briefcase'],\n tags: ['business'],\n description: 'briefcase',\n category: 'Objects'\n },\n {\n emoji: '📁',\n names: ['file_folder'],\n tags: ['directory'],\n description: 'file folder',\n category: 'Objects'\n },\n {\n emoji: '📂',\n names: ['open_file_folder'],\n tags: [],\n description: 'open file folder',\n category: 'Objects'\n },\n {\n emoji: '🗂️',\n names: ['card_index_dividers'],\n tags: [],\n description: 'card index dividers',\n category: 'Objects'\n },\n {\n emoji: '📅',\n names: ['date'],\n tags: ['calendar', 'schedule'],\n description: 'calendar',\n category: 'Objects'\n },\n {\n emoji: '📆',\n names: ['calendar'],\n tags: ['schedule'],\n description: 'tear-off calendar',\n category: 'Objects'\n },\n {\n emoji: '🗒️',\n names: ['spiral_notepad'],\n tags: [],\n description: 'spiral notepad',\n category: 'Objects'\n },\n {\n emoji: '🗓️',\n names: ['spiral_calendar'],\n tags: [],\n description: 'spiral calendar',\n category: 'Objects'\n },\n {\n emoji: '📇',\n names: ['card_index'],\n tags: [],\n description: 'card index',\n category: 'Objects'\n },\n {\n emoji: '📈',\n names: ['chart_with_upwards_trend'],\n tags: ['graph', 'metrics'],\n description: 'chart increasing',\n category: 'Objects'\n },\n {\n emoji: '📉',\n names: ['chart_with_downwards_trend'],\n tags: ['graph', 'metrics'],\n description: 'chart decreasing',\n category: 'Objects'\n },\n {\n emoji: '📊',\n names: ['bar_chart'],\n tags: ['stats', 'metrics'],\n description: 'bar chart',\n category: 'Objects'\n },\n {\n emoji: '📋',\n names: ['clipboard'],\n tags: [],\n description: 'clipboard',\n category: 'Objects'\n },\n {\n emoji: '📌',\n names: ['pushpin'],\n tags: ['location'],\n description: 'pushpin',\n category: 'Objects'\n },\n {\n emoji: '📍',\n names: ['round_pushpin'],\n tags: ['location'],\n description: 'round pushpin',\n category: 'Objects'\n },\n {\n emoji: '📎',\n names: ['paperclip'],\n tags: [],\n description: 'paperclip',\n category: 'Objects'\n },\n {\n emoji: '🖇️',\n names: ['paperclips'],\n tags: [],\n description: 'linked paperclips',\n category: 'Objects'\n },\n {\n emoji: '📏',\n names: ['straight_ruler'],\n tags: [],\n description: 'straight ruler',\n category: 'Objects'\n },\n {\n emoji: '📐',\n names: ['triangular_ruler'],\n tags: [],\n description: 'triangular ruler',\n category: 'Objects'\n },\n {\n emoji: '✂️',\n names: ['scissors'],\n tags: ['cut'],\n description: 'scissors',\n category: 'Objects'\n },\n {\n emoji: '🗃️',\n names: ['card_file_box'],\n tags: [],\n description: 'card file box',\n category: 'Objects'\n },\n {\n emoji: '🗄️',\n names: ['file_cabinet'],\n tags: [],\n description: 'file cabinet',\n category: 'Objects'\n },\n {\n emoji: '🗑️',\n names: ['wastebasket'],\n tags: ['trash'],\n description: 'wastebasket',\n category: 'Objects'\n },\n {\n emoji: '🔒',\n names: ['lock'],\n tags: ['security', 'private'],\n description: 'locked',\n category: 'Objects'\n },\n {\n emoji: '🔓',\n names: ['unlock'],\n tags: ['security'],\n description: 'unlocked',\n category: 'Objects'\n },\n {\n emoji: '🔏',\n names: ['lock_with_ink_pen'],\n tags: [],\n description: 'locked with pen',\n category: 'Objects'\n },\n {\n emoji: '🔐',\n names: ['closed_lock_with_key'],\n tags: ['security'],\n description: 'locked with key',\n category: 'Objects'\n },\n {\n emoji: '🔑',\n names: ['key'],\n tags: ['lock', 'password'],\n description: 'key',\n category: 'Objects'\n },\n {\n emoji: '🗝️',\n names: ['old_key'],\n tags: [],\n description: 'old key',\n category: 'Objects'\n },\n {\n emoji: '🔨',\n names: ['hammer'],\n tags: ['tool'],\n description: 'hammer',\n category: 'Objects'\n },\n {\n emoji: '🪓',\n names: ['axe'],\n tags: [],\n description: 'axe',\n category: 'Objects'\n },\n {\n emoji: '⛏️',\n names: ['pick'],\n tags: [],\n description: 'pick',\n category: 'Objects'\n },\n {\n emoji: '⚒️',\n names: ['hammer_and_pick'],\n tags: [],\n description: 'hammer and pick',\n category: 'Objects'\n },\n {\n emoji: '🛠️',\n names: ['hammer_and_wrench'],\n tags: [],\n description: 'hammer and wrench',\n category: 'Objects'\n },\n {\n emoji: '🗡️',\n names: ['dagger'],\n tags: [],\n description: 'dagger',\n category: 'Objects'\n },\n {\n emoji: '⚔️',\n names: ['crossed_swords'],\n tags: [],\n description: 'crossed swords',\n category: 'Objects'\n },\n {\n emoji: '🔫',\n names: ['gun'],\n tags: ['shoot', 'weapon'],\n description: 'water pistol',\n category: 'Objects'\n },\n {\n emoji: '🪃',\n names: ['boomerang'],\n tags: [],\n description: 'boomerang',\n category: 'Objects'\n },\n {\n emoji: '🏹',\n names: ['bow_and_arrow'],\n tags: ['archery'],\n description: 'bow and arrow',\n category: 'Objects'\n },\n {\n emoji: '🛡️',\n names: ['shield'],\n tags: [],\n description: 'shield',\n category: 'Objects'\n },\n {\n emoji: '🪚',\n names: ['carpentry_saw'],\n tags: [],\n description: 'carpentry saw',\n category: 'Objects'\n },\n {\n emoji: '🔧',\n names: ['wrench'],\n tags: ['tool'],\n description: 'wrench',\n category: 'Objects'\n },\n {\n emoji: '🪛',\n names: ['screwdriver'],\n tags: [],\n description: 'screwdriver',\n category: 'Objects'\n },\n {\n emoji: '🔩',\n names: ['nut_and_bolt'],\n tags: [],\n description: 'nut and bolt',\n category: 'Objects'\n },\n {\n emoji: '⚙️',\n names: ['gear'],\n tags: [],\n description: 'gear',\n category: 'Objects'\n },\n {\n emoji: '🗜️',\n names: ['clamp'],\n tags: [],\n description: 'clamp',\n category: 'Objects'\n },\n {\n emoji: '⚖️',\n names: ['balance_scale'],\n tags: [],\n description: 'balance scale',\n category: 'Objects'\n },\n {\n emoji: '🦯',\n names: ['probing_cane'],\n tags: [],\n description: 'white cane',\n category: 'Objects'\n },\n {\n emoji: '🔗',\n names: ['link'],\n tags: [],\n description: 'link',\n category: 'Objects'\n },\n {\n emoji: '⛓️',\n names: ['chains'],\n tags: [],\n description: 'chains',\n category: 'Objects'\n },\n {\n emoji: '🪝',\n names: ['hook'],\n tags: [],\n description: 'hook',\n category: 'Objects'\n },\n {\n emoji: '🧰',\n names: ['toolbox'],\n tags: [],\n description: 'toolbox',\n category: 'Objects'\n },\n {\n emoji: '🧲',\n names: ['magnet'],\n tags: [],\n description: 'magnet',\n category: 'Objects'\n },\n {\n emoji: '🪜',\n names: ['ladder'],\n tags: [],\n description: 'ladder',\n category: 'Objects'\n },\n {\n emoji: '⚗️',\n names: ['alembic'],\n tags: [],\n description: 'alembic',\n category: 'Objects'\n },\n {\n emoji: '🧪',\n names: ['test_tube'],\n tags: [],\n description: 'test tube',\n category: 'Objects'\n },\n {\n emoji: '🧫',\n names: ['petri_dish'],\n tags: [],\n description: 'petri dish',\n category: 'Objects'\n },\n {\n emoji: '🧬',\n names: ['dna'],\n tags: [],\n description: 'dna',\n category: 'Objects'\n },\n {\n emoji: '🔬',\n names: ['microscope'],\n tags: ['science', 'laboratory', 'investigate'],\n description: 'microscope',\n category: 'Objects'\n },\n {\n emoji: '🔭',\n names: ['telescope'],\n tags: [],\n description: 'telescope',\n category: 'Objects'\n },\n {\n emoji: '📡',\n names: ['satellite'],\n tags: ['signal'],\n description: 'satellite antenna',\n category: 'Objects'\n },\n {\n emoji: '💉',\n names: ['syringe'],\n tags: ['health', 'hospital', 'needle'],\n description: 'syringe',\n category: 'Objects'\n },\n {\n emoji: '🩸',\n names: ['drop_of_blood'],\n tags: [],\n description: 'drop of blood',\n category: 'Objects'\n },\n {\n emoji: '💊',\n names: ['pill'],\n tags: ['health', 'medicine'],\n description: 'pill',\n category: 'Objects'\n },\n {\n emoji: '🩹',\n names: ['adhesive_bandage'],\n tags: [],\n description: 'adhesive bandage',\n category: 'Objects'\n },\n {\n emoji: '🩺',\n names: ['stethoscope'],\n tags: [],\n description: 'stethoscope',\n category: 'Objects'\n },\n {\n emoji: '🚪',\n names: ['door'],\n tags: [],\n description: 'door',\n category: 'Objects'\n },\n {\n emoji: '🛗',\n names: ['elevator'],\n tags: [],\n description: 'elevator',\n category: 'Objects'\n },\n {\n emoji: '🪞',\n names: ['mirror'],\n tags: [],\n description: 'mirror',\n category: 'Objects'\n },\n {\n emoji: '🪟',\n names: ['window'],\n tags: [],\n description: 'window',\n category: 'Objects'\n },\n {\n emoji: '🛏️',\n names: ['bed'],\n tags: [],\n description: 'bed',\n category: 'Objects'\n },\n {\n emoji: '🛋️',\n names: ['couch_and_lamp'],\n tags: [],\n description: 'couch and lamp',\n category: 'Objects'\n },\n {\n emoji: '🪑',\n names: ['chair'],\n tags: [],\n description: 'chair',\n category: 'Objects'\n },\n {\n emoji: '🚽',\n names: ['toilet'],\n tags: ['wc'],\n description: 'toilet',\n category: 'Objects'\n },\n {\n emoji: '🪠',\n names: ['plunger'],\n tags: [],\n description: 'plunger',\n category: 'Objects'\n },\n {\n emoji: '🚿',\n names: ['shower'],\n tags: ['bath'],\n description: 'shower',\n category: 'Objects'\n },\n {\n emoji: '🛁',\n names: ['bathtub'],\n tags: [],\n description: 'bathtub',\n category: 'Objects'\n },\n {\n emoji: '🪤',\n names: ['mouse_trap'],\n tags: [],\n description: 'mouse trap',\n category: 'Objects'\n },\n {\n emoji: '🪒',\n names: ['razor'],\n tags: [],\n description: 'razor',\n category: 'Objects'\n },\n {\n emoji: '🧴',\n names: ['lotion_bottle'],\n tags: [],\n description: 'lotion bottle',\n category: 'Objects'\n },\n {\n emoji: '🧷',\n names: ['safety_pin'],\n tags: [],\n description: 'safety pin',\n category: 'Objects'\n },\n {\n emoji: '🧹',\n names: ['broom'],\n tags: [],\n description: 'broom',\n category: 'Objects'\n },\n {\n emoji: '🧺',\n names: ['basket'],\n tags: [],\n description: 'basket',\n category: 'Objects'\n },\n {\n emoji: '🧻',\n names: ['roll_of_paper'],\n tags: ['toilet'],\n description: 'roll of paper',\n category: 'Objects'\n },\n {\n emoji: '🪣',\n names: ['bucket'],\n tags: [],\n description: 'bucket',\n category: 'Objects'\n },\n {\n emoji: '🧼',\n names: ['soap'],\n tags: [],\n description: 'soap',\n category: 'Objects'\n },\n {\n emoji: '🪥',\n names: ['toothbrush'],\n tags: [],\n description: 'toothbrush',\n category: 'Objects'\n },\n {\n emoji: '🧽',\n names: ['sponge'],\n tags: [],\n description: 'sponge',\n category: 'Objects'\n },\n {\n emoji: '🧯',\n names: ['fire_extinguisher'],\n tags: [],\n description: 'fire extinguisher',\n category: 'Objects'\n },\n {\n emoji: '🛒',\n names: ['shopping_cart'],\n tags: [],\n description: 'shopping cart',\n category: 'Objects'\n },\n {\n emoji: '🚬',\n names: ['smoking'],\n tags: ['cigarette'],\n description: 'cigarette',\n category: 'Objects'\n },\n {\n emoji: '⚰️',\n names: ['coffin'],\n tags: ['funeral'],\n description: 'coffin',\n category: 'Objects'\n },\n {\n emoji: '🪦',\n names: ['headstone'],\n tags: [],\n description: 'headstone',\n category: 'Objects'\n },\n {\n emoji: '⚱️',\n names: ['funeral_urn'],\n tags: [],\n description: 'funeral urn',\n category: 'Objects'\n },\n {\n emoji: '🗿',\n names: ['moyai'],\n tags: ['stone'],\n description: 'moai',\n category: 'Objects'\n },\n {\n emoji: '🪧',\n names: ['placard'],\n tags: [],\n description: 'placard',\n category: 'Objects'\n },\n {\n emoji: '🏧',\n names: ['atm'],\n tags: [],\n description: 'ATM sign',\n category: 'Symbols'\n },\n {\n emoji: '🚮',\n names: ['put_litter_in_its_place'],\n tags: [],\n description: 'litter in bin sign',\n category: 'Symbols'\n },\n {\n emoji: '🚰',\n names: ['potable_water'],\n tags: [],\n description: 'potable water',\n category: 'Symbols'\n },\n {\n emoji: '♿',\n names: ['wheelchair'],\n tags: ['accessibility'],\n description: 'wheelchair symbol',\n category: 'Symbols'\n },\n {\n emoji: '🚹',\n names: ['mens'],\n tags: [],\n description: 'men’s room',\n category: 'Symbols'\n },\n {\n emoji: '🚺',\n names: ['womens'],\n tags: [],\n description: 'women’s room',\n category: 'Symbols'\n },\n {\n emoji: '🚻',\n names: ['restroom'],\n tags: ['toilet'],\n description: 'restroom',\n category: 'Symbols'\n },\n {\n emoji: '🚼',\n names: ['baby_symbol'],\n tags: [],\n description: 'baby symbol',\n category: 'Symbols'\n },\n {\n emoji: '🚾',\n names: ['wc'],\n tags: ['toilet', 'restroom'],\n description: 'water closet',\n category: 'Symbols'\n },\n {\n emoji: '🛂',\n names: ['passport_control'],\n tags: [],\n description: 'passport control',\n category: 'Symbols'\n },\n {\n emoji: '🛃',\n names: ['customs'],\n tags: [],\n description: 'customs',\n category: 'Symbols'\n },\n {\n emoji: '🛄',\n names: ['baggage_claim'],\n tags: ['airport'],\n description: 'baggage claim',\n category: 'Symbols'\n },\n {\n emoji: '🛅',\n names: ['left_luggage'],\n tags: [],\n description: 'left luggage',\n category: 'Symbols'\n },\n {\n emoji: '⚠️',\n names: ['warning'],\n tags: ['wip'],\n description: 'warning',\n category: 'Symbols'\n },\n {\n emoji: '🚸',\n names: ['children_crossing'],\n tags: [],\n description: 'children crossing',\n category: 'Symbols'\n },\n {\n emoji: '⛔',\n names: ['no_entry'],\n tags: ['limit'],\n description: 'no entry',\n category: 'Symbols'\n },\n {\n emoji: '🚫',\n names: ['no_entry_sign'],\n tags: ['block', 'forbidden'],\n description: 'prohibited',\n category: 'Symbols'\n },\n {\n emoji: '🚳',\n names: ['no_bicycles'],\n tags: [],\n description: 'no bicycles',\n category: 'Symbols'\n },\n {\n emoji: '🚭',\n names: ['no_smoking'],\n tags: [],\n description: 'no smoking',\n category: 'Symbols'\n },\n {\n emoji: '🚯',\n names: ['do_not_litter'],\n tags: [],\n description: 'no littering',\n category: 'Symbols'\n },\n {\n emoji: '🚱',\n names: ['non-potable_water'],\n tags: [],\n description: 'non-potable water',\n category: 'Symbols'\n },\n {\n emoji: '🚷',\n names: ['no_pedestrians'],\n tags: [],\n description: 'no pedestrians',\n category: 'Symbols'\n },\n {\n emoji: '📵',\n names: ['no_mobile_phones'],\n tags: [],\n description: 'no mobile phones',\n category: 'Symbols'\n },\n {\n emoji: '🔞',\n names: ['underage'],\n tags: [],\n description: 'no one under eighteen',\n category: 'Symbols'\n },\n {\n emoji: '☢️',\n names: ['radioactive'],\n tags: [],\n description: 'radioactive',\n category: 'Symbols'\n },\n {\n emoji: '☣️',\n names: ['biohazard'],\n tags: [],\n description: 'biohazard',\n category: 'Symbols'\n },\n {\n emoji: '⬆️',\n names: ['arrow_up'],\n tags: [],\n description: 'up arrow',\n category: 'Symbols'\n },\n {\n emoji: '↗️',\n names: ['arrow_upper_right'],\n tags: [],\n description: 'up-right arrow',\n category: 'Symbols'\n },\n {\n emoji: '➡️',\n names: ['arrow_right'],\n tags: [],\n description: 'right arrow',\n category: 'Symbols'\n },\n {\n emoji: '↘️',\n names: ['arrow_lower_right'],\n tags: [],\n description: 'down-right arrow',\n category: 'Symbols'\n },\n {\n emoji: '⬇️',\n names: ['arrow_down'],\n tags: [],\n description: 'down arrow',\n category: 'Symbols'\n },\n {\n emoji: '↙️',\n names: ['arrow_lower_left'],\n tags: [],\n description: 'down-left arrow',\n category: 'Symbols'\n },\n {\n emoji: '⬅️',\n names: ['arrow_left'],\n tags: [],\n description: 'left arrow',\n category: 'Symbols'\n },\n {\n emoji: '↖️',\n names: ['arrow_upper_left'],\n tags: [],\n description: 'up-left arrow',\n category: 'Symbols'\n },\n {\n emoji: '↕️',\n names: ['arrow_up_down'],\n tags: [],\n description: 'up-down arrow',\n category: 'Symbols'\n },\n {\n emoji: '↔️',\n names: ['left_right_arrow'],\n tags: [],\n description: 'left-right arrow',\n category: 'Symbols'\n },\n {\n emoji: '↩️',\n names: ['leftwards_arrow_with_hook'],\n tags: ['return'],\n description: 'right arrow curving left',\n category: 'Symbols'\n },\n {\n emoji: '↪️',\n names: ['arrow_right_hook'],\n tags: [],\n description: 'left arrow curving right',\n category: 'Symbols'\n },\n {\n emoji: '⤴️',\n names: ['arrow_heading_up'],\n tags: [],\n description: 'right arrow curving up',\n category: 'Symbols'\n },\n {\n emoji: '⤵️',\n names: ['arrow_heading_down'],\n tags: [],\n description: 'right arrow curving down',\n category: 'Symbols'\n },\n {\n emoji: '🔃',\n names: ['arrows_clockwise'],\n tags: [],\n description: 'clockwise vertical arrows',\n category: 'Symbols'\n },\n {\n emoji: '🔄',\n names: ['arrows_counterclockwise'],\n tags: ['sync'],\n description: 'counterclockwise arrows button',\n category: 'Symbols'\n },\n {\n emoji: '🔙',\n names: ['back'],\n tags: [],\n description: 'BACK arrow',\n category: 'Symbols'\n },\n {\n emoji: '🔚',\n names: ['end'],\n tags: [],\n description: 'END arrow',\n category: 'Symbols'\n },\n {\n emoji: '🔛',\n names: ['on'],\n tags: [],\n description: 'ON! arrow',\n category: 'Symbols'\n },\n {\n emoji: '🔜',\n names: ['soon'],\n tags: [],\n description: 'SOON arrow',\n category: 'Symbols'\n },\n {\n emoji: '🔝',\n names: ['top'],\n tags: [],\n description: 'TOP arrow',\n category: 'Symbols'\n },\n {\n emoji: '🛐',\n names: ['place_of_worship'],\n tags: [],\n description: 'place of worship',\n category: 'Symbols'\n },\n {\n emoji: '⚛️',\n names: ['atom_symbol'],\n tags: [],\n description: 'atom symbol',\n category: 'Symbols'\n },\n {\n emoji: '🕉️',\n names: ['om'],\n tags: [],\n description: 'om',\n category: 'Symbols'\n },\n {\n emoji: '✡️',\n names: ['star_of_david'],\n tags: [],\n description: 'star of David',\n category: 'Symbols'\n },\n {\n emoji: '☸️',\n names: ['wheel_of_dharma'],\n tags: [],\n description: 'wheel of dharma',\n category: 'Symbols'\n },\n {\n emoji: '☯️',\n names: ['yin_yang'],\n tags: [],\n description: 'yin yang',\n category: 'Symbols'\n },\n {\n emoji: '✝️',\n names: ['latin_cross'],\n tags: [],\n description: 'latin cross',\n category: 'Symbols'\n },\n {\n emoji: '☦️',\n names: ['orthodox_cross'],\n tags: [],\n description: 'orthodox cross',\n category: 'Symbols'\n },\n {\n emoji: '☪️',\n names: ['star_and_crescent'],\n tags: [],\n description: 'star and crescent',\n category: 'Symbols'\n },\n {\n emoji: '☮️',\n names: ['peace_symbol'],\n tags: [],\n description: 'peace symbol',\n category: 'Symbols'\n },\n {\n emoji: '🕎',\n names: ['menorah'],\n tags: [],\n description: 'menorah',\n category: 'Symbols'\n },\n {\n emoji: '🔯',\n names: ['six_pointed_star'],\n tags: [],\n description: 'dotted six-pointed star',\n category: 'Symbols'\n },\n {\n emoji: '♈',\n names: ['aries'],\n tags: [],\n description: 'Aries',\n category: 'Symbols'\n },\n {\n emoji: '♉',\n names: ['taurus'],\n tags: [],\n description: 'Taurus',\n category: 'Symbols'\n },\n {\n emoji: '♊',\n names: ['gemini'],\n tags: [],\n description: 'Gemini',\n category: 'Symbols'\n },\n {\n emoji: '♋',\n names: ['cancer'],\n tags: [],\n description: 'Cancer',\n category: 'Symbols'\n },\n {\n emoji: '♌',\n names: ['leo'],\n tags: [],\n description: 'Leo',\n category: 'Symbols'\n },\n {\n emoji: '♍',\n names: ['virgo'],\n tags: [],\n description: 'Virgo',\n category: 'Symbols'\n },\n {\n emoji: '♎',\n names: ['libra'],\n tags: [],\n description: 'Libra',\n category: 'Symbols'\n },\n {\n emoji: '♏',\n names: ['scorpius'],\n tags: [],\n description: 'Scorpio',\n category: 'Symbols'\n },\n {\n emoji: '♐',\n names: ['sagittarius'],\n tags: [],\n description: 'Sagittarius',\n category: 'Symbols'\n },\n {\n emoji: '♑',\n names: ['capricorn'],\n tags: [],\n description: 'Capricorn',\n category: 'Symbols'\n },\n {\n emoji: '♒',\n names: ['aquarius'],\n tags: [],\n description: 'Aquarius',\n category: 'Symbols'\n },\n {\n emoji: '♓',\n names: ['pisces'],\n tags: [],\n description: 'Pisces',\n category: 'Symbols'\n },\n {\n emoji: '⛎',\n names: ['ophiuchus'],\n tags: [],\n description: 'Ophiuchus',\n category: 'Symbols'\n },\n {\n emoji: '🔀',\n names: ['twisted_rightwards_arrows'],\n tags: ['shuffle'],\n description: 'shuffle tracks button',\n category: 'Symbols'\n },\n {\n emoji: '🔁',\n names: ['repeat'],\n tags: ['loop'],\n description: 'repeat button',\n category: 'Symbols'\n },\n {\n emoji: '🔂',\n names: ['repeat_one'],\n tags: [],\n description: 'repeat single button',\n category: 'Symbols'\n },\n {\n emoji: '▶️',\n names: ['arrow_forward'],\n tags: [],\n description: 'play button',\n category: 'Symbols'\n },\n {\n emoji: '⏩',\n names: ['fast_forward'],\n tags: [],\n description: 'fast-forward button',\n category: 'Symbols'\n },\n {\n emoji: '⏭️',\n names: ['next_track_button'],\n tags: [],\n description: 'next track button',\n category: 'Symbols'\n },\n {\n emoji: '⏯️',\n names: ['play_or_pause_button'],\n tags: [],\n description: 'play or pause button',\n category: 'Symbols'\n },\n {\n emoji: '◀️',\n names: ['arrow_backward'],\n tags: [],\n description: 'reverse button',\n category: 'Symbols'\n },\n {\n emoji: '⏪',\n names: ['rewind'],\n tags: [],\n description: 'fast reverse button',\n category: 'Symbols'\n },\n {\n emoji: '⏮️',\n names: ['previous_track_button'],\n tags: [],\n description: 'last track button',\n category: 'Symbols'\n },\n {\n emoji: '🔼',\n names: ['arrow_up_small'],\n tags: [],\n description: 'upwards button',\n category: 'Symbols'\n },\n {\n emoji: '⏫',\n names: ['arrow_double_up'],\n tags: [],\n description: 'fast up button',\n category: 'Symbols'\n },\n {\n emoji: '🔽',\n names: ['arrow_down_small'],\n tags: [],\n description: 'downwards button',\n category: 'Symbols'\n },\n {\n emoji: '⏬',\n names: ['arrow_double_down'],\n tags: [],\n description: 'fast down button',\n category: 'Symbols'\n },\n {\n emoji: '⏸️',\n names: ['pause_button'],\n tags: [],\n description: 'pause button',\n category: 'Symbols'\n },\n {\n emoji: '⏹️',\n names: ['stop_button'],\n tags: [],\n description: 'stop button',\n category: 'Symbols'\n },\n {\n emoji: '⏺️',\n names: ['record_button'],\n tags: [],\n description: 'record button',\n category: 'Symbols'\n },\n {\n emoji: '⏏️',\n names: ['eject_button'],\n tags: [],\n description: 'eject button',\n category: 'Symbols'\n },\n {\n emoji: '🎦',\n names: ['cinema'],\n tags: ['film', 'movie'],\n description: 'cinema',\n category: 'Symbols'\n },\n {\n emoji: '🔅',\n names: ['low_brightness'],\n tags: [],\n description: 'dim button',\n category: 'Symbols'\n },\n {\n emoji: '🔆',\n names: ['high_brightness'],\n tags: [],\n description: 'bright button',\n category: 'Symbols'\n },\n {\n emoji: '📶',\n names: ['signal_strength'],\n tags: ['wifi'],\n description: 'antenna bars',\n category: 'Symbols'\n },\n {\n emoji: '📳',\n names: ['vibration_mode'],\n tags: [],\n description: 'vibration mode',\n category: 'Symbols'\n },\n {\n emoji: '📴',\n names: ['mobile_phone_off'],\n tags: ['mute', 'off'],\n description: 'mobile phone off',\n category: 'Symbols'\n },\n {\n emoji: '♀️',\n names: ['female_sign'],\n tags: [],\n description: 'female sign',\n category: 'Symbols'\n },\n {\n emoji: '♂️',\n names: ['male_sign'],\n tags: [],\n description: 'male sign',\n category: 'Symbols'\n },\n {\n emoji: '⚧️',\n names: ['transgender_symbol'],\n tags: [],\n description: 'transgender symbol',\n category: 'Symbols'\n },\n {\n emoji: '✖️',\n names: ['heavy_multiplication_x'],\n tags: [],\n description: 'multiply',\n category: 'Symbols'\n },\n {\n emoji: '➕',\n names: ['heavy_plus_sign'],\n tags: [],\n description: 'plus',\n category: 'Symbols'\n },\n {\n emoji: '➖',\n names: ['heavy_minus_sign'],\n tags: [],\n description: 'minus',\n category: 'Symbols'\n },\n {\n emoji: '➗',\n names: ['heavy_division_sign'],\n tags: [],\n description: 'divide',\n category: 'Symbols'\n },\n {\n emoji: '♾️',\n names: ['infinity'],\n tags: [],\n description: 'infinity',\n category: 'Symbols'\n },\n {\n emoji: '‼️',\n names: ['bangbang'],\n tags: [],\n description: 'double exclamation mark',\n category: 'Symbols'\n },\n {\n emoji: '⁉️',\n names: ['interrobang'],\n tags: [],\n description: 'exclamation question mark',\n category: 'Symbols'\n },\n {\n emoji: '❓',\n names: ['question'],\n tags: ['confused'],\n description: 'red question mark',\n category: 'Symbols'\n },\n {\n emoji: '❔',\n names: ['grey_question'],\n tags: [],\n description: 'white question mark',\n category: 'Symbols'\n },\n {\n emoji: '❕',\n names: ['grey_exclamation'],\n tags: [],\n description: 'white exclamation mark',\n category: 'Symbols'\n },\n {\n emoji: '❗',\n names: ['exclamation', 'heavy_exclamation_mark'],\n tags: ['bang'],\n description: 'red exclamation mark',\n category: 'Symbols'\n },\n {\n emoji: '〰️',\n names: ['wavy_dash'],\n tags: [],\n description: 'wavy dash',\n category: 'Symbols'\n },\n {\n emoji: '💱',\n names: ['currency_exchange'],\n tags: [],\n description: 'currency exchange',\n category: 'Symbols'\n },\n {\n emoji: '💲',\n names: ['heavy_dollar_sign'],\n tags: [],\n description: 'heavy dollar sign',\n category: 'Symbols'\n },\n {\n emoji: '⚕️',\n names: ['medical_symbol'],\n tags: [],\n description: 'medical symbol',\n category: 'Symbols'\n },\n {\n emoji: '♻️',\n names: ['recycle'],\n tags: ['environment', 'green'],\n description: 'recycling symbol',\n category: 'Symbols'\n },\n {\n emoji: '⚜️',\n names: ['fleur_de_lis'],\n tags: [],\n description: 'fleur-de-lis',\n category: 'Symbols'\n },\n {\n emoji: '🔱',\n names: ['trident'],\n tags: [],\n description: 'trident emblem',\n category: 'Symbols'\n },\n {\n emoji: '📛',\n names: ['name_badge'],\n tags: [],\n description: 'name badge',\n category: 'Symbols'\n },\n {\n emoji: '🔰',\n names: ['beginner'],\n tags: [],\n description: 'Japanese symbol for beginner',\n category: 'Symbols'\n },\n {\n emoji: '⭕',\n names: ['o'],\n tags: [],\n description: 'hollow red circle',\n category: 'Symbols'\n },\n {\n emoji: '✅',\n names: ['white_check_mark'],\n tags: [],\n description: 'check mark button',\n category: 'Symbols'\n },\n {\n emoji: '☑️',\n names: ['ballot_box_with_check'],\n tags: [],\n description: 'check box with check',\n category: 'Symbols'\n },\n {\n emoji: '✔️',\n names: ['heavy_check_mark'],\n tags: [],\n description: 'check mark',\n category: 'Symbols'\n },\n {\n emoji: '❌',\n names: ['x'],\n tags: [],\n description: 'cross mark',\n category: 'Symbols'\n },\n {\n emoji: '❎',\n names: ['negative_squared_cross_mark'],\n tags: [],\n description: 'cross mark button',\n category: 'Symbols'\n },\n {\n emoji: '➰',\n names: ['curly_loop'],\n tags: [],\n description: 'curly loop',\n category: 'Symbols'\n },\n {\n emoji: '➿',\n names: ['loop'],\n tags: [],\n description: 'double curly loop',\n category: 'Symbols'\n },\n {\n emoji: '〽️',\n names: ['part_alternation_mark'],\n tags: [],\n description: 'part alternation mark',\n category: 'Symbols'\n },\n {\n emoji: '✳️',\n names: ['eight_spoked_asterisk'],\n tags: [],\n description: 'eight-spoked asterisk',\n category: 'Symbols'\n },\n {\n emoji: '✴️',\n names: ['eight_pointed_black_star'],\n tags: [],\n description: 'eight-pointed star',\n category: 'Symbols'\n },\n {\n emoji: '❇️',\n names: ['sparkle'],\n tags: [],\n description: 'sparkle',\n category: 'Symbols'\n },\n {\n emoji: '©️',\n names: ['copyright'],\n tags: [],\n description: 'copyright',\n category: 'Symbols'\n },\n {\n emoji: '®️',\n names: ['registered'],\n tags: [],\n description: 'registered',\n category: 'Symbols'\n },\n {\n emoji: '™️',\n names: ['tm'],\n tags: ['trademark'],\n description: 'trade mark',\n category: 'Symbols'\n },\n {\n emoji: '#️⃣',\n names: ['hash'],\n tags: ['number'],\n description: 'keycap: #',\n category: 'Symbols'\n },\n {\n emoji: '*️⃣',\n names: ['asterisk'],\n tags: [],\n description: 'keycap: *',\n category: 'Symbols'\n },\n {\n emoji: '0️⃣',\n names: ['zero'],\n tags: [],\n description: 'keycap: 0',\n category: 'Symbols'\n },\n {\n emoji: '1️⃣',\n names: ['one'],\n tags: [],\n description: 'keycap: 1',\n category: 'Symbols'\n },\n {\n emoji: '2️⃣',\n names: ['two'],\n tags: [],\n description: 'keycap: 2',\n category: 'Symbols'\n },\n {\n emoji: '3️⃣',\n names: ['three'],\n tags: [],\n description: 'keycap: 3',\n category: 'Symbols'\n },\n {\n emoji: '4️⃣',\n names: ['four'],\n tags: [],\n description: 'keycap: 4',\n category: 'Symbols'\n },\n {\n emoji: '5️⃣',\n names: ['five'],\n tags: [],\n description: 'keycap: 5',\n category: 'Symbols'\n },\n {\n emoji: '6️⃣',\n names: ['six'],\n tags: [],\n description: 'keycap: 6',\n category: 'Symbols'\n },\n {\n emoji: '7️⃣',\n names: ['seven'],\n tags: [],\n description: 'keycap: 7',\n category: 'Symbols'\n },\n {\n emoji: '8️⃣',\n names: ['eight'],\n tags: [],\n description: 'keycap: 8',\n category: 'Symbols'\n },\n {\n emoji: '9️⃣',\n names: ['nine'],\n tags: [],\n description: 'keycap: 9',\n category: 'Symbols'\n },\n {\n emoji: '🔟',\n names: ['keycap_ten'],\n tags: [],\n description: 'keycap: 10',\n category: 'Symbols'\n },\n {\n emoji: '🔠',\n names: ['capital_abcd'],\n tags: ['letters'],\n description: 'input latin uppercase',\n category: 'Symbols'\n },\n {\n emoji: '🔡',\n names: ['abcd'],\n tags: [],\n description: 'input latin lowercase',\n category: 'Symbols'\n },\n {\n emoji: '🔢',\n names: ['1234'],\n tags: ['numbers'],\n description: 'input numbers',\n category: 'Symbols'\n },\n {\n emoji: '🔣',\n names: ['symbols'],\n tags: [],\n description: 'input symbols',\n category: 'Symbols'\n },\n {\n emoji: '🔤',\n names: ['abc'],\n tags: ['alphabet'],\n description: 'input latin letters',\n category: 'Symbols'\n },\n {\n emoji: '🅰️',\n names: ['a'],\n tags: [],\n description: 'A button (blood type)',\n category: 'Symbols'\n },\n {\n emoji: '🆎',\n names: ['ab'],\n tags: [],\n description: 'AB button (blood type)',\n category: 'Symbols'\n },\n {\n emoji: '🅱️',\n names: ['b'],\n tags: [],\n description: 'B button (blood type)',\n category: 'Symbols'\n },\n {\n emoji: '🆑',\n names: ['cl'],\n tags: [],\n description: 'CL button',\n category: 'Symbols'\n },\n {\n emoji: '🆒',\n names: ['cool'],\n tags: [],\n description: 'COOL button',\n category: 'Symbols'\n },\n {\n emoji: '🆓',\n names: ['free'],\n tags: [],\n description: 'FREE button',\n category: 'Symbols'\n },\n {\n emoji: 'ℹ️',\n names: ['information_source'],\n tags: [],\n description: 'information',\n category: 'Symbols'\n },\n {\n emoji: '🆔',\n names: ['id'],\n tags: [],\n description: 'ID button',\n category: 'Symbols'\n },\n {\n emoji: 'Ⓜ️',\n names: ['m'],\n tags: [],\n description: 'circled M',\n category: 'Symbols'\n },\n {\n emoji: '🆕',\n names: ['new'],\n tags: ['fresh'],\n description: 'NEW button',\n category: 'Symbols'\n },\n {\n emoji: '🆖',\n names: ['ng'],\n tags: [],\n description: 'NG button',\n category: 'Symbols'\n },\n {\n emoji: '🅾️',\n names: ['o2'],\n tags: [],\n description: 'O button (blood type)',\n category: 'Symbols'\n },\n {\n emoji: '🆗',\n names: ['ok'],\n tags: ['yes'],\n description: 'OK button',\n category: 'Symbols'\n },\n {\n emoji: '🅿️',\n names: ['parking'],\n tags: [],\n description: 'P button',\n category: 'Symbols'\n },\n {\n emoji: '🆘',\n names: ['sos'],\n tags: ['help', 'emergency'],\n description: 'SOS button',\n category: 'Symbols'\n },\n {\n emoji: '🆙',\n names: ['up'],\n tags: [],\n description: 'UP! button',\n category: 'Symbols'\n },\n {\n emoji: '🆚',\n names: ['vs'],\n tags: [],\n description: 'VS button',\n category: 'Symbols'\n },\n {\n emoji: '🈁',\n names: ['koko'],\n tags: [],\n description: 'Japanese “here” button',\n category: 'Symbols'\n },\n {\n emoji: '🈂️',\n names: ['sa'],\n tags: [],\n description: 'Japanese “service charge” button',\n category: 'Symbols'\n },\n {\n emoji: '🈷️',\n names: ['u6708'],\n tags: [],\n description: 'Japanese “monthly amount” button',\n category: 'Symbols'\n },\n {\n emoji: '🈶',\n names: ['u6709'],\n tags: [],\n description: 'Japanese “not free of charge” button',\n category: 'Symbols'\n },\n {\n emoji: '🈯',\n names: ['u6307'],\n tags: [],\n description: 'Japanese “reserved” button',\n category: 'Symbols'\n },\n {\n emoji: '🉐',\n names: ['ideograph_advantage'],\n tags: [],\n description: 'Japanese “bargain” button',\n category: 'Symbols'\n },\n {\n emoji: '🈹',\n names: ['u5272'],\n tags: [],\n description: 'Japanese “discount” button',\n category: 'Symbols'\n },\n {\n emoji: '🈚',\n names: ['u7121'],\n tags: [],\n description: 'Japanese “free of charge” button',\n category: 'Symbols'\n },\n {\n emoji: '🈲',\n names: ['u7981'],\n tags: [],\n description: 'Japanese “prohibited” button',\n category: 'Symbols'\n },\n {\n emoji: '🉑',\n names: ['accept'],\n tags: [],\n description: 'Japanese “acceptable” button',\n category: 'Symbols'\n },\n {\n emoji: '🈸',\n names: ['u7533'],\n tags: [],\n description: 'Japanese “application” button',\n category: 'Symbols'\n },\n {\n emoji: '🈴',\n names: ['u5408'],\n tags: [],\n description: 'Japanese “passing grade” button',\n category: 'Symbols'\n },\n {\n emoji: '🈳',\n names: ['u7a7a'],\n tags: [],\n description: 'Japanese “vacancy” button',\n category: 'Symbols'\n },\n {\n emoji: '㊗️',\n names: ['congratulations'],\n tags: [],\n description: 'Japanese “congratulations” button',\n category: 'Symbols'\n },\n {\n emoji: '㊙️',\n names: ['secret'],\n tags: [],\n description: 'Japanese “secret” button',\n category: 'Symbols'\n },\n {\n emoji: '🈺',\n names: ['u55b6'],\n tags: [],\n description: 'Japanese “open for business” button',\n category: 'Symbols'\n },\n {\n emoji: '🈵',\n names: ['u6e80'],\n tags: [],\n description: 'Japanese “no vacancy” button',\n category: 'Symbols'\n },\n {\n emoji: '🔴',\n names: ['red_circle'],\n tags: [],\n description: 'red circle',\n category: 'Symbols'\n },\n {\n emoji: '🟠',\n names: ['orange_circle'],\n tags: [],\n description: 'orange circle',\n category: 'Symbols'\n },\n {\n emoji: '🟡',\n names: ['yellow_circle'],\n tags: [],\n description: 'yellow circle',\n category: 'Symbols'\n },\n {\n emoji: '🟢',\n names: ['green_circle'],\n tags: [],\n description: 'green circle',\n category: 'Symbols'\n },\n {\n emoji: '🔵',\n names: ['large_blue_circle'],\n tags: [],\n description: 'blue circle',\n category: 'Symbols'\n },\n {\n emoji: '🟣',\n names: ['purple_circle'],\n tags: [],\n description: 'purple circle',\n category: 'Symbols'\n },\n {\n emoji: '🟤',\n names: ['brown_circle'],\n tags: [],\n description: 'brown circle',\n category: 'Symbols'\n },\n {\n emoji: '⚫',\n names: ['black_circle'],\n tags: [],\n description: 'black circle',\n category: 'Symbols'\n },\n {\n emoji: '⚪',\n names: ['white_circle'],\n tags: [],\n description: 'white circle',\n category: 'Symbols'\n },\n {\n emoji: '🟥',\n names: ['red_square'],\n tags: [],\n description: 'red square',\n category: 'Symbols'\n },\n {\n emoji: '🟧',\n names: ['orange_square'],\n tags: [],\n description: 'orange square',\n category: 'Symbols'\n },\n {\n emoji: '🟨',\n names: ['yellow_square'],\n tags: [],\n description: 'yellow square',\n category: 'Symbols'\n },\n {\n emoji: '🟩',\n names: ['green_square'],\n tags: [],\n description: 'green square',\n category: 'Symbols'\n },\n {\n emoji: '🟦',\n names: ['blue_square'],\n tags: [],\n description: 'blue square',\n category: 'Symbols'\n },\n {\n emoji: '🟪',\n names: ['purple_square'],\n tags: [],\n description: 'purple square',\n category: 'Symbols'\n },\n {\n emoji: '🟫',\n names: ['brown_square'],\n tags: [],\n description: 'brown square',\n category: 'Symbols'\n },\n {\n emoji: '⬛',\n names: ['black_large_square'],\n tags: [],\n description: 'black large square',\n category: 'Symbols'\n },\n {\n emoji: '⬜',\n names: ['white_large_square'],\n tags: [],\n description: 'white large square',\n category: 'Symbols'\n },\n {\n emoji: '◼️',\n names: ['black_medium_square'],\n tags: [],\n description: 'black medium square',\n category: 'Symbols'\n },\n {\n emoji: '◻️',\n names: ['white_medium_square'],\n tags: [],\n description: 'white medium square',\n category: 'Symbols'\n },\n {\n emoji: '◾',\n names: ['black_medium_small_square'],\n tags: [],\n description: 'black medium-small square',\n category: 'Symbols'\n },\n {\n emoji: '◽',\n names: ['white_medium_small_square'],\n tags: [],\n description: 'white medium-small square',\n category: 'Symbols'\n },\n {\n emoji: '▪️',\n names: ['black_small_square'],\n tags: [],\n description: 'black small square',\n category: 'Symbols'\n },\n {\n emoji: '▫️',\n names: ['white_small_square'],\n tags: [],\n description: 'white small square',\n category: 'Symbols'\n },\n {\n emoji: '🔶',\n names: ['large_orange_diamond'],\n tags: [],\n description: 'large orange diamond',\n category: 'Symbols'\n },\n {\n emoji: '🔷',\n names: ['large_blue_diamond'],\n tags: [],\n description: 'large blue diamond',\n category: 'Symbols'\n },\n {\n emoji: '🔸',\n names: ['small_orange_diamond'],\n tags: [],\n description: 'small orange diamond',\n category: 'Symbols'\n },\n {\n emoji: '🔹',\n names: ['small_blue_diamond'],\n tags: [],\n description: 'small blue diamond',\n category: 'Symbols'\n },\n {\n emoji: '🔺',\n names: ['small_red_triangle'],\n tags: [],\n description: 'red triangle pointed up',\n category: 'Symbols'\n },\n {\n emoji: '🔻',\n names: ['small_red_triangle_down'],\n tags: [],\n description: 'red triangle pointed down',\n category: 'Symbols'\n },\n {\n emoji: '💠',\n names: ['diamond_shape_with_a_dot_inside'],\n tags: [],\n description: 'diamond with a dot',\n category: 'Symbols'\n },\n {\n emoji: '🔘',\n names: ['radio_button'],\n tags: [],\n description: 'radio button',\n category: 'Symbols'\n },\n {\n emoji: '🔳',\n names: ['white_square_button'],\n tags: [],\n description: 'white square button',\n category: 'Symbols'\n },\n {\n emoji: '🔲',\n names: ['black_square_button'],\n tags: [],\n description: 'black square button',\n category: 'Symbols'\n },\n {\n emoji: '🏁',\n names: ['checkered_flag'],\n tags: ['milestone', 'finish'],\n description: 'chequered flag',\n category: 'Flags'\n },\n {\n emoji: '🚩',\n names: ['triangular_flag_on_post'],\n tags: [],\n description: 'triangular flag',\n category: 'Flags'\n },\n {\n emoji: '🎌',\n names: ['crossed_flags'],\n tags: [],\n description: 'crossed flags',\n category: 'Flags'\n },\n {\n emoji: '🏴',\n names: ['black_flag'],\n tags: [],\n description: 'black flag',\n category: 'Flags'\n },\n {\n emoji: '🏳️',\n names: ['white_flag'],\n tags: [],\n description: 'white flag',\n category: 'Flags'\n },\n {\n emoji: '🏳️🌈',\n names: ['rainbow_flag'],\n tags: ['pride'],\n description: 'rainbow flag',\n category: 'Flags'\n },\n {\n emoji: '🏳️⚧️',\n names: ['transgender_flag'],\n tags: [],\n description: 'transgender flag',\n category: 'Flags'\n },\n {\n emoji: '🏴☠️',\n names: ['pirate_flag'],\n tags: [],\n description: 'pirate flag',\n category: 'Flags'\n },\n {\n emoji: '🇦🇨',\n names: ['ascension_island'],\n tags: [],\n description: 'flag: Ascension Island',\n category: 'Flags'\n },\n {\n emoji: '🇦🇩',\n names: ['andorra'],\n tags: [],\n description: 'flag: Andorra',\n category: 'Flags'\n },\n {\n emoji: '🇦🇪',\n names: ['united_arab_emirates'],\n tags: [],\n description: 'flag: United Arab Emirates',\n category: 'Flags'\n },\n {\n emoji: '🇦🇫',\n names: ['afghanistan'],\n tags: [],\n description: 'flag: Afghanistan',\n category: 'Flags'\n },\n {\n emoji: '🇦🇬',\n names: ['antigua_barbuda'],\n tags: [],\n description: 'flag: Antigua & Barbuda',\n category: 'Flags'\n },\n {\n emoji: '🇦🇮',\n names: ['anguilla'],\n tags: [],\n description: 'flag: Anguilla',\n category: 'Flags'\n },\n {\n emoji: '🇦🇱',\n names: ['albania'],\n tags: [],\n description: 'flag: Albania',\n category: 'Flags'\n },\n {\n emoji: '🇦🇲',\n names: ['armenia'],\n tags: [],\n description: 'flag: Armenia',\n category: 'Flags'\n },\n {\n emoji: '🇦🇴',\n names: ['angola'],\n tags: [],\n description: 'flag: Angola',\n category: 'Flags'\n },\n {\n emoji: '🇦🇶',\n names: ['antarctica'],\n tags: [],\n description: 'flag: Antarctica',\n category: 'Flags'\n },\n {\n emoji: '🇦🇷',\n names: ['argentina'],\n tags: [],\n description: 'flag: Argentina',\n category: 'Flags'\n },\n {\n emoji: '🇦🇸',\n names: ['american_samoa'],\n tags: [],\n description: 'flag: American Samoa',\n category: 'Flags'\n },\n {\n emoji: '🇦🇹',\n names: ['austria'],\n tags: [],\n description: 'flag: Austria',\n category: 'Flags'\n },\n {\n emoji: '🇦🇺',\n names: ['australia'],\n tags: [],\n description: 'flag: Australia',\n category: 'Flags'\n },\n {\n emoji: '🇦🇼',\n names: ['aruba'],\n tags: [],\n description: 'flag: Aruba',\n category: 'Flags'\n },\n {\n emoji: '🇦🇽',\n names: ['aland_islands'],\n tags: [],\n description: 'flag: Åland Islands',\n category: 'Flags'\n },\n {\n emoji: '🇦🇿',\n names: ['azerbaijan'],\n tags: [],\n description: 'flag: Azerbaijan',\n category: 'Flags'\n },\n {\n emoji: '🇧🇦',\n names: ['bosnia_herzegovina'],\n tags: [],\n description: 'flag: Bosnia & Herzegovina',\n category: 'Flags'\n },\n {\n emoji: '🇧🇧',\n names: ['barbados'],\n tags: [],\n description: 'flag: Barbados',\n category: 'Flags'\n },\n {\n emoji: '🇧🇩',\n names: ['bangladesh'],\n tags: [],\n description: 'flag: Bangladesh',\n category: 'Flags'\n },\n {\n emoji: '🇧🇪',\n names: ['belgium'],\n tags: [],\n description: 'flag: Belgium',\n category: 'Flags'\n },\n {\n emoji: '🇧🇫',\n names: ['burkina_faso'],\n tags: [],\n description: 'flag: Burkina Faso',\n category: 'Flags'\n },\n {\n emoji: '🇧🇬',\n names: ['bulgaria'],\n tags: [],\n description: 'flag: Bulgaria',\n category: 'Flags'\n },\n {\n emoji: '🇧🇭',\n names: ['bahrain'],\n tags: [],\n description: 'flag: Bahrain',\n category: 'Flags'\n },\n {\n emoji: '🇧🇮',\n names: ['burundi'],\n tags: [],\n description: 'flag: Burundi',\n category: 'Flags'\n },\n {\n emoji: '🇧🇯',\n names: ['benin'],\n tags: [],\n description: 'flag: Benin',\n category: 'Flags'\n },\n {\n emoji: '🇧🇱',\n names: ['st_barthelemy'],\n tags: [],\n description: 'flag: St. Barthélemy',\n category: 'Flags'\n },\n {\n emoji: '🇧🇲',\n names: ['bermuda'],\n tags: [],\n description: 'flag: Bermuda',\n category: 'Flags'\n },\n {\n emoji: '🇧🇳',\n names: ['brunei'],\n tags: [],\n description: 'flag: Brunei',\n category: 'Flags'\n },\n {\n emoji: '🇧🇴',\n names: ['bolivia'],\n tags: [],\n description: 'flag: Bolivia',\n category: 'Flags'\n },\n {\n emoji: '🇧🇶',\n names: ['caribbean_netherlands'],\n tags: [],\n description: 'flag: Caribbean Netherlands',\n category: 'Flags'\n },\n {\n emoji: '🇧🇷',\n names: ['brazil'],\n tags: [],\n description: 'flag: Brazil',\n category: 'Flags'\n },\n {\n emoji: '🇧🇸',\n names: ['bahamas'],\n tags: [],\n description: 'flag: Bahamas',\n category: 'Flags'\n },\n {\n emoji: '🇧🇹',\n names: ['bhutan'],\n tags: [],\n description: 'flag: Bhutan',\n category: 'Flags'\n },\n {\n emoji: '🇧🇻',\n names: ['bouvet_island'],\n tags: [],\n description: 'flag: Bouvet Island',\n category: 'Flags'\n },\n {\n emoji: '🇧🇼',\n names: ['botswana'],\n tags: [],\n description: 'flag: Botswana',\n category: 'Flags'\n },\n {\n emoji: '🇧🇾',\n names: ['belarus'],\n tags: [],\n description: 'flag: Belarus',\n category: 'Flags'\n },\n {\n emoji: '🇧🇿',\n names: ['belize'],\n tags: [],\n description: 'flag: Belize',\n category: 'Flags'\n },\n {\n emoji: '🇨🇦',\n names: ['canada'],\n tags: [],\n description: 'flag: Canada',\n category: 'Flags'\n },\n {\n emoji: '🇨🇨',\n names: ['cocos_islands'],\n tags: ['keeling'],\n description: 'flag: Cocos (Keeling) Islands',\n category: 'Flags'\n },\n {\n emoji: '🇨🇩',\n names: ['congo_kinshasa'],\n tags: [],\n description: 'flag: Congo - Kinshasa',\n category: 'Flags'\n },\n {\n emoji: '🇨🇫',\n names: ['central_african_republic'],\n tags: [],\n description: 'flag: Central African Republic',\n category: 'Flags'\n },\n {\n emoji: '🇨🇬',\n names: ['congo_brazzaville'],\n tags: [],\n description: 'flag: Congo - Brazzaville',\n category: 'Flags'\n },\n {\n emoji: '🇨🇭',\n names: ['switzerland'],\n tags: [],\n description: 'flag: Switzerland',\n category: 'Flags'\n },\n {\n emoji: '🇨🇮',\n names: ['cote_divoire'],\n tags: ['ivory'],\n description: 'flag: Côte d’Ivoire',\n category: 'Flags'\n },\n {\n emoji: '🇨🇰',\n names: ['cook_islands'],\n tags: [],\n description: 'flag: Cook Islands',\n category: 'Flags'\n },\n {\n emoji: '🇨🇱',\n names: ['chile'],\n tags: [],\n description: 'flag: Chile',\n category: 'Flags'\n },\n {\n emoji: '🇨🇲',\n names: ['cameroon'],\n tags: [],\n description: 'flag: Cameroon',\n category: 'Flags'\n },\n {\n emoji: '🇨🇳',\n names: ['cn'],\n tags: ['china'],\n description: 'flag: China',\n category: 'Flags'\n },\n {\n emoji: '🇨🇴',\n names: ['colombia'],\n tags: [],\n description: 'flag: Colombia',\n category: 'Flags'\n },\n {\n emoji: '🇨🇵',\n names: ['clipperton_island'],\n tags: [],\n description: 'flag: Clipperton Island',\n category: 'Flags'\n },\n {\n emoji: '🇨🇷',\n names: ['costa_rica'],\n tags: [],\n description: 'flag: Costa Rica',\n category: 'Flags'\n },\n {\n emoji: '🇨🇺',\n names: ['cuba'],\n tags: [],\n description: 'flag: Cuba',\n category: 'Flags'\n },\n {\n emoji: '🇨🇻',\n names: ['cape_verde'],\n tags: [],\n description: 'flag: Cape Verde',\n category: 'Flags'\n },\n {\n emoji: '🇨🇼',\n names: ['curacao'],\n tags: [],\n description: 'flag: Curaçao',\n category: 'Flags'\n },\n {\n emoji: '🇨🇽',\n names: ['christmas_island'],\n tags: [],\n description: 'flag: Christmas Island',\n category: 'Flags'\n },\n {\n emoji: '🇨🇾',\n names: ['cyprus'],\n tags: [],\n description: 'flag: Cyprus',\n category: 'Flags'\n },\n {\n emoji: '🇨🇿',\n names: ['czech_republic'],\n tags: [],\n description: 'flag: Czechia',\n category: 'Flags'\n },\n {\n emoji: '🇩🇪',\n names: ['de'],\n tags: ['flag', 'germany'],\n description: 'flag: Germany',\n category: 'Flags'\n },\n {\n emoji: '🇩🇬',\n names: ['diego_garcia'],\n tags: [],\n description: 'flag: Diego Garcia',\n category: 'Flags'\n },\n {\n emoji: '🇩🇯',\n names: ['djibouti'],\n tags: [],\n description: 'flag: Djibouti',\n category: 'Flags'\n },\n {\n emoji: '🇩🇰',\n names: ['denmark'],\n tags: [],\n description: 'flag: Denmark',\n category: 'Flags'\n },\n {\n emoji: '🇩🇲',\n names: ['dominica'],\n tags: [],\n description: 'flag: Dominica',\n category: 'Flags'\n },\n {\n emoji: '🇩🇴',\n names: ['dominican_republic'],\n tags: [],\n description: 'flag: Dominican Republic',\n category: 'Flags'\n },\n {\n emoji: '🇩🇿',\n names: ['algeria'],\n tags: [],\n description: 'flag: Algeria',\n category: 'Flags'\n },\n {\n emoji: '🇪🇦',\n names: ['ceuta_melilla'],\n tags: [],\n description: 'flag: Ceuta & Melilla',\n category: 'Flags'\n },\n {\n emoji: '🇪🇨',\n names: ['ecuador'],\n tags: [],\n description: 'flag: Ecuador',\n category: 'Flags'\n },\n {\n emoji: '🇪🇪',\n names: ['estonia'],\n tags: [],\n description: 'flag: Estonia',\n category: 'Flags'\n },\n {\n emoji: '🇪🇬',\n names: ['egypt'],\n tags: [],\n description: 'flag: Egypt',\n category: 'Flags'\n },\n {\n emoji: '🇪🇭',\n names: ['western_sahara'],\n tags: [],\n description: 'flag: Western Sahara',\n category: 'Flags'\n },\n {\n emoji: '🇪🇷',\n names: ['eritrea'],\n tags: [],\n description: 'flag: Eritrea',\n category: 'Flags'\n },\n {\n emoji: '🇪🇸',\n names: ['es'],\n tags: ['spain'],\n description: 'flag: Spain',\n category: 'Flags'\n },\n {\n emoji: '🇪🇹',\n names: ['ethiopia'],\n tags: [],\n description: 'flag: Ethiopia',\n category: 'Flags'\n },\n {\n emoji: '🇪🇺',\n names: ['eu', 'european_union'],\n tags: [],\n description: 'flag: European Union',\n category: 'Flags'\n },\n {\n emoji: '🇫🇮',\n names: ['finland'],\n tags: [],\n description: 'flag: Finland',\n category: 'Flags'\n },\n {\n emoji: '🇫🇯',\n names: ['fiji'],\n tags: [],\n description: 'flag: Fiji',\n category: 'Flags'\n },\n {\n emoji: '🇫🇰',\n names: ['falkland_islands'],\n tags: [],\n description: 'flag: Falkland Islands',\n category: 'Flags'\n },\n {\n emoji: '🇫🇲',\n names: ['micronesia'],\n tags: [],\n description: 'flag: Micronesia',\n category: 'Flags'\n },\n {\n emoji: '🇫🇴',\n names: ['faroe_islands'],\n tags: [],\n description: 'flag: Faroe Islands',\n category: 'Flags'\n },\n {\n emoji: '🇫🇷',\n names: ['fr'],\n tags: ['france', 'french'],\n description: 'flag: France',\n category: 'Flags'\n },\n {\n emoji: '🇬🇦',\n names: ['gabon'],\n tags: [],\n description: 'flag: Gabon',\n category: 'Flags'\n },\n {\n emoji: '🇬🇧',\n names: ['gb', 'uk'],\n tags: ['flag', 'british'],\n description: 'flag: United Kingdom',\n category: 'Flags'\n },\n {\n emoji: '🇬🇩',\n names: ['grenada'],\n tags: [],\n description: 'flag: Grenada',\n category: 'Flags'\n },\n {\n emoji: '🇬🇪',\n names: ['georgia'],\n tags: [],\n description: 'flag: Georgia',\n category: 'Flags'\n },\n {\n emoji: '🇬🇫',\n names: ['french_guiana'],\n tags: [],\n description: 'flag: French Guiana',\n category: 'Flags'\n },\n {\n emoji: '🇬🇬',\n names: ['guernsey'],\n tags: [],\n description: 'flag: Guernsey',\n category: 'Flags'\n },\n {\n emoji: '🇬🇭',\n names: ['ghana'],\n tags: [],\n description: 'flag: Ghana',\n category: 'Flags'\n },\n {\n emoji: '🇬🇮',\n names: ['gibraltar'],\n tags: [],\n description: 'flag: Gibraltar',\n category: 'Flags'\n },\n {\n emoji: '🇬🇱',\n names: ['greenland'],\n tags: [],\n description: 'flag: Greenland',\n category: 'Flags'\n },\n {\n emoji: '🇬🇲',\n names: ['gambia'],\n tags: [],\n description: 'flag: Gambia',\n category: 'Flags'\n },\n {\n emoji: '🇬🇳',\n names: ['guinea'],\n tags: [],\n description: 'flag: Guinea',\n category: 'Flags'\n },\n {\n emoji: '🇬🇵',\n names: ['guadeloupe'],\n tags: [],\n description: 'flag: Guadeloupe',\n category: 'Flags'\n },\n {\n emoji: '🇬🇶',\n names: ['equatorial_guinea'],\n tags: [],\n description: 'flag: Equatorial Guinea',\n category: 'Flags'\n },\n {\n emoji: '🇬🇷',\n names: ['greece'],\n tags: [],\n description: 'flag: Greece',\n category: 'Flags'\n },\n {\n emoji: '🇬🇸',\n names: ['south_georgia_south_sandwich_islands'],\n tags: [],\n description: 'flag: South Georgia & South Sandwich Islands',\n category: 'Flags'\n },\n {\n emoji: '🇬🇹',\n names: ['guatemala'],\n tags: [],\n description: 'flag: Guatemala',\n category: 'Flags'\n },\n {\n emoji: '🇬🇺',\n names: ['guam'],\n tags: [],\n description: 'flag: Guam',\n category: 'Flags'\n },\n {\n emoji: '🇬🇼',\n names: ['guinea_bissau'],\n tags: [],\n description: 'flag: Guinea-Bissau',\n category: 'Flags'\n },\n {\n emoji: '🇬🇾',\n names: ['guyana'],\n tags: [],\n description: 'flag: Guyana',\n category: 'Flags'\n },\n {\n emoji: '🇭🇰',\n names: ['hong_kong'],\n tags: [],\n description: 'flag: Hong Kong SAR China',\n category: 'Flags'\n },\n {\n emoji: '🇭🇲',\n names: ['heard_mcdonald_islands'],\n tags: [],\n description: 'flag: Heard & McDonald Islands',\n category: 'Flags'\n },\n {\n emoji: '🇭🇳',\n names: ['honduras'],\n tags: [],\n description: 'flag: Honduras',\n category: 'Flags'\n },\n {\n emoji: '🇭🇷',\n names: ['croatia'],\n tags: [],\n description: 'flag: Croatia',\n category: 'Flags'\n },\n {\n emoji: '🇭🇹',\n names: ['haiti'],\n tags: [],\n description: 'flag: Haiti',\n category: 'Flags'\n },\n {\n emoji: '🇭🇺',\n names: ['hungary'],\n tags: [],\n description: 'flag: Hungary',\n category: 'Flags'\n },\n {\n emoji: '🇮🇨',\n names: ['canary_islands'],\n tags: [],\n description: 'flag: Canary Islands',\n category: 'Flags'\n },\n {\n emoji: '🇮🇩',\n names: ['indonesia'],\n tags: [],\n description: 'flag: Indonesia',\n category: 'Flags'\n },\n {\n emoji: '🇮🇪',\n names: ['ireland'],\n tags: [],\n description: 'flag: Ireland',\n category: 'Flags'\n },\n {\n emoji: '🇮🇱',\n names: ['israel'],\n tags: [],\n description: 'flag: Israel',\n category: 'Flags'\n },\n {\n emoji: '🇮🇲',\n names: ['isle_of_man'],\n tags: [],\n description: 'flag: Isle of Man',\n category: 'Flags'\n },\n {\n emoji: '🇮🇳',\n names: ['india'],\n tags: [],\n description: 'flag: India',\n category: 'Flags'\n },\n {\n emoji: '🇮🇴',\n names: ['british_indian_ocean_territory'],\n tags: [],\n description: 'flag: British Indian Ocean Territory',\n category: 'Flags'\n },\n {\n emoji: '🇮🇶',\n names: ['iraq'],\n tags: [],\n description: 'flag: Iraq',\n category: 'Flags'\n },\n {\n emoji: '🇮🇷',\n names: ['iran'],\n tags: [],\n description: 'flag: Iran',\n category: 'Flags'\n },\n {\n emoji: '🇮🇸',\n names: ['iceland'],\n tags: [],\n description: 'flag: Iceland',\n category: 'Flags'\n },\n {\n emoji: '🇮🇹',\n names: ['it'],\n tags: ['italy'],\n description: 'flag: Italy',\n category: 'Flags'\n },\n {\n emoji: '🇯🇪',\n names: ['jersey'],\n tags: [],\n description: 'flag: Jersey',\n category: 'Flags'\n },\n {\n emoji: '🇯🇲',\n names: ['jamaica'],\n tags: [],\n description: 'flag: Jamaica',\n category: 'Flags'\n },\n {\n emoji: '🇯🇴',\n names: ['jordan'],\n tags: [],\n description: 'flag: Jordan',\n category: 'Flags'\n },\n {\n emoji: '🇯🇵',\n names: ['jp'],\n tags: ['japan'],\n description: 'flag: Japan',\n category: 'Flags'\n },\n {\n emoji: '🇰🇪',\n names: ['kenya'],\n tags: [],\n description: 'flag: Kenya',\n category: 'Flags'\n },\n {\n emoji: '🇰🇬',\n names: ['kyrgyzstan'],\n tags: [],\n description: 'flag: Kyrgyzstan',\n category: 'Flags'\n },\n {\n emoji: '🇰🇭',\n names: ['cambodia'],\n tags: [],\n description: 'flag: Cambodia',\n category: 'Flags'\n },\n {\n emoji: '🇰🇮',\n names: ['kiribati'],\n tags: [],\n description: 'flag: Kiribati',\n category: 'Flags'\n },\n {\n emoji: '🇰🇲',\n names: ['comoros'],\n tags: [],\n description: 'flag: Comoros',\n category: 'Flags'\n },\n {\n emoji: '🇰🇳',\n names: ['st_kitts_nevis'],\n tags: [],\n description: 'flag: St. Kitts & Nevis',\n category: 'Flags'\n },\n {\n emoji: '🇰🇵',\n names: ['north_korea'],\n tags: [],\n description: 'flag: North Korea',\n category: 'Flags'\n },\n {\n emoji: '🇰🇷',\n names: ['kr'],\n tags: ['korea'],\n description: 'flag: South Korea',\n category: 'Flags'\n },\n {\n emoji: '🇰🇼',\n names: ['kuwait'],\n tags: [],\n description: 'flag: Kuwait',\n category: 'Flags'\n },\n {\n emoji: '🇰🇾',\n names: ['cayman_islands'],\n tags: [],\n description: 'flag: Cayman Islands',\n category: 'Flags'\n },\n {\n emoji: '🇰🇿',\n names: ['kazakhstan'],\n tags: [],\n description: 'flag: Kazakhstan',\n category: 'Flags'\n },\n {\n emoji: '🇱🇦',\n names: ['laos'],\n tags: [],\n description: 'flag: Laos',\n category: 'Flags'\n },\n {\n emoji: '🇱🇧',\n names: ['lebanon'],\n tags: [],\n description: 'flag: Lebanon',\n category: 'Flags'\n },\n {\n emoji: '🇱🇨',\n names: ['st_lucia'],\n tags: [],\n description: 'flag: St. Lucia',\n category: 'Flags'\n },\n {\n emoji: '🇱🇮',\n names: ['liechtenstein'],\n tags: [],\n description: 'flag: Liechtenstein',\n category: 'Flags'\n },\n {\n emoji: '🇱🇰',\n names: ['sri_lanka'],\n tags: [],\n description: 'flag: Sri Lanka',\n category: 'Flags'\n },\n {\n emoji: '🇱🇷',\n names: ['liberia'],\n tags: [],\n description: 'flag: Liberia',\n category: 'Flags'\n },\n {\n emoji: '🇱🇸',\n names: ['lesotho'],\n tags: [],\n description: 'flag: Lesotho',\n category: 'Flags'\n },\n {\n emoji: '🇱🇹',\n names: ['lithuania'],\n tags: [],\n description: 'flag: Lithuania',\n category: 'Flags'\n },\n {\n emoji: '🇱🇺',\n names: ['luxembourg'],\n tags: [],\n description: 'flag: Luxembourg',\n category: 'Flags'\n },\n {\n emoji: '🇱🇻',\n names: ['latvia'],\n tags: [],\n description: 'flag: Latvia',\n category: 'Flags'\n },\n {\n emoji: '🇱🇾',\n names: ['libya'],\n tags: [],\n description: 'flag: Libya',\n category: 'Flags'\n },\n {\n emoji: '🇲🇦',\n names: ['morocco'],\n tags: [],\n description: 'flag: Morocco',\n category: 'Flags'\n },\n {\n emoji: '🇲🇨',\n names: ['monaco'],\n tags: [],\n description: 'flag: Monaco',\n category: 'Flags'\n },\n {\n emoji: '🇲🇩',\n names: ['moldova'],\n tags: [],\n description: 'flag: Moldova',\n category: 'Flags'\n },\n {\n emoji: '🇲🇪',\n names: ['montenegro'],\n tags: [],\n description: 'flag: Montenegro',\n category: 'Flags'\n },\n {\n emoji: '🇲🇫',\n names: ['st_martin'],\n tags: [],\n description: 'flag: St. Martin',\n category: 'Flags'\n },\n {\n emoji: '🇲🇬',\n names: ['madagascar'],\n tags: [],\n description: 'flag: Madagascar',\n category: 'Flags'\n },\n {\n emoji: '🇲🇭',\n names: ['marshall_islands'],\n tags: [],\n description: 'flag: Marshall Islands',\n category: 'Flags'\n },\n {\n emoji: '🇲🇰',\n names: ['macedonia'],\n tags: [],\n description: 'flag: North Macedonia',\n category: 'Flags'\n },\n {\n emoji: '🇲🇱',\n names: ['mali'],\n tags: [],\n description: 'flag: Mali',\n category: 'Flags'\n },\n {\n emoji: '🇲🇲',\n names: ['myanmar'],\n tags: ['burma'],\n description: 'flag: Myanmar (Burma)',\n category: 'Flags'\n },\n {\n emoji: '🇲🇳',\n names: ['mongolia'],\n tags: [],\n description: 'flag: Mongolia',\n category: 'Flags'\n },\n {\n emoji: '🇲🇴',\n names: ['macau'],\n tags: [],\n description: 'flag: Macao SAR China',\n category: 'Flags'\n },\n {\n emoji: '🇲🇵',\n names: ['northern_mariana_islands'],\n tags: [],\n description: 'flag: Northern Mariana Islands',\n category: 'Flags'\n },\n {\n emoji: '🇲🇶',\n names: ['martinique'],\n tags: [],\n description: 'flag: Martinique',\n category: 'Flags'\n },\n {\n emoji: '🇲🇷',\n names: ['mauritania'],\n tags: [],\n description: 'flag: Mauritania',\n category: 'Flags'\n },\n {\n emoji: '🇲🇸',\n names: ['montserrat'],\n tags: [],\n description: 'flag: Montserrat',\n category: 'Flags'\n },\n {\n emoji: '🇲🇹',\n names: ['malta'],\n tags: [],\n description: 'flag: Malta',\n category: 'Flags'\n },\n {\n emoji: '🇲🇺',\n names: ['mauritius'],\n tags: [],\n description: 'flag: Mauritius',\n category: 'Flags'\n },\n {\n emoji: '🇲🇻',\n names: ['maldives'],\n tags: [],\n description: 'flag: Maldives',\n category: 'Flags'\n },\n {\n emoji: '🇲🇼',\n names: ['malawi'],\n tags: [],\n description: 'flag: Malawi',\n category: 'Flags'\n },\n {\n emoji: '🇲🇽',\n names: ['mexico'],\n tags: [],\n description: 'flag: Mexico',\n category: 'Flags'\n },\n {\n emoji: '🇲🇾',\n names: ['malaysia'],\n tags: [],\n description: 'flag: Malaysia',\n category: 'Flags'\n },\n {\n emoji: '🇲🇿',\n names: ['mozambique'],\n tags: [],\n description: 'flag: Mozambique',\n category: 'Flags'\n },\n {\n emoji: '🇳🇦',\n names: ['namibia'],\n tags: [],\n description: 'flag: Namibia',\n category: 'Flags'\n },\n {\n emoji: '🇳🇨',\n names: ['new_caledonia'],\n tags: [],\n description: 'flag: New Caledonia',\n category: 'Flags'\n },\n {\n emoji: '🇳🇪',\n names: ['niger'],\n tags: [],\n description: 'flag: Niger',\n category: 'Flags'\n },\n {\n emoji: '🇳🇫',\n names: ['norfolk_island'],\n tags: [],\n description: 'flag: Norfolk Island',\n category: 'Flags'\n },\n {\n emoji: '🇳🇬',\n names: ['nigeria'],\n tags: [],\n description: 'flag: Nigeria',\n category: 'Flags'\n },\n {\n emoji: '🇳🇮',\n names: ['nicaragua'],\n tags: [],\n description: 'flag: Nicaragua',\n category: 'Flags'\n },\n {\n emoji: '🇳🇱',\n names: ['netherlands'],\n tags: [],\n description: 'flag: Netherlands',\n category: 'Flags'\n },\n {\n emoji: '🇳🇴',\n names: ['norway'],\n tags: [],\n description: 'flag: Norway',\n category: 'Flags'\n },\n {\n emoji: '🇳🇵',\n names: ['nepal'],\n tags: [],\n description: 'flag: Nepal',\n category: 'Flags'\n },\n {\n emoji: '🇳🇷',\n names: ['nauru'],\n tags: [],\n description: 'flag: Nauru',\n category: 'Flags'\n },\n {\n emoji: '🇳🇺',\n names: ['niue'],\n tags: [],\n description: 'flag: Niue',\n category: 'Flags'\n },\n {\n emoji: '🇳🇿',\n names: ['new_zealand'],\n tags: [],\n description: 'flag: New Zealand',\n category: 'Flags'\n },\n {\n emoji: '🇴🇲',\n names: ['oman'],\n tags: [],\n description: 'flag: Oman',\n category: 'Flags'\n },\n {\n emoji: '🇵🇦',\n names: ['panama'],\n tags: [],\n description: 'flag: Panama',\n category: 'Flags'\n },\n {\n emoji: '🇵🇪',\n names: ['peru'],\n tags: [],\n description: 'flag: Peru',\n category: 'Flags'\n },\n {\n emoji: '🇵🇫',\n names: ['french_polynesia'],\n tags: [],\n description: 'flag: French Polynesia',\n category: 'Flags'\n },\n {\n emoji: '🇵🇬',\n names: ['papua_new_guinea'],\n tags: [],\n description: 'flag: Papua New Guinea',\n category: 'Flags'\n },\n {\n emoji: '🇵🇭',\n names: ['philippines'],\n tags: [],\n description: 'flag: Philippines',\n category: 'Flags'\n },\n {\n emoji: '🇵🇰',\n names: ['pakistan'],\n tags: [],\n description: 'flag: Pakistan',\n category: 'Flags'\n },\n {\n emoji: '🇵🇱',\n names: ['poland'],\n tags: [],\n description: 'flag: Poland',\n category: 'Flags'\n },\n {\n emoji: '🇵🇲',\n names: ['st_pierre_miquelon'],\n tags: [],\n description: 'flag: St. Pierre & Miquelon',\n category: 'Flags'\n },\n {\n emoji: '🇵🇳',\n names: ['pitcairn_islands'],\n tags: [],\n description: 'flag: Pitcairn Islands',\n category: 'Flags'\n },\n {\n emoji: '🇵🇷',\n names: ['puerto_rico'],\n tags: [],\n description: 'flag: Puerto Rico',\n category: 'Flags'\n },\n {\n emoji: '🇵🇸',\n names: ['palestinian_territories'],\n tags: [],\n description: 'flag: Palestinian Territories',\n category: 'Flags'\n },\n {\n emoji: '🇵🇹',\n names: ['portugal'],\n tags: [],\n description: 'flag: Portugal',\n category: 'Flags'\n },\n {\n emoji: '🇵🇼',\n names: ['palau'],\n tags: [],\n description: 'flag: Palau',\n category: 'Flags'\n },\n {\n emoji: '🇵🇾',\n names: ['paraguay'],\n tags: [],\n description: 'flag: Paraguay',\n category: 'Flags'\n },\n {\n emoji: '🇶🇦',\n names: ['qatar'],\n tags: [],\n description: 'flag: Qatar',\n category: 'Flags'\n },\n {\n emoji: '🇷🇪',\n names: ['reunion'],\n tags: [],\n description: 'flag: Réunion',\n category: 'Flags'\n },\n {\n emoji: '🇷🇴',\n names: ['romania'],\n tags: [],\n description: 'flag: Romania',\n category: 'Flags'\n },\n {\n emoji: '🇷🇸',\n names: ['serbia'],\n tags: [],\n description: 'flag: Serbia',\n category: 'Flags'\n },\n {\n emoji: '🇷🇺',\n names: ['ru'],\n tags: ['russia'],\n description: 'flag: Russia',\n category: 'Flags'\n },\n {\n emoji: '🇷🇼',\n names: ['rwanda'],\n tags: [],\n description: 'flag: Rwanda',\n category: 'Flags'\n },\n {\n emoji: '🇸🇦',\n names: ['saudi_arabia'],\n tags: [],\n description: 'flag: Saudi Arabia',\n category: 'Flags'\n },\n {\n emoji: '🇸🇧',\n names: ['solomon_islands'],\n tags: [],\n description: 'flag: Solomon Islands',\n category: 'Flags'\n },\n {\n emoji: '🇸🇨',\n names: ['seychelles'],\n tags: [],\n description: 'flag: Seychelles',\n category: 'Flags'\n },\n {\n emoji: '🇸🇩',\n names: ['sudan'],\n tags: [],\n description: 'flag: Sudan',\n category: 'Flags'\n },\n {\n emoji: '🇸🇪',\n names: ['sweden'],\n tags: [],\n description: 'flag: Sweden',\n category: 'Flags'\n },\n {\n emoji: '🇸🇬',\n names: ['singapore'],\n tags: [],\n description: 'flag: Singapore',\n category: 'Flags'\n },\n {\n emoji: '🇸🇭',\n names: ['st_helena'],\n tags: [],\n description: 'flag: St. Helena',\n category: 'Flags'\n },\n {\n emoji: '🇸🇮',\n names: ['slovenia'],\n tags: [],\n description: 'flag: Slovenia',\n category: 'Flags'\n },\n {\n emoji: '🇸🇯',\n names: ['svalbard_jan_mayen'],\n tags: [],\n description: 'flag: Svalbard & Jan Mayen',\n category: 'Flags'\n },\n {\n emoji: '🇸🇰',\n names: ['slovakia'],\n tags: [],\n description: 'flag: Slovakia',\n category: 'Flags'\n },\n {\n emoji: '🇸🇱',\n names: ['sierra_leone'],\n tags: [],\n description: 'flag: Sierra Leone',\n category: 'Flags'\n },\n {\n emoji: '🇸🇲',\n names: ['san_marino'],\n tags: [],\n description: 'flag: San Marino',\n category: 'Flags'\n },\n {\n emoji: '🇸🇳',\n names: ['senegal'],\n tags: [],\n description: 'flag: Senegal',\n category: 'Flags'\n },\n {\n emoji: '🇸🇴',\n names: ['somalia'],\n tags: [],\n description: 'flag: Somalia',\n category: 'Flags'\n },\n {\n emoji: '🇸🇷',\n names: ['suriname'],\n tags: [],\n description: 'flag: Suriname',\n category: 'Flags'\n },\n {\n emoji: '🇸🇸',\n names: ['south_sudan'],\n tags: [],\n description: 'flag: South Sudan',\n category: 'Flags'\n },\n {\n emoji: '🇸🇹',\n names: ['sao_tome_principe'],\n tags: [],\n description: 'flag: São Tomé & Príncipe',\n category: 'Flags'\n },\n {\n emoji: '🇸🇻',\n names: ['el_salvador'],\n tags: [],\n description: 'flag: El Salvador',\n category: 'Flags'\n },\n {\n emoji: '🇸🇽',\n names: ['sint_maarten'],\n tags: [],\n description: 'flag: Sint Maarten',\n category: 'Flags'\n },\n {\n emoji: '🇸🇾',\n names: ['syria'],\n tags: [],\n description: 'flag: Syria',\n category: 'Flags'\n },\n {\n emoji: '🇸🇿',\n names: ['swaziland'],\n tags: [],\n description: 'flag: Eswatini',\n category: 'Flags'\n },\n {\n emoji: '🇹🇦',\n names: ['tristan_da_cunha'],\n tags: [],\n description: 'flag: Tristan da Cunha',\n category: 'Flags'\n },\n {\n emoji: '🇹🇨',\n names: ['turks_caicos_islands'],\n tags: [],\n description: 'flag: Turks & Caicos Islands',\n category: 'Flags'\n },\n {\n emoji: '🇹🇩',\n names: ['chad'],\n tags: [],\n description: 'flag: Chad',\n category: 'Flags'\n },\n {\n emoji: '🇹🇫',\n names: ['french_southern_territories'],\n tags: [],\n description: 'flag: French Southern Territories',\n category: 'Flags'\n },\n {\n emoji: '🇹🇬',\n names: ['togo'],\n tags: [],\n description: 'flag: Togo',\n category: 'Flags'\n },\n {\n emoji: '🇹🇭',\n names: ['thailand'],\n tags: [],\n description: 'flag: Thailand',\n category: 'Flags'\n },\n {\n emoji: '🇹🇯',\n names: ['tajikistan'],\n tags: [],\n description: 'flag: Tajikistan',\n category: 'Flags'\n },\n {\n emoji: '🇹🇰',\n names: ['tokelau'],\n tags: [],\n description: 'flag: Tokelau',\n category: 'Flags'\n },\n {\n emoji: '🇹🇱',\n names: ['timor_leste'],\n tags: [],\n description: 'flag: Timor-Leste',\n category: 'Flags'\n },\n {\n emoji: '🇹🇲',\n names: ['turkmenistan'],\n tags: [],\n description: 'flag: Turkmenistan',\n category: 'Flags'\n },\n {\n emoji: '🇹🇳',\n names: ['tunisia'],\n tags: [],\n description: 'flag: Tunisia',\n category: 'Flags'\n },\n {\n emoji: '🇹🇴',\n names: ['tonga'],\n tags: [],\n description: 'flag: Tonga',\n category: 'Flags'\n },\n {\n emoji: '🇹🇷',\n names: ['tr'],\n tags: ['turkey'],\n description: 'flag: Turkey',\n category: 'Flags'\n },\n {\n emoji: '🇹🇹',\n names: ['trinidad_tobago'],\n tags: [],\n description: 'flag: Trinidad & Tobago',\n category: 'Flags'\n },\n {\n emoji: '🇹🇻',\n names: ['tuvalu'],\n tags: [],\n description: 'flag: Tuvalu',\n category: 'Flags'\n },\n {\n emoji: '🇹🇼',\n names: ['taiwan'],\n tags: [],\n description: 'flag: Taiwan',\n category: 'Flags'\n },\n {\n emoji: '🇹🇿',\n names: ['tanzania'],\n tags: [],\n description: 'flag: Tanzania',\n category: 'Flags'\n },\n {\n emoji: '🇺🇦',\n names: ['ukraine'],\n tags: [],\n description: 'flag: Ukraine',\n category: 'Flags'\n },\n {\n emoji: '🇺🇬',\n names: ['uganda'],\n tags: [],\n description: 'flag: Uganda',\n category: 'Flags'\n },\n {\n emoji: '🇺🇲',\n names: ['us_outlying_islands'],\n tags: [],\n description: 'flag: U.S. Outlying Islands',\n category: 'Flags'\n },\n {\n emoji: '🇺🇳',\n names: ['united_nations'],\n tags: [],\n description: 'flag: United Nations',\n category: 'Flags'\n },\n {\n emoji: '🇺🇸',\n names: ['us'],\n tags: ['flag', 'united', 'america'],\n description: 'flag: United States',\n category: 'Flags'\n },\n {\n emoji: '🇺🇾',\n names: ['uruguay'],\n tags: [],\n description: 'flag: Uruguay',\n category: 'Flags'\n },\n {\n emoji: '🇺🇿',\n names: ['uzbekistan'],\n tags: [],\n description: 'flag: Uzbekistan',\n category: 'Flags'\n },\n {\n emoji: '🇻🇦',\n names: ['vatican_city'],\n tags: [],\n description: 'flag: Vatican City',\n category: 'Flags'\n },\n {\n emoji: '🇻🇨',\n names: ['st_vincent_grenadines'],\n tags: [],\n description: 'flag: St. Vincent & Grenadines',\n category: 'Flags'\n },\n {\n emoji: '🇻🇪',\n names: ['venezuela'],\n tags: [],\n description: 'flag: Venezuela',\n category: 'Flags'\n },\n {\n emoji: '🇻🇬',\n names: ['british_virgin_islands'],\n tags: [],\n description: 'flag: British Virgin Islands',\n category: 'Flags'\n },\n {\n emoji: '🇻🇮',\n names: ['us_virgin_islands'],\n tags: [],\n description: 'flag: U.S. Virgin Islands',\n category: 'Flags'\n },\n {\n emoji: '🇻🇳',\n names: ['vietnam'],\n tags: [],\n description: 'flag: Vietnam',\n category: 'Flags'\n },\n {\n emoji: '🇻🇺',\n names: ['vanuatu'],\n tags: [],\n description: 'flag: Vanuatu',\n category: 'Flags'\n },\n {\n emoji: '🇼🇫',\n names: ['wallis_futuna'],\n tags: [],\n description: 'flag: Wallis & Futuna',\n category: 'Flags'\n },\n {\n emoji: '🇼🇸',\n names: ['samoa'],\n tags: [],\n description: 'flag: Samoa',\n category: 'Flags'\n },\n {\n emoji: '🇽🇰',\n names: ['kosovo'],\n tags: [],\n description: 'flag: Kosovo',\n category: 'Flags'\n },\n {\n emoji: '🇾🇪',\n names: ['yemen'],\n tags: [],\n description: 'flag: Yemen',\n category: 'Flags'\n },\n {\n emoji: '🇾🇹',\n names: ['mayotte'],\n tags: [],\n description: 'flag: Mayotte',\n category: 'Flags'\n },\n {\n emoji: '🇿🇦',\n names: ['south_africa'],\n tags: [],\n description: 'flag: South Africa',\n category: 'Flags'\n },\n {\n emoji: '🇿🇲',\n names: ['zambia'],\n tags: [],\n description: 'flag: Zambia',\n category: 'Flags'\n },\n {\n emoji: '🇿🇼',\n names: ['zimbabwe'],\n tags: [],\n description: 'flag: Zimbabwe',\n category: 'Flags'\n },\n {\n emoji: '🏴',\n names: ['england'],\n tags: [],\n description: 'flag: England',\n category: 'Flags'\n },\n {\n emoji: '🏴',\n names: ['scotland'],\n tags: [],\n description: 'flag: Scotland',\n category: 'Flags'\n },\n {\n emoji: '🏴',\n names: ['wales'],\n tags: [],\n description: 'flag: Wales',\n category: 'Flags'\n }\n]\n\n/**\n * Map of names to emoji.\n *\n * @type {Record}\n */\nexport const nameToEmoji = {\n 100: '💯',\n 1234: '🔢',\n grinning: '😀',\n smiley: '😃',\n smile: '😄',\n grin: '😁',\n laughing: '😆',\n satisfied: '😆',\n sweat_smile: '😅',\n rofl: '🤣',\n joy: '😂',\n slightly_smiling_face: '🙂',\n upside_down_face: '🙃',\n wink: '😉',\n blush: '😊',\n innocent: '😇',\n smiling_face_with_three_hearts: '🥰',\n heart_eyes: '😍',\n star_struck: '🤩',\n kissing_heart: '😘',\n kissing: '😗',\n relaxed: '☺️',\n kissing_closed_eyes: '😚',\n kissing_smiling_eyes: '😙',\n smiling_face_with_tear: '🥲',\n yum: '😋',\n stuck_out_tongue: '😛',\n stuck_out_tongue_winking_eye: '😜',\n zany_face: '🤪',\n stuck_out_tongue_closed_eyes: '😝',\n money_mouth_face: '🤑',\n hugs: '🤗',\n hand_over_mouth: '🤭',\n shushing_face: '🤫',\n thinking: '🤔',\n zipper_mouth_face: '🤐',\n raised_eyebrow: '🤨',\n neutral_face: '😐',\n expressionless: '😑',\n no_mouth: '😶',\n face_in_clouds: '😶🌫️',\n smirk: '😏',\n unamused: '😒',\n roll_eyes: '🙄',\n grimacing: '😬',\n face_exhaling: '😮💨',\n lying_face: '🤥',\n relieved: '😌',\n pensive: '😔',\n sleepy: '😪',\n drooling_face: '🤤',\n sleeping: '😴',\n mask: '😷',\n face_with_thermometer: '🤒',\n face_with_head_bandage: '🤕',\n nauseated_face: '🤢',\n vomiting_face: '🤮',\n sneezing_face: '🤧',\n hot_face: '🥵',\n cold_face: '🥶',\n woozy_face: '🥴',\n dizzy_face: '😵',\n face_with_spiral_eyes: '😵💫',\n exploding_head: '🤯',\n cowboy_hat_face: '🤠',\n partying_face: '🥳',\n disguised_face: '🥸',\n sunglasses: '😎',\n nerd_face: '🤓',\n monocle_face: '🧐',\n confused: '😕',\n worried: '😟',\n slightly_frowning_face: '🙁',\n frowning_face: '☹️',\n open_mouth: '😮',\n hushed: '😯',\n astonished: '😲',\n flushed: '😳',\n pleading_face: '🥺',\n frowning: '😦',\n anguished: '😧',\n fearful: '😨',\n cold_sweat: '😰',\n disappointed_relieved: '😥',\n cry: '😢',\n sob: '😭',\n scream: '😱',\n confounded: '😖',\n persevere: '😣',\n disappointed: '😞',\n sweat: '😓',\n weary: '😩',\n tired_face: '😫',\n yawning_face: '🥱',\n triumph: '😤',\n rage: '😡',\n pout: '😡',\n angry: '😠',\n cursing_face: '🤬',\n smiling_imp: '😈',\n imp: '👿',\n skull: '💀',\n skull_and_crossbones: '☠️',\n hankey: '💩',\n poop: '💩',\n shit: '💩',\n clown_face: '🤡',\n japanese_ogre: '👹',\n japanese_goblin: '👺',\n ghost: '👻',\n alien: '👽',\n space_invader: '👾',\n robot: '🤖',\n smiley_cat: '😺',\n smile_cat: '😸',\n joy_cat: '😹',\n heart_eyes_cat: '😻',\n smirk_cat: '😼',\n kissing_cat: '😽',\n scream_cat: '🙀',\n crying_cat_face: '😿',\n pouting_cat: '😾',\n see_no_evil: '🙈',\n hear_no_evil: '🙉',\n speak_no_evil: '🙊',\n kiss: '💋',\n love_letter: '💌',\n cupid: '💘',\n gift_heart: '💝',\n sparkling_heart: '💖',\n heartpulse: '💗',\n heartbeat: '💓',\n revolving_hearts: '💞',\n two_hearts: '💕',\n heart_decoration: '💟',\n heavy_heart_exclamation: '❣️',\n broken_heart: '💔',\n heart_on_fire: '❤️🔥',\n mending_heart: '❤️🩹',\n heart: '❤️',\n orange_heart: '🧡',\n yellow_heart: '💛',\n green_heart: '💚',\n blue_heart: '💙',\n purple_heart: '💜',\n brown_heart: '🤎',\n black_heart: '🖤',\n white_heart: '🤍',\n anger: '💢',\n boom: '💥',\n collision: '💥',\n dizzy: '💫',\n sweat_drops: '💦',\n dash: '💨',\n hole: '🕳️',\n bomb: '💣',\n speech_balloon: '💬',\n eye_speech_bubble: '👁️🗨️',\n left_speech_bubble: '🗨️',\n right_anger_bubble: '🗯️',\n thought_balloon: '💭',\n zzz: '💤',\n wave: '👋',\n raised_back_of_hand: '🤚',\n raised_hand_with_fingers_splayed: '🖐️',\n hand: '✋',\n raised_hand: '✋',\n vulcan_salute: '🖖',\n ok_hand: '👌',\n pinched_fingers: '🤌',\n pinching_hand: '🤏',\n v: '✌️',\n crossed_fingers: '🤞',\n love_you_gesture: '🤟',\n metal: '🤘',\n call_me_hand: '🤙',\n point_left: '👈',\n point_right: '👉',\n point_up_2: '👆',\n middle_finger: '🖕',\n fu: '🖕',\n point_down: '👇',\n point_up: '☝️',\n '+1': '👍',\n thumbsup: '👍',\n '-1': '👎',\n thumbsdown: '👎',\n fist_raised: '✊',\n fist: '✊',\n fist_oncoming: '👊',\n facepunch: '👊',\n punch: '👊',\n fist_left: '🤛',\n fist_right: '🤜',\n clap: '👏',\n raised_hands: '🙌',\n open_hands: '👐',\n palms_up_together: '🤲',\n handshake: '🤝',\n pray: '🙏',\n writing_hand: '✍️',\n nail_care: '💅',\n selfie: '🤳',\n muscle: '💪',\n mechanical_arm: '🦾',\n mechanical_leg: '🦿',\n leg: '🦵',\n foot: '🦶',\n ear: '👂',\n ear_with_hearing_aid: '🦻',\n nose: '👃',\n brain: '🧠',\n anatomical_heart: '🫀',\n lungs: '🫁',\n tooth: '🦷',\n bone: '🦴',\n eyes: '👀',\n eye: '👁️',\n tongue: '👅',\n lips: '👄',\n baby: '👶',\n child: '🧒',\n boy: '👦',\n girl: '👧',\n adult: '🧑',\n blond_haired_person: '👱',\n man: '👨',\n bearded_person: '🧔',\n man_beard: '🧔♂️',\n woman_beard: '🧔♀️',\n red_haired_man: '👨🦰',\n curly_haired_man: '👨🦱',\n white_haired_man: '👨🦳',\n bald_man: '👨🦲',\n woman: '👩',\n red_haired_woman: '👩🦰',\n person_red_hair: '🧑🦰',\n curly_haired_woman: '👩🦱',\n person_curly_hair: '🧑🦱',\n white_haired_woman: '👩🦳',\n person_white_hair: '🧑🦳',\n bald_woman: '👩🦲',\n person_bald: '🧑🦲',\n blond_haired_woman: '👱♀️',\n blonde_woman: '👱♀️',\n blond_haired_man: '👱♂️',\n older_adult: '🧓',\n older_man: '👴',\n older_woman: '👵',\n frowning_person: '🙍',\n frowning_man: '🙍♂️',\n frowning_woman: '🙍♀️',\n pouting_face: '🙎',\n pouting_man: '🙎♂️',\n pouting_woman: '🙎♀️',\n no_good: '🙅',\n no_good_man: '🙅♂️',\n ng_man: '🙅♂️',\n no_good_woman: '🙅♀️',\n ng_woman: '🙅♀️',\n ok_person: '🙆',\n ok_man: '🙆♂️',\n ok_woman: '🙆♀️',\n tipping_hand_person: '💁',\n information_desk_person: '💁',\n tipping_hand_man: '💁♂️',\n sassy_man: '💁♂️',\n tipping_hand_woman: '💁♀️',\n sassy_woman: '💁♀️',\n raising_hand: '🙋',\n raising_hand_man: '🙋♂️',\n raising_hand_woman: '🙋♀️',\n deaf_person: '🧏',\n deaf_man: '🧏♂️',\n deaf_woman: '🧏♀️',\n bow: '🙇',\n bowing_man: '🙇♂️',\n bowing_woman: '🙇♀️',\n facepalm: '🤦',\n man_facepalming: '🤦♂️',\n woman_facepalming: '🤦♀️',\n shrug: '🤷',\n man_shrugging: '🤷♂️',\n woman_shrugging: '🤷♀️',\n health_worker: '🧑⚕️',\n man_health_worker: '👨⚕️',\n woman_health_worker: '👩⚕️',\n student: '🧑🎓',\n man_student: '👨🎓',\n woman_student: '👩🎓',\n teacher: '🧑🏫',\n man_teacher: '👨🏫',\n woman_teacher: '👩🏫',\n judge: '🧑⚖️',\n man_judge: '👨⚖️',\n woman_judge: '👩⚖️',\n farmer: '🧑🌾',\n man_farmer: '👨🌾',\n woman_farmer: '👩🌾',\n cook: '🧑🍳',\n man_cook: '👨🍳',\n woman_cook: '👩🍳',\n mechanic: '🧑🔧',\n man_mechanic: '👨🔧',\n woman_mechanic: '👩🔧',\n factory_worker: '🧑🏭',\n man_factory_worker: '👨🏭',\n woman_factory_worker: '👩🏭',\n office_worker: '🧑💼',\n man_office_worker: '👨💼',\n woman_office_worker: '👩💼',\n scientist: '🧑🔬',\n man_scientist: '👨🔬',\n woman_scientist: '👩🔬',\n technologist: '🧑💻',\n man_technologist: '👨💻',\n woman_technologist: '👩💻',\n singer: '🧑🎤',\n man_singer: '👨🎤',\n woman_singer: '👩🎤',\n artist: '🧑🎨',\n man_artist: '👨🎨',\n woman_artist: '👩🎨',\n pilot: '🧑✈️',\n man_pilot: '👨✈️',\n woman_pilot: '👩✈️',\n astronaut: '🧑🚀',\n man_astronaut: '👨🚀',\n woman_astronaut: '👩🚀',\n firefighter: '🧑🚒',\n man_firefighter: '👨🚒',\n woman_firefighter: '👩🚒',\n police_officer: '👮',\n cop: '👮',\n policeman: '👮♂️',\n policewoman: '👮♀️',\n detective: '🕵️',\n male_detective: '🕵️♂️',\n female_detective: '🕵️♀️',\n guard: '💂',\n guardsman: '💂♂️',\n guardswoman: '💂♀️',\n ninja: '🥷',\n construction_worker: '👷',\n construction_worker_man: '👷♂️',\n construction_worker_woman: '👷♀️',\n prince: '🤴',\n princess: '👸',\n person_with_turban: '👳',\n man_with_turban: '👳♂️',\n woman_with_turban: '👳♀️',\n man_with_gua_pi_mao: '👲',\n woman_with_headscarf: '🧕',\n person_in_tuxedo: '🤵',\n man_in_tuxedo: '🤵♂️',\n woman_in_tuxedo: '🤵♀️',\n person_with_veil: '👰',\n man_with_veil: '👰♂️',\n woman_with_veil: '👰♀️',\n bride_with_veil: '👰♀️',\n pregnant_woman: '🤰',\n breast_feeding: '🤱',\n woman_feeding_baby: '👩🍼',\n man_feeding_baby: '👨🍼',\n person_feeding_baby: '🧑🍼',\n angel: '👼',\n santa: '🎅',\n mrs_claus: '🤶',\n mx_claus: '🧑🎄',\n superhero: '🦸',\n superhero_man: '🦸♂️',\n superhero_woman: '🦸♀️',\n supervillain: '🦹',\n supervillain_man: '🦹♂️',\n supervillain_woman: '🦹♀️',\n mage: '🧙',\n mage_man: '🧙♂️',\n mage_woman: '🧙♀️',\n fairy: '🧚',\n fairy_man: '🧚♂️',\n fairy_woman: '🧚♀️',\n vampire: '🧛',\n vampire_man: '🧛♂️',\n vampire_woman: '🧛♀️',\n merperson: '🧜',\n merman: '🧜♂️',\n mermaid: '🧜♀️',\n elf: '🧝',\n elf_man: '🧝♂️',\n elf_woman: '🧝♀️',\n genie: '🧞',\n genie_man: '🧞♂️',\n genie_woman: '🧞♀️',\n zombie: '🧟',\n zombie_man: '🧟♂️',\n zombie_woman: '🧟♀️',\n massage: '💆',\n massage_man: '💆♂️',\n massage_woman: '💆♀️',\n haircut: '💇',\n haircut_man: '💇♂️',\n haircut_woman: '💇♀️',\n walking: '🚶',\n walking_man: '🚶♂️',\n walking_woman: '🚶♀️',\n standing_person: '🧍',\n standing_man: '🧍♂️',\n standing_woman: '🧍♀️',\n kneeling_person: '🧎',\n kneeling_man: '🧎♂️',\n kneeling_woman: '🧎♀️',\n person_with_probing_cane: '🧑🦯',\n man_with_probing_cane: '👨🦯',\n woman_with_probing_cane: '👩🦯',\n person_in_motorized_wheelchair: '🧑🦼',\n man_in_motorized_wheelchair: '👨🦼',\n woman_in_motorized_wheelchair: '👩🦼',\n person_in_manual_wheelchair: '🧑🦽',\n man_in_manual_wheelchair: '👨🦽',\n woman_in_manual_wheelchair: '👩🦽',\n runner: '🏃',\n running: '🏃',\n running_man: '🏃♂️',\n running_woman: '🏃♀️',\n woman_dancing: '💃',\n dancer: '💃',\n man_dancing: '🕺',\n business_suit_levitating: '🕴️',\n dancers: '👯',\n dancing_men: '👯♂️',\n dancing_women: '👯♀️',\n sauna_person: '🧖',\n sauna_man: '🧖♂️',\n sauna_woman: '🧖♀️',\n climbing: '🧗',\n climbing_man: '🧗♂️',\n climbing_woman: '🧗♀️',\n person_fencing: '🤺',\n horse_racing: '🏇',\n skier: '⛷️',\n snowboarder: '🏂',\n golfing: '🏌️',\n golfing_man: '🏌️♂️',\n golfing_woman: '🏌️♀️',\n surfer: '🏄',\n surfing_man: '🏄♂️',\n surfing_woman: '🏄♀️',\n rowboat: '🚣',\n rowing_man: '🚣♂️',\n rowing_woman: '🚣♀️',\n swimmer: '🏊',\n swimming_man: '🏊♂️',\n swimming_woman: '🏊♀️',\n bouncing_ball_person: '⛹️',\n bouncing_ball_man: '⛹️♂️',\n basketball_man: '⛹️♂️',\n bouncing_ball_woman: '⛹️♀️',\n basketball_woman: '⛹️♀️',\n weight_lifting: '🏋️',\n weight_lifting_man: '🏋️♂️',\n weight_lifting_woman: '🏋️♀️',\n bicyclist: '🚴',\n biking_man: '🚴♂️',\n biking_woman: '🚴♀️',\n mountain_bicyclist: '🚵',\n mountain_biking_man: '🚵♂️',\n mountain_biking_woman: '🚵♀️',\n cartwheeling: '🤸',\n man_cartwheeling: '🤸♂️',\n woman_cartwheeling: '🤸♀️',\n wrestling: '🤼',\n men_wrestling: '🤼♂️',\n women_wrestling: '🤼♀️',\n water_polo: '🤽',\n man_playing_water_polo: '🤽♂️',\n woman_playing_water_polo: '🤽♀️',\n handball_person: '🤾',\n man_playing_handball: '🤾♂️',\n woman_playing_handball: '🤾♀️',\n juggling_person: '🤹',\n man_juggling: '🤹♂️',\n woman_juggling: '🤹♀️',\n lotus_position: '🧘',\n lotus_position_man: '🧘♂️',\n lotus_position_woman: '🧘♀️',\n bath: '🛀',\n sleeping_bed: '🛌',\n people_holding_hands: '🧑🤝🧑',\n two_women_holding_hands: '👭',\n couple: '👫',\n two_men_holding_hands: '👬',\n couplekiss: '💏',\n couplekiss_man_woman: '👩❤️💋👨',\n couplekiss_man_man: '👨❤️💋👨',\n couplekiss_woman_woman: '👩❤️💋👩',\n couple_with_heart: '💑',\n couple_with_heart_woman_man: '👩❤️👨',\n couple_with_heart_man_man: '👨❤️👨',\n couple_with_heart_woman_woman: '👩❤️👩',\n family: '👪',\n family_man_woman_boy: '👨👩👦',\n family_man_woman_girl: '👨👩👧',\n family_man_woman_girl_boy: '👨👩👧👦',\n family_man_woman_boy_boy: '👨👩👦👦',\n family_man_woman_girl_girl: '👨👩👧👧',\n family_man_man_boy: '👨👨👦',\n family_man_man_girl: '👨👨👧',\n family_man_man_girl_boy: '👨👨👧👦',\n family_man_man_boy_boy: '👨👨👦👦',\n family_man_man_girl_girl: '👨👨👧👧',\n family_woman_woman_boy: '👩👩👦',\n family_woman_woman_girl: '👩👩👧',\n family_woman_woman_girl_boy: '👩👩👧👦',\n family_woman_woman_boy_boy: '👩👩👦👦',\n family_woman_woman_girl_girl: '👩👩👧👧',\n family_man_boy: '👨👦',\n family_man_boy_boy: '👨👦👦',\n family_man_girl: '👨👧',\n family_man_girl_boy: '👨👧👦',\n family_man_girl_girl: '👨👧👧',\n family_woman_boy: '👩👦',\n family_woman_boy_boy: '👩👦👦',\n family_woman_girl: '👩👧',\n family_woman_girl_boy: '👩👧👦',\n family_woman_girl_girl: '👩👧👧',\n speaking_head: '🗣️',\n bust_in_silhouette: '👤',\n busts_in_silhouette: '👥',\n people_hugging: '🫂',\n footprints: '👣',\n monkey_face: '🐵',\n monkey: '🐒',\n gorilla: '🦍',\n orangutan: '🦧',\n dog: '🐶',\n dog2: '🐕',\n guide_dog: '🦮',\n service_dog: '🐕🦺',\n poodle: '🐩',\n wolf: '🐺',\n fox_face: '🦊',\n raccoon: '🦝',\n cat: '🐱',\n cat2: '🐈',\n black_cat: '🐈⬛',\n lion: '🦁',\n tiger: '🐯',\n tiger2: '🐅',\n leopard: '🐆',\n horse: '🐴',\n racehorse: '🐎',\n unicorn: '🦄',\n zebra: '🦓',\n deer: '🦌',\n bison: '🦬',\n cow: '🐮',\n ox: '🐂',\n water_buffalo: '🐃',\n cow2: '🐄',\n pig: '🐷',\n pig2: '🐖',\n boar: '🐗',\n pig_nose: '🐽',\n ram: '🐏',\n sheep: '🐑',\n goat: '🐐',\n dromedary_camel: '🐪',\n camel: '🐫',\n llama: '🦙',\n giraffe: '🦒',\n elephant: '🐘',\n mammoth: '🦣',\n rhinoceros: '🦏',\n hippopotamus: '🦛',\n mouse: '🐭',\n mouse2: '🐁',\n rat: '🐀',\n hamster: '🐹',\n rabbit: '🐰',\n rabbit2: '🐇',\n chipmunk: '🐿️',\n beaver: '🦫',\n hedgehog: '🦔',\n bat: '🦇',\n bear: '🐻',\n polar_bear: '🐻❄️',\n koala: '🐨',\n panda_face: '🐼',\n sloth: '🦥',\n otter: '🦦',\n skunk: '🦨',\n kangaroo: '🦘',\n badger: '🦡',\n feet: '🐾',\n paw_prints: '🐾',\n turkey: '🦃',\n chicken: '🐔',\n rooster: '🐓',\n hatching_chick: '🐣',\n baby_chick: '🐤',\n hatched_chick: '🐥',\n bird: '🐦',\n penguin: '🐧',\n dove: '🕊️',\n eagle: '🦅',\n duck: '🦆',\n swan: '🦢',\n owl: '🦉',\n dodo: '🦤',\n feather: '🪶',\n flamingo: '🦩',\n peacock: '🦚',\n parrot: '🦜',\n frog: '🐸',\n crocodile: '🐊',\n turtle: '🐢',\n lizard: '🦎',\n snake: '🐍',\n dragon_face: '🐲',\n dragon: '🐉',\n sauropod: '🦕',\n 't-rex': '🦖',\n whale: '🐳',\n whale2: '🐋',\n dolphin: '🐬',\n flipper: '🐬',\n seal: '🦭',\n fish: '🐟',\n tropical_fish: '🐠',\n blowfish: '🐡',\n shark: '🦈',\n octopus: '🐙',\n shell: '🐚',\n snail: '🐌',\n butterfly: '🦋',\n bug: '🐛',\n ant: '🐜',\n bee: '🐝',\n honeybee: '🐝',\n beetle: '🪲',\n lady_beetle: '🐞',\n cricket: '🦗',\n cockroach: '🪳',\n spider: '🕷️',\n spider_web: '🕸️',\n scorpion: '🦂',\n mosquito: '🦟',\n fly: '🪰',\n worm: '🪱',\n microbe: '🦠',\n bouquet: '💐',\n cherry_blossom: '🌸',\n white_flower: '💮',\n rosette: '🏵️',\n rose: '🌹',\n wilted_flower: '🥀',\n hibiscus: '🌺',\n sunflower: '🌻',\n blossom: '🌼',\n tulip: '🌷',\n seedling: '🌱',\n potted_plant: '🪴',\n evergreen_tree: '🌲',\n deciduous_tree: '🌳',\n palm_tree: '🌴',\n cactus: '🌵',\n ear_of_rice: '🌾',\n herb: '🌿',\n shamrock: '☘️',\n four_leaf_clover: '🍀',\n maple_leaf: '🍁',\n fallen_leaf: '🍂',\n leaves: '🍃',\n grapes: '🍇',\n melon: '🍈',\n watermelon: '🍉',\n tangerine: '🍊',\n orange: '🍊',\n mandarin: '🍊',\n lemon: '🍋',\n banana: '🍌',\n pineapple: '🍍',\n mango: '🥭',\n apple: '🍎',\n green_apple: '🍏',\n pear: '🍐',\n peach: '🍑',\n cherries: '🍒',\n strawberry: '🍓',\n blueberries: '🫐',\n kiwi_fruit: '🥝',\n tomato: '🍅',\n olive: '🫒',\n coconut: '🥥',\n avocado: '🥑',\n eggplant: '🍆',\n potato: '🥔',\n carrot: '🥕',\n corn: '🌽',\n hot_pepper: '🌶️',\n bell_pepper: '🫑',\n cucumber: '🥒',\n leafy_green: '🥬',\n broccoli: '🥦',\n garlic: '🧄',\n onion: '🧅',\n mushroom: '🍄',\n peanuts: '🥜',\n chestnut: '🌰',\n bread: '🍞',\n croissant: '🥐',\n baguette_bread: '🥖',\n flatbread: '🫓',\n pretzel: '🥨',\n bagel: '🥯',\n pancakes: '🥞',\n waffle: '🧇',\n cheese: '🧀',\n meat_on_bone: '🍖',\n poultry_leg: '🍗',\n cut_of_meat: '🥩',\n bacon: '🥓',\n hamburger: '🍔',\n fries: '🍟',\n pizza: '🍕',\n hotdog: '🌭',\n sandwich: '🥪',\n taco: '🌮',\n burrito: '🌯',\n tamale: '🫔',\n stuffed_flatbread: '🥙',\n falafel: '🧆',\n egg: '🥚',\n fried_egg: '🍳',\n shallow_pan_of_food: '🥘',\n stew: '🍲',\n fondue: '🫕',\n bowl_with_spoon: '🥣',\n green_salad: '🥗',\n popcorn: '🍿',\n butter: '🧈',\n salt: '🧂',\n canned_food: '🥫',\n bento: '🍱',\n rice_cracker: '🍘',\n rice_ball: '🍙',\n rice: '🍚',\n curry: '🍛',\n ramen: '🍜',\n spaghetti: '🍝',\n sweet_potato: '🍠',\n oden: '🍢',\n sushi: '🍣',\n fried_shrimp: '🍤',\n fish_cake: '🍥',\n moon_cake: '🥮',\n dango: '🍡',\n dumpling: '🥟',\n fortune_cookie: '🥠',\n takeout_box: '🥡',\n crab: '🦀',\n lobster: '🦞',\n shrimp: '🦐',\n squid: '🦑',\n oyster: '🦪',\n icecream: '🍦',\n shaved_ice: '🍧',\n ice_cream: '🍨',\n doughnut: '🍩',\n cookie: '🍪',\n birthday: '🎂',\n cake: '🍰',\n cupcake: '🧁',\n pie: '🥧',\n chocolate_bar: '🍫',\n candy: '🍬',\n lollipop: '🍭',\n custard: '🍮',\n honey_pot: '🍯',\n baby_bottle: '🍼',\n milk_glass: '🥛',\n coffee: '☕',\n teapot: '🫖',\n tea: '🍵',\n sake: '🍶',\n champagne: '🍾',\n wine_glass: '🍷',\n cocktail: '🍸',\n tropical_drink: '🍹',\n beer: '🍺',\n beers: '🍻',\n clinking_glasses: '🥂',\n tumbler_glass: '🥃',\n cup_with_straw: '🥤',\n bubble_tea: '🧋',\n beverage_box: '🧃',\n mate: '🧉',\n ice_cube: '🧊',\n chopsticks: '🥢',\n plate_with_cutlery: '🍽️',\n fork_and_knife: '🍴',\n spoon: '🥄',\n hocho: '🔪',\n knife: '🔪',\n amphora: '🏺',\n earth_africa: '🌍',\n earth_americas: '🌎',\n earth_asia: '🌏',\n globe_with_meridians: '🌐',\n world_map: '🗺️',\n japan: '🗾',\n compass: '🧭',\n mountain_snow: '🏔️',\n mountain: '⛰️',\n volcano: '🌋',\n mount_fuji: '🗻',\n camping: '🏕️',\n beach_umbrella: '🏖️',\n desert: '🏜️',\n desert_island: '🏝️',\n national_park: '🏞️',\n stadium: '🏟️',\n classical_building: '🏛️',\n building_construction: '🏗️',\n bricks: '🧱',\n rock: '🪨',\n wood: '🪵',\n hut: '🛖',\n houses: '🏘️',\n derelict_house: '🏚️',\n house: '🏠',\n house_with_garden: '🏡',\n office: '🏢',\n post_office: '🏣',\n european_post_office: '🏤',\n hospital: '🏥',\n bank: '🏦',\n hotel: '🏨',\n love_hotel: '🏩',\n convenience_store: '🏪',\n school: '🏫',\n department_store: '🏬',\n factory: '🏭',\n japanese_castle: '🏯',\n european_castle: '🏰',\n wedding: '💒',\n tokyo_tower: '🗼',\n statue_of_liberty: '🗽',\n church: '⛪',\n mosque: '🕌',\n hindu_temple: '🛕',\n synagogue: '🕍',\n shinto_shrine: '⛩️',\n kaaba: '🕋',\n fountain: '⛲',\n tent: '⛺',\n foggy: '🌁',\n night_with_stars: '🌃',\n cityscape: '🏙️',\n sunrise_over_mountains: '🌄',\n sunrise: '🌅',\n city_sunset: '🌆',\n city_sunrise: '🌇',\n bridge_at_night: '🌉',\n hotsprings: '♨️',\n carousel_horse: '🎠',\n ferris_wheel: '🎡',\n roller_coaster: '🎢',\n barber: '💈',\n circus_tent: '🎪',\n steam_locomotive: '🚂',\n railway_car: '🚃',\n bullettrain_side: '🚄',\n bullettrain_front: '🚅',\n train2: '🚆',\n metro: '🚇',\n light_rail: '🚈',\n station: '🚉',\n tram: '🚊',\n monorail: '🚝',\n mountain_railway: '🚞',\n train: '🚋',\n bus: '🚌',\n oncoming_bus: '🚍',\n trolleybus: '🚎',\n minibus: '🚐',\n ambulance: '🚑',\n fire_engine: '🚒',\n police_car: '🚓',\n oncoming_police_car: '🚔',\n taxi: '🚕',\n oncoming_taxi: '🚖',\n car: '🚗',\n red_car: '🚗',\n oncoming_automobile: '🚘',\n blue_car: '🚙',\n pickup_truck: '🛻',\n truck: '🚚',\n articulated_lorry: '🚛',\n tractor: '🚜',\n racing_car: '🏎️',\n motorcycle: '🏍️',\n motor_scooter: '🛵',\n manual_wheelchair: '🦽',\n motorized_wheelchair: '🦼',\n auto_rickshaw: '🛺',\n bike: '🚲',\n kick_scooter: '🛴',\n skateboard: '🛹',\n roller_skate: '🛼',\n busstop: '🚏',\n motorway: '🛣️',\n railway_track: '🛤️',\n oil_drum: '🛢️',\n fuelpump: '⛽',\n rotating_light: '🚨',\n traffic_light: '🚥',\n vertical_traffic_light: '🚦',\n stop_sign: '🛑',\n construction: '🚧',\n anchor: '⚓',\n boat: '⛵',\n sailboat: '⛵',\n canoe: '🛶',\n speedboat: '🚤',\n passenger_ship: '🛳️',\n ferry: '⛴️',\n motor_boat: '🛥️',\n ship: '🚢',\n airplane: '✈️',\n small_airplane: '🛩️',\n flight_departure: '🛫',\n flight_arrival: '🛬',\n parachute: '🪂',\n seat: '💺',\n helicopter: '🚁',\n suspension_railway: '🚟',\n mountain_cableway: '🚠',\n aerial_tramway: '🚡',\n artificial_satellite: '🛰️',\n rocket: '🚀',\n flying_saucer: '🛸',\n bellhop_bell: '🛎️',\n luggage: '🧳',\n hourglass: '⌛',\n hourglass_flowing_sand: '⏳',\n watch: '⌚',\n alarm_clock: '⏰',\n stopwatch: '⏱️',\n timer_clock: '⏲️',\n mantelpiece_clock: '🕰️',\n clock12: '🕛',\n clock1230: '🕧',\n clock1: '🕐',\n clock130: '🕜',\n clock2: '🕑',\n clock230: '🕝',\n clock3: '🕒',\n clock330: '🕞',\n clock4: '🕓',\n clock430: '🕟',\n clock5: '🕔',\n clock530: '🕠',\n clock6: '🕕',\n clock630: '🕡',\n clock7: '🕖',\n clock730: '🕢',\n clock8: '🕗',\n clock830: '🕣',\n clock9: '🕘',\n clock930: '🕤',\n clock10: '🕙',\n clock1030: '🕥',\n clock11: '🕚',\n clock1130: '🕦',\n new_moon: '🌑',\n waxing_crescent_moon: '🌒',\n first_quarter_moon: '🌓',\n moon: '🌔',\n waxing_gibbous_moon: '🌔',\n full_moon: '🌕',\n waning_gibbous_moon: '🌖',\n last_quarter_moon: '🌗',\n waning_crescent_moon: '🌘',\n crescent_moon: '🌙',\n new_moon_with_face: '🌚',\n first_quarter_moon_with_face: '🌛',\n last_quarter_moon_with_face: '🌜',\n thermometer: '🌡️',\n sunny: '☀️',\n full_moon_with_face: '🌝',\n sun_with_face: '🌞',\n ringed_planet: '🪐',\n star: '⭐',\n star2: '🌟',\n stars: '🌠',\n milky_way: '🌌',\n cloud: '☁️',\n partly_sunny: '⛅',\n cloud_with_lightning_and_rain: '⛈️',\n sun_behind_small_cloud: '🌤️',\n sun_behind_large_cloud: '🌥️',\n sun_behind_rain_cloud: '🌦️',\n cloud_with_rain: '🌧️',\n cloud_with_snow: '🌨️',\n cloud_with_lightning: '🌩️',\n tornado: '🌪️',\n fog: '🌫️',\n wind_face: '🌬️',\n cyclone: '🌀',\n rainbow: '🌈',\n closed_umbrella: '🌂',\n open_umbrella: '☂️',\n umbrella: '☔',\n parasol_on_ground: '⛱️',\n zap: '⚡',\n snowflake: '❄️',\n snowman_with_snow: '☃️',\n snowman: '⛄',\n comet: '☄️',\n fire: '🔥',\n droplet: '💧',\n ocean: '🌊',\n jack_o_lantern: '🎃',\n christmas_tree: '🎄',\n fireworks: '🎆',\n sparkler: '🎇',\n firecracker: '🧨',\n sparkles: '✨',\n balloon: '🎈',\n tada: '🎉',\n confetti_ball: '🎊',\n tanabata_tree: '🎋',\n bamboo: '🎍',\n dolls: '🎎',\n flags: '🎏',\n wind_chime: '🎐',\n rice_scene: '🎑',\n red_envelope: '🧧',\n ribbon: '🎀',\n gift: '🎁',\n reminder_ribbon: '🎗️',\n tickets: '🎟️',\n ticket: '🎫',\n medal_military: '🎖️',\n trophy: '🏆',\n medal_sports: '🏅',\n '1st_place_medal': '🥇',\n '2nd_place_medal': '🥈',\n '3rd_place_medal': '🥉',\n soccer: '⚽',\n baseball: '⚾',\n softball: '🥎',\n basketball: '🏀',\n volleyball: '🏐',\n football: '🏈',\n rugby_football: '🏉',\n tennis: '🎾',\n flying_disc: '🥏',\n bowling: '🎳',\n cricket_game: '🏏',\n field_hockey: '🏑',\n ice_hockey: '🏒',\n lacrosse: '🥍',\n ping_pong: '🏓',\n badminton: '🏸',\n boxing_glove: '🥊',\n martial_arts_uniform: '🥋',\n goal_net: '🥅',\n golf: '⛳',\n ice_skate: '⛸️',\n fishing_pole_and_fish: '🎣',\n diving_mask: '🤿',\n running_shirt_with_sash: '🎽',\n ski: '🎿',\n sled: '🛷',\n curling_stone: '🥌',\n dart: '🎯',\n yo_yo: '🪀',\n kite: '🪁',\n '8ball': '🎱',\n crystal_ball: '🔮',\n magic_wand: '🪄',\n nazar_amulet: '🧿',\n video_game: '🎮',\n joystick: '🕹️',\n slot_machine: '🎰',\n game_die: '🎲',\n jigsaw: '🧩',\n teddy_bear: '🧸',\n pinata: '🪅',\n nesting_dolls: '🪆',\n spades: '♠️',\n hearts: '♥️',\n diamonds: '♦️',\n clubs: '♣️',\n chess_pawn: '♟️',\n black_joker: '🃏',\n mahjong: '🀄',\n flower_playing_cards: '🎴',\n performing_arts: '🎭',\n framed_picture: '🖼️',\n art: '🎨',\n thread: '🧵',\n sewing_needle: '🪡',\n yarn: '🧶',\n knot: '🪢',\n eyeglasses: '👓',\n dark_sunglasses: '🕶️',\n goggles: '🥽',\n lab_coat: '🥼',\n safety_vest: '🦺',\n necktie: '👔',\n shirt: '👕',\n tshirt: '👕',\n jeans: '👖',\n scarf: '🧣',\n gloves: '🧤',\n coat: '🧥',\n socks: '🧦',\n dress: '👗',\n kimono: '👘',\n sari: '🥻',\n one_piece_swimsuit: '🩱',\n swim_brief: '🩲',\n shorts: '🩳',\n bikini: '👙',\n womans_clothes: '👚',\n purse: '👛',\n handbag: '👜',\n pouch: '👝',\n shopping: '🛍️',\n school_satchel: '🎒',\n thong_sandal: '🩴',\n mans_shoe: '👞',\n shoe: '👞',\n athletic_shoe: '👟',\n hiking_boot: '🥾',\n flat_shoe: '🥿',\n high_heel: '👠',\n sandal: '👡',\n ballet_shoes: '🩰',\n boot: '👢',\n crown: '👑',\n womans_hat: '👒',\n tophat: '🎩',\n mortar_board: '🎓',\n billed_cap: '🧢',\n military_helmet: '🪖',\n rescue_worker_helmet: '⛑️',\n prayer_beads: '📿',\n lipstick: '💄',\n ring: '💍',\n gem: '💎',\n mute: '🔇',\n speaker: '🔈',\n sound: '🔉',\n loud_sound: '🔊',\n loudspeaker: '📢',\n mega: '📣',\n postal_horn: '📯',\n bell: '🔔',\n no_bell: '🔕',\n musical_score: '🎼',\n musical_note: '🎵',\n notes: '🎶',\n studio_microphone: '🎙️',\n level_slider: '🎚️',\n control_knobs: '🎛️',\n microphone: '🎤',\n headphones: '🎧',\n radio: '📻',\n saxophone: '🎷',\n accordion: '🪗',\n guitar: '🎸',\n musical_keyboard: '🎹',\n trumpet: '🎺',\n violin: '🎻',\n banjo: '🪕',\n drum: '🥁',\n long_drum: '🪘',\n iphone: '📱',\n calling: '📲',\n phone: '☎️',\n telephone: '☎️',\n telephone_receiver: '📞',\n pager: '📟',\n fax: '📠',\n battery: '🔋',\n electric_plug: '🔌',\n computer: '💻',\n desktop_computer: '🖥️',\n printer: '🖨️',\n keyboard: '⌨️',\n computer_mouse: '🖱️',\n trackball: '🖲️',\n minidisc: '💽',\n floppy_disk: '💾',\n cd: '💿',\n dvd: '📀',\n abacus: '🧮',\n movie_camera: '🎥',\n film_strip: '🎞️',\n film_projector: '📽️',\n clapper: '🎬',\n tv: '📺',\n camera: '📷',\n camera_flash: '📸',\n video_camera: '📹',\n vhs: '📼',\n mag: '🔍',\n mag_right: '🔎',\n candle: '🕯️',\n bulb: '💡',\n flashlight: '🔦',\n izakaya_lantern: '🏮',\n lantern: '🏮',\n diya_lamp: '🪔',\n notebook_with_decorative_cover: '📔',\n closed_book: '📕',\n book: '📖',\n open_book: '📖',\n green_book: '📗',\n blue_book: '📘',\n orange_book: '📙',\n books: '📚',\n notebook: '📓',\n ledger: '📒',\n page_with_curl: '📃',\n scroll: '📜',\n page_facing_up: '📄',\n newspaper: '📰',\n newspaper_roll: '🗞️',\n bookmark_tabs: '📑',\n bookmark: '🔖',\n label: '🏷️',\n moneybag: '💰',\n coin: '🪙',\n yen: '💴',\n dollar: '💵',\n euro: '💶',\n pound: '💷',\n money_with_wings: '💸',\n credit_card: '💳',\n receipt: '🧾',\n chart: '💹',\n envelope: '✉️',\n email: '📧',\n 'e-mail': '📧',\n incoming_envelope: '📨',\n envelope_with_arrow: '📩',\n outbox_tray: '📤',\n inbox_tray: '📥',\n package: '📦',\n mailbox: '📫',\n mailbox_closed: '📪',\n mailbox_with_mail: '📬',\n mailbox_with_no_mail: '📭',\n postbox: '📮',\n ballot_box: '🗳️',\n pencil2: '✏️',\n black_nib: '✒️',\n fountain_pen: '🖋️',\n pen: '🖊️',\n paintbrush: '🖌️',\n crayon: '🖍️',\n memo: '📝',\n pencil: '📝',\n briefcase: '💼',\n file_folder: '📁',\n open_file_folder: '📂',\n card_index_dividers: '🗂️',\n date: '📅',\n calendar: '📆',\n spiral_notepad: '🗒️',\n spiral_calendar: '🗓️',\n card_index: '📇',\n chart_with_upwards_trend: '📈',\n chart_with_downwards_trend: '📉',\n bar_chart: '📊',\n clipboard: '📋',\n pushpin: '📌',\n round_pushpin: '📍',\n paperclip: '📎',\n paperclips: '🖇️',\n straight_ruler: '📏',\n triangular_ruler: '📐',\n scissors: '✂️',\n card_file_box: '🗃️',\n file_cabinet: '🗄️',\n wastebasket: '🗑️',\n lock: '🔒',\n unlock: '🔓',\n lock_with_ink_pen: '🔏',\n closed_lock_with_key: '🔐',\n key: '🔑',\n old_key: '🗝️',\n hammer: '🔨',\n axe: '🪓',\n pick: '⛏️',\n hammer_and_pick: '⚒️',\n hammer_and_wrench: '🛠️',\n dagger: '🗡️',\n crossed_swords: '⚔️',\n gun: '🔫',\n boomerang: '🪃',\n bow_and_arrow: '🏹',\n shield: '🛡️',\n carpentry_saw: '🪚',\n wrench: '🔧',\n screwdriver: '🪛',\n nut_and_bolt: '🔩',\n gear: '⚙️',\n clamp: '🗜️',\n balance_scale: '⚖️',\n probing_cane: '🦯',\n link: '🔗',\n chains: '⛓️',\n hook: '🪝',\n toolbox: '🧰',\n magnet: '🧲',\n ladder: '🪜',\n alembic: '⚗️',\n test_tube: '🧪',\n petri_dish: '🧫',\n dna: '🧬',\n microscope: '🔬',\n telescope: '🔭',\n satellite: '📡',\n syringe: '💉',\n drop_of_blood: '🩸',\n pill: '💊',\n adhesive_bandage: '🩹',\n stethoscope: '🩺',\n door: '🚪',\n elevator: '🛗',\n mirror: '🪞',\n window: '🪟',\n bed: '🛏️',\n couch_and_lamp: '🛋️',\n chair: '🪑',\n toilet: '🚽',\n plunger: '🪠',\n shower: '🚿',\n bathtub: '🛁',\n mouse_trap: '🪤',\n razor: '🪒',\n lotion_bottle: '🧴',\n safety_pin: '🧷',\n broom: '🧹',\n basket: '🧺',\n roll_of_paper: '🧻',\n bucket: '🪣',\n soap: '🧼',\n toothbrush: '🪥',\n sponge: '🧽',\n fire_extinguisher: '🧯',\n shopping_cart: '🛒',\n smoking: '🚬',\n coffin: '⚰️',\n headstone: '🪦',\n funeral_urn: '⚱️',\n moyai: '🗿',\n placard: '🪧',\n atm: '🏧',\n put_litter_in_its_place: '🚮',\n potable_water: '🚰',\n wheelchair: '♿',\n mens: '🚹',\n womens: '🚺',\n restroom: '🚻',\n baby_symbol: '🚼',\n wc: '🚾',\n passport_control: '🛂',\n customs: '🛃',\n baggage_claim: '🛄',\n left_luggage: '🛅',\n warning: '⚠️',\n children_crossing: '🚸',\n no_entry: '⛔',\n no_entry_sign: '🚫',\n no_bicycles: '🚳',\n no_smoking: '🚭',\n do_not_litter: '🚯',\n 'non-potable_water': '🚱',\n no_pedestrians: '🚷',\n no_mobile_phones: '📵',\n underage: '🔞',\n radioactive: '☢️',\n biohazard: '☣️',\n arrow_up: '⬆️',\n arrow_upper_right: '↗️',\n arrow_right: '➡️',\n arrow_lower_right: '↘️',\n arrow_down: '⬇️',\n arrow_lower_left: '↙️',\n arrow_left: '⬅️',\n arrow_upper_left: '↖️',\n arrow_up_down: '↕️',\n left_right_arrow: '↔️',\n leftwards_arrow_with_hook: '↩️',\n arrow_right_hook: '↪️',\n arrow_heading_up: '⤴️',\n arrow_heading_down: '⤵️',\n arrows_clockwise: '🔃',\n arrows_counterclockwise: '🔄',\n back: '🔙',\n end: '🔚',\n on: '🔛',\n soon: '🔜',\n top: '🔝',\n place_of_worship: '🛐',\n atom_symbol: '⚛️',\n om: '🕉️',\n star_of_david: '✡️',\n wheel_of_dharma: '☸️',\n yin_yang: '☯️',\n latin_cross: '✝️',\n orthodox_cross: '☦️',\n star_and_crescent: '☪️',\n peace_symbol: '☮️',\n menorah: '🕎',\n six_pointed_star: '🔯',\n aries: '♈',\n taurus: '♉',\n gemini: '♊',\n cancer: '♋',\n leo: '♌',\n virgo: '♍',\n libra: '♎',\n scorpius: '♏',\n sagittarius: '♐',\n capricorn: '♑',\n aquarius: '♒',\n pisces: '♓',\n ophiuchus: '⛎',\n twisted_rightwards_arrows: '🔀',\n repeat: '🔁',\n repeat_one: '🔂',\n arrow_forward: '▶️',\n fast_forward: '⏩',\n next_track_button: '⏭️',\n play_or_pause_button: '⏯️',\n arrow_backward: '◀️',\n rewind: '⏪',\n previous_track_button: '⏮️',\n arrow_up_small: '🔼',\n arrow_double_up: '⏫',\n arrow_down_small: '🔽',\n arrow_double_down: '⏬',\n pause_button: '⏸️',\n stop_button: '⏹️',\n record_button: '⏺️',\n eject_button: '⏏️',\n cinema: '🎦',\n low_brightness: '🔅',\n high_brightness: '🔆',\n signal_strength: '📶',\n vibration_mode: '📳',\n mobile_phone_off: '📴',\n female_sign: '♀️',\n male_sign: '♂️',\n transgender_symbol: '⚧️',\n heavy_multiplication_x: '✖️',\n heavy_plus_sign: '➕',\n heavy_minus_sign: '➖',\n heavy_division_sign: '➗',\n infinity: '♾️',\n bangbang: '‼️',\n interrobang: '⁉️',\n question: '❓',\n grey_question: '❔',\n grey_exclamation: '❕',\n exclamation: '❗',\n heavy_exclamation_mark: '❗',\n wavy_dash: '〰️',\n currency_exchange: '💱',\n heavy_dollar_sign: '💲',\n medical_symbol: '⚕️',\n recycle: '♻️',\n fleur_de_lis: '⚜️',\n trident: '🔱',\n name_badge: '📛',\n beginner: '🔰',\n o: '⭕',\n white_check_mark: '✅',\n ballot_box_with_check: '☑️',\n heavy_check_mark: '✔️',\n x: '❌',\n negative_squared_cross_mark: '❎',\n curly_loop: '➰',\n loop: '➿',\n part_alternation_mark: '〽️',\n eight_spoked_asterisk: '✳️',\n eight_pointed_black_star: '✴️',\n sparkle: '❇️',\n copyright: '©️',\n registered: '®️',\n tm: '™️',\n hash: '#️⃣',\n asterisk: '*️⃣',\n zero: '0️⃣',\n one: '1️⃣',\n two: '2️⃣',\n three: '3️⃣',\n four: '4️⃣',\n five: '5️⃣',\n six: '6️⃣',\n seven: '7️⃣',\n eight: '8️⃣',\n nine: '9️⃣',\n keycap_ten: '🔟',\n capital_abcd: '🔠',\n abcd: '🔡',\n symbols: '🔣',\n abc: '🔤',\n a: '🅰️',\n ab: '🆎',\n b: '🅱️',\n cl: '🆑',\n cool: '🆒',\n free: '🆓',\n information_source: 'ℹ️',\n id: '🆔',\n m: 'Ⓜ️',\n new: '🆕',\n ng: '🆖',\n o2: '🅾️',\n ok: '🆗',\n parking: '🅿️',\n sos: '🆘',\n up: '🆙',\n vs: '🆚',\n koko: '🈁',\n sa: '🈂️',\n u6708: '🈷️',\n u6709: '🈶',\n u6307: '🈯',\n ideograph_advantage: '🉐',\n u5272: '🈹',\n u7121: '🈚',\n u7981: '🈲',\n accept: '🉑',\n u7533: '🈸',\n u5408: '🈴',\n u7a7a: '🈳',\n congratulations: '㊗️',\n secret: '㊙️',\n u55b6: '🈺',\n u6e80: '🈵',\n red_circle: '🔴',\n orange_circle: '🟠',\n yellow_circle: '🟡',\n green_circle: '🟢',\n large_blue_circle: '🔵',\n purple_circle: '🟣',\n brown_circle: '🟤',\n black_circle: '⚫',\n white_circle: '⚪',\n red_square: '🟥',\n orange_square: '🟧',\n yellow_square: '🟨',\n green_square: '🟩',\n blue_square: '🟦',\n purple_square: '🟪',\n brown_square: '🟫',\n black_large_square: '⬛',\n white_large_square: '⬜',\n black_medium_square: '◼️',\n white_medium_square: '◻️',\n black_medium_small_square: '◾',\n white_medium_small_square: '◽',\n black_small_square: '▪️',\n white_small_square: '▫️',\n large_orange_diamond: '🔶',\n large_blue_diamond: '🔷',\n small_orange_diamond: '🔸',\n small_blue_diamond: '🔹',\n small_red_triangle: '🔺',\n small_red_triangle_down: '🔻',\n diamond_shape_with_a_dot_inside: '💠',\n radio_button: '🔘',\n white_square_button: '🔳',\n black_square_button: '🔲',\n checkered_flag: '🏁',\n triangular_flag_on_post: '🚩',\n crossed_flags: '🎌',\n black_flag: '🏴',\n white_flag: '🏳️',\n rainbow_flag: '🏳️🌈',\n transgender_flag: '🏳️⚧️',\n pirate_flag: '🏴☠️',\n ascension_island: '🇦🇨',\n andorra: '🇦🇩',\n united_arab_emirates: '🇦🇪',\n afghanistan: '🇦🇫',\n antigua_barbuda: '🇦🇬',\n anguilla: '🇦🇮',\n albania: '🇦🇱',\n armenia: '🇦🇲',\n angola: '🇦🇴',\n antarctica: '🇦🇶',\n argentina: '🇦🇷',\n american_samoa: '🇦🇸',\n austria: '🇦🇹',\n australia: '🇦🇺',\n aruba: '🇦🇼',\n aland_islands: '🇦🇽',\n azerbaijan: '🇦🇿',\n bosnia_herzegovina: '🇧🇦',\n barbados: '🇧🇧',\n bangladesh: '🇧🇩',\n belgium: '🇧🇪',\n burkina_faso: '🇧🇫',\n bulgaria: '🇧🇬',\n bahrain: '🇧🇭',\n burundi: '🇧🇮',\n benin: '🇧🇯',\n st_barthelemy: '🇧🇱',\n bermuda: '🇧🇲',\n brunei: '🇧🇳',\n bolivia: '🇧🇴',\n caribbean_netherlands: '🇧🇶',\n brazil: '🇧🇷',\n bahamas: '🇧🇸',\n bhutan: '🇧🇹',\n bouvet_island: '🇧🇻',\n botswana: '🇧🇼',\n belarus: '🇧🇾',\n belize: '🇧🇿',\n canada: '🇨🇦',\n cocos_islands: '🇨🇨',\n congo_kinshasa: '🇨🇩',\n central_african_republic: '🇨🇫',\n congo_brazzaville: '🇨🇬',\n switzerland: '🇨🇭',\n cote_divoire: '🇨🇮',\n cook_islands: '🇨🇰',\n chile: '🇨🇱',\n cameroon: '🇨🇲',\n cn: '🇨🇳',\n colombia: '🇨🇴',\n clipperton_island: '🇨🇵',\n costa_rica: '🇨🇷',\n cuba: '🇨🇺',\n cape_verde: '🇨🇻',\n curacao: '🇨🇼',\n christmas_island: '🇨🇽',\n cyprus: '🇨🇾',\n czech_republic: '🇨🇿',\n de: '🇩🇪',\n diego_garcia: '🇩🇬',\n djibouti: '🇩🇯',\n denmark: '🇩🇰',\n dominica: '🇩🇲',\n dominican_republic: '🇩🇴',\n algeria: '🇩🇿',\n ceuta_melilla: '🇪🇦',\n ecuador: '🇪🇨',\n estonia: '🇪🇪',\n egypt: '🇪🇬',\n western_sahara: '🇪🇭',\n eritrea: '🇪🇷',\n es: '🇪🇸',\n ethiopia: '🇪🇹',\n eu: '🇪🇺',\n european_union: '🇪🇺',\n finland: '🇫🇮',\n fiji: '🇫🇯',\n falkland_islands: '🇫🇰',\n micronesia: '🇫🇲',\n faroe_islands: '🇫🇴',\n fr: '🇫🇷',\n gabon: '🇬🇦',\n gb: '🇬🇧',\n uk: '🇬🇧',\n grenada: '🇬🇩',\n georgia: '🇬🇪',\n french_guiana: '🇬🇫',\n guernsey: '🇬🇬',\n ghana: '🇬🇭',\n gibraltar: '🇬🇮',\n greenland: '🇬🇱',\n gambia: '🇬🇲',\n guinea: '🇬🇳',\n guadeloupe: '🇬🇵',\n equatorial_guinea: '🇬🇶',\n greece: '🇬🇷',\n south_georgia_south_sandwich_islands: '🇬🇸',\n guatemala: '🇬🇹',\n guam: '🇬🇺',\n guinea_bissau: '🇬🇼',\n guyana: '🇬🇾',\n hong_kong: '🇭🇰',\n heard_mcdonald_islands: '🇭🇲',\n honduras: '🇭🇳',\n croatia: '🇭🇷',\n haiti: '🇭🇹',\n hungary: '🇭🇺',\n canary_islands: '🇮🇨',\n indonesia: '🇮🇩',\n ireland: '🇮🇪',\n israel: '🇮🇱',\n isle_of_man: '🇮🇲',\n india: '🇮🇳',\n british_indian_ocean_territory: '🇮🇴',\n iraq: '🇮🇶',\n iran: '🇮🇷',\n iceland: '🇮🇸',\n it: '🇮🇹',\n jersey: '🇯🇪',\n jamaica: '🇯🇲',\n jordan: '🇯🇴',\n jp: '🇯🇵',\n kenya: '🇰🇪',\n kyrgyzstan: '🇰🇬',\n cambodia: '🇰🇭',\n kiribati: '🇰🇮',\n comoros: '🇰🇲',\n st_kitts_nevis: '🇰🇳',\n north_korea: '🇰🇵',\n kr: '🇰🇷',\n kuwait: '🇰🇼',\n cayman_islands: '🇰🇾',\n kazakhstan: '🇰🇿',\n laos: '🇱🇦',\n lebanon: '🇱🇧',\n st_lucia: '🇱🇨',\n liechtenstein: '🇱🇮',\n sri_lanka: '🇱🇰',\n liberia: '🇱🇷',\n lesotho: '🇱🇸',\n lithuania: '🇱🇹',\n luxembourg: '🇱🇺',\n latvia: '🇱🇻',\n libya: '🇱🇾',\n morocco: '🇲🇦',\n monaco: '🇲🇨',\n moldova: '🇲🇩',\n montenegro: '🇲🇪',\n st_martin: '🇲🇫',\n madagascar: '🇲🇬',\n marshall_islands: '🇲🇭',\n macedonia: '🇲🇰',\n mali: '🇲🇱',\n myanmar: '🇲🇲',\n mongolia: '🇲🇳',\n macau: '🇲🇴',\n northern_mariana_islands: '🇲🇵',\n martinique: '🇲🇶',\n mauritania: '🇲🇷',\n montserrat: '🇲🇸',\n malta: '🇲🇹',\n mauritius: '🇲🇺',\n maldives: '🇲🇻',\n malawi: '🇲🇼',\n mexico: '🇲🇽',\n malaysia: '🇲🇾',\n mozambique: '🇲🇿',\n namibia: '🇳🇦',\n new_caledonia: '🇳🇨',\n niger: '🇳🇪',\n norfolk_island: '🇳🇫',\n nigeria: '🇳🇬',\n nicaragua: '🇳🇮',\n netherlands: '🇳🇱',\n norway: '🇳🇴',\n nepal: '🇳🇵',\n nauru: '🇳🇷',\n niue: '🇳🇺',\n new_zealand: '🇳🇿',\n oman: '🇴🇲',\n panama: '🇵🇦',\n peru: '🇵🇪',\n french_polynesia: '🇵🇫',\n papua_new_guinea: '🇵🇬',\n philippines: '🇵🇭',\n pakistan: '🇵🇰',\n poland: '🇵🇱',\n st_pierre_miquelon: '🇵🇲',\n pitcairn_islands: '🇵🇳',\n puerto_rico: '🇵🇷',\n palestinian_territories: '🇵🇸',\n portugal: '🇵🇹',\n palau: '🇵🇼',\n paraguay: '🇵🇾',\n qatar: '🇶🇦',\n reunion: '🇷🇪',\n romania: '🇷🇴',\n serbia: '🇷🇸',\n ru: '🇷🇺',\n rwanda: '🇷🇼',\n saudi_arabia: '🇸🇦',\n solomon_islands: '🇸🇧',\n seychelles: '🇸🇨',\n sudan: '🇸🇩',\n sweden: '🇸🇪',\n singapore: '🇸🇬',\n st_helena: '🇸🇭',\n slovenia: '🇸🇮',\n svalbard_jan_mayen: '🇸🇯',\n slovakia: '🇸🇰',\n sierra_leone: '🇸🇱',\n san_marino: '🇸🇲',\n senegal: '🇸🇳',\n somalia: '🇸🇴',\n suriname: '🇸🇷',\n south_sudan: '🇸🇸',\n sao_tome_principe: '🇸🇹',\n el_salvador: '🇸🇻',\n sint_maarten: '🇸🇽',\n syria: '🇸🇾',\n swaziland: '🇸🇿',\n tristan_da_cunha: '🇹🇦',\n turks_caicos_islands: '🇹🇨',\n chad: '🇹🇩',\n french_southern_territories: '🇹🇫',\n togo: '🇹🇬',\n thailand: '🇹🇭',\n tajikistan: '🇹🇯',\n tokelau: '🇹🇰',\n timor_leste: '🇹🇱',\n turkmenistan: '🇹🇲',\n tunisia: '🇹🇳',\n tonga: '🇹🇴',\n tr: '🇹🇷',\n trinidad_tobago: '🇹🇹',\n tuvalu: '🇹🇻',\n taiwan: '🇹🇼',\n tanzania: '🇹🇿',\n ukraine: '🇺🇦',\n uganda: '🇺🇬',\n us_outlying_islands: '🇺🇲',\n united_nations: '🇺🇳',\n us: '🇺🇸',\n uruguay: '🇺🇾',\n uzbekistan: '🇺🇿',\n vatican_city: '🇻🇦',\n st_vincent_grenadines: '🇻🇨',\n venezuela: '🇻🇪',\n british_virgin_islands: '🇻🇬',\n us_virgin_islands: '🇻🇮',\n vietnam: '🇻🇳',\n vanuatu: '🇻🇺',\n wallis_futuna: '🇼🇫',\n samoa: '🇼🇸',\n kosovo: '🇽🇰',\n yemen: '🇾🇪',\n mayotte: '🇾🇹',\n south_africa: '🇿🇦',\n zambia: '🇿🇲',\n zimbabwe: '🇿🇼',\n england: '🏴',\n scotland: '🏴',\n wales: '🏴'\n}\n\n/**\n * Map of emoji to primary name.\n *\n * @type {Record}\n */\nexport const emojiToName = {\n '😀': 'grinning',\n '😃': 'smiley',\n '😄': 'smile',\n '😁': 'grin',\n '😆': 'laughing',\n '😅': 'sweat_smile',\n '🤣': 'rofl',\n '😂': 'joy',\n '🙂': 'slightly_smiling_face',\n '🙃': 'upside_down_face',\n '😉': 'wink',\n '😊': 'blush',\n '😇': 'innocent',\n '🥰': 'smiling_face_with_three_hearts',\n '😍': 'heart_eyes',\n '🤩': 'star_struck',\n '😘': 'kissing_heart',\n '😗': 'kissing',\n '☺️': 'relaxed',\n '😚': 'kissing_closed_eyes',\n '😙': 'kissing_smiling_eyes',\n '🥲': 'smiling_face_with_tear',\n '😋': 'yum',\n '😛': 'stuck_out_tongue',\n '😜': 'stuck_out_tongue_winking_eye',\n '🤪': 'zany_face',\n '😝': 'stuck_out_tongue_closed_eyes',\n '🤑': 'money_mouth_face',\n '🤗': 'hugs',\n '🤭': 'hand_over_mouth',\n '🤫': 'shushing_face',\n '🤔': 'thinking',\n '🤐': 'zipper_mouth_face',\n '🤨': 'raised_eyebrow',\n '😐': 'neutral_face',\n '😑': 'expressionless',\n '😶': 'no_mouth',\n '😶🌫️': 'face_in_clouds',\n '😏': 'smirk',\n '😒': 'unamused',\n '🙄': 'roll_eyes',\n '😬': 'grimacing',\n '😮💨': 'face_exhaling',\n '🤥': 'lying_face',\n '😌': 'relieved',\n '😔': 'pensive',\n '😪': 'sleepy',\n '🤤': 'drooling_face',\n '😴': 'sleeping',\n '😷': 'mask',\n '🤒': 'face_with_thermometer',\n '🤕': 'face_with_head_bandage',\n '🤢': 'nauseated_face',\n '🤮': 'vomiting_face',\n '🤧': 'sneezing_face',\n '🥵': 'hot_face',\n '🥶': 'cold_face',\n '🥴': 'woozy_face',\n '😵': 'dizzy_face',\n '😵💫': 'face_with_spiral_eyes',\n '🤯': 'exploding_head',\n '🤠': 'cowboy_hat_face',\n '🥳': 'partying_face',\n '🥸': 'disguised_face',\n '😎': 'sunglasses',\n '🤓': 'nerd_face',\n '🧐': 'monocle_face',\n '😕': 'confused',\n '😟': 'worried',\n '🙁': 'slightly_frowning_face',\n '☹️': 'frowning_face',\n '😮': 'open_mouth',\n '😯': 'hushed',\n '😲': 'astonished',\n '😳': 'flushed',\n '🥺': 'pleading_face',\n '😦': 'frowning',\n '😧': 'anguished',\n '😨': 'fearful',\n '😰': 'cold_sweat',\n '😥': 'disappointed_relieved',\n '😢': 'cry',\n '😭': 'sob',\n '😱': 'scream',\n '😖': 'confounded',\n '😣': 'persevere',\n '😞': 'disappointed',\n '😓': 'sweat',\n '😩': 'weary',\n '😫': 'tired_face',\n '🥱': 'yawning_face',\n '😤': 'triumph',\n '😡': 'rage',\n '😠': 'angry',\n '🤬': 'cursing_face',\n '😈': 'smiling_imp',\n '👿': 'imp',\n '💀': 'skull',\n '☠️': 'skull_and_crossbones',\n '💩': 'hankey',\n '🤡': 'clown_face',\n '👹': 'japanese_ogre',\n '👺': 'japanese_goblin',\n '👻': 'ghost',\n '👽': 'alien',\n '👾': 'space_invader',\n '🤖': 'robot',\n '😺': 'smiley_cat',\n '😸': 'smile_cat',\n '😹': 'joy_cat',\n '😻': 'heart_eyes_cat',\n '😼': 'smirk_cat',\n '😽': 'kissing_cat',\n '🙀': 'scream_cat',\n '😿': 'crying_cat_face',\n '😾': 'pouting_cat',\n '🙈': 'see_no_evil',\n '🙉': 'hear_no_evil',\n '🙊': 'speak_no_evil',\n '💋': 'kiss',\n '💌': 'love_letter',\n '💘': 'cupid',\n '💝': 'gift_heart',\n '💖': 'sparkling_heart',\n '💗': 'heartpulse',\n '💓': 'heartbeat',\n '💞': 'revolving_hearts',\n '💕': 'two_hearts',\n '💟': 'heart_decoration',\n '❣️': 'heavy_heart_exclamation',\n '💔': 'broken_heart',\n '❤️🔥': 'heart_on_fire',\n '❤️🩹': 'mending_heart',\n '❤️': 'heart',\n '🧡': 'orange_heart',\n '💛': 'yellow_heart',\n '💚': 'green_heart',\n '💙': 'blue_heart',\n '💜': 'purple_heart',\n '🤎': 'brown_heart',\n '🖤': 'black_heart',\n '🤍': 'white_heart',\n '💯': '100',\n '💢': 'anger',\n '💥': 'boom',\n '💫': 'dizzy',\n '💦': 'sweat_drops',\n '💨': 'dash',\n '🕳️': 'hole',\n '💣': 'bomb',\n '💬': 'speech_balloon',\n '👁️🗨️': 'eye_speech_bubble',\n '🗨️': 'left_speech_bubble',\n '🗯️': 'right_anger_bubble',\n '💭': 'thought_balloon',\n '💤': 'zzz',\n '👋': 'wave',\n '🤚': 'raised_back_of_hand',\n '🖐️': 'raised_hand_with_fingers_splayed',\n '✋': 'hand',\n '🖖': 'vulcan_salute',\n '👌': 'ok_hand',\n '🤌': 'pinched_fingers',\n '🤏': 'pinching_hand',\n '✌️': 'v',\n '🤞': 'crossed_fingers',\n '🤟': 'love_you_gesture',\n '🤘': 'metal',\n '🤙': 'call_me_hand',\n '👈': 'point_left',\n '👉': 'point_right',\n '👆': 'point_up_2',\n '🖕': 'middle_finger',\n '👇': 'point_down',\n '☝️': 'point_up',\n '👍': '+1',\n '👎': '-1',\n '✊': 'fist_raised',\n '👊': 'fist_oncoming',\n '🤛': 'fist_left',\n '🤜': 'fist_right',\n '👏': 'clap',\n '🙌': 'raised_hands',\n '👐': 'open_hands',\n '🤲': 'palms_up_together',\n '🤝': 'handshake',\n '🙏': 'pray',\n '✍️': 'writing_hand',\n '💅': 'nail_care',\n '🤳': 'selfie',\n '💪': 'muscle',\n '🦾': 'mechanical_arm',\n '🦿': 'mechanical_leg',\n '🦵': 'leg',\n '🦶': 'foot',\n '👂': 'ear',\n '🦻': 'ear_with_hearing_aid',\n '👃': 'nose',\n '🧠': 'brain',\n '🫀': 'anatomical_heart',\n '🫁': 'lungs',\n '🦷': 'tooth',\n '🦴': 'bone',\n '👀': 'eyes',\n '👁️': 'eye',\n '👅': 'tongue',\n '👄': 'lips',\n '👶': 'baby',\n '🧒': 'child',\n '👦': 'boy',\n '👧': 'girl',\n '🧑': 'adult',\n '👱': 'blond_haired_person',\n '👨': 'man',\n '🧔': 'bearded_person',\n '🧔♂️': 'man_beard',\n '🧔♀️': 'woman_beard',\n '👨🦰': 'red_haired_man',\n '👨🦱': 'curly_haired_man',\n '👨🦳': 'white_haired_man',\n '👨🦲': 'bald_man',\n '👩': 'woman',\n '👩🦰': 'red_haired_woman',\n '🧑🦰': 'person_red_hair',\n '👩🦱': 'curly_haired_woman',\n '🧑🦱': 'person_curly_hair',\n '👩🦳': 'white_haired_woman',\n '🧑🦳': 'person_white_hair',\n '👩🦲': 'bald_woman',\n '🧑🦲': 'person_bald',\n '👱♀️': 'blond_haired_woman',\n '👱♂️': 'blond_haired_man',\n '🧓': 'older_adult',\n '👴': 'older_man',\n '👵': 'older_woman',\n '🙍': 'frowning_person',\n '🙍♂️': 'frowning_man',\n '🙍♀️': 'frowning_woman',\n '🙎': 'pouting_face',\n '🙎♂️': 'pouting_man',\n '🙎♀️': 'pouting_woman',\n '🙅': 'no_good',\n '🙅♂️': 'no_good_man',\n '🙅♀️': 'no_good_woman',\n '🙆': 'ok_person',\n '🙆♂️': 'ok_man',\n '🙆♀️': 'ok_woman',\n '💁': 'tipping_hand_person',\n '💁♂️': 'tipping_hand_man',\n '💁♀️': 'tipping_hand_woman',\n '🙋': 'raising_hand',\n '🙋♂️': 'raising_hand_man',\n '🙋♀️': 'raising_hand_woman',\n '🧏': 'deaf_person',\n '🧏♂️': 'deaf_man',\n '🧏♀️': 'deaf_woman',\n '🙇': 'bow',\n '🙇♂️': 'bowing_man',\n '🙇♀️': 'bowing_woman',\n '🤦': 'facepalm',\n '🤦♂️': 'man_facepalming',\n '🤦♀️': 'woman_facepalming',\n '🤷': 'shrug',\n '🤷♂️': 'man_shrugging',\n '🤷♀️': 'woman_shrugging',\n '🧑⚕️': 'health_worker',\n '👨⚕️': 'man_health_worker',\n '👩⚕️': 'woman_health_worker',\n '🧑🎓': 'student',\n '👨🎓': 'man_student',\n '👩🎓': 'woman_student',\n '🧑🏫': 'teacher',\n '👨🏫': 'man_teacher',\n '👩🏫': 'woman_teacher',\n '🧑⚖️': 'judge',\n '👨⚖️': 'man_judge',\n '👩⚖️': 'woman_judge',\n '🧑🌾': 'farmer',\n '👨🌾': 'man_farmer',\n '👩🌾': 'woman_farmer',\n '🧑🍳': 'cook',\n '👨🍳': 'man_cook',\n '👩🍳': 'woman_cook',\n '🧑🔧': 'mechanic',\n '👨🔧': 'man_mechanic',\n '👩🔧': 'woman_mechanic',\n '🧑🏭': 'factory_worker',\n '👨🏭': 'man_factory_worker',\n '👩🏭': 'woman_factory_worker',\n '🧑💼': 'office_worker',\n '👨💼': 'man_office_worker',\n '👩💼': 'woman_office_worker',\n '🧑🔬': 'scientist',\n '👨🔬': 'man_scientist',\n '👩🔬': 'woman_scientist',\n '🧑💻': 'technologist',\n '👨💻': 'man_technologist',\n '👩💻': 'woman_technologist',\n '🧑🎤': 'singer',\n '👨🎤': 'man_singer',\n '👩🎤': 'woman_singer',\n '🧑🎨': 'artist',\n '👨🎨': 'man_artist',\n '👩🎨': 'woman_artist',\n '🧑✈️': 'pilot',\n '👨✈️': 'man_pilot',\n '👩✈️': 'woman_pilot',\n '🧑🚀': 'astronaut',\n '👨🚀': 'man_astronaut',\n '👩🚀': 'woman_astronaut',\n '🧑🚒': 'firefighter',\n '👨🚒': 'man_firefighter',\n '👩🚒': 'woman_firefighter',\n '👮': 'police_officer',\n '👮♂️': 'policeman',\n '👮♀️': 'policewoman',\n '🕵️': 'detective',\n '🕵️♂️': 'male_detective',\n '🕵️♀️': 'female_detective',\n '💂': 'guard',\n '💂♂️': 'guardsman',\n '💂♀️': 'guardswoman',\n '🥷': 'ninja',\n '👷': 'construction_worker',\n '👷♂️': 'construction_worker_man',\n '👷♀️': 'construction_worker_woman',\n '🤴': 'prince',\n '👸': 'princess',\n '👳': 'person_with_turban',\n '👳♂️': 'man_with_turban',\n '👳♀️': 'woman_with_turban',\n '👲': 'man_with_gua_pi_mao',\n '🧕': 'woman_with_headscarf',\n '🤵': 'person_in_tuxedo',\n '🤵♂️': 'man_in_tuxedo',\n '🤵♀️': 'woman_in_tuxedo',\n '👰': 'person_with_veil',\n '👰♂️': 'man_with_veil',\n '👰♀️': 'woman_with_veil',\n '🤰': 'pregnant_woman',\n '🤱': 'breast_feeding',\n '👩🍼': 'woman_feeding_baby',\n '👨🍼': 'man_feeding_baby',\n '🧑🍼': 'person_feeding_baby',\n '👼': 'angel',\n '🎅': 'santa',\n '🤶': 'mrs_claus',\n '🧑🎄': 'mx_claus',\n '🦸': 'superhero',\n '🦸♂️': 'superhero_man',\n '🦸♀️': 'superhero_woman',\n '🦹': 'supervillain',\n '🦹♂️': 'supervillain_man',\n '🦹♀️': 'supervillain_woman',\n '🧙': 'mage',\n '🧙♂️': 'mage_man',\n '🧙♀️': 'mage_woman',\n '🧚': 'fairy',\n '🧚♂️': 'fairy_man',\n '🧚♀️': 'fairy_woman',\n '🧛': 'vampire',\n '🧛♂️': 'vampire_man',\n '🧛♀️': 'vampire_woman',\n '🧜': 'merperson',\n '🧜♂️': 'merman',\n '🧜♀️': 'mermaid',\n '🧝': 'elf',\n '🧝♂️': 'elf_man',\n '🧝♀️': 'elf_woman',\n '🧞': 'genie',\n '🧞♂️': 'genie_man',\n '🧞♀️': 'genie_woman',\n '🧟': 'zombie',\n '🧟♂️': 'zombie_man',\n '🧟♀️': 'zombie_woman',\n '💆': 'massage',\n '💆♂️': 'massage_man',\n '💆♀️': 'massage_woman',\n '💇': 'haircut',\n '💇♂️': 'haircut_man',\n '💇♀️': 'haircut_woman',\n '🚶': 'walking',\n '🚶♂️': 'walking_man',\n '🚶♀️': 'walking_woman',\n '🧍': 'standing_person',\n '🧍♂️': 'standing_man',\n '🧍♀️': 'standing_woman',\n '🧎': 'kneeling_person',\n '🧎♂️': 'kneeling_man',\n '🧎♀️': 'kneeling_woman',\n '🧑🦯': 'person_with_probing_cane',\n '👨🦯': 'man_with_probing_cane',\n '👩🦯': 'woman_with_probing_cane',\n '🧑🦼': 'person_in_motorized_wheelchair',\n '👨🦼': 'man_in_motorized_wheelchair',\n '👩🦼': 'woman_in_motorized_wheelchair',\n '🧑🦽': 'person_in_manual_wheelchair',\n '👨🦽': 'man_in_manual_wheelchair',\n '👩🦽': 'woman_in_manual_wheelchair',\n '🏃': 'runner',\n '🏃♂️': 'running_man',\n '🏃♀️': 'running_woman',\n '💃': 'woman_dancing',\n '🕺': 'man_dancing',\n '🕴️': 'business_suit_levitating',\n '👯': 'dancers',\n '👯♂️': 'dancing_men',\n '👯♀️': 'dancing_women',\n '🧖': 'sauna_person',\n '🧖♂️': 'sauna_man',\n '🧖♀️': 'sauna_woman',\n '🧗': 'climbing',\n '🧗♂️': 'climbing_man',\n '🧗♀️': 'climbing_woman',\n '🤺': 'person_fencing',\n '🏇': 'horse_racing',\n '⛷️': 'skier',\n '🏂': 'snowboarder',\n '🏌️': 'golfing',\n '🏌️♂️': 'golfing_man',\n '🏌️♀️': 'golfing_woman',\n '🏄': 'surfer',\n '🏄♂️': 'surfing_man',\n '🏄♀️': 'surfing_woman',\n '🚣': 'rowboat',\n '🚣♂️': 'rowing_man',\n '🚣♀️': 'rowing_woman',\n '🏊': 'swimmer',\n '🏊♂️': 'swimming_man',\n '🏊♀️': 'swimming_woman',\n '⛹️': 'bouncing_ball_person',\n '⛹️♂️': 'bouncing_ball_man',\n '⛹️♀️': 'bouncing_ball_woman',\n '🏋️': 'weight_lifting',\n '🏋️♂️': 'weight_lifting_man',\n '🏋️♀️': 'weight_lifting_woman',\n '🚴': 'bicyclist',\n '🚴♂️': 'biking_man',\n '🚴♀️': 'biking_woman',\n '🚵': 'mountain_bicyclist',\n '🚵♂️': 'mountain_biking_man',\n '🚵♀️': 'mountain_biking_woman',\n '🤸': 'cartwheeling',\n '🤸♂️': 'man_cartwheeling',\n '🤸♀️': 'woman_cartwheeling',\n '🤼': 'wrestling',\n '🤼♂️': 'men_wrestling',\n '🤼♀️': 'women_wrestling',\n '🤽': 'water_polo',\n '🤽♂️': 'man_playing_water_polo',\n '🤽♀️': 'woman_playing_water_polo',\n '🤾': 'handball_person',\n '🤾♂️': 'man_playing_handball',\n '🤾♀️': 'woman_playing_handball',\n '🤹': 'juggling_person',\n '🤹♂️': 'man_juggling',\n '🤹♀️': 'woman_juggling',\n '🧘': 'lotus_position',\n '🧘♂️': 'lotus_position_man',\n '🧘♀️': 'lotus_position_woman',\n '🛀': 'bath',\n '🛌': 'sleeping_bed',\n '🧑🤝🧑': 'people_holding_hands',\n '👭': 'two_women_holding_hands',\n '👫': 'couple',\n '👬': 'two_men_holding_hands',\n '💏': 'couplekiss',\n '👩❤️💋👨': 'couplekiss_man_woman',\n '👨❤️💋👨': 'couplekiss_man_man',\n '👩❤️💋👩': 'couplekiss_woman_woman',\n '💑': 'couple_with_heart',\n '👩❤️👨': 'couple_with_heart_woman_man',\n '👨❤️👨': 'couple_with_heart_man_man',\n '👩❤️👩': 'couple_with_heart_woman_woman',\n '👪': 'family',\n '👨👩👦': 'family_man_woman_boy',\n '👨👩👧': 'family_man_woman_girl',\n '👨👩👧👦': 'family_man_woman_girl_boy',\n '👨👩👦👦': 'family_man_woman_boy_boy',\n '👨👩👧👧': 'family_man_woman_girl_girl',\n '👨👨👦': 'family_man_man_boy',\n '👨👨👧': 'family_man_man_girl',\n '👨👨👧👦': 'family_man_man_girl_boy',\n '👨👨👦👦': 'family_man_man_boy_boy',\n '👨👨👧👧': 'family_man_man_girl_girl',\n '👩👩👦': 'family_woman_woman_boy',\n '👩👩👧': 'family_woman_woman_girl',\n '👩👩👧👦': 'family_woman_woman_girl_boy',\n '👩👩👦👦': 'family_woman_woman_boy_boy',\n '👩👩👧👧': 'family_woman_woman_girl_girl',\n '👨👦': 'family_man_boy',\n '👨👦👦': 'family_man_boy_boy',\n '👨👧': 'family_man_girl',\n '👨👧👦': 'family_man_girl_boy',\n '👨👧👧': 'family_man_girl_girl',\n '👩👦': 'family_woman_boy',\n '👩👦👦': 'family_woman_boy_boy',\n '👩👧': 'family_woman_girl',\n '👩👧👦': 'family_woman_girl_boy',\n '👩👧👧': 'family_woman_girl_girl',\n '🗣️': 'speaking_head',\n '👤': 'bust_in_silhouette',\n '👥': 'busts_in_silhouette',\n '🫂': 'people_hugging',\n '👣': 'footprints',\n '🐵': 'monkey_face',\n '🐒': 'monkey',\n '🦍': 'gorilla',\n '🦧': 'orangutan',\n '🐶': 'dog',\n '🐕': 'dog2',\n '🦮': 'guide_dog',\n '🐕🦺': 'service_dog',\n '🐩': 'poodle',\n '🐺': 'wolf',\n '🦊': 'fox_face',\n '🦝': 'raccoon',\n '🐱': 'cat',\n '🐈': 'cat2',\n '🐈⬛': 'black_cat',\n '🦁': 'lion',\n '🐯': 'tiger',\n '🐅': 'tiger2',\n '🐆': 'leopard',\n '🐴': 'horse',\n '🐎': 'racehorse',\n '🦄': 'unicorn',\n '🦓': 'zebra',\n '🦌': 'deer',\n '🦬': 'bison',\n '🐮': 'cow',\n '🐂': 'ox',\n '🐃': 'water_buffalo',\n '🐄': 'cow2',\n '🐷': 'pig',\n '🐖': 'pig2',\n '🐗': 'boar',\n '🐽': 'pig_nose',\n '🐏': 'ram',\n '🐑': 'sheep',\n '🐐': 'goat',\n '🐪': 'dromedary_camel',\n '🐫': 'camel',\n '🦙': 'llama',\n '🦒': 'giraffe',\n '🐘': 'elephant',\n '🦣': 'mammoth',\n '🦏': 'rhinoceros',\n '🦛': 'hippopotamus',\n '🐭': 'mouse',\n '🐁': 'mouse2',\n '🐀': 'rat',\n '🐹': 'hamster',\n '🐰': 'rabbit',\n '🐇': 'rabbit2',\n '🐿️': 'chipmunk',\n '🦫': 'beaver',\n '🦔': 'hedgehog',\n '🦇': 'bat',\n '🐻': 'bear',\n '🐻❄️': 'polar_bear',\n '🐨': 'koala',\n '🐼': 'panda_face',\n '🦥': 'sloth',\n '🦦': 'otter',\n '🦨': 'skunk',\n '🦘': 'kangaroo',\n '🦡': 'badger',\n '🐾': 'feet',\n '🦃': 'turkey',\n '🐔': 'chicken',\n '🐓': 'rooster',\n '🐣': 'hatching_chick',\n '🐤': 'baby_chick',\n '🐥': 'hatched_chick',\n '🐦': 'bird',\n '🐧': 'penguin',\n '🕊️': 'dove',\n '🦅': 'eagle',\n '🦆': 'duck',\n '🦢': 'swan',\n '🦉': 'owl',\n '🦤': 'dodo',\n '🪶': 'feather',\n '🦩': 'flamingo',\n '🦚': 'peacock',\n '🦜': 'parrot',\n '🐸': 'frog',\n '🐊': 'crocodile',\n '🐢': 'turtle',\n '🦎': 'lizard',\n '🐍': 'snake',\n '🐲': 'dragon_face',\n '🐉': 'dragon',\n '🦕': 'sauropod',\n '🦖': 't-rex',\n '🐳': 'whale',\n '🐋': 'whale2',\n '🐬': 'dolphin',\n '🦭': 'seal',\n '🐟': 'fish',\n '🐠': 'tropical_fish',\n '🐡': 'blowfish',\n '🦈': 'shark',\n '🐙': 'octopus',\n '🐚': 'shell',\n '🐌': 'snail',\n '🦋': 'butterfly',\n '🐛': 'bug',\n '🐜': 'ant',\n '🐝': 'bee',\n '🪲': 'beetle',\n '🐞': 'lady_beetle',\n '🦗': 'cricket',\n '🪳': 'cockroach',\n '🕷️': 'spider',\n '🕸️': 'spider_web',\n '🦂': 'scorpion',\n '🦟': 'mosquito',\n '🪰': 'fly',\n '🪱': 'worm',\n '🦠': 'microbe',\n '💐': 'bouquet',\n '🌸': 'cherry_blossom',\n '💮': 'white_flower',\n '🏵️': 'rosette',\n '🌹': 'rose',\n '🥀': 'wilted_flower',\n '🌺': 'hibiscus',\n '🌻': 'sunflower',\n '🌼': 'blossom',\n '🌷': 'tulip',\n '🌱': 'seedling',\n '🪴': 'potted_plant',\n '🌲': 'evergreen_tree',\n '🌳': 'deciduous_tree',\n '🌴': 'palm_tree',\n '🌵': 'cactus',\n '🌾': 'ear_of_rice',\n '🌿': 'herb',\n '☘️': 'shamrock',\n '🍀': 'four_leaf_clover',\n '🍁': 'maple_leaf',\n '🍂': 'fallen_leaf',\n '🍃': 'leaves',\n '🍇': 'grapes',\n '🍈': 'melon',\n '🍉': 'watermelon',\n '🍊': 'tangerine',\n '🍋': 'lemon',\n '🍌': 'banana',\n '🍍': 'pineapple',\n '🥭': 'mango',\n '🍎': 'apple',\n '🍏': 'green_apple',\n '🍐': 'pear',\n '🍑': 'peach',\n '🍒': 'cherries',\n '🍓': 'strawberry',\n '🫐': 'blueberries',\n '🥝': 'kiwi_fruit',\n '🍅': 'tomato',\n '🫒': 'olive',\n '🥥': 'coconut',\n '🥑': 'avocado',\n '🍆': 'eggplant',\n '🥔': 'potato',\n '🥕': 'carrot',\n '🌽': 'corn',\n '🌶️': 'hot_pepper',\n '🫑': 'bell_pepper',\n '🥒': 'cucumber',\n '🥬': 'leafy_green',\n '🥦': 'broccoli',\n '🧄': 'garlic',\n '🧅': 'onion',\n '🍄': 'mushroom',\n '🥜': 'peanuts',\n '🌰': 'chestnut',\n '🍞': 'bread',\n '🥐': 'croissant',\n '🥖': 'baguette_bread',\n '🫓': 'flatbread',\n '🥨': 'pretzel',\n '🥯': 'bagel',\n '🥞': 'pancakes',\n '🧇': 'waffle',\n '🧀': 'cheese',\n '🍖': 'meat_on_bone',\n '🍗': 'poultry_leg',\n '🥩': 'cut_of_meat',\n '🥓': 'bacon',\n '🍔': 'hamburger',\n '🍟': 'fries',\n '🍕': 'pizza',\n '🌭': 'hotdog',\n '🥪': 'sandwich',\n '🌮': 'taco',\n '🌯': 'burrito',\n '🫔': 'tamale',\n '🥙': 'stuffed_flatbread',\n '🧆': 'falafel',\n '🥚': 'egg',\n '🍳': 'fried_egg',\n '🥘': 'shallow_pan_of_food',\n '🍲': 'stew',\n '🫕': 'fondue',\n '🥣': 'bowl_with_spoon',\n '🥗': 'green_salad',\n '🍿': 'popcorn',\n '🧈': 'butter',\n '🧂': 'salt',\n '🥫': 'canned_food',\n '🍱': 'bento',\n '🍘': 'rice_cracker',\n '🍙': 'rice_ball',\n '🍚': 'rice',\n '🍛': 'curry',\n '🍜': 'ramen',\n '🍝': 'spaghetti',\n '🍠': 'sweet_potato',\n '🍢': 'oden',\n '🍣': 'sushi',\n '🍤': 'fried_shrimp',\n '🍥': 'fish_cake',\n '🥮': 'moon_cake',\n '🍡': 'dango',\n '🥟': 'dumpling',\n '🥠': 'fortune_cookie',\n '🥡': 'takeout_box',\n '🦀': 'crab',\n '🦞': 'lobster',\n '🦐': 'shrimp',\n '🦑': 'squid',\n '🦪': 'oyster',\n '🍦': 'icecream',\n '🍧': 'shaved_ice',\n '🍨': 'ice_cream',\n '🍩': 'doughnut',\n '🍪': 'cookie',\n '🎂': 'birthday',\n '🍰': 'cake',\n '🧁': 'cupcake',\n '🥧': 'pie',\n '🍫': 'chocolate_bar',\n '🍬': 'candy',\n '🍭': 'lollipop',\n '🍮': 'custard',\n '🍯': 'honey_pot',\n '🍼': 'baby_bottle',\n '🥛': 'milk_glass',\n '☕': 'coffee',\n '🫖': 'teapot',\n '🍵': 'tea',\n '🍶': 'sake',\n '🍾': 'champagne',\n '🍷': 'wine_glass',\n '🍸': 'cocktail',\n '🍹': 'tropical_drink',\n '🍺': 'beer',\n '🍻': 'beers',\n '🥂': 'clinking_glasses',\n '🥃': 'tumbler_glass',\n '🥤': 'cup_with_straw',\n '🧋': 'bubble_tea',\n '🧃': 'beverage_box',\n '🧉': 'mate',\n '🧊': 'ice_cube',\n '🥢': 'chopsticks',\n '🍽️': 'plate_with_cutlery',\n '🍴': 'fork_and_knife',\n '🥄': 'spoon',\n '🔪': 'hocho',\n '🏺': 'amphora',\n '🌍': 'earth_africa',\n '🌎': 'earth_americas',\n '🌏': 'earth_asia',\n '🌐': 'globe_with_meridians',\n '🗺️': 'world_map',\n '🗾': 'japan',\n '🧭': 'compass',\n '🏔️': 'mountain_snow',\n '⛰️': 'mountain',\n '🌋': 'volcano',\n '🗻': 'mount_fuji',\n '🏕️': 'camping',\n '🏖️': 'beach_umbrella',\n '🏜️': 'desert',\n '🏝️': 'desert_island',\n '🏞️': 'national_park',\n '🏟️': 'stadium',\n '🏛️': 'classical_building',\n '🏗️': 'building_construction',\n '🧱': 'bricks',\n '🪨': 'rock',\n '🪵': 'wood',\n '🛖': 'hut',\n '🏘️': 'houses',\n '🏚️': 'derelict_house',\n '🏠': 'house',\n '🏡': 'house_with_garden',\n '🏢': 'office',\n '🏣': 'post_office',\n '🏤': 'european_post_office',\n '🏥': 'hospital',\n '🏦': 'bank',\n '🏨': 'hotel',\n '🏩': 'love_hotel',\n '🏪': 'convenience_store',\n '🏫': 'school',\n '🏬': 'department_store',\n '🏭': 'factory',\n '🏯': 'japanese_castle',\n '🏰': 'european_castle',\n '💒': 'wedding',\n '🗼': 'tokyo_tower',\n '🗽': 'statue_of_liberty',\n '⛪': 'church',\n '🕌': 'mosque',\n '🛕': 'hindu_temple',\n '🕍': 'synagogue',\n '⛩️': 'shinto_shrine',\n '🕋': 'kaaba',\n '⛲': 'fountain',\n '⛺': 'tent',\n '🌁': 'foggy',\n '🌃': 'night_with_stars',\n '🏙️': 'cityscape',\n '🌄': 'sunrise_over_mountains',\n '🌅': 'sunrise',\n '🌆': 'city_sunset',\n '🌇': 'city_sunrise',\n '🌉': 'bridge_at_night',\n '♨️': 'hotsprings',\n '🎠': 'carousel_horse',\n '🎡': 'ferris_wheel',\n '🎢': 'roller_coaster',\n '💈': 'barber',\n '🎪': 'circus_tent',\n '🚂': 'steam_locomotive',\n '🚃': 'railway_car',\n '🚄': 'bullettrain_side',\n '🚅': 'bullettrain_front',\n '🚆': 'train2',\n '🚇': 'metro',\n '🚈': 'light_rail',\n '🚉': 'station',\n '🚊': 'tram',\n '🚝': 'monorail',\n '🚞': 'mountain_railway',\n '🚋': 'train',\n '🚌': 'bus',\n '🚍': 'oncoming_bus',\n '🚎': 'trolleybus',\n '🚐': 'minibus',\n '🚑': 'ambulance',\n '🚒': 'fire_engine',\n '🚓': 'police_car',\n '🚔': 'oncoming_police_car',\n '🚕': 'taxi',\n '🚖': 'oncoming_taxi',\n '🚗': 'car',\n '🚘': 'oncoming_automobile',\n '🚙': 'blue_car',\n '🛻': 'pickup_truck',\n '🚚': 'truck',\n '🚛': 'articulated_lorry',\n '🚜': 'tractor',\n '🏎️': 'racing_car',\n '🏍️': 'motorcycle',\n '🛵': 'motor_scooter',\n '🦽': 'manual_wheelchair',\n '🦼': 'motorized_wheelchair',\n '🛺': 'auto_rickshaw',\n '🚲': 'bike',\n '🛴': 'kick_scooter',\n '🛹': 'skateboard',\n '🛼': 'roller_skate',\n '🚏': 'busstop',\n '🛣️': 'motorway',\n '🛤️': 'railway_track',\n '🛢️': 'oil_drum',\n '⛽': 'fuelpump',\n '🚨': 'rotating_light',\n '🚥': 'traffic_light',\n '🚦': 'vertical_traffic_light',\n '🛑': 'stop_sign',\n '🚧': 'construction',\n '⚓': 'anchor',\n '⛵': 'boat',\n '🛶': 'canoe',\n '🚤': 'speedboat',\n '🛳️': 'passenger_ship',\n '⛴️': 'ferry',\n '🛥️': 'motor_boat',\n '🚢': 'ship',\n '✈️': 'airplane',\n '🛩️': 'small_airplane',\n '🛫': 'flight_departure',\n '🛬': 'flight_arrival',\n '🪂': 'parachute',\n '💺': 'seat',\n '🚁': 'helicopter',\n '🚟': 'suspension_railway',\n '🚠': 'mountain_cableway',\n '🚡': 'aerial_tramway',\n '🛰️': 'artificial_satellite',\n '🚀': 'rocket',\n '🛸': 'flying_saucer',\n '🛎️': 'bellhop_bell',\n '🧳': 'luggage',\n '⌛': 'hourglass',\n '⏳': 'hourglass_flowing_sand',\n '⌚': 'watch',\n '⏰': 'alarm_clock',\n '⏱️': 'stopwatch',\n '⏲️': 'timer_clock',\n '🕰️': 'mantelpiece_clock',\n '🕛': 'clock12',\n '🕧': 'clock1230',\n '🕐': 'clock1',\n '🕜': 'clock130',\n '🕑': 'clock2',\n '🕝': 'clock230',\n '🕒': 'clock3',\n '🕞': 'clock330',\n '🕓': 'clock4',\n '🕟': 'clock430',\n '🕔': 'clock5',\n '🕠': 'clock530',\n '🕕': 'clock6',\n '🕡': 'clock630',\n '🕖': 'clock7',\n '🕢': 'clock730',\n '🕗': 'clock8',\n '🕣': 'clock830',\n '🕘': 'clock9',\n '🕤': 'clock930',\n '🕙': 'clock10',\n '🕥': 'clock1030',\n '🕚': 'clock11',\n '🕦': 'clock1130',\n '🌑': 'new_moon',\n '🌒': 'waxing_crescent_moon',\n '🌓': 'first_quarter_moon',\n '🌔': 'moon',\n '🌕': 'full_moon',\n '🌖': 'waning_gibbous_moon',\n '🌗': 'last_quarter_moon',\n '🌘': 'waning_crescent_moon',\n '🌙': 'crescent_moon',\n '🌚': 'new_moon_with_face',\n '🌛': 'first_quarter_moon_with_face',\n '🌜': 'last_quarter_moon_with_face',\n '🌡️': 'thermometer',\n '☀️': 'sunny',\n '🌝': 'full_moon_with_face',\n '🌞': 'sun_with_face',\n '🪐': 'ringed_planet',\n '⭐': 'star',\n '🌟': 'star2',\n '🌠': 'stars',\n '🌌': 'milky_way',\n '☁️': 'cloud',\n '⛅': 'partly_sunny',\n '⛈️': 'cloud_with_lightning_and_rain',\n '🌤️': 'sun_behind_small_cloud',\n '🌥️': 'sun_behind_large_cloud',\n '🌦️': 'sun_behind_rain_cloud',\n '🌧️': 'cloud_with_rain',\n '🌨️': 'cloud_with_snow',\n '🌩️': 'cloud_with_lightning',\n '🌪️': 'tornado',\n '🌫️': 'fog',\n '🌬️': 'wind_face',\n '🌀': 'cyclone',\n '🌈': 'rainbow',\n '🌂': 'closed_umbrella',\n '☂️': 'open_umbrella',\n '☔': 'umbrella',\n '⛱️': 'parasol_on_ground',\n '⚡': 'zap',\n '❄️': 'snowflake',\n '☃️': 'snowman_with_snow',\n '⛄': 'snowman',\n '☄️': 'comet',\n '🔥': 'fire',\n '💧': 'droplet',\n '🌊': 'ocean',\n '🎃': 'jack_o_lantern',\n '🎄': 'christmas_tree',\n '🎆': 'fireworks',\n '🎇': 'sparkler',\n '🧨': 'firecracker',\n '✨': 'sparkles',\n '🎈': 'balloon',\n '🎉': 'tada',\n '🎊': 'confetti_ball',\n '🎋': 'tanabata_tree',\n '🎍': 'bamboo',\n '🎎': 'dolls',\n '🎏': 'flags',\n '🎐': 'wind_chime',\n '🎑': 'rice_scene',\n '🧧': 'red_envelope',\n '🎀': 'ribbon',\n '🎁': 'gift',\n '🎗️': 'reminder_ribbon',\n '🎟️': 'tickets',\n '🎫': 'ticket',\n '🎖️': 'medal_military',\n '🏆': 'trophy',\n '🏅': 'medal_sports',\n '🥇': '1st_place_medal',\n '🥈': '2nd_place_medal',\n '🥉': '3rd_place_medal',\n '⚽': 'soccer',\n '⚾': 'baseball',\n '🥎': 'softball',\n '🏀': 'basketball',\n '🏐': 'volleyball',\n '🏈': 'football',\n '🏉': 'rugby_football',\n '🎾': 'tennis',\n '🥏': 'flying_disc',\n '🎳': 'bowling',\n '🏏': 'cricket_game',\n '🏑': 'field_hockey',\n '🏒': 'ice_hockey',\n '🥍': 'lacrosse',\n '🏓': 'ping_pong',\n '🏸': 'badminton',\n '🥊': 'boxing_glove',\n '🥋': 'martial_arts_uniform',\n '🥅': 'goal_net',\n '⛳': 'golf',\n '⛸️': 'ice_skate',\n '🎣': 'fishing_pole_and_fish',\n '🤿': 'diving_mask',\n '🎽': 'running_shirt_with_sash',\n '🎿': 'ski',\n '🛷': 'sled',\n '🥌': 'curling_stone',\n '🎯': 'dart',\n '🪀': 'yo_yo',\n '🪁': 'kite',\n '🎱': '8ball',\n '🔮': 'crystal_ball',\n '🪄': 'magic_wand',\n '🧿': 'nazar_amulet',\n '🎮': 'video_game',\n '🕹️': 'joystick',\n '🎰': 'slot_machine',\n '🎲': 'game_die',\n '🧩': 'jigsaw',\n '🧸': 'teddy_bear',\n '🪅': 'pinata',\n '🪆': 'nesting_dolls',\n '♠️': 'spades',\n '♥️': 'hearts',\n '♦️': 'diamonds',\n '♣️': 'clubs',\n '♟️': 'chess_pawn',\n '🃏': 'black_joker',\n '🀄': 'mahjong',\n '🎴': 'flower_playing_cards',\n '🎭': 'performing_arts',\n '🖼️': 'framed_picture',\n '🎨': 'art',\n '🧵': 'thread',\n '🪡': 'sewing_needle',\n '🧶': 'yarn',\n '🪢': 'knot',\n '👓': 'eyeglasses',\n '🕶️': 'dark_sunglasses',\n '🥽': 'goggles',\n '🥼': 'lab_coat',\n '🦺': 'safety_vest',\n '👔': 'necktie',\n '👕': 'shirt',\n '👖': 'jeans',\n '🧣': 'scarf',\n '🧤': 'gloves',\n '🧥': 'coat',\n '🧦': 'socks',\n '👗': 'dress',\n '👘': 'kimono',\n '🥻': 'sari',\n '🩱': 'one_piece_swimsuit',\n '🩲': 'swim_brief',\n '🩳': 'shorts',\n '👙': 'bikini',\n '👚': 'womans_clothes',\n '👛': 'purse',\n '👜': 'handbag',\n '👝': 'pouch',\n '🛍️': 'shopping',\n '🎒': 'school_satchel',\n '🩴': 'thong_sandal',\n '👞': 'mans_shoe',\n '👟': 'athletic_shoe',\n '🥾': 'hiking_boot',\n '🥿': 'flat_shoe',\n '👠': 'high_heel',\n '👡': 'sandal',\n '🩰': 'ballet_shoes',\n '👢': 'boot',\n '👑': 'crown',\n '👒': 'womans_hat',\n '🎩': 'tophat',\n '🎓': 'mortar_board',\n '🧢': 'billed_cap',\n '🪖': 'military_helmet',\n '⛑️': 'rescue_worker_helmet',\n '📿': 'prayer_beads',\n '💄': 'lipstick',\n '💍': 'ring',\n '💎': 'gem',\n '🔇': 'mute',\n '🔈': 'speaker',\n '🔉': 'sound',\n '🔊': 'loud_sound',\n '📢': 'loudspeaker',\n '📣': 'mega',\n '📯': 'postal_horn',\n '🔔': 'bell',\n '🔕': 'no_bell',\n '🎼': 'musical_score',\n '🎵': 'musical_note',\n '🎶': 'notes',\n '🎙️': 'studio_microphone',\n '🎚️': 'level_slider',\n '🎛️': 'control_knobs',\n '🎤': 'microphone',\n '🎧': 'headphones',\n '📻': 'radio',\n '🎷': 'saxophone',\n '🪗': 'accordion',\n '🎸': 'guitar',\n '🎹': 'musical_keyboard',\n '🎺': 'trumpet',\n '🎻': 'violin',\n '🪕': 'banjo',\n '🥁': 'drum',\n '🪘': 'long_drum',\n '📱': 'iphone',\n '📲': 'calling',\n '☎️': 'phone',\n '📞': 'telephone_receiver',\n '📟': 'pager',\n '📠': 'fax',\n '🔋': 'battery',\n '🔌': 'electric_plug',\n '💻': 'computer',\n '🖥️': 'desktop_computer',\n '🖨️': 'printer',\n '⌨️': 'keyboard',\n '🖱️': 'computer_mouse',\n '🖲️': 'trackball',\n '💽': 'minidisc',\n '💾': 'floppy_disk',\n '💿': 'cd',\n '📀': 'dvd',\n '🧮': 'abacus',\n '🎥': 'movie_camera',\n '🎞️': 'film_strip',\n '📽️': 'film_projector',\n '🎬': 'clapper',\n '📺': 'tv',\n '📷': 'camera',\n '📸': 'camera_flash',\n '📹': 'video_camera',\n '📼': 'vhs',\n '🔍': 'mag',\n '🔎': 'mag_right',\n '🕯️': 'candle',\n '💡': 'bulb',\n '🔦': 'flashlight',\n '🏮': 'izakaya_lantern',\n '🪔': 'diya_lamp',\n '📔': 'notebook_with_decorative_cover',\n '📕': 'closed_book',\n '📖': 'book',\n '📗': 'green_book',\n '📘': 'blue_book',\n '📙': 'orange_book',\n '📚': 'books',\n '📓': 'notebook',\n '📒': 'ledger',\n '📃': 'page_with_curl',\n '📜': 'scroll',\n '📄': 'page_facing_up',\n '📰': 'newspaper',\n '🗞️': 'newspaper_roll',\n '📑': 'bookmark_tabs',\n '🔖': 'bookmark',\n '🏷️': 'label',\n '💰': 'moneybag',\n '🪙': 'coin',\n '💴': 'yen',\n '💵': 'dollar',\n '💶': 'euro',\n '💷': 'pound',\n '💸': 'money_with_wings',\n '💳': 'credit_card',\n '🧾': 'receipt',\n '💹': 'chart',\n '✉️': 'envelope',\n '📧': 'email',\n '📨': 'incoming_envelope',\n '📩': 'envelope_with_arrow',\n '📤': 'outbox_tray',\n '📥': 'inbox_tray',\n '📦': 'package',\n '📫': 'mailbox',\n '📪': 'mailbox_closed',\n '📬': 'mailbox_with_mail',\n '📭': 'mailbox_with_no_mail',\n '📮': 'postbox',\n '🗳️': 'ballot_box',\n '✏️': 'pencil2',\n '✒️': 'black_nib',\n '🖋️': 'fountain_pen',\n '🖊️': 'pen',\n '🖌️': 'paintbrush',\n '🖍️': 'crayon',\n '📝': 'memo',\n '💼': 'briefcase',\n '📁': 'file_folder',\n '📂': 'open_file_folder',\n '🗂️': 'card_index_dividers',\n '📅': 'date',\n '📆': 'calendar',\n '🗒️': 'spiral_notepad',\n '🗓️': 'spiral_calendar',\n '📇': 'card_index',\n '📈': 'chart_with_upwards_trend',\n '📉': 'chart_with_downwards_trend',\n '📊': 'bar_chart',\n '📋': 'clipboard',\n '📌': 'pushpin',\n '📍': 'round_pushpin',\n '📎': 'paperclip',\n '🖇️': 'paperclips',\n '📏': 'straight_ruler',\n '📐': 'triangular_ruler',\n '✂️': 'scissors',\n '🗃️': 'card_file_box',\n '🗄️': 'file_cabinet',\n '🗑️': 'wastebasket',\n '🔒': 'lock',\n '🔓': 'unlock',\n '🔏': 'lock_with_ink_pen',\n '🔐': 'closed_lock_with_key',\n '🔑': 'key',\n '🗝️': 'old_key',\n '🔨': 'hammer',\n '🪓': 'axe',\n '⛏️': 'pick',\n '⚒️': 'hammer_and_pick',\n '🛠️': 'hammer_and_wrench',\n '🗡️': 'dagger',\n '⚔️': 'crossed_swords',\n '🔫': 'gun',\n '🪃': 'boomerang',\n '🏹': 'bow_and_arrow',\n '🛡️': 'shield',\n '🪚': 'carpentry_saw',\n '🔧': 'wrench',\n '🪛': 'screwdriver',\n '🔩': 'nut_and_bolt',\n '⚙️': 'gear',\n '🗜️': 'clamp',\n '⚖️': 'balance_scale',\n '🦯': 'probing_cane',\n '🔗': 'link',\n '⛓️': 'chains',\n '🪝': 'hook',\n '🧰': 'toolbox',\n '🧲': 'magnet',\n '🪜': 'ladder',\n '⚗️': 'alembic',\n '🧪': 'test_tube',\n '🧫': 'petri_dish',\n '🧬': 'dna',\n '🔬': 'microscope',\n '🔭': 'telescope',\n '📡': 'satellite',\n '💉': 'syringe',\n '🩸': 'drop_of_blood',\n '💊': 'pill',\n '🩹': 'adhesive_bandage',\n '🩺': 'stethoscope',\n '🚪': 'door',\n '🛗': 'elevator',\n '🪞': 'mirror',\n '🪟': 'window',\n '🛏️': 'bed',\n '🛋️': 'couch_and_lamp',\n '🪑': 'chair',\n '🚽': 'toilet',\n '🪠': 'plunger',\n '🚿': 'shower',\n '🛁': 'bathtub',\n '🪤': 'mouse_trap',\n '🪒': 'razor',\n '🧴': 'lotion_bottle',\n '🧷': 'safety_pin',\n '🧹': 'broom',\n '🧺': 'basket',\n '🧻': 'roll_of_paper',\n '🪣': 'bucket',\n '🧼': 'soap',\n '🪥': 'toothbrush',\n '🧽': 'sponge',\n '🧯': 'fire_extinguisher',\n '🛒': 'shopping_cart',\n '🚬': 'smoking',\n '⚰️': 'coffin',\n '🪦': 'headstone',\n '⚱️': 'funeral_urn',\n '🗿': 'moyai',\n '🪧': 'placard',\n '🏧': 'atm',\n '🚮': 'put_litter_in_its_place',\n '🚰': 'potable_water',\n '♿': 'wheelchair',\n '🚹': 'mens',\n '🚺': 'womens',\n '🚻': 'restroom',\n '🚼': 'baby_symbol',\n '🚾': 'wc',\n '🛂': 'passport_control',\n '🛃': 'customs',\n '🛄': 'baggage_claim',\n '🛅': 'left_luggage',\n '⚠️': 'warning',\n '🚸': 'children_crossing',\n '⛔': 'no_entry',\n '🚫': 'no_entry_sign',\n '🚳': 'no_bicycles',\n '🚭': 'no_smoking',\n '🚯': 'do_not_litter',\n '🚱': 'non-potable_water',\n '🚷': 'no_pedestrians',\n '📵': 'no_mobile_phones',\n '🔞': 'underage',\n '☢️': 'radioactive',\n '☣️': 'biohazard',\n '⬆️': 'arrow_up',\n '↗️': 'arrow_upper_right',\n '➡️': 'arrow_right',\n '↘️': 'arrow_lower_right',\n '⬇️': 'arrow_down',\n '↙️': 'arrow_lower_left',\n '⬅️': 'arrow_left',\n '↖️': 'arrow_upper_left',\n '↕️': 'arrow_up_down',\n '↔️': 'left_right_arrow',\n '↩️': 'leftwards_arrow_with_hook',\n '↪️': 'arrow_right_hook',\n '⤴️': 'arrow_heading_up',\n '⤵️': 'arrow_heading_down',\n '🔃': 'arrows_clockwise',\n '🔄': 'arrows_counterclockwise',\n '🔙': 'back',\n '🔚': 'end',\n '🔛': 'on',\n '🔜': 'soon',\n '🔝': 'top',\n '🛐': 'place_of_worship',\n '⚛️': 'atom_symbol',\n '🕉️': 'om',\n '✡️': 'star_of_david',\n '☸️': 'wheel_of_dharma',\n '☯️': 'yin_yang',\n '✝️': 'latin_cross',\n '☦️': 'orthodox_cross',\n '☪️': 'star_and_crescent',\n '☮️': 'peace_symbol',\n '🕎': 'menorah',\n '🔯': 'six_pointed_star',\n '♈': 'aries',\n '♉': 'taurus',\n '♊': 'gemini',\n '♋': 'cancer',\n '♌': 'leo',\n '♍': 'virgo',\n '♎': 'libra',\n '♏': 'scorpius',\n '♐': 'sagittarius',\n '♑': 'capricorn',\n '♒': 'aquarius',\n '♓': 'pisces',\n '⛎': 'ophiuchus',\n '🔀': 'twisted_rightwards_arrows',\n '🔁': 'repeat',\n '🔂': 'repeat_one',\n '▶️': 'arrow_forward',\n '⏩': 'fast_forward',\n '⏭️': 'next_track_button',\n '⏯️': 'play_or_pause_button',\n '◀️': 'arrow_backward',\n '⏪': 'rewind',\n '⏮️': 'previous_track_button',\n '🔼': 'arrow_up_small',\n '⏫': 'arrow_double_up',\n '🔽': 'arrow_down_small',\n '⏬': 'arrow_double_down',\n '⏸️': 'pause_button',\n '⏹️': 'stop_button',\n '⏺️': 'record_button',\n '⏏️': 'eject_button',\n '🎦': 'cinema',\n '🔅': 'low_brightness',\n '🔆': 'high_brightness',\n '📶': 'signal_strength',\n '📳': 'vibration_mode',\n '📴': 'mobile_phone_off',\n '♀️': 'female_sign',\n '♂️': 'male_sign',\n '⚧️': 'transgender_symbol',\n '✖️': 'heavy_multiplication_x',\n '➕': 'heavy_plus_sign',\n '➖': 'heavy_minus_sign',\n '➗': 'heavy_division_sign',\n '♾️': 'infinity',\n '‼️': 'bangbang',\n '⁉️': 'interrobang',\n '❓': 'question',\n '❔': 'grey_question',\n '❕': 'grey_exclamation',\n '❗': 'exclamation',\n '〰️': 'wavy_dash',\n '💱': 'currency_exchange',\n '💲': 'heavy_dollar_sign',\n '⚕️': 'medical_symbol',\n '♻️': 'recycle',\n '⚜️': 'fleur_de_lis',\n '🔱': 'trident',\n '📛': 'name_badge',\n '🔰': 'beginner',\n '⭕': 'o',\n '✅': 'white_check_mark',\n '☑️': 'ballot_box_with_check',\n '✔️': 'heavy_check_mark',\n '❌': 'x',\n '❎': 'negative_squared_cross_mark',\n '➰': 'curly_loop',\n '➿': 'loop',\n '〽️': 'part_alternation_mark',\n '✳️': 'eight_spoked_asterisk',\n '✴️': 'eight_pointed_black_star',\n '❇️': 'sparkle',\n '©️': 'copyright',\n '®️': 'registered',\n '™️': 'tm',\n '#️⃣': 'hash',\n '*️⃣': 'asterisk',\n '0️⃣': 'zero',\n '1️⃣': 'one',\n '2️⃣': 'two',\n '3️⃣': 'three',\n '4️⃣': 'four',\n '5️⃣': 'five',\n '6️⃣': 'six',\n '7️⃣': 'seven',\n '8️⃣': 'eight',\n '9️⃣': 'nine',\n '🔟': 'keycap_ten',\n '🔠': 'capital_abcd',\n '🔡': 'abcd',\n '🔢': '1234',\n '🔣': 'symbols',\n '🔤': 'abc',\n '🅰️': 'a',\n '🆎': 'ab',\n '🅱️': 'b',\n '🆑': 'cl',\n '🆒': 'cool',\n '🆓': 'free',\n ℹ️: 'information_source',\n '🆔': 'id',\n 'Ⓜ️': 'm',\n '🆕': 'new',\n '🆖': 'ng',\n '🅾️': 'o2',\n '🆗': 'ok',\n '🅿️': 'parking',\n '🆘': 'sos',\n '🆙': 'up',\n '🆚': 'vs',\n '🈁': 'koko',\n '🈂️': 'sa',\n '🈷️': 'u6708',\n '🈶': 'u6709',\n '🈯': 'u6307',\n '🉐': 'ideograph_advantage',\n '🈹': 'u5272',\n '🈚': 'u7121',\n '🈲': 'u7981',\n '🉑': 'accept',\n '🈸': 'u7533',\n '🈴': 'u5408',\n '🈳': 'u7a7a',\n '㊗️': 'congratulations',\n '㊙️': 'secret',\n '🈺': 'u55b6',\n '🈵': 'u6e80',\n '🔴': 'red_circle',\n '🟠': 'orange_circle',\n '🟡': 'yellow_circle',\n '🟢': 'green_circle',\n '🔵': 'large_blue_circle',\n '🟣': 'purple_circle',\n '🟤': 'brown_circle',\n '⚫': 'black_circle',\n '⚪': 'white_circle',\n '🟥': 'red_square',\n '🟧': 'orange_square',\n '🟨': 'yellow_square',\n '🟩': 'green_square',\n '🟦': 'blue_square',\n '🟪': 'purple_square',\n '🟫': 'brown_square',\n '⬛': 'black_large_square',\n '⬜': 'white_large_square',\n '◼️': 'black_medium_square',\n '◻️': 'white_medium_square',\n '◾': 'black_medium_small_square',\n '◽': 'white_medium_small_square',\n '▪️': 'black_small_square',\n '▫️': 'white_small_square',\n '🔶': 'large_orange_diamond',\n '🔷': 'large_blue_diamond',\n '🔸': 'small_orange_diamond',\n '🔹': 'small_blue_diamond',\n '🔺': 'small_red_triangle',\n '🔻': 'small_red_triangle_down',\n '💠': 'diamond_shape_with_a_dot_inside',\n '🔘': 'radio_button',\n '🔳': 'white_square_button',\n '🔲': 'black_square_button',\n '🏁': 'checkered_flag',\n '🚩': 'triangular_flag_on_post',\n '🎌': 'crossed_flags',\n '🏴': 'black_flag',\n '🏳️': 'white_flag',\n '🏳️🌈': 'rainbow_flag',\n '🏳️⚧️': 'transgender_flag',\n '🏴☠️': 'pirate_flag',\n '🇦🇨': 'ascension_island',\n '🇦🇩': 'andorra',\n '🇦🇪': 'united_arab_emirates',\n '🇦🇫': 'afghanistan',\n '🇦🇬': 'antigua_barbuda',\n '🇦🇮': 'anguilla',\n '🇦🇱': 'albania',\n '🇦🇲': 'armenia',\n '🇦🇴': 'angola',\n '🇦🇶': 'antarctica',\n '🇦🇷': 'argentina',\n '🇦🇸': 'american_samoa',\n '🇦🇹': 'austria',\n '🇦🇺': 'australia',\n '🇦🇼': 'aruba',\n '🇦🇽': 'aland_islands',\n '🇦🇿': 'azerbaijan',\n '🇧🇦': 'bosnia_herzegovina',\n '🇧🇧': 'barbados',\n '🇧🇩': 'bangladesh',\n '🇧🇪': 'belgium',\n '🇧🇫': 'burkina_faso',\n '🇧🇬': 'bulgaria',\n '🇧🇭': 'bahrain',\n '🇧🇮': 'burundi',\n '🇧🇯': 'benin',\n '🇧🇱': 'st_barthelemy',\n '🇧🇲': 'bermuda',\n '🇧🇳': 'brunei',\n '🇧🇴': 'bolivia',\n '🇧🇶': 'caribbean_netherlands',\n '🇧🇷': 'brazil',\n '🇧🇸': 'bahamas',\n '🇧🇹': 'bhutan',\n '🇧🇻': 'bouvet_island',\n '🇧🇼': 'botswana',\n '🇧🇾': 'belarus',\n '🇧🇿': 'belize',\n '🇨🇦': 'canada',\n '🇨🇨': 'cocos_islands',\n '🇨🇩': 'congo_kinshasa',\n '🇨🇫': 'central_african_republic',\n '🇨🇬': 'congo_brazzaville',\n '🇨🇭': 'switzerland',\n '🇨🇮': 'cote_divoire',\n '🇨🇰': 'cook_islands',\n '🇨🇱': 'chile',\n '🇨🇲': 'cameroon',\n '🇨🇳': 'cn',\n '🇨🇴': 'colombia',\n '🇨🇵': 'clipperton_island',\n '🇨🇷': 'costa_rica',\n '🇨🇺': 'cuba',\n '🇨🇻': 'cape_verde',\n '🇨🇼': 'curacao',\n '🇨🇽': 'christmas_island',\n '🇨🇾': 'cyprus',\n '🇨🇿': 'czech_republic',\n '🇩🇪': 'de',\n '🇩🇬': 'diego_garcia',\n '🇩🇯': 'djibouti',\n '🇩🇰': 'denmark',\n '🇩🇲': 'dominica',\n '🇩🇴': 'dominican_republic',\n '🇩🇿': 'algeria',\n '🇪🇦': 'ceuta_melilla',\n '🇪🇨': 'ecuador',\n '🇪🇪': 'estonia',\n '🇪🇬': 'egypt',\n '🇪🇭': 'western_sahara',\n '🇪🇷': 'eritrea',\n '🇪🇸': 'es',\n '🇪🇹': 'ethiopia',\n '🇪🇺': 'eu',\n '🇫🇮': 'finland',\n '🇫🇯': 'fiji',\n '🇫🇰': 'falkland_islands',\n '🇫🇲': 'micronesia',\n '🇫🇴': 'faroe_islands',\n '🇫🇷': 'fr',\n '🇬🇦': 'gabon',\n '🇬🇧': 'gb',\n '🇬🇩': 'grenada',\n '🇬🇪': 'georgia',\n '🇬🇫': 'french_guiana',\n '🇬🇬': 'guernsey',\n '🇬🇭': 'ghana',\n '🇬🇮': 'gibraltar',\n '🇬🇱': 'greenland',\n '🇬🇲': 'gambia',\n '🇬🇳': 'guinea',\n '🇬🇵': 'guadeloupe',\n '🇬🇶': 'equatorial_guinea',\n '🇬🇷': 'greece',\n '🇬🇸': 'south_georgia_south_sandwich_islands',\n '🇬🇹': 'guatemala',\n '🇬🇺': 'guam',\n '🇬🇼': 'guinea_bissau',\n '🇬🇾': 'guyana',\n '🇭🇰': 'hong_kong',\n '🇭🇲': 'heard_mcdonald_islands',\n '🇭🇳': 'honduras',\n '🇭🇷': 'croatia',\n '🇭🇹': 'haiti',\n '🇭🇺': 'hungary',\n '🇮🇨': 'canary_islands',\n '🇮🇩': 'indonesia',\n '🇮🇪': 'ireland',\n '🇮🇱': 'israel',\n '🇮🇲': 'isle_of_man',\n '🇮🇳': 'india',\n '🇮🇴': 'british_indian_ocean_territory',\n '🇮🇶': 'iraq',\n '🇮🇷': 'iran',\n '🇮🇸': 'iceland',\n '🇮🇹': 'it',\n '🇯🇪': 'jersey',\n '🇯🇲': 'jamaica',\n '🇯🇴': 'jordan',\n '🇯🇵': 'jp',\n '🇰🇪': 'kenya',\n '🇰🇬': 'kyrgyzstan',\n '🇰🇭': 'cambodia',\n '🇰🇮': 'kiribati',\n '🇰🇲': 'comoros',\n '🇰🇳': 'st_kitts_nevis',\n '🇰🇵': 'north_korea',\n '🇰🇷': 'kr',\n '🇰🇼': 'kuwait',\n '🇰🇾': 'cayman_islands',\n '🇰🇿': 'kazakhstan',\n '🇱🇦': 'laos',\n '🇱🇧': 'lebanon',\n '🇱🇨': 'st_lucia',\n '🇱🇮': 'liechtenstein',\n '🇱🇰': 'sri_lanka',\n '🇱🇷': 'liberia',\n '🇱🇸': 'lesotho',\n '🇱🇹': 'lithuania',\n '🇱🇺': 'luxembourg',\n '🇱🇻': 'latvia',\n '🇱🇾': 'libya',\n '🇲🇦': 'morocco',\n '🇲🇨': 'monaco',\n '🇲🇩': 'moldova',\n '🇲🇪': 'montenegro',\n '🇲🇫': 'st_martin',\n '🇲🇬': 'madagascar',\n '🇲🇭': 'marshall_islands',\n '🇲🇰': 'macedonia',\n '🇲🇱': 'mali',\n '🇲🇲': 'myanmar',\n '🇲🇳': 'mongolia',\n '🇲🇴': 'macau',\n '🇲🇵': 'northern_mariana_islands',\n '🇲🇶': 'martinique',\n '🇲🇷': 'mauritania',\n '🇲🇸': 'montserrat',\n '🇲🇹': 'malta',\n '🇲🇺': 'mauritius',\n '🇲🇻': 'maldives',\n '🇲🇼': 'malawi',\n '🇲🇽': 'mexico',\n '🇲🇾': 'malaysia',\n '🇲🇿': 'mozambique',\n '🇳🇦': 'namibia',\n '🇳🇨': 'new_caledonia',\n '🇳🇪': 'niger',\n '🇳🇫': 'norfolk_island',\n '🇳🇬': 'nigeria',\n '🇳🇮': 'nicaragua',\n '🇳🇱': 'netherlands',\n '🇳🇴': 'norway',\n '🇳🇵': 'nepal',\n '🇳🇷': 'nauru',\n '🇳🇺': 'niue',\n '🇳🇿': 'new_zealand',\n '🇴🇲': 'oman',\n '🇵🇦': 'panama',\n '🇵🇪': 'peru',\n '🇵🇫': 'french_polynesia',\n '🇵🇬': 'papua_new_guinea',\n '🇵🇭': 'philippines',\n '🇵🇰': 'pakistan',\n '🇵🇱': 'poland',\n '🇵🇲': 'st_pierre_miquelon',\n '🇵🇳': 'pitcairn_islands',\n '🇵🇷': 'puerto_rico',\n '🇵🇸': 'palestinian_territories',\n '🇵🇹': 'portugal',\n '🇵🇼': 'palau',\n '🇵🇾': 'paraguay',\n '🇶🇦': 'qatar',\n '🇷🇪': 'reunion',\n '🇷🇴': 'romania',\n '🇷🇸': 'serbia',\n '🇷🇺': 'ru',\n '🇷🇼': 'rwanda',\n '🇸🇦': 'saudi_arabia',\n '🇸🇧': 'solomon_islands',\n '🇸🇨': 'seychelles',\n '🇸🇩': 'sudan',\n '🇸🇪': 'sweden',\n '🇸🇬': 'singapore',\n '🇸🇭': 'st_helena',\n '🇸🇮': 'slovenia',\n '🇸🇯': 'svalbard_jan_mayen',\n '🇸🇰': 'slovakia',\n '🇸🇱': 'sierra_leone',\n '🇸🇲': 'san_marino',\n '🇸🇳': 'senegal',\n '🇸🇴': 'somalia',\n '🇸🇷': 'suriname',\n '🇸🇸': 'south_sudan',\n '🇸🇹': 'sao_tome_principe',\n '🇸🇻': 'el_salvador',\n '🇸🇽': 'sint_maarten',\n '🇸🇾': 'syria',\n '🇸🇿': 'swaziland',\n '🇹🇦': 'tristan_da_cunha',\n '🇹🇨': 'turks_caicos_islands',\n '🇹🇩': 'chad',\n '🇹🇫': 'french_southern_territories',\n '🇹🇬': 'togo',\n '🇹🇭': 'thailand',\n '🇹🇯': 'tajikistan',\n '🇹🇰': 'tokelau',\n '🇹🇱': 'timor_leste',\n '🇹🇲': 'turkmenistan',\n '🇹🇳': 'tunisia',\n '🇹🇴': 'tonga',\n '🇹🇷': 'tr',\n '🇹🇹': 'trinidad_tobago',\n '🇹🇻': 'tuvalu',\n '🇹🇼': 'taiwan',\n '🇹🇿': 'tanzania',\n '🇺🇦': 'ukraine',\n '🇺🇬': 'uganda',\n '🇺🇲': 'us_outlying_islands',\n '🇺🇳': 'united_nations',\n '🇺🇸': 'us',\n '🇺🇾': 'uruguay',\n '🇺🇿': 'uzbekistan',\n '🇻🇦': 'vatican_city',\n '🇻🇨': 'st_vincent_grenadines',\n '🇻🇪': 'venezuela',\n '🇻🇬': 'british_virgin_islands',\n '🇻🇮': 'us_virgin_islands',\n '🇻🇳': 'vietnam',\n '🇻🇺': 'vanuatu',\n '🇼🇫': 'wallis_futuna',\n '🇼🇸': 'samoa',\n '🇽🇰': 'kosovo',\n '🇾🇪': 'yemen',\n '🇾🇹': 'mayotte',\n '🇿🇦': 'south_africa',\n '🇿🇲': 'zambia',\n '🇿🇼': 'zimbabwe',\n '🏴': 'england',\n '🏴': 'scotland',\n '🏴': 'wales'\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('mdast').Root} Root\n */\n\nimport {nameToEmoji} from 'gemoji'\nimport {visit} from 'unist-util-visit'\n\nconst find = /:(\\+1|[-\\w]+):/g\n\nconst own = {}.hasOwnProperty\n\n/**\n * Plugin to turn gemoji shortcodes (`:+1:`) into emoji (`👍`).\n *\n * @type {import('unified').Plugin}\n */\nexport default function remarkGemoji() {\n return (tree) => {\n visit(tree, 'text', (node) => {\n const value = node.value\n /** @type {string[]} */\n const slices = []\n find.lastIndex = 0\n let match = find.exec(value)\n let start = 0\n\n while (match) {\n const emoji = /** @type {keyof nameToEmoji} */ (match[1])\n const position = match.index\n\n if (own.call(nameToEmoji, emoji)) {\n if (start !== position) {\n slices.push(value.slice(start, position))\n }\n\n slices.push(nameToEmoji[emoji])\n start = position + match[0].length\n } else {\n find.lastIndex = position + 1\n }\n\n match = find.exec(value)\n }\n\n if (slices.length > 0) {\n slices.push(value.slice(start))\n node.value = slices.join('')\n }\n })\n }\n}\n","import remarkGemoji from \"remark-gemoji\";\nfunction gemoji() {\n return {\n remark: (processor) => processor.use(remarkGemoji)\n };\n}\nexport {\n gemoji as default\n};\n","import * as bytemd from \"bytemd\";\nimport { getProcessor } from \"bytemd\";\nvar render$1 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\");\n};\nvar staticRenderFns$1 = [];\nfunction normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render2) {\n options.render = render2;\n options.staticRenderFns = staticRenderFns2;\n options._compiled = true;\n }\n if (functionalTemplate) {\n options.functional = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n var hook;\n if (moduleIdentifier) {\n hook = function(context) {\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;\n if (!context && typeof __VUE_SSR_CONTEXT__ !== \"undefined\") {\n context = __VUE_SSR_CONTEXT__;\n }\n if (injectStyles) {\n injectStyles.call(this, context);\n }\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n };\n options._ssrRegister = hook;\n } else if (injectStyles) {\n hook = shadowMode ? function() {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n );\n } : injectStyles;\n }\n if (hook) {\n if (options.functional) {\n options._injectStyles = hook;\n var originalRender = options.render;\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst __vue2_script$1 = {\n props: {\n value: String,\n plugins: Array,\n sanitize: Function,\n remarkRehype: Object,\n mode: String,\n previewDebounce: Number,\n placeholder: String,\n editorConfig: Object,\n locale: Object,\n uploadImages: Function,\n maxLength: Number\n },\n mounted() {\n const editor2 = new bytemd.Editor({\n target: this.$el,\n props: this.$props\n });\n editor2.$on(\"change\", (e) => {\n this.$emit(\"change\", e.detail.value);\n });\n this.editor = editor2;\n },\n watch: {\n $props: {\n handler(newValue, oldValue) {\n const copy = { ...newValue };\n for (let k in copy) {\n if (copy[k] === void 0) {\n delete copy[k];\n }\n }\n this.editor.$set(copy);\n },\n deep: true\n }\n }\n};\nconst __cssModules$1 = {};\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n __vue2_script$1,\n render$1,\n staticRenderFns$1,\n false,\n __vue2_injectStyles$1,\n null,\n null,\n null\n);\nfunction __vue2_injectStyles$1(context) {\n for (let o in __cssModules$1) {\n this[o] = __cssModules$1[o];\n }\n}\nconst editor = /* @__PURE__ */ function() {\n return __component__$1.exports;\n}();\nvar render = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", {\n staticClass: \"markdown-body\",\n domProps: {\n \"innerHTML\": _vm._s(_vm.file)\n },\n on: {\n \"click\": function($event) {\n return _vm.handleClick($event);\n }\n }\n });\n};\nvar staticRenderFns = [];\nconst __vue2_script = {\n props: [\"value\", \"plugins\", \"sanitize\", \"remarkRehype\"],\n computed: {\n file() {\n try {\n return getProcessor(this.$props).processSync(this.value);\n } catch (err) {\n console.error(err);\n }\n },\n needUpdate() {\n return [this.file, this.plugins, this.sanitize, this.remarkRehype];\n }\n },\n watch: {\n needUpdate: {\n handler(val) {\n this.off();\n this.$nextTick(() => {\n this.on();\n });\n },\n deep: true\n }\n },\n mounted() {\n this.on();\n },\n beforeDestroy() {\n this.off();\n },\n methods: {\n on() {\n if (this.plugins && this.file) {\n this.cbs = this.plugins.map(\n ({ viewerEffect }) => viewerEffect && viewerEffect({ markdownBody: this.$el, file: this.file })\n );\n }\n },\n off() {\n if (this.cbs) {\n this.cbs.forEach((cb) => cb && cb());\n }\n },\n handleClick(e) {\n const $ = e.target;\n if ($.tagName !== \"A\")\n return;\n const href = $.getAttribute(\"href\");\n if (!href || !href.startsWith(\"#\"))\n return;\n const dest = this.$el.querySelector(\"#user-content-\" + href.slice(1));\n if (dest)\n dest.scrollIntoView();\n }\n }\n};\nconst __cssModules = {};\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n __vue2_script,\n render,\n staticRenderFns,\n false,\n __vue2_injectStyles,\n null,\n null,\n null\n);\nfunction __vue2_injectStyles(context) {\n for (let o in __cssModules) {\n this[o] = __cssModules[o];\n }\n}\nconst viewer = /* @__PURE__ */ function() {\n return __component__.exports;\n}();\nexport {\n editor as Editor,\n viewer as Viewer\n};\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n {{ node.label }}\n \n \n \n \n \n {{ joinnumber }}\n \n\n 笔记\n 笔记\n \n \n \n \n \n \n \n \n \n {{ name }}\n \n {{ readB }}\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n 云实验\n \n \n \n 视频\n \n \n\n \n \n 课件\n \n \n \n \n \n \n 作业\n \n \n\n \n \n \n \n \n 作业\n \n\n \n {{ item.title }}\n \n \n \n \n \n \n \n \n \n\n \n \n \n GitHub\n \n \n \n\n \n \n \n 【 方式一 】\n 复制链接\n \n \n \n 【 方式二 】\n \n \n\n 分享\n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n 发表、查看笔记\n \n \n \n \n 发表提交\n \n \n \n \n 用户:{{ item.name }}\n {{ item._sys_creattime }}\n \n \n \n {{ item.comment }}\n \n \n \n \n \n \n \n \n\n \n \n \n\n ","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./book_list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./book_list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./book_list.vue?vue&type=template&id=70da29de&scoped=true&\"\nimport script from \"./book_list.vue?vue&type=script&lang=js&\"\nexport * from \"./book_list.vue?vue&type=script&lang=js&\"\nimport style0 from \"./book_list.vue?vue&type=style&index=0&id=70da29de&prod&lang=css&\"\nimport style1 from \"./book_list.vue?vue&type=style&index=1&id=70da29de&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70da29de\",\n null\n \n)\n\nexport default component.exports","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./temp.vue?vue&type=style&index=0&id=1203e2c0&prod&lang=css&\"","/**\n * Word Count\n *\n * Word count in respect of CJK characters.\n *\n * Copyright (c) 2015 - 2016 by Hsiaoming Yang.\n */\n\nvar pattern = /[a-zA-Z0-9_\\u0392-\\u03c9\\u00c0-\\u00ff\\u0600-\\u06ff]+|[\\u4e00-\\u9fff\\u3400-\\u4dbf\\uf900-\\ufaff\\u3040-\\u309f\\uac00-\\ud7af]+/g;\n\nmodule.exports = function (data) {\n var m = data.match(pattern);\n var count = 0;\n if (!m) {\n return 0;\n }\n for (var i = 0; i < m.length; i++) {\n if (m[i].charCodeAt(0) >= 0x4e00) {\n count += m[i].length;\n } else {\n count += 1;\n }\n }\n return count;\n};\n","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./cardList_temp.vue?vue&type=style&index=0&id=60d0f34c&prod&scoped=true&lang=css&\"","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/cli-service/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/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./search_list.vue?vue&type=style&index=0&id=3320ab67&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('body',{attrs:{\"tabindex\":\"1\"}},[_c('div',{attrs:{\"id\":\"outerContainer\"}},[_c('div',{attrs:{\"id\":\"sidebarContainer\"}},[_c('div',{attrs:{\"id\":\"toolbarSidebar\"}},[_c('div',{attrs:{\"id\":\"toolbarSidebarLeft\"}},[_c('div',{staticClass:\"splitToolbarButton toggled\",attrs:{\"id\":\"sidebarViewButtons\",\"role\":\"radiogroup\"}},[_c('button',{staticClass:\"toolbarButton toggled\",staticStyle:{\"opacity\":\"0\"},attrs:{\"id\":\"viewThumbnail\",\"title\":\"Show Thumbnails\",\"tabindex\":\"2\",\"data-l10n-id\":\"thumbs\",\"role\":\"radio\",\"aria-checked\":\"true\",\"aria-controls\":\"thumbnailView\"}},[_c('span',{attrs:{\"data-l10n-id\":\"thumbs_label\"}},[_vm._v(\"Thumbnails\")])]),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"viewOutline\",\"title\":\"Show Document Outline (double-click to expand/collapse all items)\",\"tabindex\":\"3\",\"data-l10n-id\":\"document_outline\",\"role\":\"radio\",\"aria-checked\":\"false\",\"aria-controls\":\"outlineView\"}},[_c('span',{attrs:{\"data-l10n-id\":\"document_outline_label\"}},[_vm._v(\"Document Outline\")])]),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"viewAttachments\",\"title\":\"Show Attachments\",\"tabindex\":\"4\",\"data-l10n-id\":\"attachments\",\"role\":\"radio\",\"aria-checked\":\"false\",\"aria-controls\":\"attachmentsView\"}},[_c('span',{attrs:{\"data-l10n-id\":\"attachments_label\"}},[_vm._v(\"Attachments\")])]),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"viewLayers\",\"title\":\"Show Layers (double-click to reset all layers to the default state)\",\"tabindex\":\"5\",\"data-l10n-id\":\"layers\",\"role\":\"radio\",\"aria-checked\":\"false\",\"aria-controls\":\"layersView\"}},[_c('span',{attrs:{\"data-l10n-id\":\"layers_label\"}},[_vm._v(\"Layers\")])])])]),_c('div',{attrs:{\"id\":\"toolbarSidebarRight\"}},[_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"outlineOptionsContainer\"}},[_c('div',{staticClass:\"verticalToolbarSeparator\"}),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"currentOutlineItem\",\"disabled\":\"disabled\",\"title\":\"Find Current Outline Item\",\"tabindex\":\"6\",\"data-l10n-id\":\"current_outline_item\"}},[_c('span',{attrs:{\"data-l10n-id\":\"current_outline_item_label\"}},[_vm._v(\"Current Outline Item\")])])])])]),_c('div',{attrs:{\"id\":\"sidebarContent\"}},[_c('div',{attrs:{\"id\":\"thumbnailView\"}}),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"outlineView\"}}),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"attachmentsView\"}}),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"layersView\"}})]),_c('div',{attrs:{\"id\":\"sidebarResizer\"}})]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"mainContainer\"}},[_c('div',{staticClass:\"findbar hidden doorHanger\",attrs:{\"id\":\"findbar\"}},[_c('div',{attrs:{\"id\":\"findbarInputContainer\"}},[_c('input',{staticClass:\"toolbarField\",attrs:{\"id\":\"findInput\",\"title\":\"Find\",\"placeholder\":\"Find in document…\",\"tabindex\":\"91\",\"data-l10n-id\":\"find_input\",\"aria-invalid\":\"false\"}}),_c('div',{staticClass:\"splitToolbarButton\"},[_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"findPrevious\",\"title\":\"Find the previous occurrence of the phrase\",\"tabindex\":\"92\",\"data-l10n-id\":\"find_previous\"}},[_c('span',{attrs:{\"data-l10n-id\":\"find_previous_label\"}},[_vm._v(\"Previous\")])]),_c('div',{staticClass:\"splitToolbarButtonSeparator\"}),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"findNext\",\"title\":\"Find the next occurrence of the phrase\",\"tabindex\":\"93\",\"data-l10n-id\":\"find_next\"}},[_c('span',{attrs:{\"data-l10n-id\":\"find_next_label\"}},[_vm._v(\"Next\")])])])]),_c('div',{attrs:{\"id\":\"findbarOptionsOneContainer\"}},[_c('input',{staticClass:\"toolbarField\",attrs:{\"type\":\"checkbox\",\"id\":\"findHighlightAll\",\"tabindex\":\"94\"}}),_c('label',{staticClass:\"toolbarLabel\",attrs:{\"for\":\"findHighlightAll\",\"data-l10n-id\":\"find_highlight\"}},[_vm._v(\"Highlight All\")]),_c('input',{staticClass:\"toolbarField\",attrs:{\"type\":\"checkbox\",\"id\":\"findMatchCase\",\"tabindex\":\"95\"}}),_c('label',{staticClass:\"toolbarLabel\",attrs:{\"for\":\"findMatchCase\",\"data-l10n-id\":\"find_match_case_label\"}},[_vm._v(\"Match Case\")])]),_c('div',{attrs:{\"id\":\"findbarOptionsTwoContainer\"}},[_c('input',{staticClass:\"toolbarField\",attrs:{\"type\":\"checkbox\",\"id\":\"findMatchDiacritics\",\"tabindex\":\"96\"}}),_c('label',{staticClass:\"toolbarLabel\",attrs:{\"for\":\"findMatchDiacritics\",\"data-l10n-id\":\"find_match_diacritics_label\"}},[_vm._v(\"Match Diacritics\")]),_c('input',{staticClass:\"toolbarField\",attrs:{\"type\":\"checkbox\",\"id\":\"findEntireWord\",\"tabindex\":\"97\"}}),_c('label',{staticClass:\"toolbarLabel\",attrs:{\"for\":\"findEntireWord\",\"data-l10n-id\":\"find_entire_word_label\"}},[_vm._v(\"Whole Words\")])]),_c('div',{attrs:{\"id\":\"findbarMessageContainer\",\"aria-live\":\"polite\"}},[_c('span',{staticClass:\"toolbarLabel\",attrs:{\"id\":\"findResultsCount\"}}),_c('span',{staticClass:\"toolbarLabel\",attrs:{\"id\":\"findMsg\"}})])]),_vm._v(\" \"),_c('div',{staticClass:\"editorParamsToolbar hidden doorHangerRight\",attrs:{\"id\":\"editorFreeTextParamsToolbar\"}},[_c('div',{staticClass:\"editorParamsToolbarContainer\"},[_c('div',{staticClass:\"editorParamsSetter\"},[_c('label',{staticClass:\"editorParamsLabel\",attrs:{\"for\":\"editorFreeTextColor\",\"data-l10n-id\":\"editor_free_text_color\"}},[_vm._v(\"Color\")]),_c('input',{staticClass:\"editorParamsColor\",attrs:{\"type\":\"color\",\"id\":\"editorFreeTextColor\",\"tabindex\":\"100\"}})]),_c('div',{staticClass:\"editorParamsSetter\"},[_c('label',{staticClass:\"editorParamsLabel\",attrs:{\"for\":\"editorFreeTextFontSize\",\"data-l10n-id\":\"editor_free_text_size\"}},[_vm._v(\"Size\")]),_c('input',{staticClass:\"editorParamsSlider\",attrs:{\"type\":\"range\",\"id\":\"editorFreeTextFontSize\",\"value\":\"10\",\"min\":\"5\",\"max\":\"100\",\"step\":\"1\",\"tabindex\":\"101\"}})])])]),_c('div',{staticClass:\"editorParamsToolbar hidden doorHangerRight\",attrs:{\"id\":\"editorInkParamsToolbar\"}},[_c('div',{staticClass:\"editorParamsToolbarContainer\"},[_c('div',{staticClass:\"editorParamsSetter\"},[_c('label',{staticClass:\"editorParamsLabel\",attrs:{\"for\":\"editorInkColor\",\"data-l10n-id\":\"editor_ink_color\"}},[_vm._v(\"Color\")]),_c('input',{staticClass:\"editorParamsColor\",attrs:{\"type\":\"color\",\"id\":\"editorInkColor\",\"tabindex\":\"102\"}})]),_c('div',{staticClass:\"editorParamsSetter\"},[_c('label',{staticClass:\"editorParamsLabel\",attrs:{\"for\":\"editorInkThickness\",\"data-l10n-id\":\"editor_ink_thickness\"}},[_vm._v(\"Thickness\")]),_c('input',{staticClass:\"editorParamsSlider\",attrs:{\"type\":\"range\",\"id\":\"editorInkThickness\",\"value\":\"1\",\"min\":\"1\",\"max\":\"20\",\"step\":\"1\",\"tabindex\":\"103\"}})]),_c('div',{staticClass:\"editorParamsSetter\"},[_c('label',{staticClass:\"editorParamsLabel\",attrs:{\"for\":\"editorInkOpacity\",\"data-l10n-id\":\"editor_ink_opacity\"}},[_vm._v(\"Opacity\")]),_c('input',{staticClass:\"editorParamsSlider\",attrs:{\"type\":\"range\",\"id\":\"editorInkOpacity\",\"value\":\"100\",\"min\":\"1\",\"max\":\"100\",\"step\":\"1\",\"tabindex\":\"104\"}})])])]),_c('div',{staticClass:\"secondaryToolbar hidden doorHangerRight\",attrs:{\"id\":\"secondaryToolbar\"}},[_c('div',{attrs:{\"id\":\"secondaryToolbarButtonContainer\"}},[_c('button',{staticClass:\"secondaryToolbarButton visibleLargeView\",attrs:{\"id\":\"secondaryOpenFile\",\"title\":\"Open File\",\"tabindex\":\"51\",\"data-l10n-id\":\"open_file\"}},[_c('span',{attrs:{\"data-l10n-id\":\"open_file_label\"}},[_vm._v(\"Open\")])]),_c('button',{staticClass:\"secondaryToolbarButton visibleMediumView\",attrs:{\"id\":\"secondaryPrint\",\"title\":\"Print\",\"tabindex\":\"52\",\"data-l10n-id\":\"print\"}},[_c('span',{attrs:{\"data-l10n-id\":\"print_label\"}},[_vm._v(\"Print\")])]),_c('button',{staticClass:\"secondaryToolbarButton visibleMediumView\",attrs:{\"id\":\"secondaryDownload\",\"title\":\"Save\",\"tabindex\":\"53\",\"data-l10n-id\":\"save\"}},[_c('span',{attrs:{\"data-l10n-id\":\"save_label\"}},[_vm._v(\"Save\")])]),_c('div',{staticClass:\"horizontalToolbarSeparator visibleLargeView\"}),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"presentationMode\",\"title\":\"Switch to Presentation Mode\",\"tabindex\":\"54\",\"data-l10n-id\":\"presentation_mode\"}},[_c('span',{attrs:{\"data-l10n-id\":\"presentation_mode_label\"}},[_vm._v(\"Presentation Mode\")])]),_c('a',{staticClass:\"secondaryToolbarButton\",attrs:{\"href\":\"#\",\"id\":\"viewBookmark\",\"title\":\"Current Page (View URL from Current Page)\",\"tabindex\":\"55\",\"data-l10n-id\":\"bookmark1\"}},[_c('span',{attrs:{\"data-l10n-id\":\"bookmark1_label\"}},[_vm._v(\"Current Page\")])]),_c('div',{staticClass:\"horizontalToolbarSeparator\",attrs:{\"id\":\"viewBookmarkSeparator\"}}),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"firstPage\",\"title\":\"Go to First Page\",\"tabindex\":\"56\",\"data-l10n-id\":\"first_page\"}},[_c('span',{attrs:{\"data-l10n-id\":\"first_page_label\"}},[_vm._v(\"Go to First Page\")])]),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"lastPage\",\"title\":\"Go to Last Page\",\"tabindex\":\"57\",\"data-l10n-id\":\"last_page\"}},[_c('span',{attrs:{\"data-l10n-id\":\"last_page_label\"}},[_vm._v(\"Go to Last Page\")])]),_c('div',{staticClass:\"horizontalToolbarSeparator\"}),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"pageRotateCw\",\"title\":\"Rotate Clockwise\",\"tabindex\":\"58\",\"data-l10n-id\":\"page_rotate_cw\"}},[_c('span',{attrs:{\"data-l10n-id\":\"page_rotate_cw_label\"}},[_vm._v(\"Rotate Clockwise\")])]),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"pageRotateCcw\",\"title\":\"Rotate Counterclockwise\",\"tabindex\":\"59\",\"data-l10n-id\":\"page_rotate_ccw\"}},[_c('span',{attrs:{\"data-l10n-id\":\"page_rotate_ccw_label\"}},[_vm._v(\"Rotate Counterclockwise\")])]),_c('div',{staticClass:\"horizontalToolbarSeparator\"}),_c('div',{attrs:{\"id\":\"cursorToolButtons\",\"role\":\"radiogroup\"}},[_c('button',{staticClass:\"secondaryToolbarButton toggled\",attrs:{\"id\":\"cursorSelectTool\",\"title\":\"Enable Text Selection Tool\",\"tabindex\":\"60\",\"data-l10n-id\":\"cursor_text_select_tool\",\"role\":\"radio\",\"aria-checked\":\"true\"}},[_c('span',{attrs:{\"data-l10n-id\":\"cursor_text_select_tool_label\"}},[_vm._v(\"Text Selection Tool\")])]),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"cursorHandTool\",\"title\":\"Enable Hand Tool\",\"tabindex\":\"61\",\"data-l10n-id\":\"cursor_hand_tool\",\"role\":\"radio\",\"aria-checked\":\"false\"}},[_c('span',{attrs:{\"data-l10n-id\":\"cursor_hand_tool_label\"}},[_vm._v(\"Hand Tool\")])])]),_c('div',{staticClass:\"horizontalToolbarSeparator\"}),_c('div',{attrs:{\"id\":\"scrollModeButtons\",\"role\":\"radiogroup\"}},[_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"scrollPage\",\"title\":\"Use Page Scrolling\",\"tabindex\":\"62\",\"data-l10n-id\":\"scroll_page\",\"role\":\"radio\",\"aria-checked\":\"false\"}},[_c('span',{attrs:{\"data-l10n-id\":\"scroll_page_label\"}},[_vm._v(\"Page Scrolling\")])]),_c('button',{staticClass:\"secondaryToolbarButton toggled\",attrs:{\"id\":\"scrollVertical\",\"title\":\"Use Vertical Scrolling\",\"tabindex\":\"63\",\"data-l10n-id\":\"scroll_vertical\",\"role\":\"radio\",\"aria-checked\":\"true\"}},[_c('span',{attrs:{\"data-l10n-id\":\"scroll_vertical_label\"}},[_vm._v(\"Vertical Scrolling\")])]),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"scrollHorizontal\",\"title\":\"Use Horizontal Scrolling\",\"tabindex\":\"64\",\"data-l10n-id\":\"scroll_horizontal\",\"role\":\"radio\",\"aria-checked\":\"false\"}},[_c('span',{attrs:{\"data-l10n-id\":\"scroll_horizontal_label\"}},[_vm._v(\"Horizontal Scrolling\")])]),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"scrollWrapped\",\"title\":\"Use Wrapped Scrolling\",\"tabindex\":\"65\",\"data-l10n-id\":\"scroll_wrapped\",\"role\":\"radio\",\"aria-checked\":\"false\"}},[_c('span',{attrs:{\"data-l10n-id\":\"scroll_wrapped_label\"}},[_vm._v(\"Wrapped Scrolling\")])])]),_c('div',{staticClass:\"horizontalToolbarSeparator\"}),_c('div',{attrs:{\"id\":\"spreadModeButtons\",\"role\":\"radiogroup\"}},[_c('button',{staticClass:\"secondaryToolbarButton toggled\",attrs:{\"id\":\"spreadNone\",\"title\":\"Do not join page spreads\",\"tabindex\":\"66\",\"data-l10n-id\":\"spread_none\",\"role\":\"radio\",\"aria-checked\":\"true\"}},[_c('span',{attrs:{\"data-l10n-id\":\"spread_none_label\"}},[_vm._v(\"No Spreads\")])]),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"spreadOdd\",\"title\":\"Join page spreads starting with odd-numbered pages\",\"tabindex\":\"67\",\"data-l10n-id\":\"spread_odd\",\"role\":\"radio\",\"aria-checked\":\"false\"}},[_c('span',{attrs:{\"data-l10n-id\":\"spread_odd_label\"}},[_vm._v(\"Odd Spreads\")])]),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"spreadEven\",\"title\":\"Join page spreads starting with even-numbered pages\",\"tabindex\":\"68\",\"data-l10n-id\":\"spread_even\",\"role\":\"radio\",\"aria-checked\":\"false\"}},[_c('span',{attrs:{\"data-l10n-id\":\"spread_even_label\"}},[_vm._v(\"Even Spreads\")])])]),_c('div',{staticClass:\"horizontalToolbarSeparator\"}),_c('button',{staticClass:\"secondaryToolbarButton\",attrs:{\"id\":\"documentProperties\",\"title\":\"Document Properties…\",\"tabindex\":\"69\",\"data-l10n-id\":\"document_properties\",\"aria-controls\":\"documentPropertiesDialog\"}},[_c('span',{attrs:{\"data-l10n-id\":\"document_properties_label\"}},[_vm._v(\"Document Properties…\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"toolbar\"},[_c('div',{attrs:{\"id\":\"toolbarContainer\"}},[_c('div',{attrs:{\"id\":\"toolbarViewer\"}},[_c('div',{attrs:{\"id\":\"toolbarViewerLeft\"}},[_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"sidebarToggle\",\"title\":\"Toggle Sidebar\",\"tabindex\":\"11\",\"data-l10n-id\":\"toggle_sidebar\",\"aria-expanded\":\"false\",\"aria-controls\":\"sidebarContainer\"}},[_c('span',{attrs:{\"data-l10n-id\":\"toggle_sidebar_label\"}},[_vm._v(\"Toggle Sidebar\")])]),_c('div',{staticClass:\"toolbarButtonSpacer\"}),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"viewFind\",\"title\":\"Find in Document\",\"tabindex\":\"12\",\"data-l10n-id\":\"findbar\",\"aria-expanded\":\"false\",\"aria-controls\":\"findbar\"}},[_c('span',{attrs:{\"data-l10n-id\":\"findbar_label\"}},[_vm._v(\"Find\")])]),_c('div',{staticClass:\"splitToolbarButton hiddenSmallView\"},[_c('button',{staticClass:\"toolbarButton\",attrs:{\"title\":\"Previous Page\",\"id\":\"previous\",\"tabindex\":\"13\",\"data-l10n-id\":\"previous\"}},[_c('span',{attrs:{\"data-l10n-id\":\"previous_label\"}},[_vm._v(\"Previous\")])]),_c('div',{staticClass:\"splitToolbarButtonSeparator\"}),_c('button',{staticClass:\"toolbarButton\",attrs:{\"title\":\"Next Page\",\"id\":\"next\",\"tabindex\":\"14\",\"data-l10n-id\":\"next\"}},[_c('span',{attrs:{\"data-l10n-id\":\"next_label\"}},[_vm._v(\"Next\")])])]),_c('input',{staticClass:\"toolbarField\",attrs:{\"type\":\"number\",\"id\":\"pageNumber\",\"title\":\"Page\",\"value\":\"1\",\"min\":\"1\",\"tabindex\":\"15\",\"data-l10n-id\":\"page\",\"autocomplete\":\"off\"}}),_c('span',{staticClass:\"toolbarLabel\",attrs:{\"id\":\"numPages\"}})]),_c('div',{attrs:{\"id\":\"toolbarViewerRight\"}},[_c('button',{staticClass:\"toolbarButton hiddenLargeView\",attrs:{\"id\":\"openFile\",\"title\":\"Open File\",\"tabindex\":\"31\",\"data-l10n-id\":\"open_file\"}},[_c('span',{attrs:{\"data-l10n-id\":\"open_file_label\"}},[_vm._v(\"Open\")])]),_c('button',{staticClass:\"toolbarButton hiddenMediumView\",attrs:{\"id\":\"print\",\"title\":\"Print\",\"tabindex\":\"32\",\"data-l10n-id\":\"print\"}},[_c('span',{attrs:{\"data-l10n-id\":\"print_label\"}},[_vm._v(\"Print\")])]),_c('button',{staticClass:\"toolbarButton hiddenMediumView\",attrs:{\"id\":\"download\",\"title\":\"Save\",\"tabindex\":\"33\",\"data-l10n-id\":\"save\"}},[_c('span',{attrs:{\"data-l10n-id\":\"save_label\"}},[_vm._v(\"Save\")])]),_c('div',{staticClass:\"verticalToolbarSeparator hiddenMediumView\"}),_c('div',{staticClass:\"splitToolbarButton toggled\",attrs:{\"id\":\"editorModeButtons\",\"role\":\"radiogroup\"}},[_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"editorFreeText\",\"disabled\":\"disabled\",\"title\":\"Text\",\"role\":\"radio\",\"aria-checked\":\"false\",\"aria-controls\":\"editorFreeTextParamsToolbar\",\"tabindex\":\"34\",\"data-l10n-id\":\"editor_free_text2\"}},[_c('span',{attrs:{\"data-l10n-id\":\"editor_free_text2_label\"}},[_vm._v(\"Text\")])]),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"editorInk\",\"disabled\":\"disabled\",\"title\":\"Draw\",\"role\":\"radio\",\"aria-checked\":\"false\",\"aria-controls\":\"editorInkParamsToolbar\",\"tabindex\":\"35\",\"data-l10n-id\":\"editor_ink2\"}},[_c('span',{attrs:{\"data-l10n-id\":\"editor_ink2_label\"}},[_vm._v(\"Draw\")])])]),_c('div',{staticClass:\"verticalToolbarSeparator\",attrs:{\"id\":\"editorModeSeparator\"}}),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"secondaryToolbarToggle\",\"title\":\"Tools\",\"tabindex\":\"48\",\"data-l10n-id\":\"tools\",\"aria-expanded\":\"false\",\"aria-controls\":\"secondaryToolbar\"}},[_c('span',{attrs:{\"data-l10n-id\":\"tools_label\"}},[_vm._v(\"Tools\")])])]),_c('div',{attrs:{\"id\":\"toolbarViewerMiddle\"}},[_c('div',{staticClass:\"splitToolbarButton\"},[_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"zoomOut\",\"title\":\"Zoom Out\",\"tabindex\":\"21\",\"data-l10n-id\":\"zoom_out\"}},[_c('span',{attrs:{\"data-l10n-id\":\"zoom_out_label\"}},[_vm._v(\"Zoom Out\")])]),_c('div',{staticClass:\"splitToolbarButtonSeparator\"}),_c('button',{staticClass:\"toolbarButton\",attrs:{\"id\":\"zoomIn\",\"title\":\"Zoom In\",\"tabindex\":\"22\",\"data-l10n-id\":\"zoom_in\"}},[_c('span',{attrs:{\"data-l10n-id\":\"zoom_in_label\"}},[_vm._v(\"Zoom In\")])])]),_c('span',{staticClass:\"dropdownToolbarButton\",attrs:{\"id\":\"scaleSelectContainer\"}},[_c('select',{attrs:{\"id\":\"scaleSelect\",\"title\":\"Zoom\",\"tabindex\":\"23\",\"data-l10n-id\":\"zoom\"}},[_c('option',{attrs:{\"id\":\"pageAutoOption\",\"title\":\"\",\"value\":\"auto\",\"selected\":\"selected\",\"data-l10n-id\":\"page_scale_auto\"}},[_vm._v(\"Automatic Zoom\")]),_c('option',{attrs:{\"id\":\"pageActualOption\",\"title\":\"\",\"value\":\"page-actual\",\"data-l10n-id\":\"page_scale_actual\"}},[_vm._v(\"Actual Size\")]),_c('option',{attrs:{\"id\":\"pageFitOption\",\"title\":\"\",\"value\":\"page-fit\",\"data-l10n-id\":\"page_scale_fit\"}},[_vm._v(\"Page Fit\")]),_c('option',{attrs:{\"id\":\"pageWidthOption\",\"title\":\"\",\"value\":\"page-width\",\"data-l10n-id\":\"page_scale_width\"}},[_vm._v(\"Page Width\")]),_c('option',{attrs:{\"id\":\"customScaleOption\",\"title\":\"\",\"value\":\"custom\",\"disabled\":\"disabled\",\"hidden\":\"true\"}}),_c('option',{attrs:{\"title\":\"\",\"value\":\"0.5\",\"data-l10n-id\":\"page_scale_percent\",\"data-l10n-args\":\"{ \\\"scale\\\": 50 }\"}},[_vm._v(\"50%\")]),_c('option',{attrs:{\"title\":\"\",\"value\":\"0.75\",\"data-l10n-id\":\"page_scale_percent\",\"data-l10n-args\":\"{ \\\"scale\\\": 75 }\"}},[_vm._v(\"75%\")]),_c('option',{attrs:{\"title\":\"\",\"value\":\"1\",\"data-l10n-id\":\"page_scale_percent\",\"data-l10n-args\":\"{ \\\"scale\\\": 100 }\"}},[_vm._v(\"100%\")]),_c('option',{attrs:{\"title\":\"\",\"value\":\"1.25\",\"data-l10n-id\":\"page_scale_percent\",\"data-l10n-args\":\"{ \\\"scale\\\": 125 }\"}},[_vm._v(\"125%\")]),_c('option',{attrs:{\"title\":\"\",\"value\":\"1.5\",\"data-l10n-id\":\"page_scale_percent\",\"data-l10n-args\":\"{ \\\"scale\\\": 150 }\"}},[_vm._v(\"150%\")]),_c('option',{attrs:{\"title\":\"\",\"value\":\"2\",\"data-l10n-id\":\"page_scale_percent\",\"data-l10n-args\":\"{ \\\"scale\\\": 200 }\"}},[_vm._v(\"200%\")]),_c('option',{attrs:{\"title\":\"\",\"value\":\"3\",\"data-l10n-id\":\"page_scale_percent\",\"data-l10n-args\":\"{ \\\"scale\\\": 300 }\"}},[_vm._v(\"300%\")]),_c('option',{attrs:{\"title\":\"\",\"value\":\"4\",\"data-l10n-id\":\"page_scale_percent\",\"data-l10n-args\":\"{ \\\"scale\\\": 400 }\"}},[_vm._v(\"400%\")])])])])]),_c('div',{attrs:{\"id\":\"loadingBar\"}},[_c('div',{staticClass:\"progress\"},[_c('div',{staticClass:\"glimmer\"})])])])]),_c('div',{attrs:{\"id\":\"viewerContainer\",\"tabindex\":\"0\"}},[_c('div',{staticClass:\"pdfViewer\",attrs:{\"id\":\"viewer\"}})])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"dialogContainer\"}},[_c('dialog',{attrs:{\"id\":\"passwordDialog\"}},[_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"password\",\"id\":\"passwordText\",\"data-l10n-id\":\"password_label\"}},[_vm._v(\"Enter the password to open this PDF file:\")])]),_c('div',{staticClass:\"row\"},[_c('input',{staticClass:\"toolbarField\",attrs:{\"type\":\"password\",\"id\":\"password\"}})]),_c('div',{staticClass:\"buttonRow\"},[_c('button',{staticClass:\"dialogButton\",attrs:{\"id\":\"passwordCancel\"}},[_c('span',{attrs:{\"data-l10n-id\":\"password_cancel\"}},[_vm._v(\"Cancel\")])]),_c('button',{staticClass:\"dialogButton\",attrs:{\"id\":\"passwordSubmit\"}},[_c('span',{attrs:{\"data-l10n-id\":\"password_ok\"}},[_vm._v(\"OK\")])])])]),_c('dialog',{attrs:{\"id\":\"documentPropertiesDialog\"}},[_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"fileNameLabel\",\"data-l10n-id\":\"document_properties_file_name\"}},[_vm._v(\"File name:\")]),_c('p',{attrs:{\"id\":\"fileNameField\",\"aria-labelledby\":\"fileNameLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"fileSizeLabel\",\"data-l10n-id\":\"document_properties_file_size\"}},[_vm._v(\"File size:\")]),_c('p',{attrs:{\"id\":\"fileSizeField\",\"aria-labelledby\":\"fileSizeLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"separator\"}),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"titleLabel\",\"data-l10n-id\":\"document_properties_title\"}},[_vm._v(\"Title:\")]),_c('p',{attrs:{\"id\":\"titleField\",\"aria-labelledby\":\"titleLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"authorLabel\",\"data-l10n-id\":\"document_properties_author\"}},[_vm._v(\"Author:\")]),_c('p',{attrs:{\"id\":\"authorField\",\"aria-labelledby\":\"authorLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"subjectLabel\",\"data-l10n-id\":\"document_properties_subject\"}},[_vm._v(\"Subject:\")]),_c('p',{attrs:{\"id\":\"subjectField\",\"aria-labelledby\":\"subjectLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"keywordsLabel\",\"data-l10n-id\":\"document_properties_keywords\"}},[_vm._v(\"Keywords:\")]),_c('p',{attrs:{\"id\":\"keywordsField\",\"aria-labelledby\":\"keywordsLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"creationDateLabel\",\"data-l10n-id\":\"document_properties_creation_date\"}},[_vm._v(\"Creation Date:\")]),_c('p',{attrs:{\"id\":\"creationDateField\",\"aria-labelledby\":\"creationDateLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"modificationDateLabel\",\"data-l10n-id\":\"document_properties_modification_date\"}},[_vm._v(\"Modification Date:\")]),_c('p',{attrs:{\"id\":\"modificationDateField\",\"aria-labelledby\":\"modificationDateLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"creatorLabel\",\"data-l10n-id\":\"document_properties_creator\"}},[_vm._v(\"Creator:\")]),_c('p',{attrs:{\"id\":\"creatorField\",\"aria-labelledby\":\"creatorLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"separator\"}),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"producerLabel\",\"data-l10n-id\":\"document_properties_producer\"}},[_vm._v(\"PDF Producer:\")]),_c('p',{attrs:{\"id\":\"producerField\",\"aria-labelledby\":\"producerLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"versionLabel\",\"data-l10n-id\":\"document_properties_version\"}},[_vm._v(\"PDF Version:\")]),_c('p',{attrs:{\"id\":\"versionField\",\"aria-labelledby\":\"versionLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"pageCountLabel\",\"data-l10n-id\":\"document_properties_page_count\"}},[_vm._v(\"Page Count:\")]),_c('p',{attrs:{\"id\":\"pageCountField\",\"aria-labelledby\":\"pageCountLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"pageSizeLabel\",\"data-l10n-id\":\"document_properties_page_size\"}},[_vm._v(\"Page Size:\")]),_c('p',{attrs:{\"id\":\"pageSizeField\",\"aria-labelledby\":\"pageSizeLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"separator\"}),_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"id\":\"linearizedLabel\",\"data-l10n-id\":\"document_properties_linearized\"}},[_vm._v(\"Fast Web View:\")]),_c('p',{attrs:{\"id\":\"linearizedField\",\"aria-labelledby\":\"linearizedLabel\"}},[_vm._v(\"-\")])]),_c('div',{staticClass:\"buttonRow\"},[_c('button',{staticClass:\"dialogButton\",attrs:{\"id\":\"documentPropertiesClose\"}},[_c('span',{attrs:{\"data-l10n-id\":\"document_properties_close\"}},[_vm._v(\"Close\")])])])]),_c('dialog',{staticStyle:{\"min-width\":\"200px\"},attrs:{\"id\":\"printServiceDialog\"}},[_c('div',{staticClass:\"row\"},[_c('span',{attrs:{\"data-l10n-id\":\"print_progress_message\"}},[_vm._v(\"Preparing document for printing…\")])]),_c('div',{staticClass:\"row\"},[_c('progress',{attrs:{\"value\":\"0\",\"max\":\"100\"}}),_c('span',{staticClass:\"relative-progress\",attrs:{\"data-l10n-id\":\"print_progress_percent\",\"data-l10n-args\":\"{ \\\"progress\\\": 0 }\"}},[_vm._v(\"0%\")])]),_c('div',{staticClass:\"buttonRow\"},[_c('button',{staticClass:\"dialogButton\",attrs:{\"id\":\"printCancel\"}},[_c('span',{attrs:{\"data-l10n-id\":\"print_progress_close\"}},[_vm._v(\"Cancel\")])])])])])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"printContainer\"}}),_c('input',{staticClass:\"hidden\",attrs:{\"type\":\"file\",\"id\":\"fileInput\"}})])\n}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./pdf_list.vue?vue&type=template&id=4498e264&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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","/**\n * @fileoverview\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\n * - this library has no dependencies.\n *\n * @author davidshimjs\n * @see http://www.d-project.com/\n * @see http://jeromeetienne.github.com/jquery-qrcode/\n */\nvar QRCode;\n\n(function (root, factory) {\n\n\t/* CommonJS */\n if (typeof exports == 'object') module.exports = factory()\n\n /* AMD module */\n else if (typeof define == 'function' && define.amd) define(factory)\n\n /* Global */\n else root.QRCode = factory()\n\n}(this, function () {\t//---------------------------------------------------------------------\n\t// QRCode for JavaScript\n\t//\n\t// Copyright (c) 2009 Kazuhiko Arase\n\t//\n\t// URL: http://www.d-project.com/\n\t//\n\t// Licensed under the MIT license:\n\t// http://www.opensource.org/licenses/mit-license.php\n\t//\n\t// The word \"QR Code\" is registered trademark of\n\t// DENSO WAVE INCORPORATED\n\t// http://www.denso-wave.com/qrcode/faqpatent-e.html\n\t//\n\t//---------------------------------------------------------------------\n\tfunction QR8bitByte(data) {\n\t\tthis.mode = QRMode.MODE_8BIT_BYTE;\n\t\tthis.data = data;\n\t\tthis.parsedData = [];\n\n\t\t// Added to support UTF-8 Characters\n\t\tfor (var i = 0, l = this.data.length; i < l; i++) {\n\t\t\tvar byteArray = [];\n\t\t\tvar code = this.data.charCodeAt(i);\n\n\t\t\tif (code > 0x10000) {\n\t\t\t\tbyteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n\t\t\t\tbyteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[3] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x800) {\n\t\t\t\tbyteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[2] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x80) {\n\t\t\t\tbyteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n\t\t\t\tbyteArray[1] = 0x80 | (code & 0x3F);\n\t\t\t} else {\n\t\t\t\tbyteArray[0] = code;\n\t\t\t}\n\n\t\t\tthis.parsedData.push(byteArray);\n\t\t}\n\n\t\tthis.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n\t\tif (this.parsedData.length != this.data.length) {\n\t\t\tthis.parsedData.unshift(191);\n\t\t\tthis.parsedData.unshift(187);\n\t\t\tthis.parsedData.unshift(239);\n\t\t}\n\t}\n\n\tQR8bitByte.prototype = {\n\t\tgetLength: function (buffer) {\n\t\t\treturn this.parsedData.length;\n\t\t},\n\t\twrite: function (buffer) {\n\t\t\tfor (var i = 0, l = this.parsedData.length; i < l; i++) {\n\t\t\t\tbuffer.put(this.parsedData[i], 8);\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n\t\tthis.typeNumber = typeNumber;\n\t\tthis.errorCorrectLevel = errorCorrectLevel;\n\t\tthis.modules = null;\n\t\tthis.moduleCount = 0;\n\t\tthis.dataCache = null;\n\t\tthis.dataList = [];\n\t}\n\n\tQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\n\treturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row=7){this.setupTypeNumber(test);}\n\tif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\n\tthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\n\treturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\n\tfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\n\tfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\n\tthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex>>bitIndex)&1)==1);}\n\tvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\n\tthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\n\trow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;itotalDataCount*8){throw new Error(\"code length overflow. (\"\n\t+buffer.getLengthInBits()\n\t+\">\"\n\t+totalDataCount*8\n\t+\")\");}\n\tif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\n\twhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\n\twhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\n\tbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\n\tbuffer.put(QRCodeModel.PAD1,8);}\n\treturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r=0)?modPoly.get(modIndex):0;}}\n\tvar totalCodeCount=0;for(var i=0;i=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\n\treturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\n\treturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\n\treturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error(\"bad maskPattern:\"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i5){lostPoint+=(3+sameCount-5);}}}\n\tfor(var row=0;row=256){n-=255;}\n\treturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\n\tif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\n\tthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\n\n\tfunction _isSupportCanvas() {\n\t\treturn typeof CanvasRenderingContext2D != \"undefined\";\n\t}\n\n\t// android 2.x doesn't support Data-URI spec\n\tfunction _getAndroid() {\n\t\tvar android = false;\n\t\tvar sAgent = navigator.userAgent;\n\n\t\tif (/android/i.test(sAgent)) { // android\n\t\t\tandroid = true;\n\t\t\tvar aMat = sAgent.toString().match(/android ([0-9]\\.[0-9])/i);\n\n\t\t\tif (aMat && aMat[1]) {\n\t\t\t\tandroid = parseFloat(aMat[1]);\n\t\t\t}\n\t\t}\n\n\t\treturn android;\n\t}\n\n\tvar svgDrawer = (function() {\n\n\t\tvar Drawing = function (el, htOption) {\n\t\t\tthis._el = el;\n\t\t\tthis._htOption = htOption;\n\t\t};\n\n\t\tDrawing.prototype.draw = function (oQRCode) {\n\t\t\tvar _htOption = this._htOption;\n\t\t\tvar _el = this._el;\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\n\n\t\t\tthis.clear();\n\n\t\t\tfunction makeSVG(tag, attrs) {\n\t\t\t\tvar el = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\t\t\t\tfor (var k in attrs)\n\t\t\t\t\tif (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);\n\t\t\t\treturn el;\n\t\t\t}\n\n\t\t\tvar svg = makeSVG(\"svg\" , {'viewBox': '0 0 ' + String(nCount) + \" \" + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});\n\t\t\tsvg.setAttributeNS(\"http://www.w3.org/2000/xmlns/\", \"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n\t\t\t_el.appendChild(svg);\n\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorLight, \"width\": \"100%\", \"height\": \"100%\"}));\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorDark, \"width\": \"1\", \"height\": \"1\", \"id\": \"template\"}));\n\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tif (oQRCode.isDark(row, col)) {\n\t\t\t\t\t\tvar child = makeSVG(\"use\", {\"x\": String(col), \"y\": String(row)});\n\t\t\t\t\t\tchild.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", \"#template\")\n\t\t\t\t\t\tsvg.appendChild(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tDrawing.prototype.clear = function () {\n\t\t\twhile (this._el.hasChildNodes())\n\t\t\t\tthis._el.removeChild(this._el.lastChild);\n\t\t};\n\t\treturn Drawing;\n\t})();\n\n\tvar useSVG = document.documentElement.tagName.toLowerCase() === \"svg\";\n\n\t// Drawing in DOM by using Table tag\n\tvar Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {\n\t\tvar Drawing = function (el, htOption) {\n\t\t\tthis._el = el;\n\t\t\tthis._htOption = htOption;\n\t\t};\n\n\t\t/**\n\t\t * Draw the QRCode\n\t\t *\n\t\t * @param {QRCode} oQRCode\n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n var _htOption = this._htOption;\n var _el = this._el;\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\n\t\t\tvar aHTML = [''];\n\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\taHTML.push('');\n\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\taHTML.push('');\n\t\t\t\t}\n\n\t\t\t\taHTML.push('');\n\t\t\t}\n\n\t\t\taHTML.push('');\n\t\t\t_el.innerHTML = aHTML.join('');\n\n\t\t\t// Fix the margin values as real size.\n\t\t\tvar elTable = _el.childNodes[0];\n\t\t\tvar nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;\n\t\t\tvar nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;\n\n\t\t\tif (nLeftMarginTable > 0 && nTopMarginTable > 0) {\n\t\t\t\telTable.style.margin = nTopMarginTable + \"px \" + nLeftMarginTable + \"px\";\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._el.innerHTML = '';\n\t\t};\n\n\t\treturn Drawing;\n\t})() : (function () { // Drawing in Canvas\n\t\tfunction _onMakeImage() {\n\t\t\tthis._elImage.src = this._elCanvas.toDataURL(\"image/png\");\n\t\t\tthis._elImage.style.display = \"block\";\n\t\t\tthis._elCanvas.style.display = \"none\";\n\t\t}\n\n\t\t// Android 2.1 bug workaround\n\t\t// http://code.google.com/p/android/issues/detail?id=5141\n\t\tif (this._android && this._android <= 2.1) {\n\t \tvar factor = 1 / window.devicePixelRatio;\n\t var drawImage = CanvasRenderingContext2D.prototype.drawImage;\n\t \tCanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {\n\t \t\tif ((\"nodeName\" in image) && /img/i.test(image.nodeName)) {\n\t\t \tfor (var i = arguments.length - 1; i >= 1; i--) {\n\t\t \targuments[i] = arguments[i] * factor;\n\t\t \t}\n\t \t\t} else if (typeof dw == \"undefined\") {\n\t \t\t\targuments[1] *= factor;\n\t \t\t\targuments[2] *= factor;\n\t \t\t\targuments[3] *= factor;\n\t \t\t\targuments[4] *= factor;\n\t \t\t}\n\n\t \tdrawImage.apply(this, arguments);\n\t \t};\n\t\t}\n\n\t\t/**\n\t\t * Check whether the user's browser supports Data URI or not\n\t\t *\n\t\t * @private\n\t\t * @param {Function} fSuccess Occurs if it supports Data URI\n\t\t * @param {Function} fFail Occurs if it doesn't support Data URI\n\t\t */\n\t\tfunction _safeSetDataURI(fSuccess, fFail) {\n var self = this;\n self._fFail = fFail;\n self._fSuccess = fSuccess;\n\n // Check it just once\n if (self._bSupportDataURI === null) {\n var el = document.createElement(\"img\");\n var fOnError = function() {\n self._bSupportDataURI = false;\n\n if (self._fFail) {\n self._fFail.call(self);\n }\n };\n var fOnSuccess = function() {\n self._bSupportDataURI = true;\n\n if (self._fSuccess) {\n self._fSuccess.call(self);\n }\n };\n\n el.onabort = fOnError;\n el.onerror = fOnError;\n el.onload = fOnSuccess;\n el.src = \"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\"; // the Image contains 1px data.\n return;\n } else if (self._bSupportDataURI === true && self._fSuccess) {\n self._fSuccess.call(self);\n } else if (self._bSupportDataURI === false && self._fFail) {\n self._fFail.call(self);\n }\n\t\t};\n\n\t\t/**\n\t\t * Drawing QRCode by using canvas\n\t\t *\n\t\t * @constructor\n\t\t * @param {HTMLElement} el\n\t\t * @param {Object} htOption QRCode Options\n\t\t */\n\t\tvar Drawing = function (el, htOption) {\n \t\tthis._bIsPainted = false;\n \t\tthis._android = _getAndroid();\n\n\t\t\tthis._htOption = htOption;\n\t\t\tthis._elCanvas = document.createElement(\"canvas\");\n\t\t\tthis._elCanvas.width = htOption.width;\n\t\t\tthis._elCanvas.height = htOption.height;\n\t\t\tel.appendChild(this._elCanvas);\n\t\t\tthis._el = el;\n\t\t\tthis._oContext = this._elCanvas.getContext(\"2d\");\n\t\t\tthis._bIsPainted = false;\n\t\t\tthis._elImage = document.createElement(\"img\");\n\t\t\tthis._elImage.alt = \"Scan me!\";\n\t\t\tthis._elImage.style.display = \"none\";\n\t\t\tthis._el.appendChild(this._elImage);\n\t\t\tthis._bSupportDataURI = null;\n\t\t};\n\n\t\t/**\n\t\t * Draw the QRCode\n\t\t *\n\t\t * @param {QRCode} oQRCode\n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n var _elImage = this._elImage;\n var _oContext = this._oContext;\n var _htOption = this._htOption;\n\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = _htOption.width / nCount;\n\t\t\tvar nHeight = _htOption.height / nCount;\n\t\t\tvar nRoundedWidth = Math.round(nWidth);\n\t\t\tvar nRoundedHeight = Math.round(nHeight);\n\n\t\t\t_elImage.style.display = \"none\";\n\t\t\tthis.clear();\n\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tvar bIsDark = oQRCode.isDark(row, col);\n\t\t\t\t\tvar nLeft = col * nWidth;\n\t\t\t\t\tvar nTop = row * nHeight;\n\t\t\t\t\t_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\n\t\t\t\t\t_oContext.lineWidth = 1;\n\t\t\t\t\t_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\n\t\t\t\t\t_oContext.fillRect(nLeft, nTop, nWidth, nHeight);\n\n\t\t\t\t\t// 안티 앨리어싱 방지 처리\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.floor(nLeft) + 0.5,\n\t\t\t\t\t\tMath.floor(nTop) + 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.ceil(nLeft) - 0.5,\n\t\t\t\t\t\tMath.ceil(nTop) - 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._bIsPainted = true;\n\t\t};\n\n\t\t/**\n\t\t * Make the image from Canvas if the browser supports Data URI.\n\t\t */\n\t\tDrawing.prototype.makeImage = function () {\n\t\t\tif (this._bIsPainted) {\n\t\t\t\t_safeSetDataURI.call(this, _onMakeImage);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Return whether the QRCode is painted or not\n\t\t *\n\t\t * @return {Boolean}\n\t\t */\n\t\tDrawing.prototype.isPainted = function () {\n\t\t\treturn this._bIsPainted;\n\t\t};\n\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);\n\t\t\tthis._bIsPainted = false;\n\t\t};\n\n\t\t/**\n\t\t * @private\n\t\t * @param {Number} nNumber\n\t\t */\n\t\tDrawing.prototype.round = function (nNumber) {\n\t\t\tif (!nNumber) {\n\t\t\t\treturn nNumber;\n\t\t\t}\n\n\t\t\treturn Math.floor(nNumber * 1000) / 1000;\n\t\t};\n\n\t\treturn Drawing;\n\t})();\n\n\t/**\n\t * Get the type by string length\n\t *\n\t * @private\n\t * @param {String} sText\n\t * @param {Number} nCorrectLevel\n\t * @return {Number} type\n\t */\n\tfunction _getTypeNumber(sText, nCorrectLevel) {\n\t\tvar nType = 1;\n\t\tvar length = _getUTF8Length(sText);\n\n\t\tfor (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n\t\t\tvar nLimit = 0;\n\n\t\t\tswitch (nCorrectLevel) {\n\t\t\t\tcase QRErrorCorrectLevel.L :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.M :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.Q :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][2];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.H :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][3];\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (length <= nLimit) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tnType++;\n\t\t\t}\n\t\t}\n\n\t\tif (nType > QRCodeLimitLength.length) {\n\t\t\tthrow new Error(\"Too long data\");\n\t\t}\n\n\t\treturn nType;\n\t}\n\n\tfunction _getUTF8Length(sText) {\n\t\tvar replacedText = encodeURI(sText).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n\t\treturn replacedText.length + (replacedText.length != sText ? 3 : 0);\n\t}\n\n\t/**\n\t * @class QRCode\n\t * @constructor\n\t * @example\n\t * new QRCode(document.getElementById(\"test\"), \"http://jindo.dev.naver.com/collie\");\n\t *\n\t * @example\n\t * var oQRCode = new QRCode(\"test\", {\n\t * text : \"http://naver.com\",\n\t * width : 128,\n\t * height : 128\n\t * });\n\t *\n\t * oQRCode.clear(); // Clear the QRCode.\n\t * oQRCode.makeCode(\"http://map.naver.com\"); // Re-create the QRCode.\n\t *\n\t * @param {HTMLElement|String} el target element or 'id' attribute of element.\n\t * @param {Object|String} vOption\n\t * @param {String} vOption.text QRCode link data\n\t * @param {Number} [vOption.width=256]\n\t * @param {Number} [vOption.height=256]\n\t * @param {String} [vOption.colorDark=\"#000000\"]\n\t * @param {String} [vOption.colorLight=\"#ffffff\"]\n\t * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H]\n\t */\n\tQRCode = function (el, vOption) {\n\t\tthis._htOption = {\n\t\t\twidth : 256,\n\t\t\theight : 256,\n\t\t\ttypeNumber : 4,\n\t\t\tcolorDark : \"#000000\",\n\t\t\tcolorLight : \"#ffffff\",\n\t\t\tcorrectLevel : QRErrorCorrectLevel.H\n\t\t};\n\n\t\tif (typeof vOption === 'string') {\n\t\t\tvOption\t= {\n\t\t\t\ttext : vOption\n\t\t\t};\n\t\t}\n\n\t\t// Overwrites options\n\t\tif (vOption) {\n\t\t\tfor (var i in vOption) {\n\t\t\t\tthis._htOption[i] = vOption[i];\n\t\t\t}\n\t\t}\n\n\t\tif (typeof el == \"string\") {\n\t\t\tel = document.getElementById(el);\n\t\t}\n\n\t\tif (this._htOption.useSVG) {\n\t\t\tDrawing = svgDrawer;\n\t\t}\n\n\t\tthis._android = _getAndroid();\n\t\tthis._el = el;\n\t\tthis._oQRCode = null;\n\t\tthis._oDrawing = new Drawing(this._el, this._htOption);\n\n\t\tif (this._htOption.text) {\n\t\t\tthis.makeCode(this._htOption.text);\n\t\t}\n\t};\n\n\t/**\n\t * Make the QRCode\n\t *\n\t * @param {String} sText link data\n\t */\n\tQRCode.prototype.makeCode = function (sText) {\n\t\tthis._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);\n\t\tthis._oQRCode.addData(sText);\n\t\tthis._oQRCode.make();\n\t\tthis._el.title = sText;\n\t\tthis._oDrawing.draw(this._oQRCode);\n\t\tthis.makeImage();\n\t};\n\n\t/**\n\t * Make the Image from Canvas element\n\t * - It occurs automatically\n\t * - Android below 3 doesn't support Data-URI spec.\n\t *\n\t * @private\n\t */\n\tQRCode.prototype.makeImage = function () {\n\t\tif (typeof this._oDrawing.makeImage == \"function\" && (!this._android || this._android >= 3)) {\n\t\t\tthis._oDrawing.makeImage();\n\t\t}\n\t};\n\n\t/**\n\t * Clear the QRCode\n\t */\n\tQRCode.prototype.clear = function () {\n\t\tthis._oDrawing.clear();\n\t};\n\n\t/**\n\t * @name QRCode.CorrectLevel\n\t */\n\tQRCode.CorrectLevel = QRErrorCorrectLevel;\n\t\n\treturn QRCode;\n\t\n}));\n","module.exports = __webpack_public_path__ + \"img/logo (2).7e0f30e9.png\";","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"box\"},[_vm._l((_vm.moreAryCur),function(o,index){return _c('el-card',{key:index,staticClass:\"card\",attrs:{\"body-style\":{\n padding: '0px',\n display: 'flex',\n justifyContent: 'space-between',\n },\"shadow\":\"hover\"}},[_c('img',{staticClass:\"image\",attrs:{\"src\":o.imgpath},on:{\"click\":function($event){return _vm.goTo(o)}}}),_c('div',{staticStyle:{\"padding\":\"14px\",\"width\":\"90%\"},on:{\"click\":function($event){return _vm.goTo(o)}}},[_c('span',[_vm._v(_vm._s(o.title))]),_c('div',{staticClass:\"bottom clearfix\"},[_c('time',{staticClass:\"time\"},[_vm._v(\" 作者:\"+_vm._s(o.author?o.author:'暂无'))]),_c('p',{staticClass:\"time\"},[_vm._v(_vm._s(o.intro))])])])])}),(_vm.moreAryCur.length!=0)?_c('el-pagination',{attrs:{\"small\":\"\",\"layout\":\"prev, pager, next\",\"total\":_vm.totalCur,\"current-page\":_vm.currentPage3,\"page-size\":15},on:{\"size-change\":_vm.handleSizeChange,\"current-change\":_vm.handleCurrentChange,\"update:currentPage\":function($event){_vm.currentPage3=$event},\"update:current-page\":function($event){_vm.currentPage3=$event}}}):_vm._e(),_c('div',{staticStyle:{\"width\":\"100%\",\"text-align\":\"right\"}})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n {{o.title}}\n \n 作者:{{ o.author?o.author:'暂无' }}\n {{o.intro}}\n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n ","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./hCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./hCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./hCard.vue?vue&type=template&id=ceff81e8&scoped=true&\"\nimport script from \"./hCard.vue?vue&type=script&lang=js&\"\nexport * from \"./hCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./hCard.vue?vue&type=style&index=0&id=ceff81e8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ceff81e8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"about\"},[_c('h1',[_vm._v(\"This is an about page\")])])\n}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=1ae8a7be&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('heade',{on:{\"searchFun\":_vm.searchFun}}),_c('div',{staticClass:\"box-width common-height\"},[_c('el-breadcrumb',{staticStyle:{\"margin-bottom\":\"10px\"},attrs:{\"separator\":\"/\"}},[_c('el-breadcrumb-item',{attrs:{\"to\":{ path: '/' }}},[_vm._v(\"首页\")]),_c('el-breadcrumb-item',[_c('a',{attrs:{\"href\":\"JavaScript:;\"},on:{\"click\":_vm.goBack}},[_vm._v(\"上一页\")])])],1),_c('p',{staticStyle:{\"text-align\":\"left\",\"font-size\":\"20px\",\"font-weight\":\"bold\",\"margin-bottom\":\"20px\"}},[_vm._v(\" 搜索 【 \"+_vm._s(_vm.searchVal)+\"】 \")]),_c('h-card',{attrs:{\"moreAry\":_vm.moreAry,\"total\":_vm.moreCount},on:{\"changePage\":_vm.changePage}})],1),_c('footerC')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n 首页\n 上一页\n \n \n\n \n 搜索 【 {{ searchVal }}】\n \n \n \n\n \n \n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./search_list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./search_list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./search_list.vue?vue&type=template&id=3320ab67&scoped=true&\"\nimport script from \"./search_list.vue?vue&type=script&lang=js&\"\nexport * from \"./search_list.vue?vue&type=script&lang=js&\"\nimport style0 from \"./search_list.vue?vue&type=style&index=0&id=3320ab67&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3320ab67\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\n \n \n 首页\n 上一页\n \n \n {{ moreBook }}\n
\n {{ info.title }}\n
作者:{{ info.author?info.author:'暂无' }}
出版社:{{ info.press }}
出品方:{{ info.producer }}
翻译: {{ info.translator }}
出版年: {{ info.time }}
页数: {{ info.pagecount }}
\n 内容简介\n
\n {{ joinnumber }}\n
{{ item.title }}
\n {{ item.comment }}\n
{{o.intro}}
\n 搜索 【 {{ searchVal }}】\n